hydrobricks
Loading...
Searching...
No Matches
Logger.h
1#ifndef HYDROBRICKS_LOGGER_H
2#define HYDROBRICKS_LOGGER_H
3
4#include "Includes.h"
5#include "SettingsModel.h"
6#include "SubBasin.h"
7
8class Logger {
9 public:
10 explicit Logger();
11
12 virtual ~Logger() = default;
13
21 void InitContainers(int timeSize, SubBasin* subBasin, SettingsModel& modelSettings);
22
26 void Reset();
27
34 void SetSubBasinValuePointer(int iLabel, double* valPt);
35
43 void SetHydroUnitValuePointer(int iUnit, int iLabel, double* valPt);
44
52 void SetHydroUnitFractionPointer(int iUnit, int iLabel, double* valPt);
53
59 void SetDate(double date);
60
64 void SaveInitialValues();
65
69 void Record();
70
74 void Increment();
75
82 bool DumpOutputs(const string& path);
83
89 [[nodiscard]] axd GetOutletDischarge() const;
90
97 [[nodiscard]] vecInt GetIndicesForSubBasinElements(const string& item) const;
98
105 [[nodiscard]] vecInt GetIndicesForHydroUnitElements(const string& item) const;
106
113 [[nodiscard]] double GetTotalSubBasin(const string& item) const;
114
122 [[nodiscard]] double GetTotalHydroUnits(const string& item, bool needsAreaWeighting = false) const;
123
129 [[nodiscard]] double GetTotalOutletDischarge() const;
130
136 [[nodiscard]] double GetTotalET() const;
137
144 [[nodiscard]] double GetSubBasinInitialStorageState(const string& tag) const;
145
152 [[nodiscard]] double GetSubBasinFinalStorageState(const string& tag) const;
153
160 [[nodiscard]] double GetHydroUnitsInitialStorageState(const string& tag) const;
161
168 [[nodiscard]] double GetHydroUnitsFinalStorageState(const string& tag) const;
169
175 [[nodiscard]] double GetTotalWaterStorageChanges() const;
176
182 [[nodiscard]] double GetTotalSnowStorageChanges() const;
183
189 [[nodiscard]] double GetTotalGlacierStorageChanges() const;
190
196 const vecAxd& GetSubBasinValues() const {
197 return _subBasinValues;
198 }
199
205 const vecAxxd& GetHydroUnitValues() const {
206 return _hydroUnitValues;
207 }
208
214 const axd& GetTime() const {
215 return _time;
216 }
217
223 const vecInt& GetHydroUnitIds() const {
224 return _hydroUnitIds;
225 }
226
232 const axd& GetHydroUnitAreas() const {
233 return _hydroUnitAreas;
234 }
235
241 const vecStr& GetSubBasinLabels() const {
242 return _subBasinLabels;
243 }
244
250 const vecStr& GetHydroUnitLabels() const {
251 return _hydroUnitLabels;
252 }
253
259 const vecStr& GetHydroUnitFractionLabels() const {
260 return _hydroUnitFractionLabels;
261 }
262
268 const vecAxxd& GetHydroUnitFractions() const {
269 return _hydroUnitFractions;
270 }
271
276 _recordFractions = true;
277 }
278
284 void AddSubBasinEtIndex(int iLabel) {
285 _subBasinEtIndices.push_back(iLabel);
286 }
287
293 void AddHydroUnitEtIndex(int iLabel) {
294 _hydroUnitEtIndices.push_back(iLabel);
295 }
296
297 protected:
298 int _cursor;
299 axd _time;
300 bool _recordFractions;
301 vecStr _subBasinLabels;
302 axd _subBasinInitialValues;
303 vecAxd _subBasinValues;
304 vecDoublePt _subBasinValuesPt;
305 vecInt _hydroUnitIds;
306 axd _hydroUnitAreas;
307 vecStr _hydroUnitLabels;
308 vecAxd _hydroUnitInitialValues;
309 vecAxxd _hydroUnitValues;
310 vector<vecDoublePt> _hydroUnitValuesPt;
311 vecStr _hydroUnitFractionLabels;
312 vecAxxd _hydroUnitFractions;
313 vector<vecDoublePt> _hydroUnitFractionsPt;
314 vecInt _subBasinEtIndices; // indices into _subBasinValues that are ET (to-atmosphere) fluxes
315 vecInt _hydroUnitEtIndices; // indices into _hydroUnitValues that are ET (to-atmosphere) fluxes
316};
317
318#endif // HYDROBRICKS_LOGGER_H
Definition Logger.h:8
const vecAxxd & GetHydroUnitFractions() const
Definition Logger.h:268
void RecordFractions()
Definition Logger.h:275
bool DumpOutputs(const string &path)
Definition Logger.cpp:107
void AddHydroUnitEtIndex(int iLabel)
Definition Logger.h:293
vecInt GetIndicesForHydroUnitElements(const string &item) const
Definition Logger.cpp:136
void Reset()
Definition Logger.cpp:36
double GetSubBasinFinalStorageState(const string &tag) const
Definition Logger.cpp:238
const vecInt & GetHydroUnitIds() const
Definition Logger.h:223
double GetTotalET() const
Definition Logger.cpp:206
vecInt GetIndicesForSubBasinElements(const string &item) const
Definition Logger.cpp:124
void Record()
Definition Logger.cpp:78
double GetHydroUnitsFinalStorageState(const string &tag) const
Definition Logger.cpp:270
const axd & GetHydroUnitAreas() const
Definition Logger.h:232
void Increment()
Definition Logger.cpp:103
double GetTotalHydroUnits(const string &item, bool needsAreaWeighting=false) const
Definition Logger.cpp:158
double GetTotalGlacierStorageChanges() const
Definition Logger.cpp:302
void AddSubBasinEtIndex(int iLabel)
Definition Logger.h:284
double GetTotalSnowStorageChanges() const
Definition Logger.cpp:297
void SetDate(double date)
Definition Logger.cpp:59
const axd & GetTime() const
Definition Logger.h:214
void SetHydroUnitFractionPointer(int iUnit, int iLabel, double *valPt)
Definition Logger.cpp:51
const vecAxxd & GetHydroUnitValues() const
Definition Logger.h:205
const vecStr & GetHydroUnitFractionLabels() const
Definition Logger.h:259
void SetSubBasinValuePointer(int iLabel, double *valPt)
Definition Logger.cpp:40
const vecStr & GetSubBasinLabels() const
Definition Logger.h:241
void SetHydroUnitValuePointer(int iUnit, int iLabel, double *valPt)
Definition Logger.cpp:45
double GetSubBasinInitialStorageState(const string &tag) const
Definition Logger.cpp:228
double GetTotalOutletDischarge() const
Definition Logger.cpp:202
double GetHydroUnitsInitialStorageState(const string &tag) const
Definition Logger.cpp:248
void InitContainers(int timeSize, SubBasin *subBasin, SettingsModel &modelSettings)
Definition Logger.cpp:9
double GetTotalSubBasin(const string &item) const
Definition Logger.cpp:148
void SaveInitialValues()
Definition Logger.cpp:64
const vecStr & GetHydroUnitLabels() const
Definition Logger.h:250
double GetTotalWaterStorageChanges() const
Definition Logger.cpp:292
axd GetOutletDischarge() const
Definition Logger.cpp:115
const vecAxd & GetSubBasinValues() const
Definition Logger.h:196
Definition SettingsModel.h:69
Definition SubBasin.h:14