Algorithms

Please register or login

Welcome to ScubaBoard, the world's largest scuba diving community. Registration is not required to read the forums, but we encourage you to join. Joining has its benefits and enables you to participate in the discussions.

Benefits of registering include

  • Ability to post and comment on topics and discussions.
  • A Free photo gallery to share your dive photos with the world.
  • You can make this box go away

Joining is quick and easy. Log in or Register now!

For one thing, with access to the code, it's possible to run sumulations for all possible dives, map and compare the resulting deco/ascent profiles and look for anomalies. This is how the Pentium III Floating Point Bug was discovered.

For another, it would give a good indication of how clean and well-thought-out the algorithm's implementation is. It's one thing to say "we use deco model 'X'", it's quite another to accurately implement it on an embedded system with no critical bugs.

You can compare it to the profiles for the same dives done on other computers, which will give you an accurate ranking of how "conservative" they are and where, as well as show any bugs in the implementation.
I agree with you that it would be interesting to be able to check code quality yourself. In practice this is not the way the industry work. We all have to make a living and somebody invested a lot of money to develop the code base.

I don't know about other companies but Uwatec I know well. Anyway what you propose to do is being done, and much much more. At least Uwatec's systems were developed in a way that you can show correctness. A bug in the processor or mathematical libraries would be caught, the system was designed to be testable and validated.

I don't like the word conservative used in the diving community. There are examples in literature where by reducing "conservativeness" the amount of bubbles drop(=more safety). In your terms you would say that it is more aggressive when the opposite is true. Adding decompression time(conservativeness) the wrong way can make a computer more unsafe, increase the amount of bubbles.

Niclas
 
First of all I'm glad to see someone else comment that the terms "conservative" and "aggressive" are not appropriate as applied to dive profiles and DCS risk.

The Rubicon papers were interesting but aren't really on point for my question. For one thing they don't link to either of the algorithms I'm concerned with. Without further information, neither I, or the general diving public, knows how, or if, the mentioned calculations were implemented.

As for code quality. A technician may be interested in code quality. I'm not. On a daily basis I conduct activities whose safety relies on computer code that I can neither see, nor evaluate. However, for the most hazardous of such activities I can get information that will allow me to differentiate between different implementations as far as how data is treated.

Certainly, I could just go to Gage Mode and then use a land based table or computer program to plan my dives. Then I could use any of a variety of methods to accomodate variances in actual versus planned. As I've said before, for most diving I think this is inferior both from safety and efficency perspectives.

No, my information/education request is merely seeking how the respective algorithms treat dive parameter information. Thus, I can evaluate the information each provides and make performance decisions.
 
OP.... I don't think you are going to find what it is you are wanting to research....some pretty 'deep' and complicated stuff-- :)

So what is your next step in the search and your goal in this research.....how much and what level decompression diving are you involved in?

I believe that the current information contained in the popular dive programs and in water computers is quite good. I have my favorites as most divers doing diving beyond NLD profiles.

Let us know if you do come up with more specifics....would be interesting reviewing the findings.
 
OP.... I don't think you are going to find what it is you are wanting to research....some pretty 'deep' and complicated stuff-- :)

So what is your next step in the search and your goal in this research.....how much and what level decompression diving are you involved in?

I believe that the current information contained in the popular dive programs and in water computers is quite good. I have my favorites as most divers doing diving beyond NLD profiles.

Let us know if you do come up with more specifics....would be interesting reviewing the findings.

Not deep or complicated at all. There is a level of information and discussion between the extremes of no information and examination of the mathematics and computer code of a particular algorithm. For some algorithms such information is fairly readily available, at least at the "black box" level.

But here, there seems to be no information on the Boherer algorithm.
 
Not deep or complicated at all.

But here, there seems to be no information on the Boherer algorithm.

I have only the 'internet' info. on the Boherer via typical searches.

Good luck on the investigation.
 
His name is spelled "Bohrer". sometimes with an umlaut over the o.

If you need to get in touch with him, go through IANTD.
 
His name is spelled "Bohrer". sometimes with an umlaut over the o.

