dynamic_loads Module

digraph inheritance6432fc3f49 { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.bdf.cards.aero.dynamic_loads.AERO" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.AERO",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Gives basic aerodynamic parameters for unsteady aerodynamics."]; "pyNastran.bdf.cards.aero.dynamic_loads.Aero" -> "pyNastran.bdf.cards.aero.dynamic_loads.AERO" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.Aero" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.Aero",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Base class for AERO and AEROS cards."]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.Aero" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.FLFACT" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.FLFACT",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="+--------+-----+----+------+-----+----+----+----+----+"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.FLFACT" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.FLUTTER" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.FLUTTER",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Defines data needed to perform flutter analysis."]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.FLUTTER" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.GUST" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.GUST",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Defines a stationary vertical gust for use in aeroelastic response"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.GUST" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.MKAERO1" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.MKAERO1",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Provides a table of Mach numbers (m) and reduced frequencies (k) for"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.MKAERO1" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.dynamic_loads.MKAERO2" [URL="#pyNastran.bdf.cards.aero.dynamic_loads.MKAERO2",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Provides a table of Mach numbers (m) and reduced frequencies (k) for"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.dynamic_loads.MKAERO2" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.base_card.BaseCard" [URL="../pyNastran.bdf.cards.base_card.html#pyNastran.bdf.cards.base_card.BaseCard",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Defines a series of base methods for every card class"]; }

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

  • AERO

  • FLFACT

  • FLUTTER

  • GUST

  • MKAERO1 / MKAERO2

All cards are BaseCard objects.

class pyNastran.bdf.cards.aero.dynamic_loads.AERO(velocity, cref, rho_ref, acsid=0, sym_xz=0, sym_xy=0, comment='')[source]

Bases: Aero

Gives basic aerodynamic parameters for unsteady aerodynamics.

1

2

3

4

5

6

7

AERO

ACSID

VELOCITY

REFC

RHOREF

SYMXZ

SYMXY

AERO

3

1.3+

1.-5

1

-1

Creates an AERO card

Parameters:
velocityfloat

the airspeed

creffloat

the aerodynamic chord

rho_reffloat

FLFACT density scaling factor

acsidint; default=0

aerodyanmic coordinate system defines the direction of the wind

sym_xzint; default=0

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

sym_xyint; default=0

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

commentstr; default=’’

a comment for the card

classmethod _init_from_empty()[source]
_properties = ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']
classmethod add_card(card, comment='')[source]

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cref

Reference length for reduced frequency

cross_reference(model: BDF) None[source]

Cross reference aerodynamic coordinate system.

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

repr_fields()[source]

Gets the fields in their simplified form

Returns:
fieldslist[varies]

the fields that define the card

rho_ref

Reference density

safe_cross_reference(model: BDF, xref_errors)[source]

Safe cross reference aerodynamic coordinate system.

Parameters:
modelBDF

The BDF object.

sym_xy

The symmetry key for the aero coordinate x-y plane can be used to simulate ground effect. (Integer = -1 for symmetry, 0 for no symmetry, and +1 for antisymmetry; Default = 0)

sym_xz

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 = 'AERO'
uncross_reference() None[source]

Removes cross-reference links

update(maps)[source]
maps = {

‘coord’ : cid_map,

}

validate()[source]

card checking method that should be overwritten

velocity

Velocity for aerodynamic force data recovery and to calculate the BOV parameter

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.dynamic_loads.Aero[source]

Bases: BaseCard

Base class for AERO and AEROS cards.

Common class for AERO, AEROS

Attributes:
acsidint; default=0

aerodyanmic coordinate system defines the direction of the wind

sym_xzint; default=0

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

sym_xyint; default=0

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

Acsid()[source]
property is_anti_symmetric_xy
property is_anti_symmetric_xz
property is_symmetric_xy
property is_symmetric_xz
set_ground_effect(enable)[source]
class pyNastran.bdf.cards.aero.dynamic_loads.FLFACT(sid, factors, comment='')[source]

Bases: BaseCard

