HydroCouple  2.0.0
HydroCouple Interface Definitions
hydrocouplespatiotemporal.h
Go to the documentation of this file.
1 
24 #ifndef HYDROCOUPLESPATIOTEMPORAL_H
25 #define HYDROCOUPLESPATIOTEMPORAL_H
26 
27 #include "hydrocoupletemporal.h"
28 #include "hydrocouplespatial.h"
29 
30 namespace HydroCouple
31 {
33  namespace SpatioTemporal
34  {
39  {
40 
43 
44  public:
45 
50 
56 
61  virtual int geometryCount() const = 0;
62 
68  virtual HydroCouple::Spatial::IGeometry *geometry(int geometryIndex) const = 0;
69 
76 
82 
89  virtual void getValue(int timeIndex, int geometryIndex, void *data) const = 0;
90 
99  virtual void getValues(int timeIndex, int geometryIndex, int timeStride, int geomStride, void *data) const = 0;
100 
107  virtual void setValue(int timeIndex, int geometryIndex, const void *data) = 0;
108 
117  virtual void setValues(int timeIndex, int geometryIndex, int timeStride, int geomStride, const void *data) = 0;
118 
119  };
120 
125  {
128 
129  public:
130 
135 
141 
147 
152  virtual IDimension *edgeDimension() const = 0;
153 
158  virtual IDimension *nodeDimension() const = 0;
159 
167  virtual void getValue(int timeIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const = 0;
168 
176  virtual void setValue(int timeIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data) = 0;
177  };
178 
184  {
187 
188  public:
189 
194 
200 
205 
210  virtual IDimension *cellDimension() const = 0;
211 
216  virtual IDimension *edgeDimension() const = 0;
217 
222  virtual IDimension *nodeDimension() const = 0;
223 
232  virtual void getValue(int timeIndex, int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const = 0;
233 
242  virtual void setValue(int timeIndex, int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data) = 0;
243  };
244 
249  {
250  public:
251 
256 
260  virtual HydroCouple::Spatial::ITIN* TIN() const = 0;
261 
262  };
263 
268  {
271 
272  public:
273 
278 
282  virtual HydroCouple::Spatial::IRaster* raster() const = 0;
283 
287  virtual IDimension* xDimension() const = 0;
288 
292  virtual IDimension* yDimension() const = 0;
293 
297  virtual IDimension* bandDimension() const = 0;
298 
307  virtual void getValue(int timeIndex, int xIndex, int yIndex, int band, void *data) const = 0;
308 
321  virtual void getValues(int timeIndex, int xindex, int yindex,
322  int bandIndex, int timeStride, int xstride,
323  int ystride, int bandStride, void *data) const = 0;
324 
333  virtual void setValue(int timeIndex, int xIndex, int yIndex, int band, const void *data) = 0;
334 
347  virtual void setValues(int timeIndex,int xindex, int yindex,
348  int bandIndex, int timeStride, int xstride,
349  int ystride, int bandStride, const void *data) = 0;
350 
351  };
352 
357  {
360 
361  public:
362 
367 
372 
378 
382  virtual IDimension *xCellDimension() const = 0;
383 
387  virtual IDimension *yCellDimension() const = 0;
388 
393  virtual IDimension *cellEdgeDimension() const = 0;
394 
399  virtual IDimension *cellNodeDimension() const = 0;
400 
410  virtual void getValue(int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, void *data) const = 0;
411 
412 
422  virtual void setValue(int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, const void *data) = 0;
423  };
424 
429  {
432 
433  public:
434 
439 
444 
450 
454  virtual IDimension *xCellDimension() const = 0;
455 
459  virtual IDimension *yCellDimension() const = 0;
460 
464  virtual IDimension *zCellDimension() const = 0;
465 
470  virtual IDimension *cellFaceDimension() const = 0;
471 
476  virtual IDimension *cellNodeDimension() const = 0;
477 
488  virtual void getValue(int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex,
489  int cellFaceIndex, int cellNodeIndex, void *data) const = 0;
490 
501  virtual void setValue(int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex,
502  int cellFaceIndex, int cellNodeIndex, const void *data) = 0;
503 
504  };
505 
510  {
513 
514  public:
515 
520 
525  virtual int locationsCount() const = 0;
526 
532  virtual HydroCouple::Spatial::IPoint *location(int locationIndex) const = 0;
533 
538  virtual IDimension *locationsDimension() const = 0;
539 
545  virtual IDimension *spatialDimension() const = 0;
546 
554  virtual void getValue(int timeIndex, int locationIndex, int spatialIndex, void *data) const = 0;
555 
565  virtual void getValues(int timeIndex, int locationIndex, int spatialDimensionIndex,
566  int locationStride, int spatialDimensionStride, void *data) const = 0;
574  virtual void setValue(int timeIndex, int locationIndex, int spatialDimensionIndex, const void *data) = 0;
575 
585  virtual void setValues(int timeIndex, int locationIndex, int spatialDimensionIndex,
586  int locationStride, int spatialDimensionStride, const void *data) = 0;
587  };
588  }
589 }
590 #endif // HYDROCOUPLESPATIOTEMPORAL_H
591 
virtual void setValue(const vector< int > &dimensionIndexes, const void *data)=0
Sets a multi-dimensional array of values for given dimension indexes.
virtual void getValue(const vector< int > &dimensionIndexes, void *data) const =0
Gets a multi-dimensional array of value for given dimension indexes. IndexArray = x + y * InSizeX + z...
IDimension provides the properties of the dimensions of a variable.
Definition: hydrocouple.h:863
The IEnvelope class.
Definition: hydrocouplespatial.h:100
IGeometry is the root class of the geometry hierarchy.
Definition: hydrocouplespatial.h:149
GeometryType
The type of IGeometry.
Definition: hydrocouplespatial.h:155
The INetwork class.
Definition: hydrocouplespatial.h:1090
An IPoint is a 0-dimensional geometric object and represents a single location in coordinate space.
Definition: hydrocouplespatial.h:505
An IPolyhedralSurface is a contiguous collection of polygons, which share common boundary segments.
Definition: hydrocouplespatial.h:1159
A Raster spatial feature.
Definition: hydrocouplespatial.h:1228
The IRegularGrid2D class.
Definition: hydrocouplespatial.h:1375
The IRegularGrid3D class.
Definition: hydrocouplespatial.h:1430
An ITIN is a triangulated irregular network IPolyhedralSurface consisting only of ITriangle patches.
Definition: hydrocouplespatial.h:1210
ITimeGeometryComponentItem represents an IComponentItem with both temporal and geometric components.
Definition: hydrocouplespatiotemporal.h:39
virtual void getValue(int timeIndex, int geometryIndex, void *data) const =0
getValue Gets the value for given time dimension index and geometry dimension index.
virtual void getValues(int timeIndex, int geometryIndex, int timeStride, int geomStride, void *data) const =0
Gets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual HydroCouple::Spatial::IEnvelope * envelope() const =0
envelope The envelope of the data item.
virtual void setValue(int timeIndex, int geometryIndex, const void *data)=0
setValues Sets the value for given time dimension index and geometry dimension index.
virtual HydroCouple::Spatial::IGeometry::GeometryType geometryType() const =0
geometryType
virtual HydroCouple::Spatial::IGeometry * geometry(int geometryIndex) const =0
geometry The geometry at the specified index.
virtual ~ITimeGeometryComponentDataItem()=0
~ITimeGeometryComponentItem.
virtual int geometryCount() const =0
geometryCount The number of geometries in the data item.
virtual void setValues(int timeIndex, int geometryIndex, int timeStride, int geomStride, const void *data)=0
Sets a multi-dimensional array of values for given time dimension index and size for a hyperslab.
virtual HydroCouple::IDimension * geometryDimension() const =0
The ITimeNetworkComponentDataItem class.
Definition: hydrocouplespatiotemporal.h:125
virtual HydroCouple::Spatial::MeshDataType meshDataType() const =0
meshDataType The mesh data type for the network.
virtual void setValue(int timeIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data)=0
setValue Sets the value for given time dimension index, edge dimension index and node dimension index...
virtual IDimension * edgeDimension() const =0
edgeDimension The dimension for the edges of the network.
virtual HydroCouple::Spatial::INetwork * network() const =0
network associated with this ITimeNetworkComponentItem.
virtual ~ITimeNetworkComponentDataItem()=0
~ITimeNetworkComponentItem.
virtual void getValue(int timeIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const =0
getValue Gets the value for given time dimension index, edge dimension index and node dimension index...
virtual IDimension * nodeDimension() const =0
nodeDimension The dimension for the nodes of the network.
The ITimePolyhedralSurfaceComponentItem class.
Definition: hydrocouplespatiotemporal.h:184
virtual void getValue(int timeIndex, int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, void *data) const =0
getValue Gets the value for given time dimension index, cell dimension index, edge dimension index an...
virtual ~ITimePolyhedralSurfaceComponentDataItem()=0
~ITimePolyhedralSurfaceComponentItem.
virtual void setValue(int timeIndex, int cellDimensionIndex, int edgeDimensionIndex, int nodeDimensionIndex, const void *data)=0
setValues Sets the value for given time dimension index, cell dimension index, edge dimension index a...
virtual HydroCouple::Spatial::IPolyhedralSurface * polyhedralSurface() const =0
virtual IDimension * cellDimension() const =0
cellDimension The dimension for the cells of the polyhedral surface.
virtual IDimension * nodeDimension() const =0
nodeDimension The dimension for the nodes of the polyhedral surface.
virtual IDimension * edgeDimension() const =0
edgeDimension The dimension for the edges of the polyhedral surface.
virtual HydroCouple::Spatial::MeshDataType meshDataType() const =0
polyhedralSurfaceDataType The mesh data type for the polyhedral surface.
The ITimeRasterComponentDataItem class.
Definition: hydrocouplespatiotemporal.h:268
virtual IDimension * bandDimension() const =0
IDimension for IRasterBands.
virtual void getValue(int timeIndex, int xIndex, int yIndex, int band, void *data) const =0
getValue Gets the value for given time dimension index, x dimension index, y dimension index and band...
virtual void getValues(int timeIndex, int xindex, int yindex, int bandIndex, int timeStride, int xstride, int ystride, int bandStride, void *data) const =0
Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void setValues(int timeIndex, int xindex, int yindex, int bandIndex, int timeStride, int xstride, int ystride, int bandStride, const void *data)=0
Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual HydroCouple::Spatial::IRaster * raster() const =0
IRaster associated with this IRasterComponentDataItem.
virtual IDimension * xDimension() const =0
IDimension for xDirection.
virtual ~ITimeRasterComponentDataItem()=0
~ITimeRasterComponentItem.
virtual IDimension * yDimension() const =0
IDimension for yDirection.
virtual void setValue(int timeIndex, int xIndex, int yIndex, int band, const void *data)=0
setValue Sets the value for given time dimension index, x dimension index, y dimension index and band...
The ITimeRegularGrid2DComponentItem class.
Definition: hydrocouplespatiotemporal.h:357
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual ~ITimeRegularGrid2DComponentDataItem()=0
~ITimeRegularGrid2DComponentItem. Destructor.
virtual IDimension * cellNodeDimension() const =0
cellNodeDimension. Node indices start from the bottom left and go in a counter clockwise order.
virtual IDimension * cellEdgeDimension() const =0
cellEdgeDimension. Edge indices start from the bottom and go in a counter clockwise order.
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
virtual void setValue(int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, const void *data)=0
setValue Sets the value for given time dimension index, x cell dimension index, y cell dimension inde...
virtual HydroCouple::Spatial::MeshDataType meshDataType() const =0
meshDataType The mesh data type for the regular grid.
virtual void getValue(int timeIndex, int xCellIndex, int yCellIndex, int cellEdgeIndex, int cellNodeIndex, void *data) const =0
getValue Gets the value for given time dimension index, x cell dimension index, y cell dimension inde...
virtual HydroCouple::Spatial::IRegularGrid2D * grid() const =0
IRegularGrid2D grid associated with this IRegularGrid2DComponentItem.
The ITimeRegularGrid3DComponentItem class.
Definition: hydrocouplespatiotemporal.h:429
virtual IDimension * xCellDimension() const =0
Number of X cells IDimension.
virtual IDimension * cellFaceDimension() const =0
cellFaceDimension 0 = Top , 1 = Bottom, 2 = left , 3 = Right, Up = 4, Down = 5
virtual IDimension * yCellDimension() const =0
Number of Y cells IDimension.
virtual ~ITimeRegularGrid3DComponentDataItem()=0
~ITimeRegularGrid3DComponentItem. Destructor.
virtual HydroCouple::Spatial::MeshDataType meshDataType() const =0
meshDataType The mesh data type for the regular grid.
virtual IDimension * cellNodeDimension() const =0
cellNodeDimension
virtual void getValue(int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellNodeIndex, void *data) const =0
getValue Gets the value for given time dimension index, x cell dimension index, y cell dimension inde...
virtual IDimension * zCellDimension() const =0
Number of Z cells IDimension.
virtual HydroCouple::Spatial::IRegularGrid3D * grid() const =0
IRegularGrid3D grid associated with this IRegularGrid3DComponentItem.
virtual void setValue(int timeIndex, int xCellIndex, int yCellIndex, int zCellIndex, int cellFaceIndex, int cellNodeIndex, const void *data)=0
setValue Sets the value for given time dimension index, x cell dimension index, y cell dimension inde...
The ITINComponentItem class.
Definition: hydrocouplespatiotemporal.h:249
virtual ~ITimeTINComponentDataItem()=0
~ITimeTINComponentItem.
virtual HydroCouple::Spatial::ITIN * TIN() const =0
The ITimeVectorComponentDataItem class.
Definition: hydrocouplespatiotemporal.h:510
virtual void getValue(int timeIndex, int locationIndex, int spatialIndex, void *data) const =0
getValue Gets the value for given time dimension index, location dimension index and spatial dimensio...
virtual void getValues(int timeIndex, int locationIndex, int spatialDimensionIndex, int locationStride, int spatialDimensionStride, void *data) const =0
getValues Gets a multi-dimensional array of values for given dimension for a hyperslab.
virtual HydroCouple::Spatial::IPoint * location(int locationIndex) const =0
location The location at the specified index.
virtual int locationsCount() const =0
locationCount
virtual IDimension * locationsDimension() const =0
locationsDimension The dimension for the locations of the vector.
virtual ~ITimeVectorComponentDataItem()=0
~ITimeVectorComponentItem.
virtual IDimension * spatialDimension() const =0
dataTypeDimension alway has a length of 3. 0 = x-direction value, 1 = y-direction,...
virtual void setValues(int timeIndex, int locationIndex, int spatialDimensionIndex, int locationStride, int spatialDimensionStride, const void *data)=0
setValues Sets a multi-dimensional array of values for given dimension for a hyperslab.
virtual void setValue(int timeIndex, int locationIndex, int spatialDimensionIndex, const void *data)=0
setValue Sets the value for given time dimension index, location dimension index and spatial dimensio...
ITimeComponentItem is an IComponentItem with a temporal attribute. This class cannot be directly inst...
Definition: hydrocoupletemporal.h:103
MeshDataType
The MeshDataType enum describes the part of the geometry of the mesh that data corresponds to.
Definition: hydrocouplespatial.h:48
HydroCouple namespace contains the core interface specifications for the HydroCouple component-based ...
Definition: hydrocouple.h:50