Tap here
for menu

New Jersey Scuba Diving

Bananas!

New Jersey Scuba Diving

I'm looking for recent dive/fishing reports of the Radford. If you've been there in the last year or two, I'd like to hear what you found. In particular, where is the stern now? I can find no reports since 2012.

User Manual

D-Plan

D-Plan Is my own take on Buhlmann's classic decompression algorithm. I first became interested in writing my own after my dive computer 'bent' me on an otherwise uneventful normal dive. I had done this dive dozens of times, I did it the day before, and this one was no different, I was fine. I went home, put the profile in my fancy commercial deco software, and lo and behold, it 'bent' me too ! As near as I can tell, neither one was giving me any credit for nearly 24 hours of surface interval from the previous day. That's pretty bad, I stopped trusting either one, but especially the software. There's just no excuse for that. The authors clearly spent more time on pretty graphics than actually getting the program right !

So I decided to 'roll my own'. The equations are simple enough - exponential uptake, allowable over-pressures, etc etc. In fact the instructions I originally followed are posted in the References section at the end of this manual. But it is not that simple, and I made it even harder for myself - I wanted a program that would do just about anything - any gas mix, any profile, any equipment, from fully automatic to fully manual.

Predicting complete decompression schedules turns out to be fiendishly tricky. Your dive computer doesn't even try to do it - it just tells you go up to 30 feet and hang for 5 minutes it says nothing about 'then go to 20 feet and hang for half an hour, then go to 10 feet and ...' Because of this, I also wanted a program that could generate entire decompression tables, not just single dive profiles. D-Plan does that too, with ease.

So here is the end result. I have tested it exhaustively, and have not seen it obviously 'screw up' in a long time. But that is not proof that it is correct. With a program like this, you can't prove it's right, but it just takes one example to prove it's wrong. Still, I trust this more than I trust someone else's programming. And if I do find something that doesn't seem quite right, I can go in, study it, understand it, and fix it if need be. To that end, the program can actually be told to 'spill its guts' as it runs, and I have left this feature open to you as well. Try that with your commercial software.

D-Plan has decompression models and conservatism options far in excess of any other decompression software. This is for the purpose of experimentation. One can compare many different decompression models and schedules quickly and easily. Many of the decompression models are of purely historical interest, while others are mainstream and current, and some of the conservatism options are the latest thinking. There are no "bubble models" here, at least not yet. In my opinion they have too many arbitrary assumptions and fudge factors, and too much complexity to be worth the considerable trouble it would take to get one working.

The Control Panel is very dense, with over 100 controls, but you don't need to be concerned with most of them. Simply click on Reset and all settings will return to defaults. Defaults include:

The program interface is divided into several panels of user-selectable options. The interface is primarily point-and-click, allowing for quick what-if type analysis. Results are displayed in a new browser window or tab, so they can be easily printed or saved. I think this is the best and easiest-to-use of any decompression modeling software I have seen, and I've seen a lot of them. Some of even the expensive commercial programs have interfaces so bad that they are almost unusable. I find that fancy graphical interfaces actually just get in the way. There are no graphics here, all inputs are specified as numbers and clickable options, and all results are displayed as printable ( save-able, cut-and-paste-able ) text.

The program implements all three versions of Buehlmann's ZH-L16 algorithm, as well as the compartment 1/1b option. This is the most widespread and widely accepted decompression algorithm in the world. This particular implementation utilizes the closed-form solution to the Shreiner equation, rather than messy slow numerical integration. It is therefore very fast and efficient, and avoids the cumulative calculation errors of many other programs. Whether or not I really got it right is another story, however - D-Plan may just be quickly calculating very precise wrong answers - no amount of testing will ever make me 100% certain.

All program inputs are rounded to the number of decimal places shown in the default values before any calculations. Specifying more decimal places than shown is simply false precision, and is rounded-off. Internally, the program does all calculations in full precision, but then results are rounded-off to a believable number of decimal places, for example, full minutes. This can result in some anomalies, such as apparently instantaneous ascents during decompression, and columns of numbers that don't seem to add up. This is no cause for concern - the program carries everything in full precision during all calculations.

D-Plan is optimized for the type of diving I do, under the conditions that I expect, with the equipment I would use. That is to say, it is for Northeast wreck diving. Therefore, it defaults to sea level, salt water, unlike some other expensive decompression programs which annoyingly insist on cave diving conditions. However, the program can handle the craziest saw-tooth yo-yo profile you can come up with, so should also be useful for cave diving.

The program will automatically handle a single bottom gas and up to three decompression gases, equating to a set of tanks on your back and one or two stage bottles - a typical Northeast rig. More complex schedules, as for extreme deep technical dives or cave dives, can be input and processed manually. For example, by specifying a different gas mix at every depth, you can use as many deco mixes as you like, although the program can only track volumes for the three mixes on the panel, everything else gets lumped together under 'Other'.

There is a great deal of logic to conveniently duplicate common-sense Northeast diving practices. However, all of the convenience settings may be disabled, allowing full manual control of the program using waypoints. Left to its own devices, the program will do its utmost to generate safe schedules, but in full-manual mode you can easily generate Bent schedules and complete disasters. This is useful for checking other programs or real-world profiles. D-Plan calculates oxygen exposures during dives and O2 credits for surface intervals.

Buhlman's algorithm has no built-in depth limit. D-Plan has a maximum depth of 421 feet, based on the built-in allowable PO2 range. However, such extreme depths are poorly understood, there may be unknown factors at such depths that upset Buhlmann's model. I had a wealth of data to compare and validate down to 200 feet, which I have done. I had some data to correlate down to 300 feet, but beyond that we're going on faith.

Much of the data I used for verification was in the form of technical decompression tables given to me by someone who used them without incident for many years. These tables were laboriously compiled by hand from runs of an old old program called Z-Plan, a program that I have found to contain errors. However, Z-Plan's errors all stack up on the safe side, so it is not actually dangerous, it is just not quite right. The important thing is that these tables were all used in the real world, and proved to be safe. D-Plan can duplicate them all, within reasonable limits. I have dived several D-Plan decompression profiles myself, without incident, and they agreed pretty well with my dive computer. But I admit that I don't do that kind of diving any more, so this is mostly all theory to me now.

D-Plan is the only automatic decompression table generator I have ever seen, although I've heard others do exist. Normally it requires many single runs and then a great deal of data collation to create a decompression table. D-Plan will do it with a few clicks of the mouse. You can generate many different scenarios in just seconds, with no setup or transcription errors. This could include: lost deco gas for open circuit, or regular and open-circuit bailout tables for a rebreather.

A password is required to unlock all the functions, but you may experiment with it in many useful ways without one:

If any of these restrictions are violated, the program simply quits. In this mode, the output is slathered with warnings and disclaimers. Remember, this is really just a whole lot of complicated mathematical theory that may have no relation to your own flesh-and-blood body !



Waypoints

Dive Waypoints are entered in the following formats:

flag
Depth
Depth Time
Depth Time FO2
Depth Time FO2 FHe
Depth Time FO2 FHe flag
' comment

Each waypoint is 1-5 items separated by spaces. One waypoint per line. Blank lines are ignored. Users are limited to 50 waypoints per batch. Depths are in feet. Times are in minutes. There is no time limit, although very long decompression times may cause program abort.

If Time is set to -1 ( or omitted ) from any waypoint, the program will attempt to calculate a sensible time for that stage. This is generally the no-deco time to the next stage. If the next stage is to conclude the dive, then the program will generate the no-deco time for that depth, assuming it is possible. This might do exactly what you hoped, like calculate the no deco time for the depth, or it might do something you didn't expect at all. If that happens, it will be pretty obvious. Or it may simply fail to calculate anything at all. There's an old programming adage: Garbage in - Garbage out.

