1#ifndef HYDROBRICKS_PROCESS_H
2#define HYDROBRICKS_PROCESS_H
9#include "SettingsModel.h"
49 [[nodiscard]]
virtual bool IsValid()
const = 0;
98 throw ShouldNotHappen(
"Process::AttachForcing - Should not be called (virtual)");
108 _outputs.push_back(std::move(flux));
117 return static_cast<int>(_outputs.size());
127 wxASSERT(_outputs.size() > index);
128 wxASSERT(_outputs[index]);
129 return _outputs[index].get();
179 void ApplyChange(
int connectionIndex,
double rate,
double timeStepInDays);
194 return vecDoublePt{};
238 throw ShouldNotHappen(
"Process::SetTargetBrick - Should not be called (virtual)");
256 return !_outputs.empty();
265 return _container !=
nullptr;
271 std::vector<std::unique_ptr<Flux>> _outputs;
Definition HydroUnit.h:18
virtual void Finalize()
Definition Process.h:184
static const float * GetParameterValuePointer(const ProcessSettings &processSettings, const string &name)
Definition Process.cpp:209
virtual vecDouble GetChangeRates()
Definition Process.cpp:220
virtual void SetHydroUnitProperties(HydroUnit *unit, Brick *brick)
Definition Process.cpp:191
virtual vecDouble GetRates()=0
void SetName(const string &name)
Definition Process.h:219
WaterContainer * GetWaterContainer() const
Definition Process.h:228
virtual void AttachForcing(Forcing *)
Definition Process.h:97
const string & GetName() const
Definition Process.h:210
void AttachFluxOut(std::unique_ptr< Flux > flux)
Definition Process.h:106
virtual bool ToAtmosphere() const
Definition Process.h:137
static bool RegisterParametersAndForcing(SettingsModel *modelSettings, const string &processType)
Definition Process.cpp:152
virtual void Validate() const
Definition Process.cpp:274
virtual void SetParameters(const ProcessSettings &processSettings)
Definition Process.cpp:195
static bool HasParameter(const ProcessSettings &processSettings, const string &name)
Definition Process.cpp:199
bool HasWaterContainer() const
Definition Process.h:264
virtual bool IsLateralProcess() const
Definition Process.h:246
double GetSumChangeRatesOtherProcesses() const
Definition Process.cpp:255
virtual bool NeedsTargetBrickLinking() const
Definition Process.h:146
void ApplyChange(int connectionIndex, double rate, double timeStepInDays)
Definition Process.cpp:236
bool HasOutputFluxes() const
Definition Process.h:255
static Process * Factory(const ProcessSettings &processSettings, Brick *brick)
Definition Process.cpp:60
virtual double * GetValuePointer(const string &name)
Definition Process.cpp:251
virtual vecDoublePt GetStateVariables()
Definition Process.h:193
virtual void StoreInOutgoingFlux(double *rate, int index)
Definition Process.cpp:230
virtual int GetConnectionCount() const =0
virtual bool IsValid() const =0
int GetOutputFluxCount() const
Definition Process.h:116
Flux * GetOutputFlux(size_t index) const
Definition Process.h:126
void Reset()
Definition Process.cpp:185
virtual void SetTargetBrick(Brick *)
Definition Process.h:237
Definition SettingsModel.h:68
Exception for code paths that should never be reached.
Definition Exceptions.h:147
Definition WaterContainer.h:9
Definition SettingsModel.h:29