Mailing List Archive

Mailing List: techdiver

Banner Advert

Message Display

Date: Tue, 9 Dec 1997 18:26:29 -0500 (EST)
From: "William M. Smithers" <will@tr*.co*>
Subject: ANNOUNCEMENT: ZPlan Dive planning freeware.
To: Tech Diver <techdiver@aquanaut.com>
Cc: Cavers Mailing List <cavers@ge*.co*>

Hi guys,

As Jim Cobb recently mentioned, after a month or so of beta testing by 
members of the rebreather list,  ZPlan is ready for distribution.

You can get or copy from www.fixlink.com/zplan

or by visiting trimix web page (always a good idea):

www.cisatlantic.com/trimix/trimix.html

ZPLan is a full-featured mixed gas deco planning program
that also handles closed-circuit rebreathers, and has
deep stops and other stuff you can't find elsewhere.  
I've included the README file that comes with the download at the
end of this post (it's LONG).

Thanks to all the folks on the rebreather list who 
bombarded me with email until the bugs were fixed.

Special thanks go to Richard Pyle and Leon Scamahorn, for
fundamental input.

Here's the README:


                       ZPlan v1.02b

             (c) Copyright 1997, William M. Smithers

1.0 HISTORY
-----------
It all started when I got a closed-circuit mixed-gas
rebreather, and wanted a fast and efficient way to cut tables
for constant/adjustable PO2 with any combination of O2, Helium,
and N2, using multiple diluents and setpoints during the dive.
I also wanted an easy way to do repetetive dives, the ability
to do open circuit for both bailout and general use, and
to have deep stops, a-la Rich Pyle, and a couple of
advanced CCR features, like the Scamahorn Slide.  

Finally, I get seasick, so if I've got to pull out my computer and 
cut schedules on a rocking boat I want it done as quickly as possible.

I started by trying Dr. X, DPA, Proplanner, Voyager, and Abyss, and found
all of these to be either woefully lacking in Closed Circuit/mixed gas
features, overly simplistic, or too difficult to use.  

I happened to have A.A. Buhlmann's '95 book _Tauch Medizin_ vol 4.
laying around (in German), and decided that if I wanted it done right, 
I'd just have to do it myself.  The resulting program ended up being fairly
full-featured, and very easy on the stomach.  However, it's
not chock-full-o needless graphical eye candy like many of the
other programs - in fact, there are no graphics at all.  The 
entire program runs from a DOS command prompt and uses a 
single configuration file that you can edit using Notepad (or
the text editor of your choice).  I may stick a Graphical User
Interface on it some day, if I'm really feeling motivated, but I
doubt it - a GUI would just slow down the speed of data entry.

I decided to name the program ZPlan.  The Z is for Zach, a friend of mine,
and he's a good guy, except that he hates diving.  Which I suppose
is almost forgivable, seeing as Zach is a cat.  If you don't like
the thought of your dive software being named after my cat, you can
always say it's named in honor of a French expression popular in Europe;
"systeme zed", which basically translates as "jerry-rigged hack".  Er, then 
again, you might be more comfortable with the cat explanation.

2.0 LEGAL DISCLAIMER
--------------------
This program could indirectly kill you, and probably has bugs.  The author 
does not warrant that it accurately reflects A.A. Buhlmann's algorithms,
that it won't get you bent or dead, or that it will produce
safe, reliable, results.  This program is experimental, and
you use it at your own risk.  Diving in general is fraught with
risk, and decompression diving adds significantly more risk.
Deep diving utilizing multiple gasses, including Helium, is about 
as risky as it gets, especially if you choose to throw a 
rebreather into the picture.  But you should know this already.

Finally,  This program was not written for uneducated users.   ZPlan is 
a tool for experienced mixed-gas decompression divers. If you don't 
have a firm handle on decompression planning and mixed-gas diving, 
PLEASE, DON'T USE THIS SOFTWARE. 

Be careful, and dive safely.  That's it.

3.0 COOL FEATURES
-----------------
ZPlan does all kinds of neat stuff that only a techdiver could
love.  I'm assuming you're familiar with other deco programs, so
I'll spare you the hand-holding and jump right in.

Some of the more interesting features are:
o Allows you to dive open-circuit (OC), closed-circuit (CC), or
  both on the same dive. 
o Allows you to do OC deco, if your rebreather has a dinky cannister.
o Calculates OC gas consumption.
o Does CC fixed or variable setpoints.
o Uses the well-proven ZHL16c algorithm by A.A. Buhlmann
o It's really easy to use.
o Has programmable conservatism.
o Let's you use any number of mixes containing He, O2, and N2.  
o Let's you pick your OC deco mixes, then optimizes the gas-switch depths
  to minimize deco.
o Let's you set your max PO2 and END.
o Let's you set whatever ascent/descent rates you want for multiple
  depth ranges.
o Calculates CNS% and OTU's 
o Calculates CC END's, so you always know just how good a doobie 
  you're being (or smoking) with that low setpoint.
o It's really easy to use.
o Does Pyle Stops (see Rich, you're immortal!). 
o Allows the Scamahorn Slide for CCR (more on that later).
o Has a painless way to plan repetetive dives across multiple days. 
o Uses metric or imperial units.
o Salt or fresh water.
o finally, it's really easy to use.

Things ZPlan won't do:

o No NeoQuad, Hydreliox, Argox, or other 
  sound-cool-but-are-really-there-for-marketing-reasons type of gasses. 
o No diving at altitude, and no time-to-fly calculations (but you're
  just gonna wait 24 hours anyway, right, so who cares?)
o There's no gas-mixing calculator.
o There are no other calculators like MOD, END, Best Mix, etc.
o No water temp and workload modifiers, because I think they're
  a needless hack to the algorithm, and you can just bump the
  general conservatism for these types of dives.
o No factoring in of air breaks for 100% O2 deco.
o It only cuts schedules (single dive plans), not tables (multiple
  dive plans).  This definitely sucks -  I'll have the auto-generator 
  working for the next release, so you can generate full bailouts and 
  contingencies with a single invocation of the program.
o No auto-calculation of gas reserves - it will only tell you what you 
  need based on your RMV - you will need to add your own reserves.
o Oxygen cannot be made narcotic.  ...like, bummer, dude. :)

4.0 SYSTEM REQUIREMENTS
-----------------------
ZPlan1.0b will run on just about any Win95/WinNT machine.  It is
compiled for 32 bits, so it won't work on 16 bit DOS.  If you want 
a UNIX version, just let me know - I've got it built for BSD 
and SVR4 (SunOS, Solaris).

5.0 RUNNING THE PROGRAM
-----------------------
You should have the following files in your install directory:

o README - this file.
o LATEST - Any late-breaking news, and the revision history.
o zplan.exe - the program itself.
o o2.cfg - o2 clocking table - don't mess with this.
o tissue.dat - the file that saves your tisse loads between dives.  Don't
    mess with this, either.
o profile.dat - the file you configure to plan your dives.
o profile.small - a mimimalist version of profile.dat
o metric.dat - a sample profile.dat for you backwards metric users. :-)

