# zona Module¶

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

All cards are BaseCard objects.

class pyNastran.bdf.cards.aero.zona.ACOORD(cid, origin, delta, theta, comment='')[source]

Defines a general coordinate system using three rotational angles as functions of coordinate values in the reference coordinate system. The CORD3G entry is used with the MAT9 entry to orient material principal axes for 3-D composite analysis.

1

2

3

4

5

6

7

8

ACOORD

ID

XORIGN

YORIGN

ZORIGN

DELTA

THETA

ACOORD

10

250.0

52.5

15.0

0.0

0.0

Defines the CORD3G card

Parameters
cidint

coordinate system id

originList[float]

the xyz origin

deltafloat

pitch angle

thetafloat

roll angle

a comment for the card

Type = 'R'
acoord_transform_to_global(p)[source]
Parameters
p(3,) float ndarray

the point to transform

.. warning:: not done, just setting up how you’d do this
.. note:: per http://en.wikipedia.org/wiki/Euler_angles

“This means for example that a convention named (YXZ) is the result of performing first an intrinsic Z rotation, followed by X and Y rotations, in the moving axes (Note: the order of multiplication of matrices is the opposite of the order in which they’re applied to a vector).”

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

coord_to_xyz(p)[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]
property rid
rotation_x(ct, st)[source]
rotation_y(ct, st)[source]
rotation_z(ct, st)[source]
setup()[source]
$e_{13} = e_3 - e_1$
$e_{12} = e_2 - e_1$
$k = \frac{e_{12}}{\lvert e_{12} \rvert}$
$j_{dir} = k \times e_{13}$
$j = \frac{j_{dir}}{\lvert j_{dir} \rvert}$
$i = j \times k$
type = 'ACOORD'
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.zona.AEROZ(fm_mass_unit, fm_length_unit, cref, bref, sref, flip='NO', acsid=0, rcsid=0, sym_xz=0, xyz_ref=None, comment='')[source]

Gives basic aerodynamic parameters for unsteady aerodynamics.

1

2

3

4

5

6

7

8

AEROS

ACSID

RCSID

REFC

REFB

REFS

SYMXZ

SYMXY

AEROS

10

20

1

Creates an AEROZ card

Parameters
creffloat

the aerodynamic chord

breffloat

the wing span for a half model, this should be the full span for a full model, this should be the full span

sreffloat

the wing area for a half model, this should be the half area for a full model, this should be the full area

acsidint; default=0

aerodyanmic coordinate system defines the direction of the wind

rcsidint; default=0

coordinate system for rigid body motions

sym_xzint; default=0

xz symmetry flag (+1=symmetry; -1=antisymmetric)

a comment for the card

Acsid()[source]
Rcsid()[source]
acsid = None

Aerodynamic coordinate system identification.

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

$ACSID XZSYM FLIP FMMUNIT FMLUNIT REFC REFB REFS$+ABC REFX REFY REFZ
AEROZ 0 YES NO SLIN IN 22.73 59.394 1175.8

59.53 0.0 0.0

bref = None

Reference span

convert_to_zona(unused_model)[source]
cref = None

Reference chord length

cross_reference(model: BDF) → None[source]

Cross refernece aerodynamic coordinate system.

Parameters
modelBDF

The BDF object.

raw_fields()[source]

Gets the fields in their unmodified form

Returns
fieldslist[varies]

the fields that define the card

rcsid = None

Reference coordinate system identification for rigid body motions.

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]

Safe cross refernece aerodynamic coordinate system.

Parameters
modelBDF

The BDF object.

sref = None

Reference wing area

sym_xz = None

Symmetry key for the aero coordinate x-z plane. See Remark 6. (Integer = +1 for symmetry, 0 for no symmetry, and -1 for antisymmetry; Default = 0)

type = 'AEROZ'
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.zona.AESURFZ(label, surface_type, cid, panlst, setg, actuator_tf, comment='')[source]

Specifies an aerodynamic control surface for aeroservoelastic, static aeroelastic/trim analysis, or the transient response analysis.

1

2

3

4

5

6

7

8

9

AESURFZ

LABEL

TYPE

CID

SETK

SETG

ACTID

AESURFZ

RUDDER

ASYM

1

10

20

0

Creates an AESURF card, which defines a control surface

Parameters
labelstr

controller name

surface_typestr

defines the control surface type {SYM, ASYM}

cidint

