From bc1d5a436f81561072d7f4f0f0ecb1fa85718c7f Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Fri, 28 Feb 2025 18:03:06 -0500 Subject: pressure conversion functions --- unit.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 10 deletions(-) (limited to 'unit.c') diff --git a/unit.c b/unit.c index fde768f..316a39a 100644 --- a/unit.c +++ b/unit.c @@ -3,6 +3,16 @@ #include "unit.h" +/* Kilograms per pound. */ +#define KG_PER_LB 0.45359237 + +/* Acceleration of gravity [m/(s*s)]. */ +#define G 9.80665 + +/* Metres per inch. */ +#define M_PER_IN 0.0254 + + AngularSpeed rad_per_sec(double x) { return x; @@ -33,16 +43,55 @@ Fraction percent(double x); double as_percent(Fraction x); -Pressure pascal(double x); -Pressure millibar(double x); -Pressure kilopascal(double x); -Pressure bar(double x); -Pressure psi(double x); -double as_pascal(Pressure x); -double as_millibar(Pressure x); -double as_kilopascal(Pressure x); -double as_bar(Pressure x); -double as_psi(Pressure x); +Pressure +pascal(double x) { + return x; +} + +Pressure +millibar(double x) { + return x * 100.0; +} + +Pressure +kilopascal(double x) { + return x * 1e3; +} + +Pressure +bar(double x) { + return x * 1e5; +} + +Pressure +psi(double x) { + return x * KG_PER_LB * G / pow(M_PER_IN, 2); +} + +double +as_pascal(Pressure x) { + return x; +} + +double +as_millibar(Pressure x) { + return x / 100.0; +} + +double +as_kilopascal(Pressure x) { + return x * 1e-3; +} + +double +as_bar(Pressure x) { + return x * 1e-5; +} + +double +as_psi(Pressure x) { + return x * pow(M_PER_IN, 2) / (KG_PER_LB * G); +} Volume -- cgit v1.2.3