Breakthroughs in Atmosphere#

Atmospheric science began with the discovery that air has weight. The barometer of the 1640s led to hydrostatic balance and the logarithmic fall of pressure with height, and the gas laws of the next two centuries added adiabatic cooling, partial pressures and the saturation of water vapour. Rotation entered with Hadley’s trade winds and Buys Ballot’s rule. After 1900, balloon soundings revealed the stratosphere, and Bjerknes recast forecasting as a problem in physics. Richardson’s failed hand forecast and the stability and wave theories of the 1920s and 1930s prepared the barotropic vorticity forecast that ran on the ENIAC in 1950. This chronology traces the results behind earthsciencekit.atmosphere. Every example uses deterministic synthetic inputs; none inverts real observations.

1643 – Torricelli’s Barometer#

Evangelista Torricelli filled a glass tube with mercury and inverted it in a dish. The column fell to about 76 cm and left an empty space above it. He concluded that the weight of the surrounding air holds the column up: “we live submerged at the bottom of an ocean of the element air”. A water column would have to be 13.6 times taller, about 10 m.

Implementation: barometer_column_height() (new).

References: E. Torricelli, letter to M. Ricci, 11 June 1644, in Opere di Evangelista Torricelli, vol. 3, ed. G. Loria and G. Vassura (Faenza, 1919): 186-188.

Torricelli’s barometer (1643)

Torricelli's barometer (1643)

1648 – Pascal and Périer on the Puy de Dôme#

If the air’s weight holds up the mercury, the column should be shorter on a mountain. At Blaise Pascal’s request, Florin Périer carried a barometer up the Puy de Dôme on 19 September 1648. About 500 toises above Clermont, the column had fallen by 3 inches and 1.5 lines, while a control barometer in the town did not change. An isothermal hydrostatic column reproduces the drop to within a millimetre.

Implementation: barometric_pressure().

References: B. Pascal, Récit de la grande expérience de l’équilibre des liqueurs (Paris: Charles Savreux, 1648).

Pascal and Périer on the Puy de Dôme (1648)

Pascal and Périer on the Puy de Dôme (1648)

1686 – Halley’s Barometric Altitude#

Edmond Halley combined Boyle’s law with the weight of the air and showed that height above the ground grows with the logarithm of the pressure ratio. Equal ratios of pressure mark equal steps of height, and the step for a factor e is the scale height R T / g, about 8 km. The inverse of the barometric law is the barometric altimeter.

Implementation: scale_height().

References: E. Halley, “A discourse of the rule of the decrease of the height of the mercury in the barometer, according as places are elevated above the surface of the earth,” Philosophical Transactions of the Royal Society of London 16 (1686): 104-116.

Halley’s barometric altitude (1686)

Halley's barometric altitude (1686)

1735 – Hadley’s Circulation#

George Hadley explained the trade winds. Air heated near the equator rises and flows poleward aloft, and surface air flows back towards the equator. The Earth’s surface moves eastward faster near the equator than at the latitude the returning air came from, so that air lags behind and blows from the east. The modern form of the deflection is the Coriolis parameter f = 2 Omega sin(phi).

Implementation: coriolis_parameter(). The example checks that a ring of air conserving its angular momentum gains westerly wind at the rate f + u tan(phi) / a.

References: G. Hadley, “Concerning the cause of the general trade-winds,” Philosophical Transactions of the Royal Society of London 39 (1735): 58-62.

Hadley’s circulation (1735)

Hadley's circulation (1735)

1802 – Dalton’s Partial Pressures#

John Dalton found that each gas in a mixture exerts the pressure it would exert alone in the same volume, and that the total pressure is the sum. Water vapour in air is therefore an independent ideal gas with its own partial pressure, and moisture can be measured as the ratio of vapour to dry-air mass.

Implementation: mixing_ratio() and specific_humidity(). The example checks both against the partial densities of the two gases.

References: J. Dalton, “Experimental essays on the constitution of mixed gases; on the force of steam or vapour from water and other liquids in different temperatures, both in a Torricellian vacuum and in air; on evaporation; and on the expansion of gases by heat,” Memoirs of the Literary and Philosophical Society of Manchester 5 (1802): 535-602.

