23 #ifndef GEOS_COMMON_DATATYPES_HPP
24 #define GEOS_COMMON_DATATYPES_HPP
33 #include "StdContainerWrappers.hpp"
36 #include "LvArray/src/Macros.hpp"
37 #include "LvArray/src/Array.hpp"
38 #include "LvArray/src/ArrayOfArrays.hpp"
39 #include "LvArray/src/ArrayOfSets.hpp"
40 #include "LvArray/src/SparsityPattern.hpp"
41 #include "LvArray/src/CRSMatrix.hpp"
42 #include "LvArray/src/SortedArray.hpp"
43 #include "LvArray/src/StackBuffer.hpp"
44 #include "LvArray/src/ChaiBuffer.hpp"
48 #include <camp/camp.hpp>
62 #include <string_view>
103 #if defined( GEOS_USE_BOUNDS_CHECK )
147 template<
typename T,
149 typename PERMUTATION=camp::make_idx_seq_t< NDIM > >
150 using Array = LvArray::Array< T, NDIM, PERMUTATION, localIndex, LvArray::ChaiBuffer >;
153 template<
typename T,
156 using ArrayView = LvArray::ArrayView< T, NDIM, USD, localIndex, LvArray::ChaiBuffer >;
159 template<
typename T,
int NDIM,
int USD = NDIM - 1 >
160 using ArraySlice = LvArray::ArraySlice< T, NDIM, USD, localIndex >;
163 template<
typename T,
int NDIM,
int MAXSIZE,
typename PERMUTATION=camp::make_
idx_seq_t< NDIM > >
164 using StackArray = LvArray::StackArray< T, NDIM, PERMUTATION, localIndex, MAXSIZE >;
183 template<
typename T >
187 template<
typename T >
191 template<
typename T,
int USD = 0 >
195 template<
typename T,
int MAXSIZE >
199 template<
typename T,
typename PERMUTATION=camp::make_
idx_seq_t< 2 > >
203 template<
typename T,
int USD = 1 >
207 template<
typename T,
int USD = 1 >
211 template<
typename T,
int MAXSIZE >
215 template<
typename T,
typename PERMUTATION=camp::make_
idx_seq_t< 3 > >
219 template<
typename T,
int USD=2 >
223 template<
typename T,
int USD=2 >
227 template<
typename T,
int MAXSIZE >
231 template<
typename T,
typename PERMUTATION=camp::make_
idx_seq_t< 4 > >
235 template<
typename T,
int USD=3 >
239 template<
typename T,
int USD=3 >
243 template<
typename T,
int MAXSIZE >
247 template<
typename T,
typename PERMUTATION=camp::make_
idx_seq_t< 5 > >
251 template<
typename T,
int USD=4 >
255 template<
typename T,
int USD=4 >
259 template<
typename T,
int MAXSIZE >
270 template<
typename T >
271 using set = std::set< T >;
274 template<
typename T >
275 using SortedArray = LvArray::SortedArray< T, localIndex, LvArray::ChaiBuffer >;
278 template<
typename T >
279 using SortedArrayView = LvArray::SortedArrayView< T, localIndex, LvArray::ChaiBuffer >;
289 template<
typename T,
typename INDEX_TYPE=localIndex >
290 using ArrayOfArrays = LvArray::ArrayOfArrays< T, INDEX_TYPE, LvArray::ChaiBuffer >;
293 template< typename T, typename INDEX_TYPE=localIndex, bool CONST_SIZES=std::is_const< T >::value >
294 using ArrayOfArraysView = LvArray::ArrayOfArraysView< T, INDEX_TYPE const, CONST_SIZES, LvArray::ChaiBuffer >;
297 template<
typename T,
typename INDEX_TYPE=localIndex >
298 using ArrayOfSets = LvArray::ArrayOfSets< T, INDEX_TYPE, LvArray::ChaiBuffer >;
301 template<
typename T,
typename INDEX_TYPE=localIndex >
302 using ArrayOfSetsView = LvArray::ArrayOfSetsView< T, INDEX_TYPE const, LvArray::ChaiBuffer >;
305 template<
typename COL_INDEX,
typename INDEX_TYPE=localIndex >
306 using SparsityPattern = LvArray::SparsityPattern< COL_INDEX, INDEX_TYPE, LvArray::ChaiBuffer >;
309 template<
typename COL_INDEX,
typename INDEX_TYPE=localIndex >
310 using SparsityPatternView = LvArray::SparsityPatternView< COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer >;
313 template<
typename T,
typename COL_INDEX=globalIndex >
314 using CRSMatrix = LvArray::CRSMatrix< T, COL_INDEX, localIndex, LvArray::ChaiBuffer >;
317 template<
typename T,
typename COL_INDEX=globalIndex >
318 using CRSMatrixView = LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer >;
335 template<
typename TKEY,
typename TVAL,
typename SORTED >
340 template<
typename TKEY,
typename TVAL >
341 class mapBase< TKEY, TVAL, std::integral_constant< bool, true > > :
public std::map< TKEY, TVAL >
346 template<
typename TKEY,
typename TVAL >
347 class mapBase< TKEY, TVAL, std::integral_constant< bool, false > > :
public std::unordered_map< TKEY, TVAL >
362 template<
typename K,
typename V,
typename SORTED >
367 for(
auto const & pair :
map )
369 stream << pair.first <<
" : " << pair.second <<
"\n";
376 template<
typename TKEY,
typename TVAL >
380 template<
typename TKEY,
typename TVAL >
#define GEOS_LOCALINDEX_TYPE
The type that localIndex will be aliased to.
#define GEOS_GLOBALINDEX_TYPE
The type that globalIndex will be aliased to.
Base template for ordered and unordered maps.
array2d< real32 > real32_array2d
A 2-dimensional array of geos::real32 types.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
stdVector< string > string_array
A 1-dimensional array of geos::string types.
LvArray::Array< T, NDIM, PERMUTATION, localIndex, LvArray::ChaiBuffer > Array
Multidimensional array type. See LvArray:Array for details.
StackArray< T, 2, MAXSIZE > stackArray2d
Alias for 2D stack array.
float real32
32-bit floating point type.
array1d< localIndex > localIndex_array
A 1-dimensional array of geos::localIndex types.
unsigned long long int Timestamp
Timestamp type (used to perform actions such a sparsity pattern computation after mesh modifications)
array2d< globalIndex > globalIndex_array2d
A 2-dimensional array of geos::globalIndex types.
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
StackArray< T, 4, MAXSIZE > stackArray4d
Alias for 4D stack array.
Array< T, 5, PERMUTATION > array5d
Alias for 5D array.
LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
array1d< globalIndex > globalIndex_array
A 1-dimensional array of geos::globalIndex types.
Array< T, 3, PERMUTATION > array3d
Alias for 3D array.
std::string string
String type.
constexpr static auto GLOBALINDEX_MAX
A variable for the maximum value of a geos::globalIndex.
LvArray::ArrayOfSetsView< T, INDEX_TYPE const, LvArray::ChaiBuffer > ArrayOfSetsView
View of array of variable-sized sets. See LvArray::ArrayOfSetsView for details.
array1d< integer > integer_array
A 1-dimensional array of geos::integer types.
constexpr static auto LOCALINDEX_MAX
A variable for the maximum value of a geos::localIndex.
array4d< integer > integer_array4d
A 4-dimensional array of geos::integer types.
mapBase< TKEY, TVAL, std::integral_constant< bool, false > > unordered_map
Unordered map type.
LvArray::StackArray< T, NDIM, PERMUTATION, localIndex, MAXSIZE > StackArray
Multidimensional stack-based array type. See LvArray:StackArray for details.
constexpr static localIndex unmappedLocalIndexValue
A global variable for the value of a object that has not been assigned a geos::globalIndex.
LvArray::SparsityPatternView< COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > SparsityPatternView
Alias for Sparsity pattern View.
array4d< localIndex > localIndex_array4d
A 4-dimensional array of geos::localIndex types.
LvArray::SparsityPattern< COL_INDEX, INDEX_TYPE, LvArray::ChaiBuffer > SparsityPattern
Alias for Sparsity pattern class.
array4d< real64 > real64_array4d
A 4-dimensional array of geos::real64 types.
StackArray< T, 1, MAXSIZE > stackArray1d
Alias for 1D stack array.
LvArray::ArrayOfArraysView< T, INDEX_TYPE const, CONST_SIZES, LvArray::ChaiBuffer > ArrayOfArraysView
View of array of variable-sized arrays. See LvArray::ArrayOfArraysView for details.
array4d< globalIndex > globalIndex_array4d
A 4-dimensional array of geos::globalIndex types.
ArraySlice< T, 2, USD > arraySlice2d
Alias for 2D array slice.
ArraySlice< T, 3, USD > arraySlice3d
Alias for 3D array slice.
array1d< Path > path_array
A 1-dimensional array of geos::Path types.
std::set< T > set
A set of local indices.
ArrayView< T, 5, USD > arrayView5d
Alias for 5D array view.
double real64
64-bit floating point type.
array3d< globalIndex > globalIndex_array3d
A 3-dimensional array of geos::globalIndex types.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
ArraySlice< T, 1, USD > arraySlice1d
Alias for 1D array slice.
array3d< real32 > real32_array3d
A 3-dimensional array of geos::real32 types.
std::int32_t integer
Signed integer type.
stdVector< buffer_unit_type > buffer_type
Type of storage for communication buffers.
array3d< localIndex > localIndex_array3d
A 3-dimensional array of geos::localIndex types.
LvArray::CRSMatrix< T, COL_INDEX, localIndex, LvArray::ChaiBuffer > CRSMatrix
Alias for CRS Matrix class.
array3d< integer > integer_array3d
A 3-dimensional array of geos::integer types.
array2d< integer > integer_array2d
A 2-dimensional array of geos::integer types.
array1d< real64 > real64_array
A 1-dimensional array of geos::real64 types.
ArraySlice< T, 4, USD > arraySlice4d
Alias for 4D array slice.
array2d< real64 > real64_array2d
A 2-dimensional array of geos::real64 types.
ArraySlice< T, 5, 4 > arraySlice5d
Alias for 5D array slice.
std::size_t size_t
Unsigned size type.
mapBase< TKEY, TVAL, std::integral_constant< bool, true > > map
Ordered map type.
std::ostream & operator<<(std::ostream &stream, mapBase< K, V, SORTED > const &map)
Stream output operator for map types.
LvArray::SortedArray< T, localIndex, LvArray::ChaiBuffer > SortedArray
A sorted array of local indices.
LvArray::ArrayOfSets< T, INDEX_TYPE, LvArray::ChaiBuffer > ArrayOfSets
Array of variable-sized sets. See LvArray::ArrayOfSets for details.
Array< T, 4, PERMUTATION > array4d
Alias for 4D array.
array1d< real32 > real32_array
A 1-dimensional array of geos::real32 types.
LvArray::SortedArrayView< T, localIndex, LvArray::ChaiBuffer > SortedArrayView
A sorted array view of local indices.
std::vector< T, Allocator > stdVector
ArrayView< T, 4, USD > arrayView4d
Alias for 4D array view.
LvArray::ArraySlice< T, NDIM, USD, localIndex > ArraySlice
Multidimensional array slice type. See LvArray:ArraySlice for details.
StackArray< T, 3, MAXSIZE > stackArray3d
Alias for 3D stack array.
array4d< real32 > real32_array4d
A 4-dimensional array of geos::real32 types.
array3d< real64 > real64_array3d
A 3-dimensional array of geos::real64 types.
signed char buffer_unit_type
Type stored in communication buffers.
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
StackArray< T, 5, MAXSIZE > stackArray5d
Alias for 5D stack array.
array2d< localIndex > localIndex_array2d
A 2-dimensional array of geos::localIndex types.
Array< T, 1 > array1d
Alias for 1D array.
LvArray::ArrayOfArrays< T, INDEX_TYPE, LvArray::ChaiBuffer > ArrayOfArrays
Array of variable-sized arrays. See LvArray::ArrayOfArrays for details.
std::string_view string_view
String type.
LvArray::ArrayView< T, NDIM, USD, localIndex, LvArray::ChaiBuffer > ArrayView
Multidimensional array view type. See LvArray:ArrayView for details.
ArrayView< T, 3, USD > arrayView3d
Alias for 3D array view.