Here's the way it works.  There's a control file called profile.dat,
and an executable called zplan.exe.  You set up your diveplan by
editing profile.dat, then simply run zplan.exe with no arguments.
It will scroll your deco schedule uncontrollably across the screen, and
will also write a copy out to a file called plan.out (by default, you can
name it whatever you want in profile.dat).  

It's up to you to print out plan.out, if you're into laminating.

profile.dat contains *all* of the information you need to both
set general configuration and plan your dive, so take a close
look at the sample file that's provided.  It is rife with
explanatory comments, most of which you will probably want
to strip out once you've got a handle on how it all works.  I've
included a minimalist version called profile.small that has just
the parameters you will use on a regular basis.   Just rename 
it profile.dat to give it a try (make a backup of the original first). 
Same goes for metric.dat - rename it profile.dat if you prefer metric units.

When you first take a look at profile.dat, you're likely to think
"geez, that's alot of parameters to mess with"  - and its true,
there are alot of parameters.  However, upon closer examination,
you'll find that almost all of them are semi-permenant fixtures.
Once you're set up, you only need to change a few lines per 
dive - mostly just modifying your waypoints.  The sample profile.dat
that I've provided contains detailed explanations of each field, so
I won't bore you by digging into it here.  You should be aware that
you need to be fairly precise in editing profile.dat - the program 
isn't very forgiving of mistakes, and if zplan crashes on you, it's
probably because you forgot to specify a decimal number with a
decimal, or had some similar typo.

