14 std::map<size_t,std::vector<Eigen::Vector3d>>
result;
15 std::set<size_t> visited;
16 using Element=
typename FE::ElementType;
17 for(
const auto& region : fe.mesh.regions())
19 for(
const auto& entry : region.second->faces())
21 const auto& face=*entry.second;
22 if(!visited.insert(face.sID).second)
26 const auto* partner=face.periodicFacePair.second;
27 if(face.isExternal() && partner && face.regionIDs.first==partner->regionIDs.first)
31 std::set<size_t> nodes;
32 for(
const auto*
triangle : face.simplices())
34 const auto& element=fe.elements().at(
triangle->parents().begin()->first);
35 const size_t opposite=element.simplex.childOrder(
triangle->xID);
36 for(
size_t n=0;n<Element::nodesPerElement;++n)
38 if(Element::baryStarsAndBars(n,opposite)==0)
40 nodes.insert(element.node(n).gID);
44 for(
const auto node : nodes)
46 result[node].push_back(face.outNormal(face.regionIDs.first));