HydroCouple  2.0.0-alpha.1
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocoupletemporal.h
Go to the documentation of this file.
1
19
20#ifndef HYDROCOUPLETEMPORAL_H
21#define HYDROCOUPLETEMPORAL_H
22
23#include "hydrocouple.h"
24
25
26namespace HydroCouple
27{
29 namespace Temporal
30 {
39 {
40 public:
44 virtual ~IDateTime() = default;
45
49 [[nodiscard]] virtual double julianDay() const = 0;
50
54 [[nodiscard]] virtual double modifiedJulianDay() const = 0;
55
59 [[nodiscard]] virtual double serialDate() const = 0;
60 };
61
65 class ITimeSpan : public virtual IDateTime
66 {
67
68 public:
72 virtual ~ITimeSpan() = default;
73
78 [[nodiscard]] virtual double duration() const = 0;
79 };
80
86 {
87 public:
91 virtual ~ITimeModelComponent() = default;
92
97 [[nodiscard]] virtual IDateTime *currentDateTime() const = 0;
98
103 [[nodiscard]] virtual ITimeSpan *simulationPeriod() const = 0;
104 };
105
115 {
116
117 public:
121 virtual ~ITimeSeriesComponentDataItem() = default;
122
128 [[nodiscard]] virtual const IDateTime *time(int64_t timeIndex) const = 0;
129
134 [[nodiscard]] virtual int64_t timeCount() const = 0;
135
144 [[nodiscard]] virtual std::span<const double> times() const = 0;
145
150 [[nodiscard]] virtual ITimeSpan *timeSpan() const = 0;
151
160 [[nodiscard]] virtual IDimension *timeDimension() const = 0;
161 };
162
168 {
169
170 public:
175
180 [[nodiscard]] virtual std::vector<std::string> identifiers() const = 0;
181
189 [[nodiscard]] virtual IDimension *identifierDimension() const = 0;
190 };
191 }
192}
193
194#endif // HYDROCOUPLETEMPORAL_H
IComponentDataItem is a fundamental unit of data for a component.
Definition hydrocouple.h:1466
IDimension provides the properties of the dimensions of a variable.
Definition hydrocouple.h:1082
IModelComponent interface is the core interface in the HydroCouple standard defining a model componen...
Definition hydrocouple.h:533
IPropertyChanged interface is used to emit signal/event when a property of an object changes.
Definition hydrocouple.h:254
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.
virtual ~IDateTime()=default
~IDateTime destructor.
ITimeIdBasedComponentDataItem is an IComponentDataItem with both temporal and identifier-based dimens...
Definition hydrocoupletemporal.h:168
virtual IDimension * identifierDimension() const =0
identifierDimension associated with this data item.
virtual ~ITimeIdBasedComponentDataItem()=default
~ITimeIdBasedComponentDataItem destructor.
virtual std::vector< std::string > identifiers() const =0
identifiers associated with the identifier dimension.
ITimeModelComponent is an IModelComponent that advances through time during simulation and provides a...
Definition hydrocoupletemporal.h:86
virtual ITimeSpan * simulationPeriod() const =0
simulationPeriod of the model.
virtual IDateTime * currentDateTime() const =0
Gets the current date and time of the model simulation.
virtual ~ITimeModelComponent()=default
ITimeModelComponent destructor.
ITimeSeriesComponentDataItem is an IComponentItem with a temporal attribute.
Definition hydrocoupletemporal.h:115
virtual const IDateTime * time(int64_t timeIndex) const =0
Gets the IDateTime for the given time index.
virtual std::span< const double > times() const =0
Bulk access to all time coordinates as Julian day values.
virtual ~ITimeSeriesComponentDataItem()=default
~ITimeSeriesComponentDataItem destructor.
virtual IDimension * timeDimension() const =0
Gets the IDimension of the times.
virtual int64_t timeCount() const =0
Gets the number of times.
virtual ITimeSpan * timeSpan() const =0
Gets the ITimeSpan associated with this data item.
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.
Core interface definitions for the HydroCouple component-based modeling framework.
HydroCouple's interfaces that have a time varying component.
Definition hydrocoupletemporal.h:30
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:58