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;
308 [[nodiscard]] ModelResult CheckTimeStepCompatibility();
310 ModelResult InitializeTimeSeries();
312 ModelResult UpdateForcing();
314 ModelResult RunSpinup();
316 ModelResult RewindAfterSpinup();
Definition ActionsManager.h:11
Definition ModelHydro.h:14
axxd GetHydroUnitFractions(const string &label) const
Definition ModelHydro.cpp:312
TimeMachine * GetTimeMachine()
Definition ModelHydro.h:212
Logger * GetLogger()
Definition ModelHydro.h:230
vecStr GetRecordedHydroUnitLabels() const
Definition ModelHydro.cpp:323
void Validate() const
Definition ModelHydro.cpp:161
bool ForcingLoaded() const
Definition ModelHydro.cpp:165
bool AttachTimeSeriesToHydroUnits()
Definition ModelHydro.cpp:413
void SaveAsInitialState()
Definition ModelHydro.cpp:269
bool IsValid() const
Definition ModelHydro.cpp:155
double GetTotalWaterStorageChanges() const
Definition ModelHydro.cpp:289
bool AddTimeSeries(std::unique_ptr< TimeSeries > timeSeries)
Definition ModelHydro.cpp:339
Processor * GetProcessor()
Definition ModelHydro.h:221
axxd GetHydroUnitValues(const string &label) const
Definition ModelHydro.cpp:301
vecStr GetRecordedHydroUnitFractionLabels() const
Definition ModelHydro.cpp:327
bool DumpOutputs(const string &path)
Definition ModelHydro.cpp:273
void UpdateParameters(SettingsModel &modelSettings)
Definition ModelHydro.cpp:80
int GetActionCount() const
Definition ModelHydro.cpp:387
double GetTotalSnowStorageChanges() const
Definition ModelHydro.cpp:293
bool AddAction(Action *action)
Definition ModelHydro.cpp:383
ActionsManager * GetActionsManager()
Definition ModelHydro.h:239
axd GetHydroUnitAreas() const
Definition ModelHydro.cpp:335
double GetTotalET() const
Definition ModelHydro.cpp:285
vecInt GetHydroUnitIds() const
Definition ModelHydro.cpp:331
SubBasin * GetSubBasin() const
Definition ModelHydro.h:193
ModelResult Run()
Definition ModelHydro.cpp:169
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:395
ModelResult Initialize(SettingsModel &modelSettings, SettingsBasin &basinSettings, bool checkProcesses=true)
Definition ModelHydro.cpp:34
void ClearTimeSeries()
Definition ModelHydro.cpp:409
double GetTotalOutletDischarge() const
Definition ModelHydro.cpp:281
ModelResult InitializeWithBasin(SettingsModel &modelSettings, SettingsBasin &basinSettings)
Definition ModelHydro.cpp:20
int GetSporadicActionItemCount() const
Definition ModelHydro.cpp:391
axd GetOutletDischarge() const
Definition ModelHydro.cpp:277
void Reset()
Definition ModelHydro.cpp:257
Definition ParametersUpdater.h:8
Definition Processor.h:13
Definition SettingsBasin.h:47
Definition SettingsModel.h:74
Definition TimeMachine.h:9