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:
NearestNodeLocatorandPenetrationLocator.Both of the capabilities work in parallel and with both Parallel- and Serial-Mesh.
Locators can be requested using four different methods on the
GeometricSearchDataAPI: -getQuadraturePenetrationLocator-getPenetrationLocator-getQuadratureNearestNodeLocator-getNearestNodeLocatorThe
*Quadrature*based methods should be used within quadrature-point based objects like: -Materialse.g. theHeatConductionmodule'sGapConductanceobject -IntegratedBCse.g. theHeatConductionmodule'sGapHeatTransferobject - ElementalAuxKernelse.g. the elemental versions ofGapValueAux,NearestNodeDistanceAux, andPenetrationAuxThe non-quadrature based methods should be used for nodal objects such as: -
NodeFaceConstraintse.g. theContactmodule'sMechanicalContactConstraintobject - NodalAuxKernelse.g. the nodal versions ofGapValueAux,NearestNodeDistanceAux, andPenetrationAuxgeometric search objects like
NearestNodeLocatorandPenetrationLocatorshould hold to their geometric purpose and not call algebraic APIs likeFEProblemBase::preparewhich will querylibMesh::DofObjectinformation. 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.