OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_pollutants.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_POLLUTANTS_H
33#define OPENSWMM_POLLUTANTS_H
34
35#include "openswmm_engine.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* =========================================================================
42 * Identity
43 * ========================================================================= */
44
51
58SWMM_ENGINE_API int swmm_pollutant_index(SWMM_Engine engine, const char* id);
59
70SWMM_ENGINE_API const char* swmm_pollutant_id(SWMM_Engine engine, int idx);
71
72/* =========================================================================
73 * Creation (BUILDING or OPENED)
74 * ========================================================================= */
75
89SWMM_ENGINE_API int swmm_pollutant_add(SWMM_Engine engine, const char* id, int units);
90
111SWMM_ENGINE_API int swmm_pollutant_rename(SWMM_Engine engine, int idx, const char* new_id);
112
113/* =========================================================================
114 * Property setters (per-function lifecycle guards)
115 * ========================================================================= */
116
139SWMM_ENGINE_API int swmm_pollutant_set_units(SWMM_Engine engine, int idx, int units);
140
154SWMM_ENGINE_API int swmm_pollutant_set_kdecay(SWMM_Engine engine, int idx, double k);
155
168SWMM_ENGINE_API int swmm_pollutant_set_rain_conc(SWMM_Engine engine, int idx, double conc);
169
182SWMM_ENGINE_API int swmm_pollutant_set_gw_conc(SWMM_Engine engine, int idx, double conc);
183
195SWMM_ENGINE_API int swmm_pollutant_set_init_conc(SWMM_Engine engine, int idx, double conc);
196
208SWMM_ENGINE_API int swmm_pollutant_get_units(SWMM_Engine engine, int idx, int* units);
209
210/* =========================================================================
211 * Property getters
212 * ========================================================================= */
213
225SWMM_ENGINE_API int swmm_pollutant_get_kdecay(SWMM_Engine engine, int idx, double* k);
226
239SWMM_ENGINE_API int swmm_pollutant_get_rain_conc(SWMM_Engine engine, int idx, double* conc);
240
253SWMM_ENGINE_API int swmm_pollutant_get_gw_conc(SWMM_Engine engine, int idx, double* conc);
254
267SWMM_ENGINE_API int swmm_pollutant_get_init_conc(SWMM_Engine engine, int idx, double* conc);
268
281SWMM_ENGINE_API int swmm_pollutant_set_rdii_conc(SWMM_Engine engine, int idx, double conc);
282
295SWMM_ENGINE_API int swmm_pollutant_get_rdii_conc(SWMM_Engine engine, int idx, double* conc);
296
311SWMM_ENGINE_API int swmm_pollutant_set_dwf_conc(SWMM_Engine engine, int idx, double conc);
312
325SWMM_ENGINE_API int swmm_pollutant_get_dwf_conc(SWMM_Engine engine, int idx, double* conc);
326
339SWMM_ENGINE_API int swmm_pollutant_set_mwt(SWMM_Engine engine, int idx, double mwt);
340
353SWMM_ENGINE_API int swmm_pollutant_get_mwt(SWMM_Engine engine, int idx, double* mwt);
354
370SWMM_ENGINE_API int swmm_pollutant_set_co_pollutant(SWMM_Engine engine, int idx, int co_idx,
371 double frac);
372
386SWMM_ENGINE_API int swmm_pollutant_get_co_pollutant(SWMM_Engine engine, int idx, int* co_idx,
387 double* frac);
388
401SWMM_ENGINE_API int swmm_pollutant_set_snow_only(SWMM_Engine engine, int idx, int flag);
402
414SWMM_ENGINE_API int swmm_pollutant_get_snow_only(SWMM_Engine engine, int idx, int* flag);
415
416/* =========================================================================
417 * Runtime quality injection
418 * ========================================================================= */
419
435SWMM_ENGINE_API int swmm_node_set_quality(SWMM_Engine engine, int node_idx, int pollut_idx,
436 double conc);
437
453SWMM_ENGINE_API int swmm_link_set_quality(SWMM_Engine engine, int link_idx, int pollut_idx,
454 double conc);
455
456#ifdef __cplusplus
457} /* extern "C" */
458#endif
459
460#endif /* OPENSWMM_POLLUTANTS_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_pollutant_get_dwf_conc(SWMM_Engine engine, int idx, double *conc)
Get the default dry weather sanitary flow concentration.
Definition openswmm_pollutants_impl.cpp:384
SWMM_ENGINE_API int swmm_pollutant_count(SWMM_Engine engine)
Get the total number of pollutants in the model.
Definition openswmm_pollutants_impl.cpp:80
SWMM_ENGINE_API int swmm_pollutant_set_gw_conc(SWMM_Engine engine, int idx, double conc)
Set the pollutant concentration in groundwater.
Definition openswmm_pollutants_impl.cpp:275
SWMM_ENGINE_API int swmm_pollutant_set_kdecay(SWMM_Engine engine, int idx, double k)
Set the first-order decay coefficient for a pollutant.
Definition openswmm_pollutants_impl.cpp:257
SWMM_ENGINE_API int swmm_pollutant_set_mwt(SWMM_Engine engine, int idx, double mwt)
Set the molecular weight of a pollutant.
Definition openswmm_pollutants_impl.cpp:393
SWMM_ENGINE_API int swmm_pollutant_index(SWMM_Engine engine, const char *id)
Look up a pollutant's zero-based index by its string identifier.
Definition openswmm_pollutants_impl.cpp:86
SWMM_ENGINE_API int swmm_pollutant_set_co_pollutant(SWMM_Engine engine, int idx, int co_idx, double frac)
Set a co-pollutant relationship (concentration = fraction * co-pollutant).
Definition openswmm_pollutants_impl.cpp:414
SWMM_ENGINE_API int swmm_pollutant_get_units(SWMM_Engine engine, int idx, int *units)
Get the concentration units code for a pollutant.
Definition openswmm_pollutants_impl.cpp:309
SWMM_ENGINE_API int swmm_pollutant_add(SWMM_Engine engine, const char *id, int units)
Add a new pollutant to the model.
Definition openswmm_pollutants_impl.cpp:105
SWMM_ENGINE_API int swmm_link_set_quality(SWMM_Engine engine, int link_idx, int pollut_idx, double conc)
Assign one stored link pollutant concentration directly.
Definition openswmm_pollutants_impl.cpp:469
SWMM_ENGINE_API int swmm_pollutant_set_init_conc(SWMM_Engine engine, int idx, double conc)
Set the initial concentration throughout the conveyance system.
Definition openswmm_pollutants_impl.cpp:283
SWMM_ENGINE_API int swmm_pollutant_get_rdii_conc(SWMM_Engine engine, int idx, double *conc)
Get the RDII concentration.
Definition openswmm_pollutants_impl.cpp:367
SWMM_ENGINE_API int swmm_pollutant_set_rdii_conc(SWMM_Engine engine, int idx, double conc)
Set the RDII (Rainfall-Dependent Infiltration/Inflow) concentration.
Definition openswmm_pollutants_impl.cpp:359
SWMM_ENGINE_API const char * swmm_pollutant_id(SWMM_Engine engine, int idx)
Get the string identifier of a pollutant by index.
Definition openswmm_pollutants_impl.cpp:92
SWMM_ENGINE_API int swmm_pollutant_set_dwf_conc(SWMM_Engine engine, int idx, double conc)
Set the default dry weather sanitary flow concentration.
Definition openswmm_pollutants_impl.cpp:376
SWMM_ENGINE_API int swmm_pollutant_get_init_conc(SWMM_Engine engine, int idx, double *conc)
Get the initial concentration throughout the conveyance system.
Definition openswmm_pollutants_impl.cpp:350
SWMM_ENGINE_API int swmm_pollutant_get_mwt(SWMM_Engine engine, int idx, double *mwt)
Get the molecular weight of a pollutant.
Definition openswmm_pollutants_impl.cpp:404
SWMM_ENGINE_API int swmm_pollutant_get_rain_conc(SWMM_Engine engine, int idx, double *conc)
Get the pollutant concentration in rainfall.
Definition openswmm_pollutants_impl.cpp:332
SWMM_ENGINE_API int swmm_pollutant_set_snow_only(SWMM_Engine engine, int idx, int flag)
Set whether a pollutant only builds up during snowfall events.
Definition openswmm_pollutants_impl.cpp:436
SWMM_ENGINE_API int swmm_pollutant_get_gw_conc(SWMM_Engine engine, int idx, double *conc)
Get the pollutant concentration in groundwater.
Definition openswmm_pollutants_impl.cpp:341
SWMM_ENGINE_API int swmm_pollutant_get_snow_only(SWMM_Engine engine, int idx, int *flag)
Get whether a pollutant only builds up during snowfall events.
Definition openswmm_pollutants_impl.cpp:444
SWMM_ENGINE_API int swmm_pollutant_set_rain_conc(SWMM_Engine engine, int idx, double conc)
Set the pollutant concentration in rainfall.
Definition openswmm_pollutants_impl.cpp:267
SWMM_ENGINE_API int swmm_pollutant_get_kdecay(SWMM_Engine engine, int idx, double *k)
Get the first-order decay coefficient.
Definition openswmm_pollutants_impl.cpp:322
SWMM_ENGINE_API int swmm_node_set_quality(SWMM_Engine engine, int node_idx, int pollut_idx, double conc)
Assign one stored node pollutant concentration directly.
Definition openswmm_pollutants_impl.cpp:457
SWMM_ENGINE_API int swmm_pollutant_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename a pollutant in place.
Definition openswmm_pollutants_impl.cpp:187
SWMM_ENGINE_API int swmm_pollutant_get_co_pollutant(SWMM_Engine engine, int idx, int *co_idx, double *frac)
Get a co-pollutant relationship.
Definition openswmm_pollutants_impl.cpp:424
SWMM_ENGINE_API int swmm_pollutant_set_units(SWMM_Engine engine, int idx, int units)
Change the concentration units of an existing pollutant.
Definition openswmm_pollutants_impl.cpp:295