suggestion
19.10.1999 Christian Mayer change to use PLIB's sg instead of Point[2/3]D
and lots of wee code cleaning
+17.01.2000 Christian Mayer Added conversion routines make it easier for
+ JSBsim to use the weather database.
+18.05.2000 Christian Mayer Added function for geting the density when
+ temperature and pressure are given
*****************************************************************************/
/****************************************************************************/
/* dp: dew point in °C */
/* wb: approximate wetbulp in °C */
/* */
-/* NOTE: Pascal is the SI unit for preasure and is defined as Pa = N/m^2 */
+/* NOTE: Pascal is the SI unit for pressure and is defined as Pa = N/m^2 */
/* 1 mbar = 1 hPa = 100 Pa */
/* NOTE: °C isn't a SI unit, so I should use °K instead. But as all */
/* formulas are given in °C and the weather database only uses */
}
-inline WeatherPrecision Celsius(const WeatherPrecision celsius)
+// Assume that we've got an ideal gas in normal altitudes
+inline WeatherPrecision Density(const WeatherPrecision AirPressure, const WeatherPrecision Temperature )
{
- return celsius + 273.16; //Kelvin
+ const float rho0 = 1.293; /*density for air in normal altitudes at 0°C and 1013 mbar*/
+
+ return rho0 * 273.15 * AirPressure / (101300.0 * Temperature);
+}
+
+inline WeatherPrecision Celsius (const WeatherPrecision celsius)
+{
+ return celsius + 273.15; //Kelvin
}
-inline WeatherPrecision Fahrenheit(const WeatherPrecision fahrenheit)
+inline WeatherPrecision Fahrenheit (const WeatherPrecision fahrenheit)
{
- return (fahrenheit * 9.0 / 5.0) + 32.0 + 273.16; //Kelvin
+ return (fahrenheit * 9.0 / 5.0) + 32.0 + 273.15; //Kelvin
}
-inline WeatherPrecision Kelvin2Celsius(const WeatherPrecision kelvin)
+inline WeatherPrecision Kelvin2Celsius (const WeatherPrecision kelvin)
{
- return kelvin - 273.16; //Celsius
+ return kelvin - 273.15; //Celsius
}
-inline WeatherPrecision Kelvin2Fahrenheit(const WeatherPrecision kelvin)
+inline WeatherPrecision Kelvin2Fahrenheit (const WeatherPrecision kelvin)
{
- return ((kelvin - 273.16) * 9.0 / 5.0) + 32.0; //Fahrenheit
+ return ((kelvin - 273.15) * 9.0 / 5.0) + 32.0; //Fahrenheit
}
-inline WeatherPrecision Celsius2Fahrenheit(const WeatherPrecision celsius)
+inline WeatherPrecision Celsius2Fahrenheit (const WeatherPrecision celsius)
{
- return (celsius * 9.0 / 5.0) + 32.0; //Fahrenheit
+ return (celsius * 9.0 / 5.0) + 32.0; //Fahrenheit
}
-inline WeatherPrecision Fahrenheit2Celsius(const WeatherPrecision fahrenheit)
+inline WeatherPrecision Fahrenheit2Celsius (const WeatherPrecision fahrenheit)
{
return (fahrenheit - 32.0) * 5.0 / 9.0; //Celsius
}
-inline WeatherPrecision Torr2Pascal(const WeatherPrecision torr)
+inline WeatherPrecision Torr2Pascal (const WeatherPrecision torr)
+{
+ return (101325.0/760.0)*torr; //Pascal
+}
+
+inline WeatherPrecision Rankine2Kelvin (const WeatherPrecision Rankine)
+{
+ return (5.0 / 9.0) * Rankine; //Kelvin
+}
+
+inline WeatherPrecision JSBsim2SIdensity (const WeatherPrecision JSBsim)
+{
+ return JSBsim / 0.0019403203; //kg / cubic metres
+}
+
+inline WeatherPrecision psf2Pascal (const WeatherPrecision psf)
+{
+ return psf / 0.020885434; //lbs / square foot (used in JSBsim)
+}
+
+inline WeatherPrecision Kelvin2Rankine (const WeatherPrecision kelvin)
+{
+ return (9.0 / 5.0) * kelvin; //Rankine (used in JSBsim)
+}
+
+inline WeatherPrecision SIdensity2JSBsim (const WeatherPrecision SIdensity)
+{
+ return 0.0019403203 * SIdensity; //slug / cubic feet (used in JSBsim)
+}
+
+inline WeatherPrecision Pascal2psf (const WeatherPrecision Pascal)
{
- return (101325.0/760.0)*torr;
+ return 0.020885434 * Pascal; //lbs / square feet (used in JSBsim)
}
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
-#endif /*FGWeatherUtils_H*/
\ No newline at end of file
+#endif /*FGWeatherUtils_H*/