60#ifndef OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
61#define OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
63#include "../data/GageData.hpp"
64#include "../data/LinkData.hpp"
65#include "../data/NameIndex.hpp"
66#include "../data/NodeData.hpp"
67#include "../data/PollutantData.hpp"
68#include "../data/SubcatchData.hpp"
69#include "../data/TableData.hpp"
73#include "../data/QualityData.hpp"
74#include "../data/InflowData.hpp"
75#include "../data/InfraData.hpp"
76#include "../data/HydrologyData.hpp"
77#include "../data/ForcingData.hpp"
508 std::fill(v->begin(), v->end(), 0.0);
516 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
527 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
Simulation options parsed from the [OPTIONS] section.
Spatial frame — CRS specification and coordinate data for nodes/links.
User-defined model flags (InfoWorks ICM-style, two-section design).
Bidirectional name↔index registry for SWMM objects.
Definition NameIndex.hpp:45
int size() const noexcept
Number of registered names.
Definition NameIndex.hpp:109
void clear() noexcept
Remove all entries.
Definition NameIndex.hpp:123
Stores the full user-flags data: schema definitions + per-object values.
Definition UserFlags.hpp:127
void clear() noexcept
Clear both schema definitions and per-object value assignments.
Definition UserFlags.hpp:246
EngineState
High-level engine lifecycle state.
Definition SimulationContext.hpp:116
@ CLOSED
Resources released.
@ ENDED
Simulation loop completed.
@ ERROR_STATE
Fatal error; call swmm_engine_last_error()
@ RUNNING
Simulation loop in progress.
@ REPORTED
Summary report written.
@ BUILDING
Programmatic model construction in progress (no .inp)
@ CREATED
Context allocated, no input loaded.
@ PAUSED
Simulation paused (future hot-swap support)
@ INITIALIZED
Initial conditions applied.
@ OPENED
Input file parsed, objects allocated.
Definition Controls.cpp:24
SoA storage for aquifer parameter sets.
Definition HydrologyData.hpp:66
Definition QualityData.hpp:47
Definition InfraData.hpp:101
Definition InflowData.hpp:53
Definition InflowData.hpp:27
Definition ForcingData.hpp:52
Structure-of-Arrays storage for all rain gages.
Definition GageData.hpp:75
void reset_state() noexcept
Definition GageData.hpp:211
void resize(int n)
Definition GageData.hpp:187
Definition InfraData.hpp:66
Definition InfraData.hpp:82
Definition QualityData.hpp:28
SoA storage for LID control type definitions.
Definition HydrologyData.hpp:99
SoA storage for LID usage assignments to subcatchments.
Definition HydrologyData.hpp:135
Structure-of-Arrays storage for all links.
Definition LinkData.hpp:104
void resize(int n)
Definition LinkData.hpp:461
void reset_state() noexcept
Definition LinkData.hpp:554
void save_state() noexcept
Definition LinkData.hpp:548
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:89
void reset_state() noexcept
Zero all state variables (for a cold start).
Definition NodeData.hpp:473
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition NodeData.hpp:462
void resize(int n)
Resize all arrays to hold exactly n nodes.
Definition NodeData.hpp:385
Definition InflowData.hpp:95
One plugin entry from the [PLUGINS] section.
Definition SimulationContext.hpp:99
std::string path
Shared library path.
Definition SimulationContext.hpp:100
std::vector< std::string > init_args
Extra tokens from the [PLUGINS] row.
Definition SimulationContext.hpp:101
Static properties for each pollutant species.
Definition PollutantData.hpp:55
void resize_pollutants(int n)
Resize pollutant definition arrays to hold n pollutants.
Definition PollutantData.hpp:171
void save_quality_state() noexcept
Definition PollutantData.hpp:203
void reset_quality_state() noexcept
Definition PollutantData.hpp:209
void resize_quality(int n_nodes, int n_links, int n_subcatches)
Allocate per-object quality arrays.
Definition PollutantData.hpp:193
Definition InflowData.hpp:78
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:402
double routing_rdii
Definition SimulationContext.hpp:416
double routing_gw_inflow
Definition SimulationContext.hpp:415
double routing_init_storage
Definition SimulationContext.hpp:422
double routing_evap_loss
Definition SimulationContext.hpp:420
std::vector< double > qual_surface_buildup
Accumulated buildup during sim.
Definition SimulationContext.hpp:437
double routing_dry_weather
Definition SimulationContext.hpp:413
std::vector< double > qual_routing_final
Final stored quality mass.
Definition SimulationContext.hpp:447
double runoff_runoff
Total surface runoff volume (ft3)
Definition SimulationContext.hpp:407
std::vector< double > qual_init_buildup
Initial buildup mass.
Definition SimulationContext.hpp:435
std::vector< double > qual_routing_init
Initial stored quality mass.
Definition SimulationContext.hpp:446
std::vector< double > qual_runoff_load
Mass load in surface runoff.
Definition SimulationContext.hpp:442
std::vector< double > qual_final_buildup
Final buildup mass.
Definition SimulationContext.hpp:436
double routing_final_storage
Definition SimulationContext.hpp:423
double runoff_init_store
Initial surface storage (ft3)
Definition SimulationContext.hpp:409
double routing_seep_loss
Definition SimulationContext.hpp:421
std::vector< double > qual_routing_flood
Quality mass lost to flooding.
Definition SimulationContext.hpp:445
double runoff_snowremov
Total snow removal volume (ft3)
Definition SimulationContext.hpp:408
double routing_external
Definition SimulationContext.hpp:417
std::vector< double > qual_infil_loss
Mass lost to infiltration.
Definition SimulationContext.hpp:441
double runoff_final_store
Final surface storage (ft3)
Definition SimulationContext.hpp:410
std::vector< double > qual_routing_reacted
Quality mass lost to decay.
Definition SimulationContext.hpp:448
double routing_wet_weather
Definition SimulationContext.hpp:414
std::vector< double > qual_wet_deposition
Wet deposition mass.
Definition SimulationContext.hpp:438
double step_gw_inflow
Definition SimulationContext.hpp:432
double runoff_rainfall
Total rainfall volume (ft3)
Definition SimulationContext.hpp:404
void reset()
Definition SimulationContext.hpp:468
double routing_flooding
Definition SimulationContext.hpp:418
void resize_quality(int n_pollutants)
Definition SimulationContext.hpp:450
double runoff_evap
Total evaporation volume (ft3)
Definition SimulationContext.hpp:405
double step_flooding
Definition SimulationContext.hpp:429
std::vector< double > qual_sweeping
Mass removed by sweeping.
Definition SimulationContext.hpp:439
double routing_error() const
Routing continuity error (fraction).
Definition SimulationContext.hpp:520
std::vector< double > qual_routing_outflow
Quality mass leaving at outfalls.
Definition SimulationContext.hpp:444
double routing_forcing_inflow
Cumulative user-forced lateral inflow (ft3)
Definition SimulationContext.hpp:426
double runoff_infil
Total infiltration volume (ft3)
Definition SimulationContext.hpp:406
double step_outflow
Definition SimulationContext.hpp:430
std::vector< double > qual_bmp_removal
BMP treatment removal.
Definition SimulationContext.hpp:440
double routing_outflow
Definition SimulationContext.hpp:419
double runoff_error() const
Runoff continuity error (fraction).
Definition SimulationContext.hpp:513
std::vector< double > qual_routing_wet
Wet weather quality inflow to routing.
Definition SimulationContext.hpp:443
double step_dw_inflow
Definition SimulationContext.hpp:431
Definition SimulationContext.hpp:535
double sum_step
Sum of all routing time steps (sec)
Definition SimulationContext.hpp:538
long n_steps
Total number of routing steps.
Definition SimulationContext.hpp:539
double avg_step() const
Definition SimulationContext.hpp:549
double max_step
Maximum routing time step used (sec)
Definition SimulationContext.hpp:537
double min_step
Minimum routing time step used (sec)
Definition SimulationContext.hpp:536
void update(double dt)
Definition SimulationContext.hpp:543
double steady_pct
Percent of time in steady state.
Definition SimulationContext.hpp:540
double avg_iterations
Average iterations per step (DW only)
Definition SimulationContext.hpp:541
Central, reentrant simulation context.
Definition SimulationContext.hpp:141
struct openswmm::SimulationContext::MassBalance mass_balance
NameIndex aquifer_names
Definition SimulationContext.hpp:317
TransectStore transects
Definition SimulationContext.hpp:304
UserFlags user_flags
User-defined flags from [USER_FLAGS] section.
Definition SimulationContext.hpp:341
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition SimulationContext.hpp:613
NameIndex subcatch_names
Subcatchment name → subcatchment index.
Definition SimulationContext.hpp:261
NameIndex node_names
Node name → node index.
Definition SimulationContext.hpp:249
InletUsageStore inlet_usages
Definition SimulationContext.hpp:307
int n_nodes() const noexcept
Number of nodes.
Definition SimulationContext.hpp:687
ExtInflowData ext_inflows
Definition SimulationContext.hpp:295
NodeData nodes
All node state and properties.
Definition SimulationContext.hpp:209
TableData tables
All time series and rating curves.
Definition SimulationContext.hpp:239
int error_code
Most recent error code (0 = no error).
Definition SimulationContext.hpp:376
RDIIAssignData rdii_assigns
Definition SimulationContext.hpp:297
AquiferStore aquifers
Definition SimulationContext.hpp:316
NameIndex snowpack_names
Definition SimulationContext.hpp:315
InletStore inlets
Definition SimulationContext.hpp:306
GageData gages
All rain gage state and properties.
Definition SimulationContext.hpp:227
DwfData dwf_inflows
Definition SimulationContext.hpp:296
NameIndex gage_names
Rain gage name → gage index.
Definition SimulationContext.hpp:267
BuildupData buildup
Definition SimulationContext.hpp:287
int n_gages() const noexcept
Number of rain gages.
Definition SimulationContext.hpp:696
std::string inp_file_path
Path to the input .inp file (empty if not opened from a file).
Definition SimulationContext.hpp:562
NameIndex table_names
Time series / curve name → table index.
Definition SimulationContext.hpp:279
EngineState state
Current lifecycle state of the engine.
Definition SimulationContext.hpp:148
WashoffData washoff
Definition SimulationContext.hpp:288
int warning_code
Most recent warning code (0 = no warning).
Definition SimulationContext.hpp:382
NameIndex landuse_names
Definition SimulationContext.hpp:285
int n_tables() const noexcept
Number of tables (time series + curves).
Definition SimulationContext.hpp:703
double dt_output_remaining
Time remaining until the next output boundary (seconds).
Definition SimulationContext.hpp:191
struct openswmm::SimulationContext::RoutingStepStats routing_stats
LidControlStore lid_controls
Definition SimulationContext.hpp:318
ControlRuleStore control_rules
Definition SimulationContext.hpp:308
TreatmentData treatment
Definition SimulationContext.hpp:289
LinkData links
All link state and properties.
Definition SimulationContext.hpp:215
double dt_controls_remaining
Time remaining until the next control rule event (seconds).
Definition SimulationContext.hpp:199
void reset()
Fully reset the context to a CREATED state.
Definition SimulationContext.hpp:575
int n_pollutants() const noexcept
Number of pollutants.
Definition SimulationContext.hpp:699
LidUsageStore lid_usage
Definition SimulationContext.hpp:320
void allocate_objects()
Allocate all object arrays after input parsing is complete.
Definition SimulationContext.hpp:651
int n_subcatches() const noexcept
Number of subcatchments.
Definition SimulationContext.hpp:693
int n_links() const noexcept
Number of links.
Definition SimulationContext.hpp:690
NameIndex link_names
Link name → link index.
Definition SimulationContext.hpp:255
std::vector< PluginSpec > plugin_specs
Plugin library specs parsed from [PLUGINS].
Definition SimulationContext.hpp:366
StreetStore streets
Definition SimulationContext.hpp:305
double current_time
Current simulation time (decimal days from start_date).
Definition SimulationContext.hpp:172
ForcingData forcing
Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap,...
Definition SimulationContext.hpp:355
int n_landuses() const noexcept
Definition SimulationContext.hpp:700
std::string error_message
Human-readable message for the last error/warning.
Definition SimulationContext.hpp:387
SpatialFrame spatial
Coordinate reference system and georeferenced coordinates.
Definition SimulationContext.hpp:330
SnowpackStore snowpacks
Definition SimulationContext.hpp:314
PatternData patterns
Definition SimulationContext.hpp:298
NameIndex lid_names
Definition SimulationContext.hpp:319
NameIndex pollutant_names
Pollutant name → pollutant index.
Definition SimulationContext.hpp:273
void reset_state() noexcept
Reset all state variables to initial conditions (cold start).
Definition SimulationContext.hpp:628
SubcatchData subcatches
All subcatchment state and properties.
Definition SimulationContext.hpp:221
LanduseData landuses
Definition SimulationContext.hpp:286
SimulationOptions options
Parsed simulation options (from [OPTIONS] section).
Definition SimulationContext.hpp:158
PollutantData pollutants
Pollutant definitions and per-object quality state.
Definition SimulationContext.hpp:233
double current_date
Absolute current date/time (decimal days, Julian date).
Definition SimulationContext.hpp:181
All SWMM simulation options parsed from [OPTIONS] section.
Definition SimulationOptions.hpp:100
double start_date
Simulation start date/time (decimal days, Julian date).
Definition SimulationOptions.hpp:107
bool quality_routing
True if quality routing is enabled.
Definition SimulationOptions.hpp:215
double report_step
Reporting output interval in seconds.
Definition SimulationOptions.hpp:128
SoA storage for snowpack parameter sets.
Definition HydrologyData.hpp:36
Spatial frame containing CRS and georeferenced coordinates.
Definition SpatialFrame.hpp:82
std::vector< double > link_x
Link centroid X coordinates.
Definition SpatialFrame.hpp:123
std::vector< double > subcatch_x
Subcatchment centroid X.
Definition SpatialFrame.hpp:133
std::vector< double > node_x
Node X coordinates (easting or longitude).
Definition SpatialFrame.hpp:113
std::vector< double > gage_x
Gage X coordinates.
Definition SpatialFrame.hpp:163
std::vector< double > gage_y
Gage Y coordinates.
Definition SpatialFrame.hpp:166
std::vector< std::vector< double > > subcatch_polygon_y
Per-subcatchment polygon Y vertices.
Definition SpatialFrame.hpp:156
std::vector< std::vector< double > > link_vertices_x
Per-link X vertices. link_vertices_x[link_idx] is a vector of X coords.
Definition SpatialFrame.hpp:143
std::vector< double > link_y
Link centroid Y coordinates.
Definition SpatialFrame.hpp:126
std::vector< std::vector< double > > subcatch_polygon_x
Per-subcatchment polygon X vertices.
Definition SpatialFrame.hpp:153
std::vector< double > node_y
Node Y coordinates (northing or latitude).
Definition SpatialFrame.hpp:116
std::vector< double > subcatch_y
Subcatchment centroid Y.
Definition SpatialFrame.hpp:136
std::vector< std::vector< double > > link_vertices_y
Per-link Y vertices. link_vertices_y[link_idx] is a vector of Y coords.
Definition SpatialFrame.hpp:146
Definition InfraData.hpp:46
Structure-of-Arrays storage for all subcatchments.
Definition SubcatchData.hpp:39
void reset_state() noexcept
Definition SubcatchData.hpp:395
void resize(int n)
Definition SubcatchData.hpp:335
void save_state() noexcept
Definition SubcatchData.hpp:391
SoA collection of all time series and curves in the model.
Definition TableData.hpp:248
void reset_cursors() noexcept
Reset all cursors (call before re-running a simulation).
Definition TableData.hpp:268
Definition InfraData.hpp:26
Definition QualityData.hpp:99
Definition QualityData.hpp:73