HydroCouple  2.0.0
HydroCouple Interface Definitions
Loading...
Searching...
No Matches
hydrocouplespatiotemporal.h
Go to the documentation of this file.
1
21#ifndef HYDROCOUPLESPATIOTEMPORAL_H
22#define HYDROCOUPLESPATIOTEMPORAL_H
23
24#include "hydrocoupletemporal.h"
25#include "hydrocouplespatial.h"
26
27namespace HydroCouple
28{
30 namespace SpatioTemporal
31 {
36 {
37
38 public:
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;
47
52
60 virtual void getValue(
62 int timeIndex,
63 int geometryIndex,
64 std::span<const int>dimensionIndexes = {}) const = 0;
65
76 virtual void getValues(
78 int timeIndex,
79 int geometryIndex,
80 std::span<const int>dimensionIndexes = {},
81 int timeIndexLength = 1,
82 int geometryIndexLength = 1,
83 std::span<const int>dimensionLengths = {}) const = 0;
84
92 virtual void setValue(
93 const hydrocouple_variant &data,
94 int timeIndex,
95 int geometryIndex,
96 std::span<const int>dimensionIndexes = {}) = 0;
97
107 virtual void setValues(
108 const hydrocouple_variant *data,
109 int timeIndex,
110 int geometryIndex,
111 std::span<const int>dimensionIndexes = {},
112 int timeIndexLength = 1,
113 int geometryIndexLength = 1,
114 std::span<const int>dimensionLengths = {}) = 0;
115 };
116
122 {
123
124 public:
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;
133
142 virtual void getValue(
144 int timeDimensionIndex,
145 int edgeDimensionIndex,
146 int vertexDimensionIndex,
147 std::span<const int>dimensionIndexes = {}) const = 0;
148
162 virtual void getValues(
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;
172
181 virtual void setValue(
182 const hydrocouple_variant &data,
183 int timeDimensionIndex,
184 int edgeDimensionIndex,
185 int vertexDimensionIndex,
186 std::span<const int>dimensionIndexes = {}) = 0;
187
201 virtual void setValues(
202 const hydrocouple_variant *data,
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;
211 };
212
218 {
219
220 public:
221 using ITimeSeriesComponentDataItem::getValue;
222 using ITimeSeriesComponentDataItem::getValues;
223 using ITimeSeriesComponentDataItem::setValue;
224 using ITimeSeriesComponentDataItem::setValues;
225
226 using IPolyhedralSurfaceComponentDataItem::getValue;
227 using IPolyhedralSurfaceComponentDataItem::getValues;
228 using IPolyhedralSurfaceComponentDataItem::setValue;
229 using IPolyhedralSurfaceComponentDataItem::setValues;
230
235
245 virtual void getValue(
247 int timeDimensionIndex,
248 int patchDimensionIndex,
249 int edgeDimensionIndex,
250 int vertexDimensionIndex,
251 std::span<const int>dimensionIndexes = {}) const = 0;
252
272 virtual void getValues(
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;
284
295 virtual void setValue(
296 const hydrocouple_variant &data,
297 int timeDimensionIndex,
298 int patchDimensionIndex,
299 int edgeDimensionIndex,
300 int vertexDimensionIndex,
301 std::span<const int>dimensionIndexes = {}) = 0;
302
318 virtual void setValues(
319 const hydrocouple_variant *data,
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;
330 };
331
337 {
338 public:
343
347 [[nodiscard]] virtual HydroCouple::Spatial::ITIN *TIN() const = 0;
348 };
349
355 {
356
357 public:
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;
366
371
382 virtual void getValue(
384 int timeDimensionIndex,
385 int xIndex,
386 int yIndex,
387 int bandIndex,
388 std::span<const int>dimensionIndexes = {}) const = 0;
389
405 virtual void getValues(
407 int timeDimensionIndex,
408 int xIndex,
409 int yIndex,
410 int bandIndex,
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;
417
428 virtual void setValue(
429 const hydrocouple_variant &data,
430 int timeDimensionIndex,
431 int xIndex,
432 int yIndex,
433 int band,
434 std::span<const int>dimensionIndexes = {}) = 0;
435
451 virtual void setValues(
452 const hydrocouple_variant *data,
453 int timeDimensionIndex,
454 int xIndex,
455 int yIndex,
456 int bandIndex,
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;
463 };
464
470 {
471
472 public:
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;
481
486
498 virtual void getValue(
500 int timeIndex,
501 int xCellIndex,
502 int yCellIndex,
503 int cellEdgeIndex,
504 int cellVertexIndex,
505 std::span<const int>dimensionIndexes = {}) const = 0;
506
524 virtual void getValues(
526 int timeIndex,
527 int xCellIndex,
528 int yCellIndex,
529 int cellEdgeIndex,
530 int cellVertexIndex,
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;
538
550 virtual void setValue(
551 const hydrocouple_variant &data,
552 int timeIndex,
553 int xCellIndex,
554 int yCellIndex,
555 int cellEdgeIndex,
556 int cellVertexIndex,
557 std::span<const int>dimensionIndexes = {}) = 0;
558
576 virtual void setValues(
577 const hydrocouple_variant *data,
578 int timeIndex,
579 int xCellIndex,
580 int yCellIndex,
581 int cellEdgeIndex,
582 int cellVertexIndex,
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;
590 };
591
597 {
598
599 public:
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;
608
613
626 virtual void getValue(
628 int timeIndex,
629 int xCellIndex,
630 int yCellIndex,
631 int zCellIndex,
632 int cellFaceIndex,
633 int cellVertexIndex,
634 std::span<const int>dimensionIndexes = {}) const = 0;
635
655 virtual void getValues(
657 int timeIndex,
658 int xCellIndex,
659 int yCellIndex,
660 int zCellIndex,
661 int cellFaceIndex,
662 int cellVertexIndex,
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;
671
684 virtual void setValue(
685 const hydrocouple_variant &data,
686 int timeIndex,
687 int xCellIndex,
688 int yCellIndex,
689 int zCellIndex,
690 int cellFaceIndex,
691 int cellVertexIndex,
692 std::span<const int>dimensionIndexes = {}) = 0;
693
713 virtual void setValues(
714 const hydrocouple_variant *data,
715 int timeIndex,
716 int xCellIndex,
717 int yCellIndex,
718 int zCellIndex,
719 int cellFaceIndex,
720 int cellVertexIndex,
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;
729 };
730 }
731}
732#endif // HYDROCOUPLESPATIOTEMPORAL_H
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