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

Structure-of-Arrays storage for all subcatchments. More...

#include <SubcatchData.hpp>

Collaboration diagram for openswmm::SubcatchData:

Public Member Functions

void resize_total_load (int n_sc, int n_poll)
 
void resize_coverage (int n_sc, int n_lu)
 Resize the coverage and sweep matrices.
 
int count () const noexcept
 
void resize (int n)
 
void grow_to (int n)
 Grow all arrays to hold at least n subcatchments, preserving existing data.
 
void erase_at (int idx)
 Erase the subcatchment at index idx from every parallel array.
 
void resize_quality (int n_pollutants)
 Resize per-subcatch quality arrays after pollutant count is known.
 
void resize_washoff_load (int n_pollutants)
 
void shrink_to_fit ()
 Release excess vector capacity accumulated during parsing.
 
void save_state () noexcept
 
void reset_state () noexcept
 

Public Attributes

std::vector< int > outlet_node
 Index of the drain-to node or subcatchment.
 
std::vector< int > outlet_subcatch
 Index of the subcatch that receives overflow (-1 if none).
 
std::vector< std::string > outlet_name
 Outlet name string for deferred resolution.
 
std::vector< int > gage
 Rain gage index for this subcatchment.
 
std::vector< double > area
 Subcatchment area (project area units).
 
std::vector< double > width
 Width of overland flow path (project length units).
 
std::vector< double > slope
 Average slope of catchment (fraction).
 
std::vector< double > curb_length
 Total curb length (project length units).
 
std::vector< double > frac_imperv
 Fraction of area that is impervious (0–1).
 
std::vector< double > frac_imperv_no_store
 Fraction of impervious area with no depression storage (0–1).
 
std::vector< double > n_imperv
 Manning's n for impervious area.
 
std::vector< double > n_perv
 Manning's n for pervious area.
 
std::vector< double > ds_imperv
 Depression storage depth for impervious area (project length units).
 
std::vector< double > ds_perv
 Depression storage depth for pervious area (project length units).
 
std::vector< int > subarea_routing
 Inter-subarea routing mode.
 
std::vector< double > pct_routed
 Fraction of runoff routed between subareas (0–1).
 
std::vector< int > infil_model
 Infiltration model: 0=HORTON, 1=MOD_HORTON, 2=GREEN_AMPT, 3=MOD_GREEN_AMPT, 4=CURVE_NUMBER.
 
std::vector< double > infil_p1
 Infiltration param 1: f0 (Horton), suction (GA), CN (CN).
 
std::vector< double > infil_p2
 Infiltration param 2: fmin (Horton), conductivity (GA), 0 (CN).
 
std::vector< double > infil_p3
 Infiltration param 3: decay (Horton), initial deficit (GA), 0 (CN).
 
std::vector< double > infil_p4
 Infiltration param 4: dry time (Horton), 0 (GA/CN).
 
std::vector< double > infil_p5
 Infiltration param 5: max infil (Horton), 0 (GA/CN).
 
std::vector< double > runoff
 Current total runoff flow rate (project flow units).
 
std::vector< double > rainfall
 Current total rainfall depth rate (project length/time units).
 
std::vector< double > evap_loss
 Current evaporation loss rate (project length/time units).
 
std::vector< double > infil_loss
 Current infiltration loss rate (project length/time units).
 
std::vector< double > ponded_depth
 Current total ponded depth over subcatchment (project length units).
 
std::vector< double > gw_flow
 Groundwater outflow rate (project flow units).
 
std::vector< double > old_runoff
 Runoff at the previous timestep.
 
std::vector< double > old_gw_flow
 GW flow at the previous runoff evaluation (for interpolation).
 
std::vector< double > runon_inflow
 Runoff inflow from upstream subcatchments (project flow units).
 
std::vector< double > old_runon_inflow
 Previous-step runon inflow (for interpolation).
 
std::vector< double > outfall_runon_vol
 Gap #28: accumulated outfall-routed volume (ft³) between runoff steps.
 
