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
99
105 vecInt GetHydroUnitIds();
106
112 vecDouble GetHydroUnitAreas();
113
119 int GetBricksCount();
120
126 int GetSplittersCount();
127
134 Brick* GetBrick(int index);
135
142 bool HasBrick(const string& name);
143
150 Brick* GetBrick(const string& name);
151
158 Splitter* GetSplitter(int index);
159
166 bool HasSplitter(const string& name);
167
174 Splitter* GetSplitter(const string& name);
175
181 bool HasIncomingFlow();
182
188 void AddInputConnector(Connector* connector);
189
195 void AddOutputConnector(Connector* connector);
196
202 void AttachOutletFlux(Flux* pFlux);
203
210 double* GetValuePointer(const string& name);
211
218
224 double GetArea() {
225 return _area;
226 }
227
228 protected:
229 double _area; // m2
230 double _outletTotal;
231 bool _needsCleanup;
232 vector<Brick*> _bricks;
233 vector<Splitter*> _splitters;
234 vector<HydroUnit*> _hydroUnits;
235 vector<Connector*> _inConnectors;
236 vector<Connector*> _outConnectors;
237 vector<Flux*> _outletFluxes;
238};
239
240#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:224
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
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