32#ifndef OPENSWMM_HYD_STRUCTURES_HPP
33#define OPENSWMM_HYD_STRUCTURES_HPP
35#include "../data/LinkData.hpp"
36#include "../data/NodeData.hpp"
37#include "../data/TableData.hpp"
42struct SimulationContext;
146 double* node_new_surf_area =
nullptr);
161 std::vector<int> nc_indices_;
166 const double* node_new_surf_area);
174 double* node_new_surf_area =
nullptr);
181 double* node_new_surf_area =
nullptr);
Definition HydStructures.hpp:123
void computeAllFlows(SimulationContext &ctx, double dt, double *node_new_surf_area=nullptr)
Compute flow for all non-conduit links (batch by type).
Definition HydStructures.cpp:859
const std::vector< int > & nonConduitIndices() const noexcept
Get pre-built list of all non-conduit link indices.
Definition HydStructures.hpp:154
void updatePumpTargetSettings(SimulationContext &ctx)
Evaluate pump startup/shutoff depth hysteresis. Must be called ONCE per timestep BEFORE the DW iterat...
Definition HydStructures.cpp:166
void init(SimulationContext &ctx)
Definition HydStructures.cpp:29
constexpr double FUDGE
Definition HydStructures.hpp:51
constexpr double GRAVITY
Definition HydStructures.hpp:50
Definition NodeCoupling.cpp:15
Central, reentrant simulation context.
Definition SimulationContext.hpp:274
Definition HydStructures.hpp:68
std::vector< double > surf_area
Definition HydStructures.hpp:81
std::vector< double > c_orifice
Cd * sqrt(2g) * Area.
Definition HydStructures.hpp:72
std::vector< int > shape
BOTTOM or SIDE.
Definition HydStructures.hpp:71
std::vector< double > length_eff
Definition HydStructures.hpp:85
int count
Definition HydStructures.hpp:69
std::vector< double > h_crit
Transition depth.
Definition HydStructures.hpp:74
void resize(int n)
Definition HydStructures.cpp:25
std::vector< uint8_t > has_flap
Definition HydStructures.hpp:75
std::vector< int > link_idx
Definition HydStructures.hpp:70
std::vector< double > c_weir
Cd * L * sqrt(2g) for partial fill.
Definition HydStructures.hpp:73
Definition HydStructures.hpp:110
void resize(int n)
Definition HydStructures.cpp:27
std::vector< int > link_idx
Definition HydStructures.hpp:112
int count
Definition HydStructures.hpp:111
std::vector< int > curve_idx
Rating curve (-1 = power law)
Definition HydStructures.hpp:113
std::vector< double > q_expon
Power law exponent.
Definition HydStructures.hpp:115
std::vector< double > q_coeff
Power law coefficient.
Definition HydStructures.hpp:114
Definition HydStructures.hpp:57
int count
Definition HydStructures.hpp:58
std::vector< int > curve_type
Pump type (1-5, 6=ideal)
Definition HydStructures.hpp:61
std::vector< int > curve_idx
Pump curve table index.
Definition HydStructures.hpp:60
std::vector< int > link_idx
Global link index.
Definition HydStructures.hpp:59
std::vector< double > speed
Current speed setting [0-1].
Definition HydStructures.hpp:62
std::vector< double > y_on
Startup depth.
Definition HydStructures.hpp:63
void resize(int n)
Definition HydStructures.cpp:24
std::vector< double > y_off
Shutoff depth.
Definition HydStructures.hpp:64
Definition HydStructures.hpp:89
std::vector< uint8_t > has_flap
Definition HydStructures.hpp:98
std::vector< int > cd_curve
Optional Cd(head) curve index.
Definition HydStructures.hpp:97
std::vector< double > slope
V-notch slope or trap slope.
Definition HydStructures.hpp:96
std::vector< double > end_con
End contraction factor.
Definition HydStructures.hpp:95
std::vector< double > length_eff
Definition HydStructures.hpp:106
std::vector< double > surf_area
Definition HydStructures.hpp:102
void resize(int n)
Definition HydStructures.cpp:26
std::vector< double > c_disch2
End section coefficient (trapezoidal)
Definition HydStructures.hpp:94
std::vector< int > link_idx
Definition HydStructures.hpp:91
std::vector< int > weir_type
TRANSVERSE/SIDE/VNOTCH/TRAPEZOIDAL.
Definition HydStructures.hpp:92
std::vector< double > c_disch1
Main discharge coefficient.
Definition HydStructures.hpp:93
int count
Definition HydStructures.hpp:90