OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm::runoff::RunoffSoA Struct Reference

#include <Runoff.hpp>

Collaboration diagram for openswmm::runoff::RunoffSoA:

Public Member Functions

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.
 

Public Attributes

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
 

Member Function Documentation

◆ 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
nNonnegative 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.

Member Data Documentation

◆ 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

Subcatchment area (ft²)

◆ completed

std::vector<std::array<CompletedSubareaWater, 3> > openswmm::runoff::RunoffSoA::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

Ponded depth, PERV (ft)

◆ 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

Manning's n, impervious.

◆ n_perv

std::vector<double> openswmm::runoff::RunoffSoA::n_perv

Manning's n, pervious.

◆ 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

Total runoff rate (cfs)

◆ slope

std::vector<double> openswmm::runoff::RunoffSoA::slope

Average slope (ft/ft)

◆ 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

Subcatchment width (ft)


The documentation for this struct was generated from the following files: