Standard atmosphere calculations

International Standard Atmosphere for Aircraft rapid decompression calculations

Aircraft rapid decompression calculations require a $\Delta_P$ between cabin and ambient atmosphere as a basic data.

Given a given Cabin pressure $P_{cabin}$, $\Delta_P$ is easilly calculated: $\Delta_P = P_{ambient} - P_{cabin}$

Ambient pressure $P_{ambient}$ is determined by using Standard Atmosphere, also known as ISA (International Standard Atmosphere). ISA defines the atmosphere’s properties (pressure, temperature, density) as a function of altitude.

http://en.wikipedia.org/wiki/International_Standard_Atmosphere

A good reference for a mathematical model of the atmosphere is the NACA report 1235 (http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19930090991.pdf). This report is based on the ICAO standard atmosphere. As stated in SAE AIR5661:

Consequently, atmospheric properties calculated from NACA Report 1235 equations will match data provided in more current publications, such as for the U.S. and ISA Standard Atmospheres.

Standard atmosphere for the [0km - 11km] range (troposphere)

NACA report 1235, eq.18:

$$ \frac{P}{P_0} = \left[\frac{T_0 - a\times H}{T0}\right]^n=\left[\frac{T}{T_0}\right]^n$$

derived from properties at sea level, with $n=5.2561$, and where $H$ is the altitude in $meters$:

$$P = 101325 \times \left ( 1-2.25569\times 10^{-5}\times H\right ) ^{5.25616}\ [Pa]$$

The temperature are varying linearly in the troposphere (NACA1235, eq.13):

$$T=T_0-a\times H$$

where $a=0.0065°C\times m^-1$ is the troposphere lapse rate

Standard atmosphere for the [11km - 20km] range (stratosphere)

Once Tropopause (the boundary layer between the troposphere and the stratosphere) is passed, we reach the stratosphere.

NACA report 1235, eq.30:

$$ log{\frac{P}{P_0}}=n\times log{\left[\frac{T_0-aH^*}{T_0}\right]}-B(H-H^*)$$

$$P=0.223356 \times 101325 * e^{-0.000157688 * (H-11000)}$$

The temperatures in the stratosphere are considered constant and equal to Tropopause temperature $T^*$:

$$T=T^*=216.66\ K$$

where $T^*$, $P^*$ and $H^*$ are respectively the Temperature, Pressure and Altitude for Tropopause.

What looks it like? A bit of python

Let see now which those equations draw. We will run for that a couple of Python codelines. Let’s write a function isa(altitude) that returns a tuple (pressure, temperature):

In [1]:
from math import log, exp, sqrt  # import some useful mathematical stuff

def isa(altitude):
    """ return a 2-uplet (pressure, temperature) depending on provided altitude.
    Units are SI (m, PA, Kelvin)"""
    if altitude<=11000: 
        # troposphere
        pressure = 101325 * (1 - 2.25569E-5 * altitude)**5.25616
        temperature = 288.14 - 0.00649 * altitude        
    elif altitude<=20000:  
        pressure = 0.223356 * 101325 * exp(-0.000157688 * (altitude - 11000))  # stratosphere
        temperature = 216.66        
    else:
        raise ValueError('altitude out of range [0-20000m]')
    return (pressure, temperature)

Calculated over the altitude range [0-20000m], this looks like:

In [2]:
altitudes = range(0, 21000, 1000) # altitudes from 0 to 20000m every 1000m

# calculate (pressure, temperature) for the given range and put them in a list
values = [isa(alt) for alt in altitudes]  # pressure, temperature for all altitudes
# split temperature and pressure into two lists
pressures = [data[0] * 1E-5 for data in values]  # convert from Pa to bar
temperatures = [data[1] for data in values]  #  Kelvin
# we will also store ``pressures_pa`` for la ter use
pressures_pa = [data[0] for data in values]

We will plot temperature and pressure using the amazing Bokeh library

