# Bühlmann decompression algorithm

The Bühlmann decompression model is a neo-Haldanian model which uses Haldane's or Schreiner's formula for inert gas uptake, a linear expression for tolerated inert gas pressure coupled with a simple parameterised expression for alveolar inert gas pressure and expressions for combining Nitrogen and Helium parameters to model the way inert gases enter and leave the human body as the ambient pressure and inspired gas changes. Different parameter sets are used to create decompression tables and in personal dive computers to compute no-decompression limits and decompression schedules for dives in real-time, allowing divers to plan the depth and duration for dives and the required decompression stops.
The model (Haldane, 1908) assumes perfusion limited gas exchange and multiple parallel tissue compartments and uses an exponential formula for in-gassing and out-gassing, both of which are assumed to occur in the dissolved phase. Buhlmann, however, assumes that safe dissolved inert gas levels are defined by a critical difference instead of a critical ratio.
Multiple sets of parameters were developed by Swiss physician Dr. Albert A. Bühlmann, who did research into decompression theory at the Laboratory of Hyperbaric Physiology at the University Hospital in Zürich, Switzerland. The results of Bühlmann's research that began in 1959 were published in a 1983 German book whose English translation was entitled Decompression-Decompression Sickness. The book was regarded as the most complete public reference on decompression calculations and was used soon after in dive computer algorithms.

## Principles

Building on the previous work of John Scott Haldane (The Haldane model, Royal Navy, 1908) and Robert Workman (M-Values, US-Navy, 1965) and working off funding from Shell Oil Company, Bühlmann designed studies to establish the longest half-times of nitrogen and helium in human tissues. These studies were confirmed by the Capshell experiments in the Mediterranean Sea in 1966.

### Alveolar inert gas pressure

The Bühlmann model uses a simplified version of the alveolar gas equation to calculate alveolar inert gas pressure
$P_{alv}=[P_{amb}-P_{H_{2}0}+{\frac {1-RQ}{RQ}}P_{CO_{2}}]\cdot Q$
Where $P_{H_{2}0}$ is the water vapour pressure at 37°C (conventionally defined as 0.0627 bar), $P_{CO_{2}}$ the carbon dioxide pressure (conventionally defined as 0.0534 bar), $Q$ the inspired inert gas fraction, and $RQ$ the respiratory coefficient: the ratio of carbon dioxide production to oxygen consumption. The Buhlmann model sets $RQ$ to 1, simplifying the equation to
$P_{alv}=[P_{amb}-P_{H_{2}0}]\cdot Q$

### Tissue inert gas exchange

Inert gas exchange in haldanian models is assumed to be perfusion limited and is governed by the ordinary differential equation
${\dfrac {\mathrm {d} P_{t}}{\mathrm {d} t}}=k(P_{alv}-P_{t})$
This equation can be solved for constant $P_{alv}$ to give the Haldane equation:
$P_{t}(t)=P_{alv}+(P_{t}(0)-P_{alv})\cdot e^{-kt}$
and for constant rate of change of alveolar gas pressure $R$ to give the Schreiner equation:
$P_{t}(t)=P_{alv}(0)+R(t-{\dfrac {1}{k}})-(P_{alv}(0)-P_{t}(0)-{\dfrac {R}{k}})e^{-kt}$

### Tissue inert gas limits

Similarly to Workman, the Bühlmann model specifies an affine relationship between ambient pressure and inert gas saturation limits. However, the Buhlmann model expresses this relationship in terms of absolute pressure
$P_{igtol}=a+{\frac {P_{amb}}{b}}$
Where $P_{igtol}$ is the inert gas saturation limit for a given tissue and $a$ and $b$ constants for that tissue and inert gas.
The constants $a$ and $b$, were originally derived from the saturation half-time using the following expressions:
$a={\frac {2\,{\text{bar}}}{\sqrt[{3}]{t_{1/2}}}}$ $b=1.005-{\frac {1}{\sqrt[{2}]{t_{1/2}}}}$
The $b$ values calculated do not precisely correspond to those used by Bühlmann for tissue compartments 4 (0.7825 instead of 0.7725) and 5 (0.8126 instead of 0.8125).
Versions B and C have manually modified the coefficient $a$.
In addition to this formulation, the Bühlmann model also specifies how the constants for multiple inert gas saturation combine when both Nitrogen and Helium are present in a given tissue.
$a=a_{N_{2}}(1-R)+a_{He}R$
$b=b_{N_{2}}(1-R)+b_{He}R$
where $a_{N_{2}}$ and $a_{He}$ are the tissue's $a$ Nitrogen and Helium coefficients and $R$ the ratio of dissolved Helium to total dissolved inert gas.

### Ascent rates

Ascent rate is intrinsically a variable, and may be selected by the programmer or user for table generation or simulations, and measured as real-time input in dive computer applications.
The rate of ascent to the first stop is limited to 3 bar per minute for compartments 1 to 5, 2 bar per minute for compartments 6 and 7, and 1 bar per minute for compartments 8 to 16. Chamber decompression may be continuous, or if stops are preferred they may be done at intervals of 1 or 3 m.

