16#ifndef OPENSWMM_LINKS_H
17#define OPENSWMM_LINKS_H
151 int from_node_idx,
int to_node_idx);
473 int shape,
double geom1,
double geom2,
474 double geom3,
double geom4);
488 int* shape,
double* geom1,
double* geom2,
489 double* geom3,
double* geom4);
919 int pollutant_idx,
double* conc);
961 double* buf,
int count);
1147 char* buf,
int buflen);
#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_link_set_seep_rate(SWMM_Engine engine, int idx, double rate)
Set the seepage loss rate for a conduit.
Definition openswmm_links_impl.cpp:973
SWMM_ENGINE_API int swmm_link_set_closed(SWMM_Engine engine, int idx, int closed)
Open or close a link.
Definition openswmm_links_impl.cpp:642
SWMM_ENGINE_API int swmm_link_get_stat_max_filling(SWMM_Engine engine, int idx, double *val)
Get the maximum depth/full-depth ratio (filling) in a link.
Definition openswmm_links_impl.cpp:1068
SWMM_ENGINE_API int swmm_link_set_end_contractions(SWMM_Engine engine, int idx, double n)
Set the number of end contractions for a weir link.
Definition openswmm_links_impl.cpp:912
SWMM_ENGINE_API int swmm_link_get_hyd_power(SWMM_Engine engine, int idx, double *power)
Get hydraulic power dissipated in a link (ft-lb/s). P = gamma * |Q| * |hL|.
Definition openswmm_links_impl.cpp:1170
SWMM_ENGINE_API int swmm_link_set_roughness(SWMM_Engine engine, int idx, double n)
Set the Manning's roughness coefficient.
Definition openswmm_links_impl.cpp:143
SWMM_ENGINE_API int swmm_link_get_stat_pump_volume(SWMM_Engine engine, int idx, double *volume)
Get pump total volume pumped (ft3).
Definition openswmm_links_impl.cpp:1112
SWMM_ENGINE_API int swmm_link_set_xsect(SWMM_Engine engine, int idx, int shape, double geom1, double geom2, double geom3, double geom4)
Set the cross-section geometry for a conduit link.
Definition openswmm_links_impl.cpp:436
SWMM_OutletRatingType
Outlet rating-curve classification.
Definition openswmm_links.h:367
@ SWMM_OUTLET_FUNCTIONAL_DEPTH
Definition openswmm_links.h:369
@ SWMM_OUTLET_FUNCTIONAL_HEAD
Definition openswmm_links.h:368
@ SWMM_OUTLET_TABULAR_DEPTH
Definition openswmm_links.h:371
@ SWMM_OUTLET_TABULAR_HEAD
Definition openswmm_links.h:370
SWMM_ENGINE_API int swmm_link_get_velocity(SWMM_Engine engine, int idx, double *velocity)
Get the current flow velocity in a link.
Definition openswmm_links_impl.cpp:564
SWMM_ENGINE_API int swmm_link_get_type(SWMM_Engine engine, int idx, int *type)
Get the type of a link.
Definition openswmm_links_impl.cpp:511
SWMM_ENGINE_API int swmm_link_set_culvert_code(SWMM_Engine engine, int idx, int code)
Set the FHWA culvert inlet geometry code.
Definition openswmm_links_impl.cpp:990
SWMM_ENGINE_API int swmm_link_set_pump_shutoff_depth(SWMM_Engine engine, int idx, double depth)
Set the pump shutoff depth (depth at upstream node when the pump turns off, project length units).
Definition openswmm_links_impl.cpp:379
SWMM_ENGINE_API int swmm_link_get_crest_height(SWMM_Engine engine, int idx, double *h)
Get the crest height for a weir link.
Definition openswmm_links_impl.cpp:887
SWMM_ENGINE_API int swmm_link_set_length(SWMM_Engine engine, int idx, double length)
Set the conduit length.
Definition openswmm_links_impl.cpp:134
SWMM_ENGINE_API int swmm_link_get_stat_max_velocity(SWMM_Engine engine, int idx, double *val)
Get the maximum velocity recorded in a link.
Definition openswmm_links_impl.cpp:1060
SWMM_ENGINE_API int swmm_link_get_roughness(SWMM_Engine engine, int idx, double *n)
Get the Manning's roughness coefficient.
Definition openswmm_links_impl.cpp:527
SWMM_ENGINE_API int swmm_link_set_pump_curve(SWMM_Engine engine, int idx, int curve_idx)
Assign a pump curve to a pump link.
Definition openswmm_links_impl.cpp:840
SWMM_ENGINE_API int swmm_link_set_orifice_type(SWMM_Engine engine, int idx, int type)
Set the orifice flow-attack classification (SIDE / BOTTOM).
Definition openswmm_links_impl.cpp:222
SWMM_ENGINE_API int swmm_link_get_length(SWMM_Engine engine, int idx, double *length)
Get the conduit length.
Definition openswmm_links_impl.cpp:519
SWMM_ENGINE_API int swmm_link_get_control_settings_bulk(SWMM_Engine engine, double *buf, int count)
Get active control settings (0..1) for all links in a single call.
Definition openswmm_links_impl.cpp:778
SWMM_ENGINE_API int swmm_link_get_slope(SWMM_Engine engine, int idx, double *slope)
Get the computed slope of a conduit.
Definition openswmm_links_impl.cpp:1024
SWMM_ENGINE_API int swmm_link_set_control_setting(SWMM_Engine engine, int idx, double setting)
Override control/pump setting on a link.
Definition openswmm_links_impl.cpp:608
SWMM_ENGINE_API int swmm_link_get_from_node(SWMM_Engine engine, int idx, int *node_idx)
Get the upstream (inlet) node index of a link.
Definition openswmm_links_impl.cpp:114
SWMM_ENGINE_API int swmm_link_get_stat_surcharge_time(SWMM_Engine engine, int idx, double *val)
Get the total surcharge duration for a link.
Definition openswmm_links_impl.cpp:1084
SWMM_ENGINE_API int swmm_link_get_loss_coeff(SWMM_Engine engine, int idx, double *inlet, double *outlet, double *avg)
Get entry, exit, and average loss coefficients for a conduit.
Definition openswmm_links_impl.cpp:945
SWMM_ENGINE_API int swmm_link_set_weir_type(SWMM_Engine engine, int idx, int type)
Set the weir flow classification.
Definition openswmm_links_impl.cpp:259
SWMM_ENGINE_API int swmm_link_set_nodes(SWMM_Engine engine, int idx, int from_node_idx, int to_node_idx)
Set the upstream and downstream nodes of a link.
Definition openswmm_links_impl.cpp:103
SWMM_ENGINE_API int swmm_link_set_target_setting(SWMM_Engine engine, int idx, double setting)
Set the target setting for a link (for gradual transitions).
Definition openswmm_links_impl.cpp:625
SWMM_ENGINE_API int swmm_link_rename(SWMM_Engine engine, int idx, const char *newId)
Rename the link at idx to newId. Returns SWMM_ERR_BADPARAM if newId is null, empty,...
Definition openswmm_links_impl.cpp:1184
SWMM_ENGINE_API int swmm_link_set_initial_flow(SWMM_Engine engine, int idx, double flow)
Set the initial flow in a link at simulation start.
Definition openswmm_links_impl.cpp:170
SWMM_ENGINE_API int swmm_link_get_culvert_code(SWMM_Engine engine, int idx, int *code)
Get the FHWA culvert inlet geometry code.
Definition openswmm_links_impl.cpp:999
SWMM_ENGINE_API int swmm_link_get_velocities_bulk(SWMM_Engine engine, double *buf, int count)
Get cross-sectional velocities for all links in a single call.
Definition openswmm_links_impl.cpp:737
SWMM_WeirType
Weir-flow classification.
Definition openswmm_links.h:313
@ SWMM_WEIR_VNOTCH
Definition openswmm_links.h:316
@ SWMM_WEIR_SIDEFLOW
Definition openswmm_links.h:315
@ SWMM_WEIR_TRANSVERSE
Definition openswmm_links.h:314
@ SWMM_WEIR_ROADWAY
Definition openswmm_links.h:318
@ SWMM_WEIR_TRAPEZOIDAL
Definition openswmm_links.h:317
SWMM_ENGINE_API int swmm_link_pop_last(SWMM_Engine engine, const char *id)
Remove the most recently added link (undo-of-add).
Definition openswmm_links_impl.cpp:75
SWMM_ENGINE_API int swmm_link_get_stat_pump_cycles(SWMM_Engine engine, int idx, int *cycles)
Get pump on/off cycle count.
Definition openswmm_links_impl.cpp:1096
SWMM_ENGINE_API int swmm_link_get_quality(SWMM_Engine engine, int link_idx, int pollutant_idx, double *conc)
Get the pollutant concentration in a link.
Definition openswmm_links_impl.cpp:663
SWMM_ENGINE_API int swmm_link_count(SWMM_Engine engine)
Get the total number of links in the model.
Definition openswmm_links_impl.cpp:31
SWMM_ENGINE_API int swmm_link_get_depth(SWMM_Engine engine, int idx, double *depth)
Get the current water depth in a link.
Definition openswmm_links_impl.cpp:556
SWMM_ENGINE_API int swmm_link_get_flow(SWMM_Engine engine, int idx, double *flow)
Get the current flow rate in a link.
Definition openswmm_links_impl.cpp:539
SWMM_ENGINE_API int swmm_link_get_discharge_coeff(SWMM_Engine engine, int idx, double *cd)
Get the discharge coefficient for a weir link.
Definition openswmm_links_impl.cpp:904
SWMM_ENGINE_API int swmm_link_set_outlet_expon(SWMM_Engine engine, int idx, double expon)
Set the outlet functional-form exponent.
Definition openswmm_links_impl.cpp:329
SWMM_ENGINE_API int swmm_link_get_pump_curve(SWMM_Engine engine, int idx, int *curve_idx)
Get the pump curve index assigned to a pump link.
Definition openswmm_links_impl.cpp:849
SWMM_ENGINE_API int swmm_link_get_orifice_open_close_rate(SWMM_Engine engine, int idx, double *rate)
Get the orifice open/close rate (fraction per second).
Definition openswmm_links_impl.cpp:421
SWMM_ENGINE_API int swmm_link_get_capacity(SWMM_Engine engine, int idx, double *capacity)
Get the current flow capacity utilization (depth / full depth).
Definition openswmm_links_impl.cpp:583
SWMM_ENGINE_API int swmm_link_set_flows_bulk(SWMM_Engine engine, const double *buf, int count)
Set flow rates for all links in a single call (runtime override).
Definition openswmm_links_impl.cpp:698
SWMM_ENGINE_API int swmm_link_index(SWMM_Engine engine, const char *id)
Look up a link's zero-based index by its string identifier.
Definition openswmm_links_impl.cpp:36
SWMM_XSectShape
Cross-section shape codes for conduit links.
Definition openswmm_links.h:47
@ SWMM_XSECT_CATENARY
Definition openswmm_links.h:65
@ SWMM_XSECT_SEMIELLIPTICAL
Definition openswmm_links.h:66
@ SWMM_XSECT_RECT_TRIANG
Definition openswmm_links.h:56
@ SWMM_XSECT_POWER
Definition openswmm_links.h:55
@ SWMM_XSECT_RECT_ROUND
Definition openswmm_links.h:57
@ SWMM_XSECT_RECT_CLOSED
Definition openswmm_links.h:50
@ SWMM_XSECT_TRAPEZOIDAL
Definition openswmm_links.h:52
@ SWMM_XSECT_RECT_OPEN
Definition openswmm_links.h:51
@ SWMM_XSECT_FILLED_CIRCULAR
Definition openswmm_links.h:49
@ SWMM_XSECT_HORSESHOE
Definition openswmm_links.h:63
@ SWMM_XSECT_TRIANGULAR
Definition openswmm_links.h:53
@ SWMM_XSECT_PARABOLIC
Definition openswmm_links.h:54
@ SWMM_XSECT_VERT_ELLIPSE
Definition openswmm_links.h:60
@ SWMM_XSECT_GOTHIC
Definition openswmm_links.h:64
@ SWMM_XSECT_MOD_BASKET
Definition openswmm_links.h:58
@ SWMM_XSECT_CIRCULAR
Definition openswmm_links.h:48
@ SWMM_XSECT_ARCH
Definition openswmm_links.h:61
@ SWMM_XSECT_HORIZ_ELLIPSE
Definition openswmm_links.h:59
@ SWMM_XSECT_EGGSHAPED
Definition openswmm_links.h:62
@ SWMM_XSECT_IRREGULAR
Definition openswmm_links.h:67
SWMM_ENGINE_API int swmm_link_get_outlet_rating_type(SWMM_Engine engine, int idx, int *type)
Get the outlet rating-curve classification.
Definition openswmm_links_impl.cpp:313
SWMM_ENGINE_API int swmm_link_get_pump_stats_bulk(SWMM_Engine engine, int *cycles, double *on_time, double *volume, int count)
Get pump utilization statistics for all links in a single call.
Definition openswmm_links_impl.cpp:1133
SWMM_ENGINE_API int swmm_link_get_capacities_bulk(SWMM_Engine engine, double *buf, int count)
Get capacity ratios (q/q_full) for all links in a single call.
Definition openswmm_links_impl.cpp:755
SWMM_ENGINE_API int swmm_link_set_offset_up(SWMM_Engine engine, int idx, double offset)
Set the upstream (inlet) offset above the upstream node invert.
Definition openswmm_links_impl.cpp:152
SWMM_ENGINE_API int swmm_link_add(SWMM_Engine engine, const char *id, int type)
Add a new link to the model.
Definition openswmm_links_impl.cpp:52
SWMM_ENGINE_API int swmm_link_set_max_flow(SWMM_Engine engine, int idx, double flow)
Set the maximum allowable flow in a link.
Definition openswmm_links_impl.cpp:179
SWMM_ENGINE_API int swmm_link_get_offset_dn(SWMM_Engine engine, int idx, double *offset)
Get the downstream (outlet) offset.
Definition openswmm_links_impl.cpp:1040
SWMM_ENGINE_API int swmm_link_get_stat_max_flow(SWMM_Engine engine, int idx, double *val)
Get the maximum flow recorded in a link during the simulation.
Definition openswmm_links_impl.cpp:1052
SWMM_ENGINE_API int swmm_link_set_outlet_rating_type(SWMM_Engine engine, int idx, int type)
Set the outlet rating-curve classification.
Definition openswmm_links_impl.cpp:300
SWMM_ENGINE_API int swmm_link_get_pump_init_state(SWMM_Engine engine, int idx, int *on)
Get the initial on/off state of a pump.
Definition openswmm_links_impl.cpp:866
SWMM_ENGINE_API int swmm_link_get_volumes_bulk(SWMM_Engine engine, double *buf, int count)
Get stored volumes for all links in a single call.
Definition openswmm_links_impl.cpp:769
SWMM_ENGINE_API int swmm_link_set_loss_coeff(SWMM_Engine engine, int idx, double inlet, double outlet, double avg)
Set entry, exit, and average loss coefficients for a conduit.
Definition openswmm_links_impl.cpp:933
SWMM_ENGINE_API int swmm_link_set_orifice_open_close_rate(SWMM_Engine engine, int idx, double rate)
Set the orifice open/close rate (fraction per second).
Definition openswmm_links_impl.cpp:409
SWMM_ENGINE_API int swmm_link_get_end_contractions(SWMM_Engine engine, int idx, double *n)
Get the number of end contractions for a weir link.
Definition openswmm_links_impl.cpp:921
SWMM_ENGINE_API int swmm_link_get_stat_pump_on_time(SWMM_Engine engine, int idx, double *seconds)
Get pump total on-time (seconds).
Definition openswmm_links_impl.cpp:1104
SWMM_ENGINE_API int swmm_link_get_barrels(SWMM_Engine engine, int idx, int *n)
Get the number of parallel barrels in a conduit.
Definition openswmm_links_impl.cpp:1016
SWMM_ENGINE_API int swmm_link_get_volume(SWMM_Engine engine, int idx, double *volume)
Get the current water volume stored in a link.
Definition openswmm_links_impl.cpp:596
SWMM_ENGINE_API int swmm_link_set_pump_init_state(SWMM_Engine engine, int idx, int on)
Set the initial on/off state of a pump at simulation start.
Definition openswmm_links_impl.cpp:857
SWMM_ENGINE_API int swmm_link_set_offset_dn(SWMM_Engine engine, int idx, double offset)
Set the downstream (outlet) offset above the downstream node invert.
Definition openswmm_links_impl.cpp:161
SWMM_ENGINE_API int swmm_link_get_to_node(SWMM_Engine engine, int idx, int *node_idx)
Get the downstream (outlet) node index of a link.
Definition openswmm_links_impl.cpp:122
SWMM_ENGINE_API int swmm_link_set_discharge_coeff(SWMM_Engine engine, int idx, double cd)
Set the discharge coefficient for a weir link.
Definition openswmm_links_impl.cpp:895
SWMM_ENGINE_API int swmm_link_get_pump_shutoff_depth(SWMM_Engine engine, int idx, double *depth)
Get the pump shutoff depth.
Definition openswmm_links_impl.cpp:391
SWMM_ENGINE_API int swmm_link_get_offset_up(SWMM_Engine engine, int idx, double *offset)
Get the upstream (inlet) offset.
Definition openswmm_links_impl.cpp:1032
SWMM_ENGINE_API int swmm_link_get_weir_type(SWMM_Engine engine, int idx, int *type)
Get the weir flow classification.
Definition openswmm_links_impl.cpp:272
SWMM_ENGINE_API int swmm_link_get_initial_flow(SWMM_Engine engine, int idx, double *flow)
Get the initial flow in a link at simulation start.
Definition openswmm_links_impl.cpp:191
SWMM_ENGINE_API const char * swmm_link_id(SWMM_Engine engine, int idx)
Get the string identifier of a link by index.
Definition openswmm_links_impl.cpp:41
SWMM_ENGINE_API int swmm_link_get_stat_vol_flow(SWMM_Engine engine, int idx, double *val)
Get the total volume conveyed through a link.
Definition openswmm_links_impl.cpp:1076
SWMM_LinkType
Link type classification.
Definition openswmm_links.h:32
@ SWMM_LINK_PUMP
Definition openswmm_links.h:34
@ SWMM_LINK_ORIFICE
Definition openswmm_links.h:35
@ SWMM_LINK_CONDUIT
Definition openswmm_links.h:33
@ SWMM_LINK_OUTLET
Definition openswmm_links.h:37
@ SWMM_LINK_WEIR
Definition openswmm_links.h:36
SWMM_OrificeType
Orifice flow-attack classification.
Definition openswmm_links.h:266
@ SWMM_ORIFICE_BOTTOM
Definition openswmm_links.h:268
@ SWMM_ORIFICE_SIDE
Definition openswmm_links.h:267
SWMM_ENGINE_API int swmm_link_get_flows_bulk(SWMM_Engine engine, double *buf, int count)
Get flow rates for all links in a single call.
Definition openswmm_links_impl.cpp:680
SWMM_ENGINE_API int swmm_link_get_xsect(SWMM_Engine engine, int idx, int *shape, double *geom1, double *geom2, double *geom3, double *geom4)
Get the cross-section geometry for a conduit link.
Definition openswmm_links_impl.cpp:492
SWMM_ENGINE_API int swmm_link_get_ids_bulk(SWMM_Engine engine, char *buf, int stride, int count)
Get link IDs for all links in a single call (stride-packed UTF-8).
Definition openswmm_links_impl.cpp:816
SWMM_ENGINE_API int swmm_link_set_tag(SWMM_Engine engine, int idx, const char *tag)
Set or clear the link's tag. Null/empty clears. Persists across rename.
Definition openswmm_links_impl.cpp:1208
SWMM_ENGINE_API int swmm_link_get_quality_bulk(SWMM_Engine engine, int pollutant_idx, double *buf, int count)
Get pollutant concentrations for all links for one pollutant.
Definition openswmm_links_impl.cpp:708
SWMM_ENGINE_API int swmm_link_set_pump_startup_depth(SWMM_Engine engine, int idx, double depth)
Set the pump startup depth (depth at upstream node when the pump turns on, project length units).
Definition openswmm_links_impl.cpp:356
SWMM_ENGINE_API int swmm_link_get_depths_bulk(SWMM_Engine engine, double *buf, int count)
Get water depths for all links in a single call.
Definition openswmm_links_impl.cpp:689
SWMM_ENGINE_API int swmm_link_get_seep_rate(SWMM_Engine engine, int idx, double *rate)
Get the seepage loss rate for a conduit.
Definition openswmm_links_impl.cpp:982
SWMM_ENGINE_API int swmm_link_get_outlet_expon(SWMM_Engine engine, int idx, double *expon)
Get the outlet functional-form exponent.
Definition openswmm_links_impl.cpp:341
SWMM_ENGINE_API int swmm_link_set_crest_height(SWMM_Engine engine, int idx, double h)
Set the crest height for a weir link.
Definition openswmm_links_impl.cpp:878
SWMM_ENGINE_API int swmm_link_get_closed(SWMM_Engine engine, int idx, int *closed)
Get link open/closed status. Returns 1 if closed, 0 if open.
Definition openswmm_links_impl.cpp:651
SWMM_ENGINE_API int swmm_link_set_barrels(SWMM_Engine engine, int idx, int n)
Set the number of parallel barrels in a conduit.
Definition openswmm_links_impl.cpp:1007
SWMM_ENGINE_API int swmm_link_get_hyd_powers_bulk(SWMM_Engine engine, double *buf, int count)
Get hydraulic power dissipated in every link in a single call.
Definition openswmm_links_impl.cpp:797
SWMM_ENGINE_API int swmm_link_get_control_setting(SWMM_Engine engine, int idx, double *setting)
Get current control setting.
Definition openswmm_links_impl.cpp:617
SWMM_ENGINE_API int swmm_link_get_target_setting(SWMM_Engine engine, int idx, double *setting)
Get the current target setting.
Definition openswmm_links_impl.cpp:634
SWMM_ENGINE_API int swmm_link_get_target_settings_bulk(SWMM_Engine engine, double *buf, int count)
Get target control settings for all links in a single call.
Definition openswmm_links_impl.cpp:787
SWMM_ENGINE_API int swmm_link_set_flow(SWMM_Engine engine, int idx, double flow)
Set the flow rate in a link (runtime override).
Definition openswmm_links_impl.cpp:547
SWMM_ENGINE_API int swmm_link_get_max_flow(SWMM_Engine engine, int idx, double *flow)
Get the maximum allowable flow in a link.
Definition openswmm_links_impl.cpp:202
SWMM_ENGINE_API int swmm_link_get_pump_startup_depth(SWMM_Engine engine, int idx, double *depth)
Get the pump startup depth.
Definition openswmm_links_impl.cpp:368
SWMM_ENGINE_API int swmm_link_get_orifice_type(SWMM_Engine engine, int idx, int *type)
Get the orifice flow-attack classification.
Definition openswmm_links_impl.cpp:236
SWMM_ENGINE_API int swmm_link_set_flap_gate(SWMM_Engine engine, int idx, int has_gate)
Set whether a flap gate exists on a link.
Definition openswmm_links_impl.cpp:956
SWMM_ENGINE_API int swmm_link_get_flap_gate(SWMM_Engine engine, int idx, int *has_gate)
Get whether a flap gate exists on a link.
Definition openswmm_links_impl.cpp:965
SWMM_ENGINE_API int swmm_link_get_tag(SWMM_Engine engine, int idx, char *buf, int buflen)
Read the link's tag into buf (NUL-terminated, truncated if too small).
Definition openswmm_links_impl.cpp:1193