Go to the documentation of this file. 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;
ElementMap _upper_to_lower
The inverse (ignoring sides) of the above map.
const ElementSideMap & get_lower_to_upper() const
std::unordered_map< const Elem *, const CouplingMatrix * > map_type
What elements do we care about and what variables do we care about on each element?
bool _initialized
Make sure we've been initialized before use.
ElementSideMap _lower_to_upper
A map from (lower element ID, side ID) to matching upper element ID.
This is the MeshBase class.
This abstract base class defines the interface by which library code and user code can report associa...
std::map< const Elem *, const Elem * > ElementMap
AugmentSparsityOnInterface(MeshBase &mesh, boundary_id_type crack_boundary_lower, boundary_id_type crack_boundary_upper)
Constructor.
uint8_t processor_id_type
MeshBase & _mesh
The Mesh we're calculating on.
virtual void mesh_reinit() override
Rebuild the cached _lower_to_upper map whenever our Mesh has changed.
virtual void redistribute() override
Update the cached _lower_to_upper map whenever our Mesh has been redistributed.
This is the base class from which all geometric element types are derived.
std::map< std::pair< const Elem *, unsigned char >, const Elem * > ElementSideMap
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
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.