libMesh
Loading...
Searching...
No Matches
non_manifold_coupling.h
Go to the documentation of this file.
1// The libMesh Finite Element Library.
2// Copyright (C) 2002-2026 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#ifndef LIBMESH_NON_MANIFOLD_COUPLING_H
19#define LIBMESH_NON_MANIFOLD_COUPLING_H
20
21// libMesh Includes
22#include "libmesh/ghosting_functor.h" // base class
23#include "libmesh/sides_to_elem_map.h" // MeshTools::SidesToElemMap
24
25// C++ includes
26#include <memory>
27
28namespace libMesh
29{
30
31// Forward declarations
32class MeshBase;
33
64{
65public:
70
80 virtual ~NonManifoldGhostingFunctor() = default;
81
85 virtual std::unique_ptr<GhostingFunctor> clone () const override;
86
92 virtual void mesh_reinit () override;
93
99 virtual void redistribute () override;
100
105 virtual void delete_remote_elements() override;
106
112 virtual void operator() (const MeshBase::const_element_iterator & range_begin,
113 const MeshBase::const_element_iterator & range_end,
115 map_type & coupled_elements) override;
116private:
117
122};
123
124} // namespace libMesh
125
126#endif // LIBMESH_NON_MANIFOLD_COUPLING_H
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.
Definition mesh_base.h:81
This class implements a generalization of the MeshTools::build_nodes_to_elem_map() function,...
A GhostingFunctor subclass that uses a SidesToElemMap object to determine when Elem DOFs should be gh...
MeshTools::SidesToElemMap _stem
Quickly-searchable map from (elem, side) pair to list of connected Elems.
virtual void redistribute() override
When the Mesh is redistributed, we may need to update the information in the SidesToElemMap by removi...
virtual ~NonManifoldGhostingFunctor()=default
virtual void delete_remote_elements() override
When remote elements are deleted, we should remove them from the information in the SidesToElemMap.
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
For the specified range of active elements, query the SidesToElemMap and add all side neighbors to th...
NonManifoldGhostingFunctor & operator=(const NonManifoldGhostingFunctor &)=default
NonManifoldGhostingFunctor(NonManifoldGhostingFunctor &&)=default
NonManifoldGhostingFunctor(const NonManifoldGhostingFunctor &)=default
Special functions.
virtual std::unique_ptr< GhostingFunctor > clone() const override
clone() just calls the copy ctor.
virtual void mesh_reinit() override
If the Mesh changes, we'll need to clear the SidesToElemMap and recreate it, since all the neighbor i...
MeshBase & mesh
The libMesh namespace provides an interface to certain functionality in the library.
uint8_t processor_id_type
Definition id_types.h:104
The definition of the const_element_iterator struct.
Definition mesh_base.h:2556