#include <Runoff.hpp>
|
| void | resize (int n) |
| | Reset all three-pool geometry, native water histories and output rows.
|
| |
| void | computeAlpha () |
| | Recompute native Manning reservoir coefficients from current geometry. Uses feet/ft2, slope ft/ft, imperial PHI and authored n, preserving legacy operation order. Impervious alpha uses combined impervious area for both pools. Positive-area rows with nonpositive n/subarea area get zero alpha; total area<=0 retains prior coefficients. Requires aligned arrays and finite nonnegative slope/fractions; negative slope is not guarded and can produce NaN. No context synchronization.
|
| |
|
| int | n_subcatch = 0 |
| |
| std::vector< double > | area |
| | Subcatchment area (ft²)
|
| |
| std::vector< double > | width |
| | Subcatchment width (ft)
|
| |
| std::vector< double > | slope |
| | Average slope (ft/ft)
|
| |
| std::vector< double > | imperv_pct |
| |
| std::vector< double > | frac_imperv0 |
| | IMPERV0 (no depression storage)
|
| |
| std::vector< double > | frac_imperv1 |
| | IMPERV1 (with depression storage)
|
| |
| std::vector< double > | alpha_imperv |
| | Alpha for impervious subareas.
|
| |
| std::vector< double > | alpha_perv |
| | Alpha for pervious subarea.
|
| |
| std::vector< double > | ds_imperv |
| | Depression storage for IMPERV1.
|
| |
| std::vector< double > | ds_perv |
| | Depression storage for PERV.
|
| |
| std::vector< double > | n_imperv |
| | Manning's n, impervious.
|
| |
| std::vector< double > | n_perv |
| | Manning's n, pervious.
|
| |
| std::vector< double > | depth_imperv0 |
| | Ponded depth, IMPERV0 (ft) — dStore=0.
|
| |
| std::vector< double > | depth_imperv1 |
| | Ponded depth, IMPERV1 (ft) — dStore>0.
|
| |
| std::vector< double > | depth_perv |
| | Ponded depth, PERV (ft)
|
| |
| std::vector< double > | old_runoff_imperv0 |
| | Previous IMPERV0 runoff (ft/sec)
|
| |
| std::vector< double > | old_runoff_imperv1 |
| | Previous IMPERV1 runoff (ft/sec)
|
| |
| std::vector< double > | old_runoff_perv |
| | Previous PERV runoff (ft/sec)
|
| |
| std::vector< double > | runoff |
| | Total runoff rate (cfs)
|
| |
| std::vector< double > | evap_loss |
| | Reserved serialized row; execute writes context ft/s losses.
|
| |
| std::vector< double > | infil_loss |
| | Reserved serialized row; execute writes context ft/s losses.
|
| |
| std::vector< double > | perv_evap_vol |
| | Pervious-subarea evaporation this step (ft3) — legacy Vpevap.
|
| |
| std::vector< double > | actual_perv_evap_vol |
| |
| std::vector< double > | spatial_infil_vol |
| | Completed partition diagnostics: ft3 spatial intake and ft/s outside native capacity.
|
| |
| std::vector< double > | native_infil_rate |
| |
| std::vector< double > | infil_vol |
| |
| std::vector< double > | subarea_runoff_rate |
| |
| std::vector< double > | imperv_runoff_cfs |
| | Impervious subarea runoff (CFS, non-LID area)
|
| |
| std::vector< double > | perv_runoff_cfs |
| |
| std::vector< double > | outflow_vol |
| |
| std::vector< std::array< CompletedSubareaWater, 3 > > | completed |
| |
◆ computeAlpha()
| void openswmm::runoff::RunoffSoA::computeAlpha |
( |
| ) |
|
Recompute native Manning reservoir coefficients from current geometry. Uses feet/ft2, slope ft/ft, imperial PHI and authored n, preserving legacy operation order. Impervious alpha uses combined impervious area for both pools. Positive-area rows with nonpositive n/subarea area get zero alpha; total area<=0 retains prior coefficients. Requires aligned arrays and finite nonnegative slope/fractions; negative slope is not guarded and can produce NaN. No context synchronization.
◆ resize()
| void openswmm::runoff::RunoffSoA::resize |
( |
int | n | ) |
|
Reset all three-pool geometry, native water histories and output rows.
- Parameters
-
| n | Nonnegative subcatchment count fitting allocations and int indexing. Installs n rows: geometry/depth/rates/diagnostics zero, Manning n 0.01 impervious and 0.1 pervious. Does not configure soil or context. Sequential allocations can leave a partial reset on exception; callers qualify size before mutation. |
◆ actual_perv_evap_vol
| std::vector<double> openswmm::runoff::RunoffSoA::actual_perv_evap_vol |
Actual PERV evaporation alone (ft3), excluding legacy impervious carry-in.
◆ alpha_imperv
| std::vector<double> openswmm::runoff::RunoffSoA::alpha_imperv |
Alpha for impervious subareas.
◆ alpha_perv
| std::vector<double> openswmm::runoff::RunoffSoA::alpha_perv |
Alpha for pervious subarea.
◆ area
| std::vector<double> openswmm::runoff::RunoffSoA::area |
◆ completed
◆ depth_imperv0
| std::vector<double> openswmm::runoff::RunoffSoA::depth_imperv0 |
Ponded depth, IMPERV0 (ft) — dStore=0.
◆ depth_imperv1
| std::vector<double> openswmm::runoff::RunoffSoA::depth_imperv1 |
Ponded depth, IMPERV1 (ft) — dStore>0.
◆ depth_perv
| std::vector<double> openswmm::runoff::RunoffSoA::depth_perv |
◆ ds_imperv
| std::vector<double> openswmm::runoff::RunoffSoA::ds_imperv |
Depression storage for IMPERV1.
◆ ds_perv
| std::vector<double> openswmm::runoff::RunoffSoA::ds_perv |
Depression storage for PERV.
◆ evap_loss
| std::vector<double> openswmm::runoff::RunoffSoA::evap_loss |
Reserved serialized row; execute writes context ft/s losses.
◆ frac_imperv0
| std::vector<double> openswmm::runoff::RunoffSoA::frac_imperv0 |
IMPERV0 (no depression storage)
The three subarea area fractions, formed exactly as legacy forms them (subcatch.c:268-270) from the AUTHORED [SUBAREAS] PctZero percent: frac_imperv0 = fracImperv * PctZero / 100 frac_imperv1 = fracImperv * (1 - PctZero / 100) Legacy multiplies by the percent and divides afterwards; dividing first and multiplying by the stored 0-1 fraction is a different double for about a tenth of all percentages, and the difference lands straight in the subarea's area. Every consumer — the runoff kernel, the stored-volume accounting, the water-age and heat watershed modules — reads these so there is one definition of the split.
◆ frac_imperv1
| std::vector<double> openswmm::runoff::RunoffSoA::frac_imperv1 |
IMPERV1 (with depression storage)
◆ imperv_pct
| std::vector<double> openswmm::runoff::RunoffSoA::imperv_pct |
Impervious fraction (0-1)
◆ imperv_runoff_cfs
| std::vector<double> openswmm::runoff::RunoffSoA::imperv_runoff_cfs |
Impervious subarea runoff (CFS, non-LID area)
◆ infil_loss
| std::vector<double> openswmm::runoff::RunoffSoA::infil_loss |
Reserved serialized row; execute writes context ft/s losses.
◆ infil_vol
| std::vector<double> openswmm::runoff::RunoffSoA::infil_vol |
Non-LID infiltration this step (ft3) — legacy Vinfil
◆ n_imperv
| std::vector<double> openswmm::runoff::RunoffSoA::n_imperv |
◆ n_perv
| std::vector<double> openswmm::runoff::RunoffSoA::n_perv |
◆ n_subcatch
| int openswmm::runoff::RunoffSoA::n_subcatch = 0 |
◆ native_infil_rate
| std::vector<double> openswmm::runoff::RunoffSoA::native_infil_rate |
◆ old_runoff_imperv0
| std::vector<double> openswmm::runoff::RunoffSoA::old_runoff_imperv0 |
Previous IMPERV0 runoff (ft/sec)
◆ old_runoff_imperv1
| std::vector<double> openswmm::runoff::RunoffSoA::old_runoff_imperv1 |
Previous IMPERV1 runoff (ft/sec)
◆ old_runoff_perv
| std::vector<double> openswmm::runoff::RunoffSoA::old_runoff_perv |
Previous PERV runoff (ft/sec)
◆ outflow_vol
| std::vector<double> openswmm::runoff::RunoffSoA::outflow_vol |
Legacy Voutflow: this step's outlet runoff VOLUME from the non-LID area (ft3). Kept so the LID exchange can rebuild newRunoff in the volume domain exactly as legacy subcatch.c:746-751 does (vOutflow = Voutflow - VlidIn + VlidOut; newRunoff = vOutflow/tStep).
◆ perv_evap_vol
| std::vector<double> openswmm::runoff::RunoffSoA::perv_evap_vol |
Pervious-subarea evaporation this step (ft3) — legacy Vpevap.
◆ perv_runoff_cfs
| std::vector<double> openswmm::runoff::RunoffSoA::perv_runoff_cfs |
Pervious subarea runoff (CFS, non-LID area)
◆ runoff
| std::vector<double> openswmm::runoff::RunoffSoA::runoff |
◆ slope
| std::vector<double> openswmm::runoff::RunoffSoA::slope |
◆ spatial_infil_vol
| std::vector<double> openswmm::runoff::RunoffSoA::spatial_infil_vol |
Completed partition diagnostics: ft3 spatial intake and ft/s outside native capacity.
◆ subarea_runoff_rate
| std::vector<double> openswmm::runoff::RunoffSoA::subarea_runoff_rate |
legacy subcatch_getRunoff's return value: the three subareas' runoff summed over their areas and divided by the FULL area (ft/s), before the inter-subarea routing and the LID exchange — what runoff_execute tests for HasRunoff and hands surfqual_getWashoff.
◆ width
| std::vector<double> openswmm::runoff::RunoffSoA::width |
The documentation for this struct was generated from the following files:
- /home/runner/work/openswmm.engine/openswmm.engine/src/engine/hydrology/Runoff.hpp
- /home/runner/work/openswmm.engine/openswmm.engine/src/engine/hydrology/Runoff.cpp