Skip to content

Draft: Calculate Henry coefficient in H2O_Air with cubic interpolation

Christoph Grüninger requested to merge feature/h20air-henry-cubic into master

Related to issue #1383, I went to the University's library and checked the table in Tchobanoglous & Schroeder (1985) which is given as the source for Finsterle's formula we use.

The Data

Temperature in °C K_H * 1e5 / atm
0 2.31
10 1.82
20 1.51
30 1.30
40 1.15
50 1.06
60 0.99

Page 122, Table 2.15 "Henry's Law Constants for Several Gases that are Slightly Soluble in Water", column "Air". There is a remark that the numbers are calculated based on some other sources, they are not directly measured.

This answers my first question: The valid temperature interval is only from 0°C to 60°C. Above and below we cannot rely on the current implementation!

Checking the formula

With the data points known, I checked how good the interpolation is.
image
Octave code for reproduction:

t=[0:10:60];
kh=[2.31,1.82,1.51,1.3,1.15,1.06,0.99]*1e-5;
t2=[0:0.5:60];
kh_finsterle=(0.8942+1.47*exp(-0.04394*t))*1.E-10*101325;
plot(t,kh,"x",t2,kh_finsterle,"-")

I was surprised how bad the function fit near the ends of the interval.

Alternative fitting functions

I played around with other fitting function to get one with a better fitting. Using Wofram Alpha, I tried exponential, linear, quadratic and cubic fittings. The best was cubic: (-5.55556E-6 * ttt + 0.000895238 * t*t - 0.0556825 * t + 2.30524) * 1e-5 from cubic fit {0,2.31},{10,1.82},{20,1.51},{30,1.3},{40,1.15},{50,1.06},{60,0.99}.
image
Octave code for reproduction:

t=[0:10:60];
kh=[2.31,1.82,1.51,1.3,1.15,1.06,0.99]*1e-5;
t2=[0:0.5:60];
kh_cubic=(-5.55556E-6 * t2.*t2.*t2 + 0.000895238 * t2.*t2 - 0.0556825 * t2 + 2.30524) * 1e-5;
plot(t,kh,"x",t2,kh_cubic,"-")

Conclusions

  1. Please double-check my results and tell me, if I did a stupid mistake.
  2. Using Finsterle's formula is inferior to the cubic fitting function both in terms of accuracy and of computational costs. Though, a performance is not measurable (0,8% speedup for test_md_boundary_darcy2p2c_stokes1p2c_horizontal, if you know a better test case, let me know).
  3. I don't want to get this merge request actually merged. It is contribution to the discussion on how to handle Henry's coefficient. Hopefully we find real measured data over a wider range of temperatures and get a good fit for it. Then we can replace Finsterle's formula from h20_air and only keep it for comparison with older data.

Merge request reports

Loading