Dalton’s partial pressures (1802)

Dalton's partial pressures (1802)

1823 – Poisson’s Adiabat#

Siméon Denis Poisson showed that a gas compressed or expanded without heat exchange keeps T p^(-R/c_p) constant. Combined with hydrostatic balance, a rising dry parcel cools at g / c_p, close to 10 K per kilometre.

Implementation: dry_adiabatic_lapse_rate() and simulate_dry_ascent(), which integrates the temperature and pressure of a parcel rising at constant speed. The example checks the linear cooling and the constant potential temperature.

References: S. D. Poisson, “Sur la chaleur des gaz et des vapeurs,” Annales de Chimie et de Physique 23 (1823): 337-352.

Poisson’s adiabat (1823)

Poisson's adiabat (1823)

1844 – Magnus’s Vapour-Pressure Formula#

Gustav Magnus measured the pressure of water vapour in equilibrium with liquid water from below freezing to boiling, and fitted it with an exponential in temperature. Clausius derived the same shape from thermodynamics in 1850. The saturation pressure rises by 6-7% per kelvin, so warm air can hold much more water than cold air.

Implementation: saturation_vapor_pressure(), in the constant-latent-heat Clausius-Clapeyron form, and relative_humidity(). The example compares it with a modern Magnus fit.

References: G. Magnus, “Versuche über die Spannkräfte des Wasserdampfs,” Annalen der Physik und Chemie 137 (1844): 225-247.

Magnus’s vapour-pressure formula (1844)

Magnus's vapour-pressure formula (1844)

1857 – Buys Ballot’s Law#

Christophorus Buys Ballot compared simultaneous barometer readings and winds across the Netherlands. In the Northern Hemisphere, with your back to the wind, low pressure is on your left. The wind blows along the isobars, not down the pressure gradient: it is close to geostrophic balance between the pressure gradient and the Coriolis force.

Implementation: geostrophic_speed(). The example checks that the wind round a low is perpendicular to the gradient and keeps the low on its left.

References: C. H. D. Buys Ballot, “Note sur le rapport de l’intensité et de la direction du vent avec les écarts simultanés du baromètre,” Comptes Rendus de l’Académie des Sciences 45 (1857): 765-768.

Buys Ballot’s law (1857)

Buys Ballot's law (1857)

1888 – von Bezold’s Potential Temperature#

Wilhelm von Bezold named the temperature a sample of air would reach if brought adiabatically to a standard pressure. It does not change when dry air rises or sinks, so it labels air masses and measures static stability: the column is stable where it increases with height.

Implementation: potential_temperature() and temperature_from_potential().

References: W. von Bezold, “Zur Thermodynamik der Atmosphäre,” Sitzungsberichte der Königlich Preussischen Akademie der Wissenschaften zu Berlin (1888): 485-522.

von Bezold’s potential temperature (1888)

von Bezold's potential temperature (1888)

1902 – Teisserenc de Bort’s Stratosphere#

Léon Teisserenc de Bort launched hundreds of unmanned sounding balloons from his observatory at Trappes. Above about 11 km the temperature stopped falling. Richard Assmann reported the same from Berlin that year. The layer above was named the stratosphere and its lower boundary the tropopause.

Implementation: two_layer_temperature() (new). The example integrates hydrostatic balance through the profile and recovers the standard-atmosphere pressure at 11 km.

References: L. Teisserenc de Bort, “Variations de la température de l’air libre dans la zone comprise entre 8 km et 13 km d’altitude,” Comptes Rendus de l’Académie des Sciences 134 (1902): 987-989.

Teisserenc de Bort’s stratosphere (1902)

Teisserenc de Bort's stratosphere (1902)

1904 – Bjerknes’s Forecasting Programme#

Vilhelm Bjerknes argued that forecasting is an initial-value problem of mechanics and physics. Seven variables (pressure, density, temperature, humidity and three wind components) obey seven equations: three of motion, continuity, the equation of state, and the conservation of heat and of water. The equation of state is the diagnostic link, and with the virtual temperature it applies to moist air.

Implementation: dry_air_density() and virtual_temperature(). The example checks that the moist density equals the sum of Dalton’s partial densities.

