![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
Mutable solver state — the conserved variables and the node volumes. More...
#include <NetworkMeshData.hpp>
Public Member Functions | |
| void | resize (int n_cells, int n_nodes, int n_species_in) |
| Reset conserved, derived and transport arrays to requested zero-filled dimensions. | |
Public Attributes | |
| std::vector< double > | cell_a |
| flow area (ft²) | |
| std::vector< double > | cell_q |
| discharge (cfs) | |
| std::vector< double > | cell_h |
| depth (ft) | |
| std::vector< double > | node_volume |
| stored volume (ft³) | |
| std::vector< double > | node_head |
| water-surface elevation (ft) | |
| std::vector< double > | node_surf_area |
| storage area used this routing step (ft²) | |
| std::vector< double > | node_overflow |
| flooding rate this substep (cfs) | |
| std::vector< double > | node_overflow_vol |
| std::vector< double > | cell_phi |
| int | n_species = 0 |
| std::vector< uint8_t > | cell_tpa |
Mutable solver state — the conserved variables and the node volumes.
Separated from the mesh for the same reason SurfaceStateData is separated from MeshData: the mesh is written once at init and is const to every kernel, while this is what the integrator advances, what hot start serializes, and what the reporting path reads.
|
inline |
Reset conserved, derived and transport arrays to requested zero-filled dimensions.
assign replaces all cell/node/overflow values with zero and stores n_species. cell_phi is species-major with n_cells*n_species entries. cell_tpa is deliberately untouched, so its allocation/reset is the solver initialization responsibility. Existing references may be invalidated; allocation failure can leave arrays partially resized/reset. This does not establish geometry-consistent heads, areas or storage relations.
| [in] | n_cells | Nonnegative cell count; converted unchecked to size_t. |
| [in] | n_nodes | Nonnegative node count; converted unchecked to size_t. |
| [in] | n_species_in | Nonnegative species count; cell/species product must fit size_t and vector limits. |
| std::vector<double> openswmm::fv::NetworkStateData::cell_a |
flow area (ft²)
| std::vector<double> openswmm::fv::NetworkStateData::cell_h |
depth (ft)
| std::vector<double> openswmm::fv::NetworkStateData::cell_phi |
| std::vector<double> openswmm::fv::NetworkStateData::cell_q |
discharge (cfs)
| std::vector<uint8_t> openswmm::fv::NetworkStateData::cell_tpa |
TPA regime flag per cell (issue #156 Phase 4): EMPTY unless FV_PRESSURE_CLOSURE TPA; 1 = pressurized (closure evaluates on the extended slot line, both signs of ΔA), 0 = free surface (table closure). Lives in the STATE because the static membership predicates (PressurizedHeadSolver::cellPressurized, the census edit) must see it. The flag is physical air-pathway history — updated once per substep by the solver's venting rule, saved/restored with the step-rejection snapshot, cleared (all-free) on cold start; a restart worst-case is one spurious re-pressurization step (TPA plan §5).
| int openswmm::fv::NetworkStateData::n_species = 0 |
| std::vector<double> openswmm::fv::NetworkStateData::node_head |
water-surface elevation (ft)
| std::vector<double> openswmm::fv::NetworkStateData::node_overflow |
flooding rate this substep (cfs)
| std::vector<double> openswmm::fv::NetworkStateData::node_overflow_vol |
Cumulative overflow VOLUME (ft³) since the last publish, so a routing step made of many substeps reports a correct mean flooding rate.
| std::vector<double> openswmm::fv::NetworkStateData::node_surf_area |
storage area used this routing step (ft²)
| std::vector<double> openswmm::fv::NetworkStateData::node_volume |
stored volume (ft³)