1#ifndef HYDROBRICKS_BRICK_H
2#define HYDROBRICKS_BRICK_H
9#include "SettingsModel.h"
10#include "WaterContainer.h"
15enum class BrickCategory {
28 virtual ~Brick() =
default;
44 static std::unique_ptr<Brick>
Factory(BrickType type);
93 _processes.push_back(std::move(process));
111 [[nodiscard]]
virtual bool IsValid(
bool checkProcesses =
true)
const;
162 [[nodiscard]]
virtual bool IsNull()
const {
172 return !_processes.empty();
181 return _hydroUnit !=
nullptr;
203 [[nodiscard]]
virtual double GetContent(ContentType type)
const;
238 return _processes.size();
254 [[nodiscard]]
const string&
GetName() const noexcept {
264 _name = string(name);
284 _hydroUnit = hydroUnit;
325 BrickCategory _category;
326 std::unique_ptr<WaterContainer> _water;
327 std::vector<std::unique_ptr<Process>> _processes;
static bool HasParameter(const BrickSettings &brickSettings, std::string_view name)
Definition Brick.cpp:107
static std::unique_ptr< Brick > Factory(const BrickSettings &brickSettings)
Definition Brick.cpp:21
WaterContainer * GetWaterContainer() const
Definition Brick.cpp:171
size_t GetProcessCount() const noexcept
Definition Brick.h:237
void SetHydroUnit(HydroUnit *hydroUnit)
Definition Brick.h:282
double * GetBaseValuePointer(std::string_view name)
Definition Brick.cpp:205
virtual void UpdateContentFromInputs()
Definition Brick.cpp:163
const string & GetName() const noexcept
Definition Brick.h:254
bool HasProcesses() const
Definition Brick.h:171
virtual void ApplyConstraints(double timeStep)
Definition Brick.cpp:167
Process * GetProcess(size_t index) const
Definition Brick.cpp:123
virtual void Finalize()
Definition Brick.cpp:130
BrickCategory GetCategory() const
Definition Brick.h:135
HydroUnit * GetHydroUnit() const
Definition Brick.h:272
virtual void Reset()
Definition Brick.cpp:50
virtual void UpdateContent(double value, ContentType type)
Definition Brick.cpp:153
bool HasHydroUnit() const
Definition Brick.h:180
virtual bool CanHaveAreaFraction() const
Definition Brick.h:144
virtual void Validate() const
Definition Brick.cpp:76
bool NeedsSolver() const
Definition Brick.h:126
virtual void SetParameters(const BrickSettings &brickSettings)
Definition Brick.cpp:83
virtual bool IsNull() const
Definition Brick.h:162
void SetName(std::string_view name)
Definition Brick.h:263
virtual void AttachFluxIn(Flux *flux)
Definition Brick.cpp:89
virtual void SetInitialState(double value, ContentType type)
Definition Brick.cpp:134
virtual void SaveAsInitialState()
Definition Brick.cpp:57
virtual double * GetValuePointer(std::string_view name)
Definition Brick.cpp:213
static const float * GetParameterValuePointer(const BrickSettings &brickSettings, std::string_view name)
Definition Brick.cpp:112
int GetProcessConnectionCount() const
Definition Brick.cpp:195
virtual bool IsLandCover() const
Definition Brick.h:153
vecDoublePt GetStateVariableChangesFromProcesses()
Definition Brick.cpp:179
virtual bool IsValid(bool checkProcesses=true) const
Definition Brick.cpp:61
virtual vecDoublePt GetDynamicContentChanges()
Definition Brick.cpp:175
void AddProcess(std::unique_ptr< Process > process)
Definition Brick.h:91
virtual double GetContent(ContentType type) const
Definition Brick.cpp:144
Definition GenericLandCover.h:7
Definition HydroUnit.h:18
Definition Vegetation.h:7
Definition WaterContainer.h:9
Definition SettingsModel.h:47