10 #ifndef vtk_m_exec_arg_FetchExtrude_h
11 #define vtk_m_exec_arg_FetchExtrude_h
39 template <
typename FetchType,
typename ExecObjectType>
43 template <
typename ScatterAndMaskMode>
46 ScatterAndMaskMode>& indices,
50 const auto& xgcidx = indices.GetIndicesIncident();
51 const vtkm::Id offset1 = (xgcidx.Planes[0] * xgcidx.NumberOfPointsPerPlane);
52 const vtkm::Id offset2 = (xgcidx.Planes[1] * xgcidx.NumberOfPointsPerPlane);
54 result[0] = offset1 + xgcidx.PointIds[0][0];
55 result[1] = offset1 + xgcidx.PointIds[0][1];
56 result[2] = offset1 + xgcidx.PointIds[0][2];
57 result[3] = offset2 + xgcidx.PointIds[1][0];
58 result[4] = offset2 + xgcidx.PointIds[1][1];
59 result[5] = offset2 + xgcidx.PointIds[1][2];
64 template <
typename ConnectivityType,
typename ScatterAndMaskMode>
67 const ExecObjectType&)
const -> decltype(indices.GetIndicesIncident())
69 return indices.GetIndicesIncident();
72 template <
typename ThreadIndicesType,
typename ValueType>
83 vtkm::internal::ArrayPortalXGCCoordinates<T>>
88 template <
typename ScatterAndMaskMode>
91 ScatterAndMaskMode>& indices,
92 const vtkm::internal::ArrayPortalXGCCoordinates<T>& portal)
93 -> decltype(portal.GetWedge(indices.GetIndicesIncident()))
95 return portal.GetWedge(indices.GetIndicesIncident());
99 template <
typename ThreadIndicesType>
101 const vtkm::internal::ArrayPortalXGCCoordinates<T>& field)
const
103 detail::FetchArrayTopologyMapInImplementation<
typename ThreadIndicesType::Connectivity,
104 vtkm::internal::ArrayPortalXGCCoordinates<T>,
105 ThreadIndicesType>::
Load(indices, field))
107 using Implementation =
108 detail::FetchArrayTopologyMapInImplementation<
typename ThreadIndicesType::Connectivity,
109 vtkm::internal::ArrayPortalXGCCoordinates<T>,
111 return Implementation::Load(indices, field);
114 template <
typename ThreadIndicesType,
typename ValueType>
116 const vtkm::internal::ArrayPortalXGCCoordinates<T>&,
124 template <
typename T>
125 struct Fetch<
vtkm::exec::arg::FetchTagArrayDirectIn,
127 vtkm::internal::ArrayPortalXGCCoordinates<T>>
131 template <
typename ThreadIndicesType>
133 const vtkm::internal::ArrayPortalXGCCoordinates<T>& points)
134 -> decltype(points.Get(indices.GetInputIndex()))
137 return points.Get(indices.GetInputIndex());
141 template <
typename ScatterAndMaskMode>
144 ScatterAndMaskMode>& indices,
145 const vtkm::internal::ArrayPortalXGCCoordinates<T>& points)
146 -> decltype(points.Get(indices.GetIndexLogical()))
149 return points.Get(indices.GetIndexLogical());
152 template <
typename ThreadIndicesType,
typename ValueType>
154 const vtkm::internal::ArrayPortalXGCCoordinates<T>&,