OpenSWMM Engine  6.0.0-alpha.3
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.3)
Loading...
Searching...
No Matches
openswmm_infrastructure.h
Go to the documentation of this file.
1
15
16#ifndef OPENSWMM_INFRASTRUCTURE_H
17#define OPENSWMM_INFRASTRUCTURE_H
18
19#include "openswmm_engine.h"
20
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25/* =========================================================================
26 * Transects
27 * ========================================================================= */
28
35SWMM_ENGINE_API int swmm_transect_add(SWMM_Engine engine, const char* id);
36
46SWMM_ENGINE_API int swmm_transect_set_roughness(SWMM_Engine engine, int idx, double n_left, double n_right, double n_channel);
47
60SWMM_ENGINE_API int swmm_transect_add_station(SWMM_Engine engine, int idx, double station, double elevation);
61
68
75SWMM_ENGINE_API int swmm_transect_index(SWMM_Engine engine, const char* id);
76
83SWMM_ENGINE_API const char* swmm_transect_id(SWMM_Engine engine, int idx);
84
85/* -------------------------------------------------------------------------
86 * Per-field getters / setters (DA-ENG-09 + BQ-TR-02)
87 *
88 * GUI editors (Slice BQ Phase 6.7.4 TransectEditor) need round-trip access
89 * to every transect field; the legacy 3-function surface (add / set_roughness
90 * / add_station) only covers a fraction. The functions below close that gap.
91 * ------------------------------------------------------------------------- */
92
103 double* n_left, double* n_right, double* n_channel);
104
118 double x_left, double x_right);
119
129 double* x_left, double* x_right);
130
148 double x_left, double x_right);
149
159 double* x_left, double* x_right);
160
181 double x_factor, double y_factor, double length_factor);
182
193 double* x_factor, double* y_factor, double* length_factor);
194
202SWMM_ENGINE_API int swmm_transect_set_comments(SWMM_Engine engine, int idx, const char* text);
203
217SWMM_ENGINE_API int swmm_transect_get_comments(SWMM_Engine engine, int idx, char* buf, int buflen);
218
226
236SWMM_ENGINE_API int swmm_transect_get_station(SWMM_Engine engine, int idx, int station_idx,
237 double* station, double* elevation);
238
250
262SWMM_ENGINE_API int swmm_transect_rename(SWMM_Engine engine, int idx, const char* new_id);
263
277
278/* =========================================================================
279 * Streets
280 * ========================================================================= */
281
288SWMM_ENGINE_API int swmm_street_add(SWMM_Engine engine, const char* id);
289
308 double t_crown, double h_curb, double sx, double n_road,
309 double gutter_depres, double gutter_width, int sides,
310 double back_width, double back_slope, double back_n);
311
318
325SWMM_ENGINE_API int swmm_street_index(SWMM_Engine engine, const char* id);
326
333SWMM_ENGINE_API const char* swmm_street_id(SWMM_Engine engine, int idx);
334
357 double* t_crown, double* h_curb, double* sx, double* n_road,
358 double* gutter_depres, double* gutter_width, int* sides,
359 double* back_width, double* back_slope, double* back_n);
360
361/* =========================================================================
362 * Inlets
363 * ========================================================================= */
364
372SWMM_ENGINE_API int swmm_inlet_add(SWMM_Engine engine, const char* id, const char* type);
373
385SWMM_ENGINE_API int swmm_inlet_set_params(SWMM_Engine engine, int idx, double length, double width,
386 const char* grate_type, double open_area, double splash_veloc);
387
394
401SWMM_ENGINE_API int swmm_inlet_index(SWMM_Engine engine, const char* id);
402
409SWMM_ENGINE_API const char* swmm_inlet_id(SWMM_Engine engine, int idx);
410
432 double* length, double* width,
433 char* grate_type, int grate_buflen,
434 double* open_area, double* splash_veloc);
435
444SWMM_ENGINE_API int swmm_inlet_get_type(SWMM_Engine engine, int idx, char* buf, int buflen);
445
446/* =========================================================================
447 * LID controls
448 * ========================================================================= */
449
462SWMM_ENGINE_API int swmm_lid_add(SWMM_Engine engine, const char* id, int type);
463
473SWMM_ENGINE_API int swmm_lid_set_surface(SWMM_Engine engine, int idx, double storage, double roughness, double slope);
474
487SWMM_ENGINE_API int swmm_lid_set_soil(SWMM_Engine engine, int idx, double thick, double porosity, double fc, double wp, double ksat, double kslope);
488
498SWMM_ENGINE_API int swmm_lid_set_storage(SWMM_Engine engine, int idx, double thick, double void_frac, double ksat);
499
509SWMM_ENGINE_API int swmm_lid_set_drain(SWMM_Engine engine, int idx, double coeff, double expon, double offset);
510
529SWMM_ENGINE_API int swmm_lid_set_pavement(SWMM_Engine engine, int idx, double thick, double void_ratio,
530 double frac_imperv, double ksat, double clog_factor, double regen_days);
531
546SWMM_ENGINE_API int swmm_lid_set_drainmat(SWMM_Engine engine, int idx, double thick, double void_frac, double roughness);
547
554
561SWMM_ENGINE_API int swmm_lid_index(SWMM_Engine engine, const char* id);
562
569SWMM_ENGINE_API const char* swmm_lid_id(SWMM_Engine engine, int idx);
570
579SWMM_ENGINE_API int swmm_lid_get_type(SWMM_Engine engine, int idx, int* type);
580
586SWMM_ENGINE_API int swmm_lid_get_surface(SWMM_Engine engine, int idx, double* storage, double* roughness, double* slope);
587
589SWMM_ENGINE_API int swmm_lid_get_soil(SWMM_Engine engine, int idx, double* thick, double* porosity, double* fc, double* wp, double* ksat, double* kslope);
590
592SWMM_ENGINE_API int swmm_lid_get_storage(SWMM_Engine engine, int idx, double* thick, double* void_frac, double* ksat);
593
595SWMM_ENGINE_API int swmm_lid_get_drain(SWMM_Engine engine, int idx, double* coeff, double* expon, double* offset);
596
598SWMM_ENGINE_API int swmm_lid_get_pavement(SWMM_Engine engine, int idx, double* thick, double* void_ratio,
599 double* frac_imperv, double* ksat, double* clog_factor, double* regen_days);
600
602SWMM_ENGINE_API int swmm_lid_get_drainmat(SWMM_Engine engine, int idx, double* thick, double* void_frac, double* roughness);
603
604/* =========================================================================
605 * LID usage (assign LID to subcatchment)
606 * ========================================================================= */
607
624SWMM_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);
625
634
650SWMM_ENGINE_API int swmm_lid_usage_get(SWMM_Engine engine, int usage_idx,
651 int* subcatch_idx, int* lid_idx, int* number,
652 double* area, double* width, double* init_sat,
653 double* from_imperv, int* to_perv, double* from_perv);
654
660SWMM_ENGINE_API int swmm_lid_usage_remove(SWMM_Engine engine, int usage_idx);
661
662#ifdef __cplusplus
663} /* extern "C" */
664#endif
665
666#endif /* OPENSWMM_INFRASTRUCTURE_H */
#define SWMM_ENGINE_API
Definition openswmm_2d.h:37
void * SWMM_Engine
Opaque handle to an OpenSWMM Engine instance.
Definition openswmm_callbacks.h:35
OpenSWMM Engine — primary transparent C API (master header).
SWMM_ENGINE_API int swmm_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:119
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:61
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:96
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 porous-pavement layer. Inverse of swmm_lid_set_pavement. Any out-param may be null.
Definition openswmm_infrastructure_impl.cpp:729
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:421
SWMM_ENGINE_API int swmm_lid_get_surface(SWMM_Engine engine, int idx, double *storage, double *roughness, double *slope)
Read the surface layer properties. Inverse of swmm_lid_set_surface.
Definition openswmm_infrastructure_impl.cpp:682
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:76
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:230
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:649
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:644
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:605
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:588
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:108
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:152
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:141
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:50
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:130
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:400
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:176
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:532
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:348
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:164
SWMM_ENGINE_API int swmm_transect_count(SWMM_Engine engine)
Get the total number of transects in the model.
Definition openswmm_infrastructure_impl.cpp:71
SWMM_ENGINE_API int swmm_lid_get_drainmat(SWMM_Engine engine, int idx, double *thick, double *void_frac, double *roughness)
Read the drainage-mat layer. Inverse of swmm_lid_set_drainmat. Any out-param may be null.
Definition openswmm_infrastructure_impl.cpp:744
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:674
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:334
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:205
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:450
SWMM_ENGINE_API int swmm_lid_usage_count(SWMM_Engine engine)
Total number of LID usage rows across all subcatchments.
Definition openswmm_infrastructure_impl.cpp:784
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:289
SWMM_ENGINE_API int swmm_lid_usage_remove(SWMM_Engine engine, int usage_idx)
Remove one LID usage row by global index.
Definition openswmm_infrastructure_impl.cpp:812
SWMM_ENGINE_API int swmm_lid_get_storage(SWMM_Engine engine, int idx, double *thick, double *void_frac, double *ksat)
Read the storage layer properties. Inverse of swmm_lid_set_storage. Any out-param may be null.
Definition openswmm_infrastructure_impl.cpp:707
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:759
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:571
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:416
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:658
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:500
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:355
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:311
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:185
SWMM_ENGINE_API int swmm_lid_get_drain(SWMM_Engine engine, int idx, double *coeff, double *expon, double *offset)
Read the underdrain properties. Inverse of swmm_lid_set_drain. Any out-param may be null.
Definition openswmm_infrastructure_impl.cpp:718
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:198
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:382
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:220
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:25
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:549
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 soil layer properties. Inverse of swmm_lid_set_soil. Any out-param may be null.
Definition openswmm_infrastructure_impl.cpp:693
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:430
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:790
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:339
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:469
SWMM_ENGINE_API int swmm_transect_remove(SWMM_Engine engine, int idx)
Remove a transect by index.
Definition openswmm_infrastructure_impl.cpp:260
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:85
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:627