libMesh
ghosting_functor.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_GHOSTING_FUNCTOR_H
21 #define LIBMESH_GHOSTING_FUNCTOR_H
22 
23 // Local Includes
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 
29 // C++ Includes
30 #include <unordered_map>
31 
32 namespace libMesh
33 {
34 
35 // Forward Declarations
36 class CouplingMatrix;
37 class Elem;
38 
39 
153 class GhostingFunctor : public ReferenceCountedObject<GhostingFunctor>
154 {
155 public:
156 
161 
165  virtual ~GhostingFunctor() {}
166 
171  typedef std::unordered_map<const Elem*, const CouplingMatrix*> map_type;
172 
183  virtual void operator() (const MeshBase::const_element_iterator & range_begin,
184  const MeshBase::const_element_iterator & range_end,
186  map_type & coupled_elements) = 0;
187 
194  virtual void mesh_reinit () {};
195 
202  virtual void dofmap_reinit () {};
203 
214  virtual void redistribute () {};
215 
221  virtual void delete_remote_elements () {};
222 };
223 
224 } // namespace libMesh
225 
226 #endif // LIBMESH_GHOSTING_FUNCTOR_H
libMesh::GhostingFunctor::~GhostingFunctor
virtual ~GhostingFunctor()
Virtual destructor; this is an abstract base class.
Definition: ghosting_functor.h:165
libMesh::ReferenceCountedObject
This class implements reference counting.
Definition: reference_counted_object.h:65
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
Definition: factoryfunction.C:55
libMesh::GhostingFunctor::map_type
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?
Definition: ghosting_functor.h:171
libMesh::GhostingFunctor::mesh_reinit
virtual void mesh_reinit()
GhostingFunctor subclasses which cache data will need to initialize that cache.
Definition: ghosting_functor.h:194
libMesh::GhostingFunctor::operator()
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...
libMesh::GhostingFunctor
This abstract base class defines the interface by which library code and user code can report associa...
Definition: ghosting_functor.h:153
libMesh::processor_id_type
uint8_t processor_id_type
Definition: id_types.h:104
libMesh::GhostingFunctor::delete_remote_elements
virtual void delete_remote_elements()
GhostingFunctor subclasses with relatively long-lasting caches may want to delete the no-longer-relev...
Definition: ghosting_functor.h:221
libMesh::MeshBase::const_element_iterator
The definition of the const_element_iterator struct.
Definition: mesh_base.h:1891
libMesh::GhostingFunctor::GhostingFunctor
GhostingFunctor()
Constructor.
Definition: ghosting_functor.h:160
libMesh::GhostingFunctor::redistribute
virtual void redistribute()
GhostingFunctor subclasses with relatively long-lasting caches may want to redistribute those caches ...
Definition: ghosting_functor.h:214
libMesh::GhostingFunctor::dofmap_reinit
virtual void dofmap_reinit()
For algebraic ghosting or coupling functors we also call dofmap_reinit() later, after dofs have been ...
Definition: ghosting_functor.h:202