<p>Those formulas are based on an assumption that the pressure is hydrostatic and the ideal gas law. The example given is limited to 11km but uses the tables from the <a href="http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19770009539_1977009539.pdf" rel="nofollow noreferrer">U.S. Standard Atmosphere</a> which actually go up to $1000$ km. Starting at Page 58 one can find values for pressure density and temperature above 11km. </p>

<p><img src="https://i.sstatic.net/bk5ak.jpg" alt="enter image description here"></p>

CC BY-SA 3.0
2015-01-11T07:44:22.077Z
2015-01-11T08:00:33.410Z
2015-01-11T08:00:33.410Z
Isopycnal Oscillation
<p>The original description of the <a href="https://docs.google.com/file/d/0B2UKsBO-ZMVgWG9mWEJGMlFacDQ/edit?pli=1" rel="nofollow">US. Standard Atmosphere 1976</a> turns out to include much more and detailed information than the Wikipedia article. I've now, finally, got it working using the fixed variables $H_b$, $\rho_b$, $T_b$ and $L_b$, which determine the standard height, (air) density, temperature and lapse rate at layer $b$, respectively. A sufficient overview of those values can be found on the <a href="http://en.wikipedia.org/wiki/Barometric_formula#Density_equations" rel="nofollow">wikipedia</a>.</p>

<p>This approach gives quite accurate results, which fit to the values supplied by Isopycnal Oscillation.</p>

CC BY-SA 3.0
2015-01-11T10:40:15.377Z
2015-01-11T21:45:42.493Z
2015-01-11T21:45:42.493Z
Tacticus
<p>There doesn't seem to be central reference for standard temperature and atmospheric pressure at high altitudes. Below is the code I wrote after combining two resources that can be found in the comments. This C++ code calculates standard atmospheric pressure all the way up to 86km.</p>

<pre><code>  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 &lt;= 11)
      return  101325 * pow(288.15f / t, -5.255877f);
    else if (geopot_height &lt;= 20)
      return 22632.06 * exp(-0.1577f * (geopot_height - 11));
    else if (geopot_height &lt;= 32)
      return 5474.889f * pow(216.65f / t, 34.16319f);
    else if (geopot_height &lt;= 47)
      return 868.0187f * pow(228.65f / t, 12.2011f);
    else if (geopot_height &lt;= 51)
      return 110.9063f * exp(-0.1262f * (geopot_height - 47));
    else if (geopot_height &lt;= 71)
      return 66.93887f * pow(270.65f / t, -12.2011f);
    else if (geopot_height &lt;= 84.85)
      return 3.956420f * pow(214.65f / t, -17.0816f);

    throw std::out_of_range("altitude must be less than 86km. Space domain is not supported yet!");    
  }

  //geopot_height = earth_radius * altitude / (earth_radius + altitude) /// all in kilometers
  //temperature is in Kelvin = 273.15 + celcius
  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 &lt;= 11)          //troposphere
      return 288.15f - (6.5 * geopot_height);
    else if (geopot_height &lt;= 20)     //Staroshere starts
      return 216.65f;
    else if (geopot_height &lt;= 32)
      return 196.65f + geopot_height;
    else if (geopot_height &lt;= 47)       
      return 228.65f + 2.8 * (geopot_height - 32);
    else if (geopot_height &lt;= 51)     //Mesosphere starts
      return 270.65f;
    else if (geopot_height &lt;= 71)       
      return 270.65f - 2.8 * (geopot_height - 51);
    else if (geopot_height &lt;= 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 vaccume
    throw std::out_of_range("geopot_height must be less than 85km. Space domain is not supported yet!");
  }

  float getGeopotential(float altitude_km)
  {
    constexpr float EARTH_RADIUS =  6356.766; //km
    return EARTH_RADIUS * altitude_km / (EARTH_RADIUS + altitude_km);
  }
</code></pre>

CC BY-SA 3.0
2016-11-27T05:13:46.280Z
That seems practical.
Isopycnal Oscillation
CC BY-SA 3.0
2016-11-26T11:58:15.393Z
2016-11-26T11:58:15.393Z
Shital Shah
<p>I need to calculate the force that causes a weather balloon with a specific volume to rise. Having searched for quite a few hours, I found the needed formula that can be used to calculate the pressure at a certain altitude. (surprisingly, the formula given on the <a href="http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel#Internationale_H.C3.B6henformel">German</a> Wikipedia gives better values than that from the <a href="http://en.wikipedia.org/wiki/Barometric_formula">English</a> one )</p>

<p>This is needed to get the density of the air, which can then be used with Archimedes' principle to get the buoyancy force of the balloon a that height.</p>

