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

#include <ProcessLateralSnowSlide.h>

Inheritance diagram for ProcessLateralSnowSlide:
ProcessLateral Process

Public Member Functions

 ProcessLateralSnowSlide (WaterContainer *container)
 
bool IsValid () const override
 
void SetHydroUnitProperties (HydroUnit *unit, Brick *brick) override
 
void SetParameters (const ProcessSettings &processSettings) override
 
bool IsLateralProcess () const noexcept override
 
- Public Member Functions inherited from ProcessLateral
 ProcessLateral (WaterContainer *container)
 
int GetConnectionCount () const override
 
double * GetValuePointer (std::string_view name) override
 
void AttachFluxOutWithWeight (std::unique_ptr< Flux > flux, double weight=1.0)
 
double GetOriginLandCoverAreaFraction () const
 
double GetTargetLandCoverAreaFraction (Flux *flux)
 
double ComputeFractionAreas (Flux *flux)
 
- Public Member Functions inherited from Process
 Process (WaterContainer *container)
 
virtual void Reset ()
 
virtual void Validate () const
 
virtual void AttachForcing (Forcing *)
 
void AttachFluxOut (std::unique_ptr< Flux > flux)
 
int GetOutputFluxCount () const
 
FluxGetOutputFlux (size_t index) const
 
virtual bool ToAtmosphere () const
 
virtual bool NeedsTargetBrickLinking () const
 
virtual const 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 LinksMultipleTargets () const
 
virtual void AddTargetBrickWithWeights (Brick *, const std::vector< Brick * > &)
 
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

const vecDouble & GetRates () override
 
- Protected Member Functions inherited from Process
const vecDouble & StoreRates (std::initializer_list< double > rates)
 
double GetSumChangeRatesOtherProcesses () const
 

Protected Attributes

float _slopeDeg
 
const float * _coeff
 
const float * _exp
 
const float * _minSlope
 
const float * _maxSlope
 
const float * _minSnowHoldingDepth
 
const float * _maxSnowDepth
 
- Protected Attributes inherited from ProcessLateral
vecDouble _weights
 
- Protected Attributes inherited from Process
string _name
 
WaterContainer_container
 
TimeMachine_timeMachine {nullptr}
 
std::vector< std::unique_ptr< Flux > > _outputs
 
vecDouble _changeRates
 

Detailed Description

Gravitational snow redistribution (SnowSlide; Bernhardt & Schulz, 2010).

Moves snow exceeding a slope-dependent holding capacity to downslope hydro units. The holding threshold (as a snow depth) decreases with the slope: D_hold = coeff × slope^exp (clamped to [min_snow_holding_depth, max_snow_depth])

The excess SWE (depth above D_hold, converted back to SWE) is distributed over the connected outputs by their weights and target area fractions, capped at 1000 mm and skipped where the target snowpack is already over-accumulated.

Member Function Documentation

◆ GetRates()

const vecDouble & ProcessLateralSnowSlide::GetRates ( )
overrideprotectedvirtual

Get the rates of the process.

Implementations must store their result via StoreRates() (or directly in the _changeRates buffer) and return the reference, to avoid allocating on the hot path.

Returns
reference to the reusable buffer holding the rates.

Implements Process.

◆ IsLateralProcess()

bool ProcessLateralSnowSlide::IsLateralProcess ( ) const
inlinenodiscardoverridevirtualnoexcept

Check if the process is a lateral process.

Returns
true if the process is a lateral process.

Reimplemented from ProcessLateral.

◆ IsValid()

bool ProcessLateralSnowSlide::IsValid ( ) const
nodiscardoverridevirtual

Check that everything is correctly defined.

Returns
true if everything is correctly defined.

Reimplemented from ProcessLateral.

◆ RegisterProcessSettings()

void ProcessLateralSnowSlide::RegisterProcessSettings ( SettingsModel * modelSettings)
static

Register the process parameters and forcing in the settings model.

Parameters
modelSettingsThe settings model to register the parameters in.

◆ SetHydroUnitProperties()

void ProcessLateralSnowSlide::SetHydroUnitProperties ( HydroUnit * unit,
Brick * brick )
overridevirtual

Set the properties of the hydro unit.

Parameters
unitthe related hydro unit.
brickthe related brick.

Reimplemented from Process.

◆ SetParameters()

void ProcessLateralSnowSlide::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: