Purpose

This repository provides Ruby code for calculating values defined in the following documents:

  • International Standard Atmosphere (ISA) from ISO 2533:1975

  • ICAO Standard Atmosphere (ICAO Doc 7488/3, 1994)

Which are technically identical documents but different in presentation and units (the ICAO document includes ft in addition to m).

Usage

Formulas and calculations

> require 'atmospheric'
> instance = Atmospheric::Isa.method_name
> # method_name is one of the following

The available methods are:

  • geometric_altitude_from_geopotential(geopotential_altitude)

  • geopotential_altitude_from_geometric(geometric_altitude)

  • temperature_at_layer_from_geopotential(geopotential_altitude)

  • temperature_at_layer_celcius(geopotential_altitude)

  • pressure_from_geopotential_mbar(geopotential_altitude)

  • pressure_from_geopotential_mmhg(geopotential_altitude)

  • density_from_geopotential(geopotential_altitude)

  • gravity_at_geopotential(geopotential_altitude)

  • p_p_n_from_geopotential(geopotential_altitude)

  • rho_rho_n_from_geopotential(geopotential_altitude)

  • root_rho_rho_n_from_geopotential(geopotential_altitude)

  • speed_of_sound_from_geopotential(geopotential_altitude)

  • dynamic_viscosity_from_geopotential(geopotential_altitude)

  • kinematic_viscosity_from_geopotential(geopotential_altitude)

  • thermal_conductivity_from_geopotential(geopotential_altitude)

  • pressure_scale_height_from_geopotential(geopotential_altitude)

  • specific_weight_from_geopotential(geopotential_altitude)

  • air_number_density_from_geopotential(geopotential_altitude)

  • mean_air_particle_speed_from_geopotential(geopotential_altitude)

  • air_particle_collision_frequency_from_geopotential(geopotential_altitude)

  • mean_free_path_of_air_particles_from_geopotential(geopotential_altitude)

Generating ISO 2533 tables

ISO 2533:1975

All tables in the 1975 edition are arranged in these steps in meters:

ISO 2533:1975 table range: step 50 from -2k, 100 above 32k, 200 above 51k to 80k
(-2000..31999).step(50) +
(32000..50999).step(100) +
(51000..80000).step(200)

Tables 5 to 7 all have height information of the following keys in the hash:

  • geopotential-altitude-m

  • geopotential-altitude-ft

  • geometrical-altitude-m

  • geometrical-altitude-ft

Table 5

Title: "Temperature (T and t), Pressure (p), Density (p) and Acceleration of free fall (g) in terms of geometrical altitude (h) and geopotential altitude (H)"

Provides the following values in addition to geopotential and geometric height:

  • temperature-K

  • temperature-C

  • pressure-mbar

  • pressure-mmHg

  • density

  • acceleration

Table 6

Title: "Relations of p’pn, p/pn and bar(p/pn), Speed of sound (a), Dynamic viscosity (p), Kinematic viscosity (v) and Thermal conductivity (lambda) in terms of geometrical altitude (h), and geopotential altitude (H)"

Provides the following values in addition to geopotential and geometric height:

  • ppn

  • rhorhon

  • sqrt-rhorhon

  • speed-of-sound

  • dynamic-viscosity

  • kinematic-viscosity

  • thermal-conductivity

Table 7

Title: "Pressure scale height (H_p) Specific weight (gamma), Air number density (n), Mean air-particle speed (v), Air-particle collision frequency (omega) and Mean free path of air particles (l) in terms of geometrical altitude (h) and geopotential altitude (H)"

  • pressure-scale-height

  • specific-weight

  • air-number-density

  • mean-speed

  • frequency

  • mean-free-path

ISO 2533 ADD 1:1985

Addendum 1 adds "Hypsometrical tables".

Table 1 (hPa)

Title: "Geopotential altitude as a function of barometric pressure for 5 ⇐ p < 20 hPa at intervals of 0.01 hPa"

For the range of (5.0..19.99).step(0.01) in hPa.

Provides:

  • pressure-mbar

  • geopotential-altitude

Table 2 (hPa)

Title: "Geopotential altitude as a function of barometric pressure for 20 ⇐ p < 1200 hPa at intervals of 0.1 hPa"

Same as Table 1 but for the range of (20.0..1199.9).step(0.1) in hPa.

Table 3 (mmHg)

Title: "Geopotential altitude as a function of barometric pressure for 4 ⇐ p < 10 mmHg at intervals of 0.01 mmHg"

Same as Table 1 but for the range of (4.0..9.99).step(0.01) and results in mmhg.

Provides:

  • pressure-mmhg

  • geopotential-altitude

Table 4 (mmHg)

Title: "Geopotential altitude as a function of barometric pressure for 10 ⇐ p < 900 mmHg at intervals of 0.1 mmHg"

Same as Table 3 but for the range of (10.0..899.9).step(0.1) and results in mmhg.

Table 5 (hPa) and Table 6 (mmHg)

The difference is Table 5 is in hPa while Table 6 is in mmHg.

Title: "Barometric pressure, in hectopascals, as a function of geopotential altitude for -1000 ⇐ H < +4600 m at intervals of 1m"

Provides:

  • geopotential-altitude

  • pressure-mbar

  • pressure-mmhg

Range of (-1000..4599).step(1).

ISO 2533 ADD 2:1997

Addendum 2 is exactly like ISO 2533:1975 with the tables but extended the tables:

  • 1975’s range is -2km to 80km. 1997 provides -5km to 2km (yes -2km to 2km overlaps…​)

  • 1975 tables only provide H and h in meters. 1997 adds a lookup table of H and h in feet.

ISO 2533 ADD 2:1997 Tables 1 to 3 have height range in meters
(-5000..2000).step(50)
ISO 2533 ADD 2:1997 Tables 4 to 6 have height range in feet
(-16500..-13999).step(250) +
(-14000..104999).step(200) +
(105000..262500).step(500)

Table 1 (-5km to 2km)

Title: "Temperature (T and t), pressure (p), density (p) and acceleration of free fall (g) in terms of geometrical altitude (h) and geopotential altitude (H) — Altitudes in metres"

Exactly same as ISO 2533:1975 Table 5, but with a different height range.

In addition, pressure at mmHg is no longer produced, but the implementation still provides it for completeness.

Table 2 (-5km to 2km)

Title: "Relations of p’pn, p/pn and bar(p/pn), Speed of sound (a), Dynamic viscosity (p), Kinematic viscosity (v) and Thermal conductivity (lambda) in terms of geometrical altitude (h), and geopotential altitude (H) — Altitudes in metres"

Exactly same as ISO 2533:1975 Table 6, but with a different height range.

Table 3 (-5km to 2km)

Title: "Pressure scale height (H_p) Specific weight (gamma), Air number density (n), Mean air-particle speed (v), Air-particle collision frequency (omega) and Mean free path of air particles (l) in terms of geometrical altitude (h) and geopotential altitude (H) — Altitudes in metres"

Exactly same as ISO 2533:1975 Table 7, but with a different height range.

Table 4 (-16.5kft to 262.5kft)

Title: "Temperature (T and t), pressure (p), density (p) and acceleration of free fall (g) in terms of geometrical altitude (h) and geopotential altitude (H) — Altitudes in feet"

Exactly same as ISO 2533:1975 Table 5, but in feet and different range.

Pressure at mmHg is not produced, but the implementation still provides it for completeness.

Table 5 (-16.5kft to 262.5kft)

Title: "Relations of p’pn, p/pn and bar(p/pn), Speed of sound (a), Dynamic viscosity (p), Kinematic viscosity (v) and Thermal conductivity (lambda) in terms of geometrical altitude (h), and geopotential altitude (H) — Altitudes in feet"

Exactly same as ISO 2533:1975 Table 6, but in feet and different range.

Table 6 (-16.5kft to 262.5kft)

Title: "Pressure scale height (H_p) Specific weight (gamma), Air number density (n), Mean air-particle speed (v), Air-particle collision frequency (omega) and Mean free path of air particles (l) in terms of geometrical altitude (h) and geopotential altitude (H) — Altitudes in feet"

Exactly same as ISO 2533:1975 Table 7, but in feet and different range.

Testing

$ rspec

Tests are encoded in spec/fixtures/tests.yml in the following format:

- H: -2000.0
  h: -1999.0
  TK: 301.15
  TC: 28.0
  p_mbar: 1277.74
  p_mmhg: 958.382
  rho: 1.47808
  g: 9.8128
  p_p_n: 1.26103
  rho_rho_n: 1.20659
  root_rho_rho_n: 1.09845
  a: 347.886
  mu: 1.8514e-05
  v: 1.2526e-05
  lambda: 0.026359
  H_p: 8809.5
  gamma: 14.504
  n: 3.0734e+25
  v_bar: 469.18
  omega: 8535100000.0
  l: 549710000.0

Each of these values are associated with a cell in the tables of the source documents.

The only defining value in a tests is H (geopotential altitude). It is used to generate all the other values.

License

Copyright Ribose.

TODO

  • expose this as a plugin to LutaML / Metanorma YAML2text