OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_massbalance.h
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
32
33#ifndef OPENSWMM_MASSBALANCE_H
34#define OPENSWMM_MASSBALANCE_H
35
36#include "openswmm_engine.h"
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
42/* =========================================================================
43 * Continuity error queries (valid after SWMM_STATE_ENDED, or during RUNNING)
44 * ========================================================================= */
45
59
73
91 double* error);
92
93/* =========================================================================
94 * Cumulative flux totals (populated during simulation)
95 * ========================================================================= */
96
109
159
174SWMM_ENGINE_API int swmm_get_runoff_total(SWMM_Engine engine, int component, double* volume);
175
190SWMM_ENGINE_API int swmm_get_routing_total(SWMM_Engine engine, int component, double* volume);
191
192/* =========================================================================
193 * Routing diagnostics (combined stats in one call)
194 * ========================================================================= */
195
216SWMM_ENGINE_API int swmm_get_routing_stats(SWMM_Engine engine, double* avg_step, double* min_step,
217 double* max_step, int* n_steps,
218 double* pct_non_converged, double* avg_iterations,
219 double* max_courant);
220
230SWMM_ENGINE_API int swmm_get_max_courant(SWMM_Engine engine, double* max_courant);
231
232/* =========================================================================
233 * Quality mass losses (per-pollutant)
234 * ========================================================================= */
235
251SWMM_ENGINE_API int swmm_get_quality_seep_loss(SWMM_Engine engine, int pollutant_idx, double* mass);
252
268SWMM_ENGINE_API int swmm_get_quality_evap_loss(SWMM_Engine engine, int pollutant_idx, double* mass);
269
270#ifdef __cplusplus
271} /* extern "C" */
272#endif
273
274#endif /* OPENSWMM_MASSBALANCE_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_get_max_courant(SWMM_Engine engine, double *max_courant)
Read the largest recorded routing Courant number.
Definition openswmm_massbalance_impl.cpp:244
SWMM_ENGINE_API int swmm_get_runoff_total(SWMM_Engine engine, int component, double *volume)
Read a stored runoff water-balance volume.
Definition openswmm_massbalance_impl.cpp:124
SWMM_ENGINE_API int swmm_get_routing_total(SWMM_Engine engine, int component, double *volume)
Read a stored routing water-balance volume.
Definition openswmm_massbalance_impl.cpp:163
SWMM_RoutingTotal
Routing mass balance component codes.
Definition openswmm_massbalance.h:111
@ SWMM_ROUTING_DRY_WEATHER
Definition openswmm_massbalance.h:112
@ SWMM_ROUTING_WET_WEATHER
Definition openswmm_massbalance.h:113
@ SWMM_ROUTING_FORCING_INFLOW
Definition openswmm_massbalance.h:123
@ SWMM_ROUTING_EXTERNAL
Definition openswmm_massbalance.h:116
@ SWMM_ROUTING_GW_INFLOW
Definition openswmm_massbalance.h:114
@ SWMM_ROUTING_FINAL_STORAGE
Definition openswmm_massbalance.h:122
@ SWMM_ROUTING_OUTFLOW
Definition openswmm_massbalance.h:118
@ SWMM_ROUTING_EVAP_LOSS
Definition openswmm_massbalance.h:119
@ SWMM_ROUTING_INIT_STORAGE
Definition openswmm_massbalance.h:121
@ SWMM_ROUTING_SEEP_LOSS
Definition openswmm_massbalance.h:120
@ SWMM_ROUTING_FLOODING
Definition openswmm_massbalance.h:117
@ SWMM_ROUTING_RDII
Definition openswmm_massbalance.h:115
@ SWMM_ROUTING_LINK_GW_INFLOW
Definition openswmm_massbalance.h:133
@ SWMM_ROUTING_COUPLING_OUT
Definition openswmm_massbalance.h:141
SWMM_ENGINE_API int swmm_get_quality_seep_loss(SWMM_Engine engine, int pollutant_idx, double *mass)
Read cumulative pollutant amount booked to seepage.
Definition openswmm_massbalance_impl.cpp:255
SWMM_ENGINE_API int swmm_get_quality_continuity_error(SWMM_Engine engine, int pollutant_idx, double *error)
Compute a pollutant routing-continuity residual from stored mass totals.
Definition openswmm_massbalance_impl.cpp:54
SWMM_ENGINE_API int swmm_get_quality_evap_loss(SWMM_Engine engine, int pollutant_idx, double *mass)
Read cumulative pollutant amount booked to evaporation.
Definition openswmm_massbalance_impl.cpp:265
SWMM_RunoffTotal
Runoff mass balance component codes.
Definition openswmm_massbalance.h:98
@ SWMM_RUNOFF_INITSNOW
Definition openswmm_massbalance.h:106
@ SWMM_RUNOFF_EVAP
Definition openswmm_massbalance.h:100
@ SWMM_RUNOFF_SNOWREMOV
Definition openswmm_massbalance.h:103
@ SWMM_RUNOFF_INFIL
Definition openswmm_massbalance.h:101
@ SWMM_RUNOFF_INITSTORE
Definition openswmm_massbalance.h:104
@ SWMM_RUNOFF_RAINFALL
Definition openswmm_massbalance.h:99
@ SWMM_RUNOFF_FINALSNOW
Definition openswmm_massbalance.h:107
@ SWMM_RUNOFF_FINALSTORE
Definition openswmm_massbalance.h:105
@ SWMM_RUNOFF_RUNOFF
Definition openswmm_massbalance.h:102
SWMM_ENGINE_API int swmm_get_routing_stats(SWMM_Engine engine, double *avg_step, double *min_step, double *max_step, int *n_steps, double *pct_non_converged, double *avg_iterations, double *max_courant)
Read accumulated routing timestep and convergence diagnostics.
Definition openswmm_massbalance_impl.cpp:221
SWMM_ENGINE_API int swmm_get_runoff_continuity_error(SWMM_Engine engine, double *error)
Compute the signed runoff water-continuity residual fraction.
Definition openswmm_massbalance_impl.cpp:40
SWMM_ENGINE_API int swmm_get_routing_continuity_error(SWMM_Engine engine, double *error)
Compute the signed routing water-continuity residual fraction.
Definition openswmm_massbalance_impl.cpp:47