diff --git a/dive.c b/dive.c index 1f3f5fd0b..950948b59 100644 --- a/dive.c +++ b/dive.c @@ -607,6 +607,7 @@ static void fixup_dive_dc(struct dive *dive, struct divecomputer *dc) end = time; if (depth > SURFACE_THRESHOLD) { + end = time; if (start < 0) start = lasttime; if (depth > maxdepth) diff --git a/divelist.c b/divelist.c index 85fb535ed..143f4d43c 100644 --- a/divelist.c +++ b/divelist.c @@ -749,8 +749,8 @@ static int calculate_sac(struct dive *dive) } } } - /* Mean pressure in bar (SAC calculations are in bar*l/min) */ - pressure = depth_to_mbar(dc->meandepth.mm, dive) / 1000.0; + /* Mean pressure in ATM (SAC calculations are in atm*l/min) */ + pressure = (double) depth_to_mbar(dc->meandepth.mm, dive) / SURFACE_PRESSURE; sac = airuse / pressure * 60 / duration; /* milliliters per minute.. */ diff --git a/dives/sac-test.xml b/dives/sac-test.xml new file mode 100644 index 000000000..b5f0149bb --- /dev/null +++ b/dives/sac-test.xml @@ -0,0 +1,50 @@ + + + + + + SAC test dive 1 + SAC should be 20l/min (0.7063 cuft/min) +We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min + + + + + + + + + + + + + SAC test dive 2 + SAC should be 20l/min (0.7063 cuft/min) +We have exactly 100 ATM of gas in a 10l cylinder, average 10m for 25min + + + + + + + + + + SAC test dive 3 + SAC should be 20l/min (0.7063 cuft/min) +We have exactly 100 ATM of gas in 15l of cylinder, average 20m for 25min + + + + + + + + + + + + + + +