hydrobricks
Loading...
Searching...
No Matches
ParameterModifier.h
1#ifndef HYDROBRICKS_PARAMETER_MODIFIER_H
2#define HYDROBRICKS_PARAMETER_MODIFIER_H
3
4#include "Includes.h"
5
9enum class ParameterModifierType {
10 Yearly, // Values change yearly
11 Monthly, // Values change monthly (12 values)
12 Dates // Values change at specific dates
13};
14
20 public:
21 ParameterModifier() = default;
22
23 explicit ParameterModifier(ParameterModifierType type)
24 : _type(type) {}
25
26 ~ParameterModifier() = default;
27
33 void SetType(ParameterModifierType type) {
34 _type = type;
35 }
36
42 ParameterModifierType GetType() const {
43 return _type;
44 }
45
54 bool SetYearlyValues(int yearStart, int yearEnd, const vecFloat& values);
55
62 bool SetMonthlyValues(const vecFloat& values);
63
71 bool SetDatesAndValues(const vecDouble& dates, const vecFloat& values);
72
79 float UpdateValue(double date);
80
86 bool UpdatesOnYearChange() const {
87 return _type == ParameterModifierType::Yearly;
88 }
89
95 bool UpdatesOnMonthChange() const {
96 return _type == ParameterModifierType::Monthly;
97 }
98
104 bool UpdatesOnDateChange() const {
105 return _type == ParameterModifierType::Dates;
106 }
107
108 private:
109 ParameterModifierType _type = ParameterModifierType::Dates;
110 vecFloat _values;
111 vecDouble _dates; // Used for Yearly (as years) and Dates (as MJD dates)
112};
113
114#endif // HYDROBRICKS_PARAMETER_MODIFIER_H
Definition ParameterModifier.h:19
bool SetMonthlyValues(const vecFloat &values)
Definition ParameterModifier.cpp:23
bool SetYearlyValues(int yearStart, int yearEnd, const vecFloat &values)
Definition ParameterModifier.cpp:3
void SetType(ParameterModifierType type)
Definition ParameterModifier.h:33
bool UpdatesOnMonthChange() const
Definition ParameterModifier.h:95
bool UpdatesOnYearChange() const
Definition ParameterModifier.h:86
bool UpdatesOnDateChange() const
Definition ParameterModifier.h:104
ParameterModifierType GetType() const
Definition ParameterModifier.h:42
bool SetDatesAndValues(const vecDouble &dates, const vecFloat &values)
Definition ParameterModifier.cpp:39
float UpdateValue(double date)
Definition ParameterModifier.cpp:55