aboutsummaryrefslogtreecommitdiffstats
path: root/unit.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-02-28 18:03:06 -0500
committerSam Anthony <sam@samanthony.xyz>2025-02-28 18:03:06 -0500
commitbc1d5a436f81561072d7f4f0f0ecb1fa85718c7f (patch)
tree4b5a3a0a10934ce9f85dcae54d80ab91a89ede12 /unit.c
parent555849edd9b7053e7197b88e150aa05479df0872 (diff)
downloadvolute-bc1d5a436f81561072d7f4f0f0ecb1fa85718c7f.zip
pressure conversion functions
Diffstat (limited to 'unit.c')
-rw-r--r--unit.c69
1 files changed, 59 insertions, 10 deletions
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