summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deco.c17
-rw-r--r--dive.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/deco.c b/deco.c
index 0b221c225..ada13fbb0 100644
--- a/deco.c
+++ b/deco.c
@@ -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;
diff --git a/dive.h b/dive.h
index 8f0f84832..d9885184e 100644
--- a/dive.h
+++ b/dive.h
@@ -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 {