diff options
author | willem ferguson <willemferguson@zoology.up.ac.za> | 2014-11-01 12:06:49 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-11-01 22:05:13 -0700 |
commit | 9e2ce3d99aee3832187be21b93e525e8508da9da (patch) | |
tree | 368cbc6c2fd6c84e594838d75a045f630a777252 /dive.c | |
parent | e3be473a7fc82bd99d2a76e9294e564b0f5eea82 (diff) | |
download | subsurface-9e2ce3d99aee3832187be21b93e525e8508da9da.tar.gz |
Remove code causing problems with CCR dive log rendering.
Currently, if there is a po2 given in the dive log, the dive is assumed
to be CCR. When a CCR dive has a fo2 of 100%, then the po2 is set as
the same as ambient pressure. This destroys the CCR po2 graph in the dive
profile that derives from oxygen with a fo2 of 100% in one of the
cylinders but which, after adding the dilent gas, has a po2 far below
ambient pressure. The calculation for 100% oxygen only applies to deco
using 100% o2 and then the dive computer calculates the appropriate po2.
This patch removes the setting of po2 to ambient when fo2 is 100%,
1) to enable accurate graphing of po2 values for CCR dives using 100% o2
in the first cylinder.
2) To use the po2 value reported by the DC in the first place.
Signed-off-by: willem ferguson <willemferguson@zoology.up.ac.za>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'dive.c')
-rw-r--r-- | dive.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1551,7 +1551,7 @@ int gasmix_distance(const struct gasmix *a, const struct gasmix *b) extern void fill_pressures(struct gas_pressures *pressures, const double amb_pressure, const struct gasmix *mix, double po2) { if (po2) { // This is probably a CCR dive where pressures->o2 is defined - if (po2 >= amb_pressure || get_o2(mix) == 1000) { + if (po2 >= amb_pressure) { pressures->o2 = amb_pressure; pressures->n2 = pressures->he = 0.0; } else { @@ -1559,8 +1559,7 @@ extern void fill_pressures(struct gas_pressures *pressures, const double amb_pre pressures->he = (amb_pressure - pressures->o2) * (double)get_he(mix) / (1000 - get_o2(mix)); pressures->n2 = amb_pressure - pressures->o2 - pressures->he; } - } else { - // Open circuit dives: no gas pressure values available, they need to be calculated + } else { // Open circuit dives: no gas pressure values available, they need to be calculated pressures->o2 = get_o2(mix) / 1000.0 * amb_pressure; // These calculations are also used if the CCR calculation above.. pressures->he = get_he(mix) / 1000.0 * amb_pressure; // ..returned a po2 of zero (i.e. o2 sensor data not resolvable) pressures->n2 = (1000 - get_o2(mix) - get_he(mix)) / 1000.0 * amb_pressure; |