OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm_infrastructure.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2//
3// Copyright 2026 Caleb Buahin
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
31
32#ifndef OPENSWMM_INFRASTRUCTURE_H
33#define OPENSWMM_INFRASTRUCTURE_H
34
35#include "openswmm_engine.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/* =========================================================================
42 * Transects
43 * ========================================================================= */
44
56SWMM_ENGINE_API int swmm_transect_add(SWMM_Engine engine, const char* id);
57
73SWMM_ENGINE_API int swmm_transect_set_roughness(SWMM_Engine engine, int idx, double n_left,
74 double n_right, double n_channel);
75
93SWMM_ENGINE_API int swmm_transect_add_station(SWMM_Engine engine, int idx, double station,
94 double elevation);
95
105
115SWMM_ENGINE_API int swmm_transect_index(SWMM_Engine engine, const char* id);
116
127SWMM_ENGINE_API const char* swmm_transect_id(SWMM_Engine engine, int idx);
128
129/* -------------------------------------------------------------------------
130 * Per-field getters / setters (DA-ENG-09 + BQ-TR-02)
131 *
132 * GUI editors (Slice BQ Phase 6.7.4 TransectEditor) need round-trip access
133 * to every transect field; the legacy 3-function surface (add / set_roughness
134 * / add_station) only covers a fraction. The functions below close that gap.
135 * ------------------------------------------------------------------------- */
136
151SWMM_ENGINE_API int swmm_transect_get_roughness(SWMM_Engine engine, int idx, double* n_left,
152 double* n_right, double* n_channel);
153
172SWMM_ENGINE_API int swmm_transect_set_bank_stations(SWMM_Engine engine, int idx, double x_left,
173 double x_right);
174
188SWMM_ENGINE_API int swmm_transect_get_bank_stations(SWMM_Engine engine, int idx, double* x_left,
189 double* x_right);
190
214 double x_left, double x_right);
215
230 double* x_left, double* x_right);
231
257SWMM_ENGINE_API int swmm_transect_set_modifiers(SWMM_Engine engine, int idx, double x_factor,
258 double y_factor, double length_factor);
259
274SWMM_ENGINE_API int swmm_transect_get_modifiers(SWMM_Engine engine, int idx, double* x_factor,
275 double* y_factor, double* length_factor);
276
290SWMM_ENGINE_API int swmm_transect_set_comments(SWMM_Engine engine, int idx, const char* text);
291
310SWMM_ENGINE_API int swmm_transect_get_comments(SWMM_Engine engine, int idx, char* buf, int buflen);
311
322
337SWMM_ENGINE_API int swmm_transect_get_station(SWMM_Engine engine, int idx, int station_idx,
338 double* station, double* elevation);
339
356
373SWMM_ENGINE_API int swmm_transect_rename(SWMM_Engine engine, int idx, const char* new_id);
374
394
395/* =========================================================================
396 * Streets
397 * ========================================================================= */
398
410SWMM_ENGINE_API int swmm_street_add(SWMM_Engine engine, const char* id);
411
434SWMM_ENGINE_API int swmm_street_rename(SWMM_Engine engine, int idx, const char* new_id);
435
459SWMM_ENGINE_API int swmm_street_set_params(SWMM_Engine engine, int idx, double t_crown,
460 double h_curb, double sx, double n_road,
461 double gutter_depres, double gutter_width, int sides,
462 double back_width, double back_slope, double back_n);
463
473
483SWMM_ENGINE_API int swmm_street_index(SWMM_Engine engine, const char* id);
484
495SWMM_ENGINE_API const char* swmm_street_id(SWMM_Engine engine, int idx);
496
527SWMM_ENGINE_API int swmm_street_get_params(SWMM_Engine engine, int idx, double* t_crown,
528 double* h_curb, double* sx, double* n_road,
529 double* gutter_depres, double* gutter_width, int* sides,
530 double* back_width, double* back_slope, double* back_n);
531
532/* =========================================================================
533 * Inlets
534 * ========================================================================= */
535
548SWMM_ENGINE_API int swmm_inlet_add(SWMM_Engine engine, const char* id, const char* type);
549
568SWMM_ENGINE_API int swmm_inlet_rename(SWMM_Engine engine, int idx, const char* new_id);
569
587SWMM_ENGINE_API int swmm_inlet_set_params(SWMM_Engine engine, int idx, double length, double width,
588 const char* grate_type, double open_area,
589 double splash_veloc);
590
600
610SWMM_ENGINE_API int swmm_inlet_index(SWMM_Engine engine, const char* id);
611
622SWMM_ENGINE_API const char* swmm_inlet_id(SWMM_Engine engine, int idx);
623
653SWMM_ENGINE_API int swmm_inlet_get_params(SWMM_Engine engine, int idx, double* length,
654 double* width, char* grate_type, int grate_buflen,
655 double* open_area, double* splash_veloc);
656
670SWMM_ENGINE_API int swmm_inlet_get_type(SWMM_Engine engine, int idx, char* buf, int buflen);
671
672/* -------------------------------------------------------------------------
673 * Full inlet-design surface (2026-09-05). swmm_inlet_set_params/get_params
674 * above remain as a GRATE/SLOTTED convenience; the struct API below covers
675 * every field of the [INLETS] grammar including curb height, throat angle,
676 * combination inlets and custom capture curves.
677 * ------------------------------------------------------------------------- */
678
689
701
708
715
722
727typedef struct SWMM_InletDesign {
728 int type;
729 /* GRATE / DROP_GRATE / COMBO */
733 double open_area;
735 /* CURB / DROP_CURB / COMBO */
738 int throat;
739 /* SLOTTED */
742 /* CUSTOM */
743 char curve_id[64];
746
759
779 const SWMM_InletDesign* design);
780
794SWMM_ENGINE_API int swmm_inlet_get_comment(SWMM_Engine engine, int idx, char* buf, int buflen);
806SWMM_ENGINE_API int swmm_inlet_set_comment(SWMM_Engine engine, int idx, const char* text);
807
808/* -------------------------------------------------------------------------
809 * Inlet usage rows — one per placement. Two host kinds:
810 * host_kind = SWMM_INLET_HOST_LINK : a conduit ([INLET_USAGE] row)
811 * host_kind = SWMM_INLET_HOST_NODE : an inlet junction ([INLET_JUNCTIONS] row)
812 * ------------------------------------------------------------------------- */
813
815
828
836
846
856
869SWMM_ENGINE_API int swmm_inlet_usage_get(SWMM_Engine engine, int usage_idx, SWMM_InletUsage* out);
870
890 int* usage_idx);
891
904SWMM_ENGINE_API int swmm_inlet_usage_remove(SWMM_Engine engine, int usage_idx);
905
906/* =========================================================================
907 * LID controls
908 * ========================================================================= */
909
926SWMM_ENGINE_API int swmm_lid_add(SWMM_Engine engine, const char* id, int type);
927
982SWMM_ENGINE_API int swmm_lid_richards_material_get(SWMM_Engine engine, int control, int row,
1017SWMM_ENGINE_API int swmm_lid_node_treatment_get(SWMM_Engine engine, int control, int row,
1042 const SWMM_LidNodeLayer* layers, int count,
1043 const SWMM_LidLayerTreatment* treatment,
1044 int treatment_count);
1073 const SWMM_LidNodeLayer* layers, int count,
1074 const SWMM_LidLayerTreatment* treatment,
1075 int treatment_count,
1076 const SWMM_LidRichardsOptions* options,
1077 const SWMM_LidRichardsMaterial* material);
1099SWMM_ENGINE_API int swmm_lid_node_layer_get(SWMM_Engine engine, int control, int row,
1100 SWMM_LidNodeLayer* out);
1119 const SWMM_LidNodeLayer* rows, int count);
1130SWMM_ENGINE_API int swmm_node_get_lid(SWMM_Engine engine, int node, int* control,
1131 double* saturation);
1149SWMM_ENGINE_API int swmm_node_set_lid(SWMM_Engine engine, int node, int control, double saturation);
1159
1169SWMM_ENGINE_API int swmm_node_get_lid_bottom(SWMM_Engine engine, int node, int* mode);
1183SWMM_ENGINE_API int swmm_node_set_lid_bottom(SWMM_Engine engine, int node, int mode);
1199SWMM_ENGINE_API int swmm_lid_node_base_area(SWMM_Engine engine, int node, double* area);
1234 SWMM_LidBottomState* out);
1235
1248SWMM_ENGINE_API int swmm_lid_node_outlet_get(SWMM_Engine engine, int link, int* layer, int* top);
1264SWMM_ENGINE_API int swmm_lid_node_outlet_set(SWMM_Engine engine, int link, int layer, int top);
1291SWMM_ENGINE_API int swmm_lid_node_state_get(SWMM_Engine engine, int node, int row, int* layer,
1292 double* bottom, double* top, double* moisture);
1309SWMM_ENGINE_API int swmm_lid_richards_state_get(SWMM_Engine engine, int node, int row,
1310 double* pressure, double* head, double* water);
1329
1350SWMM_ENGINE_API int swmm_lid_rename(SWMM_Engine engine, int idx, const char* new_id);
1351
1369SWMM_ENGINE_API int swmm_lid_set_surface(SWMM_Engine engine, int idx, double storage,
1370 double roughness, double slope);
1371
1392SWMM_ENGINE_API int swmm_lid_set_soil(SWMM_Engine engine, int idx, double thick, double porosity,
1393 double fc, double wp, double ksat, double kslope);
1394
1412SWMM_ENGINE_API int swmm_lid_set_storage(SWMM_Engine engine, int idx, double thick,
1413 double void_frac, double ksat);
1414
1433SWMM_ENGINE_API int swmm_lid_set_drain(SWMM_Engine engine, int idx, double coeff, double expon,
1434 double offset);
1435
1449SWMM_ENGINE_API int swmm_lid_get_removal(SWMM_Engine engine, int idx, int constituent,
1450 double* percent);
1466SWMM_ENGINE_API int swmm_lid_set_removal(SWMM_Engine engine, int idx, int constituent,
1467 double percent);
1468
1495SWMM_ENGINE_API int swmm_lid_set_pavement(SWMM_Engine engine, int idx, double thick,
1496 double void_ratio, double frac_imperv, double ksat,
1497 double clog_factor, double regen_days);
1498
1521SWMM_ENGINE_API int swmm_lid_set_drainmat(SWMM_Engine engine, int idx, double thick,
1522 double void_frac, double roughness);
1523
1533
1543SWMM_ENGINE_API int swmm_lid_index(SWMM_Engine engine, const char* id);
1544
1555SWMM_ENGINE_API const char* swmm_lid_id(SWMM_Engine engine, int idx);
1556
1570SWMM_ENGINE_API int swmm_lid_get_type(SWMM_Engine engine, int idx, int* type);
1571
1586SWMM_ENGINE_API int swmm_lid_get_surface(SWMM_Engine engine, int idx, double* storage,
1587 double* roughness, double* slope);
1588
1606SWMM_ENGINE_API int swmm_lid_get_soil(SWMM_Engine engine, int idx, double* thick, double* porosity,
1607 double* fc, double* wp, double* ksat, double* kslope);
1608
1624SWMM_ENGINE_API int swmm_lid_get_storage(SWMM_Engine engine, int idx, double* thick,
1625 double* void_frac, double* ksat);
1626
1641SWMM_ENGINE_API int swmm_lid_get_drain(SWMM_Engine engine, int idx, double* coeff, double* expon,
1642 double* offset);
1643
1661SWMM_ENGINE_API int swmm_lid_get_pavement(SWMM_Engine engine, int idx, double* thick,
1662 double* void_ratio, double* frac_imperv, double* ksat,
1663 double* clog_factor, double* regen_days);
1664
1680SWMM_ENGINE_API int swmm_lid_get_drainmat(SWMM_Engine engine, int idx, double* thick,
1681 double* void_frac, double* roughness);
1682
1683/* =========================================================================
1684 * LID usage (assign LID to subcatchment)
1685 * ========================================================================= */
1686
1711SWMM_ENGINE_API int swmm_lid_usage_add(SWMM_Engine engine, int subcatch_idx, int lid_idx,
1712 int number, double area, double width, double init_sat,
1713 double from_imperv);
1714
1722
1746SWMM_ENGINE_API int swmm_lid_usage_get(SWMM_Engine engine, int usage_idx, int* subcatch_idx,
1747 int* lid_idx, int* number, double* area, double* width,
1748 double* init_sat, double* from_imperv, int* to_perv,
1749 double* from_perv);
1750
1762SWMM_ENGINE_API int swmm_lid_usage_remove(SWMM_Engine engine, int usage_idx);
1763
1764#ifdef __cplusplus
1765} /* extern "C" */
1766#endif
1767
1768#endif /* OPENSWMM_INFRASTRUCTURE_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:62
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:55
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_transect_get_bank_stations(SWMM_Engine engine, int idx, double *x_left, double *x_right)
Get the left and right bank stations for a transect.
Definition openswmm_infrastructure_impl.cpp:161
SWMM_ENGINE_API int swmm_lid_node_bottom_state_get(SWMM_Engine engine, int node, SWMM_LidBottomState *out)
Read the last accepted LID-to-mesh exchange diagnostics without advancing time.
Definition openswmm_lid_nodes_impl.cpp:496
SWMM_ENGINE_API int swmm_transect_add_station(SWMM_Engine engine, int idx, double station, double elevation)
Add a station–elevation data point to a transect.
Definition openswmm_infrastructure_impl.cpp:93
SWMM_ENGINE_API int swmm_transect_get_roughness(SWMM_Engine engine, int idx, double *n_left, double *n_right, double *n_channel)
Get the Manning's roughness values for a transect.
Definition openswmm_infrastructure_impl.cpp:135
SWMM_GrateType
Definition openswmm_infrastructure.h:691
@ SWMM_GRATE_P_BAR_30
Definition openswmm_infrastructure.h:694
@ SWMM_GRATE_P_BAR_50
Definition openswmm_infrastructure.h:692
@ SWMM_GRATE_P_BAR_50x100
Definition openswmm_infrastructure.h:693
@ SWMM_GRATE_TILT_BAR_45
Definition openswmm_infrastructure.h:696
@ SWMM_GRATE_GENERIC
Definition openswmm_infrastructure.h:699
@ SWMM_GRATE_TILT_BAR_30
Definition openswmm_infrastructure.h:697
@ SWMM_GRATE_RETICULINE
Definition openswmm_infrastructure.h:698
@ SWMM_GRATE_CURVED_VANE
Definition openswmm_infrastructure.h:695
SWMM_ENGINE_API int swmm_lid_get_pavement(SWMM_Engine engine, int idx, double *thick, double *void_ratio, double *frac_imperv, double *ksat, double *clog_factor, double *regen_days)
Read the stored pavement layer parameters.
Definition openswmm_infrastructure_impl.cpp:1438
SWMM_ThroatType
Definition openswmm_infrastructure.h:703
@ SWMM_THROAT_VERTICAL
Definition openswmm_infrastructure.h:706
@ SWMM_THROAT_HORIZONTAL
Definition openswmm_infrastructure.h:704
@ SWMM_THROAT_INCLINED
Definition openswmm_infrastructure.h:705
SWMM_ENGINE_API int swmm_inlet_index(SWMM_Engine engine, const char *id)
Look up an inlet's zero-based index by its string identifier.
Definition openswmm_infrastructure_impl.cpp:573
SWMM_ENGINE_API int swmm_lid_get_surface(SWMM_Engine engine, int idx, double *storage, double *roughness, double *slope)
Read the stored surface layer parameters.
Definition openswmm_infrastructure_impl.cpp:1372
SWMM_ENGINE_API int swmm_transect_index(SWMM_Engine engine, const char *id)
Look up a transect's zero-based index by its string identifier.
Definition openswmm_infrastructure_impl.cpp:110
SWMM_ENGINE_API int swmm_lid_get_removal(SWMM_Engine engine, int idx, int constituent, double *percent)
Read a constituent underdrain-removal percentage.
Definition openswmm_infrastructure_impl.cpp:1191
SWMM_InletHostKind
Definition openswmm_infrastructure.h:814
@ SWMM_INLET_HOST_LINK
Definition openswmm_infrastructure.h:814
@ SWMM_INLET_HOST_NODE
Definition openswmm_infrastructure.h:814
SWMM_ENGINE_API int swmm_node_get_lid_bottom(SWMM_Engine engine, int node, int *mode)
Read a node's bottom exchange ownership mode.
Definition openswmm_lid_nodes_impl.cpp:325
SWMM_ENGINE_API int swmm_inlet_get_comment(SWMM_Engine engine, int idx, char *buf, int buflen)
Copy an inlet design comment.
Definition openswmm_infrastructure_impl.cpp:843
SWMM_ENGINE_API int swmm_transect_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename an existing transect.
Definition openswmm_infrastructure_impl.cpp:284
SWMM_ENGINE_API int swmm_lid_index(SWMM_Engine engine, const char *id)
Look up a LID control's zero-based index by its string identifier.
Definition openswmm_infrastructure_impl.cpp:1337
SWMM_ENGINE_API int swmm_lid_count(SWMM_Engine engine)
Get the total number of LID controls in the model.
Definition openswmm_infrastructure_impl.cpp:1331
SWMM_ENGINE_API int swmm_lid_set_pavement(SWMM_Engine engine, int idx, double thick, double void_ratio, double frac_imperv, double ksat, double clog_factor, double regen_days)
Set the porous-pavement layer properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1279
SWMM_ENGINE_API int swmm_lid_set_drain(SWMM_Engine engine, int idx, double coeff, double expon, double offset)
Set the underdrain properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1165
SWMM_ENGINE_API int swmm_lid_node_outlet_get(SWMM_Engine engine, int link, int *layer, int *top)
Read a link's LID layer anchor.
Definition openswmm_lid_nodes_impl.cpp:368
SWMM_ENGINE_API int swmm_inlet_usage_find_node(SWMM_Engine engine, int node_idx)
Find the first inlet-usage row hosted by a node.
Definition openswmm_infrastructure_impl.cpp:874
SWMM_ENGINE_API int swmm_transect_set_bank_stations(SWMM_Engine engine, int idx, double x_left, double x_right)
Set the left and right bank stations for a transect.
Definition openswmm_infrastructure_impl.cpp:150
SWMM_ENGINE_API int swmm_transect_set_modifiers(SWMM_Engine engine, int idx, double x_factor, double y_factor, double length_factor)
Set the station, elevation, and meander modifiers for a transect.
Definition openswmm_infrastructure_impl.cpp:198
SWMM_ENGINE_API int swmm_lid_node_outlet_set(SWMM_Engine engine, int link, int layer, int top)
Set or remove a link's LID layer anchor.
Definition openswmm_lid_nodes_impl.cpp:384
SWMM_ENGINE_API int swmm_transect_get_encroachment_stations(SWMM_Engine engine, int idx, double *x_left, double *x_right)
Get the left and right encroachment stations for a transect (BQ-TR-02).
Definition openswmm_infrastructure_impl.cpp:185
SWMM_ENGINE_API int swmm_transect_set_roughness(SWMM_Engine engine, int idx, double n_left, double n_right, double n_channel)
Set Manning's roughness for left overbank, right overbank, and channel.
Definition openswmm_infrastructure_impl.cpp:81
SWMM_ENGINE_API int swmm_transect_set_encroachment_stations(SWMM_Engine engine, int idx, double x_left, double x_right)
Set the left and right encroachment stations for a transect (BQ-TR-02).
Definition openswmm_infrastructure_impl.cpp:174
SWMM_ENGINE_API int swmm_inlet_set_params(SWMM_Engine engine, int idx, double length, double width, const char *grate_type, double open_area, double splash_veloc)
Set the geometric parameters for an inlet.
Definition openswmm_infrastructure_impl.cpp:545
SWMM_ENGINE_API int swmm_transect_set_comments(SWMM_Engine engine, int idx, const char *text)
Set the free-form comments / description for a transect.
Definition openswmm_infrastructure_impl.cpp:225
SWMM_ENGINE_API int swmm_lid_set_surface(SWMM_Engine engine, int idx, double storage, double roughness, double slope)
Set the surface layer properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1077
SWMM_ENGINE_API int swmm_inlet_get_design(SWMM_Engine engine, int idx, SWMM_InletDesign *out)
Read every field of an inlet design.
Definition openswmm_infrastructure_impl.cpp:697
SWMM_ENGINE_API const char * swmm_street_id(SWMM_Engine engine, int idx)
Get the string identifier of a street by index.
Definition openswmm_infrastructure_impl.cpp:445
SWMM_ENGINE_API int swmm_transect_get_modifiers(SWMM_Engine engine, int idx, double *x_factor, double *y_factor, double *length_factor)
Get the station, elevation, and meander modifiers for a transect.
Definition openswmm_infrastructure_impl.cpp:210
SWMM_ENGINE_API int swmm_transect_count(SWMM_Engine engine)
Get the total number of transects in the model.
Definition openswmm_infrastructure_impl.cpp:104
SWMM_ENGINE_API int swmm_lid_node_treatment_count(SWMM_Engine engine, int control)
Count per-layer treatment rows flattened top-to-bottom.
Definition openswmm_lid_nodes_impl.cpp:111
SWMM_InletCurveKind
Definition openswmm_infrastructure.h:710
@ SWMM_INLET_CURVE_NONE
Definition openswmm_infrastructure.h:711
@ SWMM_INLET_CURVE_RATING
Definition openswmm_infrastructure.h:713
@ SWMM_INLET_CURVE_DIVERSION
Definition openswmm_infrastructure.h:712
SWMM_ENGINE_API int swmm_lid_get_drainmat(SWMM_Engine engine, int idx, double *thick, double *void_frac, double *roughness)
Read the stored drainmat layer parameters.
Definition openswmm_infrastructure_impl.cpp:1460
SWMM_ENGINE_API int swmm_lid_get_type(SWMM_Engine engine, int idx, int *type)
Read a LID control's type code. Inverse of the type argument to swmm_lid_add.
Definition openswmm_infrastructure_impl.cpp:1363
SWMM_ENGINE_API int swmm_street_count(SWMM_Engine engine)
Get the total number of street definitions in the model.
Definition openswmm_infrastructure_impl.cpp:427
SWMM_ENGINE_API int swmm_lid_richards_statistics_get(SWMM_Engine engine, int node, SWMM_LidRichardsStatistics *out)
Read the last stored Richards adaptive-solver report.
Definition openswmm_lid_nodes_impl.cpp:480
SWMM_ENGINE_API int swmm_transect_get_station(SWMM_Engine engine, int idx, int station_idx, double *station, double *elevation)
Get a single station–elevation pair from a transect.
Definition openswmm_infrastructure_impl.cpp:257
SWMM_ENGINE_API int swmm_inlet_get_params(SWMM_Engine engine, int idx, double *length, double *width, char *grate_type, int grate_buflen, double *open_area, double *splash_veloc)
Read an inlet's geometric parameters. Inverse of swmm_inlet_set_params.
Definition openswmm_infrastructure_impl.cpp:616
SWMM_ENGINE_API int swmm_lid_node_treatment_get(SWMM_Engine engine, int control, int row, SWMM_LidLayerTreatment *out)
Read a flattened per-layer treatment row.
Definition openswmm_lid_nodes_impl.cpp:122
SWMM_ENGINE_API int swmm_lid_node_configure_flow(SWMM_Engine engine, int control, const SWMM_LidNodeLayer *layers, int count, const SWMM_LidLayerTreatment *treatment, int treatment_count, const SWMM_LidRichardsOptions *options, const SWMM_LidRichardsMaterial *material)
Atomically configure a NODE control stack, treatment and flow formulation.
Definition openswmm_lid_nodes_impl.cpp:220
SWMM_ENGINE_API int swmm_street_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename a street cross-section in place.
Definition openswmm_infrastructure_impl.cpp:362
SWMM_ENGINE_API int swmm_lid_usage_count(SWMM_Engine engine)
Count LID-usage rows across all subcatchments.
Definition openswmm_infrastructure_impl.cpp:1508
SWMM_ENGINE_API int swmm_inlet_usage_remove(SWMM_Engine engine, int usage_idx)
Remove an inlet-usage row and shift later row indices.
Definition openswmm_infrastructure_impl.cpp:972
SWMM_ENGINE_API int swmm_street_add(SWMM_Engine engine, const char *id)
Add a new street cross-section definition.
Definition openswmm_infrastructure_impl.cpp:339
SWMM_ENGINE_API int swmm_lid_usage_remove(SWMM_Engine engine, int usage_idx)
Erase a subcatchment LID-usage row and shift later indices.
Definition openswmm_infrastructure_impl.cpp:1546
SWMM_LidNodeLayerKind
Definition openswmm_infrastructure.h:937
@ SWMM_LID_NODE_MEDIA
Definition openswmm_infrastructure.h:939
@ SWMM_LID_NODE_BOTTOM
Definition openswmm_infrastructure.h:941
@ SWMM_LID_NODE_SURFACE
Definition openswmm_infrastructure.h:938
@ SWMM_LID_NODE_AGGREGATE
Definition openswmm_infrastructure.h:940
SWMM_ENGINE_API int swmm_lid_get_storage(SWMM_Engine engine, int idx, double *thick, double *void_frac, double *ksat)
Read the stored storage layer parameters.
Definition openswmm_infrastructure_impl.cpp:1408
SWMM_ENGINE_API int swmm_lid_usage_add(SWMM_Engine engine, int subcatch_idx, int lid_idx, int number, double area, double width, double init_sat, double from_imperv)
Assign a LID control to a subcatchment.
Definition openswmm_infrastructure_impl.cpp:1479
SWMM_ENGINE_API int swmm_lid_node_state_count(SWMM_Engine engine, int node)
Count initialized runtime profile cells.
Definition openswmm_lid_nodes_impl.cpp:422
SWMM_ENGINE_API int swmm_inlet_usage_find_link(SWMM_Engine engine, int link_idx)
Find the first inlet-usage row hosted by a link.
Definition openswmm_infrastructure_impl.cpp:868
SWMM_ENGINE_API int swmm_lid_set_removal(SWMM_Engine engine, int idx, int constituent, double percent)
Assign a constituent underdrain-removal percentage.
Definition openswmm_infrastructure_impl.cpp:1218
SWMM_ENGINE_API int swmm_lid_set_storage(SWMM_Engine engine, int idx, double thick, double void_frac, double ksat)
Set the storage layer properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1137
SWMM_ENGINE_API int swmm_inlet_usage_get(SWMM_Engine engine, int usage_idx, SWMM_InletUsage *out)
Read a complete inlet placement row.
Definition openswmm_infrastructure_impl.cpp:880
SWMM_ENGINE_API int swmm_inlet_count(SWMM_Engine engine)
Get the total number of inlet definitions in the model.
Definition openswmm_infrastructure_impl.cpp:567
SWMM_ENGINE_API int swmm_inlet_usage_set(SWMM_Engine engine, const SWMM_InletUsage *usage, int *usage_idx)
Validate and upsert one inlet placement per host.
Definition openswmm_infrastructure_impl.cpp:903
SWMM_ENGINE_API const char * swmm_lid_id(SWMM_Engine engine, int idx)
Get the string identifier of a LID control by index.
Definition openswmm_infrastructure_impl.cpp:1345
SWMM_ENGINE_API int swmm_inlet_set_design(SWMM_Engine engine, int idx, const SWMM_InletDesign *design)
Validate and replace the type-specific inlet design.
Definition openswmm_infrastructure_impl.cpp:735
SWMM_ENGINE_API int swmm_lid_add(SWMM_Engine engine, const char *id, int type)
Add a new LID (Low Impact Development) control.
Definition openswmm_infrastructure_impl.cpp:1018
SWMM_ENGINE_API int swmm_lid_node_layer_get(SWMM_Engine engine, int control, int row, SWMM_LidNodeLayer *out)
Read one authored or derived NODE layer.
Definition openswmm_lid_nodes_impl.cpp:41
SWMM_ENGINE_API int swmm_lid_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename an LID control in place.
Definition openswmm_infrastructure_impl.cpp:1049
SWMM_ENGINE_API int swmm_street_get_params(SWMM_Engine engine, int idx, double *t_crown, double *h_curb, double *sx, double *n_road, double *gutter_depres, double *gutter_width, int *sides, double *back_width, double *back_slope, double *back_n)
Read back the geometric parameters of a street cross-section.
Definition openswmm_infrastructure_impl.cpp:454
SWMM_ENGINE_API int swmm_street_set_params(SWMM_Engine engine, int idx, double t_crown, double h_curb, double sx, double n_road, double gutter_depres, double gutter_width, int sides, double back_width, double back_slope, double back_n)
Set the geometric parameters for a street cross-section.
Definition openswmm_infrastructure_impl.cpp:404
SWMM_ENGINE_API int swmm_lid_node_configure(SWMM_Engine engine, int control, const SWMM_LidNodeLayer *layers, int count, const SWMM_LidLayerTreatment *treatment, int treatment_count)
Atomically configure a NODE control stack and treatment.
Definition openswmm_lid_nodes_impl.cpp:142
SWMM_InletType
Definition openswmm_infrastructure.h:680
@ SWMM_INLET_CUSTOM
Definition openswmm_infrastructure.h:687
@ SWMM_INLET_DROP_GRATE
Definition openswmm_infrastructure.h:685
@ SWMM_INLET_COMBO
Definition openswmm_infrastructure.h:683
@ SWMM_INLET_DROP_CURB
Definition openswmm_infrastructure.h:686
@ SWMM_INLET_SLOTTED
Definition openswmm_infrastructure.h:684
@ SWMM_INLET_CURB
Definition openswmm_infrastructure.h:682
@ SWMM_INLET_GRATE
Definition openswmm_infrastructure.h:681
SWMM_ENGINE_API int swmm_transect_get_comments(SWMM_Engine engine, int idx, char *buf, int buflen)
Get the free-form comments / description for a transect.
Definition openswmm_infrastructure_impl.cpp:234
SWMM_ENGINE_API int swmm_lid_get_drain(SWMM_Engine engine, int idx, double *coeff, double *expon, double *offset)
Read the stored drain layer parameters.
Definition openswmm_infrastructure_impl.cpp:1423
SWMM_ENGINE_API int swmm_transect_get_station_count(SWMM_Engine engine, int idx)
Get the number of station–elevation points stored for a transect.
Definition openswmm_infrastructure_impl.cpp:248
SWMM_ENGINE_API int swmm_inlet_set_comment(SWMM_Engine engine, int idx, const char *text)
Replace an inlet design comment.
Definition openswmm_infrastructure_impl.cpp:850
SWMM_ENGINE_API int swmm_inlet_add(SWMM_Engine engine, const char *id, const char *type)
Add a new inlet definition.
Definition openswmm_infrastructure_impl.cpp:491
SWMM_ENGINE_API int swmm_lid_richards_material_get(SWMM_Engine engine, int control, int row, SWMM_LidRichardsMaterial *out)
Read a control's Richards material.
Definition openswmm_lid_nodes_impl.cpp:207
SWMM_ENGINE_API int swmm_lid_node_layers_set(SWMM_Engine engine, int control, const SWMM_LidNodeLayer *rows, int count)
Replace NODE layers while preserving compatible treatment and flow settings.
Definition openswmm_lid_nodes_impl.cpp:54
SWMM_ENGINE_API int swmm_node_set_lid(SWMM_Engine engine, int node, int control, double saturation)
Assign or clear a storage-node LID and synchronize its geometry.
Definition openswmm_lid_nodes_impl.cpp:278
SWMM_ENGINE_API int swmm_transect_clear_stations(SWMM_Engine engine, int idx)
Remove all station–elevation pairs from a transect.
Definition openswmm_infrastructure_impl.cpp:274
SWMM_ENGINE_API int swmm_transect_add(SWMM_Engine engine, const char *id)
Add a new transect for irregular cross-sections.
Definition openswmm_infrastructure_impl.cpp:45
SWMM_ENGINE_API int swmm_lid_set_soil(SWMM_Engine engine, int idx, double thick, double porosity, double fc, double wp, double ksat, double kslope)
Set the soil layer properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1105
SWMM_ENGINE_API int swmm_lid_get_soil(SWMM_Engine engine, int idx, double *thick, double *porosity, double *fc, double *wp, double *ksat, double *kslope)
Read the stored soil layer parameters.
Definition openswmm_infrastructure_impl.cpp:1387
SWMM_ENGINE_API int swmm_lid_node_layer_count(SWMM_Engine engine, int control)
Count authored or derived stack layers, including a BOTTOM row when present.
Definition openswmm_lid_nodes_impl.cpp:33
SWMM_ENGINE_API const char * swmm_inlet_id(SWMM_Engine engine, int idx)
Get the string identifier of an inlet by index.
Definition openswmm_infrastructure_impl.cpp:585
SWMM_ENGINE_API int swmm_lid_usage_get(SWMM_Engine engine, int usage_idx, int *subcatch_idx, int *lid_idx, int *number, double *area, double *width, double *init_sat, double *from_imperv, int *to_perv, double *from_perv)
Read one LID usage row by global index.
Definition openswmm_infrastructure_impl.cpp:1515
SWMM_ENGINE_API int swmm_street_index(SWMM_Engine engine, const char *id)
Look up a street's zero-based index by its string identifier.
Definition openswmm_infrastructure_impl.cpp:433
SWMM_ENGINE_API int swmm_inlet_usage_count(SWMM_Engine engine)
Count inlet-usage rows of both host kinds.
Definition openswmm_infrastructure_impl.cpp:862
SWMM_ENGINE_API int swmm_lid_node_base_area(SWMM_Engine engine, int node, double *area)
Read the authored geometric area at a storage LID base.
Definition openswmm_lid_nodes_impl.cpp:346
SWMM_ENGINE_API int swmm_lid_node_state_get(SWMM_Engine engine, int node, int row, int *layer, double *bottom, double *top, double *moisture)
Read one initialized LID profile cell.
Definition openswmm_lid_nodes_impl.cpp:431
SWMM_ENGINE_API int swmm_inlet_get_type(SWMM_Engine engine, int idx, char *buf, int buflen)
Read an inlet's type string (the value passed to swmm_inlet_add).
Definition openswmm_infrastructure_impl.cpp:640
SWMM_ENGINE_API int swmm_transect_remove(SWMM_Engine engine, int idx)
Remove a transect by index.
Definition openswmm_infrastructure_impl.cpp:309
SWMM_ENGINE_API const char * swmm_transect_id(SWMM_Engine engine, int idx)
Get the string identifier of a transect by index.
Definition openswmm_infrastructure_impl.cpp:122
SWMM_ENGINE_API int swmm_node_get_lid(SWMM_Engine engine, int node, int *control, double *saturation)
Read a node LID-control assignment and initial saturation.
Definition openswmm_lid_nodes_impl.cpp:183
SWMM_ENGINE_API int swmm_lid_set_drainmat(SWMM_Engine engine, int idx, double thick, double void_frac, double roughness)
Set the drainage-mat layer properties for a LID control.
Definition openswmm_infrastructure_impl.cpp:1312
SWMM_ENGINE_API int swmm_inlet_rename(SWMM_Engine engine, int idx, const char *new_id)
Rename an inlet design in place.
Definition openswmm_infrastructure_impl.cpp:501
SWMM_ENGINE_API int swmm_lid_richards_state_get(SWMM_Engine engine, int node, int row, double *pressure, double *head, double *water)
Read one Richards cell's pressure, total head and complete water volume.
Definition openswmm_lid_nodes_impl.cpp:456
SWMM_ENGINE_API int swmm_node_set_lid_bottom(SWMM_Engine engine, int node, int mode)
Select bottom ownership for one assigned storage LID.
Definition openswmm_lid_nodes_impl.cpp:334
SWMM_LidNodeBottom
Definition openswmm_infrastructure.h:1154
@ SWMM_LID_BOTTOM_CURRENT
Definition openswmm_infrastructure.h:1155
@ SWMM_LID_BOTTOM_MESH_AQUIFER
Definition openswmm_infrastructure.h:1157
@ SWMM_LID_BOTTOM_SEALED
Definition openswmm_infrastructure.h:1156
SWMM_ENGINE_API int swmm_lid_richards_options_get(SWMM_Engine engine, int control, SWMM_LidRichardsOptions *out)
Read a control's Richards options.
Definition openswmm_lid_nodes_impl.cpp:195
SWMM_InletPlacement
Definition openswmm_infrastructure.h:717
@ SWMM_INLET_ON_SAG
Definition openswmm_infrastructure.h:720
@ SWMM_INLET_ON_GRADE
Definition openswmm_infrastructure.h:719
@ SWMM_INLET_AUTOMATIC
Definition openswmm_infrastructure.h:718
Complete description of an inlet design. All dimensions are in the project's display units (ft or m; ...
Definition openswmm_infrastructure.h:727
char curve_id[64]
Definition openswmm_infrastructure.h:743
double slot_length
Definition openswmm_infrastructure.h:740
int type
Definition openswmm_infrastructure.h:728
int grate_type
Definition openswmm_infrastructure.h:732
int throat
Definition openswmm_infrastructure.h:738
int curve_kind
Definition openswmm_infrastructure.h:744
double grate_width
Definition openswmm_infrastructure.h:731
double curb_length
Definition openswmm_infrastructure.h:736
double curb_height
Definition openswmm_infrastructure.h:737
double splash_veloc
Definition openswmm_infrastructure.h:734
double grate_length
Definition openswmm_infrastructure.h:730
double open_area
Definition openswmm_infrastructure.h:733
double slot_width
Definition openswmm_infrastructure.h:741
Definition openswmm_infrastructure.h:816
int capture_node_idx
Definition openswmm_infrastructure.h:820
int host_kind
Definition openswmm_infrastructure.h:817
double local_depress
Definition openswmm_infrastructure.h:824
double pct_clogged
Definition openswmm_infrastructure.h:822
int placement
Definition openswmm_infrastructure.h:826
int num_inlets
Definition openswmm_infrastructure.h:821
int design_idx
Definition openswmm_infrastructure.h:819
double local_width
Definition openswmm_infrastructure.h:825
int host_idx
Definition openswmm_infrastructure.h:818
double flow_limit
Definition openswmm_infrastructure.h:823
Definition openswmm_infrastructure.h:1207
int cell
Definition openswmm_infrastructure.h:1209
double reserved_up_m3
Definition openswmm_infrastructure.h:1215
double sampled_lid_head_m
Definition openswmm_infrastructure.h:1214
int valid_sample
Definition openswmm_infrastructure.h:1209
double accepted_up_m3
Definition openswmm_infrastructure.h:1216
double pending_up_m3
Definition openswmm_infrastructure.h:1212
double aquifer_head_m
Definition openswmm_infrastructure.h:1210
double requested_down_m3
Definition openswmm_infrastructure.h:1215
double sample_start_s
Definition openswmm_infrastructure.h:1213
double groundwater_residual_m3
Definition openswmm_infrastructure.h:1212
double reserved_down_m3
Definition openswmm_infrastructure.h:1215
double contact_area_m2
Definition openswmm_infrastructure.h:1210
double up_cumulative_m3
Definition openswmm_infrastructure.h:1211
double net_rate_m3s
Definition openswmm_infrastructure.h:1216
double accepted_down_m3
Definition openswmm_infrastructure.h:1216
double pending_down_m3
Definition openswmm_infrastructure.h:1212
double net_cumulative_m3
Definition openswmm_infrastructure.h:1211
double sample_end_s
Definition openswmm_infrastructure.h:1213
double sampled_aquifer_head_m
Definition openswmm_infrastructure.h:1214
double sampled_aquifer_time_s
Definition openswmm_infrastructure.h:1213
double surface_head_m
Definition openswmm_infrastructure.h:1210
int flow_model
Definition openswmm_infrastructure.h:1208
double down_cumulative_m3
Definition openswmm_infrastructure.h:1211
double requested_up_m3
Definition openswmm_infrastructure.h:1215
double aquifer_time_s
Definition openswmm_infrastructure.h:1210
Definition openswmm_infrastructure.h:987
const char * expression
Definition openswmm_infrastructure.h:992
int pollutant
Definition openswmm_infrastructure.h:989
double removal_percent
Definition openswmm_infrastructure.h:990
double decay_per_day
Definition openswmm_infrastructure.h:991
int layer
Definition openswmm_infrastructure.h:988
Definition openswmm_infrastructure.h:943
int kind
Definition openswmm_infrastructure.h:944
double params[7]
Definition openswmm_infrastructure.h:945
Definition openswmm_infrastructure.h:956
double specific_storage
Definition openswmm_infrastructure.h:957
double alpha
Definition openswmm_infrastructure.h:957
double n
Definition openswmm_infrastructure.h:957
double theta_r
Definition openswmm_infrastructure.h:957
double l
Definition openswmm_infrastructure.h:957
Definition openswmm_infrastructure.h:950
int model
Definition openswmm_infrastructure.h:951
double max_step
Definition openswmm_infrastructure.h:952
double atol
Definition openswmm_infrastructure.h:952
double rtol
Definition openswmm_infrastructure.h:952
int cells_per_layer
Definition openswmm_infrastructure.h:951
Definition openswmm_infrastructure.h:1311
double min_step
Definition openswmm_infrastructure.h:1313
int rejected
Definition openswmm_infrastructure.h:1312
int rhs
Definition openswmm_infrastructure.h:1312
int newton
Definition openswmm_infrastructure.h:1312
int accepted
Definition openswmm_infrastructure.h:1312
double balance_m3
Definition openswmm_infrastructure.h:1313