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:
#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 | |
TimeSeriesManager & | tsmanager |
Date | date |
std::vector< MeteoData > | vecMeteo |
std::vector< double > | vecData |
store the measurement for the given parameter More... | |
std::vector< StationData > | vecMeta |
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... | |
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 | ||
) |
|
virtual |
Implements mio::InterpolationAlgorithm.
|
virtual |
Implements mio::InterpolationAlgorithm.