1#ifndef HYDROBRICKS_MODEL_HYDRO_H
2#define HYDROBRICKS_MODEL_HYDRO_H
6#include "ActionsManager.h"
10#include "SettingsModel.h"
12#include "TimeSeries.h"
51 [[nodiscard]]
bool IsValid()
const;
73 [[nodiscard]] ModelResult
Run();
133 [[nodiscard]]
double GetTotalGlacierStorageChanges()
const;
174 bool CreateTimeSeries(
const string& varName,
const axd& time,
const axi& ids,
const axxd& data);
203 _ownedSubBasin.reset();
204 _subBasin = subBasin;
240 return &_actionsManager;
292 std::unique_ptr<SubBasin> _ownedSubBasin;
298 std::vector<std::unique_ptr<TimeSeries>> _timeSeries;
299 int _spinupSteps = 0;
302 ModelResult InitializeTimeSeries();
304 ModelResult UpdateForcing();
306 ModelResult RunSpinup();
308 ModelResult RewindAfterSpinup();
Definition ActionsManager.h:11
Definition ModelHydro.h:14
axxd GetHydroUnitFractions(const string &label) const
Definition ModelHydro.cpp:238
TimeMachine * GetTimeMachine()
Definition ModelHydro.h:212
Logger * GetLogger()
Definition ModelHydro.h:230
vecStr GetRecordedHydroUnitLabels() const
Definition ModelHydro.cpp:249
void Validate() const
Definition ModelHydro.cpp:92
bool ForcingLoaded() const
Definition ModelHydro.cpp:96
bool AttachTimeSeriesToHydroUnits()
Definition ModelHydro.cpp:324
void SaveAsInitialState()
Definition ModelHydro.cpp:195
bool IsValid() const
Definition ModelHydro.cpp:86
double GetTotalWaterStorageChanges() const
Definition ModelHydro.cpp:215
bool AddTimeSeries(std::unique_ptr< TimeSeries > timeSeries)
Definition ModelHydro.cpp:265
Processor * GetProcessor()
Definition ModelHydro.h:221
axxd GetHydroUnitValues(const string &label) const
Definition ModelHydro.cpp:227
vecStr GetRecordedHydroUnitFractionLabels() const
Definition ModelHydro.cpp:253
bool DumpOutputs(const string &path)
Definition ModelHydro.cpp:199
void UpdateParameters(SettingsModel &modelSettings)
Definition ModelHydro.cpp:76
int GetActionCount() const
Definition ModelHydro.cpp:298
double GetTotalSnowStorageChanges() const
Definition ModelHydro.cpp:219
bool AddAction(Action *action)
Definition ModelHydro.cpp:294
ActionsManager * GetActionsManager()
Definition ModelHydro.h:239
axd GetHydroUnitAreas() const
Definition ModelHydro.cpp:261
double GetTotalET() const
Definition ModelHydro.cpp:211
vecInt GetHydroUnitIds() const
Definition ModelHydro.cpp:257
SubBasin * GetSubBasin() const
Definition ModelHydro.h:193
ModelResult Run()
Definition ModelHydro.cpp:100
void SetSubBasin(SubBasin *subBasin)
Definition ModelHydro.h:202
bool CreateTimeSeries(const string &varName, const axd &time, const axi &ids, const axxd &data)
Definition ModelHydro.cpp:306
ModelResult Initialize(SettingsModel &modelSettings, SettingsBasin &basinSettings, bool checkProcesses=true)
Definition ModelHydro.cpp:34
void ClearTimeSeries()
Definition ModelHydro.cpp:320
double GetTotalOutletDischarge() const
Definition ModelHydro.cpp:207
ModelResult InitializeWithBasin(SettingsModel &modelSettings, SettingsBasin &basinSettings)
Definition ModelHydro.cpp:20
int GetSporadicActionItemCount() const
Definition ModelHydro.cpp:302
axd GetOutletDischarge() const
Definition ModelHydro.cpp:203
void Reset()
Definition ModelHydro.cpp:183
Definition ParametersUpdater.h:8
Definition Processor.h:12
Definition SettingsBasin.h:47
Definition SettingsModel.h:70
Definition TimeMachine.h:9