VPM-B uses the Schreiner rather than Buhlmann value of water vapour pressure
Signed-off-by: Rick Walsh <[email protected]> --- deco.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deco.c b/deco.c index a9dbf4c..2175c65 100644 --- a/deco.c +++ b/deco.c @@ -116,6 +116,7 @@ const double buehlmann_He_factor_expositon_one_second[] = { const double conservatism_lvls[] = { 1.0, 1.05, 1.12, 1.22, 1.35 }; #define WV_PRESSURE 0.0627 // water vapor pressure in bar +#define WV_PRESSURE_SCHREINER 0.0487 // water vapor pressure in bar #define DECO_STOPS_MULTIPLIER_MM 3000.0 #define NITROGEN_FRACTION 0.79 @@ -270,7 +271,7 @@ double he_factor(int period_in_seconds, int ci) double calc_surface_phase(double surface_pressure, double he_pressure, double n2_pressure, double he_time_constant, double n2_time_constant) { - double inspired_n2 = (surface_pressure - WV_PRESSURE) * NITROGEN_FRACTION; + double inspired_n2 = (surface_pressure - ((prefs.deco_mode == VPMB) ? WV_PRESSURE_SCHREINER : WV_PRESSURE)) * NITROGEN_FRACTION; if (n2_pressure > inspired_n2) return (he_pressure / he_time_constant + (n2_pressure - inspired_n2) / n2_time_constant) / (he_pressure + n2_pressure - inspired_n2); @@ -468,7 +469,8 @@ double add_segment(double pressure, const struct gasmix *gasmix, int period_in_s int ci; struct gas_pressures pressures; - fill_pressures(&pressures, pressure - WV_PRESSURE, gasmix, (double) ccpo2 / 1000.0, dive->dc.divemode); + fill_pressures(&pressures, pressure - ((prefs.deco_mode == VPMB) ? WV_PRESSURE_SCHREINER : WV_PRESSURE), + gasmix, (double) ccpo2 / 1000.0, dive->dc.divemode); if (buehlmann_config.gf_low_at_maxdepth && pressure > gf_low_pressure_this_dive) gf_low_pressure_this_dive = pressure; @@ -504,7 +506,7 @@ void clear_deco(double surface_pressure) { int ci; for (ci = 0; ci < 16; ci++) { - tissue_n2_sat[ci] = (surface_pressure - WV_PRESSURE) * N2_IN_AIR / 1000; + tissue_n2_sat[ci] = (surface_pressure - ((prefs.deco_mode == VPMB) ? WV_PRESSURE_SCHREINER : WV_PRESSURE)) * N2_IN_AIR / 1000; tissue_he_sat[ci] = 0.0; max_n2_crushing_pressure[ci] = 0.0; max_he_crushing_pressure[ci] = 0.0; -- 2.4.3 _______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
