MeteoIODoc 20241221.207bde49
mio::SnowPSUMInterpolation Class Reference

Detailed Description

Precipitation distribution according to the local slope and curvature.

The precipitation distribution is initialized using a specified algorithm ("BASE" option, set to IDW_LAPSE by default, see IDWLapseAlgorithm). An optional parameter can be given to specify which algorithm has to be used for initializing the grid. Please do not forget to provide the arguments of the chosen algorithm itself if necessary!

After filling the initial grid, this method modifies the solid precipitation distribution according to the local slope and curvature: all pixels whose slope is greater than 60° will not receive any snow at all. All pixels whose slope is less than 40° will receive full snow and any pixel between 40° and 60° sees a linear correction between 100% and 0% snow. After this step, a curvature correction is applied: pixels having the minimum curvature see 50% snow more, pixels having the maximum curvature see 50% snow less and pixels ate the middle of the curvature range are unaffected.

For more, see "Quantitative evaluation of different hydrological modelling approaches in a partly glacierized Swiss watershed", Magnusson et Al., Hydrological Processes, 25, 2071-2084, 2011 and "Modelling runoff from highly glacierized alpine catchments in a changing climate", Huss et All., Hydrological Processes, 22, 3888-3902, 2008.

An example using this algorithm, initializing the grid with a constant lapse rate fill using +0.05% precipitation increase per meter of elevation, is given below:

PSUM::algorithms = PSUM_SNOW
PSUM::psum_snow::base = avg_lapse
PSUM::avg_lapse::frac = true
PSUM::avg_lapse::rate = 0.0005

#include <SnowPsumAlgorithm.h>

Public Member Functions

 SnowPSUMInterpolation (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &i_algo, const std::string &i_param, TimeSeriesManager &i_tsm, GridsManager &i_gdm, Meteo2DInterpolator &i_mi)
 
virtual double getQualityRating (const Date &i_date)
 
virtual void calculate (const DEMObject &dem, Grid2DObject &grid)
 
- Public Member Functions inherited from mio::InterpolationAlgorithm
 InterpolationAlgorithm (const std::vector< std::pair< std::string, std::string > > &, const std::string &i_algo, const std::string &i_param, TimeSeriesManager &i_tsm)
 
virtual ~InterpolationAlgorithm ()
 
virtual double getQualityRating (const Date &i_date)=0
 
virtual void calculate (const DEMObject &dem, Grid2DObject &grid)=0
 
std::string getInfo () const
 Return an information string about the interpolation process. More...
 

Additional Inherited Members

- Public Attributes inherited from mio::InterpolationAlgorithm
const std::string algo
 
- Protected Member Functions inherited from mio::InterpolationAlgorithm
std::vector< double > getData (const Date &i_date, const std::string &i_param)
 
size_t getData (const Date &i_date, const std::string &i_param, std::vector< double > &o_vecData, std::vector< StationData > &o_vecMeta)
 
- Protected Attributes inherited from mio::InterpolationAlgorithm
TimeSeriesManagertsmanager
 
Date date
 
std::vector< MeteoDatavecMeteo
 
std::vector< double > vecData
 store the measurement for the given parameter More...
 
std::vector< StationDatavecMeta
 store the station data for the given parameter More...
 
std::ostringstream info
 to store some extra information about the interplation process More...
 
const std::string param
 the parameter that we will interpolate More...
 
size_t nrOfMeasurments
 Number of stations that have been used, so this can be reported to the user. More...
 

Constructor & Destructor Documentation

◆ SnowPSUMInterpolation()

mio::SnowPSUMInterpolation::SnowPSUMInterpolation ( const std::vector< std::pair< std::string, std::string > > &  vecArgs,
const std::string &  i_algo,
const std::string &  i_param,
TimeSeriesManager i_tsm,
GridsManager i_gdm,
Meteo2DInterpolator i_mi 
)

Member Function Documentation

◆ calculate()

void mio::SnowPSUMInterpolation::calculate ( const DEMObject dem,
Grid2DObject grid 
)
virtual

◆ getQualityRating()

double mio::SnowPSUMInterpolation::getQualityRating ( const Date i_date)
virtual

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