topology.hpp cstddef vector src/include/serif/discretization/domain/schema/validation/all.hpp src/include/serif/discretization/domain/schema/validation/boundary.hpp src/include/serif/discretization/domain/schema/validation/connected.hpp src/include/serif/discretization/domain/schema/validation/inscribed.hpp src/include/serif/discretization/domain/schema/validation/validator.hpp src/lib/serif/discretization/domain/mesh/topology.cpp serif::discretization::domain::mesh::FaceElements serif::discretization::domain::mesh::MeshTopology mfem serif serif::discretization serif::discretization::domain serif::discretization::domain::mesh This file defines the MeshTopology class, which provides a convenient interface for querying the topological relationships between elements, faces, and boundaries in a mesh. Emily M. Boudreaux #pragmaonce #include<cstddef> #include<vector> namespacemfem{ classMesh; } //MeshTopology namespaceserif::discretization::domain::mesh{ structFaceElements{ intfirstElementID{-1}; intsecondElementID{-1}; }; classMeshTopologyfinal{ public: explicitMeshTopology(constmfem::Mesh&mesh); [[nodiscard]]intelement_count()constnoexcept; [[nodiscard]]intface_count()constnoexcept; [[nodiscard]]intboundary_element_count()constnoexcept; [[nodiscard]]intelement_domain_id(intelementID)const; [[nodiscard]]intboundary_element_boundary_id(intboundaryElementID)const; [[nodiscard]]FaceElementsface_elements(intfaceID)const; [[nodiscard]]conststd::vector<int>&element_neighbors(intelementID)const; [[nodiscard]]intboundary_element_face(intboundaryElementID)const; [[nodiscard]]conststd::vector<int>&boundary_elements_on_face(intfaceID)const; private: std::vector<int>m_elementDomainIDs; std::vector<FaceElements>m_faceElements; std::vector<std::vector<int>>m_elementNeighbors; std::vector<int>m_boundaryElementBoundaryIDs; std::vector<int>m_boundaryElementFaceIDs; std::vector<std::vector<int>>m_boundaryElementsByFace; staticconststd::vector<int>s_noElements; }; }