Gas mixtures are specified as decimal values between 0.00 and 1.00. Gas values are optional. If no gas values are given, the program begins with the default values specified in Equipment. If just one gas is given, Nitrox is assumed, fHe = 0.00. If two gases are given, Trimix ( or Heliox ) is assumed. Gas mixes are carried over from one waypoint to the next.

At times the program will change the gas mix itself, overriding whatever the point might have inherited from its predecessor. An obvious example is deco gas switches. Rebreather modeling is also done this way, with the rebreather routine calculating new gas mixes at every point based on the Equipment settings.

PO2 at any stage in a dive is limited from 0.12 to 1.65 Atm. PO2s outside this range will cause an immediate program abort. Minimum FO2 is 0.05. There are no enforced limits on helium or nitrogen - so you can narc yourself to heaven.

By default, all waypoints in a series are assembled into a single multi-level dive. To create repetitive dives, insert a waypoint with a depth of 0 and a time for a surface interval. If the surface interval time is omitted or set 'auto', the program will generate a minimum useful surface interval for you. Surface intervals default to air, but may also use gas mixes, to simulate very bad days.

To reinitialize the algorithm between dives, as for creating dive tables, insert a waypoint of 'reset'. To stop the program from reading more input, insert a flag of 'end'.

Manual gas switches may be inserted with zero-time waypoints if desired. Gas switches are assumed to be at the end of an ascent or the beginning of a descent. See Decompression below.

Rebreathers have a few extra options. To simulate open-circuit bailout on a rebreather dive, insert a waypoint of 'ocb'. See Equipment below for details. To override the O2 setpoint of a CCR, add the new setpoint as a fifth waypoint item. You can put 0.00 0.00 for the gas mix, the CCR ignores this and calculates its own gas mix. The new value will hold for the current segment of the dive only, then revert to the default values.

Comments may be inserted by placing a single quote at the beginning of a line. Any line may be commented-out.

Some Waypoint examples:

A Profile example:

The default set of waypoints ( at right ) is as follows:

The program will automatically supply any needed surface points. This generates the following output for the two dives:

Initialize : Altitude = 0 ft, FO2/FHe = 0.21 / 0.00

stage      depth   time  time   FO2/FHe    PO2   PN2   Vol   note:
-----      -----   ----  ----  ---------  ----  ----  -----  -----
Descent to   140    3.3     3  0.21/0.00  1.10  4.14    3.8
Waypoint     140   20.0    23  0.21/0.00  1.10  4.14   73.4  DC= 22'
Norm Stop     20    4.0    30  0.21/0.00  0.34  1.27    4.5  PR=2.14
Norm Stop     10    7.0    38  0.21/0.00  0.27  1.03    7.3  PR=2.04
Surface        0    0.0    39  0.21/0.00  0.21  0.79    0.0  PR=2.00

        Total Run Time  = 39 minutes
        Pulmonary O2    = 25 OTUs
        CNS O2 single   = 9.0%
        CNS O2 24hour   = 8.5%
        END             = 140 ft (N2 only)

        Total Gas       =  92 cubic feet

Srfc Intvl     0   90.0   129  0.21/0.00  0.21  0.79    0.0

Repetitive dive:

stage      depth   time  time   FO2/FHe    PO2   PN2   Vol   note:
-----      -----   ----  ----  ---------  ----  ----  -----  -----
Descent to    80    2.3     2  0.32/0.00  1.10  2.33    0.7
Waypoint      80   25.0    27  0.32/0.00  1.10  2.33   59.9  DC=  0'
Safety Stop   15    5.0    34  0.32/0.00  0.47  0.99    5.1  PR=1.43
Surface        0    0.0    35  0.21/0.00  0.21  0.79    0.0  PR=1.64

        Total Run Time  = 35 minutes
        Pulmonary O2    = 30 OTUs
        CNS O2 single   = 10.9%
        CNS O2 24hour   = 18.7%
        END             = 140 ft (N2 only)

        Total Gas       =  68 cubic feet

In addition to the dive profiles, all other relevant input parameters are echoed back in a single header section, similar to the following:

D-Plan 1.0

Program Settings:

    Buehlmann ZH-L16B 1990 (1b)

    Open-Circuit: SAC = 0.70 cfm
    Salt water: 33 ft/Atm
    Sea Level ( 1.000 ATA )

    Descent Rate:   30 fpm ( depth: 0-60 ft )
                    60 fpm ( depth: 60+  ft )
    Ascent Rate:    30 fpm ( depth: 0-60 ft )
                    60 fpm ( depth: 60+  ft )

    Deco Stops from 10 ft at 10 ft intervals

    PH2O = 0.0618 Atm ; PCO2 = 0.0526 Atm ; RQ = 0.85

Dive Waypoints: 
 
     Initialize  Depth  Time   FO2   FHe  Equipment
     Waypoint     140     20  0.21  0.00  Open-circuit 
     Srfc Intvl     0     90  0.21  0.00  Open-circuit 
     Waypoint      80     25  0.32  0.00  Open-circuit 
     Waypoint      15      5  0.32  0.00  Open-circuit 

Results generated 0000-00-00 00:00 PM

This would equate to a single day of diving, with the second dive calculated as repetitive after the first. The Profile at right substitutes a reset for the surface interval. This will cause the second dive to be calculated independently of the first, not repetitive. This is not the same as two consecutive days, in this case, the first dive has no effect whatsoever on the second. To make a multi-day profile, insert very long surface intervals between the days:

Longer surface intervals are possible, but it really doesn't matter after 3 days.



Table Generator

The Table Generator option will automatically create a decompression table for the given input parameters. These are fairly self-explanatory: a single depth is chosen, and dives of varying length are simulated and assembled into a concise table, as shown below:

Dive Table: xxx ft (ending runtimes)
Open-circuit, PO2=0.97, PN2=3.66

Time ->  10  15  20  25  30  35  40  45  50  55  60   O2/He
Depth | --- --- --- --- --- --- --- --- --- --- ---  ------
 v  0 |  16  23  30  37  45  53  62  70  79  87  96   21/ 0
   10 |   ^  23  30  37  45  53  62  70  79  87  96   80/ 0
   20 |   ^   ^  26  32  38  45  51  58  65  72  80   80/ 0
   30 |   ^   ^   ^   ^   ^  41  47  53  59  65  72   80/ 0
   40 |   ^   ^   ^   ^   ^   ^   ^   ^   ^   ^  66   21/ 0
    :     ^   ^   ^   ^   ^   ^   ^   ^   ^   ^   ^ 
  xxx >  13  18  23  28  33  38  43  48  53  58  63   21/ 0

======  === === === === === === === === === === ===  ======
V.main:  38  54  70  86 102 118 134 150 167 183 201   21/ 0
V.deco:   0   2   4   7   9  13  17  21  25  28  32   80/ 0

 % CNS:   4   7   9  12  14  18  22  25  29  33  36  single
 % CNS:   4   6   9  11  14  17  20  23  27  29  32  24hour
  OTUs:  11  18  25  33  41  51  60  70  80  89  98 