coordinate system id to define the hinge axis

panlstint

aero panels defined by PANLST

setgint

???

actuator_tfint

???

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

property aesid
property alid1_ref
cid = None

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

convert_to_nastran(model, aesurf_id, aelist_id)[source]

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

1

2

3

4

5

6

7

AESURFZ

LABEL

TYPE

CID

SETK

SETG

ACTID

AESURFZ

RUDDER

ASYM

1

10

20

0

cross_reference(model: BDF) → None[source]

Cross links the card so referenced cards can be extracted directly

Parameters
modelBDF()

the BDF object

label = None

Controller name.

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]
type = 'AESURFZ'
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.zona.BODY7(eid, label, pid, nseg, idmeshes, acoord=0, comment='')[source]

Defines an aerodynamic body macroelement of a body-like component. Similar to Nastran’s CAERO2.

1

2

3

4

5

6

7

8

9

CAERO2

EID

PID

CP

NSB

NINT

LSB

LINT

IGID

X1

Y1

Z1

X12

1

2

3

4

5

6

7

8

9

BODY7

BID

LABEL

IPBODY7

ACOORD

NSEG

IDMESH1

IDMESH2

IDMESH3

IDMESH4

etc

BODY7

4

BODY

2

8

4

20

21

22

23

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

Parameters
eidint

body id

labelstr

An arbitrary character string used to define the body.

pidint; default=0

Identification number of PBODY7 bulk data card (specifying body wake and/or inlet aerodynamic boxes)

acoordint; default=0

Identification number of ACOORD bulk data card (specifying body center line location and orientation)

nsegint

Number of body segments

idmeshesList[int]

Identification number of SEGMESH bulk data card (specifying body segments).

a comment for the card

ACoord()[source]
Pid()[source]
_get_body7_width_height_radius(thetas: np.ndarray, itype: int, camber: float, yrad: float, zrad: float, idy_ref, idz_ref) → Tuple[float, float, float, float, float][source]
_get_nthetas() → int[source]

gets the number of thetas for the body

_get_points_elements_3di(segmesh: SEGMESH) → Tuple[np.ndarray, np.ndarray][source]
points (nchord, nspan) float ndarray; might be backwards???

the points

_get_thetas() → numpy.ndarray[source]

gets the thetas for the body

_get_xyzs_offset(origin_x, origin_y, origin_z, thetas, itype: int, x: float, yrad: float, zrad: float, camber: float, idy_ref, idz_ref) → Tuple[List[float], np.ndarray, np.ndarray][source]
classmethod add_card(card, comment='')[source]

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]

1

2

3

4

5

6

7

8

9

CAERO2

EID

PID

CP

NSB

NINT

LSB

LINT

IGID

X1

Y1

Z1

X12

1

2

3

4

5

6

7

8

9

BODY7

BID

LABEL

IPBODY7

ACOORD

NSEG

IDMESH1

IDMESH2

IDMESH3

IDMESH4

etc

BODY7

4

BODY

2

8

4

20

21

22

23

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() → List[np.ndarray, np.ndarray][source]

creates a 1D representation of the BODY7

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

property nboxes
property npanels

gets the number of panels for the body

pid = None

Property identification number of a PAERO7 entry.

raw_fields() → List[Any][source]

Gets the fields in their unmodified form

Returns
fieldslist

The fields that define the card

repr_fields() → List[Any][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 = 'BODY7'
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.zona.CAERO7(eid, label, p1, x12, p4, x43, cp=0, nspan=0, nchord=0, lspan=0, p_airfoil=None, ztaic=None, comment='')[source]

Totally wrong…

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

CAERO7

WID

LABEL

ACOORD

NSPAN

NCHORD

LSPAN

ZTAIC

PAFOIL7

XRL

YRL

ZRL

RCH

LRCHD

ATTCHR

ACORDR

XTL

YTL

ZTL

TCH

LTCHD

ATTCHT

ACORDT

1
|       |         |           |      4
|      |
|      |
2------3

Attributes
eidint

element id

pidint, PAERO1

int : PAERO1 ID PAERO1 : PAERO1 object (xref)

igidint

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

int : coordinate system CORDx : Coordinate object (xref)

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, AEFACT

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

lchordint, AEFACT

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

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)

a comment for the card

Cp()[source]
_box_id_error(box_id)[source]

Raise box_id IndexError.