In [3]:
# import plotting functions
from bokeh.plotting import figure, output_notebook, show
from bokeh.models import LinearAxis,Range1d
output_notebook()  # prepare it for current notebook
BokehJS successfully loaded.

We will plot pressures and temperaturse on the same diagram, using two different Y-axis.

In [4]:
y_range = Range1d(start=min(pressures), end=max(pressures)) 
p0 = figure(title="ISA values [0-20km]", x_axis_label='altitude (m)', 
            y_range=y_range, y_axis_label='pressure (bar)', tools=[])
p0.line(altitudes, pressures, color="red", legend='pressure')
# plot temperature
# add a second axis for temperature overlay
p0.extra_y_ranges = {'temp_scale': 
                     Range1d(start=min(temperatures)-5, 
                    end=max(temperatures)+5)}
temp_axis = LinearAxis(y_range_name='temp_scale')
temp_axis.axis_label = 'temperature (deg K)'
p0.add_layout(temp_axis, 'right')
p0.line(altitudes, temperatures, color='blue',  
        y_range_name='temp_scale', line_dash='dashed', 
        legend='temperature')
show(p0)  

Correction of ambient pressure for cockpit load case

The ambient pressure calculated above are fine for any tengential opening hole,i.e for any opening hole whose normal is perpendicular to aircraft velocity.

However, an opening in the cockpit windshield is slightly different. Indeed, the additional pressure given by relative velocity needs to be taken into account.

This is done by correcting ambient pressure $P_{\infty}$ as follows:

$P=\frac{1}{2}\rho_{\infty}.[M_{Aircraft} . M_{\infty}]² . C_p + P_{\infty}$

Where:

  • $M_{aircraft}$ is the aircraft mach number.
  • $M_{\infty}$ is the sound celerity for the given altitude.
  • $P_{\infty}$ is the static ambient for the given altitude.
  • $\rho_{\infty}$ is the air density for the given altitude.
  • $C_{p}$ is the Aircraft Pressure coefficient.

We thus need to calculate two intermediate variables : $M_{\infty}$, the sound celerity for the given altitude and $\rho_{\infty}$, the density of ambient air.

Sound celerity as a function of temperature

Sounc Celerity is calculated as

$$M_{\infty}=\sqrt{K_{heat}\times R_s \times T_{\infty}}$$

with:

  • $T_{\infty}$: temperature in Kelvin
  • $K_{heat} =1.4$
  • $R_s=287$

Air density

Using perfect gas laws:

$$\rho_{\infty}=\frac{ P_{\infty}}{R_s\times T_{\infty}}$$

Example for an A330

Now, let see the impact of such a pressure correction for a Airbus A330, using $C_p=0.7$ and $M_{Aircraft}=0.82$.

In [5]:
RS = 287
K_HEAT = 1.4
CP = 0.7  # pressure coefficient
Ma = 0.82  # Aicraft mach number
def calc_a_and_rho(P, T):
    """ return a tuple (``a``, ``rho``) based on provided Pressure ``P`` 
    and temperature ``T``"""
    a = sqrt(K_HEAT * RS * T)
    rho = P / (RS * T)
    return a, rho

By reusing pressure and temperature already calculated above, we will create a mod_pressures list to plot them

In [6]:
mod_pressures = []
for p, T in zip(pressures_pa, temperatures):
    a, rho = calc_a_and_rho(p, T)
    mod_p = p + 0.5 * rho * (Ma * a)**2 * CP 
    mod_pressures.append(mod_p * 1E-5) # store it in bar
In [7]:
y_range = Range1d(start=min(pressures), end=max(mod_pressures)) 
p1 = figure(title="Modified pressures (A330) -- altitude [0-20km]", 
            x_axis_label='altitude (m)', 
            y_range=y_range, y_axis_label='pressure (bar)', tools=[])


p1.line(altitudes, mod_pressures, color="blue", legend='modified pressure')
p1.line(altitudes, pressures, color="red", legend='ambient pressure')
show(p1)  

Online Caclulator is available

You can find a dedicated online calculator here

Tags cloud

Links and friends

social