Generate precipitation phase or splitting according to the selected method.
In order to handle solid and liquid precipitation, there are two possibilities: either as total amount and phase (respectively "PSUM" and "PSUM_PH") or as solid and liquid amounts (respectively "PSUM_S" and "PSUM_L"). This generator can convert from one representation to the other one.
This generator can also generate the missing components (for example, the precipitation phase associated with a given precipitation amout based on a splitting model). For more background on the performance of splitting models based on ground-level measurements, see for example Jennings, Keith S., et al., "Machine learning shows a limit to rain-snow partitioning accuracy when using near-surface meteorology", 2025, Nature Communications, 16.1, 10.1038/s41467-025-58234-2.
The component that will be generated depends on the parameter name, so only the following parameters are supported: PSUM, PSUM_PH, PSUM_L, PSUM_S. Whenever a component is missing, a splitting model is called to compute the splitting. It is therefore recommended to configure a splitting model.
It takes the following arguments:
For example, to generate the precipitation phase when only the precipitation amout is available, using a simple wet bulb temperature threshold for doing the splitting followed by a fallback generator only using an air temperature threshold using :
To generate the liquid and solid amounts from the precipitation sum and phase, relying on a simple temperature threshold for the splitting (if the precipitation phase is available, it will be used instead of calling the splitting model):
To generate the precipitation sum and phase from the liquid and solid amounts without any fallback algorithm for the splitting:
#include <PrecSplitting.h>
Public Member Functions | |
PrecSplitting (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &i_algo, const std::string &i_section, const double &TZ) | |
bool | generate (const size_t ¶m, MeteoData &md, const std::vector< MeteoData > &vecMeteo) override |
bool | create (const size_t ¶m, const size_t &ii_min, const size_t &ii_max, std::vector< MeteoData > &vecMeteo) override |
Fill one time series of MeteoData for one station. | |
![]() | |
virtual | ~GeneratorAlgorithm () |
bool | skipStation (const std::string &station_id) const |
Should this station be skipped, based on user-provided station ID restrictions? | |
bool | skipTimeStep (const Date &dt) const |
Should this timestep be skipped, based on user-provided time restrictions? | |
bool | skipHeight (const double &height) const |
std::vector< DateRange > | getTimeRestrictions () const |
std::string | getAlgo () const |
Additional Inherited Members | |
![]() | |
GeneratorAlgorithm (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &i_algo, const std::string &i_section, const double &TZ) | |
protected constructor only to be called by children | |
void | initHeightRestrictions (const std::vector< std::pair< std::string, std::string > > vecArgs) |
![]() | |
static std::set< std::string > | initStationSet (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &keyword) |
![]() | |
const std::vector< DateRange > | time_restrictions |
const std::set< std::string > | excluded_stations |
const std::set< std::string > | kept_stations |
std::set< double > | included_heights |
std::set< double > | excluded_heights |
bool | all_heights |
const std::string | algo |
const std::string | section |
![]() | |
static const double | default_height = IOUtils::nodata |
|
inline |
|
overridevirtual |
Fill one time series of MeteoData for one station.
This is used by the dataCreators to create a new parameter in one go for the whole timeseries.
[in] | param | meteo parameter to generate |
[in] | ii_min | minimum index to apply it to in vecMeteo |
[in] | ii_max | maximum index to apply it to in vecMeteo |
[in] | vecMeteo | meteo timeseries to process |
Implements mio::GeneratorAlgorithm.
|
overridevirtual |
Implements mio::GeneratorAlgorithm.