OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
UnitConversion.hpp
Go to the documentation of this file.
1
25#ifndef OPENSWMM_UNIT_CONVERSION_HPP
26#define OPENSWMM_UNIT_CONVERSION_HPP
27
28namespace openswmm {
29
30struct SimulationOptions;
31
32namespace ucf {
33
34// ============================================================================
35// Quantity codes — matching legacy enums.h
36// ============================================================================
37
51
52// ============================================================================
53// Conversion factor tables — identical to legacy Ucf[10][2] and Qcf[6]
54// ============================================================================
55
58static constexpr double Ucf[10][2] = {
59 // US SI
60 {43200.0, 1097280.0 }, // RAINFALL: in/hr, mm/hr → ft/sec
61 {12.0, 304.8 }, // RAINDEPTH: in, mm → ft
62 {1036800.0, 26334720.0}, // EVAPRATE: in/day, mm/day → ft/sec
63 {1.0, 0.3048 }, // LENGTH: ft, m → ft
64 {2.2956e-5, 0.92903e-5}, // LANDAREA: ac, ha → ft²
65 {1.0, 0.02832 }, // VOLUME: ft³, m³ → ft³
66 {1.0, 1.608 }, // WINDSPEED: mph, km/hr → mph
67 {1.0, 1.8 }, // TEMPERATURE: °F, °C → °F
68 {2.203e-6, 1.0e-6 }, // MASS: lb, kg → mg
69 {43560.0, 3048.0 } // GWFLOW: cfs/ac, cms/ha → ft/sec
70};
71
73static constexpr double Qcf[6] = {
74 1.0, // CFS → cfs
75 448.831, // GPM → cfs
76 0.64632, // MGD → cfs
77 0.02832, // CMS → cfs
78 28.317, // LPS → cfs
79 2.4466 // MLD → cfs
80};
81
82// ============================================================================
83// Convenience constants — common fixed conversions not unit-system dependent
84// ============================================================================
85
86static constexpr double ACRES_TO_FT2 = 43560.0;
87static constexpr double FT3_TO_MGAL = 7.48052e-6;
88static constexpr double SEC_PER_DAY = 86400.0;
89
90// ============================================================================
91// UCF function — matching legacy UCF()
92// ============================================================================
93
110double UCF(int quantity, const SimulationOptions& opts);
111
119int getUnitSystem(int flow_units);
120
121} // namespace ucf
122} // namespace openswmm
123
124#endif // OPENSWMM_UNIT_CONVERSION_HPP
double Qcf[]
Quantity
Definition UnitConversion.hpp:38
@ TEMPERATURE
Divide °F (US) or °C (SI) by this → °F.
Definition UnitConversion.hpp:46
@ EVAPRATE
Divide in/day (US) or mm/day (SI) by this → ft/sec.
Definition UnitConversion.hpp:41
@ LANDAREA
Divide ac (US) or ha (SI) by this → ft²
Definition UnitConversion.hpp:43
@ MASS
Divide lb (US) or kg (SI) by this → mg.
Definition UnitConversion.hpp:47
@ VOLUME
Divide ft³ (US) or m³ (SI) by this → ft³
Definition UnitConversion.hpp:44
@ FLOW
Divide display flow units by this → cfs.
Definition UnitConversion.hpp:49
@ RAINFALL
Divide in/hr (US) or mm/hr (SI) by this → ft/sec.
Definition UnitConversion.hpp:39
@ RAINDEPTH
Divide in (US) or mm (SI) by this → ft.
Definition UnitConversion.hpp:40
@ WINDSPEED
Divide mph (US) or km/hr (SI) by this → mph.
Definition UnitConversion.hpp:45
@ LENGTH
Divide ft (US) or m (SI) by this → ft.
Definition UnitConversion.hpp:42
@ GWFLOW
Divide cfs/ac (US) or cms/ha (SI) by this → ft/sec.
Definition UnitConversion.hpp:48
double UCF(int quantity, const SimulationOptions &opts)
Get unit conversion factor for a quantity.
Definition UnitConversion.cpp:23
int getUnitSystem(int flow_units)
Determine unit system (0=US, 1=SI) from flow units.
Definition UnitConversion.cpp:17
Definition Controls.cpp:24