diff options
author | Robert C. Helling <helling@atdotde.de> | 2015-08-23 16:04:59 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-08-23 07:30:23 -0700 |
commit | 41349c29ddc45e7c19fc287f10fa8f6712bcf111 (patch) | |
tree | 4a49e3afcc7ce9086edd3d3b0518155ea82c3f21 | |
parent | cb375623f956c99c211bba0c18ace688e7eb6942 (diff) | |
download | subsurface-41349c29ddc45e7c19fc287f10fa8f6712bcf111.tar.gz |
Prepare global state of VPM-B when starting to plan
Otherwise, the results of the calculations tend to be rather
random and irreproducible...
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | deco.c | 2 | ||||
-rw-r--r-- | dive.h | 3 | ||||
-rw-r--r-- | planner.c | 9 |
3 files changed, 13 insertions, 1 deletions
@@ -508,6 +508,8 @@ void clear_deco(double surface_pressure) tissue_he_sat[ci] = 0.0; max_n2_crushing_pressure[ci] = 0.0; max_he_crushing_pressure[ci] = 0.0; + n2_regen_radius[ci] = get_crit_radius_N2(); + he_regen_radius[ci] = get_crit_radius_He(); } gf_low_pressure_this_dive = surface_pressure; if (!buehlmann_config.gf_low_at_maxdepth) @@ -830,6 +830,9 @@ struct divedatapoint *create_dp(int time_incr, int depth, struct gasmix gasmix, void dump_plan(struct diveplan *diveplan); #endif bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool show_disclaimer); +void calc_crushing_pressure(double pressure); +void vpmb_start_gradient(); + void delete_single_dive(int idx); struct event *get_next_event(struct event *event, const char *name); @@ -997,6 +997,13 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool create_dive_from_plan(diveplan, is_planner); return(false); } + calc_crushing_pressure(depth_to_mbar(depth, &displayed_dive) / 1000.0); + nuclear_regeneration(clock); + clear_deco(displayed_dive.surface_pressure.mbar / 1000.0); + vpmb_start_gradient(); + previous_deco_time = 100000000; + deco_time = 10000000; + tissue_tolerance = tissue_at_end(&displayed_dive, cached_datap); displayed_dive.surface_pressure.mbar = diveplan->surface_pressure; @@ -1124,7 +1131,7 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool vpmb_next_gradient(deco_time, diveplan->surface_pressure / 1000.0); previous_deco_time = deco_time; - restore_deco_state(bottom_cache); + tissue_tolerance = restore_deco_state(bottom_cache); depth = bottom_depth; gi = bottom_gi; |