OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches

Central, reentrant simulation context. More...

#include <SimulationContext.hpp>

Collaboration diagram for openswmm::SimulationContext:

Classes

struct  MassBalance
 Cumulative mass balance totals for runoff and routing. More...
 
struct  RoutingStepStats
 

Public Member Functions

void reset ()
 Fully reset the context to a CREATED state.
 
void save_state () noexcept
 Snapshot current state into old-step arrays before solving.
 
void reset_state () noexcept
 Reset all state variables to initial conditions (cold start).
 
void allocate_objects ()
 Allocate all object arrays after input parsing is complete.
 
int n_nodes () const noexcept
 Number of nodes.
 
int n_links () const noexcept
 Number of links.
 
int n_subcatches () const noexcept
 Number of subcatchments.
 
int n_gages () const noexcept
 Number of rain gages.
 
int n_pollutants () const noexcept
 Number of pollutants.
 
int n_landuses () const noexcept
 
int n_tables () const noexcept
 Number of tables (time series + curves).
 

Public Attributes

EngineState state = EngineState::CREATED
 Current lifecycle state of the engine.
 
SimulationOptions options
 Parsed simulation options (from [OPTIONS] section).
 
double current_time = 0.0
 Current simulation time (decimal days from start_date).
 
double current_date = 0.0
 Absolute current date/time (decimal days, Julian date).
 
double dt_output_remaining = 0.0
 Time remaining until the next output boundary (seconds).
 
double dt_controls_remaining = 0.0
 Time remaining until the next control rule event (seconds).
 
NodeData nodes
 All node state and properties.
 
LinkData links
 All link state and properties.
 
SubcatchData subcatches
 All subcatchment state and properties.
 
GageData gages
 All rain gage state and properties.
 
PollutantData pollutants
 Pollutant definitions and per-object quality state.
 
TableData tables
 All time series and rating curves.
 
NameIndex node_names
 Node name → node index.
 
NameIndex link_names
 Link name → link index.
 
NameIndex subcatch_names
 Subcatchment name → subcatchment index.
 
NameIndex gage_names
 Rain gage name → gage index.
 
NameIndex pollutant_names
 Pollutant name → pollutant index.
 
NameIndex table_names
 Time series / curve name → table index.
 
NameIndex landuse_names
 
LanduseData landuses
 
BuildupData buildup
 
WashoffData washoff
 
TreatmentData treatment
 
ExtInflowData ext_inflows
 
DwfData dwf_inflows
 
RDIIAssignData rdii_assigns
 
PatternData patterns
 
TransectStore transects
 
StreetStore streets
 
InletStore inlets
 
InletUsageStore inlet_usages
 
ControlRuleStore control_rules
 
SnowpackStore snowpacks
 
NameIndex snowpack_names
 
AquiferStore aquifers
 
NameIndex aquifer_names
 
LidControlStore lid_controls
 
NameIndex lid_names
 
LidUsageStore lid_usage
 
SpatialFrame spatial
 Coordinate reference system and georeferenced coordinates.
 
UserFlags user_flags
 User-defined flags from [USER_FLAGS] section.
 
ForcingData forcing
 Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap, link settings, quality mass fluxes).
 
std::vector< PluginSpecplugin_specs
 Plugin library specs parsed from [PLUGINS].
 
int error_code = 0
 Most recent error code (0 = no error).
 
int warning_code = 0
 Most recent warning code (0 = no warning).
 
std::string error_message
 Human-readable message for the last error/warning.
 
struct openswmm::SimulationContext::MassBalance mass_balance
 
struct openswmm::SimulationContext::RoutingStepStats routing_stats
 
std::string inp_file_path
 Path to the input .inp file (empty if not opened from a file).
 

Detailed Description

Central, reentrant simulation context.

Owns all simulation data. Passed by (non-const) reference to every solver function. One context per concurrent simulation.

Member Function Documentation

◆ allocate_objects()

void openswmm::SimulationContext::allocate_objects ( )
inline

Allocate all object arrays after input parsing is complete.

Called by InputReader after all [JUNCTIONS], [CONDUITS], etc. sections have been parsed and the final object counts are known. Resizes SoA arrays and pollutant quality matrices.

Note
Name indices must already be populated (resize() uses node_names.size(), etc. to determine array length).
Here is the call graph for this function:

◆ n_gages()