The top row is planned bottom times, and the first column is depths. To use the table, follow the arrows: go down the first column to the bottom depth ( x'ed out here. ) Then move across to the column representing the planned bottom time. From there, you proceed up the column to each decompression stop. So moving through the table is much like moving through the dive.

Times are ending run times - the time at which you finish the current stop and move to the next. So for the 35 minute dive, you leave the bottom at 38 minutes, and proceed up to the first stop at 30 ft, leaving there at 41 minutes for the next stop at 20 ft, and so on. The 0 feet or surface level shows the total dive run time.

Gas mix at each stage is shown in the right-most column, and other useful information is tabulated below each dive column. This table is generated for an air dive using an 80% O2 deco mix. Tables may also be generated showing actual stage or segment times. This does not generate usable dive tables, but may be useful for comparative purposes.

The Net Bottom Times option will subtract descent times from bottom times. This makes it easier to compare results with published tables that may have been generated this way. This option can also be used for Dive Profiles.

Open-Circuit Bailout is a rebreather option that will switch to open-circuit at the end of the bottom time. See rebreathers for details. It has no effect on open-circuit dives, or user waypoints.

The Table Generator sets Decompression Stops and Automatic Gas Switches to enabled, regardless of the user setting. Automatic Safety Stops and Extended Last Deco Stops are disabled. Other decompression options including deco mixes are user-selectable. Model options are restricted to ZH-L16B and ZH-L16C, as it is assumed that you are not just fooling around. Model Options and Conservatism are still selectable, but you should use the defaults. Deep Stops are encouraged. Show Profiles will cause the underlying profiles to be displayed along with the table.



Equipment & Environment

Altitude needs no explanation. If altitude is greater than 0, fresh water will be selected automatically. Otherwise, you can select fresh or salt water at sea level. All oceans are salt water, very few other bodies are not freshwater. The Black Sea has an altitude of sea level, and a salinity approximately half-way between full salt and fresh, so you could use either setting. Negative altitudes are not permitted, if you want to dive the Dead Sea, you're on your own. Altitude is modeled up to 10,000 feet according to NOAA standards.

D-Plan can use either Imperial ( ft, cuft ) or metric units. Checking Metric will convert all the defaults on the control form to their approximate metric equivalents, but only if you have not already changed them yourself. Internally, all pressures are accounted in atmospheres, so the choice of linear depth unit is largely irrelevant. However, as meters are a lot coarser than feet, results between the two systems my differ slightly; all are valid.

Down at the bottom of the form by the buttons is one more 'Environment' parameter - Time-to-fly altitude. This is the cabin pressure of the aircraft in thousands of feet. FAA regulations require passenger airliners to be pressurized to 8000 feet, although they cruise in the thinner air much higher at 30-40 thousand feet. Newer aircraft are often pressurized to 6000 feet, or even less, for increased passenger comfort.

In keeping with my 'fiddle with everything' philosophy, you can use the default, or set your own up to 10000 feet, the limit of my altitude model. You can also put in the actual altitude of an unpressurized aircraft. The program uses its decompression calculations to determine a 'Stop Time' to safely ascend to what equates to a negative water depth. Conservatism options are not applied to TTF. Interestingly, the longest TTF I have been able to generate for 8000 feet is 11 hours, for any dive profile, including completely unrealistic full saturation dives. For 6000 feet, that drops to 8 hours. More typical TTFs are on the order of 1-2 hours, far short of the 12-24 hours that are recommended. Myself, I think I would go sight-seeing for a day, and not be in too great a rush to get on a plane.

Four types of scuba equipment are supported:

Open Circuit, or regular scuba tanks and regs, is the default. When Open Circuit is selected, gas percentages specified in defaults, waypoints or the Table Generator are for actual breathing gas.

CCR stands for Closed-Circuit Rebreather. When CCR is selected, gas percentages specified in defaults, waypoints, or the Table Generator are for diluent, and actual breathing mix is calculated based on the PO2 Setpoints. Physically, this models a device with separate supplies of 100% O2 and suitable diluent.

SCR stands for Semi-Closed Rebreather. There are two types of SCR: constant mass flow (cmf) and variable mass flow (vmf). When either SCR is selected, gas percentages specified in defaults, waypoints, or the Table Generator are for the main supply gas, and actual breathing mix is calculated. The cmf model fairly well approximates the old Draeger Dolphin and similar devices.

If a constant mass flow SCR goes below the minimum PO2 limit, D-Plan will attempt to correct by increasing the flow rate. Physically, this is like hitting the 'Add Gas' button, assuming you have a PO2 warning monitor that just went off. ( The original Draeger had no O2 sensor, but many people wisely upgrade them. ) If successful, the program will print a warning in the profile; if not, the program will go to open-circuit bailout as a last resort to salvage the profile. Whether or not you think such a profile is realistic for actual diving is up to you. If you don't know the answer to this question, then you shouldn't be using a rebreather.

Warning: There is no way to accurately predict breathing gas fractions for a constant mass flow rebreather. Therefore, there is no way to calculate accurate decompression schedules for a constant mass flow rebreather, and the profiles generated here should be considered no more than very rough estimates.

There are many variations of semi-closed variable flow rebreather. Some use a single gas supply, others use two gases similar to a CCR. The model here is a single-gas semi-closed rebreather, with a simple re-arranging of the constant mass flow equations to attempt to hold a higher PO2 setpoint. Such a device has a PO2 limit determined by the gas used, which it cannot exceed.

During descents, rebreathers are modeled as running at the mix or diluent gas fractions directly. This roughly models the loop filling with gas as the pressure increases, and allows for calculation of diluent usage. During Ascents, rebreathers are modeled as constant-mix devices with the starting gas fractions. Neither of these is strictly correct, most rebreathers are capable of holding their setpoints quite well during ascents and descents, but it keeps things simple for the calculations. Mix is re-calculated once at the Ascent Rate Split Depth, since that is a convenient place in the program to do so and requires just one extra line of code. All this may not be quite right, but it is simple, and given the time lags for the sensors and equipment, it mat not be as wrong as you'd think. At any rate, given the short duration of these segments, it should have little effect on the overall profile except for very brief bounce dives, which you shouldn't be doing on a rebreather anyway! For longer decompression dives that are dominated by the bottom time, with ascents that are chopped up into Deco Stops, I think the inaccuracies in ascent/descent modeling are inconsequential, but I don't know for certain.

Below the equipment selection are various equipment parameters. SAC is the surface air consumption rate, in cubic feet per minute. SAC is used to estimate gas consumption for open-circuit. The default value is a good guess if you don't know yours. Smaller persons and women may want to use 0.6, and big people could use 0.8.

FO2 Main and FHe Main is used to specify your main gas mix. This is your bottom mix for open circuit, your SCR gas, or your diluent for CCR. This value can be over-ridden in waypoints, for travel gases, odd deco mixes, etc, however, doing so will force a rebreather to open circuit mode for that segment.

O2 Rate is the user's O2 consumption rate for all rebreathers, also in liters per minute. The default value is a good guess if you don't know yours. These values are used to estimate steady-state mix percentages and gas consumption.

Loop Vol is the volume of the rebreather breathing loop, including your own lungs. It is used to estimate gas used to fill the loop during descents, for all rebreathers. The default is a good guess, use a more accurate number if you have one, but it makes little difference.

SCR Flow is the mass flow rate of the constant mass flow rebreather orifice, in liters per minute. It is also used as the base flow rate for the variable mass flow rebreather.

The PO2 Boost setting controls how far a variable-flow rebreather will go in boosting the PO2. A setting of 0 is equivalent to a cmf rebreather, while a setting of 1.0 would be open circuit. A limit of 0.9 is imposed, resulting in approximately half the open-circuit gas consumption.

The next two parameters are PO2 setpoints for CCR. The shallow setpoint is used at depths shallower than the split depth, while the deep setpoint is used at depths greater than the split depth.

For a CCR on open circuit bailout, if 'use O2 for OCB' is checked, a hidden fourth deco mix of 100% O2 is enabled, simulating use of the CCR O2 bottle. Bailout will begin on diluent, and ( if set ) switch to O2 as dictated by the max PO2 decompression setting ( not the CCR PO2 setting. ) Any other available deco mixes will also be used, including 'off-board' O2, which will be preferred to 'on-board' O2 if available. SCR bailout is on the main gas and any available deco gases.

An SCR may not violate its gas mix MOD, and a CCR may not violate its diluent's MOD, even though in reality you might get away with it. To 'pre-breathe' a rebreather, use a depth of 1 foot. If a decompression gas is selected with a rebreather, open-circuit decompression will be used when possible, so be aware of this setting.



Models

D-Plan has a wide array of decompression models to choose from. All models run within the same neo-Haldanian framework.

Buehlmann's 1990 ZH-L16B model is designed for pre-dive planning, and is the most widely used decompression model in the world. The ZH-L16C version is designed for real-time use in dive computers, and is slightly more conservative.

ZH-L12C and ZH-L8C are ZH-L16C with either the 4 or 8 longest compartments omitted, as is commonly done in (older?) recreational dive computers. This has little or no effect on recreational dive profiles, but has a very real effect on technical and saturation dive profiles. This points out why you should not push your equipment beyond it's designed uses, or trust your dive computer too much, as you really don't know exactly what it is calculating ! Note that none of the ZH-L models are today considered adequate without additional conservatism factors.

A number of other decompression models are listed here, not because they are suitable for real-world use, but are of historic interest:

The 1983 ZH-L12 model is an earlier version based entirely empirical observations. It is more conservative than the later ZH-L16 models, and excessively conservative with regard to helium.

Workman's 1965 model is the earliest of all the modern decompression models presented here. Despite its age, Workman's model produces similar results to Buehlmann's later models, even for helium mixes.

The following models are are incomplete and/or possibly wrong, or simply should not be used:

The ZH-L16A version of Buehlmann's algorithm was the prototype for the other two, and is not considered safe for real use, despite the fact that the differences between all three of Buehlmann's models are negligible once they are chopped-up into a stepped decompression schedule.

Haldane's original 1908 model is the earliest of all decompression models. It is based on five tissue compartments: 5-10-20-40-75 and a constant allowable over-pressure. By default, the model here uses a dangerously high value of 2.0. Use the MaxPR factor to throttle it back to Haldane's final 1.58, or any value you would like to try. At 1.58, Haldane's model turns out surprisingly conservative results for short dives, despite the fact that the it is not considered safe for real use. For long exposures, this becomes quite clear. If Haldane had simply included longer tissue compartments, his model would have been much more realistic. The second Haldane option explores this possibility, with extended tissue compartments and a reduced pressure ratio of 1.58.

The US Navy model of 1955 is interesting for the short and risky schedules it produces - even shorter than their dive tables ( which have clearly been tweaked in the most dangerous cases. ) The first Navy option is purely mathematical, while the second is based on empirical data.

My DCAP model is incomplete. At present I am missing the helium compartment half-times and other details of the algorithm. For the moment, the missing information has been estimated, and I have assumed that DCAP uses the same basic algorithm as Buehlmann and the rest. DCAP has a much greater level of conservatism built into it than any of the other models, for example, automatically generating deep stops for all dive profiles. Therefore, all conservatism factors are disabled with DCAP. The first DCAP option treats helium as slow - the same as Nitrogen. The second DCAP option treats it as fast, as with Buehlmann. The first option appears to be more correct, but results for helium mixes should not be trusted. I really want to get this working.

Both of my DSAT models are completely experimental implementations. They sometimes agree surprisingly well with the PADI RDP, sometimes not. The DSAT algorithm is strictly no-decompression, and somewhat different from the rest, requiring some special-casing in the code. During surface intervals, the DSAT model estimates off-gassing using only the 60 minute compartment. ( This is probably done to account for the short/shallow safety stops they encourage you to take. ) This is not implemented in D-Plan, and there may be other differences as well. Conservatism factors are disabled with DSAT. The first DSAT option uses 7 tissue compartments, the second uses 14.



Model Options

In general, you should leave the following parameters at their default values:

The Z1 / Z1b option selects between a 4 minute or 5 minute fastest tissue compartment for the ZH-L models only. Most decompression modeling is done with the 1b ( 5 minute ) compartment. This has little effect, except in extremely short bounce dives.

RQ is Respiratory Quotient, and may be varied between 0.8 ( Shreiner's medical value, conservative ) and 0.9 ( US Navy value for divers, liberal. ) It has very little effect. Unchecking RQ has the same effect as setting it to 1.00, and actually increases conservatism.

Disabling H2O Effects is useful when comparing results to older decompression programs that do not model alveolar water vapor effects, like Z-Planner. Unchecking H2O Effects has a slightly conservative effect, but for accuracy you should leave it enabled. CO2 effects is similar.

Disabling He Effects causes the program to base its decompression schedules on Nitrogen M-values alone. Effectively, this causes Helium to on-gas at its own (faster) rate, but off-gas at the same rate as Nitrogen, which will have very a conservative effect on helium mixes, but no effect on non-helium mixes. Some decompression models do this by design, and some older softwares may do this also, although it makes little sense to me.



Conservatism

This is where things get interesting. D-Plan offers an assortment of conservatism options for you to experiment with. Each is selected or disabled by the check box, and any or all may be used at once. By default, all conservatism is turned off. There is actually a good argument for that: when planning a dive ( or cutting a table ) you want the fastest schedule that will get you out of the water safely. Conditions permitting, you then extend that in the water - 'on-the-fly' conservatism. If for some reason, you need to hurry up, and we all know that happens sometimes, you can dive the schedule to the edge and still be reasonably safe, whereas a schedule with a lot of built-in padding leaves you wondering what you can do while that shark circles, or the storm builds, or your bladder bursts.

GF-high serves two purposes in D-Plan. If used alone, it is the standard Buehlmann conservatism factor. Mathematically, it specifies how far into the "decompression zone" you are willing to go. 0.20 follows as close to the decompression "floor" as is likely to allow ascent, resulting in unrealistically long deco times, while 1.00 goes all the way to the limit of the model, ie no conservatism at all. Decompression stops regulated solely by this parameter are noted as "GF-hi Stops" in the program output. GF-high is limited to values between 0.20 and 1.00.

GF-low is similar to GF-high. If used alone, it behaves exactly as GF-high, and has the same limits. Like GF-high, extremely low values of GF-low will result in unrealistically long decompression times. Decompression stops regulated solely by this parameter are noted as "GF-low Stops" in the program output.

When used together, GF-high and GF-low become the high and low factors in the Baker Gradient Factor method. In this method, the actual conservatism factor used at any depth lies somewhere between the two, starting out on the first ( deepest ) stop equal to GF-low, and gradually changing to GF-high by the last stop. The effect of this is to generate relatively brief deep stops, without grossly exaggerating shallow stops. Decompression stops regulated by the Gradient Factor method are noted as "GF Stops" in the program output.

PR-High and PR-Low are very similar in concept to Gradient factors, but instead work by limiting the maximum compartment pressure ratio during ascent. ( Whereas classical Gradient Factors work by scaling M-Values. ) Either one can achieve the same result, with pressure ratios being mathematically somewhat easier to implement. Finally, there is an option for whether the 'high' factor should be used at the last stop depth, or at the surface. Using the surface is a bit more conservative.

Decompression stops determined with no conservatism factor applied are noted as "Norm Stops" in the program output.



Decompression Stops

Depth Planner offers two Deep Stop options:

Pyle is an implementation of Pyle's simple in-head calculation for deep stops. Pyle stops tend to be very deep, below what any of the other conservatism factors will reasonably generate, with the exception of ZH-L17TS. You may specify a time between 1 and 10 minutes for Pyle stops. Decompression stops regulated by this parameter are noted as "Pyle Stops" in the program output.

ZH-L17TS adds a "17th" ( actually, "n+1th" ) compartment to any decompression model. This compartment is unnatural, having some very fast characteristics, and some very slow ones. The result is that it generates deep stops, but does not otherwise affect the decompression schedule. The actual ZH-L17TS algorithm is proprietary, so I guessed a nitrogen half-time of 1 minute, and used the a/b factors from the slowest compartment, with pretty good results. Although ZH-L17TS is designed for use with the ZH-L16 models only, you may apply it to any decompression model in the program, although it is not effective on some of them, while others go haywire. Decompression stops regulated by this parameter are noted as "Z17TS Stops" in the program output.

Pyle's method and ZH-L17TS are only means of generating deep stops, they offer no conservatism at lesser depths. At any stage in a decompression schedule, whichever of the selected conservatism methods is strictest becomes the active one. In fact, you can create schedules with so many stops that you may never get out of the water - the results of most combinations are often too conservative to be useful. This compatibility chart might help you get started:

Decompression stop options default to the most commonly-used values. However, if you wish to experiment, you may try a range of options. Unreasonable decompression stop options may interact with conservatism settings to prevent the program from reaching a solution, so some common sense is required here. Unchecking Decompression Stops puts you in manual decompression mode - either input your own stops as waypoints, or the program will go straight back to the surface and report whatever you have done to yourself in red ink pixels.

Stop Depths and Stop Times are self-explanatory. The program will still decompress you, but you will have to enter all stop depths and times as waypoints, with the possible outcome of a violation, or even BENT. There is additionally a semi-automatic mode: you may enter stop depths with a time of 'auto', in which case the program will calculate stop times for you. The shallowest stop depth is roughly the deepest depth from which you are guaranteed to decompress, much deeper than that and instead of decompressing, you are effectively saturation diving, and the program cannot bring you up, no matter how long the stop time. On a realted tangent, he program cannot predict a no-deco time for any depth less than 23 feet, because it is infinite.

I also added an option to extend the last stop. This is is yet another attempt to model real-world diving practices. I always consider my safety stop begins when my deco ends, unless I really have to pee. Extending your hang at this level uses practically no gas, you can do it on almost empty tanks.

There is a strange option 'include ascents in deco stop time' that you should leave enabled. D-Plan is smarter than many other programs in predicting stop times, in that is also figures-in the following ascent time. The effect is small, usually just a matter of moving a minute from one stop to the next, but it can shave several minutes off a very long schedule, and it is correct. You may disable this setting for comparison to other programs.

Related to Decompression Stops are Safety Stops. The program can automatically add a Safety Stop to the end of any no-decompression dive; the user may select the depth and time. No-decompression status is calculated with respect to the surface - 0 feet - so that the dive remains no-decompression even if the stop is blown-off. It would be more aggressive and not strictly wrong to calculate no-deco status to the safety stop depth rather than the surface, but this would potentially turn the safety stop into a deco stop that cannot be blown-off, and you wouldn't know it. The optional Safety Stop could be making a required deco stop. Also, this is not the way dive computers work. You can always try it manually by entering "15 5" as an ending waypoint, and see what kind of deco schedule the program generates around it.

Decompression Mixes

The program may optionally use up to three decompression gases, which will be automatically switched-to at the proper depth during a decompression schedule. Decompression Mix settings are independent of Decompression Stop settings. If selected, the Max Gas Switch Depth option will prevent deco gas switches from being made deeper than the specified depth, regardless of PO2, equipment, or mix. This can be used to conserve deco gas on deep stops, or to avoid using deco gas inadvertently on shallower dives or with a rebreather.

If Automatic Gas Switches is de-selected, you will have to enter your gas switches as waypoints ( which may be zero-time. ) The program will match manually entered waypoint gases to displayed deco gases even if the deco gases are not selected. This way, it can track multiple gas volumes even for completely manual deco schedules.

Manual Decompression

If you would require a more complex decompression schedule, you may disable all automatic decompression settings and enter decompression stops and gas switches manually as waypoints. When entering manual decompression stops, if a waypoint time of 'auto' is used, the program will calculate the necessary decompression time for you, based on whatever conservatism factors you choose. Otherwise, you may specify your own decompression times, and the program will run your hand-made decompression schedule and inform you if you survived or not.

If you do not need to re-specify gas mixes at waypoints, then the 'auto' time may be omitted as well. Thus, you can specify a custom decompression schedule as simply as this, and D-Plan will work out all the necessary stop times for you:

If you omit a time for the dive level, or set it to 'auto', the program will calculate a no-deco time to the surface, regardless of any intervening points. This will defeat the 'Net Bottom Times' setting, as it makes no sense in this context. Needless zero-time waypoints are suppressed from the program output.

Disabling decompression stops disables Pyle and ZH-L17TS deep stops as well, but GF-factors and PR-factors may still be used, as described below:

If a decompression violation occurs during a manual decompression schedule, the program output will note it with the comment "BENT" at the stage at which it occurs. This indicates that the decompression model itself was violated. While according to the program output it is possible to recover from such a situation at subsequent points in a multilevel dive, the reality is not so rosy, and "BENT" at any stage of a dive should be considered BENT for good. A good example of this is that a suitable surface interval will mathematically clear a BENT indication in the program, but obviously not in real life !

If conservatism factors are being employed with a manual decompression schedule and they are violated, the program output will note this as "VIOL". This is not the same as BENT, you are still within the bounds of the decompression model. Unlike a BENT, it is possible to realistically recover from a VIOL.

To go on 100% O2 at 20 feet, push the Max PO2 up to 1.61. Owing to the stepped nature of decompression schedules, this is unlikely to affect any other deco stop/mix combination. You will, however, notice a resultant jump in the CNS figures from the extraordinary exposure. ( The CNS exposure tables are extrapolated a small ways in both directions to account for extraordinary exposures. )



Ascent / Descent Rates

You may specify Ascent and Descent Rates for both deep and shallow segments of a dive, along with a "split" depth in feet. Rates may be set between 10 and 100 feet per minute; no negative numbers. Un-checking the boxes disables Ascent / Descent modeling. This is not a good idea, but is sometimes useful for comparing with old square-profile schedules and softwares. By default, only the first big descent is shown in the profile, the rest are suppressed from the display. If you want to see everything, check 'show'.



Miscellaneous Controls / Error / Reset Buttons & Password

When you have set up all your input parameters, click the ERROR button to generate resulting ERROR. The Reset button resets the interface to default values, including replacing the waypoint information with the example, so save your waypoints elsewhere before using Reset.

False Precision affects the program's display of numbers, but not the actual calculations. This is useful as a 'sanity check', but the extra precision should not be believed - everything about decompression modeling is an estimate. Note that this setting only affects the display of results, internal calculations are always carried out in full precision. This is again more of a 'sanity check' than real accuracy - it allows me to compare numbers between different runs and versions of the program to verify the algorithm.

Trace causes the program to display a running trace of execution. As you can see, some user points generate multiple waypoints. Each item is an actual function name, followed by some useful information. If a function is indented below the function above, that means the second function was called by the first. Functions that are all indented together were all called by the same parent. When the indenting comes back out, that means the parent function has finished execution. There is also color-coding. Grayed-out lines are for test cases or predictions, which are discarded after use, while blue lines are actual committed calculations that become a new waypoint in the profile. Sometimes it takes a lot of tests to arrive at a single new waypoint. The trace only shows the most significant functions, low-level support functions are not shown. Some calculations are simple, like descents, while others may require a great deal of computation, like ascents with heavy decompression. Thankfully, the computer does all the work, and doesn't make math errors ( although I may have in writing the program. ) For more details on program operations, Trace has a page of its own.

The trace was a late addition to the program, which was a mistake, I should have put it in from the beginning. It is an invaluable tool for debugging and optimizing the code. It is also a fascinating look inside the program, showing how complex decompression modeling really is. Remember, every step is carried out for up to 17 compartments, and many basic 'building-block'-type steps are not shown. There are five levels of Trace, each one shows an increasing level of detail. The final level of Trace dumps just about all intermediate calculations, so you can really see what is happening inside the algorithm.

M-values will print out a listing of the M-Values for the selected model, with no deco analysis.

Print Headers Last is self-evident - it inverts the order of program output, so that the most interesting parts come first.

Pressure Graphics causes lovely ASCII-art tissue compartment loading graphs to be drawn before the regular program output. Actually, the graphs are quite interesting and instructive.

Perhaps unintuitively, pressure is on the X-axis, while the pressure compartments are on the Y-axis, ordered by half-time (ht). Pressure is absolute zero at the left edge in order to display partial-pressures. At the top, it is marked in atmospheres, at the bottom it is marked in equivalent feet fsw. At the right edge, each compartment's actual inert gas pressure is displayed in both ATA and fsw.

During a descent, you can see how the fast compartments load up first, but after a while the middle compartments take over. During ascent you can see how the compartments off-gas, and control moves from one to the next until all of them reach an acceptable level for surfacing. Also shown is each compartment's pressure ceiling, which is really the whole point of the program. The deepest of these ceilings determines the stop depth. Conservatism factors result in deeper ceilings, with slower off-gassing and therefore longer profiles. When the last ceiling decreases to 1 ATA or 0 feet, you can surface. Below is a fairly extreme dive profile with decompression that is quite instructive. I have manually added a 'zeroth' point to show the state before the dive begins.


  LEGEND    Model: Buehlmann ZH-L16B 1990
         0  Compartment Inert Gas Pressure
       ---  Controlling Compartment
         @  Compartment Pressure Ceiling
         )  Total Ambient Pressure
         :  Inert Gas Ambient Pressure
         '  PO2
         |  Surface

Stage: (0) Pre-Dive                    (O2/He)=(0.21/0.00) PO2=0.21

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA
 ht +----+----+----+----+----+----+----+----+----+----+----+----+-
  5 |    @  0 |                                               0.76
  8 |    @  0 |                                               0.76
 12 |    @  0 |                                               0.76
 18 |    @  0 |                                               0.76
 27 |    @  0 |                                               0.76
 38 |    @  0 |                                               0.76
 54 |    @  0 |                                               0.76
 77 |    @  0 |                                               0.76
109 |    @  0 |                                               0.76
146 |    @  0 |                                               0.76
187 |    @  0 |                                               0.76
239 |    @  0 |                                               0.76
305 |    @  0 |                                               0.76
390 |    @  0 |                                               0.76
498 |    @  0 |                                               0.76
635 |    @  0 |                                               0.76 
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (1) Descent to xxx ft 4min [4min] (O2/He)=(0.21/0.00) PO2=1.42

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |  @      |   '  0                                   :    1.68  22
  8 | @       |   0                                      :    1.37  12
 12 | @       | 0 '                                      :    1.16   5
 18 | @       0   '                                      :    1.03   1
 27 | @      0|   '                                      :    0.95  -2
 38 |  @     0|   '                                      :    0.89  -4
 54 |  @    0 |   '                                      :    0.85  -5
 77 |  @    0 |   '                                      :    0.82  -6
109 |  @    0 |   '                                      :    0.80  -7
146 |   @   0 |   '                                      :    0.79  -7
187 |   @   0 |   '                                      :    0.78  -7
239 |   @   0 |   '                                      :    0.77  -8
305 |   @   0 |   '                                      :    0.77  -8
390 |    @  0 |   '                                      :    0.76  -8
498 |    @  0 |   '                                      :    0.76  -8
635 |----@--0 |   '                                      :    0.76  -8
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (1) Waypoint   xxx ft 20min [24min] (O2/He)=(0.21/0.00) PO2=1.42

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |         |   '       @                            0 :    5.07 134
  8 |----------------------@----------------------0      :    4.60 119
 12 |         |   '       @                0             :    3.93  97
 18 |         |   '     @            0                   :    3.28  75
 27 |         |   ' @          0                         :    2.69  56
 38 |         |   @       0                              :    2.23  41
 54 |         | @ '    0                                 :    1.85  28
 77 |         @   ' 0                                    :    1.56  18
109 |       @ |  0'                                      :    1.34  11
146 |       @ | 0 '                                      :    1.19   6
187 |      @  |0  '                                      :    1.10   3
239 |      @  0   '                                      :    1.03   1
305 |     @   0   '                                      :    0.97  -1
390 |     @  0|   '                                      :    0.92  -3
498 |     @  0|   '                                      :    0.88  -4
635 |     @  0|   '                                      :    0.86  -5
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  80ft 2min [26min] (O2/He)=(0.21/0.00) PO2=0.72

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |      '  |         @      :      )             0         4.81 126
  8 |----------------------@----------)----------0            4.51 116
 12 |      '  |           @    :      )    0                  3.93  97
 18 |      '  |         @      :     0)                       3.33  77
 27 |      '  |      @         :0     )                       2.75  58
 38 |      '  |   @        0   :      )                       2.28  42
 54 |      '  | @      0       :      )                       1.90  30
 77 |      '  @     0          :      )                       1.60  20
