![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
System mass-balance totals for the optional 2D surface domain. More...
#include <SimulationContext.hpp>
Public Member Functions | |
| double | error () const |
| 2D surface continuity error (fraction). | |
Public Attributes | |
| double | init_storage = 0.0 |
| Initial surface storage (m³) | |
| double | final_storage = 0.0 |
| Latest surface storage (m³) | |
| double | rainfall_in = 0.0 |
| Cumulative rainfall volume (m³) | |
| double | coupling_1d_to_2d_in = 0.0 |
| Cumulative 1D→2D spill into 2D (m³) | |
| double | coupling_2d_to_1d_out = 0.0 |
| Cumulative 2D→1D drainage out (m³) | |
| double | outfall_in = 0.0 |
| Cumulative 1D outfall discharge into 2D (m³) | |
| double | outfall_out = 0.0 |
| Cumulative 2D→pipe withdrawal at submerged outfalls (m³) | |
| double | boundary_in = 0.0 |
| Cumulative boundary inflow (m³) | |
| double | boundary_out = 0.0 |
| Cumulative boundary outflow (m³) | |
| double | evap_out = 0.0 |
| double | infil_out = 0.0 |
| double | infil_to_aquifer = 0.0 |
| double | aquifer_in = 0.0 |
| bool | active = false |
| True if the 2D module ran. | |
| long | solver_nsteps = -1 |
| internal (marcher) substeps | |
| long | solver_nrhs = 0 |
| face-kernel evaluations | |
| double | solver_avg_h = 0.0 |
| mean accepted internal step (s) | |
| double | solver_last_h = 0.0 |
| last accepted internal step (s) | |
| double | solver_active_min = -1.0 |
| min active-cell fraction | |
| double | solver_active_mean = -1.0 |
| mean active-cell fraction | |
| double | solver_active_max = -1.0 |
| max active-cell fraction | |
| long | solver_tier_cells [8] = {0} |
| cumulative cells per LTS tier | |
| int | solver_n_tiers = 0 |
| populated tier count | |
System mass-balance totals for the optional 2D surface domain.
Accumulated each executed 2D step by SurfaceRouter2D. Unlike the 1D MassBalance (ft³ for US flow units), all volumes here are in the 2D solver's SI internal units (m³). This is a SEPARATE balance from the 1D routing balance: the coupling terms are inflows/outflows of the 2D domain, signed oppositely to the 1D routing_external/routing_flooding terms.
|
inline |
2D surface continuity error (fraction).
| bool openswmm::SimulationContext::MassBalance2D::active = false |
True if the 2D module ran.
| double openswmm::SimulationContext::MassBalance2D::aquifer_in = 0.0 |
G1 (2026-09-07): cumulative water the two-zone [2D_AQUIFER] returned to the surface — Dunne saturation excess and top-layer rejection — m³. An INFLOW to the surface domain, and the mirror of the infil_out share the aquifer received. Without it the returned water reads as storage created from nothing and the 2D continuity error grows by exactly the volume that came back up. Zero unless a [2D_AQUIFER] resolved.
| double openswmm::SimulationContext::MassBalance2D::boundary_in = 0.0 |
Cumulative boundary inflow (m³)
| double openswmm::SimulationContext::MassBalance2D::boundary_out = 0.0 |
Cumulative boundary outflow (m³)
| double openswmm::SimulationContext::MassBalance2D::coupling_1d_to_2d_in = 0.0 |
Cumulative 1D→2D spill into 2D (m³)
| double openswmm::SimulationContext::MassBalance2D::coupling_2d_to_1d_out = 0.0 |
Cumulative 2D→1D drainage out (m³)
| double openswmm::SimulationContext::MassBalance2D::evap_out = 0.0 |
Cumulative evaporation loss (m³)
| double openswmm::SimulationContext::MassBalance2D::final_storage = 0.0 |
Latest surface storage (m³)
| double openswmm::SimulationContext::MassBalance2D::infil_out = 0.0 |
Cumulative 2D per-cell infiltration loss (m³). Track I, plan §5.5.4. Destination is LOST in this release (D-I4), so this is a true exit from the modelled system and enters the continuity balance as a loss term alongside evap_out.
| double openswmm::SimulationContext::MassBalance2D::infil_to_aquifer = 0.0 |
U3 (track I-b, 2026-09-07): the part of infil_out routed into a legacy subcatchment aquifer ([2D_OPTIONS] INFIL_DESTINATION SUBCATCH_AQUIFER), m³. It is a TRANSFER, not an exit: the same volume enters the 1D groundwater ledger as recharge, so a whole-model balance nets it out. infil_out still carries it, so the 2D-only continuity check is unchanged.
| double openswmm::SimulationContext::MassBalance2D::init_storage = 0.0 |
Initial surface storage (m³)
| double openswmm::SimulationContext::MassBalance2D::outfall_in = 0.0 |
Cumulative 1D outfall discharge into 2D (m³)
| double openswmm::SimulationContext::MassBalance2D::outfall_out = 0.0 |
Cumulative 2D→pipe withdrawal at submerged outfalls (m³)
| double openswmm::SimulationContext::MassBalance2D::rainfall_in = 0.0 |
Cumulative rainfall volume (m³)
| double openswmm::SimulationContext::MassBalance2D::solver_active_max = -1.0 |
max active-cell fraction
| double openswmm::SimulationContext::MassBalance2D::solver_active_mean = -1.0 |
mean active-cell fraction
| double openswmm::SimulationContext::MassBalance2D::solver_active_min = -1.0 |
min active-cell fraction
| double openswmm::SimulationContext::MassBalance2D::solver_avg_h = 0.0 |
mean accepted internal step (s)
| double openswmm::SimulationContext::MassBalance2D::solver_last_h = 0.0 |
last accepted internal step (s)
| int openswmm::SimulationContext::MassBalance2D::solver_n_tiers = 0 |
populated tier count
| long openswmm::SimulationContext::MassBalance2D::solver_nrhs = 0 |
face-kernel evaluations
| long openswmm::SimulationContext::MassBalance2D::solver_nsteps = -1 |
internal (marcher) substeps
| long openswmm::SimulationContext::MassBalance2D::solver_tier_cells[8] = {0} |
cumulative cells per LTS tier