From f45e9a8d37a384ccea33158a4d3062d633720c93 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 26 Apr 2025 17:32:00 -0400 Subject: parse flow rate unit in compressor toml files --- unit.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'unit.c') diff --git a/unit.c b/unit.c index 9fd54f9..73b0b43 100644 --- a/unit.c +++ b/unit.c @@ -1,6 +1,8 @@ #include +#include #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) { -- cgit v1.2.3