summaryrefslogtreecommitdiffstats
path: root/core/dive.c
diff options
context:
space:
mode:
authorGravatar Willem Ferguson <willemferguson@zoology.up.ac.za>2018-01-19 21:13:34 +0200
committerGravatar Robert C. Helling <helling@atdotde.de>2018-01-20 10:10:09 +0100
commitf2fe389abd8e9be648792e21365689c0265d556e (patch)
tree02ede938ce91a1a04c53af27020560ff235497c1 /core/dive.c
parentf072f78c296cb943c7ef3a0cf104347a2ea851bb (diff)
downloadsubsurface-f2fe389abd8e9be648792e21365689c0265d556e.tar.gz
Move function isobaric_counterdiffusion()
Move the above function from plannernotes.c to dive.c so that it is available to be called from the dive log part of the software, and not only from the planner. The following was done: 1) Edit the comment above the code to make it more accurate 2) Move the structure icd_data to dive.h 3) Create an external reference in dive.h for the above function 4) Copy the body of isobaric_counterdiffusion() to dive.c Signed-off-by: Willem Ferguson <willemferguson@zoology.up.ac.za>
Diffstat (limited to 'core/dive.c')
-rw-r--r--core/dive.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/core/dive.c b/core/dive.c
index 84acecb38..54d2a00f4 100644
--- a/core/dive.c
+++ b/core/dive.c
@@ -1172,6 +1172,21 @@ static void sanitize_cylinder_info(struct dive *dive)
}
}
+/* Perform isobaric counterdiffusion calculations for gas changes in trimix dives.
+ * Here we use the rule-of-fifths where, during a change involving trimix gas, the increase in nitrogen
+ * should not exceed one fifth of the decrease in helium.
+ * Parameters: 1) pointers to two gas mixes, the gas being switched from and the gas being switched to.
+ * 2) a pointer to an icd_data structure.
+ * Output: i) The icd_data stucture is filled with the delta_N2 and delta_He numbers (as permille).
+ * ii) Function returns a boolean indicating an exceeding of the rule-of-fifths. False = no icd problem.
+ */
+bool isobaric_counterdiffusion(struct gasmix *oldgasmix, struct gasmix *newgasmix, struct icd_data *results)
+{
+ results->dN2 = get_he(oldgasmix) + get_o2(oldgasmix) - get_he(newgasmix) - get_o2(newgasmix);
+ results->dHe = get_he(newgasmix) - get_he(oldgasmix);
+ return get_he(oldgasmix) && results->dN2 > 0 && 5 * results->dN2 > -results->dHe;
+}
+
/* some events should never be thrown away */
static bool is_potentially_redundant(struct event *event)
{