_get_box_x_chord_center(box_id, x_chord)[source]

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

_init_ids(dtype='int32')[source]

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

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

CAERO7 100101 RIBW1 2 25

998.904 39.821 230.687 1298.159 310001 1121.821 61.134 236.560 1175.243

CAERO7 100201 RIBW2 2 25

1121.821 61.134 236.560 1175.243 1244.258 84.704 243.625 1052.805

convert_to_nastran()[source]

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

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]
get_LSpan()[source]
get_box_index(box_id)[source]

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

Parameters
box_idint

Box id to ge tthe index of.

Returns
indextuple

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

get_box_mid_chord_center(box_id)[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)[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 quater chord in global.

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]

Get the 4 corner points for the CAERO card

Returns
p1234(4, 3) list

List of 4 corner points in the global frame

label = None

Property identification number of a PAERO2 entry.

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()[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

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)[source]

shifts the aero panel

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

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.zona.FLUTTER_ZONA(sid, sym, fix, nmode, tabdmp, mlist, conmlst, nkstep=25, comment='')[source]

Defines data needed to perform flutter, ASE, or a transient response analysis.

1

2

3

4

5

6

7

8

9

FLUTTER

SID

METHOD

DENS

MACH

RFREQ

IMETH

NVALUE/OMAX

EPS

FLUTTER

19

K

119

219

319

S

5

1.-4

1

2

3

4

5

6

7

8

9

FLUTTER

SETID

SYM

FIX

NMODE

TABDMP

MLIST

CONMLST

NKSTEP

FLUTTER

100

SYMM3

1

0

30

100

0

50

Creates a FLUTTER card, which is required for a flutter (SOL 145) analysis.

Parameters
sidint

Unique set identification number. (Integer > 0)

symstr

Character string up to 8 characters with no embedded blanks. The first 4 characters can be either ‘SYMM’ (or ‘SYM’), ‘ANTI’, or ‘ASYM’ that defines the boundary condition of the structural finite element model as well as the unsteady aerodynamics, where:

• SYMM Symmetric boundary condition.

• ANTI Antisymmetric boundary condition.

• ASYM Asymmetric boundary condition.

The last 4 characters are used to specify the interpolation scheme for the generalized aerodynamic matrices. They can be either:

• blank for a cubic spline

• L for a linear interpolation. (such as SYM = ‘SYMML’, ‘ANTIL’, or ‘ASYML’)

• P for a second-order-polynomial interpolation. (such as SYM = ‘SYMMP’, ‘ANTIP’, or ‘ASYMP’)

• integer for a hybrid cubic spline and linear interpolation scheme. (such as SYM = ‘SYMM1’, ‘SYMM2’, ‘ANTI3’, etc.)

• (Default = SYMML)

fixint

Identification number of a FIXHATM, FIXMATM, FIXMACH, or FIXMDEN bulk data card. (Integer > 0)

nmodeint

Number of structural modes used in the flutter analysis. (Integer >= 0)

tabdmpint

Identification number of a TABDMP1 bulk data card specifying modal damping as

a function of natural frequency. (Integer ≥ 0)

mlistint

Identification number of a SET1 or SETADD bulk data card specifying a list of normal modes to be omitted from the flutter analysis. (Integer >= 0)

conmlstint

Identification number of a CONMLST bulk data card specifying a list of identification numbers of the CONM1 bulk data cards for mass perturbation. (Integer >= 0) (See Remark 8)

nkstepint; default=25

Number of reduced frequency steps for the reduced-frequency-sweep technique of the g-Method flutter solution. (Integer >= 0)

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]
cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors=None)[source]
type = 'FLUTTER_ZONA'
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.zona.MKAEROZ(sid, mach, flt_id, filename, print_flag, freqs, method=0, save=None, comment='')[source]
Parameters
sidint

the MKAEROZ id

machfloat

the mach number for the TRIM solution

savestr

save the AIC data to the filename SAVE save the AICs ACQUIRE load an AIC database ADD append the new acids to the existing AIC database RESTART continue an analysis

filenamestr

the length of the file must be at most 56 characters

print_flagint

???

freqsList[float]

???

methodint

???

save???

???

a comment for the card

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

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

type = 'MKAEROZ'
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.zona.PAFOIL7(pid, i_axial, i_thickness_root, i_camber_root, le_radius_root, i_thickness_tip, i_camber_tip, le_radius_tip, comment='')[source]

