hydrobricks
Loading...
Searching...
No Matches
ModelHydro.h
1#ifndef HYDROBRICKS_MODEL_HYDRO_H
2#define HYDROBRICKS_MODEL_HYDRO_H
3
4#include "ActionsManager.h"
5#include "Includes.h"
6#include "Logger.h"
7#include "Processor.h"
8#include "SettingsModel.h"
9#include "SubBasin.h"
10#include "TimeSeries.h"
11
12class ModelHydro : public wxObject {
13 public:
14 ModelHydro(SubBasin* subBasin = nullptr);
15
16 ~ModelHydro() override;
17
25 bool InitializeWithBasin(SettingsModel& modelSettings, SettingsBasin& basinSettings);
26
34 bool Initialize(SettingsModel& modelSettings, SettingsBasin& basinSettings);
35
41 void UpdateParameters(SettingsModel& modelSettings);
42
48 bool IsOk();
49
55 bool ForcingLoaded();
56
62 bool Run();
63
67 void Reset();
68
72 void SaveAsInitialState();
73
80 bool DumpOutputs(const string& path);
81
88
95
101 double GetTotalET();
102
109
116
117 /*
118 * Get the total change in glacier storage.
119 *
120 * @return total change in glacier storage.
121 */
122 double GetTotalGlacierStorageChanges();
123
130 bool AddTimeSeries(TimeSeries* timeSeries);
131
138 bool AddAction(Action* action);
139
145 int GetActionsNb();
146
153
163 bool CreateTimeSeries(const string& varName, const axd& time, const axi& ids, const axxd& data);
164
168 void ClearTimeSeries();
169
176
183 return m_subBasin;
184 }
185
191 void SetSubBasin(SubBasin* subBasin) {
192 m_subBasin = subBasin;
193 }
194
201 return &m_timer;
202 }
203
210 return &m_processor;
211 }
212
219 return &m_logger;
220 }
221
228 return &m_actionsManager;
229 }
230
231 protected:
232 Processor m_processor;
233 SubBasin* m_subBasin;
234 TimeMachine m_timer;
235 Logger m_logger;
236 ActionsManager m_actionsManager;
237 ParametersUpdater m_parametersUpdater;
238 vector<TimeSeries*> m_timeSeries;
239
240 private:
241 void BuildModelStructure(SettingsModel& modelSettings);
242
243 void CreateSubBasinComponents(SettingsModel& modelSettings);
244
245 void CreateHydroUnitsComponents(SettingsModel& modelSettings);
246
247 void CreateHydroUnitBrick(SettingsModel& modelSettings, HydroUnit* unit, int iBrick);
248
249 void UpdateSubBasinParameters(SettingsModel& modelSettings);
250
251 void UpdateHydroUnitsParameters(SettingsModel& modelSettings);
252
253 void LinkSurfaceComponentsParents(SettingsModel& modelSettings, HydroUnit* unit);
254
255 void LinkSubBasinProcessesTargetBricks(SettingsModel& modelSettings);
256
257 void LinkHydroUnitProcessesTargetBricks(SettingsModel& modelSettings, HydroUnit* unit);
258
259 void BuildForcingConnections(BrickSettings& brickSettings, HydroUnit* unit, Brick* brick);
260
261 void BuildForcingConnections(ProcessSettings& processSettings, HydroUnit* unit, Process* process);
262
263 void BuildForcingConnections(SplitterSettings& splitterSettings, HydroUnit* unit, Splitter* splitter);
264
265 void BuildSubBasinBricksFluxes(SettingsModel& modelSettings);
266
267 void BuildHydroUnitBricksFluxes(SettingsModel& modelSettings, HydroUnit* unit);
268
269 void BuildSubBasinSplittersFluxes(SettingsModel& modelSettings);
270
271 void BuildHydroUnitSplittersFluxes(SettingsModel& modelSettings, HydroUnit* unit);
272
273 void ConnectLoggerToValues(SettingsModel& modelSettings);
274
275 bool InitializeTimeSeries();
276
277 bool UpdateForcing();
278};
279
280#endif // HYDROBRICKS_MODEL_HYDRO_H
Definition Action.h:7
Definition ActionsManager.h:10
Definition Brick.h:10
Definition HydroUnit.h:13
Definition Logger.h:8
Definition ModelHydro.h:12
int GetActionsNb()
Definition ModelHydro.cpp:891
bool IsOk()
Definition ModelHydro.cpp:786
TimeMachine * GetTimeMachine()
Definition ModelHydro.h:200
Logger * GetLogger()
Definition ModelHydro.h:218
axd GetOutletDischarge()
Definition ModelHydro.cpp:840
bool AttachTimeSeriesToHydroUnits()
Definition ModelHydro.cpp:920
bool InitializeWithBasin(SettingsModel &modelSettings, SettingsBasin &basinSettings)
Definition ModelHydro.cpp:23
double GetTotalET()
Definition ModelHydro.cpp:848
void SaveAsInitialState()
Definition ModelHydro.cpp:832
Processor * GetProcessor()
Definition ModelHydro.h:209
bool ForcingLoaded()
Definition ModelHydro.cpp:792
bool Run()
Definition ModelHydro.cpp:796
bool DumpOutputs(const string &path)
Definition ModelHydro.cpp:836
void UpdateParameters(SettingsModel &modelSettings)
Definition ModelHydro.cpp:70
bool AddAction(Action *action)
Definition ModelHydro.cpp:887
ActionsManager * GetActionsManager()
Definition ModelHydro.h:227
int GetSporadicActionItemsNb()
Definition ModelHydro.cpp:895
SubBasin * GetSubBasin()
Definition ModelHydro.h:182
bool AddTimeSeries(TimeSeries *timeSeries)
Definition ModelHydro.cpp:864
bool Initialize(SettingsModel &modelSettings, SettingsBasin &basinSettings)
Definition ModelHydro.cpp:36
double GetTotalOutletDischarge()
Definition ModelHydro.cpp:844
double GetTotalWaterStorageChanges()
Definition ModelHydro.cpp:852
void SetSubBasin(SubBasin *subBasin)
Definition ModelHydro.h:191
bool CreateTimeSeries(const string &varName, const axd &time, const axi &ids, const axxd &data)
Definition ModelHydro.cpp:899
double GetTotalSnowStorageChanges()
Definition ModelHydro.cpp:856
void ClearTimeSeries()
Definition ModelHydro.cpp:913
void Reset()
Definition ModelHydro.cpp:825
Definition ParametersUpdater.h:7
Definition Process.h:13
Definition Processor.h:10
Definition SettingsBasin.h:39
Definition SettingsModel.h:66
Definition Splitter.h:11
Definition SubBasin.h:10
Definition TimeMachine.h:9
Definition TimeSeries.h:8
Definition SettingsModel.h:45
Definition SettingsModel.h:27
Definition SettingsModel.h:36