diff options
author | Rick Walsh <rickmwalsh@gmail.com> | 2016-10-26 16:21:47 +1100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-10-27 20:36:14 -0700 |
commit | ebddf95252f4dcb52518220a684246746820a1be (patch) | |
tree | 72352fbbf83c41dd60c260ac973530b91710ca68 /core/deco.c | |
parent | a2d6bcf23fadceae28081ba055e631c886ca6603 (diff) | |
download | subsurface-ebddf95252f4dcb52518220a684246746820a1be.tar.gz |
ToolTipItem: show gf line based on correct gradient factor preferences
Calculate gfline using the gradient factor that is set by the planner
preferences when in the planner, and by the general prefs when not in the
planner. This is achieved by doing the gradient factor calculation in dive.c,
where buehlmann_config is defined.
Previously, the gfline was calculated using the general preferences gfhigh and
gflow, even when in the planner.
Signed-off-by: Rick Walsh <rickmwalsh@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/deco.c')
-rw-r--r-- | core/deco.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/deco.c b/core/deco.c index 09426bd0a..b138a9fbd 100644 --- a/core/deco.c +++ b/core/deco.c @@ -618,3 +618,17 @@ void set_vpmb_conservatism(short conservatism) else vpmb_config.conservatism = conservatism; } + +double get_gf(double ambpressure_bar, const struct dive *dive) +{ + double surface_pressure_bar = get_surface_pressure_in_mbar(dive, true) / 1000.0; + double gf_low = buehlmann_config.gf_low; + double gf_high = buehlmann_config.gf_high; + double gf; + if (gf_low_pressure_this_dive > surface_pressure_bar) + gf = MAX((double)gf_low, (ambpressure_bar - surface_pressure_bar) / + (gf_low_pressure_this_dive - surface_pressure_bar) * (gf_low - gf_high) + gf_high); + else + gf = gf_low; + return gf; +} |