19 Eigen::Matrix3d::Identity(),Eigen::Vector3d::Zero(),{});
20 const auto* guess=
mesh.simplices().begin()->second.get();
23 const Eigen::Vector3d point=Eigen::Vector3d(-311.5153825721246,816.6921641196241,2568.115086056312)/3666.1742093541243;
24 require(
mesh.searchRegion(26,point).first,
"Regression point is not in grain 26");
25 require(
mesh.search(point).first,
"Global search missed node 398");
26 require(
mesh.searchWithGuess(point,guess).first,
"Guessed search missed node 398");
27 require(
mesh.searchWithGuess(point,
nullptr).first,
"Null-guess search missed node 398");
28 require(!
mesh.searchRegion(1,point).first,
"Region-restricted search escaped its grain");
29 for(
const auto& entry :
mesh.simplices())
31 const Eigen::Vector3d center=entry.second->bary2pos(Eigen::Vector4d::Constant(0.25));
32 const auto found=
mesh.searchWithGuess(center,guess);
33 require(found.first,
"Global search missed a tetrahedron center");
34 require(found.second->pos2bary(center).minCoeff()>-1.e-7,
"Search returned a non-containing tetrahedron");
36 const Eigen::Vector3d outside=
mesh.xMax()+Eigen::Vector3d::Ones()*(
mesh.xMax()-
mesh.xMin()).norm();
37 const auto missed=
mesh.search(outside);
38 require(!missed.first && missed.second && missed.second->isBoundarySimplex(),
39 "Outside search must retain a boundary simplex and report failure");
40 std::cout<<
"PASS: non-convex polycrystal mesh lookup\n";
43 catch(
const std::exception& error)
45 std::cerr<<error.what()<<
'\n';