|
Alpine3D
Spatially distributed alpine surface processes model
|
#include <SnowpackInterfaceWorker.h>
Public Member Functions | |
| 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 std::vector< std::pair< size_t, size_t > > &snow_stations_coord, const std::vector< std::string > &grids_not_computed_in_worker) | |
| Constructs and initialise Snowpack Interface Worker. Create one worker and init values for slice which the worker need to simulate it slice. | |
| ~SnowpackInterfaceWorker () | |
| void | setUseDrift (const bool useDrift_in) |
| void | setUseEBalance (const bool useEBalance_in) |
| void | getOutputSNO (std::vector< SnowStation * > &snow_station) const |
| method that returns SnowCover files for specific date. | |
| void | getOutputSpecialPoints (std::vector< SnowStation * > &ptr_snow_pixel, std::vector< CurrentMeteo * > &ptr_meteo_pixel, std::vector< SurfaceFluxes * > &ptr_surface_flux) |
| void | clearSpecialPointsData () |
| mio::Grid2DObject | getGrid (const SnGrids::Parameters ¶m) const |
| Method that the Master can search the neded data (in grids) from Worker (Pull from client) | |
| void | runModel (const mio::Date &julian, const mio::Grid2DObject &psum, const mio::Grid2DObject &psum_ph, const mio::Grid2DObject &psum_tech, const mio::Grid2DObject &rh, const mio::Grid2DObject &ta, const mio::Grid2DObject &vw, const mio::Grid2DObject &dw, 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. | |
| void | grooming (const mio::Date ¤t_date, const mio::Grid2DObject &grooming_map) |
| void | getLateralFlow (std::vector< SnowStation * > &snow_station) |
| method called by SnowpackInterface to retrieve all snow_pixels, to read the lateral flow variable | |
| void | setLateralFlow (const std::vector< SnowStation * > &snow_station) |
| method called by SnowpackInterface to send back the source/sink term for treating lateral flow | |
Static Public Member Functions | |
| static int | round_landuse (const double &landuse_dbl) |
| optimised way to round landuse | |
| static bool | skipThisCell (const double &landuse_val, const double &dem_val) |
| check if a cell should be simulated or skipped | |
| static bool | is_special (const std::vector< std::pair< size_t, size_t > > &pts_in, const size_t &ix, const size_t &iy) |
| static void | uniqueOutputGrids (std::vector< std::string > &output_grids) |
| Make sure all requested grids only appear once. | |
Public Attributes | |
| std::vector< std::pair< size_t, size_t > > | SnowStationsCoord |
| SnowpackInterfaceWorker::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 std::vector< std::pair< size_t, size_t > > & | snow_stations_coord, | ||
| const std::vector< std::string > & | grids_not_computed_in_worker | ||
| ) |
Constructs and initialise Snowpack Interface Worker. Create one worker and init values for slice which the worker need to simulate it slice.
| [in] | io_cfg | configuration to pass to Snowpack |
| [in] | dem_in | gives the demographic Data. Also tetermines size and position of the slice |
| [in] | landuse_in | gives the landuse Data. Also tetermines size and position of the landuse for slice |
| [in] | pts_in | gives the spezial points. For this points more output is done then for the others. Calcualtion is the same. |
| [in] | snow_stations | gives a vector of pointers to the SnowStation objects relevant for this thread |
| [in] | snow_stations_coord | provide the (ii,jj) coordinates of each snow station. This is necessary because the slices might be irregular |
| [in] | grids_not_computed_in_worker | vector of grids that are required but will be computed outside the workers |
| SnowpackInterfaceWorker::~SnowpackInterfaceWorker | ( | ) |
| void SnowpackInterfaceWorker::clearSpecialPointsData | ( | ) |
| mio::Grid2DObject SnowpackInterfaceWorker::getGrid | ( | const SnGrids::Parameters & | param | ) | const |
Method that the Master can search the neded data (in grids) from Worker (Pull from client)
| param | says which grid param the Master wants to have |
| void SnowpackInterfaceWorker::getLateralFlow | ( | std::vector< SnowStation * > & | ptr_snow_pixel | ) |
method called by SnowpackInterface to retrieve all snow_pixels, to read the lateral flow variable
| ptr_snow_pixel | to vector of SnowStations, where the variable SlopeParFlux contains the lateral flow |
| void SnowpackInterfaceWorker::getOutputSNO | ( | std::vector< SnowStation * > & | snow_station | ) | const |
method that returns SnowCover files for specific date.
| snow_station | vector that will be filled with the SnowStation data for each pixels |
| void SnowpackInterfaceWorker::getOutputSpecialPoints | ( | std::vector< SnowStation * > & | ptr_snow_pixel, |
| std::vector< CurrentMeteo * > & | ptr_meteo_pixel, | ||
| std::vector< SurfaceFluxes * > & | ptr_surface_flux | ||
| ) |
| void SnowpackInterfaceWorker::grooming | ( | const mio::Date & | current_date, |
| const mio::Grid2DObject & | grooming_map | ||
| ) |
|
static |
|
static |
optimised way to round landuse
| landuse_dbl | is the landuse to round |
| void SnowpackInterfaceWorker::runModel | ( | const mio::Date & | date, |
| const mio::Grid2DObject & | psum, | ||
| const mio::Grid2DObject & | psum_ph, | ||
| const mio::Grid2DObject & | psum_tech, | ||
| const mio::Grid2DObject & | rh, | ||
| const mio::Grid2DObject & | ta, | ||
| const mio::Grid2DObject & | vw, | ||
| const mio::Grid2DObject & | dw, | ||
| 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.
| date | current simulation time step |
| psum | precipitation grid (kg m-2) |
| psum_ph | precipitation phase grid (between 0 and 1) |
| psum_tech | technical precipitation grid (kg m-2) |
| rh | relative humidity grid (% or 1) |
| ta | air temperature grid (K) |
| vw | wind velocity grid (m s-1) |
| dw | wind direction grid (degrees north) |
| mns | map of the Precipitation (mm/h) HACK get this map only if per pull from Master if Drift is used !! |
| shortwave | incoming shortwave radiation grid (W m-2) |
| diffuse | diffuse radiation from the sky grid (W m-2) |
| longwave | incoming longwave grid (W m-2) |
| solarElevation | solar elevation (in dec) |
| void SnowpackInterfaceWorker::setLateralFlow | ( | const std::vector< SnowStation * > & | ptr_snow_pixel | ) |
method called by SnowpackInterface to send back the source/sink term for treating lateral flow
| ptr_snow_pixel | to vector of SnowStations, in which the lwc_source variable is set to contain the lateral flow. |
|
inline |
|
inline |
|
static |
check if a cell should be simulated or skipped
| landuse_val | land use parameter for this pixel |
| dem_val | dem altitude for this pixel |
|
static |
Make sure all requested grids only appear once.
| output_grids | vector of requeste grids to sort and filter |
| std::vector<std::pair<size_t,size_t> > SnowpackInterfaceWorker::SnowStationsCoord |