OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
openswmm_subcatchments.h
Go to the documentation of this file.
1
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 state only)
54 * ========================================================================= */
55
66SWMM_ENGINE_API int swmm_subcatch_add(SWMM_Engine engine, const char* id);
67
68/* =========================================================================
69 * Property setters (BUILDING or OPENED)
70 * ========================================================================= */
71
79SWMM_ENGINE_API int swmm_subcatch_set_outlet(SWMM_Engine engine, int idx, int node_idx);
80
88SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area);
89
97SWMM_ENGINE_API int swmm_subcatch_set_width(SWMM_Engine engine, int idx, double width);
98
106SWMM_ENGINE_API int swmm_subcatch_set_slope(SWMM_Engine engine, int idx, double slope);
107
115SWMM_ENGINE_API int swmm_subcatch_set_imperv_pct(SWMM_Engine engine, int idx, double pct);
116
124SWMM_ENGINE_API int swmm_subcatch_set_n_imperv(SWMM_Engine engine, int idx, double n);
125
133SWMM_ENGINE_API int swmm_subcatch_set_n_perv(SWMM_Engine engine, int idx, double n);
134
142SWMM_ENGINE_API int swmm_subcatch_set_ds_imperv(SWMM_Engine engine, int idx, double ds);
143
151SWMM_ENGINE_API int swmm_subcatch_set_ds_perv(SWMM_Engine engine, int idx, double ds);
152
160SWMM_ENGINE_API int swmm_subcatch_set_gage(SWMM_Engine engine, int idx, int gage_idx);
161
162/* --- Infiltration parameters (BUILDING or OPENED) --- */
163
166 double f0, double fmin,
167 double decay, double dry_time);
168
171 double suction, double conductivity,
172 double initial_deficit);
173
176 double cn);
177
178/* =========================================================================
179 * Property getters
180 * ========================================================================= */
181
189SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double* area);
190
198SWMM_ENGINE_API int swmm_subcatch_get_imperv_pct(SWMM_Engine engine, int idx, double* pct);
199
207SWMM_ENGINE_API int swmm_subcatch_get_outlet(SWMM_Engine engine, int idx, int* node_idx);
208
216SWMM_ENGINE_API int swmm_subcatch_get_width(SWMM_Engine engine, int idx, double* w);
217
225SWMM_ENGINE_API int swmm_subcatch_get_slope(SWMM_Engine engine, int idx, double* s);
226
234SWMM_ENGINE_API int swmm_subcatch_get_n_imperv(SWMM_Engine engine, int idx, double* n);
235
243SWMM_ENGINE_API int swmm_subcatch_get_n_perv(SWMM_Engine engine, int idx, double* n);
244
252SWMM_ENGINE_API int swmm_subcatch_get_ds_imperv(SWMM_Engine engine, int idx, double* ds);
253
261SWMM_ENGINE_API int swmm_subcatch_get_ds_perv(SWMM_Engine engine, int idx, double* ds);
262
270SWMM_ENGINE_API int swmm_subcatch_get_gage(SWMM_Engine engine, int idx, int* gage_idx);
271
284SWMM_ENGINE_API int swmm_subcatch_set_outlet_subcatch(SWMM_Engine engine, int idx, int sc_idx);
285
293SWMM_ENGINE_API int swmm_subcatch_get_outlet_subcatch(SWMM_Engine engine, int idx, int* sc_idx);
294
295/* =========================================================================
296 * Infiltration getters
297 * ========================================================================= */
298
310SWMM_ENGINE_API int swmm_subcatch_get_infil_model(SWMM_Engine engine, int idx, int* model);
311
323 double* f0, double* fmin,
324 double* decay, double* dry_time);
325
336 double* suction, double* conductivity,
337 double* deficit);
338
347
348/* =========================================================================
349 * Subcatchment statistics
350 * ========================================================================= */
351
359SWMM_ENGINE_API int swmm_subcatch_get_stat_precip(SWMM_Engine engine, int idx, double* vol);
360
368SWMM_ENGINE_API int swmm_subcatch_get_stat_runoff_vol(SWMM_Engine engine, int idx, double* vol);
369
377SWMM_ENGINE_API int swmm_subcatch_get_stat_max_runoff(SWMM_Engine engine, int idx, double* rate);
378
379/* =========================================================================
380 * Subcatchment landuse coverage
381 * ========================================================================= */
382
395SWMM_ENGINE_API int swmm_subcatch_set_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double fraction);
396
405SWMM_ENGINE_API int swmm_subcatch_get_coverage(SWMM_Engine engine, int sc_idx, int lu_idx, double* fraction);
406
407/* =========================================================================
408 * Hydraulic state getters
409 * ========================================================================= */
410
418SWMM_ENGINE_API int swmm_subcatch_get_runoff(SWMM_Engine engine, int idx, double* runoff);
419
427SWMM_ENGINE_API int swmm_subcatch_get_groundwater(SWMM_Engine engine, int idx, double* gw_flow);
428
436SWMM_ENGINE_API int swmm_subcatch_get_rainfall(SWMM_Engine engine, int idx, double* rainfall);
437
445SWMM_ENGINE_API int swmm_subcatch_get_snow_depth(SWMM_Engine engine, int idx, double* depth);
446
454SWMM_ENGINE_API int swmm_subcatch_get_evap(SWMM_Engine engine, int idx, double* evap);
455
463SWMM_ENGINE_API int swmm_subcatch_get_infil(SWMM_Engine engine, int idx, double* infil);
464
465/* --- Runtime forcing (RUNNING state only) --- */
466
474SWMM_ENGINE_API int swmm_subcatch_set_rainfall(SWMM_Engine engine, int idx, double rainfall);
475
476/* =========================================================================
477 * Water quality
478 * ========================================================================= */
479
488SWMM_ENGINE_API int swmm_subcatch_get_quality(SWMM_Engine engine, int subcatch_idx,
489 int pollutant_idx, double* conc);
490
491/* =========================================================================
492 * Bulk access
493 * ========================================================================= */
494
502SWMM_ENGINE_API int swmm_subcatch_get_runoff_bulk(SWMM_Engine engine, double* buf, int count);
503
513 double* buf, int count);
514
515#ifdef __cplusplus
516} /* extern "C" */
517#endif
518
519#endif /* OPENSWMM_SUBCATCHMENTS_H */
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:35
OpenSWMM Engine — primary transparent C API (master header).
#define SWMM_ENGINE_API
Definition openswmm_engine.h:87
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:190
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:342
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:382
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:254
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:43
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:110
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:222
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:492
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:286
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:246
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:101
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:479
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:159
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:146
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:354
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:426
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:238
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:262
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:214
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:65
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:137
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:315
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:403
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:467
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:307
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:329
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:362
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:370
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:32
SWMM_ENGINE_API int swmm_subcatch_set_area(SWMM_Engine engine, int idx, double area)
Set the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:74
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:518
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:434
SWMM_ENGINE_API int swmm_subcatch_get_area(SWMM_Engine engine, int idx, double *area)
Get the subcatchment area.
Definition openswmm_subcatchments_impl.cpp:206
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:459
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:175
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:83
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:270
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:509
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:128
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:295
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:119
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:230
SWMM_ENGINE_API int swmm_subcatch_count(SWMM_Engine engine)
Get the total number of subcatchments in the model.
Definition openswmm_subcatchments_impl.cpp:22
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:442
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:278
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:92
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:450
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:27