![]() |
OpenSWMM Engine
6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
|
#include <ImplicitNetworkSolver.hpp>
Classes | |
| struct | BlockIluDiagnostics |
| struct | CondensationControls |
| struct | CondensationDiagnostics |
| struct | Controls |
| struct | Endpoint |
| struct | Evaluation |
| struct | FaceReceipt |
| struct | Linearization |
| struct | LinearResult |
| class | LinearWorkspace |
| struct | Matrix |
| struct | Problem |
| struct | Result |
| struct | Trial |
| struct | WorkspaceDiagnostics |
Public Types | |
| enum class | Regime { PressurizedOnly , BoundedWetSlot } |
| enum class | CondensationStatus { NotAttempted , Converged , InvalidInput , UnsupportedStencil , BlockPivot , FillLimit , MemoryLimit , InterfaceFailure , ReconstructionFailure } |
| enum class | Preconditioner { ScalarIlu0 , BlockIlu0 } |
| enum class | LinearMethod { FullGmres , CondensedThenGmres , CondensedOnly } |
| enum class | Status { Converged , InvalidInput , InitializationFailure , LinearFailure , LineSearchFailed , IterationLimit , NonFinite } |
Public Member Functions | |
| Result | solve (const Problem &, double dt, const Controls &, Endpoint &) |
| Failure leaves Endpoint unchanged; no post-convergence water/Q repairs. | |
| std::size_t | linearWorkspaceBytes () const |
| void | clearLinearWorkspace () |
Static Public Member Functions | |
| static bool | residual (const Problem &, const Trial &, double dt, Evaluation &) |
| static bool | linearize (const Problem &, const Trial &, double dt, double step, Linearization &) |
| static LinearResult | solveLinear (const Matrix &, const std::vector< double > &rhs, const NativeGmres::Controls &, std::vector< double > &, LinearWorkspace *=nullptr) |
| static LinearResult | solveBlockLinear (const Matrix &, const std::vector< double > &rhs, std::size_t cell_blocks, const NativeGmres::Controls &, std::vector< double > &, LinearWorkspace *=nullptr) |
| static LinearResult | solveCondensed (const NetworkMeshData &, const Matrix &, const std::vector< double > &rhs, const NativeGmres::Controls &, const CondensationControls &, bool allow_fallback, std::vector< double > &, LinearWorkspace *=nullptr) |
| static bool | initializeHeads (const Problem &, Trial &, double tolerance) |
Standalone, first-order SLOT experiment, pressurized-only by default with opt-in bounded wet free-surface/transition support. Uses every original cell and shared face geometry, including oriented virtual faces. Junctions have ZERO storage; bounded physical storage uses mesh V(h) tables. Ponding/overflow, structures, losses, dry states, TPA and transport are deliberately unsupported. Ordinary degree-2 nodes retain algebraic heads in both standalone scopes. Typed virtual faces stay direct. No production routing option or GUI selects this solver.
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
inline |
|
static |
Bracketed algebraic-head initialization with cells held fixed. Does not alter conserved initial area/Q or invent a startup volume step.
|
static |
Local face/source differences, analytic storage/history derivatives. Sparse graph work; never finite-differences the full network per column.
|
inline |
|
static |
Pure evaluation; no clock, ledger, node volume, carry or accepted-state writes. Bed/section forces belong ONLY to the corrected face divergence.
| ImplicitNetworkSolver::Result openswmm::fv::ImplicitNetworkSolver::solve | ( | const Problem & | p, |
| double | dt, | ||
| const Controls & | controls, | ||
| Endpoint & | output ) |
Failure leaves Endpoint unchanged; no post-convergence water/Q repairs.
|
static |
Native mixed-block ILU(0), fixed for one right-preconditioned GMRES solve. The first 2*cell_blocks scalars are cell pairs; the suffix is scalar heads. Complete existing blocks and add missing PRECONDITIONER diagonals only; no off-block fill, equation pins or changes to the original matrix/RHS. Guarded shifts affect only factors. Budget includes all block CSR/factor and Krylov buffers. Failure never publishes a correction.
|
static |
Exact eligible conduit-interior block elimination, sparse interface Schur solve and reconstruction of EVERY original scalar correction. Endpoint cells/heads are protected. No shifted exact factors or head pins. An unsafe block/stencil, resource limit, interface or full-residual failure may fall back to original-matrix GMRES after temporary storage is freed. Budget covers owned dynamic buffers, not caller matrix/input/output or allocator/vector-object/stack overhead. Failure never publishes output.
|
static |
Native scalar ILU(0) comparator with fixed right-preconditioned GMRES. Guarded diagonal shifts affect ONLY the preconditioner, never A or b. Full-matrix comparator and fallback for solveCondensed below.