aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/deco.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/deco.c')
-rw-r--r--src/deco.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/deco.c b/src/deco.c
index 349c8e5..bd6ed1e 100644
--- a/src/deco.c
+++ b/src/deco.c
@@ -158,7 +158,7 @@ double gas_mod(const gas_t *gas)
return gas->mod;
}
-double add_segment_ascdec(decostate_t *ds, double dstart, double dend, double time, const gas_t *gas)
+void add_segment_ascdec(decostate_t *ds, double dstart, double dend, double time, const gas_t *gas)
{
assert(time > 0);
@@ -184,16 +184,15 @@ double add_segment_ascdec(decostate_t *ds, double dstart, double dend, double ti
ds->pn2[i] = pio + r * (t - 1 / k) - (pio - po - (r / k)) * exp(-k * t);
}
- /* TODO add CNS */
- /* TODO add OTU */
+ ds->depth = dend;
+ ds->runtime += time;
+ ds->gas = gas;
if (dend > ds->max_depth)
ds->max_depth = dend;
-
- return time;
}
-double add_segment_const(decostate_t *ds, double depth, double time, const gas_t *gas)
+void add_segment_const(decostate_t *ds, double depth, double time, const gas_t *gas)
{
assert(time > 0);
@@ -215,13 +214,12 @@ double add_segment_const(decostate_t *ds, double depth, double time, const gas_t
ds->pn2[i] = po + (pio - po) * (1 - exp(-k * t));
}
- /* TODO add CNS */
- /* TODO add OTU */
+ ds->depth = depth;
+ ds->runtime += time;
+ ds->gas = gas;
if (depth > ds->max_depth)
ds->max_depth = depth;
-
- return time;
}
double get_gf(const decostate_t *ds, double depth)
@@ -312,14 +310,20 @@ void init_tissues(decostate_t *ds)
void init_decostate(decostate_t *ds, unsigned char gflo, unsigned char gfhi, double ceil_multiple)
{
assert(gflo <= gfhi);
+ assert(ceil_multiple > 0);
+
+ *ds = (struct decostate_t){
+ .gflo = gflo,
+ .gfhi = gfhi,
+ .firststop = -1,
+ .max_depth = 0,
+ .ceil_multiple = ceil_multiple,
+ .depth = abs_depth(0),
+ .runtime = 0,
+ .gas = NULL,
+ };
init_tissues(ds);
-
- ds->gflo = gflo;
- ds->gfhi = gfhi;
- ds->firststop = -1;
- ds->max_depth = 0;
- ds->ceil_multiple = ceil_multiple;
}
double ppO2(double depth, const gas_t *gas)