#include <SurfaceStateData.hpp>
|
| const BoundaryData * | boundary = nullptr |
| |
| const NodeData * | nodes_1d = nullptr |
| |
| const std::vector< CouplingPoint > * | node_coupling = nullptr |
| | non-outfall points
|
| |
| const ActiveSetData * | active_set = nullptr |
| |
| std::vector< double > | depth |
| | Mean wetted depth h̄ = V/A_wet (m) [reconstructed].
|
| |
| std::vector< double > | head |
| | Free-surface elevation η (m) [reconstructed].
|
| |
| std::vector< double > | volume |
| | Cell water volume V (m³) — the integrated state.
|
| |
| std::vector< double > | grad_hx |
| | ∂h/∂x (unlimited gradient)
|
| |
| std::vector< double > | grad_hy |
| | ∂h/∂y (unlimited gradient)
|
| |
| std::vector< double > | grad_hx_lim |
| | Limited gradient X.
|
| |
| std::vector< double > | grad_hy_lim |
| | Limited gradient Y.
|
| |
| std::vector< double > | vert_head |
| | Head reconstructed at vertices.
|
| |
| std::vector< double > | face_vx |
| | Cell velocity X component (m/s)
|
| |
| std::vector< double > | face_vy |
| | Cell velocity Y component (m/s)
|
| |
| std::vector< double > | cell_continuity_err |
| |
| std::vector< double > | edge_flux |
| | Normal flux through each edge.
|
| |
| std::vector< double > | rainfall |
| | Rainfall intensity (m/s)
|
| |
| std::vector< double > | evap_rate |
| | Evaporation demand rate (m/s, >= 0)
|
| |
| std::vector< double > | coupling_flux |
| | Exchange with SWMM node (m/s, + = into 2D)
|
| |
| std::vector< double > | net_source |
| | Net source/sink per cell (m/s)
|
| |
| std::vector< int8_t > | rainfall_forced |
| | 0=computed, 1=override, 2=add
|
| |
| std::vector< int8_t > | rainfall_persist |
| | 0=reset, 1=persist
|
| |
| std::vector< double > | rainfall_force_val |
| | Forced rainfall value.
|
| |
| std::vector< int8_t > | evap_forced |
| | 0=computed, 1=override, 2=add
|
| |
| std::vector< int8_t > | evap_persist |
| | 0=reset, 1=persist
|
| |
| std::vector< double > | evap_force_val |
| | Forced evaporation value.
|
| |
| std::vector< int8_t > | coupling_forced |
| | 0=computed, 1=override, 2=add
|
| |
| std::vector< int8_t > | coupling_persist |
| | 0=reset, 1=persist
|
| |
| std::vector< double > | coupling_force_val |
| | Forced coupling value.
|
| |
| std::vector< double > | old_depth |
| | Mean depth at start of coupling interval.
|
| |
| std::vector< double > | old_volume |
| | Volume at start of coupling interval (m³)
|
| |
| std::vector< double > | stat_max_depth |
| | Maximum depth ψ_o seen at each cell (m)
|
| |
| std::vector< double > | stat_max_velocity |
| | Max cell speed |v| = √(vx²+vy²) (m/s)
|
| |
| std::vector< double > | stat_max_cont_err |
| | Max |cell_continuity_err| (m³/s)
|
| |
| std::vector< double > | stat_cum_volume |
| | Cumulative volume through cell (m³)
|
| |
| double | evap_loss_total = 0.0 |
| |
◆ clear_reset_forcings()
| void openswmm::twoD::SurfaceStateData::clear_reset_forcings |
( |
| ) |
|
|
inlinenoexcept |
Clear RESET forcings after each step.
◆ reset_state()
| void openswmm::twoD::SurfaceStateData::reset_state |
( |
| ) |
|
|
inlinenoexcept |
◆ resize()
| void openswmm::twoD::SurfaceStateData::resize |
( |
int | n_triangles, |
|
|
int | n_vertices ) |
|
inline |
◆ save_state()
| void openswmm::twoD::SurfaceStateData::save_state |
( |
| ) |
|
|
inlinenoexcept |
◆ update_statistics()
| void openswmm::twoD::SurfaceStateData::update_statistics |
( |
const std::vector< double > & | tri_area, |
|
|
double | dt, |
|
|
int | nthreads = 1 ) |
|
inlinenoexcept |
Update cumulative statistics / rendering envelopes.
Aggregates once per model (routing) step at the accepted end-of-step state. MUST be called after computeFaceVelocity and computeCellContinuity so face_vx/vy and cell_continuity_err hold the accepted values. All envelopes fuse into the single per-cell loop already walked for stat_cum_volume — no extra passes, no sub-step sampling.
◆ active_set
| const ActiveSetData* openswmm::twoD::SurfaceStateData::active_set = nullptr |
Non-owning view of the dry-cell active-set mask (owned by SurfaceRouter2D; rebuilt once per advance window). nullptr or !enabled ⇒ every pipeline stage takes its exact full-mesh loop (the legacy behaviour, bit-identical). When active, the RHS stages iterate the compact active-cell/vertex lists and treat active→inactive edges as walls (locally conservative by construction).
◆ boundary
| const BoundaryData* openswmm::twoD::SurfaceStateData::boundary = nullptr |
Non-owning view of the per-edge boundary conditions (owned by SurfaceRouter2D). nullptr ⇒ all boundary edges are no-flux walls (the legacy behaviour, and what the unit-test call sites that build a bare state get). When set, computeEdgeFluxes applies the per-type boundary flux (NORMAL_FLOW / SPECIFIED_STAGE / SPECIFIED_FLOW / RATING_CURVE). The pointer is shallow-copied on assignment (it references config, not per-cell state), which is fine — both copies see the same BC config.
◆ cell_continuity_err
| std::vector<double> openswmm::twoD::SurfaceStateData::cell_continuity_err |
◆ coupling_flux
| std::vector<double> openswmm::twoD::SurfaceStateData::coupling_flux |
Exchange with SWMM node (m/s, + = into 2D)
◆ coupling_force_val
| std::vector<double> openswmm::twoD::SurfaceStateData::coupling_force_val |
◆ coupling_forced
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::coupling_forced |
0=computed, 1=override, 2=add
◆ coupling_persist
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::coupling_persist |
◆ depth
| std::vector<double> openswmm::twoD::SurfaceStateData::depth |
Mean wetted depth h̄ = V/A_wet (m) [reconstructed].
◆ edge_flux
| std::vector<double> openswmm::twoD::SurfaceStateData::edge_flux |
Normal flux through each edge.
◆ evap_force_val
| std::vector<double> openswmm::twoD::SurfaceStateData::evap_force_val |
Forced evaporation value.
◆ evap_forced
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::evap_forced |
0=computed, 1=override, 2=add
◆ evap_loss_total
| double openswmm::twoD::SurfaceStateData::evap_loss_total = 0.0 |
Cumulative evaporation loss over the whole simulation (m³). Kept here (not in core's MassBalance2D, owned by another work stream) and folded into the API-level totals by Api2D.cpp.
◆ evap_persist
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::evap_persist |
◆ evap_rate
| std::vector<double> openswmm::twoD::SurfaceStateData::evap_rate |
Evaporation demand rate (m/s, >= 0)
◆ face_vx
| std::vector<double> openswmm::twoD::SurfaceStateData::face_vx |
Cell velocity X component (m/s)
◆ face_vy
| std::vector<double> openswmm::twoD::SurfaceStateData::face_vy |
Cell velocity Y component (m/s)
◆ grad_hx
| std::vector<double> openswmm::twoD::SurfaceStateData::grad_hx |
∂h/∂x (unlimited gradient)
◆ grad_hx_lim
| std::vector<double> openswmm::twoD::SurfaceStateData::grad_hx_lim |
◆ grad_hy
| std::vector<double> openswmm::twoD::SurfaceStateData::grad_hy |
∂h/∂y (unlimited gradient)
◆ grad_hy_lim
| std::vector<double> openswmm::twoD::SurfaceStateData::grad_hy_lim |
◆ head
| std::vector<double> openswmm::twoD::SurfaceStateData::head |
Free-surface elevation η (m) [reconstructed].
◆ net_source
| std::vector<double> openswmm::twoD::SurfaceStateData::net_source |
Net source/sink per cell (m/s)
◆ node_coupling
| const std::vector<CouplingPoint>* openswmm::twoD::SurfaceStateData::node_coupling = nullptr |
◆ nodes_1d
| const NodeData* openswmm::twoD::SurfaceStateData::nodes_1d = nullptr |
Live node-coupling view, set by SurfaceRouter2D ONLY when the macro-step path is active (COUPLING_INTERVAL > 1). When non-null the CVODE RHS evaluates the 1D↔2D orifice exchange against the CURRENT 2D head (so it self-limits and integrates stably over a large window) instead of a held per-window source; the ∫Q dt is carried by CVODE quadrature for conservative booking. nullptr ⇒ the legacy held-flux path (default). nodes_1d is the 1D node data, frozen for the duration of the advance.
◆ old_depth
| std::vector<double> openswmm::twoD::SurfaceStateData::old_depth |
Mean depth at start of coupling interval.
◆ old_volume
| std::vector<double> openswmm::twoD::SurfaceStateData::old_volume |
Volume at start of coupling interval (m³)
◆ rainfall
| std::vector<double> openswmm::twoD::SurfaceStateData::rainfall |
◆ rainfall_force_val
| std::vector<double> openswmm::twoD::SurfaceStateData::rainfall_force_val |
◆ rainfall_forced
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::rainfall_forced |
0=computed, 1=override, 2=add
◆ rainfall_persist
| std::vector<int8_t> openswmm::twoD::SurfaceStateData::rainfall_persist |
◆ stat_cum_volume
| std::vector<double> openswmm::twoD::SurfaceStateData::stat_cum_volume |
Cumulative volume through cell (m³)
◆ stat_max_cont_err
| std::vector<double> openswmm::twoD::SurfaceStateData::stat_max_cont_err |
Max |cell_continuity_err| (m³/s)
◆ stat_max_depth
| std::vector<double> openswmm::twoD::SurfaceStateData::stat_max_depth |
Maximum depth ψ_o seen at each cell (m)
◆ stat_max_velocity
| std::vector<double> openswmm::twoD::SurfaceStateData::stat_max_velocity |
Max cell speed |v| = √(vx²+vy²) (m/s)
◆ vert_head
| std::vector<double> openswmm::twoD::SurfaceStateData::vert_head |
Head reconstructed at vertices.
◆ volume
| std::vector<double> openswmm::twoD::SurfaceStateData::volume |
Cell water volume V (m³) — the integrated state.
The documentation for this struct was generated from the following file: