HydroCouple  2.0.0
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocoupletemporal.h
Go to the documentation of this file.
1
23#ifndef HYDROCOUPLETEMPORAL_H
24#define HYDROCOUPLETEMPORAL_H
25
26#include "hydrocouple.h"
27
28using namespace std;
29
30namespace HydroCouple
31{
33 namespace Temporal
34 {
39 {
40 public:
41 /*
42 * \brief ~IDateTime destructor.
43 */
44 virtual ~IDateTime() = default;
45
49 virtual double julianDay() const = 0;
50
54 virtual double modifiedJulianDay() const = 0;
55
59 virtual double serialDate() const = 0;
60 };
61
65 class ITimeSpan : public virtual IDateTime
66 {
67
68 public:
72 virtual ~ITimeSpan() = default;
73
78 virtual double duration() const = 0;
79 };
80
85 {
86 public:
90 virtual ~ITimeModelComponent() = default;
91
96 virtual IDateTime *currentDateTime() const = 0;
97
102 virtual ITimeSpan *simulationPeriod() const = 0;
103 };
104
113 {
114
115 public:
120
124 virtual ~ITimeSeriesComponentDataItem() = default;
125
131 virtual const IDateTime *time(int timeIndex) const = 0;
132
137 virtual int timeCount() const = 0;
138
142 virtual ITimeSpan *timeSpan() const = 0;
143
148 virtual IDimension *timeDimension() const = 0;
149
156 virtual void getValue(
158 int timeDimensionIndex,
159 const initializer_list<int>& dimensionIndexes = {}) const = 0;
160
170 virtual void getValues(
172 int timeDimensionIndex,
173 const initializer_list<int> &dimensionIndexes = {},
174 int timeDimensionIndexLength = 1,
175 const initializer_list<int> &dimensionLengths = {}) const = 0;
176
183 virtual void setValue(
184 const hydrocouple_variant &data,
185 int timeDimensionIndex,
186 const initializer_list<int> &dimensionIndexes = {}) = 0;
187
197 virtual void setValues(
198 const hydrocouple_variant *data,
199 int timeDimensionIndex,
200 const initializer_list<int> &dimensionIndexes = {},
201 int timeDimensionIndexLength = 1,
202 const initializer_list<int> &dimensionLengths = {}) = 0;
203
204 };
205
209 class ITimeSeriesComponentDataItem : public virtual IComponentDataItem
210 {
211
212
213 public:
214
219
223 virtual ~ITimeSeriesComponentDataItem() = default;
224
231 virtual void getValue(
233 int timeIndex,
234 const vector<int> &dimensionIndexes = {}
235 ) const = 0;
236
245 virtual void getValues(
247 int timeIndex,
248 const initializer_list<int> &dimensionIndexes = {},
249 int timeIndexLength = 1,
250 const initializer_list<int> &dimensionLengths = {}) const = 0;
251
258 virtual void setValue(
259 const hydrocouple_variant& data,
260 int timeIndex,
261 const initializer_list<int> &dimensionIndexes = {}) = 0;
262
272 virtual void setValues(
273 const hydrocouple_variant *data,
274 int timeIndex,
275 const initializer_list<int> &dimensionIndexes = {},
276 int timeIndexLength = 1,
277 const initializer_list<int> &dimensionLengths = {}) = 0;
278 };
279
284 public virtual ITimeSeriesComponentDataItem
285 {
286
287
288
289 public:
290
299
304
309 virtual vector<string> identifiers() const = 0;
310
315 virtual IDimension *identifierDimension() const = 0;
316
323 virtual void getValue(
325 int timeIndex,
326 int idIndex,
327 const initializer_list<int> &dimensionIndexes = {}) const = 0;
328
339 virtual void getValues(
341 int timeIndex,
342 int idIndex,
343 const initializer_list<int> &dimensionIndexes = {},
344 int timeIndexLength = 1,
345 int idIndexLength = 1,
346 const initializer_list<int> &dimensionLengths = {}) const = 0;
347
355 virtual void setValue(
356 const hydrocouple_variant &data,
357 int timeIndex,
358 int idIndex,
359 const initializer_list<int> &dimensionIndexes = {}) = 0;
360
372 virtual void setValues(
373 const hydrocouple_variant *data,
374 int timeIndex,
375 int idIndex,
376 const initializer_list<int> &dimensionIndexes = {},
377 int timeIndexLength = 1,
378 int idIndexLength = 1,
379 const vector<int> &dimensionLengths = {}) = 0;
380 };
381 }
382}
383
384#endif // HYDROCOUPLETEMPORAL_H
IComponentItem is a fundamental unit of data for a component.
Definition hydrocouple.h:1316
virtual void setValue(const hydrocouple_variant &data, const initializer_list< int > &dimensionIndexes)=0
Sets a multi-dimensional array of values for given dimension indexes.
virtual void getValue(hydrocouple_variant &data, const initializer_list< int > &dimensionIndexes) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void getValues(hydrocouple_variant *data, const initializer_list< int > &dimensionIndexes, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
virtual void setValues(const hydrocouple_variant *data, const initializer_list< int > &dimensionIndexes, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension indexes and strides along each dimension...
IDimension provides the properties of the dimensions of a variable.
Definition hydrocouple.h:941
IModelComponent interface is the core interface in the HydroCouple standard defining a model componen...
Definition hydrocouple.h:390
IPropertyChanged interface is used to emit signal/event when a property of an object changes.
Definition hydrocouple.h:167
IDateTime interface based on a Julian day.
Definition hydrocoupletemporal.h:39
virtual double julianDay() const =0
Date and time as a julian day value.
virtual double modifiedJulianDay() const =0
Modified Julian day value.
virtual double serialDate() const =0
Serial date number.
The ITimeIdBasedComponentDataItem class.
Definition hydrocoupletemporal.h:285
virtual IDimension * identifierDimension() const =0
idDimensions associated with this dimension.
virtual vector< string > identifiers() const =0
identifiers associated with this dimension.
virtual ~ITimeIdBasedComponentDataItem()=default
~ITimeIdBasedComponentDataItem destructor.
virtual void setValue(const hydrocouple_variant &data, int timeIndex, int idIndex, const initializer_list< int > &dimensionIndexes={})=0
Sets a single value for given id dimension index.
virtual void getValue(hydrocouple_variant &data, int timeIndex, int idIndex, const initializer_list< int > &dimensionIndexes={}) const =0
Gets a single value for given id dimension index.
virtual void getValues(hydrocouple_variant *data, int timeIndex, int idIndex, const initializer_list< int > &dimensionIndexes={}, int timeIndexLength=1, int idIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given id dimension index and size for a hyperslab.
virtual void setValues(const hydrocouple_variant *data, int timeIndex, int idIndex, const initializer_list< int > &dimensionIndexes={}, int timeIndexLength=1, int idIndexLength=1, const vector< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given id dimension index and size for a hyperslab.
The ITimeModelComponent class for time marching models.
Definition hydrocoupletemporal.h:85
virtual ITimeSpan * simulationPeriod() const =0
simulationPeriod of the model.
virtual IDateTime * currentDateTime() const =0
currentDateTime
virtual ~ITimeModelComponent()=default
~ITimeModelComponent
ITimeComponentItem is an IComponentItem with a temporal attribute. This class cannot be directly inst...
Definition hydrocoupletemporal.h:113
virtual ~ITimeSeriesComponentDataItem()=default
~ITimeComponentItem destructor.
virtual void getValues(hydrocouple_variant *data, int timeIndex, const initializer_list< int > &dimensionIndexes={}, int timeIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual void setValues(const hydrocouple_variant *data, int timeIndex, const initializer_list< int > &dimensionIndexes={}, int timeIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual void getValues(hydrocouple_variant *data, int timeDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int timeDimensionIndexLength=1, const initializer_list< int > &dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int timeDimensionIndex, const initializer_list< int > &dimensionIndexes={}) const =0
Gets a single value for given time dimension index.
virtual void setValue(const hydrocouple_variant &data, int timeIndex, const initializer_list< int > &dimensionIndexes={})=0
Sets a single value for given time dimension index.
virtual const IDateTime * time(int timeIndex) const =0
time
virtual void setValues(const hydrocouple_variant *data, int timeDimensionIndex, const initializer_list< int > &dimensionIndexes={}, int timeDimensionIndexLength=1, const initializer_list< int > &dimensionLengths={})=0
Sets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual IDimension * timeDimension() const =0
IDimension of the times.
virtual void getValue(hydrocouple_variant &data, int timeIndex, const vector< int > &dimensionIndexes={}) const =0
Gets a single value for given time dimension index.
virtual void setValue(const hydrocouple_variant &data, int timeDimensionIndex, const initializer_list< int > &dimensionIndexes={})=0
Sets a single value for given time dimension index.
virtual ITimeSpan * timeSpan() const =0
ITimeSpan associated with this dimension.
ITimeSpan specifies a time duration.
Definition hydrocoupletemporal.h:66
virtual double duration() const =0
Duration of the timespan in days.
virtual ~ITimeSpan()=default
~ITimeSpan destructor.
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:60
variant< bool, char, short, int, long, unsigned char, unsigned short, unsigned int, unsigned long, float, double, long double, string, void * > hydrocouple_variant
hydrocouple_variant is a variant type that can be used to store the core value types values of differ...
Definition hydrocouple.h:96