<p>However, it is stated that the formula only returns valid values for altitudes up to 11 km. Is there a way to calculate the air pressure at a higher altitude?</p>

CC BY-SA 3.0
2016-11-26T12:01:22.497Z
@Tacticus can you add the two equations (German vs English wiki) to the question? Entries in Wikipedia change with time.
Gimelist
CC BY-SA 3.0
2015-01-11T01:16:14.533Z
Really not surprising the Germany page has better formulas.  The atmospheric scientists in Germany are remarkable.
f.thorpe
CC BY-SA 3.0
2015-01-11T07:53:04.557Z
How did you determine one gave better answers than the other?
Isopycnal Oscillation
CC BY-SA 3.0
2015-01-11T08:30:29.510Z
@farrenthorpe - The quality of wikipedia pages in different languages has very little to do with the quality of scientists who speak that language.
David Hammen
CC BY-SA 3.0
2015-01-11T12:52:22.320Z
The formula given on the German wikipedia was much easier to use than the other one; however, that (two) formulars can be used to caclulate the pressure (there are others for the density, too) up to 84 km.
Tacticus
<barometric-pressure>
Pressure as a function of altitude above 11 km
Tacticus
# Pressure as a function of altitude above 11 km

(Asked by: username_0 on 2015-01-10)

I need to calculate the force that causes a weather balloon with a specific volume to rise. Having searched for quite a few hours, I found the needed formula that can be used to calculate the pressure at a certain altitude. (surprisingly, the formula given on the [German](http://de.wikipedia.org/wiki/Barometrische_H%C3%B6henformel#Internationale_H.C3.B6henformel) Wikipedia gives better values than that from the [English](http://en.wikipedia.org/wiki/Barometric_formula) one )

This is needed to get the density of the air, which can then be used with Archimedes' principle to get the buoyancy force of the balloon a that height.

However, it is stated that the formula only returns valid values for altitudes up to 11 km. Is there a way to calculate the air pressure at a higher altitude?

**Tags:** barometric-pressure

> **Comments:**
> **username_2**: Really not surprising the Germany page has better formulas.  The atmospheric scientists in Germany are remarkable.  
> **username_3**: How did you determine one gave better answers than the other?  
> **username_4**: @farrenthorpe - The quality of wikipedia pages in different languages has very little to do with the quality of scientists who speak that language.  
> **username_0**: The formula given on the German wikipedia was much easier to use than the other one; however, that (two) formulars can be used to caclulate the pressure (there are others for the density, too) up to 84 km.  
> **username_1**: @username_0 can you add the two equations (German vs English wiki) to the question? Entries in Wikipedia change with time.  

---

## 3 answers

### Answer by username_3 on 2015-01-11. Score: 5 | Accepted answer

Those formulas are based on an assumption that the pressure is hydrostatic and the ideal gas law. The example given is limited to 11km but uses the tables from the [U.S. Standard Atmosphere](http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19770009539_1977009539.pdf) which actually go up to $1000$ km. Starting at Page 58 one can find values for pressure density and temperature above 11km.

![enter image description here](https://i.sstatic.net/bk5ak.jpg)


---

### Answer by username_0 on 2015-01-11. Score: 3

The original description of the [US. Standard Atmosphere 1976](https://docs.google.com/file/d/0B2UKsBO-ZMVgWG9mWEJGMlFacDQ/edit?pli=1) turns out to include much more and detailed information than the Wikipedia article. I've now, finally, got it working using the fixed variables $H\_b$, $\rho\_b$, $T\_b$ and $L\_b$, which determine the standard height, (air) density, temperature and lapse rate at layer $b$, respectively. A sufficient overview of those values can be found on the [wikipedia](http://en.wikipedia.org/wiki/Barometric_formula#Density_equations).

This approach gives quite accurate results, which fit to the values supplied by username_3 username_3.


---

### Answer by username_5 on 2016-11-26. Score: 2

There doesn't seem to be central reference for standard temperature and atmospheric pressure at high altitudes. Below is the code I wrote after combining two resources that can be found in the comments. This C++ code calculates standard atmospheric pressure all the way up to 86km.

```
  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. Space domain is not supported yet!");    
  }

  //geopot_height = earth_radius * altitude / (earth_radius + altitude) /// all in kilometers
  //temperature is in Kelvin = 273.15 + celcius
  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 vaccume
    throw std::out_of_range("geopot_height must be less than 85km. Space domain is not supported yet!");
  }

  float getGeopotential(float altitude_km)
  {
    constexpr float EARTH_RADIUS =  6356.766; //km
    return EARTH_RADIUS * altitude_km / (EARTH_RADIUS + altitude_km);
  }

```

> **Comments:**
> **username_3**: That seems practical.  

---

