https://mooseframework.inl.gov
AugmentSparsityOnInterface.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 // App includes
14 #include "RelationshipManager.h"
15 
16 // libMesh includes
17 #include "libmesh/mesh_base.h"
18 
21 using libMesh::Elem;
23 using libMesh::MeshBase;
25 
27 {
28 public:
30 
32 
33  static InputParameters validParams();
34 
40  virtual void operator()(const MeshBase::const_element_iterator & range_begin,
41  const MeshBase::const_element_iterator & range_end,
43  map_type & coupled_elements) override;
44 
49  virtual std::unique_ptr<GhostingFunctor> clone() const override;
50 
55  virtual void redistribute() override { this->mesh_reinit(); }
56 
57  std::string getInfo() const override;
58 
59  virtual bool operator>=(const RelationshipManager & other) const override;
60 
61 protected:
62  virtual void internalInitWithMesh(const MeshBase &) override;
63 
67  void ghostMortarInterfaceCouplings(const processor_id_type p,
68  const Elem * const elem,
69  map_type & coupled_elements,
70  const AutomaticMortarGeneration & amg) const;
71 
78  void ghostLowerDSecondaryElemPointNeighbors(const processor_id_type p,
79  const Elem * const query_elem,
80  map_type & coupled_elements,
81  BoundaryID secondary_boundary_id,
82  SubdomainID secondary_subdomain_id,
83  const AutomaticMortarGeneration & amg) const;
84 
85  void ghostHigherDNeighbors(const processor_id_type p,
86  const Elem * const query_elem,
87  map_type & coupled_elements,
88  BoundaryID secondary_boundary_id,
89  SubdomainID secondary_subdomain_id,
90  const AutomaticMortarGeneration & amg) const;
91 
92  const BoundaryName _primary_boundary_name;
93  const BoundaryName _secondary_boundary_name;
94  const SubdomainName _primary_subdomain_name;
95  const SubdomainName _secondary_subdomain_name;
96 
99  const bool _is_coupling_functor;
100 
103  const bool _ghost_point_neighbors;
104 
108  const bool _ghost_higher_d_neighbors;
109 
111  const CouplingMatrix * const _null_mat = nullptr;
112 };
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
std::map< const Elem *, const CouplingMatrix *, CompareDofObjectsByPIDAndThenID > map_type
uint8_t processor_id_type
This class is a container/interface for the objects involved in automatic generation of mortar spaces...
uint8_t processor_id_type
AugmentSparsityOnInterface(MeshBase &mesh, boundary_id_type crack_boundary_lower, boundary_id_type crack_boundary_upper)
int8_t boundary_id_type
boundary_id_type BoundaryID
RelationshipManagers are used for describing what kinds of non-local resources are needed for an obje...
virtual void redistribute() override
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
virtual std::unique_ptr< GhostingFunctor > clone() const
virtual void mesh_reinit() override