OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_subcatchments.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_SUBCATCHMENTS_H
33#define OPENSWMM_SUBCATCHMENTS_H
34
35#include "openswmm_engine.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* =========================================================================
42 * Identity
43 * ========================================================================= */
44
54
64SWMM_ENGINE_API int swmm_subcatch_index(SWMM_Engine engine, const char* id);
65
76SWMM_ENGINE_API const char* swmm_subcatch_id(SWMM_Engine engine, int idx);
77
78/* =========================================================================
79 * Creation (BUILDING or OPENED — "editable" states)
80 * ========================================================================= */
81
100SWMM_ENGINE_API int swmm_subcatch_add(SWMM_Engine engine, const char* id);
101
102/* =========================================================================
103 * Property setters (BUILDING or OPENED)
104 * ========================================================================= */
105
119SWMM_ENGINE_API int swmm_subcatch_set_outlet(SWMM_Engine engine, int idx, int node_idx);
120
133SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area);
134
147SWMM_ENGINE_API int swmm_subcatch_set_width(SWMM_Engine engine, int idx, double width);
148
161SWMM_ENGINE_API int swmm_subcatch_set_slope(SWMM_Engine engine, int idx, double slope);
162
175SWMM_ENGINE_API int swmm_subcatch_set_imperv_pct(SWMM_Engine engine, int idx, double pct);
176
191SWMM_ENGINE_API int swmm_subcatch_set_zero_imperv_pct(SWMM_Engine engine, int idx, double pct);
192
205SWMM_ENGINE_API int swmm_subcatch_set_n_imperv(SWMM_Engine engine, int idx, double n);
206
219SWMM_ENGINE_API int swmm_subcatch_set_n_perv(SWMM_Engine engine, int idx, double n);
220
233SWMM_ENGINE_API int swmm_subcatch_set_ds_imperv(SWMM_Engine engine, int idx, double ds);
234
247SWMM_ENGINE_API int swmm_subcatch_set_ds_perv(SWMM_Engine engine, int idx, double ds);
248
262SWMM_ENGINE_API int swmm_subcatch_set_gage(SWMM_Engine engine, int idx, int gage_idx);
263
264/* --- Infiltration parameters (BUILDING or OPENED) --- */
265
283SWMM_ENGINE_API int swmm_subcatch_set_infil_horton(SWMM_Engine engine, int idx, double f0,
284 double fmin, double decay, double dry_time);
285
301SWMM_ENGINE_API int swmm_subcatch_set_infil_green_ampt(SWMM_Engine engine, int idx, double suction,
302 double conductivity, double initial_deficit);
303
321 double drying_time);
322
340SWMM_ENGINE_API int swmm_subcatch_set_infil_model(SWMM_Engine engine, int idx, int model);
341
342/* =========================================================================
343 * Property getters
344 * ========================================================================= */
345
357SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double* area);
358
370SWMM_ENGINE_API int swmm_subcatch_get_imperv_pct(SWMM_Engine engine, int idx, double* pct);
371
384SWMM_ENGINE_API int swmm_subcatch_get_zero_imperv_pct(SWMM_Engine engine, int idx, double* pct);
385
397SWMM_ENGINE_API int swmm_subcatch_get_outlet(SWMM_Engine engine, int idx, int* node_idx);
398
410SWMM_ENGINE_API int swmm_subcatch_get_width(SWMM_Engine engine, int idx, double* w);
411
423SWMM_ENGINE_API int swmm_subcatch_get_slope(SWMM_Engine engine, int idx, double* s);
424
436SWMM_ENGINE_API int swmm_subcatch_get_n_imperv(SWMM_Engine engine, int idx, double* n);
437
449SWMM_ENGINE_API int swmm_subcatch_get_n_perv(SWMM_Engine engine, int idx, double* n);
450
462SWMM_ENGINE_API int swmm_subcatch_get_ds_imperv(SWMM_Engine engine, int idx, double* ds);
463
475SWMM_ENGINE_API int swmm_subcatch_get_ds_perv(SWMM_Engine engine, int idx, double* ds);
476
488SWMM_ENGINE_API int swmm_subcatch_get_gage(SWMM_Engine engine, int idx, int* gage_idx);
489
508SWMM_ENGINE_API int swmm_subcatch_set_outlet_subcatch(SWMM_Engine engine, int idx, int sc_idx);
509
521SWMM_ENGINE_API int swmm_subcatch_get_outlet_subcatch(SWMM_Engine engine, int idx, int* sc_idx);
522
523/* =========================================================================
524 * Infiltration getters
525 * ========================================================================= */
526
542SWMM_ENGINE_API int swmm_subcatch_get_infil_model(SWMM_Engine engine, int idx, int* model);
543
561SWMM_ENGINE_API int swmm_subcatch_get_infil_horton(SWMM_Engine engine, int idx, double* f0,
562 double* fmin, double* decay, double* dry_time);
563
580SWMM_ENGINE_API int swmm_subcatch_get_infil_green_ampt(SWMM_Engine engine, int idx, double* suction,
581 double* conductivity, double* deficit);
582
599 double* drying_time);
600
601/* =========================================================================
602 * Subcatchment statistics
603 * ========================================================================= */
604
616SWMM_ENGINE_API int swmm_subcatch_get_stat_precip(SWMM_Engine engine, int idx, double* vol);
617
629SWMM_ENGINE_API int swmm_subcatch_get_stat_runoff_vol(SWMM_Engine engine, int idx, double* vol);
630
642SWMM_ENGINE_API int swmm_subcatch_get_stat_max_runoff(SWMM_Engine engine, int idx, double* rate);
643
644/* =========================================================================
645 * Subcatchment landuse coverage
646 * ========================================================================= */
647
667SWMM_ENGINE_API int swmm_subcatch_set_coverage(SWMM_Engine engine, int sc_idx, int lu_idx,
668 double fraction);
669
682SWMM_ENGINE_API int swmm_subcatch_get_coverage(SWMM_Engine engine, int sc_idx, int lu_idx,
683 double* fraction);
684
703SWMM_ENGINE_API int swmm_subcatch_get_coverages(SWMM_Engine engine, int sc_idx, double* out, int n);
704
705/* =========================================================================
706 * Initial pollutant loadings ([LOADINGS])
707 * ========================================================================= */
708
730 int pollut_idx, double buildup);
731
747 int pollut_idx, double* buildup);
748
749/* =========================================================================
750 * Hydraulic state getters
751 * ========================================================================= */
752
764SWMM_ENGINE_API int swmm_subcatch_get_runoff(SWMM_Engine engine, int idx, double* runoff);
765
777SWMM_ENGINE_API int swmm_subcatch_get_groundwater(SWMM_Engine engine, int idx, double* gw_flow);
778
790SWMM_ENGINE_API int swmm_subcatch_get_rainfall(SWMM_Engine engine, int idx, double* rainfall);
791
803SWMM_ENGINE_API int swmm_subcatch_get_snow_depth(SWMM_Engine engine, int idx, double* depth);
804
816SWMM_ENGINE_API int swmm_subcatch_get_evap(SWMM_Engine engine, int idx, double* evap);
817
818/* =========================================================================
819 * Groundwater configuration ([GROUNDWATER])
820 * =========================================================================
821 * Configure a subcatchment's [GROUNDWATER] flow routing. Values are stored
822 * exactly as parsed from the input file (raw user units) so they round-trip
823 * identically. Distinct from the runtime gw STATE (theta / lower_depth)
824 * injected via swmm_subcatch_set_gw_state. All are BUILDING/OPENED editable.
825 */
826
841SWMM_ENGINE_API int swmm_subcatch_set_aquifer(SWMM_Engine engine, int idx, int aquifer_idx);
842
852SWMM_ENGINE_API int swmm_subcatch_get_aquifer(SWMM_Engine engine, int idx, int* aquifer_idx);
853
868SWMM_ENGINE_API int swmm_subcatch_set_gw_node(SWMM_Engine engine, int idx, int node_idx);
869
879SWMM_ENGINE_API int swmm_subcatch_get_gw_node(SWMM_Engine engine, int idx, int* node_idx);
880
902SWMM_ENGINE_API int swmm_subcatch_set_gw_params(SWMM_Engine engine, int idx, double surf_elev,
903 double a1, double b1, double a2, double b2,
904 double a3, double tw, double hstar);
905
929SWMM_ENGINE_API int swmm_subcatch_get_gw_params(SWMM_Engine engine, int idx, double* surf_elev,
930 double* a1, double* b1, double* a2, double* b2,
931 double* a3, double* tw, double* hstar);
932
933/* =========================================================================
934 * State injection (data assimilation)
935 * ========================================================================= */
936
959SWMM_ENGINE_API int swmm_subcatch_set_gw_state(SWMM_Engine engine, int idx, double theta,
960 double lower_depth);
961
977SWMM_ENGINE_API int swmm_subcatch_get_gw_state(SWMM_Engine engine, int idx, double* theta,
978 double* lower_depth);
979
1004SWMM_ENGINE_API int swmm_subcatch_set_snow_state(SWMM_Engine engine, int idx, int surface,
1005 double swe, double fw, double ati, double coldc);
1006
1028SWMM_ENGINE_API int swmm_subcatch_get_snow_state(SWMM_Engine engine, int idx, int surface,
1029 double* swe, double* fw, double* ati,
1030 double* coldc);
1031
1043SWMM_ENGINE_API int swmm_subcatch_get_infil(SWMM_Engine engine, int idx, double* infil);
1044
1045/* --- Runtime forcing (RUNNING state only) --- */
1046
1060SWMM_ENGINE_API int swmm_subcatch_set_rainfall(SWMM_Engine engine, int idx, double rainfall);
1061
1062/* =========================================================================
1063 * Water quality
1064 * ========================================================================= */
1065
1080SWMM_ENGINE_API int swmm_subcatch_get_quality(SWMM_Engine engine, int subcatch_idx,
1081 int pollutant_idx, double* conc);
1082
1083/* =========================================================================
1084 * Bulk access
1085 * ========================================================================= */
1086
1099SWMM_ENGINE_API int swmm_subcatch_get_runoff_bulk(SWMM_Engine engine, double* buf, int count);
1100
1116SWMM_ENGINE_API int swmm_subcatch_get_quality_bulk(SWMM_Engine engine, int pollutant_idx,
1117 double* buf, int count);
1118
1119/* =========================================================================
1120 * Phase 3 bulk getters — added in OpenSWMM 6.0.0 to eliminate the N
1121 * round-trip cost of per-subcatchment scalar accessors. All return a
1122 * caller-allocated @c double buffer of length @c count (clipped at
1123 * @c swmm_subcatch_count()); the IDs variant returns a stride-packed
1124 * UTF-8 buffer following the same format as @ref swmm_node_get_ids_bulk.
1125 * ========================================================================= */
1126
1141SWMM_ENGINE_API int swmm_subcatch_get_rainfall_bulk(SWMM_Engine engine, double* buf, int count);
1142
1157SWMM_ENGINE_API int swmm_subcatch_get_evap_bulk(SWMM_Engine engine, double* buf, int count);
1158
1173SWMM_ENGINE_API int swmm_subcatch_get_infil_bulk(SWMM_Engine engine, double* buf, int count);
1174
1190SWMM_ENGINE_API int swmm_subcatch_get_snow_depth_bulk(SWMM_Engine engine, double* buf, int count);
1191
1209SWMM_ENGINE_API int swmm_subcatch_get_ids_bulk(SWMM_Engine engine, char* buf, int stride,
1210 int count);
1211
1212/* =========================================================================
1213 * Ponded quality (mass in standing water between events)
1214 * ========================================================================= */
1215
1231 int pollutant_idx, double* mass);
1232
1249 int pollutant_idx, double mass);
1250
1265SWMM_ENGINE_API int swmm_subcatch_rename(SWMM_Engine engine, int idx, const char* newId);
1266
1267/* =========================================================================
1268 * Aquifer definitions ([AQUIFERS] section) — Slice BM.0 / BP.6.6.4
1269 * ========================================================================= */
1270
1280
1290SWMM_ENGINE_API int swmm_aquifer_index(SWMM_Engine engine, const char* id);
1291
1302SWMM_ENGINE_API const char* swmm_aquifer_id(SWMM_Engine engine, int idx);
1303
1320SWMM_ENGINE_API int swmm_aquifer_add(SWMM_Engine engine, const char* id);
1321
1341SWMM_ENGINE_API int swmm_aquifer_rename(SWMM_Engine engine, int idx, const char* new_id);
1342
1369
1382SWMM_ENGINE_API int swmm_aquifer_get_param(SWMM_Engine engine, int idx, int param, double* value);
1383
1404SWMM_ENGINE_API int swmm_aquifer_set_param(SWMM_Engine engine, int idx, int param, double value);
1405
1428SWMM_ENGINE_API int swmm_aquifer_get_evap_pattern(SWMM_Engine engine, int idx, char* buf,
1429 int buflen);
1430
1449SWMM_ENGINE_API int swmm_aquifer_set_evap_pattern(SWMM_Engine engine, int idx, const char* name);
1450
1451/* =========================================================================
1452 * Snowpack definitions ([SNOWPACKS] section) — Slice BM.0 / BP.6.6.5
1453 * ========================================================================= */
1454
1469SWMM_ENGINE_API int swmm_subcatch_set_snowpack(SWMM_Engine engine, int idx, const char* name);
1480SWMM_ENGINE_API const char* swmm_subcatch_get_snowpack(SWMM_Engine engine, int idx);
1481
1491
1501SWMM_ENGINE_API int swmm_snowpack_index(SWMM_Engine engine, const char* id);
1502
1513SWMM_ENGINE_API const char* swmm_snowpack_id(SWMM_Engine engine, int idx);
1514
1533SWMM_ENGINE_API int swmm_snowpack_add(SWMM_Engine engine, const char* id);
1534
1556SWMM_ENGINE_API int swmm_snowpack_rename(SWMM_Engine engine, int idx, const char* new_id);
1557
1558/* -------------------------------------------------------------------------
1559 * Snowpack surface parameters
1560 *
1561 * A snowpack carries three snow-melt surfaces — PLOWABLE, IMPERVIOUS and
1562 * PERVIOUS — plus an optional REMOVAL row, matching the four line types of
1563 * the legacy `[SNOWPACKS]` section. Each surface takes seven values in
1564 * input-file units:
1565 *
1566 * cmin Minimum melt coefficient (in or mm /hr/deg)
1567 * cmax Maximum melt coefficient (in or mm /hr/deg)
1568 * tbase Snow-melt base temperature (deg F or C)
1569 * fwfrac Free-water capacity as a fraction of depth
1570 * sd0 Initial snow depth (in or mm water equiv.)
1571 * fw0 Initial free water (in or mm)
1572 * last PLOWABLE: fraction of the impervious area that is plowable;
1573 * IMPERVIOUS / PERVIOUS: snow depth above which there is 100% cover
1574 * (in or mm).
1575 *
1576 * Setters are pre-start-only (BUILDING / OPENED) — the surface parameters seed
1577 * per-subcatchment snow state at start(); a mid-run change returns
1578 * SWMM_ERR_LIFECYCLE. Each setter has an inverse getter so the GUI snowpack
1579 * editor can load existing definitions. Any getter out-param may be null.
1580 * ------------------------------------------------------------------------- */
1581
1601SWMM_ENGINE_API int swmm_snowpack_set_plowable(SWMM_Engine engine, int idx, double cmin,
1602 double cmax, double tbase, double fwfrac, double sd0,
1603 double fw0, double last);
1621SWMM_ENGINE_API int swmm_snowpack_get_plowable(SWMM_Engine engine, int idx, double* cmin,
1622 double* cmax, double* tbase, double* fwfrac,
1623 double* sd0, double* fw0, double* last);
1624
1644SWMM_ENGINE_API int swmm_snowpack_set_impervious(SWMM_Engine engine, int idx, double cmin,
1645 double cmax, double tbase, double fwfrac,
1646 double sd0, double fw0, double last);
1664SWMM_ENGINE_API int swmm_snowpack_get_impervious(SWMM_Engine engine, int idx, double* cmin,
1665 double* cmax, double* tbase, double* fwfrac,
1666 double* sd0, double* fw0, double* last);
1667
1687SWMM_ENGINE_API int swmm_snowpack_set_pervious(SWMM_Engine engine, int idx, double cmin,
1688 double cmax, double tbase, double fwfrac, double sd0,
1689 double fw0, double last);
1707SWMM_ENGINE_API int swmm_snowpack_get_pervious(SWMM_Engine engine, int idx, double* cmin,
1708 double* cmax, double* tbase, double* fwfrac,
1709 double* sd0, double* fw0, double* last);
1710
1729SWMM_ENGINE_API int swmm_snowpack_set_removal(SWMM_Engine engine, int idx, double dsnow,
1730 double fout, double fimp, double fperv, double fimelt,
1731 double fsubcatch);
1749SWMM_ENGINE_API int swmm_snowpack_get_removal(SWMM_Engine engine, int idx, double* dsnow,
1750 double* fout, double* fimp, double* fperv,
1751 double* fimelt, double* fsubcatch);
1752
1766 const char* name);
1781 int buflen);
1782
1783/* =========================================================================
1784 * Tag — free-form string label from the INP `[TAGS]` section
1785 * ========================================================================= */
1786
1800SWMM_ENGINE_API int swmm_subcatch_get_tag(SWMM_Engine engine, int idx, char* buf, int buflen);
1801
1813SWMM_ENGINE_API int swmm_subcatch_set_tag(SWMM_Engine engine, int idx, const char* tag);
1814
1828SWMM_ENGINE_API int swmm_subcatch_set_rain_scale_factor(SWMM_Engine engine, int idx, double factor);
1829
1843 double* factor);
1844
1858SWMM_ENGINE_API int swmm_subcatch_set_snow_scale_factor(SWMM_Engine engine, int idx, double factor);
1859
1873 double* factor);
1874
1875/* =========================================================================
1876 * Custom groundwater flow expressions ([GWF] section)
1877 * ========================================================================= */
1878
1889
1908SWMM_ENGINE_API int swmm_subcatch_get_gwf_expression(SWMM_Engine engine, int index, int type,
1909 char* buf, int buflen);
1910
1934SWMM_ENGINE_API int swmm_subcatch_set_gwf_expression(SWMM_Engine engine, int index, int type,
1935 const char* expr);
1936
1963SWMM_ENGINE_API int swmm_gwf_validate_expression(SWMM_Engine engine, const char* expr, char* errbuf,
1964 int buflen, int* col_out);
1965
1975
1989SWMM_ENGINE_API int swmm_gwf_variable_name(SWMM_Engine engine, int i, char* buf, int buflen);
1990
2005SWMM_ENGINE_API int swmm_gwf_variable_description(SWMM_Engine engine, int i, char* buf, int buflen);
2006
2016
2032SWMM_ENGINE_API int swmm_gwf_function_name(SWMM_Engine engine, int i, char* buf, int buflen);
2033
2034#ifdef __cplusplus
2035} /* extern "C" */
2036#endif
2037
2038#endif /* OPENSWMM_SUBCATCHMENTS_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_snowpack_get_plowable(SWMM_Engine engine, int idx, double *cmin, double *cmax, double *tbase, double *fwfrac, double *sd0, double *fw0, double *last)
Read the plowable snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1697
SWMM_ENGINE_API int swmm_subcatch_set_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double fraction)
Set the land use coverage percent for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:506
SWMM_ENGINE_API int swmm_aquifer_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename an aquifer in place.
Definition openswmm_subcatchments_impl.cpp:1317
SWMM_ENGINE_API int swmm_subcatch_get_n_perv(SWMM_Engine engine, int idx, double *n)
Get Manning's n for the pervious area.
Definition openswmm_subcatchments_impl.cpp:353
SWMM_ENGINE_API int swmm_subcatch_add(SWMM_Engine engine, const char *id)
Add a new subcatchment to the model.
Definition openswmm_subcatchments_impl.cpp:72
SWMM_ENGINE_API int swmm_aquifer_set_param(SWMM_Engine engine, int idx, int param, double value)
Set an aquifer parameter (input-file units).
Definition openswmm_subcatchments_impl.cpp:1420
SWMM_ENGINE_API int swmm_subcatch_set_snow_state(SWMM_Engine engine, int idx, int surface, double swe, double fw, double ati, double coldc)
Set degree-day snow state on one snow subarea of a subcatchment.
Definition openswmm_subcatchments_impl.cpp:952
SWMM_ENGINE_API int swmm_subcatch_set_gw_state(SWMM_Engine engine, int idx, double theta, double lower_depth)
Set the groundwater state on a subcatchment.
Definition openswmm_subcatchments_impl.cpp:910
SWMM_ENGINE_API int swmm_subcatch_set_n_imperv(SWMM_Engine engine, int idx, double n)
Set Manning's n for the impervious area.
Definition openswmm_subcatchments_impl.cpp:167
SWMM_ENGINE_API int swmm_subcatch_get_ids_bulk(SWMM_Engine engine, char *buf, int stride, int count)
Get subcatchment IDs for all subcatchments in a single call (stride-packed UTF-8).
Definition openswmm_subcatchments_impl.cpp:1172
SWMM_ENGINE_API int swmm_aquifer_set_evap_pattern(SWMM_Engine engine, int idx, const char *name)
Set or clear the aquifer's upper-zone evaporation pattern name.
Definition openswmm_subcatchments_impl.cpp:1476
SWMM_ENGINE_API int swmm_subcatch_set_rain_scale_factor(SWMM_Engine engine, int idx, double factor)
Replace the rain precipitation multiplier.
Definition openswmm_subcatchments_impl.cpp:1813
SWMM_ENGINE_API int swmm_subcatch_get_outlet(SWMM_Engine engine, int idx, int *node_idx)
Get the outlet node index for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:312
SWMM_ENGINE_API int swmm_subcatch_get_aquifer(SWMM_Engine engine, int idx, int *aquifer_idx)
Read the assigned aquifer used for groundwater.
Definition openswmm_subcatchments_impl.cpp:702
SWMM_ENGINE_API int swmm_subcatch_set_aquifer(SWMM_Engine engine, int idx, int aquifer_idx)
Assign the aquifer used for groundwater.
Definition openswmm_subcatchments_impl.cpp:693
SWMM_ENGINE_API int swmm_subcatch_get_quality(SWMM_Engine engine, int subcatch_idx, int pollutant_idx, double *conc)
Get the pollutant concentration in subcatchment runoff.
Definition openswmm_subcatchments_impl.cpp:1064
SWMM_ENGINE_API int swmm_subcatch_rename(SWMM_Engine engine, int idx, const char *newId)
Rename a subcatchment in its name registry.
Definition openswmm_subcatchments_impl.cpp:1222
SWMM_ENGINE_API int swmm_gwf_validate_expression(SWMM_Engine engine, const char *expr, char *errbuf, int buflen, int *col_out)
Validate a [GWF] expression WITHOUT modifying engine state.
Definition openswmm_subcatchments_impl.cpp:852
SWMM_ENGINE_API int swmm_subcatch_set_outlet_subcatch(SWMM_Engine engine, int idx, int sc_idx)
Set a subcatchment's outlet to another subcatchment (cascading).
Definition openswmm_subcatchments_impl.cpp:389
SWMM_ENGINE_API int swmm_subcatch_get_n_imperv(SWMM_Engine engine, int idx, double *n)
Get Manning's n for the impervious area.
Definition openswmm_subcatchments_impl.cpp:344
SWMM_ENGINE_API int swmm_gwf_variable_name(SWMM_Engine engine, int i, char *buf, int buflen)
Name of the i-th [GWF] variable (upper-case, e.g. "HGW").
Definition openswmm_subcatchments_impl.cpp:880
SWMM_ENGINE_API int swmm_snowpack_get_removal(SWMM_Engine engine, int idx, double *dsnow, double *fout, double *fimp, double *fperv, double *fimelt, double *fsubcatch)
Read snow redistribution parameters.
Definition openswmm_subcatchments_impl.cpp:1759
SWMM_ENGINE_API int swmm_subcatch_set_imperv_pct(SWMM_Engine engine, int idx, double pct)
Set the percentage of impervious area.
Definition openswmm_subcatchments_impl.cpp:146
SWMM_ENGINE_API int swmm_subcatch_set_rainfall(SWMM_Engine engine, int idx, double rainfall)
Overwrite the current subcatchment rainfall state during RUNNING.
Definition openswmm_subcatchments_impl.cpp:1049
SWMM_ENGINE_API int swmm_subcatch_get_gw_params(SWMM_Engine engine, int idx, double *surf_elev, double *a1, double *b1, double *a2, double *b2, double *a3, double *tw, double *hstar)
Read the input groundwater flow-law parameters.
Definition openswmm_subcatchments_impl.cpp:750
SWMM_ENGINE_API int swmm_subcatch_set_infil_horton(SWMM_Engine engine, int idx, double f0, double fmin, double decay, double dry_time)
Select ordinary Horton infiltration and store its input parameters.
Definition openswmm_subcatchments_impl.cpp:216
SWMM_ENGINE_API int swmm_subcatch_get_gw_node(SWMM_Engine engine, int idx, int *node_idx)
Read the assigned node receiving groundwater.
Definition openswmm_subcatchments_impl.cpp:720
SWMM_ENGINE_API int swmm_subcatch_set_gage(SWMM_Engine engine, int idx, int gage_idx)
Assign a rain gage to a subcatchment.
Definition openswmm_subcatchments_impl.cpp:203
SWMM_ENGINE_API int swmm_subcatch_get_stat_precip(SWMM_Engine engine, int idx, double *vol)
Get the total precipitation volume at a subcatchment.
Definition openswmm_subcatchments_impl.cpp:469
SWMM_ENGINE_API int swmm_snowpack_set_plowable(SWMM_Engine engine, int idx, double cmin, double cmax, double tbase, double fwfrac, double sd0, double fw0, double last)
Assign the plowable snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1688
SWMM_ENGINE_API int swmm_subcatch_get_runoff(SWMM_Engine engine, int idx, double *runoff)
Get the current runoff rate from a subcatchment.
Definition openswmm_subcatchments_impl.cpp:639
SWMM_ENGINE_API const char * swmm_snowpack_id(SWMM_Engine engine, int idx)
Get the string identifier of a snowpack definition by index.
Definition openswmm_subcatchments_impl.cpp:1529
SWMM_ENGINE_API int swmm_aquifer_index(SWMM_Engine engine, const char *id)
Look up an aquifer's zero-based index by its string identifier.
Definition openswmm_subcatchments_impl.cpp:1269
SWMM_ENGINE_API int swmm_subcatch_set_snow_scale_factor(SWMM_Engine engine, int idx, double factor)
Replace the snow precipitation multiplier.
Definition openswmm_subcatchments_impl.cpp:1834
SWMM_ENGINE_API int swmm_gwf_function_name(SWMM_Engine engine, int i, char *buf, int buflen)
Name of the i-th expression function (lower-case, stable order: abs, sgn, sqrt, log,...
Definition openswmm_subcatchments_impl.cpp:899
SWMM_ENGINE_API int swmm_subcatch_get_slope(SWMM_Engine engine, int idx, double *s)
Get the average surface slope.
Definition openswmm_subcatchments_impl.cpp:332
SWMM_ENGINE_API int swmm_aquifer_add(SWMM_Engine engine, const char *id)
Add a new aquifer definition with default (zero) parameters.
Definition openswmm_subcatchments_impl.cpp:1286
SWMM_ENGINE_API int swmm_subcatch_get_ds_imperv(SWMM_Engine engine, int idx, double *ds)
Get the depression storage depth for the impervious area.
Definition openswmm_subcatchments_impl.cpp:362
SWMM_ENGINE_API int swmm_snowpack_set_impervious(SWMM_Engine engine, int idx, double cmin, double cmax, double tbase, double fwfrac, double sd0, double fw0, double last)
Assign the impervious snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1706
SWMM_ENGINE_API int swmm_subcatch_get_imperv_pct(SWMM_Engine engine, int idx, double *pct)
Get the percentage of impervious area.
Definition openswmm_subcatchments_impl.cpp:293
SWMM_ENGINE_API int swmm_subcatch_set_outlet(SWMM_Engine engine, int idx, int node_idx)
Set the outlet node that receives runoff from this subcatchment.
Definition openswmm_subcatchments_impl.cpp:103
SWMM_ENGINE_API int swmm_subcatch_get_infil_bulk(SWMM_Engine engine, double *buf, int count)
Copy infil values for a prefix of subcatchments.
Definition openswmm_subcatchments_impl.cpp:1147
SWMM_ENGINE_API int swmm_subcatch_get_snow_depth_bulk(SWMM_Engine engine, double *buf, int count)
Copy snow depth values for a prefix of subcatchments.
Definition openswmm_subcatchments_impl.cpp:1160
SWMM_ENGINE_API int swmm_subcatch_set_tag(SWMM_Engine engine, int idx, const char *tag)
Replace or clear a copied subcatchment tag.
Definition openswmm_subcatchments_impl.cpp:1248
SWMM_ENGINE_API int swmm_subcatch_set_ds_perv(SWMM_Engine engine, int idx, double ds)
Set the depression storage depth for the pervious area.
Definition openswmm_subcatchments_impl.cpp:194
SWMM_ENGINE_API int swmm_subcatch_set_zero_imperv_pct(SWMM_Engine engine, int idx, double pct)
Set the percentage of the impervious area having no depression storage.
Definition openswmm_subcatchments_impl.cpp:156
SWMM_ENGINE_API int swmm_subcatch_get_infil_horton(SWMM_Engine engine, int idx, double *f0, double *fmin, double *decay, double *dry_time)
Get Horton infiltration parameters for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:420
SWMM_ENGINE_API int swmm_subcatch_get_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double *fraction)
Get the land use coverage percent for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:526
SWMM_ENGINE_API int swmm_subcatch_get_gw_state(SWMM_Engine engine, int idx, double *theta, double *lower_depth)
Get the groundwater state on a subcatchment.
Definition openswmm_subcatchments_impl.cpp:934
SWMM_ENGINE_API int swmm_snowpack_get_removal_subcatch(SWMM_Engine engine, int idx, char *buf, int buflen)
Copy the snow-removal destination name.
Definition openswmm_subcatchments_impl.cpp:1792
SWMM_ENGINE_API int swmm_snowpack_set_removal_subcatch(SWMM_Engine engine, int idx, const char *name)
Set or clear the copied snow-removal destination name.
Definition openswmm_subcatchments_impl.cpp:1781
SWMM_ENGINE_API int swmm_subcatch_get_tag(SWMM_Engine engine, int idx, char *buf, int buflen)
Copy a subcatchment tag.
Definition openswmm_subcatchments_impl.cpp:1232
SWMM_ENGINE_API int swmm_subcatch_get_infil(SWMM_Engine engine, int idx, double *infil)
Get the current infiltration rate at a subcatchment.
Definition openswmm_subcatchments_impl.cpp:1034
SWMM_ENGINE_API int swmm_subcatch_get_coverages(SWMM_Engine engine, int sc_idx, double *out, int n)
Get all land use coverage percents for a subcatchment in one call.
Definition openswmm_subcatchments_impl.cpp:546
SWMM_ENGINE_API int swmm_subcatch_set_gw_params(SWMM_Engine engine, int idx, double surf_elev, double a1, double b1, double a2, double b2, double a3, double tw, double hstar)
Assign the input groundwater flow-law parameters.
Definition openswmm_subcatchments_impl.cpp:731
SWMM_ENGINE_API const char * swmm_aquifer_id(SWMM_Engine engine, int idx)
Get the string identifier of an aquifer definition by index.
Definition openswmm_subcatchments_impl.cpp:1277
SWMM_ENGINE_API int swmm_snowpack_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename a snow pack in place.
Definition openswmm_subcatchments_impl.cpp:1561
SWMM_ENGINE_API int swmm_subcatch_get_infil_model(SWMM_Engine engine, int idx, int *model)
Get the infiltration model type for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:411
SWMM_ENGINE_API int swmm_subcatch_get_infil_green_ampt(SWMM_Engine engine, int idx, double *suction, double *conductivity, double *deficit)
Get Green–Ampt infiltration parameters for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:437
SWMM_ENGINE_API int swmm_gwf_variable_count(SWMM_Engine engine)
Number of variables a [GWF] expression may reference.
Definition openswmm_subcatchments_impl.cpp:874
SWMM_ENGINE_API int swmm_subcatch_set_gw_node(SWMM_Engine engine, int idx, int node_idx)
Assign the node receiving groundwater.
Definition openswmm_subcatchments_impl.cpp:711
SWMM_ENGINE_API int swmm_subcatch_get_evap_bulk(SWMM_Engine engine, double *buf, int count)
Copy evap values for a prefix of subcatchments.
Definition openswmm_subcatchments_impl.cpp:1134
SWMM_ENGINE_API int swmm_subcatch_get_stat_runoff_vol(SWMM_Engine engine, int idx, double *vol)
Get the total runoff volume from a subcatchment.
Definition openswmm_subcatchments_impl.cpp:480
SWMM_ENGINE_API int swmm_subcatch_get_stat_max_runoff(SWMM_Engine engine, int idx, double *rate)
Get the maximum runoff rate from a subcatchment.
Definition openswmm_subcatchments_impl.cpp:491
SWMM_ENGINE_API int swmm_subcatch_get_snow_state(SWMM_Engine engine, int idx, int surface, double *swe, double *fw, double *ati, double *coldc)
Get degree-day snow state on one snow subarea of a subcatchment. UEB callers use swmm_subcatch_get_sn...
Definition openswmm_subcatchments_impl.cpp:991
SWMM_ENGINE_API int swmm_subcatch_get_rain_scale_factor(SWMM_Engine engine, int idx, double *factor)
Read the rain precipitation multiplier.
Definition openswmm_subcatchments_impl.cpp:1824
SWMM_ENGINE_API int swmm_subcatch_get_snow_scale_factor(SWMM_Engine engine, int idx, double *factor)
Read the snow precipitation multiplier.
Definition openswmm_subcatchments_impl.cpp:1845
SWMM_ENGINE_API int swmm_snowpack_count(SWMM_Engine engine)
Get the total number of snowpack definitions in the model.
Definition openswmm_subcatchments_impl.cpp:1515
SWMM_ENGINE_API int swmm_subcatch_set_infil_model(SWMM_Engine engine, int idx, int model)
Set ONLY the infiltration model code for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:268
SWMM_ENGINE_API int swmm_subcatch_set_initial_loading(SWMM_Engine engine, int sc_idx, int pollut_idx, double buildup)
Set the initial pollutant buildup on a subcatchment.
Definition openswmm_subcatchments_impl.cpp:567
SWMM_ENGINE_API int swmm_subcatch_set_gwf_expression(SWMM_Engine engine, int index, int type, const char *expr)
Set or clear a subcatchment's custom groundwater flow expression.
Definition openswmm_subcatchments_impl.cpp:835
SWMM_ENGINE_API const char * swmm_subcatch_id(SWMM_Engine engine, int idx)
Get the string identifier of a subcatchment by index.
Definition openswmm_subcatchments_impl.cpp:59
SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area)
Set the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:112
SWMM_ENGINE_API int swmm_aquifer_count(SWMM_Engine engine)
Get the total number of aquifer definitions in the model.
Definition openswmm_subcatchments_impl.cpp:1263
SWMM_ENGINE_API int swmm_snowpack_add(SWMM_Engine engine, const char *id)
Add a new snowpack definition with default (zero) parameters.
Definition openswmm_subcatchments_impl.cpp:1538
SWMM_ENGINE_API int swmm_subcatch_get_ponded_quality(SWMM_Engine engine, int subcatch_idx, int pollutant_idx, double *mass)
Read a pollutant's ponded surface mass.
Definition openswmm_subcatchments_impl.cpp:1194
SWMM_ENGINE_API int swmm_subcatch_get_quality_bulk(SWMM_Engine engine, int pollutant_idx, double *buf, int count)
Get pollutant concentrations for all subcatchments for one pollutant.
Definition openswmm_subcatchments_impl.cpp:1095
SWMM_ENGINE_API int swmm_subcatch_get_groundwater(SWMM_Engine engine, int idx, double *gw_flow)
Get the current groundwater flow from a subcatchment.
Definition openswmm_subcatchments_impl.cpp:650
SWMM_ENGINE_API int swmm_aquifer_get_param(SWMM_Engine engine, int idx, int param, double *value)
Get an aquifer parameter (input-file units).
Definition openswmm_subcatchments_impl.cpp:1407
SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double *area)
Get the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:283
SWMM_ENGINE_API int swmm_subcatch_set_snowpack(SWMM_Engine engine, int idx, const char *name)
Assign an existing snowpack before initialization.
Definition openswmm_subcatchments_impl.cpp:1492
SWMM_ENGINE_API const char * swmm_subcatch_get_snowpack(SWMM_Engine engine, int idx)
Borrow the assigned snowpack ID.
Definition openswmm_subcatchments_impl.cpp:1505
SWMM_ENGINE_API int swmm_gwf_function_count(SWMM_Engine engine)
Number of built-in functions a [GWF] expression may call.
Definition openswmm_subcatchments_impl.cpp:893
SWMM_GwfType
Which of a subcatchment's two custom groundwater flow expressions.
Definition openswmm_subcatchments.h:1888
@ SWMM_GWF_LATERAL
Definition openswmm_subcatchments.h:1888
@ SWMM_GWF_DEEP
Definition openswmm_subcatchments.h:1888
SWMM_ENGINE_API int swmm_snowpack_set_pervious(SWMM_Engine engine, int idx, double cmin, double cmax, double tbase, double fwfrac, double sd0, double fw0, double last)
Assign the pervious snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1724
SWMM_ENGINE_API int swmm_subcatch_get_evap(SWMM_Engine engine, int idx, double *evap)
Get the current evaporation rate at a subcatchment.
Definition openswmm_subcatchments_impl.cpp:1023
SWMM_ENGINE_API int swmm_subcatch_set_infil_green_ampt(SWMM_Engine engine, int idx, double suction, double conductivity, double initial_deficit)
Select ordinary Green-Ampt infiltration and store input parameters.
Definition openswmm_subcatchments_impl.cpp:231
SWMM_ENGINE_API int swmm_subcatch_set_width(SWMM_Engine engine, int idx, double width)
Set the characteristic overland flow width.
Definition openswmm_subcatchments_impl.cpp:121
SWMM_ENGINE_API int swmm_subcatch_get_ds_perv(SWMM_Engine engine, int idx, double *ds)
Get the depression storage depth for the pervious area.
Definition openswmm_subcatchments_impl.cpp:371
SWMM_ENGINE_API int swmm_subcatch_get_runoff_bulk(SWMM_Engine engine, double *buf, int count)
Get runoff rates for all subcatchments in a single call.
Definition openswmm_subcatchments_impl.cpp:1082
SWMM_ENGINE_API int swmm_subcatch_set_ds_imperv(SWMM_Engine engine, int idx, double ds)
Set the depression storage depth for the impervious area.
Definition openswmm_subcatchments_impl.cpp:185
SWMM_ENGINE_API int swmm_subcatch_get_infil_curve_number(SWMM_Engine engine, int idx, double *cn, double *drying_time)
Get the Curve Number infiltration parameters for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:452
SWMM_ENGINE_API int swmm_subcatch_get_rainfall_bulk(SWMM_Engine engine, double *buf, int count)
Copy rainfall values for a prefix of subcatchments.
Definition openswmm_subcatchments_impl.cpp:1121
SWMM_AquiferParam
Aquifer parameter codes for swmm_aquifer_get_param / _set_param.
Definition openswmm_subcatchments.h:1355
@ SWMM_AQUIFER_WATER_TABLE_ELEV
Definition openswmm_subcatchments.h:1366
@ SWMM_AQUIFER_LOWER_EVAP_DEPTH
Definition openswmm_subcatchments.h:1363
@ SWMM_AQUIFER_WILTING_POINT
Definition openswmm_subcatchments.h:1357
@ SWMM_AQUIFER_CONDUCTIVITY
Definition openswmm_subcatchments.h:1359
@ SWMM_AQUIFER_UPPER_EVAP_FRAC
Definition openswmm_subcatchments.h:1362
@ SWMM_AQUIFER_LOWER_LOSS_COEFF
Definition openswmm_subcatchments.h:1364
@ SWMM_AQUIFER_BOTTOM_ELEV
Definition openswmm_subcatchments.h:1365
@ SWMM_AQUIFER_UPPER_MOISTURE
Definition openswmm_subcatchments.h:1367
@ SWMM_AQUIFER_TENSION_SLOPE
Definition openswmm_subcatchments.h:1361
@ SWMM_AQUIFER_POROSITY
Definition openswmm_subcatchments.h:1356
@ SWMM_AQUIFER_CONDUCT_SLOPE
Definition openswmm_subcatchments.h:1360
@ SWMM_AQUIFER_FIELD_CAPACITY
Definition openswmm_subcatchments.h:1358
SWMM_ENGINE_API int swmm_snowpack_set_removal(SWMM_Engine engine, int idx, double dsnow, double fout, double fimp, double fperv, double fimelt, double fsubcatch)
Assign snow redistribution parameters.
Definition openswmm_subcatchments_impl.cpp:1742
SWMM_ENGINE_API int swmm_subcatch_get_outlet_subcatch(SWMM_Engine engine, int idx, int *sc_idx)
Get the downstream subcatchment index (for cascading outlets).
Definition openswmm_subcatchments_impl.cpp:398
SWMM_ENGINE_API int swmm_snowpack_get_impervious(SWMM_Engine engine, int idx, double *cmin, double *cmax, double *tbase, double *fwfrac, double *sd0, double *fw0, double *last)
Read the impervious snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1715
SWMM_ENGINE_API int swmm_subcatch_get_zero_imperv_pct(SWMM_Engine engine, int idx, double *pct)
Get the percentage of the impervious area having no depression storage.
Definition openswmm_subcatchments_impl.cpp:302
SWMM_ENGINE_API int swmm_snowpack_get_pervious(SWMM_Engine engine, int idx, double *cmin, double *cmax, double *tbase, double *fwfrac, double *sd0, double *fw0, double *last)
Read the pervious snow-melt surface parameters.
Definition openswmm_subcatchments_impl.cpp:1733
SWMM_ENGINE_API int swmm_subcatch_set_n_perv(SWMM_Engine engine, int idx, double n)
Set Manning's n for the pervious area.
Definition openswmm_subcatchments_impl.cpp:176
SWMM_ENGINE_API int swmm_subcatch_get_width(SWMM_Engine engine, int idx, double *w)
Get the characteristic overland flow width.
Definition openswmm_subcatchments_impl.cpp:321
SWMM_ENGINE_API int swmm_subcatch_set_infil_curve_number(SWMM_Engine engine, int idx, double cn, double drying_time)
Set Curve Number infiltration parameters.
Definition openswmm_subcatchments_impl.cpp:246
SWMM_ENGINE_API int swmm_subcatch_count(SWMM_Engine engine)
Get the total number of subcatchments in the model.
Definition openswmm_subcatchments_impl.cpp:47
SWMM_ENGINE_API int swmm_gwf_variable_description(SWMM_Engine engine, int i, char *buf, int buflen)
Short English description of the i-th [GWF] variable, with a units placeholder, e....
Definition openswmm_subcatchments_impl.cpp:886
SWMM_ENGINE_API int swmm_subcatch_get_rainfall(SWMM_Engine engine, int idx, double *rainfall)
Get the current rainfall intensity at a subcatchment.
Definition openswmm_subcatchments_impl.cpp:661
SWMM_ENGINE_API int swmm_subcatch_get_gwf_expression(SWMM_Engine engine, int index, int type, char *buf, int buflen)
Read a subcatchment's custom groundwater flow expression.
Definition openswmm_subcatchments_impl.cpp:821
SWMM_ENGINE_API int swmm_subcatch_get_gage(SWMM_Engine engine, int idx, int *gage_idx)
Get the rain gage index assigned to a subcatchment.
Definition openswmm_subcatchments_impl.cpp:380
SWMM_ENGINE_API int swmm_subcatch_set_slope(SWMM_Engine engine, int idx, double slope)
Set the average surface slope.
Definition openswmm_subcatchments_impl.cpp:132
SWMM_ENGINE_API int swmm_snowpack_index(SWMM_Engine engine, const char *id)
Look up a snowpack's zero-based index by its string identifier.
Definition openswmm_subcatchments_impl.cpp:1521
SWMM_ENGINE_API int swmm_subcatch_get_snow_depth(SWMM_Engine engine, int idx, double *depth)
Get the current snow depth on a subcatchment.
Definition openswmm_subcatchments_impl.cpp:672
SWMM_ENGINE_API int swmm_aquifer_get_evap_pattern(SWMM_Engine engine, int idx, char *buf, int buflen)
Read the aquifer's upper-zone evaporation pattern name.
Definition openswmm_subcatchments_impl.cpp:1462
SWMM_ENGINE_API int swmm_subcatch_index(SWMM_Engine engine, const char *id)
Look up a subcatchment's zero-based index by its string identifier.
Definition openswmm_subcatchments_impl.cpp:53
SWMM_ENGINE_API int swmm_subcatch_get_initial_loading(SWMM_Engine engine, int sc_idx, int pollut_idx, double *buildup)
Get the initial pollutant buildup on a subcatchment.
Definition openswmm_subcatchments_impl.cpp:602
SWMM_ENGINE_API int swmm_subcatch_set_ponded_quality(SWMM_Engine engine, int subcatch_idx, int pollutant_idx, double mass)
Replace a pollutant's ponded surface mass.
Definition openswmm_subcatchments_impl.cpp:1208