1#ifndef HYDROBRICKS_MODEL_HYDRO_H
2#define HYDROBRICKS_MODEL_HYDRO_H
7#include "ActionsManager.h"
11#include "RiverNetwork.h"
12#include "SettingsModel.h"
14#include "TimeSeries.h"
53 [[nodiscard]]
bool IsValid()
const;
75 [[nodiscard]] ModelResult
Run();
84 void OpenLog(
const string& directory);
124 [[nodiscard]]
int GetSubbasinCount()
const;
126 [[nodiscard]] vecInt GetSubbasinIds()
const;
128 [[nodiscard]] vecInt GetSubbasinDownstreamIds()
const;
130 [[nodiscard]] axd GetSubbasinLocalAreas()
const;
132 [[nodiscard]] axd GetSubbasinDrainedAreas()
const;
219 [[nodiscard]]
double GetTotalGlacierStorageChanges()
const;
260 bool CreateTimeSeries(
const string& varName,
const axd& time,
const axi& ids,
const axxd& data);
290 _subbasin = subbasin;
299 return _network.get();
322 return _processors.empty() ? nullptr : _processors.back().get();
340 return &_actionsManager;
407 std::vector<std::unique_ptr<Processor>> _processors;
408 std::unique_ptr<RiverNetwork> _network;
410 std::vector<Subbasin*> _subbasins;
415 std::vector<std::unique_ptr<TimeSeries>> _timeSeries;
416 int _spinupSteps = 0;
427 [[nodiscard]] axd GetReachProperty(
const std::function<
double(
const Reach&)>& get)
const;
432 [[nodiscard]] std::vector<Subbasin*> CollectSubbasins()
const;
439 bool ProcessTimeStep();
447 [[nodiscard]] ModelResult CheckTimeStepCompatibility();
449 ModelResult InitializeTimeSeries();
451 ModelResult UpdateForcing();
453 ModelResult RunSpinup();
455 ModelResult RewindAfterSpinup();
Definition ActionsManager.h:11
Definition HydroUnit.h:18
Definition ModelHydro.h:16
axxd GetHydroUnitFractions(const string &label) const
Definition ModelHydro.cpp:497
axd GetHydroUnitSubbasinFractions() const
Definition ModelHydro.cpp:535
TimeMachine * GetTimeMachine()
Definition ModelHydro.h:307
void CloseLog()
Definition ModelHydro.cpp:327
Logger * GetLogger()
Definition ModelHydro.h:330
vecStr GetRecordedHydroUnitLabels() const
Definition ModelHydro.cpp:508
void OpenLog(const string &directory)
Definition ModelHydro.cpp:321
void Validate() const
Definition ModelHydro.cpp:204
bool ForcingLoaded() const
Definition ModelHydro.cpp:226
bool AttachTimeSeriesToHydroUnits()
Definition ModelHydro.cpp:616
Subbasin * GetSubbasin() const
Definition ModelHydro.h:279
void SaveAsInitialState()
Definition ModelHydro.cpp:349
bool IsValid() const
Definition ModelHydro.cpp:193
axd GetReachTravelTimes() const
Definition ModelHydro.cpp:400
vecInt GetReachSubreachCounts() const
Definition ModelHydro.cpp:420
double GetTotalWaterStorageChanges() const
Definition ModelHydro.cpp:474
bool AddTimeSeries(std::unique_ptr< TimeSeries > timeSeries)
Definition ModelHydro.cpp:539
Processor * GetProcessor()
Definition ModelHydro.h:321
RiverNetwork * GetNetwork() const
Definition ModelHydro.h:298
axxd GetHydroUnitValues(const string &label) const
Definition ModelHydro.cpp:486
vecStr GetRecordedHydroUnitFractionLabels() const
Definition ModelHydro.cpp:512
bool DumpOutputs(const string &path)
Definition ModelHydro.cpp:359
void UpdateParameters(SettingsModel &modelSettings)
Definition ModelHydro.cpp:114
int GetActionCount() const
Definition ModelHydro.cpp:589
double GetTotalSnowStorageChanges() const
Definition ModelHydro.cpp:478
string GetChannelRoutingScheme() const
Definition ModelHydro.cpp:436
HydroUnit * GetHydroUnitById(int id) const
Definition ModelHydro.cpp:448
bool AddAction(Action *action)
Definition ModelHydro.cpp:584
ActionsManager * GetActionsManager()
Definition ModelHydro.h:339
axd GetHydroUnitAreas() const
Definition ModelHydro.cpp:520
double GetTotalET() const
Definition ModelHydro.cpp:470
vecInt GetHydroUnitIds() const
Definition ModelHydro.cpp:516
void SetSubbasin(Subbasin *subbasin)
Definition ModelHydro.h:288
std::vector< HydroUnit * > GetHydroUnits() const
Definition ModelHydro.cpp:455
ModelResult Run()
Definition ModelHydro.cpp:230
axd GetSubbasinDischarge(int subbasinId) const
Definition ModelHydro.cpp:368
bool CreateTimeSeries(const string &varName, const axd &time, const axi &ids, const axxd &data)
Definition ModelHydro.cpp:597
ModelResult Initialize(SettingsModel &modelSettings, SettingsBasin &basinSettings, bool checkProcesses=true)
Definition ModelHydro.cpp:44
void ClearTimeSeries()
Definition ModelHydro.cpp:612
axd GetReachSlopes() const
Definition ModelHydro.cpp:396
axd GetReachLengths() const
Definition ModelHydro.cpp:392
double GetTotalOutletDischarge() const
Definition ModelHydro.cpp:466
ModelResult InitializeWithBasin(SettingsModel &modelSettings, SettingsBasin &basinSettings)
Definition ModelHydro.cpp:19
int GetSporadicActionItemCount() const
Definition ModelHydro.cpp:593
string GetHydroUnitLabelBasis(const string &label) const
Definition ModelHydro.cpp:524
axd GetOutletDischarge() const
Definition ModelHydro.cpp:364
void Reset()
Definition ModelHydro.cpp:331
Definition ParametersUpdater.h:8
Definition Processor.h:13
Definition RiverNetwork.h:24
Definition SettingsBasin.h:62
Definition SettingsModel.h:87
Definition TimeMachine.h:9