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

#include <ProcessProductionGR4J.h>

Inheritance diagram for ProcessProductionGR4J:
ProcessOutflow Process

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
 
FluxGetOutputFlux (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)
 
WaterContainerGetWaterContainer () 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< ProcessFactory (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
 

Detailed Description

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.

Member Function Documentation

◆ AttachForcing()

void ProcessProductionGR4J::AttachForcing ( Forcing * forcing)
overridevirtual

Attach forcing to the process.

Parameters
forcingforcing to attach.

Reimplemented from Process.

◆ GetRates()

vecDouble ProcessProductionGR4J::GetRates ( )
overrideprotectedvirtual

Get the rates of the process.

Returns
vector of rates.

Implements Process.

◆ IsValid()

bool ProcessProductionGR4J::IsValid ( ) const
nodiscardoverridevirtual

Check that everything is correctly defined.

Returns
true if everything is correctly defined.

Reimplemented from ProcessOutflow.

◆ RegisterProcessSettings()

void ProcessProductionGR4J::RegisterProcessSettings ( SettingsModel * modelSettings)
static

Register the process parameters and forcing in the settings model.

Parameters
modelSettingsThe settings model to register the parameters in.

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