20#ifndef LIBMESH_POINT_LOCATOR_BASE_H
21#define LIBMESH_POINT_LOCATOR_BASE_H
24#include "libmesh/reference_counted_object.h"
25#include "libmesh/libmesh_common.h"
37class PointLocatorBase;
98 const std::set<subdomain_id_type> * allowed_subdomains =
nullptr)
const = 0;
106 std::set<const Elem *> & candidate_elements,
107 const std::set<subdomain_id_type> * allowed_subdomains =
nullptr)
const = 0;
127 const std::set<subdomain_id_type> * allowed_subdomains =
nullptr,
224#ifndef LIBMESH_ENABLE_DEPRECATED
void ErrorVector unsigned int
This is the base class from which all geometric element types are derived.
This is the MeshBase class.
A Node is like a Point, but with more information.
This is the base class for point locators.
bool get_verbose() const
Get the verbosity setting (whether to print extra info to screen, default false) for this PointLocato...
const MeshBase & get_mesh() const
Get a const reference to this PointLocator's mesh.
void libmesh_assert_valid_point_locator()
Verifies that, for every node of every element, the point locator finds that element when searching a...
virtual ~PointLocatorBase()
Destructor.
void set_verbose(bool verbosity)
Set the verbosity setting for this PointLocator.
Real _close_to_point_tol
The tolerance to use.
virtual void enable_out_of_mesh_mode()=0
Enables out-of-mesh mode.
Real _contains_point_tol
The tolerance to use when locating an element in the tree.
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 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.
virtual const Node * locate_node(const Point &p, const std::set< subdomain_id_type > *allowed_subdomains=nullptr, Real tol=TOLERANCE) const
virtual void init()=0
Initializes the point locator, so that the operator() methods can be used.
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.
static std::unique_ptr< PointLocatorBase > build(PointLocatorType t, const MeshBase &mesh, const PointLocatorBase *master=nullptr)
Builds an PointLocator for the mesh mesh.
virtual void clear()=0
Clears the PointLocator.
virtual void disable_out_of_mesh_mode()=0
Disables out-of-mesh mode (default).
bool _use_contains_point_tol
true if we will use a user-specified tolerance for locating the element.
bool _use_close_to_point_tol
true if we will use a user-specified tolerance for locating the element in an exhaustive search.
bool get_use_contains_point_tol() const
The contains_point_tol may be nonzero (in fact it defaults to non-zero) but unless the user calls set...
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.
virtual Real get_contains_point_tol() const
Get the tolerance for determining element containment in the point locator.
bool _verbose
Boolean flag to indicate whether to print out extra info.
const MeshBase & _mesh
constant reference to the mesh in which the point is looked for.
Real get_close_to_point_tol() const
Get the close-to-point tolerance.
const PointLocatorBase * _master
Const pointer to our master, initialized to nullptr if none given.
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...
A Point defines a location in LIBMESH_DIM dimensional Real space.
This class implements reference counting.
The libMesh namespace provides an interface to certain functionality in the library.
static constexpr Real TOLERANCE
PointLocatorType
defines an enum for the types of point locators (given a point with global coordinates,...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real