aero Module

Inheritance diagram of pyNastran.bdf.cards.aero.aero

All aero cards are defined in this file. This includes:

  • AECOMP

  • AEFACT

  • AELINK

  • AELIST

  • AEPARM

  • AESURF / AESURFS

  • CAERO1 / CAERO2 / CAERO3 / CAERO4 / CAERO5

  • PAERO1 / PAERO2 / PAERO3 / PAERO4 / PAERO5

  • SPLINE1 / SPLINE2 / SPLINE3 / SPLINE4 / SPLINE5

  • MONPNT1 / MONPNT2 / MONPNT3

All cards are BaseCard objects.

class pyNastran.bdf.cards.aero.aero.AECOMP(name: str, list_type: List[str], lists: Union[int, List[int]], comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines a component for use in monitor point definition or external splines.

1

2

3

4

5

6

7

8

9

AECOMP

NAME

LISTTYPE

LIST1

LIST2

LIST3

LIST4

LIST5

LIST6

LIST7

etc.

AECOMP

WING

AELIST

1001

1002

Attributes
namestr

The name.

list_typestr

{‘SET1’, ‘AELIST’, ‘CAEROx’}

listslist[int]

list of values of AECOMP lists

Creates an AECOMP card

Parameters
namestr

the name of the component

list_typestr

One of CAERO, AELIST or CMPID for aerodynamic components and SET1 for structural components. Aerodynamic components are defined on the aerodynamic ks-set mesh while the structural components are defined on the g-set mesh.

listsList[int, int, …]; int

The identification number of either SET1, AELIST or CAEROi entries that define the set of grid points that comprise the component

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card: Any, comment: str = '') → pyNastran.bdf.cards.aero.aero.AECOMP[source]

Adds an AECOMP card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

allowed_list_types = ['SET1', 'AELIST', 'CAERO']
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

get_lists()[source]
raw_fields()[source]
safe_cross_reference(model: BDF)[source]
type = 'AECOMP'
uncross_reference() → None[source]

Removes cross-reference links

validate() → None[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

The writer method used by BDF.write_card()

Parameters
sizeint; default=8

the size of the card (8/16)

class pyNastran.bdf.cards.aero.aero.AECOMPL(name: str, labels: List[str], comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

1

2

3

4

5

6

7

8

9

AECOMPL

NAME

LABEL1

LABEL2

LABEL3

LABEL4

LABEL5

LABEL6

LABEL7

LABEL8

etc.

AECOMPL

HORIZ

STAB

ELEV

BALANCE

Creates an AECOMPL card

Parameters
namestr

the name of the component

labelsList[str, str, …]; str

A string of 8 characters referring to the names of other components defined by either AECOMP or other AECOMPL entries.

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card: pyNastran.bdf.bdf_interface.bdf_card.BDFCard, comment: str = '') → pyNastran.bdf.cards.aero.aero.AECOMP[source]

Adds an AECOMPL card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model)[source]
type = 'AECOMPL'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

The writer method used by BDF.write_card()

Parameters
sizeint; default=8

the size of the card (8/16)

