Draft: Calculate Henry coefficient in H2O_Air with cubic interpolation
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.
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}
.
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
- Please double-check my results and tell me, if I did a stupid mistake.
- 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). - 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.