![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
C API implementation — subcatchment identity, creation, properties, state, bulk. More...
#include "openswmm_api_common.hpp"#include "StringCase.hpp"#include "../hydrology/Groundwater.hpp"#include "../math/MathExpr.hpp"#include "../../../include/openswmm/engine/openswmm_subcatchments.h"#include <algorithm>#include <array>#include <cstring>#include <string>#include <vector>Functions | |
| SWMM_ENGINE_API int | swmm_subcatch_count (SWMM_Engine engine) |
| Get the total number of subcatchments in the model. | |
| 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. | |
| SWMM_ENGINE_API const char * | swmm_subcatch_id (SWMM_Engine engine, int idx) |
| Get the string identifier of a subcatchment by index. | |
| SWMM_ENGINE_API int | swmm_subcatch_add (SWMM_Engine engine, const char *id) |
| Add a new subcatchment to the model. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_area (SWMM_Engine engine, int idx, double area) |
| Set the subcatchment area. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_width (SWMM_Engine engine, int idx, double width) |
| Set the characteristic overland flow width. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_slope (SWMM_Engine engine, int idx, double slope) |
| Set the average surface slope. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_imperv_pct (SWMM_Engine engine, int idx, double pct) |
| Set the percentage of impervious area. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_n_imperv (SWMM_Engine engine, int idx, double n) |
| Set Manning's n for the impervious area. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_n_perv (SWMM_Engine engine, int idx, double n) |
| Set Manning's n for the pervious area. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_gage (SWMM_Engine engine, int idx, int gage_idx) |
| Assign a rain gage to a subcatchment. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_area (SWMM_Engine engine, int idx, double *area) |
| Get the subcatchment area. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_imperv_pct (SWMM_Engine engine, int idx, double *pct) |
| Get the percentage of impervious area. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_outlet (SWMM_Engine engine, int idx, int *node_idx) |
| Get the outlet node index for a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_width (SWMM_Engine engine, int idx, double *w) |
| Get the characteristic overland flow width. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_slope (SWMM_Engine engine, int idx, double *s) |
| Get the average surface slope. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_n_imperv (SWMM_Engine engine, int idx, double *n) |
| Get Manning's n for the impervious area. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_n_perv (SWMM_Engine engine, int idx, double *n) |
| Get Manning's n for the pervious area. | |
| 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. | |
| 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. | |
| 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. | |
| 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). | |
| 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). | |
| SWMM_ENGINE_API int | swmm_subcatch_get_infil_model (SWMM_Engine engine, int idx, int *model) |
| Get the infiltration model type for a subcatchment. | |
| 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. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_stat_precip (SWMM_Engine engine, int idx, double *vol) |
| Get the total precipitation volume at a subcatchment. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_runoff (SWMM_Engine engine, int idx, double *runoff) |
| Get the current runoff rate from a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_groundwater (SWMM_Engine engine, int idx, double *gw_flow) |
| Get the current groundwater flow from a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_rainfall (SWMM_Engine engine, int idx, double *rainfall) |
| Get the current rainfall intensity at a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_snow_depth (SWMM_Engine engine, int idx, double *depth) |
| Get the current snow depth on a subcatchment. | |
| 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. | |
| 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). | |
| 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. | |
| 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). | |
| 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). | |
| 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). | |
| 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. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_gwf_variable_count (SWMM_Engine engine) |
| Number of variables a [GWF] expression may reference. | |
| 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"). | |
| 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.g. "Water table height above aquifer bottom (ft or m)". | |
| SWMM_ENGINE_API int | swmm_gwf_function_count (SWMM_Engine engine) |
| Number of built-in functions a [GWF] expression may call. | |
| 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, exp, sin, cos, tan, asin, acos, atan, step, min, max, cot, sinh, cosh, tanh, coth, log10, acot). | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_evap (SWMM_Engine engine, int idx, double *evap) |
| Get the current evaporation rate at a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_get_infil (SWMM_Engine engine, int idx, double *infil) |
| Get the current infiltration rate at a subcatchment. | |
| SWMM_ENGINE_API int | swmm_subcatch_set_rainfall (SWMM_Engine engine, int idx, double rainfall) |
| Override rainfall on a subcatchment for the current timestep. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| 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). | |
| 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. | |
| 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. | |
| 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, empty, already in use, or idx is out of range. | |
| 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). | |
| 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. | |
| SWMM_ENGINE_API int | swmm_aquifer_count (SWMM_Engine engine) |
| Get the total number of aquifer definitions in the model. | |
| 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. | |
| SWMM_ENGINE_API const char * | swmm_aquifer_id (SWMM_Engine engine, int idx) |
| Get the string identifier of an aquifer definition by index. | |
| SWMM_ENGINE_API int | swmm_aquifer_add (SWMM_Engine engine, const char *id) |
| Add a new aquifer definition with default (zero) parameters. | |
| SWMM_ENGINE_API int | swmm_aquifer_rename (SWMM_Engine engine, int idx, const char *new_id) |
| Rename an aquifer in place. | |
| SWMM_ENGINE_API int | swmm_aquifer_get_param (SWMM_Engine engine, int idx, int param, double *value) |
| Get an aquifer parameter (input-file units). | |
| SWMM_ENGINE_API int | swmm_aquifer_set_param (SWMM_Engine engine, int idx, int param, double value) |
| Set an aquifer parameter (input-file units). | |
| 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. | |
| 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. | |
| SWMM_ENGINE_API int | swmm_snowpack_count (SWMM_Engine engine) |
| Get the total number of snowpack definitions in the model. | |
| 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. | |
| SWMM_ENGINE_API const char * | swmm_snowpack_id (SWMM_Engine engine, int idx) |
| Get the string identifier of a snowpack definition by index. | |
| SWMM_ENGINE_API int | swmm_snowpack_add (SWMM_Engine engine, const char *id) |
| Add a new snowpack definition with default (zero) parameters. | |
| SWMM_ENGINE_API int | swmm_snowpack_rename (SWMM_Engine engine, int idx, const char *new_id) |
| Rename a snow pack in place. | |
| 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). | |
| 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. | |
| 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). | |
| 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. | |
| 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). | |
| 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. | |
| 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). | |
| 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. | |
| 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. | |
| 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. | |
| 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.0 = no scaling). | |
| SWMM_ENGINE_API int | swmm_subcatch_get_rain_scale_factor (SWMM_Engine engine, int idx, double *factor) |
| Get the subcatchment's rainfall scale factor. | |
| 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.0 = no scaling). | |
| SWMM_ENGINE_API int | swmm_subcatch_get_snow_scale_factor (SWMM_Engine engine, int idx, double *factor) |
| Get the subcatchment's snowfall scale factor. | |
C API implementation — subcatchment identity, creation, properties, state, bulk.
| SWMM_ENGINE_API int swmm_aquifer_add | ( | SWMM_Engine | engine, |
| const char * | id ) |
Add a new aquifer definition with default (zero) parameters.
Parameters default to 0.0 / empty strings — use the property setters from Slice BP AquiferEditor to configure porosity, conductivity, etc. Lifecycle: BUILDING or OPENED.
| engine | Engine handle. |
| id | Unique null-terminated identifier. |
| SWMM_ENGINE_API int swmm_aquifer_count | ( | SWMM_Engine | engine | ) |
Get the total number of aquifer definitions in the model.
| engine | Engine handle. |
| 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.
The optional monthly time pattern ([PATTERNS] MONTHLY) that scales the upper-zone evaporation fraction — the trailing [ETupat] column of the [AQUIFERS] line. The 12 numeric parameters are reached via swmm_aquifer_get_param; this completes the round-trip for the one string-valued column. Writes a NUL-terminated string into buf (empty when no pattern is assigned), truncating if buflen is too small.
| engine | Engine handle. | |
| idx | Zero-based aquifer index. | |
| [out] | buf | Destination buffer for the pattern name. |
| buflen | Size of buf in bytes (must be > 0). |
| SWMM_ENGINE_API int swmm_aquifer_get_param | ( | SWMM_Engine | engine, |
| int | idx, | ||
| int | param, | ||
| double * | value ) |
Get an aquifer parameter (input-file units).
| engine | Engine handle. |
| idx | Zero-based aquifer index. |
| param | A SWMM_AquiferParam code. |
| value | Receives the parameter value. |
| SWMM_ENGINE_API const char * swmm_aquifer_id | ( | SWMM_Engine | engine, |
| int | idx ) |
Get the string identifier of an aquifer definition by index.
| engine | Engine handle. |
| idx | Zero-based aquifer index. |
| 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.
| engine | Engine handle. |
| id | Null-terminated aquifer identifier. |
| SWMM_ENGINE_API int swmm_aquifer_rename | ( | SWMM_Engine | engine, |
| int | idx, | ||
| const char * | new_id ) |
Rename an aquifer in place.
Updates both the name vector and the name registry so swmm_aquifer_id() and swmm_aquifer_index() stay in agreement. [GROUNDWATER] holds an aquifer INDEX, not a name, so subcatchment references follow automatically. Lifecycle: BUILDING or OPENED.
| engine | Engine handle. |
| idx | Aquifer index. |
| new_id | New unique name (non-empty). A pure case-respelling of this same aquifer is allowed. |
| 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.
Inverse of swmm_aquifer_get_evap_pattern. The name is resolved to a [PATTERNS] entry at start(); a null or empty string clears the assignment. Pre-start-only (BUILDING / OPENED): the pattern index is bound when the simulation starts, so a mid-run change returns SWMM_ERR_LIFECYCLE.
| engine | Engine handle. |
| idx | Zero-based aquifer index. |
| name | Pattern name, or null/empty to clear. |
| SWMM_ENGINE_API int swmm_aquifer_set_param | ( | SWMM_Engine | engine, |
| int | idx, | ||
| int | param, | ||
| double | value ) |
Set an aquifer parameter (input-file units).
Flux-coefficient parameters take effect on the next step when set mid-run (the groundwater solver's per-subcatchment copies are refreshed); structural / initial-condition parameters return SWMM_ERR_LIFECYCLE while the simulation is running.
| engine | Engine handle. |
| idx | Zero-based aquifer index. |
| param | A SWMM_AquiferParam code. |
| value | New parameter value. |
| SWMM_ENGINE_API int swmm_gwf_function_count | ( | SWMM_Engine | engine | ) |
Number of built-in functions a [GWF] expression may call.
| engine | Engine handle. |
| 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, exp, sin, cos, tan, asin, acos, atan, step, min, max, cot, sinh, cosh, tanh, coth, log10, acot).
| engine | Engine handle. | |
| i | Zero-based index, < swmm_gwf_function_count(). | |
| [out] | buf | Destination buffer (NUL-terminated, truncated if too small). |
| buflen | Size of buf in bytes (must be > 0). |
| 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.
Editor-support peer of swmm_treatment_validate_expression: grammar-only, never mutates the engine, so it is safe to invoke per keystroke. Stricter than the runtime parser: unknown characters, unknown identifiers (must be a GW variable or a function), unbalanced parentheses, misplaced operators and wrong function arity (min/max take 2 arguments, all others 1) are errors. An empty or whitespace-only expression is INVALID ("expression is empty") — callers treat empty as "clear" themselves.
| engine | Engine handle (grammar only; no model data is read). | |
| expr | Expression text. | |
| [out] | errbuf | Receives the diagnostic on failure ("" on success). May be NULL. |
| buflen | Size of errbuf in bytes. | |
| [out] | col_out | Receives the 0-based character offset of the error, or -1 when not attributable. May be NULL. |
| SWMM_ENGINE_API int swmm_gwf_variable_count | ( | SWMM_Engine | engine | ) |
Number of variables a [GWF] expression may reference.
| engine | Engine handle. |
| 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.g. "Water table height above aquifer bottom (ft or m)".
| engine | Engine handle. | |
| i | Zero-based index, < swmm_gwf_variable_count(). | |
| [out] | buf | Destination buffer (NUL-terminated, truncated if too small). |
| buflen | Size of buf in bytes (must be > 0). |
| 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").
| engine | Engine handle. | |
| i | Zero-based index, < swmm_gwf_variable_count(). | |
| [out] | buf | Destination buffer (NUL-terminated, truncated if too small). |
| buflen | Size of buf in bytes (must be > 0). |
| SWMM_ENGINE_API int swmm_snowpack_add | ( | SWMM_Engine | engine, |
| const char * | id ) |
Add a new snowpack definition with default (zero) parameters.
All three surface arrays (plowable / impervious / pervious) and the removal row are zero-initialised. Use the property setters from Slice BP SnowpackEditor to configure melt coefficients, ATI, negative-melt-ratio, and removal fractions. Lifecycle: BUILDING or OPENED.
| engine | Engine handle. |
| id | Unique null-terminated identifier. |
| SWMM_ENGINE_API int swmm_snowpack_count | ( | SWMM_Engine | engine | ) |
Get the total number of snowpack definitions in the model.
| engine | Engine handle. |
| 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.
| 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.
| 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.
| 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.
| 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.
| SWMM_ENGINE_API const char * swmm_snowpack_id | ( | SWMM_Engine | engine, |
| int | idx ) |
Get the string identifier of a snowpack definition by index.
| engine | Engine handle. |
| idx | Zero-based snowpack index. |
| 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.
| engine | Engine handle. |
| id | Null-terminated snowpack identifier. |
| SWMM_ENGINE_API int swmm_snowpack_rename | ( | SWMM_Engine | engine, |
| int | idx, | ||
| const char * | new_id ) |
Rename a snow pack in place.
Updates both the name vector (read by swmm_snowpack_id() and the [SNOWPACKS] writer) and the name registry (read by swmm_snowpack_index() and the [SUBCATCHMENTS] snow-pack column), plus the deferred-resolution name held per subcatchment. Melt parameters and subcatchment assignments are index-based and follow automatically. Lifecycle: BUILDING or OPENED.
| engine | Engine handle. |
| idx | Snow pack index. |
| new_id | New unique name (non-empty). A pure case-respelling of this same snow pack is allowed. |
| 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).
| 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).
| 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).
| 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).
The six fractions of the [SNOWPACKS] ... REMOVAL line: dsnow (depth at which removal begins, in/mm), then the fractions routed out of the watershed (fout), to impervious area (fimp), to pervious area (fperv), converted to immediate melt (fimelt), and transferred to another subcatchment (fsubcatch). The optional destination subcatchment is named via swmm_snowpack_set_removal_subcatch. Pre-start-only.
| 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.
| SWMM_ENGINE_API int swmm_subcatch_add | ( | SWMM_Engine | engine, |
| const char * | id ) |
Add a new subcatchment to the model.
The engine must be in SWMM_STATE_BUILDING or SWMM_STATE_OPENED. Returns SWMM_ERR_LIFECYCLE for any other state. After creation, use the property setters to configure area, slope, imperviousness, etc.
| engine | Engine handle. |
| id | Unique null-terminated identifier for the new subcatchment. |
| SWMM_ENGINE_API int swmm_subcatch_count | ( | SWMM_Engine | engine | ) |
Get the total number of subcatchments in the model.
| engine | Engine handle. |
| 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).
| SWMM_ENGINE_API int swmm_subcatch_get_area | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | area ) |
Get the subcatchment area.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | area | Receives the area in project area units. |
| 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.
| engine | Engine handle. | |
| sc_idx | Zero-based subcatchment index. | |
| lu_idx | Zero-based land use index. | |
| [out] | fraction | Receives the coverage in percent (0–100). |
| 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.
Bulk peer of swmm_subcatch_get_coverage for grid editors: fills out[0..n-1] with the coverage percent for land uses 0..n-1. n must not exceed the engine's land use count.
| engine | Engine handle. | |
| sc_idx | Zero-based subcatchment index. | |
| [out] | out | Caller-owned array receiving n percents (0–100). |
| n | Number of land uses to fetch (array capacity). |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | ds | Receives the depression storage depth. |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | ds | Receives the depression storage depth. |
| SWMM_ENGINE_API int swmm_subcatch_get_evap | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | evap ) |
Get the current evaporation rate at a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | evap | Receives the evaporation rate. |
| 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.
Bulk variant of swmm_subcatch_get_evap. Simple SoA copy of the evap_loss column.
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | gage_idx | Receives the gage index. |
| SWMM_ENGINE_API int swmm_subcatch_get_groundwater | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | gw_flow ) |
Get the current groundwater flow from a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | gw_flow | Receives the groundwater flow in project flow units. |
| 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).
| 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).
| 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.
| engine | Engine handle. | |
| idx | Subcatchment index (must have groundwater). | |
| [out] | theta | Receives the upper zone moisture content. |
| [out] | lower_depth | Receives the saturated zone depth (user length units). |
| 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.
Writes a NUL-terminated string into buf (empty when no expression is set), truncating if buflen is too small.
| engine | Engine handle. | |
| index | Zero-based subcatchment index. | |
| type | A SWMM_GwfType code. | |
| [out] | buf | Destination buffer for the expression text. |
| buflen | Size of buf in bytes (must be > 0). |
| 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).
Format identical to swmm_node_get_ids_bulk.
| engine | Engine handle. | |
| [out] | buf | Caller-allocated buffer of stride*count bytes. |
| stride | Per-ID slot size in bytes (must be > 1). | |
| count | Number of IDs to read. |
SWMM_OK on success; SWMM_ERR_BADHANDLE if engine is invalid; SWMM_ERR_BADPARAM if buf is NULL, stride < 2, or count <= 0. | SWMM_ENGINE_API int swmm_subcatch_get_imperv_pct | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | pct ) |
Get the percentage of impervious area.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | pct | Receives the imperviousness percentage (0–100). |
| SWMM_ENGINE_API int swmm_subcatch_get_infil | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | infil ) |
Get the current infiltration rate at a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | infil | Receives the infiltration rate. |
| 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.
Bulk variant of swmm_subcatch_get_infil. Simple SoA copy of the infil_loss column.
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | cn | Receives the SCS curve number. May be NULL. |
| [out] | drying_time | Receives the drying time in days. May be NULL. |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | suction | Receives the soil capillary suction head. |
| [out] | conductivity | Receives the saturated hydraulic conductivity. |
| [out] | deficit | Receives the initial moisture deficit (fraction). |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | f0 | Receives the maximum infiltration rate. |
| [out] | fmin | Receives the minimum infiltration rate. |
| [out] | decay | Receives the decay constant (1/hr). |
| [out] | dry_time | Receives the time to fully dry (hours). |
| SWMM_ENGINE_API int swmm_subcatch_get_infil_model | ( | SWMM_Engine | engine, |
| int | idx, | ||
| int * | model ) |
Get the infiltration model type for a subcatchment.
Returns an integer code: 0=HORTON, 1=MOD_HORTON, 2=GREEN_AMPT, 3=MOD_GREEN_AMPT, 4=CURVE_NUMBER.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | model | Receives the infiltration model code. |
| 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.
| engine | Engine handle. | |
| sc_idx | Zero-based subcatchment index. | |
| pollut_idx | Zero-based pollutant index. | |
| [out] | buildup | Receives the initial buildup (mass per unit area). |
| SWMM_ENGINE_API int swmm_subcatch_get_n_imperv | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | n ) |
Get Manning's n for the impervious area.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | n | Receives Manning's n. |
| SWMM_ENGINE_API int swmm_subcatch_get_n_perv | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | n ) |
Get Manning's n for the pervious area.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | n | Receives Manning's n. |
| SWMM_ENGINE_API int swmm_subcatch_get_outlet | ( | SWMM_Engine | engine, |
| int | idx, | ||
| int * | node_idx ) |
Get the outlet node index for a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | node_idx | Receives the outlet node index. |
| 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).
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | sc_idx | Receives the downstream subcatchment index, or -1 if none. |
| 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.
| 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.
| engine | Engine handle. | |
| subcatch_idx | Zero-based subcatchment index. | |
| pollutant_idx | Zero-based pollutant index. | |
| [out] | conc | Receives the concentration in pollutant units. |
| 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.
| engine | Engine handle. | |
| pollutant_idx | Zero-based pollutant index. | |
| [out] | buf | Caller-allocated buffer of at least count doubles. |
| count | Number of elements (should equal swmm_subcatch_count()). |
| SWMM_ENGINE_API int swmm_subcatch_get_rain_scale_factor | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | factor ) |
Get the subcatchment's rainfall scale factor.
| SWMM_ENGINE_API int swmm_subcatch_get_rainfall | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | rainfall ) |
Get the current rainfall intensity at a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | rainfall | Receives the rainfall in project rate units. |
| 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.
Bulk variant of swmm_subcatch_get_rainfall. Simple SoA copy.
| SWMM_ENGINE_API int swmm_subcatch_get_runoff | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | runoff ) |
Get the current runoff rate from a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | runoff | Receives the runoff rate in project flow units. |
| 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.
| engine | Engine handle. | |
| [out] | buf | Caller-allocated buffer of at least count doubles. |
| count | Number of elements (should equal swmm_subcatch_count()). |
| SWMM_ENGINE_API int swmm_subcatch_get_slope | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | s ) |
Get the average surface slope.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | s | Receives the slope percentage. |
| SWMM_ENGINE_API int swmm_subcatch_get_snow_depth | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | depth ) |
Get the current snow depth on a subcatchment.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | depth | Receives the snow depth in project length units. |
| 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.
Bulk variant of swmm_subcatch_get_snow_depth. Snow state currently lives in the SnowSolver, not SubcatchData; like the scalar accessor this returns zeros for every entry pending full snow-state integration (see plan Appendix A).
| SWMM_ENGINE_API int swmm_subcatch_get_snow_scale_factor | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | factor ) |
Get the subcatchment's snowfall scale factor.
| 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.
| engine | Engine handle. | |
| idx | Subcatchment index (must have a snow pack). | |
| surface | Snow subarea: 0 plowable, 1 impervious, 2 pervious. | |
| [out] | swe | Receives SWE (user depth units); may be NULL. |
| [out] | fw | Receives free water (user depth units); may be NULL. |
| [out] | ati | Receives ATI (user temperature units); may be NULL. |
| [out] | coldc | Receives cold content (user depth units); may be NULL. |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | rate | Receives the maximum runoff rate in project flow units. |
| SWMM_ENGINE_API int swmm_subcatch_get_stat_precip | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | vol ) |
Get the total precipitation volume at a subcatchment.
| engine | Engine handle (ENDED or RUNNING state). | |
| idx | Zero-based subcatchment index. | |
| [out] | vol | Receives the precipitation volume in project volume units. |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | vol | Receives the runoff volume in project volume units. |
| 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).
| SWMM_ENGINE_API int swmm_subcatch_get_width | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double * | w ) |
Get the characteristic overland flow width.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | w | Receives the width in project length units. |
| 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.
| engine | Engine handle. | |
| idx | Zero-based subcatchment index. | |
| [out] | pct | Receives the zero-depression-storage percentage (0–100). |
| SWMM_ENGINE_API const char * swmm_subcatch_id | ( | SWMM_Engine | engine, |
| int | idx ) |
Get the string identifier of a subcatchment by index.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| 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.
| engine | Engine handle. |
| id | Null-terminated subcatchment identifier. |
| 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, empty, already in use, or idx is out of range.
| 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.
| SWMM_ENGINE_API int swmm_subcatch_set_area | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | area ) |
Set the subcatchment area.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| area | Area in project area units (acres or hectares). |
| 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.
Assigns what percent of a subcatchment's area is covered by a particular land use category (for buildup/washoff modeling). Stored and reported verbatim in PERCENT (0–100), matching the [COVERAGES] .inp convention.
| engine | Engine handle. |
| sc_idx | Zero-based subcatchment index. |
| lu_idx | Zero-based land use index. |
| fraction | Coverage in percent (0–100). |
| 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.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| ds | Depression storage in project length units. |
| 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.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| ds | Depression storage in project length units. |
| SWMM_ENGINE_API int swmm_subcatch_set_gage | ( | SWMM_Engine | engine, |
| int | idx, | ||
| int | gage_idx ) |
Assign a rain gage to a subcatchment.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| gage_idx | Zero-based rain gage index. |
| 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.
| 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).
| surf_elev | Surface elevation (SurfEl). |
| a1,b1 | Groundwater outflow coefficient & exponent. |
| a2,b2 | Surface-water outflow coefficient & exponent. |
| a3 | Surface/groundwater interaction coefficient. |
| tw | Threshold groundwater table elevation (Twgr). |
| hstar | Water-table elevation at which lateral GW flow ceases (Hstar). |
| 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.
State injection for data assimilation / external coupling. Pass a negative value to leave that component unchanged. Note that mass balance reports will reflect the storage discontinuity, mirroring hotstart loading.
| engine | Engine handle. |
| idx | Subcatchment index (must have groundwater). |
| theta | Upper zone moisture content (0..porosity), or < 0 to keep. |
| lower_depth | Saturated zone depth above aquifer bottom in user length units (ft US, m SI), or < 0 to keep. |
| 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.
Inverse of swmm_subcatch_get_gwf_expression. A null or empty string clears the expression. The text is stored as given and is NOT validated here (so files with legacy quirks still load); use swmm_gwf_validate_expression first. An invalid expression fails start() with ERROR 233. Pre-start-only (BUILDING / OPENED): the expression is compiled when the simulation starts, so a mid-run change returns SWMM_ERR_LIFECYCLE.
| engine | Engine handle. |
| index | Zero-based subcatchment index. |
| type | A SWMM_GwfType code. |
| expr | Expression text, or null/empty to clear. |
| SWMM_ENGINE_API int swmm_subcatch_set_imperv_pct | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | pct ) |
Set the percentage of impervious area.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| pct | Imperviousness as a percentage (0–100). |
| 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.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| cn | SCS curve number (clamped to 10–99 by the runoff solver). |
| drying_time | Days for a fully saturated soil to dry, matching the third [INFILTRATION] column and legacy curvenum_setParams p[2]. Drives the regeneration constant; a value <= 0 disables regeneration. |
| 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.
| 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.
| 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.
model: 0=HORTON, 1=MOD_HORTON, 2=GREEN_AMPT, 3=MOD_GREEN_AMPT, 4=CURVE_NUMBER. The per-model parameters are positionally overloaded, so after switching the model code callers should set the matching parameters via swmm_subcatch_set_infil_horton / _green_ampt / _curve_number.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| model | Infiltration model code (0..4). |
| 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.
The [LOADINGS] value: initial buildup mass per unit area (normalizer units) present at the simulation start, overriding the DRY_DAYS-derived buildup for the pollutant.
| engine | Engine handle. |
| sc_idx | Zero-based subcatchment index. |
| pollut_idx | Zero-based pollutant index. |
| buildup | Initial buildup (mass per unit area). |
| SWMM_ENGINE_API int swmm_subcatch_set_n_imperv | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | n ) |
Set Manning's n for the impervious area.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| n | Manning's roughness coefficient. |
| SWMM_ENGINE_API int swmm_subcatch_set_n_perv | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | n ) |
Set Manning's n for the pervious area.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| n | Manning's roughness coefficient. |
| 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.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| node_idx | Zero-based node index of the receiving node. |
| 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).
When a subcatchment drains to another subcatchment instead of directly to a node, use this function. Mutually exclusive with swmm_subcatch_set_outlet().
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| sc_idx | Zero-based index of the receiving subcatchment. |
| 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.
| 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.0 = no scaling).
Multiplies the gage-derived rainfall for this subcatchment only, composing multiplicatively with the gage's own scale factor: rainfall = gage_rain * gage_scale_factor * rain_scale_factor API/forcing rainfall overrides are NOT scaled by this.
Settable mid-run (no geometry lock), so it can be driven by a calibration or RTC loop.
| factor | Must be > 0.0. |
| SWMM_ENGINE_API int swmm_subcatch_set_rainfall | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | rainfall ) |
Override rainfall on a subcatchment for the current timestep.
Overrides the gage-driven rainfall for this subcatchment only. Value is applied for the current timestep; call again each step to sustain. Pass a negative value to revert to gage-driven.
| SWMM_ENGINE_API int swmm_subcatch_set_slope | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | slope ) |
Set the average surface slope.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| slope | Slope as a percentage (e.g., 2.0 = 2%). |
| 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.0 = no scaling).
Composes multiplicatively with the gage snow catch factor (SCF): snowfall = gage_rain * gage_scale_factor * gage_snow_factor
Settable mid-run (no geometry lock).
| factor | Must be > 0.0. |
| 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.
State injection for data assimilation (e.g. observed SWE). Pass a negative value to leave that component unchanged.
| engine | Engine handle. |
| idx | Subcatchment index (must have a snow pack). |
| surface | Snow subarea: 0 plowable, 1 impervious, 2 pervious. |
| swe | Snow water equivalent in user depth units (in US, mm SI), or < 0 to keep. |
| fw | Free water in user depth units, or < 0 to keep. |
| ati | Antecedent temperature index (deg F US, deg C SI); pass <= -999 to keep (negative temperatures are valid). |
| coldc | Cold content in user depth units of melt equivalent, or < 0 to keep. |
| 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.
| SWMM_ENGINE_API int swmm_subcatch_set_width | ( | SWMM_Engine | engine, |
| int | idx, | ||
| double | width ) |
Set the characteristic overland flow width.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| width | Width in project length units. |
| 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.
The [SUBAREAS] PctZero column; legacy Subcatch[i].fracImperv2.
| engine | Engine handle. |
| idx | Zero-based subcatchment index. |
| pct | Zero-depression-storage impervious area as a percentage (0–100) of the impervious area. |