Dense SoA for storage-unit properties (one row per STORAGE node).
More...
#include <NodeSubtypes.hpp>
|
| std::vector< LidNodeConfig > | lid |
| |
| std::vector< LidNodeState > | lid_state |
| |
| std::vector< int > | node_idx |
| | Base NodeData index this row belongs to (the join key).
|
| |
| std::vector< int > | curve |
| | Storage curve index into TableData (-1 = not tabulated).
|
| |
| std::vector< std::string > | curve_name |
| | Curve name for deferred resolution.
|
| |
| std::vector< StorageShape > | shape |
| | Surface-area relation. Selects how a/b/c below are interpreted.
|
| |
| std::vector< double > | a |
| | Area coefficient A (legacy a1). FUNCTIONAL: A·d^B; geometric shapes: the linear term of C + A·d + B·d². Derived from p1..p3 for the latter.
|
| |
| std::vector< double > | b |
| | Area coefficient B (legacy a2). FUNCTIONAL: the exponent; geometric shapes: the quadratic term.
|
| |
| std::vector< double > | c |
| | Area coefficient C (legacy a0). Baseline area at zero depth.
|
| |
| std::vector< double > | p1 |
| | Raw shape parameter 1 — major axis / base length L (geometric shapes only). Kept alongside the derived a/b/c so .inp/.gpkg round-trip losslessly; legacy discards these, which is why a legacy model cannot rewrite its own shape params.
|
| |
| std::vector< double > | p2 |
| | Raw shape parameter 2 — minor axis / base width W.
|
| |
| std::vector< double > | p3 |
| | Raw shape parameter 3 — side slope Z (run/rise), or height for PARABOLOID.
|
| |
| std::vector< double > | seep_rate |
| | Seepage rate (project units/day).
|
| |
| std::vector< double > | evap_frac |
| | Fraction of potential evaporation realized (0-1).
|
| |
| std::vector< double > | evap_loss |
| | Evaporation loss this timestep (ft3).
|
| |
| std::vector< double > | exfil_loss |
| | Exfiltration loss this timestep (ft3).
|
| |
| std::vector< double > | exfil_rate |
| | Raw (uncapped) exfiltration rate this timestep (cfs), written by ExfilSolver::computeAll and consumed by Router::initNodeFlows, which applies legacy's single joint evap+exfil volume cap and books the final exfil_loss volume. Kept as a rate so no dt round-trip perturbs bits.
|
| |
| std::vector< double > | exfil_suction |
| | Green-Ampt suction head for exfiltration.
|
| |
| std::vector< double > | exfil_ksat |
| | Green-Ampt saturated conductivity for exfiltration.
|
| |
| std::vector< double > | exfil_imd |
| | Green-Ampt initial moisture deficit for exfiltration (0-1).
|
| |
Dense SoA for storage-unit properties (one row per STORAGE node).
Row r corresponds to base node node_idx[r]. Mirrors the storage_* / exfil_* fields of NodeData.
◆ add_default()
| int openswmm::StorageData::add_default |
( |
int | i | ) |
|
|
inline |
Insert a default StorageData row at the sorted base-object key position.
Assumes ascending node_idx and aligned columns. Seeds FUNCTIONAL shape, curve=-1, zero coefficients/losses and default unassigned LID state. Does not update the enclosing reverse map, reject duplicate keys, enforce lifecycle or initialize solver caches. Allocation failure can leave partially inserted parallel columns.
- Parameters
-
| [in] | i | Nonnegative base-object index; caller ensures it exists, is of this subtype and is absent from this table. |
- Returns
- Inserted dense row index; later dense rows shift up.
◆ clear()
| void openswmm::StorageData::clear |
( |
| ) |
|
|
inlinenoexcept |
Erase all StorageData rows while retaining vector capacities.
Invalidates element references/iterators and removes owned nested state. Does not clear base objects or repair the enclosing reverse map.
◆ count()
| int openswmm::StorageData::count |
( |
| ) |
const |
|
inlinenoexcept |
Count StorageData rows from the base-object join-key column.
- Returns
- node_idx.size() converted to int; other column lengths are not checked.
◆ erase_at()
| void openswmm::StorageData::erase_at |
( |
int | r | ) |
|
|
inline |
Erase dense StorageData row data and shift later dense rows down.
Erases every defined side-table column. Does not erase a base object, renumber stored base keys or rebuild the reverse map; enclosing maintenance handles those steps.
- Parameters
-
| [in] | r | Existing dense subtype-row index, NOT the base-object index; caller validates bounds/alignment. |
◆ reserve()
| void openswmm::StorageData::reserve |
( |
int | n | ) |
|
|
inline |
Request capacity for each StorageData column without changing row count.
May invalidate column references/iterators. Allocation failure can leave different reserved capacities, while existing row values remain.
- Parameters
-
| [in] | n | Nonnegative anticipated row count; caller validates before conversion to size_t. |
| std::vector<double> openswmm::StorageData::a |
Area coefficient A (legacy a1). FUNCTIONAL: A·d^B; geometric shapes: the linear term of C + A·d + B·d². Derived from p1..p3 for the latter.
| std::vector<double> openswmm::StorageData::b |
Area coefficient B (legacy a2). FUNCTIONAL: the exponent; geometric shapes: the quadratic term.
| std::vector<double> openswmm::StorageData::c |
Area coefficient C (legacy a0). Baseline area at zero depth.
◆ curve
| std::vector<int> openswmm::StorageData::curve |
Storage curve index into TableData (-1 = not tabulated).
◆ curve_name
| std::vector<std::string> openswmm::StorageData::curve_name |
Curve name for deferred resolution.
◆ evap_frac
| std::vector<double> openswmm::StorageData::evap_frac |
Fraction of potential evaporation realized (0-1).
◆ evap_loss
| std::vector<double> openswmm::StorageData::evap_loss |
Evaporation loss this timestep (ft3).
◆ exfil_imd
| std::vector<double> openswmm::StorageData::exfil_imd |
Green-Ampt initial moisture deficit for exfiltration (0-1).
◆ exfil_ksat
| std::vector<double> openswmm::StorageData::exfil_ksat |
Green-Ampt saturated conductivity for exfiltration.
◆ exfil_loss
| std::vector<double> openswmm::StorageData::exfil_loss |
Exfiltration loss this timestep (ft3).
◆ exfil_rate
| std::vector<double> openswmm::StorageData::exfil_rate |
Raw (uncapped) exfiltration rate this timestep (cfs), written by ExfilSolver::computeAll and consumed by Router::initNodeFlows, which applies legacy's single joint evap+exfil volume cap and books the final exfil_loss volume. Kept as a rate so no dt round-trip perturbs bits.
◆ exfil_suction
| std::vector<double> openswmm::StorageData::exfil_suction |
Green-Ampt suction head for exfiltration.
◆ lid
◆ lid_state
◆ node_idx
| std::vector<int> openswmm::StorageData::node_idx |
Base NodeData index this row belongs to (the join key).
◆ p1
| std::vector<double> openswmm::StorageData::p1 |
Raw shape parameter 1 — major axis / base length L (geometric shapes only). Kept alongside the derived a/b/c so .inp/.gpkg round-trip losslessly; legacy discards these, which is why a legacy model cannot rewrite its own shape params.
◆ p2
| std::vector<double> openswmm::StorageData::p2 |
Raw shape parameter 2 — minor axis / base width W.
◆ p3
| std::vector<double> openswmm::StorageData::p3 |
Raw shape parameter 3 — side slope Z (run/rise), or height for PARABOLOID.
◆ seep_rate
| std::vector<double> openswmm::StorageData::seep_rate |
Seepage rate (project units/day).
◆ shape
Surface-area relation. Selects how a/b/c below are interpreted.
The documentation for this struct was generated from the following file:
- /home/runner/work/openswmm.engine/openswmm.engine/src/engine/data/NodeSubtypes.hpp