static_loads Module

digraph inheritanceb43a8911f1 { bgcolor=transparent; rankdir=LR; size=""; "pyNastran.bdf.cards.aero.dynamic_loads.Aero" [URL="pyNastran.bdf.cards.aero.dynamic_loads.html#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.static_loads.AEDW" [URL="#pyNastran.bdf.cards.aero.static_loads.AEDW",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="Parametric Normal Wash Loading for Aerodynamics"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.AEDW" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.AEFORCE" [URL="#pyNastran.bdf.cards.aero.static_loads.AEFORCE",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="Parametric Force for Aerodynamics"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.AEFORCE" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.AEPRESS" [URL="#pyNastran.bdf.cards.aero.static_loads.AEPRESS",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="Parametric Pressure Loading for Aerodynamics"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.AEPRESS" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.AEROS" [URL="#pyNastran.bdf.cards.aero.static_loads.AEROS",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.static_loads.AEROS" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.AESTAT" [URL="#pyNastran.bdf.cards.aero.static_loads.AESTAT",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="Specifies rigid body motions to be used as trim variables in static"]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.AESTAT" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.CSSCHD" [URL="#pyNastran.bdf.cards.aero.static_loads.CSSCHD",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 scheduled control surface deflection as a function of"]; "pyNastran.bdf.cards.aero.dynamic_loads.Aero" -> "pyNastran.bdf.cards.aero.static_loads.CSSCHD" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.DIVERG" [URL="#pyNastran.bdf.cards.aero.static_loads.DIVERG",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.static_loads.DIVERG" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.TRIM" [URL="#pyNastran.bdf.cards.aero.static_loads.TRIM",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="Specifies constraints for aeroelastic trim variables."]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.TRIM" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.TRIM2" [URL="#pyNastran.bdf.cards.aero.static_loads.TRIM2",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 the state of the aerodynamic extra points for a trim analysis."]; "pyNastran.bdf.cards.aero.static_loads.TRIM" -> "pyNastran.bdf.cards.aero.static_loads.TRIM2" [arrowsize=0.5,style="setlinewidth(0.5)"]; "pyNastran.bdf.cards.aero.static_loads.UXVEC" [URL="#pyNastran.bdf.cards.aero.static_loads.UXVEC",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 the state of the aerodynamic extra points for a trim analysis."]; "pyNastran.bdf.cards.base_card.BaseCard" -> "pyNastran.bdf.cards.aero.static_loads.UXVEC" [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 trim aero cards are defined in this file. This includes:
  • AEROS

  • AESTAT

  • CSSCHD

  • DIVERG

  • TRIM

  • AEFORCE

  • AEPRESS

All cards are BaseCard objects.

class pyNastran.bdf.cards.aero.static_loads.AEDW(mach: float, sym_xz: str, sym_xy: str, uxid: int, dmij: int = 0, dmiji: int = 0, comment: str = '')[source]

Bases: BaseCard

Parametric Normal Wash Loading for Aerodynamics

Defines a downwash vector associated with a particular control vector of the associated aerodynamic configuration (AECONFIG). From this downwash vector, a force vector on the aerodynamic grids will be defined for use in nonlinear static aeroelastic trim.

1

2

3

4

5

6

7

AEDW

MACH

SYMXZ

SYMXY

UXID

DMIJ

DMIJI

AEDW

0.90

SYMM

ASYMM

101

ALP1

Creates an AEDW card.

Attributes:
machfloat

Mach number for this force. See Remark 2 (0.0 <= mach < 1.0).

sym_xz, sym_xystr

The symmetry of this force vector. One of SYMM, ASYMM or ANTI.

uxidint

The identification number of a UXVEC entry that defines the control parameter vector associated with this downwash vector.

dmijint; default=0

Name of a DMI or DMIJ entry that defines the pressure per unit dynamic pressure.

dmijiint; default=0

The name of a DMIJI entry that defines the CAERO2 interference element downwashes.

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) None[source]
raw_fields()[source]
type = 'AEPRESS'
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.static_loads.AEFORCE(mach: float, sym_xz: str, sym_xy: str, uxid: int, mesh: str, force: int = 0, dmik: int = 0, perq: str = '', comment: str = '')[source]

Bases: BaseCard

Parametric Force for Aerodynamics

Defines a vector of absolute forces (not scaled by dynamic pressure) associated with a particular control vector. This force vector may be defined on either the aerodynamic mesh (ks-set) or the structural mesh (g-set). The force vector will be used in nonlinear static aeroelastic trim.

1

2

3

4

5

6

7

8

AEFORCE

MACH

SYMXZ

SYMXY

UXID

MESH

FORCE

DMIK

AEFORCE

0.90

SYMM

ASYMM

101

AERO

BETA

Note: NX uses absolute forces, MSC is per q

Siemens and MSC: Add a flag please.

Creates an AEFORCE card.

Attributes:
machfloat

Mach number for this force. See Remark 2 (0.0 <= mach < 1.0).

sym_xz, sym_xystr

The symmetry of this force vector. One of SYMM, ASYMM or ANTI.

uxidint

The identification number of a UXVEC entry that defines the control parameter vector associated with this downwash vector.

meshstr

AERO or STRUCT that declares whether the force vector is defined on the aerodynamic ks-set mesh or the structural g-set mesh.

forceint

ID of a FORCE/MOMENT set that defines the vector. Required if mesh=’STRUCT’.

dmik: int

Name of a DMIK entry that defines the aerodynamic force vector. Required if mesh=’AERO’.

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) None[source]
raw_fields()[source]
type = 'AEFORCE'
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.static_loads.AEPRESS(mach: float, sym_xz: str, sym_xy: str, uxid: int, dmij: int = 0, dmiji: int = 0, comment: str = '')[source]

Bases: BaseCard

Parametric Pressure Loading for Aerodynamics

Defines a vector of pressure/unit dynamic pressure associated with a particular control vector. From this pressure vector, a force vector on the aerodynamic grids will be defined for use in nonlinear static aeroelastic trim.

1

2

3

4

5

6

7

AEPRESS

MACH

SYMXZ

SYMXY

UXID

DMIJ

DMIJI

AEPRESS

0.90

SYMM

ASYMM

101

ALP1

Creates an AEPRESS card.

Attributes:
machfloat

Mach number for this force. See Remark 2 (0.0 <= mach < 1.0).

sym_xz, sym_xystr

The symmetry of this force vector. One of SYMM, ASYMM or ANTI.

uxidint

The identification number of a UXVEC entry that defines the control parameter vector associated with this downwash vector.

dmijint; default=0

Name of a DMI or DMIJ entry that defines the pressure per unit dynamic pressure.

dmijiint; default=0

The name of a DMIJI entry that defines the CAERO2 interference element downwashes.

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) None[source]
raw_fields()[source]
type = 'AEPRESS'
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.static_loads.AEROS(cref: float, bref: float, sref: float, acsid: int = 0, rcsid: int = 0, sym_xz: int = 0, sym_xy: int = 0, comment: str = '')[source]

Bases: 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 AEROS 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)

sym_xyint; default=0

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

commentstr; default=’’

a comment for the card

Acsid() int[source]

air velocity defined as moving into the +x direction

Rcsid() int[source]

rigid body coordinate system

classmethod _init_from_empty()[source]
_properties = ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']
acsid

Aerodynamic coordinate system identification.

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

bref

Reference span

cref

Reference chord length

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[varies]

the fields that define the card

rcsid

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 reference aerodynamic coordinate system.

Parameters:
modelBDF

The BDF object.

sref

Reference wing area

sym_xy

The symmetry key for the aero coordinate x-y plane can be used to simulate ground effects. (Integer = +1 for antisymmetry, 0 for no symmetry, and -1 for symmetry; 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 = 'AEROS'
uncross_reference() None[source]

Removes cross-reference links

update(maps)[source]
maps = {

‘coord’ : cid_map,

}

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.static_loads.AESTAT(aestat_id: int, label: str, comment: str = '')[source]

Bases: BaseCard

Specifies rigid body motions to be used as trim variables in static aeroelasticity.

1

2

3

AESTAT

ID

LABEL

AESTAT

5001

ANGLEA

Creates an AESTAT card, which is a variable to be used in a TRIM analysis

Parameters:
aestat_idint

unique id

labelstr

name for the id

commentstr; default=’’

a comment for the card

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

Adds an AESTAT 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[int/str]

the fields that define the card

type = 'AESTAT'
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.static_loads.CSSCHD(sid: int, aesurf_id: int, lschd: int, lalpha=None, lmach=None, comment: str = '')[source]

Bases: Aero

Defines a scheduled control surface deflection as a function of Mach number and angle of attack.

1

2

3

4

5

6

CSSCHD

SlD

AESID

LALPHA

LMACH

LSCHD

CSSCHD

5

50

12

15

25

Creates an CSSCHD card, which defines a specified control surface deflection as a function of Mach and alpha (used in SOL 144/146).

Parameters:
sidint

the unique id

aesurf_idint

the control surface (AESURF) id

lalphaint; default=None

the angle of attack profile (AEFACT) id

lmachint; default=None

the mach profile (AEFACT) id

lschdint; default=None

the control surface deflection profile (AEFACT) id

commentstr; default=’’

a comment for the card

AESurf() int[source]
LAlpha() int[source]
LMach() int[source]
LSchd() int[source]
classmethod _init_from_empty()[source]
_properties = ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']
classmethod add_card(card: BDFCard, comment: str = '')[source]

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

cross_reference(model: BDF) None[source]

Cross links the card so referenced cards can be extracted directly

Parameters:
modelBDF()

the BDF object

raw_fields() list[source]

Gets the fields in their unmodified form

Returns:
fieldslist[varies]

the fields that define the card

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

Removes cross-reference links

validate() None[source]

card checking method that should be overwritten

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

Writes the card with the specified width and precision

Parameters:
sizeint (default=8)

size of the field; {8, 16}

is_doublebool (default=False)

is this card double precision

Returns:
msgstr

the string representation of the card

class pyNastran.bdf.cards.aero.static_loads.DIVERG(sid: int, nroots: int, machs: list[float], comment: str = '')[source]

Bases: BaseCard

1

2

3

4

5

6

7

8

9

DIVERG

SID

NROOT

M1

M2

M3

M4

M5

M6

M7

etc.

Attributes:
sidint

The name.

nrootsint

the number of roots

machslist[float, …, float]

list of Mach numbers

Creates an DIVERG card, which is used in divergence analysis (SOL 144).

Parameters:
sidint

The name

nrootsint

the number of roots

machslist[float, …, float]

list of Mach numbers

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

raw_fields()[source]
type = 'DIVERG'
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.static_loads.TRIM(sid: int, mach: float, q: float, labels: list[str], uxs: list[float], aeqr: float = 1.0, comment: str = '')[source]

Bases: BaseCard

Specifies constraints for aeroelastic trim variables.

1

2

3

4

5

6

7

8

9

TRIM

ID

MACH

Q

LABEL1

UX1

LABEL2

UX2

IS_RIGID

LABEL3

UX3

LABEL4

UX4

LABEL5

UX5

LABEL6

UX6

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

Parameters:
sidint

the trim id; referenced by the Case Control TRIM field

machfloat

the mach number

qfloat

dynamic pressure

labelslist[str]

names of the fixed variables

uxslist[float]

values corresponding to labels

aeqrfloat

0.0 : rigid trim analysis 1.0 : elastic trim analysis (default)

commentstr; default=’’

a comment for the card

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

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

Parameters:
cardBDFCard()

a BDFCard object

commentstr; default=’’

a comment for the card

aeqr

Flag to request a rigid trim analysis (Real > 0.0 and < 1.0; Default = 1.0. A value of 0.0 provides a rigid trim analysis.

cross_reference(model: BDF) None[source]
labels

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

mach

Mach number. (Real > 0.0 and != 1.0)

q

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

Trim set identification number. (Integer > 0)

type = 'TRIM'
uncross_reference() None[source]

Removes cross-reference links

uxs

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

validate()[source]

card checking method that should be overwritten

verify_trim(suport: list[SUPORT], suport1: SUPORT1 | None, aestats: dict[int, AESTAT], aeparms: dict[int, AEPARM], aelinks: dict[int, list[AELINK]], aesurf: dict[int, AESURF], xref=True)[source]

Magic function that makes TRIM cards not frustrating.

Warning

This probably gets AELINKs/AEPARMs/AESURFSs wrong.

The TRIM equality ndelta = (naestat + naesurf + naeparm)

  • (ntrim + ntrim_aesurf? + naelink + nsuport_dofs + nsuport1_dofs)

ndelta = 0 ntrim_aesurf is not included, but it might exist…

Steps to a TRIM analysis 1. Define the number of independent control surfaces (naesurf)

Make an AESURF for each. Dual link the AESURFs if you can to avoid needing an AELINK (e.g., +roll is left aileron down, right aileron up). Horizontal Tail : name it DPITCH Vertical Tail : name it DYAW Aileron : name it DROLL

  1. Create AELINKs if necessary.

  2. Add the AESTAT variables. Include one for each DOF the aircraft can move in the frame of the model (e.g., half/full model).

    Half model (2.5g pullup, abrupt pitch):
    • 2d pitch/plunge, 1 control : URDD3, URDD5, PITCH, ANGLEA

    Full model (2.5g pullup, abrupt pitch):
    • 3d pitch/plunge, 3 control : URDD3, URDD5, PITCH, ANGLEA, YAW (???)

  3. Add the TRIM card to lock the variables that could theoretically move in the plane of the analysis that are known.

    Half model:
    2.5g pulluplock URDD3=2.5, URDD5=0, PITCH=0

    solve for ANGLEA, DPITCH use DPITCH

    abrupt pitchlock URDD3=1.0, URDD5=0, ANGLEA=5

    solve for PITCH, DPITCH use DPITCH

    Full model:
    2.5g pulluplock URDD3=2.5, URDD4=0, URDD5=0, PITCH=0, YAW=0,

    lock SIDES=0, ROLL=0 solve for ANGLEA, DPITCH use DPITCH, DYAW, DROLL TODO: probably wrong

    30 degree yawlock URDD3=1.0, URDD4=0, ANGLEA=5, PITCH=0, YAW=30,

    lock DPITCH=0, ROLL=0 solve for SIDES, URDD5 use DPITCH, DYAW, DROLL TODO: probably wrong

  4. Note that we could have simplified our full model AESTAT/TRIM cards (they can be the same as for a half model), but we’d like to be able to do multiple load cases in the same deck.

  5. Add some SUPORT/SUPORT1 DOFs to ignore non-relevant motion in certain DOFs (e.g., z-motion). Add enough to satisfy the TRIM equality.

Doesn’t Consider
  • AEPARM

  • AESURFS

Default AESTATs

ANGLEA | ur (R2) | Angle of Attack YAW | ur (R3) | Yaw Rate SIDES | ur (R3) | Angle of Sideslip

ROLL | ůr (R1) | Roll Rate PITCH | ůr (R2) | Pitch Rate

URDD1 | ür (T1) | Longitudinal URDD2 | ür (T2) | Lateral URDD3 | ür (T3) | Vertical URDD4 | ür (R1) | Roll URDD5 | ür (R2) | Pitch URDD6 | ür (R3) | Yaw

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.static_loads.TRIM2(sid, mach, q, labels, uxs, aeqr=1.0, comment: str = '')[source]

Bases: TRIM

Defines the state of the aerodynamic extra points for a trim analysis. All undefined extra points will be set to zero.

1

2

3

4

5

6

7

8

9

TRIM2

ID

MACH

Q

IS_RIGID

LABEL1

UX1

LABEL2

UX2

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

Parameters:
sidint

the trim id; referenced by the Case Control TRIM field

machfloat

the mach number

qfloat

dynamic pressure

labelslist[str]

names of the fixed variables

uxslist[float]

values corresponding to labels

aeqrfloat

0.0 : rigid trim analysis 1.0 : elastic trim analysis (default)

commentstr; default=’’

a comment for the card

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

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

repr_fields()[source]

Gets the fields in their simplified form

Returns:
fieldslist[varies]

the fields that define the card

type = 'TRIM2'
class pyNastran.bdf.cards.aero.static_loads.UXVEC(sid: int, labels: list[str], uxs: list[float], comment: str = '')[source]

Bases: BaseCard

Defines the state of the aerodynamic extra points for a trim analysis. All undefined extra points will be set to zero.

1

2

3

4

5

6

7

8

9

UXVEC

ID

LABEL1

UX1

LABEL2

UX2

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

Adds a UXVEC 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 = 'UXVEC'
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

pyNastran.bdf.cards.aero.static_loads._fill_label_list(aestat: dict) list[str][source]
pyNastran.bdf.cards.aero.static_loads.check_aestats_suport_dofs(suport_dofs: set[str], aestat_labels: list[str]) None[source]
pyNastran.bdf.cards.aero.static_loads.get_suport1_dofs(suport1: SUPORT1 | None, suport_nid_dofs: set[tuple[int, str]], suport_dofs: set[str]) tuple[int, str][source]
pyNastran.bdf.cards.aero.static_loads.get_suport_dofs(suport: list[SUPORT], suport_nid_dofs: set[tuple[int, str]], suport_dofs: set[str]) int[source]