10 #ifndef vtk_m_exec_CellEdge_h
11 #define vtk_m_exec_CellEdge_h
53 return numEdges[cellShapeId];
64 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
65 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
67 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
68 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
70 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
71 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
73 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
74 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
76 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
77 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
79 { { 0, 1 }, { 1, 2 }, { 2, 0 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
80 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
82 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
83 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
85 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
86 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
88 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
89 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
91 { { 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 0 }, { -1, -1 }, { -1, -1 },
92 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
94 { { 0, 1 }, { 1, 2 }, { 2, 0 }, { 0, 3 }, { 1, 3 }, { 2, 3 },
95 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
97 { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 },
98 { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
100 { { 0, 1 }, { 1, 2 }, { 3, 2 }, { 0, 3 }, { 4, 5 }, { 5, 6 },
101 { 7, 6 }, { 4, 7 }, { 0, 4 }, { 1, 5 }, { 3, 7 }, { 2, 6 } },
103 { { 0, 1 }, { 1, 2 }, { 2, 0 }, { 3, 4 }, { 4, 5 }, { 5, 3 },
104 { 0, 3 }, { 1, 4 }, { 2, 5 }, { -1, -1 }, { -1, -1 }, { -1, -1 } },
106 { { 0, 1 }, { 1, 2 }, { 2, 3 }, { 3, 0 }, { 0, 4 }, { 1, 4 },
107 { 2, 4 }, { 3, 4 }, { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } }
111 return pointsInEdge[cellShapeId][edgeIndex][localPointIndex];
117 template <
typename CellShapeTag>
132 vtkm::CellShapeTagPolygon,
140 numEdges = numPoints;
145 vtkm::CellShapeTagPolyLine,
163 return CellEdgeNumberOfEdges(numPoints, vtkm::CellShapeTagPolygon(), numEdges);
167 return CellEdgeNumberOfEdges(numPoints, vtkm::CellShapeTagPolyLine(), numEdges);
171 numEdges = detail::CellEdgeTables{}.NumEdges(shape.
Id);
176 template <
typename CellShapeTag>
183 if ((pointIndex < 0) || (pointIndex > 1))
188 if ((edgeIndex < 0) || (edgeIndex >= detail::CellEdgeTables::MAX_NUM_EDGES))
196 if (edgeIndex >= numEdges)
202 detail::CellEdgeTables table;
210 vtkm::CellShapeTagPolygon,
218 if ((pointIndex < 0) || (pointIndex > 1))
223 if ((edgeIndex < 0) || (edgeIndex >= numPoints))
229 if (edgeIndex + pointIndex < numPoints)
231 result = edgeIndex + pointIndex;
246 if ((pointIndex < 0) || (pointIndex > 1))
251 if ((edgeIndex < 0) || (edgeIndex >= detail::CellEdgeTables::MAX_NUM_EDGES))
259 return CellEdgeLocalIndex(
260 numPoints, pointIndex, edgeIndex, vtkm::CellShapeTagPolygon(), result);
264 detail::CellEdgeTables table;
265 if (edgeIndex >= table.NumEdges(shape.
Id))
271 result = table.PointsInEdge(shape.
Id, edgeIndex, pointIndex);
282 template <
typename CellShapeTag,
typename GlobalPo
intIndicesVecType>
287 const GlobalPointIndicesVecType& globalPointIndicesVec,
293 VTKM_RETURN_ON_ERROR(vtkm::exec::CellEdgeLocalIndex(numPoints, 0, edgeIndex, shape, localIndex0));
294 vtkm::Id pointIndex0 = globalPointIndicesVec[localIndex0];
297 VTKM_RETURN_ON_ERROR(vtkm::exec::CellEdgeLocalIndex(numPoints, 1, edgeIndex, shape, localIndex1));
298 vtkm::Id pointIndex1 = globalPointIndicesVec[localIndex1];
300 if (pointIndex0 < pointIndex1)
302 result =
vtkm::Id2(pointIndex0, pointIndex1);
306 result =
vtkm::Id2(pointIndex1, pointIndex0);
315 #endif //vtk_m_exec_CellFaces_h