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
31
32#ifndef OPENSWMM_MASSBALANCE_H
33#define OPENSWMM_MASSBALANCE_H
34
35#include "openswmm_engine.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* =========================================================================
42 * Continuity error queries (valid after SWMM_STATE_ENDED, or during RUNNING)
43 * ========================================================================= */
44
47
50
53 int pollutant_idx, double* error);
54
55/* =========================================================================
56 * Cumulative flux totals (populated during simulation)
57 * ========================================================================= */
58
71
113
121SWMM_ENGINE_API int swmm_get_runoff_total (SWMM_Engine engine, int component, double* volume);
122
130SWMM_ENGINE_API int swmm_get_routing_total(SWMM_Engine engine, int component, double* volume);
131
132/* =========================================================================
133 * Routing diagnostics (combined stats in one call)
134 * ========================================================================= */
135
138 double* avg_step, double* min_step, double* max_step,
139 int* n_steps, double* pct_non_converged,
140 double* avg_iterations, double* max_courant);
141
143SWMM_ENGINE_API int swmm_get_max_courant(SWMM_Engine engine, double* max_courant);
144
145/* =========================================================================
146 * Quality mass losses (per-pollutant)
147 * ========================================================================= */
148
150SWMM_ENGINE_API int swmm_get_quality_seep_loss(SWMM_Engine engine, int pollutant_idx, double* mass);
151
153SWMM_ENGINE_API int swmm_get_quality_evap_loss(SWMM_Engine engine, int pollutant_idx, double* mass);
154
155#ifdef __cplusplus
156} /* extern "C" */
157#endif
158
159#endif /* OPENSWMM_MASSBALANCE_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:53
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:51
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_get_max_courant(SWMM_Engine engine, double *max_courant)
Get maximum Courant number observed during simulation.
Definition openswmm_massbalance_impl.cpp:174
SWMM_ENGINE_API int swmm_get_runoff_total(SWMM_Engine engine, int component, double *volume)
Get a runoff mass balance total (cumulative volume).
Definition openswmm_massbalance_impl.cpp:112
SWMM_ENGINE_API int swmm_get_routing_total(SWMM_Engine engine, int component, double *volume)
Get a routing mass balance total (cumulative volume).
Definition openswmm_massbalance_impl.cpp:131
SWMM_RoutingTotal
Routing mass balance component codes.
Definition openswmm_massbalance.h:73
@ SWMM_ROUTING_DRY_WEATHER
Definition openswmm_massbalance.h:74
@ SWMM_ROUTING_WET_WEATHER
Definition openswmm_massbalance.h:75
@ SWMM_ROUTING_FORCING_INFLOW
Definition openswmm_massbalance.h:85
@ SWMM_ROUTING_EXTERNAL
Definition openswmm_massbalance.h:78
@ SWMM_ROUTING_GW_INFLOW
Definition openswmm_massbalance.h:76
@ SWMM_ROUTING_FINAL_STORAGE
Definition openswmm_massbalance.h:84
@ SWMM_ROUTING_OUTFLOW
Definition openswmm_massbalance.h:80
@ SWMM_ROUTING_EVAP_LOSS
Definition openswmm_massbalance.h:81
@ SWMM_ROUTING_INIT_STORAGE
Definition openswmm_massbalance.h:83
@ SWMM_ROUTING_SEEP_LOSS
Definition openswmm_massbalance.h:82
@ SWMM_ROUTING_FLOODING
Definition openswmm_massbalance.h:79
@ SWMM_ROUTING_RDII
Definition openswmm_massbalance.h:77
@ SWMM_ROUTING_COUPLING_OUT
Definition openswmm_massbalance.h:95
SWMM_ENGINE_API int swmm_get_quality_seep_loss(SWMM_Engine engine, int pollutant_idx, double *mass)
Get quality mass lost to seepage (per pollutant).
Definition openswmm_massbalance_impl.cpp:184
SWMM_ENGINE_API int swmm_get_quality_continuity_error(SWMM_Engine engine, int pollutant_idx, double *error)
Get the quality continuity error for a pollutant (fraction).
Definition openswmm_massbalance_impl.cpp:52
SWMM_ENGINE_API int swmm_get_quality_evap_loss(SWMM_Engine engine, int pollutant_idx, double *mass)
Get quality mass lost to evaporation (per pollutant).
Definition openswmm_massbalance_impl.cpp:192
SWMM_RunoffTotal
Runoff mass balance component codes.
Definition openswmm_massbalance.h:60
@ SWMM_RUNOFF_INITSNOW
Definition openswmm_massbalance.h:68
@ SWMM_RUNOFF_EVAP
Definition openswmm_massbalance.h:62
@ SWMM_RUNOFF_SNOWREMOV
Definition openswmm_massbalance.h:65
@ SWMM_RUNOFF_INFIL
Definition openswmm_massbalance.h:63
@ SWMM_RUNOFF_INITSTORE
Definition openswmm_massbalance.h:66
@ SWMM_RUNOFF_RAINFALL
Definition openswmm_massbalance.h:61
@ SWMM_RUNOFF_FINALSNOW
Definition openswmm_massbalance.h:69
@ SWMM_RUNOFF_FINALSTORE
Definition openswmm_massbalance.h:67
@ SWMM_RUNOFF_RUNOFF
Definition openswmm_massbalance.h:64
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)
Get combined routing statistics in a single call.
Definition openswmm_massbalance_impl.cpp:158
SWMM_ENGINE_API int swmm_get_runoff_continuity_error(SWMM_Engine engine, double *error)
Get the runoff continuity error (fraction, e.g. 0.001 = 0.1%).
Definition openswmm_massbalance_impl.cpp:40
SWMM_ENGINE_API int swmm_get_routing_continuity_error(SWMM_Engine engine, double *error)
Get the routing continuity error (fraction).
Definition openswmm_massbalance_impl.cpp:46