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)
69 paramError(
"use_displaced_mesh",
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");
110 const auto norm_tangential_vel = gap_velocity_vec.
norm();
auto norm() const -> decltype(std::norm(Real()))
CompareTypes< Real, T2 >::supertype contract(const TypeVector< T2 > &) const
const ADVariableValue & _primary_x_dot
x-velocity on the primary face
static InputParameters validParams()
const bool _has_disp_z
For 2D mortar contact no displacement will be specified, so const pointers used.
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
const VariableValue & _normal_pressure
const std::vector< Real > & _JxW_msm
Compute worn-out depth based on Archard's wear law.
const libMesh::QBase *const & _qrule_msm
const ADVariableValue *const _primary_z_dot
z-velocity on the primary face
const OutputTools< ComputeValueType >::VariableTestValue & _test_lower
void computeQpIProperties()
const ADVariableValue & _secondary_x_dot
x-velocity on the secondary face
const ADVariableValue & _secondary_y_dot
y-velocity on the secondary face
std::vector< Point > _normals
const MooseArray< Real > & _coord_msm
static InputParameters validParams()
unsigned int n_points() const
const ADVariableValue *const _secondary_z_dot
z-velocity on the secondary face
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MortarArchardsLawAux(const InputParameters ¶meters)
Constructor of mortar auxiliary kernel to compute nodal worn-out depth.
const ADVariableValue & _primary_y_dot
y-velocity on the primary face
const Real _friction_coefficient
Friction coefficient used to compute Archard's law.
const Real _energy_wear_coefficient
Typically a constant used to characterize wear behavior of a material surface.
registerMooseObject("ContactApp", MortarArchardsLawAux)
void computeQpProperties()
Real computeValue() override
Real _worn_depth
The worn-out depth due to Archard's law (Aux Kernel computed value)