Perdix CEIL, does it take into account the estimated off-gassing on ascent (with an assumed ascent rate)?

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!

It's also a simple matter to report a ceiling of 0 as long as NDL >= 0. In fact, this is almost certainly the case since the initial ceiling & stop is controlled by GFLow.

NDL > 0 means the ceiling is at or above the surface, that's by definition. The ceiling is controlled by GF High.

First stop is controlled by GF Low, that's the other problem with using this model for no-stop dives. In practice it's fine because it takes a really dumb GF setting for it to make an appreciable difference, but numerically you're using one set of M-values to see if there is a ceiling, and if yes: a different set of M-values to figure out where it is. That is not the kind of code I'd care to put my name on.
 
NDL > 0 means the ceiling is at or above the surface, that's by definition.
I don't disagree in theory, but there are implementation choices that we did not make. My point was it's not incompatible for NDL to assume a finite ascent speed but the ceiling does not. It'll take info from SW to resolve this for certain.
 
Driving cross-country back from a trip leaves lots of time to think. I am now pretty sure that CEIL assumes a finite ascent rate (includes off-gassing). This is based on the fact CEIL gradually increases from 0. IF it were instantaneous, then the moment tissue tension exceeded the allowable (GFHigh-dependent) surfacing tension, it would instantly read the depth at which that tension is matched by the GFLow line. That doesn't happen, so proof by contradiction.

(My earlier observation about some potential weirdness for an above-assumed ascent rate is a very low probability case.)

ETA: if NDL also assumes a finite ascent rate, things would be consistent. This matches the intuitive notion of NDL equaling a negative ceiling as @dmaziuk pointed out and is compatible with @iointerrupt's observation that surfGF > GFHigh when NDL expires.
 
The initial question was whether CEIL assumed an ascent or not.
My guess was that it does NOT, and the purpose of this thread was to get a confirmation.

After some discussion, the question became wider and now it’s not just about CEIL but also NDL: does it assume an ascent rate or is it an ‘instantaneous’ ascent?

If CEIL is instantaneous but NDL is not, then we can have a ceiling without stops.

I believe it’s important to first agree on whether both CEIL and NDL are assuming an ascent or not, because that will impact whether the statement above is true or not.
I posted some replies earlier in this thread and elsewhere regarding how ceilings and NDL are calculated. You can search for those responses. After reading the recent posts (dated 2024) I realized that I might be misunderstanding what you and others say by "assuming". So, there are two understandings of this as it applies to ceilings and NDL calculations:

1. The calculations use a hard coded value of ascent rate like 30 ft/min or a value entered by the user or,
2. The calculations use an ascent rate that is calculated for every iteration of the program.

The Schreiner equation does use rate but that rate is calculated based on a change of depth:

P = Pi + R(t - 1/k) - [Pi - Po - (R/k)]e^-kt

P = Final tissue compartment pressure
Pi = Adjusted inspired inert gas pressure
Po = Initial tissue compartment pressure
R = ascent or descent rate x FN2
t = elapsed time between iterations
k = Ln(2)/HT

Off gassing on ascents are taken into account by virtue of a new calculation of tissue compartment pressure at each shallower depth. I assume this is what you mean by "instantaneous". An assumed constant rate of ascent is not needed since the DC can calculate a new P at every iteration (i.e. "depth"). The Pi was previously calculated, Po and ht are already stored. Once P is calculated a ceiling can be calculated. If the ceiling is negative the NDL time is calculated otherwise a time at the first deco stop dictated by GFLo is calculated. The only time rate is used in any calculation is in the Schreiner equation to determine tissue compartment pressures on ascent or descent.
 
I posted some replies earlier in this thread and elsewhere regarding how ceilings and NDL are calculated. You can search for those responses. After reading the recent posts (dated 2024) I realized that I might be misunderstanding what you and others say by "assuming". So, there are two understandings of this as it applies to ceilings and NDL calculations:

1. The calculations use a hard coded value of ascent rate like 30 ft/min or a value entered by the user or,
2. The calculations use an ascent rate that is calculated for every iteration of the program.

The Schreiner equation does use rate but that rate is calculated based on a change of depth:

P = Pi + R(t - 1/k) - [Pi - Po - (R/k)]e^-kt

P = Final tissue compartment pressure
Pi = Adjusted inspired inert gas pressure
Po = Initial tissue compartment pressure
R = ascent or descent rate x FN2
t = elapsed time between iterations
k = Ln(2)/HT

Off gassing on ascents are taken into account by virtue of a new calculation of tissue compartment pressure at each shallower depth. I assume this is what you mean by "instantaneous". An assumed constant rate of ascent is not needed since the DC can calculate a new P at every iteration (i.e. "depth"). The Pi was previously calculated, Po and ht are already stored. Once P is calculated a ceiling can be calculated. If the ceiling is negative the NDL time is calculated otherwise a time at the first deco stop dictated by GFLo is calculated. The only time rate is used in any calculation is in the Schreiner equation to determine tissue compartment pressures on ascent or descent.
I think you're misunderstanding things a bit still.

