#include <GeometricSearchData.h>
Public Types | |
| enum | GeometricSearchType { ALL , NEAREST_NODE , PENETRATION , QUADRATURE , ELEMENTPAIR } |
| Used to select groups of geometric search objects to update. More... | |
Public Member Functions | |
| GeometricSearchData (SubProblem &subproblem, MooseMesh &mesh) | |
| virtual | ~GeometricSearchData () |
| PenetrationLocator & | getPenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST) |
| PenetrationLocator & | getQuadraturePenetrationLocator (const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST) |
| NearestNodeLocator & | getNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary) |
| NearestNodeLocator & | getNearestNodeLocator (const BoundaryID primary_id, const BoundaryID secondary_id) |
| NearestNodeLocator & | getQuadratureNearestNodeLocator (const BoundaryName &primary, const BoundaryName &secondary) |
| NearestNodeLocator & | getQuadratureNearestNodeLocator (const BoundaryID primary_id, const BoundaryID secondary_id) |
| const std::map< std::pair< BoundaryID, BoundaryID >, PenetrationLocator * > & | getPenetrationLocators () const |
| void | addElementPairLocator (BoundaryID interface_id, std::shared_ptr< ElementPairLocator > epl) |
| void | setSearchUsingPointLocator (bool state) |
| void | update (GeometricSearchType type=ALL) |
| Update all of the search objects. | |
| void | reinit () |
| Completely redo all geometric search objects. | |
| void | clearNearestNodeLocators () |
| Clear out the Penetration Locators so they will redo the search. | |
| void | backup () |
| Snapshot the PenetrationLocators' restartable state (the same state used for restart/recover), so it can be restored() if the current timestep is later rejected. | |
| void | restore () |
| Restore the PenetrationLocators' state captured by the most recent backup(). | |
| Real | maxPatchPercentage () |
| Maximum percentage through the search patch that any NearestNodeLocator had to look. | |
| void | updateGhostedElems () |
| Updates the list of ghosted elements at the start of each time step for the nonlinear iteration patch update strategy. | |
Public Attributes | |
| SubProblem & | _subproblem |
| MooseMesh & | _mesh |
| std::map< std::pair< BoundaryID, BoundaryID >, PenetrationLocator * > | _penetration_locators |
| std::map< std::pair< BoundaryID, BoundaryID >, NearestNodeLocator * > | _nearest_node_locators |
| std::map< BoundaryID, std::shared_ptr< ElementPairLocator > > | _element_pair_locators |
Protected Attributes | |
| std::set< BoundaryID > | _quadrature_boundaries |
| These are real boundaries that have quadrature nodes on them. | |
| std::map< BoundaryID, BoundaryID > | _secondary_to_qsecondary |
| A mapping of the real boundary id to the secondary boundary ids. | |
Private Member Functions | |
| void | generateQuadratureNodes (const BoundaryID secondary_id, const BoundaryID qsecondary_id, bool reiniting=false) |
| Add Quadrature Nodes to the Mesh in support of Quadrature based penetration location and nearest node searching. | |
| void | updateQuadratureNodes (const BoundaryID secondary_id) |
| Update the positions of the quadrature nodes. | |
| void | reinitQuadratureNodes (const BoundaryID secondary_id) |
| Completely redo quadrature nodes. | |
Private Attributes | |
| bool | _first |
| Denotes whether this is the first time the geometric search objects have been updated. | |
| bool | _search_using_point_locator |
| Denotes whether the PenetrationLocator objects should use a point locator rather than cheaper node-to-element connectivity searches once the nearest nodes have been identified. | |
| std::map< std::pair< BoundaryID, BoundaryID >, std::string > | _penetration_locator_backups |
| Per-locator PenetrationLocator::backup() snapshots taken by backup(), keyed the same way as _penetration_locators. | |
Definition at line 28 of file GeometricSearchData.h.
Used to select groups of geometric search objects to update.
| Enumerator | |
|---|---|
| ALL | |
| NEAREST_NODE | |
| PENETRATION | |
| QUADRATURE | |
| ELEMENTPAIR | |
Definition at line 32 of file GeometricSearchData.h.
| GeometricSearchData::GeometricSearchData | ( | SubProblem & | subproblem, |
| MooseMesh & | mesh | ||
| ) |
Definition at line 23 of file GeometricSearchData.C.
|
virtual |
Definition at line 34 of file GeometricSearchData.C.
| void GeometricSearchData::addElementPairLocator | ( | BoundaryID | interface_id, |
| std::shared_ptr< ElementPairLocator > | epl | ||
| ) |
Definition at line 330 of file GeometricSearchData.C.
| void GeometricSearchData::backup | ( | ) |
Snapshot the PenetrationLocators' restartable state (the same state used for restart/recover), so it can be restored() if the current timestep is later rejected.
Called from FEProblemBase::advanceState(), i.e. once per accepted step, before that step's timestepSetup(). Intentionally not restartable data itself: it is intra-run scratch that a checkpoint never needs, and is only ever read back within the same run.
Definition at line 124 of file GeometricSearchData.C.
Referenced by FEProblemBase::backupGeometricSearchState().
| void GeometricSearchData::clearNearestNodeLocators | ( | ) |
Clear out the Penetration Locators so they will redo the search.
Definition at line 138 of file GeometricSearchData.C.
Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches().
|
private |
Add Quadrature Nodes to the Mesh in support of Quadrature based penetration location and nearest node searching.
| secondary_id | The actual secondary_id (the one in the mesh) |
| qsecondary_id | The "fictitious" secondary_id that is going to be used for this quadrature nodeset |
| reiniting | Whether we are reinitializing, e.g. whether we need to re-generate q-nodes |
Definition at line 291 of file GeometricSearchData.C.
Referenced by reinitQuadratureNodes(), and update().
| NearestNodeLocator & GeometricSearchData::getNearestNodeLocator | ( | const BoundaryID | primary_id, |
| const BoundaryID | secondary_id | ||
| ) |
Definition at line 248 of file GeometricSearchData.C.
| NearestNodeLocator & GeometricSearchData::getNearestNodeLocator | ( | const BoundaryName & | primary, |
| const BoundaryName & | secondary | ||
| ) |
Definition at line 235 of file GeometricSearchData.C.
Referenced by getNearestNodeLocator(), GeometricSearchInterface::getNearestNodeLocator(), getPenetrationLocator(), and getQuadratureNearestNodeLocator().
| PenetrationLocator & GeometricSearchData::getPenetrationLocator | ( | const BoundaryName & | primary, |
| const BoundaryName & | secondary, | ||
| libMesh::Order | order = libMesh::FIRST |
||
| ) |
Definition at line 164 of file GeometricSearchData.C.
Referenced by DMSetUp_Moose_Pre(), and GeometricSearchInterface::getPenetrationLocator().
|
inline |
Definition at line 62 of file GeometricSearchData.h.
| NearestNodeLocator & GeometricSearchData::getQuadratureNearestNodeLocator | ( | const BoundaryID | primary_id, |
| const BoundaryID | secondary_id | ||
| ) |
Definition at line 280 of file GeometricSearchData.C.
| NearestNodeLocator & GeometricSearchData::getQuadratureNearestNodeLocator | ( | const BoundaryName & | primary, |
| const BoundaryName & | secondary | ||
| ) |
Definition at line 267 of file GeometricSearchData.C.
Referenced by getQuadratureNearestNodeLocator(), GeometricSearchInterface::getQuadratureNearestNodeLocator(), and getQuadraturePenetrationLocator().
| PenetrationLocator & GeometricSearchData::getQuadraturePenetrationLocator | ( | const BoundaryName & | primary, |
| const BoundaryName & | secondary, | ||
| libMesh::Order | order = libMesh::FIRST |
||
| ) |
Definition at line 197 of file GeometricSearchData.C.
Referenced by GeometricSearchInterface::getQuadraturePenetrationLocator().
| Real GeometricSearchData::maxPatchPercentage | ( | ) |
Maximum percentage through the search patch that any NearestNodeLocator had to look.
As this goes towards 1.0 it's indicative of needing to rebuild the patches.
Definition at line 148 of file GeometricSearchData.C.
| void GeometricSearchData::reinit | ( | ) |
Completely redo all geometric search objects.
This should be called when the mesh is adapted.
Definition at line 97 of file GeometricSearchData.C.
Referenced by FEProblemBase::meshChanged(), SubProblem::reinitGeomSearch(), and DisplacedProblem::updateMesh().
|
private |
Completely redo quadrature nodes.
Definition at line 381 of file GeometricSearchData.C.
Referenced by reinit().
| void GeometricSearchData::restore | ( | ) |
Restore the PenetrationLocators' state captured by the most recent backup().
Called from TimeStepper::rejectStep(), before FEProblemBase::restoreSolutions() re-projects the geometric search onto the restored mesh, so that re-projection starts from the same seeds attempt 1 did rather than from attempt 1's discarded, converged state.
Definition at line 131 of file GeometricSearchData.C.
Referenced by FEProblemBase::restoreGeometricSearchState().
| void GeometricSearchData::setSearchUsingPointLocator | ( | bool | state | ) |
Definition at line 337 of file GeometricSearchData.C.
Referenced by GeometricSearchInterface::GeometricSearchInterface().
| void GeometricSearchData::update | ( | GeometricSearchType | type = ALL | ) |
Update all of the search objects.
Definition at line 44 of file GeometricSearchData.C.
Referenced by DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), DisplacedProblem::updateMesh(), and DisplacedProblem::updateMesh().
| void GeometricSearchData::updateGhostedElems | ( | ) |
Updates the list of ghosted elements at the start of each time step for the nonlinear iteration patch update strategy.
Definition at line 389 of file GeometricSearchData.C.
Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches().
|
private |
Update the positions of the quadrature nodes.
Definition at line 353 of file GeometricSearchData.C.
Referenced by update().
| std::map<BoundaryID, std::shared_ptr<ElementPairLocator> > GeometricSearchData::_element_pair_locators |
Definition at line 121 of file GeometricSearchData.h.
Referenced by addElementPairLocator(), NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), reinit(), and update().
|
private |
Denotes whether this is the first time the geometric search objects have been updated.
Definition at line 157 of file GeometricSearchData.h.
Referenced by update().
| MooseMesh& GeometricSearchData::_mesh |
Definition at line 118 of file GeometricSearchData.h.
Referenced by generateQuadratureNodes(), GeometricSearchData(), getNearestNodeLocator(), getNearestNodeLocator(), getPenetrationLocator(), getQuadratureNearestNodeLocator(), getQuadraturePenetrationLocator(), reinit(), and updateQuadratureNodes().
| std::map<std::pair<BoundaryID, BoundaryID>, NearestNodeLocator *> GeometricSearchData::_nearest_node_locators |
Definition at line 120 of file GeometricSearchData.h.
Referenced by clearNearestNodeLocators(), NonlinearSystemBase::findImplicitGeometricCouplingEntries(), getNearestNodeLocator(), maxPatchPercentage(), reinit(), FEProblemBase::reinitBecauseOfGhostingOrNewGeomObjects(), update(), updateGhostedElems(), and ~GeometricSearchData().
|
private |
Per-locator PenetrationLocator::backup() snapshots taken by backup(), keyed the same way as _penetration_locators.
Not restartable: see the comment on backup() above.
Definition at line 170 of file GeometricSearchData.h.
| std::map<std::pair<BoundaryID, BoundaryID>, PenetrationLocator *> GeometricSearchData::_penetration_locators |
Definition at line 119 of file GeometricSearchData.h.
Referenced by backup(), NonlinearSystemBase::constraintJacobians(), NonlinearSystemBase::constraintResiduals(), DMMooseGetEmbedding_Private(), getPenetrationLocator(), getPenetrationLocators(), getQuadraturePenetrationLocator(), NonlinearSystemBase::overwriteNodeFace(), reinit(), restore(), NonlinearSystemBase::setConstraintSecondaryValues(), setSearchUsingPointLocator(), update(), and ~GeometricSearchData().
|
protected |
These are real boundaries that have quadrature nodes on them.
Definition at line 125 of file GeometricSearchData.h.
Referenced by generateQuadratureNodes(), reinit(), and update().
|
private |
Denotes whether the PenetrationLocator objects should use a point locator rather than cheaper node-to-element connectivity searches once the nearest nodes have been identified.
Definition at line 164 of file GeometricSearchData.h.
Referenced by getPenetrationLocator(), getQuadraturePenetrationLocator(), and setSearchUsingPointLocator().
|
protected |
A mapping of the real boundary id to the secondary boundary ids.
Definition at line 128 of file GeometricSearchData.h.
Referenced by getQuadratureNearestNodeLocator(), getQuadraturePenetrationLocator(), reinitQuadratureNodes(), and update().
| SubProblem& GeometricSearchData::_subproblem |
Definition at line 117 of file GeometricSearchData.h.
Referenced by generateQuadratureNodes(), getNearestNodeLocator(), getNearestNodeLocator(), getPenetrationLocator(), getQuadratureNearestNodeLocator(), getQuadraturePenetrationLocator(), and updateQuadratureNodes().