OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
openswmm::fv::NonlinearPressureStorage Class Reference

#include <NonlinearPressureStorage.hpp>

Collaboration diagram for openswmm::fv::NonlinearPressureStorage:

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.
 

Detailed Description

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.

Member Enumeration Documentation

◆ Status

Enumerator
Converged 
InvalidInput 
UnanchoredComponent 
NonFinite 
LinearBreakdown 
LinearIterationLimit 
LinearResidualFailure 
LineSearchFailed 
NonlinearIterationLimit 
EndpointResidualFailure 

Member Function Documentation

◆ solve()

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.

Parameters
[in]rowsNonempty 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]edgesBorrowed valid distinct row endpoints with positive finite conductance cfs/ft; right=-1 uses a finite prescribed boundary_head.
[in]dtPositive finite interval seconds.
[in]controlsNonnegative Newton/linear/backtrack limits, positive finite absolute_volume and linear_absolute, nonnegative finite relative_volume, and0<linear_relative<1.
[out]output_headsAccepted ft head vector assigned only on convergence; every returned failure preserves prior contents.
Returns
Convergence/status and iteration/volume/linear-residual diagnostics; invalid inputs return InvalidInput.
Here is the call graph for this function:

The documentation for this class was generated from the following files: