21 #include "libmesh/elem.h" 27 unsigned int side_num,
30 Real tangential_distance,
31 const Point & closest_point,
32 const Point & closest_point_ref,
33 const Point & closest_point_on_face_ref,
34 std::vector<const Node *> off_edge_nodes,
35 const std::vector<std::vector<Real>> & side_phi,
36 const std::vector<std::vector<RealGradient>> & side_grad_phi,
37 const std::vector<RealGradient> & dxyzdxi,
38 const std::vector<RealGradient> & dxyzdeta,
39 const std::vector<RealGradient> & d2xyzdxideta)
44 _distance(norm_distance),
45 _tangential_distance(tangential_distance),
46 _closest_point(closest_point),
47 _closest_point_ref(closest_point_ref),
48 _closest_point_on_face_ref(closest_point_on_face_ref),
49 _off_edge_nodes(off_edge_nodes),
51 _side_grad_phi(side_grad_phi),
54 _d2xyzdxideta(d2xyzdxideta),
57 _starting_closest_point_ref(0),
59 _accumulated_slip(0.0),
60 _accumulated_slip_old(0.0),
61 _frictional_energy(0.0),
62 _frictional_energy_old(0.0),
64 _contact_force_old(0),
65 _lagrange_multiplier(0),
66 _lagrange_multiplier_slip(0),
68 _mech_status(MS_NO_CONTACT),
69 _mech_status_old(MS_NO_CONTACT),
70 _incremental_slip_prev_iter(0),
71 _slip_reversed(false),
123 _tangential_distance(0),
125 _closest_point_ref(0),
126 _closest_point_on_face_ref(0),
133 _starting_elem(NULL),
135 _starting_closest_point_ref(0),
136 _incremental_slip(0),
137 _accumulated_slip(0.0),
138 _accumulated_slip_old(0.0),
139 _frictional_energy(0.0),
140 _frictional_energy_old(0.0),
142 _contact_force_old(0),
143 _lagrange_multiplier(0),
144 _lagrange_multiplier_slip(0),
145 _locked_this_step(0),
146 _mech_status(MS_NO_CONTACT),
147 _mech_status_old(MS_NO_CONTACT),
148 _incremental_slip_prev_iter(0),
149 _slip_reversed(false),
161 mooseError(
"Can only store PenetrationInfo objects using a MooseMesh context!");
213 mooseError(
"Can only load PenetrationInfo objects using a MooseMesh context!");
std::vector< RealGradient > _d2xyzdxideta
const unsigned int invalid_uint
virtual std::unique_ptr< Elem > build_side_ptr(const unsigned int i)=0
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Data structure used to hold penetration information.
void dataStore(std::ostream &stream, PenetrationInfo *&pinfo, void *context)
const Elem * _starting_elem
Point _closest_point_on_face_ref
std::vector< std::vector< RealGradient > > _side_grad_phi
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
std::vector< std::vector< Real > > _side_phi
void storeHelper(std::ostream &stream, P &data, void *context)
Scalar helper routine.
unsigned int _starting_side_num
std::vector< RealGradient > _dxyzdxi
RealVectorValue _contact_force
MECH_STATUS_ENUM _mech_status
std::vector< const Node * > _off_edge_nodes
Point _starting_closest_point_ref
Real _tangential_distance
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _lagrange_multiplier
std::vector< RealGradient > _dxyzdeta
void dataLoad(std::istream &stream, PenetrationInfo *&pinfo, void *context)
MECH_STATUS_ENUM _mech_status_old
RealVectorValue _lagrange_multiplier_slip
void loadHelper(std::istream &stream, P &data, void *context)
Scalar helper routine.