17 #ifndef vtkmlib_ArrayConverters_h
18 #define vtkmlib_ArrayConverters_h
20 #include "vtkAcceleratorsVTKmModule.h"
21 #include "vtkmConfig.h"
26 #include <vtkm/cont/ArrayHandleSOA.h>
27 #include <vtkm/cont/Field.h>
29 #include <type_traits>
40 class CoordinateSystem;
47 template <
typename DataArrayType, vtkm::IdComponent NumComponents>
50 template <
typename T, vtkm::IdComponent NumComponents>
54 typename std::conditional<NumComponents == 1, T, vtkm::Vec<T, NumComponents> >
::type;
55 using StorageType = vtkm::cont::internal::Storage<ValueType, vtkm::cont::StorageTagBasic>;
56 using ArrayHandleType = vtkm::cont::ArrayHandle<ValueType, vtkm::cont::StorageTagBasic>;
60 return vtkm::cont::make_ArrayHandle(
65 template <
typename T, vtkm::IdComponent NumComponents>
69 using StorageType = vtkm::cont::internal::Storage<ValueType, vtkm::cont::StorageTagSOA>;
70 using ArrayHandleType = vtkm::cont::ArrayHandle<ValueType, vtkm::cont::StorageTagSOA>;
75 vtkm::cont::internal::Storage<ValueType, vtkm::cont::StorageTagSOA> storage;
76 for (vtkm::IdComponent i = 0; i < NumComponents; ++i)
79 vtkm::cont::make_ArrayHandle<T>(
83 return vtkm::cont::ArrayHandleSOA<ValueType>(storage);
90 using StorageType = vtkm::cont::internal::Storage<T, vtkm::cont::StorageTagBasic>;
95 return vtkm::cont::make_ArrayHandle(
109 VTKACCELERATORSVTKM_EXPORT
113 VTKACCELERATORSVTKM_EXPORT
120 VTKACCELERATORSVTKM_EXPORT
123 VTKACCELERATORSVTKM_EXPORT
126 VTKACCELERATORSVTKM_EXPORT
tovtkm::FieldsFlag operator&(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
tovtkm::FieldsFlag operator|(const tovtkm::FieldsFlag &a, const tovtkm::FieldsFlag &b)
Array-Of-Structs implementation of vtkGenericDataArray.
ValueType * GetPointer(vtkIdType valueIdx)
Get the address of a particular data index.
vtkIdType GetNumberOfTuples() const
Get the number of complete tuples (a component group) in the array.
abstract superclass for arrays of numeric data
abstract class to specify dataset behavior
represent and manipulate 3D points
Struct-Of-Arrays implementation of vtkGenericDataArray.
ValueType * GetComponentArrayPointer(int comp)
Return a pointer to a contiguous block of memory containing all values for a particular components (i...
VTKACCELERATORSVTKM_EXPORT bool ConvertArrays(const vtkm::cont::DataSet &input, vtkDataSet *output)
VTKACCELERATORSVTKM_EXPORT vtkDataArray * Convert(const vtkm::cont::Field &input)
VTKACCELERATORSVTKM_EXPORT vtkm::cont::Field Convert(vtkDataArray *input, int association)
VTKACCELERATORSVTKM_EXPORT void ProcessFields(vtkDataSet *input, vtkm::cont::DataSet &dataset, tovtkm::FieldsFlag fields)
std::map< std::string, DataArray > DataSet
key: variable name, value: DataArray
typename std::conditional< NumComponents==1, T, vtkm::Vec< T, NumComponents > >::type ValueType
vtkm::cont::ArrayHandle< ValueType, vtkm::cont::StorageTagBasic > ArrayHandleType
vtkm::cont::internal::Storage< ValueType, vtkm::cont::StorageTagBasic > StorageType
static ArrayHandleType Wrap(vtkAOSDataArrayTemplate< T > *input)
static ArrayHandleType Wrap(vtkSOADataArrayTemplate< T > *input)
vtkm::cont::ArrayHandle< T, vtkm::cont::StorageTagBasic > ArrayHandleType
vtkm::cont::internal::Storage< T, vtkm::cont::StorageTagBasic > StorageType
vtkm::Vec< T, NumComponents > ValueType
vtkm::cont::internal::Storage< ValueType, vtkm::cont::StorageTagSOA > StorageType
static ArrayHandleType Wrap(vtkSOADataArrayTemplate< T > *input)
vtkm::cont::ArrayHandle< ValueType, vtkm::cont::StorageTagSOA > ArrayHandleType