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
56 void AddProcess(Process* process) {
57 wxASSERT(process);
58 m_processes.push_back(process);
59 }
60
61 virtual void Reset();
62
63 virtual void SaveAsInitialState();
64
70 virtual bool IsOk();
71
77 bool NeedsSolver() const {
78 return m_needsSolver;
79 }
80
81 virtual bool CanHaveAreaFraction() {
82 return false;
83 }
84
85 virtual bool IsSnowpack() {
86 return false;
87 }
88
89 virtual bool IsGlacier() {
90 return false;
91 }
92
93 virtual bool IsLandCover() {
94 return false;
95 }
96
97 virtual bool IsNull() {
98 return false;
99 }
100
101 virtual void Finalize();
102
103 virtual void UpdateContentFromInputs();
104
105 virtual void ApplyConstraints(double timeStep);
106
107 WaterContainer* GetWaterContainer();
108
109 Process* GetProcess(int index);
110
111 vector<Process*>& GetProcesses() {
112 return m_processes;
113 }
114
115 string GetName() {
116 return m_name;
117 }
118
119 void SetName(const string& name) {
120 m_name = name;
121 }
122
128 virtual vecDoublePt GetDynamicContentChanges();
129
130 vecDoublePt GetStateVariableChangesFromProcesses();
131
132 int GetProcessesConnectionsNb();
133
134 double* GetBaseValuePointer(const string& name);
135
136 virtual double* GetValuePointer(const string& name);
137
138 protected:
139 string m_name;
140 bool m_needsSolver;
141 WaterContainer* m_container;
142 vector<Process*> m_processes;
143
144 private:
145};
146
147#endif // HYDROBRICKS_BRICK_H
Definition Brick.h:10
virtual bool IsOk()
Definition Brick.cpp:52
bool NeedsSolver() const
Definition Brick.h:77
virtual void SetParameters(const BrickSettings &brickSettings)
Definition Brick.cpp:65
static bool HasParameter(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:76
virtual void AttachFluxIn(Flux *flux)
Definition Brick.cpp:71
static Brick * Factory(const BrickSettings &brickSettings)
Definition Brick.cpp:21
static float * GetParameterValuePointer(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:86
virtual vecDoublePt GetDynamicContentChanges()
Definition Brick.cpp:121
Definition Flux.h:8
Definition Process.h:13
Definition WaterContainer.h:9
Definition SettingsModel.h:45