The only other consideration is repetetive diving.  ZPlan 1.0b will 
create a file (tissue.dat by default) that contains
your tissue loading profile.  This profile will be referenced 
the next time you run zplan.exe if you've enabled repetetive
diving in profile.dat.  Here's the thing: while zplan.exe will 
read the tissue file every time (if there is one) it won't update
your tissue file, *ever*, unless you run the program with a -s option.  

So what you do is plan your dive freely, running what-if's and
making bailouts.  When you're sure you've got the dive plan you
want, run "zplan -s".  This will cut your tables, like usual, and
also update the tissue file to reflect your final dive plan.   

On subsequent dives, just make sure you've update the 
SurfaceInterval variable in profile.dat.  If you're 
five days into a dive series, and think you may screw up, or if
you think there's a high probability that you may bailout early
and want to reflect this in your tissue profile, save a 
copy of the tissue file somewhere safe.

Please forward comments and bug reports to will@tr*.co*

6.0 DEEP STOPS AND SCAMAHORN SLIDES
-----------------------------------
Rather than mess with Buhlmann's halftimes and a/b values, which
I felt was a bit risky, I used a post-model approach to implementing
Pyle Stops.  This is basically an automated version of what
we've all been doing manually.  The algorithm is run once, with
no Pyle Stops, just a straight ZHL16.  Then the program goes back
in and uses Pyle's "mean distance" formula to insert deep stop
waypoints into the dive plan.  Finally, the ZHL16 algorithm is re-run
to account for the added waypoints.  If you have Pyle Stops enabled,
all of this happens automatically behind the scenes.

The Scamahorn Slide was named by Leon Scamahorn, and is basically
a way to use Dalton's Law to your deco advantage when diving
with a Closed Circuit Rebreather.   When you descend quickly on
a CCR, your PO2 can tend to run above your setpoint by the time 
you hit the bottom, unless you do some manual intervention.  It 
will take awhile to breathe down the O2 until you are back at 
the setpoint, which sometimes works to your deco advantage.   With a 
Scamahorn Slide, you intentionally let your PO2 spike on descent,
then ride the deco advantage until your PO2 "slides" back
to your setpoint.

Let's say your setpoint is 1.2, and you allow the PO2 to creep up 
to 1.6 on descent.  Once on the bottom, it will probably
take you about eight minutes of breathing to get your setpoint
back down to 1.2.  On a deep dive with 15 or 20 minutes of bottom
time, this "sliding" PO2 will save you some deco obligation,
if you can account for it in dive planning.  And since you're only
talking about maybe six or eight minutes of elevated PO2, it won't
have too much negative impact on your CNS clock.  

So in the program, if you want to do a Scamahorn Slide for 
the above example, you'd set the amount of time it takes you 
to breathe down .1 PO2 at depth, then instead of making your 
setpoint at the bottom "1.2", specify it as "1.2-1.6".   
The program will do the rest.

7.0 OPTIMIZED OC DECO ALGORITHM
-------------------------------
Some other programs allow you to select your OC deco
gasses and their operational depths.  This is OK, but I've simplified 
it for the user a bit with this program.  With ZPlan, you simply
state the O2 percentage of your deco mixes (say, 21%, 50%, and 100%), 
and the maximum PO2 you will tolerate during deco.  
The program will fit the best gas for each stop, without exceeding 
your PO2 or END maximums.  

