zona Module

Inheritance diagram of pyNastran.bdf.cards.aero.zona
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]

Bases: pyNastran.bdf.cards.coordinate_systems.Coord

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:
cid : int

coordinate system id

origin : List[float]

the xyz origin

delta : float

pitch angle

theta : float

roll angle

comment : str; default=’‘

a comment for the card

Type = 'R'
acoord_transform_to_global(self, 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:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

coord_to_xyz(self, p)[source]
cross_reference(self, model)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

raw_fields(self)[source]
rid
rotation_x(self, ct, st)[source]
rotation_y(self, ct, st)[source]
rotation_z(self, ct, st)[source]
setup(self)[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(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.aero.dynamic_loads.Aero

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:
cref : float

the aerodynamic chord

bref : float

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

sref : float

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

acsid : int; default=0

aerodyanmic coordinate system defines the direction of the wind

rcsid : int; default=0

coordinate system for rigid body motions

sym_xz : int; default=0

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

comment : str; default=’‘

a comment for the card

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

Aerodynamic coordinate system identification.

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

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(self, unused_model)[source]
cref = None

Reference chord length

cross_reference(self, model)[source]

Cross refernece aerodynamic coordinate system.

Parameters:
model : BDF

The BDF object.

raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list[varies]

the fields that define the card

rcsid = None

Reference coordinate system identification for rigid body motions.

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[varies]

the fields that define the card

safe_cross_reference(self, model, xref_errors)[source]

Safe cross refernece aerodynamic coordinate system.

Parameters:
model : BDF

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

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.AESURFZ(label, surface_type, cid, panlst, setg, actuator_tf, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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:
label : str

controller name

surface_type : str

defines the control surface type {SYM, ASYM}

cid : int

coordinate system id to define the hinge axis

panlst : int

aero panels defined by PANLST

setg : int

???

actuator_tf : int

???

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

aesid
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(self, 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(self, model)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

label = None

Controller name.

raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fieldsreset_camera[int/float/str]

the fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[int/float/str]

the fields that define the card

safe_cross_reference(self, model, xref_errors)[source]
type = 'AESURFZ'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.BODY7(eid, label, pid, nseg, idmeshes, acoord=0, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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:
eid : int

body id

label : str

An arbitrary character string used to define the body.

pid : int; default=0

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

acoord : int; default=0

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

nseg : int

Number of body segments

idmeshes : List[int]

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

comment : str; default=’‘

a comment for the card

ACoord(self)[source]
Pid(self)[source]
_get_nthetas(self)[source]
_get_points_elements_3di(self, segmesh)[source]
points (nchord, nspan) float ndarray; might be backwards???
the points
elements (nquads, 4) int ndarray
series of quad elements nquads = (nchord-1) * (nspan-1)
_get_thetas(self)[source]
classmethod add_card(card, comment='')[source]

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

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

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

eid = None

Element identification number

get_points(self)[source]

creates a 1D representation of the BODY7

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

nboxes
npanels
pid = None

Property identification number of a PAERO7 entry.

raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list

The fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : list

The fields that define the card

safe_cross_reference(self, model, xref_errors)[source]
type = 'BODY7'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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:
eid : int

element id

pid : int, PAERO1

int : PAERO1 ID PAERO1 : PAERO1 object (xref)

igid : int

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)

x12 : float

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

x43 : float

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

cp : int, CORDx

int : coordinate system CORDx : Coordinate object (xref)

nspan : int

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

nchord : int

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

lspan : int, AEFACT

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

lchord : int, AEFACT

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

comment : str; default=’‘

accesses the comment

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

Parameters:
eid : int

element id

pid : int, PAERO1

int : PAERO1 ID PAERO1 : PAERO1 object (xref)

igroup : int

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)

x12 : float

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

x43 : float

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

cp : int, CORDx; default=0

int : coordinate system CORDx : Coordinate object (xref)

nspan : int; default=0

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

nchord : int; default=0

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

lspan : int, AEFACT; default=0

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

lchord : int, AEFACT; default=0

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

comment : str; default=’‘

a comment for the card

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

Raise box_id IndexError.

_get_box_x_chord_center(self, box_id, x_chord)[source]

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

_init_ids(self, 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:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

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

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

eid = None

Element identification number

flip_normal(self)[source]
get_LSpan(self)[source]
get_box_index(self, box_id)[source]

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

Parameters:
box_id : int

Box id to ge tthe index of.

Returns:
index : tuple

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

get_box_mid_chord_center(self, box_id)[source]

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

Parameters:
box_id : int

Box id.

Returns:
xyz_mid_chord : ndarray

Location of box mid chord in global.

get_box_quarter_chord_center(self, box_id)[source]

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

Parameters:
box_id : int

Box id.

Returns:
xyz_quarter_chord : ndarray

Location of box quater chord in global.

get_npanel_points_elements(self)[source]

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

Returns:
npoints : int

The number of nodes for the CAERO

nelmements : int

The number of elements for the CAERO

get_points(self)[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.

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]

npanels
panel_points_elements(self)[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

raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list

the fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : LIST

The fields that define the card

safe_cross_reference(self, model, xref_errors)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

set_points(self, points)[source]
shape

returns (nelements_nchord, nelements_span)

shift(self, dxyz)[source]

shifts the aero panel

type = 'CAERO7'
uncross_reference(self)[source]

Removes cross-reference links

validate(self)[source]

card checking method that should be overwritten

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

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]

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

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:
sid : int

Unique set identification number. (Integer > 0)

sym : str

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)
fix : int

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

nmode : int

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

tabdmp : int

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

a function of natural frequency. (Integer ≥ 0)

mlist : int

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)

conmlst : int

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)

nkstep : int; 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:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, model)[source]
cross_reference(self, model)[source]
raw_fields(self)[source]
safe_cross_reference(self, model, xref_errors=None)[source]
type = 'FLUTTER_ZONA'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Parameters:
sid : int

the MKAEROZ id

mach : float

the mach number for the TRIM solution

save : str

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

filename : str

the length of the file must be at most 56 characters

print_flag : int

???

freqs : List[float]

???

method : int

???

save : ???

???

comment : str; default=’‘

a comment for the card

classmethod add_card(card, comment='')[source]
cross_reference(self, model)[source]
repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[varies]

the fields that define the card

type = 'MKAEROZ'
write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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 RADR ITHT ICAMT RADT
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:
pid : int

PAFOIL7 identification number.

i_axial : str

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_tip : int

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

i_camber : int; default=0

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

le_radius_root / le_radius_root: float

Leading edge radius at the root/tip normalized by the root/tip chord.

i_thickness_tip : int

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

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, model)[source]

