 |
JSBSim Flight Dynamics Model
1.1.11 (13 Feb 2022)
An Open Source Flight Dynamics and Control Software Library in C++
|
34 #ifndef FGATMOSPHERE_H
35 #define FGATMOSPHERE_H
41 #include "models/FGModel.h"
80 enum eTemperature {eNoTempUnit=0, eFahrenheit, eCelsius, eRankine, eKelvin};
83 enum ePressure {eNoPressUnit=0, ePSF, eMillibars, ePascals, eInchesHg};
98 bool Run(
bool Holding)
override;
100 bool InitModel(
void)
override;
143 virtual double GetPressure(
void)
const {
return Pressure;}
147 virtual double GetPressure(
double altitude)
const = 0;
170 virtual double GetDensity(
double altitude)
const;
182 virtual double GetSoundSpeed(
void)
const {
return Soundspeed;}
205 virtual double GetDensityAltitude()
const {
return DensityAltitude;}
207 virtual double GetPressureAltitude()
const {
return PressureAltitude;}
213 static constexpr
double StdDaySLtemperature = 518.67;
214 static constexpr
double StdDaySLpressure = 2116.228;
215 static const double StdDaySLsoundspeed;
218 double SLtemperature, SLdensity, SLpressure, SLsoundspeed;
219 double Temperature, Density, Pressure, Soundspeed;
221 double PressureAltitude;
222 double DensityAltitude;
224 static constexpr
double SutherlandConstant = 198.72;
225 static constexpr
double Beta = 2.269690E-08;
226 double Viscosity, KinematicViscosity;
262 static constexpr
double Mair = 28.9645 * kgtoslug / 1000.0;
268 static constexpr
double g0 = 9.80665 / fttom;
273 static constexpr
double SHRatio = 1.4;
275 virtual void bind(
void);
276 void Debug(
int from)
override;
Encapsulates the JSBSim simulation executive.
eTemperature
Enums for specifying temperature units.
double ConvertToRankine(double t, eTemperature unit) const
Converts to Rankine from one of several unit systems.
virtual double GetDensityRatio(void) const
Returns the ratio of at-altitude density over the sea level value.
virtual double GetPressure(void) const
Returns the pressure in psf.
Base class for all scheduled JSBSim models.
virtual double GetSoundSpeedSL(void) const
Returns the sea level speed of sound in ft/sec.
virtual double GetKinematicViscosity(void) const
Returns the kinematic viscosity.
ePressure
Enums for specifying pressure units.
virtual void SetPressureSL(ePressure unit, double pressure)
Sets the sea level pressure for modeling.
double ConvertToPSF(double t, ePressure unit=ePSF) const
Converts to PSF (pounds per square foot) from one of several unit systems.
static constexpr double g0
Sea-level acceleration of gravity - ft/s^2.
static constexpr double KelvinToRankine(double kelvin)
Converts from degrees Kelvin to degrees Rankine.
static constexpr double Rstar
Universal gas constant - ft*lbf/R/mol.
double ConvertFromPSF(double t, ePressure unit=ePSF) const
Converts from PSF (pounds per square foot) to one of several unit systems.
static double Reng
Specific gas constant for air - ft*lbf/slug/R.
virtual double GetDensitySL(void) const
Returns the sea level density in slugs/ft^3.
virtual double GetAbsoluteViscosity(void) const
Returns the absolute viscosity.
virtual double GetTemperatureSL() const
Returns the actual, modeled sea level temperature in degrees Rankine.
Models an empty, abstract base atmosphere class.
virtual double GetSoundSpeed(void) const
Returns the speed of sound in ft/sec.
virtual double GetTemperatureRatio(double h) const
Returns the ratio of the temperature as modeled at the supplied altitude over the sea level value.
virtual void Calculate(double altitude)
Calculate the atmosphere for the given altitude.
virtual void SetTemperatureSL(double t, eTemperature unit=eFahrenheit)
Sets the Sea Level temperature.
virtual double GetSoundSpeedRatio(void) const
Returns the ratio of at-altitude sound speed over the sea level value.
virtual double GetPressureRatio(void) const
Returns the ratio of at-altitude pressure over the sea level value.
double ConvertFromRankine(double t, eTemperature unit) const
Converts from Rankine to one of several unit systems.
virtual double GetTemperature() const
Returns the actual, modeled temperature at the current altitude in degrees Rankine.
virtual void SetTemperature(double t, double h, eTemperature unit=eFahrenheit)=0
Sets the temperature at the supplied altitude.
virtual double CalculatePressureAltitude(double pressure, double geometricAlt)
Calculates the pressure altitude given any temperature or pressure bias.
virtual double GetTemperatureRatio() const
Returns the ratio of the at-current-altitude temperature as modeled over the sea level value.
FGAtmosphere(FGFDMExec *)
Constructor.
virtual ~FGAtmosphere()
Destructor.
static constexpr double Mair
Mean molecular weight for air - slug/mol.
bool Run(bool Holding) override
Runs the atmosphere forces model; called by the Executive.
virtual double GetDensity(void) const
Returns the density in slugs/ft^3.
virtual double CalculateDensityAltitude(double density, double geometricAlt)
Calculates the density altitude given any temperature or pressure bias.