Contents

Deco engine

Impossible plans: when no schedule can surface you

Why some gas and gradient-factor combinations have no valid decompression schedule, the guarantee line for each last-stop depth, how Dive Kit detects impossibility exactly, and why a 'cannot surface' verdict is trustworthy.

Last updated 4 czerwca 2026

On this page

What “impossible” means here

Decompression works because holding a stop unloads your tissues. That assumption can break. While you hold a stop, every tissue drifts toward one number: the pressure of the inert gas you are breathing at that depth. If that number sits above what your surfacing limit ever accepts, then waiting does not unload you. It loads you. Every extra minute at the stop moves you further from the surface, forever. The stop has no end, and the plan has no valid schedule.

The clearest example is air at a 6 m last stop. At 6 m on air at sea level your tissues drift toward about 1.22 bar of dissolved nitrogen. A GF High of 50 tolerates only about 1.15 to 1.19 bar in the slow tissues at the surface. Load those tissues past that line, and the 6 m stop can never release you. The same dive with five fewer bottom minutes completes fine. There is a cliff here, not a slope: a plan goes from “197 minute stop” to “no schedule exists” with one small change.

This is not a quirk of Dive Kit. It is what the Bühlmann model actually says, and other planners hit the same wall. MultiDeco refuses GF High below 50 outright and throws an error on a 9 m last stop. Dive Kit handles the same physics with an exact detection and a useful answer instead.

The guarantee line for each last stop

There is a precise threshold for every stop depth and breathing gas: the GF High at which the stop is guaranteed to clear no matter how loaded your tissues are. It comes from comparing the gas pressure your tissues drift toward at that depth against the surfacing limit of the slowest tissue compartment. On air at sea level:

Last stopTissues drift towardGuaranteed to clear when
3 m0.99 barAlways, at any GF High. The drift target is below surface pressure, so on air at 3 m you are always unloading relative to the surface.
6 m1.22 barGF High 79 or above. Below 79 it depends on the dive: light dives clear, heavy ones may not.
9 m1.46 barNever. The drift target exceeds the slowest tissue’s raw M-value, so once a slow tissue crosses it, even GF High 100 cannot surface you.

Three practical readings of that table:

  • A 3 m last stop on air can always finish. If you want low gradient factors with a lean gas, the 3 m stop is your safety valve.
  • A 6 m last stop on air is conditional below GF High 79. Your GF 50/50 experiments lived exactly in this zone: 22 bottom minutes cleared, 27 could not.
  • A 9 m last stop on air is structurally unfinishable for any dive that loads the slow tissues enough. No conservatism setting fixes it.

Where the threshold comes from

The guarantee has a closed formula. A stop is safe for any plan when even fully saturated tissues pass the surfacing limit of the slowest compartment, the one with the lowest tolerated supersaturation:

gf_min = (P_eq − P_surface) / (M0_slowest − P_surface)

P_eq        what your tissues drift toward at the stop:
            (ambient pressure − water vapor) × inert-gas fraction
M0_slowest  the slowest compartment's surfacing M-value
            (its a coefficient + surface pressure / its b coefficient)

Worked for the 6 m stop on air at sea level: ambient at 6 m is 1.613 bar, minus 0.063 bar of water vapor, times 0.79 nitrogen gives P_eq ≈ 1.225 bar. The slowest ZH-L16C compartment (635 minute half-time, a = 0.2327, b = 0.9653) has a surfacing M-value of 0.2327 + 1.013 / 0.9653 ≈ 1.282 bar. So:

gf_min = (1.225 − 1.013) / (1.282 − 1.013) ≈ 0.79

GF High 79 or higher and the 6 m stop on air can always finish, no matter the dive. We verified the boundary empirically with a five-hour 45 m air dive: at GF 50/79 the engine completes it (with an enormous but finite last stop), at GF 50/78 it provably cannot and substitutes. The theory holds to the integer. Run the same formula at 9 m and P_eq (≈ 1.46 bar) exceeds M0 itself, so the ratio passes 100% and no GF High can guarantee the stop: that is the 9 m wall in the table.

