hydrobricks
Loading...
Searching...
No Matches
HydroUnit.h
1#ifndef HYDROBRICKS_HYDRO_UNIT_H
2#define HYDROBRICKS_HYDRO_UNIT_H
3
4#include "Brick.h"
5#include "Forcing.h"
6#include "HydroUnitLateralConnection.h"
7#include "HydroUnitProperty.h"
8#include "Includes.h"
9#include "LandCover.h"
10#include "Splitter.h"
11
13
14class HydroUnit : public wxObject {
15 public:
16 enum Types {
17 Distributed,
18 SemiDistributed,
19 Lumped,
20 Undefined
21 };
22
23 HydroUnit(double area = UNDEFINED, Types type = Undefined);
24
25 ~HydroUnit() override;
26
30 void Reset();
31
35 void SaveAsInitialState();
36
42 void SetProperties(HydroUnitSettings& unitSettings);
43
49 void AddProperty(HydroUnitProperty* property);
50
58 double GetPropertyDouble(const string& name, const string& unit = "");
59
66 string GetPropertyString(const string& name);
67
73 void AddBrick(Brick* brick);
74
80 void AddSplitter(Splitter* splitter);
81
88 bool HasForcing(VariableType type);
89
95 void AddForcing(Forcing* forcing);
96
103 Forcing* GetForcing(VariableType type);
104
113 void AddLateralConnection(HydroUnit* receiver, double fraction, const string& type = "");
114
120 int GetBricksCount();
121
127 int GetSplittersCount();
128
135 Brick* GetBrick(int index);
136
143 bool HasBrick(const string& name);
144
151 Brick* GetBrick(const string& name);
152
158 vector<Brick*> GetSnowpacks() const {
159 vector<Brick*> snowBricks;
160 for (auto& brick : _bricks) {
161 if (brick->IsSnowpack()) {
162 snowBricks.push_back(brick);
163 }
164 }
165 return snowBricks;
166 }
167
174 LandCover* GetLandCover(const string& name);
175
182 Splitter* GetSplitter(int index);
183
190 bool HasSplitter(const string& name);
191
198 Splitter* GetSplitter(const string& name);
199
205 bool IsOk();
206
214 bool ChangeLandCoverAreaFraction(const string& name, double fraction);
215
222
228 Types GetType() {
229 return _type;
230 }
231
237 void SetId(int id) {
238 _id = id;
239 }
240
246 double GetArea() const {
247 return _area;
248 }
249
255 int GetId() const {
256 return _id;
257 }
258
264 vector<HydroUnitLateralConnection*> GetLateralConnections() const {
265 return _lateralConnections;
266 }
267
268 protected:
269 Types _type;
270 int _id;
271 double _area; // m2
272 vector<HydroUnitProperty*> _properties;
273 vector<HydroUnitLateralConnection*> _lateralConnections;
274 vector<Brick*> _bricks;
275 vector<LandCover*> _landCoverBricks;
276 vector<Splitter*> _splitters;
277 vector<Forcing*> _forcing;
278};
279
280#endif
Definition Brick.h:10
virtual bool IsSnowpack()
Definition Brick.h:106
Definition Forcing.h:7
Definition HydroUnitProperty.h:6
Definition HydroUnit.h:14
void AddProperty(HydroUnitProperty *property)
Definition HydroUnit.cpp:43
void AddSplitter(Splitter *splitter)
Definition HydroUnit.cpp:80
void SetId(int id)
Definition HydroUnit.h:237
bool HasBrick(const string &name)
Definition HydroUnit.cpp:134
bool IsOk()
Definition HydroUnit.cpp:189
int GetSplittersCount()
Definition HydroUnit.cpp:123
Splitter * GetSplitter(int index)
Definition HydroUnit.cpp:163
vector< Brick * > GetSnowpacks() const
Definition HydroUnit.h:158
void SetProperties(HydroUnitSettings &unitSettings)
Definition HydroUnit.cpp:31
void SaveAsInitialState()
Definition HydroUnit.cpp:25
bool HasSplitter(const string &name)
Definition HydroUnit.cpp:170
int GetBricksCount()
Definition HydroUnit.cpp:119
bool ChangeLandCoverAreaFraction(const string &name, double fraction)
Definition HydroUnit.cpp:216
vector< HydroUnitLateralConnection * > GetLateralConnections() const
Definition HydroUnit.h:264
void AddForcing(Forcing *forcing)
Definition HydroUnit.cpp:95
double GetArea() const
Definition HydroUnit.h:246
double GetPropertyDouble(const string &name, const string &unit="")
Definition HydroUnit.cpp:48
LandCover * GetLandCover(const string &name)
Definition HydroUnit.cpp:153
Forcing * GetForcing(VariableType type)
Definition HydroUnit.cpp:100
bool FixLandCoverFractionsTotal()
Definition HydroUnit.cpp:231
void AddBrick(Brick *brick)
Definition HydroUnit.cpp:68
Brick * GetBrick(int index)
Definition HydroUnit.cpp:127
string GetPropertyString(const string &name)
Definition HydroUnit.cpp:58
void AddLateralConnection(HydroUnit *receiver, double fraction, const string &type="")
Definition HydroUnit.cpp:110
int GetId() const
Definition HydroUnit.h:255
void Reset()
Definition HydroUnit.cpp:19
Types GetType()
Definition HydroUnit.h:228
bool HasForcing(VariableType type)
Definition HydroUnit.cpp:85
Definition LandCover.h:10
Definition Splitter.h:11
Definition SettingsBasin.h:30