hydrobricks
Loading...
Searching...
No Matches
Splitter Class Referenceabstract
Inheritance diagram for Splitter:
SplitterMultiFluxes SplitterRain SplitterSnowRainCemaNeige SplitterSnowRainLinear SplitterSnowRainThreshold

Public Member Functions

virtual bool IsValid () const =0
 
virtual void Validate () const
 
virtual void SetParameters (const SplitterSettings &splitterSettings)=0
 
const float * GetParameterValuePointer (const SplitterSettings &splitterSettings, const string &name)
 
const float * GetParameterValuePointerOrUnit (const SplitterSettings &splitterSettings, const string &name)
 
virtual void AttachForcing (Forcing *)
 
virtual void SetHydroUnitProperties (HydroUnit *)
 
void AttachFluxIn (Flux *flux)
 
void AttachFluxOut (std::unique_ptr< Flux > flux)
 
virtual double * GetValuePointer (const string &name)=0
 
virtual void Compute ()=0
 
const string & GetName () const
 
void SetName (const string &name)
 

Static Public Member Functions

static std::unique_ptr< SplitterFactory (const SplitterSettings &splitterSettings)
 

Protected Attributes

string _name
 
vector< Flux * > _inputs
 
std::vector< std::unique_ptr< Flux > > _outputs
 
const float _unitValue = 1.0f
 

Member Function Documentation

◆ AttachFluxIn()

void Splitter::AttachFluxIn ( Flux * flux)
inline

Attach incoming flux.

Parameters
fluxincoming flux

◆ AttachFluxOut()

void Splitter::AttachFluxOut ( std::unique_ptr< Flux > flux)
inline

Attach outgoing flux.

Parameters
fluxoutgoing flux (ownership transferred)

◆ AttachForcing()

virtual void Splitter::AttachForcing ( Forcing * )
inlinevirtual

Attach forcing.

Parameters
forcingincoming forcing

Reimplemented in SplitterRain, SplitterSnowRainCemaNeige, SplitterSnowRainLinear, and SplitterSnowRainThreshold.

◆ Compute()

virtual void Splitter::Compute ( )
pure virtual

◆ Factory()

std::unique_ptr< Splitter > Splitter::Factory ( const SplitterSettings & splitterSettings)
static

Factory method to create a splitter.

Parameters
splitterSettingssettings of the splitter containing the parameters.
Returns
a pointer to the splitter.

◆ GetName()

const string & Splitter::GetName ( ) const
inline

Get the name of the splitter.

Returns
name of the splitter.

◆ GetParameterValuePointer()

const float * Splitter::GetParameterValuePointer ( const SplitterSettings & splitterSettings,
const string & name )

Get the value pointer of a parameter.

Parameters
splitterSettingssettings of the splitter containing the parameters.
namename of the parameter.
Returns
pointer to the value of the parameter.

◆ GetParameterValuePointerOrUnit()

const float * Splitter::GetParameterValuePointerOrUnit ( const SplitterSettings & splitterSettings,
const string & name )

Get the value pointer of an optional parameter, or a unit (1.0) value if absent.

Used for parameters that default to a neutral value (e.g. precipitation correction factors) so that splitter setups omitting them stay valid.

Parameters
splitterSettingssettings of the splitter containing the parameters.
namename of the parameter.
Returns
pointer to the value of the parameter, or to a 1.0 fallback if not found.

◆ GetValuePointer()

virtual double * Splitter::GetValuePointer ( const string & name)
pure virtual

Get the pointer to an output value.

Parameters
namename of the output value.
Returns
pointer to the output value.

Implemented in SplitterMultiFluxes, SplitterRain, SplitterSnowRainCemaNeige, SplitterSnowRainLinear, and SplitterSnowRainThreshold.

◆ IsValid()

virtual bool Splitter::IsValid ( ) const
nodiscardpure virtual

Check that everything is correctly defined.

Returns
true if everything is correctly defined.

Implemented in SplitterMultiFluxes, SplitterRain, SplitterSnowRainCemaNeige, SplitterSnowRainLinear, and SplitterSnowRainThreshold.

◆ SetHydroUnitProperties()

virtual void Splitter::SetHydroUnitProperties ( HydroUnit * )
inlinevirtual

Set HydroUnit properties (e.g. elevation) needed by spatially-aware splitters. Default is a no-op; override in subclasses that require spatial data.

Parameters
unitthe HydroUnit this splitter belongs to.

Reimplemented in SplitterSnowRainCemaNeige.

◆ SetName()

void Splitter::SetName ( const string & name)
inline

Set the name of the splitter.

Parameters
namename of the splitter.

◆ SetParameters()

virtual void Splitter::SetParameters ( const SplitterSettings & splitterSettings)
pure virtual

Assign the parameters to the splitter.

Parameters
splitterSettingssettings of the splitter containing the parameters.

Implemented in SplitterMultiFluxes, SplitterRain, SplitterSnowRainCemaNeige, SplitterSnowRainLinear, and SplitterSnowRainThreshold.

◆ Validate()

void Splitter::Validate ( ) const
virtual

Validate that everything is correctly defined. Throws an exception if validation fails.

Exceptions
ModelConfigErrorif validation fails.

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