diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-03-02 13:49:59 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-03-02 18:08:18 -0800 |
commit | 3f30832471023a60bec54a9eb371342aaba0e94e (patch) | |
tree | 4213ddb7979bb4c29798de78696fcf20c47eba67 /subsurface-core/dive.c | |
parent | 713321665396ff17593f1871771eb1207f631289 (diff) | |
download | subsurface-3f30832471023a60bec54a9eb371342aaba0e94e.tar.gz |
gas model: split up gas compressibility into a file of its own
The gas compressibility is such a specialized thing that I really prefer
having it separate.
This keeps Robert's Redlich-Kwong equation as-is, but let's experiment
with other models soon...
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-core/dive.c')
-rw-r--r-- | subsurface-core/dive.c | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/subsurface-core/dive.c b/subsurface-core/dive.c index 4108c0942..083767582 100644 --- a/subsurface-core/dive.c +++ b/subsurface-core/dive.c @@ -846,49 +846,6 @@ static void update_min_max_temperatures(struct dive *dive, temperature_t tempera } } -/* - * This gives an interative solution of hte Redlich-Kwong equation for the compressibility factor - * according to https://en.wikipedia.org/wiki/Redlich–Kwong_equation_of_state - * in terms of the reduced temperature T/T_crit and pressure p/p_crit. - * - * Iterate this three times for good results in our pressur range. - * - */ - -double redlich_kwong_equation(double t_red, double p_red, double z_init) -{ - return (1.0/(1.0 - 0.08664*p_red/(t_red * z_init)) - - 0.42748/(sqrt(t_red * t_red * t_red) * ((t_red*z_init/p_red + 0.08664)))); -} - -/* - * At high pressures air becomes less compressible, and - * does not follow the ideal gas law any more. - */ -#define STANDARD_TEMPERATURE 293.0 - -double gas_compressibility_factor(struct gasmix *gas, double bar) -{ - /* Critical points according to https://en.wikipedia.org/wiki/Critical_point_(thermodynamics) */ - - double tcn2 = 126.2; - double tco2 = 154.6; - double tche = 5.19; - - double pcn2 = 33.9; - double pco2 = 50.5; - double pche = 2.27; - - double tc, pc; - - tc = (tco2 * get_o2(gas) + tche * get_he(gas) + tcn2 * (1000 - get_o2(gas) - get_he(gas))) / 1000.0; - pc = (pco2 * get_o2(gas) + pche * get_he(gas) + pcn2 * (1000 - get_o2(gas) - get_he(gas))) / 1000.0; - - return (redlich_kwong_equation(STANDARD_TEMPERATURE/tc, bar/pc, - redlich_kwong_equation(STANDARD_TEMPERATURE/tc, bar/pc, - redlich_kwong_equation(STANDARD_TEMPERATURE/tc, bar/pc,1.0)))); -} - int gas_volume(cylinder_t *cyl, pressure_t p) { double bar = p.mbar / 1000.0; |