If you need to get in touch with him, go through IANTD.

I'd been to the IANTD site without success. I'll go again. In the meantime a Web Search using the correct spelling of his name, Thank You, gave me something of what I am after. Here is what I copied from one site:


Antwort Randy Bohrer]
The story of the algorithm development is fairly simple. There are two
Buhlmann algorithms, the ZHL-12 and ZHL-16. Most believe that the -12
or -16 refers to the number of compartments. It actually refers to the
number of a, b value (similar to M values) sets that the algorithm
has. Both are 16 compartment algorithms. ZHL-16 is the newer
algorithm. What is unique about it is that it is possible to calculate
the a,b values based on the half-life time. Then you can develop your
own algorithm with as many compartments as you like. Of course,
selecting half-times that are far beyond what has been done with
Haldanean type models (for example something in excess of 800
minutes for nitrogen) would probably not be valid.

So, the question becomes, which algorithm did we use for the
Seiko-made units. The answer is ZHL-12 (the older model) with some
custom modifications. The reason for that is that the ZHL-16 model
produced NDLs that were very different from what dive computer users
had come to expect. They were too short. We knew from the wide range
of practical experience that the NDLs from popular dive computers were
"safe", meaning they produced numbers that did not result in an
unacceptable number of cases of DCS (DCI). We found that the older
model, without modification, produced both NDLs and decompression stop
times that were similar to other units already on the market.

We wanted to build in some extra conservatism in areas where there was
traditionally an increased risk of DCS, so we looked at modifying the
model. The two primary modifications were to freeze the gas loading
calculations during the first 10 minutes of a surface interval, and to
add a depth safety factor for repetitive dives. The gas loading
"freeze" penalized the diver for short surface intervals, but as the
surface interval became 2-3 hours or more, the safety factor had
little effect -- just what we wanted. The depth safety factor
penalized the diver for repetitive shallow dives, again affecting
primarily the NDLs (the bottom time of 40-50 foot dives doesn't
usually require decompression stops). The depth safety factor had
little effect on deep dives (say 80 feet and deeper), where
decompression stops would sometimes be required. The base ZHL-12 model
has very good dive test results as well as practical field results, so
we didn't feel a need to integrate safety factors that had much effect
on decompression dives. The final modification was to select half
times that would simplify the gas loading calculations. Because the
particular half times we selected were not the same as the base model,
we interpolated to determine the a, b values. On later models, we
added oxygen tolerance calculations non-air diving applications.

---------------------------------------------------------------------------

This kind of description is at what I call the Black Box level and is most useful to users. Since DCS is a relatively rare phenomenon and almost all available algorithms are "safe" what we are most interested in is just how the algorithm affects dive planning.
 
Randy lives in Massachussets now with his family. He's in computer software and security services.
 
Thanks. I went back to the IANTD site. But, nothing helpful to this matter there. Do you have contact info?

I'm also waiting on information from another source on just what the operational differences are betweein the two algorithms. But, he is probably the best source of all.
 
Understanding M-Values by Erik Baker has the compartment halftimes and the limits for both the ZH-L12 and ZH-L16 algorithms. http://www.ddplan.com/reference/mvalues.pdf

That won't be of much use, though, since the computer manufacturer blurb you quoted says that they changed both halftimes and compartment limits.

You can back engineer the computer to figure out the M0 values simply by working backwards from the NDLs at various depths. See the Erik Baker article Calculating No-Stop Times for the equations. http://www.ddplan.com/reference/ndl.pdf

Even if you don't find out what compartment halftimes the computer manufacturer used, it doesn't have much effect in practice. Just use any random set of halftimes with 2 to 1 or closer spacings and you'll get very close to the same results.

Getting the slopes is more difficult and requires more detailed information such as how long of a decompression stop is required after x amount of time at y depth.

I haven't done the math for extracting the slope, but just getting the M0 values is reasonably easy and I can do that if you post a table of NDLs vs. depth. (And I'll include the equations so you can check them)

Charlie Allen
 
Last edited:

Back
Top Bottom