109 |      ' @|   0            :      )                       1.37  12
146 |      '@ | 0              :      )                       1.22   7
187 |      @  |0               :      )                       1.12   4
239 |      @  0                :      )                       1.04   1
305 |      @  0                :      )                       0.98  -1
390 |     @' 0|                :      )                       0.93  -2
498 |     @' 0|                :      )                       0.89  -4
635 |     @' 0|                :      )                       0.86  -5
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     80ft 2min [28min] (O2/He)=(0.21/0.00) PO2=0.72

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |      '  |      @         :      )        0              4.29 109
  8 |      '  |          @     :      )       0               4.21 106
 12 |--------------------@------------)---0                   3.80  92
 18 |      '  |        @       :     0)                       3.28  75
 27 |      '  |      @         0      )                       2.75  58
 38 |      '  |   @        0   :      )                       2.30  43
 54 |      '  | @      0       :      )                       1.92  30
 77 |      '  @     0          :      )                       1.62  20
109 |      ' @|   0            :      )                       1.38  13
146 |      '@ | 0              :      )                       1.23   8
187 |      @  |0               :      )                       1.13   4
239 |      @  |0               :      )                       1.05   2
305 |      @  0                :      )                       0.99  -0
390 |     @' 0|                :      )                       0.94  -2
498 |     @' 0|                :      )                       0.90  -3
635 |     @' 0|                :      )                       0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  70ft 0min [28min] (O2/He)=(0.21/0.00) PO2=0.66

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |      '  |      @       :     )           0              4.25 107
  8 |      '  |          @   :     )          0               4.19 105
 12 |--------------------@---------)------0                   3.79  92
 18 |      '  |        @     :     ) 0                        3.27  75
 27 |      '  |      @       : 0   )                          2.75  58
 38 |      '  |   @        0 :     )                          2.30  43
 54 |      '  | @      0     :     )                          1.92  30
 77 |      '  @     0        :     )                          1.62  20
