1#ifndef HYDROBRICKS_WATER_CONTAINER_H
2#define HYDROBRICKS_WATER_CONTAINER_H
20 virtual bool IsValid(
bool checkProcesses =
true)
const;
91 return _capacity !=
nullptr;
110 if (_infiniteStorage) {
111 throw ModelConfigError(_(
"Trying to set the maximum capacity of an infinite storage."));
120 _infiniteStorage =
true;
129 if (_infiniteStorage) {
133 return _content + _contentChangeDynamic + _contentChangeStatic;
142 if (_infiniteStorage) {
146 return _content + _contentChangeDynamic;
155 if (_infiniteStorage) {
177 _initialState = value;
186 if (_infiniteStorage) {
187 throw ModelConfigError(_(
"Trying to set the content of an infinite storage."));
207 return GreaterThan(content, 0, EPSILON_F) && GreaterThan(content, 0, PRECISION);
216 return _overflow !=
nullptr;
225 _overflow = overflow;
235 _inputs.push_back(flux);
265 return !_inputs.empty();
274 return _infiniteStorage;
292 return _parent !=
nullptr;
301 return !NearlyZero(_initialState, EPSILON_F);
306 double _contentChangeDynamic;
307 double _contentChangeStatic;
308 double _initialState;
309 const float* _capacity;
310 bool _infiniteStorage;
313 vector<Flux*> _inputs;
Exception for model configuration or conception errors.
Definition Exceptions.h:96
Definition WaterContainer.h:9
void SetAsInfiniteStorage()
Definition WaterContainer.h:119
vecDoublePt GetDynamicContentChanges()
Definition WaterContainer.cpp:223
void UpdateContent(double value)
Definition WaterContainer.h:185
bool IsEmpty() const
Definition WaterContainer.h:282
void Reset()
Definition WaterContainer.cpp:200
double GetTargetFillingRatio() const
Definition WaterContainer.cpp:227
void AddAmountToStaticContentChange(double change)
Definition WaterContainer.cpp:49
double GetContentWithoutChanges() const
Definition WaterContainer.h:154
void SetMaximumCapacity(const float *value)
Definition WaterContainer.h:109
void SubtractAmountFromDynamicContentChange(double change)
Definition WaterContainer.cpp:39
void SetOutgoingRatesToZero()
Definition WaterContainer.cpp:169
double * GetContentPointer()
Definition WaterContainer.h:167
void AddAmountToDynamicContentChange(double change)
Definition WaterContainer.cpp:44
virtual bool IsValid(bool checkProcesses=true) const
Definition WaterContainer.cpp:16
bool HasMaximumCapacity() const
Definition WaterContainer.h:90
bool HasInitialState() const
Definition WaterContainer.h:300
bool HasParentBrick() const
Definition WaterContainer.h:291
bool HasOverflow() const
Definition WaterContainer.h:215
virtual void Validate() const
Definition WaterContainer.cpp:32
virtual double SumIncomingFluxes() const
Definition WaterContainer.cpp:210
void LinkOverflow(Process *overflow)
Definition WaterContainer.h:224
bool HasIncomingFluxes() const
Definition WaterContainer.h:264
void Finalize()
Definition WaterContainer.cpp:188
virtual void ApplyConstraints(double timeStep)
Definition WaterContainer.cpp:54
void AttachFluxIn(Flux *flux)
Definition WaterContainer.h:233
double GetContentWithChanges() const
Definition WaterContainer.h:128
bool IsNotEmpty() const
Definition WaterContainer.h:205
double GetContentWithDynamicChanges() const
Definition WaterContainer.h:141
double GetMaximumCapacity() const
Definition WaterContainer.h:99
void SaveAsInitialState()
Definition WaterContainer.cpp:206
void SetInitialState(double value)
Definition WaterContainer.h:176
Brick * GetParentBrick() const
Definition WaterContainer.h:255
virtual bool ContentAccessible() const
Definition WaterContainer.cpp:219
bool IsInfiniteStorage() const
Definition WaterContainer.h:273