OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
SimulationSnapshot.hpp
Go to the documentation of this file.
1
26#ifndef OPENSWMM_SIMULATION_SNAPSHOT_HPP
27#define OPENSWMM_SIMULATION_SNAPSHOT_HPP
28
29#include <vector>
30#include <string>
31#include <cstdint>
32
33namespace openswmm {
34
40 std::vector<double> depth;
41 std::vector<double> head;
42 std::vector<double> volume;
43 std::vector<double> lateral_inflow;
44 std::vector<double> total_inflow;
45 std::vector<double> overflow;
46};
47
53 std::vector<double> flow;
54 std::vector<double> depth;
55 std::vector<double> velocity;
56 std::vector<double> volume;
57 std::vector<double> capacity;
58};
59
65 std::vector<double> rainfall;
66 std::vector<double> snow_depth;
67 std::vector<double> evap;
68 std::vector<double> infil;
69 std::vector<double> runoff;
70 std::vector<double> gw_flow;
71 std::vector<double> gw_elev;
72 std::vector<double> soil_moist;
73};
74
80 std::vector<double> rainfall;
81};
82
93 // -----------------------------------------------------------------------
94 // Timing
95 // -----------------------------------------------------------------------
96
98 double sim_time = 0.0;
99
101 std::int64_t wall_time_unix = 0;
102
105
106 // -----------------------------------------------------------------------
107 // Object counts
108 // -----------------------------------------------------------------------
109
110 int node_count = 0;
111 int link_count = 0;
113 int gage_count = 0;
114 int pollut_count = 0;
115
116 // -----------------------------------------------------------------------
117 // State arrays (parallel to the engine's SoA arrays)
118 // -----------------------------------------------------------------------
119
124
125 // -----------------------------------------------------------------------
126 // System-level results (for binary output file)
127 // -----------------------------------------------------------------------
128
129 double sys_temperature = 0.0;
130 double sys_rainfall = 0.0;
131 double sys_snow_depth = 0.0;
132 double sys_evap = 0.0;
133 double sys_infil = 0.0;
134 double sys_runoff = 0.0;
135 double sys_dw_inflow = 0.0;
136 double sys_gw_inflow = 0.0;
137 double sys_ii_inflow = 0.0;
138 double sys_ext_inflow = 0.0;
139 double sys_flooding = 0.0;
140 double sys_outflow = 0.0;
141 double sys_storage = 0.0;
142 double sys_pet = 0.0;
143
144 // -----------------------------------------------------------------------
145 // Pollutant concentrations (optional; populated only if quality routing active)
146 // -----------------------------------------------------------------------
147
153 std::vector<double> node_quality;
154
159 std::vector<double> link_quality;
160
164 std::vector<double> subcatch_quality;
165
166 // -----------------------------------------------------------------------
167 // String tables (for plugins that need to label their output)
168 // -----------------------------------------------------------------------
169
171 const std::vector<std::string>* node_ids = nullptr;
172
174 const std::vector<std::string>* link_ids = nullptr;
175
177 const std::vector<std::string>* subcatch_ids = nullptr;
178
180 const std::vector<std::string>* gage_ids = nullptr;
181
183 const std::vector<std::string>* pollut_names = nullptr;
184
185 // -----------------------------------------------------------------------
186 // Unit information
187 // -----------------------------------------------------------------------
188
190 const char* flow_units = nullptr;
191
193 const char* length_units = nullptr;
194
197
198 // -----------------------------------------------------------------------
199 // 2D surface routing state (optional; populated only when the engine was
200 // built with OPENSWMM_BUILD_2D and the input file contains a 2D mesh)
201 //
202 // Layout: per-triangle vectors are sized `surface_tri_count`; per-vertex
203 // vectors are sized `surface_vert_count`. `surface_edge_flux` is flat
204 // [tri * 3 + edge] of size `surface_tri_count * 3`.
205 //
206 // Fields are deep-copied from `SurfaceRouter2D::state()` on the main
207 // simulation thread; consumers (Default2DOutputPlugin and any third-party
208 // 2D output plugins) read them through the IO-thread snapshot reference
209 // without further synchronization.
210 //
211 // Vectors are empty when 2D is inactive (either OPENSWMM_BUILD_2D=OFF or
212 // the input file contained no [2D_VERTICES] section). Plugins must check
213 // `surface_tri_count == 0` to skip 2D-specific work in that case.
214 // -----------------------------------------------------------------------
215
218
219 std::vector<double> surface_depth;
220 std::vector<double> surface_head;
221 std::vector<double> surface_grad_hx;
222 std::vector<double> surface_grad_hy;
223 std::vector<double> surface_grad_hx_lim;
224 std::vector<double> surface_grad_hy_lim;
225 std::vector<double> surface_rainfall;
226 std::vector<double> surface_coupling_flux;
227 std::vector<double> surface_net_source;
228 std::vector<double> surface_edge_flux;
229 std::vector<double> surface_vert_head;
230};
231
232} /* namespace openswmm */
233
234#endif /* OPENSWMM_SIMULATION_SNAPSHOT_HPP */
Definition NodeCoupling.cpp:15
Snapshot of rain gage state at an output time step.
Definition SimulationSnapshot.hpp:79
std::vector< double > rainfall
Current rainfall rate [project rate units].
Definition SimulationSnapshot.hpp:80
Snapshot of node state at an output time step.
Definition SimulationSnapshot.hpp:39
std::vector< double > volume
Stored volume [project volume units].
Definition SimulationSnapshot.hpp:42
std::vector< double > lateral_inflow
Lateral inflow [project flow units].
Definition SimulationSnapshot.hpp:43
std::vector< double > total_inflow
Total inflow [project flow units].
Definition SimulationSnapshot.hpp:44
std::vector< double > head
Hydraulic head [project length units].
Definition SimulationSnapshot.hpp:41
std::vector< double > overflow
Overflow / surcharge [project flow units].
Definition SimulationSnapshot.hpp:45
std::vector< double > depth
Water depth [project length units].
Definition SimulationSnapshot.hpp:40
Complete simulation state snapshot at one output time step.
Definition SimulationSnapshot.hpp:92
std::vector< double > subcatch_quality
Subcatchment pollutant loadings.
Definition SimulationSnapshot.hpp:164
const std::vector< std::string > * gage_ids
Gage IDs in index order.
Definition SimulationSnapshot.hpp:180
std::vector< double > surface_edge_flux
Normal flux through each edge, flat [tri*3+edge].
Definition SimulationSnapshot.hpp:228
SubcatchSnapshot subcatch
Subcatchment state.
Definition SimulationSnapshot.hpp:122
LinkSnapshot links
Link state.
Definition SimulationSnapshot.hpp:121
GageSnapshot gages
Gage state.
Definition SimulationSnapshot.hpp:123
int surface_vert_count
Number of vertices (nodes)
Definition SimulationSnapshot.hpp:217
const char * flow_units
Flow unit string (e.g., "CFS", "LPS").
Definition SimulationSnapshot.hpp:190
double sys_gw_inflow
Total groundwater inflow.
Definition SimulationSnapshot.hpp:136
double sys_ext_inflow
Total external inflow.
Definition SimulationSnapshot.hpp:138
std::vector< double > surface_grad_hy
Unlimited head gradient ∂h/∂y, per face.
Definition SimulationSnapshot.hpp:222
int link_count
Number of links.
Definition SimulationSnapshot.hpp:111
std::vector< double > surface_rainfall
Rainfall intensity (m/s), per face.
Definition SimulationSnapshot.hpp:225
double sys_pet
Potential evapotranspiration.
Definition SimulationSnapshot.hpp:142
double sys_outflow
Total outflow.
Definition SimulationSnapshot.hpp:140
int flow_units_code
Flow units code (FlowUnits enum value: 0=CFS, 3=CMS, etc.).
Definition SimulationSnapshot.hpp:196
double sim_time
Simulation date/time (SWMM DateTime: days since 12/31/1899).
Definition SimulationSnapshot.hpp:98
std::vector< double > surface_coupling_flux
Coupling flux to SWMM node (m/s, + = into 2D), per face.
Definition SimulationSnapshot.hpp:226
int gage_count
Number of rain gages.
Definition SimulationSnapshot.hpp:113
std::vector< double > surface_grad_hy_lim
Slope-limited head gradient ∂h/∂y, per face.
Definition SimulationSnapshot.hpp:224
std::vector< double > surface_net_source
Net source/sink (m/s), per face.
Definition SimulationSnapshot.hpp:227
double sys_storage
Total storage volume.
Definition SimulationSnapshot.hpp:141
std::vector< double > node_quality
Node pollutant concentrations.
Definition SimulationSnapshot.hpp:153
int subcatch_count
Number of subcatchments.
Definition SimulationSnapshot.hpp:112
int pollut_count
Number of pollutants.
Definition SimulationSnapshot.hpp:114
double sys_runoff
Total runoff flow.
Definition SimulationSnapshot.hpp:134
int output_step_index
Sequential output step index (0-based).
Definition SimulationSnapshot.hpp:104
int node_count
Number of nodes.
Definition SimulationSnapshot.hpp:110
std::vector< double > surface_depth
Overland flow depth ψ_o (m), per face.
Definition SimulationSnapshot.hpp:219
const std::vector< std::string > * link_ids
Link IDs in index order.
Definition SimulationSnapshot.hpp:174
std::int64_t wall_time_unix
Wall-clock Unix timestamp when snapshot was taken.
Definition SimulationSnapshot.hpp:101
double sys_evap
Total evaporation loss.
Definition SimulationSnapshot.hpp:132
const std::vector< std::string > * node_ids
Node IDs in index order. Pointer to engine-managed strings.
Definition SimulationSnapshot.hpp:171
double sys_rainfall
Average rainfall over all gages.
Definition SimulationSnapshot.hpp:130
double sys_ii_inflow
Total RDII inflow.
Definition SimulationSnapshot.hpp:137
double sys_infil
Total infiltration loss.
Definition SimulationSnapshot.hpp:133
std::vector< double > surface_grad_hx
Unlimited head gradient ∂h/∂x, per face.
Definition SimulationSnapshot.hpp:221
const char * length_units
Length unit string (e.g., "FEET", "METERS").
Definition SimulationSnapshot.hpp:193
const std::vector< std::string > * pollut_names
Pollutant names in index order.
Definition SimulationSnapshot.hpp:183
std::vector< double > surface_grad_hx_lim
Slope-limited head gradient ∂h/∂x, per face.
Definition SimulationSnapshot.hpp:223
double sys_snow_depth
Total snow depth.
Definition SimulationSnapshot.hpp:131
std::vector< double > surface_head
Total head h_o = z_s + ψ_o (m), per face.
Definition SimulationSnapshot.hpp:220
double sys_flooding
Total flooding.
Definition SimulationSnapshot.hpp:139
const std::vector< std::string > * subcatch_ids
Subcatchment IDs in index order.
Definition SimulationSnapshot.hpp:177
int surface_tri_count
Number of triangles (faces)
Definition SimulationSnapshot.hpp:216
double sys_temperature
Air temperature.
Definition SimulationSnapshot.hpp:129
NodeSnapshot nodes
Node state.
Definition SimulationSnapshot.hpp:120
std::vector< double > link_quality
Link pollutant concentrations.
Definition SimulationSnapshot.hpp:159
std::vector< double > surface_vert_head
Reconstructed head at vertices (m)
Definition SimulationSnapshot.hpp:229
double sys_dw_inflow
Total dry weather inflow.
Definition SimulationSnapshot.hpp:135
Snapshot of subcatchment state at an output time step.
Definition SimulationSnapshot.hpp:64
std::vector< double > soil_moist
Soil moisture [-].
Definition SimulationSnapshot.hpp:72
std::vector< double > rainfall
Rainfall rate [internal rate units].
Definition SimulationSnapshot.hpp:65
std::vector< double > infil
Infiltration [internal rate units].
Definition SimulationSnapshot.hpp:68
std::vector< double > runoff
Surface runoff [internal flow units].
Definition SimulationSnapshot.hpp:69
std::vector< double > gw_flow
Groundwater outflow [internal flow units].
Definition SimulationSnapshot.hpp:70
std::vector< double > evap
Evaporation [internal rate units].
Definition SimulationSnapshot.hpp:67
std::vector< double > gw_elev
Groundwater elevation [internal length units].
Definition SimulationSnapshot.hpp:71
std::vector< double > snow_depth
Snow depth [internal length units].
Definition SimulationSnapshot.hpp:66