Innehåll

Deco engine

Assumptions and limits

A consolidated list of every modelling choice the Dive Kit deco engine makes (the choices behind every schedule you read), what the engine deliberately does not claim, and the primary sources it was built from.

Senast uppdaterad 30 september 2026

På den här sidan

What it is

The pages in this section explain each modelling choice in context. This page collects them in one place (the choices behind every Dive Kit schedule), followed by what the engine deliberately does not claim, and the sources it was built from.

The assumptions, in one place

The model

  • Dissolved-gas Bühlmann ZH-L16C with Erik Baker gradient factors (GF, interpolated linearly with depth); no bubble model and no separate deep-stop algorithm beyond what your GF-Low implies.
  • Tissue loading integrated in 1-second steps through every depth change, not only at fixed stops.
  • Nitrogen and helium tracked separately per compartment, with continuously re-blended coefficients as the mix changes.

Stops and ascent

  • Stops sit on a configurable grid (3 m default); a ceiling always rounds up, never shallower than your true ceiling.
  • Stop times round up to whole minutes by default, with the rounding done inside the engine (one-way, hold-longer-only, so never an early ascent); precise second-resolution (MM'SS") and round-to-30-seconds are opt-in. The last stop carries a one-minute minimum in every mode.
  • The last stop is a real stop, even when a coarse grid would otherwise force you deeper.
  • A dive that entered the decompression zone is routed through the last stop on the way up and holds there for the minimum, even when its ceiling has already reached the surface. That stop is required, but it is not decompression: you would not breach anything by ascending straight past it. It is why a plan can show a one-minute stop at 6 m and still be a no-stop dive.
  • The gradient factor line is anchored at the exact depth your tissues reach, not at the stop above it. See Gradient factors.
  • Ascent uses a two-rate model (deep + shallow, switching at a configurable depth); descent rate is configurable.
  • A level’s entered time is its at-depth time; the descent into it is accounted separately.
  • A level planned shallower than your current ceiling is reached by running the deco algorithm down to it: the stops you owe between the two levels are planned and inserted, on the gas you are breathing, before the level starts. Those stops are extra time on top of the minutes you entered for the level.

Gas switching (open circuit)

  • Each gas’s switch depth and hyperoxia warning use one O₂%-band PPO₂ cap (lean / mid / rich, default 1.4 / 1.5 / 1.6), and the same number drives both.
  • An optional gas-switch (purge) time is spent at depth on the old gas; off by default. It is recorded where the switch happens: at the departure depth before a descent, at the arrival depth after an ascent.
  • A gas change between two of your own levels happens where it is safe. Going deeper you switch before you descend, because the deeper level’s gas is the leaner one and there is no later moment at which it could safely be taken up. Coming shallower you ascend on the gas you are already breathing and switch when you arrive, because the shallower level’s gas is the richer one and is only safe once you are shallow. At the same depth you switch in place.
  • On descent and at a fixed level the auto picker takes the richest legal gas; on the way up it switches in the smallest O₂ step that is legal at each stop (a smallest-step walk-up). Both paths honour the same per-gas PPO₂ cap and never breathe a gas past it.
  • By default a cylinder that is breathed dry is not switched away from: the schedule stays on it and the card reports how many bar short it came, which is the gas-sizing answer and is the behaviour of every version up to 2.8.7.
  • Set When a cylinder runs out to switch, per plan or in your defaults, and an emptied cylinder hands over to the richest gas still aboard that is safe at the current depth, ties broken by gas-list order, and the rest of the deco is recomputed on it. A forced switch costs no gas-switch time, because there is no old gas left to purge on, and it lands on the plan’s stop-rounding grid so a rounded table stays whole-minute.
  • Gas is tallied against each cylinder individually, so two cylinders of the same mix are separate bottles rather than one pool.
  • If nothing carried is safe at the depth where a cylinder empties, the engine does not invent a switch: the plan stays on the empty cylinder, reports the shortfall, and warns. Oxygen breaks keep breathing the plan’s back gas while it is breathable at the break depth; when it is empty, hypoxic or over its PPO₂ cap there, the break takes the leanest safe gas you still hold, since the point of a break is to come off a high PPO₂. When nothing qualifies you get no break at all, and the plan raises an “oxygen break skipped” warning at that depth.
  • A cylinder the bottom phase exhausts is not re-planned from the bottom. If it is still the breathing gas when the ascent starts, the handover happens at the first ascent step. If the ascent was never going to use it, the deco is planned without it and a critical warning names it: because the bottom is never re-worked, that cylinder was asked for more gas than it holds, so the dive as planned cannot be executed on it.

Oxygen toxicity

  • CNS (central nervous system oxygen toxicity) and OTU (oxygen tolerance units, the pulmonary “whole-body” measure) accumulate from ambient PPO₂ (no water-vapour subtraction), against NOAA limits; CNS decays on a half-life, including across surface intervals.

Environment

  • A water-type metres-per-bar factor feeds both gas loading and the M-value/ceiling maths; surface pressure is the real 1.01325 bar at sea level and follows the altitude you set.

Closed-circuit rebreather (CCR)

  • Three setpoints (descent, bottom, deco), with a switch depth applied only on the first descent, an optional depth-keyed deco-setpoint and diluent schedule, and any setpoint capped at the achievable ambient PPO₂.
  • “Stay on the loop” by default; open-circuit bailout planned from the worst realistic failure point. Bailout consumption splits across your two breathing rates the way MultiDeco does it: the leg from the depth you bail out at down to the first deco stop runs at your Working SRMV, because swimming up off the loop is work, and everything from that stop onward runs at your Deco SRMV. The bailout schedule runs your plan’s gradient factors, so one set of settings drives the dive and its escape. To size bailout for a stressed exit, use the plan’s stress modifier.

Plan modifiers

  • The three breathing rates (Working, Deco, Stress) change gas figures and turn pressure only. They never move a stop, because breathing harder does not change how fast an inert gas leaves a tissue in this model.
  • The delay before ascent is the exception, and it is modelled as exactly what it is: extra time held at that depth on that gas. It loads tissues, accrues CNS and OTU, and lengthens runtime, TTS and the stops that follow.
  • The per-level no-decompression limit is evaluated at your plan’s GF-high, the same conservatism the engine applies on the bottom. It assumes that depth and that gas, and it is reported only where it is a real figure: a level already owing a stop and a level with no practical limit both report nothing rather than a misleading number.

Other

  • Repetitive dives carry tissue tension, CNS and OTU across the surface interval; an oxygen break re-loads the fast tissues, and that loading carries through the rest of the plan.
  • Gas density is computed at the water temperature in your plan’s Environment settings, 15 °C by default: a reference reading, not a safety boundary. The Bühlmann model has no temperature term, so your stops never move with it.
  • Gas volume used depends entirely on your breathing-rate setting (your surface respiratory minute volume, SRMV), a personal preference.

What we deliberately don’t claim

  • No model is a guarantee. Bühlmann is a dissolved-gas model fitted to data, and decompression sickness is probabilistic. Your gradient factors are your conservatism dial and your call; a planner’s job is to honour them faithfully, which is what this one does.
  • This is a planning tool, used on the surface before and between dives. It is not a substitute for training, a dive computer, a sensible personal margin, or judgement.
  • We don’t invent physics. Where the literature is settled we follow it and cite it; where it leaves a genuine choice we make a defensible one, document it, and validate the result against an independent reference.

References

The engine is an independent implementation written from the published papers and equations. The open-source projects below are independent cross-checks, not code it was derived from.

CCR diluent switching (dilout)

For the full, grouped list (decompression theory, oxygen toxicity, gas density and CO₂, isobaric counter-diffusion, CCR diluent switching, and buoyancy), each with a short note on what it is and why it matters, see Further reading.

Delar av den här guiden har skrivits med AI-hjälp och kan innehålla fel. Den är utbildande, inte en ersättning för utbildning. Dyk alltid inom ramen för din certifiering och verifiera med dina instrument.