18 #ifndef SNOWPACKINTERFACE_H
19 #define SNOWPACKINTERFACE_H
22 #include <meteoio/MeteoIO.h>
23 #include <snowpack/libsnowpack.h>
126 const mio::DEMObject& dem_in,
127 const mio::Grid2DObject& landuse_in,
const std::vector<mio::Coords>& vec_pts,
const mio::Date& startTime,
const std::string& grids_requirements,
const bool is_restart_in);
144 void assimilate(
const mio::Grid2DObject& daData,
const mio::Date& timestamp);
145 void setSnowMassChange(
const mio::Grid2DObject& new_mns,
const mio::Date& timestamp);
146 void setMeteo(
const mio::Grid2DObject& new_psum,
147 const mio::Grid2DObject& new_psum_ph,
148 const mio::Grid2DObject& new_vw,
149 const mio::Grid2DObject& new_rh,
150 const mio::Grid2DObject& new_ta,
151 const mio::Date& timestamp);
153 const mio::Array2D<double>& longwave,
154 const mio::Array2D<double>& diff,
155 const double& solarElevation,
156 const mio::Date& timestamp);
161 std::string getGridsRequirements()
const;
162 void readAndTweakConfig(
const mio::Config& io_cfg);
163 static void uniqueOutputGrids(std::vector<std::string>& output_grids);
164 bool do_grid_output(
const mio::Date &date)
const;
167 void readInitalSnowCover(std::vector<SnowStation*>& snow_stations);
168 void readSnowCover(
const std::string& GRID_sno,
const std::string& LUS_sno,
const std::string& sno_type,
169 const bool& is_special_point, SN_SNOWSOIL_DATA &sno, ZwischenData &zwischenData);
170 void writeSnowCover(
const mio::Date& date,
const std::vector<SnowStation*>& snow_station);
172 void write_SMET_header(
const mio::StationData& meta,
const double& landuse_code)
const;
173 void write_SMET(
const CurrentMeteo& met,
const mio::StationData& meta,
const SurfaceFluxes& surf)
const;
174 void writeOutputSpecialPoints(
const mio::Date& date,
const std::vector<SnowStation*>& snow_pixel,
const std::vector<CurrentMeteo*>& meteo_pixel,
175 const std::vector<SurfaceFluxes*>& surface_flux);
176 void write_special_points();
184 mio::Grid2DObject landuse;
187 mio::Grid2DObject mns, shortwave, longwave, diffuse;
188 mio::Grid2DObject psum, psum_ph, vw, rh, ta;
189 double solarElevation;
191 std::vector<std::string> output_grids;
192 std::vector<SnowpackInterfaceWorker*> workers;
193 std::vector<size_t> worker_startx;
194 std::vector<size_t> worker_deltax;
198 mio::Date nextStepTimestamp;
206 bool dataMeteo2D, dataDa, dataSnowDrift, dataRadiation;
215 mio::Grid2DObject maskGlacier;
217 bool glacier_katabatic_flow;
220 SnowpackConfig sn_cfg;
221 const mio::DEMObject dem;
222 bool is_restart, useCanopy;
224 std::string station_name;
226 double soil_temp_depth;
227 double grids_start, grids_days_between;
228 double ts_start, ts_days_between;
229 double prof_start, prof_days_between;
230 bool grids_write, ts_write, prof_write, snow_write, snow_poi_written;
231 std::string meteo_outpath;
233 std::vector< std::pair<size_t,size_t> > pts;
void setRunoff(Runoff &init_runoff)
Definition: SnowpackInterface.cc:474
void writeOutput(const mio::Date &julian)
Internal in Snowpack Interface Master used method to write standard results in output files...
Definition: SnowpackInterface.cc:336
void setSnowMassChange(const mio::Grid2DObject &new_mns, const mio::Date ×tamp)
Interface that SnowDrift can push the data to the SnowpackInterface.
Definition: SnowpackInterface.cc:528
void setMeteo(const mio::Grid2DObject &new_psum, const mio::Grid2DObject &new_psum_ph, const mio::Grid2DObject &new_vw, const mio::Grid2DObject &new_rh, const mio::Grid2DObject &new_ta, const mio::Date ×tamp)
get Meteo changes from AlpineControl or SnowDrift module
Definition: SnowpackInterface.cc:559
void setSnowDrift(SnowDriftA3D &drift)
Set reference to SnowDrift module, to comunicate with it.
Definition: SnowpackInterface.cc:429
~SnowpackInterface()
Destructor of SnowpackInterface Master. Handels special cases with POP-C++ and also free correctly ru...
Definition: SnowpackInterface.cc:310
void setRadiationComponents(const mio::Array2D< double > &shortw, const mio::Array2D< double > &longwave, const mio::Array2D< double > &diff, const double &solarElevation, const mio::Date ×tamp)
get values from Energy Balance
Definition: SnowpackInterface.cc:597
void setEnergyBalance(EnergyBalance &myeb)
Set reference to EnergyBalance module, to comunicate with it.
Definition: SnowpackInterface.cc:451
void setDataAssimilation(DataAssimilation &init_da)
Set reference to DataAssimilation module, to comunicate with it.
Definition: SnowpackInterface.cc:469
Definition: SnowDrift.h:71
Definition: SnowpackInterfaceWorker.h:75
SnowpackInterface & operator=(const SnowpackInterface &)
Assignement operator, required because of pointer member.
Definition: SnowpackInterface.cc:171
Definition: EnergyBalance.h:69
Definition: SnowpackInterface.h:121
void assimilate(const mio::Grid2DObject &daData, const mio::Date ×tamp)
Interface that DataAssimilation can push the data to the SnowpackInterface This is currently never us...
Definition: SnowpackInterface.cc:485
Parameters
Definition: SnowpackInterfaceWorker.h:28
double getTiming() const
get time who was used to exchange Data with Workers and run on each Pixel the Snowpack Model throught...
Definition: SnowpackInterface.cc:322
Definition: Glaciers.h:47
void writeOutputSNO(const mio::Date &julian)
commands worker to write .sno files. Is triggered by Alpine Control
Definition: SnowpackInterface.cc:383
void getGrid(const SnGrids::Parameters ¶m, mio::Grid2DObject &o_grid2D)
Request specific grid by parameter type.
Definition: SnowpackInterface.cc:621
SnowpackInterface(const mio::Config &io_cfg, const size_t &nbworkers, const mio::DEMObject &dem_in, const mio::Grid2DObject &landuse_in, const std::vector< mio::Coords > &vec_pts, const mio::Date &startTime, const std::string &grids_requirements, const bool is_restart_in)
Constructs and initialise Snowpack Interface Master. He creates the Worker and Distributes the Data f...
Definition: SnowpackInterface.cc:74
Definition: DataAssimilation.h:30