OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
SimulationSnapshot.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
42
43#ifndef OPENSWMM_SIMULATION_SNAPSHOT_HPP
44#define OPENSWMM_SIMULATION_SNAPSHOT_HPP
45
46#include "SnowResults.hpp"
47#include <vector>
48#include <string>
49#include <cstdint>
50
51namespace openswmm {
52
53// NOTE ON UNITS: the 1D node / link / subcatchment / gage / system fields below
54// are delivered in PROJECT DISPLAY units (e.g. m, m³, CMS for an SI project;
55// ft, ft³, CFS for US). The engine applies a single conversion boundary
56// (convertSnapshotToDisplay) when building the snapshot, so output plugins
57// write values directly without re-applying Ucf/Qcf. Dimensionless fields
58// (capacity, soil moisture, pollutant concentrations) are unconverted. The 2D
59// surface_* arrays on SimulationSnapshot are the exception: they are SI-native
60// solver outputs and are NOT touched by the boundary.
61
67 std::vector<double> depth;
68 std::vector<double> head;
69 std::vector<double> volume;
70 std::vector<double> lateral_inflow;
71 std::vector<double> total_inflow;
72 std::vector<double> overflow;
73};
74
80 std::vector<double> flow;
81 std::vector<double> depth;
82 std::vector<double> velocity;
83 std::vector<double> volume;
84 std::vector<double> capacity;
85};
86
92 // Optional UEB process columns, in SWMM_OUT_SUBCATCH_SNOW_* order.
93 // SI regardless of project display units; missing values remain NaN.
94 static constexpr int snow_process_count = 10;
95 std::vector<double> snow_process; // [subcatch * snow_process_count + field]
96 std::vector<double> rainfall;
97 std::vector<double> snow_depth;
98 std::vector<double> evap;
99 std::vector<double> infil;
100 std::vector<double> runoff;
101 std::vector<double> gw_flow;
102 std::vector<double> gw_elev;
103 std::vector<double> soil_moist;
104};
105
111 std::vector<double> rainfall;
112};
113
124 // -----------------------------------------------------------------------
125 // Timing
126 // -----------------------------------------------------------------------
127
129 double sim_time = 0.0;
130
132 std::int64_t wall_time_unix = 0;
133
136
137 // -----------------------------------------------------------------------
138 // Object counts
139 // -----------------------------------------------------------------------
140
141 int node_count = 0;
142 int link_count = 0;
144 int gage_count = 0;
145 int pollut_count = 0;
146
147 // -----------------------------------------------------------------------
148 // State arrays (parallel to the engine's SoA arrays)
149 // -----------------------------------------------------------------------
150
155
156 // -----------------------------------------------------------------------
157 // System-level results (for binary output file)
158 // -----------------------------------------------------------------------
159
160 double sys_temperature = 0.0;
161 double sys_rainfall = 0.0;
162 double sys_snow_depth = 0.0;
163 double sys_evap = 0.0;
164 double sys_infil = 0.0;
165 double sys_runoff = 0.0;
166 double sys_dw_inflow = 0.0;
167 double sys_gw_inflow = 0.0;
168 double sys_ii_inflow = 0.0;
169 double sys_ext_inflow = 0.0;
170 double sys_flooding = 0.0;
171 double sys_outflow = 0.0;
172 double sys_storage = 0.0;
173 double sys_pet = 0.0;
174
188 bool has_subcatchments = true;
189
190 // -----------------------------------------------------------------------
191 // Pollutant concentrations (optional; populated only if quality routing active)
192 // -----------------------------------------------------------------------
193
199 std::vector<double> node_quality;
200
205 std::vector<double> link_quality;
206
210 std::vector<double> subcatch_quality;
211
212 // -----------------------------------------------------------------------
213 // String tables (for plugins that need to label their output)
214 // -----------------------------------------------------------------------
215
217 const std::vector<std::string>* node_ids = nullptr;
218
220 const std::vector<std::string>* link_ids = nullptr;
221
223 const std::vector<std::string>* subcatch_ids = nullptr;
224
226 const std::vector<std::string>* gage_ids = nullptr;
227
229 const std::vector<std::string>* pollut_names = nullptr;
230
231 // -----------------------------------------------------------------------
232 // Unit information
233 // -----------------------------------------------------------------------
234
236 const char* flow_units = nullptr;
237
239 const char* length_units = nullptr;
240
243
244 // -----------------------------------------------------------------------
245 // 2D surface routing state (optional; populated only when the engine was
246 // built with OPENSWMM_BUILD_2D and the input file contains a 2D mesh)
247 //
248 // Layout: per-cell vectors are sized `surface_tri_count` (a "tri" is any
249 // cell — triangle or quadrilateral, triangles first); per-vertex vectors
250 // are sized `surface_vert_count`. `surface_edge_flux` is flat
251 // [cell * surface_edge_stride + edge] of size
252 // `surface_tri_count * surface_edge_stride`, where the stride is 3 for an
253 // all-triangle mesh (byte-compatible with pre-quad consumers) and 4 once
254 // any quad exists; padding slots of a triangle row are 0.
255 //
256 // Fields are deep-copied from `SurfaceRouter2D::state()` on the main
257 // simulation thread; consumers (Default2DOutputPlugin and any third-party
258 // 2D output plugins) read them through the IO-thread snapshot reference
259 // without further synchronization.
260 //
261 // Vectors are empty when 2D is inactive (either OPENSWMM_BUILD_2D=OFF or
262 // the input file contained no [2D_VERTICES] section). Plugins must check
263 // `surface_tri_count == 0` to skip 2D-specific work in that case.
264 // -----------------------------------------------------------------------
265
272 std::vector<uint8_t> surface_cell_nv;
273
274 std::vector<double> surface_depth;
275 std::vector<double> surface_head;
276 std::vector<double> surface_grad_hx;
277 std::vector<double> surface_grad_hy;
278 std::vector<double> surface_grad_hx_lim;
279 std::vector<double> surface_grad_hy_lim;
281 std::vector<double> surface_rainfall;
282 std::vector<double>
284 std::vector<double> surface_net_source;
285 std::vector<double>
287 std::vector<double> surface_infil_cum;
288 std::vector<double> surface_rain_cum;
298 std::vector<double> surface_species_conc;
304 const std::vector<std::string>* surface_species_names = nullptr;
309 const std::vector<std::string>* surface_species_units = nullptr;
318 std::vector<double> surface_buildup;
326 bool gw2d_active = false;
327 std::vector<double> gw2d_table_elev;
328 std::vector<double> gw2d_hg;
329 std::vector<double>
331 std::vector<double> gw2d_recharge;
332 std::vector<double> gw2d_lateral;
333 std::vector<double>
335 std::vector<double> gw2d_deep;
336 std::vector<double> gw2d_et;
337 std::vector<double> gw2d_dunne;
338 std::vector<double> gw2d_infil_in;
339 std::vector<double> gw2d_link_seepage;
344 std::vector<double> gw2d_sat_conc;
345 std::vector<double> gw2d_unsat_conc;
348 std::vector<double> gw2d_species_ledger;
350 const std::vector<std::string>* gw2d_species_names = nullptr;
354 std::vector<double> gw2d_bed_elev;
355 std::vector<int> gw2d_closure;
359 std::vector<double> gw2d_theta_sigma;
365 std::vector<double> gw2d_ledger;
369 std::vector<double> gw2d_bed_exchange_cum;
370 const std::vector<std::string>* gw2d_node_names = nullptr;
371
372 // P9 thermal result contract. Values are copied from accepted runtime
373 // owners on the simulation thread; energy terms are cumulative signed J.
374 // Missing cells/layers are NaN so a report never fabricates a temperature.
375 bool thermal2d_active = false;
379 std::vector<double> thermal2d_water_temperature;
380 std::vector<double> thermal2d_bed_temperature;
381 std::vector<double> thermal2d_bed_energy;
382 std::vector<double> thermal2d_bed_capacity;
387 std::vector<std::string> thermal2d_bed_species_names;
388 std::vector<std::string> thermal2d_bed_species_units;
389 std::vector<double> thermal2d_bed_pore_volume;
395 std::vector<double> thermal2d_bed_age_generation;
398 std::vector<double> thermal2d_surface_budget;
399 std::vector<double> thermal2d_evaporation_m3;
400 std::vector<double> thermal2d_ground_temperature;
401 std::vector<double> thermal2d_ground_energy;
402 std::vector<double> thermal2d_ground_capacity;
406 std::vector<double> thermal2d_ground_layer_energy;
410 std::vector<double> thermal2d_ground_budget;
420 std::vector<std::string> thermal2d_lid_layer_node_id;
421 std::vector<double> thermal2d_lid_layer_top_m;
422 std::vector<double> thermal2d_lid_layer_bottom_m;
423 std::vector<double> thermal2d_lid_layer_area_m2;
425 std::vector<double> thermal2d_lid_layer_energy;
426 std::vector<double> thermal2d_lid_layer_capacity;
428
429 std::vector<double>
431 std::vector<double>
433 std::vector<double>
435 std::vector<double> surface_face_vx;
436 std::vector<double> surface_face_vy;
437 std::vector<double> surface_continuity_err;
438
439 // Cumulative rendering envelopes (SI-native, monotone over the run), per face.
440 // A snapshot of these at any time is the envelope up to that time; the 2D
441 // output plugin overwrites the fixed [nFace] envelope datasets in place.
442 std::vector<double> surface_stat_max_depth;
443 std::vector<double> surface_stat_max_velocity;
444 std::vector<double> surface_stat_max_cont_err;
445 std::vector<double> gw2d_infil_capacity;
446 std::vector<double>
448 std::vector<double> gw2d_infil_refresh;
449 std::vector<double> gw2d_infil_pending;
450 std::vector<double>
452 std::vector<double> gw2d_reject_cum;
453 std::vector<double> gw2d_dunne_cum;
454 std::vector<double> gw2d_et_pending;
455 std::vector<double> gw2d_et_potential_cum;
456 std::vector<double> gw2d_et_surface_cum;
457 std::vector<double> gw2d_et_soil_cum;
458 std::vector<double> gw2d_et_unused_cum;
459 std::vector<double> gw2d_et_surface;
460 std::vector<double> gw2d_et_potential;
461 std::vector<double> gw2d_et_stress;
462 std::vector<double> gw2d_et_refresh;
463
464 // Appended for plugin-ABI compatibility: initial finite local-bed stores.
466 std::vector<double> thermal2d_bed_initial_energy;
470 // Additive groundwater completion output, absent for compatibility BULK profiles.
472 std::vector<double> gw2d_layer_mass, gw2d_layer_concentration; // [species,layer,face]
473 std::vector<double> gw2d_boundary_water; // [boundary,4]: requested in/out, accepted in/out
474 std::vector<double>
475 gw2d_boundary_species; // [species,boundary,4]: advective in/out, imposed in/out
476 std::vector<int> gw2d_boundary_cell_edge; // [boundary,2], zero-based
477 std::vector<double> gw2d_transport_ledger; // [species,20], append-only public SPL terms
478};
479
480} /* namespace openswmm */
481
482#endif /* OPENSWMM_SIMULATION_SNAPSHOT_HPP */
Shared snow result catalogue for snapshots and live clients.
Definition ExchangeLaw.hpp:60
std::array< std::vector< double >, meshSnowFields.size()> MeshSnowSnapshot
Definition SnowResults.hpp:51
Snapshot of rain gage state at an output time step.
Definition SimulationSnapshot.hpp:110
std::vector< double > rainfall
Current rainfall rate [project rate units].
Definition SimulationSnapshot.hpp:111
Snapshot of node state at an output time step.
Definition SimulationSnapshot.hpp:66
std::vector< double > volume
Stored volume [display volume units].
Definition SimulationSnapshot.hpp:69
std::vector< double > lateral_inflow
Lateral inflow [display flow units].
Definition SimulationSnapshot.hpp:70
std::vector< double > total_inflow
Total inflow [display flow units].
Definition SimulationSnapshot.hpp:71
std::vector< double > head
Hydraulic head [display length units].
Definition SimulationSnapshot.hpp:68
std::vector< double > overflow
Overflow / surcharge [display flow units].
Definition SimulationSnapshot.hpp:72
std::vector< double > depth
Water depth [display length units].
Definition SimulationSnapshot.hpp:67
Complete simulation state snapshot at one output time step.
Definition SimulationSnapshot.hpp:123
std::vector< double > subcatch_quality
Subcatchment pollutant loadings.
Definition SimulationSnapshot.hpp:210
std::vector< double > gw2d_infil_capacity
Aquifer top-interface receiving capacity (m s-1)
Definition SimulationSnapshot.hpp:445
const std::vector< std::string > * gage_ids
Gage IDs in index order.
Definition SimulationSnapshot.hpp:226
std::vector< double > surface_edge_flux
Normal integrated edge flux m3/s, [cell*surface_edge_stride+edge].
Definition SimulationSnapshot.hpp:430
SubcatchSnapshot subcatch
Subcatchment state.
Definition SimulationSnapshot.hpp:153
std::vector< double > surface_stat_max_depth
Max overland depth ψ_o (m), per face.
Definition SimulationSnapshot.hpp:442
LinkSnapshot links
Link state.
Definition SimulationSnapshot.hpp:152
int gw2d_m_layers
Definition SimulationSnapshot.hpp:360
std::vector< double > thermal2d_ground_layer_capacity
Definition SimulationSnapshot.hpp:407
std::vector< int > thermal2d_lid_layer_authored_index
Definition SimulationSnapshot.hpp:419
GageSnapshot gages
Gage state.
Definition SimulationSnapshot.hpp:154
int gw2d_transport_layers
Definition SimulationSnapshot.hpp:471
int surface_vert_count
Number of vertices (nodes)
Definition SimulationSnapshot.hpp:267
std::vector< std::string > thermal2d_bed_species_names
Definition SimulationSnapshot.hpp:387
std::vector< double > thermal2d_lid_layer_area_m2
Definition SimulationSnapshot.hpp:423
std::vector< double > thermal2d_bed_capacity
Definition SimulationSnapshot.hpp:382
std::vector< double > gw2d_et_potential
Definition SimulationSnapshot.hpp:460
std::vector< double > thermal2d_bed_temperature
degC, face
Definition SimulationSnapshot.hpp:380
std::vector< int > gw2d_boundary_cell_edge
Definition SimulationSnapshot.hpp:476
std::vector< double > thermal2d_bed_species_exchange
Definition SimulationSnapshot.hpp:393
std::vector< double > gw2d_et
subsurface ET (m/s, ≥ 0 out)
Definition SimulationSnapshot.hpp:336
std::vector< double > gw2d_dunne
saturation excess returned to the surface (m³/s)
Definition SimulationSnapshot.hpp:337
std::vector< double > gw2d_infil_pending
Reserved surface water pending aquifer firing (m3)
Definition SimulationSnapshot.hpp:449
MeshSnowSnapshot surface_snow
Accepted snow state/ledgers, SI; own completed clock.
Definition SimulationSnapshot.hpp:280
std::vector< double > thermal2d_water_temperature
degC, face
Definition SimulationSnapshot.hpp:379
const char * flow_units
Flow unit string (e.g., "CFS", "LPS").
Definition SimulationSnapshot.hpp:236
std::vector< double > gw2d_bed_elev
Definition SimulationSnapshot.hpp:354
std::vector< std::string > thermal2d_bed_species_units
Definition SimulationSnapshot.hpp:388
double sys_gw_inflow
Total groundwater inflow.
Definition SimulationSnapshot.hpp:167
std::vector< double > gw2d_hg
saturated thickness (m)
Definition SimulationSnapshot.hpp:328
std::vector< double > thermal2d_bed_initial_energy
Initial local-storage bed sensible energy, constant [face] over time.
Definition SimulationSnapshot.hpp:466
std::vector< double > gw2d_et_surface
Definition SimulationSnapshot.hpp:459
std::vector< double > gw2d_et_pending
Definition SimulationSnapshot.hpp:454
std::vector< double > gw2d_dunne_cum
Cumulative physical saturation excess (m3)
Definition SimulationSnapshot.hpp:453
std::vector< double > gw2d_sat_conc
Definition SimulationSnapshot.hpp:344
std::vector< double > thermal2d_ground_energy
J, face.
Definition SimulationSnapshot.hpp:401
int surface_species_count
Definition SimulationSnapshot.hpp:299
double sys_ext_inflow
Total external inflow.
Definition SimulationSnapshot.hpp:169
std::vector< double > surface_grad_hy
Unlimited head gradient ∂h/∂y, per face.
Definition SimulationSnapshot.hpp:277
std::vector< double > surface_buildup
S7: buildup on the cells' land-use surfaces, per surface species (the pollutant and MSX rows only — t...
Definition SimulationSnapshot.hpp:318
std::vector< double > thermal2d_lid_layer_top_m
Definition SimulationSnapshot.hpp:421
std::vector< double > thermal2d_bed_species_initial_amount
Definition SimulationSnapshot.hpp:469
int link_count
Number of links.
Definition SimulationSnapshot.hpp:142
std::vector< double > gw2d_et_potential_cum
Definition SimulationSnapshot.hpp:455
std::vector< double > gw2d_ledger
Definition SimulationSnapshot.hpp:365
std::vector< double > surface_rainfall
Rainfall intensity (m/s), per face.
Definition SimulationSnapshot.hpp:281
const std::vector< std::string > * gw2d_node_names
Definition SimulationSnapshot.hpp:370
double sys_pet
Potential evapotranspiration.
Definition SimulationSnapshot.hpp:173
double sys_outflow
Total outflow.
Definition SimulationSnapshot.hpp:171
std::vector< double > gw2d_infil_refresh
Capacity refresh time since simulation start (s)
Definition SimulationSnapshot.hpp:448
std::vector< double > surface_face_vy
Cell-centred velocity Y (m/s), per face.
Definition SimulationSnapshot.hpp:436
int surface_buildup_count
Definition SimulationSnapshot.hpp:319
int flow_units_code
Flow units code (FlowUnits enum value: 0=CFS, 3=CMS, etc.).
Definition SimulationSnapshot.hpp:242
double sim_time
Simulation date/time (SWMM DateTime: days since 12/31/1899).
Definition SimulationSnapshot.hpp:129
std::vector< double > surface_coupling_flux
Coupling flux to SWMM node (m/s, + = into 2D), per face.
Definition SimulationSnapshot.hpp:283
std::vector< double > gw2d_layer_mass
Definition SimulationSnapshot.hpp:472
int gage_count
Number of rain gages.
Definition SimulationSnapshot.hpp:144
int thermal2d_surface_budget_terms
Definition SimulationSnapshot.hpp:377
std::vector< double > surface_vert_depth
SIGNED vertex depth η_v − z_v (m) — wet-masked, wetted-contact-gated render reconstruction; > 0 where...
Definition SimulationSnapshot.hpp:434
std::vector< double > gw2d_theta_sigma
Definition SimulationSnapshot.hpp:359
std::vector< double > surface_infil_rate
Held infiltration loss rate (m/s, ≥ 0), per face — all zero when no [2D_INFILTRATION*] model resolved...
Definition SimulationSnapshot.hpp:286
std::vector< double > gw2d_link_seepage
Definition SimulationSnapshot.hpp:339
std::vector< double > surface_grad_hy_lim
Slope-limited head gradient ∂h/∂y, per face.
Definition SimulationSnapshot.hpp:279
std::vector< double > surface_infil_cum
Cumulative infiltrated depth (m), per face.
Definition SimulationSnapshot.hpp:287
std::vector< double > gw2d_hu
closure A bulk unsaturated storage (m of water); 0 under closure B
Definition SimulationSnapshot.hpp:330
std::vector< double > surface_species_conc
2D surface species concentration (overland transport S1/S2).
Definition SimulationSnapshot.hpp:298
std::vector< double > surface_continuity_err
Per-cell continuity residual (m³/s), per face.
Definition SimulationSnapshot.hpp:437
std::vector< double > surface_net_source
Net source/sink (m/s), per face.
Definition SimulationSnapshot.hpp:284
std::vector< double > gw2d_reject_cum
Cumulative rejected top-interface delivery (m3)
Definition SimulationSnapshot.hpp:452
std::vector< int > thermal2d_lid_layer_node_index
Definition SimulationSnapshot.hpp:415
double sys_storage
Total storage volume.
Definition SimulationSnapshot.hpp:172
std::vector< double > gw2d_et_surface_cum
Definition SimulationSnapshot.hpp:456
std::vector< double > gw2d_recharge
q0 (m/s), + down, − capillary rise
Definition SimulationSnapshot.hpp:331
std::vector< double > node_quality
Node pollutant concentrations.
Definition SimulationSnapshot.hpp:199
std::vector< double > gw2d_boundary_water
Definition SimulationSnapshot.hpp:473
std::vector< int > thermal2d_lid_layer_control_index
Definition SimulationSnapshot.hpp:418
int subcatch_count
Number of subcatchments.
Definition SimulationSnapshot.hpp:143
int pollut_count
Number of pollutants.
Definition SimulationSnapshot.hpp:145
std::vector< double > gw2d_et_refresh
Definition SimulationSnapshot.hpp:462
std::vector< double > gw2d_et_soil_cum
Definition SimulationSnapshot.hpp:457
bool gw2d_active
G-O: the two-zone [2D_AQUIFER] kernel's per-cell state, SI, one value per face (surface_tri_count),...
Definition SimulationSnapshot.hpp:326
double sys_runoff
Total runoff flow.
Definition SimulationSnapshot.hpp:165
std::vector< double > thermal2d_bed_energy
J, face.
Definition SimulationSnapshot.hpp:381
std::vector< double > thermal2d_lid_layer_capacity
Definition SimulationSnapshot.hpp:426
bool has_subcatchments
Whether the model has any subcatchments.
Definition SimulationSnapshot.hpp:188
std::vector< double > surface_face_vx
Cell-centred velocity X (m/s), per face.
Definition SimulationSnapshot.hpp:435
std::vector< double > thermal2d_evaporation_m3
cumulative accepted evaporation, face
Definition SimulationSnapshot.hpp:399
int thermal2d_lid_layer_count
Definition SimulationSnapshot.hpp:414
int output_step_index
Sequential output step index (0-based).
Definition SimulationSnapshot.hpp:135
int thermal2d_layer_count
Definition SimulationSnapshot.hpp:376
std::vector< double > gw2d_unsat_conc
Definition SimulationSnapshot.hpp:345
std::vector< double > thermal2d_lid_layer_bottom_m
Definition SimulationSnapshot.hpp:422
int node_count
Number of nodes.
Definition SimulationSnapshot.hpp:141
std::vector< double > surface_depth
Overland flow depth ψ_o (m), per face.
Definition SimulationSnapshot.hpp:274
const std::vector< std::string > * link_ids
Link IDs in index order.
Definition SimulationSnapshot.hpp:220
bool thermal2d_active
Definition SimulationSnapshot.hpp:375
std::int64_t wall_time_unix
Wall-clock Unix timestamp when snapshot was taken.
Definition SimulationSnapshot.hpp:132
std::vector< double > thermal2d_ground_temperature
capacity-weighted degC, face
Definition SimulationSnapshot.hpp:400
const std::vector< std::string > * surface_species_units
Definition SimulationSnapshot.hpp:309
double sys_evap
Total evaporation loss.
Definition SimulationSnapshot.hpp:163
const std::vector< std::string > * gw2d_species_names
Definition SimulationSnapshot.hpp:350
std::vector< double > surface_rain_cum
Cumulative rainfall volume (m³), per face.
Definition SimulationSnapshot.hpp:288
std::vector< double > gw2d_boundary_species
Definition SimulationSnapshot.hpp:475
std::vector< double > thermal2d_lid_layer_temperature
Definition SimulationSnapshot.hpp:424
int gw2d_species_count
Definition SimulationSnapshot.hpp:349
const std::vector< std::string > * node_ids
Node IDs in index order. Pointer to engine-managed strings.
Definition SimulationSnapshot.hpp:217
std::vector< int > gw2d_closure
Definition SimulationSnapshot.hpp:355
int thermal2d_bed_species_count
Definition SimulationSnapshot.hpp:386
int surface_edge_stride
Definition SimulationSnapshot.hpp:269
double sys_rainfall
Average rainfall over all gages.
Definition SimulationSnapshot.hpp:161
std::vector< double > gw2d_deep
deep loss (m/s)
Definition SimulationSnapshot.hpp:335
double sys_ii_inflow
Total RDII inflow.
Definition SimulationSnapshot.hpp:168
std::vector< double > gw2d_infil_remaining
Remaining receiving allowance after pending receipts (m3)
Definition SimulationSnapshot.hpp:447
double sys_infil
Total infiltration loss.
Definition SimulationSnapshot.hpp:164
std::vector< double > gw2d_species_ledger
Definition SimulationSnapshot.hpp:348
std::vector< int > thermal2d_lid_layer_face_index
Definition SimulationSnapshot.hpp:416
std::vector< double > thermal2d_ground_layer_energy
Definition SimulationSnapshot.hpp:406
std::vector< std::string > thermal2d_lid_layer_node_id
Definition SimulationSnapshot.hpp:420
std::vector< double > surface_grad_hx
Unlimited head gradient ∂h/∂x, per face.
Definition SimulationSnapshot.hpp:276
std::vector< double > gw2d_infil_in
infiltration delivered from the surface (m/s)
Definition SimulationSnapshot.hpp:338
int thermal2d_ground_budget_terms
Definition SimulationSnapshot.hpp:378
std::vector< double > thermal2d_surface_budget
Definition SimulationSnapshot.hpp:398
std::vector< double > thermal2d_bed_pore_volume
Definition SimulationSnapshot.hpp:389
std::vector< double > surface_stat_max_velocity
Max cell speed |v| (m/s), per face.
Definition SimulationSnapshot.hpp:443
std::vector< double > gw2d_layer_concentration
Definition SimulationSnapshot.hpp:472
const char * length_units
Length unit string (e.g., "FEET", "METERS").
Definition SimulationSnapshot.hpp:239
std::vector< double > gw2d_et_stress
Definition SimulationSnapshot.hpp:461
std::vector< int > thermal2d_lid_layer_physical_index
Definition SimulationSnapshot.hpp:417
std::vector< double > gw2d_et_unused_cum
Definition SimulationSnapshot.hpp:458
std::vector< double > thermal2d_ground_layer_center_m
[layer, face], fixed-grid depth positive downward.
Definition SimulationSnapshot.hpp:404
const std::vector< std::string > * pollut_names
Pollutant names in index order.
Definition SimulationSnapshot.hpp:229
std::vector< double > surface_grad_hx_lim
Slope-limited head gradient ∂h/∂x, per face.
Definition SimulationSnapshot.hpp:278
double sys_snow_depth
Total snow depth.
Definition SimulationSnapshot.hpp:162
std::vector< uint8_t > surface_cell_nv
Definition SimulationSnapshot.hpp:272
std::vector< double > surface_head
Total head h_o = z_s + ψ_o (m), per face.
Definition SimulationSnapshot.hpp:275
double sys_flooding
Total flooding.
Definition SimulationSnapshot.hpp:170
std::vector< double > gw2d_transport_ledger
Definition SimulationSnapshot.hpp:477
const std::vector< std::string > * surface_species_names
Definition SimulationSnapshot.hpp:304
const std::vector< std::string > * subcatch_ids
Subcatchment IDs in index order.
Definition SimulationSnapshot.hpp:223
std::vector< double > thermal2d_lid_layer_energy
Definition SimulationSnapshot.hpp:425
int surface_quad_count
Number of quadrilateral cells (0 = all triangles)
Definition SimulationSnapshot.hpp:268
std::vector< double > thermal2d_bed_species_concentration
Definition SimulationSnapshot.hpp:390
std::vector< double > gw2d_reject
Rejected top-interface delivery returned to surface (m3 s-1)
Definition SimulationSnapshot.hpp:451
int surface_tri_count
Number of cells (faces): triangles + quads.
Definition SimulationSnapshot.hpp:266
double sys_temperature
Air temperature.
Definition SimulationSnapshot.hpp:160
std::vector< double > gw2d_node_exchange
exchange with a 1D node (m³/s), + out of the aquifer
Definition SimulationSnapshot.hpp:334
std::vector< double > gw2d_lateral
net lateral Darcy into the cell (m³/s)
Definition SimulationSnapshot.hpp:332
std::vector< double > thermal2d_ground_budget
Definition SimulationSnapshot.hpp:410
NodeSnapshot nodes
Node state.
Definition SimulationSnapshot.hpp:151
std::vector< double > surface_stat_max_cont_err
Max |continuity residual| (m³/s), per face.
Definition SimulationSnapshot.hpp:444
std::vector< double > thermal2d_lid_layer_ground_contact_j
Definition SimulationSnapshot.hpp:427
std::vector< double > gw2d_bed_exchange_cum
Definition SimulationSnapshot.hpp:369
int gw2d_boundary_count
Definition SimulationSnapshot.hpp:471
std::vector< double > thermal2d_bed_age_generation
Cumulative local bed age generation in hour m3.
Definition SimulationSnapshot.hpp:395
std::vector< double > link_quality
Link pollutant concentrations.
Definition SimulationSnapshot.hpp:205
std::vector< double > thermal2d_ground_capacity
Definition SimulationSnapshot.hpp:402
std::vector< double > surface_vert_head
Reconstructed head at vertices (m) — SOLVER field (dry-cell head = bed)
Definition SimulationSnapshot.hpp:432
double sys_dw_inflow
Total dry weather inflow.
Definition SimulationSnapshot.hpp:166
std::vector< double > thermal2d_ground_layer_temperature
Definition SimulationSnapshot.hpp:405
std::vector< double > gw2d_table_elev
water-table elevation (m) = bed + hg
Definition SimulationSnapshot.hpp:327
Snapshot of subcatchment state at an output time step.
Definition SimulationSnapshot.hpp:91
std::vector< double > snow_process
Definition SimulationSnapshot.hpp:95
std::vector< double > soil_moist
Soil moisture [-].
Definition SimulationSnapshot.hpp:103
std::vector< double > rainfall
Rainfall rate [display rate units].
Definition SimulationSnapshot.hpp:96
std::vector< double > infil
Infiltration [display rate units].
Definition SimulationSnapshot.hpp:99
std::vector< double > runoff
Surface runoff [display flow units].
Definition SimulationSnapshot.hpp:100
static constexpr int snow_process_count
Definition SimulationSnapshot.hpp:94
std::vector< double > gw_flow
Groundwater outflow [display flow units].
Definition SimulationSnapshot.hpp:101
std::vector< double > evap
Evaporation [display rate units].
Definition SimulationSnapshot.hpp:98
std::vector< double > gw_elev
Groundwater elevation [display length units].
Definition SimulationSnapshot.hpp:102
std::vector< double > snow_depth
Snow depth [display depth units].
Definition SimulationSnapshot.hpp:97