20#ifndef LIBMESH_GHOSTING_FUNCTOR_H
21#define LIBMESH_GHOSTING_FUNCTOR_H
24#include "libmesh/libmesh_common.h"
25#include "libmesh/id_types.h"
26#include "libmesh/mesh_base.h"
27#include "libmesh/reference_counted_object.h"
28#include "libmesh/dof_object.h"
31#include <unordered_map>
39#ifdef LIBMESH_ENABLE_PERIODIC
40class PeriodicBoundaries;
215 virtual std::unique_ptr<GhostingFunctor>
clone () const
216#ifndef LIBMESH_ENABLE_DEPRECATED
220 { libmesh_deprecated();
return nullptr; }
229#ifdef LIBMESH_ENABLE_PERIODIC
243 typedef std::map<const Elem*, const CouplingMatrix*, CompareDofObjectsByPIDAndThenID>
map_type;
This abstract base class defines the interface by which library code and user code can report associa...
virtual std::unique_ptr< GhostingFunctor > clone() const =0
A clone() is needed because GhostingFunctor can not be shared between different meshes.
virtual void set_mesh(const MeshBase *mesh)
It should be called after cloning a ghosting functor.
virtual void redistribute()
GhostingFunctor subclasses with relatively long-lasting caches may want to redistribute those caches ...
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)=0
For the specified range of active elements, what other elements currently living (whether local or gh...
virtual void delete_remote_elements()
GhostingFunctor subclasses with relatively long-lasting caches may want to delete the no-longer-relev...
GhostingFunctor(const MeshBase &mesh)
Constructor using mesh.
GhostingFunctor(const GhostingFunctor &other)
Copy Constructor.
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?
virtual ~GhostingFunctor()=default
Virtual destructor; this is an abstract base class.
virtual void set_periodic_boundaries(const PeriodicBoundaries *)
virtual void mesh_reinit()
GhostingFunctor subclasses which cache data will need to initialize that cache.
const MeshBase * get_mesh() const
Return the mesh associated with ghosting functor.
GhostingFunctor()
Constructor.
virtual void dofmap_reinit()
For algebraic ghosting or coupling functors we also call dofmap_reinit() later, after dofs have been ...
This is the MeshBase class.
We're using a class instead of a typedef to allow forward declarations and future flexibility.
This class implements reference counting.
The libMesh namespace provides an interface to certain functionality in the library.
uint8_t processor_id_type
The definition of the const_element_iterator struct.