18#include "libmesh/vector_value.h"
19#include "libmesh/point.h"
20#include "libmesh/fe_base.h"
34 const unsigned int primary_id,
35 const unsigned int secondary_id,
61 Point & closest_point,
62 RealVectorValue & normal);
76 std::vector<std::vector<libMesh::FEBase *>>
_fe;
83 std::set<dof_id_type> &
115dataLoad(std::istream & stream, std::map<dof_id_type, PenetrationInfo *> & m,
void * context)
117 std::map<dof_id_type, PenetrationInfo *>::iterator it = m.begin();
118 std::map<dof_id_type, PenetrationInfo *>::iterator end = m.end();
120 for (; it != end; ++it)
126 unsigned int size = 0;
127 stream.read((
char *)&size,
sizeof(size));
129 for (
unsigned int i = 0; i < size; i++)
boundary_id_type BoundaryID
void loadHelper(std::istream &stream, P &data, void *context)
Scalar helper routine.
void dataLoad(std::istream &stream, std::map< dof_id_type, PenetrationInfo * > &m, void *context)
We have to have a specialization for this map because the PenetrationInfo objects MUST get deleted be...
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Finds the nearest node to each node in boundary1 to each node in boundary2 and the other way around.
NORMAL_SMOOTHING_METHOD _normal_smoothing_method
int inSegment(Point P, Point SP0, Point SP1)
bool _check_whether_reasonable
Check whether found candidates are reasonable.
void setNormalSmoothingMethod(std::string nsmString)
BoundaryID _secondary_boundary
RealVectorValue penetrationNormal(dof_id_type node_id)
void setUsePointLocator(bool state)
Real getTangentialTolerance()
void setUpdate(bool update)
void reinit()
Completely redo the search from scratch.
void setTangentialTolerance(Real tangential_tolerance)
Real normDistance(const Elem &elem, const Elem &side, const Node &p0, Point &closest_point, RealVectorValue &normal)
int intersect2D_Segments(Point S1P0, Point S1P1, Point S2P0, Point S2P1, Point *I0, Point *I1)
void setCheckWhetherReasonable(bool state)
void setNormalSmoothingDistance(Real normal_smoothing_distance)
bool _do_normal_smoothing
std::vector< std::vector< libMesh::FEBase * > > _fe
std::map< dof_id_type, PenetrationInfo * > & _penetration_info
Data structure of nodes and their associated penetration information.
Real _normal_smoothing_distance
std::set< dof_id_type > & _has_penetrated
Real penetrationDistance(dof_id_type node_id)
BoundaryID _primary_boundary
const Moose::PatchUpdateType _patch_update_strategy
Real _tangential_tolerance
NearestNodeLocator & _nearest_node
Interface for objects interacting with the PerfGraph.
A class for creating restricted objects.
Generic class for solving transient nonlinear problems.
PatchUpdateType
Type of patch update strategy for modeling node-face constraints or contact.