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
16 bool Initialize(SettingsBasin& basinSettings);
17
18 void BuildBasin(SettingsBasin& basinSettings);
19
20 bool AssignFractions(SettingsBasin& basinSettings);
21
22 void Reset();
23
24 void SaveAsInitialState();
25
26 bool IsOk();
27
28 void AddBrick(Brick* brick);
29
30 void AddSplitter(Splitter* splitter);
31
32 void AddHydroUnit(HydroUnit* unit);
33
34 int GetHydroUnitsNb();
35
36 HydroUnit* GetHydroUnit(int index);
37
38 HydroUnit* GetHydroUnitById(int id);
39
40 vecInt GetHydroUnitIds();
41
42 vecDouble GetHydroUnitAreas();
43
44 int GetBricksCount();
45
46 int GetSplittersCount();
47
48 Brick* GetBrick(int index);
49
50 bool HasBrick(const string& name);
51
52 Brick* GetBrick(const string& name);
53
54 Splitter* GetSplitter(int index);
55
56 bool HasSplitter(const string& name);
57
58 Splitter* GetSplitter(const string& name);
59
60 bool HasIncomingFlow();
61
62 void AddInputConnector(Connector* connector);
63
64 void AddOutputConnector(Connector* connector);
65
66 void AttachOutletFlux(Flux* pFlux);
67
68 double* GetValuePointer(const string& name);
69
70 bool ComputeOutletDischarge();
71
72 double GetArea() {
73 return m_area;
74 }
75
76 protected:
77 double m_area; // m2
78 double m_outletTotal;
79 bool m_needsCleanup;
80 vector<Brick*> m_bricks;
81 vector<Splitter*> m_splitters;
82 vector<HydroUnit*> m_hydroUnits;
83 vector<Connector*> m_inConnectors;
84 vector<Connector*> m_outConnectors;
85 vector<Flux*> m_outletFluxes;
86
87 private:
88};
89
90#endif
Definition Brick.h:10
Definition Connector.h:8
Definition Flux.h:8
Definition HydroUnit.h:13
Definition SettingsBasin.h:39
Definition Splitter.h:11
Definition SubBasin.h:10