## Applications

The Buhlmann model has been used within dive computers and to create tables.

### Tables

Since precomputed tables cannot take into account the actual diving conditions, Buhlmann specifies a number of initial values and recommendations.
* Atmospheric pressure
* Water density
* Initial tissue loadings
* Descent rate
* Breathing gas
* Ascent rate
In addition, Buhlmann recommended that the calculations be based on a slightly deeper bottom depth.

### Dive computers

Buhlmann assumes no initial values and makes no other recommendations for the application of the model within dive computers, hence all pressures and depths and gas fractions are either read from the computer sensors or specified by the diver and grouped dives do not require any special treatment.

## Versions

Several versions and extensions of the Bühlmann model have been developed, both by Bühlmann and by later workers. The naming convention used to identify the set of parameters is a code starting ZH-L, from Zürich (ZH), Linear (L) followed by the number of different (a,b) couples (ZH-L 12 and ZH-L 16)) or the number of tissue compartments (ZH-L 6, ZH-L 8), and other unique identifiers.
ZH-L16C Parameters (bar minute units) :
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| $h_{N2}$ | 5.0 | 8.0 | 12.5 | 18.5 | 27.0 | 38.3 | 54.3 | 77.0 | 109.0 | 146.0 | 187.0 | 239.0 | 305.0 | 390.0 | 498.0 | 635.0 |
| $a_{N2}$ | 1.1696 | 1.0 | 0.8618 | 0.7562 | 0.62 | 0.5043 | 0.441 | 0.4 | 0.375 | 0.35 | 0.3295 | 0.3065 | 0.2835 | 0.261 | 0.248 | 0.2327 |
| $b_{N2}$ | 0.5578 | 0.6514 | 0.7222 | 0.7825 | 0.8126 | 0.8434 | 0.8693 | 0.8910 | 0.9092 | 0.9222 | 0.9319 | 0.9403 | 0.9477 | 0.9544 | 0.9602 | 0.9653 |
| $h_{He}$ | 1.88 | 3.02 | 4.72 | 6.99 | 10.21 | 14.48 | 20.53 | 29.11 | 41.20 | 55.19 | 70.69 | 90.34 | 115.29 | 147.42 | 188.24 | 240.03 |
| $a_{He}$ | 1.6189 | 1.383 | 1.1919 | 1.0458 | 0.922 | 0.8205 | 0.7305 | 0.6502 | 0.595 | 0.5545 | 0.5333 | 0.5189 | 0.5181 | 0.5176 | 0.5172 | 0.5119 |
| $b_{He}$ | 0.4770 | 0.5747 | 0.6527 | 0.7223 | 0.7582 | 0.7957 | 0.8279 | 0.8553 | 0.8757 | 0.8903 | 0.8997 | 0.9073 | 0.9122 | 0.9171 | 0.9217 | 0.9267 |
ZH-L 12 (1983)
* ZH-L 12: The set of parameters published in 1983 with "Twelve Pairs of Coefficients for Sixteen Half-Value Times"
ZH-L 16 (1986)
* ZH-L 16 or ZH-L 16 A (air, nitrox): The experimental set of parameters published in 1986.
* ZH-L 16 B (air, nitrox): The set of parameters modified for printed dive table production, using slightly more conservative “a” values for tissue compartments #6, 7, 8 and 13.
* ZH-L 16 C (air, nitrox): The set of parameters with more conservative “a” values for tissue compartments #5 to 15. For use in dive computers.
* ZH-L 16 (helium): The set of parameters for use with helium.
* ZH-L 16 ADT MB: set of parameters and specific algorithm used by Uwatec for their trimix-enabled computers. Modified in the middle compartments from the original ZHL-C, is adaptive to diver workload and includes Profile-Determined Intermediate Stops. Profile modification is by means of "MB Levels", personal option conservatism settings, which are not defined in the manual.
ZH-L 6 (1988)
* ZH-L 6 is an adaptation (Albert Bühlmann, Ernst B.Völlm and Markus Mock) of the ZH-L16 set of parameters, implemented in Aladin Pro computers (Uwatec, Beuchat), with 6 tissue compartments (half-time : 6 mn / 14 mn / 34 mn / 64 mn / 124 mn / 320 mn).
ZH-L 8 ADT (1992)
* ZH-L 8 ADT: A new approach with variable half-times and supersaturation tolerance depending on risk factors. The set of parameters and the algorithm are not public (Uwatec property, implemented in Aladin Air-X in 1992 and presented at BOOT in 1994). This algorithm may reduce the no-stop limit or require the diver to complete a compensatory decompression stop after an ascent rate violation, high work level during the dive, or low water temperature. This algorithm may also take into account the specific nature of repetitive dives.
* ZH-L 8 ADT MB: A version of the ZHL-8 ADT claimed to suppress MicroBubble formation.
* ZH-L 8 ADT MB PDIS: Profile-Determined Intermediate Stops.
* ZH-L 8 ADT MB PMG: Predictive Multi-Gas.