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]