https://mooseframework.inl.gov
Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
MortarInterfaceWarehouse Class Reference

#include <MortarInterfaceWarehouse.h>

Inheritance diagram for MortarInterfaceWarehouse:
[legend]

Public Member Functions

 MortarInterfaceWarehouse (const libMesh::ParallelObject &other)
 
void createMortarInterface (const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &subdomain_key, SubProblem &subproblem, bool on_displaced, bool periodic, const bool debug, const bool correct_edge_dropping, const Real minimum_projection_angle, const MooseEnum &triangulation, const bool triangulate_triangles)
 Create mortar generation object. More...
 
const AutomaticMortarGenerationgetMortarInterface (const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &, bool on_displaced) const
 Getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain keys. More...
 
AutomaticMortarGenerationgetMortarInterface (const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &, bool on_displaced)
 Non-const getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain keys. More...
 
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, MortarInterfaceConfig > & getMortarInterfaces (bool on_displaced) const
 Return the per-interface configuration map (AutomaticMortarGeneration object plus the associated user flags) for either the displaced or undisplaced mesh. More...
 
const std::set< SubdomainID > & getMortarSubdomainIDs () const
 Returns the mortar covered subdomains. More...
 
const std::set< BoundaryID > & getMortarBoundaryIDs () const
 Returns the mortar covered boundaries. More...
 
void update ()
 Builds mortar segment meshes for each mortar interface. More...
 
void meshChanged ()
 Invalidates cached MSM node/element ID offsets on all mortar interfaces so they are recomputed on the next update(). More...
 
bool hasDisplacedObjects () const
 Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh. More...
 
bool hasObjects () const
 Returns whether we have any active AutomaticMortarGeneration objects. More...
 
const std::set< SubdomainID > & getHigherDimSubdomainIDs (SubdomainID lower_d_subdomain_id) const
 Returns the higher dimensional subdomain ids of the interior parents of the given lower-d subdomain id. More...
 
void notifyWhenMortarSetup (MortarExecutorInterface *mei)
 Adds mei to the container of objects that will have their mortarSetup method called as soon as the mortar mesh has been generated for the first time More...
 
void dontNotifyWhenMortarSetup (MortarExecutorInterface *mei)
 Removes mei from the container of objects that will have their mortarSetup method called as soon as the mortar mesh has been generated for the first time More...
 
bool initialized () const
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Protected Attributes

const Parallel::Communicator_communicator
 

Private Types

typedef std::pair< BoundaryID, BoundaryIDMortarKey
 

Private Member Functions

void update (AutomaticMortarGeneration &amg)
 Builds mortar segment mesh from specific AutomaticMortarGeneration object. More...
 

Private Attributes

std::unordered_map< MortarKey, MortarInterfaceConfig_mortar_interfaces
 Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced mortar interface (AMG object + per-interface flags). More...
 
std::unordered_map< MortarKey, MortarInterfaceConfig_displaced_mortar_interfaces
 Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mortar interface (AMG object + per-interface flags). More...
 
std::set< SubdomainID_mortar_subdomain_coverage
 A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object. More...
 
std::set< BoundaryID_mortar_boundary_coverage
 A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object. More...
 
std::unordered_map< SubdomainID, std::set< SubdomainID > > _lower_d_sub_to_higher_d_subs
 Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e.g. More...
 
std::set< MortarExecutorInterface * > _mei_objs
 A container of objects for whom the mortarSetup method will be called after the mortar mesh has been setup for the first time. More...
 
bool _mortar_initd
 Whether we have performed any mortar mesh construction. More...
 

Detailed Description

Definition at line 42 of file MortarInterfaceWarehouse.h.

Member Typedef Documentation

◆ MortarKey

Definition at line 167 of file MortarInterfaceWarehouse.h.

Constructor & Destructor Documentation

◆ MortarInterfaceWarehouse()

MortarInterfaceWarehouse::MortarInterfaceWarehouse ( const libMesh::ParallelObject other)

Definition at line 37 of file MortarInterfaceWarehouse.C.

38  : libMesh::ParallelObject(other), _mortar_initd(false)
39 {
40 }
bool _mortar_initd
Whether we have performed any mortar mesh construction.

Member Function Documentation

◆ createMortarInterface()

void MortarInterfaceWarehouse::createMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  boundary_key,
const std::pair< SubdomainID, SubdomainID > &  subdomain_key,
SubProblem subproblem,
bool  on_displaced,
bool  periodic,
const bool  debug,
const bool  correct_edge_dropping,
const Real  minimum_projection_angle,
const MooseEnum triangulation,
const bool  triangulate_triangles 
)