109 |      ' @|   0          :     )                          1.38  13
146 |      '@ | 0            :     )                          1.23   8
187 |      @  |0             :     )                          1.13   4
239 |      @  |0             :     )                          1.05   2
305 |      @  0              :     )                          0.99  -0
390 |     @' 0|              :     )                          0.94  -2
498 |     @' 0|              :     )                          0.90  -3
635 |     @' 0|              :     )                          0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     70ft 1min [29min] (O2/He)=(0.21/0.00) PO2=0.66

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |      '  |     @        :     )        0                 4.02 100
  8 |      '  |         @    :     )        0                 4.04 100
 12 |--------------------@---------)-----0                    3.72  90
 18 |      '  |        @     :     )0                         3.24  74
 27 |      '  |      @       : 0   )                          2.74  57
 38 |      '  |   @        0 :     )                          2.30  43
 54 |      '  | @      0     :     )                          1.93  31
 77 |      '  @     0        :     )                          1.62  21
109 |      ' @|   0          :     )                          1.39  13
146 |      '@ | 0            :     )                          1.24   8
187 |      @  |0             :     )                          1.14   5
239 |      @  |0             :     )                          1.06   2
305 |      @  0              :     )                          0.99  -0
390 |     @' 0|              :     )                          0.94  -2
498 |     @' 0|              :     )                          0.90  -3
635 |     @' 0|              :     )                          0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  60ft 0min [29min] (O2/He)=(0.21/0.00) PO2=0.59

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |     '   |     @     :     )           0                 3.98  98
  8 |     '   |         @ :     )           0                 4.02 100
 12 |--------------------@------)--------0                    3.70  89
 18 |     '   |        @  :     )   0                         3.24  74
 27 |     '   |      @    :    0)                             2.74  57
 38 |     '   |   @       :0    )                             2.30  43
 54 |     '   | @      0  :     )                             1.93  31
 77 |     '   @     0     :     )                             1.63  21
