1 #ifndef AUGMENT_SPARSITY_ON_INTERFACE_H 2 #define AUGMENT_SPARSITY_ON_INTERFACE_H 4 #include "libmesh/ghosting_functor.h" 5 #include "libmesh/mesh_base.h" 67 virtual void operator() (
const MeshBase::const_element_iterator & range_begin,
68 const MeshBase::const_element_iterator & range_end,
70 map_type & coupled_elements)
override;
This abstract base class defines the interface by which library code and user code can report associa...
std::map< const Elem *, const Elem * > ElementMap
This is the base class from which all geometric element types are derived.
bool _initialized
Make sure we've been initialized before use.
std::map< const Elem *, const CouplingMatrix *, CompareDofObjectsByPIDAndThenID > map_type
What elements do we care about and what variables do we care about on each element?
uint8_t processor_id_type
This is the MeshBase class.
boundary_id_type _crack_boundary_lower
Boundary IDs for the lower and upper faces of the "crack" in the mesh.
boundary_id_type _crack_boundary_upper
uint8_t processor_id_type
AugmentSparsityOnInterface(MeshBase &mesh, boundary_id_type crack_boundary_lower, boundary_id_type crack_boundary_upper)
Constructor.
ElementMap _upper_to_lower
The inverse (ignoring sides) of the above map.
virtual void redistribute() override
Update the cached _lower_to_upper map whenever our Mesh has been redistributed.
virtual void operator()(const MeshBase::const_element_iterator &range_begin, const MeshBase::const_element_iterator &range_end, processor_id_type p, map_type &coupled_elements) override
User-defined function to augment the sparsity pattern.
virtual void mesh_reinit() override
Rebuild the cached _lower_to_upper map whenever our Mesh has changed.
ElementSideMap _lower_to_upper
A map from (lower element ID, side ID) to matching upper element ID.
std::map< std::pair< const Elem *, unsigned char >, const Elem * > ElementSideMap
MeshBase & _mesh
The Mesh we're calculating on.
const ElementSideMap & get_lower_to_upper() const