21 #include "libmesh/elem.h" 25 unsigned int side_num,
28 Real tangential_distance,
29 const Point & closest_point,
30 const Point & closest_point_ref,
31 const Point & closest_point_on_face_ref,
32 std::vector<const Node *> off_edge_nodes,
33 const std::vector<std::vector<Real>> & side_phi,
34 const std::vector<std::vector<RealGradient>> & side_grad_phi,
35 const std::vector<RealGradient> & dxyzdxi,
36 const std::vector<RealGradient> & dxyzdeta,
37 const std::vector<RealGradient> & d2xyzdxideta)
42 _distance(norm_distance),
43 _tangential_distance(tangential_distance),
44 _closest_point(closest_point),
45 _closest_point_ref(closest_point_ref),
46 _closest_point_on_face_ref(closest_point_on_face_ref),
47 _off_edge_nodes(off_edge_nodes),
49 _side_grad_phi(side_grad_phi),
52 _d2xyzdxideta(d2xyzdxideta),
55 _starting_closest_point_ref(0),
57 _accumulated_slip(0.0),
58 _accumulated_slip_old(0.0),
59 _frictional_energy(0.0),
60 _frictional_energy_old(0.0),
62 _contact_force_old(0),
63 _lagrange_multiplier(0),
64 _lagrange_multiplier_slip(0),
66 _mech_status(MS_NO_CONTACT),
67 _mech_status_old(MS_NO_CONTACT),
68 _incremental_slip_prev_iter(0),
69 _slip_reversed(false),
121 _tangential_distance(0),
123 _closest_point_ref(0),
124 _closest_point_on_face_ref(0),
131 _starting_elem(NULL),
133 _starting_closest_point_ref(0),
134 _incremental_slip(0),
135 _accumulated_slip(0.0),
136 _accumulated_slip_old(0.0),
137 _frictional_energy(0.0),
138 _frictional_energy_old(0.0),
140 _contact_force_old(0),
141 _lagrange_multiplier(0),
142 _lagrange_multiplier_slip(0),
143 _locked_this_step(0),
144 _mech_status(MS_NO_CONTACT),
145 _mech_status_old(MS_NO_CONTACT),
146 _incremental_slip_prev_iter(0),
147 _slip_reversed(false),
159 mooseError(
"Can only store PenetrationInfo objects using a MooseMesh context!");
211 mooseError(
"Can only load PenetrationInfo objects using a MooseMesh context!");
std::vector< RealGradient > _d2xyzdxideta
const unsigned int invalid_uint
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
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.