22 "Returns the weighted gap velocity at a node. This quantity is useful for mortar contact, "
23 "particularly when dual basis functions are used in contact mechanics");
25 "Optional variable to take the value of. If omitted the value of the "
26 "`variable` itself is returned.");
28 "The displacement variables. This mortar nodal auxiliary kernel can "
29 "take two or three displacements");
31 "The name of the Lagrange multiplier that holds the normal contact "
32 "pressure in mortar formulations");
33 params.
addParam<
bool>(
"use_displaced_mesh",
35 "Whether to use the displaced mesh to compute the auxiliary kernel value");
39 "Whether to accumulate worn-out depth (The default 'true' is strongly recommended)");
41 "friction_coefficient",
42 "Friction coefficient used to compute wear (to match that of frictional contact)");
44 "energy_wear_coefficient",
45 "Energy wear coefficient is a surface-dependent parameter used in Archard's wear law");
46 params.
set<
bool>(
"interpolate_normals") =
false;
53 _normal_pressure(coupledValueLower(
"normal_pressure")),
54 _friction_coefficient(getParam<Real>(
"friction_coefficient")),
55 _energy_wear_coefficient(getParam<Real>(
"energy_wear_coefficient")),
58 _has_disp_z(_displacements[2] ?
true : false),
59 _secondary_x_dot(_displacements[0]->adUDot()),
60 _primary_x_dot(_displacements[0]->adUDotNeighbor()),
61 _secondary_y_dot(_displacements[1]->adUDot()),
62 _primary_y_dot(_displacements[1]->adUDotNeighbor()),
63 _secondary_z_dot(_has_disp_z ? &_displacements[2]->adUDot() : nullptr),
64 _primary_z_dot(_has_disp_z ? &_displacements[2]->adUDotNeighbor() : nullptr),
66 _qp_gap_velocity_nodal(0)
70 "The MortarArchardsLawAux auxiliary kernel requires the use of displaced meshes to "
71 "compute the worn-out depth.");
78 "Normals and test_lower must be the same size");
99 RealVectorValue gap_velocity_vec;
110 const auto norm_tangential_vel = gap_velocity_vec.norm();
registerMooseObject("ContactApp", MortarArchardsLawAux)
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
void paramError(const std::string ¶m, Args... args) const
Compute worn-out depth based on Archard's wear law.
void computeQpProperties()
const VariableValue & _normal_pressure
const ADVariableValue & _secondary_x_dot
x-velocity on the secondary face
MortarArchardsLawAux(const InputParameters ¶meters)
Constructor of mortar auxiliary kernel to compute nodal worn-out depth.
const ADVariableValue *const _primary_z_dot
z-velocity on the primary face
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
Real computeValue() override
const Real _friction_coefficient
Friction coefficient used to compute Archard's law.
static InputParameters validParams()
void computeQpIProperties()
const ADVariableValue *const _secondary_z_dot
z-velocity on the secondary face
const ADVariableValue & _primary_y_dot
y-velocity on the primary face
const Real _energy_wear_coefficient
Typically a constant used to characterize wear behavior of a material surface.
Real _worn_depth
The worn-out depth due to Archard's law (Aux Kernel computed value)
const ADVariableValue & _secondary_y_dot
y-velocity on the secondary face
const ADVariableValue & _primary_x_dot
x-velocity on the primary face
const libMesh::QBase *const & _qrule_msm
std::vector< Point > _normals
const std::vector< Real > & _JxW_msm
const OutputTools< ComputeValueType >::VariableTestValue & _test_lower
const MooseArray< Real > & _coord_msm
static InputParameters validParams()
unsigned int n_points() const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real