42#if VTK_VERSION_STRIPPED < 940
43 vtkNew<vtkIdFilter> id_filter;
44 id_filter->SetInputData(bulk_mesh);
45 id_filter->SetCellIdsArrayName(
"bulk_element_ids");
46 id_filter->SetPointIds(
false);
47 id_filter->SetCellIds(
true);
51 vtkNew<vtkGenerateIds> generate_ids;
52 generate_ids->SetInputData(bulk_mesh);
53 generate_ids->SetCellIdsArrayName(
"bulk_element_ids");
54 generate_ids->PointIdsOff();
55 generate_ids->CellIdsOn();
56 generate_ids->Update();
58 static_cast<vtkUnstructuredGrid*
>(generate_ids->GetOutput());
60 locator_ = vtkSmartPointer<vtkCellTreeLocator>::New();
76 vtkSmartPointer<vtkUnstructuredGrid>
find(Eigen::Vector3d
const& coords,
77 double const tolerance)
81 vtkNew<vtkExtractCells> extract_cells;
83 extract_cells->SetCellList(cell_ids);
84 extract_cells->Update();
85 auto const filtered_bulk_mesh = extract_cells->GetOutput();
87 return filtered_bulk_mesh;
92 double const tolerance)
94 std::array<double, 6> bbox = {
95 coords[0] - tolerance, coords[0] + tolerance,
96 coords[1] - tolerance, coords[1] + tolerance,
97 coords[2] - tolerance, coords[2] + tolerance};
99 vtkNew<vtkIdList> cell_ids;
100 locator_->FindCellsWithinBounds(bbox.data(), cell_ids);