int openswmm::SimulationContext::n_gages ( ) const
inlinenoexcept

Number of rain gages.

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

◆ n_landuses()

int openswmm::SimulationContext::n_landuses ( ) const
inlinenoexcept
Here is the call graph for this function:
Here is the caller graph for this function:

◆ n_links()

int openswmm::SimulationContext::n_links ( ) const
inlinenoexcept

Number of links.

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

◆ n_nodes()

int openswmm::SimulationContext::n_nodes ( ) const
inlinenoexcept

Number of nodes.

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

◆ n_pollutants()

int openswmm::SimulationContext::n_pollutants ( ) const
inlinenoexcept

Number of pollutants.

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

◆ n_subcatches()

int openswmm::SimulationContext::n_subcatches ( ) const
inlinenoexcept

Number of subcatchments.

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

◆ n_tables()

int openswmm::SimulationContext::n_tables ( ) const
inlinenoexcept

Number of tables (time series + curves).

Here is the call graph for this function:

◆ reset()

void openswmm::SimulationContext::reset ( )
inline

Fully reset the context to a CREATED state.

Clears all object data and name indices. Does NOT free the option structs (they are re-parsed from the input file). Call this before re-running or re-opening a simulation.

Here is the call graph for this function:

◆ reset_state()

void openswmm::SimulationContext::reset_state ( )
inlinenoexcept

Reset all state variables to initial conditions (cold start).

Sets all current and old-step arrays to zero. Invert elevations and static properties are NOT changed.

Here is the call graph for this function:

◆ save_state()

void openswmm::SimulationContext::save_state ( )
inlinenoexcept

Snapshot current state into old-step arrays before solving.

Must be called at the start of each timestep, before the hydraulic and quality solvers update the state.

Here is the call graph for this function:

Member Data Documentation

◆ aquifer_names

NameIndex openswmm::SimulationContext::aquifer_names

◆ aquifers

AquiferStore openswmm::SimulationContext::aquifers

◆ buildup

BuildupData openswmm::SimulationContext::buildup

◆ control_rules

ControlRuleStore openswmm::SimulationContext::control_rules

◆ current_date

double openswmm::SimulationContext::current_date = 0.0

Absolute current date/time (decimal days, Julian date).

= options.start_date + current_time

See also
Legacy: StartDateTime + ElapsedTime in globals.h

◆ current_time

double openswmm::SimulationContext::current_time = 0.0

Current simulation time (decimal days from start_date).

Updated by TimestepController::advance(). The value 0.0 corresponds to options.start_date.

See also
Legacy: ElapsedTime in globals.h

◆ dt_controls_remaining

double openswmm::SimulationContext::dt_controls_remaining = 0.0

Time remaining until the next control rule event (seconds).

0.0 means no control step scheduled; updated by the control rule processor.

◆ dt_output_remaining

double openswmm::SimulationContext::dt_output_remaining = 0.0

Time remaining until the next output boundary (seconds).

Managed by TimestepController. Decremented each step; reset to options.report_step by reset_output_timer().

See also
TimestepController::advance(), TimestepController::output_due()

◆ dwf_inflows

DwfData openswmm::SimulationContext::dwf_inflows

◆ error_code

int openswmm::SimulationContext::error_code = 0

Most recent error code (0 = no error).

See also
Legacy: ErrorCode in globals.h

◆ error_message

std::string openswmm::SimulationContext::error_message

Human-readable message for the last error/warning.

◆ ext_inflows

ExtInflowData openswmm::SimulationContext::ext_inflows

◆ forcing

ForcingData openswmm::SimulationContext::forcing

Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap, link settings, quality mass fluxes).

Set via swmm_forcing_*() API. Applied by applyForcings() in the step loop. Auto-cleared by clear_reset_entries() at end of each step (for RESET-persistence entries).

See also
ForcingData.hpp, openswmm_forcing.h

◆ gage_names

NameIndex openswmm::SimulationContext::gage_names

Rain gage name → gage index.

See also
Legacy: project_findObject(GAGE, name) in project.c

◆ gages

GageData openswmm::SimulationContext::gages

All rain gage state and properties.

See also
Legacy: Gage[] in globals.h + TGage in objects.h

◆ inlet_usages

InletUsageStore openswmm::SimulationContext::inlet_usages

◆ inlets

InletStore openswmm::SimulationContext::inlets

