44#ifndef OPENSWMM_KINEMATIC_WAVE_HPP
45#define OPENSWMM_KINEMATIC_WAVE_HPP
92double getLinkInflow(SimulationContext& ctx, hydstruct::StructureSolver* structures,
int j,
115void updateStorageState(SimulationContext& ctx, hydstruct::StructureSolver* structures,
116 const std::vector<int>& order,
int pos,
int i,
double dt);
138void finishRouting(SimulationContext& ctx, hydstruct::StructureSolver* structures,
139 const std::vector<int>& order,
const std::vector<char>& storage_updated,
140 const std::vector<double>& link_y1,
const std::vector<double>& link_y2,
156double capConduitLoss(SimulationContext& ctx, std::size_t ucr,
double q);
162constexpr double WX = 0.6;
163constexpr double WT = 0.6;
254 double beta,
double length,
double dt,
double loss_rate);
Cross-section geometry — unified batch + per-element API.
Shape-grouped cross-section manager for batch computation.
Definition XSectBatch.hpp:447
Definition HydStructures.hpp:201
Kinematic wave solver state.
Definition KinematicWave.hpp:176
void setLinkOrder(const std::vector< int > &sorted_links)
Copy the topologically sorted global link order used for tree routing.
Definition KinematicWave.hpp:200
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)
Solve one native per-barrel KW continuity update with safeguarded Newton.
Definition KinematicWave.cpp:252
std::vector< double > q_in_
Inflow to each conduit (cfs)
Definition KinematicWave.hpp:264
std::vector< double > a_in_
Inlet area from inflow (ft2)
Definition KinematicWave.hpp:265
std::vector< double > y2_
End-of-step downstream flow depth (ft)
Definition KinematicWave.hpp:270
std::vector< double > a_out_
Outlet area from Newton solve (ft2)
Definition KinematicWave.hpp:267
std::vector< double > a2_
Previous outlet area (ft2)
Definition KinematicWave.hpp:261
int execute(SimulationContext &ctx, double dt, hydstruct::StructureSolver *structures=nullptr)
Route one tree-layout kinematic-wave step and update node/link native state.
Definition KinematicWave.cpp:448
std::vector< double > a1_
Previous inlet area (ft2)
Definition KinematicWave.hpp:259
std::vector< double > sf_in_
Section factor at inlet.
Definition KinematicWave.hpp:268
std::vector< double > q2_
Previous outlet flow (cfs)
Definition KinematicWave.hpp:260
std::vector< int > sorted_links_
Topological link order (upstream → downstream)
Definition KinematicWave.hpp:222
std::vector< double > q1_
Previous inlet flow (cfs)
Definition KinematicWave.hpp:258
std::vector< double > y1_
End-of-step upstream flow depth (ft)
Definition KinematicWave.hpp:269
std::vector< double > q_out_
Computed outflow (cfs)
Definition KinematicWave.hpp:266
void init(int n_conduits, const XSectGroups &groups)
Allocate/reset kinematic-wave history and work vectors by global link slot.
Definition KinematicWave.cpp:230
std::vector< char > storage_updated_
Definition KinematicWave.hpp:226
Definition HydStructures.cpp:48
Definition KinematicWave.cpp:49
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:622
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:162
constexpr double WX
Distance weighting factor.
Definition KinematicWave.hpp:162
double capConduitLoss(SimulationContext &ctx, std::size_t ucr, double q)
Limit positive conduit loss components by available tree-routing inflow.
Definition KinematicWave.cpp:750
constexpr double EPSIL
Newton convergence tolerance.
Definition KinematicWave.hpp:164
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:109
constexpr double WT
Time weighting factor.
Definition KinematicWave.hpp:163
Definition ExchangeLaw.hpp:60
Central, reentrant simulation context.
Definition SimulationContext.hpp:390
Native cross-section geometry and borrowed optional normalized transect tables.
Definition XSectBatch.hpp:119