However, there are times when the program will select a deco gas
that slightly exceeds your chosen maximum PO2 - particularly if 
you are using very rich Nitrox mixes or pure O2 at shallow depths.  
This is intentional, because most people don't want to quibble 
over a few inches or a foot, but computers make a living at it.  
So I added a slight bit of rounding.

For instance, if you have chosen EANx50 and 100% O2 as deco gasses, 
and set 1.6 PO2 as your deco max, the program will still 
choose pure O2 at 20ft, even though the actual PO2 is 1.606.

I suspect most people will find that's what they really wanted, but
if you don't like this feature, shave a few tenths off the value you 
set for max deco PO2.


8.0 WHY ZHL16?
---------------
I decided to use the Buhlmann '95 algorithm because it is proven,
and the algorithm is readily available (a little translation aside).
Further, Buhlmann's algorithm utilizes gas partial pressures everywhere,
which makes it easy to apply to diving with Closed Circuit Rebreathers.

Buhlmann has three versions of the ZHL16 algorithm, each of which
has slightly differing a/b coefficients.  ZHL16a is for theoretical
use only.  ZHL16b is for generating tables.  ZHL16c has slightly
more conservatism built in, because it was intended for use in
dive computers (UWATEC's Aladin and many other late-model dive computers
use a version of this).  I originally used ZHL16c, but have added ZHL16b as 
a user-configurable option.  I first chose "c" because it is 
supposedly better at funky multilevel profiles, but mostly because I have 
a wrist-mounted version of this program for personal use.   Generally, you 
will notice little difference between the "b" an "c" options, except 
for middle-length dives to middling depths, where the "b" version will 
be slightly less conservative. 

While I'm on the topic, you should definitely be aware that Buhlmann
never made anything but an "a" (theoretical) version for Helium (and
he's dead now, so we'll never get anything else), so all Buhlmann 
implementations involving gasses other than O2 and N2 carry some 
additional risk.  On the other hand, helium is a fast gas, and therefore 
simpler than N2, from a decompression perspective.

Finally, I did not build any default conservatism into the algorithm.
If you don't set a conservatism value, you'll get exactly what 
Buhlmann planned for you to get, which you may find to be liberal 
if you're used to other dive planning software packages, many 
of which have a bit (or more) of built-in conservatism.  


9.0  A FEW WORDS ON ASCENT RATES
--------------------------------
In writing this program, I chose not to use instantaneous ascent rates
between deco stops, preferring to allow user-selected ascent rates between
stops to be factored into the decompression "curve fit".  

What this means:  most other deco software plays it safe by having you 
hang out at a decompression stop until your tissues are totally clear 
to ascend to the next stop.  This can be good, because the designers 
don't have to worry about you ascending faster than you planned for, 
which means you're less likely to get bent and sue them. 

I like slow ascents, particularily in the shallower ranges, and I
want to be rewarded for my slowness by having the ascent rate factored 
into the decompression picture, because while I'm creeping up the line, 
I'm also offgassing, and on a CCR, my FO2 is increasing, so I want that
time accounted for.   That's why you'll find that if you set a slow 
ascent rate, some of your stops may become shorter, or even dissappear
entirely.

If this makes you nervous, or if you don't want to rely on your
judgement of ascent rate while diving, you can effectively disable
this feature by setting your ascent rate to be something fast in
the shallow-to-mid deco ranges, like 60+fpm (20m).   That obviously doesn't
mean you have to (or should) ascend that fast, but it will effectively 
force the program to make you wait at each stop until it's sure you're
safe to move up quickly to the next one.  

Just be sure you don't also accidentally tweak your pre-deco and deep 
ascent rate parameters higher than you'll actually be moving in those ranges.   

10. TISSUE LOAD TRACKING AND OXYGEN
-----------------------------------
If you are using Zplan for repetetive diving, it will keep
track of your O2 off-gassing between dives, and update
your CNS percentage accordingly.  It assumes that O2 has a 90 minute 
half-time, and that you are accumulating O2 during the entire 
dive - it won't start off-gassing until you surface.

Zplan will not keep track of OTU totals across multiple
dives, it just spits out the number of OTU's accumulated for
the single dive.  So if you're doing the kind of diving where OTU's could
matter, you'll need to manually note your OTU's after each dive,
and total up your daily and multi-day dosage by hand.

The CNS accumulation rates are from NOAA published sources,
but I had to go to other sources for PO2's above 1.7, so above that
level, if you're moronic enough to go there, you will find the numbers 
very conservative - certainly far more conservative than the NOAA 
exceptional exposure tables.  OTU tracking is via the Repex method, developed
by Dr. Bill Hamilton (who probably knows more about deco algorithms than
anyone alive, and is a heck of a nice guy, to boot).  

If you really know what you're doing, the O2 clocking tables are in a 
file called o2.cfg, and you can change them to whatever you like.  If 
you come up with something better, please let me know.

11.0 WATER TEMPERATURE AND WORKLOAD MODIFIERS
---------------------------------------------
You will notice that ZPlan doesn't have any, and this is for 
good reason - neither do most decompression algorithms, including
ZHL16.  When you see these values in decompression software,
it should tell you one thing: the programmer was bogarting (as 
opposed to Hogarthing :) in order to win feature-points.

Basically, there is no standard method for producing a model
for workload and temp modifiers, so in order to come up with these 
modifiers, the programmer reaches way into his butt and pulls out a
conservatism scale that he thinks will probably work.  And that's
exactly what it is - a guess, and a guess that even A.A. Buhlmann & his
merry team of mad Swiss woudn't hazard.

The US Navy has done studies on well-chilled divers, and found
that decompression models fall apart completely.  Knowing that, I'm
not even going to *try* and guess, so you can decide for yourself 
what level of conservatism you need and adjust the Conservatism 
value in profile.dat accordingly - that's what it's there for.


12.0 GREAT, SO WHO THE HELL ARE YOU?
-----------------------------------
By now, you're probably wondering:

a) if ZPlan is a tinkertoy, and
b) if not, why I'm not charging you five hundred bucks for it.

ZPlan has been run through a couple hundred test dives,
and the results compared with other dive planning packages.  If
a couple hundred doesn't sound like a lot, *you* try typing them in.
It has also been tested by a dedicated group of a couple dozen
guys from the rebreather mailing list, who have shaken out
most of the more serious bugs (thanks and apologies for your early 
frustrations).  Some of these whackos actually dove plans generated
by the first version. :-)

As for the author, I'm a senior software (and formerly digital 
design) engineer who spends his days designing fully redundant 
fault tolerant systems for sending trades to worldwide 
exchanges (and trading with them).  In the past, I've done everything 
from creating visual programming language compilers to designing 
parallel computers to writing UNIX device drivers.

If you're not a computer scientist, what I basically just 
said is that I'm one mean dude in the programming world.  Yes,
that thumping sound you hear is my fists beating my chest. 

So why am I not charging for it?  I have aspirations at philanthropy
(sounds of halo being buffed).  Er, yeah, that's it.  Actually it's 
simple, there aren't enough mix and CCR divers out there to make the 
legal hassels worthwhile.  And how many copies could I sell without adding
a clunky GUI?  A hundred?  Plus I'd have to take calls from people I 
don't even like.  Screw it.  

In lieu of a fee, I would really like comments and suggestions (via email)
from every single user (if there are any), so I can make the next version 
even better.   

Have Fun!

-Will 

will@tr*.co*




--
Send mail for the `techdiver' mailing list to `techdiver@aquanaut.com'.
Send subscribe/unsubscribe requests to `techdiver-request@aquanaut.com'.

Navigate by Author: [Previous] [Next] [Author Search Index]
Navigate by Subject: [Previous] [Next] [Subject Search Index]

[Send Reply] [Send Message with New Topic]

[Search Selection] [Mailing List Home] [Home]