hydrobricks
Loading...
Searching...
No Matches
SubBasin.h
1#ifndef HYDROBRICKS_SUBBASIN_H
2#define HYDROBRICKS_SUBBASIN_H
3
4#include "Connector.h"
5#include "HydroUnit.h"
6#include "Includes.h"
7#include "SettingsBasin.h"
8#include "TimeMachine.h"
9
10class SubBasin : public wxObject {
11 public:
12 SubBasin();
13
14 ~SubBasin() override;
15
22 bool Initialize(SettingsBasin& basinSettings);
23
29 void BuildBasin(SettingsBasin& basinSettings);
30
37 bool AssignFractions(SettingsBasin& basinSettings);
38
42 void Reset();
43
47 void SaveAsInitialState();
48
54 bool IsOk();
55
61 void AddBrick(Brick* brick);
62
68 void AddSplitter(Splitter* splitter);
69
75 void AddHydroUnit(HydroUnit* unit);
76
82 int GetHydroUnitsNb();
83
90 HydroUnit* GetHydroUnit(int index);
91
97 vector<HydroUnit*> GetHydroUnits() {
98 return _hydroUnits;
99 }
100
108
114 vecInt GetHydroUnitIds();
115
121 vecDouble GetHydroUnitAreas();
122
128 int GetBricksCount();
129
135 int GetSplittersCount();
136
143 Brick* GetBrick(int index);
144
151 bool HasBrick(const string& name);
152
159 Brick* GetBrick(const string& name);
160
167 Splitter* GetSplitter(int index);
168
175 bool HasSplitter(const string& name);
176
183 Splitter* GetSplitter(const string& name);
184
190 bool HasIncomingFlow();
191
197 void AddInputConnector(Connector* connector);
198
204 void AddOutputConnector(Connector* connector);
205
211 void AttachOutletFlux(Flux* pFlux);
212
219 double* GetValuePointer(const string& name);
220
227
233 double GetArea() {
234 return _area;
235 }
236
237 protected:
238 double _area; // m2
239 double _outletTotal;
240 bool _needsCleanup;
241 vector<Brick*> _bricks;
242 vector<Splitter*> _splitters;
243 vector<HydroUnit*> _hydroUnits;
244 vector<Connector*> _inConnectors;
245 vector<Connector*> _outConnectors;
246 vector<Flux*> _outletFluxes;
247};
248
249#endif
Definition Brick.h:10
Definition Connector.h:8
Definition Flux.h:8
Definition HydroUnit.h:14
Definition SettingsBasin.h:47
Definition Splitter.h:11
Definition SubBasin.h:10
bool ComputeOutletDischarge()
Definition SubBasin.cpp:268
HydroUnit * GetHydroUnitById(int id)
Definition SubBasin.cpp:150
Brick * GetBrick(int index)
Definition SubBasin.cpp:188
int GetBricksCount()
Definition SubBasin.cpp:180
vecInt GetHydroUnitIds()
Definition SubBasin.cpp:160
void AddSplitter(Splitter *splitter)
Definition SubBasin.cpp:129
void SaveAsInitialState()
Definition SubBasin.cpp:97
double GetArea()
Definition SubBasin.h:233
bool HasSplitter(const string &name)
Definition SubBasin.cpp:221
void BuildBasin(SettingsBasin &basinSettings)
Definition SubBasin.cpp:30
void AddHydroUnit(HydroUnit *unit)
Definition SubBasin.cpp:134
HydroUnit * GetHydroUnit(int index)
Definition SubBasin.cpp:143
int GetSplittersCount()
Definition SubBasin.cpp:184
bool HasIncomingFlow()
Definition SubBasin.cpp:240
vector< HydroUnit * > GetHydroUnits()
Definition SubBasin.h:97
void Reset()
Definition SubBasin.cpp:85
bool IsOk()
Definition SubBasin.cpp:106
Splitter * GetSplitter(int index)
Definition SubBasin.cpp:214
bool AssignFractions(SettingsBasin &basinSettings)
Definition SubBasin.cpp:56
bool HasBrick(const string &name)
Definition SubBasin.cpp:195
void AddBrick(Brick *brick)
Definition SubBasin.cpp:124
bool Initialize(SettingsBasin &basinSettings)
Definition SubBasin.cpp:19
int GetHydroUnitsNb()
Definition SubBasin.cpp:139
void AttachOutletFlux(Flux *pFlux)
Definition SubBasin.cpp:254
void AddInputConnector(Connector *connector)
Definition SubBasin.cpp:244
void AddOutputConnector(Connector *connector)
Definition SubBasin.cpp:249
vecDouble GetHydroUnitAreas()
Definition SubBasin.cpp:170
double * GetValuePointer(const string &name)
Definition SubBasin.cpp:259