![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
#include <NonlinearPressureStorage.hpp>
Classes | |
| struct | Controls |
| struct | Edge |
| struct | Result |
| struct | Row |
Public Types | |
| enum class | Status { Converged , InvalidInput , UnanchoredComponent , NonFinite , LinearBreakdown , LinearIterationLimit , LinearResidualFailure , LineSearchFailed , NonlinearIterationLimit , EndpointResidualFailure } |
Public Member Functions | |
| Result | solve (const std::vector< Row > &rows, const std::vector< Edge > &edges, double dt, const Controls &controls, std::vector< double > &output_heads) |
| Solve frozen-conductance nonlinear slot-storage continuity for candidate heads. | |
P0.5 standalone candidate, NOT selected by a production routing option. Frozen face laws q = q* - C (H_right - H_left), with the actual SLOT area difference in continuity. All original cells remain unknowns.
|
strong |
| NonlinearPressureStorage::Result openswmm::fv::NonlinearPressureStorage::solve | ( | const std::vector< Row > & | rows, |
| const std::vector< Edge > & | edges, | ||
| double | dt, | ||
| const Controls & | controls, | ||
| std::vector< double > & | output_heads ) |
Solve frozen-conductance nonlinear slot-storage continuity for candidate heads.
Solves V(H)-length*old_area+dt*sum(C*(H-Hneighbor))-dt*source=0 using bounded Newton/line search and true linear residual checks. Every connected component needs physical storage derivative or prescribed-head anchor. Supports no real-node curves, TPA, wet/dry switch or active sets. Owns reusable work arrays; allocations can throw, instance requires serialized use. Candidate-head transaction does not modify input geometry or engine state.
| [in] | rows | Nonempty borrowed rows, count<=INT_MAX, with finite bounded old_head/source/bed. Geometry pointer NULL means algebraic zero storage; physical closed slot cells require positive length/t_slot/y_full and nonnegative finite old_area. Geometries remain live throughout. |
| [in] | edges | Borrowed valid distinct row endpoints with positive finite conductance cfs/ft; right=-1 uses a finite prescribed boundary_head. |
| [in] | dt | Positive finite interval seconds. |
| [in] | controls | Nonnegative Newton/linear/backtrack limits, positive finite absolute_volume and linear_absolute, nonnegative finite relative_volume, and0<linear_relative<1. |
| [out] | output_heads | Accepted ft head vector assigned only on convergence; every returned failure preserves prior contents. |