19 const std::filesystem::path root(
argv[1]);
20 for(
const auto& file : {
"bicrystal_48.msh",
"unitCube24.msh"})
25 Eigen::Matrix3d::Identity()*100.0,Eigen::Vector3d::Zero(),
26 periodic?std::set<int>{-1}:std::set<int>{});
27 auto window=vtkSmartPointer<vtkGenericOpenGLRenderWindow>::New();
28 window->SetReadyForRendering(
false);
29 auto renderer=vtkSmartPointer<vtkRenderer>::New();
30 window->AddRenderer(renderer);
32 std::set<const model::Simplex<3,2>*> internal,external,sameGrain,crossGrain;
35 for(
const auto& entry : region.second->faces())
37 const auto& face=*entry.second;
38 auto& target=!face.isExternal()?internal:
39 !face.periodicFacePair.second?external:
40 face.regionIDs==face.periodicFacePair.second->regionIDs?sameGrain:crossGrain;
41 target.insert(face.simplices().begin(),face.simplices().end());
44 const auto expected=2*internal.size()+external.size()+crossGrain.size();
46 "Grain surface actor includes same-grain seams or omits physical faces");
47 require(actor.
gbColors->GetNumberOfTuples()==
static_cast<vtkIdType
>(expected),
"Face colors mismatch");
50 require(!sameGrain.empty(),
"Missing same-grain periodic test faces");
51 if(std::string(file)==
"bicrystal_48.msh")
53 require(!internal.empty() && !crossGrain.empty(),
"Missing bicrystal GB types");
57 require(expected==0,
"Fully periodic single grain still has shaded boundaries");
62 require(!external.empty(),
"Missing free surface test faces");
68 catch(
const std::exception&
e)
70 std::cerr<<
e.what()<<std::endl;