Defines an aerodynamic body macroelement of a body-like component. Similar to Nastran’s CAERO2.

1

2

3

4

5

6

7

8

9

PAFOIL7

ID

ITAX

ITHR

ICAMR

ITHT

ICAMT

PAFOIL7

1

-201

202

203

0.1

211

212

0.1

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

Parameters
pidint

PAFOIL7 identification number.

i_axialstr

Identification number of an AEFACT bulk data card used to specify the xcoordinate locations, in percentage of the chord length, where the thickness and camber are specified. ITAX can be a negative number (where ABS (ITAX) = AEFACT bulk data card identification number) to request linear interpolation.

i_thickness_root / i_thickness_tipint

Identification number of an AEFACT bulk data card used to specify the half thickness of the airfoil at the wing root/tip.

i_camberint; default=0

Identification number of an AEFACT bulk data card used to specify the camber of the airfoil at the wing root.

i_thickness_tipint

Identification number of an AEFACT bulk data card used to specify the half thickness at the wing tip.

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]

Should this be converted to a DMIG?

1

2

3

4

5

6

7

8

9

PAFOIL7

ID

ITAX

ITHR

ICAMR

ITHT

ICAMT

PAFOIL7

1

-201

202

203

0.1

211

212

0.1

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

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]
type = 'PAFOIL7'
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.zona.PANLST1(eid, macro_id, box1, box2, comment='')[source]

Defines a set of aerodynamic boxes by the LABEL entry in CAERO7 or BODY7 bulk data cards.

1

2

3

4

5

6

7

8

9

SPLINE1

EID

MODEL

CP

SETK

SETG

DZ

EPS

SPLINE1

100

1

10

1

2

3

4

5

6

7

8

9

PANLST1

SETID

MACROID

BOX1

BOX2

PANLST1

100

111

111

118

PANLST1 is referred to by SPLINEi, ATTACH, LOADMOD, CPFACT, JETFRC, and/or AESURFZ bulk data card.

Creates a PANLST1 card

Parameters
eidint

spline id

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PANLST1'
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.zona.PANLST3(eid, panel_groups, comment='')[source]

Defines a set of aerodynamic boxes by the LABEL entry in CAERO7 or BODY7 bulk data cards.

1

2

3

4

5

6

7

8

9

SPLINE1

EID

MODEL

CP

SETK

SETG

DZ

EPS

SPLINE1

100

1

10

1

2

3

4

5

6

7

8

9

PANLST3

SETID

LABEL1

LABEL2

LABEL3

etc

PANLST3

100

WING

HTAIL

PANLST3 is referred to by SPLINEi, ATTACH, LOADMOD, CPFACT, JETFRC, and/or AESURFZ bulk data card.

Creates a PANLST3 card

Parameters
eidint

spline id

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'PANLST3'
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.zona.SEGMESH(segmesh_id, naxial, nradial, nose_radius, iaxis, itypes, xs, cambers, ys, zs, idys, idzs, comment='')[source]

Defines a grid system for a body segment; referenced by the BODY7 bulk data card.

1

2

3

4

5

6

7

8

9

SEGMESH

IDMESH

NAXIS

IAXIS

ITYPE1

X1

CAM1

YR1

ZR1

IDY1

IDZ1

ITYPE2

X2

CAM2

YR2

ZR2

IDY2

IDZ2

ITYPE3

X3

CAM3

YR3

ZR3

IDY3

IDZ3

SEGMESH

2

3

6

1

0.0

0.0

0.0

1

1.0

0.0

0.5

3

2.0

103

104

Defines a SEGMESH card, which defines a cross-section for a PBODY7.

Parameters
segmesh_idint

Body segment mesh identification number.

naxialint

Number of axial stations (i.e., divisions) of the segment. (min=2).

Number of circumferential points of the segment (min=3).

Nose radius of blunt body. NOSERAD is active only if ZONA7U (Hypersonic Aerodynamic Method) is used (the METHOD entry of the MKAEROZ Bulk Data equals 2 or –2). Furthermore, NOSERAD is used only if the SEGMESH bulk data card is the first segment defined in the BODY7 bulk data card.

iaxisint

The index of the axial station where the blunt nose ends. IAXIS is active only if ZONA7U (Hypersonic Aerodynamic Method) is used.

ITYPEiint

Type of input used to define the circumferential box cuts - 1 body of revolution - 2 elliptical body - 3 arbitrary body

