diff options
author | Jan Darowski <jan.darowski@gmail.com> | 2015-07-03 23:19:57 +0200 |
---|---|---|
committer | Jan Darowski <jan.darowski@gmail.com> | 2015-07-03 23:19:57 +0200 |
commit | fad592e43a26343fdef9cd3e0703be10d9069b20 (patch) | |
tree | e978a40b545d46cd319b44e189a8c01f7f19fd25 /deco.c | |
parent | 500fbe499411bfa96192626c8a6213916190aaae (diff) | |
download | subsurface-fad592e43a26343fdef9cd3e0703be10d9069b20.tar.gz |
VPM-B: add initial gradient calculation.
Calculate the max difference between tissue saturation and ambient
pressure that can be accepted during the ascent.
Partial results are kept for later improving in next CVA iterations
Signed-off-by: Jan Darowski <jan.darowski@gmail.com>
Diffstat (limited to 'deco.c')
-rw-r--r-- | deco.c | 17 |
1 files changed, 17 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; |