1

2

3

4

5

6

7

8

9

FLFACT

SID

F1

F2

F3

F4

F5

F6

F7

F8

F9

etc.

FLFACT

97

.3

.7

3.5

# delta quantity approach

1

2

3

4

5

6

7

FLFACT

SID

F1

THRU

FNF

NF

FMID

FLFACT

201

0.200

THRU

0.100

11

0.1333

Creates an FLFACT card, which defines factors used for flutter analysis. These factors define either:

  • density

  • mach

  • velocity

  • reduced frequency

depending on the FLUTTER method chosen (e.g., PK, PKNL, PKNLS)

Parameters:
sidint

the id of a density, reduced_frequency, mach, or velocity table the FLUTTER card defines the meaning

factorsvaries
valueslist[float, …, float]

list of factors

list[f1, THRU, fnf, nf, fmid]
f1float

first value

THRUstr

the word THRU

fnffloat

second value

nfint

number of values

fmidfloat; default=(f1 + fnf) / 2.

the mid point to bias the array

TODO: does f1 need be be greater than f2/fnf???

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

max()[source]
min()[source]
raw_fields()[source]

Gets the fields in their unmodified form

Returns:
fieldslist[varies]

the fields that define the card

type = 'FLFACT'
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.dynamic_loads.FLUTTER(sid: int, method: str, density: int, mach: int, reduced_freq_velocity: int, imethod: str = 'L', nvalue=None, omax=None, epsilon: float = 0.001, comment: str = '', validate: bool = False)[source]

Bases: BaseCard

Defines data needed to perform flutter 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

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

Parameters:
sidint

flutter id

methodstr
valid methods = [K, KE,

PKS, PKNLS, PKNL, PKE]

densityint

defines a series of air densities in units of mass/volume PARAM,WTMASS does not affect this AERO affects this references an FLFACT id

machint

defines a series of the mach numbers references an FLFACT id

reduced_freq_velocityint
Defines a series of either:
  1. reduced frequencies - K, KE

  2. velocities - PK, PKNL, PKS, PKNLS

depending on the method chosen. references an FLFACT id

imethodstr; default=’L’

Choice of interpolation method for aerodynamic matrix interpolation. imethods :

  1. L - linear

  2. S - surface

  3. TCUB - termwise cubic

nvalueint

Number of eigenvalues beginning with the first eigenvalue for output and plots

omaxfloat

For the PKS and PKNLS methods, OMAX specifies the maximum frequency, in Hz., to be used in he flutter sweep. MSC only.

epsilonfloat; default=1.0e-3

Convergence parameter for k. Used in the PK and PKNL methods only

commentstr; default=’’

a comment for the card

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

Adds a FLUTTER 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

get_density()[source]
get_mach()[source]
get_rfreq_vel()[source]
property headers
make_flfacts_alt_sweep_constant_mach(model: BDF, mach, alts, eas_limit: float = 1000.0, alt_units: str = 'm', velocity_units: str = 'm/s', density_units: str = 'kg/m^3', eas_units: str = 'm/s') None[source]

makes an altitude sweep

make_flfacts_eas_sweep(model: BDF, alt: float, eass: list[float], alt_units: str = 'm', velocity_units: str = 'm/s', density_units: str = 'kg/m^3', eas_units: str = 'm/s') None[source]
make_flfacts_eas_sweep_constant_alt(model: BDF, alt: float, eass: list[float], alt_units: str = 'm', velocity_units: str = 'm/s', density_units: str = 'kg/m^3', eas_units: str = 'm/s') None[source]

Makes a sweep across equivalent airspeed for a constant altitude.

Parameters:
modelBDF

the BDF model object

altfloat

Altitude in alt_units

easslist[float]

Equivalent airspeed in eas_units

alt_unitsstr; default=’m’

the altitude units; ft, kft, m

velocity_unitsstr; default=’m/s’

the velocity units; ft/s, m/s, in/s, knots

density_unitsstr; default=’kg/m^3’

the density units; slug/ft^3, slinch/in^3, kg/m^3

