mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Reset VPM-B state between repetitive dives
This resets the maximum crushing pressures and the maximal ambient pressure between repetitive dives to prevent anomalies that a dive produces a shorter deco when following another one than without. Reported-by: sfuchs@gmx.de Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
ec20d36f3c
commit
032c3258ed
3 changed files with 12 additions and 0 deletions
10
core/deco.c
10
core/deco.c
|
@ -559,9 +559,19 @@ void dump_tissues()
|
|||
printf("\n");
|
||||
}
|
||||
|
||||
void clear_vpmb_state() {
|
||||
int ci;
|
||||
for (ci = 0; ci < 16; ci++) {
|
||||
max_n2_crushing_pressure[ci] = 0.0;
|
||||
max_he_crushing_pressure[ci] = 0.0;
|
||||
}
|
||||
max_ambient_pressure = 0;
|
||||
}
|
||||
|
||||
void clear_deco(double surface_pressure)
|
||||
{
|
||||
int ci;
|
||||
clear_vpmb_state();
|
||||
for (ci = 0; ci < 16; ci++) {
|
||||
tissue_n2_sat[ci] = (surface_pressure - ((in_planner() && (decoMode() == VPMB)) ? WV_PRESSURE_SCHREINER : WV_PRESSURE)) * N2_IN_AIR / 1000;
|
||||
tissue_he_sat[ci] = 0.0;
|
||||
|
|
|
@ -872,6 +872,7 @@ void dump_plan(struct diveplan *diveplan);
|
|||
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 clear_vpmb_state();
|
||||
|
||||
void delete_single_dive(int idx);
|
||||
|
||||
|
|
|
@ -423,6 +423,7 @@ unsigned int init_decompression(struct dive *dive)
|
|||
}
|
||||
add_dive_to_deco(pdive);
|
||||
laststart = pdive->when;
|
||||
clear_vpmb_state();
|
||||
#if DECO_CALC_DEBUG & 2
|
||||
printf("added dive #%d\n", pdive->number);
|
||||
dump_tissues();
|
||||
|
|
Loading…
Reference in a new issue