summaryrefslogtreecommitdiffstats
path: root/divelist.c
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2014-02-11 13:08:29 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-02-11 14:05:54 -0800
commite58f54cac1d050c090bfa5427991ae440bc78495 (patch)
treed4379185e39721d46d61ca6136001941b980ef1a /divelist.c
parent92bbed3304afeb8e7ef6593f48eae982d799b5f1 (diff)
downloadsubsurface-e58f54cac1d050c090bfa5427991ae440bc78495.tar.gz
Fix ATM-vs-bar confusion
SAC should be calculated in relationship to surface pressure, not "1 bar". I also realize that we have a few other cases where we do the same mistake: the partial pressure calculations do things like po2 = o2 / 1000.0 * depth_to_mbar(sample->depth.mm, dive); which is wrong as well - the partial pressure is also relative to standard atmospheric pressures. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'divelist.c')
-rw-r--r--divelist.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/divelist.c b/divelist.c
index b16c9e513..a9a2b451c 100644
--- a/divelist.c
+++ b/divelist.c
@@ -221,7 +221,7 @@ static int calculate_otu(struct dive *dive)
po2 = sample->po2;
} else {
int o2 = active_o2(dive, dc, sample->time);
- po2 = o2 / 1000.0 * depth_to_mbar(sample->depth.mm, dive);
+ po2 = o2 * depth_to_atm(sample->depth.mm, dive);
}
if (po2 >= 500)
otu += pow((po2 - 500) / 1000.0, 0.83) * t / 30.0;
@@ -285,7 +285,7 @@ static int calculate_cns(struct dive *dive)
po2 = sample->po2;
} else {
int o2 = active_o2(dive, dc, sample->time);
- po2 = o2 / 1000.0 * depth_to_mbar(sample->depth.mm, dive);
+ po2 = o2 / depth_to_atm(sample->depth.mm, dive);
}
/* Find what table-row we should calculate % for */
for (j = 1; j < sizeof(cns_table)/(sizeof(int) * 3); j++)
@@ -338,7 +338,7 @@ static int calculate_sac(struct dive *dive)
return 0;
/* Mean pressure in ATM (SAC calculations are in atm*l/min) */
- pressure = (double) depth_to_mbar(meandepth, dive) / SURFACE_PRESSURE;
+ pressure = depth_to_atm(meandepth, dive);
sac = airuse / pressure * 60 / duration;
/* milliliters per minute.. */