• Welcome to ScubaBoard


  1. 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. Login or Register now by clicking on the button

Buhlmann vs GF vs the blokes with goats

Discussion in 'Computers, Gauges, Watches and Analyzers' started by KenGordon, Jan 12, 2020.

  1. KenGordon

    KenGordon Rebreather Pilot

    3,604
    2,371
    113
    From another thread...

    The stuff above is actually the basis of all the dissolved gas models going back to the early 20th C. Also the models in the Zoop and the like.

    What makes Buhlmann ZHL16C is a specific set of value s of a and b which encode the sixteen tissue compartments. Those values control the limits and changing them I see reflected in how much no stop time (NDL) is available or how long the stops will be. There is also a minor detail of how much water vapour is assumed by different algorithms.

    The first surprising, to me at least, thing about Buhlmann ZHL16 is that the a/b values are generated from the half time. Like this:

    // Given a half time calculate the A and B coefficients.
    // This is how Buhlmann ZHL-16A derives the M values - represented as a and b
    // coefficients. Note that the B and C versions use tweaked coefficients.
    static double calcA(double ht)
    {
    double result = 2 * std::pow(ht, -1.0 / 3);
    return result;
    }
    static double calcB(double ht)
    {
    double result = 1.005 - std::pow(ht, -1.0 / 2);
    return result;
    }

    The two later versions, B and C, are slightly tweaked.

    Maybe this makes sense if you start thinking about the slower compartments needing lower limits in a constant time * risk sort of a way. Need to check with a proper deco scientist about that.

    On top of these numbers there is a scheme invented by Eric Baker to make profiles more conservative. At the time deep stops were in fashion and it was felt that making this adjustment greater at depth would be better. This is where the GF thing comes in. Two numbers which are used to derive a percentage applied in that limit calculation. Sort of like this

    // Actual Buhlmann
    Pressure getCeilingPressure()
    {
    //Pambtol = (Pcomp - a) x b
    // normal 100/100 version
    Pressure minAmbientPressure = (compartmentPressureN2 - a) * b;
    return minAmbientPressure;
    }

    // GF version, for the given GF at a particular depth
    Pressure getCeilingPressureGF(Pressure compartmentTension, double gf)
    {
    // with gf
    // PAMBT(I) = (PHEN2(I) - AHEN2(I)*FACTOR)/(FACTOR/BHEN2(I) - FACTOR + 1.0)
    double tension = compartmentTension.value();
    double minAmbient = (tension - a * gf) / ((gf / b) + 1.0 - gf);
    // printf("which %3d - tension %.4f min ambient %.4f gf %.2f\n", (int)halfTime.value(), tension, minAmbient, gf);
    Pressure minAmbientPressure(minAmbient);
    return minAmbientPressure;
    }

    Next there is how to figure out the GF value for the given depth. That is not at all clear. In the original Baker work that was the first stop depth. Dive computers can’t really do that as a slow ascent will probably mean that stop is gone before you get there. I’ll not post code for that as it all a bit tedious.

    Another complication is the question of whether a ceiling calculation (ie when the maximum tolerated over pressure, minAmbientPressure above, is more than surface pressure) should assume a vaguely normal ascent or not.

    Another is whether ceilings count at all, or whether only stops count. And if a stop is of zero length is it still a no stop dive? Should you apply the deco ascent rate between zero length stops or the usual one?
     
  2. dmaziuk

    dmaziuk Regular of the Pub

    6,780
    2,970
    113
    The way I read e.g. Powell, the formulae he gives for a and b coefficients are based on "solubility of inert gases". Nitrogen's solubility is 13 times that of helium (which is one big reason divers use helium in the first place), and yet the same magic coefficients work for both nitrogen and helium. So, like, er, what? :confused:
     

Share This Page