Models weight, balance and moment of inertia information.
Maintains a vector of point masses. Sums the contribution of all, and provides this to FGPropagate. Loads the <mass_balance> section of the aircraft configuration file. There can be any number of <pointmasses>. Each can also have a shape which - if present - causes an associated moment of inertia to be calculated based on the shape. Note that a cylinder is solid, a tube is hollow, a ball is solid and a sphere is hollow.
The inertia tensor must be specified in the structural frame (x axis positive aft, y axis positive out of the right wing and z axis upward). The sign of the inertia cross products are optional by JSBSim. if negated_crossproduct_inertia == "true", then define: ixy = -integral( x * y * dm ), ixz = -integral( x * z * dm ), iyz = -integral( y * z * dm ). else if negated_crossproduct_inertia == "false", then define: ixy = integral( x * y * dm ), ixz = integral( x * z * dm ), iyz = integral( y * z * dm ). default is negated_crossproduct_inertia = "true". We strongly recommend defining negated_crossproduct_inertia = "false", which is consistent with the specifications in the field of flight dynamics.
Configuration File Format for <mass_balance> Section:
<mass_balance negated_crossproduct_inertia="true|false">
<ixx unit="{SLUG*FT2 | KG*M2}"> {number} </ixx>
<iyy unit="{SLUG*FT2 | KG*M2}"> {number} </iyy>
<izz unit="{SLUG*FT2 | KG*M2}"> {number} </izz>
<ixy unit="{SLUG*FT2 | KG*M2}"> {number} </ixy>
<ixz unit="{SLUG*FT2 | KG*M2}"> {number} </ixz>
<iyz unit="{SLUG*FT2 | KG*M2}"> {number} </iyz>
<emptywt unit="{LBS | KG"> {number} </emptywt>
<location name="CG" unit="{IN | FT | M}">
<x> {number} </x>
<y> {number} </y>
<z> {number} </z>
</location>
[<pointmass name="{string}">
<form shape="{tube | cylinder | sphere | ball}">
<radius unit="{IN | FT | M}"> {number} </radius>
<length unit="{IN | FT | M}"> {number} </length>
</form>
<weight unit="{LBS | KG}"> {number} </weight>
<location name="{string}" unit="{IN | FT | M}">
<x> {number} </x>
<y> {number} </y>
<z> {number} </z>
</location>
</pointmass>
... other point masses ...]
</mass_balance>
@see Stevens and Lewis, "Flight Control & Simulation"
@see Bernard Etkin, " Dynamics Of Atmosferic Flight"
@see https://en.wikipedia.org/wiki/Moment_of_inertia#Inertia_tensor
@see https://www.mathworks.com/help/physmod/sm/ug/specify-custom-inertia.html
Definition at line 124 of file FGMassBalance.h.
|
| enum | { eL = 1
, eM
, eN
} |
| | Moments L, M, N. More...
|
| |
| enum | { eP = 1
, eQ
, eR
} |
| | Rates P, Q, R. More...
|
| |
| enum | { eU = 1
, eV
, eW
} |
| | Velocities U, V, W. More...
|
| |
| enum | { eX = 1
, eY
, eZ
} |
| | Positions X, Y, Z. More...
|
| |
| enum | { ePhi = 1
, eTht
, ePsi
} |
| | Euler angles Phi, Theta, Psi. More...
|
| |
| enum | { eDrag = 1
, eSide
, eLift
} |
| | Stability axis forces, Drag, Side force, Lift. More...
|
| |
| enum | { eRoll = 1
, ePitch
, eYaw
} |
| | Local frame orientation Roll, Pitch, Yaw. More...
|
| |
| enum | { eNorth = 1
, eEast
, eDown
} |
| | Local frame position North, East, Down. More...
|
| |
| enum | { eLat = 1
, eLong
, eRad
} |
| | Locations Radius, Latitude, Longitude. More...
|
| |
| enum | {
inNone = 0
, inDegrees
, inRadians
, inMeters
,
inFeet
} |
| | Conversion specifiers. More...
|
| |
| static const std::string & | GetVersion (void) |
| | Returns the version number of JSBSim.
|
| |
| static constexpr double | KelvinToFahrenheit (double kelvin) |
| | Converts from degrees Kelvin to degrees Fahrenheit.
|
| |
| static constexpr double | CelsiusToRankine (double celsius) |
| | Converts from degrees Celsius to degrees Rankine.
|
| |
| static constexpr double | RankineToCelsius (double rankine) |
| | Converts from degrees Rankine to degrees Celsius.
|
| |
| static constexpr double | KelvinToRankine (double kelvin) |
| | Converts from degrees Kelvin to degrees Rankine.
|
| |
| static constexpr double | RankineToKelvin (double rankine) |
| | Converts from degrees Rankine to degrees Kelvin.
|
| |
| static constexpr double | FahrenheitToCelsius (double fahrenheit) |
| | Converts from degrees Fahrenheit to degrees Celsius.
|
| |
| static constexpr double | CelsiusToFahrenheit (double celsius) |
| | Converts from degrees Celsius to degrees Fahrenheit.
|
| |
| static constexpr double | CelsiusToKelvin (double celsius) |
| | Converts from degrees Celsius to degrees Kelvin.
|
| |
| static constexpr double | KelvinToCelsius (double kelvin) |
| | Converts from degrees Kelvin to degrees Celsius.
|
| |
| static constexpr double | FeetToMeters (double measure) |
| | Converts from feet to meters.
|
| |
| static bool | EqualToRoundoff (double a, double b) |
| | Finite precision comparison.
|
| |
| static bool | EqualToRoundoff (float a, float b) |
| | Finite precision comparison.
|
| |
| static bool | EqualToRoundoff (float a, double b) |
| | Finite precision comparison.
|
| |
| static bool | EqualToRoundoff (double a, float b) |
| | Finite precision comparison.
|
| |
| static constexpr double | Constrain (double min, double value, double max) |
| | Constrain a value between a minimum and a maximum value.
|
| |
| static constexpr double | sign (double num) |
| |
| static char | highint [5] = {27, '[', '1', 'm', '\0' } |
| | highlights text
|
| |
| static char | halfint [5] = {27, '[', '2', 'm', '\0' } |
| | low intensity text
|
| |
| static char | normint [6] = {27, '[', '2', '2', 'm', '\0' } |
| | normal intensity text
|
| |
| static char | reset [5] = {27, '[', '0', 'm', '\0' } |
| | resets text properties
|
| |
| static char | underon [5] = {27, '[', '4', 'm', '\0' } |
| | underlines text
|
| |
| static char | underoff [6] = {27, '[', '2', '4', 'm', '\0' } |
| | underline off
|
| |
| static char | fgblue [6] = {27, '[', '3', '4', 'm', '\0' } |
| | blue text
|
| |
| static char | fgcyan [6] = {27, '[', '3', '6', 'm', '\0' } |
| | cyan text
|
| |
| static char | fgred [6] = {27, '[', '3', '1', 'm', '\0' } |
| | red text
|
| |
| static char | fggreen [6] = {27, '[', '3', '2', 'm', '\0' } |
| | green text
|
| |
| static char | fgdef [6] = {27, '[', '3', '9', 'm', '\0' } |
| | default text
|
| |
| static short | debug_lvl = 1 |
| |
| bool | Upload (Element *el, bool preLoad) |
| | Uploads this model in memory.
|
| |
| static std::string | CreateIndexedPropertyName (const std::string &Property, int index) |
| |
| unsigned int | exe_ctr |
| |
| FGFDMExec * | FDMExec |
| |
| std::string | Name |
| |
| std::shared_ptr< FGPropertyManager > | PropertyManager |
| |
| unsigned int | rate |
| |
| FGPropertyReader | LocalProperties |
| |
| std::vector< std::shared_ptr< FGFunction > > | PostFunctions |
| |
| std::vector< std::shared_ptr< FGFunction > > | PreFunctions |
| |
| static constexpr double | radtodeg = 180. / M_PI |
| |
| static constexpr double | degtorad = M_PI / 180. |
| |
| static constexpr double | hptoftlbssec = 550.0 |
| |
| static constexpr double | psftoinhg = 0.014138 |
| |
| static constexpr double | psftopa = 47.88 |
| |
| static constexpr double | fttom = 0.3048 |
| |
| static constexpr double | ktstofps = 1852./(3600*fttom) |
| |
| static constexpr double | fpstokts = 1.0 / ktstofps |
| |
| static constexpr double | inchtoft = 1.0/12.0 |
| |
| static constexpr double | m3toft3 = 1.0/(fttom*fttom*fttom) |
| |
| static constexpr double | in3tom3 = inchtoft*inchtoft*inchtoft/m3toft3 |
| |
| static constexpr double | inhgtopa = 3386.38 |
| |
| static constexpr double | slugtolb = 32.174049 |
| | Note that definition of lbtoslug by the inverse of slugtolb and not to a different constant you can also get from some tables will make lbtoslug*slugtolb == 1 up to the magnitude of roundoff.
|
| |
| static constexpr double | lbtoslug = 1.0/slugtolb |
| |
| static constexpr double | kgtolb = 2.20462 |
| |
| static constexpr double | kgtoslug = 0.06852168 |
| |
| static const std::string | needed_cfg_version = "2.0" |
| |
| static const std::string | JSBSim_version = JSBSIM_VERSION " " __DATE__ " " __TIME__ |
| |