The gas matters as much as the depth. On EAN50 at 6 m the drift target is about 0.78 bar, below surface pressure, so any GF clears. Pure oxygen removes inert gas entirely. This is the real reason rich deco gases exist: they do not just speed up your stops, they make the shallow stops mathematically finishable under any conservatism. Altitude shifts the thresholds too, since it lowers the surface pressure your tissues must fit under.

What Dive Kit does when a plan cannot surface

The engine does not refuse and does not hang. It answers the question you actually need answered: it finds the lowest GF High that can complete the decompression and computes that schedule. When this happens you cannot miss it:

  • a red critical banner sits directly above the dive profile graph, naming the GF High you asked for and the one the schedule uses,
  • the schedule card and the affected scenario tabs carry red borders, and the warning appears in Plan Issues,
  • every export records the GF the schedule was actually computed with. The slate, the PDF, the image, and the share link never claim a conservatism the printed runtimes do not deliver.

Contingencies are checked independently. Your own case is typical: the base plan at GF 50/50 completes, but the automatic plus-five-minutes variant cannot, so only that tab carries the raised GF and the warning while the base plan stays exactly as you configured it.

If even GF High 100 cannot complete the plan, which takes a 9 m last stop on a lean gas, the planner replaces the schedule with a clear error instead of showing numbers it cannot stand behind.

How the engine detects impossibility

While you hold a stop on one gas, the future of every tissue is known in closed form. The engine does not need to simulate the hold minute by minute to know where it is going; it can evaluate any future moment directly with one formula. Detection asks one question at every stop the schedule enters: is there any future moment at which the leave rule opens? Four stages answer it, each running only if the one before says no.

  1. The destination check. Evaluate the stop at full saturation: if your tissues equalized completely with this gas at this depth, would the gate be open? If yes, the stop must clear at some finite time, because that is where the tissues are heading. Nearly every stop in every normal plan exits here, at the cost of one evaluation per tissue compartment. This stage is the guarantee line from the table above, computed exactly for the actual gas, depth, water type, and altitude.
  2. The sampled timeline. If the destination is unacceptable, the only hope is a temporary window on the way: fast tissues clear the gate before slow tissues close it for good. The engine samples 36 moments spaced multiplicatively from one second to ninety days, so every tissue speed from the 4 minute compartment to the 635 minute one is sampled at its own scale.
  3. The bottom of the dip. The window’s lowest point can fall between two samples. The engine takes the best sampled moment and searches between its neighbours for the true minimum of the ceiling curve.
  4. The second-by-second sweep. Before declaring a plan impossible, the engine brute-forces the verdict: it checks the gate at every single second of the first hour, the same granularity the simulation itself runs at, and every minute out to 48 hours. After this, a wrong “impossible” would require a leave window open for less than one continuous second. Tissue pressures cannot change that fast; the quickest compartment has a 4 minute half-time.

The expensive stages are reserved for plans on the verge of condemnation, which are exactly the plans that previously had no answer at all. A healthy plan pays a few hundred formula evaluations across its whole schedule, around half a percent of what simulating the stops already costs.

Why a “cannot surface” verdict is trustworthy

A false “impossible” would silently relax your conservatism, so the detection is built to make that failure unreachable rather than unlikely:

  • it evaluates the simulation’s own leave rule with the simulation’s own tissue mathematics, not a simplified model of either,
  • it checks both gradient-factor regimes a hold can ever run under, so no regime switch can surprise it,
  • the brute-force sweep closes the time axis at the simulation’s own resolution,
  • and the failure directions are asymmetric by design: if detection ever misses a truly stuck stop, the engine’s runtime cap still converts it to the same labeled substitution, slowly but never wrongly. There is no path to a quietly wrong schedule.

Every substitution is also exact. The engine binary-searches for the smallest GF High that completes the plan and verifies each candidate with a full computation, so the schedule you get keeps as much of your requested conservatism as the physics allows, to the integer.

Parts of this guide were drafted with AI assistance and may contain mistakes. It's educational, not a substitute for training. Always dive within your certification and verify with your instruments.