Should this be converted to a DMIG?

1 2 3 4 5 6 7 8 9
PAFOIL7 ID ITAX ITHR ICAMR RADR ITHT ICAMT RADT
PAFOIL7 1 -201 202 203 0.1 211 212 0.1
cross_reference(self, model)[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
model : BDF()

the BDF object

raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list

The fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : list

The fields that define the card

safe_cross_reference(self, model, xref_errors)[source]
type = 'PAFOIL7'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.PANLST1(eid, macro_id, box1, box2, comment='')[source]

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

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:
eid : int

spline id

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

cross_reference(self, model)[source]
raw_fields(self)[source]
safe_cross_reference(self, model, xref_errors)[source]
type = 'PANLST1'
write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.PANLST3(eid, panel_groups, comment='')[source]

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

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:
eid : int

spline id

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

cross_reference(self, model)[source]
raw_fields(self)[source]
safe_cross_reference(self, model, xref_errors)[source]
type = 'PANLST3'
write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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 NRAD NOSERAD 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_id : int

Body segment mesh identification number.

naxial : int

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

nradial : int

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

nose_radius : float

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.

iaxis : int

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

ITYPEi : int

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

Xi : List[float]

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

cambers : List[float]

Body camber at the Xi axial station. (Real)

YRi : List[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.

ZRi : List[float]

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

IDYi : int

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.

IDZi : int

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.

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

cross_reference(self, model)[source]
pid
raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list

The fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : list

The fields that define the card

safe_cross_reference(self, model, xref_errors)[source]
shift(self, dxyz)[source]

shifts the aero panel

type = 'SEGMESH'
uncross_reference(self)[source]

Removes cross-reference links

validate(self)[source]

card checking method that should be overwritten

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

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

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:
eid : int

spline id

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, 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(self, model)[source]
raw_fields(self)[source]
safe_cross_reference(self, model, xref_errors)[source]
type = 'SPLINE1_ZONA'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

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

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:
eid : int

spline id

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

cross_reference(self, model)[source]
raw_fields(self)[source]
safe_cross_reference(self, model, xref_errors)[source]
type = 'SPLINE2_ZONA'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

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

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:
eid : int

spline id

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, model)[source]
cross_reference(self, model)[source]
raw_fields(self)[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(self, model, xref_errors)[source]
type = 'SPLINE3_ZONA'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.TRIMLNK(link_id, sym, coeffs, var_ids, comment='')[source]

Bases: pyNastran.bdf.cards.base_card.BaseCard

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:
link_id : int

the TRIMLNK id

sym : ???

???

coeffs : ???

???

var_ids : ???

???

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, model)[source]
cross_reference(self, model)[source]
raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list[varies]

the fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[varies]

the fields that define the card

safe_cross_reference(self, model)[source]
type = 'TRIMLNK'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Specifies a trim variable for static aeroelastic trim variables.

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

Parameters:
var_id : int

the trim id; referenced by the Case Control TRIM field

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

convert_to_nastran(self, model)[source]
cross_reference(self, model)[source]
raw_fields(self)[source]

Gets the fields in their unmodified form

Returns:
fields : list[varies]

the fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[varies]

the fields that define the card

safe_cross_reference(self, model)[source]
type = 'TRIMVAR'
uncross_reference(self)[source]

Removes cross-reference links

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

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]

