1#ifndef HYDROBRICKS_BRICK_H
2#define HYDROBRICKS_BRICK_H
9#include "SettingsModel.h"
10#include "WaterContainer.h"
15enum class BrickCategory {
26 virtual ~Brick() =
default;
42 static std::unique_ptr<Brick>
Factory(BrickType type);
91 _processes.push_back(std::move(process));
109 [[nodiscard]]
virtual bool IsValid(
bool checkProcesses =
true)
const;
135 _needsSolver = needsSolver;
170 [[nodiscard]]
virtual bool IsNull()
const {
180 return !_processes.empty();
189 return _hydroUnit !=
nullptr;
211 [[nodiscard]]
virtual double GetContent(ContentType type)
const;
246 return _processes.size();
262 [[nodiscard]]
const string&
GetName() const noexcept {
272 _name = string(name);
292 _hydroUnit = hydroUnit;
337 BrickCategory _category;
338 std::unique_ptr<WaterContainer> _water;
339 std::vector<std::unique_ptr<Process>> _processes;
static bool HasParameter(const BrickSettings &brickSettings, std::string_view name)
Definition Brick.cpp:104
static std::unique_ptr< Brick > Factory(const BrickSettings &brickSettings)
Definition Brick.cpp:20
WaterContainer * GetWaterContainer() const
Definition Brick.cpp:174
size_t GetProcessCount() const noexcept
Definition Brick.h:245
void SetHydroUnit(HydroUnit *hydroUnit)
Definition Brick.h:290
double * GetBaseValuePointer(std::string_view name)
Definition Brick.cpp:208
virtual void UpdateContentFromInputs()
Definition Brick.cpp:166
const string & GetName() const noexcept
Definition Brick.h:262
bool HasProcesses() const
Definition Brick.h:179
virtual void ApplyConstraints(double timeStep)
Definition Brick.cpp:170
Process * GetProcess(size_t index) const
Definition Brick.cpp:120
virtual void Finalize()
Definition Brick.cpp:127
BrickCategory GetCategory() const
Definition Brick.h:143
HydroUnit * GetHydroUnit() const
Definition Brick.h:280
virtual void Reset()
Definition Brick.cpp:47
virtual void UpdateContent(double value, ContentType type)
Definition Brick.cpp:156
bool HasHydroUnit() const
Definition Brick.h:188
virtual bool CanHaveAreaFraction() const
Definition Brick.h:152
virtual void Validate() const
Definition Brick.cpp:73
bool NeedsSolver() const
Definition Brick.h:124
virtual void SetParameters(const BrickSettings &brickSettings)
Definition Brick.cpp:80
virtual bool IsNull() const
Definition Brick.h:170
void SetName(std::string_view name)
Definition Brick.h:271
virtual void AttachFluxIn(Flux *flux)
Definition Brick.cpp:86
virtual void SetInitialState(double value, ContentType type)
Definition Brick.cpp:137
virtual void SaveAsInitialState()
Definition Brick.cpp:54
virtual double * GetValuePointer(std::string_view name)
Definition Brick.cpp:216
static const float * GetParameterValuePointer(const BrickSettings &brickSettings, std::string_view name)
Definition Brick.cpp:109
int GetProcessConnectionCount() const
Definition Brick.cpp:198
virtual bool IsLandCover() const
Definition Brick.h:161
vecDoublePt GetStateVariableChangesFromProcesses()
Definition Brick.cpp:182
void SetNeedsSolver(bool needsSolver)
Definition Brick.h:134
virtual bool IsValid(bool checkProcesses=true) const
Definition Brick.cpp:58
virtual vecDoublePt GetDynamicContentChanges()
Definition Brick.cpp:178
void AddProcess(std::unique_ptr< Process > process)
Definition Brick.h:89
virtual double GetContent(ContentType type) const
Definition Brick.cpp:147
Definition GenericLandCover.h:7
Definition HydroUnit.h:18
Definition WaterContainer.h:9
Definition SettingsModel.h:47