17#include "libmesh/parallel_object.h"
20#include <unordered_map>
37 std::unique_ptr<AutomaticMortarGeneration>
amg;
72 const std::pair<SubdomainID, SubdomainID> & subdomain_key,
77 const bool correct_edge_dropping,
78 const Real minimum_projection_angle,
79 const Mortar3DSubpatchPlane mortar_3d_subpatch_plane,
81 const bool triangulate_triangles,
82 const Mortar3DQuadraturePointMapping mortar_3d_qp_mapping =
83 Mortar3DQuadraturePointMapping::NORMAL_PROJECTION);
91 const std::pair<SubdomainID, SubdomainID> & ,
92 bool on_displaced)
const;
100 const std::pair<SubdomainID, SubdomainID> & ,
subdomain_id_type SubdomainID
MortarSegmentTriangulationMode
This class is a container/interface for the objects involved in automatic generation of mortar spaces...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Interface for objects that need to be notified when the mortar segment mesh for an interface they con...
const std::set< BoundaryID > & getMortarBoundaryIDs() const
Returns the mortar covered boundaries.
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...
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....
bool hasObjects() const
Returns whether we have any active AutomaticMortarGeneration objects.
std::set< MortarExecutorInterface * > _mei_objs
A container of objects for whom the mortarSetup method will be called whenever a mortar mesh's segmen...
bool update()
Builds mortar segment meshes for each mortar interface.
bool hasDisplacedObjects() const
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh.
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 i...
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...
void meshChanged()
Invalidates cached MSM node/element ID offsets on all mortar interfaces so they are recomputed on the...
void notifyWhenMortarSetup(MortarExecutorInterface *mei)
Adds mei to the container of objects that will have their mortarSetup method called whenever a mortar...
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...
std::unordered_map< MortarKey, MortarInterfaceConfig > _mortar_interfaces
Map from primary-secondary (in that order) boundary ID pair to the configuration of the undisplaced m...
const std::set< SubdomainID > & getMortarSubdomainIDs() const
Returns the mortar covered subdomains.
std::set< SubdomainID > _mortar_subdomain_coverage
A set containing the subdomain ids covered by all the mortar interfaces in this MortarInterfaceWareho...
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.
bool _mortar_initd
Whether we have performed any mortar mesh construction.
std::set< BoundaryID > _mortar_boundary_coverage
A set containing the boundary ids covered by all the mortar interfaces in this MortarInterfaceWarehou...
std::pair< BoundaryID, BoundaryID > MortarKey
void dontNotifyWhenMortarSetup(MortarExecutorInterface *mei)
Removes mei from the container of objects that will have their mortarSetup method called whenever a m...
Generic class for solving transient nonlinear problems.
Per-mortar-interface configuration.
bool triangulate_triangles
std::unique_ptr< AutomaticMortarGeneration > amg
Mortar3DQuadraturePointMapping mortar_3d_qp_mapping
MortarSegmentTriangulationMode triangulation
Mortar3DSubpatchPlane mortar_3d_subpatch_plane
Real minimum_projection_angle