diff options
author | Robert C. Helling <helling@atdotde.de> | 2015-08-17 17:40:47 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-08-17 21:58:09 -0700 |
commit | a6ed36fb7368254d694a4f397d6d033326c37ef2 (patch) | |
tree | adb22f8733ed509eb9e88dee5ec3e969dbc6ada7 /planner.c | |
parent | 930e83dfc42286bbcdb1f037e7472766e211066b (diff) | |
download | subsurface-a6ed36fb7368254d694a4f397d6d033326c37ef2.tar.gz |
Pref. to ascent to next stop only when stop is below ceiling
Usually, we try to ascent to the next stop and check if we break the
ceiling while doing that. This patch adds a preference value to rather
check if the ceiling is above the next stop before attempting to ascent.
The difference if off-gasing during the ascent is taken into account.
Logically, it does not sound like it could be relevant to ignore that
off-gasing but it leads to more conservative schedules and it seems
the original Fortran VPM-B implementation does just this. So one could
argue it is part of that model (if it makes sense or not), so we should
at least give users the possibility to turn this on.
Maybe we should even make this the default for VPM-B.
This patch just addes the code to have the value in the preferences and
the planner to act accordingly. There is no UI for it, yet. To test, you
have to set it in the code. There could be a later patch with a UI if people
like to have it.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'planner.c')
-rw-r--r-- | planner.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -879,6 +879,11 @@ bool trial_ascent(int trial_depth, int stoplevel, int avg_depth, int bottom_time bool clear_to_ascend = true; char *trial_cache = NULL; + // Don't do a trail ascent but check if the ceiling is above the next stoplevel. + // This does not sound like a relevant question but it seems the original VPM-B implementation does that. + if (prefs.check_ceiling_before_ascent) + return (deco_allowed_depth(tissue_tolerance, surface_pressure, &displayed_dive, 1) <= stoplevel); + cache_deco_state(tissue_tolerance, &trial_cache); while (trial_depth > stoplevel) { int deltad = ascent_velocity(trial_depth, avg_depth, bottom_time) * TIMESTEP; |