Deco engine
Assumptions and limits
A consolidated list of every modelling choice the Dive Kit deco engine makes (the things you trust when you read a schedule), what the engine deliberately does not claim, and the primary sources it was built from.
마지막 업데이트 2026년 9월 16일
이 페이지 목차
What it is
The pages in this section explain each modelling choice in context. This page collects them in one place (everything you trust when you read a 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.
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.
- 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; if that is empty the shortfall is shown rather than a switch made.
- 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 configurable for altitude.
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.
- A. A. Bühlmann, Decompression: Decompression Sickness: the ZH-L tissue model and its coefficients.
- R. D. Workman (US Navy EDU, 1965): the origin of the linear “M-value” ascent-limit line.
- Erik C. Baker, “Understanding M-values” & “Clearing Up the Confusion About Deep Stops”: the gradient-factor method, the decompression zone, and the GF slope.
- Erik C. Baker, “Oxygen Toxicity Calculations”: CNS and OTU from ambient PPO₂.
- Subsurface, the open-source decompression engine: independent confirmation that water vapour enters gas loading only, never the ceiling.
- The Theoretical Diver (R. Helling): gradient-factor and oxygen-toxicity derivations.
- NOAA Diving Manual & Shearwater’s CNS oxygen clock: single-exposure oxygen limits.
CCR diluent switching (dilout)
- MultiDeco user guide (HHS Software): diluent changes inside a CCR plan (“change to air diluent, and 1.4 at 20m”): the capability Dive Kit’s diluent switches model.
- Shearwater Perdix Operations Manual, “Select Gas” / “CC Gases”: five closed-circuit diluent slots, switchable mid-dive.
- Stéphane Havard, “Understanding and safe use of PPO2 set-points for CCR” (2002): a practitioner’s deco-diluent switch (8/62 to air or EANx32 at 40 m when it saves 15 to 20 minutes), diluent-flush mechanics, and an honest framing of the debate.
- Silent Diving, “Which CCR Diluent Fits Your Dive Profile?”: diluent surface-breathability and diluent switching as “a more advanced configuration and not necessary for most dive profiles”.
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.
Related
- The decisions that shape your schedule explains each of these choices in context.
- How Dive Kit compares to MultiDeco lays out the checks and the documented differences.
- How the deco engine works is the foundation underneath the assumptions.
- Gradient factors is the conservatism dial referenced in “The model” and in what the engine does not claim.
- Hazards beyond decompression expands the gas-density assumption noted under “Other”.
이 가이드의 일부는 AI의 도움을 받아 작성되었으며 오류가 있을 수 있습니다. 교육 목적의 자료일 뿐 정식 교육을 대신하지 않습니다. 항상 자격증 범위 안에서 다이빙하고, 본인의 계기로 직접 확인해야 합니다.