![]() |
OpenSWMM Engine
6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
|
Functions | |
| double | getVolume (const NodeData &nodes, int idx, double depth, TableData *tables=nullptr) |
| Compute volume at a given depth for a single node. | |
| double | getSurfArea (const NodeData &nodes, int idx, double depth, TableData *tables=nullptr) |
| Compute surface area at a given depth for a single node. | |
| double | getPondedArea (const NodeData &nodes, int idx, double depth) |
| Get the ponded area (for overflow above rim). | |
| double | getMaxOutflow (const NodeData &nodes, int idx, double q, double dt) |
| Compute max outflow limited by available volume. | |
| double | getOverflow (double new_volume, double full_volume, double dt) |
| Compute overflow rate at a node. | |
| void | computeHeads (const double *invert, const double *depth, double *head, int n) |
| Compute head = invert + depth for all nodes. | |
| void | computeVolumes (const NodeData &nodes, const double *depth, double *volume) |
| Compute volumes for all nodes from their current depths. | |
| void | computeOverflows (const double *new_volume, const double *full_volume, double *overflow, double dt, int n) |
| Compute overflow for all nodes. | |
| double | getHead (double invert_elev, double depth) |
| Compute head from depth: head = invert + depth. | |
| void openswmm::node::computeHeads | ( | const double * | invert, |
| const double * | depth, | ||
| double * | head, | ||
| int | n | ||
| ) |
Compute head = invert + depth for all nodes.
| invert | [in] Invert elevation array. |
| depth | [in] Depth array. |
| head | [out] Head array. |
| n | Number of nodes. |
| void openswmm::node::computeOverflows | ( | const double * | new_volume, |
| const double * | full_volume, | ||
| double * | overflow, | ||
| double | dt, | ||
| int | n | ||
| ) |
Compute overflow for all nodes.
| new_volume | [in] Current volume array. |
| full_volume | [in] Full volume array. |
| overflow | [out] Overflow rate array. |
| dt | Timestep (seconds). |
| n | Number of nodes. |
| void openswmm::node::computeVolumes | ( | const NodeData & | nodes, |
| const double * | depth, | ||
| double * | volume | ||
| ) |
Compute volumes for all nodes from their current depths.
| nodes | SoA node data (reads type, full_depth, storage params). |
| depth | [in] Depth array (may differ from nodes.depth). |
| volume | [out] Volume array. |
|
inline |
Compute head from depth: head = invert + depth.
| double openswmm::node::getMaxOutflow | ( | const NodeData & | nodes, |
| int | idx, | ||
| double | q, | ||
| double | dt | ||
| ) |
Compute max outflow limited by available volume.
qMax = inflow + oldVolume / dt. Outflow cannot exceed this.
| nodes | SoA node data. |
| idx | Node index. |
| q | Proposed outflow (ft3/s). |
| dt | Timestep (seconds). |
| double openswmm::node::getOverflow | ( | double | new_volume, |
| double | full_volume, | ||
| double | dt | ||
| ) |
Compute overflow rate at a node.
overflow = max(0, (newVolume - fullVolume) / dt)
| nodes | SoA node data. |
| idx | Node index. |
| new_volume | Current volume (ft3). |
| full_volume | Volume at full depth (ft3). |
| dt | Timestep (seconds). |
| double openswmm::node::getPondedArea | ( | const NodeData & | nodes, |
| int | idx, | ||
| double | depth | ||
| ) |
Get the ponded area (for overflow above rim).
If depth <= fullDepth, returns normal surface area. If depth > fullDepth and pondedArea > 0, returns pondedArea.
| nodes | SoA node data. |
| idx | Node index. |
| depth | Water depth (ft). |
| double openswmm::node::getSurfArea | ( | const NodeData & | nodes, |
| int | idx, | ||
| double | depth, | ||
| TableData * | tables = nullptr |
||
| ) |
Compute surface area at a given depth for a single node.
For JUNCTION: returns MIN_SURFAREA (small constant). For STORAGE: uses functional or tabulated relationship.
| nodes | SoA node data. |
| idx | Node index. |
| depth | Water depth (ft). |
| double openswmm::node::getVolume | ( | const NodeData & | nodes, |
| int | idx, | ||
| double | depth, | ||
| TableData * | tables = nullptr |
||
| ) |
Compute volume at a given depth for a single node.
For JUNCTION: V = fullVolume * (depth / fullDepth). For STORAGE: uses functional or tabulated relationship.
| nodes | SoA node data. |
| idx | Node index. |
| depth | Water depth (ft). |