### Water Vapor - Formulas

There are many equations to compute the saturation vapor pressure of water depending on just the temperature. Both mcSaturationVaporPressure.pas (written in Pascal and included in the zip file) and mcSaturationVaporPressure.js (for use in web pages) implement 30 of these. (The examples below are in Pascal, FORTRAN, and psuedo-code.)
• 25 are from Holger Vömel (CIRES, University of Colorado, Boulder).
• The Antoine equation
• The August equation
• Two are used in the GISS Model-E Global Warming simulator
• One is from a text book
Placing these algorithms in a separate module simplifies reusing them in various programs and guarantees that the computations will be the same.

The formulas are used in the following web applications

Calibration Points over Water | Antoine and August equations | GISS Model-E | Seinfeld and Pandis | The other 25 equations

### Calibration Points over Water

Version 1.2 of my programs provide 30 saturation water vapor formulas.
• 11 over ice
• 19 over water
Some produce results in mbar (hPa) and others in mmHg (millimeters of mercury). Some raise 10 to an exponent, and other use base-e. However, these are minor differences and the conversions are fairly trivial.

Many of the formulas have the same (or can be reduced to the same) basic structure, but with different coefficients.

One thing I found interesting is that the calibration points vary. Sometimes a temperature is explicitly used, other times it is the pressure. Occasionally, it is both. The following table captures some of the variations in the "over water" algorithms.

Formula structure Algorithm Year Calibration
Temperature
Calibration
Pressure
Temp Comment
log(P) = A + B/T August_equation 1825 373.1636 1013.25   For GISS_AR4, only the pressure was specified in the formula and
the "calibration temperature" was then computed from that.

For the other 3, there are no obvious calibration points - For August and Antoine, I simply selected 1 atm and computed the temperature.

The Marti & Mauersberger formula is the only one in this table over ice only. It is included to show its structure. For a "calibration point", I selected 273.15K and computed the pressure.

Marti & Mauersberger 1993 273.15 6.10868
GISS_AR4 ?? 273.16 6.108
log(P) = A + B/(C+T) Antoine_equation 1888 373.1469 1013.25
log(P) = A + B*T/(C+T) Bolton 1980 273.15 6.112   Both the temperature and pressure are explicitly set
Of these, only MagnusTetens uses the triple point, the rest use 0.00°C
CIMO 2008 273.15 6.112
Buck_original 1981 273.15 6.1121
MagnusTetens 1967 273.16 6.1078
log(P) = A + (B*T + C*T^2)/(D+T) Buck_manual 1996 273.15 6.1121
Log(P) = 4th order power series Seinfeld_Pandis 2006 373.15 1013.25
Complex MurphyKoop 2005 273.16 6.11657   No obvious calibration points
The pressure is simply calculated from the triple point
Preining 2002 273.16 6.107
HylandWexler 1983 273.16 6.11657
Sonntag 1994 273.16 6.11657 ITS-90
Wexler 1977 273.16 6.0864 IPTS-68
IAPWS 1995 647.096 22.064E4 ITS-90 Temperature and Vapor pressure at the critical point
Fukuta 2003 373.16 1013.246   These values are used in the base equation, but the Fukuta low temperature corrections do not give a valid result at that temperature - the notes say 373.16 K = steam point
WMO2000 2000 273.16 6.11139   Pressure computed from temperature
These formulas are identical except for the sign of one exponent.
WMO2000 is the correct version.
WMO_Goff 1957
GoffGratch 1946 373.16 1013.246   The notes say 373.16 K = steam point temperature
From Review of the vapour pressures of ice and supercooled water for atmospheric applications by D. M. Murphy and T. Koop, 29 Dec 2006
 The vapour pressure of both ice and liquid water at the triple point is Pt = 611.657 ± 0.01 Pa at temperature Tt = 273.16 K (Guildner et al. 1976, Vapor pressure of water at its triple point. J. Res. Natl. Bur. Stand., 80A, 505-521)
Though the relation is not exact, the following is close.
 ```273.16 K / 6.11657 mbar -> 273.15 K / 6.112 mbar ```

Because the standard temperature scale was redefined in 1990, the current (ITS-90) steam point temperature is 373.124 K (99.974°C) at 1 atm (1013.25 mbar), not 373.15 K (100°C - the old IPTS-68 standard), and not 373.16 K (used in 2 of the equations).

