60#ifndef OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
61#define OPENSWMM_ENGINE_SIMULATION_CONTEXT_HPP
65#include "../data/GageData.hpp"
66#include "../data/LinkData.hpp"
67#include "../data/NameIndex.hpp"
68#include "../data/NodeData.hpp"
69#include "../data/PollutantData.hpp"
70#include "../data/SubcatchData.hpp"
71#include "../data/TableData.hpp"
75#include "../data/QualityData.hpp"
76#include "../data/InflowData.hpp"
77#include "../data/InfraData.hpp"
78#include "../hydraulics/Transect.hpp"
79#include "../data/HydrologyData.hpp"
80#include "../data/ForcingData.hpp"
81#include "../hydrology/Climate.hpp"
239 std::function<bool(
int subcatch_index,
int& out_model,
double* out_infil)>
get_infil_state;
243 std::function<bool(
int subcatch_index,
int model,
const double* infil)>
set_infil_state;
246 std::function<bool(
int subcatch_index,
double& out_theta,
double& out_lower_depth)>
get_gw_state;
249 std::function<bool(
int subcatch_index,
double theta,
double lower_depth)>
set_gw_state;
510 double adjust_temp[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
511 double adjust_evap[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
512 double adjust_rain[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
513 double adjust_hydcon[12] = {1,1,1,1,1,1,1,1,1,1,1,1};
808 std::fill(v->begin(), v->end(), 0.0);
816 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
827 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
835 return (total_in > 0.0) ? (total_in - total_out) / total_in : 0.0;
895 if (route_step <= 0.0)
return;
896 if (min_route_step <= 0.0) min_route_step = route_step;
897 double log_hi = std::log10(route_step);
898 double log_lo = std::log10(min_route_step);
899 double delta = (log_hi - log_lo) /
static_cast<double>(
N_TIME_BINS);
912 if (lo <= 0.0) lo = hi;
977 candidate.
index = idx;
978 candidate.
value = value;
980 if (std::fabs(candidate.
value) > std::fabs(arr[k].
value)) {
995 if (step_count <= 0)
return;
996 double inv_steps = 1.0 /
static_cast<double>(step_count);
999 for (
int j = 0; j <
n_nodes(); ++j) {
1003 for (
int j = 0; j <
n_links(); ++j) {
1010 if (rpt_steps > 2) {
1011 double z = 100.0 / (2.0 / 3.0 *
static_cast<double>(rpt_steps - 2));
1012 for (
int j = 0; j <
n_links(); ++j) {
1019 for (
int j = 0; j <
n_nodes(); ++j) {
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
FileMode
Mode keyword for one [FILES] row — SAVE or USE.
Definition SimulationContext.hpp:121
EngineState
High-level engine lifecycle state.
Definition SimulationContext.hpp:203
@ 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 NodeCoupling.cpp:15
SoA storage for aquifer parameter sets.
Definition HydrologyData.hpp:66
Definition QualityData.hpp:63
void shrink_to_fit()
Definition QualityData.hpp:85
Definition InfraData.hpp:123
Definition InflowData.hpp:68
Definition InflowData.hpp:27
Definition SimulationContext.hpp:154
FileMode runoff_mode
Definition SimulationContext.hpp:158
std::string runoff_path
Definition SimulationContext.hpp:159
std::string inflows_path
Legacy semantics: USE only.
Definition SimulationContext.hpp:165
FileMode rainfall_mode
Definition SimulationContext.hpp:155
std::vector< HotstartSaveEntry > hotstart_saves
Definition SimulationContext.hpp:176
std::string rdii_path
Definition SimulationContext.hpp:162
bool has_any() const noexcept
Definition SimulationContext.hpp:180
std::string outflows_path
Legacy semantics: SAVE only.
Definition SimulationContext.hpp:168
std::string hotstart_use_path
Legacy semantics: USE — single hot-start input file.
Definition SimulationContext.hpp:171
FileMode rdii_mode
Definition SimulationContext.hpp:161
std::string rainfall_path
Definition SimulationContext.hpp:156
Definition ForcingData.hpp:52
Structure-of-Arrays storage for all rain gages.
Definition GageData.hpp:75
void reset_state() noexcept
Definition GageData.hpp:315
void shrink_to_fit()
Release excess vector capacity accumulated during parsing.
Definition GageData.hpp:290
void resize(int n)
Definition GageData.hpp:211
Configuration parsed from the [FILES] section.
Definition SimulationContext.hpp:147
double datetime
Definition SimulationContext.hpp:151
std::string path
Definition SimulationContext.hpp:148
Definition InfraData.hpp:74
Definition InfraData.hpp:90
Definition QualityData.hpp:29
void shrink_to_fit()
Definition QualityData.hpp:51
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
void resize(int n)
Definition LinkData.hpp:629
void reset_state() noexcept
Definition LinkData.hpp:995
void resize_quality(int n_pollutants)
Resize per-link quality arrays after pollutant count is known.
Definition LinkData.hpp:876
void save_state() noexcept
Definition LinkData.hpp:988
std::vector< long > stat_flow_turns
Count of flow direction reversals per link.
Definition LinkData.hpp:605
void shrink_to_fit()
Release excess vector capacity accumulated during parsing.
Definition LinkData.hpp:889
std::vector< double > stat_time_courant_critical
CFL time-step critical count per link.
Definition LinkData.hpp:621
Structure-of-Arrays storage for all nodes.
Definition NodeData.hpp:90
std::vector< double > stat_time_courant_critical
CFL time-step critical count per node.
Definition NodeData.hpp:598
void reset_state() noexcept
Reset state variables, applying init_depth from input.
Definition NodeData.hpp:996
void shrink_to_fit()
Release excess vector capacity accumulated during parsing.
Definition NodeData.hpp:882
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition NodeData.hpp:979
void resize(int n)
Resize all arrays to hold exactly n nodes.
Definition NodeData.hpp:623
std::vector< int > stat_non_converged_count
Count of non-converging steps per node.
Definition NodeData.hpp:589
void resize_quality(int n_pollutants)
Resize per-node quality arrays after pollutant count is known.
Definition NodeData.hpp:861
Definition InflowData.hpp:197
One plugin entry from the [PLUGINS] section.
Definition SimulationContext.hpp:103
std::string path
Shared library path.
Definition SimulationContext.hpp:104
std::vector< std::string > init_args
Extra tokens from the [PLUGINS] row.
Definition SimulationContext.hpp:105
Static properties for each pollutant species.
Definition PollutantData.hpp:55
void shrink_to_fit()
Release excess vector capacity.
Definition PollutantData.hpp:152
void resize_pollutants(int n)
Resize pollutant definition arrays to hold n pollutants.
Definition PollutantData.hpp:136
Definition InflowData.hpp:105
Definition InflowData.hpp:185
One entry per control rule action that changed a link setting.
Definition SimulationContext.hpp:946
double new_setting
The new target setting value (0-1)
Definition SimulationContext.hpp:949
std::string rule_name
Name of the rule that triggered the change.
Definition SimulationContext.hpp:948
double date
OADate when the change occurred.
Definition SimulationContext.hpp:950
int link_idx
Index of the link whose setting changed.
Definition SimulationContext.hpp:947
Event time periods for event-based analysis/reporting.
Definition SimulationContext.hpp:494
double end
Event end (DateTime decimal days)
Definition SimulationContext.hpp:496
double start
Event start (DateTime decimal days)
Definition SimulationContext.hpp:495
Cumulative mass balance totals for runoff and routing.
Definition SimulationContext.hpp:668
double routing_rdii
Definition SimulationContext.hpp:682
double gw_infil
Cumulative infiltration to GW (ft)
Definition SimulationContext.hpp:699
double routing_gw_inflow
Definition SimulationContext.hpp:681
double routing_init_storage
Definition SimulationContext.hpp:688
double routing_evap_loss
Definition SimulationContext.hpp:686
std::vector< double > qual_surface_buildup
Accumulated buildup during sim.
Definition SimulationContext.hpp:718
double routing_dry_weather
Definition SimulationContext.hpp:679
std::vector< double > qual_routing_final
Final stored quality mass.
Definition SimulationContext.hpp:728
double runoff_runoff
Total surface runoff volume (ft3)
Definition SimulationContext.hpp:673
std::vector< double > qual_init_buildup
Initial buildup mass.
Definition SimulationContext.hpp:716
std::vector< double > qual_routing_init
Initial stored quality mass.
Definition SimulationContext.hpp:727
std::vector< double > qual_runoff_load
Mass load in surface runoff.
Definition SimulationContext.hpp:723
std::vector< double > qual_final_buildup
Final buildup mass.
Definition SimulationContext.hpp:717
double routing_final_storage
Definition SimulationContext.hpp:689
double runoff_init_store
Initial surface storage (ft3)
Definition SimulationContext.hpp:675
double gw_lower_perc
Cumulative deep percolation (ft)
Definition SimulationContext.hpp:702
double routing_seep_loss
Definition SimulationContext.hpp:687
std::vector< double > qual_routing_flood
Quality mass lost to flooding.
Definition SimulationContext.hpp:726
double runoff_snowremov
Total snow removal volume (ft3)
Definition SimulationContext.hpp:674
double gw_upper_evap
Cumulative upper zone evaporation (ft)
Definition SimulationContext.hpp:700
double routing_external
Definition SimulationContext.hpp:683
std::vector< double > qual_infil_loss
Mass lost to infiltration.
Definition SimulationContext.hpp:722
double runoff_final_store
Final surface storage (ft3)
Definition SimulationContext.hpp:676
std::vector< double > qual_routing_reacted
Quality mass lost to decay.
Definition SimulationContext.hpp:729
double routing_wet_weather
Definition SimulationContext.hpp:680
std::vector< double > qual_wet_deposition
Wet deposition mass.
Definition SimulationContext.hpp:719
double gw_final_storage
Final GW storage (ft)
Definition SimulationContext.hpp:705
std::vector< double > qual_routing_seep
Quality mass lost to seepage.
Definition SimulationContext.hpp:731
double step_gw_inflow
Definition SimulationContext.hpp:711
double runoff_rainfall
Total rainfall volume (ft3)
Definition SimulationContext.hpp:670
void reset()
Definition SimulationContext.hpp:756
double gw_lateral_flow
Cumulative lateral GW flow (ft)
Definition SimulationContext.hpp:703
std::vector< double > qual_routing_ii_in
RDII quality mass inflow.
Definition SimulationContext.hpp:730
double routing_flooding
Definition SimulationContext.hpp:684
void resize_quality(int n_pollutants)
Definition SimulationContext.hpp:734
double gw_error() const
Groundwater continuity error (fraction). Gap #72.
Definition SimulationContext.hpp:831
double runoff_evap
Total evaporation volume (ft3)
Definition SimulationContext.hpp:671
double gw_init_storage
Initial GW storage (ft)
Definition SimulationContext.hpp:704
double step_flooding
Definition SimulationContext.hpp:708
std::vector< double > qual_sweeping
Mass removed by sweeping.
Definition SimulationContext.hpp:720
std::vector< double > routing_forcing_qual_inflow
Per-pollutant cumulative user-forced quality mass.
Definition SimulationContext.hpp:695
double routing_error() const
Routing continuity error (fraction).
Definition SimulationContext.hpp:820
double gw_lower_evap
Cumulative lower zone evaporation (ft)
Definition SimulationContext.hpp:701
std::vector< double > qual_routing_outflow
Quality mass leaving at outfalls.
Definition SimulationContext.hpp:725
double routing_forcing_inflow
Cumulative user-forced lateral inflow (ft3)
Definition SimulationContext.hpp:692
double step_rdii_inflow
Definition SimulationContext.hpp:712
double runoff_infil
Total infiltration volume (ft3)
Definition SimulationContext.hpp:672
double step_outflow
Definition SimulationContext.hpp:709
std::vector< double > qual_bmp_removal
BMP treatment removal.
Definition SimulationContext.hpp:721
double routing_outflow
Definition SimulationContext.hpp:685
double runoff_error() const
Runoff continuity error (fraction).
Definition SimulationContext.hpp:813
std::vector< double > qual_routing_wet
Wet weather quality inflow to routing.
Definition SimulationContext.hpp:724
std::vector< double > qual_routing_evap
Quality mass lost to evaporation.
Definition SimulationContext.hpp:732
double step_dw_inflow
Definition SimulationContext.hpp:710
double step_ext_inflow
Definition SimulationContext.hpp:713
Top-N element statistic entry (matching legacy TMaxStats).
Definition SimulationContext.hpp:844
int index
element index (-1 = unused slot)
Definition SimulationContext.hpp:846
int obj_type
0 = NODE, 1 = LINK
Definition SimulationContext.hpp:845
double value
statistic value (percentage or index)
Definition SimulationContext.hpp:847
Definition SimulationContext.hpp:861
void update_iterations(int iters, bool converged)
Record iteration count for a routing step.
Definition SimulationContext.hpp:886
double sum_step
Sum of all routing time steps (sec)
Definition SimulationContext.hpp:864
double sum_iterations
Sum of iterations for averaging.
Definition SimulationContext.hpp:875
static constexpr int N_TIME_BINS
Number of time step histogram bins (matching legacy TIMELEVELS=5).
Definition SimulationContext.hpp:869
long n_steps
Total number of routing steps.
Definition SimulationContext.hpp:865
double avg_step() const
Definition SimulationContext.hpp:927
void init_histogram(double route_step, double min_route_step)
Definition SimulationContext.hpp:894
double max_step
Maximum routing time step used (sec)
Definition SimulationContext.hpp:863
double min_step
Minimum routing time step used (sec)
Definition SimulationContext.hpp:862
void update(double dt)
Definition SimulationContext.hpp:878
double steady_pct
Percent of time in steady state.
Definition SimulationContext.hpp:866
double step_intervals[N_TIME_BINS+1]
Histogram bin edges.
Definition SimulationContext.hpp:871
void record_step_bin(double dt)
Add a step to the histogram (call during simulation or post-process)
Definition SimulationContext.hpp:917
long step_counts[N_TIME_BINS+1]
Histogram bin counts.
Definition SimulationContext.hpp:870
double max_courant
Maximum Courant number observed.
Definition SimulationContext.hpp:876
double pct_non_converged() const
Definition SimulationContext.hpp:931
void build_histogram()
Definition SimulationContext.hpp:908
long n_non_converged
Non-convergence and iteration tracking.
Definition SimulationContext.hpp:874
double computed_avg_iterations() const
Definition SimulationContext.hpp:935
Central, reentrant simulation context.
Definition SimulationContext.hpp:274
struct openswmm::SimulationContext::MassBalance mass_balance
NameIndex aquifer_names
Definition SimulationContext.hpp:536
TransectStore transects
Definition SimulationContext.hpp:477
UserFlags user_flags
User-defined flags from [USER_FLAGS] section.
Definition SimulationContext.hpp:560
void save_state() noexcept
Snapshot current state into old-step arrays before solving.
Definition SimulationContext.hpp:1093
NameIndex subcatch_names
Subcatchment name → subcatchment index.
Definition SimulationContext.hpp:432
NameIndex node_names
Node name → node index.
Definition SimulationContext.hpp:420
InletUsageStore inlet_usages
Definition SimulationContext.hpp:482
MaxStats max_courant_crit[MAX_STATS]
Top-5 CFL time-step critical elements.
Definition SimulationContext.hpp:853
int n_nodes() const noexcept
Number of nodes.
Definition SimulationContext.hpp:1183
ExtInflowData ext_inflows
Definition SimulationContext.hpp:466
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:974
NodeData nodes
All node state and properties.
Definition SimulationContext.hpp:380
double adjust_rain[12]
Definition SimulationContext.hpp:512
MaxStats max_non_converged[MAX_STATS]
Top-5 nodes with highest non-convergence frequency.
Definition SimulationContext.hpp:857
TableData tables
All time series and rating curves.
Definition SimulationContext.hpp:410
double adjust_temp[12]
Monthly climate adjustment factors from [ADJUSTMENTS] section.
Definition SimulationContext.hpp:510
MaxStats max_mass_bal_errs[MAX_STATS]
Top-5 nodes with highest continuity errors.
Definition SimulationContext.hpp:859
int error_code
Most recent error code (0 = no error).
Definition SimulationContext.hpp:624
RDIIAssignData rdii_assigns
Definition SimulationContext.hpp:468
AquiferStore aquifers
Definition SimulationContext.hpp:535
NameIndex snowpack_names
Definition SimulationContext.hpp:534
std::vector< int > subcatch_d_store_pattern
Definition SimulationContext.hpp:521
InletStore inlets
Definition SimulationContext.hpp:481
GageData gages
All rain gage state and properties.
Definition SimulationContext.hpp:398
FilesSpec files
Secondary file references parsed from [FILES].
Definition SimulationContext.hpp:604
std::vector< ControlLogEntry > control_log
Chronological log of all control actions taken during the simulation.
Definition SimulationContext.hpp:954
DwfData dwf_inflows
Definition SimulationContext.hpp:467
NameIndex gage_names
Rain gage name → gage index.
Definition SimulationContext.hpp:438
BuildupData buildup
Definition SimulationContext.hpp:458
int n_gages() const noexcept
Number of rain gages.
Definition SimulationContext.hpp:1192
std::string inp_file_path
Path to the input .inp file (empty if not opened from a file).
Definition SimulationContext.hpp:964
NameIndex table_names
Time series / curve name → table index.
Definition SimulationContext.hpp:450
std::vector< std::string > errors
Accumulated error messages written to report file.
Definition SimulationContext.hpp:653
RDIIDecayData rdii_decay
Parsed [RDII_DECAY] data (exponential IA model)
Definition SimulationContext.hpp:470
EngineState state
Current lifecycle state of the engine.
Definition SimulationContext.hpp:281
WashoffData washoff
Definition SimulationContext.hpp:459
int warning_code
Most recent warning code (0 = no warning).
Definition SimulationContext.hpp:630
NameIndex landuse_names
Definition SimulationContext.hpp:456
int n_tables() const noexcept
Number of tables (time series + curves).
Definition SimulationContext.hpp:1199
double dt_output_remaining
Time remaining until the next output boundary (seconds).
Definition SimulationContext.hpp:362
struct openswmm::SimulationContext::RoutingStepStats routing_stats
LidControlStore lid_controls
Definition SimulationContext.hpp:537
std::vector< int > subcatch_infil_pattern
Definition SimulationContext.hpp:522
double adjust_hydcon[12]
Definition SimulationContext.hpp:513
std::vector< std::string > title_notes
Project title and notes (from [TITLE] section).
Definition SimulationContext.hpp:296
std::vector< std::string > warnings
Accumulated warning messages written to report file.
Definition SimulationContext.hpp:644
ControlRuleStore control_rules
Definition SimulationContext.hpp:483
TreatmentData treatment
Definition SimulationContext.hpp:460
bool has_subcatch_adj_patterns
True if any pattern index >= 0.
Definition SimulationContext.hpp:527
void finalize_max_stats()
Compute top-5 arrays for CFL-critical, flow turns, and non-convergence.
Definition SimulationContext.hpp:993
LinkData links
All link state and properties.
Definition SimulationContext.hpp:386
UnitHydData unit_hyds
Parsed [HYDROGRAPHS] data.
Definition SimulationContext.hpp:469
double dt_controls_remaining
Time remaining until the next control rule event (seconds).
Definition SimulationContext.hpp:370
void reset()
Fully reset the context to a CREATED state.
Definition SimulationContext.hpp:1032
int n_pollutants() const noexcept
Number of pollutants.
Definition SimulationContext.hpp:1195
LidUsageStore lid_usage
Definition SimulationContext.hpp:539
climate::ClimateState climate_state
Daily climate state — temperature, evaporation, wind, humidity.
Definition SimulationContext.hpp:319
MaxStats max_flow_turns[MAX_STATS]
Top-5 links with highest flow instability index.
Definition SimulationContext.hpp:855
void allocate_objects()
Allocate all object arrays after input parsing is complete.
Definition SimulationContext.hpp:1127
StateAccessors state_accessors
Solver-neutral accessors for reading and writing solver-internal state at hot-start save/load time.
Definition SimulationContext.hpp:614
int n_subcatches() const noexcept
Number of subcatchments.
Definition SimulationContext.hpp:1189
int n_links() const noexcept
Number of links.
Definition SimulationContext.hpp:1186
std::vector< double > base_ds_perv
Definition SimulationContext.hpp:526
NameIndex link_names
Link name → link index.
Definition SimulationContext.hpp:426
std::vector< PluginSpec > plugin_specs
Plugin library specs parsed from [PLUGINS].
Definition SimulationContext.hpp:594
StreetStore streets
Definition SimulationContext.hpp:480
double current_time
Current simulation time in SECONDS from start_date.
Definition SimulationContext.hpp:343
ForcingData forcing
Per-element runtime forcing state (lateral inflows, head boundaries, rainfall, evap,...
Definition SimulationContext.hpp:583
int n_landuses() const noexcept
Definition SimulationContext.hpp:1196
std::vector< double > base_n_perv
Base values for pattern-adjusted parameters (populated at init).
Definition SimulationContext.hpp:525
double adjust_evap[12]
Definition SimulationContext.hpp:511
std::string error_message
Human-readable message for the last error/warning.
Definition SimulationContext.hpp:635
SpatialFrame spatial
Coordinate reference system and georeferenced coordinates.
Definition SimulationContext.hpp:549
std::vector< transect::TransectData > transect_tables
Built transect geometry tables (indexed same as transects).
Definition SimulationContext.hpp:479
SnowpackStore snowpacks
Definition SimulationContext.hpp:533
std::vector< int > subcatch_n_perv_pattern
Per-subcatchment pattern indices for N-PERV, DSTORE, INFIL adjustments.
Definition SimulationContext.hpp:520
PatternData patterns
Definition SimulationContext.hpp:471
static constexpr int MAX_STATS
Definition SimulationContext.hpp:850
NameIndex lid_names
Definition SimulationContext.hpp:538
NameIndex pollutant_names
Pollutant name → pollutant index.
Definition SimulationContext.hpp:444
void shrink_all_to_fit()
Release excess vector capacity on all owned SoA data stores.
Definition SimulationContext.hpp:1165
void reset_state() noexcept
Reset all state variables to initial conditions (cold start).
Definition SimulationContext.hpp:1105
std::vector< Event > events
Definition SimulationContext.hpp:498
SubcatchData subcatches
All subcatchment state and properties.
Definition SimulationContext.hpp:392
LanduseData landuses
Definition SimulationContext.hpp:457
SimulationOptions options
Parsed simulation options (from [OPTIONS] section).
Definition SimulationContext.hpp:306
PollutantData pollutants
Pollutant definitions and per-object quality state.
Definition SimulationContext.hpp:404
double current_date
Absolute current date/time (decimal days, OADate (days since 12/30/1899)).
Definition SimulationContext.hpp:352
All SWMM simulation options parsed from [OPTIONS] section.
Definition SimulationOptions.hpp:122
double start_date
Simulation start date/time (decimal days, OADate (days since 12/30/1899)).
Definition SimulationOptions.hpp:129
double report_step
Reporting output interval in seconds.
Definition SimulationOptions.hpp:150
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:145
void shrink_to_fit()
Release excess vector capacity accumulated during parsing.
Definition SpatialFrame.hpp:224
std::vector< double > subcatch_x
Subcatchment centroid X.
Definition SpatialFrame.hpp:155
std::vector< double > node_x
Node X coordinates (easting or longitude).
Definition SpatialFrame.hpp:135
std::vector< double > gage_x
Gage X coordinates.
Definition SpatialFrame.hpp:185
std::vector< double > gage_y
Gage Y coordinates.
Definition SpatialFrame.hpp:188
std::vector< std::vector< double > > subcatch_polygon_y
Per-subcatchment polygon Y vertices.
Definition SpatialFrame.hpp:178
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:165
std::vector< double > link_y
Link centroid Y coordinates.
Definition SpatialFrame.hpp:148
std::vector< std::vector< double > > subcatch_polygon_x
Per-subcatchment polygon X vertices.
Definition SpatialFrame.hpp:175
std::vector< double > node_y
Node Y coordinates (northing or latitude).
Definition SpatialFrame.hpp:138
std::vector< double > subcatch_y
Subcatchment centroid Y.
Definition SpatialFrame.hpp:158
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:168
Solver-neutral hooks for reading and writing solver-internal state (infiltration, groundwater) at hot...
Definition SimulationContext.hpp:236
std::function< bool(int subcatch_index, int model, const double *infil)> set_infil_state
Definition SimulationContext.hpp:243
std::function< bool(int subcatch_index, int &out_model, double *out_infil)> get_infil_state
Definition SimulationContext.hpp:239
bool can_write() const noexcept
True iff the write-side accessors are wired.
Definition SimulationContext.hpp:257
std::function< bool(int subcatch_index, double theta, double lower_depth)> set_gw_state
Apply groundwater zone state to a subcatchment.
Definition SimulationContext.hpp:249
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:246
bool can_read() const noexcept
True iff the read-side accessors are wired.
Definition SimulationContext.hpp:252
Definition InfraData.hpp:54
Structure-of-Arrays storage for all subcatchments.
Definition SubcatchData.hpp:41
void reset_state() noexcept
Definition SubcatchData.hpp:817
void resize_quality(int n_pollutants)
Resize per-subcatch quality arrays after pollutant count is known.
Definition SubcatchData.hpp:712
void resize(int n)
Definition SubcatchData.hpp:501
void shrink_to_fit()
Release excess vector capacity accumulated during parsing.
Definition SubcatchData.hpp:735
void save_state() noexcept
Definition SubcatchData.hpp:811
SoA collection of all time series and curves in the model.
Definition TableData.hpp:637
void reset_cursors() noexcept
Reset all cursors (call before re-running a simulation).
Definition TableData.hpp:657
Definition InfraData.hpp:26
Definition QualityData.hpp:133
void shrink_to_fit()
Definition QualityData.hpp:163
Definition InflowData.hpp:143
Definition QualityData.hpp:98
void shrink_to_fit()
Definition QualityData.hpp:120
Definition Climate.hpp:71