The VPM Algorithm
Copyright 1999 - 2004, by Eric Maiken
VPM Algorithm DetailsThe VPM algorithm has been undergone two major updates since the programs available on this web site were written. The first updates, made in 1999-2001 extend the VPM to repetitive diving, as detailed in the publications by Yount, Maiken, and Baker (this has been dubbed VPM-A). In 2003, Baker introduced VPM-B, which systematically decreases ascent gradients, thereby extending shallow stop times.
The following material relates primarily to the original open source code VPM-O,
which predates VPM-A. Most of the concepts do, however, carry over to the
implementation of the VPM that is presently used in commercial decompression
Why are VPM Decompression Tables so Similar to the RGBM Tables?
Why have VPM tables always been so similar to Bruce Wienke's RGBM tables?
Until 2002, this was simply because the RGBM was essentially the same as the VPM
for a single decompression dive. Even though Wienke claims to have "abandoned"
VPM, his publications and publicity from vendor partners belie this
as marketing over substance. Wienke apparently still uses core elements of Yount and Hoffman's
VPM algorithm as a basis for the RGBM. Even today, in 2004, it can be
demonstrated from commercial programs that the "full-up" RGBM is still
underpinned by Yount and Hoffman's iterative algorithm. With the wide
distribution of open source VPM, Wienke was placed under pressure
to differentiate his product by customers who had paid for material that could
be obtained virtually for free. Since 2002, this has resulted in a new RGBM
model, publicized in dive industry print and venues. Nonetheless, as
demonstrated by the close correlation of ascent data for VPM and RGBM, this work has
actually only resulted in incremental adjustments of the model. You pay your
money and you take your chances.
Comparison of the VPM to Conventional Decompression Procedures
VPM tables handle the in and out gassing of dissolved gas in tissues the same way as conventional neo-Haldane calculations do. That is, parallel compartments with exponential half-times ranging from minutes to hours are used to model the uptake and elimination of inert gas by the body. This is in and off gassing is handled symmetrically in all of my programs. The divergence of the VPM from conventional calculations is in the details of how a diver's ascent is controlled. Rather than setting limits on the maximum pressure ratio/difference between gas dissolved in tissues and ambient pressure (supersaturation), ascents are limited by controlling the volume of gas that evolves in the body due to the inevitable formation of bubbles. As long as this volume is kept smaller than a certain "critical volume," it is presumed that a diver's body has the ability to tolerate the bubbles. If the volume of bubbles exceeds the critical volume, the diver is at risk of a pain-hit or worse. The volume of the gas in bubbles is related to the product: (number of bubbles) x (Gradient) x (growth time). The number of growing bubbles is set by the maximum compression encountered on a dive. This crushing pressure is related to the deepest depth of the dive as well as the descent rate and gas mixture. All of the programs on this site directly relate pCrush to the maximum depth. The gradients and bubble growth time are controlled by the ascent schedule, with the surface explicitly considered the last decompression stop.
Rather than using tens or hundreds of arbitrary of parameters to generate
ascent schedules, the main result of the VPM is the replacement of the
ascent-limiting matrix of M /a-b values with only four constants, corresponding
to measurable physical and physiological quantities. In the BASIC programs, they are found in SUB
DIVEDATA. The minimum bubble radius excitable into growth ro = ro,
the skin tension of bubble nuclei gamma = g , the nuclear
crushing tension gc = g c, and the maximum
tolerable volume of bubbles, which is proportional to lambda = l. For the hour-long time scales treated by this program, the nuclear
regeneration time (see Yount's eq. 2) is essentially infinite, and hence,
not used. From these constants, critical gradients G are formed in SUB DIVEDATA
on the first iteration and then in SUB PNEW on subsequent iterations. The critical gradients limit ascents because they are
directly related to the rate of bubble-growth by the diffusion equation.
Benchmarking the VPM
By duplicating Yount and Hoffman's results, I mean that the open source programs calculate tables that look like theirs if the bubble parameters are set to: (lambda = 7180 fsw min, gamma = 17.9 dyne/cm, gc = 257 dyne/cm, ro = 1 um). For example, the deco profile generated by the BASIC VPM programs for the air dive 200 ft for 60 min is similar to the profile published as Yount & Hoffman FIG. 1 in ref. 1. The program's no-stop air limits duplicate FIG. 2, while FIGS. 3 and 4 are also well fit.
The O2 Window and the VPM
It's best to open the O2 window as wide as possible and as early as possible in the ascent. However, with a limited number of stages, and short deep stop times, remember that because the volume of bubbles also depends on growth time, you shouldn't sacrifice high ppO2 on the longer shallow stops for an early switch. Try coming onto nitrox 50% or 50/50 at 70ft and pure O2 at 20 ft. You do the tox calculations. Inert gas management is also important, with long decompression dives favoring high helium content in decompression mixes.
Mixed Gas and
Repetitive Diving and the VPM
Using highly soluble gases such as argon during ascent can lead to bubble growth even though the tissue partial pressures of other inert gasses is reduced via lowered inspired partial pressure. That is, soluble inert gases such as argon, sulfur hexaflouride, etc. can act as bubble amplifiers during or after deco. This is clearly one area where a supersaturation view is naive and a full bubble mechanical calculation would be complex.