https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Protected Attributes | Private Member Functions | Private Attributes | List of all members
GeometricSearchData Class Reference

#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.
 

Detailed Description

Definition at line 28 of file GeometricSearchData.h.

Member Enumeration Documentation

◆ GeometricSearchType

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.

Constructor & Destructor Documentation

◆ GeometricSearchData()

GeometricSearchData::GeometricSearchData ( SubProblem &  subproblem,
MooseMesh &  mesh 
)

Definition at line 23 of file GeometricSearchData.C.

24 : _subproblem(subproblem), _mesh(mesh), _first(true), _search_using_point_locator(false)
25{
26 // do a check on the boundary IDs to see if any conflict will rise from computing QP node set IDs
27 const auto & nodeset_ids = _mesh.meshNodesetIds();
28 for (const auto id : nodeset_ids)
29 if (nodeset_ids.find(-id - 1) != nodeset_ids.end())
30 mooseError("Your mesh contains nodesets with negative IDs that interfere with QP nodeset IDs "
31 "potentially generated by the GeometricSearch system.");
32}
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
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...
const std::set< BoundaryID > & meshNodesetIds() const
Returns a read-only reference to the set of nodesets currently present in the Mesh.
Definition MooseMesh.C:3253
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition KokkosUtils.h:40

◆ ~GeometricSearchData()

GeometricSearchData::~GeometricSearchData ( )
virtual

Definition at line 34 of file GeometricSearchData.C.

35{
36 for (auto & it : _penetration_locators)
37 delete it.second;
38
39 for (auto & it : _nearest_node_locators)
40 delete it.second;
41}
std::map< std::pair< BoundaryID, BoundaryID >, NearestNodeLocator * > _nearest_node_locators
std::map< std::pair< BoundaryID, BoundaryID >, PenetrationLocator * > _penetration_locators

Member Function Documentation

◆ addElementPairLocator()

void GeometricSearchData::addElementPairLocator ( BoundaryID  interface_id,
std::shared_ptr< ElementPairLocator >  epl 
)

Definition at line 330 of file GeometricSearchData.C.

332{
333 _element_pair_locators[interface_id] = epl;
334}
std::map< BoundaryID, std::shared_ptr< ElementPairLocator > > _element_pair_locators

◆ backup()

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.

125{
126 for (const auto & [boundary_pair, pl] : _penetration_locators)
127 _penetration_locator_backups[boundary_pair] = pl->backup();
128}
std::map< std::pair< BoundaryID, BoundaryID >, std::string > _penetration_locator_backups
Per-locator PenetrationLocator::backup() snapshots taken by backup(), keyed the same way as _penetrat...
void backup()
Snapshot the PenetrationLocators' restartable state (the same state used for restart/recover),...

Referenced by FEProblemBase::backupGeometricSearchState().

◆ clearNearestNodeLocators()

void GeometricSearchData::clearNearestNodeLocators ( )

Clear out the Penetration Locators so they will redo the search.

Definition at line 138 of file GeometricSearchData.C.

139{
140 for (const auto & nnl_it : _nearest_node_locators)
141 {
142 NearestNodeLocator * nnl = nnl_it.second;
143 nnl->reinit();
144 }
145}
Finds the nearest node to each node in boundary1 to each node in boundary2 and the other way around.
void reinit()
Completely redo the search from scratch.

Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches().

◆ generateQuadratureNodes()

void GeometricSearchData::generateQuadratureNodes ( const BoundaryID  secondary_id,
const BoundaryID  qsecondary_id,
bool  reiniting = false 
)
private

Add Quadrature Nodes to the Mesh in support of Quadrature based penetration location and nearest node searching.

Parameters
secondary_idThe actual secondary_id (the one in the mesh)
qsecondary_idThe "fictitious" secondary_id that is going to be used for this quadrature nodeset
reinitingWhether we are reinitializing, e.g. whether we need to re-generate q-nodes

Definition at line 291 of file GeometricSearchData.C.