Create mortar generation object.

Parameters
boundary_keyThe primary-secondary boundary pair on which the AMG objects lives
subdomain_keyThe primary-secondary subdomain pair on which the AMG objects lives
subproblemA reference to the subproblem
on_displacedWhether the AMG object lives on the displaced mesh
periodicWhether the AMG object will be used for enforcing periodic constraints. Note that this changes the direction of the projection normals so one AMG object cannot be used to enforce both periodic and non-periodic constraints
debugwhether to output mortar segment mesh exodus file for debugging purposes
correct_edge_droppingedge dropping treatment selection
minimum_projection_angleminimum projection angle allowed for building mortar segment mesh
triangulationtriangulation strategy used for clipped 3D mortar polygons
triangulate_triangleswhether a clipped polygon that is already a triangle should still be subdivided

Definition at line 43 of file MortarInterfaceWarehouse.C.

54 {
55  _mortar_subdomain_coverage.insert(subdomain_key.first);
56  _mortar_subdomain_coverage.insert(subdomain_key.second);
57 
58  _mortar_boundary_coverage.insert(boundary_key.first);
59  _mortar_boundary_coverage.insert(boundary_key.second);
60 
61  MeshBase & mesh = subproblem.mesh().getMesh();
62 
63  auto & mortar_interfaces = on_displaced ? _displaced_mortar_interfaces : _mortar_interfaces;
64  const auto triangulation_mode = toTriangulationMode(triangulation);
65 
66  auto interface_iterator = mortar_interfaces.find(boundary_key);
67  if (interface_iterator != mortar_interfaces.end())
68  {
69  // Existing entry: every per-interface flag must agree across constraints sharing the same
70  // primary-secondary surface pair.
71  const auto & existing = interface_iterator->second;
72  if (existing.periodic != periodic)
73  mooseError("We do not currently support enforcing both periodic and non-periodic constraints "
74  "on the same boundary primary-secondary pair");
75  if (existing.debug != debug)
76  mooseError(
77  "We do not currently support generating and not generating debug output "
78  "on the same boundary primary-secondary surface pair. Please set debug_mesh = true for "
79  "all constraints sharing the same primary-secondary surface pairs");
80  if (existing.triangulation != triangulation_mode)
81  mooseError("We do not currently support multiple values of 'triangulation' on the same "
82  "boundary primary-secondary surface pair.");
83  if (existing.triangulate_triangles != triangulate_triangles)
84  mooseError("We do not currently support multiple values of 'triangulate_triangles' on the "
85  "same boundary primary-secondary surface pair.");
86  }
87  else
88  {
89  MortarInterfaceConfig config{
90  std::make_unique<AutomaticMortarGeneration>(subproblem.getMooseApp(),
91  mesh,
92  boundary_key,
93  subdomain_key,
94  on_displaced,
95  periodic,
96  debug,
97  correct_edge_dropping,
98  minimum_projection_angle,
99  triangulation_mode,
100  triangulate_triangles),
101  periodic,
102  debug,
103  triangulation_mode,
104  triangulate_triangles};
105  config.amg->initOutput();
106  mortar_interfaces.emplace(boundary_key, std::move(config));
107  }
108 
109  // See whether to query the mesh
110  SubdomainID key1 = subdomain_key.first;
111  SubdomainID key2 = subdomain_key.second;
112 
113  // it(1,2) is a a pair consisting of an iterator to the inserted element (or to the element that
114  // prevented the insertion) and a bool denoting whether the insertion took place.
115  auto it1 = _lower_d_sub_to_higher_d_subs.insert(std::make_pair(key1, std::set<SubdomainID>{}));
116  auto it2 = _lower_d_sub_to_higher_d_subs.insert(std::make_pair(key2, std::set<SubdomainID>{}));
117 
118  // Each entry in this vector will be a pair. The first member of the pair corresponds to
119  // the lower dimensional subomain ID. The second member of the pair corresponds to the higher
120  // dimensional subdomain ids of the lower dimeionsal interior parents
121  std::vector<std::pair<SubdomainID, std::set<SubdomainID> *>> subdomains_to_probe;
122 
123  if (it1.second)
124  subdomains_to_probe.push_back(std::make_pair(key1, &it1.first->second));
125  if (it2.second)
126  subdomains_to_probe.push_back(std::make_pair(key2, &it2.first->second));
127 
128  for (auto & pr : subdomains_to_probe)
129  {
130  for (const Elem * lower_d_elem : as_range(mesh.active_local_subdomain_elements_begin(pr.first),
131  mesh.active_local_subdomain_elements_end(pr.first)))
132  {
133  const Elem * ip = lower_d_elem->interior_parent();
134  mooseAssert(
135  ip,
136  "Lower dimensional elements should always have an interior parent set when using mortar");
137  pr.second->insert(ip->subdomain_id());
138  }
139 
140  // Make sure that we get this right in parallel
141  _communicator.set_union(*pr.second);
142  }
143 }
virtual MooseMesh & mesh()=0
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
MeshBase & mesh
const Parallel::Communicator & _communicator
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:87
Per-mortar-interface configuration.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition: MooseMesh.C:3548
std::unordered_map< SubdomainID, std::set< SubdomainID > > _lower_d_sub_to_higher_d_subs
Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e...
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
std::set< SubdomainID > _mortar_subdomain_coverage
A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWareho...
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...
std::set< BoundaryID > _mortar_boundary_coverage
A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehou...
std::unique_ptr< AutomaticMortarGeneration > amg
void set_union(T &data, const unsigned int root_id) const

