54 #ifndef vtk_m_worklet_contourtree_augmented_active_graph_find_governing_saddles_worklet_h
55 #define vtk_m_worklet_contourtree_augmented_active_graph_find_governing_saddles_worklet_h
65 namespace contourtree_augmented
67 namespace active_graph_inc
76 WholeArrayInOut edgeSorter,
78 WholeArrayIn edgeNear,
79 WholeArrayOut hyperarcs,
80 WholeArrayOut outdegree);
88 template <
typename InOutFieldPortalType,
typename InFieldPortalType,
typename OutFieldPortalType>
90 const InOutFieldPortalType& edgeSorterPortal,
91 const InFieldPortalType& edgeFarPortal,
92 const InFieldPortalType& edgeNearPortal,
93 const OutFieldPortalType& hyperarcsPortal,
94 const OutFieldPortalType& outdegreePortal)
const
97 bool isBestSaddleEdge =
true;
99 vtkm::Id edge = edgeSorterPortal.Get(edgeNo);
105 vtkm::Id prevEdge = edgeSorterPortal.Get(edgeNo - 1);
107 if (edgeFarPortal.Get(prevEdge) == edgeFarPortal.Get(edge))
108 isBestSaddleEdge =
false;
111 if (isBestSaddleEdge)
114 vtkm::Id saddle = edgeNearPortal.Get(edge);
116 vtkm::Id extreme = edgeFarPortal.Get(edge);
124 outdegreePortal.Set(extreme, 0);
132 hyperarcsPortal.Set(saddle, hyperarcsPortal.Get(saddle) |
IS_SUPERNODE);