294{
295 // Have we already generated quadrature nodes for this boundary id?
296 if (_quadrature_boundaries.find(secondary_id) != _quadrature_boundaries.end())
297 {
298 if (!reiniting)
299 return;
300 }
301 else
302 _quadrature_boundaries.insert(secondary_id);
303
304 const MooseArray<Point> & points_face = _subproblem.assembly(0, 0).qPointsFace();
305
307 for (const auto & belem : range)
308 {
309 const Elem * elem = belem->_elem;
310 const auto side = belem->_side;
311 const auto boundary_id = belem->_bnd_id;
312
313 if (elem->processor_id() == _subproblem.processor_id())
314 {
315 if (boundary_id == (BoundaryID)secondary_id)
316 {
317 // All we should need to do here is reinit the underlying libMesh::FE object because that
318 // will get us the correct points for the current element and side
320 _subproblem.assembly(0, 0).reinit(elem, side);
321
322 for (const auto qp : index_range(points_face))
323 _mesh.addQuadratureNode(elem, side, qp, qsecondary_id, points_face[qp]);
324 }
325 }
326 }
327}
boundary_id_type BoundaryID
void reinit(const Elem *elem)
Reinitialize objects (JxW, q_points, ...) for an elements.
Definition Assembly.C:1856
const MooseArray< Point > & qPointsFace() const
Returns the reference to the current quadrature being used.
Definition Assembly.h:336
std::set< BoundaryID > _quadrature_boundaries
These are real boundaries that have quadrature nodes on them.
forward declarations
Definition MooseArray.h:18
libMesh::StoredRange< MooseMesh::const_bnd_elem_iterator, const BndElement * > * getBoundaryElementRange()
Definition MooseMesh.C:1303
virtual void setCurrentSubdomainID(const Elem *elem, const THREAD_ID tid)=0
virtual Assembly & assembly(const THREAD_ID tid, const unsigned int sys_num)=0
processor_id_type processor_id() const
auto index_range(const T &sizable)

Referenced by reinitQuadratureNodes(), and update().

◆ getNearestNodeLocator() [1/2]

NearestNodeLocator & GeometricSearchData::getNearestNodeLocator ( const BoundaryID  primary_id,
const BoundaryID  secondary_id 
)

Definition at line 248 of file GeometricSearchData.C.

250{
251 NearestNodeLocator * nnl =
252 _nearest_node_locators[std::pair<BoundaryID, BoundaryID>(primary_id, secondary_id)];
253
255 _subproblem.addGhostedBoundary(secondary_id);
256
257 if (!nnl)
258 {
259 nnl = new NearestNodeLocator(_subproblem, _mesh, primary_id, secondary_id);
260 _nearest_node_locators[std::pair<BoundaryID, BoundaryID>(primary_id, secondary_id)] = nnl;
261 }
262
263 return *nnl;
264}
virtual void addGhostedBoundary(BoundaryID boundary_id)=0
Will make sure that all necessary elements from boundary_id are ghosted to this processor.

◆ getNearestNodeLocator() [2/2]

NearestNodeLocator & GeometricSearchData::getNearestNodeLocator ( const BoundaryName &  primary,
const BoundaryName &  secondary 
)

Definition at line 235 of file GeometricSearchData.C.

237{
238 const auto primary_id = _mesh.getBoundaryID(primary);
239 const auto secondary_id = _mesh.getBoundaryID(secondary);
240
242 _subproblem.addGhostedBoundary(secondary_id);
243
244 return getNearestNodeLocator(primary_id, secondary_id);
245}
NearestNodeLocator & getNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
BoundaryID getBoundaryID(const BoundaryName &boundary_name) const
Get the associated BoundaryID for the boundary name.
Definition MooseMesh.C:1639

Referenced by getNearestNodeLocator(), GeometricSearchInterface::getNearestNodeLocator(), getPenetrationLocator(), and getQuadratureNearestNodeLocator().