◆ dontNotifyWhenMortarSetup()

void MortarInterfaceWarehouse::dontNotifyWhenMortarSetup ( MortarExecutorInterface mei)

Removes mei from the container of objects that will have their mortarSetup method called as soon as the mortar mesh has been generated for the first time

Definition at line 247 of file MortarInterfaceWarehouse.C.

248 {
249  _mei_objs.erase(mei_obj);
250 }
std::set< MortarExecutorInterface * > _mei_objs
A container of objects for whom the mortarSetup method will be called after the mortar mesh has been ...

◆ getHigherDimSubdomainIDs()

const std::set< SubdomainID > & MortarInterfaceWarehouse::getHigherDimSubdomainIDs ( SubdomainID  lower_d_subdomain_id) const

Returns the higher dimensional subdomain ids of the interior parents of the given lower-d subdomain id.

Definition at line 230 of file MortarInterfaceWarehouse.C.

231 {
232  if (_lower_d_sub_to_higher_d_subs.find(lower_d_subdomain_id) ==
234  mooseError("The lower dimensional ID ",
235  lower_d_subdomain_id,
236  " has not been added to MortarInterfaceWarehouse yet");
237  return _lower_d_sub_to_higher_d_subs.at(lower_d_subdomain_id);
238 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
std::unordered_map< SubdomainID, std::set< SubdomainID > > _lower_d_sub_to_higher_d_subs
Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e...

◆ getMortarBoundaryIDs()

const std::set<BoundaryID>& MortarInterfaceWarehouse::getMortarBoundaryIDs ( ) const
inline

Returns the mortar covered boundaries.

Definition at line 115 of file MortarInterfaceWarehouse.h.

115 { return _mortar_boundary_coverage; }
std::set< BoundaryID > _mortar_boundary_coverage
A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehou...

◆ getMortarInterface() [1/2]

const AutomaticMortarGeneration & MortarInterfaceWarehouse::getMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  boundary_key,
const std::pair< SubdomainID, SubdomainID > &  ,
bool  on_displaced 
) const

Getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain keys.

If the AutomaticMortarGeneration object does not yet exist, then we error

Definition at line 146 of file MortarInterfaceWarehouse.C.

Referenced by getMortarInterface().

150 {
151  auto & mortar_interfaces = on_displaced ? _displaced_mortar_interfaces : _mortar_interfaces;
152  auto it = mortar_interfaces.find(boundary_key);
153  if (it == mortar_interfaces.end())
154  mooseError(
155  "The requested mortar interface AutomaticMortarGeneration object does not yet exist!");
156  return *it->second.amg;
157 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...

◆ getMortarInterface() [2/2]

AutomaticMortarGeneration & MortarInterfaceWarehouse::getMortarInterface ( const std::pair< BoundaryID, BoundaryID > &  boundary_key,
const std::pair< SubdomainID, SubdomainID > &  subdomain_key,
bool  on_displaced 
)

Non-const getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain keys.

If the AutomaticMortarGeneration object does not yet exist, then we error

Definition at line 160 of file MortarInterfaceWarehouse.C.

164 {
165  return const_cast<AutomaticMortarGeneration &>(
166  const_cast<const MortarInterfaceWarehouse *>(this)->getMortarInterface(
167  boundary_key, subdomain_key, on_displaced));
168 }
This class is a container/interface for the objects involved in automatic generation of mortar spaces...
const AutomaticMortarGeneration & getMortarInterface(const std::pair< BoundaryID, BoundaryID > &boundary_key, const std::pair< SubdomainID, SubdomainID > &, bool on_displaced) const
Getter to retrieve the AutomaticMortarGeneration object corresponding to the boundary and subdomain k...

◆ getMortarInterfaces()

const std::unordered_map<std::pair<BoundaryID, BoundaryID>, MortarInterfaceConfig>& MortarInterfaceWarehouse::getMortarInterfaces ( bool  on_displaced) const
inline

Return the per-interface configuration map (AutomaticMortarGeneration object plus the associated user flags) for either the displaced or undisplaced mesh.

Iterating callers should reach the AMG via the value's amg member.

Definition at line 99 of file MortarInterfaceWarehouse.h.

100  {
101  if (on_displaced)
103  else
104  return _mortar_interfaces;
105  }
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...

◆ getMortarSubdomainIDs()

const std::set<SubdomainID>& MortarInterfaceWarehouse::getMortarSubdomainIDs ( ) const
inline

Returns the mortar covered subdomains.

Definition at line 110 of file MortarInterfaceWarehouse.h.

110 { return _mortar_subdomain_coverage; }
std::set< SubdomainID > _mortar_subdomain_coverage
A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWareho...

◆ hasDisplacedObjects()

bool MortarInterfaceWarehouse::hasDisplacedObjects ( ) const
inline

Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh.

Definition at line 131 of file MortarInterfaceWarehouse.h.

131 { return _displaced_mortar_interfaces.size(); }
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...

◆ hasObjects()

bool MortarInterfaceWarehouse::hasObjects ( ) const
inline

Returns whether we have any active AutomaticMortarGeneration objects.

Definition at line 136 of file MortarInterfaceWarehouse.h.

136 { return _mortar_interfaces.size(); }
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...

◆ initialized()

bool MortarInterfaceWarehouse::initialized ( ) const
inline
Returns
whether we have performed an initial mortar mesh construction

Definition at line 159 of file MortarInterfaceWarehouse.h.

159 { return _mortar_initd; }
bool _mortar_initd
Whether we have performed any mortar mesh construction.

◆ meshChanged()

void MortarInterfaceWarehouse::meshChanged ( )

Invalidates cached MSM node/element ID offsets on all mortar interfaces so they are recomputed on the next update().

Call when mesh topology changes.

Definition at line 182 of file MortarInterfaceWarehouse.C.

183 {
184  for (auto & mortar_pair : _mortar_interfaces)
185  mortar_pair.second.amg->meshChanged();
186  for (auto & mortar_pair : _displaced_mortar_interfaces)
187  mortar_pair.second.amg->meshChanged();
188  update();
189 }
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
void update()
Builds mortar segment meshes for each mortar interface.
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...

◆ notifyWhenMortarSetup()

void MortarInterfaceWarehouse::notifyWhenMortarSetup ( MortarExecutorInterface mei)

Adds mei to the container of objects that will have their mortarSetup method called as soon as the mortar mesh has been generated for the first time

Definition at line 241 of file MortarInterfaceWarehouse.C.

242 {
243  _mei_objs.insert(mei_obj);
244 }
std::set< MortarExecutorInterface * > _mei_objs
A container of objects for whom the mortarSetup method will be called after the mortar mesh has been ...

◆ update() [1/2]

void MortarInterfaceWarehouse::update ( )

Builds mortar segment meshes for each mortar interface.

Definition at line 171 of file MortarInterfaceWarehouse.C.

Referenced by meshChanged().

172 {
173  for (auto & mortar_pair : _mortar_interfaces)
174  update(*mortar_pair.second.amg);
175  for (auto & mortar_pair : _displaced_mortar_interfaces)
176  update(*mortar_pair.second.amg);
177 
178  _mortar_initd = true;
179 }
bool _mortar_initd
Whether we have performed any mortar mesh construction.
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
void update()
Builds mortar segment meshes for each mortar interface.
std::unordered_map< MortarKey, MortarInterfaceConfig > _displaced_mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mor...

◆ update() [2/2]

void MortarInterfaceWarehouse::update ( AutomaticMortarGeneration amg)
private

Builds mortar segment mesh from specific AutomaticMortarGeneration object.

Definition at line 192 of file MortarInterfaceWarehouse.C.

193 {
194  // Clear exiting data
195  amg.clear();
196 
197  const auto dim = amg.dim();
198 
199  if (dim == 1)
200  mooseError("Mortar constraints are not currently supported for 1D meshes");
201  else if (dim != 2 && dim != 3)
202  mooseError("Invalid mesh dimension for mortar constraint");
203 
204  // Construct maps from nodes -> lower dimensional elements on the primary and secondary
205  // boundaries.
206  amg.buildNodeToElemMaps();
207 
208  // Compute nodal geometry (normals and tangents).
209  amg.computeNodalGeometry();
210 
211  if (dim == 2)
212  {
213  // Project secondary nodes (find xi^(2) values).
214  amg.projectSecondaryNodes();
215 
216  // Project primary nodes (find xi^(1) values).
217  amg.projectPrimaryNodes();
218 
219  // Build the mortar segment mesh on the secondary boundary.
221  }
222  else // dim == 3
224 
227 }
void computeInactiveLMNodes()
Get list of secondary nodes that don&#39;t contribute to interaction with any primary element...
void clear()
Clears the mortar segment mesh and accompanying data structures.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:311
void buildMortarSegmentMesh()
Builds the mortar segment mesh once the secondary and primary node projections have been completed...
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:164
void projectSecondaryNodes()
Project secondary nodes (find xi^(2) values) to the closest points on the primary surface...
void projectPrimaryNodes()
(Inverse) project primary nodes to the points on the secondary surface where they would have come fro...
void buildNodeToElemMaps()
Once the secondary_requested_boundary_ids and primary_requested_boundary_ids containers have been fil...
void computeNodalGeometry()
Computes and stores the nodal normal/tangent vectors in a local data structure instead of using the E...
void buildMortarSegmentMesh3d()
Builds the mortar segment mesh once the secondary and primary node projections have been completed...
void computeInactiveLMElems()
Get list of secondary elems without any corresponding primary elements.

Member Data Documentation

◆ _displaced_mortar_interfaces

std::unordered_map<MortarKey, MortarInterfaceConfig> MortarInterfaceWarehouse::_displaced_mortar_interfaces
private

Map from primary-secondary (in that order) boundary ID pair to the configuration of the displaced mortar interface (AMG object + per-interface flags).

Definition at line 175 of file MortarInterfaceWarehouse.h.

Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasDisplacedObjects(), meshChanged(), and update().

◆ _lower_d_sub_to_higher_d_subs

std::unordered_map<SubdomainID, std::set<SubdomainID> > MortarInterfaceWarehouse::_lower_d_sub_to_higher_d_subs
private

Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e.g.

the ids of the interior parents)

Definition at line 187 of file MortarInterfaceWarehouse.h.

Referenced by createMortarInterface(), and getHigherDimSubdomainIDs().

◆ _mei_objs

std::set<MortarExecutorInterface *> MortarInterfaceWarehouse::_mei_objs
private

A container of objects for whom the mortarSetup method will be called after the mortar mesh has been setup for the first time.

Definition at line 191 of file MortarInterfaceWarehouse.h.

Referenced by dontNotifyWhenMortarSetup(), and notifyWhenMortarSetup().

◆ _mortar_boundary_coverage

std::set<BoundaryID> MortarInterfaceWarehouse::_mortar_boundary_coverage
private

A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object.

Definition at line 183 of file MortarInterfaceWarehouse.h.

Referenced by createMortarInterface(), and getMortarBoundaryIDs().

◆ _mortar_initd

bool MortarInterfaceWarehouse::_mortar_initd
private

Whether we have performed any mortar mesh construction.

Definition at line 194 of file MortarInterfaceWarehouse.h.

Referenced by initialized(), and update().

◆ _mortar_interfaces

std::unordered_map<MortarKey, MortarInterfaceConfig> MortarInterfaceWarehouse::_mortar_interfaces
private

Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced mortar interface (AMG object + per-interface flags).

Definition at line 171 of file MortarInterfaceWarehouse.h.

Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasObjects(), meshChanged(), and update().

◆ _mortar_subdomain_coverage

std::set<SubdomainID> MortarInterfaceWarehouse::_mortar_subdomain_coverage
private

A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object.

Definition at line 179 of file MortarInterfaceWarehouse.h.

Referenced by createMortarInterface(), and getMortarSubdomainIDs().


The documentation for this class was generated from the following files: