60#ifndef OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
61#define OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
242 std::function<bool(
int subcatch_index,
int& out_model,
double* out_infil)>
get_infil_state;
249 std::function<bool(
int subcatch_index,
double& out_theta,
double& out_lower_depth)>
get_gw_state;
252 std::function<bool(
int subcatch_index,
double theta,
double lower_depth)>
set_gw_state;
274struct SolverOptions2D;
276struct PendingBoundaryRow;
277struct PendingEdgeConveyanceRow;
586 double adjust_temp[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
587 double adjust_evap[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
588 double adjust_rain[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
589 double adjust_hydcon[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
717 std::vector<twoD::PendingEdgeConveyanceRow>*
pending_ec =
nullptr;
940 std::fill(v->begin(), v->end(), 0.0);
948 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
959 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
967 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1000 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
1060 if (route_step <= 0.0)
return;
1061 if (min_route_step <= 0.0) min_route_step = route_step;
1062 double log_hi = std::log10(route_step);
1063 double log_lo = std::log10(min_route_step);
1064 double delta = (log_hi - log_lo) /
static_cast<double>(
N_TIME_BINS);
1077 if (lo <= 0.0) lo = hi;
1142 candidate.
index = idx;
1143 candidate.
value = value;
1145 if (std::fabs(candidate.
value) > std::fabs(arr[k].
value)) {
1160 if (step_count <= 0)
return;
1161 double inv_steps = 1.0 /
static_cast<double>(step_count);
1164 for (
int j = 0; j <
n_nodes(); ++j) {
1165 double x =
nodes.stat_time_courant_critical[
static_cast<std::size_t
>(j)] * inv_steps;
1168 for (
int j = 0; j <
n_links(); ++j) {
1169 double x =
links.stat_time_courant_critical[
static_cast<std::size_t
>(j)] * inv_steps;
1175 if (rpt_steps > 2) {
1176 double z = 100.0 / (2.0 / 3.0 *
static_cast<double>(rpt_steps - 2));
1177 for (
int j = 0; j <
n_links(); ++j) {
1178 double x =
static_cast<double>(
links.stat_flow_turns[
static_cast<std::size_t
>(j)]) * z;
1184 for (
int j = 0; j <
n_nodes(); ++j) {
1185 double x =
static_cast<double>(
nodes.stat_non_converged_count[
static_cast<std::size_t
>(j)]) * inv_steps;
1281 nodes.reset_state();
1282 links.reset_state();
1284 gages.reset_state();
1312 nodes.resize_quality(np);
1313 links.resize_quality(np);
1344 nodes.shrink_to_fit();
1345 links.shrink_to_fit();
1347 gages.shrink_to_fit();
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.
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.
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.
Simulation options parsed from the [OPTIONS] section.
Spatial frame — CRS specification and coordinate data for nodes/links.
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).
Bidirectional name↔index registry for SWMM objects.
Definition NameIndex.hpp:45
Stores the full user-flags data: schema definitions + per-object values.
Definition UserFlags.hpp:127
FileMode
Mode keyword for one [FILES] row — SAVE or USE.
Definition SimulationContext.hpp:124
EngineState
High-level engine lifecycle state.
Definition SimulationContext.hpp:206
@ USE
Definition SimulationContext.hpp:127
@ NONE
Definition SimulationContext.hpp:125
@ SAVE
Definition SimulationContext.hpp:126
@ CLOSED
Resources released.
Definition SimulationContext.hpp:214
@ ENDED
Simulation loop completed.
Definition SimulationContext.hpp:212
@ ERROR_STATE
Fatal error; call swmm_engine_last_error()
Definition SimulationContext.hpp:215
@ RUNNING
Simulation loop in progress.
Definition SimulationContext.hpp:210
@ REPORTED
Summary report written.
Definition SimulationContext.hpp:213
@ BUILDING
Programmatic model construction in progress (no .inp)
Definition SimulationContext.hpp:216
@ CREATED
Context allocated, no input loaded.
Definition SimulationContext.hpp:207
@ PAUSED
Simulation paused (future hot-swap support)
Definition SimulationContext.hpp:211
@ INITIALIZED
Initial conditions applied.
Definition SimulationContext.hpp:209
@ OPENED
Input file parsed, objects allocated.
Definition SimulationContext.hpp:208
Definition Infiltration.cpp:18
Definition NodeCoupling.cpp:15
SoA storage for aquifer parameter sets.
Definition HydrologyData.hpp:66
Definition QualityData.hpp:63
Definition InfraData.hpp:123
Definition InflowData.hpp:71
Definition InflowData.hpp:27
Two-string carrier for any external file path that appears in a SWMM .inp file.
Definition FilePathPair.hpp:47
Definition SimulationContext.hpp:157
FileMode runoff_mode
Definition SimulationContext.hpp:161
FilePathPair hotstart_use_path
Legacy semantics: USE — single hot-start input file.
Definition SimulationContext.hpp:174
FilePathPair rainfall_path
Definition SimulationContext.hpp:159
FileMode rainfall_mode
Definition SimulationContext.hpp:158
FilePathPair outflows_path
Legacy semantics: SAVE only.
Definition SimulationContext.hpp:171
FilePathPair runoff_path
Definition SimulationContext.hpp:162
std::vector< HotstartSaveEntry > hotstart_saves
Definition SimulationContext.hpp:179
bool has_any() const noexcept
Definition SimulationContext.hpp:183
FilePathPair rdii_path
Definition SimulationContext.hpp:165
FilePathPair inflows_path
Legacy semantics: USE only.
Definition SimulationContext.hpp:168
FileMode rdii_mode
Definition SimulationContext.hpp:164
Definition ForcingData.hpp:52
Structure-of-Arrays storage for all rain gages.
Definition GageData.hpp:77
Configuration parsed from the [FILES] section.
Definition SimulationContext.hpp:150
double datetime
Definition SimulationContext.hpp:154
FilePathPair path
Definition SimulationContext.hpp:151
Definition InfraData.hpp:74
Definition InfraData.hpp:90
Definition QualityData.hpp:29
SoA storage for LID control type definitions.
Definition HydrologyData.hpp:99
SoA storage for LID usage assignments to subcatchments.
Definition HydrologyData.hpp:140
Structure-of-Arrays storage for all links.
Definition LinkData.hpp:109
Owns the five link subtype side-tables plus the reverse index map.
Definition LinkSubtypes.hpp:354
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:114
Owns the three node subtype side-tables plus the reverse index map.
Definition NodeSubtypes.hpp:357
Definition InflowData.hpp:208
One plugin entry from the [PLUGINS] section.
Definition SimulationContext.hpp:106
std::string path
Shared library path.
Definition SimulationContext.hpp:107
std::vector< std::string > init_args
Extra tokens from the [PLUGINS] row.
Definition SimulationContext.hpp:108
Static properties for each pollutant species.
Definition PollutantData.hpp:55
Definition InflowData.hpp:112
Definition InflowData.hpp:196
double new_setting
The new target setting value (0-1)
Definition SimulationContext.hpp:1114
std::string rule_name
Name of the rule that triggered the change.
Definition SimulationContext.hpp:1113
double date
OADate when the change occurred.
Definition SimulationContext.hpp:1115
int link_idx
Index of the link whose setting changed.
Definition SimulationContext.hpp:1112
double end
Event end (DateTime decimal days)
Definition SimulationContext.hpp:572
double start
Event start (DateTime decimal days)
Definition SimulationContext.hpp:571
double boundary_in
Cumulative boundary inflow (m³)
Definition SimulationContext.hpp:989
double evap_out
Cumulative evaporation loss (m³)
Definition SimulationContext.hpp:991
double outfall_in
Cumulative 1D outfall discharge into 2D (m³)
Definition SimulationContext.hpp:987
double boundary_out
Cumulative boundary outflow (m³)
Definition SimulationContext.hpp:990
double coupling_2d_to_1d_out
Cumulative 2D→1D drainage out (m³)
Definition SimulationContext.hpp:986
double final_storage
Latest surface storage (m³)
Definition SimulationContext.hpp:983
double init_storage
Initial surface storage (m³)
Definition SimulationContext.hpp:982
double error() const
2D surface continuity error (fraction).
Definition SimulationContext.hpp:995
double outfall_out
Cumulative 2D→pipe withdrawal at submerged outfalls (m³)
Definition SimulationContext.hpp:988
bool active
True if the 2D module ran.
Definition SimulationContext.hpp:992
double rainfall_in
Cumulative rainfall volume (m³)
Definition SimulationContext.hpp:984
double coupling_1d_to_2d_in
Cumulative 1D→2D spill into 2D (m³)
Definition SimulationContext.hpp:985
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:785
double routing_rdii
Definition SimulationContext.hpp:799
std::vector< double > qual_routing_ex_in
External (interface file) quality mass inflow.
Definition SimulationContext.hpp:850
double gw_infil
Cumulative infiltration to GW (ft)
Definition SimulationContext.hpp:816
double routing_gw_inflow
Definition SimulationContext.hpp:798
double routing_init_storage
Definition SimulationContext.hpp:805
double routing_evap_loss
Definition SimulationContext.hpp:803
std::vector< double > qual_surface_buildup
Accumulated buildup during sim.
Definition SimulationContext.hpp:835
double routing_dry_weather
Definition SimulationContext.hpp:796
std::vector< double > qual_routing_final
Final stored quality mass.
Definition SimulationContext.hpp:845
double runoff_runoff
Total surface runoff volume (ft3)
Definition SimulationContext.hpp:790
std::vector< double > qual_init_buildup
Initial buildup mass.
Definition SimulationContext.hpp:833
std::vector< double > qual_routing_init
Initial stored quality mass.
Definition SimulationContext.hpp:844
std::vector< double > qual_runoff_load
Mass load in surface runoff.
Definition SimulationContext.hpp:840
std::vector< double > qual_final_buildup
Final buildup mass.
Definition SimulationContext.hpp:834
double routing_final_storage
Definition SimulationContext.hpp:806
double runoff_init_store
Initial surface storage (ft3)
Definition SimulationContext.hpp:792
double gw_lower_perc
Cumulative deep percolation (ft)
Definition SimulationContext.hpp:819
double routing_seep_loss
Definition SimulationContext.hpp:804
std::vector< double > qual_routing_flood
Quality mass lost to flooding.
Definition SimulationContext.hpp:843
double runoff_snowremov
Total snow removal volume (ft3)
Definition SimulationContext.hpp:791
std::vector< double > qual_routing_dw_in
Dry weather quality mass inflow.
Definition SimulationContext.hpp:848
double gw_upper_evap
Cumulative upper zone evaporation (ft)
Definition SimulationContext.hpp:817
double routing_external
Definition SimulationContext.hpp:800
std::vector< double > qual_infil_loss
Mass lost to infiltration.
Definition SimulationContext.hpp:839
double runoff_final_store
Final surface storage (ft3)
Definition SimulationContext.hpp:793
std::vector< double > qual_routing_reacted
Quality mass lost to decay.
Definition SimulationContext.hpp:846
double routing_wet_weather
Definition SimulationContext.hpp:797
std::vector< double > qual_wet_deposition
Wet deposition mass.
Definition SimulationContext.hpp:836
double gw_final_storage
Final GW storage (ft)
Definition SimulationContext.hpp:822
std::vector< double > qual_routing_seep
Quality mass lost to seepage.
Definition SimulationContext.hpp:851
double step_gw_inflow
Definition SimulationContext.hpp:828
double runoff_rainfall
Total rainfall volume (ft3)
Definition SimulationContext.hpp:787
void reset()
Definition SimulationContext.hpp:879
double gw_lateral_flow
Cumulative lateral GW flow (ft)
Definition SimulationContext.hpp:820
std::vector< double > qual_routing_ii_in
RDII quality mass inflow.
Definition SimulationContext.hpp:847
double routing_flooding
Definition SimulationContext.hpp:801
void resize_quality(int n_pollutants)
Definition SimulationContext.hpp:854
double gw_error() const
Groundwater continuity error (fraction). Gap #72.
Definition SimulationContext.hpp:963
double runoff_evap
Total evaporation volume (ft3)
Definition SimulationContext.hpp:788
double gw_init_storage
Initial GW storage (ft)
Definition SimulationContext.hpp:821
std::vector< double > qual_routing_gw_in
Groundwater quality mass inflow.
Definition SimulationContext.hpp:849
double step_flooding
Definition SimulationContext.hpp:825
std::vector< double > qual_sweeping
Mass removed by sweeping.
Definition SimulationContext.hpp:837
std::vector< double > routing_forcing_qual_inflow
Per-pollutant cumulative user-forced quality mass.
Definition SimulationContext.hpp:812
double routing_error() const
Routing continuity error (fraction).
Definition SimulationContext.hpp:952
double gw_lower_evap
Cumulative lower zone evaporation (ft)
Definition SimulationContext.hpp:818
std::vector< double > qual_routing_outflow
Quality mass leaving at outfalls.
Definition SimulationContext.hpp:842
double routing_forcing_inflow
Cumulative user-forced lateral inflow (ft3)
Definition SimulationContext.hpp:809
double step_rdii_inflow
Definition SimulationContext.hpp:829
double runoff_infil
Total infiltration volume (ft3)
Definition SimulationContext.hpp:789
double step_outflow
Definition SimulationContext.hpp:826
std::vector< double > qual_bmp_removal
BMP treatment removal.
Definition SimulationContext.hpp:838
double routing_outflow
Definition SimulationContext.hpp:802
double runoff_error() const
Runoff continuity error (fraction).
Definition SimulationContext.hpp:945
std::vector< double > qual_routing_wet
Wet weather quality inflow to routing.
Definition SimulationContext.hpp:841
std::vector< double > qual_routing_evap
Quality mass lost to evaporation.
Definition SimulationContext.hpp:852
double step_dw_inflow
Definition SimulationContext.hpp:827
double step_ext_inflow
Definition SimulationContext.hpp:830
Top-N element statistic entry (matching legacy TMaxStats).
Definition SimulationContext.hpp:1009
int index
element index (-1 = unused slot)
Definition SimulationContext.hpp:1011
int obj_type
0 = NODE, 1 = LINK
Definition SimulationContext.hpp:1010
double value
statistic value (percentage or index)
Definition SimulationContext.hpp:1012
void update_iterations(int iters, bool converged)
Record iteration count for a routing step.
Definition SimulationContext.hpp:1051
double sum_step
Sum of all routing time steps (sec)
Definition SimulationContext.hpp:1029
double sum_iterations
Sum of iterations for averaging.
Definition SimulationContext.hpp:1040
static constexpr int N_TIME_BINS
Number of time step histogram bins (matching legacy TIMELEVELS=5).
Definition SimulationContext.hpp:1034
long n_steps
Total number of routing steps.
Definition SimulationContext.hpp:1030
double avg_step() const
Definition SimulationContext.hpp:1092
void init_histogram(double route_step, double min_route_step)
Definition SimulationContext.hpp:1059
double max_step
Maximum routing time step used (sec)
Definition SimulationContext.hpp:1028
double min_step
Minimum routing time step used (sec)
Definition SimulationContext.hpp:1027
void update(double dt)
Definition SimulationContext.hpp:1043
double steady_pct
Percent of time in steady state.
Definition SimulationContext.hpp:1031
double step_intervals[N_TIME_BINS+1]
Histogram bin edges.
Definition SimulationContext.hpp:1036
void record_step_bin(double dt)
Add a step to the histogram (call during simulation or post-process)
Definition SimulationContext.hpp:1082
long step_counts[N_TIME_BINS+1]
Histogram bin counts.
Definition SimulationContext.hpp:1035
double max_courant
Maximum Courant number observed.
Definition SimulationContext.hpp:1041
double pct_non_converged() const
Definition SimulationContext.hpp:1096
void build_histogram()
Definition SimulationContext.hpp:1073
long n_non_converged
Non-convergence and iteration tracking.
Definition SimulationContext.hpp:1039
double computed_avg_iterations() const
Definition SimulationContext.hpp:1100
std::vector< twoD::PendingBoundaryRow > * pending_bc
Definition SimulationContext.hpp:716
twoD::MeshData * mesh
Definition SimulationContext.hpp:713
std::vector< twoD::PendingEdgeConveyanceRow > * pending_ec
Definition SimulationContext.hpp:717
twoD::BoundaryData * boundary
Definition SimulationContext.hpp:715
twoD::SolverOptions2D * options
Definition SimulationContext.hpp:714
struct openswmm::SimulationContext::MassBalance mass_balance
NameIndex aquifer_names
Definition SimulationContext.hpp:612
TransectStore transects
Definition SimulationContext.hpp:538
UserFlags user_flags
User-defined flags from [USER_FLAGS] section.
Definition SimulationContext.hpp:636
LinkSubtypes link_subtypes
Relational per-subtype link side-tables (Phase 6) — the link analogue of node_subtypes....
Definition SimulationContext.hpp:447
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition SimulationContext.hpp:1260
double old_elapsed_ms
Elapsed routing time (ms) at the START of the current step.
Definition SimulationContext.hpp:392
NameIndex subcatch_names
Subcatchment name → subcatchment index.
Definition SimulationContext.hpp:493
NameIndex node_names
Node name → node index.
Definition SimulationContext.hpp:481
InletUsageStore inlet_usages
Definition SimulationContext.hpp:558
MaxStats max_courant_crit[MAX_STATS]
Top-5 CFL time-step critical elements.
Definition SimulationContext.hpp:1018
int n_nodes() const noexcept
Number of nodes.
Definition SimulationContext.hpp:1361
ExtInflowData ext_inflows
Definition SimulationContext.hpp:527
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:1139
NodeData nodes
All node state and properties.
Definition SimulationContext.hpp:422
std::uint64_t xsect_generation
Definition SimulationContext.hpp:545
double adjust_rain[12]
Definition SimulationContext.hpp:588
MaxStats max_non_converged[MAX_STATS]
Top-5 nodes with highest non-convergence frequency.
Definition SimulationContext.hpp:1022
TableData tables
All time series and rating curves.
Definition SimulationContext.hpp:471
double adjust_temp[12]
Monthly climate adjustment factors from [ADJUSTMENTS] section.
Definition SimulationContext.hpp:586
MaxStats max_mass_bal_errs[MAX_STATS]
Top-5 nodes with highest continuity errors.
Definition SimulationContext.hpp:1024
int error_code
Most recent error code (0 = no error).
Definition SimulationContext.hpp:728
RDIIAssignData rdii_assigns
Definition SimulationContext.hpp:529
AquiferStore aquifers
Definition SimulationContext.hpp:611
NameIndex snowpack_names
Definition SimulationContext.hpp:610
std::vector< int > subcatch_d_store_pattern
Definition SimulationContext.hpp:597
InletStore inlets
Definition SimulationContext.hpp:557
GageData gages
All rain gage state and properties.
Definition SimulationContext.hpp:459
FilesSpec files
Secondary file references parsed from [FILES].
Definition SimulationContext.hpp:680
std::vector< ControlLogEntry > control_log
Chronological log of all control actions taken during the simulation.
Definition SimulationContext.hpp:1119
DwfData dwf_inflows
Definition SimulationContext.hpp:528
NameIndex gage_names
Rain gage name → gage index.
Definition SimulationContext.hpp:499
BuildupData buildup
Definition SimulationContext.hpp:519
int n_gages() const noexcept
Number of rain gages.
Definition SimulationContext.hpp:1370
std::string inp_file_path
Path to the input .inp file (empty if not opened from a file).
Definition SimulationContext.hpp:1129
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:770
NodeSubtypes node_subtypes
Relational side-tables for node subtypes (storage/outfall/divider).
Definition SimulationContext.hpp:433
NameIndex table_names
Time series / curve name → table index.
Definition SimulationContext.hpp:511
bool gpkg_units_internal
Definition SimulationContext.hpp:554
std::vector< std::string > errors
Accumulated error messages written to report file.
Definition SimulationContext.hpp:757
RDIIDecayData rdii_decay
Parsed [RDII_DECAY] data (exponential IA model)
Definition SimulationContext.hpp:531
EngineState state
Current lifecycle state of the engine.
Definition SimulationContext.hpp:299
WashoffData washoff
Definition SimulationContext.hpp:520
int warning_code
Most recent warning code (0 = no warning).
Definition SimulationContext.hpp:734
NameIndex landuse_names
Definition SimulationContext.hpp:517
int n_tables() const noexcept
Number of tables (time series + curves).
Definition SimulationContext.hpp:1377
struct openswmm::SimulationContext::RoutingStepStats routing_stats
LidControlStore lid_controls
Definition SimulationContext.hpp:613
std::vector< int > subcatch_infil_pattern
Definition SimulationContext.hpp:598
double adjust_hydcon[12]
Definition SimulationContext.hpp:589
std::vector< std::string > title_notes
Project title and notes (from [TITLE] section).
Definition SimulationContext.hpp:314
std::vector< std::string > warnings
Accumulated warning messages written to report file.
Definition SimulationContext.hpp:748
ControlRuleStore control_rules
Definition SimulationContext.hpp:559
struct openswmm::SimulationContext::MassBalance2D mass_balance_2d
TreatmentData treatment
Definition SimulationContext.hpp:521
bool has_subcatch_adj_patterns
True if any pattern index >= 0.
Definition SimulationContext.hpp:603
void finalize_max_stats()
Compute top-5 arrays for CFL-critical, flow turns, and non-convergence.
Definition SimulationContext.hpp:1158
LinkData links
All link state and properties.
Definition SimulationContext.hpp:439
UnitHydData unit_hyds
Parsed [HYDROGRAPHS] data.
Definition SimulationContext.hpp:530
double dt_controls_remaining
Time remaining until the next control rule event (seconds).
Definition SimulationContext.hpp:412
void reset()
Fully reset the context to a CREATED state.
Definition SimulationContext.hpp:1197
int n_pollutants() const noexcept
Number of pollutants.
Definition SimulationContext.hpp:1373
LidUsageStore lid_usage
Definition SimulationContext.hpp:615
double next_report_ms
Next report instant in MILLISECONDS from start_date.
Definition SimulationContext.hpp:404
climate::ClimateState climate_state
Daily climate state — temperature, evaporation, wind, humidity.
Definition SimulationContext.hpp:337
MaxStats max_flow_turns[MAX_STATS]
Top-5 links with highest flow instability index.
Definition SimulationContext.hpp:1020
void allocate_objects()
Allocate all object arrays after input parsing is complete.
Definition SimulationContext.hpp:1305
StateAccessors state_accessors
Solver-neutral accessors for reading and writing solver-internal state at hot-start save/load time.
Definition SimulationContext.hpp:690
int n_subcatches() const noexcept
Number of subcatchments.
Definition SimulationContext.hpp:1367
int n_links() const noexcept
Number of links.
Definition SimulationContext.hpp:1364
std::vector< double > base_ds_perv
Definition SimulationContext.hpp:602
NameIndex link_names
Link name → link index.
Definition SimulationContext.hpp:487
std::vector< PluginSpec > plugin_specs
Plugin library specs parsed from [PLUGINS].
Definition SimulationContext.hpp:670
StreetStore streets
Definition SimulationContext.hpp:556
double current_time
Current simulation time in SECONDS from start_date.
Definition SimulationContext.hpp:361
struct openswmm::SimulationContext::TwoDModelIO twod_io
double elapsed_ms
Elapsed routing time in MILLISECONDS from start_date.
Definition SimulationContext.hpp:384
ForcingData forcing
Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap,...
Definition SimulationContext.hpp:659
int n_landuses() const noexcept
Definition SimulationContext.hpp:1374
std::vector< double > base_n_perv
Base values for pattern-adjusted parameters (populated at init).
Definition SimulationContext.hpp:601
double adjust_evap[12]
Definition SimulationContext.hpp:587
std::string error_message
Human-readable message for the last error/warning.
Definition SimulationContext.hpp:739
SpatialFrame spatial
Coordinate reference system and georeferenced coordinates.
Definition SimulationContext.hpp:625
std::vector< transect::TransectData > transect_tables
Built transect geometry tables (indexed same as transects).
Definition SimulationContext.hpp:540
SnowpackStore snowpacks
Definition SimulationContext.hpp:609
std::vector< int > subcatch_n_perv_pattern
Per-subcatchment pattern indices for N-PERV, DSTORE, INFIL adjustments.
Definition SimulationContext.hpp:596
PatternData patterns
Definition SimulationContext.hpp:532
static constexpr int MAX_STATS
Definition SimulationContext.hpp:1015
NameIndex lid_names
Definition SimulationContext.hpp:614
NameIndex pollutant_names
Pollutant name → pollutant index.
Definition SimulationContext.hpp:505
void shrink_all_to_fit()
Release excess vector capacity on all owned SoA data stores.
Definition SimulationContext.hpp:1343
void reset_state() noexcept
Reset all state variables to initial conditions (cold start).
Definition SimulationContext.hpp:1280
std::vector< Event > events
Definition SimulationContext.hpp:574
SubcatchData subcatches
All subcatchment state and properties.
Definition SimulationContext.hpp:453
LanduseData landuses
Definition SimulationContext.hpp:518
SimulationOptions options
Parsed simulation options (from [OPTIONS] section).
Definition SimulationContext.hpp:324
PollutantData pollutants
Pollutant definitions and per-object quality state.
Definition SimulationContext.hpp:465
double current_date
Absolute current date/time (decimal days, OADate (days since 12/30/1899)).
Definition SimulationContext.hpp:370
All SWMM simulation options parsed from [OPTIONS] section.
Definition SimulationOptions.hpp:124
SoA storage for snowpack parameter sets.
Definition HydrologyData.hpp:36
Spatial frame containing CRS and georeferenced coordinates.
Definition SpatialFrame.hpp:82
Solver-neutral hooks for reading and writing solver-internal state (infiltration, groundwater) at hot...
Definition SimulationContext.hpp:239
std::function< bool(int subcatch_index, int model, const double *infil)> set_infil_state
Definition SimulationContext.hpp:246
std::function< bool(int subcatch_index, int &out_model, double *out_infil)> get_infil_state
Definition SimulationContext.hpp:242
bool can_write() const noexcept
True iff the write-side accessors are wired.
Definition SimulationContext.hpp:260
std::function< bool(int subcatch_index, double theta, double lower_depth)> set_gw_state
Apply groundwater zone state to a subcatchment.
Definition SimulationContext.hpp:252
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:249
bool can_read() const noexcept
True iff the read-side accessors are wired.
Definition SimulationContext.hpp:255
Definition InfraData.hpp:54
Structure-of-Arrays storage for all subcatchments.
Definition SubcatchData.hpp:41
SoA collection of all time series and curves in the model.
Definition TableData.hpp:658
Definition InfraData.hpp:26
Definition QualityData.hpp:133
Definition InflowData.hpp:154
Definition QualityData.hpp:98
Definition Climate.hpp:71
One entry per control rule action that changed a link setting.
Definition SimulationContext.hpp:1111
Event time periods for event-based analysis/reporting.
Definition SimulationContext.hpp:570
System mass-balance totals for the optional 2D surface domain.
Definition SimulationContext.hpp:981
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:785
Top-N element statistic entry (matching legacy TMaxStats).
Definition SimulationContext.hpp:1009
Definition SimulationContext.hpp:1026
Non-owning pointers to the engine's 2D surface-routing model storage (mesh, solver options,...
Definition SimulationContext.hpp:712
Central, reentrant simulation context.
Definition SimulationContext.hpp:292
SoA storage for per-edge boundary conditions.
Definition BoundaryData.hpp:55
SoA storage for 2D triangular mesh geometry and topology.
Definition MeshData.hpp:34
Configuration for the 2D surface routing CVODE solver.
Definition SolverOptions2D.hpp:132