18#ifndef TERRAINRADIATIONHELBIG_H
19#define TERRAINRADIATIONHELBIG_H
21#include <meteoio/MeteoIO.h>
34 const double c1 = ((
CellsList *)cell1)->radiation;
35 const double c2 = ((
CellsList *)cell2)->radiation;
81 TerrainRadiationHelbig(
const mio::Config &i_cfg,
const mio::DEMObject &dem_in,
const int &i_nbworkers,
const std::string &method);
83 virtual void getRadiation(mio::Array2D<double> &direct, mio::Array2D<double> &diffuse,
84 mio::Array2D<double> &terrain,
const mio::Array2D<double> &direct_unshaded_horizontal,
85 const mio::Array2D<double> &total_ilwr, mio::Array2D<double> &sky_ilwr,
86 mio::Array2D<double> &terrain_ilwr,
double solarAzimuth,
double solarElevation);
87 virtual void setMeteo(
const mio::Array2D<double> &albedo,
const mio::Array2D<double> &ta);
98 double mean_glob_start;
99 int LW_distance_index;
100 const static int NB_UNROLL = 3;
102 mio::Array2D<double> meteo2d_ta, albedo_grid;
103 mio::Array2D<double> lw_t, lwi, lw_sky;
106 double max_glob_start;
112 mio::Array2D<double> total_diff, tdir, tdiff, sw_t, glob_start, glob_h_isovf, glob_h, t_snowold, total_terrain, tot_ilwr;
120 std::vector<CellsList> lwt_byCell;
123 int SWTerrainRadiationStep(
const double threshold_itEps_SW,
int &i_max_unshoot,
int &j_max_unshoot,
unsigned int n,
const clock_t t0);
124 int LWTerrainRadiationStep(
const double threshold_itEps_LW,
const int itMax_LW,
int &i_max_unshoot_lw,
int &j_max_unshoot_lw,
unsigned int n,
const clock_t t0);
125 void ComputeTerrainRadiation(
const bool &day,
int i_max_unshoot,
int j_max_unshoot,
int i_max_unshoot_lw,
int j_max_unshoot_lw);
126 void ComputeRadiationBalance();
127 void InitializeTerrainSwSplitting(
const int i,
const int j,
128 int &i_max_unshoot,
int &j_max_unshoot,
double &diffmax_sw);
129 void InitializeTerrainRadiation(
const bool &day,
int &i_max_unshoot,
int &j_max_unshoot,
int &i_max_unshoot_lw,
int &j_max_unshoot_lw);
130 void fillSWResultsGrids(
const bool &day);
132 void InitializeLW(
const int i,
const int j,
int &i_max_unshoot_lw,
int &j_max_unshoot_lw,
double &diffmax_lw);
133 void getSkyViewFactor(mio::Array2D<double> &o_sky_vf);
135 static inline void CalculateIndex(
const int indice,
const int distance_max,
int dim,
int *min,
int *max);
136 static inline void LWTerrainRadiationCore(
const double bx2,
const int j_shoot,
const double z_shoot,
const int j,
const double z,
const double cellsize,
const double t_snow_shoot,
const double t_snow_shoot_value,
const double t_a,
const double vf,
double *lwi,
int *s);
int CellsRadComparator_Helbig(const void *cell1, const void *cell2)
Definition: TerrainRadiationHelbig.h:32
Definition: TerrainRadiationAlgorithm.h:26
Definition: TerrainRadiationAlgorithm.h:37
Radiosity terrain radiation. For each cell of the domain, a view factor to every other visible cell o...
Definition: TerrainRadiationHelbig.h:78
TerrainRadiationHelbig(const mio::Config &i_cfg, const mio::DEMObject &dem_in, const int &i_nbworkers, const std::string &method)
Definition: TerrainRadiationHelbig.cc:29
virtual void getRadiation(mio::Array2D< double > &direct, mio::Array2D< double > &diffuse, mio::Array2D< double > &terrain, const mio::Array2D< double > &direct_unshaded_horizontal, const mio::Array2D< double > &total_ilwr, mio::Array2D< double > &sky_ilwr, mio::Array2D< double > &terrain_ilwr, double solarAzimuth, double solarElevation)
Definition: TerrainRadiationHelbig.cc:68
virtual void setMeteo(const mio::Array2D< double > &albedo, const mio::Array2D< double > &ta)
Definition: TerrainRadiationHelbig.cc:88
Definition: ViewFactorsCluster.h:25
Definition: ViewFactorsHelbig.h:28