https://mooseframework.inl.gov
ComputeFrictionalForceCartesianLMMechanicalContact.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
13 
14 #include <unordered_map>
15 
22 {
23 public:
25 
27 
28  void residualSetup() override;
29  void post() override;
30 
34  void
35  incorrectEdgeDroppingPost(const std::unordered_set<const Node *> & inactive_lm_nodes) override;
36 
37 protected:
42  virtual void computeQpProperties() override;
43 
47  virtual void computeQpIProperties() override;
48 
55  virtual void enforceConstraintOnDof(const DofObject * const dof) override;
56 
58  std::unordered_map<const DofObject *, std::array<ADReal, 2>> _dof_to_weighted_tangential_velocity;
59 
61  std::array<const ADReal *, 2> _tangential_vel_ptr = {{nullptr, nullptr}};
62 
65 
67  const Real _c_t;
68 
71 
74 
77 
80 
83 
86 
88  const Real _mu;
89 
91  const Real _epsilon;
92 };
const ADVariableValue & _secondary_y_dot
y-velocity on the secondary face
Computes the weighted gap that will later be used to enforce the zero-penetration mechanical contact ...
const Real _c_t
Numerical factor used in the tangential constraints for convergence purposes.
const ADVariableValue *const _secondary_z_dot
z-velocity on the secondary face
const ADVariableValue & _primary_x_dot
x-velocity on the primary face
virtual void computeQpProperties() override
Computes properties that are functions only of the current quadrature point (_qp), e.g.
const Real _epsilon
Small contact pressure value to trigger computation of frictional forces.
std::array< const ADReal *, 2 > _tangential_vel_ptr
An array of two pointers to avoid copies.
virtual void computeQpIProperties() override
Computes properties that are functions both of _qp and _i, for example the weighted gap...
Computes the weighted gap that will later be used to enforce the zero-penetration mechanical contact ...
const ADVariableValue & _primary_y_dot
y-velocity on the primary face
std::unordered_map< const DofObject *, std::array< ADReal, 2 > > _dof_to_weighted_tangential_velocity
A map from node to two weighted tangential velocities.
void incorrectEdgeDroppingPost(const std::unordered_set< const Node *> &inactive_lm_nodes) override
Copy of the post routine but that skips assembling inactive nodes.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
ADRealVectorValue _qp_tangential_velocity_nodal
The value of the tangential velocity vectors at the current node.
const InputParameters & parameters() const
const ADVariableValue *const _primary_z_dot
z-velocity on the primary face
const ADVariableValue & _secondary_x_dot
x-velocity on the secondary face
virtual void enforceConstraintOnDof(const DofObject *const dof) override
Method called from post().