hydrobricks
Loading...
Searching...
No Matches
Brick.h
1#ifndef HYDROBRICKS_BRICK_H
2#define HYDROBRICKS_BRICK_H
3
4#include "Flux.h"
5#include "Includes.h"
6#include "Process.h"
7#include "SettingsModel.h"
8#include "WaterContainer.h"
9
10class Brick : public wxObject {
11 public:
12 explicit Brick();
13
14 ~Brick() override;
15
22 static Brick* Factory(const BrickSettings& brickSettings);
23
31 static bool HasParameter(const BrickSettings& brickSettings, const string& name);
32
40 static float* GetParameterValuePointer(const BrickSettings& brickSettings, const string& name);
41
47 virtual void SetParameters(const BrickSettings& brickSettings);
48
54 virtual void AttachFluxIn(Flux* flux);
55
61 void AddProcess(Process* process) {
62 wxASSERT(process);
63 m_processes.push_back(process);
64 }
65
69 virtual void Reset();
70
74 virtual void SaveAsInitialState();
75
81 virtual bool IsOk();
82
88 bool NeedsSolver() const {
89 return m_needsSolver;
90 }
91
97 virtual bool CanHaveAreaFraction() {
98 return false;
99 }
100
106 virtual bool IsSnowpack() {
107 return false;
108 }
109
115 virtual bool IsGlacier() {
116 return false;
117 }
118
124 virtual bool IsLandCover() {
125 return false;
126 }
127
133 virtual bool IsNull() {
134 return false;
135 }
136
140 virtual void Finalize();
141
148 virtual void SetInitialState(double value, const string& type = "water");
149
156 virtual double GetContent(const string& type = "water");
157
164 virtual void UpdateContent(double value, const string& type = "water");
165
169 virtual void UpdateContentFromInputs();
170
176 virtual void ApplyConstraints(double timeStep);
177
184
191 Process* GetProcess(int index);
192
198 vector<Process*>& GetProcesses() {
199 return m_processes;
200 }
201
207 string GetName() {
208 return m_name;
209 }
210
216 void SetName(const string& name) {
217 m_name = name;
218 }
219
225 virtual vecDoublePt GetDynamicContentChanges();
226
233
240
246 double* GetBaseValuePointer(const string& name);
247
253 virtual double* GetValuePointer(const string& name);
254
255 protected:
256 string m_name;
257 bool m_needsSolver;
258 WaterContainer* m_water;
259 vector<Process*> m_processes;
260};
261
262#endif // HYDROBRICKS_BRICK_H
Definition Brick.h:10
virtual void UpdateContent(double value, const string &type="water")
Definition Brick.cpp:128
string GetName()
Definition Brick.h:207
virtual bool IsOk()
Definition Brick.cpp:52
Process * GetProcess(int index)
Definition Brick.cpp:101
virtual double GetContent(const string &type="water")
Definition Brick.cpp:120
virtual void SetInitialState(double value, const string &type="water")
Definition Brick.cpp:112
WaterContainer * GetWaterContainer()
Definition Brick.cpp:144
int GetProcessesConnectionsNb()
Definition Brick.cpp:168
virtual void UpdateContentFromInputs()
Definition Brick.cpp:136
virtual void ApplyConstraints(double timeStep)
Definition Brick.cpp:140
virtual bool IsLandCover()
Definition Brick.h:124
virtual void Finalize()
Definition Brick.cpp:108
virtual bool IsSnowpack()
Definition Brick.h:106
virtual void Reset()
Definition Brick.cpp:41
double * GetBaseValuePointer(const string &name)
Definition Brick.cpp:178
bool NeedsSolver() const
Definition Brick.h:88
virtual void SetParameters(const BrickSettings &brickSettings)
Definition Brick.cpp:65
static bool HasParameter(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:79
virtual bool IsGlacier()
Definition Brick.h:115
void AddProcess(Process *process)
Definition Brick.h:61
virtual void AttachFluxIn(Flux *flux)
Definition Brick.cpp:71
virtual void SaveAsInitialState()
Definition Brick.cpp:48
virtual bool IsNull()
Definition Brick.h:133
virtual double * GetValuePointer(const string &name)
Definition Brick.cpp:186
static Brick * Factory(const BrickSettings &brickSettings)
Definition Brick.cpp:21
vecDoublePt GetStateVariableChangesFromProcesses()
Definition Brick.cpp:152
virtual bool CanHaveAreaFraction()
Definition Brick.h:97
vector< Process * > & GetProcesses()
Definition Brick.h:198
void SetName(const string &name)
Definition Brick.h:216
static float * GetParameterValuePointer(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:89
virtual vecDoublePt GetDynamicContentChanges()
Definition Brick.cpp:148
Definition Flux.h:8
Definition Process.h:13
Definition WaterContainer.h:9
Definition SettingsModel.h:45