Barometric formula
The barometric formula, sometimes called the exponential atmosphere or isothermal atmosphere, is a formula used to model how the pressure (or density) of the air changes with altitude.
Pressure equations
There are two different equations for computing pressure at various height regimes below 86 km (or 278,400 feet). The first equation is used when the value of standard temperature lapse rate is not equal to zero; the second equation is used when standard temperature lapse rate equals zero.
Equation 1:
Equation 2:
where
- = static pressure (Pa)
- = standard temperature (K)
- = standard temperature lapse rate (K/m) in ISA
- = height above sea level (m)
- = height at bottom of layer b (meters; e.g., h1 = 11 000 m)
- = universal gas constant: 8.3144598 J /mol/K
- = gravitational acceleration: 9.80665 m/s2
- = molar mass of Earth's air: 0.0289644 kg/mol
Or converted to imperial units:[1]
where
- = static pressure (inches of mercury, inHg)
- = standard temperature (K)
- = standard temperature lapse rate (K/ft) in ISA
- = height above sea level (ft)
- = height at bottom of layer b (feet; e.g., h1 = 36,089 ft)
- = universal gas constant; using feet, kelvins, and (SI) moles: 8.9494596×104 lb·ft2/(lb-mol·K·s2)
- = gravitational acceleration: 32.17405 ft/s2
- = molar mass of Earth's air: 28.9644 lb/lb-mol
The value of subscript b ranges from 0 to 6 in accordance with each of seven successive layers of the atmosphere shown in the table below. In these equations, g0, M and R* are each single-valued constants, while P, L, T, and h are multivalued constants in accordance with the table below. The values used for M, g0, and R* are in accordance with the U.S. Standard Atmosphere, 1976, and the value for R* in particular does not agree with standard values for this constant.[2] The reference value for Pb for b = 0 is the defined sea level value, P0 = 101 325 Pa or 29.92126 inHg. Values of Pb of b = 1 through b = 6 are obtained from the application of the appropriate member of the pair equations 1 and 2 for the case when h = hb+1.[2]
Subscript b | Height above sea level | Static pressure | Standard temperature (K) |
Temperature lapse rate | |||
---|---|---|---|---|---|---|---|
(m) | (ft) | (Pa) | (inHg) | (K/m) | (K/ft) | ||
0 | 0 | 0 | 101 325.00 | 29.92126 | 288.15 | -0.0065 | -0.0019812 |
1 | 11 000 | 36,089 | 22 632.10 | 6.683245 | 216.65 | 0.0 | 0.0 |
2 | 20 000 | 65,617 | 5474.89 | 1.616734 | 216.65 | 0.001 | 0.0003048 |
3 | 32 000 | 104,987 | 868.02 | 0.2563258 | 228.65 | 0.0028 | 0.00085344 |
4 | 47 000 | 154,199 | 110.91 | 0.0327506 | 270.65 | 0.0 | 0.0 |
5 | 51 000 | 167,323 | 66.94 | 0.01976704 | 270.65 | -0.0028 | -0.00085344 |
6 | 71 000 | 232,940 | 3.96 | 0.00116833 | 214.65 | -0.002 | -0.0006096 |
Density equations
The expressions for calculating density are nearly identical to calculating pressure. The only difference is the exponent in Equation 1.
There are two different equations for computing density at various height regimes below 86 geometric km (84 852 geopotential meters or 278,385.8 geopotential feet). The first equation is used when the value of standard temperature lapse rate is not equal to zero; the second equation is used when standard temperature lapse rate equals zero.
Equation 1:
Equation 2:
where
- = mass density (kg/m3)
- = standard temperature (K)
- = standard temperature lapse rate (see table below) (K/m) in ISA
- = height above sea level (geopotential meters)
- = universal gas constant for air: 8.3144598 N·m/(mol·K)
- = gravitational acceleration: 9.80665 m/s2
- = molar mass of Earth's air: 0.0289644 kg/mol
or, converted to English gravitational foot-pound-second units:[1]
- = mass density (slug/ft3)
- = standard temperature (K)
- = standard temperature lapse rate (K/ft)
- = height above sea level (geopotential feet)
- = universal gas constant: 8.9494596×104 ft2/(s·K)
- = gravitational acceleration: 32.17405 ft/s2
- = molar mass of Earth's air: 0.0289644 kg/mol
The value of subscript b ranges from 0 to 6 in accordance with each of seven successive layers of the atmosphere shown in the table below. The reference value for ρb for b = 0 is the defined sea level value, ρ0 = 1.2250 kg/m3 or 0.0023768908 slug/ft3. Values of ρb of b = 1 through b = 6 are obtained from the application of the appropriate member of the pair equations 1 and 2 for the case when h = hb+1.[2]
In these equations, g0, M and R* are each single-valued constants, while ρ, L, T and h are multi-valued constants in accordance with the table below. The values used for M, g0 and R* are in accordance with the U.S. Standard Atmosphere, 1976, and that the value for R* in particular does not agree with standard values for this constant.[2]
Subscript b | Height Above Sea Level (h) | Mass Density () | Standard Temperature (T') (K) |
Temperature Lapse Rate (L) | |||
---|---|---|---|---|---|---|---|
(m) | (ft) | (kg/m3) | (slugs/ft3) | (K/m) | (K/ft) | ||
0 | 0 | 0 | 1.2250 | 2.3768908 x 10−3 | 288.15 | -0.0065 | -0.0019812 |
1 | 11 000 | 36,089.24 | 0.36391 | 7.0611703 x 10−4 | 216.65 | 0.0 | 0.0 |
2 | 20 000 | 65,616.79 | 0.08803 | 1.7081572 x 10−4 | 216.65 | 0.001 | 0.0003048 |
3 | 32 000 | 104,986.87 | 0.01322 | 2.5660735 x 10−5 | 228.65 | 0.0028 | 0.00085344 |
4 | 47 000 | 154,199.48 | 0.00143 | 2.7698702 x 10−6 | 270.65 | 0.0 | 0.0 |
5 | 51 000 | 167,322.83 | 0.00086 | 1.6717895 x 10−6 | 270.65 | -0.0028 | -0.00085344 |
6 | 71 000 | 232,939.63 | 0.000064 | 1.2458989 x 10−7 | 214.65 | -0.002 | -0.0006096 |
Derivation
The barometric formula can be derived fairly easily using the ideal gas law:
When density is known:
And assuming that all pressure is hydrostatic:
Dividing the by the expression we get:
Integrating this expression from the surface to the altitude z we get:
Assuming constant temperature, molar mass, and gravitational acceleration, we get the barometric formula:
In this formulation, R* is the gas constant, and the term R*T/Mg gives the scale height (approximately equal to 8.4 km for the troposphere).
(For exact results, it should be remembered that atmospheres containing water do not behave as an ideal gas. See real gas or perfect gas or gas for further understanding.)
Source code
Below is the C++ implementation of the US Standard Atmosphere version 1976. The calculations below 51 km are adopted from equations in Practical Meteorology[3] and the calculations above 51 km are adopted from Atmospheric Models at Rocket and Space Technology.[4] Some validation data is available at avs.org.
float getStandardPressure(float altitude /* meters */) //return Pa
{
//Below 51km: Practical Meteorology by Roland Stull, pg 12
//Above 51km: http://www.braeunig.us/space/atmmodel.htm
//Validation data: https://www.avs.org/AVS/files/c7/c7edaedb-95b2-438f-adfb-36de54f87b9e.pdf
altitude = altitude / 1000.0f; //convert meters to km
float geopot_height = getGeopotential(altitude);
float t = getStandardTemperature(geopot_height);
if (geopot_height <= 11)
return 101325 * pow(288.15f / t, -5.255877f);
else if (geopot_height <= 20)
return 22632.06 * exp(-0.1577f * (geopot_height - 11));
else if (geopot_height <= 32)
return 5474.889f * pow(216.65f / t, 34.16319f);
else if (geopot_height <= 47)
return 868.0187f * pow(228.65f / t, 12.2011f);
else if (geopot_height <= 51)
return 110.9063f * exp(-0.1262f * (geopot_height - 47));
else if (geopot_height <= 71)
return 66.93887f * pow(270.65f / t, -12.2011f);
else if (geopot_height <= 84.85)
return 3.956420f * pow(214.65f / t, -17.0816f);
throw std::out_of_range("altitude must be less than 86km.");
}
//geopot_height = earth_radius * altitude / (earth_radius + altitude) /// all in kilometers
//temperature is in Kelvin = 273.15 + Celsius
float getStandardTemperature(float geopot_height)
{
//standard atmospheric pressure
//Below 51km: Practical Meteorology by Roland Stull, pg 12
//Above 51km: http://www.braeunig.us/space/atmmodel.htm
if (geopot_height <= 11) //troposphere
return 288.15f - (6.5 * geopot_height);
else if (geopot_height <= 20) //Staroshere starts
return 216.65f;
else if (geopot_height <= 32)
return 196.65f + geopot_height;
else if (geopot_height <= 47)
return 228.65f + 2.8 * (geopot_height - 32);
else if (geopot_height <= 51) //Mesosphere starts
return 270.65f;
else if (geopot_height <= 71)
return 270.65f - 2.8 * (geopot_height - 51);
else if (geopot_height <= 84.85)
return 214.65f - 2 * (geopot_height - 71);
//Thermospehere has high kinetic temperature (500c to 2000c) but temperature
//as measured by thermometer would be very low because of almost vacuum
throw std::out_of_range("geopot_height must be less than 84.85km.");
}
float getGeopotential(float altitude_km)
{
constexpr float EARTH_RADIUS = 6356.766; //km
return EARTH_RADIUS * altitude_km / (EARTH_RADIUS + altitude_km);
}
See also
References
- 1 2 Mechtly, E. A., 1973: The International System of Units, Physical Constants and Conversion Factors. NASA SP-7012, Second Revision, National Aeronautics and Space Administration, Washington, D.C.
- 1 2 3 4 U.S. Standard Atmosphere, 1976, U.S. Government Printing Office, Washington, D.C., 1976. (Linked file is 17 Mb)
- ↑ Stull, Roland. Practical Meteorology (PDF). p. 12.
- ↑ Braeunig, Robert. "ATMOSPHERIC MODELS". Rocket and Space Technology.