diff options
-rw-r--r-- | deco.c | 17 | ||||
-rw-r--r-- | dive.h | 1 |
2 files changed, 18 insertions, 0 deletions
@@ -110,6 +110,10 @@ double n2_regen_radius[16]; // rs double he_regen_radius[16]; double max_ambient_pressure; // last moment we were descending +double allowable_n2_gradient[16]; +double allowable_he_gradient[16]; +double total_gradient[16]; + static double tissue_tolerance_calc(const struct dive *dive) { @@ -206,6 +210,19 @@ double he_factor(int period_in_seconds, int ci) return cache[ci].last_factor; } +void vpmb_start_gradient() +{ + int ci; + double gradient_n2, gradient_he; + + for (ci = 0; ci < 16; ++ci) { + allowable_n2_gradient[ci] = 2.0 * (vpmb_config.surface_tension_gamma / vpmb_config.skin_compression_gammaC) * ((vpmb_config.skin_compression_gammaC - vpmb_config.surface_tension_gamma) / n2_regen_radius[ci]); + allowable_he_gradient[ci] = 2.0 * (vpmb_config.surface_tension_gamma / vpmb_config.skin_compression_gammaC) * ((vpmb_config.skin_compression_gammaC - vpmb_config.surface_tension_gamma) / he_regen_radius[ci]); + + total_gradient[ci] = ((allowable_n2_gradient[ci] * tissue_n2_sat[ci]) + (allowable_he_gradient[ci] * tissue_he_sat[ci])) / (tissue_n2_sat[ci] + tissue_he_sat[ci]); + } +} + void nuclear_regeneration(double time) { time /= 60.0; @@ -784,6 +784,7 @@ extern void set_gf(short gflow, short gfhigh, bool gf_low_at_maxdepth); extern void cache_deco_state(double, char **datap); extern double restore_deco_state(char *data); extern void nuclear_regeneration(double time); +extern void vpmb_start_gradient(); /* this should be converted to use our types */ struct divedatapoint { |