MeteoIODoc 20241110.c10ed43a
mio::ProcUndercatch_WMO Class Reference

Detailed Description

Correct precipitation for undercatch in winter conditions.

This implements the standard methods for precipitation correction as described in "WMO Solid Precipitation Measurement Intercomparison", B. Goodison, P. Louie and D. Yang, 872, 1998 as well as the overview given by "Literature Study on the Correction of Precipitation Measurements", Annette Wagner, 2009. The correction parameters for the shielded Hellmann gauge (German version) are from "Wind-induced Precipitation Undercatch of the Hellmann Gauges", Daqing Yang et al, Nordic Hydrology, 30, 1999, pp 57-80 while the correction for Japanese RT-3 gauges comes from "Performance of Japanese precipitation gauges in winter", K. Yokoyama, H. Ohno, Y. Kominami, S. Inoue and T. Kawakata, Seppyo, 65, 2003, pp 303-316 (in Japanese with English summary). The correction for the Chinese Standard Precipitation Gauge is from "A Bias-Corrected Precipitation Climatology for China", B. Ye, Y. Daqing, D. Yongjian, H. Tianding, K. Toshio, 2004, Journal of Hydrometeorology, 5, 1147–1160.

These correction methods process pure snow and mixed precipitation differently, with the following thresholds:

  • pure snow below -2 °C
  • mixed precipitation between -2 and +2 °C
  • pure rain above 2 °C

They also depend on the usage of a shield around the gauge as well as the type of rain gauge that does the measurements, therefore this type must be specified as an argument. The coefficients are not always available both for shielded and unshielded gauges, so most of the time only one variation will be available and is specified below.

The following arguments are supported:

  • TYPE: this gives the rain gauge and shield type. It must be one of:
    • cst - this applies a constant factor to the precipitation (the solid and mixed precipitation factor must be provided, see below);
    • Nipher - National standard rain gauge in Canada, shielded;
    • Tretyakov - Designed in USSR in the 1950s, deployed by some national networks in ex-USSR territories, shielded;
    • US8sh - US national 8" rain gauge, shielded (Alter shield);
    • US8unsh - US national 8" rain gauge, unshielded;
    • RT3_Jp - Japanese network RT-3 rain gauge. This uses an ad-hoc rain/snow splitting method;
    • Cspg - China Standard Precipitation Gauge, unshielded;
    • Geonorsh - Geonor rain gauge with Alter shield. The mixed precipitation is computed according to the same principles as in (Ye, 2004);
    • Hellmann - the most widely used rain gauge in the world, with some country specific variations, unshielded;
    • Hellmannsh - Hellmann rain gauge with shield, mixed precipitation from a fit on the published data;
  • SNOW: constant factor for solid precipitation for the CST type (mandatory);
  • MIXED: constant factor for mixed precipitation for the CST type (mandatory);
  • T_SNOW: solid precipitation temperature threshold for the CST type (in K, default -2 °C);
  • T_RAIN: liquid precipitation temperature threshold for the CST type (in K, default +2 °C);
PSUM::filter1 = undercatch_wmo
PSUM::arg1::type = cst
PSUM::arg1::snow = 1.3
PSUM::arg1::mixed = 1.1

#include <ProcUndercatch_WMO.h>

Public Member Functions

 ProcUndercatch_WMO (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg)
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)
 
- Public Member Functions inherited from mio::ProcessingBlock
virtual ~ProcessingBlock ()
 
virtual void process (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< MeteoData > &ovec)=0
 
virtual void process (Date &dateStart, Date &dateEnd)
 
std::string getName () const
 
const ProcessingPropertiesgetProperties () const
 
const std::string toString () const
 
bool skipStation (const std::string &station_id) const
 Should the provided station be skipped in the processing? More...
 
bool noStationsRestrictions () const
 
const std::vector< DateRangegetTimeRestrictions () const
 
bool skipHeight (const double &height) const
 Should the provided height be skipped in the processing? More...
 

Additional Inherited Members

- Static Public Member Functions inherited from mio::ProcessingBlock
static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y)
 Read a data file structured as X Y value on each lines. More...
 
static void readCorrections (const std::string &filter, const std::string &filename, std::vector< double > &X, std::vector< double > &Y1, std::vector< double > &Y2)
 Read a data file structured as X Y1 Y2 value on each lines. More...
 
static std::vector< double > readCorrections (const std::string &filter, const std::string &filename, const size_t &col_idx, const char &c_type, const double &init)
 Read a correction file applicable to repeating time period. More...
 
static std::vector< offset_specreadCorrections (const std::string &filter, const std::string &filename, const double &TZ, const size_t &col_idx=2)
 Read a correction file, ie a file structured as timestamps followed by values on each lines. More...
 
static std::map< std::string, std::vector< DateRange > > readDates (const std::string &filter, const std::string &filename, const double &TZ)
 Read a list of date ranges by stationIDs from a file. More...
 
- Static Public Attributes inherited from mio::ProcessingBlock
static const double default_height
 
- Protected Member Functions inherited from mio::ProcessingBlock
 ProcessingBlock (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &name, const Config &cfg)
 protected constructor only to be called by children More...
 
- Static Protected Member Functions inherited from mio::ProcessingBlock
static void extract_dbl_vector (const unsigned int &param, const std::vector< MeteoData > &ivec, std::vector< double > &ovec)
 
static void extract_dbl_vector (const unsigned int &param, const std::vector< const MeteoData * > &ivec, std::vector< double > &ovec)
 
- Protected Attributes inherited from mio::ProcessingBlock
const std::set< std::string > excluded_stations
 
const std::set< std::string > kept_stations
 
const std::vector< DateRangetime_restrictions
 
std::set< double > included_heights
 
std::set< double > excluded_heights
 
bool all_heights
 
ProcessingProperties properties
 
const std::string block_name
 
- Static Protected Attributes inherited from mio::ProcessingBlock
static const double soil_albedo = .23
 
static const double snow_albedo = .85
 
static const double snow_thresh = .1
 parametrize the albedo from HS More...
 

Constructor & Destructor Documentation

◆ ProcUndercatch_WMO()

mio::ProcUndercatch_WMO::ProcUndercatch_WMO ( const std::vector< std::pair< std::string, std::string > > &  vecArgs,
const std::string &  name,
const Config cfg 
)

Member Function Documentation

◆ process()

void mio::ProcUndercatch_WMO::process ( const unsigned int &  param,
const std::vector< MeteoData > &  ivec,
std::vector< MeteoData > &  ovec 
)
virtual

Implements mio::ProcessingBlock.


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