Add depth to mbar helper function

This ensures that we use consistent math to get the absolute pressure at a
certain depth.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2012-11-10 23:11:40 +01:00
parent f53788e5e4
commit e167108c76
3 changed files with 33 additions and 17 deletions

14
dive.h
View file

@ -281,6 +281,20 @@ struct dive {
struct sample sample[];
};
/* Pa = N/m^2 - so we determine the weight (in N) of the mass of 10m
* of water (and use standard salt water at 1.03kg per liter if we don't know salinity)
* and add that to the surface pressure (or to 1013 if that's unknown) */
static inline int depth_to_mbar(int depth, struct dive *dive)
{
double specific_weight = 1.03 * 0.981;
int surface_pressure = 1013;
if (dive->salinity)
specific_weight = dive->salinity / 10000.0 * 0.981;
if (dive->surface_pressure.mbar)
surface_pressure = dive->surface_pressure.mbar;
return depth / 10.0 * specific_weight + surface_pressure + 0.5;
}
/* this is a global spot for a temporary dive structure that we use to
* be able to edit a dive without unintended side effects */
extern struct dive edit_dive;