◆ getPenetrationLocator()

PenetrationLocator & GeometricSearchData::getPenetrationLocator ( const BoundaryName &  primary,
const BoundaryName &  secondary,
libMesh::Order  order = libMesh::FIRST 
)

Definition at line 164 of file GeometricSearchData.C.

167{
168 auto primary_id = _mesh.getBoundaryID(primary);
169 auto secondary_id = _mesh.getBoundaryID(secondary);
170
172 _subproblem.addGhostedBoundary(secondary_id);
173
174 PenetrationLocator * pl =
175 _penetration_locators[std::pair<BoundaryID, BoundaryID>(primary_id, secondary_id)];
176
177 if (!pl)
178 {
180 *this,
181 _mesh,
182 primary_id,
183 secondary_id,
184 order,
185 getNearestNodeLocator(primary_id, secondary_id));
186
188 pl->setUsePointLocator(true);
189
190 _penetration_locators[std::pair<BoundaryID, BoundaryID>(primary_id, secondary_id)] = pl;
191 }
192
193 return *pl;
194}
void setUsePointLocator(bool state)

Referenced by DMSetUp_Moose_Pre(), and GeometricSearchInterface::getPenetrationLocator().

◆ getPenetrationLocators()

const std::map< std::pair< BoundaryID, BoundaryID >, PenetrationLocator * > & GeometricSearchData::getPenetrationLocators ( ) const
inline

Definition at line 62 of file GeometricSearchData.h.

63 {
65 }

◆ getQuadratureNearestNodeLocator() [1/2]

NearestNodeLocator & GeometricSearchData::getQuadratureNearestNodeLocator ( const BoundaryID  primary_id,
const BoundaryID  secondary_id 
)

Definition at line 280 of file GeometricSearchData.C.

282{
283 // Generate a new boundary id (we use the negative numbers and subtract 1 to disambiguate id=0)
284 const auto qsecondary_id = -secondary_id - 1;
285
286 _secondary_to_qsecondary[secondary_id] = qsecondary_id;
287 return getNearestNodeLocator(primary_id, qsecondary_id);
288}
std::map< BoundaryID, BoundaryID > _secondary_to_qsecondary
A mapping of the real boundary id to the secondary boundary ids.

◆ getQuadratureNearestNodeLocator() [2/2]

NearestNodeLocator & GeometricSearchData::getQuadratureNearestNodeLocator ( const BoundaryName &  primary,
const BoundaryName &  secondary 
)

Definition at line 267 of file GeometricSearchData.C.

269{
270 const auto primary_id = _mesh.getBoundaryID(primary);
271 const auto secondary_id = _mesh.getBoundaryID(secondary);
272
274 _subproblem.addGhostedBoundary(secondary_id);
275
276 return getQuadratureNearestNodeLocator(primary_id, secondary_id);
277}
NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)

Referenced by getQuadratureNearestNodeLocator(), GeometricSearchInterface::getQuadratureNearestNodeLocator(), and getQuadraturePenetrationLocator().

◆ getQuadraturePenetrationLocator()

PenetrationLocator & GeometricSearchData::getQuadraturePenetrationLocator ( const BoundaryName &  primary,
const BoundaryName &  secondary,
libMesh::Order  order = libMesh::FIRST 
)

Definition at line 197 of file GeometricSearchData.C.

200{
201 const auto primary_id = _mesh.getBoundaryID(primary);
202 const auto secondary_id = _mesh.getBoundaryID(secondary);
203
205 _subproblem.addGhostedBoundary(secondary_id);
206
207 // Generate a new boundary id (we use the negative numbers and subtract 1 to disambiguate id=0)
208 const auto qsecondary_id = -secondary_id - 1;
209
210 _secondary_to_qsecondary[secondary_id] = qsecondary_id;
211
212 PenetrationLocator * pl =
213 _penetration_locators[std::pair<BoundaryID, BoundaryID>(primary_id, qsecondary_id)];
214
215 if (!pl)
216 {
218 *this,
219 _mesh,
220 primary_id,
221 qsecondary_id,
222 order,
223 getQuadratureNearestNodeLocator(primary_id, secondary_id));
224
226 pl->setUsePointLocator(true);
227
228 _penetration_locators[std::pair<BoundaryID, BoundaryID>(primary_id, qsecondary_id)] = pl;
229 }
230
231 return *pl;
232}

