Scaling of cylinder pressures in profile
Berthold Stoeger
bstoeger at mail.tuwien.ac.at
Mon Nov 11 01:38:20 PST 2019
On Montag, 11. November 2019 09:05:18 CET Willem Ferguson wrote:
> There appears to be a bug in Subsurface. Check the attached dive log and
> the rendering of cylinder pressures. Also see attached screenshot. I did
> not notice this until now. Is it perhaps the last merge base don my PR
> that causes this?
Funnily enough, this seems to be an old bug that now becomes active. Consider
this code in calculate_max_limits_new():
for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
int mbar = dive->cylinder[cyl].start.mbar;
if (mbar > maxpressure)
maxpressure = mbar;
if (mbar < minpressure)
minpressure = mbar;
}
If you have less than MAX_CYLINDERS cylinders (i.e. in 100% of cases), mbar
will evaluate to 0. Thus, minpressure will be 0 in all cases. This code never
worked.
What happens now is that this part of the code actually starts to work. But if
you don't have an "air integrated" computer, you will not have pressure
readings, so minpressure will remain the minimum start-pressure of any of your
cylinders.
That gives the funky effect you see.
Possibility 1: if minpressure == maxpressure (meaning that we found no
pressure reading), set minpressure to 0. This will restore the old behavior
for non-air integrated computers.
Possibility 2: correctly determine the minimum pressure by looking at the
profile data not the events.
Berthold
More information about the subsurface
mailing list