References: V. Bjerknes, “Das Problem der Wettervorhersage, betrachtet vom Standpunkte der Mechanik und der Physik,” Meteorologische Zeitschrift 21 (1904): 1-7.

Bjerknes’s forecasting programme (1904)

Bjerknes's forecasting programme (1904)

1920 – Richardson’s Turbulence Criterion#

Lewis Fry Richardson asked when wind shear can keep a stably stratified layer turbulent. Turbulence must lift dense air against buoyancy, at a rate set by N^2, with energy drawn from the shear. The ratio of the two, now called the Richardson number, decides the outcome. Miles and Howard proved in 1961 that a stratified shear flow can be unstable only where it falls below 1/4.

Implementation: richardson_number() (new).

References: L. F. Richardson, “The supply of energy from and to atmospheric eddies,” Proceedings of the Royal Society of London A 97 (1920): 354-373.

Richardson’s turbulence criterion (1920)

Richardson's turbulence criterion (1920)

1922 – Richardson’s Numerical Forecast#

Richardson then carried out Bjerknes’s programme by hand. From observations of 20 May 1910 he computed a six-hour forecast for two grid points over Germany and predicted a surface pressure rise of 145 hPa. The error came mostly from the divergence: the pressure tendency is the column-mean divergence times the surface pressure, and small errors in the winds give a column mean far larger than the true one.

Implementation: surface_pressure_tendency() (new).

References: L. F. Richardson, Weather Prediction by Numerical Process (Cambridge: Cambridge University Press, 1922).

Richardson’s numerical forecast (1922)

Richardson's numerical forecast (1922)

1925 – Väisälä and Brunt’s Buoyancy Frequency#

Vilho Väisälä, and independently David Brunt in 1927, showed that a parcel displaced vertically in stable air oscillates about its level with angular frequency N = sqrt(g / theta * dtheta/dz). In the troposphere the period is about ten minutes. Where N^2 is negative the parcel accelerates away instead.

Implementation: brunt_vaisala_squared(). The example integrates the parcel equation and recovers the period.

References: V. Väisälä, “Über die Wirkung der Windschwankungen auf die Pilotbeobachtungen,” Commentationes Physico-Mathematicae 2, no. 19 (1925); D. Brunt, “The period of simple vertical oscillations in the atmosphere,” Quarterly Journal of the Royal Meteorological Society 53 (1927): 30-32.

Väisälä and Brunt’s buoyancy frequency (1925)

Väisälä and Brunt's buoyancy frequency (1925)

1939 – Rossby’s Planetary Waves#

Carl-Gustaf Rossby explained the slow drift of the large troughs and ridges in the westerlies. Because the Coriolis parameter grows northward at the rate beta, a vorticity wave moves westward relative to the wind at beta / k^2. Long waves are stationary or move westward, and a westerly U has the stationary wavelength 2 pi sqrt(U / beta).

Implementation: rossby_wave_speed() (new) and rossby_number(), which confirms that these waves are close to geostrophic balance.

References: C.-G. Rossby and collaborators, “Relation between variations in the intensity of the zonal circulation of the atmosphere and the displacements of the semi-permanent centers of action,” Journal of Marine Research 2 (1939): 38-55.

Rossby’s planetary waves (1939)

Rossby's planetary waves (1939)

1950 – Charney, Fjørtoft and von Neumann’s ENIAC Forecast#

Jule Charney, Ragnar Fjørtoft and John von Neumann ran the first computer weather forecasts on the ENIAC. They forecast only the vorticity of a nondivergent barotropic flow. That equation filters out the gravity waves and divergence errors that ruined Richardson’s forecast, and its 24-hour forecasts of the 500 hPa flow had realistic skill.

Implementation: simulate_barotropic_vorticity() (new), a pseudo-spectral integration on a doubly periodic beta plane. The example checks that a single mode moves at Rossby’s speed and that a mix of modes keeps its enstrophy.

References: J. G. Charney, R. Fjørtoft and J. von Neumann, “Numerical integration of the barotropic vorticity equation,” Tellus 2 (1950): 237-254.

Charney, Fjørtoft and von Neumann’s ENIAC forecast (1950)

Charney, Fjørtoft and von Neumann's ENIAC forecast (1950)

See also#