hydrobricks
Loading...
Searching...
No Matches
SolverAnalyticLinear Class Reference

#include <SolverAnalyticLinear.h>

Inheritance diagram for SolverAnalyticLinear:
SolverSequential Solver

Protected Member Functions

void ComputeBrickRates (Brick *brick, double content, double inflow, double timeStepInDays, int iRateStart) override
 
- Protected Member Functions inherited from SolverSequential

Additional Inherited Members

- Public Member Functions inherited from SolverSequential
void InitializeContainers () override
 
bool Solve (double timeStepInDays) final
 
- Public Member Functions inherited from Solver
void Connect (Processor *processor)
 
- Static Public Member Functions inherited from Solver
static std::unique_ptr< SolverFactory (const SolverSettings &solverSettings)
 
- Static Protected Member Functions inherited from SolverSequential
static double TotalRateAt (Brick *brick, double *contentDelta, double offset)
 
static void StoreRatesAtCurrentContent (Brick *brick, vecDouble &rates)
 
- Protected Attributes inherited from SolverSequential
axd _rates
 
- Protected Attributes inherited from Solver
Processor_processor
 

Detailed Description

Sequential solver with exact integration of linear reservoirs.

Each brick is integrated exactly where its outflow is linear in the content (dS/dt = I - q_frozen - k S); the rates of the other processes (e.g. ET) are frozen at their start-of-step value. The resulting volumes are converted to average rates over the step, so the standard constraint and flux machinery applies unchanged.

Compared to the staged explicit solvers, this scheme is unconditionally stable, timestep-insensitive for linear stores, and propagates water through a cascade within the same step (no response lag beyond the physical residence time 1/k).

Member Function Documentation

◆ ComputeBrickRates()

void SolverAnalyticLinear::ComputeBrickRates ( Brick * brick,
double content,
double inflow,
double timeStepInDays,
int iRateStart )
overrideprotectedvirtual

Compute the average outflow rates of the brick over the time step and store them in the _rates slice starting at iRateStart (one value per process connection, in process declaration order).

Parameters
brickThe brick to solve.
contentStart-of-step content [mm], including instantaneous deposits.
inflowInflows as a constant rate over the step [mm/d].
timeStepInDaysThe time step in days.
iRateStartIndex of the brick's first connection in _rates.

Implements SolverSequential.


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