std::vector< double > gw_sw_head
 Surface water head at GW receiving node (project length units).
 
std::vector< double > gw_node_avail_flow
 Available node flow for GW negative flow limit (cfs/ft2).
 
std::vector< double > gw_max_infil_vol
 Gap #40: max infiltration volume (ft) upper GW zone can accept next step.
 
std::vector< double > washoff_load
 Washoff mass rate per (subcatch, pollutant) (mass/sec).
 
std::vector< double > conc
 Current quality concentration in subcatchment runoff.
 
std::vector< double > conc_old
 Previous-step quality in subcatchment runoff.
 
std::vector< double > ponded_qual
 Ponded surface water quality mass per (subcatch, pollutant).
 
int conc_n_pollutants = 0
 Number of pollutants in the quality arrays.
 
std::vector< std::string > comments
 Object comment from the INP file (';'-prefixed lines immediately above this subcatchment's data row), joined by literal "\\n". Empty string means no comment.
 
std::vector< std::string > tags
 Per-object tag from the INP [TAGS] section.
 
std::vector< char > rpt_flag
 Whether this subcatchment is included in report/output (0=no, 1=yes).
 
std::vector< double > stat_precip_vol
 Total precipitation volume (project volume units).
 
std::vector< double > stat_evap_vol
 Cumulative evaporation volume (ft3)
 
std::vector< double > stat_infil_vol
 Cumulative infiltration volume (ft3)
 
std::vector< double > stat_imperv_vol
 Cumulative impervious runoff volume (ft3)
 
std::vector< double > stat_perv_vol
 Cumulative pervious runoff volume (ft3)
 
std::vector< double > stat_runoff_vol
 Total runoff volume (project volume units).
 
std::vector< double > stat_max_runoff
 Maximum reported runoff rate (project flow units).
 
std::vector< double > stat_gw_infil_vol
 Cumulative infiltration to GW (ft³)
 
std::vector< double > stat_gw_upper_evap_vol
 Cumulative upper zone evap (ft³)
 
std::vector< double > stat_gw_lower_evap_vol
 Cumulative lower zone evap (ft³)
 
std::vector< double > stat_gw_deep_perc_vol
 Cumulative deep percolation (ft³)
 
std::vector< double > stat_gw_flow_vol
 Cumulative lateral GW outflow (ft³)
 
std::vector< double > stat_gw_max_flow
 Peak lateral GW outflow (CFS)
 
std::vector< double > stat_gw_sum_theta
 Sum of upper-zone theta (for time-avg)
 
std::vector< double > stat_gw_sum_depth
 Sum of water table height (ft, for time-avg)
 
std::vector< double > stat_gw_final_theta
 Upper-zone theta at last GW step.
 
std::vector< double > stat_gw_final_depth
 Water table height at last GW step (ft)
 
std::vector< long > stat_gw_steps
 Step count for GW averages.
 
std::vector< int > gw_aquifer
 Aquifer index for this subcatchment (-1 = none).
 
std::vector< int > gw_node
 Receiving node index for groundwater flow (-1 = none).
 
std::vector< double > gw_surf_elev
 Surface elevation for groundwater calculations.
 
std::vector< double > gw_a1
 Groundwater flow coefficient A1.
 
std::vector< double > gw_b1
 Groundwater flow exponent B1.
 
std::vector< double > gw_a2
 Groundwater flow coefficient A2.
 
std::vector< double > gw_b2
 Groundwater flow exponent B2.
 
std::vector< double > gw_a3
 Groundwater flow coefficient A3.
 
std::vector< double > gw_tw
 Threshold groundwater table elevation.
 
std::vector< double > gw_hstar
 Water table elevation at which lateral GW flow ceases.
 
std::vector< int > snowpack
 Snowpack index for this subcatchment (-1 = none).
 
std::vector< double > snow_net_imperv
 Snow-modified net precipitation for impervious subareas (ft/sec).
 
std::vector< double > snow_net_perv
 Snow-modified net precipitation for pervious subarea (ft/sec).
 
std::vector< double > total_lid_area_ft2
 Total LID area for this subcatchment (ft²).
 
std::vector< double > lid_return_to_perv_cfs
 LID surface return flow to pervious area (CFS).
 
std::vector< double > lid_drain_runon_cfs
 LID drain flow routed to a target subcatchment (CFS).
 
std::vector< double > total_load
 Total washoff load per (subcatchment x pollutant) (mass units).
 
int total_load_n_pollutants = 0
 Number of pollutants in total_load matrix.
 
std::vector< double > coverage
 Coverage fraction per (subcatchment x landuse).
 
int coverage_n_landuses = 0
 Number of landuses stored in the coverage and sweep matrices.
 
std::vector< double > sweep_last_swept
 Gap #34: days since last swept per (subcatch x landuse).
 

Detailed Description

Structure-of-Arrays storage for all subcatchments.

Pollutant-related arrays are stored separately in PollutantData, indexed as [subcatch_idx * n_pollutants + pollutant_idx].

Member Function Documentation

◆ count()

int openswmm::SubcatchData::count ( ) const
inlinenoexcept
Here is the caller graph for this function:

◆ erase_at()

void openswmm::SubcatchData::erase_at ( int  idx)
inline

Erase the subcatchment at index idx from every parallel array.

Removes element idx from every SoA vector. Flat-2D arrays (conc/ponded_qual/washoff_load, coverage/sweep, total_load) have their full stride for idx removed. Spatial arrays are erased separately by ObjectDeleter.

Here is the caller graph for this function:

◆ grow_to()

void openswmm::SubcatchData::grow_to ( int  n)
inline

Grow all arrays to hold at least n subcatchments, preserving existing data.

Here is the call graph for this function:

◆ reset_state()

void openswmm::SubcatchData::reset_state ( )
inlinenoexcept
Here is the caller graph for this function:

◆ resize()

void openswmm::SubcatchData::resize ( int  n)
inline
Here is the caller graph for this function:

◆ resize_coverage()

void openswmm::SubcatchData::resize_coverage ( int  n_sc,
int  n_lu 
)
inline

Resize the coverage and sweep matrices.

Parameters
n_scNumber of subcatchments.
n_luNumber of landuses.

◆ resize_quality()

void openswmm::SubcatchData::resize_quality ( int  n_pollutants)
inline

Resize per-subcatch quality arrays after pollutant count is known.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resize_total_load()

void openswmm::SubcatchData::resize_total_load ( int  n_sc,
int  n_poll 
)
inline

◆ resize_washoff_load()

void openswmm::SubcatchData::resize_washoff_load ( int  n_pollutants)
inline
Here is the call graph for this function:

◆ save_state()

void openswmm::SubcatchData::save_state ( )
inlinenoexcept
Here is the caller graph for this function:

◆ shrink_to_fit()

void openswmm::SubcatchData::shrink_to_fit ( )
inline

Release excess vector capacity accumulated during parsing.

Here is the caller graph for this function:

Member Data Documentation

◆ area

std::vector<double> openswmm::SubcatchData::area

Subcatchment area (project area units).

See also
Legacy: Subcatch[i].area

◆ comments

std::vector<std::string> openswmm::SubcatchData::comments

Object comment from the INP file (';'-prefixed lines immediately above this subcatchment's data row), joined by literal "\\n". Empty string means no comment.

◆ conc

std::vector<double> openswmm::SubcatchData::conc

Current quality concentration in subcatchment runoff.

Size = n_subcatches * n_pollutants.

See also
Legacy: Subcatch[i].newQual[]

◆ conc_n_pollutants

int openswmm::SubcatchData::conc_n_pollutants = 0

Number of pollutants in the quality arrays.

◆ conc_old

std::vector<double> openswmm::SubcatchData::conc_old

Previous-step quality in subcatchment runoff.

◆ coverage

std::vector<double> openswmm::SubcatchData::coverage

Coverage fraction per (subcatchment x landuse).

Indexed as [sc_idx * n_landuses + lu_idx]. Values are 0–1.

◆ coverage_n_landuses

int openswmm::SubcatchData::coverage_n_landuses = 0

Number of landuses stored in the coverage and sweep matrices.

◆ curb_length

std::vector<double> openswmm::SubcatchData::curb_length

Total curb length (project length units).

See also
Legacy: Subcatch[i].curbLength

◆ ds_imperv

std::vector<double> openswmm::SubcatchData::ds_imperv

Depression storage depth for impervious area (project length units).

See also
Legacy: Subcatch[i].subArea[IMPERV0].dStore

◆ ds_perv

std::vector<double> openswmm::SubcatchData::ds_perv

Depression storage depth for pervious area (project length units).

See also
Legacy: Subcatch[i].subArea[PERV].dStore

◆ evap_loss

std::vector<double> openswmm::SubcatchData::evap_loss

Current evaporation loss rate (project length/time units).

See also
Legacy: Subcatch[i].evapLoss

◆ frac_imperv

std::vector<double> openswmm::SubcatchData::frac_imperv

Fraction of area that is impervious (0–1).

See also
Legacy: Subcatch[i].fracImperv

◆ frac_imperv_no_store

std::vector<double> openswmm::SubcatchData::frac_imperv_no_store

Fraction of impervious area with no depression storage (0–1).

See also
Legacy: Subcatch[i].fracImperv2 (EPA calls it fracStoreImperv)

◆ gage

std::vector<int> openswmm::SubcatchData::gage

Rain gage index for this subcatchment.

See also
Legacy: Subcatch[i].gage

◆ gw_a1

std::vector<double> openswmm::SubcatchData::gw_a1

Groundwater flow coefficient A1.

◆ gw_a2

std::vector<double> openswmm::SubcatchData::gw_a2

Groundwater flow coefficient A2.

◆ gw_a3

std::vector<double> openswmm::SubcatchData::gw_a3

Groundwater flow coefficient A3.

◆ gw_aquifer

std::vector<int> openswmm::SubcatchData::gw_aquifer

Aquifer index for this subcatchment (-1 = none).

◆ gw_b1

std::vector<double> openswmm::SubcatchData::gw_b1

Groundwater flow exponent B1.

◆ gw_b2

std::vector<double> openswmm::SubcatchData::gw_b2

Groundwater flow exponent B2.

◆ gw_flow

std::vector<double> openswmm::SubcatchData::gw_flow

Groundwater outflow rate (project flow units).

See also
Legacy: Subcatch[i].groundwater->newFlow

◆ gw_hstar

std::vector<double> openswmm::SubcatchData::gw_hstar

Water table elevation at which lateral GW flow ceases.

◆ gw_max_infil_vol

std::vector<double> openswmm::SubcatchData::gw_max_infil_vol

Gap #40: max infiltration volume (ft) upper GW zone can accept next step.

= (total_depth - lower_depth) * (porosity - theta) / frac_perv. Updated after each GW step; used by Runoff to cap infil rate (vol/dt). DBL_MAX (no constraint) when no GW is active.

◆ gw_node

std::vector<int> openswmm::SubcatchData::gw_node

Receiving node index for groundwater flow (-1 = none).

◆ gw_node_avail_flow

std::vector<double> openswmm::SubcatchData::gw_node_avail_flow

Available node flow for GW negative flow limit (cfs/ft2).

◆ gw_surf_elev

std::vector<double> openswmm::SubcatchData::gw_surf_elev

Surface elevation for groundwater calculations.

◆ gw_sw_head

std::vector<double> openswmm::SubcatchData::gw_sw_head

Surface water head at GW receiving node (project length units).

Assembled from nodes.depth + nodes.invert_elev - aquifer bottom.

◆ gw_tw

std::vector<double> openswmm::SubcatchData::gw_tw

Threshold groundwater table elevation.

◆ infil_loss

std::vector<double> openswmm::SubcatchData::infil_loss

Current infiltration loss rate (project length/time units).

See also
Legacy: Subcatch[i].infilLoss

◆ infil_model

std::vector<int> openswmm::SubcatchData::infil_model

Infiltration model: 0=HORTON, 1=MOD_HORTON, 2=GREEN_AMPT, 3=MOD_GREEN_AMPT, 4=CURVE_NUMBER.

◆ infil_p1

std::vector<double> openswmm::SubcatchData::infil_p1

Infiltration param 1: f0 (Horton), suction (GA), CN (CN).

◆ infil_p2

std::vector<double> openswmm::SubcatchData::infil_p2

Infiltration param 2: fmin (Horton), conductivity (GA), 0 (CN).

◆ infil_p3

std::vector<double> openswmm::SubcatchData::infil_p3

Infiltration param 3: decay (Horton), initial deficit (GA), 0 (CN).

◆ infil_p4

std::vector<double> openswmm::SubcatchData::infil_p4

Infiltration param 4: dry time (Horton), 0 (GA/CN).

◆ infil_p5

std::vector<double> openswmm::SubcatchData::infil_p5

Infiltration param 5: max infil (Horton), 0 (GA/CN).

◆ lid_drain_runon_cfs

std::vector<double> openswmm::SubcatchData::lid_drain_runon_cfs

LID drain flow routed to a target subcatchment (CFS).

Accumulated each runoff step when drain_subcatch >= 0. Drained into runon_inflow[] by assembleRunon() (after the clear), then reset, so the drain reaches the target as runon next step. Matches legacy lid_addDrainRunon() in lid.c.

See also
Legacy: lid.c lid_addDrainRunon()

◆ lid_return_to_perv_cfs

std::vector<double> openswmm::SubcatchData::lid_return_to_perv_cfs

LID surface return flow to pervious area (CFS).

Set by LIDSolver output routing when to_perv==1. Consumed by RunoffSolver as additional pervious-subarea inflow next step. Matches legacy lid_getFlowToPerv() called in subcatch_getRunon().

See also
Legacy: lidUnit->surfaceOutflow (lid.c), lid_getFlowToPerv()

◆ n_imperv

std::vector<double> openswmm::SubcatchData::n_imperv

Manning's n for impervious area.

See also
Legacy: Subcatch[i].subArea[IMPERV0].N

◆ n_perv

std::vector<double> openswmm::SubcatchData::n_perv

Manning's n for pervious area.

See also
Legacy: Subcatch[i].subArea[PERV].N

◆ old_gw_flow

std::vector<double> openswmm::SubcatchData::old_gw_flow

GW flow at the previous runoff evaluation (for interpolation).

◆ old_runoff

std::vector<double> openswmm::SubcatchData::old_runoff

Runoff at the previous timestep.

◆ old_runon_inflow

std::vector<double> openswmm::SubcatchData::old_runon_inflow

Previous-step runon inflow (for interpolation).

◆ outfall_runon_vol

std::vector<double> openswmm::SubcatchData::outfall_runon_vol

Gap #28: accumulated outfall-routed volume (ft³) between runoff steps.

Matches legacy Outfall[i].vRouted. Drained to runon_inflow at each assembleRunon() call, then reset to 0.

◆ outlet_name

std::vector<std::string> openswmm::SubcatchData::outlet_name

Outlet name string for deferred resolution.

Stored during parsing so PostParseResolver can re-resolve outlet_node / outlet_subcatch when sections appear out of order.

◆ outlet_node

std::vector<int> openswmm::SubcatchData::outlet_node

Index of the drain-to node or subcatchment.

>= 0 means drains to a node; negative value used internally to encode a subcatchment drain-to relationship.

See also
Legacy: Subcatch[i].outNode / Subcatch[i].outSubcatch

◆ outlet_subcatch

std::vector<int> openswmm::SubcatchData::outlet_subcatch

Index of the subcatch that receives overflow (-1 if none).

See also
Legacy: Subcatch[i].outSubcatch

◆ pct_routed

std::vector<double> openswmm::SubcatchData::pct_routed

Fraction of runoff routed between subareas (0–1).

The remainder (1 - pct_routed) goes to the outlet. fOutlet = 1 - pct_routed for the routed subarea.

See also
Legacy: Subcatch[i].subArea[k].fOutlet = 1 - pctRouted

◆ ponded_depth

std::vector<double> openswmm::SubcatchData::ponded_depth

Current total ponded depth over subcatchment (project length units).

See also
Legacy: Subcatch[i].newSnowDepth (repurposed for liquid depth)

◆ ponded_qual

std::vector<double> openswmm::SubcatchData::ponded_qual

Ponded surface water quality mass per (subcatch, pollutant).

Persists between wet/dry events. Updated each timestep as: wPonded = pondedQual + rain_deposition + runon_load cPonded = wPonded / V_inflow pondedQual_new = cPonded * ponded_depth * non_lid_area

See also
Legacy: Subcatch[i].pondedQual[]

◆ rainfall

std::vector<double> openswmm::SubcatchData::rainfall

Current total rainfall depth rate (project length/time units).

See also
Legacy: Subcatch[i].rainfall

◆ rpt_flag

std::vector<char> openswmm::SubcatchData::rpt_flag

Whether this subcatchment is included in report/output (0=no, 1=yes).

See also
Legacy: Subcatch[j].rptFlag

◆ runoff

std::vector<double> openswmm::SubcatchData::runoff

Current total runoff flow rate (project flow units).

See also
Legacy: Subcatch[i].newRunoff

◆ runon_inflow

std::vector<double> openswmm::SubcatchData::runon_inflow

Runoff inflow from upstream subcatchments (project flow units).

Assembled by assembleRunon(); zero if no upstream subcatch.

◆ slope

std::vector<double> openswmm::SubcatchData::slope

Average slope of catchment (fraction).

See also
Legacy: Subcatch[i].slope

◆ snow_net_imperv

std::vector<double> openswmm::SubcatchData::snow_net_imperv

Snow-modified net precipitation for impervious subareas (ft/sec).

Set by SWMMEngine after each snow execute step. Combines plowable + non-plowable imperv: imelt + rainfall*(1-asc). -1.0 means no snowpack active (use raw rainfall instead).

See also
Legacy: netPrecip[SNOW_PLOWABLE/SNOW_IMPERV] in snow.c

◆ snow_net_perv

std::vector<double> openswmm::SubcatchData::snow_net_perv

Snow-modified net precipitation for pervious subarea (ft/sec).

Set by SWMMEngine after each snow execute step. = imelt_perv + rainfall*(1-asc_perv). -1.0 means no snowpack active (use raw rainfall instead).

See also
Legacy: netPrecip[SNOW_PERV] in snow.c

◆ snowpack

std::vector<int> openswmm::SubcatchData::snowpack

Snowpack index for this subcatchment (-1 = none).

◆ stat_evap_vol

std::vector<double> openswmm::SubcatchData::stat_evap_vol

Cumulative evaporation volume (ft3)

◆ stat_gw_deep_perc_vol

std::vector<double> openswmm::SubcatchData::stat_gw_deep_perc_vol

Cumulative deep percolation (ft³)

◆ stat_gw_final_depth

std::vector<double> openswmm::SubcatchData::stat_gw_final_depth

Water table height at last GW step (ft)

◆ stat_gw_final_theta

std::vector<double> openswmm::SubcatchData::stat_gw_final_theta

Upper-zone theta at last GW step.

◆ stat_gw_flow_vol

std::vector<double> openswmm::SubcatchData::stat_gw_flow_vol

Cumulative lateral GW outflow (ft³)

◆ stat_gw_infil_vol

std::vector<double> openswmm::SubcatchData::stat_gw_infil_vol

Cumulative infiltration to GW (ft³)

◆ stat_gw_lower_evap_vol

std::vector<double> openswmm::SubcatchData::stat_gw_lower_evap_vol

Cumulative lower zone evap (ft³)

◆ stat_gw_max_flow

std::vector<double> openswmm::SubcatchData::stat_gw_max_flow

Peak lateral GW outflow (CFS)

◆ stat_gw_steps

std::vector<long> openswmm::SubcatchData::stat_gw_steps

Step count for GW averages.

◆ stat_gw_sum_depth

std::vector<double> openswmm::SubcatchData::stat_gw_sum_depth

Sum of water table height (ft, for time-avg)

◆ stat_gw_sum_theta

std::vector<double> openswmm::SubcatchData::stat_gw_sum_theta

Sum of upper-zone theta (for time-avg)

◆ stat_gw_upper_evap_vol

std::vector<double> openswmm::SubcatchData::stat_gw_upper_evap_vol

Cumulative upper zone evap (ft³)

◆ stat_imperv_vol

std::vector<double> openswmm::SubcatchData::stat_imperv_vol

Cumulative impervious runoff volume (ft3)

◆ stat_infil_vol

std::vector<double> openswmm::SubcatchData::stat_infil_vol

Cumulative infiltration volume (ft3)

◆ stat_max_runoff

std::vector<double> openswmm::SubcatchData::stat_max_runoff

Maximum reported runoff rate (project flow units).

See also
Legacy: SubcatchStats[i].maxFlow

◆ stat_perv_vol

std::vector<double> openswmm::SubcatchData::stat_perv_vol

Cumulative pervious runoff volume (ft3)

◆ stat_precip_vol

std::vector<double> openswmm::SubcatchData::stat_precip_vol

Total precipitation volume (project volume units).

See also
Legacy: SubcatchStats[i].precip

◆ stat_runoff_vol

std::vector<double> openswmm::SubcatchData::stat_runoff_vol

Total runoff volume (project volume units).

See also
Legacy: SubcatchStats[i].runoff

◆ subarea_routing

std::vector<int> openswmm::SubcatchData::subarea_routing

Inter-subarea routing mode.

0 = TO_OUTLET (all runoff goes to outlet), 1 = TO_IMPERV (pervious → impervious), 2 = TO_PERV (impervious → pervious).

See also
Legacy: Subcatch[i].subArea[k].routeTo

◆ sweep_last_swept

std::vector<double> openswmm::SubcatchData::sweep_last_swept

Gap #34: days since last swept per (subcatch x landuse).

Flat 2D: [sc_idx * n_landuses + lu_idx]. Matches legacy Subcatch[i].landFactor[j].lastSwept. Per-(subcatch,landuse) tracking so each subcatchment sweeps independently on its own schedule.

◆ tags

std::vector<std::string> openswmm::SubcatchData::tags

Per-object tag from the INP [TAGS] section.

Free-form string label. Index-keyed so swmm_subcatch_rename keeps the tag attached.

◆ total_lid_area_ft2

std::vector<double> openswmm::SubcatchData::total_lid_area_ft2

Total LID area for this subcatchment (ft²).

Sum of all LID unit areas (ft²) that belong to this subcatchment. Set by LIDSolver::init(). Used by snow plowing and snow cover calculations to exclude LID area (matching legacy Build 5.2.0).

See also
Legacy: Subcatch[i].lidArea (snow.c Build 5.2.0 note)

◆ total_load

std::vector<double> openswmm::SubcatchData::total_load

Total washoff load per (subcatchment x pollutant) (mass units).

See also
Legacy: Subcatch[i].totalLoad[p]

◆ total_load_n_pollutants

int openswmm::SubcatchData::total_load_n_pollutants = 0

Number of pollutants in total_load matrix.

◆ washoff_load

std::vector<double> openswmm::SubcatchData::washoff_load

Washoff mass rate per (subcatch, pollutant) (mass/sec).

Flat 2D: [subcatch * n_pollutants + pollutant].

◆ width

std::vector<double> openswmm::SubcatchData::width

Width of overland flow path (project length units).

See also
Legacy: Subcatch[i].width

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