Referenced by GeometricSearchInterface::getQuadraturePenetrationLocator().

◆ maxPatchPercentage()

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.

149{
150 Real max = 0.0;
151
152 for (const auto & nnl_it : _nearest_node_locators)
153 {
154 NearestNodeLocator * nnl = nnl_it.second;
155
156 if (nnl->_max_patch_percentage > max)
158 }
159
160 return max;
161}
auto max(const L &left, const R &right)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ reinit()

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.

98{
100 // Update the position of quadrature nodes first
101 for (const auto & qbnd : _quadrature_boundaries)
103
104 for (const auto & nnl_it : _nearest_node_locators)
105 {
106 NearestNodeLocator * nnl = nnl_it.second;
107 nnl->reinit();
108 }
109
110 for (const auto & pl_it : _penetration_locators)
111 {
112 PenetrationLocator * pl = pl_it.second;
113 pl->reinit();
114 }
115
116 for (const auto & epl_it : _element_pair_locators)
117 {
118 ElementPairLocator & epl = *(epl_it.second);
119 epl.reinit();
120 }
121}
This is the ElementPairLocator class.
void reinitQuadratureNodes(const BoundaryID secondary_id)
Completely redo quadrature nodes.
void clearQuadratureNodes()
Clear out any existing quadrature nodes.
Definition MooseMesh.C:1625
void reinit()
Completely redo the search from scratch.

Referenced by FEProblemBase::meshChanged(), SubProblem::reinitGeomSearch(), and DisplacedProblem::updateMesh().

◆ reinitQuadratureNodes()

void GeometricSearchData::reinitQuadratureNodes ( const BoundaryID  secondary_id)
private

Completely redo quadrature nodes.

Definition at line 381 of file GeometricSearchData.C.

382{
383 // Regenerate the quadrature nodes
384 for (const auto & it : _secondary_to_qsecondary)
385 generateQuadratureNodes(it.first, it.second, /*reiniting=*/true);
386}
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...

Referenced by reinit().

◆ restore()

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.

132{
133 for (const auto & [boundary_pair, pl] : _penetration_locators)
134 pl->restore(libmesh_map_find(_penetration_locator_backups, boundary_pair));
135}
void restore()
Restore the PenetrationLocators' state captured by the most recent backup().

Referenced by FEProblemBase::restoreGeometricSearchState().

◆ setSearchUsingPointLocator()

void GeometricSearchData::setSearchUsingPointLocator ( bool  state)

Definition at line 337 of file GeometricSearchData.C.

338{
339 if (state != _search_using_point_locator)
340 {
341 for (auto & [key, val] : _penetration_locators)
342 {
343 libmesh_ignore(key);
344 if (val)
345 val->setUsePointLocator(state);
346 }
347 }
348
350}
void libmesh_ignore(const Args &...)

Referenced by GeometricSearchInterface::GeometricSearchInterface().

◆ update()

void GeometricSearchData::update ( GeometricSearchType  type = ALL)

Update all of the search objects.

Definition at line 44 of file GeometricSearchData.C.

