Ascent calculation

MV-Plan has changed the way it computes the ascent: when a stop is left, the depth of the first stop, and the way gradient factors apply between the bottom and the surface. The decompression model itself is unchanged: Buhlmann ZHL-16C (or ZHL-16B), with your gradient factors, on real physical pressure.

Direct consequence: most of your plans are slightly shorter than before, by 1 to 3 minutes in general, and by up to 12 minutes on deep trimix rebreather dives. A plan computed with the old ascent no longer recomputes identically.

Why the change

MV-Plan is continuously compared against the decompression engine of Subsurface, the reference free software in diving, over fifty profiles ranging from 12 m to 120 m, on air, nitrox, trimix and rebreather, at sea, in fresh water and at altitude. That comparison showed that the old MV-Plan ascent held three conventions inherited from the original MVPlan which pulled it away from Subsurface, one of them not on the side of caution.

What changed

The ghost minute is gone. Every plan used to end with at least one minute of "decompression stop" at 3 m, even on a dive that owed no decompression at all (20 m for 15 min on air, for instance). That minute was not a choice: it was a flaw in the calculation loop, which counted a minute before checking whether the stop was needed at all. The same flaw added a minute at each level evaluated after the first stop, and sometimes placed the first stop one step too deep. A first stop that is too deep is not harmless: it moves the point where GF Low applies, which makes the gradient factors more permissive on every stop above it. On some profiles, MV-Plan left the water before Subsurface did.

A stop is left when the ascent to the next level is safe. Before each leg of the ascent, MV-Plan plays that leg on a copy of your tissues and checks that the decompression ceiling, on arrival, is indeed above you. If not, it holds the stop one more minute and tries again. That is exactly the Subsurface criterion for Buhlmann.

The ceiling is computed exactly. The gradient factor used to compute the ceiling is the one of the depth of the ceiling itself, not the one of the depth you are aiming for. The difference shows on deep stops: on a 100 m rebreather dive at GF 35/75, leaving 45 m, the old calculation gave a ceiling at 41.5 m and let you ascend, the new one gives 43.1 m and holds the stop. Here too, this is the Subsurface formula.

GF Low applies at the deepest ceiling of the dive, as the tissues produce it, and not at the first stop rounded onto the 3 m grid. GF High applies at the surface, and the interpolation between the two is linear.

The safety stop is named. When a dive owes no decompression, MV-Plan no longer shows a decompression stop. Instead it holds a safety stop, marked as such in the table, whose duration is set in the Settings (3 minutes by default, 0 to hold none). On a dive with decompression, no safety stop is added: the last decompression stop plays that part.

What it does to your stops

A few reference profiles of the project, in salt water at sea level, ascending at 9 m/min to the first stop then 3 m/min between stops, last stop at 3 m. Stop notation: depth:time.

Profile GF Stops before Stops now Runtime
air 20 m / 15 min 30/85 3:1 none 19 -> 17.9 min
air 15 m / 90 min 30/85 6:1 3:11 3:11 105 -> 103.3 min
air 30 m / 30 min 50/80 9:2 6:5 3:11 9:1 6:4 3:11 54 -> 51.3 min
air 40 m / 30 min 50/80 15:1 12:3 9:6 6:10 3:26 15:1 12:3 9:5 6:11 3:25 84 -> 82.8 min
air + EAN50 + O2 45 m / 25 min 50/80 18:1 15:1 12:1 9:3 6:3 3:7 15:1 12:1 9:3 6:3 3:7 50 -> 49 min
TX21/35 60 m / 30 min 35/75 30:1 27:1 24:1 21:1 18:2 15:3 12:4 9:7 6:10 3:17 27:1 24:2 21:1 18:2 15:2 12:5 9:7 6:9 3:16 91 -> 87.7 min
CCR TX10/70 100 m / 12 min 35/75 54:1 39:1 36:1 33:1 30:1 27:2 24:2 21:4 18:4 15:6 12:9 9:13 6:19 3:32 39:1 36:1 33:1 30:1 27:2 24:2 21:4 18:4 15:6 12:9 9:11 6:18 3:30 131.1 -> 124.4 min

The safety stop is not counted in these tables, which are those of the engine alone: on screen, the 20 m for 15 min dive shows a 3 min safety stop at 3 m if you kept the default setting.

Over the 324 reference profiles of the project, the runtime moves from -12.4 to +1.1 min. The largest drops are on trimix rebreather dives between 110 and 120 m, where the ghost minute repeated itself over a good fifteen stops.

Compared with Subsurface

Over the fifty profiles of the comparison, the mean runtime gap between MV-Plan and Subsurface went from 0.85 min to 0.33 min, the maximum gap from 2.30 min to 1.11 min, and the first stop is identical on 47 profiles (20 before). MV-Plan stays longer than Subsurface on 38 profiles; on the others, the gap in favour of Subsurface never exceeds 0.89 min, which is the whole-minute granularity of the stops.

What to do with your saved plans

Your saved plans have not been touched and remain readable. The runtime shown in the list of saved plans is the one frozen when you saved, and is never recomputed.

For each plan you use as a reference:

  1. Open the Saved plans page and load the plan.
  2. Run Calculate Decompression again: loading a plan deliberately clears the old result.
  3. Compare with the old runtime and save it again.

If a plan serves as teaching material or as a printed safety sheet, produce the PDF again: a sheet printed before this change may announce a one-minute decompression stop where MV-Plan now shows a safety stop, or stops slightly longer than the ones computed now.

What did not change

  • The algorithm is still Buhlmann ZHL-16C (or ZHL-16B), with your gradient factors, on the real physical pressure described in New pressure model.
  • Your mixes, your cylinders, your GF presets, your rates and all your settings are kept as they are.
  • Rebreather mode, bailout, gas consumption and the alerts work as before.