https://mooseframework.inl.gov
contact
include
constraints
MechanicalContactConstraint.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
// MOOSE includes
13
#include "
NodeFaceConstraint.h
"
14
#include "
PenetrationLocator.h
"
15
16
// Forward Declarations
17
class
ContactLineSearchBase
;
18
class
AugmentedLagrangianContactProblemInterface
;
19
enum class
ContactModel
;
20
enum class
ContactFormulation
;
21
class
DisplacedProblem
;
22
27
class
MechanicalContactConstraint
:
public
NodeFaceConstraint
28
{
29
public
:
30
static
InputParameters
validParams
();
31
32
MechanicalContactConstraint
(
const
InputParameters
&
parameters
);
33
34
virtual
void
timestepSetup
()
override
;
35
virtual
void
jacobianSetup
()
override
;
36
virtual
void
residualEnd
()
override
;
37
38
virtual
bool
AugmentedLagrangianContactConverged
();
39
40
virtual
void
updateAugmentedLagrangianMultiplier
(
bool
beginning_of_step);
41
virtual
void
updateContactStatefulData
(
bool
beginning_of_step);
42
43
virtual
Real
computeQpSecondaryValue
()
override
;
44
45
virtual
Real
computeQpResidual
(
Moose::ConstraintType
type
)
override
;
46
50
virtual
void
computeJacobian
()
override
;
51
56
virtual
void
computeOffDiagJacobian
(
unsigned
int
jvar)
override
;
57
58
virtual
Real
computeQpJacobian
(
Moose::ConstraintJacobianType
type
)
override
;
59
65
virtual
Real
computeQpOffDiagJacobian
(
Moose::ConstraintJacobianType
type
,
66
unsigned
int
jvar)
override
;
67
73
virtual
void
getConnectedDofIndices
(
unsigned
int
var_num)
override
;
74
82
bool
getCoupledVarComponent
(
unsigned
int
var_num,
unsigned
int
&
component
);
83
84
virtual
bool
addCouplingEntriesToJacobian
()
override
{
return
_primary_secondary_jacobian
; }
85
86
bool
shouldApply
()
override
;
87
void
computeContactForce
(
const
Node & node,
PenetrationInfo
* pinfo,
bool
update_contact_set);
88
89
protected
:
90
MooseSharedPointer<DisplacedProblem>
_displaced_problem
;
91
Real
gapOffset
(
const
Node & node);
92
Real
nodalArea
(
const
Node & node);
93
Real
getPenalty
(
const
Node & node);
94
Real
getTangentialPenalty
(
const
Node & node);
95
96
const
unsigned
int
_component
;
97
const
ContactModel
_model
;
98
const
ContactFormulation
_formulation
;
99
const
bool
_normalize_penalty
;
100
101
const
Real
_penalty
;
102
const
Real
_penalty_multiplier
;
103
Real
_penalty_tangential
;
104
const
Real
_friction_coefficient
;
105
const
Real
_tension_release
;
106
const
Real
_capture_tolerance
;
107
const
unsigned
int
_stick_lock_iterations
;
108
const
Real
_stick_unlock_factor
;
109
bool
_update_stateful_data
;
110
111
NumericVector<Number>
&
_residual_copy
;
112
// std::map<Point, PenetrationInfo *> _point_to_info;
113
114
const
unsigned
int
_mesh_dimension
;
115
116
std::vector<unsigned int>
_vars
;
117
std::vector<MooseVariable *>
_var_objects
;
118
120
const
bool
_has_secondary_gap_offset
;
121
const
MooseVariable
*
const
_secondary_gap_offset_var
;
122
const
bool
_has_mapped_primary_gap_offset
;
123
const
MooseVariable
*
const
_mapped_primary_gap_offset_var
;
124
125
MooseVariable
*
_nodal_area_var
;
126
SystemBase
&
_aux_system
;
127
const
NumericVector<Number>
*
const
_aux_solution
;
128
130
const
bool
_primary_secondary_jacobian
;
132
const
bool
_connected_secondary_nodes_jacobian
;
134
const
bool
_non_displacement_vars_jacobian
;
135
137
Real
_al_penetration_tolerance
;
139
Real
_al_incremental_slip_tolerance
;
141
Real
_al_frictional_force_tolerance
;
142
143
ContactLineSearchBase
*
_contact_linesearch
;
144
std::set<dof_id_type>
_current_contact_state
;
145
std::set<dof_id_type>
_old_contact_state
;
146
147
const
bool
_print_contact_nodes
;
148
static
Threads::spin_mutex
_contact_set_mutex
;
149
150
AugmentedLagrangianContactProblemInterface
*
const
_augmented_lagrange_problem
;
151
const
static
unsigned
int
_no_iterations
;
152
const
unsigned
int
&
_lagrangian_iteration_number
;
153
154
DenseMatrix<Number>
_Knn
;
155
DenseMatrix<Number>
_Ken
;
156
};
MechanicalContactConstraint::_contact_linesearch
ContactLineSearchBase * _contact_linesearch
Definition:
MechanicalContactConstraint.h:143
MechanicalContactConstraint::_nodal_area_var
MooseVariable * _nodal_area_var
Definition:
MechanicalContactConstraint.h:125
MechanicalContactConstraint::nodalArea
Real nodalArea(const Node &node)
Definition:
MechanicalContactConstraint.C:1701
NodeFaceConstraint.h
MechanicalContactConstraint::_residual_copy
NumericVector< Number > & _residual_copy
Definition:
MechanicalContactConstraint.h:111
MechanicalContactConstraint::updateContactStatefulData
virtual void updateContactStatefulData(bool beginning_of_step)
Definition:
MechanicalContactConstraint.C:428
MechanicalContactConstraint::_print_contact_nodes
const bool _print_contact_nodes
Definition:
MechanicalContactConstraint.h:147
MechanicalContactConstraint::_normalize_penalty
const bool _normalize_penalty
Definition:
MechanicalContactConstraint.h:99
MechanicalContactConstraint::_friction_coefficient
const Real _friction_coefficient
Definition:
MechanicalContactConstraint.h:104
MechanicalContactConstraint::gapOffset
Real gapOffset(const Node &node)
Definition:
MechanicalContactConstraint.C:1687
MechanicalContactConstraint::_tension_release
const Real _tension_release
Definition:
MechanicalContactConstraint.h:105
Moose::ConstraintType
ConstraintType
MechanicalContactConstraint::_primary_secondary_jacobian
const bool _primary_secondary_jacobian
Whether to include coupling between the primary and secondary nodes in the Jacobian.
Definition:
MechanicalContactConstraint.h:130
MechanicalContactConstraint::_current_contact_state
std::set< dof_id_type > _current_contact_state
Definition:
MechanicalContactConstraint.h:144
MooseVariableFE< Real >
DisplacedProblem
PenetrationInfo
MechanicalContactConstraint
A MechanicalContactConstraint forces the value of a variable to be the same on both sides of an inter...
Definition:
MechanicalContactConstraint.h:27
MechanicalContactConstraint::_augmented_lagrange_problem
AugmentedLagrangianContactProblemInterface *const _augmented_lagrange_problem
Definition:
MechanicalContactConstraint.h:150
NS::component
static const std::string component
Definition:
NS.h:153
MechanicalContactConstraint::getCoupledVarComponent
bool getCoupledVarComponent(unsigned int var_num, unsigned int &component)
Determine whether the coupled variable is one of the displacement variables, and find its component...
Definition:
MechanicalContactConstraint.C:1854
MechanicalContactConstraint::_formulation
const ContactFormulation _formulation
Definition:
MechanicalContactConstraint.h:98
MechanicalContactConstraint::getConnectedDofIndices
virtual void getConnectedDofIndices(unsigned int var_num) override
Get the dof indices of the nodes connected to the secondary node for a specific variable.
Definition:
MechanicalContactConstraint.C:1819
MechanicalContactConstraint::updateAugmentedLagrangianMultiplier
virtual void updateAugmentedLagrangianMultiplier(bool beginning_of_step)
Definition:
MechanicalContactConstraint.C:256
MechanicalContactConstraint::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(Moose::ConstraintJacobianType type, unsigned int jvar) override
Compute off-diagonal Jacobian entries.
Definition:
MechanicalContactConstraint.C:1317
MechanicalContactConstraint::_update_stateful_data
bool _update_stateful_data
Definition:
MechanicalContactConstraint.h:109
NumericVector< Number >
MechanicalContactConstraint::_Knn
DenseMatrix< Number > _Knn
Definition:
MechanicalContactConstraint.h:154
MechanicalContactConstraint::_al_penetration_tolerance
Real _al_penetration_tolerance
The tolerance of the penetration for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:137
MechanicalContactConstraint::computeQpResidual
virtual Real computeQpResidual(Moose::ConstraintType type) override
Definition:
MechanicalContactConstraint.C:794
MechanicalContactConstraint::_lagrangian_iteration_number
const unsigned int & _lagrangian_iteration_number
Definition:
MechanicalContactConstraint.h:152
SystemBase
MechanicalContactConstraint::_mapped_primary_gap_offset_var
const MooseVariable *const _mapped_primary_gap_offset_var
Definition:
MechanicalContactConstraint.h:123
MechanicalContactConstraint::getTangentialPenalty
Real getTangentialPenalty(const Node &node)
Definition:
MechanicalContactConstraint.C:1727
MechanicalContactConstraint::_contact_set_mutex
static Threads::spin_mutex _contact_set_mutex
Definition:
MechanicalContactConstraint.h:148
MechanicalContactConstraint::shouldApply
bool shouldApply() override
Definition:
MechanicalContactConstraint.C:468
MechanicalContactConstraint::_old_contact_state
std::set< dof_id_type > _old_contact_state
Definition:
MechanicalContactConstraint.h:145
InputParameters
MechanicalContactConstraint::_aux_system
SystemBase & _aux_system
Definition:
MechanicalContactConstraint.h:126
ContactLineSearchBase
This class implements a custom line search for use with mechanical contact.
Definition:
ContactLineSearchBase.h:34
MechanicalContactConstraint::addCouplingEntriesToJacobian
virtual bool addCouplingEntriesToJacobian() override
Definition:
MechanicalContactConstraint.h:84
MechanicalContactConstraint::_penalty_multiplier
const Real _penalty_multiplier
Definition:
MechanicalContactConstraint.h:102
MechanicalContactConstraint::_component
const unsigned int _component
Definition:
MechanicalContactConstraint.h:96
MechanicalContactConstraint::validParams
static InputParameters validParams()
Definition:
MechanicalContactConstraint.C:35
MechanicalContactConstraint::_var_objects
std::vector< MooseVariable * > _var_objects
Definition:
MechanicalContactConstraint.h:117
PenetrationLocator.h
MechanicalContactConstraint::computeContactForce
void computeContactForce(const Node &node, PenetrationInfo *pinfo, bool update_contact_set)
Definition:
MechanicalContactConstraint.C:502
MechanicalContactConstraint::computeQpJacobian
virtual Real computeQpJacobian(Moose::ConstraintJacobianType type) override
Definition:
MechanicalContactConstraint.C:847
NodeFaceConstraint
MechanicalContactConstraint::computeOffDiagJacobian
virtual void computeOffDiagJacobian(unsigned int jvar) override
Compute off-diagonal Jacobian entries.
Definition:
MechanicalContactConstraint.C:1781
MechanicalContactConstraint::_non_displacement_vars_jacobian
const bool _non_displacement_vars_jacobian
Whether to include coupling terms with non-displacement variables in the Jacobian.
Definition:
MechanicalContactConstraint.h:134
MechanicalContactConstraint::_aux_solution
const NumericVector< Number > *const _aux_solution
Definition:
MechanicalContactConstraint.h:127
NodeFaceConstraint::type
const std::string & type() const
MechanicalContactConstraint::_model
const ContactModel _model
Definition:
MechanicalContactConstraint.h:97
MechanicalContactConstraint::_stick_lock_iterations
const unsigned int _stick_lock_iterations
Definition:
MechanicalContactConstraint.h:107
MechanicalContactConstraint::_displaced_problem
MooseSharedPointer< DisplacedProblem > _displaced_problem
Definition:
MechanicalContactConstraint.h:90
MechanicalContactConstraint::_Ken
DenseMatrix< Number > _Ken
Definition:
MechanicalContactConstraint.h:155
MechanicalContactConstraint::residualEnd
virtual void residualEnd() override
Definition:
MechanicalContactConstraint.C:1872
ContactFormulation
ContactFormulation
Definition:
ContactAction.h:23
MechanicalContactConstraint::_stick_unlock_factor
const Real _stick_unlock_factor
Definition:
MechanicalContactConstraint.h:108
MechanicalContactConstraint::_penalty_tangential
Real _penalty_tangential
Definition:
MechanicalContactConstraint.h:103
MechanicalContactConstraint::jacobianSetup
virtual void jacobianSetup() override
Definition:
MechanicalContactConstraint.C:245
Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MechanicalContactConstraint::getPenalty
Real getPenalty(const Node &node)
Definition:
MechanicalContactConstraint.C:1718
MechanicalContactConstraint::_no_iterations
static const unsigned int _no_iterations
Definition:
MechanicalContactConstraint.h:151
MechanicalContactConstraint::_vars
std::vector< unsigned int > _vars
Definition:
MechanicalContactConstraint.h:116
MechanicalContactConstraint::computeJacobian
virtual void computeJacobian() override
Computes the jacobian for the current element.
Definition:
MechanicalContactConstraint.C:1737
MechanicalContactConstraint::_al_incremental_slip_tolerance
Real _al_incremental_slip_tolerance
The tolerance of the incremental slip for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:139
MechanicalContactConstraint::MechanicalContactConstraint
MechanicalContactConstraint(const InputParameters ¶meters)
Definition:
MechanicalContactConstraint.C:123
AugmentedLagrangianContactProblemInterface
Class to provide an interface for parameters and routines required to check convergence for the augme...
Definition:
AugmentedLagrangianContactProblemInterface.h:18
Moose::ConstraintJacobianType
ConstraintJacobianType
MechanicalContactConstraint::timestepSetup
virtual void timestepSetup() override
Definition:
MechanicalContactConstraint.C:229
MechanicalContactConstraint::_connected_secondary_nodes_jacobian
const bool _connected_secondary_nodes_jacobian
Whether to include coupling terms with the nodes connected to the secondary nodes in the Jacobian...
Definition:
MechanicalContactConstraint.h:132
NodeFaceConstraint::parameters
const InputParameters & parameters() const
MechanicalContactConstraint::_al_frictional_force_tolerance
Real _al_frictional_force_tolerance
The tolerance of the frictional force for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:141
MechanicalContactConstraint::_has_secondary_gap_offset
const bool _has_secondary_gap_offset
gap offset from either secondary, primary or both
Definition:
MechanicalContactConstraint.h:120
ContactModel
ContactModel
Definition:
ContactAction.h:16
MechanicalContactConstraint::_has_mapped_primary_gap_offset
const bool _has_mapped_primary_gap_offset
Definition:
MechanicalContactConstraint.h:122
MechanicalContactConstraint::_penalty
const Real _penalty
Definition:
MechanicalContactConstraint.h:101
DenseMatrix< Number >
MechanicalContactConstraint::computeQpSecondaryValue
virtual Real computeQpSecondaryValue() override
Definition:
MechanicalContactConstraint.C:788
MechanicalContactConstraint::AugmentedLagrangianContactConverged
virtual bool AugmentedLagrangianContactConverged()
Definition:
MechanicalContactConstraint.C:333
MechanicalContactConstraint::_secondary_gap_offset_var
const MooseVariable *const _secondary_gap_offset_var
Definition:
MechanicalContactConstraint.h:121
MechanicalContactConstraint::_capture_tolerance
const Real _capture_tolerance
Definition:
MechanicalContactConstraint.h:106
MechanicalContactConstraint::_mesh_dimension
const unsigned int _mesh_dimension
Definition:
MechanicalContactConstraint.h:114
Generated on Fri Jul 18 2025 11:55:58 for https://mooseframework.inl.gov by
1.8.14