109 |     '  @|   0       :     )                             1.39  13
146 |     ' @ | 0         :     )                             1.24   8
187 |     '@  |0          :     )                             1.14   5
239 |     '@  |0          :     )                             1.06   2
305 |     '@  0           :     )                             0.99  -0
390 |     @  0|           :     )                             0.94  -2
498 |     @  0|           :     )                             0.90  -3
635 |     @  0|           :     )                             0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     60ft 2min [31min] (O2/He)=(0.21/0.00) PO2=0.59

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |     '   |  @        :     )      0                      3.54  84
  8 |     '   |       @   :     )        0                    3.73  90
 12 |------------------@--------)------0                      3.54  84
 18 |     '   |        @  :     )   0                         3.16  71
 27 |     '   |      @    :    0)                             2.71  56
 38 |     '   |   @       :0    )                             2.30  43
 54 |     '   | @      0  :     )                             1.93  31
 77 |     '   @     0     :     )                             1.64  21
109 |     '  @|   0       :     )                             1.40  13
146 |     ' @ | 0         :     )                             1.25   8
187 |     '@  |0          :     )                             1.15   5
239 |     '@  |0          :     )                             1.06   2
305 |     '@  0           :     )                             1.00  -0
390 |     @  0|           :     )                             0.94  -2
498 |     @  0|           :     )                             0.90  -3
635 |     @  0|           :     )                             0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  50ft 0min [32min] (O2/He)=(0.21/0.00) PO2=0.53

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |    '    |  @      :    )         0                      3.48  82
  8 |    '    |      @  :    )           0                    3.68  88
 12 |------------------@-----)---------0                      3.52  83
 18 |    '    |       @ :    )     0                          3.15  71
 27 |    '    |      @  :    ) 0                              2.70  56
 38 |    '    |   @     :  0 )                                2.30  43
 54 |    '    | @      0:    )                                1.93  31
 77 |    '    @     0   :    )                                1.64  21
