DataCenter.h
Go to the documentation of this file.
1/*!
2 * \file DataCenter.h
3 * \brief Data center for running SEIMS
4 * including configuration, input data, output data, etc.
5 * All interaction with database should be implemented here.
6 *
7 * Changelog:
8 * - 1. 2018-03-01 - lj - Refactor the constructor and move SetData from ModuleFactory class.
9 * - 2. 2018-09-19 - lj - Separate load data from SetData. Compatible with optional parameters.
10 * - 3. 2021-04-06 - lj - Add fdir_method_ to handle different flow direction algorithms.
11 * - 4. 2022-08-20 - lj - Change float to FLTPT.
12 *
13 * \author Liangjun Zhu
14 */
15#ifndef SEIMS_DATA_CENTER_H
16#define SEIMS_DATA_CENTER_H
17
18#include "db_mongoc.h"
19
20#include "seims.h"
21#include "ModuleFactory.h"
22#include "invoke.h"
23#include "InputStation.h"
24#include "SettingsInput.h"
25#include "SettingsOutput.h"
26#include "clsReach.h"
27#include "clsSubbasin.h"
28#include "Scenario.h"
30
31/*!
32 * \ingroup data
33 * \class DataCenter
34 * \brief Base class of Data center for SEIMS
35 * \version 1.3
36 */
38public:
39 /*!
40 * \brief Constructor
41 * \param[in] input_args Input arguments of SEIMS
42 * \param[in] factory SEIMS modules factory
43 * \param[in] subbasin_id Subbasin ID, 0 is the default for entire watershed
44 */
45 DataCenter(InputArgs* input_args, ModuleFactory* factory, int subbasin_id = 0);
46
47 //! Destructor
49
50 /**** virtual functions dependent on database IO *****/
51
52 /*!
53 * \brief Make sure all the required data are presented
54 */
55 virtual bool CheckModelPreparedData() = 0;
56 /*!
57 * \brief Read climate site data
58 */
59 virtual void ReadClimateSiteList() = 0;
60 /*!
61 * \brief Read initial and calibrated parameters
62 * \todo Should initial parameters in DB separate integer or floating point number?
63 */
64 virtual bool ReadParametersInDB() = 0;
65 /*!
66 * \brief Get subbasin number and outlet ID
67 */
68 virtual int ReadIntParameterInDB(const char* param_name) = 0;
69 /*!
70 * \brief Output calibrated parameters to txt file
71 */
73 /*!
74 * \brief Read raster data, both 1D and 2D, and insert to m_rsMap
75 * \param[in] remote_filename Raster file name.
76 * \param[in] flt_rst Float raster data
77 */
78 virtual bool ReadRasterData(const string& remote_filename, FloatRaster*& flt_rst) = 0;
79 /*!
80 * \brief Read raster data, both 1D and 2D, and insert to m_rsMap
81 * \param[in] remote_filename Raster file name.
82 * \param[in] int_rst Integer raster data
83 */
84 virtual bool ReadRasterData(const string& remote_filename, IntRaster*& int_rst) = 0;
85 /*!
86 * \brief Read interpolated weight data and insert to m_weightDataMap
87 * \param[in] remote_filename Data file name
88 * \param[out] num Data length
89 * \param[out] stations Number of stations
90 * \param[out] data returned data
91 */
92 virtual void ReadItpWeightData(const string& remote_filename, int& num, int& stations, FLTPT**& data) = 0;
93 /*!
94 * \brief Read 1D array data
95 * \param[in] remote_filename Data file name
96 * \param[out] num Data length
97 * \param[out] data returned data
98 */
99 virtual void Read1DArrayData(const string& remote_filename, int& num, FLTPT*& data) = 0;
100 /*!
101 * \brief Read 1D integer array data
102 * \param[in] remote_filename Data file name
103 * \param[out] num Data length
104 * \param[out] data returned integer data
105 */
106 virtual void Read1DArrayData(const string& remote_filename, int& num, int*& data) = 0;
107 /*!
108 * \brief Read 2D array data and insert to array2d_map_
109 *
110 * The matrix format is as follows:\n
111 * 5 (Row number) \n
112 * RowIdx 0 1 2 3 4 (ColIdx) \n
113 * 0 1 9. \n
114 * 1 2 8. 1. \n
115 * 2 2 5. 2. \n
116 * 3 1 2. \n
117 * 4 4 2. 5. 1. 8. \n
118 *
119 * i.e., the first element in each row is the valid number of the current row.
120 *
121 * \param[in] remote_filename data file name
122 * \param[out] rows first dimension of the 2D Array, i.e., Rows
123 * \param[out] cols second dimension of the 2D Array, i.e., Cols. If each col are different, set cols to 1.
124 * \param[out] data returned data
125 */
126 virtual void Read2DArrayData(const string& remote_filename, int& rows, int& cols, FLTPT**& data) = 0;
127 // Read 2D integer array data and insert to array2d_int_map_
128 virtual void Read2DArrayData(const string& remote_filename, int& rows, int& cols, int**& data) = 0;
129 /*!
130 * \brief Read IUH data and insert to m_2DArrayMap
131 * \param[in] remote_filename data file name
132 * \param[out] n valid cell number
133 * \param[out] data returned data
134 */
135 virtual void ReadIuhData(const string& remote_filename, int& n, FLTPT**& data) = 0;
136 /*!
137 * \brief Make lapse 2D array data and insert to m_2DArrayMap
138 * \param[in] remote_filename data file name
139 * \param[out] rows first dimension of the 2D Array, i.e., Rows
140 * \param[out] cols second dimension of the 2D Array, i.e., Cols
141 * \param[out] data returned data
142 */
143 virtual void SetLapseData(const string& remote_filename, int& rows, int& cols, FLTPT**& data);
144 /*!
145 * \brief Set Raster data for Scenario data
146 * \return True if set successfully, otherwise false.
147 */
148 virtual bool SetRasterForScenario() = 0;
149
150public:
151 /**** Load or update data ****/
152 /*!
153 * \brief Check out whether the adjustment is needed.
154 * \param[in] para_name Parameter name which may match one of the parameters in `init_params_`.
155 */
156 bool CheckAdjustment(const string& para_name);
157
158 bool CheckAdjustmentInt(const string& para_name);
159
160 /*!
161 * \brief Read and adjust (if necessary) 1D/2D raster data from Database.
162 * \param[in] para_name Parameter name, e.g., Slope
163 * \param[in] remote_filename Actual file/data name stored in Database, e.g., 0_SLOPE
164 * \param[in] is_optional Optional parameters won't raise exception when loaded failed
165 */
166 void LoadAdjustRasterData(const string& para_name, const string& remote_filename,
167 bool is_optional = false);
168
169 /*!
170 * \brief Read and adjust (if necessary) 1D/2D integer raster data from Database.
171 * \param[in] para_name Parameter name, e.g., Landuse
172 * \param[in] remote_filename Actual file/data name stored in Database, e.g., 0_LANDUSE
173 * \param[in] is_optional Optional parameters won't raise exception when loaded failed
174 */
175 void LoadAdjustIntRasterData(const string& para_name, const string& remote_filename,
176 bool is_optional = false);
177
178 /*!
179 * \brief Read and adjust (if necessary) 1D array data from Database.
180 * Currently, there may no parameters are allowed to be adjusted.
181 * \param[in] para_name Parameter name
182 * \param[in] remote_filename Actual file/data name stored in Database
183 * \param[in] is_optional Optional parameters won't raise exception when loaded failed
184 */
185 void LoadAdjust1DArrayData(const string& para_name, const string& remote_filename,
186 bool is_optional = false);
187
188 void LoadAdjustInt1DArrayData(const string& para_name, const string& remote_filename,
189 bool is_optional = false);
190
191 /*!
192 * \brief Read and adjust (if necessary) 2D array data from Database.
193 * Currently, there may no parameters are allowed to be adjusted.
194 * \param[in] para_name Parameter name
195 * \param[in] remote_filename Actual file/data name stored in Database
196 */
197 void LoadAdjust2DArrayData(const string& para_name, const string& remote_filename);
198
199 void LoadAdjustInt2DArrayData(const string& para_name, const string& remote_filename);
200
201 //! Load data for each module, return time span
202 double LoadParametersForModules(vector<SimulationModule *>& modules);
203
204 //! Set data for modules, include all datatype
205 void SetData(SEIMSModuleSetting* setting, ParamInfo<FLTPT>* param,
206 SimulationModule* p_module);
207
208 //! Set integer data for modules, include all datatype
209 void SetData(SEIMSModuleSetting* setting, ParamInfo<int>* param,
210 SimulationModule* p_module);
211
212 //! Set single Value
214
215 //! Set single integer Value
216 void SetValue(ParamInfo<int>* param, SimulationModule* p_module);
217
218 //! Set 1D Data
219 void Set1DData(const string& para_name, const string& remote_filename,
220 SimulationModule* p_module, bool is_optional = false);
221
222 void Set1DDataInt(const string& para_name, const string& remote_filename,
223 SimulationModule* p_module, bool is_optional = false);
224
225 //! Set 2D Data
226 void Set2DData(const string& para_name, const string& remote_filename,
227 SimulationModule* p_module, bool is_optional = false);
228
229 void Set2DDataInt(const string& para_name, const string& remote_filename,
230 SimulationModule* p_module, bool is_optional = false);
231
232 //! Set raster data
233 void SetRaster(const string& para_name, const string& remote_filename,
234 SimulationModule* p_module, bool is_optional = false);
235
236 void SetRasterInt(const string& para_name, const string& remote_filename,
237 SimulationModule* p_module, bool is_optional = false);
238
239 //! Set BMPs Scenario data
240 void SetScenario(SimulationModule* p_module, bool is_optional = false);
241
242 //! Set Reaches information
244
245 //! Set Subbasins information
247
248 //void SetReachDepthData(SimulationModule* p_module);
249
250 //! Update inputs, such climate data.
251 void UpdateInput(vector<SimulationModule *>& modules, time_t t);
252
253 /*!
254 * \brief Update model parameters (value, 1D raster, and 2D raster, etc.) by Scenario, e.g., areal BMPs.
255 *
256 * changelog:
257 * - 1. Added by Huiran GAO, Feb. 2017
258 * - 2. Redesigned by Liangjun Zhu, 08/16/17
259 * - 3. Add time parameter by Shen Shen, Feb. 2021
260 *
261 * \sa BMPArealStructFactory
262 * \sa BMPArealStruct
263 */
265
266 bool UpdateScenarioParametersDynamic(int subbsn_id, time_t t);
267
268 /**** Accessors: Set and Get *****/
269
270 string GetModelName() const { return model_name_; }
271 string GetProjectPath() const { return model_path_; }
272 string GetFileInFullPath() const { return file_in_file_; }
273 string GetFileOutFullPath() const { return file_out_file_; }
274 string GetFileCfgFullPath() const { return file_cfg_file_; }
275 LayeringMethod GetLayeringMethod() const { return lyr_method_; }
276 FlowDirMethod GetFlowDirectionMethod() const { return fdir_method_; }
277 int GetSubbasinID() const { return subbasin_id_; }
278 int GetScenarioID() const { return scenario_id_; }
279 int GetCalibrationID() const { return calibration_id_; }
280 int GetThreadNumber() const { return thread_num_; }
281 bool UseScenario() const { return use_scenario_; }
282 string GetOutputScenePath() const { return output_path_; }
283 string GetModelMode() const { return model_mode_; }
284 int GetSubbasinsCount() const { return n_subbasins_; }
285 int GetOutletID() const { return outlet_id_; }
286 SettingsInput* GetSettingInput() { return input_; }
287 SettingsOutput* GetSettingOutput() { return output_; }
288 InputStation* GetClimateStation() { return clim_station_; }
289 clsSubbasins* GetSubbasinData() { return subbasins_; }
290 clsReaches* GetReachesData() { return reaches_; }
291 Scenario* GetScenarioData() { return use_scenario_ ? scenario_ : nullptr; }
292 IntRaster* GetMaskData() { return mask_raster_; }
293 map<string, FloatRaster *>& GetRasterDataMap() { return rs_map_; }
294 map<string, ParamInfo<FLTPT> *>& GetInitParameters() { return init_params_; }
295 map<string, FLTPT*>& Get1DArrayMap() { return array1d_map_; }
296 map<string, int>& Get1DArrayLenMap() { return array1d_len_map_; }
297 map<string, FLTPT**>& Get2DArrayMap() { return array2d_map_; }
298 map<string, int>& Get2DArrayRowsMap() { return array2d_rows_map_; }
299 map<string, int>& Get2DArrayColsMap() { return array2d_cols_map_; }
300 /*!
301 * \brief Get file.in configuration
302 */
303 virtual bool GetFileInStringVector();
304 /*!
305 * \brief Get file.out configuration
306 */
307 virtual bool GetFileOutVector() = 0;
308 /*!
309 * \brief Check date of output settings
310 */
311 void UpdateOutputDate(time_t start_time, time_t end_time);
312
313protected:
314 string model_name_; ///< Model name, e.g., model_dianbu30m_longterm
315 const string model_path_; ///< Model path
316 string file_in_file_; ///< file.in full path
317 string file_out_file_; ///< file.out full path
318 string file_cfg_file_; ///< config.fig full path
319 const LayeringMethod lyr_method_; ///< Layering method
320 const FlowDirMethod fdir_method_; ///< Flow direction method
321 const int subbasin_id_; ///< Subbasin ID
322 const int scenario_id_; ///< Scenario ID
323 const int calibration_id_; ///< Calibration ID
324 const int mpi_rank_; ///< Rank ID for MPI, starts from 0 to mpi_size_ - 1
325 const int mpi_size_; ///< Rank size for MPI
326 const int thread_num_; ///< Thread number for OpenMP
327 bool use_scenario_; ///< Model Scenario
328 string output_path_; ///< Output path (with / in the end) according to m_outputScene
329 vector<string> file_in_strs_; ///< file.in configuration
330 vector<OrgOutItem> origin_out_items_; ///< file.out configuration
331 string model_mode_; ///< Storm or Longterm model
332 int n_subbasins_; ///< Number of subbasins
333 int outlet_id_; ///< Outlet subbasin ID
334 ModuleFactory* factory_; ///< Module factory
335 SettingsInput* input_; ///< The basic input settings
336 SettingsOutput* output_; ///< The user-defined outputs, Q, SED, etc
337 InputStation* clim_station_; ///< data of input HydroClimate stations
338 Scenario* scenario_; ///< BMPs Scenario data
339 clsReaches* reaches_; ///< Reaches information
340 clsSubbasins* subbasins_; ///< Subbasins information
341 IntRaster* mask_raster_; ///< Mask data
342 map<string, FloatRaster *> rs_map_; ///< Map of spatial data, both 1D and 2D
343 map<string, IntRaster*> rs_int_map_; ///< Map of spatial data with integer, both 1D and 2D
344 FloatRaster* ch_depth_; /// reach depth data,every cell has a depth
345 map<string, ParamInfo<FLTPT>*> init_params_; ///< Store parameters from Database (PARAMETERS collection)
346 map<string, ParamInfo<int>*> init_params_int_; ///< Store integer parameters from Database (PARAMETERS collection)
347 map<string, FLTPT*> array1d_map_; ///< 1D array data map
348 map<string, int> array1d_len_map_; ///< 1D array data length map
349 map<string, FLTPT**> array2d_map_; ///< 2D array data map
350 map<string, int> array2d_rows_map_; ///< Row number of 2D array data map
351 map<string, int> array2d_cols_map_; ///< Col number of 2D array data map
352 ///< CAUTION that nCols may not same for all rows
353 map<string, int*> array1d_int_map_; ///< 1D integer array data map
354 map<string, int> array1d_int_len_map_; ///< 1D integer array data length map
355 map<string, int**> array2d_int_map_; ///< 2D integer array data map, e.g. FLOWIN_INDEX, FLOWOUT_INDEX, ROUTING_LAYERS
356 map<string, int> array2d_int_rows_map_; ///< Row number of 2D array data map
357 map<string, int> array2d_int_cols_map_; ///< Col number of 2D array data map
358 ///< CAUTION that nCols may not same for all rows
359};
360
361#endif /* SEIMS_DATA_CENTER_H */
HydroClimate site information.
Constructor of ModuleFactory from config file.
Scenario class in BMP database.
Setting Inputs for SEIMS.
Setting Outputs for SEIMS.
Main class of scenario in BMP database.
Definition: Scenario.h:47
Base type of all interfaces.
Definition: basic.h:407
Methods for clsITPWeightData class.
Class to store reach related parameters from REACHES table.
Class for managing subbasin data.
Simple wrappers of the API of MongoDB C driver mongo-c-driver, see MongoDB C Driver for more informat...
string model_mode_
Storm or Longterm model.
Definition: DataCenter.h:331
virtual bool ReadRasterData(const string &remote_filename, IntRaster *&int_rst)=0
Read raster data, both 1D and 2D, and insert to m_rsMap.
bool CheckAdjustment(const string &para_name)
Check out whether the adjustment is needed.
const string model_path_
Model path.
Definition: DataCenter.h:315
map< string, FLTPT * > array1d_map_
1D array data map
Definition: DataCenter.h:347
string file_cfg_file_
config.fig full path
Definition: DataCenter.h:318
void SetRaster(const string &para_name, const string &remote_filename, SimulationModule *p_module, bool is_optional=false)
Set raster data.
string model_name_
Model name, e.g., model_dianbu30m_longterm.
Definition: DataCenter.h:314
map< string, IntRaster * > rs_int_map_
Map of spatial data with integer, both 1D and 2D.
Definition: DataCenter.h:343
string output_path_
Output path (with / in the end) according to m_outputScene.
Definition: DataCenter.h:328
const int mpi_size_
Rank size for MPI.
Definition: DataCenter.h:325
virtual void Read2DArrayData(const string &remote_filename, int &rows, int &cols, FLTPT **&data)=0
Read 2D array data and insert to array2d_map_.
void SetScenario(SimulationModule *p_module, bool is_optional=false)
Set BMPs Scenario data.
const int thread_num_
Thread number for OpenMP.
Definition: DataCenter.h:326
vector< OrgOutItem > origin_out_items_
file.out configuration
Definition: DataCenter.h:330
const int scenario_id_
Scenario ID.
Definition: DataCenter.h:322
map< string, int > array2d_int_rows_map_
Row number of 2D array data map.
Definition: DataCenter.h:356
map< string, int > array1d_len_map_
1D array data length map
Definition: DataCenter.h:348
clsReaches * reaches_
Reaches information.
Definition: DataCenter.h:339
map< string, int > array2d_cols_map_
Col number of 2D array data map CAUTION that nCols may not same for all rows.
Definition: DataCenter.h:351
~DataCenter()
Destructor.
void DumpCaliParametersInDB()
Output calibrated parameters to txt file.
void Set2DData(const string &para_name, const string &remote_filename, SimulationModule *p_module, bool is_optional=false)
Set 2D Data.
map< string, int > array2d_rows_map_
Row number of 2D array data map.
Definition: DataCenter.h:350
vector< string > file_in_strs_
file.in configuration
Definition: DataCenter.h:329
virtual bool ReadRasterData(const string &remote_filename, FloatRaster *&flt_rst)=0
Read raster data, both 1D and 2D, and insert to m_rsMap.
int n_subbasins_
Number of subbasins.
Definition: DataCenter.h:332
virtual void Read1DArrayData(const string &remote_filename, int &num, int *&data)=0
Read 1D integer array data.
map< string, FLTPT ** > array2d_map_
2D array data map
Definition: DataCenter.h:349
virtual void Read1DArrayData(const string &remote_filename, int &num, FLTPT *&data)=0
Read 1D array data.
SettingsInput * input_
The basic input settings.
Definition: DataCenter.h:335
const int subbasin_id_
Subbasin ID.
Definition: DataCenter.h:321
void LoadAdjust2DArrayData(const string &para_name, const string &remote_filename)
Read and adjust (if necessary) 2D array data from Database.
const FlowDirMethod fdir_method_
Flow direction method.
Definition: DataCenter.h:320
map< string, FloatRaster * > rs_map_
Map of spatial data, both 1D and 2D.
Definition: DataCenter.h:342
void SetValue(ParamInfo< int > *param, SimulationModule *p_module)
Set single integer Value.
void SetData(SEIMSModuleSetting *setting, ParamInfo< FLTPT > *param, SimulationModule *p_module)
Set data for modules, include all datatype.
map< string, ParamInfo< int > * > init_params_int_
Store integer parameters from Database (PARAMETERS collection)
Definition: DataCenter.h:346
virtual bool CheckModelPreparedData()=0
Make sure all the required data are presented.
virtual void SetLapseData(const string &remote_filename, int &rows, int &cols, FLTPT **&data)
Make lapse 2D array data and insert to m_2DArrayMap.
map< string, int * > array1d_int_map_
1D integer array data map
Definition: DataCenter.h:353
int outlet_id_
Outlet subbasin ID.
Definition: DataCenter.h:333
void LoadAdjustIntRasterData(const string &para_name, const string &remote_filename, bool is_optional=false)
Read and adjust (if necessary) 1D/2D integer raster data from Database.
void UpdateOutputDate(time_t start_time, time_t end_time)
Check date of output settings.
virtual bool SetRasterForScenario()=0
Set Raster data for Scenario data.
virtual void ReadItpWeightData(const string &remote_filename, int &num, int &stations, FLTPT **&data)=0
Read interpolated weight data and insert to m_weightDataMap.
void UpdateInput(vector< SimulationModule * > &modules, time_t t)
Update inputs, such climate data.
map< string, ParamInfo< FLTPT > * > init_params_
reach depth data,every cell has a depth
Definition: DataCenter.h:345
DataCenter(InputArgs *input_args, ModuleFactory *factory, int subbasin_id=0)
Constructor.
virtual void ReadIuhData(const string &remote_filename, int &n, FLTPT **&data)=0
Read IUH data and insert to m_2DArrayMap.
void SetReaches(SimulationModule *p_module)
Set Reaches information.
const LayeringMethod lyr_method_
Layering method.
Definition: DataCenter.h:319
map< string, int > array1d_int_len_map_
1D integer array data length map
Definition: DataCenter.h:354
double LoadParametersForModules(vector< SimulationModule * > &modules)
Load data for each module, return time span.
virtual void ReadClimateSiteList()=0
Read climate site data.
void Set1DData(const string &para_name, const string &remote_filename, SimulationModule *p_module, bool is_optional=false)
Set 1D Data.
void SetSubbasins(SimulationModule *p_module)
Set Subbasins information.
ModuleFactory * factory_
Module factory.
Definition: DataCenter.h:334
void SetValue(ParamInfo< FLTPT > *param, SimulationModule *p_module)
Set single Value.
IntRaster * mask_raster_
Mask data.
Definition: DataCenter.h:341
const int mpi_rank_
Rank ID for MPI, starts from 0 to mpi_size_ - 1.
Definition: DataCenter.h:324
void UpdateScenarioParametersStable(int subbsn_id)
Update model parameters (value, 1D raster, and 2D raster, etc.) by Scenario, e.g.,...
void SetData(SEIMSModuleSetting *setting, ParamInfo< int > *param, SimulationModule *p_module)
Set integer data for modules, include all datatype.
map< string, int ** > array2d_int_map_
2D integer array data map, e.g. FLOWIN_INDEX, FLOWOUT_INDEX, ROUTING_LAYERS
Definition: DataCenter.h:355
virtual bool ReadParametersInDB()=0
Read initial and calibrated parameters.
clsSubbasins * subbasins_
Subbasins information.
Definition: DataCenter.h:340
void LoadAdjustRasterData(const string &para_name, const string &remote_filename, bool is_optional=false)
Read and adjust (if necessary) 1D/2D raster data from Database.
string file_in_file_
file.in full path
Definition: DataCenter.h:316
virtual bool GetFileOutVector()=0
Get file.out configuration.
void LoadAdjust1DArrayData(const string &para_name, const string &remote_filename, bool is_optional=false)
Read and adjust (if necessary) 1D array data from Database.
bool use_scenario_
Model Scenario.
Definition: DataCenter.h:327
SettingsOutput * output_
The user-defined outputs, Q, SED, etc.
Definition: DataCenter.h:336
virtual int ReadIntParameterInDB(const char *param_name)=0
Get subbasin number and outlet ID.
map< string, int > array2d_int_cols_map_
Col number of 2D array data map CAUTION that nCols may not same for all rows.
Definition: DataCenter.h:357
const int calibration_id_
Calibration ID.
Definition: DataCenter.h:323
string file_out_file_
file.out full path
Definition: DataCenter.h:317
InputStation * clim_station_
data of input HydroClimate stations
Definition: DataCenter.h:337
Scenario * scenario_
BMPs Scenario data.
Definition: DataCenter.h:338
virtual bool GetFileInStringVector()
Get file.in configuration.
Base class of Data center for SEIMS.
Definition: DataCenter.h:37
HydroClimate sites information.
Definition: InputStation.h:28
Class to store and manage parameter information from the parameter database.
Definition: ParamInfo.h:37
Input settings for SEIMS.
Definition: SettingsInput.h:24
Setting outputs.
Definition: SettingsOutput.h:48
Read and store all reaches information as input parameters.
Definition: clsReach.h:88
Manager all Subbasin related parameters and methods.
Definition: clsSubbasin.h:214
Parse the input arguments of SEIMS.
Definition: invoke.h:29
Linking user-defined modules to create the modeling workflow.
Definition: ModuleFactory.h:40
Base module for all simulation modules in SEIMS.
Definition: SimulationModule.h:46
LayeringMethod
Grid layering method for routing and parallel computing.
Definition: seims.h:25
FlowDirMethod
Flow direction method for flow routing.
Definition: seims.h:36
Parse the input arguments as a class which can be easily extended.
The SEIMS related definitions and utilities header.
#define FloatRaster
Float-typed raster with int-typed mask, specific for legacy SEIMS code.
Definition: seims.h:133
#define IntRaster
Integer-typed raster.
Definition: seims.h:126