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"
56 boundary_id_type crack_boundary_lower,
57 boundary_id_type crack_boundary_upper);
60 virtual std::unique_ptr<GhostingFunctor>
clone ()
const override
62 return std::make_unique<AugmentSparsityOnInterface>
74 virtual void operator() (
const MeshBase::const_element_iterator & range_begin,
75 const MeshBase::const_element_iterator & range_end,
77 map_type & coupled_elements)
override;
std::map< const Elem *, const Elem * > ElementMap
std::map< std::pair< const Elem *, unsigned char >, const Elem * > ElementSideMap
ElementSideMap _lower_to_upper
A map from (lower element ID, side ID) to matching upper element ID.
const ElementSideMap & get_lower_to_upper() const
boundary_id_type _crack_boundary_upper
boundary_id_type _crack_boundary_lower
Boundary IDs for the lower and upper faces of the "crack" in the mesh.
bool _initialized
Make sure we've been initialized before use.
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.
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 std::unique_ptr< GhostingFunctor > clone() const override
A clone() is needed because GhostingFunctor can not be shared between different meshes.
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.
This is the base class from which all geometric element types are derived.
This abstract base class defines the interface by which library code and user code can report associa...
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?
This is the MeshBase class.
uint8_t processor_id_type