hydrobricks
Loading...
Searching...
No Matches
TimeSeries.h
1#ifndef HYDROBRICKS_TIME_SERIES_H
2#define HYDROBRICKS_TIME_SERIES_H
3
4#include <memory>
5
6#include "Includes.h"
7#include "SettingsBasin.h"
8#include "TimeSeriesData.h"
9
11 public:
12 explicit TimeSeries(VariableType type);
13
14 virtual ~TimeSeries() = default;
15
23 [[nodiscard]] static bool Parse(const string& path, vector<std::unique_ptr<TimeSeries>>& vecTimeSeries);
24
34 static std::unique_ptr<TimeSeries> Create(const string& varName, const axd& time, const axi& ids, const axxd& data);
35
42 [[nodiscard]] virtual bool SetCursorToDate(double date) = 0;
43
49 [[nodiscard]] virtual bool AdvanceOneTimeStep() = 0;
50
56 [[nodiscard]] virtual bool IsDistributed() const = 0;
57
66 [[nodiscard]] virtual double GetTimeStepInDays() const = 0;
67
73 [[nodiscard]] virtual double GetStart() const = 0;
74
80 [[nodiscard]] virtual double GetEnd() const = 0;
81
88 [[nodiscard]] virtual double GetTotal(const SettingsBasin* basinSettings) = 0;
89
96 virtual TimeSeriesData* GetDataPointer(int unitId) = 0;
97
103 VariableType GetVariableType() const {
104 return _type;
105 }
106
113 [[nodiscard]] virtual bool IsValid() const = 0;
114
121 virtual void Validate() const;
122
123 protected:
124 VariableType _type;
125
126 private:
134 static void ExtractTimeStep(double timeStepData, int& timeStep, TimeUnit& timeUnit);
135
142 static VariableType MatchVariableType(const string& varName);
143};
144
145#endif // HYDROBRICKS_TIME_SERIES_H
Definition SettingsBasin.h:47
Definition TimeSeriesData.h:6
Definition TimeSeries.h:10
static bool Parse(const string &path, vector< std::unique_ptr< TimeSeries > > &vecTimeSeries)
Definition TimeSeries.cpp:10
virtual void Validate() const
Definition TimeSeries.cpp:183
VariableType GetVariableType() const
Definition TimeSeries.h:103
virtual double GetEnd() const =0
virtual double GetTotal(const SettingsBasin *basinSettings)=0
virtual bool SetCursorToDate(double date)=0
virtual double GetStart() const =0
virtual double GetTimeStepInDays() const =0
static std::unique_ptr< TimeSeries > Create(const string &varName, const axd &time, const axi &ids, const axxd &data)
Definition TimeSeries.cpp:92
virtual bool IsDistributed() const =0
virtual TimeSeriesData * GetDataPointer(int unitId)=0
virtual bool IsValid() const =0
virtual bool AdvanceOneTimeStep()=0