Bases: pyNastran.bdf.cards.base_card.BaseCard

Specifies constraints for aeroelastic trim variables.

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

Parameters:
sid : int

the trim id; referenced by the Case Control TRIM field

q : float

dynamic pressure

true_g : float

???

nxyz : List[float]

???

pqr : List[float]

[roll_rate, pitch_rate, yaw_rate]

loadset : int

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.

labels : List[str]

names of the fixed variables

uxs : List[float]

values corresponding to labels

comment : str; default=’‘

a comment for the card

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

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

Parameters:
card : BDFCard()

a BDFCard object

comment : str; default=’‘

a comment for the card

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

Gets the fields in their unmodified form

Returns:
fields : list[varies]

the fields that define the card

repr_fields(self)[source]

Gets the fields in their simplified form

Returns:
fields : List[varies]

the fields that define the card

safe_cross_reference(self, model)[source]
sid = None

Trim set identification number. (Integer > 0)

type = 'TRIM_ZONA'
uncross_reference(self)[source]

Removes cross-reference links

uxs = None

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

validate(self)[source]

card checking method that should be overwritten

write_card(self, size=8, is_double=False)[source]

Writes the card with the specified width and precision

Parameters:
size : int (default=8)

size of the field; {8, 16}

is_double : bool (default=False)

is this card double precision

Returns:
msg : str

the string representation of the card

class pyNastran.bdf.cards.aero.zona.ZONA(model)[source]

Bases: object

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

gets a pafoil profile (PAFOIL7/PAFOIL8)

_add_aesurfz_object(self, aesurf)[source]

adds an AESURFZ object

_add_caero2s(self, caero2s, add=False)[source]

Converts ZONA BODY7 to CAERO2/PAERO2/AEFACT

_add_mkaeroz_object(self, mkaeroz)[source]

adds an MKAEROZ object

_add_pafoil_object(self, pafoil)[source]

adds an PAFOIL7/PAFOIL8 object

_add_panlst_object(self, panlst)[source]

adds an PANLST1/PANLST2/PANLST3 object

_add_trimlnk_object(self, trimlnk)[source]

adds an TRIMLNK object

_add_trimvar_object(self, trimvar)[source]

adds an TRIMVAR object

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

Converts ZONA CAERO7/BODY7 to CAERO1/CAERO2

_convert_splines(self)[source]

Converts ZONA splines to splines

_convert_trim(self)[source]

Converts ZONA TRIM to TRIM

_convert_trimlnk(self)[source]

Converts ZONA TRIMLNK to AELINK

classmethod _init_from_self(model)[source]

helper method for dict_to_h5py

clear(self)[source]

clears out the ZONA object

convert_to_nastran(self, save=True)[source]

Converts a ZONA model to Nastran

cross_reference(self)[source]
object_attributes(self, mode='public', keys_to_skip=None, filter_properties=False)[source]

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

Parameters:
mode : str

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_skip : List[str]; default=None -> []

names to not consider to avoid deprecation warnings

Returns:
attribute_names : List[str]

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

object_methods(self, mode='public', keys_to_skip=None)[source]

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

Parameters:
obj : instance

the object for checking

mode : str

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_skip : List[str]; default=None -> []

names to not consider to avoid deprecation warnings

Returns:
method : List[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(self)[source]
update_for_zona(self)[source]
validate(self)[source]
verify(self, xref)[source]
write_bdf(self, bdf_file, size=8, is_double=False)[source]