Most of the dates come from Holger Vömel. However, those appear to reflect when the coefficients were published, not when the equation was first used. For instance, the MagnusTetens equation was published in 1967, Tetens first published in 1930, and the original Magnus equation dates to 1844. Also, several references provide dates one year earlier than Vömel, not sure why.

Uncertainty in the generation of humidity (page 22 and Table 12) explains that Wexler (1976 over water, 1977 over ice) used IPTS-68 and that Sonntag (1970) updated Wexler's equations to ITS-90.

Besides the 4 algorithms based on the Magnus equation listed above, "Improved Magnus` form approximation of saturation vapor pressure" lists additional coefficients and then computes several new coefficients.

### Antoine and August equations

The Antoine and August equations are fairly useless (rough approximations - low accuracy), but of historical importance. I included these because
• There was a recent Nature article (22 April 2014) that used the Antoine equation
• NASA's GISS Model-E uses the August equation, but with different coefficients
 ```log10Pv = A - B/(C + T) // Antoine equation 1888 log10Pv = A - B/T // August equation ~1825 ```

Ernst Ferdinand August (1795-1870) coined the term psychrometer in 1818. In 1825, he invented a wet bulb / dry bulb psychrometer and produced a formula to compute relative humidity from those temperatures. From the references, it is not clear when he produced the saturation water vapor formula described here, but it had to be before his death (1870). The date in the table above (1825) should be considered an approximate guess based on the data available to me. The coefficients are fairly difficult to locate. The best I could do was Physics Related to Anesthesia, By John D. Current, M.D. - the coefficients (on page 189) are for natural log, not base ten. The same coefficients are in wikipedia, but without a reference. This equation has the same form as the Clausius-Clapeyron relation (~1850) assuming constant enthalpy (which implies constant specific heat) over the temperature range.

The Antoine equation (Antoine, C. - 1888) is based on the Clausius-Clapeyron relation (~1850). The coefficients are available for various substances (not just water) and they normally produce results as mmHg (torr). The program implements the algorithm with a single set of coefficients calibrated for the range of 0 to 100°C. To improve accuracy, NIST provides new coefficients about every 30°C.

This is the source code used in mcSaturationVaporPressure.pas - they both convert from mmHg to mbar.

 ```vpf_Antoine_equation: begin // Source : http://en.wikipedia.org/wiki/Antoine_equation 05-05-14 Psat := 1013.25/760 * power(10,(8.07131 - 1730.63/(233.426 + T_C))); end; vpf_August_equation: begin // Source : http://en.wikipedia.org/wiki/Antoine_equation // Source : Physics Related to Anesthesia // By John D. Current, M.D. // http://books.google.com/books?id=RgcpOQ444vgC&pg=PA184&lpg=PA184 // the coefficients are on page 189 // // http://en.wikipedia.org/wiki/Vapour_pressure_of_water 05-05-14 Psat := 1013.25/760 * exp(20.386 - 5132 / T_K); end; ```
Unfortunately, the best coefficients I could find are from wikipedia.

### GISS Model-E

GISS Model-E - the NASA climate model used for IPCC AR4 and AR5 - contains the following code to compute the saturation mixing ratio. (Reference QSAT function in Model-E's UTILDBL.f)
 ```GISS Model-E formula // This is what is in the code - reformatted for readability QSAT = 6.108 * MRAT * EXP(Latent_heat * (7.93252E-6 - 2.166847E-3/temp_K))/Pressure Latent_heat = 2.834E6 ice = 2.5 E6 water MRAT = (mwat/mair) // ratio of molecular weight of water over molecular weight of air // used to convert mixing ratio to relative heat content QSAT = Partial Pressure * MRAT / Total Pressure // Partial pressure (mbar) at saturation - QSAT with MRAT and Pressure removed Psat = 6.108 * EXP(Latent_heat * (7.93252E-6 - 2.166847E-3/T_K)) ```
After a little algebra, this is the code that computes the saturation partial pressure in mbar.
 ```Psat := 6.108 * exp(2.5E6 * (7.93252E-6 - 2.166847E-3/T_K)) // Latent_heat water = 2.5E6 Psat := 6.108 * exp(2.834E6*(7.93252E-6 - 2.166847E-3/T_K)) // Latent_heat ice = 2.834E6 ```

The following compares the "over water" Model-E equation with the August equation. (Code from the mcSaturationVaporPressure unit.)

 ```Psat := 6.108 * exp(2.5E6 * (7.93252E-6 - 2.166847E-3/T_K)); // GISS Model-E AR4 & AR5 Psat := 1013.25/760 * exp(20.386 - 5132 / T_K); // August equation ```
The coefficients are significantly different because one produces results in mbar and the other in torr (mmHg). Using a little algebra and rearranging the terms
 ```2.5E6 * 7.93252 E-6 = 19.8313 2.5E6 * 2.166847E-3 = 5417.1175 ln (6.108) = 1.8096 ln (1013.25/760) = 0.2876 ln (6.108) + 19.8313 = 21.6409 ln (1013.25/760) + 20.386 = 20.6736 Psat := exp(21.6409 - 5417.1175 / T_K); // GISS Model-E AR4 & AR5 Psat := exp(20.6736 - 5132 / T_K); // August equation ```
Obviously, the 2 equations have the same form, though the coefficients are still a bit different.

The Model-E saturation partial pressure at the triple point (6.108 mbar) is similar to that used by MagnusTetens (1967 - 6.1078 mbar) and Preining (2002 - 6.107 mbar). Even though the current (1976) standard is 6.11657 mbar at the triple point, a 2005 JPL paper claims

 the saturation partial pressure of water vapor (over water) is 6.108 mbar at 0°C
Whether those values are close, or not, depends on the application .. but I expect better from both JPL and NASA. Either use the "correct" value, or explicitly say why you don't. At any rate, the following shows that the difference may, or may not, matter.
 ```IR Absorption (computed with another program) At 1013.25 mbar, 60.00 %RH, 1 km thick layer, 288.15 K (15°C) - surface MurphyKoop 10,101 ppm 208.17 W/m2 GISS_AR4 10,148 ppm 208.31 W/m2 At 1013.25 mbar, 60.00 %RH, 1 km thick layer, 310.93 K (37.78°C 100°F) - surface, hot MurphyKoop 38,808 ppm 336.78 W/m2 GISS_AR4 40,229 ppm 338.17 W/m2 At 500 mbar 100 %RH, 1 km thick layer, 251.8 K (-21.20°C) - mid-troposphere MurphyKoop 2,233 ppm 73.400 W/m2 GISS_AR4 2,272 ppm 73.669 W/m2 At 226.06 mbar 100 %RH, 1 km thick layer, 216.5 K (-56.65°C) - tropopause - 11 km MurphyKoop 126 ppm 12.343 W/m2 - using over water formulas GISS_AR4 151 ppm 13.260 W/m2 Using the over ice formulas, both algorithms give identical results at -56.65°C GISS_AR4 75 ppm 9.9554 W/m2 ```
Alduchov, et al explain that thermometer values are rounded to the nearest tenth of a degree and, therefore, formulas with enough overlap due to the temperature round off error are basically the same. At 15C, that is about 108 ppm or 0.32%RH.

In the source code, NASA did not include the original date that they started using the algorithm, or a reference. (In other parts of the code, they give both.) Based on other information, such as dates in other source modules, their algorithm, with those constants, was probably first used from somewhere between 1960 and 1990 - but that is still a guess. Both algorithms were used in both AR4 and AR5 - 2007 and 2014.

By the way, this is the second algorithm in NASA's Model-E that I have had problems with - the version of the model used for IPCC AR4 used the wrong algorithm to compute the position of the Earth with respect to the Sun! (The correct algorithm was used for AR5.)

### Seinfeld and Pandis

This equation is from Atmospheric Chemistry and Physics by Seinfeld and Pandis (2006). It is obviously calibrated for a boiling point of 100°C (373.15 K) at 1 atm (1013.25 mbar).

 ```vpf_Seinfeld_Pandis: begin // over water only // Source : Atmospheric Chemistry and Physics by Seinfeld and Pandis a := 1 - (373.15/T_K); Psat := 1013.25 * exp((13.3185 - (1.97 + (0.6445 + (0.1299*a))*a)*a)*a); end; ```
I have additional textbooks, each with its own "best algorithm". I chose this one because I used it in an earlier program before I knew there were so many algorithms and because it clearly intersects the pre-1990 boiling point.

### The other 25 equations

I have provided detailed discussions of 5 equations above, including the actual code used in mcSaturationVaporPressure.pas. The details of the other 25 are provided in the excellent paper by Holger Vömel (CIRES, University of Colorado, Boulder).

Author: Robert Clemenzi