|
hydrobricks
|
#include <SolverAnalyticLinear.h>
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< Solver > | Factory (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 |
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).
|
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).
| brick | The brick to solve. |
| content | Start-of-step content [mm], including instantaneous deposits. |
| inflow | Inflows as a constant rate over the step [mm/d]. |
| timeStepInDays | The time step in days. |
| iRateStart | Index of the brick's first connection in _rates. |
Implements SolverSequential.