109 |    '   @|   0     :    )                                1.40  13
146 |    '  @ |  0      :    )                                1.25   8
187 |    ' @  |0        :    )                                1.15   5
239 |    ' @  |0        :    )                                1.06   2
305 |    ' @  0         :    )                                1.00  -0
390 |    '@  0|         :    )                                0.95  -2
498 |    '@  0|         :    )                                0.90  -3
635 |    '@  0|         :    )                                0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     50ft 3min [35min] (O2/He)=(0.21/0.00) PO2=0.53

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |    '    @         :    )    0                           2.96  65
  8 |    '    |    @    :    )       0                        3.28  75
 12 |    '    |      @  :    )       0                        3.28  75
 18 |----------------@-------)----0                           3.02  67
 27 |    '    |     @   :    )0                               2.65  54
 38 |    '    |   @     :  0 )                                2.28  42
 54 |    '    | @      0:    )                                1.93  31
 77 |    '    |@    0   :    )                                1.64  21
109 |    '   @|   0     :    )                                1.41  14
146 |    '  @ |  0      :    )                                1.26   9
187 |    '  @ | 0       :    )                                1.16   5
239 |    ' @  |0        :    )                                1.07   2
305 |    ' @  0         :    )                                1.00   0
390 |    '@   0         :    )                                0.95  -2
498 |    '@  0|         :    )                                0.91  -3
635 |    '@  0|         :    )                                0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  40ft 0min [35min] (O2/He)=(0.21/0.00) PO2=0.46

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |    '    @      :    )      0                            2.90  63
  8 |    '    |    @ :    )         0                         3.24  74
 12 |    '    |      @    )         0                         3.25  74
 18 |----------------@----)-------0                           3.00  66
 27 |    '    |     @:    )   0                               2.64  54
 38 |    '    |   @  :    )0                                  2.27  42
 54 |    '    | @    : 0  )                                   1.93  31
 77 |    '    |@    0:    )                                   1.65  21
109 |    '   @|   0  :    )                                   1.41  14
146 |    '  @ |  0   :    )                                   1.26   9
187 |    '  @ | 0    :    )                                   1.16   5
239 |    ' @  |0     :    )                                   1.07   2
305 |    ' @  0      :    )                                   1.01   0
390 |    '@   0      :    )                                   0.95  -2
498 |    '@  0|      :    )                                   0.91  -3
635 |    '@  0|      :    )                                   0.87  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     40ft 5min [40min] (O2/He)=(0.21/0.00) PO2=0.46

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |    '@   |      :    )0                                  2.31  43
  8 |    '    |@     :    )    0                              2.70  56
 12 |    '    |    @ :    )      0                            2.88  62
 18 |---------------@-----)-----0                             2.78  59
 27 |    '    |    @ :    )  0                                2.53  50
 38 |    '    |   @  :    0                                   2.23  40
 54 |    '    | @    : 0  )                                   1.92  30
 77 |    '    |@    0:    )                                   1.65  21
109 |    '   @|   0  :    )                                   1.42  14
146 |    '  @ |  0   :    )                                   1.27   9
187 |    '  @ | 0    :    )                                   1.17   5
239 |    ' @  |0     :    )                                   1.08   3
305 |    ' @  0      :    )                                   1.01   0
390 |    ' @  0      :    )                                   0.96  -1
498 |    '@  0|      :    )                                   0.91  -3
635 |    '@  0|      :    )                                   0.88  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  30ft 0min [40min] (O2/He)=(0.21/0.00) PO2=0.40

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |   ' @   |    :   )   0                                  2.27  42
  8 |   '     |@   :   )       0                              2.67  55
 12 |   '     |   @:   )         0                            2.85  61
 18 |---------------@--)--------0                             2.77  58
 27 |   '     |    @   )     0                                2.52  50
 38 |   '     |   @:   )  0                                   2.22  40
 54 |   '     | @  :   0                                      1.92  30
 77 |   '     |@   :0  )                                      1.65  21
109 |   '    @|   0:   )                                      1.42  14
146 |   '   @ |  0 :   )                                      1.27   9
187 |   '   @ | 0  :   )                                      1.17   6
239 |   '  @  |0   :   )                                      1.08   3
305 |   '  @  0    :   )                                      1.01   0
390 |   '  @  0    :   )                                      0.96  -1
498 |   ' @  0|    :   )                                      0.91  -3
635 |   ' @  0|    :   )                                      0.88  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     30ft 7min [47min] (O2/He)=(0.21/0.00) PO2=0.40

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |  @'     |    :  0)                                      1.77  25
  8 |   '  @  |    :   ) 0                                    2.12  37
 12 |   '     |@   :   )    0                                 2.41  46
 18 |   '     |  @ :   )     0                                2.47  48
 27 |-------------@----)---0                                  2.35  44
 38 |   '     |  @ :   ) 0                                    2.13  37
 54 |   '     | @  :   0                                      1.88  29
 77 |   '     @    :0  )                                      1.64  21
109 |   '    @|   0:   )                                      1.43  14
146 |   '   @ |  0 :   )                                      1.28   9
187 |   '   @ | 0  :   )                                      1.17   6
239 |   '  @  |0   :   )                                      1.09   3
305 |   '  @  0    :   )                                      1.02   1
390 |   '  @  0    :   )                                      0.96  -1
498 |   ' @  0|    :   )                                      0.92  -3
635 |   ' @  0|    :   )                                      0.88  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  20ft 0min [48min] (O2/He)=(0.21/0.00) PO2=0.34

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |  @      |  :  ) 0                                       1.75  25
  8 |  '   @  |  :  )    0                                    2.10  36
 12 |  '      |@ :  )       0                                 2.39  46
 18 |  '      |  @  )        0                                2.45  48
 27 |-------------@-)------0                                  2.34  44
 38 |  '      |  @  )    0                                    2.13  37
 54 |  '      | @:  )  0                                      1.88  29
 77 |  '      @  :  0                                         1.64  21
109 |  '     @|  :0 )                                         1.43  14
146 |  '    @ |  0  )                                         1.28   9
187 |  '    @ | 0:  )                                         1.17   6
239 |  '   @  |0 :  )                                         1.09   3
305 |  '   @  0  :  )                                         1.02   1
390 |  '   @  0  :  )                                         0.96  -1
498 |  '  @  0|  :  )                                         0.92  -3
635 |  '  @  0|  :  )                                         0.88  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     20ft 12min [60min] (O2/He)=(0.21/0.00) PO2=0.34

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |@ '      |  0  )                                         1.33  11
  8 |  @      |  : 0)                                         1.54  18
 12 |  '   @  |  :  ) 0                                       1.82  27
 18 |  '      @  :  )   0                                     2.01  33
 27 |  '      |@ :  )   0                                     2.04  34
 38 |-----------@---)---0                                     1.95  31
 54 |  '      |@ :  ) 0                                       1.79  26
 77 |  '      @  :  0                                         1.59  20
109 |  '     @|  :0 )                                         1.41  14
146 |  '    @ |  0  )                                         1.28   9
187 |  '    @ | 0:  )                                         1.18   6
239 |  '   @  |0 :  )                                         1.09   3
305 |  '   @  0  :  )                                         1.03   1
390 |  '   @  0  :  )                                         0.97  -1
498 |  '  @  0|  :  )                                         0.93  -2
635 |  '  @  0|  :  )                                         0.89  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  10ft 0min [60min] (O2/He)=(0.21/0.00) PO2=0.27

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |@ '      :  0                                            1.32  10
  8 |  @      :  ) 0                                          1.52  17
 12 |  '   @  :  )    0                                       1.81  27
 18 |  '      @  )      0                                     2.00  33
 27 |  '      :@ )      0                                     2.04  34
 38 |-----------@)-----0                                      1.95  31
 54 |  '      :@ )    0                                       1.78  26
 77 |  '      @  )  0                                         1.59  20
109 |  '     @:  )0                                           1.41  14
146 |  '    @ :  0                                            1.28   9
187 |  '    @ : 0)                                            1.18   6
239 |  '   @  :0 )                                            1.09   3
305 |  '   @  0  )                                            1.03   1
390 |  '   @  0  )                                            0.97  -1
498 |  '  @  0:  )                                            0.93  -2
635 |  '  @  0:  )                                            0.89  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) GF Stop     10ft 23min [83min] (O2/He)=(0.21/0.00) PO2=0.27

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 |  '      0  )                                            1.00   0
  8 |  '      :0 )                                            1.06   2
 12 |  @      : 0)                                            1.22   7
 18 |  ' @    :  )0                                           1.41  14
 27 |  '   @  :  )  0                                         1.57  19
 38 |  '     @:  )  0                                         1.62  20
 54 |--------@---)--0                                         1.58  19
 77 |  '     @:  ) 0                                          1.48  16
109 |  '    @ :  )0                                           1.35  12
146 |  '    @ : 0)                                            1.25   8
187 |  '    @ : 0)                                            1.16   5
239 |  '   @  :0 )                                            1.09   3
305 |  '   @  0  )                                            1.02   1
390 |  '   @  0  )                                            0.97  -1
498 |  '  @  0:  )                                            0.93  -2
635 |  '  @  0:  )                                            0.89  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    

Stage: (2) Ascent  to  0ft 0min [83min] (O2/He)=(0.21/0.00) PO2=0.21

 P 0.0  0.5  1.0  1.5  2.0  2.5  3.0  3.5  4.0  4.5  5.0  5.5  ATA fsw
 ht +----+----+----+----+----+----+----+----+----+----+----+----+---
  5 | '     : 0                                               1.00  -0
  8 | '     : )0                                              1.06   2
 12 | '@    : ) 0                                             1.21   7
 18 | '  @  : )   0                                           1.41  13
 27 | '    @: )     0                                         1.56  19
 38 | '     :@)     0                                         1.62  20
 54 |--------@)-----0                                         1.58  19
 77 | '     :@)    0                                          1.48  16
109 | '     @ )   0                                           1.35  12
146 | '     @ ) 0                                             1.24   8
187 | '     @ ) 0                                             1.16   5
239 | '    @: )0                                              1.09   3
305 | '    @: 0                                               1.02   1
390 | '    @: 0                                               0.97  -1
498 | '   @ :0)                                               0.93  -2
635 | '   @ :0)                                               0.89  -4
(m) +---+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----
depth (fsw)   0     20    40    60    80   100   120   140   160    


During decompression, the ambient pressure line follows the decompression ceiling back to the surface line. The decompression ceiling is drawn towards the surface line by the inert gas line. When the decompression ceiling is entirely to the left of the surface line, decompression is complete. Conversely, for no-decompression models, the decompression ceiling is fixed, and becomes the no-decompression limit. The PO2 line has no effect, and is just shown for interest. Studying complete sequences of these graphs for various decompression schedules can greatly enhance your intuitive understanding of the decompression process.

About the Program

I originally wrote D-Plan after uncovering serious flaws in a commercial decompression program that I had purchased. The first version was in perl, and I still use it as a benchmark for testing the current version. Before that, I had a spreadsheet that could calculate simple decompression profiles. After I converted the entire website into php, I figured I might as well get rid of all the perl. Some of that was easy, but D-Plan was a monster that I was putting off.

In the process of converting the code, I polished it up and found some minor bugs. The old version of the program slightly underestimated gas volumes, CNS O2, and OTUs. Given the nature of those calculations, the error was too small to matter, especially for recreational diving, but I fixed it nonetheless. I also made some small tweaks that make the program almost unnoticeably more conservative, but more correct. I made the program smarter about reporting gas use, and added options to disable automatic decompression in degrees, so you can fly it as manually as you want. I also added CNS O2 credits for surface intervals, and fixed a glitch in repetetive-dive O2 tracking. I split the SCR option into constant and variable flow versions, and made both of them smarter.

The I decided that the basic architecture had become a mess. So I re-wrote the core of the program in a much better way, and then converted all the features one-by-one to run on the new core. At every step, I tested the new php version against the old perl version, which I had tested exhaustively before, and they produce the same results ( except for the errors, of course! I fixed a few small errors in the old program for the sake of being able to generate exactly matching numbers. )

The name is a tribute to Z-Plan - the original free deco program by William Smithers. The 'D' part of the name started as 'Death', but eventually I started to believe the numbers, and changed it to 'Depth'. That is still just one letter away from death though - don't forget that! Finally, I decided to shorten it to D-Plan.

All that adds up to about 8000 of lines of code, although the core of the program is only about 500 lines, with another 900 lines of essential supporting functions. The rest is i/o routines, models, debugging, and non-essential functions like oxygen toxicity calculations, rebreathers, and conservatism. The program is modular, so that the non-essential functions can be turned off or removed entirely.

If you think there are no more bugs in all that, you are crazy. This whole thing is just a programming experiment - if you use it for actual dive planning, then you are really crazy. What you can use it for is to evaluate the relative effects of using various deco gases, compare different types of equipment, and different decompression models.

My 2 Cents:

Much of the difference between the various models gets lost when all the smoothness of Haldane's exponential ongassing/offgassing model is chopped up into discrete one-minute time steps and 10 foot stop depths. Much of the apparent precision in the results is overwhelmed by real-world uncertainties. Don't believe the last decimal place. Decompression modeling is much more of an art than a science.



References


Search

Disclaimer:

I make no claim as to the accuracy, validity, or appropriateness of any information found in this website. I will not be responsible for the consequences of any action that is based upon information found here. Scuba diving is an adventure sport, and as always, you alone are responsible for your own safety and well being.

Copyright © 1996-2016 Rich Galiano
unless otherwise noted

271614
1507
256

64

since 2016-09-11