www.mooseframework.org
contact
include
constraints
MechanicalContactConstraint.h
Go to the documentation of this file.
1
//* This file is part of the MOOSE framework
2
//* https://www.mooseframework.org
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
26
class
MechanicalContactConstraint
:
public
NodeFaceConstraint
27
{
28
public
:
29
static
InputParameters
validParams
();
30
31
MechanicalContactConstraint
(
const
InputParameters
&
parameters
);
32
33
virtual
void
timestepSetup
()
override
;
34
virtual
void
jacobianSetup
()
override
;
35
virtual
void
residualEnd
()
override
;
36
37
virtual
bool
AugmentedLagrangianContactConverged
();
38
39
virtual
void
updateAugmentedLagrangianMultiplier
(
bool
beginning_of_step);
40
virtual
void
updateContactStatefulData
(
bool
beginning_of_step);
41
42
virtual
Real
computeQpSecondaryValue
()
override
;
43
44
virtual
Real
computeQpResidual
(
Moose::ConstraintType
type
)
override
;
45
49
virtual
void
computeJacobian
()
override
;
50
55
virtual
void
computeOffDiagJacobian
(
unsigned
int
jvar)
override
;
56
57
virtual
Real
computeQpJacobian
(
Moose::ConstraintJacobianType
type
)
override
;
58
64
virtual
Real
computeQpOffDiagJacobian
(
Moose::ConstraintJacobianType
type
,
65
unsigned
int
jvar)
override
;
66
72
virtual
void
getConnectedDofIndices
(
unsigned
int
var_num)
override
;
73
81
bool
getCoupledVarComponent
(
unsigned
int
var_num,
unsigned
int
&
component
);
82
83
virtual
bool
addCouplingEntriesToJacobian
()
override
{
return
_primary_secondary_jacobian
; }
84
85
bool
shouldApply
()
override
;
86
void
computeContactForce
(
const
Node & node,
PenetrationInfo
* pinfo,
bool
update_contact_set);
87
88
protected
:
89
MooseSharedPointer<DisplacedProblem>
_displaced_problem
;
90
Real
gapOffset
(
const
Node & node);
91
Real
nodalArea
(
const
Node & node);
92
Real
getPenalty
(
const
Node & node);
93
Real
getTangentialPenalty
(
const
Node & node);
94
95
const
unsigned
int
_component
;
96
const
ContactModel
_model
;
97
const
ContactFormulation
_formulation
;
98
const
bool
_normalize_penalty
;
99
100
const
Real
_penalty
;
101
const
Real
_penalty_multiplier
;
102
Real
_penalty_tangential
;
103
const
Real
_friction_coefficient
;
104
const
Real
_tension_release
;
105
const
Real
_capture_tolerance
;
106
const
unsigned
int
_stick_lock_iterations
;
107
const
Real
_stick_unlock_factor
;
108
bool
_update_stateful_data
;
109
110
NumericVector<Number>
&
_residual_copy
;
111
// std::map<Point, PenetrationInfo *> _point_to_info;
112
113
const
unsigned
int
_mesh_dimension
;
114
115
std::vector<unsigned int>
_vars
;
116
std::vector<MooseVariable *>
_var_objects
;
117
119
const
bool
_has_secondary_gap_offset
;
120
const
MooseVariable
*
const
_secondary_gap_offset_var
;
121
const
bool
_has_mapped_primary_gap_offset
;
122
const
MooseVariable
*
const
_mapped_primary_gap_offset_var
;
123
124
MooseVariable
*
_nodal_area_var
;
125
SystemBase
&
_aux_system
;
126
const
NumericVector<Number>
*
const
_aux_solution
;
127
129
const
bool
_primary_secondary_jacobian
;
131
const
bool
_connected_secondary_nodes_jacobian
;
133
const
bool
_non_displacement_vars_jacobian
;
134
136
Real
_al_penetration_tolerance
;
138
Real
_al_incremental_slip_tolerance
;
140
Real
_al_frictional_force_tolerance
;
141
142
ContactLineSearchBase
*
_contact_linesearch
;
143
std::set<dof_id_type>
_current_contact_state
;
144
std::set<dof_id_type>
_old_contact_state
;
145
146
const
bool
_print_contact_nodes
;
147
static
Threads::spin_mutex
_contact_set_mutex
;
148
149
AugmentedLagrangianContactProblemInterface
*
const
_augmented_lagrange_problem
;
150
const
static
unsigned
int
_no_iterations
;
151
const
unsigned
int
&
_lagrangian_iteration_number
;
152
153
DenseMatrix<Number>
_Knn
;
154
DenseMatrix<Number>
_Ken
;
155
};
MechanicalContactConstraint::_contact_linesearch
ContactLineSearchBase * _contact_linesearch
Definition:
MechanicalContactConstraint.h:142
MechanicalContactConstraint::_nodal_area_var
MooseVariable * _nodal_area_var
Definition:
MechanicalContactConstraint.h:124
MechanicalContactConstraint::nodalArea
Real nodalArea(const Node &node)
Definition:
MechanicalContactConstraint.C:1701
NodeFaceConstraint.h
MechanicalContactConstraint::_residual_copy
NumericVector< Number > & _residual_copy
Definition:
MechanicalContactConstraint.h:110
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:146
MechanicalContactConstraint::_normalize_penalty
const bool _normalize_penalty
Definition:
MechanicalContactConstraint.h:98
MechanicalContactConstraint::_friction_coefficient
const Real _friction_coefficient
Definition:
MechanicalContactConstraint.h:103
MechanicalContactConstraint::gapOffset
Real gapOffset(const Node &node)
Definition:
MechanicalContactConstraint.C:1687
MechanicalContactConstraint::_tension_release
const Real _tension_release
Definition:
MechanicalContactConstraint.h:104
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:129
MechanicalContactConstraint::_current_contact_state
std::set< dof_id_type > _current_contact_state
Definition:
MechanicalContactConstraint.h:143
MooseVariableFE< Real >
PenetrationInfo
MechanicalContactConstraint
A MechanicalContactConstraint forces the value of a variable to be the same on both sides of an inter...
Definition:
MechanicalContactConstraint.h:26
MechanicalContactConstraint::_augmented_lagrange_problem
AugmentedLagrangianContactProblemInterface *const _augmented_lagrange_problem
Definition:
MechanicalContactConstraint.h:149
NS::component
static const std::string component
Definition:
NS.h:138
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:97
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:108
NumericVector< Number >
MechanicalContactConstraint::_Knn
DenseMatrix< Number > _Knn
Definition:
MechanicalContactConstraint.h:153
MechanicalContactConstraint::_al_penetration_tolerance
Real _al_penetration_tolerance
The tolerance of the penetration for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:136
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:151
SystemBase
MechanicalContactConstraint::_mapped_primary_gap_offset_var
const MooseVariable *const _mapped_primary_gap_offset_var
Definition:
MechanicalContactConstraint.h:122
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:147
MechanicalContactConstraint::shouldApply
bool shouldApply() override
Definition:
MechanicalContactConstraint.C:468
MechanicalContactConstraint::_old_contact_state
std::set< dof_id_type > _old_contact_state
Definition:
MechanicalContactConstraint.h:144
InputParameters
MechanicalContactConstraint::_aux_system
SystemBase & _aux_system
Definition:
MechanicalContactConstraint.h:125
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:83
MechanicalContactConstraint::_penalty_multiplier
const Real _penalty_multiplier
Definition:
MechanicalContactConstraint.h:101
MechanicalContactConstraint::_component
const unsigned int _component
Definition:
MechanicalContactConstraint.h:95
MechanicalContactConstraint::validParams
static InputParameters validParams()
Definition:
MechanicalContactConstraint.C:35
MechanicalContactConstraint::_var_objects
std::vector< MooseVariable * > _var_objects
Definition:
MechanicalContactConstraint.h:116
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:133
MechanicalContactConstraint::_aux_solution
const NumericVector< Number > *const _aux_solution
Definition:
MechanicalContactConstraint.h:126
NodeFaceConstraint::type
const std::string & type() const
MechanicalContactConstraint::_model
const ContactModel _model
Definition:
MechanicalContactConstraint.h:96
MechanicalContactConstraint::_stick_lock_iterations
const unsigned int _stick_lock_iterations
Definition:
MechanicalContactConstraint.h:106
MechanicalContactConstraint::_displaced_problem
MooseSharedPointer< DisplacedProblem > _displaced_problem
Definition:
MechanicalContactConstraint.h:89
MechanicalContactConstraint::_Ken
DenseMatrix< Number > _Ken
Definition:
MechanicalContactConstraint.h:154
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:107
MechanicalContactConstraint::_penalty_tangential
Real _penalty_tangential
Definition:
MechanicalContactConstraint.h:102
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:150
MechanicalContactConstraint::_vars
std::vector< unsigned int > _vars
Definition:
MechanicalContactConstraint.h:115
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:138
MechanicalContactConstraint::MechanicalContactConstraint
MechanicalContactConstraint(const InputParameters ¶meters)
Definition:
MechanicalContactConstraint.C:123
AugmentedLagrangianContactProblemInterface
Definition:
AugmentedLagrangianContactProblem.h:17
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:131
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:140
MechanicalContactConstraint::_has_secondary_gap_offset
const bool _has_secondary_gap_offset
gap offset from either secondary, primary or both
Definition:
MechanicalContactConstraint.h:119
ContactModel
ContactModel
Definition:
ContactAction.h:16
MechanicalContactConstraint::_has_mapped_primary_gap_offset
const bool _has_mapped_primary_gap_offset
Definition:
MechanicalContactConstraint.h:121
MechanicalContactConstraint::_penalty
const Real _penalty
Definition:
MechanicalContactConstraint.h:100
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:120
MechanicalContactConstraint::_capture_tolerance
const Real _capture_tolerance
Definition:
MechanicalContactConstraint.h:105
MechanicalContactConstraint::_mesh_dimension
const unsigned int _mesh_dimension
Definition:
MechanicalContactConstraint.h:113
Generated on Fri Mar 29 2024 05:07:25 for www.mooseframework.org by
1.8.14