aboutsummaryrefslogtreecommitdiffstats
path: root/unit.c
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2025-04-26 17:32:00 -0400
committerSam Anthony <sam@samanthony.xyz>2025-04-26 17:32:00 -0400
commitf45e9a8d37a384ccea33158a4d3062d633720c93 (patch)
tree59315423a519128d37bfd6b94fb52df92a70ca18 /unit.c
parent546e29a6f439146338f320240cab9b3b760eecb7 (diff)
downloadvolute-f45e9a8d37a384ccea33158a4d3062d633720c93.zip
parse flow rate unit in compressor toml files
Diffstat (limited to 'unit.c')
-rw-r--r--unit.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/unit.c b/unit.c
index 9fd54f9..73b0b43 100644
--- a/unit.c
+++ b/unit.c
@@ -1,6 +1,8 @@
#include <math.h>
+#include <stddef.h>
#include "unit.h"
+#include "util.h"
/* Kilograms per pound. */
@@ -21,6 +23,50 @@
/* Zero Celsius in Kelvin. */
#define ZERO_C 273.15
+const char *const pressure_units[] = {"mbar", "kPa", "bar", "psi", "inHG"};
+const PressureMaker pressure_makers[nelem(pressure_units)] = {
+ millibar, kilopascal, bar, psi, inch_mercury,
+};
+const PressureReader pressure_readers[nelem(pressure_units)] = {
+ as_millibar, as_kilopascal, as_bar, as_psi, as_inch_mercury,
+};
+const size_t n_pressure_units = nelem(pressure_units);
+
+const char *const temperature_units[] = {"°C", "K", "°F", "°R"};
+const TemperatureMaker temperature_makers[nelem(temperature_units)] = {
+ celsius, kelvin, fahrenheit, rankine,
+};
+const TemperatureReader temperature_readers[nelem(temperature_units)] = {
+ as_celsius, as_kelvin, as_fahrenheit, as_rankine,
+};
+const size_t n_temperature_units = nelem(temperature_units);
+
+const char *const volume_units[] = {"cc", "l", "ci"};
+const VolumeMaker volume_makers[nelem(volume_units)] = {
+ cubic_centimetre, litre, cubic_inch,
+};
+const VolumeReader volume_readers[nelem(volume_units)] = {
+ as_cubic_centimetre, as_litre, as_cubic_inch,
+};
+const size_t n_volume_units = nelem(volume_units);
+
+const char *const volume_flow_rate_units[] = {"m³/s", "CFM"};
+const VolumeFlowRateMaker volume_flow_rate_makers[nelem(volume_flow_rate_units)] = {
+ cubic_metre_per_sec, cubic_foot_per_min,
+};
+const VolumeFlowRateReader volume_flow_rate_readers[nelem(volume_flow_rate_units)] = {
+ as_cubic_metre_per_sec, as_cubic_foot_per_min,
+};
+const size_t n_volume_flow_rate_units = nelem(volume_flow_rate_units);
+
+const char *const mass_flow_rate_units[] = {"kg/s", "lb/min"};
+const MassFlowRateMaker mass_flow_rate_makers[nelem(mass_flow_rate_units)] = {
+ kilo_per_sec, pound_per_min,
+};
+const MassFlowRateReader mass_flow_rate_readers[nelem(mass_flow_rate_units)] = {
+ as_kilo_per_sec, as_pound_per_min,
+};
+const size_t n_mass_flow_rate_units = nelem(mass_flow_rate_units);
AngularSpeed
rad_per_sec(double x) {