82 TerrainRadiationHelbig(
const mio::Config &i_cfg,
const mio::DEMObject &dem_in,
const int &i_nbworkers,
const std::string &method);
84 virtual void getRadiation(mio::Array2D<double> &direct, mio::Array2D<double> &diffuse,
85 mio::Array2D<double> &terrain,
const mio::Array2D<double> &direct_unshaded_horizontal,
86 const mio::Array2D<double> &total_ilwr, mio::Array2D<double> &sky_ilwr,
87 mio::Array2D<double> &terrain_ilwr,
double solarAzimuth,
double solarElevation)
override;
88 virtual void setMeteo(
const mio::Array2D<double> &albedo,
const mio::Array2D<double> &ta)
override;
101 double mean_glob_start;
102 int LW_distance_index;
103 const static int NB_UNROLL = 3;
105 mio::Array2D<double> meteo2d_ta, albedo_grid;
106 mio::Array2D<double> lw_t, lwi, lw_sky;
109 double max_glob_start;
115 mio::Array2D<double> total_diff, tdir, tdiff, sw_t, glob_start, glob_h_isovf, glob_h, t_snowold, total_terrain, tot_ilwr;
123 std::vector<CellsList> lwt_byCell;
126 int SWTerrainRadiationStep(
const double threshold_itEps_SW,
int &i_max_unshoot,
int &j_max_unshoot,
unsigned int n,
const clock_t t0);
127 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);
128 void ComputeTerrainRadiation(
const bool &day,
int i_max_unshoot,
int j_max_unshoot,
int i_max_unshoot_lw,
int j_max_unshoot_lw);
129 void ComputeRadiationBalance();
130 void InitializeTerrainSwSplitting(
const int i,
const int j,
131 int &i_max_unshoot,
int &j_max_unshoot,
double &diffmax_sw);
132 void InitializeTerrainRadiation(
const bool &day,
int &i_max_unshoot,
int &j_max_unshoot,
int &i_max_unshoot_lw,
int &j_max_unshoot_lw);
133 void fillSWResultsGrids(
const bool &day);
135 void InitializeLW(
const int i,
const int j,
int &i_max_unshoot_lw,
int &j_max_unshoot_lw,
double &diffmax_lw);
137 static inline void CalculateIndex(
const int indice,
const int distance_max,
int dim,
int *min,
int *max);
138 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);
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) override
Definition TerrainRadiationHelbig.cc:68