eas_unitsstr; default=’m/s’

the equivalent airspeed units; ft/s, m/s, in/s, knots

make_flfacts_eas_sweep_constant_mach(model: BDF, mach, eass, gamma: float = 1.4, alt_units='m', velocity_units='m/s', density_units='kg/m^3', eas_units='m/s', pressure_units='Pa')[source]

eas = tas * sqrt(rho/rho0) ainf*Minf = V eas = ainf*Minf * sqrt(rho_inf/rho0) rho = p/RT eas = ainf*Minf * sqrt(p_inf/(R*T_inf*rho0))

= sqrt(gamma*R*Tinf) * Minf * sqrt(p_inf/(R*T_inf*rho0)) = Minf * sqrt(gamma*p_inf/rho0)

make_flfacts_mach_sweep(model, alt, machs, eas_limit=1000.0, alt_units='m', velocity_units='m/s', density_units='kg/m^3', eas_units='m/s') None[source]
make_flfacts_mach_sweep_constant_alt(model: BDF, alt, machs, eas_limit=1000.0, alt_units='m', velocity_units='m/s', density_units='kg/m^3', eas_units='m/s')[source]

makes a mach sweep

make_flfacts_tas_sweep_constant_alt(model: BDF, alt: float, tass, eas_limit: float = 1000.0, alt_units: str = 'm', velocity_units: str = 'm/s', density_units: str = 'kg/m^3', eas_units: str = 'm/s') tuple[Any, Any, Any][source]

makes an altitude sweep (dev…not validated)

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 = 'FLUTTER'
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.dynamic_loads.GUST(sid, dload, wg, x0, V=None, comment='')[source]

Bases: BaseCard

Defines a stationary vertical gust for use in aeroelastic response analysis.

1

2

3

4

5

6

GUST

SID

DLOAD

WG

X0

V

GUST

133

61

1.0

1.+4

Creates a GUST card, which defines a stationary vertical gust for use in aeroelastic response analysis.

Parameters:
sidint

gust load id

dloadint

TLOADx or RLOADx entry that defines the time/frequency dependence

wgfloat

Scale factor (gust velocity/forward velocity) for gust velocity

x0float

Streamwise location in the aerodynamic coordinate system of the gust reference point.

Vfloat; default=None
floatvelocity of the vehicle (must be the same as the

velocity on the AERO card)

None : ???

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

raw_fields()[source]

Gets the fields in their unmodified form

Returns:
fieldslist[varies]

the fields that define the card

type = 'GUST'
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.dynamic_loads.MKAERO1(machs, reduced_freqs, comment='')[source]

Bases: BaseCard

Provides a table of Mach numbers (m) and reduced frequencies (k) for aerodynamic matrix calculation.

1

2

3

4

5

6

7

8

9

MKAERO1

m1

m2

m3

m4

m5

m6

m7

m8

k1

k2

k3

k4

k5

k6

k7

k8

Creates an MKAERO1 card, which defines a set of mach and reduced frequencies.

Parameters:
machslist[float]

series of Mach numbers

reduced_freqslist[float]

series of reduced frequencies

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

mklist() list[list[float]][source]
raw_fields()[source]

Gets the fields in their unmodified form

Returns:
fieldslist[varies]

the fields that define the card

type = 'MKAERO1'
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.dynamic_loads.MKAERO2(machs, reduced_freqs, comment='')[source]

Bases: BaseCard

Provides a table of Mach numbers (m) and reduced frequencies (k) for aerodynamic matrix calculation.

1

2

3

4

5

6

7

8

9

MKAERO2

m1

k1

m2

k2

m3

k3

m4

k4

Creates an MKAERO2 card, which defines a set of mach and reduced frequency pairs.

Parameters:
machslist[float]

series of Mach numbers

reduced_freqslist[float]

series of reduced frequencies

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

mklist()[source]
raw_fields()[source]

Gets the fields in their unmodified form

Returns:
fieldslist[varies]

the fields that define the card

type = 'MKAERO2'
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