1#ifndef HYDROBRICKS_BRICK_H
2#define HYDROBRICKS_BRICK_H
9#include "SettingsModel.h"
10#include "WaterContainer.h"
15enum class BrickCategory {
28 ~Brick()
override =
default;
85 _processes.push_back(std::move(process));
103 [[nodiscard]]
virtual bool IsValid(
bool checkProcesses =
true)
const;
154 [[nodiscard]]
virtual bool IsNull()
const {
164 return !_processes.empty();
173 return _hydroUnit !=
nullptr;
195 virtual double GetContent(ContentType type)
const;
230 return _processes.size();
265 wxASSERT(_hydroUnit);
276 _hydroUnit = hydroUnit;
317 BrickCategory _category;
318 std::unique_ptr<WaterContainer> _water;
319 std::vector<std::unique_ptr<Process>> _processes;
WaterContainer * GetWaterContainer() const
Definition Brick.cpp:166
void SetHydroUnit(HydroUnit *hydroUnit)
Definition Brick.h:274
virtual void UpdateContentFromInputs()
Definition Brick.cpp:158
static const float * GetParameterValuePointer(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:104
bool HasProcesses() const
Definition Brick.h:163
virtual void ApplyConstraints(double timeStep)
Definition Brick.cpp:162
Process * GetProcess(size_t index) const
Definition Brick.cpp:115
virtual void Finalize()
Definition Brick.cpp:122
BrickCategory GetCategory() const
Definition Brick.h:127
HydroUnit * GetHydroUnit() const
Definition Brick.h:264
virtual void Reset()
Definition Brick.cpp:51
double * GetBaseValuePointer(const string &name)
Definition Brick.cpp:200
virtual void UpdateContent(double value, ContentType type)
Definition Brick.cpp:147
bool HasHydroUnit() const
Definition Brick.h:172
virtual bool CanHaveAreaFraction() const
Definition Brick.h:136
virtual void Validate() const
Definition Brick.cpp:77
bool NeedsSolver() const
Definition Brick.h:118
virtual void SetParameters(const BrickSettings &brickSettings)
Definition Brick.cpp:84
static bool HasParameter(const BrickSettings &brickSettings, const string &name)
Definition Brick.cpp:99
virtual bool IsNull() const
Definition Brick.h:154
virtual void AttachFluxIn(Flux *flux)
Definition Brick.cpp:90
virtual void SetInitialState(double value, ContentType type)
Definition Brick.cpp:126
virtual void SaveAsInitialState()
Definition Brick.cpp:58
const string & GetName() const
Definition Brick.h:246
int GetProcessConnectionCount() const
Definition Brick.cpp:190
virtual double * GetValuePointer(const string &name)
Definition Brick.cpp:208
virtual bool IsLandCover() const
Definition Brick.h:145
static Brick * Factory(const BrickSettings &brickSettings)
Definition Brick.cpp:21
vecDoublePt GetStateVariableChangesFromProcesses()
Definition Brick.cpp:174
virtual bool IsValid(bool checkProcesses=true) const
Definition Brick.cpp:62
void SetName(const string &name)
Definition Brick.h:255
virtual vecDoublePt GetDynamicContentChanges()
Definition Brick.cpp:170
void AddProcess(std::unique_ptr< Process > process)
Definition Brick.h:83
size_t GetProcessCount() const
Definition Brick.h:229
virtual double GetContent(ContentType type) const
Definition Brick.cpp:137
Definition GenericLandCover.h:7
Definition HydroUnit.h:18
Definition Vegetation.h:7
Definition WaterContainer.h:9
Definition SettingsModel.h:47