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)
GeometricSearchInterface(const MooseObject *moose_object)
NearestNodeLocator & getNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
Retrieve the PenetrationLocator associated with the two sides.
NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
Retrieve a Quadrature NearestNodeLocator associated with the two sides.
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
PenetrationLocator & getQuadraturePenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, Order order)
Retrieve the Quadrature PenetrationLocator associated with the two sides.
GeometricSearchData & _geometric_search_data
NearestNodeLocator & getNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
Finds the nearest node to each node in boundary1 to each node in boundary2 and the other way around...
bool _requires_geometric_search
Whether any of this interface's methods have been called, e.g.
Every object that can be built by the factory should be derived from this class.
NearestNodeLocator & getQuadratureNearestNodeLocator(const BoundaryName &primary, const BoundaryName &secondary)
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
void setSearchUsingPointLocator(bool state)
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, libMesh::Order order=libMesh::FIRST)
Generic class for solving transient nonlinear problems.
static InputParameters validParams()
PenetrationLocator & getPenetrationLocator(const BoundaryName &primary, const BoundaryName &secondary, libMesh::Order order=libMesh::FIRST)