#include <MortarInterfaceWarehouse.h>
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 Mortar3DSubpatchPlane mortar_3d_subpatch_plane, const MooseEnum &triangulation, const bool triangulate_triangles, const Mortar3DQuadraturePointMapping mortar_3d_qp_mapping=Mortar3DQuadraturePointMapping::NORMAL_PROJECTION) |
| Create mortar generation object. | |
| 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 keys. | |
| AutomaticMortarGeneration & | getMortarInterface (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. | |
| 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. | |
| const std::set< SubdomainID > & | getMortarSubdomainIDs () const |
| Returns the mortar covered subdomains. | |
| const std::set< BoundaryID > & | getMortarBoundaryIDs () const |
| Returns the mortar covered boundaries. | |
| bool | update () |
| Builds mortar segment meshes for each mortar interface. | |
| void | meshChanged () |
| Invalidates cached MSM node/element ID offsets on all mortar interfaces so they are recomputed on the next update(). | |
| bool | hasDisplacedObjects () const |
| Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh. | |
| bool | hasObjects () const |
| Returns whether we have any active AutomaticMortarGeneration objects. | |
| 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. | |
| void | notifyWhenMortarSetup (MortarExecutorInterface *mei) |
Adds mei to the container of objects that will have their mortarSetup method called whenever a mortar mesh's segment coverage is (re)built and has changed, including the first build | |
| void | dontNotifyWhenMortarSetup (MortarExecutorInterface *mei) |
Removes mei from the container of objects that will have their mortarSetup method called whenever a mortar mesh's segment coverage is (re)built and has changed | |
| bool | initialized () const |
| const Parallel::Communicator & | comm () 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, BoundaryID > | MortarKey |
Private Member Functions | |
| bool | update (AutomaticMortarGeneration &amg) |
| Builds mortar segment mesh from specific AutomaticMortarGeneration object. | |
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). | |
| 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). | |
| std::set< SubdomainID > | _mortar_subdomain_coverage |
| A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object. | |
| std::set< BoundaryID > | _mortar_boundary_coverage |
| A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object. | |
| 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. | |
| std::set< MortarExecutorInterface * > | _mei_objs |
A container of objects for whom the mortarSetup method will be called whenever a mortar mesh's segment coverage is (re)built and has changed, including the first build. | |
| bool | _mortar_initd |
| Whether we have performed any mortar mesh construction. | |
Definition at line 47 of file MortarInterfaceWarehouse.h.
|
private |
Definition at line 183 of file MortarInterfaceWarehouse.h.
| MortarInterfaceWarehouse::MortarInterfaceWarehouse | ( | const libMesh::ParallelObject & | other | ) |
Definition at line 38 of file MortarInterfaceWarehouse.C.
| 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 Mortar3DSubpatchPlane | mortar_3d_subpatch_plane, | ||
| const MooseEnum & | triangulation, | ||
| const bool | triangulate_triangles, | ||
| const Mortar3DQuadraturePointMapping | mortar_3d_qp_mapping = Mortar3DQuadraturePointMapping::NORMAL_PROJECTION |
||
| ) |
Create mortar generation object.
| boundary_key | The primary-secondary boundary pair on which the AMG objects lives |
| subdomain_key | The primary-secondary subdomain pair on which the AMG objects lives |
| subproblem | A reference to the subproblem |
| on_displaced | Whether the AMG object lives on the displaced mesh |
| periodic | Whether 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 |
| debug | whether to output mortar segment mesh exodus file for debugging purposes |
| correct_edge_dropping | edge dropping treatment selection |
| minimum_projection_angle | minimum projection angle allowed for building mortar segment mesh |
| mortar_3d_subpatch_plane | method for constructing 3D mortar subpatch planes |
| triangulation | triangulation strategy used for clipped 3D mortar polygons |
| triangulate_triangles | whether a clipped polygon that is already a triangle should still be subdivided |
| mortar_3d_qp_mapping | method for mapping 3D mortar quadrature points to faces |
Definition at line 44 of file MortarInterfaceWarehouse.C.
| void MortarInterfaceWarehouse::dontNotifyWhenMortarSetup | ( | MortarExecutorInterface * | mei | ) |
Removes mei from the container of objects that will have their mortarSetup method called whenever a mortar mesh's segment coverage is (re)built and has changed
Definition at line 291 of file MortarInterfaceWarehouse.C.
Referenced by MortarExecutorInterface::MortarExecutorInterface(), and MortarUserObjectThread::~MortarUserObjectThread().
| 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 274 of file MortarInterfaceWarehouse.C.
|
inline |
| 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 178 of file MortarInterfaceWarehouse.C.
| 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 164 of file MortarInterfaceWarehouse.C.
Referenced by getMortarInterface().
|
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 109 of file MortarInterfaceWarehouse.h.
|
inline |
|
inline |
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh.
Definition at line 144 of file MortarInterfaceWarehouse.h.
|
inline |
Returns whether we have any active AutomaticMortarGeneration objects.
Definition at line 149 of file MortarInterfaceWarehouse.h.
|
inline |
Definition at line 173 of file MortarInterfaceWarehouse.h.
| 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 204 of file MortarInterfaceWarehouse.C.
| void MortarInterfaceWarehouse::notifyWhenMortarSetup | ( | MortarExecutorInterface * | mei | ) |
Adds mei to the container of objects that will have their mortarSetup method called whenever a mortar mesh's segment coverage is (re)built and has changed, including the first build
Definition at line 285 of file MortarInterfaceWarehouse.C.
Referenced by MortarExecutorInterface::MortarExecutorInterface(), and MortarExecutorInterface::MortarExecutorInterface().
| bool MortarInterfaceWarehouse::update | ( | ) |
Builds mortar segment meshes for each mortar interface.
FEProblemBase::updateMortarMesh()) can key off this instead of re-deriving it. Definition at line 189 of file MortarInterfaceWarehouse.C.
Referenced by meshChanged(), and update().
|
private |
Builds mortar segment mesh from specific AutomaticMortarGeneration object.
amg's interior-parent subdomain coverage changed (or this is the first build) Definition at line 214 of file MortarInterfaceWarehouse.C.
|
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 191 of file MortarInterfaceWarehouse.h.
Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasDisplacedObjects(), meshChanged(), and update().
|
private |
Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e.g.
the ids of the interior parents)
Definition at line 203 of file MortarInterfaceWarehouse.h.
Referenced by createMortarInterface(), and getHigherDimSubdomainIDs().
|
private |
A container of objects for whom the mortarSetup method will be called whenever a mortar mesh's segment coverage is (re)built and has changed, including the first build.
Definition at line 207 of file MortarInterfaceWarehouse.h.
Referenced by dontNotifyWhenMortarSetup(), notifyWhenMortarSetup(), and update().
|
private |
A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object.
Definition at line 199 of file MortarInterfaceWarehouse.h.
Referenced by createMortarInterface(), and getMortarBoundaryIDs().
|
private |
Whether we have performed any mortar mesh construction.
Definition at line 210 of file MortarInterfaceWarehouse.h.
Referenced by initialized(), update(), and update().
|
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 187 of file MortarInterfaceWarehouse.h.
Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasObjects(), meshChanged(), and update().
|
private |
A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWarehouse object.
Definition at line 195 of file MortarInterfaceWarehouse.h.
Referenced by createMortarInterface(), and getMortarSubdomainIDs().