MeteoIODoc 20240329.18c31bd1
mio::FilterPotentialSW Class Reference

Detailed Description

Checks for physically realistic incoming short wave radiation (ISWR) values.

For each data point, the measured value must be:

  • more than the horizontal top of atmosphere potential radiation multiplied by the min_coeff coefficient;
  • less than the global horizontal potential radiation multiplied by the max_coeff coefficient.

Alternatively, you can set the MODE keyword to GROUND, in which case min_coeff is also multiplied with the global potential radiation for the minimum check.

It takes the following arguments:

  • MIN_COEFF: minimum coefficient (default: 0.03);
  • MAX_COEFF: maximum coefficient (default: 1.1);
  • SOFT: if true, filtered values are set to the filter limits (coefficient * calculation) instead of nodata (optional);
  • MEAN_PERIOD: average the radiation over this given period (in seconds)
  • MODE: set to GROUND to use ground level global radiation when evaluating the minimum plausible radiation (optional).

The default values come from Moradi, I., "Quality control of global solar radiation using sunshine duration hours", 2009, Energy 34, no. 1, 1-6.

ISWR::filter1 = PotentialSW
ISWR::arg1::MIN_COEFF = 0.03
ISWR::arg1::MAX_COEFF = 1.1

If your data logger aggregates measurements this can lead to troubles at the steeper parts of the potential radiation curve. For 10 minutes, the difference can be a couple of dozens W/m^2 which would be averaged and compared to the theoretical value at the end of the aggregation period. To remedy this, you can set MEAN_PERIOD (in seconds).

ISWR::filter1 = PotentialSW
ISWR::arg1::min_coeff = 0
ISWR::arg1::max_coeff = 1.05
ISWR::arg1::soft = true
ISWR::arg1::mean_period = 600 ;ie 10 minutes

In the above example, if the filter meets a measurement at 10:15 it will compute the potential radiation for 10:15, 10:14, ..., 10:05 (i. e. 11 values), take the arithmetic mean, and compare that to the value at 10:15 as usual. Note that influential atmospheric parameters (TA, RH, P) are currently taken as constant from the measurement time step (at 10:15 in the example). The min_coeff in this case is essentially a minimum filter to 0.

#include <FilterPotentialSW.h>

Public Member Functions

 FilterPotentialSW (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
 

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...
 
- 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
 
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

◆ FilterPotentialSW()

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

Member Function Documentation

◆ process()

void mio::FilterPotentialSW::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: