GLEON / LakeMetabolizer

Collection of Lake Metabolism Functions
17 stars 10 forks source link

Pressure-based correction for O2.sat #102

Closed aappling-usgs closed 9 years ago

aappling-usgs commented 9 years ago

The literature gives a few ways to correct O2.sat for barometric pressure. In general, these follow the form:

O2.sat.corrected = O2.sat(from garcia, weiss, etc.) * press.cor

where the form of press.cor is what varies. Staehr et al. 2010 cite USGS memos #81.11 and #81.15 (both 1981) for these two options:

press.corr <- (baro * 0.0987 - 0.0112)/100 # baro is pressure in millibars
press.corr <- (0.0000005 * altitude^2 - 0.0118 * altitude + 99.979)/100

while USGS memo #81.11 1981 and #81.15 1981 (http://water.usgs.gov/admin/memo/QW/qw81.11.html, http://water.usgs.gov/admin/memo/QW/qw81.15.html) give the following equations, where

u is the vapor pressure of water calculated from an empirical equation derived from the Handbook of Chemistry and Physics (Chemical Rubber Company (Cleveland, Ohio, 1964)

DO' = DO (P-u/760-u) # DO' = saturation when P=true pressure (mmHg), DO = saturation when P=760
log u = 8.10765 -  1750.286 / (235 + t) # t is temperature in degrees C, log appears to be log10

I started this conversation by email and received endorsement for the USGS #81.11 option from @robohall yesterday.

If P' is in millibars (whereas P was in mmHg), the USGS #81.11 option becomes

DO' = DO * (P' * 0.750061683 - u) / (760 - u) # 0.750061683 mmHg/mb

Using this modification, I can come close but cannot fully recover the Staehr et al. form from the USGS #81.11 by algebra. Here's the closest I get:

DO' = DO * (0.0987 P' - 0.1316*u)/(100 - 0.1316*u)

For values of t from 0 to 40 degrees C, 0.1316*u ranges from 0.60 to 7.28, suggesting to me that 0.1316*u cannot plausibly be replaced by 0 in the denominator or by 0.0112 in the numerator.

For the pressure-based correction in o2.at.sat.base(), I therefore recommend a switch from the Staehr et al. 2010 form to these equations:

u = 10 ^ (8.10765 - 1750.286 / (235 + t)) # t is temperature in degrees C, log appears to be log10
DO' = DO * (P'*0.750061683 - u) / (760 - u) # 0.750061683 mmHg/mb

If it sounds good to you LakeMetabolizer authors, I can include these changes, with help file notes, in a pull request today.

aappling-usgs commented 9 years ago

@robohall, @rBatt, @lawinslow - question for you all: Is the relevant temperature for calculating u the air temperature or the water temperature? If it's air temperature, when is the water temperature a sufficient proxy, and when should we use something else? If something else, what? (The u equation appears to be a version of the Antoine equation for vapor pressure of water - see https://en.wikipedia.org/wiki/Vapour_pressure_of_water. I suspect that this equation assumes equal temperatures of air and water, but we probably don't have that in real aquatic systems)

lawinslow commented 9 years ago

My initial thought is that with all that original work, it was the temperature of the whole system of water and air. They likely didn't make a distinction. Real world is far from the lab ideal where these equations were parameterized, but if I had to guess, water temperature is far more indicative due to water's high density and thus it would dominate the temperature of the immediate air-water boundary.

I'd be curious what others thought. @jzwart

robohall commented 9 years ago

I think you are right; water will control air temp at the air water boundary, so water temp it is.

I agree with this formulation for pressure corrected sat:

u = 10 ^ (8.10765 - 1750.286 / (235 + t)) # t is temperature in degrees C, log appears to be log10 DO' = DO * (P'*0.750061683 - u) / (760 - u) # 0.750061683 mmHg/mb

On Aug 28, 2015, at 10:36 AM, Luke Winslow notifications@github.com<mailto:notifications@github.com> wrote:

My initial thought is that with all that original work, it was the temperature of the whole system of water and air. They likely didn't make a distinction. Real world is far from the lab ideal where these equations were parameterized, but if I had to guess, water temperature is far more indicative due to water's high density and thus it would dominate the temperature of the immediate air-water boundary.

I'd be curious what others thought. @jzwarthttps://github.com/jzwart

— Reply to this email directly or view it on GitHubhttps://github.com/GLEON/LakeMetabolizer/issues/102#issuecomment-135827257.

aappling-usgs commented 9 years ago

Thanks - I'll use water temperature in my PR.