|
hydrobricks
|
#include <ProcessProductionGR4J.h>
Public Member Functions | |
| ProcessProductionGR4J (WaterContainer *container) | |
| bool | IsValid () const override |
| void | AttachForcing (Forcing *forcing) override |
Public Member Functions inherited from ProcessOutflow | |
| ProcessOutflow (WaterContainer *container) | |
| int | GetConnectionCount () const override |
| double * | GetValuePointer (std::string_view name) override |
Public Member Functions inherited from Process | |
| Process (WaterContainer *container) | |
| virtual void | Reset () |
| virtual void | Validate () const |
| virtual void | SetHydroUnitProperties (HydroUnit *unit, Brick *brick) |
| virtual void | SetParameters (const ProcessSettings &processSettings) |
| void | AttachFluxOut (std::unique_ptr< Flux > flux) |
| int | GetOutputFluxCount () const |
| Flux * | GetOutputFlux (size_t index) const |
| virtual bool | ToAtmosphere () const |
| virtual bool | NeedsTargetBrickLinking () const |
| virtual vecDouble | GetChangeRates () |
| virtual void | StoreInOutgoingFlux (double *rate, int index) |
| void | ApplyChange (int connectionIndex, double rate, double timeStepInDays) |
| virtual void | Finalize () |
| virtual vecDoublePt | GetStateVariables () |
| const string & | GetName () const |
| void | SetName (const string &name) |
| void | SetTimeMachine (TimeMachine *timeMachine) |
| WaterContainer * | GetWaterContainer () const |
| virtual void | SetTargetBrick (Brick *) |
| virtual bool | IsLateralProcess () const noexcept |
| bool | HasOutputFluxes () const noexcept |
| bool | HasWaterContainer () const noexcept |
Static Public Member Functions | |
| static void | RegisterProcessSettings (SettingsModel *modelSettings) |
Static Public Member Functions inherited from ProcessOutflow | |
| static void | RegisterProcessSettings (SettingsModel *modelSettings) |
Static Public Member Functions inherited from Process | |
| static std::unique_ptr< Process > | Factory (const ProcessSettings &processSettings, Brick *brick) |
| static bool | RegisterSettings (SettingsModel *modelSettings, const string &processType) |
| static bool | HasParameter (const ProcessSettings &processSettings, std::string_view name) |
| static const float * | GetParameterValuePointer (const ProcessSettings &processSettings, std::string_view name) |
Protected Member Functions | |
| vecDouble | GetRates () override |
Protected Member Functions inherited from Process | |
| double | GetSumChangeRatesOtherProcesses () const |
Protected Attributes | |
| Forcing * | _pet |
Protected Attributes inherited from Process | |
| string | _name |
| WaterContainer * | _container |
| TimeMachine * | _timeMachine {nullptr} |
| std::vector< std::unique_ptr< Flux > > | _outputs |
GR4J production store, computed as an exact discrete step (Perrin et al., 2003).
Lives on the production_store brick and receives the net precipitation Pn (the throughfall from the ground land cover). From the store level S at the start of the time step it computes — once per step, independently of the ODE solver — the infiltration Ps, the evaporation Es, the percolation Perc and therefore the routed output: PR = (Pn − Ps) + Perc
The single output (PR) is sent to the routing input store (uh_input). The evaporation Es is handled by a separate et:gr4j process so that it is logged and accounted as an atmosphere flux; this process recomputes Ps/Es only to obtain the correct store level for the percolation term.
Because every term derives from the start-of-step state (GetContentWithoutChanges and SumIncomingFluxes), GetRates() returns the same value at every solver stage, so Euler, Heun and RK4 all reproduce the exact discrete GR4J result.
|
overridevirtual |
|
overrideprotectedvirtual |
|
nodiscardoverridevirtual |
Check that everything is correctly defined.
Reimplemented from ProcessOutflow.
|
static |
Register the process parameters and forcing in the settings model.
| modelSettings | The settings model to register the parameters in. |