If I am currently in the middle of a dive, I'm at 80m depth and I've been there for a little bit. My computer is telling me my ceiling is 20m. That could mean 1 of 2 things (for Perdix IMO I think it's the 1st):

1. If I instantly teleported myself to 20m I would still be within my M-value/GFs (i.e. infinite ascent rate). But if I teleported to 19m I would not be OK.
2. If I ascended to 20m at my configured ascent rate (taking into account any off-gassing that would occur as I ascended from 80m -> 20m) then I would have to stop when I got to 20m.

Put another way my instantaneous ceiling could be 20m (#1), but my "actual" (bad name) ceiling could be 15m, because as I ascend from 80m I offgas and I would be able to continuously ascend at whatever my configured ascent rate until I got to 15m and had to stop.

The debate here is which of these 2 values is the perdix showing.

IMO for ceiling I think it's showing the instantaneous ceiling (i.e. does not take into account off-gassing during ascent), but I think for NDL it DOES take into account off-gassing during ascent. Meaning you could have a non-zero ceiling but still have an NDL > 0, because the ceiling will go away as you ascend.
 
You said:

"Put another way my instantaneous ceiling could be 20m (#1), but my "actual" (bad name) ceiling could be 15m, because as I ascend from 80m I offgas and I would be able to continuously ascend at whatever my configured ascent rate until I got to 15m and had to stop."

This is exactly what happens. The computer is calculating a ceiling based on the inert gas you've accumulated at the current depth. As you ascend, because of lower ambient pressure, your tissues are off gassing so that if they off gas enough the new calculation for ceiling becomes 15 ft instead of the current 20 ft. So, you and I agree it is point #2 in my post above.

Then you said:

"Meaning you could have a non-zero ceiling but still have an NDL > 0, because the ceiling will go away as you ascend."

No. I assume you mean a positive non-zero ceiling. By very definition an NDL > 0 means you can ascend directly to the surface without stops and with a positive non-zero ceiling stops will be created at the current depth. Keep in mind that the NDL calculation for time remaining at depth knows nothing about ascent rates. It is, by definition, a calculation of time remaining at the current depth.

Just to be clear there is no calculation of NDL or deco depth based on a pre-defined ("assumed") ascent rate built in to the computer when the calculations are done before an ascent. The calculations are done on a fixed computer cycle at whatever depth the diver is at. When the diver ascends subsequent calculations take into the off gassing so that NDL time increases or deco depths decrease. Is this clear enough?
 
Keep in mind that the NDL calculation for time remaining at depth knows nothing about ascent rates

Well that’s precisely one of the 2 questions here (the second one is the same but about CEIL). And it’s clear with the different posts here that there’s no full consensus.
 
You said:

"Put another way my instantaneous ceiling could be 20m (#1), but my "actual" (bad name) ceiling could be 15m, because as I ascend from 80m I offgas and I would be able to continuously ascend at whatever my configured ascent rate until I got to 15m and had to stop."

This is exactly what happens. The computer is calculating a ceiling based on the inert gas you've accumulated at the current depth. As you ascend, because of lower ambient pressure, your tissues are off gassing so that if they off gas enough the new calculation for ceiling becomes 15 ft instead of the current 20 ft. So, you and I agree it is point #2 in my post above.

Then you said:

"Meaning you could have a non-zero ceiling but still have an NDL > 0, because the ceiling will go away as you ascend."

No. I assume you mean a positive non-zero ceiling. By very definition an NDL > 0 means you can ascend directly to the surface without stops and with a positive non-zero ceiling stops will be created at the current depth. Keep in mind that the NDL calculation for time remaining at depth knows nothing about ascent rates. It is, by definition, a calculation of time remaining at the current depth.

Just to be clear there is no calculation of NDL or deco depth based on a pre-defined ("assumed") ascent rate built in to the computer when the calculations are done before an ascent. The calculations are done on a fixed computer cycle at whatever depth the diver is at. When the diver ascends subsequent calculations take into the off gassing so that NDL time increases or deco depths decrease. Is this clear enough?
It's not clear which of my 2 options you believe to be true. In my hypothetical where I'm in the middle of a dive at 80m, and my "instantaneous" ceiling is 20m, but when you account for off-gassing I know I can ascend to 15m without stopping which do you think the perdix will display: 15m or 20m?

I think it will show 20m for ceiling, because I believe the ceiling calculations don't take into account ascent rate and off-gassing during ascent.

HOWEVER, I believe the NDL calculations do. And the Perdix user manual would seem to agree saying that NDL calculations account for ascent rate, which they would only need to do if they were accounting for off-gassing during the ascent.

1718588217072.png
 
Well that’s precisely one of the 2 questions here (the second one is the same but about CEIL). And it’s clear with the different posts here that there’s no full consensus.

Only Shearwater programmers know, and we aren't them.

You can implement it either way, it really doesn't matter except to users who don't understand how it works. Here's a fairly typical reef profile that has a ceiling (with the subsurface's default GF anyway) and 25 more minutes of runtime after that ceiling happens. There was no direct ascent at 10m/min and the entire dive was within the NDL.

ceil_dive_profile.png
(I posted this one before. I have a few similar ones in my logs, this is the one I exported before so I keep posting it.)

The point is, the computer does not know if you're going to go deeper, proceed directly to the surface, or go up a few metres next. Which makes the NDL it displays nothing more than a guess. You can factor in the ascent time in your guess, or not -- it'll still be a guess either way.
 
Keep in mind that the NDL calculation for time remaining at depth knows nothing about ascent rates. It is, by definition, a calculation of time remaining at the current depth.
It is that very definition that is in question. It is either the time remaining at depth such that a) *current* tissue tension equals the max allowable surfacing tension or b) tissue tension *after an ascent* at 30 fpm would equal the max allowable surfacing tension.

We don't know for sure which Shearwater implemented. The manual quoted above implies (b). @iointerrupt's observation of surfGF > GFHigh before NDL expires implies (b). Thus, the odds-on choice is (b). You clearly believe (a) *should* be the case (and likely implemented that in your spreadsheet), but again, it's the SW implementation we're discussing.

"Instantaneous", "teleport", or "infinite ascent rate" == (a). "Finite ascent rate" == (b).
 

Back
Top Bottom