hydrobricks
Loading...
Searching...
No Matches
SettingsBasin.h
1#ifndef HYDROBRICKS_SETTING_BASIN_H
2#define HYDROBRICKS_SETTING_BASIN_H
3
4#include "Includes.h"
5#include "Parameter.h"
6
8 string name;
9 string type;
10 double fraction;
11};
12
14 string name;
15 string type;
16 double fraction;
17};
18
20 string name;
21 double value;
22 string unit;
23};
24
26 string name;
27 string value;
28};
29
31 int id;
32 double area;
33 double elevation;
34 vector<LandCoverSettings> landCovers;
35 vector<SurfaceComponentSettings> surfaceComponents;
36 vector<HydroUnitPropertyDouble> propertiesDouble;
37 vector<HydroUnitPropertyString> propertiesString;
38};
39
41 string type;
42 int giverHydroUnitId;
43 int receiverHydroUnitId;
44 double fraction;
45};
46
48 public:
49 explicit SettingsBasin();
50
51 virtual ~SettingsBasin();
52
60 void AddHydroUnit(int id, double area, double elevation = -9999);
61
69 void AddLandCover(const string& name, const string& type = "", double fraction = 1.0);
70
78 void AddHydroUnitPropertyDouble(const string& name, double value, const string& unit = "");
79
86 void AddHydroUnitPropertyString(const string& name, const string& value);
87
97 void AddLateralConnection(int giverHydroUnitId, int receiverHydroUnitId, double fraction, const string& type = "");
98
102 void Clear();
103
109 void SelectUnit(int index);
110
117 bool Parse(const string& path);
118
126 assert(_hydroUnits.size() > index);
127 return _hydroUnits[index];
128 }
129
137 assert(_selectedHydroUnit);
138 assert(_selectedHydroUnit->landCovers.size() > index);
139 return _selectedHydroUnit->landCovers[index];
140 }
141
149 assert(_selectedHydroUnit);
150 assert(_selectedHydroUnit->surfaceComponents.size() > index);
151 return _selectedHydroUnit->surfaceComponents[index];
152 }
153
159 vector<LateralConnectionSettings> GetLateralConnections() const {
160 return _lateralConnections;
161 }
162
168 int GetHydroUnitCount() const {
169 return static_cast<int>(_hydroUnits.size());
170 }
171
177 int GetLandCoverCount() const {
178 assert(_selectedHydroUnit);
179 return static_cast<int>(_selectedHydroUnit->landCovers.size());
180 }
181
188 assert(_selectedHydroUnit);
189 return static_cast<int>(_selectedHydroUnit->surfaceComponents.size());
190 }
191
198 return static_cast<int>(_lateralConnections.size());
199 }
200
206 [[nodiscard]] double GetTotalArea() const;
207
208 private:
209 vector<HydroUnitSettings> _hydroUnits;
210 vector<LateralConnectionSettings> _lateralConnections;
211 HydroUnitSettings* _selectedHydroUnit; // non-owning reference
212};
213
214#endif // HYDROBRICKS_SETTING_BASIN_H
Definition SettingsBasin.h:47
void AddHydroUnitPropertyString(const string &name, const string &value)
Definition SettingsBasin.cpp:40
void SelectUnit(int index)
Definition SettingsBasin.cpp:65
SurfaceComponentSettings GetSurfaceComponentSettings(int index) const
Definition SettingsBasin.h:148
void Clear()
Definition SettingsBasin.cpp:60
LandCoverSettings GetLandCoverSettings(int index) const
Definition SettingsBasin.h:136
void AddLateralConnection(int giverHydroUnitId, int receiverHydroUnitId, double fraction, const string &type="")
Definition SettingsBasin.cpp:49
double GetTotalArea() const
Definition SettingsBasin.cpp:155
int GetSurfaceComponentCount() const
Definition SettingsBasin.h:187
void AddHydroUnitPropertyDouble(const string &name, double value, const string &unit="")
Definition SettingsBasin.cpp:30
void AddLandCover(const string &name, const string &type="", double fraction=1.0)
Definition SettingsBasin.cpp:20
void AddHydroUnit(int id, double area, double elevation=-9999)
Definition SettingsBasin.cpp:11
HydroUnitSettings GetHydroUnitSettings(int index) const
Definition SettingsBasin.h:125
int GetLateralConnectionCount() const
Definition SettingsBasin.h:197
int GetHydroUnitCount() const
Definition SettingsBasin.h:168
vector< LateralConnectionSettings > GetLateralConnections() const
Definition SettingsBasin.h:159
int GetLandCoverCount() const
Definition SettingsBasin.h:177
bool Parse(const string &path)
Definition SettingsBasin.cpp:70
Definition SettingsBasin.h:19
Definition SettingsBasin.h:25
Definition SettingsBasin.h:30
Definition SettingsBasin.h:7
Definition SettingsBasin.h:40
Definition SettingsBasin.h:13