205 omp_lock_t buildOctreeDataStructureLock;
206 omp_lock_t ElementIPDataStructureLock;
225 int init(
bool force =
false)
override;
231 GaussPoint *giveClosestIP(
const FloatArray &coords,
int region,
bool iCohesiveZoneGP =
false)
override;
236 void giveAllElementsWithIpWithinBox_EvenIfEmpty(elementContainerType &elemSet,
const FloatArray &coords,
const double radius,
bool iCohesiveZoneGP);
237 void giveAllElementsWithIpWithinBox(elementContainerType &elemSet,
const FloatArray &coords,
const double radius,
bool iCohesiveZoneGP);
239 void giveAllNodesWithinBox(nodeContainerType &nodeList,
const FloatArray &coords,
const double radius)
override;
240 Node * giveNodeClosestToPoint(
const FloatArray &coords,
double maxDist)
override;
242 const char *
giveClassName()
const override {
return "OctreeSpatialLocalizer"; }
252 bool buildOctreeDataStructure();
257 void initElementIPDataStructure();
261 void initElementDataStructure(
int region = 0);
287 void insertIPElementIntoOctree(
OctantRec &rootCell,
int elemNum,
const FloatArray &coords);
305 void insertElementsUsingNodalConnectivitiesIntoOctree(
OctantRec &rootCell);
313 void giveElementsWithIPWithinBox(elementContainerType &elemSet,
OctantRec ¤tCell,
314 const FloatArray &coords,
const double radius,
bool iCohesiveZoneGP =
false);
322 void giveNodesWithinBox(nodeContainerType &nodeList,
OctantRec ¤tCell,
323 const FloatArray &coords,
const double radius);
333 void giveClosestIPWithinOctant(
OctantRec ¤tCell,
335 int region,
double &dist,
GaussPoint *&answer,
bool iCohesiveZoneGP);
344 void giveClosestIPWithinOctant(
OctantRec ¤tCell,
346 Set &elemSet,
double &dist,
GaussPoint *&answer,
bool iCohesiveZoneGP);
367 OctantRec *scannedChild =
nullptr,
const Set *elset =
nullptr);
387 void giveNodeClosestToPointWithinOctant(
OctantRec &cell,
const FloatArray &gcoords,
double &minDist,
Node * &answer);
396 int giveMaxTreeDepthFrom(
OctantRec &root);
405 void giveListOfTerminalCellsInBoundingBox(std :: list< OctantRec * > &cellList,
const FloatArray &coords,
406 const double radius,
double innerRadius,
OctantRec ¤tCell);