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.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.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
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:
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
- _properties = ['is_anti_symmetric_xy', 'is_anti_symmetric_xz', 'is_symmetric_xy', 'is_symmetric_xz']
- acsid
Aerodynamic coordinate system identification.
- classmethod add_card(card, comment='')[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'
- class pyNastran.bdf.cards.aero.static_loads.AESTAT(aestat_id, label, comment='')[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:
- idint
unique id
- labelstr
name for the id
- commentstr; default=’’
a comment for the card
- classmethod add_card(card: BDFCard, comment='')[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'
- class pyNastran.bdf.cards.aero.static_loads.CSSCHD(sid: int, aesurf_id: int, lschd: int, lalpha=None, lmach=None, comment='')[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
- _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:
- cardBDFCard()
a BDFCard object
- commentstr; default=’’
a comment for the card
- property aesid: int
- property aesid_ref
- cross_reference(model: BDF) None [source]
Cross links the card so referenced cards can be extracted directly
- Parameters:
- modelBDF()
the BDF object
- raw_fields()[source]
Gets the fields in their unmodified form
- Returns:
- fieldslist[varies]
the fields that define the card
- type = 'CSSCHD'
- 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 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
- type = 'DIVERG'
- class pyNastran.bdf.cards.aero.static_loads.TRIM(sid, mach, q, labels, uxs, aeqr=1.0, comment='')[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
…
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 add_card(card: BDFCard, comment='')[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.
- 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
- sid
Trim set identification number. (Integer > 0)
- type = 'TRIM'
- uxs
The magnitude of the aerodynamic extra point degree-of-freedom. (Real)
- verify_trim(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 DROLL
Create 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 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
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:
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 add_card(card, comment='')[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'