FlightGear next
JSBSim::FGInertial Class Reference

Models inertial forces (e.g. More...

#include <FGInertial.h>

Inherits JSBSim::FGModel.

Classes

struct  Inputs
 

Public Types

enum  eGravType { gtStandard , gtWGS84 }
 These define the indices use to select the gravitation models. More...
 
- Public Types inherited from JSBSim::FGJSBBase
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...
 

Public Member Functions

 FGInertial (FGFDMExec *)
 
 ~FGInertial (void)
 
bool Run (bool Holding) override
 Runs the Inertial model; called by the Executive Can pass in a value indicating if the executive is directing the simulation to Hold.
 
const FGColumnVector3GetGravity (void) const
 
const FGColumnVector3GetOmegaPlanet () const
 
void SetOmegaPlanet (double rate)
 
double GetSemimajor (void) const
 
double GetSemiminor (void) const
 
void SetGroundCallback (FGGroundCallback *gc)
 Sets the ground callback pointer.
 
int GetGravityType (void) const
 Get the gravity type.
 
void SetGravityType (int gt)
 Set the gravity type.
 
FGMatrix33 GetTl2ec (const FGLocation &location) const
 Transform matrix from the local horizontal frame to earth centered.
 
FGMatrix33 GetTec2l (const FGLocation &location) const
 Transform matrix from the earth centered to local horizontal frame.
 
bool Load (Element *el) override
 
Functions that rely on the ground callback

The following functions allow to set and get the vehicle position above the ground.

The ground level is obtained by interrogating an instance of FGGroundCallback. A ground callback must therefore be set with SetGroundCallback() before calling any of these functions.

double GetContactPoint (const FGLocation &location, FGLocation &contact, FGColumnVector3 &normal, FGColumnVector3 &velocity, FGColumnVector3 &ang_velocity) const
 Get terrain contact point information below the current location.
 
double GetAltitudeAGL (const FGLocation &location) const
 Get the altitude above ground level.
 
void SetAltitudeAGL (FGLocation &location, double altitudeAGL)
 Set the altitude above ground level.
 
void SetTerrainElevation (double h)
 Set the terrain elevation above sea level.
 
void SetTime (double time)
 Set the simulation time.
 
- Public Member Functions inherited from JSBSim::FGModel
 FGModel (FGFDMExec *)
 Constructor.
 
 ~FGModel () override
 Destructor.
 
bool InitModel (void) override
 
void SetRate (unsigned int tt)
 Set the ouput rate for the model in frames.
 
unsigned int GetRate (void)
 Get the output rate for the model in frames.
 
FGFDMExecGetExec (void)
 
void SetPropertyManager (FGPropertyManager *fgpm)
 
virtual SGPath FindFullPathName (const SGPath &path) const
 
const std::string & GetName (void)
 
- Public Member Functions inherited from JSBSim::FGModelFunctions
virtual ~FGModelFunctions ()
 
void RunPreFunctions (void)
 
void RunPostFunctions (void)
 
bool Load (Element *el, FGFDMExec *fdmex, std::string prefix="")
 
void PreLoad (Element *el, FGFDMExec *fdmex, std::string prefix="")
 
void PostLoad (Element *el, FGFDMExec *fdmex, std::string prefix="")
 
std::string GetFunctionStrings (const std::string &delimeter) const
 Gets the strings for the current set of functions.
 
std::string GetFunctionValues (const std::string &delimeter) const
 Gets the function values.
 
FGFunctionGetPreFunction (const std::string &name)
 Get one of the "pre" function.
 
- Public Member Functions inherited from JSBSim::FGJSBBase
 FGJSBBase ()
 Constructor for FGJSBBase.
 
virtual ~FGJSBBase ()
 Destructor for FGJSBBase.
 
void PutMessage (const Message &msg)
 Places a Message structure on the Message queue.
 
void PutMessage (const std::string &text)
 Creates a message with the given text and places it on the queue.
 
void PutMessage (const std::string &text, bool bVal)
 Creates a message with the given text and boolean value and places it on the queue.
 
void PutMessage (const std::string &text, int iVal)
 Creates a message with the given text and integer value and places it on the queue.
 
void PutMessage (const std::string &text, double dVal)
 Creates a message with the given text and double value and places it on the queue.
 
int SomeMessages (void) const
 Reads the message on the queue (but does not delete it).
 
void ProcessMessage (void)
 Reads the message on the queue and removes it from the queue.
 
MessageProcessNextMessage (void)
 Reads the next message on the queue and removes it from the queue.
 
void disableHighLighting (void)
 Disables highlighting in the console output.
 

Static Public Member Functions

static constexpr double GetStandardGravity (void)
 
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 double PitotTotalPressure (double mach, double p)
 Compute the total pressure in front of the Pitot tube.
 
static double MachFromImpactPressure (double qc, double p)
 Compute the Mach number from the differential pressure (qc) and the static pressure.
 
static double VcalibratedFromMach (double mach, double p)
 Calculate the calibrated airspeed from the Mach number.
 
static double MachFromVcalibrated (double vcas, double p)
 Calculate the Mach number from the calibrated airspeed.Based on the formulas in the US Air Force Aircraft Performance Flight Testing Manual (AFFTC-TIH-99-01).
 
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 double GaussianRandomNumber (void)
 

Public Attributes

struct JSBSim::FGInertial::Inputs in
 

Additional Inherited Members

- Static Public Attributes inherited from JSBSim::FGJSBBase
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
 
- Protected Member Functions inherited from JSBSim::FGModel
bool Upload (Element *el, bool preLoad)
 Uploads this model in memory.
 
static std::string CreateIndexedPropertyName (const std::string &Property, int index)
 
- Protected Attributes inherited from JSBSim::FGModel
unsigned int exe_ctr
 
unsigned int rate
 
std::string Name
 
FGFDMExecFDMExec
 
FGPropertyManagerPropertyManager
 
- Protected Attributes inherited from JSBSim::FGModelFunctions
std::vector< FGFunction * > PreFunctions
 
std::vector< FGFunction * > PostFunctions
 
FGPropertyReader LocalProperties
 
static Message localMsg
 
static std::queue< MessageMessages
 
static unsigned int messageId = 0
 
static constexpr double radtodeg = 180. / 3.14159265358979323846
 
static constexpr double degtorad = 3.14159265358979323846 / 180.
 
static constexpr double hptoftlbssec = 550.0
 
static constexpr double psftoinhg = 0.014138
 
static constexpr double psftopa = 47.88
 
static constexpr double ktstofps = 1.68781
 
static constexpr double fpstokts = 1.0 / ktstofps
 
static constexpr double inchtoft = 1.0/12.0
 
static constexpr double fttom = 0.3048
 
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__
 
static int gaussian_random_number_phase = 0
 

Detailed Description

Models inertial forces (e.g.

centripetal and coriolis accelerations). Starting conversion to WGS84.

Definition at line 65 of file FGInertial.h.

Member Enumeration Documentation

◆ eGravType

These define the indices use to select the gravitation models.

Enumerator
gtStandard 

Evaluate gravity using Newton's classical formula assuming the Earth is spherical.

gtWGS84 

Evaluate gravity using WGS84 formulas that take the Earth oblateness into account.

Definition at line 153 of file FGInertial.h.

Constructor & Destructor Documentation

◆ FGInertial()

JSBSim::FGInertial::FGInertial ( FGFDMExec * fgex)
explicit

Definition at line 50 of file FGInertial.cpp.

◆ ~FGInertial()

JSBSim::FGInertial::~FGInertial ( void )

Definition at line 82 of file FGInertial.cpp.

Member Function Documentation

◆ GetAltitudeAGL()

double JSBSim::FGInertial::GetAltitudeAGL ( const FGLocation & location) const
inline

Get the altitude above ground level.

Returns
the altitude AGL in feet.
Parameters
locationLocation at which the AGL is evaluated.
See also
SetGroundCallback

Definition at line 114 of file FGInertial.h.

◆ GetContactPoint()

double JSBSim::FGInertial::GetContactPoint ( const FGLocation & location,
FGLocation & contact,
FGColumnVector3 & normal,
FGColumnVector3 & velocity,
FGColumnVector3 & ang_velocity ) const
inline

Get terrain contact point information below the current location.

Parameters
locationLocation at which the contact point is evaluated.
contactContact point location
normalTerrain normal vector in contact point (ECEF frame)
velocityTerrain linear velocity in contact point (ECEF frame)
ang_velocityTerrain angular velocity in contact point (ECEF frame)
Returns
Location altitude above contact point (AGL) in feet.
See also
SetGroundCallback

Definition at line 103 of file FGInertial.h.

◆ GetGravity()

const FGColumnVector3 & JSBSim::FGInertial::GetGravity ( void ) const
inline

Definition at line 81 of file FGInertial.h.

◆ GetGravityType()

int JSBSim::FGInertial::GetGravityType ( void ) const
inline

Get the gravity type.

Definition at line 163 of file FGInertial.h.

◆ GetOmegaPlanet()

const FGColumnVector3 & JSBSim::FGInertial::GetOmegaPlanet ( ) const
inline

Definition at line 82 of file FGInertial.h.

◆ GetSemimajor()

double JSBSim::FGInertial::GetSemimajor ( void ) const
inline

Definition at line 86 of file FGInertial.h.

◆ GetSemiminor()

double JSBSim::FGInertial::GetSemiminor ( void ) const
inline

Definition at line 87 of file FGInertial.h.

◆ GetStandardGravity()

static constexpr double JSBSim::FGInertial::GetStandardGravity ( void )
inlinestaticconstexpr

Definition at line 80 of file FGInertial.h.

◆ GetTec2l()

FGMatrix33 JSBSim::FGInertial::GetTec2l ( const FGLocation & location) const
inline

Transform matrix from the earth centered to local horizontal frame.

The local frame is the NED (North-East-Down) frame. Since the Down direction depends on the gravity so is the local frame. The East direction is tangent to the spheroid with a null component along the Z axis. The North direction is obtained from the cross product between East and Down.

Parameters
locationThe location at which the transform matrix must be evaluated.
Returns
a rotation matrix of the transform from the earth centered frame to the local horizontal frame.

Definition at line 194 of file FGInertial.h.

◆ GetTl2ec()

FGMatrix33 JSBSim::FGInertial::GetTl2ec ( const FGLocation & location) const

Transform matrix from the local horizontal frame to earth centered.

The local frame is the NED (North-East-Down) frame. Since the Down direction depends on the gravity so is the local frame. The East direction is tangent to the spheroid with a null component along the Z axis. The North direction is obtained from the cross product between East and Down.

Parameters
locationThe location at which the transform matrix must be evaluated.
Returns
a rotation matrix of the transform from the earth centered frame to the local horizontal frame.

Definition at line 151 of file FGInertial.cpp.

◆ Load()

bool JSBSim::FGInertial::Load ( Element * el)
overridevirtual

Reimplemented from JSBSim::FGModel.

Definition at line 89 of file FGInertial.cpp.

◆ Run()

bool JSBSim::FGInertial::Run ( bool Holding)
overridevirtual

Runs the Inertial model; called by the Executive Can pass in a value indicating if the executive is directing the simulation to Hold.

Parameters
Holdingif true, the executive has been directed to hold the sim from advancing time. Some models may ignore this flag, such as the Input model, which may need to be active to listen on a socket for the "Resume" command to be given.
Returns
false if no error

Reimplemented from JSBSim::FGModel.

Definition at line 127 of file FGInertial.cpp.

◆ SetAltitudeAGL()

void JSBSim::FGInertial::SetAltitudeAGL ( FGLocation & location,
double altitudeAGL )

Set the altitude above ground level.

Parameters
locationLocation at which the AGL is set.
altitudeAGLAltitude above Ground Level in feet.
See also
SetGroundCallback

Definition at line 216 of file FGInertial.cpp.

◆ SetGravityType()

void JSBSim::FGInertial::SetGravityType ( int gt)

Set the gravity type.

Definition at line 231 of file FGInertial.cpp.

◆ SetGroundCallback()

void JSBSim::FGInertial::SetGroundCallback ( FGGroundCallback * gc)
inline

Sets the ground callback pointer.

FGInertial will take ownership of the pointer which must therefore be located in the heap.

Parameters
gcA pointer to a ground callback object
See also
FGGroundCallback

Definition at line 150 of file FGInertial.h.

◆ SetOmegaPlanet()

void JSBSim::FGInertial::SetOmegaPlanet ( double rate)
inline

Definition at line 83 of file FGInertial.h.

◆ SetTerrainElevation()

void JSBSim::FGInertial::SetTerrainElevation ( double h)
inline

Set the terrain elevation above sea level.

Parameters
hTerrain elevation in ft.
See also
SetGroundcallback

Definition at line 130 of file FGInertial.h.

◆ SetTime()

void JSBSim::FGInertial::SetTime ( double time)
inline

Set the simulation time.

The elapsed time can be used by the ground callbck to assess the planet rotation or the movement of objects.

Parameters
timeelapsed time in seconds since the simulation started.

Definition at line 139 of file FGInertial.h.

Member Data Documentation

◆ in

struct JSBSim::FGInertial::Inputs JSBSim::FGInertial::in

The documentation for this class was generated from the following files: