OpenSWMM Engine  6.0.0-alpha.3
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.3)
Loading...
Searching...
No Matches
openswmm_subcatchments.h
Go to the documentation of this file.
1
15
16#ifndef OPENSWMM_SUBCATCHMENTS_H
17#define OPENSWMM_SUBCATCHMENTS_H
18
19#include "openswmm_engine.h"
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/* =========================================================================
26 * Identity
27 * ========================================================================= */
28
35
42SWMM_ENGINE_API int swmm_subcatch_index(SWMM_Engine engine, const char* id);
43
50SWMM_ENGINE_API const char* swmm_subcatch_id(SWMM_Engine engine, int idx);
51
52/* =========================================================================
53 * Creation (BUILDING or OPENED — "editable" states)
54 * ========================================================================= */
55
69SWMM_ENGINE_API int swmm_subcatch_add(SWMM_Engine engine, const char* id);
70
71/* =========================================================================
72 * Property setters (BUILDING or OPENED)
73 * ========================================================================= */
74
82SWMM_ENGINE_API int swmm_subcatch_set_outlet(SWMM_Engine engine, int idx, int node_idx);
83
91SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area);
92
100SWMM_ENGINE_API int swmm_subcatch_set_width(SWMM_Engine engine, int idx, double width);
101
109SWMM_ENGINE_API int swmm_subcatch_set_slope(SWMM_Engine engine, int idx, double slope);
110
118SWMM_ENGINE_API int swmm_subcatch_set_imperv_pct(SWMM_Engine engine, int idx, double pct);
119
127SWMM_ENGINE_API int swmm_subcatch_set_n_imperv(SWMM_Engine engine, int idx, double n);
128
136SWMM_ENGINE_API int swmm_subcatch_set_n_perv(SWMM_Engine engine, int idx, double n);
137
145SWMM_ENGINE_API int swmm_subcatch_set_ds_imperv(SWMM_Engine engine, int idx, double ds);
146
154SWMM_ENGINE_API int swmm_subcatch_set_ds_perv(SWMM_Engine engine, int idx, double ds);
155
163SWMM_ENGINE_API int swmm_subcatch_set_gage(SWMM_Engine engine, int idx, int gage_idx);
164
165/* --- Infiltration parameters (BUILDING or OPENED) --- */
166
169 double f0, double fmin,
170 double decay, double dry_time);
171
174 double suction, double conductivity,
175 double initial_deficit);
176
179 double cn);
180
194SWMM_ENGINE_API int swmm_subcatch_set_infil_model(SWMM_Engine engine, int idx, int model);
195
196/* =========================================================================
197 * Property getters
198 * ========================================================================= */
199
207SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double* area);
208
216SWMM_ENGINE_API int swmm_subcatch_get_imperv_pct(SWMM_Engine engine, int idx, double* pct);
217
225SWMM_ENGINE_API int swmm_subcatch_get_outlet(SWMM_Engine engine, int idx, int* node_idx);
226
234SWMM_ENGINE_API int swmm_subcatch_get_width(SWMM_Engine engine, int idx, double* w);
235
243SWMM_ENGINE_API int swmm_subcatch_get_slope(SWMM_Engine engine, int idx, double* s);
244
252SWMM_ENGINE_API int swmm_subcatch_get_n_imperv(SWMM_Engine engine, int idx, double* n);
253
261SWMM_ENGINE_API int swmm_subcatch_get_n_perv(SWMM_Engine engine, int idx, double* n);
262
270SWMM_ENGINE_API int swmm_subcatch_get_ds_imperv(SWMM_Engine engine, int idx, double* ds);
271
279SWMM_ENGINE_API int swmm_subcatch_get_ds_perv(SWMM_Engine engine, int idx, double* ds);
280
288SWMM_ENGINE_API int swmm_subcatch_get_gage(SWMM_Engine engine, int idx, int* gage_idx);
289
302SWMM_ENGINE_API int swmm_subcatch_set_outlet_subcatch(SWMM_Engine engine, int idx, int sc_idx);
303
311SWMM_ENGINE_API int swmm_subcatch_get_outlet_subcatch(SWMM_Engine engine, int idx, int* sc_idx);
312
313/* =========================================================================
314 * Infiltration getters
315 * ========================================================================= */
316
328SWMM_ENGINE_API int swmm_subcatch_get_infil_model(SWMM_Engine engine, int idx, int* model);
329
341 double* f0, double* fmin,
342 double* decay, double* dry_time);
343
354 double* suction, double* conductivity,
355 double* deficit);
356
365
366/* =========================================================================
367 * Subcatchment statistics
368 * ========================================================================= */
369
377SWMM_ENGINE_API int swmm_subcatch_get_stat_precip(SWMM_Engine engine, int idx, double* vol);
378
386SWMM_ENGINE_API int swmm_subcatch_get_stat_runoff_vol(SWMM_Engine engine, int idx, double* vol);
387
395SWMM_ENGINE_API int swmm_subcatch_get_stat_max_runoff(SWMM_Engine engine, int idx, double* rate);
396
397/* =========================================================================
398 * Subcatchment landuse coverage
399 * ========================================================================= */
400
413SWMM_ENGINE_API int swmm_subcatch_set_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double fraction);
414
423SWMM_ENGINE_API int swmm_subcatch_get_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double* fraction);
424
425/* =========================================================================
426 * Hydraulic state getters
427 * ========================================================================= */
428
436SWMM_ENGINE_API int swmm_subcatch_get_runoff(SWMM_Engine engine, int idx, double* runoff);
437
445SWMM_ENGINE_API int swmm_subcatch_get_groundwater(SWMM_Engine engine, int idx, double* gw_flow);
446
454SWMM_ENGINE_API int swmm_subcatch_get_rainfall(SWMM_Engine engine, int idx, double* rainfall);
455
463SWMM_ENGINE_API int swmm_subcatch_get_snow_depth(SWMM_Engine engine, int idx, double* depth);
464
472SWMM_ENGINE_API int swmm_subcatch_get_evap(SWMM_Engine engine, int idx, double* evap);
473
474/* =========================================================================
475 * Groundwater configuration ([GROUNDWATER])
476 * =========================================================================
477 * Configure a subcatchment's [GROUNDWATER] flow routing. Values are stored
478 * exactly as parsed from the input file (raw user units) so they round-trip
479 * identically. Distinct from the runtime gw STATE (theta / lower_depth)
480 * injected via swmm_subcatch_set_gw_state. All are BUILDING/OPENED editable.
481 */
482
484SWMM_ENGINE_API int swmm_subcatch_set_aquifer(SWMM_Engine engine, int idx, int aquifer_idx);
485
487SWMM_ENGINE_API int swmm_subcatch_get_aquifer(SWMM_Engine engine, int idx, int* aquifer_idx);
488
490SWMM_ENGINE_API int swmm_subcatch_set_gw_node(SWMM_Engine engine, int idx, int node_idx);
491
493SWMM_ENGINE_API int swmm_subcatch_get_gw_node(SWMM_Engine engine, int idx, int* node_idx);
494
506 double surf_elev, double a1, double b1,
507 double a2, double b2, double a3,
508 double tw, double hstar);
509
512 double* surf_elev, double* a1, double* b1,
513 double* a2, double* b2, double* a3,
514 double* tw, double* hstar);
515
516/* =========================================================================
517 * State injection (data assimilation)
518 * ========================================================================= */
519
536 double theta, double lower_depth);
537
548 double* theta, double* lower_depth);
549
567 int surface, double swe, double fw,
568 double ati, double coldc);
569
583 int surface, double* swe, double* fw,
584 double* ati, double* coldc);
585
593SWMM_ENGINE_API int swmm_subcatch_get_infil(SWMM_Engine engine, int idx, double* infil);
594
595/* --- Runtime forcing (RUNNING state only) --- */
596
604SWMM_ENGINE_API int swmm_subcatch_set_rainfall(SWMM_Engine engine, int idx, double rainfall);
605
606/* =========================================================================
607 * Water quality
608 * ========================================================================= */
609
618SWMM_ENGINE_API int swmm_subcatch_get_quality(SWMM_Engine engine, int subcatch_idx,
619 int pollutant_idx, double* conc);
620
621/* =========================================================================
622 * Bulk access
623 * ========================================================================= */
624
632SWMM_ENGINE_API int swmm_subcatch_get_runoff_bulk(SWMM_Engine engine, double* buf, int count);
633
643 double* buf, int count);
644
645/* =========================================================================
646 * Phase 3 bulk getters — added in OpenSWMM 6.0.0 to eliminate the N
647 * round-trip cost of per-subcatchment scalar accessors. All return a
648 * caller-allocated @c double buffer of length @c count (clipped at
649 * @c swmm_subcatch_count()); the IDs variant returns a stride-packed
650 * UTF-8 buffer following the same format as @ref swmm_node_get_ids_bulk.
651 * ========================================================================= */
652
658SWMM_ENGINE_API int swmm_subcatch_get_rainfall_bulk(SWMM_Engine engine, double* buf, int count);
659
666SWMM_ENGINE_API int swmm_subcatch_get_evap_bulk(SWMM_Engine engine, double* buf, int count);
667
674SWMM_ENGINE_API int swmm_subcatch_get_infil_bulk(SWMM_Engine engine, double* buf, int count);
675
684SWMM_ENGINE_API int swmm_subcatch_get_snow_depth_bulk(SWMM_Engine engine, double* buf, int count);
685
701 char* buf,
702 int stride,
703 int count);
704
705/* =========================================================================
706 * Ponded quality (mass in standing water between events)
707 * ========================================================================= */
708
711 int subcatch_idx, int pollutant_idx, double* mass);
712
715 int subcatch_idx, int pollutant_idx, double mass);
716
720SWMM_ENGINE_API int swmm_subcatch_rename(SWMM_Engine engine, int idx, const char* newId);
721
722/* =========================================================================
723 * Aquifer definitions ([AQUIFERS] section) — Slice BM.0 / BP.6.6.4
724 * ========================================================================= */
725
732
739SWMM_ENGINE_API int swmm_aquifer_index(SWMM_Engine engine, const char* id);
740
747SWMM_ENGINE_API const char* swmm_aquifer_id(SWMM_Engine engine, int idx);
748
760SWMM_ENGINE_API int swmm_aquifer_add(SWMM_Engine engine, const char* id);
761
788
797SWMM_ENGINE_API int swmm_aquifer_get_param(SWMM_Engine engine, int idx, int param, double* value);
798
813SWMM_ENGINE_API int swmm_aquifer_set_param(SWMM_Engine engine, int idx, int param, double value);
814
832SWMM_ENGINE_API int swmm_aquifer_get_evap_pattern(SWMM_Engine engine, int idx, char* buf, int buflen);
833
848SWMM_ENGINE_API int swmm_aquifer_set_evap_pattern(SWMM_Engine engine, int idx, const char* name);
849
850/* =========================================================================
851 * Snowpack definitions ([SNOWPACKS] section) — Slice BM.0 / BP.6.6.5
852 * ========================================================================= */
853
860
867SWMM_ENGINE_API int swmm_snowpack_index(SWMM_Engine engine, const char* id);
868
875SWMM_ENGINE_API const char* swmm_snowpack_id(SWMM_Engine engine, int idx);
876
890SWMM_ENGINE_API int swmm_snowpack_add(SWMM_Engine engine, const char* id);
891
892/* -------------------------------------------------------------------------
893 * Snowpack surface parameters
894 *
895 * A snowpack carries three snow-melt surfaces — PLOWABLE, IMPERVIOUS and
896 * PERVIOUS — plus an optional REMOVAL row, matching the four line types of
897 * the legacy `[SNOWPACKS]` section. Each surface takes seven values in
898 * input-file units:
899 *
900 * cmin Minimum melt coefficient (in or mm /hr/deg)
901 * cmax Maximum melt coefficient (in or mm /hr/deg)
902 * tbase Snow-melt base temperature (deg F or C)
903 * fwfrac Free-water capacity as a fraction of depth
904 * sd0 Initial snow depth (in or mm water equiv.)
905 * fw0 Initial free water (in or mm)
906 * last PLOWABLE: fraction of the impervious area that is plowable;
907 * IMPERVIOUS / PERVIOUS: snow depth above which there is 100% cover
908 * (in or mm).
909 *
910 * Setters are pre-start-only (BUILDING / OPENED) — the surface parameters seed
911 * per-subcatchment snow state at start(); a mid-run change returns
912 * SWMM_ERR_LIFECYCLE. Each setter has an inverse getter so the GUI snowpack
913 * editor can load existing definitions. Any getter out-param may be null.
914 * ------------------------------------------------------------------------- */
915
918 double cmin, double cmax, double tbase,
919 double fwfrac, double sd0, double fw0, double last);
922 double* cmin, double* cmax, double* tbase,
923 double* fwfrac, double* sd0, double* fw0, double* last);
924
927 double cmin, double cmax, double tbase,
928 double fwfrac, double sd0, double fw0, double last);
931 double* cmin, double* cmax, double* tbase,
932 double* fwfrac, double* sd0, double* fw0, double* last);
933
936 double cmin, double cmax, double tbase,
937 double fwfrac, double sd0, double fw0, double last);
940 double* cmin, double* cmax, double* tbase,
941 double* fwfrac, double* sd0, double* fw0, double* last);
942
955 double dsnow, double fout, double fimp,
956 double fperv, double fimelt, double fsubcatch);
959 double* dsnow, double* fout, double* fimp,
960 double* fperv, double* fimelt, double* fsubcatch);
961
963SWMM_ENGINE_API int swmm_snowpack_set_removal_subcatch(SWMM_Engine engine, int idx, const char* name);
965SWMM_ENGINE_API int swmm_snowpack_get_removal_subcatch(SWMM_Engine engine, int idx, char* buf, int buflen);
966
967/* =========================================================================
968 * Tag — free-form string label from the INP `[TAGS]` section
969 * ========================================================================= */
970
973 char* buf, int buflen);
974
977 const char* tag);
978
995 double factor);
996
999 double* factor);
1000
1018 double factor);
1019
1022 double* factor);
1023
1024#ifdef __cplusplus
1025} /* extern "C" */
1026#endif
1027
1028#endif /* OPENSWMM_SUBCATCHMENTS_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:37
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:35
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_subcatch_set_infil_curve_number(SWMM_Engine engine, int idx, double cn)
Set Curve Number infiltration parameter.
Definition openswmm_subcatchments_impl.cpp:205
SWMM_ENGINE_API int swmm_subcatch_get_infil_curve_number(SWMM_Engine engine, int idx, double *cn)
Get the Curve Number infiltration parameter for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:379
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 surface parameters. Inverse of swmm_snowpack_set_plowable.
Definition openswmm_subcatchments_impl.cpp:1162
SWMM_ENGINE_API int swmm_subcatch_set_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double fraction)
Set the land use coverage fraction for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:422
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:291
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:49
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:1013
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 the snow pack state on one snow subarea of a subcatchment.
Definition openswmm_subcatchments_impl.cpp:634
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:593
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:125
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:825
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:1064
SWMM_ENGINE_API int swmm_subcatch_set_rain_scale_factor(SWMM_Engine engine, int idx, double factor)
Set the subcatchment's rainfall scale factor (optional token 9 of [SUBCATCHMENTS]; default 1....
Definition openswmm_subcatchments_impl.cpp:1258
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:255
SWMM_ENGINE_API int swmm_subcatch_get_aquifer(SWMM_Engine engine, int idx, int *aquifer_idx)
Get the aquifer index assigned to a subcatchment (-1 = none).
Definition openswmm_subcatchments_impl.cpp:523
SWMM_ENGINE_API int swmm_subcatch_set_aquifer(SWMM_Engine engine, int idx, int aquifer_idx)
Assign the aquifer (by index, -1 = none) used by a subcatchment.
Definition openswmm_subcatchments_impl.cpp:514
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:727
SWMM_ENGINE_API int swmm_subcatch_rename(SWMM_Engine engine, int idx, const char *newId)
Rename the subcatchment at idx to newId. Returns SWMM_ERR_BADPARAM if newId is null,...
Definition openswmm_subcatchments_impl.cpp:877
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:323
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:283
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 the REMOVAL parameters. Inverse of swmm_snowpack_set_removal.
Definition openswmm_subcatchments_impl.cpp:1214
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:116
SWMM_ENGINE_API int swmm_subcatch_set_rainfall(SWMM_Engine engine, int idx, double rainfall)
Override rainfall on a subcatchment for the current timestep.
Definition openswmm_subcatchments_impl.cpp:713
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)
Get the groundwater flow parameters (see swmm_subcatch_set_gw_params).
Definition openswmm_subcatchments_impl.cpp:570
SWMM_ENGINE_API int swmm_subcatch_set_infil_horton(SWMM_Engine engine, int idx, double f0, double fmin, double decay, double dry_time)
Set Horton infiltration parameters.
Definition openswmm_subcatchments_impl.cpp:174
SWMM_ENGINE_API int swmm_subcatch_get_gw_node(SWMM_Engine engine, int idx, int *node_idx)
Get the node index receiving the subcatchment's groundwater flow (-1 = none).
Definition openswmm_subcatchments_impl.cpp:540
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:161
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:391
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)
Set the PLOWABLE surface parameters (last = plowable area fraction).
Definition openswmm_subcatchments_impl.cpp:1154
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:466
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:1093
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:921
SWMM_ENGINE_API int swmm_subcatch_set_snow_scale_factor(SWMM_Engine engine, int idx, double factor)
Set the subcatchment's snowfall scale factor (optional token 10 of [SUBCATCHMENTS]; default 1....
Definition openswmm_subcatchments_impl.cpp:1275
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:272
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:937
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:299
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)
Set the IMPERVIOUS surface parameters (last = 100%-cover depth).
Definition openswmm_subcatchments_impl.cpp:1170
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:247
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:75
SWMM_ENGINE_API int swmm_subcatch_get_infil_bulk(SWMM_Engine engine, double *buf, int count)
Get infiltration losses for all subcatchments in a single call.
Definition openswmm_subcatchments_impl.cpp:803
SWMM_ENGINE_API int swmm_subcatch_get_snow_depth_bulk(SWMM_Engine engine, double *buf, int count)
Get snow depths for all subcatchments in a single call.
Definition openswmm_subcatchments_impl.cpp:814
SWMM_ENGINE_API int swmm_subcatch_set_tag(SWMM_Engine engine, int idx, const char *tag)
Set or clear the subcatchment's tag. Null/empty clears. Persists across rename.
Definition openswmm_subcatchments_impl.cpp:901
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:152
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:352
SWMM_ENGINE_API int swmm_subcatch_get_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double *fraction)
Get the land use coverage fraction for a subcatchment.
Definition openswmm_subcatchments_impl.cpp:443
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:617
SWMM_ENGINE_API int swmm_snowpack_get_removal_subcatch(SWMM_Engine engine, int idx, char *buf, int buflen)
Read the REMOVAL destination subcatchment name (empty if none). NUL-terminates, truncates to buflen.
Definition openswmm_subcatchments_impl.cpp:1239
SWMM_ENGINE_API int swmm_snowpack_set_removal_subcatch(SWMM_Engine engine, int idx, const char *name)
Set/clear the destination subcatchment for the REMOVAL fsubcatch fraction. Pre-start-only.
Definition openswmm_subcatchments_impl.cpp:1230
SWMM_ENGINE_API int swmm_subcatch_get_tag(SWMM_Engine engine, int idx, char *buf, int buflen)
Read the subcatchment's tag into buf (NUL-terminated, truncated if too small).
Definition openswmm_subcatchments_impl.cpp:886
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:700
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)
Set the groundwater flow parameters ([GROUNDWATER] token order).
Definition openswmm_subcatchments_impl.cpp:550
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:930
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:344
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:366
SWMM_ENGINE_API int swmm_subcatch_set_gw_node(SWMM_Engine engine, int idx, int node_idx)
Set the node (by index, -1 = none) receiving the subcatchment's groundwater flow.
Definition openswmm_subcatchments_impl.cpp:531
SWMM_ENGINE_API int swmm_subcatch_get_evap_bulk(SWMM_Engine engine, double *buf, int count)
Get evaporation losses for all subcatchments in a single call.
Definition openswmm_subcatchments_impl.cpp:792
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:400
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:409
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 the snow pack state on one snow subarea of a subcatchment.
Definition openswmm_subcatchments_impl.cpp:667
SWMM_ENGINE_API int swmm_subcatch_get_rain_scale_factor(SWMM_Engine engine, int idx, double *factor)
Get the subcatchment's rainfall scale factor.
Definition openswmm_subcatchments_impl.cpp:1267
SWMM_ENGINE_API int swmm_subcatch_get_snow_scale_factor(SWMM_Engine engine, int idx, double *factor)
Get the subcatchment's snowfall scale factor.
Definition openswmm_subcatchments_impl.cpp:1284
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:1079
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:224
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:38
SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area)
Set the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:84
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:916
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:1100
SWMM_ENGINE_API int swmm_subcatch_get_ponded_quality(SWMM_Engine engine, int subcatch_idx, int pollutant_idx, double *mass)
Get ponded quality mass for a subcatchment-pollutant pair.
Definition openswmm_subcatchments_impl.cpp:849
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:755
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:475
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:1002
SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double *area)
Get the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:238
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)
Set the PERVIOUS surface parameters (last = 100%-cover depth).
Definition openswmm_subcatchments_impl.cpp:1186
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:691
SWMM_ENGINE_API int swmm_subcatch_set_infil_green_ampt(SWMM_Engine engine, int idx, double suction, double conductivity, double initial_deficit)
Set Green-Ampt infiltration parameters.
Definition openswmm_subcatchments_impl.cpp:190
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:93
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:307
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:744
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:143
SWMM_ENGINE_API int swmm_subcatch_get_rainfall_bulk(SWMM_Engine engine, double *buf, int count)
Get rainfall rates for all subcatchments in a single call.
Definition openswmm_subcatchments_impl.cpp:781
SWMM_AquiferParam
Aquifer parameter codes for swmm_aquifer_get_param / _set_param.
Definition openswmm_subcatchments.h:774
@ SWMM_AQUIFER_WATER_TABLE_ELEV
Definition openswmm_subcatchments.h:785
@ SWMM_AQUIFER_LOWER_EVAP_DEPTH
Definition openswmm_subcatchments.h:782
@ SWMM_AQUIFER_WILTING_POINT
Definition openswmm_subcatchments.h:776
@ SWMM_AQUIFER_CONDUCTIVITY
Definition openswmm_subcatchments.h:778
@ SWMM_AQUIFER_UPPER_EVAP_FRAC
Definition openswmm_subcatchments.h:781
@ SWMM_AQUIFER_LOWER_LOSS_COEFF
Definition openswmm_subcatchments.h:783
@ SWMM_AQUIFER_BOTTOM_ELEV
Definition openswmm_subcatchments.h:784
@ SWMM_AQUIFER_UPPER_MOISTURE
Definition openswmm_subcatchments.h:786
@ SWMM_AQUIFER_TENSION_SLOPE
Definition openswmm_subcatchments.h:780
@ SWMM_AQUIFER_POROSITY
Definition openswmm_subcatchments.h:775
@ SWMM_AQUIFER_CONDUCT_SLOPE
Definition openswmm_subcatchments.h:779
@ SWMM_AQUIFER_FIELD_CAPACITY
Definition openswmm_subcatchments.h:777
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)
Set the REMOVAL parameters (snow redistribution at depth dsnow).
Definition openswmm_subcatchments_impl.cpp:1202
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:332
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 surface parameters. Inverse of swmm_snowpack_set_impervious.
Definition openswmm_subcatchments_impl.cpp:1178
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 surface parameters. Inverse of swmm_snowpack_set_pervious.
Definition openswmm_subcatchments_impl.cpp:1194
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:134
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:263
SWMM_ENGINE_API int swmm_subcatch_count(SWMM_Engine engine)
Get the total number of subcatchments in the model.
Definition openswmm_subcatchments_impl.cpp:28
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:484
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:315
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:103
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:1084
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:493
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:1052
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:33
SWMM_ENGINE_API int swmm_subcatch_set_ponded_quality(SWMM_Engine engine, int subcatch_idx, int pollutant_idx, double mass)
Set ponded quality mass for a subcatchment-pollutant pair.
Definition openswmm_subcatchments_impl.cpp:863