XiList[float]

X-location of the axial station; Xi must be in ascending order. (i.e., Xi+1 > Xi)

cambersList[float]

Body camber at the Xi axial station. (Real)

YRiList[float]

Body cross-sectional radius if ITYPEi = 1 or the semi-axis length of the elliptical body parallel to the Y-axis if ITYPEi=2.

ZRiList[float]

The semi-axis length of the elliptical body parallel to the Z-axis. Used only if ITYPEi=2. (Real)

IDYiint

Identification number of AEFACT bulk data card that specifies NRAD number of the Y-coordinate locations of the circumferential points at the Xi axial station. Use only if ITYPEi=3.

IDZiint

Identification number of AEFACT bulk data card that specifies NRAD number of the Z-coordinate locations of the circumferential points at the Xi axial station. Use only if ITYPEi=3.

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

cross_reference(model: BDF) → None[source]
property pid
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]
shift(dxyz)[source]

shifts the aero panel

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

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.zona.SPLINE1_ZONA(eid, panlst, setg, model=None, cp=None, dz=None, eps=0.01, comment='')[source]

Defines an infinite plate spline method for displacements and loads transferal between CAERO7 macroelement and structural grid 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

1

2

3

4

5

6

7

8

9

SPLINE1

EID

MODEL

CP

SETK

SETG

DZ

EPS

SPLINE1

100

1

10

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

Parameters
eidint

spline id

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]

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

1

2

3

4

5

6

7

8

9

SPLINE1

EID

MODEL

CP

SETK

SETG

DZ

EPS

SPLINE1

100

1

10

cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE1_ZONA'
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.zona.SPLINE2_ZONA(eid, panlst, setg, model=None, dz=None, eps=0.01, cp=None, curvature=None, comment='')[source]

Defines an infinite plate spline method for displacements and loads transferal between CAERO7 macroelement and structural grid points.

1

2

3

5

6

6

7

8

9

SPLINE2

EID

MODEL

SETK

SETG

DZ

EPS

CP

CURV

SPLINE2

100

1

10

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

Parameters
eidint

spline id

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

cross_reference(model: BDF) → None[source]
raw_fields()[source]
safe_cross_reference(model: BDF, xref_errors)[source]
type = 'SPLINE2_ZONA'
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.zona.SPLINE3_ZONA(eid, panlst, setg, model=None, cp=None, dz=None, eps=0.01, comment='')[source]

Defines a 3-D spline for the BODY7 and CAERO7 macroelement.

1

2

3

4

5

6

7

8

9

SPLINE3

EID

MODEL

CP

SETK

SETG

DZ

EPS

SPLINE3

100

N/A

1

10

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

Parameters
eidint

spline id

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]
cross_reference(model: BDF) → None[source]
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_ZONA'
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.zona.TRIMLNK(link_id, sym, coeffs, var_ids, comment='')[source]

Defines a set of coefficient and trim variable identification number pairs for trim variable linking.

+=========+========+========+========+========+========+========+========+========+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | +———+——–+——–+——–+——–+——–+——–+——–+——–+ | TRIMLNK | IDLINK | SYM | COEFF1 | IDVAR1 | COEFF2 | IDVAR2 | COEFF3 | IDVAR3 | +———+——–+——–+——–+——–+——–+——–+——–+——–+ | | COEFF4 | IDVAR4 | etc. | | | | | | +———+——–+——–+——–+——–+——–+——–+——–+——–+

Creates a TRIMLNK card

Parameters

the TRIMLNK id

sym???

???

coeffs???

???

var_ids???

???

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]
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

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model)[source]
type = 'TRIMLNK'
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.zona.TRIMVAR(var_id, label, lower, upper, trimlnk, dmi, sym, initial, dcd, dcy, dcl, dcr, dcm, dcn, comment='')[source]

Specifies a trim variable for static aeroelastic trim variables.

Creates a TRIMVAR card for a static aero (144) analysis.

Parameters
var_idint

the trim id; referenced by the Case Control TRIM field

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

convert_to_nastran(model)[source]
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

repr_fields()[source]

Gets the fields in their simplified form

Returns
fieldsList[varies]

the fields that define the card

safe_cross_reference(model)[source]
type = 'TRIMVAR'
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.zona.TRIM_ZONA(sid, mkaeroz, q, cg, true_g, nxyz, pqr, loadset, labels, uxs, comment='')[source]

