diff options
Diffstat (limited to 'src/deco.c')
-rw-r--r-- | src/deco.c | 36 |
1 files changed, 20 insertions, 16 deletions
@@ -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) |