62 lines
2 KiB
C++
62 lines
2 KiB
C++
#ifndef _ATMOSPHERE_HPP
|
|
#define _ATMOSPHERE_HPP
|
|
|
|
namespace yasim {
|
|
|
|
//constexpr int Atmosphere::numColumns {4};
|
|
|
|
class Atmosphere {
|
|
enum Column {
|
|
ALTITUDE,
|
|
TEMPERATURE,
|
|
PRESSURE,
|
|
DENSITY
|
|
};
|
|
static const int numColumns {4};
|
|
public:
|
|
void setTemperature(float t) { _temperature = t; }
|
|
void setPressure(float p) { _pressure = p; }
|
|
void setDensity(float d) { _density = d; }
|
|
|
|
//set temperature, pressure and density to standard values for given altitude
|
|
void setStandard(float altitude);
|
|
|
|
float getTemperature() const { return _temperature; }
|
|
float getPressure() const { return _pressure; }
|
|
float getDensity() const { return _density; }
|
|
|
|
static float getStdTemperature(float alt);
|
|
static float getStdPressure(float alt);
|
|
static float getStdDensity(float alt);
|
|
|
|
static float calcVCAS(float spd, float pressure, float temp);
|
|
static float calcVEAS(float spd, float pressure, float temp, float density);
|
|
static float calcMach(float spd, float temp);
|
|
static float calcStdDensity(float pressure, float temp);
|
|
|
|
static float spdFromMach(float mach, float temp);
|
|
static float spdFromVCAS(float vcas, float pressure, float temp);
|
|
float spdFromMach(float mach);
|
|
float spdFromVCAS(float vcas);
|
|
|
|
// Given ambient ("0") pressure/density/temperature values,
|
|
// calculate the properties of static air (air accelerated to the
|
|
// aircraft's speed) at a given velocity. Includes
|
|
// compressibility, but not shock effects.
|
|
static void calcStaticAir(float p0, float t0, float d0, float v,
|
|
float* pOut, float* tOut, float* dOut);
|
|
void calcStaticAir(float v, float* pOut, float* tOut, float* dOut);
|
|
static bool test();
|
|
|
|
private:
|
|
static float getRecord(float alt, Atmosphere::Column recNum);
|
|
static float data[][numColumns];
|
|
static int maxTableIndex();
|
|
|
|
float _temperature = 288.11f;
|
|
float _pressure = 101325.0f;
|
|
float _density = 1.22500f;
|
|
};
|
|
|
|
}; // namespace yasim
|
|
#endif // _ATMOSPHERE_HPP
|