Specifies constraints for aeroelastic trim variables.

Creates a TRIM card for a static aero (144) analysis.

Parameters
sidint

the trim id; referenced by the Case Control TRIM field

qfloat

dynamic pressure

true_gfloat

???

nxyzList[float]

???

pqrList[float]

[roll_rate, pitch_rate, yaw_rate]

Identification number of a SET1 or SETADD bulk data card that specifies a set of identification numbers of TRIMFNC or TRIMADD bulk data card. All values of the trim functions defined by the TRIMFNC or TRIMADD bulk data card are computed and printed out.

labelsList[str]

names of the fixed variables

uxsList[float]

values corresponding to labels

a comment for the card

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

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

Parameters
cardBDFCard()

a BDFCard object

a comment for the card

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

The label identifying aerodynamic trim variables defined on an AESTAT or AESURF entry.

q = None

Dynamic pressure. (Real > 0.0)

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)[source]
sid = None

Trim set identification number. (Integer > 0)

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

uxs = None

The magnitude of the aerodynamic extra point degree-of-freedom. (Real)

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.zona.ZONA(model)[source]

Bases: object

PAFOIL(pid, msg='')[source]

gets a pafoil profile (PAFOIL7/PAFOIL8)

_add_aesurfz_object(aesurf: pyNastran.bdf.cards.aero.zona.AESURFZ) → None[source]

_add_caero2s(caero2s, add=False)[source]

Converts ZONA BODY7 to CAERO2/PAERO2/AEFACT

_add_mkaeroz_object(mkaeroz: pyNastran.bdf.cards.aero.zona.MKAEROZ) → None[source]

_add_pafoil_object(pafoil: pyNastran.bdf.cards.aero.zona.PAFOIL7) → None[source]

_add_panlst_object(panlst: Union[PANLST1, PANLST3]) → None[source]

_add_trimlnk_object(trimlnk: pyNastran.bdf.cards.aero.zona.TRIMLNK) → None[source]

_add_trimvar_object(trimvar: pyNastran.bdf.cards.aero.zona.TRIMVAR) → None[source]

_convert_aesurf_aelist()[source]

Converts ZONA AESURFZ to AESURF/AELIST

1

2

3

4

5

6

7

AESURFZ

LABEL

TYPE

CID

SETK

SETG

ACTID

AESURFZ

RUDDER

ASYM

1

10

20

0

_convert_caeros()[source]

Converts ZONA CAERO7/BODY7 to CAERO1/CAERO2

_convert_splines()[source]

Converts ZONA splines to splines

_convert_trim()[source]

Converts ZONA TRIM to TRIM

_convert_trimlnk()[source]

classmethod _init_from_self(model)[source]

helper method for dict_to_h5py

clear()[source]

clears out the ZONA object

convert_to_nastran(save=True)[source]

Converts a ZONA model to Nastran

cross_reference()[source]
object_attributes(mode: str = 'public', keys_to_skip: Optional[List[str]] = None, filter_properties: bool = False)[source]

List the names of attributes of a class as strings. Returns public attributes as default.

Parameters
modestr

defines what kind of attributes will be listed * ‘public’ - names that do not begin with underscore * ‘private’ - names that begin with single underscore * ‘both’ - private and public * ‘all’ - all attributes that are defined for the object

keys_to_skipList[str]; default=None -> []

names to not consider to avoid deprecation warnings

Returns
attribute_namesList[str]

sorted list of the names of attributes of a given type or None if the mode is wrong

object_methods(mode: str = 'public', keys_to_skip: Optional[List[str]] = None) → List[str][source]

List the names of methods of a class as strings. Returns public methods as default.

Parameters
objinstance

the object for checking

modestr

defines what kind of methods will be listed * “public” - names that do not begin with underscore * “private” - names that begin with single underscore * “both” - private and public * “all” - all methods that are defined for the object

keys_to_skipList[str]; default=None -> []

names to not consider to avoid deprecation warnings

Returns
methodList[str]

sorted list of the names of methods of a given type or None if the mode is wrong

pafoil = None

store PAFOIL7/PAFOIL8

panlsts = None

store PANLST1,PANLST2,PANLST3

safe_cross_reference()[source]
update_for_zona()[source]

validate()[source]
verify(xref)[source]
write_bdf(bdf_file, size=8, is_double=False)[source]