Question GF Low

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!

Again, you do not move GFLow "to the left", at least directly. Your choice of GFLow dictates the angle of an entire line angling upward. See the lower "dotted" line in this image (taken from the post I linked). [ETA: that line is always GFLow% of the vertical distance from the dashed ambient line to the solid M-Value line. In this example, GFLow was 40%.]

Your tissue tension (on this particular example) is the vertical component at the blue star on the very right (at 100 ft depth). The intersection of the GFLow line with the horizontal tissue tension is the anchor point for the deco line. The depth at which that intersection occurs is simply a consequence. You do NOT choose a depth as the determining factor of that anchor point.

View attachment 812714
Aha! So, the anchor is determined in runtime. And also, this intersection determines the first stop (if we ignore other tissues). Right? Now it’s clear. Thanks a lot!!!
 
  • Like
Reactions: L13
Aha! So, the anchor is determined in runtime. And also, this intersection determines the first stop (if we ignore other tissues). Right? Now it’s clear. Thanks a lot!!!
Pretty much, yes. Run the max tissue tension horizontally to its GFLow line, then down to the depth axis. That is the deepest ceiling for that tissue. Take the deepest from all of the tissues, and that's the overall/controlling ceiling. Round up to a multiple of 10 ft or 3 m and that's the first stop depth for the ascent.
 
However, I still think the concept of an individual tissue's ceiling requires knowledge of its particular deepest ceiling or max tissue tension (what I've been calling its anchor). Say that some non-controlling tissue has inert gas pressure that intersects the GFLow line at 30 ft. Just because we stop at 50 ft (for the benefit of the controlling tissue) doesn't mean its ceiling is suddenly 50 ft. It's still 30 ft.
When would any tissue's max tissue tension (other than the one that controlled the first stop) be used or be relevant in the rest of the dive, or in the output of the computer (since the values itself is not output)?

As far as I can see, the only relevant value for each tissue (after the first stop depth is established) is it's current ceiling, and whether that is above or below the next stop depth.

In summary, I agree the ascent profile can be generated with just a single "anchor" / starting depth. But, generally speaking, you have to keep track of each tissue's maximum tension throughout (or equivalently, the depth where its GFLow line equals that). Those are what I mean by the multiple "anchors".
I would think you would only have to keep track of the current limiting tissues's max tension. On each iteration, you check each tissues current tension with the current Max, and update the current max if exceeded. Admittedly, it might be easier to do that in two steps, establish each tissues max and then find the max of the max's.

But once a first stop is established, (I think) the max's are irrelevant (though you would continue to track them in case the ascent was aborted, and a new deeper first stop needs to be established because of the rest of the dive).
 
Pretty much, yes. Run the max tissue tension horizontally to its GFLow line, then down to the depth axis. That is the deepest ceiling for that tissue. Take the deepest from all of the tissues, and that's the overall/controlling ceiling. Round up to a multiple of 10 ft or 3 m and that's the first stop depth for the ascent.
👍👍👍
 
But once a first stop is established, (I think) the max's are irrelevant (though you would continue to track them in case the ascent was aborted, and a new deeper first stop needs to be established because of the rest of the dive).
Right, so you can't throw them away. BTW, I call that a "multi-level" dive, which happens occasionally. :wink:
I would think you would only have to keep track of the current limiting tissues's max tension. On each iteration, you check each tissues current tension with the current Max, and update the current max if exceeded.
You can't directly compare inert gas pressures of two different tissues. There's only 16 of them, so it's not a big deal to hold onto them.
 
I can’t remember the equations but I imagine he has to remember all tissues because the limiting one could switch?
 
Right, so you can't throw them away. BTW, I call that a "multi-level" dive, which happens occasionally. :wink:
Wrong, you can throw all your "max tissue tensions" away immediately after you determine they do not produce a deeper ceiling than the current deepest ceiling. that value will never be needed again, only values with a deeper ceiling than the current one are relevant, and only at the instant at which they occur. Which is why you don't even really need a "max tissue tension" for any tissue, just compare the current ceiling from the latest tension from each tissue to the deepest ceiling and save it if it is deeper.

You can't directly compare inert gas pressures of two different tissues. There's only 16 of them, so it's not a big deal to hold onto them.
Correct, but you can and must compare their resulting ceilings, which is the only thing you need the max tissue tensions for in the first place. But you are right that its not a big deal to hold them. But why? just more clutter code for a bug to sneak into, without added value.


I can’t remember the equations but I imagine he has to remember all tissues because the limiting one could switch?
The limiting one only switches when the current ceiling from the new limiting tissue is deeper than the ceiling from the previous limiting tissue. The other 15 values will never be relevant, they will have to have been updated to a new value in order to become limiting, and that change takes place immediately.
 
I remember when I actually had free time. Back then I was an active contributor to Subsurface. I can’t take credit for much but one of my more meaningful contributions was the code that defines the GFlow “anchor”. As indicated by the Theoretical Diver (definitely not me - Robert is far smarter than I am) blog, the anchor depth is the deepest ceiling for the dive. While not explicitly stated in the blog, the anchor is the same for all tissues. I doubt this has changed since I was involved (you could check the code since it’s public).
The original implementation/definition of gradient factors comes from Eric Baker’s Fortran code (not Bühlmann), and he took the anchor as the ceiling calculated using GFlow immediately prior to starting the ascent to the first deco stop. He also enforced a stop at this depth, even if the ceiling had cleared prior to reaching the stop - a depth that is necessarily the same for all tissues since they all do the same dive. That’s fine for a dive planner (although it produces odd results for extremely non-square profiles), but not much help for a dive log or computer, where the start of the deco phase of a dive is not defined. It just so happens that the deepest ceiling of a square-ish profile dive occurs about the start of the ascent to the first deco stop. So that is what we use in Subsurface.
Ed: can’t quote good
Ed: I can’t take credit for anchoring GFlow at the deepest ceiling. I confused myself with the equivalent parameter in the VPM code. Regardless, it’s the same value used for all tissues.
The same deepest ceiling depth is used to anchor GFlow (as I said last night my time) but I just realised this morning I can’t take any credit for that. I’d confused myself with something similar in the VPM code (does anyone still use that?). I’ve edited my original post accordingly.
 
I can’t remember the equations but I imagine he has to remember all tissues because the limiting one could switch?

You need to keep two values per compartment: the actual current loading, and the projected one (for when they can leave their current deco stop and move on to the next one, or when they run out of no-stop time). Obviously, the latter is only valid if the diver stays at their current depth; if they move you have to throw it it away and recompute -- but since our current CPUs can do that thousand times per second, that's not a problem.

Edit: that is, it's not only because they can switch, the diver can move too.
 
you can throw all your "max tissue tensions" away immediately after you determine they do not produce a deeper ceiling than the current deepest ceiling. that value will never be needed again
In a general dive, you don't know if you'll not have a ceiling deeper than the current deepest ceiling.
you can and must compare their resulting ceilings, which is the only thing you need the max tissue tensions for in the first place
How will you compute updated ceilings without the max tissue tensions (which you threw away when you left the bottom before you saw the barracuda and stopped ascending / possibly descended)? I suppose you could see where the current tensions intersect GFLow again, but that will typically give you deeper ceilings than had you kept the original max tensions.
 

Back
Top Bottom