21 #include "libmesh/point_locator_base.h"    22 #include "libmesh/point_locator_tree.h"    23 #include "libmesh/elem.h"    24 #include "libmesh/enum_point_locator_type.h"    25 #include "libmesh/point_locator_nanoflann.h"    41   _use_close_to_point_tol  (false),
    43   _use_contains_point_tol  (false),
    74       return std::make_unique<PointLocatorTree>(
mesh,  master);
    82 #ifdef LIBMESH_HAVE_NANOFLANN    84       return std::make_unique<PointLocatorNanoflann>(
mesh, master);
    88       libmesh_error_msg(
"ERROR: Bad PointLocatorType = " << t);
   136             const std::set<subdomain_id_type> * allowed_subdomains,
   139   std::set<const Elem *> candidate_elements;
   140   this->
operator()(p, candidate_elements, allowed_subdomains);
   142   for (
const auto & elem : candidate_elements)
   144       const int elem_n_nodes = elem->n_nodes();
   145       const Real hmax = elem->hmax();
   146       const Real dist_tol_sq = (tol * hmax) * (tol * hmax);
   148       for (
int n=0; n != elem_n_nodes; ++n)
   149         if ((elem->point(n) - p).
norm_sq() < dist_tol_sq)
   150           return elem->node_ptr(n);
 
virtual ~PointLocatorBase()
Destructor. 
A Node is like a Point, but with more information. 
virtual void set_close_to_point_tol(Real close_to_point_tol)
Set a tolerance to use when determining if a point is contained within the mesh. 
bool _use_close_to_point_tol
true if we will use a user-specified tolerance for locating the element in an exhaustive search...
static constexpr Real TOLERANCE
Real _close_to_point_tol
The tolerance to use. 
virtual Real get_contains_point_tol() const
Get the tolerance for determining element containment in the point locator. 
bool _initialized
true when properly initialized, false otherwise. 
virtual void set_contains_point_tol(Real contains_point_tol)
Set a tolerance to use when checking if a point is within an element in the mesh. ...
The libMesh namespace provides an interface to certain functionality in the library. 
Real get_close_to_point_tol() const
Get the close-to-point tolerance. 
This is the MeshBase class. 
const MeshBase & _mesh
constant reference to the mesh in which the point is looked for. 
This is the base class for point locators. 
virtual void unset_contains_point_tol()
Specify that we do not want to use a user-specified tolerance to determine if a point is inside an el...
virtual const Node * locate_node(const Point &p, const std::set< subdomain_id_type > *allowed_subdomains=nullptr, Real tol=TOLERANCE) const
PointLocatorBase(const MeshBase &mesh, const PointLocatorBase *master)
Constructor. 
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual const Elem * operator()(const Point &p, const std::set< subdomain_id_type > *allowed_subdomains=nullptr) const =0
Locates the element in which the point with global coordinates p is located. 
const PointLocatorBase * _master
Const pointer to our master, initialized to nullptr if none given. 
PointLocatorType
defines an enum for the types of point locators (given a point with global coordinates, locate the corresponding element in space) available in libMesh. 
virtual void unset_close_to_point_tol()
Specify that we do not want to use a user-specified tolerance to determine if a point is contained wi...
static std::unique_ptr< PointLocatorBase > build(PointLocatorType t, const MeshBase &mesh, const PointLocatorBase *master=nullptr)
Builds an PointLocator for the mesh mesh. 
A Point defines a location in LIBMESH_DIM dimensional Real space. 
bool _use_contains_point_tol
true if we will use a user-specified tolerance for locating the element. 
const MeshBase & get_mesh() const
Get a const reference to this PointLocator's mesh. 
Real _contains_point_tol
The tolerance to use when locating an element in the tree.