https://mooseframework.inl.gov
PenaltySimpleCohesiveZoneModel.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 
12 #include "TwoVector.h"
16 
21  virtual public WeightedVelocitiesUserObject
22 {
23 public:
25 
27 
28  virtual const ADVariableValue & contactTangentialPressureDirOne() const override;
29  virtual const ADVariableValue & contactTangentialPressureDirTwo() const override;
30 
31  virtual void initialize() override;
32  virtual void finalize() override;
33  virtual void reinit() override;
34  virtual void timestepSetup() override;
35 
36 protected:
37  virtual const VariableTestValue & test() const override;
38  virtual bool constrainedByOwner() const override { return false; }
39 
40  // Compute CZM kinematics.
42  virtual void computeFandR(const Node * const /*node*/) {}
43 
45  virtual void computeBilinearMixedModeTraction(const Node * const /*node*/) {}
46 
48  virtual void computeGlobalTraction(const Node * const /*node*/) {}
49 
51  const Real _penalty;
52 
55 
58 
60  std::unordered_map<const DofObject *, std::pair<TwoVector, TwoVector>> _dof_to_step_slip;
61 
63  std::unordered_map<const DofObject *, std::pair<TwoVector, TwoVector>> _dof_to_accumulated_slip;
64 
66  std::unordered_map<const DofObject *, std::pair<ADTwoVector, TwoVector>>
68 
70  std::unordered_map<const DofObject *, ADReal> _dof_to_czm_normal_traction;
71 
74 
77 
79  std::unordered_map<const DofObject *, TwoVector> _dof_to_frictional_lagrange_multipliers;
80 
82  std::unordered_map<const DofObject *, Real> _dof_to_local_penalty_friction;
83 
86 };
virtual const ADVariableValue & contactTangentialPressureDirTwo() const override
std::unordered_map< const DofObject *, TwoVector > _dof_to_frictional_lagrange_multipliers
Map from degree of freedom to augmented lagrange multiplier.
PenaltySimpleCohesiveZoneModel(const InputParameters &parameters)
virtual bool constrainedByOwner() const override
std::unordered_map< const DofObject *, std::pair< TwoVector, TwoVector > > _dof_to_step_slip
Map from degree of freedom to current and old step slip.
User object for computing weighted gaps and contact pressure for penalty based mortar constraints...
virtual const VariableTestValue & test() const override
Creates dof object to weighted tangential velocities map.
const Real _epsilon_tolerance
Tolerance to avoid NaN/Inf in automatic differentiation operations.
const Real _penalty
The normal penalty factor.
std::unordered_map< const DofObject *, std::pair< TwoVector, TwoVector > > _dof_to_accumulated_slip
Map from degree of freedom to current and old accumulated slip.
virtual void computeFandR(const Node *const)
const Real _penalty_friction
The penalty factor for the frictional constraints.
OutputTools< Real >::VariableTestValue VariableTestValue
ADVariableValue _frictional_contact_traction_two
The second frictional contact pressure on the mortar segment quadrature points.
std::unordered_map< const DofObject *, std::pair< ADTwoVector, TwoVector > > _dof_to_tangential_traction
Map from degree of freedom to current and old tangential traction.
std::unordered_map< const DofObject *, ADReal > _dof_to_czm_normal_traction
Map from degree of freedom to czm normal traction.
virtual void computeBilinearMixedModeTraction(const Node *const)
Encapsulate the CZM constitutive behavior.
virtual void computeGlobalTraction(const Node *const)
Compute global traction for mortar application.
const Real _friction_coefficient
The friction coefficient.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unordered_map< const DofObject *, Real > _dof_to_local_penalty_friction
Map from degree of freedom to local friction penalty value.
ADVariableValue _frictional_contact_traction_one
The first frictional contact pressure on the mortar segment quadrature points.
const InputParameters & parameters() const
User object that interface pressure resulting from a simple traction separation law.
virtual const ADVariableValue & contactTangentialPressureDirOne() const override