libMesh
sibling_coupling.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2025 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_SIBLING_COUPLING_H
21 #define LIBMESH_SIBLING_COUPLING_H
22 
23 // Local Includes
24 #include "libmesh/ghosting_functor.h"
25 
26 // C++ Includes
27 #include <memory>
28 
29 namespace libMesh
30 {
31 
43 {
44 public:
45 
50  _dof_coupling(nullptr) {}
51 
57 
58  // Change coupling matrix after construction
59  void set_dof_coupling(const CouplingMatrix * dof_coupling)
60  { _dof_coupling = dof_coupling; }
61 
66  virtual void operator() (const MeshBase::const_element_iterator & range_begin,
67  const MeshBase::const_element_iterator & range_end,
69  map_type & coupled_elements) override;
70 
75  virtual std::unique_ptr<GhostingFunctor> clone () const override
76  { return std::make_unique<SiblingCoupling>(*this); }
77 
78 private:
79 
81 };
82 
83 } // namespace libMesh
84 
85 #endif // LIBMESH_SIBLING_COUPLING_H
SiblingCoupling(const SiblingCoupling &other)
Constructor.
This abstract base class defines the interface by which library code and user code can report associa...
The definition of the const_element_iterator struct.
Definition: mesh_base.h:2216
void set_dof_coupling(const CouplingMatrix *dof_coupling)
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?
The libMesh namespace provides an interface to certain functionality in the library.
SiblingCoupling()
Constructor.
uint8_t processor_id_type
Definition: id_types.h:104
virtual std::unique_ptr< GhostingFunctor > clone() const override
A clone() is needed because GhostingFunctor can not be shared between different meshes.
const CouplingMatrix * _dof_coupling
This class adds coupling (for use in send_list construction) between active elements and all descenda...
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, find any sibling elements which should be evaluable too...
This class defines a coupling matrix.