21#ifndef HYDROCOUPLESPATIOTEMPORAL_H
22#define HYDROCOUPLESPATIOTEMPORAL_H
30 namespace SpatioTemporal
39 using IGeometryComponentDataItem::getValue;
40 using IGeometryComponentDataItem::getValues;
41 using IGeometryComponentDataItem::setValue;
42 using IGeometryComponentDataItem::setValues;
43 using ITimeSeriesComponentDataItem::getValue;
44 using ITimeSeriesComponentDataItem::getValues;
45 using ITimeSeriesComponentDataItem::setValue;
46 using ITimeSeriesComponentDataItem::setValues;
64 std::span<const int>dimensionIndexes = {})
const = 0;
80 std::span<const int>dimensionIndexes = {},
81 int timeIndexLength = 1,
82 int geometryIndexLength = 1,
83 std::span<const int>dimensionLengths = {})
const = 0;
96 std::span<const int>dimensionIndexes = {}) = 0;
111 std::span<const int>dimensionIndexes = {},
112 int timeIndexLength = 1,
113 int geometryIndexLength = 1,
114 std::span<const int>dimensionLengths = {}) = 0;
125 using INetworkComponentDataItem::getValue;
126 using INetworkComponentDataItem::getValues;
127 using INetworkComponentDataItem::setValue;
128 using INetworkComponentDataItem::setValues;
129 using ITimeSeriesComponentDataItem::getValue;
130 using ITimeSeriesComponentDataItem::getValues;
131 using ITimeSeriesComponentDataItem::setValue;
132 using ITimeSeriesComponentDataItem::setValues;
144 int timeDimensionIndex,
145 int edgeDimensionIndex,
146 int vertexDimensionIndex,
147 std::span<const int>dimensionIndexes = {})
const = 0;
164 int timeDimensionIndex,
165 int edgeDimensionIndex,
166 int vertexDimensionIndex,
167 std::span<const int>dimensionIndexes = {},
168 int timeDimensionIndexLength = 1,
169 int edgeDimensionIndexLength = 1,
170 int vertexDimensionIndexLength = 1,
171 std::span<const int>dimensionLengths = {})
const = 0;
183 int timeDimensionIndex,
184 int edgeDimensionIndex,
185 int vertexDimensionIndex,
186 std::span<const int>dimensionIndexes = {}) = 0;
203 int timeDimensionIndex,
204 int edgeDimensionIndex,
205 int vertexDimensionIndex,
206 std::span<const int>dimensionIndexes = {},
207 int timeDimensionIndexLength = 1,
208 int edgeDimensionIndexLength = 1,
209 int vertexDimensionIndexLength = 1,
210 std::span<const int>dimensionLengths = {}) = 0;
221 using ITimeSeriesComponentDataItem::getValue;
222 using ITimeSeriesComponentDataItem::getValues;
223 using ITimeSeriesComponentDataItem::setValue;
224 using ITimeSeriesComponentDataItem::setValues;
226 using IPolyhedralSurfaceComponentDataItem::getValue;
227 using IPolyhedralSurfaceComponentDataItem::getValues;
228 using IPolyhedralSurfaceComponentDataItem::setValue;
229 using IPolyhedralSurfaceComponentDataItem::setValues;
247 int timeDimensionIndex,
248 int patchDimensionIndex,
249 int edgeDimensionIndex,
250 int vertexDimensionIndex,
251 std::span<const int>dimensionIndexes = {})
const = 0;
274 int timeDimensionIndex,
275 int patchDimensionIndex,
276 int edgeDimensionIndex,
277 int vertexDimensionIndex,
278 std::span<const int>dimensionIndexes = {},
279 int timeDimensionIndexLength = 1,
280 int patchDimensionIndexLength = 1,
281 int edgeDimensionIndexLength = 1,
282 int vertexDimensionIndexLength = 1,
283 std::span<const int>dimensionLengths = {})
const = 0;
297 int timeDimensionIndex,
298 int patchDimensionIndex,
299 int edgeDimensionIndex,
300 int vertexDimensionIndex,
301 std::span<const int>dimensionIndexes = {}) = 0;
320 int timeDimensionIndex,
321 int patchDimensionIndex,
322 int edgeDimensionIndex,
323 int vertexDimensionIndex,
324 std::span<const int>dimensionIndexes = {},
325 int timeDimensionIndexLength = 1,
326 int patchDimensionIndexLength = 1,
327 int edgeDimensionIndexLength = 1,
328 int vertexDimensionIndexLength = 1,
329 std::span<const int>dimensionLengths = {}) = 0;
358 using IRasterComponentDataItem::getValue;
359 using IRasterComponentDataItem::getValues;
360 using IRasterComponentDataItem::setValue;
361 using IRasterComponentDataItem::setValues;
362 using ITimeSeriesComponentDataItem::getValue;
363 using ITimeSeriesComponentDataItem::getValues;
364 using ITimeSeriesComponentDataItem::setValue;
365 using ITimeSeriesComponentDataItem::setValues;
384 int timeDimensionIndex,
388 std::span<const int>dimensionIndexes = {})
const = 0;
407 int timeDimensionIndex,
411 std::span<const int>dimensionIndexes = {},
412 int timeDimensionIndexLength = 1,
413 int xIndexLength = 1,
414 int yIndexLength = 1,
415 int bandIndexLength = 1,
416 std::span<const int>dimensionLengths = {})
const = 0;
430 int timeDimensionIndex,
434 std::span<const int>dimensionIndexes = {}) = 0;
453 int timeDimensionIndex,
457 std::span<const int>dimensionIndexes = {},
458 int timeDimensionIndexLength = 1,
459 int xIndexLength = 1,
460 int yIndexLength = 1,
461 int bandIndexLength = 1,
462 std::span<const int>dimensionLengths = {}) = 0;
473 using IRegularGrid2DComponentDataItem::getValue;
474 using IRegularGrid2DComponentDataItem::getValues;
475 using IRegularGrid2DComponentDataItem::setValue;
476 using IRegularGrid2DComponentDataItem::setValues;
477 using ITimeSeriesComponentDataItem::getValue;
478 using ITimeSeriesComponentDataItem::getValues;
479 using ITimeSeriesComponentDataItem::setValue;
480 using ITimeSeriesComponentDataItem::setValues;
505 std::span<const int>dimensionIndexes = {})
const = 0;
531 std::span<const int>dimensionIndexes = {},
532 int timeIndexLength = 1,
533 int xCellIndexLength = 1,
534 int yCellIndexLength = 1,
535 int cellEdgeIndexLength = 1,
536 int cellVertexIndexLength = 1,
537 std::span<const int>dimensionLengths = {})
const = 0;
557 std::span<const int>dimensionIndexes = {}) = 0;
583 std::span<const int>dimensionIndexes = {},
584 int timeIndexLength = 1,
585 int xCellIndexLength = 1,
586 int yCellIndexLength = 1,
587 int cellEdgeIndexLength = 1,
588 int cellVertexIndexLength = 1,
589 std::span<const int>dimensionLengths = {}) = 0;
600 using IRegularGrid3DComponentDataItem::getValue;
601 using IRegularGrid3DComponentDataItem::getValues;
602 using IRegularGrid3DComponentDataItem::setValue;
603 using IRegularGrid3DComponentDataItem::setValues;
604 using ITimeSeriesComponentDataItem::getValue;
605 using ITimeSeriesComponentDataItem::getValues;
606 using ITimeSeriesComponentDataItem::setValue;
607 using ITimeSeriesComponentDataItem::setValues;
634 std::span<const int>dimensionIndexes = {})
const = 0;
663 std::span<const int>dimensionIndexes = {},
664 int timeIndexLength = 1,
665 int xCellIndexLength = 1,
666 int yCellIndexLength = 1,
667 int zCellIndexLength = 1,
668 int cellFaceIndexLength = 1,
669 int cellVertexIndexLength = 1,
670 std::span<const int>dimensionLengths = {})
const = 0;
692 std::span<const int>dimensionIndexes = {}) = 0;
721 std::span<const int>dimensionIndexes = {},
722 int timeIndexLength = 1,
723 int xCellIndexLength = 1,
724 int yCellIndexLength = 1,
725 int zCellIndexLength = 1,
726 int cellFaceIndexLength = 1,
727 int cellVertexIndexLength = 1,
728 std::span<const int>dimensionLengths = {}) = 0;
IGeometryComponentDataItem is an IComponentDataItem whose data is associated with a collection of IGe...
Definition hydrocouplespatial.h:1547
INetworkComponentDataItem is an IComponentDataItem whose data is associated with an INetwork of edges...
Definition hydrocouplespatial.h:1651
IPolyhedralSurfaceComponentDataItem is an IComponentDataItem whose data is associated with an IPolyhe...
Definition hydrocouplespatial.h:1766
IRasterComponentDataItem is an IComponentDataItem whose data is associated with an IRaster of pixel b...
Definition hydrocouplespatial.h:1932
IRegularGrid2DComponentDataItem is an IComponentDataItem whose data is associated with an IRegularGri...
Definition hydrocouplespatial.h:2051
IRegularGrid3DComponentDataItem is an IComponentDataItem whose data is associated with an IRegularGri...
Definition hydrocouplespatial.h:2198
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition hydrocouplespatial.h:1255
ITimeGeometryComponentDataItem is an IComponentDataItem with both temporal and geometric dimensions.
Definition hydrocouplespatiotemporal.h:36
virtual void setValue(const hydrocouple_variant &data, int timeIndex, int geometryIndex, std::span< const int >dimensionIndexes={})=0
setValues Sets the value for given time dimension index and geometry dimension index.
virtual void getValues(hydrocouple_variant *data, int timeIndex, int geometryIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int geometryIndexLength=1, std::span< const 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 timeIndex, int geometryIndex, std::span< const int >dimensionIndexes={}) const =0
getValue Gets the value for given time dimension index and geometry dimension index.
virtual ~ITimeGeometryComponentDataItem()=default
ITimeGeometryComponentDataItem destructor.
virtual void setValues(const hydrocouple_variant *data, int timeIndex, int geometryIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int geometryIndexLength=1, std::span< const int >dimensionLengths={})=0
Sets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
ITimeNetworkComponentDataItem is an IComponentDataItem with both temporal and network (edge/vertex) d...
Definition hydrocouplespatiotemporal.h:122
virtual void setValues(const hydrocouple_variant *data, int timeDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given edge dimension index and node dimension index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int timeDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given edge dimension index and node dimension index.
virtual void getValues(hydrocouple_variant *data, int timeDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given edge dimension index and node dimension index and size for a hyperslab.
virtual void setValue(const hydrocouple_variant &data, int timeDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={})=0
setValue for given edge dimension index and node dimension index and data.
ITimeRegularGrid2DComponentDataItem is an IComponentDataItem with both temporal and 2D regular grid (...
Definition hydrocouplespatiotemporal.h:470
virtual void setValue(const hydrocouple_variant &data, int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={})=0
setValue for given x cell index, y cell index, edge index, and node index.
virtual ~ITimeRegularGrid2DComponentDataItem()=default
~ITimeRegularGrid2DComponentItem. Destructor.
virtual void getValues(hydrocouple_variant *data, int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x cell index, y cell index, edge index, and node index.
virtual void setValues(const hydrocouple_variant *data, int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int xCellIndexLength=1, int yCellIndexLength=1, int cellEdgeIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given x cell index, y cell index, edge index, and node index and size for a hyperslab.
ITimeRegularGrid3DComponentDataItem is an IComponentDataItem with both temporal and 3D regular grid (...
Definition hydrocouplespatiotemporal.h:597
virtual ~ITimeRegularGrid3DComponentDataItem()=default
~ITimeRegularGrid3DComponentItem. Destructor.
virtual void getValues(hydrocouple_variant *data, int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
virtual void setValue(const hydrocouple_variant &data, int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={})=0
setValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual void getValue(hydrocouple_variant &data, int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x cell index, y cell index, z cell index, face index, and node index.
virtual void setValues(const hydrocouple_variant *data, int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellVertexIndex, std::span< const int >dimensionIndexes={}, int timeIndexLength=1, int xCellIndexLength=1, int yCellIndexLength=1, int zCellIndexLength=1, int cellFaceIndexLength=1, int cellVertexIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given x cell index, y cell index, z cell index, face index, and node index and size for...
ITimeSeriesPolyhedralSurfaceComponentDataItem is an IComponentDataItem with both temporal and polyhed...
Definition hydrocouplespatiotemporal.h:218
virtual void setValues(const hydrocouple_variant *data, int timeDimensionIndex, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={})=0
setValues for given cell dimension index, edge dimension index, and node dimension index and size for...
virtual void setValue(const hydrocouple_variant &data, int timeDimensionIndex, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={})=0
setValues for given cell dimension index, edge dimension index, and node dimension index.
virtual void getValues(hydrocouple_variant *data, int timeDimensionIndex, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int patchDimensionIndexLength=1, int edgeDimensionIndexLength=1, int vertexDimensionIndexLength=1, std::span< const int >dimensionLengths={}) const =0
getValues for given cell dimension index, edge dimension index and node dimension index and size for ...
virtual ~ITimeSeriesPolyhedralSurfaceComponentDataItem()=default
ITimeSeriesPolyhedralSurfaceComponentDataItem destructor.
virtual void getValue(hydrocouple_variant &data, int timeDimensionIndex, int patchDimensionIndex, int edgeDimensionIndex, int vertexDimensionIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given cell dimension index, edge dimension index, and node dimension index.
ITimeSeriesRasterComponentDataItem is an IComponentDataItem with both temporal and raster (x/y/band) ...
Definition hydrocouplespatiotemporal.h:355
virtual void setValue(const hydrocouple_variant &data, int timeDimensionIndex, int xIndex, int yIndex, int band, std::span< const int >dimensionIndexes={})=0
setValue for given x dimension index, y dimension index, and band dimension index.
virtual void getValues(hydrocouple_variant *data, int timeDimensionIndex, int xIndex, int yIndex, int bandIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, std::span< const int >dimensionLengths={}) const =0
Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void getValue(hydrocouple_variant &data, int timeDimensionIndex, int xIndex, int yIndex, int bandIndex, std::span< const int >dimensionIndexes={}) const =0
getValue for given x dimension index, y dimension index, and band dimension index.
virtual void setValues(const hydrocouple_variant *data, int timeDimensionIndex, int xIndex, int yIndex, int bandIndex, std::span< const int >dimensionIndexes={}, int timeDimensionIndexLength=1, int xIndexLength=1, int yIndexLength=1, int bandIndexLength=1, std::span< const int >dimensionLengths={})=0
Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual ~ITimeSeriesRasterComponentDataItem()=default
~ITimeSeriesRasterComponentDataItem Destructor.
ITimeSeriesTINComponentDataItem is an ITimeSeriesPolyhedralSurfaceComponentDataItem whose surface con...
Definition hydrocouplespatiotemporal.h:337
virtual HydroCouple::Spatial::ITIN * TIN() const =0
virtual ~ITimeSeriesTINComponentDataItem()=default
~ITimeTINComponentItem.
ITimeSeriesComponentDataItem is an IComponentItem with a temporal attribute.
Definition hydrocoupletemporal.h:112
Geospatial interface definitions for the HydroCouple component-based modeling framework.
Temporal interface definitions for the HydroCouple component-based modeling framework.
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition hydrocouple.h:61
std::variant< std::monostate, bool, char, int8_t, int16_t, int32_t, int64_t, uint8_t, uint16_t, uint32_t, uint64_t, float, double, long double, std::string, std::any > hydrocouple_variant
hydrocouple_variant is a variant type that can be used to store the core value types values of differ...
Definition hydrocouple.h:104