Skip to content

Bühlmann ZHL-16C

Where the default model came from and how it evolved, why nearly every dive computer runs it, how it builds a ceiling, and what it does not claim about your body.

Updated View as Markdown

Bühlmann ZHL-16C is a dissolved-gas model: it tracks inert gas going into and out of sixteen theoretical tissue compartments, and permits an ascent whenever every compartment’s loading sits below a limit called its M-value. It is the model behind almost every recreational and technical dive computer, and it is DiveLogic’s default.

Where it came from

The idea is over a century old. In 1908, working for the Royal Navy on the problem of divers being paralysed by too-fast ascents, John Scott Haldane introduced the two concepts every modern dive computer still runs on: treat the body as a set of independent theoretical tissues, each taking up and releasing gas exponentially at its own speed, and let a diver ascend only while no tissue’s gas pressure exceeds a fixed multiple of the surrounding pressure. Haldane used one ratio, roughly 2:1, for every tissue; staged decompression starts here.

The next fifty years of navy diving showed the single ratio was too blunt: fast tissues tolerate proportionally more overpressure than slow ones, and tolerance changes with depth. In 1965 the US Navy replaced the ratio with M-values, a straight-line limit per compartment giving the maximum tissue pressure tolerated at each depth. That reframing, a per-compartment linear limit instead of one global ratio, is the mathematical shape everything since has kept.

Albert Bühlmann ran the hyperbaric physiology laboratory at the University Hospital in Zürich from 1959, and spent over three decades testing schedules in chambers, in the sea and in Swiss mountain lakes. His laboratory computed the schedules for Hannes Keller’s record 305 m dive in 1962, and the mountain-lake work forced something the navy tables never needed: a model formulated to stay correct at altitude, where the surface you return to is below 1 bar. In 1983 he published the complete model, coefficients and all, openly rather than as an internal navy method, at almost exactly the moment microprocessors made wrist dive computers possible. A complete, altitude-correct, freely published model arriving just as the first dive computers did is why nearly all of them run it today.

How it was improved

The model Bühlmann published in 1983 used twelve compartment pairs, ZH-L12: ZH for Zürich, L for the linear M-value limits, and the count of compartments after that. Seven years of refinement later came ZH-L16, with sixteen nitrogen half-times from 4 to 635 minutes and a cleaner derivation of the limits from the half-times themselves.

ZH-L16 exists in three variants. The A set is the raw theoretical fit. Early field experience showed a handful of middle compartments were too permissive in practice, so Bühlmann issued two corrected sets: B, slightly stiffened for computing printed tables, and C, stiffened further for dive computers, which track the dive continuously and so shave every margin a rounded-up table entry would have left. That is why computers run C, and why DiveLogic does.

Refinement since has come from outside Zürich. Adaptive variants appeared in the 1990s that fold workload and water temperature into the compartments. The change that stuck, though, was gradient factors: a late-1990s overlay from the technical diving community that scales the M-value line down by a pair of percentages, one governing the deepest stop and one the surfacing margin. Gradient factors let divers set their own distance from the raw limit without touching the model, and GF-over-ZHL-16C is now the de facto standard for technical diving worldwide. Gradient factors covers the pair in detail; GF 100/100 is the unmodified model, and the planner will produce it if you ask for it.

How it works

Each compartment is defined by a half-time, the time it takes to close half the gap between what it holds and the pressure it is breathing. The fast compartments fill and empty within minutes; the slow ones take most of a day. A short deep dive is governed by the fast ones, the shallow end of a long ascent by the slow ones. Uptake and washout are symmetric: the same exponential curve runs in both directions, and a large gradient drives fast movement whichever way it points.

Nitrogen and helium are tracked separately in every compartment. Helium’s half-times are roughly 2.65 times faster, following diffusion theory for the lighter molecule, which is why a trimix dive loads and unloads differently from an air dive of the same profile.

An M-value is the most inert gas a compartment may hold at a given depth before the model stops permitting an ascent. It rises with depth, so it is not one number but a limit that moves as you do: each compartment carries two fitted coefficients that set the line’s intercept and slope. On a mixed gas the limit is blended in proportion to how much of the compartment’s loading is nitrogen and how much is helium, so it follows the mix in your tissue, not the mix in your cylinder.

How the planner decides you may ascend

Turn an M-value around and you have the ceiling: the shallowest depth at which a compartment is still inside its limit. The plan’s ceiling is the deepest of the sixteen, and which compartment sets it changes hands during the ascent.

The rule is the same at every stop: hold until the ceiling has risen past the next stop depth, then go up one stop. At its Advanced density, the schedule table carries a Ceiling (m) column, the ceiling at each step; each stop ends where the ceiling clears the depth above.

A 45 m dive for 25 minutes on 21/35, scrolled to the ceiling column
DepthmetresPhaseTimeminutesRuntimeminutesGasppO₂barppN₂barppHebarfO₂%fN₂%fHe%Densityg/LENDmetresCeilingmetresCNS%OTU
Surface
Surface
-
0
OC 21/35
-
-
-
-
-
-
-
-
-
0
0
45
Descent
3
3
OC 21/35
1.11
2.41
1.92
21
44
35
5.06
21
-
0
1
45
Level
25
28
OC 21/35
1.16
2.41
1.92
21
44
35
5.06
21
20
12
33
21
Ascent
3
30
OC 21/35
0.69
1.35
1.07
21
44
35
2.85
7
18
12
35
21
Gas switch
-
31
OC 50%
1.56
1.53
0.00
50
50
0
4.19
10
17
14
37
21
Stop
1
32
OC 50%
1.56
1.53
0.00
50
50
0
4.19
10
15
16
39
12
Ascent
3
35
OC 50%
1.19
1.08
0.00
50
50
0
2.97
4
10
18
43
12
Stop
2
37
OC 50%
1.11
1.08
0.00
50
50
0
2.97
4
9
19
46
9
Ascent
1
38
OC 50%
1.03
0.93
0.00
50
50
0
2.57
2
8
19
47
9
Stop
3
41
OC 50%
0.96
0.93
0.00
50
50
0
2.57
2
7
20
49
6
Ascent
1
42
OC 50%
0.88
0.78
0.00
50
50
0
2.17
0
6
20
50
6
Stop
24
66
OC 50%
0.81
0.78
0.00
50
50
0
2.17
0
1
26
66
0
Ascent
6
72
OC 50%
0.66
0.48
0.00
50
50
0
1.36
0
-
27
69

Adoption

Almost everything on a diver’s wrist today is a Bühlmann descendant. The overwhelming majority of recreational and technical dive computers run ZHL-16C, usually with gradient factors exposed as the conservatism control, and the same pairing sits inside most desktop and phone planning tools. Its main competition in the 2000s came from bubble models, which tried to represent the free gas phase directly and prescribed deeper first stops; comparative testing since has favoured shallower-biased dissolved-gas schedules, and the industry has largely converged back onto Bühlmann with gradient factors. The US Navy uses its own algorithm instead: Thalmann E-L.

What the model does not claim

Bühlmann does not model bubbles. It has no concept of a bubble nucleus, a critical radius, or bubble growth on ascent: loading is either inside the limit or outside it. Deep-stop arguments are arguments about a mechanism this model does not represent.

The compartments are not organs, and the M-values are not a threshold of injury. They are rates and a line drawn where tested exposures were mostly tolerated. Nothing about the diver enters the calculation except depth, time and gas, so the model returns the same schedule whether you are cold, dehydrated, working hard, or none of those.

Next

Navigation

Type to search…

↑↓ navigate↵ selectEsc close