class pyNastran.bdf.cards.aero.aero.AEFACT(sid, fractions, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines real numbers for aeroelastic analysis.

1

2

3

4

5

6

7

8

9

AEFACT

SID

D1

D2

D3

D4

D5

D6

D7

D8

D9

etc.

AEFACT

97

.3

0.7

1.0

TODO: Are these defined in percentages and thus,

should they be normalized if they are not?

Creates an AEFACT card, which is used by the CAEROx / PAEROx card to adjust the spacing of the sub-paneleing (and grid point paneling in the case of the CAERO3).

Parameters
sidint

unique id

fractionsList[float, …, float]

list of percentages

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AEFACT card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

fractions = None

Number (float)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldsList[int/float/str]

the fields that define the card

sid = None

Set identification number. (Unique Integer > 0)

type = 'AEFACT'
write_card(size: int = 8, is_double: bool = False) → str[source]

The writer method used by BDF.write_card()

Parameters
sizeint; default=8

the size of the card (8/16)

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines relationships between or among AESTAT and AESURF entries, such that:

\[u^D + \Sigma_{i=1}^n C_i u_i^I = 0.0\]

1

2

3

4

5

6

7

8

9

AELINK

ID

LABLD

LABL1

C1

LABL2

C2

LABL3

C3

LABL4

C4

etc.

AELINK

10

INBDA

OTBDA

-2.0

Creates an AELINK card, which defines an equation linking AESTAT and AESURF cards

Parameters
aelink_idint/str

unique id

labelstr

name of the dependent AESURF card

independent_labelsList[str, …, str]

name for the independent variables (AESTATs)

linking_coefficientsList[float]

linking coefficients

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AELINK card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

an ID=0 is applicable to the global subcase, ID=1 only subcase 1

cross_reference(model: BDF) → None[source]

We’re simply going to validate the labels

independent_labels = None

defines the independent variable name (string)

label = None

defines the dependent variable name (string)

linking_coefficients = None

linking coefficients (real)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
list_fieldsList[int/float/str]

the fields that define the card

type = 'AELINK'
validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

The writer method used by BDF.write_card()

Parameters
sizeint; default=8

the size of the card (8/16)

class pyNastran.bdf.cards.aero.aero.AELIST(sid: int, elements: List[int], comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines a list of aerodynamic elements to undergo the motion prescribed with the AESURF Bulk Data entry for static aeroelasticity.

1

2

3

4

5

6

7

8

9

AELIST

SID

E1

E2

E3

E4

E5

E6

E7

E8

etc.

AELIST

75

1001

THRU

1075

1101

THRU

1109

1201

1202

Notes

  1. These entries are referenced by the AESURF entry.

  2. When the THRU option is used, all intermediate grid points must exist. The word THRU may not appear in field 3 or 9 (2 or 9 for continuations).

  3. Intervening blank fields are not allowed.

Creates an AELIST card, which defines the aero boxes for an AESURF/SPLINEx.

Parameters
sidint

unique id

elementsList[int, …, int]; int

list of box ids

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AELIST card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

clean_ids()[source]
cross_reference(model: BDF) → None[source]
elements = None

List of aerodynamic boxes generated by CAERO1 entries to define a surface. (Integer > 0 or ‘THRU’)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldsList[int/float/str]

the fields that define the card

safe_cross_reference(model)[source]
sid = None

Set identification number. (Integer > 0)

type = 'AELIST'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.AEPARM(aeparm_id: int, label: str, units: str, comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines a general aerodynamic trim variable degree-of-freedom (aerodynamic extra point). The forces associated with this controller will be derived from AEDW, AEFORCE and AEPRESS input data.

1

2

3

4

AEPARM

ID

LABEL

UNITS

AEPARM

5

THRUST

LBS

Creates an AEPARM card, which defines a new trim variable.

Parameters
idint

the unique id

labelstr

the variable name

unitsstr

unused by Nastran

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AEPARM card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldsList[int/float/str]

the fields that define the card

safe_cross_reference(model)[source]
type = 'AEPARM'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.AESURF(aesid: int, label: str, cid1: int, alid1: int, cid2: Optional[int] = None, alid2: Optional[int] = None, eff: float = 1.0, ldw: str = 'LDW', crefc: float = 1.0, crefs: float = 1.0, pllim: float = -1.5707963267948966, pulim: float = 1.5707963267948966, hmllim: Optional[int] = None, hmulim: Optional[int] = None, tqllim: Optional[int] = None, tqulim: Optional[int] = None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Specifies an aerodynamic control surface as a member of the set of aerodynamic extra points. The forces associated with this controller will be derived from rigid rotation of the aerodynamic model about the hinge line(s) and from AEDW, AEFORCE and AEPRESS input data. The mass properties of the control surface can be specified using an AESURFS entry.

1

2

3

4

5

6

7

8

9

AESURF

ID

LABEL

CID1

ALID1

CID2

ALID2

EFF

LDW

CREFC

CREFS

PLLIM

PULIM

HMLLIM

HMULIM

TQLLIM

TQULIM

Creates an AESURF card, which defines a control surface

Parameters
aesidint

controller number

labelstr

controller name

cid1 / cid2int / None

coordinate system id for primary/secondary control surface

alid1 / alid2int / None

AELIST id for primary/secondary control surface

efffloat; default=1.0

Control surface effectiveness

ldwstr; default=’LDW’

Linear downwash flag; [‘LDW’, ‘NODLW’]

crefcfloat; default=1.0

reference chord for the control surface

crefsfloat; default=1.0

reference area for the control surface

pllim / pulimfloat; default=-pi/2 / pi/2

Lower/Upper deflection limits for the control surface in radians

hmllim / hmulimfloat; default=None

Lower/Upper hinge moment limits for the control surface in force-length units

tqllim / tqulimint; default=None

Set identification numbers of TABLEDi entries that provide the lower/upper deflection limits for the control surface as a function of the dynamic pressure

commentstr; default=’’

a comment for the card

Cid1()[source]
Cid2()[source]
classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AESURF card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

aelist_id1()[source]
aelist_id2()[source]
aesid = None

Controller identification number

alid1 = None

Identification of an AELIST Bulk Data entry that identifies all aerodynamic elements that make up the control surface component. (Integer > 0)

cid1 = None

Identification number of a rectangular coordinate system with a y-axis that defines the hinge line of the control surface component.

crefc = None

Reference chord length for the control surface. (Real>0.0; Default=1.0)

crefs = None

Reference surface area for the control surface. (Real>0.0; Default=1.0)

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eff = None

Control surface effectiveness. See Remark 4. (Real != 0.0; Default=1.0)

hmllim = None

Lower and upper hinge moment limits for the control surface in force-length units. (Real, Default = no limit) -> 1e8

label = None

Controller name.

ldw = None

Linear downwash flag. See Remark 2. (Character, one of LDW or NOLDW; Default=LDW).

pllim = None

Lower and upper deflection limits for the control surface in radians. (Real, Default = +/- pi/2)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldsreset_camera[int/float/str]

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[int/float/str]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
tqllim = None

Set identification numbers of TABLEDi entries that provide the lower and upper deflection limits for the control surface as a function of the dynamic pressure. (Integer>0, Default = no limit)

type = 'AESURF'
uncross_reference() → None[source]

Removes cross-reference links

update(unused_model, maps)[source]
write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.AESURFS(aesid: int, label: str, list1: List[int], list2: List[int], comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Optional specification of the structural nodes associated with an aerodynamic control surface that has been defined on an AESURF entry. The mass associated with these structural nodes define the control surface moment(s) of inertia about the hinge line(s). Specifies rigid body motions to be used as trim variables in static aeroelasticity.

1

2

3

4

5

6

7

AESURFS

ID

LABEL

LIST1

LIST2

AESURFS

6001

ELEV

6002

6003

Creates an AESURFS card

Parameters
aesidint

the unique id

labelstr

the AESURF name

list1 / list2int / None

the list (SET1) of node ids for the primary/secondary control surface(s) on the AESURF card

commentstr; default=’’

a comment for the card

List1()[source]
List2()[source]
classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds an AESURFS card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldsList[int/float/str]

the fields that define the card

safe_cross_reference(model)[source]
type = 'AESURFS'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.CAERO1(eid: int, pid: int, igroup: int, p1: NDArray3float, x12: float, p4: NDArray3float, x43: float, cp: int = 0, nspan: int = 0, lspan: int = 0, nchord: int = 0, lchord: int = 0, comment: str = '')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines an aerodynamic macro element (panel) in terms of two leading edge locations and side chords. This is used for Doublet-Lattice theory for subsonic aerodynamics and the ZONA51 theory for supersonic aerodynamics.

1

2

3

4

5

6

7

8

9

CAERO1

EID

PID

CP

NSPAN

NCHORD

LSPAN

LCHORD

IGID

X1

Y1

Z1

X12

X4

Y4

Z4

X43

1
|       |         |           |      4
|      |
|      |
2------3
Attributes
eidint

element id

pidint

int : PAERO1 ID

igroupint

Group number

p1(1, 3) ndarray float

xyz location of point 1 (leading edge; inboard)

p4(1, 3) ndarray float

xyz location of point 4 (leading edge; outboard)

x12float

distance along the flow direction from node 1 to node 2; (typically x, root chord)

x43float

distance along the flow direction from node 4 to node 3; (typically x, tip chord)

cpint

int : coordinate system

nspanint

int > 0 : N spanwise boxes distributed evenly int = 0 : use lchord

nchordint

int > 0 : N chordwise boxes distributed evenly int = 0 : use lchord

lspanint

int > 0 : AEFACT reference for non-uniform nspan int = 0 : use nspan

lchordint

int > 0 : AEFACT reference for non-uniform nchord int = 0 : use nchord

commentstr; default=’’

accesses the comment

Defines a CAERO1 card, which defines a simplified lifting surface (e.g., wing/tail).

Parameters
eidint

element id

pidint, PAERO1

int : PAERO1 ID PAERO1 : PAERO1 object (xref)

igroupint

Group number

p1(1, 3) ndarray float

xyz location of point 1 (leading edge; inboard)

p4(1, 3) ndarray float

xyz location of point 4 (leading edge; outboard)

x12float

distance along the flow direction from node 1 to node 2; (typically x, root chord)

x43float

distance along the flow direction from node 4 to node 3; (typically x, tip chord)

cpint, CORDx; default=0

int : coordinate system CORDx : Coordinate object (xref)

nspanint; default=0

int > 0 : N spanwise boxes distributed evenly int = 0 : use lchord

nchordint; default=0

int > 0 : N chordwise boxes distributed evenly int = 0 : use lchord

lspanint, AEFACT; default=0

int > 0 : AEFACT reference for non-uniform nspan int = 0 : use nspan AEFACT : AEFACT object (xref)

lchordint, AEFACT; default=0

int > 0 : AEFACT reference for non-uniform nchord int = 0 : use nchord AEFACT : AEFACT object (xref)

commentstr; default=’’

a comment for the card

Cp()[source]
Pid()[source]
_box_id_error(box_id: int)[source]

Raise box_id IndexError.

_finalize_hdf5(encoding)[source]

hdf5 helper function

_get_box_x_chord_center(box_id: int, x_chord: float) → numpy.ndarray[source]

The the location of the x_chord of the box along the centerline.

classmethod _init_from_empty()[source]
_init_ids(dtype='int32')[source]

Fill self.box_ids with the sub-box ids. Shape is (nchord, nspan)

_properties = ['_field_map', 'shape', 'xy', 'min_max_eid', 'npanels']
classmethod add_card(card, comment='')[source]

Adds a CAERO1 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

classmethod add_quad(eid, pid, span, chord, igroup, p1, p2, p3, p4, cp=0, spanwise='y', comment='')[source]
1
| \
|   \
|     \
|      4
|      |
|      |
2------3

TODO: CP not handled correctly

cp = None

Coordinate system for locating point 1.

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eid = None

Element identification number

flip_normal()[source]

flips the CAERO1 normal vector

get_LChord()[source]
get_LSpan()[source]
get_box_index(box_id: int) → Tuple[int, int][source]

Get the index of self.box_ids that corresponds to the given box id.

Parameters
box_idint

Box id to get the index of.

Returns
indextuple

Index of self.box_ids that corresponds to the given box id.

get_box_mid_chord_center(box_id: int) → numpy.ndarray[source]

The the location of the mid chord of the box along the centerline.

Parameters
box_idint

Box id.

Returns
xyz_mid_chordndarray

Location of box mid chord in global.

get_box_quarter_chord_center(box_id: int) → numpy.ndarray[source]

The the location of the quarter chord of the box along the centerline.

Parameters
box_idint

Box id.

Returns
xyz_quarter_chordndarray

Location of box quarter chord in global.

get_leading_edge_points()[source]

gets the leading edge points

get_npanel_points_elements() → Tuple[int, int][source]

Gets the number of sub-points and sub-elements for the CAERO card

Returns
npointsint

The number of nodes for the CAERO

nelmementsint

The number of elements for the CAERO

get_points()[source]

Get the 4 corner points for the CAERO card

Returns
p1234(4, 3) list

List of 4 corner points in the global frame

property min_max_eid

Gets the min and max element ids of the CAERO card

Returns
min_max_eid(2, ) list

The [min_eid, max_eid]

property npanels
panel_points_elements() → Tuple[np.ndarray, np.ndarray][source]

Gets the sub-points and sub-elements for the CAERO1 card

Returns
points(nnodes,3) ndarray of floats

the array of points

elements(nelements,4) ndarray of integers

the array of point ids

pid = None

Property identification number of a PAERO2 entry.

plot(ax: AxesSubplot) → None[source]

plots the panels

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsLIST

The fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

set_points(points)[source]
property shape

returns (nelements_nchord, nelements_span)

shift(dxyz) → None[source]

shifts the aero panel

type = 'CAERO1'
uncross_reference() → None[source]

Removes cross-reference links

update(maps)[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

property xy
Returns
x(nchord,) ndarray

The percentage x location in the chord-wise direction of each panel

y(nspan,) ndarray

The percentage y location in the span-wise direction of each panel

class pyNastran.bdf.cards.aero.aero.CAERO2(eid, pid, igroup, p1, x12, cp=0, nsb=0, nint=0, lsb=0, lint=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Aerodynamic Body Connection Defines aerodynamic slender body and interference elements for Doublet-Lattice aerodynamics.

1

2

3

4

5

6

7

8

9

CAERO2

EID

PID

CP

NSB

NINT

LSB

LINT

IGID

X1

Y1

Z1

X12

Defines a CAERO2 card, which defines a slender body (e.g., fuselage/wingtip tank).

Parameters
eidint

element id

pidint

int : PAERO2 ID

igroupint

Group number

p1(1, 3) ndarray float

xyz location of point 1 (forward position)

x12float

length of the CAERO2

cpint; default=0

int : coordinate system

nsbint; default=0

Number of slender body elements

lsbint; default=0

AEFACT id for defining the location of the slender body elements

nintint; default=0

Number of interference elements

lintint; default=0

AEFACT id for defining the location of interference elements

commentstr; default=’’

a comment for the card

Cp()[source]
Lint()[source]
Lsb()[source]
Pid()[source]
classmethod _init_from_empty()[source]
_init_ids(dtype='int32')[source]
_properties = ['nboxes']
classmethod add_card(card, comment='')[source]

Adds a CAERO2 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cp = None

Coordinate system for locating point 1.

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eid = None

Element identification number

get_points()[source]

creates a 1D representation of the CAERO2

get_points_elements_3d()[source]

Gets the points/elements in 3d space as CQUAD4s The idea is that this is used by the GUI to display CAERO panels.

TODO: doesn’t support the aero coordinate system

igroup = None

Interference group identification. Aerodynamic elements with different IGIDs are uncoupled. (Integer >= 0)

lint = None

ID of an AEFACT data entry containing a list of division points for interference elements; used only if NINT is zero or blank. (Integer > 0)

lsb = None

ID of an AEFACT Bulk Data entry for slender body division points; used only if NSB is zero or blank. (Integer >= 0)

property nboxes
nint = None

Number of interference elements. If NINT > 0, then NINT equal divisions are assumed; if zero or blank, specify a list of divisions in LINT. (Integer >= 0)

nsb = None

Number of slender body elements. If NSB > 0, then NSB equal divisions are assumed; if zero or blank, specify a list of divisions in LSB. (Integer >= 0)

p1 = None

Location of point 1 in coordinate system CP

pid = None

Property identification number of a PAERO2 entry.

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist

The fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldslist

The fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
set_points(points)[source]
shift(dxyz)[source]

shifts the aero panel

type = 'CAERO2'
uncross_reference() → None[source]

Removes cross-reference links

validate() → None[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

x12 = None

Length of body in the x-direction of the aerodynamic coordinate system. (Real > 0)

class pyNastran.bdf.cards.aero.aero.CAERO3(eid, pid, list_w, p1, x12, p4, x43, cp=0, list_c1=None, list_c2=None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Creates a CAERO2 card, which defines a wing with a wing break/cant.

Parameters
eidint

element id

pidint

PAERO3 property id

p1(3,) float ndarray

???

x12float

distance from p1 to p3

p4(3,) float ndarray

???

x43float

distance from p4 to p3

cpint; default=0

coordinate system for locating point 1

list_wint

???

list_c1int; default=None

defines an AEFACT for ???

list_c2int; default=None

defines an AEFACT for ???

commentstr; default=’’

a comment for the card

1——–5———-4
| |
| 7–9—11 |
| | | |
2—–8–10–12—–3
Cp()[source]
List_c1()[source]
List_c2()[source]
List_w()[source]
Pid()[source]
classmethod _init_from_empty()[source]
_properties = ['shape', 'xy']
classmethod add_card(card, comment='')[source]

Adds a CAERO3 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cp = None

Coordinate system for locating point 1.

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eid = None

Element identification number

get_npanel_points_elements() → Tuple[int, int][source]

Gets the number of sub-points and sub-elements for the CAERO card

Returns
npointsint

The number of nodes for the CAERO

nelmementsint

The number of elements for the CAERO

get_points()[source]

Get the 4 corner points for the CAERO card

Returns
p1234(4, 3) list

List of 4 corner points in the global frame

panel_points_elements()[source]

Gets the sub-points and sub-elements for the CAERO card

Returns
points(nnodes,3) ndarray of floats

the array of points

elements(nelements,4) ndarray of integers

the array of point ids

pid = None

Property identification number of a PAERO3 entry.

plot(ax: AxesSubplot) → None[source]

plots the panels

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist

The fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldslist

The fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
property shape

returns (nelements_nchord, nelements_span)

type = 'CAERO3'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

property xy
Returns
x(nchord,) ndarray

The percentage x location in the chord-wise direction of each panel

y(nspan,) ndarray

The percentage y location in the span-wise direction of each panel

class pyNastran.bdf.cards.aero.aero.CAERO4(eid, pid, p1, x12, p4, x43, cp=0, nspan=0, lspan=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Aerodynamic Macro-Strip Element Connection Defines an aerodynamic macro element for Strip theory.

1

2

3

4

5

6

7

8

9

CAERO4

EID

PID

CP

NSPAN

NCHORD

X1

Y1

Z1

X12

X4

Y4

Z4

X43

Defines a CAERO4 card, which defines a strip theory surface.

Parameters
eidint

element id

pidint

int : PAERO4 ID

p1(1, 3) ndarray float

xyz location of point 1 (leading edge; inboard)

p4(1, 3) ndarray float

xyz location of point 4 (leading edge; outboard)

x12float

distance along the flow direction from node 1 to node 2 (typically x, root chord)

x43float

distance along the flow direction from node 4 to node 3 (typically x, tip chord)

cpint; default=0

int : coordinate system

nspanint; default=0

int > 0 : N spanwise boxes distributed evenly int = 0 : use lchord

lspanint; default=0

int > 0 : AEFACT reference for non-uniform nspan int = 0 : use nspan

commentstr; default=’’

a comment for the card

Cp()[source]
Pid()[source]
classmethod _init_from_empty()[source]
_init_ids(dtype='int32')[source]

Fill self.box_ids with the sub-box ids. Shape is (nchord, nspan)

_properties = ['shape', 'xy']
classmethod add_card(card, comment='')[source]

Adds a CAERO4 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cp = None

Coordinate system for locating point 1.

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eid = None

Element identification number

get_LSpan() → int[source]
get_npanel_points_elements()[source]

Gets the number of sub-points and sub-elements for the CAERO card

Returns
npointsint

The number of nodes for the CAERO

nelmementsint

The number of elements for the CAERO

get_points()[source]
panel_points_elements()[source]

Gets the sub-points and sub-elements for the CAERO card

Returns
points(nnodes,3) ndarray of floats

the array of points

elements(nelements,4) ndarray of integers

the array of point ids

pid = None

Property identification number of a PAERO4 entry.

plot(ax: AxesSubplot) → None[source]

plots the panels

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist

The fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldslist

The fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
property shape

returns (nelements_nchord, nelements_span)

type = 'CAERO4'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

property xy
Returns
x(nchord,) ndarray

The percentage x location in the chord-wise direction of each panel

y(nspan,) ndarray

The percentage y location in the span-wise direction of each panel

class pyNastran.bdf.cards.aero.aero.CAERO5(eid, pid, p1, x12, p4, x43, cp=0, nspan=0, lspan=0, ntheory=0, nthick=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines an aerodynamic macro element for Piston theory.

1

2

3

4

5

6

7

8

9

CAERO5

EID

PID

CP

NSPAN

LSPAN

NTHRY

NTHICK

X1

Y1

Z1

X12

X4

Y4

Z4

X43

CAERO5

6000

6001

100

315

0

0

0.0

0.0

0.0

1.0

0.2

1.0

0.8

Defines a CAERO5 card, which defines elements for Piston theory (high supersonic flow where the normal Mach is less than 1).

Parameters
eidint

element id

pidint

PAERO5 ID

p1(1, 3) ndarray float

xyz location of point 1 (leading edge; inboard)

p4(1, 3) ndarray float

xyz location of point 4 (leading edge; outboard)

x12float

distance along the flow direction from node 1 to node 2; (typically x, root chord)

x43float

distance along the flow direction from node 4 to node 3; (typically x, tip chord)

cpint; default=0

int : coordinate system

nspanint; default=0

int > 0 : N spanwise boxes distributed evenly int = 0 : use lchord

lspanint; default=0

int > 0 : AEFACT reference for non-uniform nspan int = 0 : use nspan

ntheoryint; default=0

??? valid_theory = {0, 1, 2}

nthickint; default=0

???

commentstr; default=’’

a comment for the card

Cp()[source]
LSpan()[source]
Pid()[source]
classmethod _init_from_empty()[source]
_init_ids(dtype='int32')[source]
classmethod add_card(card, comment='')[source]

Adds a CAERO5 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

c1_c2(mach)[source]
cp = None

Coordinate system for locating point 1.

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

eid = None

Element identification number

get_npanel_points_elements()[source]
get_points()[source]
property nboxes
panel_points_elements()[source]
pid = None

Property identification number of a PAERO5 entry.

plot(ax: AxesSubplot) → None[source]

plots the panels

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldslist

The fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'CAERO5'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.MONDSP1(name, label, axes, aecomp_name, xyz, cp=0, cd=None, ind_dof='123', comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

1

2

3

4

5

6

7

8

9

MONPNT1

NAME

LABEL

AXES

COMP

CP

X

Y

Z

CD

INDDOF

MONPNT1

WING155

Wing Integrated Load to Butline 155

34

WING

0.0

155.0

15.0

Creates a MONDSP1 card

Parameters
namestr

Character string of up to 8 characters identifying the monitor point

labelstr

A string comprising no more than 56 characters that identifies and labels the monitor point.

axesstr

components {1,2,3,4,5,6}

aecomp_namestr

name of the AECOMP/AECOMPL entry

xyzList[float, float, float]; default=None

The coordinates in the CP coordinate system about which the loads are to be monitored. None : [0., 0., 0.]

cpint, CORDx; default=0

coordinate system of XYZ

cdint; default=None -> cp

the coordinate system for load outputs

ind_dofstr; default=’123’

the dofs to map

commentstr; default=’’

a comment for the card

Notes

MSC specific card

Cd()[source]
Cp()[source]
classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'MONDSP1'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.MONPNT1(name, label, axes, aecomp_name, xyz, cp=0, cd=None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

1

2

3

4

5

6

7

8

9

MONPNT1

NAME

LABEL

AXES

COMP

CP

X

Y

Z

CD

MONPNT1

WING155

Wing Integrated Load to Butline 155

34

WING

0.0

155.0

15.0

Creates a MONPNT1 card

Parameters
namestr

Character string of up to 8 characters identifying the monitor point

labelstr

A string comprising no more than 56 characters that identifies and labels the monitor point.

axesstr

components {1,2,3,4,5,6}

aecomp_namestr

name of the AECOMP/AECOMPL entry

xyzList[float, float, float]; default=None

The coordinates in the CP coordinate system about which the loads are to be monitored. None : [0., 0., 0.]

cpint, CORDx; default=0

coordinate system of XYZ

cdint; default=None -> cp

the coordinate system for load outputs

commentstr; default=’’

a comment for the card

Notes

CD - MSC specific field

Cd()[source]
Cp()[source]
classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'MONPNT1'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.MONPNT2(name, label, table, Type, nddl_item, eid, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

MSC Nastran specific card

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]
cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, unused_xref_errors)[source]
type = 'MONPNT2'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.MONPNT3(name, label, axes, grid_set, elem_set, xyz, cp=0, cd=None, xflag=None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

MSC Nastran specific card

Cd()[source]
Cp()[source]
classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'MONPNT3'
uncross_reference() → None[source]
write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.PAERO1(pid, caero_body_ids=None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines associated bodies for the panels in the Doublet-Lattice method.

1

2

3

4

5

6

7

8

PAERO1

PID

B1

B2

B3

B4

B5

B6

Creates a PAERO1 card, which defines associated bodies for the panels in the Doublet-Lattice method.

Parameters
pidint

PAERO1 id

caero_body_idsList[int]; default=None

CAERO2 ids that are within the same IGROUP group

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
_properties = ['_field_map']
classmethod add_card(card, comment='')[source]

Adds a PAERO1 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PAERO1'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.PAERO2(pid, orient, width, AR, thi, thn, lrsb=None, lrib=None, lth=None, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines the cross-sectional properties of aerodynamic bodies.

1

2

3

4

5

6

7

8

9

PAERO2

PID

ORIENT

WIDTH

AR

LRSB

LRIB

LTH1

LTH2

THI1

THN1

THI2

THN2

THI3

THN3

Creates a PAERO2 card, which defines additional cross-sectional properties for the CAERO2 geometry.

Parameters
pidint

PAERO1 id

orientstr

Orientation flag. Type of motion allowed for bodies. Refers to the aerodynamic coordinate system of ACSID. See AERO entry. valid_orientations = {Z, Y, ZY}

widthfloat

Reference half-width of body and the width of the constant width interference tube

ARfloat

Aspect ratio of the interference tube (height/width)

thi / thnList[int]

The first (thi) and last (thn) interference element of a body to use the theta1/theta2 array

lrsbint; default=None
intAEFACT id containing a list of slender body half-widths

at the end points of the slender body elements

None : use width

lribint; default=None
intAEFACT id containing a list of interference body

half-widths at the end points of the interference elements

None : use width

lthList[int, int]; default=None

AEFACT id for defining theta arrays for interference calculations for theta1/theta2

commentstr; default=’’

a comment for the card

AR = None

Aspect ratio of the interference tube (height/width). float>0.

Lrib()[source]

AEFACT id

Lrsb()[source]

AEFACT id

classmethod _init_from_empty()[source]
_properties = ['_field_map', 'lth1', 'lth2']
classmethod add_card(card, comment='')[source]

Adds a PAERO2 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
lrib = None

Identification number of an AEFACT entry containing a list of slender body half-widths at the end points of the interference elements. If blank, the value of WIDTH will be used. (Integer > 0 or blank)

lrsb = None

Identification number of an AEFACT entry containing a list of slender body half-widths at the end points of the slender body elements. If blank, the value of WIDTH will be used. (Integer > 0 or blank)

property lth1
property lth2
orient = None

Orientation flag. Type of motion allowed for bodies. Refers to the aerodynamic coordinate system of ACSID. See AERO entry. (Character = ‘Z’, ‘Y’, or ‘ZY’)

pid = None

Property identification number. (Integer > 0)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PAERO2'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

width = None

Reference half-width of body and the width of the constant width interference tube. (Real > 0.0)

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.PAERO3(pid, nbox, ncontrol_surfaces, x, y, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines the number of Mach boxes in the flow direction and the location of cranks and control surfaces of a Mach box lifting surface.

1

2

3

4

5

6

7

8

9

PAERO3

PID

NBOX

NCTRL

X5

Y5

X6

Y6

X7

Y7

X8

Y8

X9

Y9

X10

Y10

X11

Y11

X12

Y12

PAERO3

2001

15

1

97.5

97.5

Creates a PAERO3 card, which defines the number of Mach boxes in the flow direction and the location of cranks and control surfaces of a Mach box lifting surface.

Parameters
pidint

PAERO1 id

nboxint

Number of Mach boxes in the flow direction; 0 < nbox < 50

ncontrol_surfacesint

Number of control surfaces. (0, 1, or 2)

x / yList[float, None]

float : locations of points 5 through 12, which are in the aerodynamic coordinate system, to define the cranks and control surface geometry.

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
_properties = ['npoints']
classmethod add_card(card, comment='')[source]

Adds a PAERO3 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
property npoints
pid = None

Property identification number. (Integer > 0)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

safe_cross_reference(model: BDF, unused_xref_errors)[source]
type = 'PAERO3'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.PAERO4(pid, docs, caocs, gapocs, cla=0, lcla=0, circ=0, lcirc=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Defines properties of each strip element for Strip theory.

1

2

3

4

5

6

7

8

9

PAERO4

PID

CLA

LCLA

CIRC

LCIRC

DOC1

CAOC1

GAPOC1

DOC2

CAOC2

GAPOC2

DOC3

CAOC3

GAPOC3

etc.

PAERO4

6001

1

501

0

0

0.0

0.0

0.0

0.50

0.25

0.02

0.53

0.24

0.0

## TODO: what happens for DOC4?

Parameters
PIDint

Property identification number. (Integer > 0)

CLAint; default=0

Select Prandtl-Glauert correction. (Integer = -1, 0, 1) -1 Compressibility correction made to lift curve slope data for a reference Mach number. 0 No correction and no list needed. (Default) +1 No correction and lift curve slope provided by a list as a

function of strip location and Mach number.

LCLAint

ID number of the AEFACT entry that lists the lift curve slope on all strips for each Mach number on the MKAEROi entry. See Remark 2 below. (Integer = 0 if CLA = 0, > 0 if CLA ≠ 0)

CIRCint; default=0

Select Theodorsen’s function C(k) or the number of exponential coefficients used to approximate C(k). (Integer = 0, 1, 2, 3; Must be zero if CLA ≠ 0.) 0 Theodorsen function. 1, 2, 3 Approximate function with b0, b1, β1, …, bn, βn n = 1, 2, 3.

LCIRCint

Identification number of the AEFACT entry that lists the b, β values for each Mach number. See Remark 3, 4, and 5 below; variable b’s and β’s for each mi on the MKAEROi entry. (Integer = 0 if CIRC = 0, > 0 if CIRC ≠ 0)

DOCiList[float]

d/c = distance of the control surface hinge aft of the quarter-chord divided by the strip chord (Real ≥ 0.0)

CAOCiList[float]

ca/c = control surface chord divided by the strip chord. (Real ≥ 0.0)

GAPOCiList[float]

g/c = control surface gap divided by the strip chord. (Real ≥ 0.0)

classmethod _init_from_empty()[source]
classmethod add_card(card, comment='')[source]

Adds a PAERO4 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
pid = None

Property identification number. (Integer > 0)

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PAERO4'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.PAERO5(pid, caoci, nalpha=0, lalpha=0, nxis=0, lxis=0, ntaus=0, ltaus=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

1

2

3

4

5

6

7

8

PAERO5

PID

NALPHA

LALPHA

NXIS

LXIS

NTAUS

LTAUS

CAOC1

CAOC2

CAOC3

CAOC4

CAOC5

PAERO5

7001

1

702

1

701

1

700

0.0

0.0

5.25

3.99375

0.0

classmethod _init_from_empty()[source]
_properties = ['ltaus_id', 'lxis_id']
classmethod add_card(card, comment='')[source]

Adds a PAERO5 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

property ltaus_id
property lxis_id
raw_fields()[source]
repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PAERO5'
uncross_reference() → None[source]

Removes cross-reference links

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.SPLINE1(eid: int, caero: int, box1: int, box2: int, setg: int, dz: float = 0.0, method: str = 'IPS', usage: str = 'BOTH', nelements: int = 10, melements: int = 10, comment: str = '')[source]

Bases: pyNastran.bdf.cards.aero.aero.Spline

Surface Spline Methods Defines a surface spline for interpolating motion and/or forces for aeroelastic problems on aerodynamic geometries defined by regular arrays of aerodynamic points.

1

2

3

4

5

6

7

8

9

SPLINE1

EID

CAERO

BOX1

BOX2

SETG

DZ

METH

USAGE

NELEM

MELEM

SPLINE1

3

111

115

122

14

Creates a SPLINE1, which defines a surface spline.

Parameters
eidint

spline id

caeroint

CAEROx id that defines the plane of the spline

box1 / box2int

First/last box id that is used by the spline

setgint

SETx id that defines the list of GRID points that are used by the surface spline

dzfloat; default=0.0

linear attachment flexibility dz = 0.; spline passes through all grid points

methodstr; default=IPS

method for spline fit valid_methods = {IPS, TPS, FPS} IPS : Harder-Desmarais Infinite Plate Spline TPS : Thin Plate Spline FPS : Finite Plate Spline

usagestr; default=BOTH

Spline usage flag to determine whether this spline applies to the force transformation, displacement transformation, or both valid_usage = {FORCE, DISP, BOTH}

nelementsint; default=10

The number of FE elements along the local spline x-axis if using the FPS option

melementsint; default=10

The number of FE elements along the local spline y-axis if using the FPS option

commentstr; default=’’

a comment for the card

CAero()[source]
Set()[source]
classmethod _init_from_empty()[source]
_properties = ['aero_element_ids']
classmethod add_card(card, comment='')[source]

Adds a SPLINE1 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

property aero_element_ids
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE1'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.SPLINE2(eid: int, caero: int, box1: int, box2: int, setg: int, dz: float = 0.0, dtor: float = 1.0, cid: int = 0, dthx: float = 0.0, dthy: float = 0.0, usage: str = 'BOTH', comment: str = '')[source]

Bases: pyNastran.bdf.cards.aero.aero.Spline

Linear Spline Defines a beam spline for interpolating motion and/or forces for aeroelastic problems on aerodynamic geometries defined by regular arrays of aerodynamic points.

1

2

3

4

5

6

7

8

9

SPLINE2

EID

CAERO

ID1

ID2

SETG

DZ

DTOR

CID

DTHX

DTHY

None

USAGE

SPLINE2

5

8

12

24

60

1.0

3

Creates a SPLINE2 card, which defines a beam spline.

Parameters
eidint

spline id

caeroint

CAEROx id that defines the plane of the spline

box1 / box2int

First/last box/body id that is used by the spline

setgint

SETx id that defines the list of GRID points that are used by the beam spline

dzfloat; default=0.0

linear attachment flexibility dz = 0.; spline passes through all grid points

dtorfloat; default=1.0

Torsional flexibility ratio (EI/GJ). Use 1.0 for bodies (CAERO2).

cidint; default=0

Rectangular coordinate system for which the y-axis defines the axis of the spline. Not used for bodies, CAERO2

dthxfloat; default=0.

Rotational attachment flexibility. DTHX : Used for rotation about the spline’s x-axis (in-plane

bending rotations). It is not used for bodies (CAERO2).

DTHYUsed for rotation about the spline’s y-axis (torsion).

It is used for slope of bodies.

usagestr; default=BOTH

Spline usage flag to determine whether this spline applies to the force transformation, displacement transformation, or both valid_usage = {FORCE, DISP, BOTH}

commentstr; default=’’

a comment for the card

CAero()[source]
Cid()[source]
Set()[source]
classmethod _init_from_empty()[source]
_properties = ['aero_element_ids']
classmethod add_card(card, comment='')[source]

Adds a SPLINE2 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

property aero_element_ids
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE2'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.SPLINE3(eid: int, caero: int, box_id: int, components: int, nodes: List[int], displacement_components: List[int], coeffs: List[float], usage: str = 'BOTH', comment: str = '')[source]

Bases: pyNastran.bdf.cards.aero.aero.Spline

Defines a constraint equation for aeroelastic problems. Useful for control surface constraints.

1

2

3

4

5

6

7

8

9

SPLINE3

EID

CAERO

BOXID

COMP

G1

C1

A1

USAGE

G2

C2

A2

G3

C3

A2

G4

C4

A4

etc.

SPLINE3

7000

107

109

6

5

3

1.0

BOTH

43

5

-1.0

Creates a SPLINE3 card, which is useful for control surface constraints.

Parameters
eidint

spline id

caeroint

CAEROx id that defines the plane of the spline

box_idint

Identification number of the aerodynamic box number.

componentsint

The component of motion to be interpolated. 3, 5 (CAERO1) 2, 3, 5, 6 (CAERO2) 3 (CAERO3) 3, 5, 6 (CAERO4) 3, 5, 6 (CAERO5) 1, 2, 3, 5, 6 (3D Geometry) 2-lateral displacement 3-transverse displacement 5-pitch angle 6-relative control angle for CAERO4/5; yaw angle for CAERO2

nodesList[int]

Grid point identification number of the independent grid point.

displacement_componentsList[int]

Component numbers in the displacement coordinate system. 1-6 (GRIDs) 0 (SPOINTs)

coeffsList[float]

Coefficient of the constraint relationship.

usagestr; default=BOTH

Spline usage flag to determine whether this spline applies to the force transformation, displacement transformation, or both valid_usage = {FORCE, DISP, BOTH}

commentstr; default=’’

a comment for the card

CAero()[source]
classmethod _init_from_empty()[source]
_properties = ['node_ids']
classmethod add_card(card, comment='')[source]

Adds a SPLINE3 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) → None[source]
property node_ids
raw_fields()[source]

1

2

3

4

5

6

7

8

9

SPLINE3

EID

CAERO

BOXID

COMP

G1

C1

A1

USAGE

G2

C2

A2

G3

C3

A2

G4

C4

A4

etc.

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE3'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.SPLINE4(eid: int, caero: int, aelist: int, setg: int, dz: float, method: str, usage: str, nelements: int, melements: int, ftype: Optional[int] = None, rcore: Optional[float] = None, comment: str = '')[source]

Bases: pyNastran.bdf.cards.aero.aero.Spline

Surface Spline Methods Defines a curved surface spline for interpolating motion and/or forces for aeroelastic problems on general aerodynamic geometries using either the Infinite Plate, Thin Plate or Finite Plate splining method.

1

2

3

4

5

6

7

8

9

SPLINE4

EID

CAERO

AELIST

SETG

DZ

METH

USAGE

NELEM

MELEM

SPLINE4

3

111

115

14

IPS

Creates a SPLINE4 card, which defines a curved Infinite Plate, Thin Plate, or Finite Plate Spline.

Parameters
eidint

spline id

caeroint

CAEROx id that defines the plane of the spline

box1 / box2int

First/last box id that is used by the spline

setgint

SETx id that defines the list of GRID points that are used by the surface spline

dzfloat; default=0.0

linear attachment flexibility dz = 0.; spline passes through all grid points

methodstr; default=IPS

method for spline fit valid_methods = {IPS, TPS, FPS} IPS : Harder-Desmarais Infinite Plate Spline TPS : Thin Plate Spline FPS : Finite Plate Spline

usagestr; default=BOTH

Spline usage flag to determine whether this spline applies to the force transformation, displacement transformation, or both valid_usage = {FORCE, DISP, BOTH}

nelements / melementsint; default=10

The number of FE elements along the local spline x/y-axis if using the FPS option

ftype: int; default=None

MSC only

rcorefloat; default=None

MSC only

commentstr; default=’’

a comment for the card

AEList() → int[source]
CAero() → int[source]
Set() → int[source]
classmethod _init_from_empty()[source]
_properties = ['aero_element_ids']
classmethod add_card(card, comment='')[source]

Adds a SPLINE4 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

property aero_element_ids
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

type = 'SPLINE4'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.SPLINE5(eid, caero, aelist, setg, thx, thy, dz=0.0, dtor=1.0, cid=0, usage='BOTH', method='BEAM', ftype='WF2', rcore=None, comment='')[source]

Bases: pyNastran.bdf.cards.aero.aero.Spline

Linear Spline Defines a 1D beam spline for interpolating motion and/or forces for aeroelastic problems on aerodynamic geometries defined by irregular arrays of aerodynamic points. The interpolating beam supports axial rotation and bending in the yz-plane.

+=========+======+=======+========+=======+======+====+=======+=======+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +=========+======+=======+========+=======+======+====+=======+=======+ | SPLINE5 | EID | CAERO | AELIST | | SETG | DZ | DTOR | CID | +———+——+——-+——–+——-+——+—-+——-+——-+ | | DTHX | DTHY | | USAGE | METH | | FTYPE | RCORE | +———+——+——-+——–+——-+——+—-+——-+——-+

METH, FTYPE, RCORE are in 2012+ (not MSC.2005r2 or NX.10)

AEList()[source]
CAero()[source]
Cid()[source]
Set()[source]
classmethod _init_from_empty()[source]
_properties = ['aero_element_ids']
classmethod add_card(card, comment='')[source]

Adds a SPLINE5 card from BDF.add_card(...)

Parameters
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

property aero_element_ids
cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE5'
uncross_reference() → None[source]

Removes cross-reference links

validate()[source]

card checking method that should be overwritten

write_card(size: int = 8, is_double: bool = False) → str[source]

Writes the card with the specified width and precision

Parameters
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.aero.Spline[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

pyNastran.bdf.cards.aero.aero.build_caero_paneling(model: BDF, create_secondary_actors: bool = True) → Tuple[str, List[str], Any][source]
Creates the CAERO panel inputs including:
  • caero

  • caero_subpanels

  • caero_control_surfaces

  • N control surfaces

Parameters
modelBDF()

the bdf model

Returns
caero_points(N_aero_points, 3) float ndarray

the xyz points for the aero panels N_aero_points can be 0

ncaerosint

the number of aero sub-panels?

ncaeros_subint

???

ncaeros_csint

???

ncaeros_pointsint

number of points for the caero coarse grid

ncaero_sub_pointsint

number of points for the caero fine/subpanel grid

has_control_surfacebool

is there a control surface

box_id_to_caero_element_mapdict[box_id] = box_index

used to map the CAEROx box id to index in the ??? (aero panel elements) array, which will be used with cs_box_ids

cs_box_idsdict[control_surface_name]

list of panels used by each aero panel

pyNastran.bdf.cards.aero.aero.get_caero_count(model: BDF) → Tuple[int, int, int, int][source]
pyNastran.bdf.cards.aero.aero.get_caero_points(model: BDF, box_id_to_caero_element_map: Dict[int, np.ndarray]) → Tuple[np.ndarray, bool][source]
pyNastran.bdf.cards.aero.aero.get_caero_subpanel_grid(model: BDF) → Tuple[np.ndarray, np.ndarray][source]

builds the CAERO subpanel grid in 3d space