18 #ifndef SNOWPACKINTERFACEWORKER_H
19 #define SNOWPACKINTERFACEWORKER_H
22 #include <meteoio/MeteoIO.h>
23 #include <snowpack/libsnowpack.h>
65 static std::vector<std::string> paramname;
66 static const bool __init;
67 static bool initStaticData();
79 const mio::DEMObject& dem_in,
80 const mio::Grid2DObject& landuse_in,
81 const std::vector< std::pair<size_t,size_t> >& pts_in,
82 const std::vector<SnowStation*>& snow_stations,
83 const size_t offset_in);
87 void setUseDrift(
const bool useDrift_in) {useDrift = useDrift_in;}
88 void setUseEBalance(
const bool useEBalance_in) {useEBalance = useEBalance_in;}
90 void getOutputSNO(std::vector<SnowStation*>& snow_station)
const;
91 void getOutputSpecialPoints(std::vector<SnowStation*>& ptr_snow_pixel, std::vector<CurrentMeteo*>& ptr_meteo_pixel,
92 std::vector<SurfaceFluxes*>& ptr_surface_flux);
98 void runModel(
const mio::Date& julian,
99 const mio::Grid2DObject &psum,
100 const mio::Grid2DObject &psum_ph,
101 const mio::Grid2DObject &rh,
102 const mio::Grid2DObject &ta,
103 const mio::Grid2DObject &vw,
104 const mio::Grid2DObject &mns,
105 const mio::Grid2DObject &shortwave,
106 const mio::Grid2DObject &diffuse,
107 const mio::Grid2DObject &longwave,
108 const double solarElevation);
111 static bool skipThisCell(
const double& landuse_val,
const double& dem_val);
112 static bool is_special(
const std::vector< std::pair<size_t,size_t> >& pts_in,
const size_t& ix,
const size_t& iy);
115 void initGrids(std::vector<std::string>& params);
116 void gatherSpecialPoints(
const CurrentMeteo& meteoPixel,
const SnowStation& snowPixel,
const SurfaceFluxes& surfaceFlux);
117 void fillGrids(
const size_t& ii,
const size_t& jj,
const CurrentMeteo& meteoPixel,
const SnowStation& snowPixel,
const SurfaceFluxes& surfaceFlux);
120 SnowpackConfig sn_cfg;
125 const mio::DEMObject dem;
126 const size_t dimx, dimy, offset;
127 std::vector<SnowStation*> SnowStations;
128 std::vector<bool> isSpecialPoint;
130 const mio::Grid2DObject landuse;
131 mio::Grid2DObject store;
132 std::map< SnGrids::Parameters, mio::Grid2DObject > grids;
135 std::vector<SnowStation> snow_pixel;
136 std::vector<CurrentMeteo> meteo_pixel;
137 std::vector<SurfaceFluxes> surface_flux;
139 double calculation_step_length;
140 double height_of_wind_value;
141 double soil_temp_depth;
142 bool useDrift, useEBalance, useCanopy;
internal usage (precipitation events that are delayed because they are too small) ...
Definition: SnowpackInterfaceWorker.h:54
Albedo of the surface (ie below canopy)
Definition: SnowpackInterfaceWorker.h:46
runoff on the surface of the soil (vitual lysimeter)
Definition: SnowpackInterfaceWorker.h:51
Relative humidity.
Definition: SnowpackInterfaceWorker.h:30
Incoming long wave radiation.
Definition: SnowpackInterfaceWorker.h:35
void setUseEBalance(const bool useEBalance_in)
Definition: SnowpackInterfaceWorker.h:88
static size_t getParameterIndex(const std::string &parname)
Definition: SnowpackInterfaceWorker.cc:77
void clearSpecialPointsData()
Definition: SnowpackInterfaceWorker.cc:254
void runModel(const mio::Date &julian, const mio::Grid2DObject &psum, const mio::Grid2DObject &psum_ph, const mio::Grid2DObject &rh, const mio::Grid2DObject &ta, const mio::Grid2DObject &vw, const mio::Grid2DObject &mns, const mio::Grid2DObject &shortwave, const mio::Grid2DObject &diffuse, const mio::Grid2DObject &longwave, const double solarElevation)
method which prepares all data for simulation and then access correctly the Snowpack model interfaces...
Definition: SnowpackInterfaceWorker.cc:418
void getOutputSpecialPoints(std::vector< SnowStation * > &ptr_snow_pixel, std::vector< CurrentMeteo * > &ptr_meteo_pixel, std::vector< SurfaceFluxes * > &ptr_surface_flux)
Definition: SnowpackInterfaceWorker.cc:243
Incoming short wave, direct.
Definition: SnowpackInterfaceWorker.h:34
Definition: SnowpackInterfaceWorker.h:28
void getGrid(const SnGrids::Parameters ¶m, mio::Grid2DObject &o_grid2D) const
Method that the Master can search the neded data (in grids) from Worker (Pull from client) ...
Definition: SnowpackInterfaceWorker.cc:288
Temperature snow surface.
Definition: SnowpackInterfaceWorker.h:40
Snow mean density.
Definition: SnowpackInterfaceWorker.h:44
Definition: SnowpackInterfaceWorker.h:75
Snow Water Equivalent.
Definition: SnowpackInterfaceWorker.h:43
static bool is_special(const std::vector< std::pair< size_t, size_t > > &pts_in, const size_t &ix, const size_t &iy)
Definition: SnowpackInterfaceWorker.cc:646
Albedo from the top (ie above canopy)
Definition: SnowpackInterfaceWorker.h:45
sphericity
Definition: SnowpackInterfaceWorker.h:47
~SnowpackInterfaceWorker()
Definition: SnowpackInterfaceWorker.cc:212
mask showing the glaciated pixels
Definition: SnowpackInterfaceWorker.h:55
grain Coordination number
Definition: SnowpackInterfaceWorker.h:50
Parameters
Definition: SnowpackInterfaceWorker.h:28
static const std::string & getParameterName(const size_t &parindex)
Definition: SnowpackInterfaceWorker.cc:69
double & getGridPoint(const SnGrids::Parameters ¶m, const size_t &ii, const size_t &jj)
Retrieve one point (ii,jj) from the specified grid.
Definition: SnowpackInterfaceWorker.cc:305
void getOutputSNO(std::vector< SnowStation * > &snow_station) const
method that returns SnowCover files for specific date.
Definition: SnowpackInterfaceWorker.cc:265
Temperature ground surface.
Definition: SnowpackInterfaceWorker.h:39
Incoming short wave radiation.
Definition: SnowpackInterfaceWorker.h:32
static bool skipThisCell(const double &landuse_val, const double &dem_val)
check if a cell should be simulated or skipped
Definition: SnowpackInterfaceWorker.cc:631
bond radius
Definition: SnowpackInterfaceWorker.h:48
Height of snow.
Definition: SnowpackInterfaceWorker.h:36
Air temperature.
Definition: SnowpackInterfaceWorker.h:29
Incoming short wave, diffuse.
Definition: SnowpackInterfaceWorker.h:33
Definition: SnowpackInterfaceWorker.h:25
The mass loss or gain of the top element due to snow (ice) sublimating.
Definition: SnowpackInterfaceWorker.h:53
mask showing the exposed glaciated pixels (ie not snow covered)
Definition: SnowpackInterfaceWorker.h:56
grain radius
Definition: SnowpackInterfaceWorker.h:49
SnowpackInterfaceWorker(const mio::Config &io_cfg, const mio::DEMObject &dem_in, const mio::Grid2DObject &landuse_in, const std::vector< std::pair< size_t, size_t > > &pts_in, const std::vector< SnowStation * > &snow_stations, const size_t offset_in)
Constructs and initialise Snowpack Interface Worker. Create one worker and init values for slice whic...
Definition: SnowpackInterfaceWorker.cc:165
static int round_landuse(const double &landuse_dbl)
optimised way to round landuse
Definition: SnowpackInterfaceWorker.cc:621
Water equivalent of precipitations, either solid or liquid.
Definition: SnowpackInterfaceWorker.h:37
static const size_t nrOfParameters
holds the number of meteo parameters stored in MeteoData
Definition: SnowpackInterfaceWorker.h:60
Precipitation phase, between 0 (fully solid) and 1 (fully liquid)
Definition: SnowpackInterfaceWorker.h:38
void setUseDrift(const bool useDrift_in)
Definition: SnowpackInterfaceWorker.h:87
runoff at the bottom of the snow/soil column
Definition: SnowpackInterfaceWorker.h:52
Wind velocity.
Definition: SnowpackInterfaceWorker.h:31
Temperature within the soil, at a given depth.
Definition: SnowpackInterfaceWorker.h:42
Definition: SnowpackInterfaceWorker.h:57
Temperature soil surface.
Definition: SnowpackInterfaceWorker.h:41