Vapor pressure correction best practices

I’ve been struggling to interpret the best practice in use of two different water vapor pressure parameterizations as they pertain to CO2SYS and related estimation routines (my TRACE in particular). Hopefully some more experienced practitioners can point me in the right direction.

The Problem

There are two water vapor pressure parameterizations given in the literature and implemented in various calculation routines:

Weiss & Price et al. (1980) gave a water vapor pressure parameterization based upon work from 1946 and 1954 and used it to transform a solubilty coefficient into a solubility function in moist air. This correction continued to be used in their other trace gas solubility studies. This is the water vapor pressure function used by CO2SYS (Python, MATLAB) and Seacarb. There is some uncertainty in temperature scales expressed in the PyCO2SYS comments on the vpfactor function: “This may be on IPTS-29 since they didn’t mention the temperature scale, and the data of Goff and Gratch came before IPTS-48.”

Dickson et al. (2007) (the “Best Practices” guide) gave a formula consistent with the IAPWS water thermodynamic equation of state (and by extension TEOS-10). This is the form used by PySeaFlux (though both formulae are implemented in its code) and other recent pCO2 air-sea flux products.

Consequences

It appears (from my asking around in the community) that many practitioners in the CFC/N2O/SF6 realm use Ray Weiss’ water vapor pressure exclusively, while pCO2 air-sea flux researchers prefer Andrew Dickson’s. This introduces a discrepancy vs. CO2SYS, which continues to use the older formulation. Why?

Of more personal interest is my use in TRACE, in converting atmospheric mixing fractions to surface boundary functions. Would stitching together the newer water vapor pressure equation with the older solubility coefficient create a Franken-solubility function?

Estimated Impact

I plotted ΔpH2O over a reasonable range (ignoring temperature scale conversions):

Differences in calculated water vapor pressure seem small. Even in 40C waters I find c. 120 μatm ΔpH2O. In the case of converting xCO2 = 400 ppm to partial pressure, this would yield a bias of around 0.05 μatm pCO2. I worry this apparently tiny bias may, in aggregate, yield significant differences in some use cases.

I welcome any input. Hopefully we can erase some of the confusion and discrepancy among gas equilibrium works!

I can’t comment on the science, but I will point out that the ‘bible’ paper for ship-based pCO2 measurements also uses Weiss and Price: Pierrot et al. 2009, doi 10.1016/j.dsr2.2008.12.005

1 Like

Thanks for bringing this up, @Daniel_Sandborn, I wasn’t aware of this discrepancy. I guess the “why” is that CO2SYS predates the approach given in the Dickson best practice guide.

I think you already know this but just to confirm, in CO2SYS calculations, the vapour pressure factor is used only for converting dry air mole fractions (xCO2) into partial pressures and fugacities, so this issue is relevant only if xCO2 is provided or requested by the user.

I did some digging into the Weiss (1974) paper on CO2 solubility to try to figure out what this means for compatibility. I must say I found it hard to interpret some of what Weiss writes; I must lack some of the background knowledge and context he assumes. But my as best as I understand it, I don’t think there is a compatibility issue here. My reading is that a vapour pressure correction was not applied to the data, which would mean that the K0 value is not tied to any particular vapour pressure calculation. And even if it were, then because in the Weiss study the correction would be applied to an otherwise 100% CO2 gas phase, I think it would have a much smaller percentage effect than when applied to Earth surface CO2 levels, which might also effectively decouple it from any particular parameterisation.

Again I want to emphasise that this is stretching my comfort zone and I’d be very happy to be corrected by someone who has a stronger background in this stuff.

What I can (and will) fairly easily do is add the newer approach as an option to PyCO2SYS v2. I’m not sure whether it should become the default option - v2 is not fully released yet, and the major version increment does give the opportunity to make breaking changes like this. Opinions welcomed!

1 Like