Atmospheric transmissivity generator.
Generate the atmospheric transmissivity (or clearness index, see meteoparam) from other parameters. If a parameter named "CLD" is available, it will be interpreted as cloud cover / cloudiness: in okta between 0 (fully clear) and 8 (fully cloudy). For synop reports, it is possible to include a value of exactly 9 (sky obstructed from view by fog, heavy precipitation...) that will be transparently reset to 8 (fully cloudy).
If no such parameter is available, the atmospheric transmissivity is calculated from the solar index (ratio of measured iswr to potential iswr, therefore using the current location (lat, lon, altitude) and ISWR to parametrize the cloud cover). This relies on (Kasten and Czeplak, 1980).
It takes the following (optional) argument:
- CLD_TYPE: cloudiness model, either LHOMME, KASTEN or CRAWFORD (default: KASTEN, see AllSkyLWGenerator for the references of the papers. Please also note that CRAWFORD and LHOMME are exactly identical as the both simply consider that the cloudiness is 1-clearness_index);
- SHADE_FROM_DEM: if set to true, the DEM defined in the [Input] section will be used to compute the shading;
- INFILE: a file containing the horizon for some or all stations (see the ProcShade filter for the format);
- OUTFILE: a file to write the computed horizons to. If some horizons have been read from INFILE, they will also be written out in OUTFILE;
- USE_RSWR. If set to TRUE, when no ISWR is available but RSWR and HS are available, a ground albedo is estimated (either soil or snow albedo) and ISWR is then computed from RSWR. Unfortunately, this is not very precise... (thus default is false)
- USE_RAD_THRESHOLD: when relying on measured ISWR to parametrize the cloudiness, there is a risk that the measuring station would stand in a place where it is shaded by the surrounding terrain at some point during the day. This would lead to an overestimation of the cloudiness that is undesirable. In this case, it is possible to set USE_RAD_THRESHOLD to TRUE in order to interpolate the cloudiness over all periods of low radiation measured ISWR. This is less performant that only considering the solar elevation (with shading computed from DEM) but improves things in this specific scenario, when no shading is available.
- Note
- Please note that it is possible to combine SHADE_FROM_DEM and INFILE: in this case, stations that don't have any horizon in the provided INFILE will be computed from DEM. It is also possible to define wildcard station ID in the horizon file. If SHADE_FROM_DEM has been set to false and no INFILE has been provided, a fixed 5 degrees threshold is used.
[Generators]
TAU_CLD::generator1 = TAU_CLD
TAU_CLD::arg1::use_rswr = false
The horizon file contains on each line a station ID followed by an azimuth (in degrees, starting from North) and an elevation above the horizontal (also in degrees). It is possible to define a wildcard station ID '*' to be used as fallback. The elevation for any given azimuth will be linearly interpolated between the provided horizons before and after. If only one azimuth is given for a station ID, its horizon elevation is assumed to be constant. See below an example horizon file, defining two station IDs (SLF2 and FLU2):
SLF2 0 5
SLF2 45 25
SLF2 180 30
SLF2 245 10
FLU2 0 7
- Note
- In order to pre-compute the horizons for multiple stations, write an ini file reading all stations of interest, declare a dataGenerator that relies on TauCLDGenerator and run meteoio_timeseries on it for at least one time step. This will be enough to create the horizon file for all stations...
|
| TauCLDGenerator (const std::vector< std::pair< std::string, std::string > > &vecArgs, const std::string &i_algo, const std::string &i_section, const double &TZ, const Config &i_cfg) |
|
| ~TauCLDGenerator () |
|
bool | generate (const size_t ¶m, MeteoData &md, const std::vector< MeteoData > &vecMeteo) |
|
bool | create (const size_t ¶m, const size_t &ii_min, const size_t &ii_max, std::vector< MeteoData > &vecMeteo) |
| Fill one time series of MeteoData for one station. More...
|
|
virtual | ~GeneratorAlgorithm () |
|
virtual bool | generate (const size_t ¶m, MeteoData &md, const std::vector< MeteoData > &vecMeteo)=0 |
|
virtual bool | create (const size_t ¶m, const size_t &ii_min, const size_t &ii_max, std::vector< MeteoData > &vecMeteo)=0 |
| Fill one time series of MeteoData for one station. More...
|
|
bool | skipStation (const std::string &station_id) const |
| Should this station be skipped, based on user-provided station ID restrictions? More...
|
|
bool | skipTimeStep (const Date &dt) const |
| Should this timestep be skipped, based on user-provided time restrictions? More...
|
|
std::vector< DateRange > | getTimeRestrictions () const |
|
std::string | getAlgo () const |
|
|
double | interpolateCloudiness (const std::string &station_hash, const double &julian_gmt) const |
|
double | getCloudiness (const MeteoData &md) |
| Return the atmospheric cloudiness. More...
|
|
double | computeCloudiness (const MeteoData &md, bool &is_night) |
| Compute the atmospheric cloudiness from the available measurements. More...
|
|
double | getClearness (const double &cloudiness) const |
| Compute the clearness index from an atmospheric cloudiness value. More...
|
|
double | getHorizon (const MeteoData &md, const double &sun_azi) |
|
| 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 More...
|
|
virtual void | parse_args (const std::vector< std::pair< std::string, std::string > > &) |
|