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
165 [[nodiscard]] int GetFractionIndexForComponent(const string& componentName) const;
166
173 [[nodiscard]] double GetHydroUnitsInitialStorageState(const string& tag) const;
174
181 [[nodiscard]] double GetHydroUnitsFinalStorageState(const string& tag) const;
182
188 [[nodiscard]] double GetTotalWaterStorageChanges() const;
189
195 [[nodiscard]] double GetTotalSnowStorageChanges() const;
196
202 [[nodiscard]] double GetTotalGlacierStorageChanges() const;
203
209 const vecAxd& GetSubBasinValues() const {
210 return _subBasinValues;
211 }
212
218 const vecAxxd& GetHydroUnitValues() const {
219 return _hydroUnitValues;
220 }
221
227 const axd& GetTime() const {
228 return _time;
229 }
230
236 const vecInt& GetHydroUnitIds() const {
237 return _hydroUnitIds;
238 }
239
245 const axd& GetHydroUnitAreas() const {
246 return _hydroUnitAreas;
247 }
248
254 const vecStr& GetSubBasinLabels() const {
255 return _subBasinLabels;
256 }
257
263 const vecStr& GetHydroUnitLabels() const {
264 return _hydroUnitLabels;
265 }
266
272 const vecStr& GetHydroUnitFractionLabels() const {
273 return _hydroUnitFractionLabels;
274 }
275
281 const vecAxxd& GetHydroUnitFractions() const {
282 return _hydroUnitFractions;
283 }
284
289 _recordFractions = true;
290 }
291
297 void AddSubBasinEtIndex(int iLabel) {
298 _subBasinEtIndices.push_back(iLabel);
299 }
300
306 void AddHydroUnitEtIndex(int iLabel) {
307 _hydroUnitEtIndices.push_back(iLabel);
308 }
309
310 protected:
311 int _cursor;
312 axd _time;
313 bool _recordFractions;
314 vecStr _subBasinLabels;
315 axd _subBasinInitialValues;
316 vecAxd _subBasinValues;
317 vecDoublePt _subBasinValuesPt;
318 vecInt _hydroUnitIds;
319 vecInt _hydroUnitStructureIds;
320 axd _hydroUnitAreas;
321 vecStr _hydroUnitLabels;
322 vecAxd _hydroUnitInitialValues;
323 vecAxxd _hydroUnitValues;
324 vector<vecDoublePt> _hydroUnitValuesPt;
325 vecStr _hydroUnitFractionLabels;
326 vecAxxd _hydroUnitFractions;
327 vector<vecDoublePt> _hydroUnitFractionsPt;
328 vecInt _subBasinEtIndices; // indices into _subBasinValues that are ET (to-atmosphere) fluxes
329 vecInt _hydroUnitEtIndices; // indices into _hydroUnitValues that are ET (to-atmosphere) fluxes
330};
331
332#endif // HYDROBRICKS_LOGGER_H
Definition Logger.h:8
const vecAxxd & GetHydroUnitFractions() const
Definition Logger.h:281
void RecordFractions()
Definition Logger.h:288
bool DumpOutputs(const string &path)
Definition Logger.cpp:126
void AddHydroUnitEtIndex(int iLabel)
Definition Logger.h:306
vecInt GetIndicesForHydroUnitElements(const string &item) const
Definition Logger.cpp:156
void Reset()
Definition Logger.cpp:48
double GetSubBasinFinalStorageState(const string &tag) const
Definition Logger.cpp:279
const vecInt & GetHydroUnitIds() const
Definition Logger.h:236
double GetTotalET() const
Definition Logger.cpp:226
vecInt GetIndicesForSubBasinElements(const string &item) const
Definition Logger.cpp:144
void Record()
Definition Logger.cpp:93
double GetHydroUnitsFinalStorageState(const string &tag) const
Definition Logger.cpp:307
const axd & GetHydroUnitAreas() const
Definition Logger.h:245
void Increment()
Definition Logger.cpp:122
double GetTotalHydroUnits(const string &item, bool needsAreaWeighting=false) const
Definition Logger.cpp:178
double GetTotalGlacierStorageChanges() const
Definition Logger.cpp:336
void AddSubBasinEtIndex(int iLabel)
Definition Logger.h:297
double GetTotalSnowStorageChanges() const
Definition Logger.cpp:331
void SetDate(double date)
Definition Logger.cpp:71
const axd & GetTime() const
Definition Logger.h:227
void SetHydroUnitFractionPointer(int iUnit, int iLabel, double *valPt)
Definition Logger.cpp:63
const vecAxxd & GetHydroUnitValues() const
Definition Logger.h:218
const vecStr & GetHydroUnitFractionLabels() const
Definition Logger.h:272
void SetSubBasinValuePointer(int iLabel, double *valPt)
Definition Logger.cpp:52
const vecStr & GetSubBasinLabels() const
Definition Logger.h:254
void SetHydroUnitValuePointer(int iUnit, int iLabel, double *valPt)
Definition Logger.cpp:57
double GetSubBasinInitialStorageState(const string &tag) const
Definition Logger.cpp:269
double GetTotalOutletDischarge() const
Definition Logger.cpp:222
double GetHydroUnitsInitialStorageState(const string &tag) const
Definition Logger.cpp:289
void InitContainers(int timeSize, SubBasin *subBasin, SettingsModel &modelSettings)
Definition Logger.cpp:20
int GetFractionIndexForComponent(const string &componentName) const
Definition Logger.cpp:258
double GetTotalSubBasin(const string &item) const
Definition Logger.cpp:168
void SaveInitialValues()
Definition Logger.cpp:76
const vecStr & GetHydroUnitLabels() const
Definition Logger.h:263
double GetTotalWaterStorageChanges() const
Definition Logger.cpp:326
axd GetOutletDischarge() const
Definition Logger.cpp:135
const vecAxd & GetSubBasinValues() const
Definition Logger.h:209
Definition SettingsModel.h:70
Definition SubBasin.h:14