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

#include <ProcessMeltCemaNeige.h>

Inheritance diagram for ProcessMeltCemaNeige:
ProcessMelt Process

Public Member Functions

 ProcessMeltCemaNeige (WaterContainer *container)
 
bool IsValid () const override
 
void SetParameters (const ProcessSettings &processSettings) override
 
void AttachForcing (Forcing *forcing) override
 
void Reset () override
 
- Public Member Functions inherited from ProcessMelt
 ProcessMelt (WaterContainer *container)
 
int GetConnectionCount () const override
 
double * GetValuePointer (std::string_view name) override
 
- Public Member Functions inherited from Process
 Process (WaterContainer *container)
 
virtual void Validate () const
 
virtual void SetHydroUnitProperties (HydroUnit *unit, Brick *brick)
 
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 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_temperature
 
const float * _degreeDayFactor
 
const float * _coldContentFactor
 
const float * _meltingTemp
 
const float * _meanAnnualSnow
 
double _coldContent
 
- Protected Attributes inherited from Process
string _name
 
WaterContainer_container
 
TimeMachine_timeMachine {nullptr}
 
std::vector< std::unique_ptr< Flux > > _outputs
 

Detailed Description

CemaNeige snowmelt process (Valéry et al., 2014).

Extends a simple degree-day approach with a cold content (thermal state) correction that delays melt after cold periods (Valéry et al., 2014):

eTG ← min(0, CTG × eTG_prev + (1 − CTG) × (T − Tmelt)) PotMelt = Kf × (T − Tmelt) if eTG == 0 and T > Tmelt, else 0 Melt = (0.9 × min(1, SWE / Cn) + 0.1) × PotMelt

Parameters: degree_day_factor (Kf) [mm/°C/d] cold_content_factor (CTG) [-] weighting for cold content update melting_temperature (Tmelt) [°C] mean_annual_snow [mm] mean annual solid precipitation; Cn = 0.9 * this value

Internal state _coldContent (G) persists between timesteps and is reset to zero by Reset().

Member Function Documentation

◆ AttachForcing()

void ProcessMeltCemaNeige::AttachForcing ( Forcing * forcing)
overridevirtual

Attach forcing to the process.

Parameters
forcingforcing to attach.

Reimplemented from Process.

◆ GetRates()

vecDouble ProcessMeltCemaNeige::GetRates ( )
overrideprotectedvirtual

Get the rates of the process.

Returns
vector of rates.

Implements Process.

◆ IsValid()

bool ProcessMeltCemaNeige::IsValid ( ) const
nodiscardoverridevirtual

Check that everything is correctly defined.

Returns
true if everything is correctly defined.

Reimplemented from ProcessMelt.

◆ RegisterProcessSettings()

void ProcessMeltCemaNeige::RegisterProcessSettings ( SettingsModel * modelSettings)
static

Register the process parameters and forcing in the settings model.

Parameters
modelSettingsThe settings model to register the parameters in.

◆ Reset()

void ProcessMeltCemaNeige::Reset ( )
overridevirtual

Reset all the fluxes connected to the process.

Reimplemented from Process.

◆ SetParameters()

void ProcessMeltCemaNeige::SetParameters ( const ProcessSettings & processSettings)
overridevirtual

Assign the parameters to the process.

Parameters
processSettingssettings of the process containing the parameters.

Reimplemented from Process.


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