summaryrefslogtreecommitdiffstats
path: root/subsurface-core/gas-model.c
diff options
context:
space:
mode:
Diffstat (limited to 'subsurface-core/gas-model.c')
-rw-r--r--subsurface-core/gas-model.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/subsurface-core/gas-model.c b/subsurface-core/gas-model.c
index 81765e003..ad1160f3b 100644
--- a/subsurface-core/gas-model.c
+++ b/subsurface-core/gas-model.c
@@ -26,36 +26,39 @@
double gas_compressibility_factor(struct gasmix *gas, double bar)
{
static const double o2_coefficients[3] = {
- -0.00071809207370164567,
- +0.00000281852572807643,
- -0.00000000150290620491
+ -7.18092073703e-04,
+ +2.81852572808e-06,
+ -1.50290620492e-09
};
static const double n2_coefficients[3] = {
- -0.00021926035329221337,
- +0.00000292844845531647,
- -0.00000000207613482075
+ -2.19260353292e-04,
+ +2.92844845532e-06,
+ -2.07613482075e-09
};
static const double he_coefficients[3] = {
- +0.00047961098687979363,
- -0.00000004077670019935,
- +0.00000000000077707035
+ +4.87320026468e-04,
+ -8.83632921053e-08,
+ +5.33304543646e-11
};
- double o2, he;
+ int o2, he;
double x1, x2, x3;
double Z;
- o2 = get_o2(gas) / 1000.0;
- he = get_he(gas) / 1000.0;
+ o2 = get_o2(gas);
+ he = get_he(gas);
x1 = bar; x2 = x1*x1; x3 = x2*x1;
Z = virial_m1(o2_coefficients, x1, x2, x3) * o2 +
virial_m1(he_coefficients, x1, x2, x3) * he +
- virial_m1(n2_coefficients, x1, x2, x3) * (1.0 - o2 - he);
+ virial_m1(n2_coefficients, x1, x2, x3) * (1000 - o2 - he);
/*
* We add the 1.0 at the very end - the linear mixing of the
* three 1.0 terms is still 1.0 regardless of the gas mix.
+ *
+ * The * 0.001 is because we did the linear mixing using the
+ * raw permille gas values.
*/
- return Z + 1.0;
+ return Z * 0.001 + 1.0;
}