mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Don't bother with "correct" units for the pressure_time calculation
I fixed the pressure-time calculations to use "proper" units, but thinking about it some more, it turns out that units don't really matter. As long as we use the *same* unit for calculating the integral, and then re-calculating the step-wise entries, the units will cancel out. So we can simplify the "pressure_time()" function a bit, and use whatever units are most natural for our internal representation. So instead of using atm, use "mbar". Now, since the units don't matter, this patch doesn't really make much of a difference conceptually. Sure, it's a slightly simpler function, but maybe using more "natural" units for it would be worth it. But it turns out that using milli-bar and seconds has an advantage: we could do all the pressure_time integral using 32-bit integers, and we'd still be able to represent values that would be equivalent to staying at 24 bar for a whole day. This patch doesn't actually change the code to use integers, but with this unit choice, we at least have that possibility. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
d85d8421e0
commit
1ee0101b28
1 changed files with 7 additions and 2 deletions
|
@ -1394,14 +1394,19 @@ static void fill_missing_segment_pressures(pr_track_t *list)
|
||||||
* What's the pressure-time between two plot data entries?
|
* What's the pressure-time between two plot data entries?
|
||||||
* We're calculating the integral of pressure over time by
|
* We're calculating the integral of pressure over time by
|
||||||
* adding these up.
|
* adding these up.
|
||||||
|
*
|
||||||
|
* The units won't matter as long as everybody agrees about
|
||||||
|
* them, since they'll cancel out - we use this to calculate
|
||||||
|
* a constant SAC-rate-equivalent, but we only use it to
|
||||||
|
* scale pressures, so it ends up being a unitless scaling
|
||||||
|
* factor.
|
||||||
*/
|
*/
|
||||||
static inline double pressure_time(struct dive *dive, struct plot_data *a, struct plot_data *b)
|
static inline double pressure_time(struct dive *dive, struct plot_data *a, struct plot_data *b)
|
||||||
{
|
{
|
||||||
int time = b->sec - a->sec;
|
int time = b->sec - a->sec;
|
||||||
int depth = (a->depth + b->depth)/2;
|
int depth = (a->depth + b->depth)/2;
|
||||||
int mbar = depth_to_mbar(depth, dive);
|
|
||||||
|
|
||||||
return bar_to_atm(mbar / 1000.0) * time;
|
return depth_to_mbar(depth, dive) * time;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi, pr_track_t **track_pr)
|
static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi, pr_track_t **track_pr)
|
||||||
|
|
Loading…
Reference in a new issue