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

#include <LID.hpp>

Collaboration diagram for openswmm::lid::LIDSolver:

Public Member Functions

void init (SimulationContext &ctx)
 
LIDGroupSoAgroup (int type_index)
 Access a type group (for testing or external queries).
 
const LIDGroupSoAgroup (int type_index) const
 
int numGroups () const
 
double storedVolume () const
 
double totalStoredVolume () const
 
double totalInitVolume () const
 
double totalInfilVolume () const
 
double totalEvapVolume () const
 
void execute (SimulationContext &ctx, double dt, double rainfall, double evap_rate)
 Compute LID performance for all units (batch by type).
 

Static Public Member Functions

static void batchBioCellFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 Batch bio-cell flux rates — VECTORISABLE.
 
static void batchBarrelFlux (LIDGroupSoA &g, double rainfall, double dt)
 Batch rain barrel flux rates — VECTORISABLE (simplest)
 
static void batchSwaleFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 Batch vegetative swale flux rates — VECTORISABLE.
 
static void batchGreenRoofFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 Batch green roof flux rates — VECTORISABLE.
 
static void batchInfilTrenchFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 
static void batchPavementFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 Batch permeable pavement flux rates — VECTORISABLE.
 
static void batchRoofDisconFlux (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 Batch roof disconnection flux rates — VECTORISABLE.
 
static void batchSwaleModPuls (LIDGroupSoA &g, double rainfall, const double *evap_rate, double dt)
 

Member Function Documentation

◆ batchBarrelFlux()

void openswmm::lid::LIDSolver::batchBarrelFlux ( LIDGroupSoA & g,
double rainfall,
double dt )
static

Batch rain barrel flux rates — VECTORISABLE (simplest)

Here is the caller graph for this function:

◆ batchBioCellFlux()

void openswmm::lid::LIDSolver::batchBioCellFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch bio-cell flux rates — VECTORISABLE.

Here is the caller graph for this function:

◆ batchGreenRoofFlux()

void openswmm::lid::LIDSolver::batchGreenRoofFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch green roof flux rates — VECTORISABLE.

Here is the caller graph for this function:

◆ batchInfilTrenchFlux()

void openswmm::lid::LIDSolver::batchInfilTrenchFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch infiltration trench flux rates — VECTORISABLE Surface drains directly to storage (no soil layer), matching legacy trenchFluxRates().

Here is the caller graph for this function:

◆ batchPavementFlux()

void openswmm::lid::LIDSolver::batchPavementFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch permeable pavement flux rates — VECTORISABLE.

Here is the caller graph for this function:

◆ batchRoofDisconFlux()

void openswmm::lid::LIDSolver::batchRoofDisconFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch roof disconnection flux rates — VECTORISABLE.

Here is the caller graph for this function:

◆ batchSwaleFlux()

void openswmm::lid::LIDSolver::batchSwaleFlux ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch vegetative swale flux rates — VECTORISABLE.

◆ batchSwaleModPuls()

void openswmm::lid::LIDSolver::batchSwaleModPuls ( LIDGroupSoA & g,
double rainfall,
const double * evap_rate,
double dt )
static

Batch Modified Puls solver for swale (omega=0.5, iterative). Computes flux rates and iterates until convergence.

Here is the caller graph for this function:

◆ execute()

void openswmm::lid::LIDSolver::execute ( SimulationContext & ctx,
double dt,
double rainfall,
double evap_rate )

Compute LID performance for all units (batch by type).

For each LID type group:

  1. Gather inputs (rainfall, evap, inflow from impervious area)
  2. Batch flux-rate computation (type-specific, vectorisable)
  3. Batch Euler integration of layer depths
  4. Scatter outputs to subcatchment runoff totals
Parameters
ctxSimulation context.
dtTimestep (seconds).
rainfallRainfall rate (ft/sec).
evap_rateEvaporation rate (ft/sec). Per-unit effective rates are resolved internally from any prescribed PET forcing on each unit's parent subcatchment.
Here is the call graph for this function:

◆ group() [1/2]

LIDGroupSoA & openswmm::lid::LIDSolver::group ( int type_index)
inline

Access a type group (for testing or external queries).

Here is the caller graph for this function:

◆ group() [2/2]

const LIDGroupSoA & openswmm::lid::LIDSolver::group ( int type_index) const
inline

◆ init()

void openswmm::lid::LIDSolver::init ( SimulationContext & ctx)
Here is the call graph for this function:

◆ numGroups()

int openswmm::lid::LIDSolver::numGroups ( ) const
inline
Here is the caller graph for this function:

◆ storedVolume()

double openswmm::lid::LIDSolver::storedVolume ( ) const

Total water volume currently stored in all LID units (ft³), for the runoff mass balance (legacy lid_getStoredVolume()). This is the one SWMMEngine calls (runoff_init_store / runoff_final_store).

◆ totalEvapVolume()

double openswmm::lid::LIDSolver::totalEvapVolume ( ) const

◆ totalInfilVolume()

double openswmm::lid::LIDSolver::totalInfilVolume ( ) const

◆ totalInitVolume()

double openswmm::lid::LIDSolver::totalInitVolume ( ) const

◆ totalStoredVolume()

double openswmm::lid::LIDSolver::totalStoredVolume ( ) const

Water-balance-ledger volume queries (#102 C), summing the per-unit wb_* accumulators over the unit footprints.

MERGE REPAIR (a38f0c0b, 2026-08-29): these four were DEFINED in LID.cpp on the incoming swmm6_rel side with no declaration on EITHER side of the merge — that branch does not compile as it stands, and neither did the merge result. The definitions are kept and declared here rather than deleted, because deleting is the one choice that cannot be undone by whoever wires them up. Nothing calls them yet: storedVolume() above, not totalStoredVolume(), is what the runoff mass balance uses, and the two measure different things (void-weighted layer depths vs the wb_ ledger's final volume).


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