https://mooseframework.inl.gov
GhostPrimaryFace.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "RelationshipManager.h"
13 #include "libmesh/mesh_base.h"
14 
20 {
21 public:
22  GhostPrimaryFace(const InputParameters & params);
23 
24  GhostPrimaryFace(const GhostPrimaryFace & other);
25 
27 
28  virtual void operator()(const libMesh::MeshBase::const_element_iterator & range_begin,
31  map_type & coupled_elements) override;
32 
33  virtual std::unique_ptr<libMesh::GhostingFunctor> clone() const override;
34 
35  virtual void redistribute() override { this->mesh_reinit(); }
36 
37  std::string getInfo() const override;
38 
39  virtual bool operator>=(const RelationshipManager & other) const override;
40 
41 protected:
42  virtual void internalInitWithMesh(const libMesh::MeshBase &) override;
43 
47  BoundaryID secondary_boundary_id,
48  bool generating_mesh) const;
49 
51  const BoundaryName _primary_boundary_name;
52 
54  const BoundaryName _secondary_boundary_name;
55 
57  const bool _enabled;
58 
60  const libMesh::CouplingMatrix * const _null_mat = nullptr;
61 };
virtual void mesh_reinit()
std::string getInfo() const override
Method for returning relationship manager information (suitable for console output).
bool hasSecondaryBoundaryFace(const libMesh::MeshBase::const_element_iterator &range_begin, const libMesh::MeshBase::const_element_iterator &range_end, BoundaryID secondary_boundary_id, bool generating_mesh) const
Return whether the local element range contains a secondary boundary face.
static InputParameters validParams()
GhostPrimaryFace(const InputParameters &params)
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
std::map< const Elem *, const CouplingMatrix *, CompareDofObjectsByPIDAndThenID > map_type
const BoundaryName _secondary_boundary_name
Secondary boundary whose local presence triggers primary boundary ghosting.
virtual void redistribute() override
uint8_t processor_id_type
const BoundaryName _primary_boundary_name
Primary boundary whose full-dimensional elements may be ghosted.
boundary_id_type BoundaryID
virtual void internalInitWithMesh(const libMesh::MeshBase &) override
const bool _enabled
Whether this relationship manager should add ghosting entries.
const libMesh::CouplingMatrix *const _null_mat
null matrix for generating full variable coupling
virtual bool operator>=(const RelationshipManager &other) const override
Whether this relationship manager provides more or the same amount and type of ghosting as the rhs...
Ghosts full-dimensional elements with sides on the primary boundary to processors that own full-dimen...
RelationshipManagers are used for describing what kinds of non-local resources are needed for an obje...
virtual std::unique_ptr< libMesh::GhostingFunctor > clone() const override
virtual void operator()(const libMesh::MeshBase::const_element_iterator &range_begin, const libMesh::MeshBase::const_element_iterator &range_end, libMesh::processor_id_type p, map_type &coupled_elements) override