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

Classes

struct  ExpDecayParams
 
struct  RDIIGroupSoA
 
class  RDIISolver
 Mutable strict-grid UH convolution, rainfall queues and node-flow history. Configure validated UH/decay/assignment rows before init. Serialize all access; advance mutates queues, abstraction, optional SWE and context balance totals. Stored float32 grid rows grow for the whole run; no streaming eviction/rollback. Direct public uh_params/decay_params edits require compatible layout and a fresh initialization before reuse. Exceptions can leave partial changes. More...
 
struct  UHResponseData
 
struct  UnitHydParams
 

Functions

double getRecoveryRate (const ExpDecayParams &dp, double T_celsius)
 Compute exponential-IA additive recovery at one air temperature.
 
double updateIA_exp (const UnitHydParams &uh, UHResponseData &rd, const ExpDecayParams &dp, int month, int response, double rainDepth, double dt_sec, const SimulationContext &ctx)
 Update exponential abstraction and optional degree-day SWE for one rain chunk.
 

Function Documentation

◆ getRecoveryRate()

double openswmm::rdii::getRecoveryRate ( const ExpDecayParams & dp,
double T_celsius )

Compute exponential-IA additive recovery at one air temperature.

Parameters
dpFinite qualified 1/hour base/thermal rates, Celsius reference/freeze thresholds and inverse-Celsius sensitivity; active is not tested here.
T_celsiusFinite air temperature Celsius.
Returns
Zero strictly below freeze threshold; otherwise max(0,k_0+k_T*exp(theta_rec *(T-T_ref))) in 1/hour. Equality at freeze permits recovery. Does not clamp exponent overflow or validate parameters, consume time or mutate state.
Here is the caller graph for this function:

◆ updateIA_exp()

double openswmm::rdii::updateIA_exp ( const UnitHydParams & uh,
UHResponseData & rd,
const ExpDecayParams & dp,
int month,
int response,
double rainDepth,
double dt_sec,
const SimulationContext & ctx )

Update exponential abstraction and optional degree-day SWE for one rain chunk.

Parameters
uhQualified monthly response parameters; iaMax is project rain-depth units.
[in,out]rdCurrent used-abstraction and optional SWE in the same project units. Does not modify rainfall circular buffers/dry counters.
dpQualified exponential/snow coefficients; active is not checked here.
monthNonnegative zero-based month, reduced modulo 12.
responseNonnegative SHORT/MEDIUM/LONG index, reduced modulo three.
rainDepthFinite nonnegative precipitation depth in project rain-depth units.
dt_secFinite positive chunk seconds.
ctxBorrowed climate state; configured temperature is Fahrenheit converted to Celsius, otherwise uses dp.T_ref without sampling any new climate time.
Returns
Nonnegative liquid excess in project depth units. Optional snow accumulates all input at T<=snow_T (then follows recovery); above threshold, bounded SWE melt is added before wet abstraction. Wet available IA decays exp(-k_dep*rainDepth), used IA increases by the computed change, and returned excess is clipped to zero. The computed abstraction is not additionally bounded by rainDepth, so this helper does not guarantee per-chunk mass closure for arbitrary coefficients. Dry IA recovers exponentially in hours, suppressed strictly below freeze. No argument/ finite/overflow validation, transaction or global water/clock bookkeeping.
Here is the call graph for this function: