static_loads
Module¶
- All trim aero cards are defined in this file. This includes:
- AEROS
- AESTAT
- CSSCHD
- DIVERG
- TRIM
All cards are BaseCard objects.
-
class
pyNastran.bdf.cards.aero.static_loads.
AEROS
(cref, bref, sref, acsid=0, rcsid=0, sym_xz=0, sym_xy=0, 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 AEROS 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)
- sym_xy : int; default=0
xy symmetry flag (+1=symmetry; -1=antisymmetric)
- comment : str; default=’‘
a comment for the card
-
_properties
= ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']¶
-
acsid
= None¶ Aerodynamic coordinate system identification.
-
classmethod
add_card
(card, comment='')[source]¶ Adds an AEROS card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
bref
= None¶ Reference span
-
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_xy
= None¶ 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
= 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
= 'AEROS'¶
-
class
pyNastran.bdf.cards.aero.static_loads.
AESTAT
(aestat_id, label, comment='')[source]¶ Bases:
pyNastran.bdf.cards.base_card.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: - id : int
unique id
- label : str
name for the id
- comment : str; default=’‘
a comment for the card
-
classmethod
add_card
(card, comment='')[source]¶ Adds an AESTAT card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
raw_fields
(self)[source]¶ Gets the fields in their unmodified form
Returns: - fields : List[int/str]
the fields that define the card
-
type
= 'AESTAT'¶
-
class
pyNastran.bdf.cards.aero.static_loads.
CSSCHD
(sid, aesid, lschd, lalpha=None, lmach=None, comment='')[source]¶ Bases:
pyNastran.bdf.cards.aero.dynamic_loads.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: - sid : int
the unique id
- aesid : int
the control surface (AESURF) id
- lalpha : int; default=None
the angle of attack profile (AEFACT) id
- lmach : int; default=None
the mach profile (AEFACT) id
- lschd : int; default=None
the control surface deflection profile (AEFACT) id
- comment : str; default=’‘
a comment for the card
-
_properties
= ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']¶
-
classmethod
add_card
(card, comment='')[source]¶ Adds a CSSCHD card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
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[varies]
the fields that define the card
-
type
= 'CSSCHD'¶
-
class
pyNastran.bdf.cards.aero.static_loads.
DIVERG
(sid, nroots, machs, comment='')[source]¶ Bases:
pyNastran.bdf.cards.base_card.BaseCard
1 2 3 4 5 6 7 8 9 DIVERG SID NROOT M1 M2 M3 M4 M5 M6 M7 etc. Attributes: - sid : int
The name.
- nroots : int
the number of roots
- machs : List[float, …, float]
list of Mach numbers
Creates an DIVERG card, which is used in divergence analysis (SOL 144).
Parameters: - sid : int
The name
- nroots : int
the number of roots
- machs : List[float, …, float]
list of Mach numbers
- comment : str; default=’‘
a comment for the card
-
classmethod
add_card
(card, comment='')[source]¶ Adds a DIVERG card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
type
= 'DIVERG'¶
-
class
pyNastran.bdf.cards.aero.static_loads.
TRIM
(sid, mach, q, labels, uxs, aeqr=1.0, comment='')[source]¶ Bases:
pyNastran.bdf.cards.base_card.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 … Creates a TRIM card for a static aero (144) analysis.
Parameters: - sid : int
the trim id; referenced by the Case Control TRIM field
- mach : float
the mach number
- q : float
dynamic pressure
- labels : List[str]
names of the fixed variables
- uxs : List[float]
values corresponding to labels
- aeqr : float
0.0 : rigid trim analysis 1.0 : elastic trim analysis (default)
- 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
-
aeqr
= None¶ 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.
-
labels
= None¶ The label identifying aerodynamic trim variables defined on an AESTAT or AESURF entry.
-
mach
= None¶ Mach number. (Real > 0.0 and != 1.0)
-
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
-
sid
= None¶ Trim set identification number. (Integer > 0)
-
type
= 'TRIM'¶
-
uxs
= None¶ The magnitude of the aerodynamic extra point degree-of-freedom. (Real)
-
verify_trim
(self, suport, suport1, aestats, aeparms, aelinks, 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 DROLLCreate AELINKs if necessary.
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 (???)
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 pullup : lock URDD3=2.5, URDD5=0, PITCH=0
solve for ANGLEA, DPITCH use DPITCH
- abrupt pitch : lock URDD3=1.0, URDD5=0, ANGLEA=5
solve for PITCH, DPITCH use DPITCH
- Full model:
- 2.5g pullup : lock 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 yaw : lock 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
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.
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
- AELINK
- AEPARM
- AESURFS
Default AESTATs ANGLEA YAW SIDES ur (R2) ur (R3) ur (R3) Angle of Attack Yaw Rate Angle of Sideslip ROLL PITCH ůr (R1) ůr (R2) Roll Rate Pitch Rate URDD1 URDD2 URDD3 URDD4 URDD5 URDD6 ür (T1) ür (T2) ür (T3) ür (R1) ür (R2) ür (R3) Longitudinal (See Remark 3) Lateral Vertical Roll Pitch Yaw
-
class
pyNastran.bdf.cards.aero.static_loads.
TRIM2
(sid, mach, q, labels, uxs, aeqr=1.0, comment='')[source]¶ Bases:
pyNastran.bdf.cards.aero.static_loads.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 … -
classmethod
add_card
(card, comment='')[source]¶ Adds a TRIM2 card from
BDF.add_card(...)
Parameters: - card : BDFCard()
a BDFCard object
- comment : str; default=’‘
a comment for the card
-
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
-
type
= 'TRIM2'¶
-
classmethod