◆ inp_file_path

std::string openswmm::SimulationContext::inp_file_path

Path to the input .inp file (empty if not opened from a file).

See also
Legacy: InpFile in globals.h

◆ landuse_names

NameIndex openswmm::SimulationContext::landuse_names

◆ landuses

LanduseData openswmm::SimulationContext::landuses

◆ lid_controls

LidControlStore openswmm::SimulationContext::lid_controls

◆ lid_names

NameIndex openswmm::SimulationContext::lid_names

◆ lid_usage

LidUsageStore openswmm::SimulationContext::lid_usage

◆ link_names

NameIndex openswmm::SimulationContext::link_names

Link name → link index.

See also
Legacy: project_findObject(LINK, name) in project.c

◆ links

LinkData openswmm::SimulationContext::links

All link state and properties.

See also
Legacy: Link[], LinkStats[] in globals.h + TLink in objects.h

◆ mass_balance

struct openswmm::SimulationContext::MassBalance openswmm::SimulationContext::mass_balance

◆ node_names

NameIndex openswmm::SimulationContext::node_names

Node name → node index.

See also
Legacy: project_findObject(NODE, name) in project.c

◆ nodes

NodeData openswmm::SimulationContext::nodes

All node state and properties.

See also
Legacy: Node[], NodeStats[] in globals.h + TNode in objects.h

◆ options

SimulationOptions openswmm::SimulationContext::options

Parsed simulation options (from [OPTIONS] section).

See also
Legacy: FlowUnits, RouteModel, RouteStep, … in globals.h

◆ patterns

PatternData openswmm::SimulationContext::patterns

◆ plugin_specs

std::vector<PluginSpec> openswmm::SimulationContext::plugin_specs

Plugin library specs parsed from [PLUGINS].

Consumed by PluginFactory::load_plugins() during open(). New in 6.0.0 — no legacy equivalent.

◆ pollutant_names

NameIndex openswmm::SimulationContext::pollutant_names

Pollutant name → pollutant index.

See also
Legacy: project_findObject(POLLUT, name) in project.c

◆ pollutants

PollutantData openswmm::SimulationContext::pollutants

Pollutant definitions and per-object quality state.

See also
Legacy: Pollut[], node.newQual[], link.newQual[] in globals.h

◆ rdii_assigns

RDIIAssignData openswmm::SimulationContext::rdii_assigns

◆ routing_stats

struct openswmm::SimulationContext::RoutingStepStats openswmm::SimulationContext::routing_stats

◆ snowpack_names

NameIndex openswmm::SimulationContext::snowpack_names

◆ snowpacks

SnowpackStore openswmm::SimulationContext::snowpacks

◆ spatial

SpatialFrame openswmm::SimulationContext::spatial

Coordinate reference system and georeferenced coordinates.

See also
Legacy: Coord[] in globals.h

◆ state

EngineState openswmm::SimulationContext::state = EngineState::CREATED

Current lifecycle state of the engine.

◆ streets

StreetStore openswmm::SimulationContext::streets

◆ subcatch_names

NameIndex openswmm::SimulationContext::subcatch_names

Subcatchment name → subcatchment index.

See also
Legacy: project_findObject(SUBCATCH, name) in project.c

◆ subcatches

SubcatchData openswmm::SimulationContext::subcatches

All subcatchment state and properties.

See also
Legacy: Subcatch[], SubcatchStats[] in globals.h + TSubcatch

◆ table_names

NameIndex openswmm::SimulationContext::table_names

Time series / curve name → table index.

See also
Legacy: project_findObject(TIMESERIES, name) in project.c

◆ tables

TableData openswmm::SimulationContext::tables

All time series and rating curves.

See also
Legacy: Tseries[], Curve[] in globals.h + TTable in objects.h

◆ transects

TransectStore openswmm::SimulationContext::transects

◆ treatment

TreatmentData openswmm::SimulationContext::treatment

◆ user_flags

UserFlags openswmm::SimulationContext::user_flags

User-defined flags from [USER_FLAGS] section.

New in 6.0.0. No legacy equivalent.

See also
UserFlags.hpp

◆ warning_code

int openswmm::SimulationContext::warning_code = 0

Most recent warning code (0 = no warning).

See also
Legacy: WarningCode in globals.h

◆ washoff

WashoffData openswmm::SimulationContext::washoff

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