76#ifndef OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
77#define OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
157 std::vector<std::pair<std::string, std::string>>
args;
297 std::function<bool(
int subcatch_index,
int& out_model,
double* out_infil)>
get_infil_state;
304 std::function<bool(
int subcatch_index,
double& out_theta,
double& out_lower_depth)>
get_gw_state;
307 std::function<bool(
int subcatch_index,
double theta,
double lower_depth)>
set_gw_state;
329struct SolverOptions2D;
332struct PendingBoundaryRow;
333struct PendingEdgeConveyanceRow;
334struct PendingInitialQualityRow;
335struct PendingBoundaryQualityRow;
336struct GwTransportData;
337struct SubsurfaceConfig;
338struct SubsurfaceState;
753 double adjust_temp[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
754 double adjust_evap[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
755 double adjust_rain[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
756 double adjust_hydcon[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
799 std::vector<std::pair<int, std::pair<std::string, std::string>>>
873 std::vector<std::pair<std::string, std::vector<std::string>>>
921 std::vector<twoD::PendingEdgeConveyanceRow>*
pending_ec =
nullptr;
924 std::vector<twoD::PendingInitialQualityRow>*
pending_iq =
nullptr;
925 std::vector<twoD::PendingBoundaryQualityRow>*
pending_bq =
nullptr;
1245 std::fill(v->begin(), v->end(), 0.0);
1261 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1273 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1281 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1374 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1434 if (route_step <= 0.0)
return;
1435 if (min_route_step <= 0.0) min_route_step = route_step;
1436 double log_hi = std::log10(route_step);
1437 double log_lo = std::log10(min_route_step);
1438 double delta = (log_hi - log_lo) /
static_cast<double>(
N_TIME_BINS);
1451 if (lo <= 0.0) lo = hi;
1569 auto un =
static_cast<std::size_t
>(n);
1572 is_sag.assign(un,
static_cast<uint8_t
>(0));
1628 candidate.
index = idx;
1629 candidate.
value = value;
1631 if (std::fabs(candidate.
value) > std::fabs(arr[k].
value)) {
1646 if (step_count <= 0)
return;
1647 double inv_steps = 1.0 /
static_cast<double>(step_count);
1650 for (
int j = 0; j <
n_nodes(); ++j) {
1651 double x =
nodes.stat_time_courant_critical[
static_cast<std::size_t
>(j)] * inv_steps;
1654 for (
int j = 0; j <
n_links(); ++j) {
1655 double x =
links.stat_time_courant_critical[
static_cast<std::size_t
>(j)] * inv_steps;
1661 if (rpt_steps > 2) {
1662 double z = 100.0 / (2.0 / 3.0 *
static_cast<double>(rpt_steps - 2));
1663 for (
int j = 0; j <
n_links(); ++j) {
1664 double x =
static_cast<double>(
links.stat_flow_turns[
static_cast<std::size_t
>(j)]) * z;
1670 for (
int j = 0; j <
n_nodes(); ++j) {
1671 double x =
static_cast<double>(
nodes.stat_non_converged_count[
static_cast<std::size_t
>(j)]) * inv_steps;
1788 nodes.reset_state();
1789 links.reset_state();
1791 gages.reset_state();
1819 nodes.resize_quality(np);
1820 links.resize_quality(np);
1851 nodes.shrink_to_fit();
1852 links.shrink_to_fit();
1854 gages.shrink_to_fit();
1899 return tables.find_by_kind(name,
true);
1904 return tables.find_by_kind(name,
false);
1915 if (ts >= 0)
return ts;
Parsed configuration of the Eulerian ARD transport component (org.hydrocouple.openswmm....
Plan H6b — the bed / hyporheic transient-storage zone.
Climate processing — evaporation, temperature, wind.
Carrier for an external file reference in a SWMM model.
Per-element runtime forcing state — SoA layout.
Structure-of-Arrays (SoA) storage for rain gages.
Heat-transport data (heat plan §1, §3; phase H1).
SoA stores for snowpacks, aquifers, LID controls, and LID usage.
SoA stores for external inflows, DWF, RDII, and time patterns.
SoA stores for transects, streets, inlets, and control rules.
SoA store for [INITIAL_QUALITY] per-element initial concentrations.
Phase A4 — per-(LID unit, layer, species) transported state.
Structure-of-Arrays (SoA) storage for all link types.
Relational (normalized) Structure-of-Arrays side-tables for link subtypes.
O(1) name-to-index lookup for SWMM objects.
Structure-of-Arrays (SoA) storage for all node types.
Relational (normalized) Structure-of-Arrays side-tables for node subtypes.
Structure-of-Arrays (SoA) storage for pollutants and water quality.
SoA stores for land uses, buildup, washoff, and treatment.
Multispecies reaction system data (EPANET-MSX conventions) — SoA, hot/cold split per LARD plan §16 D-...
Simulation options parsed from the [OPTIONS] section.
Spatial frame — CRS specification and coordinate data for nodes/links.
Single source of truth for all transported constituents (Unified Transport master plan §4....
Structure-of-Arrays (SoA) storage for subcatchments.
Time series and rating curve data with bidirectional cursor.
Irregular transect cross-section geometry (HEC-2 style).
User-defined model flags (InfoWorks ICM-style, two-section design).
Water-age tracking data (water age plan §1–§2, phase A1a).
Bidirectional name↔index registry for SWMM objects.
Definition NameIndex.hpp:71
Definition SpeciesRegistry.hpp:61
Stores the full user-flags data: schema definitions + per-object values.
Definition UserFlags.hpp:145
Owns per-cell infiltration parameters, kernel state and held rates.
Definition Infil2D.hpp:181
FileMode
Mode keyword for one [FILES] row — SAVE or USE.
Definition SimulationContext.hpp:179
EngineState
High-level engine lifecycle state.
Definition SimulationContext.hpp:261
@ USE
Definition SimulationContext.hpp:182
@ NONE
Definition SimulationContext.hpp:180
@ SAVE
Definition SimulationContext.hpp:181
@ CLOSED
Resources released.
Definition SimulationContext.hpp:269
@ ENDED
Simulation loop completed.
Definition SimulationContext.hpp:267
@ ERROR_STATE
Fatal error; call swmm_engine_last_error()
Definition SimulationContext.hpp:270
@ RUNNING
Simulation loop in progress.
Definition SimulationContext.hpp:265
@ REPORTED
Summary report written.
Definition SimulationContext.hpp:268
@ BUILDING
Programmatic model construction in progress (no .inp)
Definition SimulationContext.hpp:271
@ CREATED
Context allocated, no input loaded.
Definition SimulationContext.hpp:262
@ PAUSED
Simulation paused (future hot-swap support)
Definition SimulationContext.hpp:266
@ INITIALIZED
Initial conditions applied.
Definition SimulationContext.hpp:264
@ OPENED
Input file parsed, objects allocated.
Definition SimulationContext.hpp:263
Definition Infiltration.cpp:34
Definition NodeCoupling.cpp:16
SoA storage for aquifer parameter sets.
Definition HydrologyData.hpp:84
Parsed model.ard state consumed by ArdEngine::init (phase E3).
Definition ArdConfigData.hpp:97
Runtime bed state, one entry per LINK.
Definition BedZoneData.hpp:164
Definition QualityData.hpp:79
Definition InfraData.hpp:249
Definition InflowData.hpp:90
Definition InflowData.hpp:46
Two-string carrier for any external file path that appears in a SWMM .inp file.
Definition FilePathPair.hpp:63
Definition SimulationContext.hpp:212
FileMode runoff_mode
Definition SimulationContext.hpp:216
FilePathPair hotstart_use_path
Legacy semantics: USE — single hot-start input file.
Definition SimulationContext.hpp:229
FilePathPair rainfall_path
Definition SimulationContext.hpp:214
FileMode rainfall_mode
Definition SimulationContext.hpp:213
FilePathPair outflows_path
Legacy semantics: SAVE only.
Definition SimulationContext.hpp:226
FilePathPair runoff_path
Definition SimulationContext.hpp:217
std::vector< HotstartSaveEntry > hotstart_saves
Definition SimulationContext.hpp:234
bool has_any() const noexcept
Definition SimulationContext.hpp:238
FilePathPair rdii_path
Definition SimulationContext.hpp:220
FilePathPair inflows_path
Legacy semantics: USE only.
Definition SimulationContext.hpp:223
FileMode rdii_mode
Definition SimulationContext.hpp:219
Definition ForcingData.hpp:70
Structure-of-Arrays storage for all rain gages.
Definition GageData.hpp:95
Parsed model.heat state (heat component, phase H1).
Definition HeatData.hpp:318
Runtime heat state shared by the engines (phase H1).
Definition HeatData.hpp:413
Configuration parsed from the [FILES] section.
Definition SimulationContext.hpp:205
double datetime
Definition SimulationContext.hpp:209
FilePathPair path
Definition SimulationContext.hpp:206
Definition InitialQualityData.hpp:47
Definition InfraData.hpp:103
Definition InfraData.hpp:168
Definition QualityData.hpp:45
SoA storage for LID control type definitions.
Definition HydrologyData.hpp:117
Per-(unit, layer, species) state for every LID unit in the model.
Definition LidLayerSpeciesData.hpp:77
SoA storage for LID usage assignments to subcatchments.
Definition HydrologyData.hpp:158
Structure-of-Arrays storage for all links.
Definition LinkData.hpp:125
Owns the five link subtype side-tables plus the reverse index map.
Definition LinkSubtypes.hpp:373
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:130
Owns the three node subtype side-tables plus the reverse index map.
Definition NodeSubtypes.hpp:373
Definition InflowData.hpp:235
One plugin entry from the [PLUGINS] section.
Definition SimulationContext.hpp:132
std::string path
Shared library path.
Definition SimulationContext.hpp:133
std::vector< std::string > init_args
Extra tokens from the [PLUGINS] row.
Definition SimulationContext.hpp:134
Static properties for each pollutant species.
Definition PollutantData.hpp:71
One row of [PROCESS_COMPONENTS] (Unified Transport suite, D-UT8).
Definition SimulationContext.hpp:154
std::string config_path
config="…" argument (may be empty)
Definition SimulationContext.hpp:156
std::vector< std::pair< std::string, std::string > > args
other key/value args
Definition SimulationContext.hpp:157
std::string id
Component id (or library path — HC2)
Definition SimulationContext.hpp:155
std::string resolved_config_path
Definition SimulationContext.hpp:163
Definition InflowData.hpp:131
Definition InflowData.hpp:223
Definition ReactionData.hpp:56
double new_setting
The new target setting value (0-1)
Definition SimulationContext.hpp:1600
std::string rule_name
Name of the rule that triggered the change.
Definition SimulationContext.hpp:1599
double date
OADate when the change occurred.
Definition SimulationContext.hpp:1601
int link_idx
Index of the link whose setting changed.
Definition SimulationContext.hpp:1598
double end
Event end (DateTime decimal days)
Definition SimulationContext.hpp:739
double start
Event start (DateTime decimal days)
Definition SimulationContext.hpp:738
std::vector< int > num_inlets
Definition SimulationContext.hpp:1557
void resize(int n)
Definition SimulationContext.hpp:1568
std::vector< int > host_node
inlet-junction node (−1 = conduit host)
Definition SimulationContext.hpp:1554
std::vector< int > backflow_periods
Definition SimulationContext.hpp:1560
std::vector< int > up_link
approach conduit (−1 = none)
Definition SimulationContext.hpp:1555
std::vector< int > flow_periods
Definition SimulationContext.hpp:1558
std::vector< int > capture_periods
Definition SimulationContext.hpp:1559
std::vector< double > peak_flow
peak approach flow (cfs)
Definition SimulationContext.hpp:1561
std::vector< double > avg_flow_capture
Σ capture efficiency over capture periods.
Definition SimulationContext.hpp:1563
int count() const
Definition SimulationContext.hpp:1566
std::vector< uint8_t > is_sag
resolved placement: 1 = ON_SAG
Definition SimulationContext.hpp:1556
void clear()
Definition SimulationContext.hpp:1583
std::vector< double > peak_flow_capture
capture efficiency at peak flow (%)
Definition SimulationContext.hpp:1562
std::vector< double > bypass_freq
Definition SimulationContext.hpp:1564
double boundary_in
Cumulative boundary inflow (m³)
Definition SimulationContext.hpp:1328
double solver_active_max
max active-cell fraction
Definition SimulationContext.hpp:1364
double evap_out
Definition SimulationContext.hpp:1330
double outfall_in
Cumulative 1D outfall discharge into 2D (m³)
Definition SimulationContext.hpp:1326
double boundary_out
Cumulative boundary outflow (m³)
Definition SimulationContext.hpp:1329
double coupling_2d_to_1d_out
Cumulative 2D→1D drainage out (m³)
Definition SimulationContext.hpp:1325
double solver_avg_h
mean accepted internal step (s)
Definition SimulationContext.hpp:1358
long solver_tier_cells[8]
cumulative cells per LTS tier
Definition SimulationContext.hpp:1365
double solver_active_mean
mean active-cell fraction
Definition SimulationContext.hpp:1363
double final_storage
Latest surface storage (m³)
Definition SimulationContext.hpp:1322
double init_storage
Initial surface storage (m³)
Definition SimulationContext.hpp:1321
double solver_active_min
min active-cell fraction
Definition SimulationContext.hpp:1362
double solver_last_h
last accepted internal step (s)
Definition SimulationContext.hpp:1359
double infil_to_aquifer
Definition SimulationContext.hpp:1342
double error() const
2D surface continuity error (fraction).
Definition SimulationContext.hpp:1369
double outfall_out
Cumulative 2D→pipe withdrawal at submerged outfalls (m³)
Definition SimulationContext.hpp:1327
double aquifer_in
Definition SimulationContext.hpp:1350
long solver_nsteps
internal (marcher) substeps
Definition SimulationContext.hpp:1356
long solver_nrhs
face-kernel evaluations
Definition SimulationContext.hpp:1357
int solver_n_tiers
populated tier count
Definition SimulationContext.hpp:1366
double infil_out
Definition SimulationContext.hpp:1335
bool active
True if the 2D module ran.
Definition SimulationContext.hpp:1351
double rainfall_in
Cumulative rainfall volume (m³)
Definition SimulationContext.hpp:1323
double coupling_1d_to_2d_in
Cumulative 1D→2D spill into 2D (m³)
Definition SimulationContext.hpp:1324
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:1050
double routing_rdii
Definition SimulationContext.hpp:1080
std::vector< double > qual_routing_ex_in
External (interface file) quality mass inflow.
Definition SimulationContext.hpp:1155
double gw_infil
Cumulative infiltration to GW (ft)
Definition SimulationContext.hpp:1113
double routing_gw_inflow
Definition SimulationContext.hpp:1079
double runoff_runon
Outfall-routed runon volume (ft3), legacy RUNOFF_RUNON.
Definition SimulationContext.hpp:1053
double routing_init_storage
Definition SimulationContext.hpp:1102
double routing_evap_loss
Definition SimulationContext.hpp:1100
std::vector< double > qual_surface_buildup
Accumulated buildup during sim.
Definition SimulationContext.hpp:1140
double routing_dry_weather
Definition SimulationContext.hpp:1077
std::vector< double > qual_routing_final
Final stored quality mass.
Definition SimulationContext.hpp:1150
double runoff_runoff
Total surface runoff volume (ft3)
Definition SimulationContext.hpp:1056
std::vector< double > qual_init_buildup
Initial buildup mass.
Definition SimulationContext.hpp:1138
std::vector< double > qual_routing_init
Initial stored quality mass.
Definition SimulationContext.hpp:1149
std::vector< double > qual_runoff_load
Mass load in surface runoff.
Definition SimulationContext.hpp:1145
std::vector< double > qual_final_buildup
Final buildup mass.
Definition SimulationContext.hpp:1139
double routing_final_storage
Definition SimulationContext.hpp:1103
double runoff_init_store
Initial surface storage (ft3)
Definition SimulationContext.hpp:1059
double gw_lower_perc
Cumulative deep percolation (ft)
Definition SimulationContext.hpp:1116
double gw_infil_2d_recharge
Definition SimulationContext.hpp:1127
double routing_seep_loss
Definition SimulationContext.hpp:1101
std::vector< double > qual_routing_flood
Quality mass lost to flooding.
Definition SimulationContext.hpp:1148
double runoff_snowremov
Total snow removal volume (ft3)
Definition SimulationContext.hpp:1058
std::vector< double > qual_routing_dw_in
Dry weather quality mass inflow.
Definition SimulationContext.hpp:1153
double gw_upper_evap
Cumulative upper zone evaporation (ft)
Definition SimulationContext.hpp:1114
double routing_external
Definition SimulationContext.hpp:1081
std::vector< double > qual_infil_loss
Mass lost to infiltration.
Definition SimulationContext.hpp:1144
double runoff_final_store
Definition SimulationContext.hpp:1060
std::vector< double > qual_routing_reacted
Quality mass lost to decay.
Definition SimulationContext.hpp:1151
double routing_wet_weather
Definition SimulationContext.hpp:1078
std::vector< double > qual_wet_deposition
Wet deposition mass.
Definition SimulationContext.hpp:1141
double gw_final_storage
Definition SimulationContext.hpp:1119
std::vector< double > qual_routing_seep
Quality mass lost to seepage.
Definition SimulationContext.hpp:1156
double step_gw_inflow
Definition SimulationContext.hpp:1133
double runoff_rainfall
Total rainfall volume (ft3)
Definition SimulationContext.hpp:1052
void reset()
Definition SimulationContext.hpp:1184
double gw_lateral_flow
Cumulative lateral GW flow (ft)
Definition SimulationContext.hpp:1117
std::vector< double > qual_routing_ii_in
RDII quality mass inflow.
Definition SimulationContext.hpp:1152
double routing_flooding
Definition SimulationContext.hpp:1082
void resize_quality(int n_pollutants)
Definition SimulationContext.hpp:1159
double gw_error() const
Groundwater continuity error (fraction). Gap #72.
Definition SimulationContext.hpp:1277
double runoff_evap
Total evaporation volume (ft3)
Definition SimulationContext.hpp:1054
double gw_init_storage
Initial GW storage (ft)
Definition SimulationContext.hpp:1118
std::vector< double > qual_routing_gw_in
Groundwater quality mass inflow.
Definition SimulationContext.hpp:1154
double step_flooding
Definition SimulationContext.hpp:1130
std::vector< double > qual_sweeping
Mass removed by sweeping.
Definition SimulationContext.hpp:1142
std::vector< double > routing_forcing_qual_inflow
Per-pollutant cumulative user-forced quality mass.
Definition SimulationContext.hpp:1109
double routing_error() const
Routing continuity error (fraction).
Definition SimulationContext.hpp:1265
double gw_lower_evap
Cumulative lower zone evaporation (ft)
Definition SimulationContext.hpp:1115
std::vector< double > qual_routing_outflow
Quality mass leaving at outfalls.
Definition SimulationContext.hpp:1147
double runoff_final_snow
Definition SimulationContext.hpp:1074
double routing_forcing_inflow
Cumulative user-forced lateral inflow (ft3)
Definition SimulationContext.hpp:1106
double routing_coupling_out
Definition SimulationContext.hpp:1098
double step_rdii_inflow
Definition SimulationContext.hpp:1134
double runoff_infil
Total infiltration volume (ft3)
Definition SimulationContext.hpp:1055
double step_outflow
Definition SimulationContext.hpp:1131
std::vector< double > qual_bmp_removal
BMP treatment removal.
Definition SimulationContext.hpp:1143
double routing_outflow
Definition SimulationContext.hpp:1099
double runoff_lid_drain
LID drain-to-node outflow (ft3), legacy RUNOFF_DRAINS / VlidDrain.
Definition SimulationContext.hpp:1057
double runoff_error() const
Runoff continuity error (fraction).
Definition SimulationContext.hpp:1250
std::vector< double > qual_routing_wet
Wet weather quality inflow to routing.
Definition SimulationContext.hpp:1146
std::vector< double > qual_routing_evap
Quality mass lost to evaporation.
Definition SimulationContext.hpp:1157
double step_dw_inflow
Definition SimulationContext.hpp:1132
double step_ext_inflow
Definition SimulationContext.hpp:1135
double runoff_init_snow
Definition SimulationContext.hpp:1064
Top-N element statistic entry (matching legacy TMaxStats).
Definition SimulationContext.hpp:1383
int index
element index (-1 = unused slot)
Definition SimulationContext.hpp:1385
int obj_type
0 = NODE, 1 = LINK
Definition SimulationContext.hpp:1384
double value
statistic value (percentage or index)
Definition SimulationContext.hpp:1386
D-NS1 negative-source clamp bookkeeping (subplan §3.1, X6).
Definition SimulationContext.hpp:1295
bool api_warned
first negative API mass flux
Definition SimulationContext.hpp:1306
int first_node
Definition SimulationContext.hpp:1299
void reset()
Definition SimulationContext.hpp:1307
double shortfall_mass
unmet extraction, internal units
Definition SimulationContext.hpp:1297
long clamp_events
pollutant clamps, all engines
Definition SimulationContext.hpp:1296
bool first_clamp_recorded
Definition SimulationContext.hpp:1305
long age_clamp_events
age-row clamps
Definition SimulationContext.hpp:1298
void update_iterations(int iters, bool converged)
Record iteration count for a routing step.
Definition SimulationContext.hpp:1425
double sum_step
Sum of all routing time steps (sec)
Definition SimulationContext.hpp:1403
double sum_iterations
Sum of iterations for averaging.
Definition SimulationContext.hpp:1414
static constexpr int N_TIME_BINS
Number of time step histogram bins (matching legacy TIMELEVELS=5).
Definition SimulationContext.hpp:1408
long n_steps
Total number of routing steps.
Definition SimulationContext.hpp:1404
double fv_active_min
min active-face fraction
Definition SimulationContext.hpp:1500
double avg_step() const
Definition SimulationContext.hpp:1466
void init_histogram(double route_step, double min_route_step)
Definition SimulationContext.hpp:1433
double max_step
Maximum routing time step used (sec)
Definition SimulationContext.hpp:1402
double min_step
Minimum routing time step used (sec)
Definition SimulationContext.hpp:1401
void update(double dt)
Definition SimulationContext.hpp:1417
double steady_pct
Percent of time in steady state.
Definition SimulationContext.hpp:1405
double fv_last_h
last substep (s)
Definition SimulationContext.hpp:1498
double step_intervals[N_TIME_BINS+1]
Histogram bin edges.
Definition SimulationContext.hpp:1410
void record_step_bin(double dt)
Add a step to the histogram (call during simulation or post-process)
Definition SimulationContext.hpp:1456
long step_counts[N_TIME_BINS+1]
Histogram bin counts.
Definition SimulationContext.hpp:1409
long fv_nsteps
explicit substeps over the run
Definition SimulationContext.hpp:1495
long fv_tier_cells[8]
rebuild-sampled cells per LTS tier
Definition SimulationContext.hpp:1503
long fv_dt_argmin_band
Definition SimulationContext.hpp:1509
double fv_active_max
max active-face fraction
Definition SimulationContext.hpp:1502
double fv_avg_h
mean substep (s)
Definition SimulationContext.hpp:1497
double fv_min_h
smallest substep taken (s)
Definition SimulationContext.hpp:1499
double max_courant
Maximum Courant number observed.
Definition SimulationContext.hpp:1415
int fv_n_tiers
populated tier count
Definition SimulationContext.hpp:1504
double fv_active_mean
mean active-face fraction
Definition SimulationContext.hpp:1501
double pct_non_converged() const
Definition SimulationContext.hpp:1470
double slot_peak_share
Definition SimulationContext.hpp:1492
double slot_time_above_s
Definition SimulationContext.hpp:1493
void build_histogram()
Definition SimulationContext.hpp:1447
long fv_nflux
face flux evaluations
Definition SimulationContext.hpp:1496
long n_non_converged
Non-convergence and iteration tracking.
Definition SimulationContext.hpp:1413
long fv_dt_argmin_pressurized
Definition SimulationContext.hpp:1508
long fv_dt_argmin_node
Definition SimulationContext.hpp:1511
double computed_avg_iterations() const
Definition SimulationContext.hpp:1474
long fv_dt_argmin_free
Definition SimulationContext.hpp:1510
std::vector< twoD::PendingBoundaryRow > * pending_bc
Definition SimulationContext.hpp:920
twoD::SubsurfaceState * aquifer_state
Definition SimulationContext.hpp:950
twoD::MeshData * mesh
Definition SimulationContext.hpp:917
twoD::GwTransportData * gw
Definition SimulationContext.hpp:935
twoD::SubsurfaceConfig * aquifer
Definition SimulationContext.hpp:940
std::vector< twoD::PendingBoundaryQualityRow > * pending_bq
Definition SimulationContext.hpp:925
std::vector< twoD::PendingEdgeConveyanceRow > * pending_ec
Definition SimulationContext.hpp:921
std::vector< twoD::PendingInitialQualityRow > * pending_iq
Definition SimulationContext.hpp:924
std::vector< std::string > * aquifer_nodes
Definition SimulationContext.hpp:944
twoD::BoundaryData * boundary
Definition SimulationContext.hpp:919
twoD::Infil2D * infil
Definition SimulationContext.hpp:930
twoD::SolverOptions2D * options
Definition SimulationContext.hpp:918
std::vector< int > up_link
upstream conduit (through orientation, -1 sag/peak)
Definition SimulationContext.hpp:1528
std::vector< int > dn_link
downstream conduit (-1 sag/peak)
Definition SimulationContext.hpp:1529
void clear()
Definition SimulationContext.hpp:1533
std::vector< long long > resid_n
number of accumulated steps
Definition SimulationContext.hpp:1532
std::vector< int > node_idx
virtual junction node index
Definition SimulationContext.hpp:1527
std::vector< double > resid_max
max |R_j| over the run (cfs·ft/s)
Definition SimulationContext.hpp:1530
std::vector< double > resid_sum
Σ|R_j| for mean reporting.
Definition SimulationContext.hpp:1531
std::vector< std::pair< std::string, std::string > > deferred_section_rows
Section rows whose target object had not been parsed yet.
Definition SimulationContext.hpp:968
struct openswmm::SimulationContext::MassBalance mass_balance
NameIndex aquifer_names
Definition SimulationContext.hpp:779
TransectStore transects
Definition SimulationContext.hpp:705
struct openswmm::SimulationContext::VJDiag vj_diag
UserFlags user_flags
User-defined flags from [USER_FLAGS] section.
Definition SimulationContext.hpp:821
LinkSubtypes link_subtypes
Relational per-subtype link side-tables (Phase 6) — the link analogue of node_subtypes....
Definition SimulationContext.hpp:521
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition SimulationContext.hpp:1767
double old_elapsed_ms
Elapsed routing time (ms) at the START of the current step.
Definition SimulationContext.hpp:466
NameIndex subcatch_names
Subcatchment name → subcatchment index.
Definition SimulationContext.hpp:651
NameIndex node_names
Node name → node index.
Definition SimulationContext.hpp:639
SpeciesRegistry species_registry
Species registry — the single source of truth for transported constituents (master plan §4....
Definition SimulationContext.hpp:549
ReactionData reactions
Multispecies reaction system (EPANET-MSX conventions), parsed from the reactions component's config f...
Definition SimulationContext.hpp:557
InletUsageStore inlet_usages
Definition SimulationContext.hpp:725
MaxStats max_courant_crit[MAX_STATS]
Top-5 CFL time-step critical elements.
Definition SimulationContext.hpp:1392
int n_nodes() const noexcept
Number of nodes.
Definition SimulationContext.hpp:1868
ExtInflowData ext_inflows
Definition SimulationContext.hpp:694
static void updateMaxStats(MaxStats arr[], int obj_type, int idx, double value)
Insertion sort into a descending-by-absolute-value top-N array.
Definition SimulationContext.hpp:1625
NodeData nodes
All node state and properties.
Definition SimulationContext.hpp:496
std::uint64_t xsect_generation
Definition SimulationContext.hpp:712
double adjust_rain[12]
Definition SimulationContext.hpp:755
MaxStats max_non_converged[MAX_STATS]
Top-5 nodes with highest non-convergence frequency.
Definition SimulationContext.hpp:1396
TableData tables
All time series and rating curves.
Definition SimulationContext.hpp:629
struct openswmm::SimulationContext::NegativeSourceStats negsrc
double adjust_temp[12]
Monthly climate adjustment factors from [ADJUSTMENTS] section.
Definition SimulationContext.hpp:753
MaxStats max_mass_bal_errs[MAX_STATS]
Top-5 nodes with highest continuity errors.
Definition SimulationContext.hpp:1398
int error_code
Most recent error code (0 = no error).
Definition SimulationContext.hpp:978
RDIIAssignData rdii_assigns
Definition SimulationContext.hpp:696
AquiferStore aquifers
Definition SimulationContext.hpp:778
BedZoneState bed_state
The bed / hyporheic transient-storage zone (phase H6b).
Definition SimulationContext.hpp:601
NameIndex snowpack_names
Definition SimulationContext.hpp:777
std::vector< int > subcatch_d_store_pattern
Definition SimulationContext.hpp:764
InletStore inlets
Definition SimulationContext.hpp:724
GageData gages
All rain gage state and properties.
Definition SimulationContext.hpp:533
FilesSpec files
Secondary file references parsed from [FILES].
Definition SimulationContext.hpp:884
std::vector< ControlLogEntry > control_log
Chronological log of all control actions taken during the simulation.
Definition SimulationContext.hpp:1605
DwfData dwf_inflows
Definition SimulationContext.hpp:695
struct openswmm::SimulationContext::InletDiag inlet_diag
NameIndex gage_names
Rain gage name → gage index.
Definition SimulationContext.hpp:657
BuildupData buildup
Definition SimulationContext.hpp:677
std::vector< std::pair< int, std::string > > pending_gw_nodes
Definition SimulationContext.hpp:794
int n_gages() const noexcept
Number of rain gages.
Definition SimulationContext.hpp:1877
std::string inp_file_path
Path to the input .inp file (empty if not opened from a file).
Definition SimulationContext.hpp:1615
std::vector< std::uint8_t > coupled_node
Per-node flag: 1 if the node is a 2D-coupled junction (a non-outfall coupling point),...
Definition SimulationContext.hpp:1020
NodeSubtypes node_subtypes
Relational side-tables for node subtypes (storage/outfall/divider).
Definition SimulationContext.hpp:507
bool gpkg_units_internal
Definition SimulationContext.hpp:721
std::vector< std::string > errors
Accumulated error messages written to report file.
Definition SimulationContext.hpp:1007
WaterAgeState water_age_state
Definition SimulationContext.hpp:573
RDIIDecayData rdii_decay
Parsed [RDII_DECAY] data (exponential IA model)
Definition SimulationContext.hpp:698
EngineState state
Current lifecycle state of the engine.
Definition SimulationContext.hpp:360
WashoffData washoff
Definition SimulationContext.hpp:678
int warning_code
Most recent warning code (0 = no warning).
Definition SimulationContext.hpp:984
NameIndex landuse_names
Definition SimulationContext.hpp:675
int n_tables() const noexcept
Number of tables (time series + curves).
Definition SimulationContext.hpp:1884
struct openswmm::SimulationContext::RoutingStepStats routing_stats
LidControlStore lid_controls
Definition SimulationContext.hpp:780
std::vector< int > subcatch_infil_pattern
Definition SimulationContext.hpp:765
double adjust_hydcon[12]
Definition SimulationContext.hpp:756
std::vector< std::string > title_notes
Project title and notes (from [TITLE] section).
Definition SimulationContext.hpp:388
std::vector< std::string > warnings
Accumulated warning messages written to report file.
Definition SimulationContext.hpp:998
ControlRuleStore control_rules
Definition SimulationContext.hpp:726
struct openswmm::SimulationContext::MassBalance2D mass_balance_2d
int find_curve(std::string_view name) const noexcept
Find a curve table (any CURVE_* type) by name; -1 if none.
Definition SimulationContext.hpp:1903
std::time_t wall_start
Wall-clock time stamped at the start of SWMMEngine::open().
Definition SimulationContext.hpp:373
TreatmentData treatment
Definition SimulationContext.hpp:679
bool has_subcatch_adj_patterns
True if any pattern index >= 0.
Definition SimulationContext.hpp:770
WaterAgeConfigData water_age_config
Water-age tracking (phase A1a): per-source initial ages parsed from the waterage component (model....
Definition SimulationContext.hpp:572
ArdConfigData ard_config
Eulerian ARD transport component configuration, parsed from the model.ard config file registered via ...
Definition SimulationContext.hpp:565
void finalize_max_stats()
Compute top-5 arrays for CFL-critical, flow turns, and non-convergence.
Definition SimulationContext.hpp:1644
LinkData links
All link state and properties.
Definition SimulationContext.hpp:513
UnitHydData unit_hyds
Parsed [HYDROGRAPHS] data.
Definition SimulationContext.hpp:697
std::vector< std::pair< int, std::pair< std::string, std::string > > > pending_link_nodes
Definition SimulationContext.hpp:800
double dt_controls_remaining
Time remaining until the next control rule event (seconds).
Definition SimulationContext.hpp:486
void reset()
Fully reset the context to a CREATED state.
Definition SimulationContext.hpp:1683
int n_pollutants() const noexcept
Number of pollutants.
Definition SimulationContext.hpp:1880
std::vector< ProcessComponentSpec > process_component_specs
Process-component registrations parsed from [PROCESS_COMPONENTS].
Definition SimulationContext.hpp:864
LidUsageStore lid_usage
Definition SimulationContext.hpp:782
double next_report_ms
Next report instant in MILLISECONDS from start_date.
Definition SimulationContext.hpp:478
LidLayerSpeciesState lid_layer_state
A4: per-(LID unit, layer, species) transported state.
Definition SimulationContext.hpp:580
InitialQualityData initial_quality
Per-element initial quality rows from [INITIAL_QUALITY].
Definition SimulationContext.hpp:688
climate::ClimateState climate_state
Daily climate state — temperature, evaporation, wind, humidity.
Definition SimulationContext.hpp:411
MaxStats max_flow_turns[MAX_STATS]
Top-5 links with highest flow instability index.
Definition SimulationContext.hpp:1394
std::vector< std::pair< std::string, std::vector< std::string > > > embedded_component_sections
Embedded component sections found in the legacy .inp ([REACTION_*] today; other component families as...
Definition SimulationContext.hpp:874
void allocate_objects()
Allocate all object arrays after input parsing is complete.
Definition SimulationContext.hpp:1812
StateAccessors state_accessors
Solver-neutral accessors for reading and writing solver-internal state at hot-start save/load time.
Definition SimulationContext.hpp:894
std::vector< std::string > reported_species_names
Species names as REPORTED (phase A2b): the pollutant names, then __WATER_AGE__ when [OPTIONS] WATER_A...
Definition SimulationContext.hpp:618
int n_subcatches() const noexcept
Number of subcatchments.
Definition SimulationContext.hpp:1874
int n_links() const noexcept
Number of links.
Definition SimulationContext.hpp:1871
std::vector< double > base_ds_perv
Definition SimulationContext.hpp:769
NameIndex link_names
Link name → link index.
Definition SimulationContext.hpp:645
std::vector< PluginSpec > plugin_specs
Plugin library specs parsed from [PLUGINS].
Definition SimulationContext.hpp:855
StreetStore streets
Definition SimulationContext.hpp:723
double coupling_delivery_remaining
Remaining seconds of the current 1D↔2D coupling delivery window.
Definition SimulationContext.hpp:1035
double current_time
Current simulation time in SECONDS from start_date.
Definition SimulationContext.hpp:435
struct openswmm::SimulationContext::TwoDModelIO twod_io
double elapsed_ms
Elapsed routing time in MILLISECONDS from start_date.
Definition SimulationContext.hpp:458
int find_table_any(std::string_view name) const noexcept
Find a table of either kind by name; -1 if none.
Definition SimulationContext.hpp:1913
ForcingData forcing
Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap,...
Definition SimulationContext.hpp:844
int n_landuses() const noexcept
Definition SimulationContext.hpp:1881
std::vector< double > base_n_perv
Base values for pattern-adjusted parameters (populated at init).
Definition SimulationContext.hpp:768
double adjust_evap[12]
Definition SimulationContext.hpp:754
HeatState heat_state
Definition SimulationContext.hpp:589
int n_reported_species() const noexcept
Length of reported_species_names (pollutants + age when enabled).
Definition SimulationContext.hpp:621
std::string error_message
Human-readable message for the last error/warning.
Definition SimulationContext.hpp:989
SpatialFrame spatial
Coordinate reference system and georeferenced coordinates.
Definition SimulationContext.hpp:810
std::vector< transect::TransectData > transect_tables
Built transect geometry tables (indexed same as transects).
Definition SimulationContext.hpp:707
SnowpackStore snowpacks
Definition SimulationContext.hpp:776
int find_timeseries(std::string_view name) const noexcept
Find a timeseries table by name; -1 if none.
Definition SimulationContext.hpp:1898
std::vector< int > subcatch_n_perv_pattern
Per-subcatchment pattern indices for N-PERV, DSTORE, INFIL adjustments.
Definition SimulationContext.hpp:763
PatternData patterns
Definition SimulationContext.hpp:699
static constexpr int MAX_STATS
Definition SimulationContext.hpp:1389
NameIndex lid_names
Definition SimulationContext.hpp:781
HeatConfigData heat_config
Heat transport (phase H1): per-source inlet temperatures parsed from the heat component (model....
Definition SimulationContext.hpp:588
NameIndex pollutant_names
Pollutant name → pollutant index.
Definition SimulationContext.hpp:663
void shrink_all_to_fit()
Release excess vector capacity on all owned SoA data stores.
Definition SimulationContext.hpp:1850
void reset_state() noexcept
Reset all state variables to initial conditions (cold start).
Definition SimulationContext.hpp:1787
std::vector< Event > events
Definition SimulationContext.hpp:741
SubcatchData subcatches
All subcatchment state and properties.
Definition SimulationContext.hpp:527
LanduseData landuses
Definition SimulationContext.hpp:676
SimulationOptions options
Parsed simulation options (from [OPTIONS] section).
Definition SimulationContext.hpp:398
PollutantData pollutants
Pollutant definitions and per-object quality state.
Definition SimulationContext.hpp:539
double current_date
Absolute current date/time (decimal days, OADate (days since 12/30/1899)).
Definition SimulationContext.hpp:444
All SWMM simulation options parsed from [OPTIONS] section.
Definition SimulationOptions.hpp:166
SoA storage for snowpack parameter sets.
Definition HydrologyData.hpp:54
Spatial frame containing CRS and georeferenced coordinates.
Definition SpatialFrame.hpp:98
Solver-neutral hooks for reading and writing solver-internal state (infiltration, groundwater) at hot...
Definition SimulationContext.hpp:294
std::function< bool(int subcatch_index, int model, const double *infil)> set_infil_state
Definition SimulationContext.hpp:301
std::function< bool(int subcatch_index, int &out_model, double *out_infil)> get_infil_state
Definition SimulationContext.hpp:297
bool can_write() const noexcept
True iff the write-side accessors are wired.
Definition SimulationContext.hpp:315
std::function< bool(int subcatch_index, double theta, double lower_depth)> set_gw_state
Apply groundwater zone state to a subcatchment.
Definition SimulationContext.hpp:307
std::function< bool(int subcatch_index, double &out_theta, double &out_lower_depth)> get_gw_state
Read groundwater zone state (upper-zone moisture and lower-zone depth).
Definition SimulationContext.hpp:304
bool can_read() const noexcept
True iff the read-side accessors are wired.
Definition SimulationContext.hpp:310
Definition InfraData.hpp:70
Structure-of-Arrays storage for all subcatchments.
Definition SubcatchData.hpp:57
SoA collection of all time series and curves in the model.
Definition TableData.hpp:690
Definition InfraData.hpp:42
Definition QualityData.hpp:149
Definition InflowData.hpp:173
Definition QualityData.hpp:114
Parsed model.age state (waterage component, phase A1a).
Definition WaterAgeData.hpp:72
Definition WaterAgeData.hpp:111
Definition Climate.hpp:87
One entry per control rule action that changed a link setting.
Definition SimulationContext.hpp:1597
Event time periods for event-based analysis/reporting.
Definition SimulationContext.hpp:737
Per-inlet-usage performance block for the .rpt street tables.
Definition SimulationContext.hpp:1553
System mass-balance totals for the optional 2D surface domain.
Definition SimulationContext.hpp:1320
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:1050
Top-N element statistic entry (matching legacy TMaxStats).
Definition SimulationContext.hpp:1383
D-NS1 negative-source clamp bookkeeping (subplan §3.1, X6).
Definition SimulationContext.hpp:1295
Definition SimulationContext.hpp:1400
Non-owning pointers to the engine's 2D surface-routing model storage (mesh, solver options,...
Definition SimulationContext.hpp:916
Per-virtual-junction momentum-residual accumulators.
Definition SimulationContext.hpp:1526
Central, reentrant simulation context.
Definition SimulationContext.hpp:353
SoA storage for per-edge boundary conditions.
Definition BoundaryData.hpp:71
Every [GW_*] authoring row of one model.
Definition GwTransportData.hpp:180
SoA storage for 2D mixed triangle/quad mesh geometry and topology.
Definition MeshData.hpp:67
Configuration for the 2D surface routing solver.
Definition SolverOptions2D.hpp:208
Everything the parser fills, before resolution onto cells.
Definition SubsurfaceData.hpp:234
Per-cell resolved parameters and state (SoA).
Definition SubsurfaceData.hpp:146