#include <MortarData.h>
Public Member Functions | |
MortarData (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) |
Create mortar generation object. More... | |
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. More... | |
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. More... | |
const std::unordered_map< std::pair< BoundaryID, BoundaryID >, AutomaticMortarGeneration > & | getMortarInterfaces (bool on_displaced) const |
Return all automatic mortar generation objects on 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... | |
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::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 | |
void | update (AutomaticMortarGeneration &amg) |
Builds mortar segment mesh from specific AutomaticMortarGeneration object. More... | |
Private Attributes | |
std::unordered_map< MortarKey, AutomaticMortarGeneration > | _mortar_interfaces |
Map from primary-secondary (in that order) boundary ID pair to the corresponding undisplaced AutomaticMortarGeneration object. More... | |
std::unordered_map< MortarKey, AutomaticMortarGeneration > | _displaced_mortar_interfaces |
Map from primary-secondary (in that order) boundary ID pair to the corresponding displaced AutomaticMortarGeneration object. More... | |
std::set< SubdomainID > | _mortar_subdomain_coverage |
A set containing the subdomain ids covered by all the mortar interfaces in this MortarData object. More... | |
std::set< BoundaryID > | _mortar_boundary_coverage |
A set containing the boundary ids covered by all the mortar interfaces in this MortarData object. More... | |
std::unordered_map< MortarKey, bool > | _periodic_map |
Map from undisplaced AMG key to whether the undisplaced AMG object is enforcing periodic constraints. More... | |
std::unordered_map< MortarKey, bool > | _displaced_periodic_map |
Map from displaced AMG key to whether the displaced AMG object is enforcing periodic constraints. More... | |
std::unordered_map< MortarKey, bool > | _debug_flag_map |
Map from undisplaced AMG key to whether the undisplaced AMG object is to output mortar segment mesh. More... | |
std::unordered_map< MortarKey, bool > | _displaced_debug_flag_map |
Map from displaced AMG key to whether the displaced AMG object is to output mortar segment mesh. 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... | |
Definition at line 23 of file MortarData.h.
|
private |
Definition at line 135 of file MortarData.h.
MortarData::MortarData | ( | const libMesh::ParallelObject & | other | ) |
Definition at line 16 of file MortarData.C.
void MortarData::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 | ||
) |
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 |
Definition at line 22 of file MortarData.C.
Referenced by FEProblemBase::createMortarInterface().
void MortarData::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 210 of file MortarData.C.
const std::set< SubdomainID > & MortarData::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 194 of file MortarData.C.
|
inline |
Returns the mortar covered boundaries.
Definition at line 89 of file MortarData.h.
const AutomaticMortarGeneration & MortarData::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 116 of file MortarData.C.
Referenced by getMortarInterface(), and FEProblemBase::getMortarInterface().
AutomaticMortarGeneration & MortarData::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 139 of file MortarData.C.
|
inline |
Return all automatic mortar generation objects on either the displaced or undisplaced mesh.
Definition at line 73 of file MortarData.h.
Referenced by FEProblemBase::getMortarInterfaces().
|
inline |
Returns the mortar covered subdomains.
Definition at line 84 of file MortarData.h.
Referenced by FEProblemBase::checkProblemIntegrity().
|
inline |
Returns whether any of the AutomaticMortarGeneration objects are running on a displaced mesh.
Definition at line 99 of file MortarData.h.
Referenced by FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualTags(), FEProblemBase::initialSetup(), and FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects().
|
inline |
Returns whether we have any active AutomaticMortarGeneration objects.
Definition at line 104 of file MortarData.h.
Referenced by FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects().
|
inline |
Definition at line 127 of file MortarData.h.
Referenced by FEProblemBase::init().
void MortarData::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 204 of file MortarData.C.
void MortarData::update | ( | ) |
Builds mortar segment meshes for each mortar interface.
Definition at line 149 of file MortarData.C.
Referenced by FEProblemBase::updateMortarMesh().
|
private |
Builds mortar segment mesh from specific AutomaticMortarGeneration object.
Definition at line 160 of file MortarData.C.
|
private |
Map from undisplaced AMG key to whether the undisplaced AMG object is to output mortar segment mesh.
Definition at line 160 of file MortarData.h.
Referenced by createMortarInterface().
|
private |
Map from displaced AMG key to whether the displaced AMG object is to output mortar segment mesh.
Definition at line 163 of file MortarData.h.
Referenced by createMortarInterface().
|
private |
Map from primary-secondary (in that order) boundary ID pair to the corresponding displaced AutomaticMortarGeneration object.
Definition at line 143 of file MortarData.h.
Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasDisplacedObjects(), and update().
|
private |
Map from displaced AMG key to whether the displaced AMG object is enforcing periodic constraints.
Definition at line 157 of file MortarData.h.
Referenced by createMortarInterface().
|
private |
Map from lower dimensional subdomain ids to corresponding higher simensional subdomain ids (e.g.
the ids of the interior parents)
Definition at line 167 of file MortarData.h.
Referenced by createMortarInterface(), and getHigherDimSubdomainIDs().
|
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 171 of file MortarData.h.
Referenced by dontNotifyWhenMortarSetup(), and notifyWhenMortarSetup().
|
private |
A set containing the boundary ids covered by all the mortar interfaces in this MortarData object.
Definition at line 151 of file MortarData.h.
Referenced by createMortarInterface(), and getMortarBoundaryIDs().
|
private |
Whether we have performed any mortar mesh construction.
Definition at line 174 of file MortarData.h.
Referenced by initialized(), and update().
|
private |
Map from primary-secondary (in that order) boundary ID pair to the corresponding undisplaced AutomaticMortarGeneration object.
Definition at line 139 of file MortarData.h.
Referenced by createMortarInterface(), getMortarInterface(), getMortarInterfaces(), hasObjects(), and update().
|
private |
A set containing the subdomain ids covered by all the mortar interfaces in this MortarData object.
Definition at line 147 of file MortarData.h.
Referenced by createMortarInterface(), and getMortarSubdomainIDs().
|
private |
Map from undisplaced AMG key to whether the undisplaced AMG object is enforcing periodic constraints.
Definition at line 154 of file MortarData.h.
Referenced by createMortarInterface().