GeometricSearchData
Sometimes information needs to be exchanged between disconnected pieces of mesh.
Examples include: - Mechanical Contact - Gap Heat Conduction - Radiation - Constraints - Mesh Tying
The Geometric Search system allows an application to track evolving geometric relationships.
Currently, this entails two main capabilities:
NearestNodeLocator
andPenetrationLocator
.Both of the capabilities work in parallel and with both Parallel- and Serial-Mesh.
Locators can be requested using four different methods on the
GeometricSearchData
API: -getQuadraturePenetrationLocator
-getPenetrationLocator
-getQuadratureNearestNodeLocator
-getNearestNodeLocator
The
*Quadrature*
based methods should be used within quadrature-point based objects like: -Materials
e.g. theHeatConduction
module'sGapConductance
object -IntegratedBCs
e.g. theHeatConduction
module'sGapHeatTransfer
object - ElementalAuxKernels
e.g. the elemental versions ofGapValueAux
,NearestNodeDistanceAux
, andPenetrationAux
The non-quadrature based methods should be used for nodal objects such as: -
NodeFaceConstraints
e.g. theContact
module'sMechanicalContactConstraint
object - NodalAuxKernels
e.g. the nodal versions ofGapValueAux
,NearestNodeDistanceAux
, andPenetrationAux
geometric search objects like
NearestNodeLocator
andPenetrationLocator
should hold to their geometric purpose and not call algebraic APIs likeFEProblemBase::prepare
which will querylibMesh::DofObject
information. This information may or may not have been initialized at the time that geometric search objects are being updated, so any query attempt may result in failed assertions or segmentation faults.