25 MooseEnum search_methods(
"nearest_node_connected_sides all_proximate_sides",
26 "nearest_node_connected_sides");
31 "Choice of search algorithm. All options begin by finding the nearest node in the "
32 "primary boundary to a query point in the secondary boundary. In the default "
33 "nearest_node_connected_sides algorithm, primary boundary elements are searched iff "
34 "that nearest node is one of their nodes. This is fast to determine via a "
35 "pregenerated node-to-elem map and is robust on conforming meshes. In the optional "
36 "all_proximate_sides algorithm, primary boundary elements are searched iff they touch "
37 "that nearest node, even if they are not topologically connected to it. This is "
38 "more CPU-intensive but is necessary for robustness on any boundary surfaces which "
39 "has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes "
40 "in adaptively h-refined meshes).");
48 : _geometric_search_data(moose_object->parameters()
49 .getCheckedPointerParam<
SubProblem *>(
"_subproblem")
51 _requires_geometric_search(false)
57#ifdef MOOSE_KOKKOS_ENABLED
60 : _geometric_search_data(object._geometric_search_data),
61 _requires_geometric_search(object._requires_geometric_search)
68 const BoundaryName & secondary,
77 const BoundaryName & secondary,
86 const BoundaryName & secondary)
94 const BoundaryName & secondary)
NearestNodeLocator & getNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
PenetrationLocator & getPenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST)
void setSearchUsingPointLocator(bool state)
PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST)
bool _requires_geometric_search
Whether any of this interface's methods have been called, e.g.
GeometricSearchData & _geometric_search_data
NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
Retrieve a Quadrature NearestNodeLocator associated with the two sides.
PenetrationLocator & getPenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, Order order)
Retrieve the PenetrationLocator associated with the two sides.
PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, Order order)
Retrieve the Quadrature PenetrationLocator associated with the two sides.
static InputParameters validParams()
GeometricSearchInterface(const MooseObject *moose_object)
NearestNodeLocator & getNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
Retrieve the PenetrationLocator associated with the two sides.
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Every object that can be built by the factory should be derived from this class.
Finds the nearest node to each node in boundary1 to each node in boundary2 and the other way around.
Generic class for solving transient nonlinear problems.