44#ifndef OPENSWMM_KINEMATIC_WAVE_HPP
45#define OPENSWMM_KINEMATIC_WAVE_HPP
91 hydstruct::StructureSolver* structures,
115 hydstruct::StructureSolver* structures,
116 const std::vector<int>& order,
117 int pos,
int i,
double dt);
140 hydstruct::StructureSolver* structures,
141 const std::vector<int>& order,
142 const std::vector<char>& storage_updated,
143 const std::vector<double>& link_y1,
144 const std::vector<double>& link_y2,
151constexpr double WX = 0.6;
152constexpr double WT = 0.6;
201 double q_full,
double a_full,
double s_full,
202 double beta,
double length,
double dt,
Cross-section geometry — unified batch + per-element API.
Shape-grouped cross-section manager for batch computation.
Definition XSectBatch.hpp:243
Definition HydStructures.hpp:170
Kinematic wave solver state.
Definition KinematicWave.hpp:165
void setLinkOrder(const std::vector< int > &sorted_links)
Set topological link order (must be called after init, before first execute).
Definition KinematicWave.hpp:172
int solveConduit(int idx, const XSectParams &xs, double q_full, double a_full, double s_full, double beta, double length, double dt, double loss_rate)
Per-conduit Newton solve. Returns iteration count.
Definition KinematicWave.cpp:215
std::vector< double > q_in_
Inflow to each conduit (cfs)
Definition KinematicWave.hpp:213
std::vector< double > a_in_
Inlet area from inflow (ft2)
Definition KinematicWave.hpp:214
std::vector< double > y2_
End-of-step downstream flow depth (ft)
Definition KinematicWave.hpp:219
std::vector< double > a_out_
Outlet area from Newton solve (ft2)
Definition KinematicWave.hpp:216
std::vector< double > a2_
Previous outlet area (ft2)
Definition KinematicWave.hpp:210
int execute(SimulationContext &ctx, double dt, hydstruct::StructureSolver *structures=nullptr)
Route all conduits for one KW timestep.
Definition KinematicWave.cpp:404
std::vector< double > a1_
Previous inlet area (ft2)
Definition KinematicWave.hpp:208
std::vector< double > sf_in_
Section factor at inlet.
Definition KinematicWave.hpp:217
std::vector< double > q2_
Previous outlet flow (cfs)
Definition KinematicWave.hpp:209
std::vector< int > sorted_links_
Topological link order (upstream → downstream)
Definition KinematicWave.hpp:193
std::vector< double > q1_
Previous inlet flow (cfs)
Definition KinematicWave.hpp:207
std::vector< double > y1_
End-of-step upstream flow depth (ft)
Definition KinematicWave.hpp:218
std::vector< double > q_out_
Computed outflow (cfs)
Definition KinematicWave.hpp:215
void init(int n_conduits, const XSectGroups &groups)
Definition KinematicWave.cpp:193
std::vector< char > storage_updated_
Definition KinematicWave.hpp:197
Definition HydStructures.cpp:46
Definition KinematicWave.cpp:47
void finishRouting(SimulationContext &ctx, hydstruct::StructureSolver *structures, const std::vector< int > &order, const std::vector< char > &storage_updated, const std::vector< double > &link_y1, const std::vector< double > &link_y2, double dt)
End-of-step node/link state for tree-layout routing (KW/steady).
Definition KinematicWave.cpp:560
void updateStorageState(SimulationContext &ctx, hydstruct::StructureSolver *structures, const std::vector< int > &order, int pos, int i, double dt)
Update a storage node's depth & volume by successive approximation.
Definition KinematicWave.cpp:130
constexpr double WX
Distance weighting factor.
Definition KinematicWave.hpp:151
constexpr double EPSIL
Newton convergence tolerance.
Definition KinematicWave.hpp:153
double getLinkInflow(SimulationContext &ctx, hydstruct::StructureSolver *structures, int j, double dt)
Flow into the upstream end of a link under Steady/Kin. Wave routing.
Definition KinematicWave.cpp:84
constexpr double WT
Time weighting factor.
Definition KinematicWave.hpp:152
Definition NodeCoupling.cpp:16
Central, reentrant simulation context.
Definition SimulationContext.hpp:353
Definition XSectBatch.hpp:110