45{
46 if (type == ALL || type == QUADRATURE || type == NEAREST_NODE)
47 {
48 if (_first) // Only do this once
49 {
50 _first = false;
51
52 for (const auto & it : _secondary_to_qsecondary)
53 generateQuadratureNodes(it.first, it.second);
54
55 // reinit on displaced mesh before update
56 for (const auto & epl_it : _element_pair_locators)
57 {
58 ElementPairLocator & epl = *(epl_it.second);
59 epl.reinit();
60 }
61 }
62
63 // Update the position of quadrature nodes first
64 for (const auto & qbnd : _quadrature_boundaries)
66 }
67
68 if (type == ALL || type == NEAREST_NODE)
69 {
70 for (const auto & nnl_it : _nearest_node_locators)
71 {
72 NearestNodeLocator * nnl = nnl_it.second;
73 nnl->findNodes();
74 }
75 }
76
77 if (type == ALL || type == PENETRATION)
78 {
79 for (const auto & pl_it : _penetration_locators)
80 {
81 PenetrationLocator * pl = pl_it.second;
83 }
84 }
85
86 if (type == ALL || type == PENETRATION)
87 {
88 for (auto & elem_pair_locator_pair : _element_pair_locators)
89 {
90 ElementPairLocator & epl = (*elem_pair_locator_pair.second);
91 epl.update();
92 }
93 }
94}
void updateQuadratureNodes(const BoundaryID secondary_id)
Update the positions of the quadrature nodes.
void findNodes()
This is the main method that is going to start the search.

Referenced by DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), DisplacedProblem::updateMesh(), and DisplacedProblem::updateMesh().

◆ updateGhostedElems()

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.

390{
391 for (const auto & nnl_it : _nearest_node_locators)
392 {
393 NearestNodeLocator * nnl = nnl_it.second;
394 nnl->updateGhostedElems();
395 }
396}
void updateGhostedElems()
Updates the ghosted elements at the start of the time step for iteration patch update strategy.

Referenced by FEProblemBase::possiblyRebuildGeomSearchPatches().

◆ updateQuadratureNodes()

void GeometricSearchData::updateQuadratureNodes ( const BoundaryID  secondary_id)
private

Update the positions of the quadrature nodes.

Definition at line 353 of file GeometricSearchData.C.

354{
355 const MooseArray<Point> & points_face = _subproblem.assembly(0, 0).qPointsFace();
356
358 for (const auto & belem : range)
359 {
360 const Elem * elem = belem->_elem;
361 const auto side = belem->_side;
362 const auto boundary_id = belem->_bnd_id;
363
364 if (elem->processor_id() == _subproblem.processor_id())
365 {
366 if (boundary_id == (BoundaryID)secondary_id)
367 {
368 // All we should need to do here is reinit the underlying libMesh::FE object because that
369 // will get us the correct points for the current element and side
371 _subproblem.assembly(0, 0).reinit(elem, side);
372
373 for (const auto qp : index_range(points_face))
374 (*_mesh.getQuadratureNode(elem, side, qp)) = points_face[qp];
375 }
376 }
377 }
378}

Referenced by update().

Member Data Documentation

◆ _element_pair_locators

std::map<BoundaryID, std::shared_ptr<ElementPairLocator> > GeometricSearchData::_element_pair_locators

◆ _first

bool GeometricSearchData::_first
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().

◆ _mesh

MooseMesh& GeometricSearchData::_mesh

◆ _nearest_node_locators

std::map<std::pair<BoundaryID, BoundaryID>, NearestNodeLocator *> GeometricSearchData::_nearest_node_locators

◆ _penetration_locator_backups

std::map<std::pair<BoundaryID, BoundaryID>, std::string> GeometricSearchData::_penetration_locator_backups
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.

Referenced by backup(), and restore().

◆ _penetration_locators

std::map<std::pair<BoundaryID, BoundaryID>, PenetrationLocator *> GeometricSearchData::_penetration_locators

◆ _quadrature_boundaries

std::set<BoundaryID> GeometricSearchData::_quadrature_boundaries
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().

◆ _search_using_point_locator

bool GeometricSearchData::_search_using_point_locator
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().

◆ _secondary_to_qsecondary

std::map<BoundaryID, BoundaryID> GeometricSearchData::_secondary_to_qsecondary
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

SubProblem& GeometricSearchData::_subproblem

The documentation for this class was generated from the following files: