OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm::SimulationContext::MassBalance2D Struct Reference

System mass-balance totals for the optional 2D surface domain. More...

#include <SimulationContext.hpp>

Collaboration diagram for openswmm::SimulationContext::MassBalance2D:

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
 

Detailed Description

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.

Member Function Documentation

◆ error()

double openswmm::SimulationContext::MassBalance2D::error ( ) const
inline

2D surface continuity error (fraction).

Member Data Documentation

◆ active

bool openswmm::SimulationContext::MassBalance2D::active = false

True if the 2D module ran.

◆ aquifer_in

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.

◆ boundary_in

double openswmm::SimulationContext::MassBalance2D::boundary_in = 0.0

Cumulative boundary inflow (m³)

◆ boundary_out

double openswmm::SimulationContext::MassBalance2D::boundary_out = 0.0

Cumulative boundary outflow (m³)

◆ coupling_1d_to_2d_in

double openswmm::SimulationContext::MassBalance2D::coupling_1d_to_2d_in = 0.0

Cumulative 1D→2D spill into 2D (m³)

◆ coupling_2d_to_1d_out

double openswmm::SimulationContext::MassBalance2D::coupling_2d_to_1d_out = 0.0

Cumulative 2D→1D drainage out (m³)

◆ evap_out

double openswmm::SimulationContext::MassBalance2D::evap_out = 0.0

Cumulative evaporation loss (m³)

◆ final_storage

double openswmm::SimulationContext::MassBalance2D::final_storage = 0.0

Latest surface storage (m³)

◆ infil_out

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.

◆ infil_to_aquifer

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.

◆ init_storage

double openswmm::SimulationContext::MassBalance2D::init_storage = 0.0

Initial surface storage (m³)

◆ outfall_in

double openswmm::SimulationContext::MassBalance2D::outfall_in = 0.0

Cumulative 1D outfall discharge into 2D (m³)

◆ outfall_out

double openswmm::SimulationContext::MassBalance2D::outfall_out = 0.0

Cumulative 2D→pipe withdrawal at submerged outfalls (m³)

◆ rainfall_in

double openswmm::SimulationContext::MassBalance2D::rainfall_in = 0.0

Cumulative rainfall volume (m³)

◆ solver_active_max

double openswmm::SimulationContext::MassBalance2D::solver_active_max = -1.0

max active-cell fraction

◆ solver_active_mean

double openswmm::SimulationContext::MassBalance2D::solver_active_mean = -1.0

mean active-cell fraction

◆ solver_active_min

double openswmm::SimulationContext::MassBalance2D::solver_active_min = -1.0

min active-cell fraction

◆ solver_avg_h

double openswmm::SimulationContext::MassBalance2D::solver_avg_h = 0.0

mean accepted internal step (s)

◆ solver_last_h

double openswmm::SimulationContext::MassBalance2D::solver_last_h = 0.0

last accepted internal step (s)

◆ solver_n_tiers

int openswmm::SimulationContext::MassBalance2D::solver_n_tiers = 0

populated tier count

◆ solver_nrhs

long openswmm::SimulationContext::MassBalance2D::solver_nrhs = 0

face-kernel evaluations

◆ solver_nsteps

long openswmm::SimulationContext::MassBalance2D::solver_nsteps = -1

internal (marcher) substeps

◆ solver_tier_cells

long openswmm::SimulationContext::MassBalance2D::solver_tier_cells[8] = {0}

cumulative cells per LTS tier


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