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
MechanicalContactConstraint
;
18
class
ContactLineSearchBase
;
19
enum class
ContactModel
;
20
enum class
ContactFormulation
;
21
22
template
<>
23
InputParameters
validParams<MechanicalContactConstraint>
();
24
29
class
MechanicalContactConstraint
:
public
NodeFaceConstraint
30
{
31
public
:
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 =
false
);
41
42
virtual
void
updateContactStatefulData
(
bool
beginning_of_step =
false
);
43
44
virtual
Real
computeQpSlaveValue
()
override
;
45
46
virtual
Real
computeQpResidual
(Moose::ConstraintType type)
override
;
47
51
virtual
void
computeJacobian
()
override
;
52
57
virtual
void
computeOffDiagJacobian
(
unsigned
int
jvar)
override
;
58
59
virtual
Real
computeQpJacobian
(Moose::ConstraintJacobianType type)
override
;
60
66
virtual
Real
computeQpOffDiagJacobian
(Moose::ConstraintJacobianType type,
67
unsigned
int
jvar)
override
;
68
74
virtual
void
getConnectedDofIndices
(
unsigned
int
var_num)
override
;
75
83
bool
getCoupledVarComponent
(
unsigned
int
var_num,
unsigned
int
&
component
);
84
85
virtual
bool
addCouplingEntriesToJacobian
()
override
{
return
_master_slave_jacobian
; }
86
87
bool
shouldApply
()
override
;
88
void
computeContactForce
(PenetrationInfo * pinfo,
bool
update_contact_set);
89
90
protected
:
91
MooseSharedPointer<DisplacedProblem>
_displaced_problem
;
92
Real
nodalArea
(PenetrationInfo & pinfo);
93
Real
getPenalty
(PenetrationInfo & pinfo);
94
Real
getTangentialPenalty
(PenetrationInfo & pinfo);
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
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
118
MooseVariable *
_nodal_area_var
;
119
SystemBase &
_aux_system
;
120
const
NumericVector<Number> *
_aux_solution
;
121
123
const
bool
_master_slave_jacobian
;
125
const
bool
_connected_slave_nodes_jacobian
;
127
const
bool
_non_displacement_vars_jacobian
;
128
130
Real
_al_penetration_tolerance
;
132
Real
_al_incremental_slip_tolerance
;
134
Real
_al_frictional_force_tolerance
;
135
136
ContactLineSearchBase
*
_contact_linesearch
;
137
std::set<dof_id_type>
_current_contact_state
;
138
std::set<dof_id_type>
_old_contact_state
;
139
140
const
bool
_print_contact_nodes
;
141
static
Threads::spin_mutex
_contact_set_mutex
;
142
};
MechanicalContactConstraint::_aux_solution
const NumericVector< Number > * _aux_solution
Definition:
MechanicalContactConstraint.h:120
MechanicalContactConstraint
A MechanicalContactConstraint forces the value of a variable to be the same on both sides of an inter...
Definition:
MechanicalContactConstraint.h:29
ContactModel
ContactModel
Definition:
ContactAction.h:16
MechanicalContactConstraint::_current_contact_state
std::set< dof_id_type > _current_contact_state
Definition:
MechanicalContactConstraint.h:137
MechanicalContactConstraint::computeQpResidual
virtual Real computeQpResidual(Moose::ConstraintType type) override
Definition:
MechanicalContactConstraint.C:788
MechanicalContactConstraint::computeJacobian
virtual void computeJacobian() override
Computes the jacobian for the current element.
Definition:
MechanicalContactConstraint.C:1684
MechanicalContactConstraint::shouldApply
bool shouldApply() override
Definition:
MechanicalContactConstraint.C:462
MechanicalContactConstraint::_capture_tolerance
const Real _capture_tolerance
Definition:
MechanicalContactConstraint.h:105
MechanicalContactConstraint::computeOffDiagJacobian
virtual void computeOffDiagJacobian(unsigned int jvar) override
Compute off-diagonal Jacobian entries.
Definition:
MechanicalContactConstraint.C:1721
MechanicalContactConstraint::MechanicalContactConstraint
MechanicalContactConstraint(const InputParameters ¶meters)
Definition:
MechanicalContactConstraint.C:110
MechanicalContactConstraint::getConnectedDofIndices
virtual void getConnectedDofIndices(unsigned int var_num) override
Get the dof indices of the nodes connected to the slave node for a specific variable.
Definition:
MechanicalContactConstraint.C:1757
MechanicalContactConstraint::updateAugmentedLagrangianMultiplier
virtual void updateAugmentedLagrangianMultiplier(bool beginning_of_step=false)
Definition:
MechanicalContactConstraint.C:254
MechanicalContactConstraint::_al_incremental_slip_tolerance
Real _al_incremental_slip_tolerance
The tolerance of the incremental slip for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:132
MechanicalContactConstraint::_vars
std::vector< unsigned int > _vars
Definition:
MechanicalContactConstraint.h:115
MechanicalContactConstraint::_master_slave_jacobian
const bool _master_slave_jacobian
Whether to include coupling between the master and slave nodes in the Jacobian.
Definition:
MechanicalContactConstraint.h:123
MechanicalContactConstraint::getTangentialPenalty
Real getTangentialPenalty(PenetrationInfo &pinfo)
Definition:
MechanicalContactConstraint.C:1674
MechanicalContactConstraint::getPenalty
Real getPenalty(PenetrationInfo &pinfo)
Definition:
MechanicalContactConstraint.C:1664
MechanicalContactConstraint::_al_frictional_force_tolerance
Real _al_frictional_force_tolerance
The tolerance of the frictional force for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:134
MechanicalContactConstraint::_contact_set_mutex
static Threads::spin_mutex _contact_set_mutex
Definition:
MechanicalContactConstraint.h:141
ContactLineSearchBase
This class implements a custom line search for use with mechanical contact.
Definition:
ContactLineSearchBase.h:38
MechanicalContactConstraint::_connected_slave_nodes_jacobian
const bool _connected_slave_nodes_jacobian
Whether to include coupling terms with the nodes connected to the slave nodes in the Jacobian.
Definition:
MechanicalContactConstraint.h:125
MechanicalContactConstraint::_old_contact_state
std::set< dof_id_type > _old_contact_state
Definition:
MechanicalContactConstraint.h:138
MechanicalContactConstraint::_displaced_problem
MooseSharedPointer< DisplacedProblem > _displaced_problem
Definition:
MechanicalContactConstraint.h:91
MechanicalContactConstraint::computeContactForce
void computeContactForce(PenetrationInfo *pinfo, bool update_contact_set)
Definition:
MechanicalContactConstraint.C:496
MechanicalContactConstraint::_print_contact_nodes
const bool _print_contact_nodes
Definition:
MechanicalContactConstraint.h:140
MechanicalContactConstraint::_component
const unsigned int _component
Definition:
MechanicalContactConstraint.h:96
MechanicalContactConstraint::_penalty_tangential
Real _penalty_tangential
Definition:
MechanicalContactConstraint.h:102
MechanicalContactConstraint::jacobianSetup
virtual void jacobianSetup() override
Definition:
MechanicalContactConstraint.C:243
MechanicalContactConstraint::_stick_lock_iterations
const unsigned int _stick_lock_iterations
Definition:
MechanicalContactConstraint.h:106
MechanicalContactConstraint::residualEnd
virtual void residualEnd() override
Definition:
MechanicalContactConstraint.C:1809
MechanicalContactConstraint::_model
const ContactModel _model
Definition:
MechanicalContactConstraint.h:97
MechanicalContactConstraint::_mesh_dimension
const unsigned int _mesh_dimension
Definition:
MechanicalContactConstraint.h:113
MechanicalContactConstraint::addCouplingEntriesToJacobian
virtual bool addCouplingEntriesToJacobian() override
Definition:
MechanicalContactConstraint.h:85
MechanicalContactConstraint::computeQpJacobian
virtual Real computeQpJacobian(Moose::ConstraintJacobianType type) override
Definition:
MechanicalContactConstraint.C:835
MechanicalContactConstraint::nodalArea
Real nodalArea(PenetrationInfo &pinfo)
Definition:
MechanicalContactConstraint.C:1646
MechanicalContactConstraint::_penalty
const Real _penalty
Definition:
MechanicalContactConstraint.h:101
MechanicalContactConstraint::AugmentedLagrangianContactConverged
virtual bool AugmentedLagrangianContactConverged()
Definition:
MechanicalContactConstraint.C:330
MechanicalContactConstraint::updateContactStatefulData
virtual void updateContactStatefulData(bool beginning_of_step=false)
Definition:
MechanicalContactConstraint.C:423
MaterialTensorCalculatorTools::component
Real component(const SymmTensor &symm_tensor, unsigned int index)
Definition:
MaterialTensorCalculatorTools.C:16
MechanicalContactConstraint::_stick_unlock_factor
const Real _stick_unlock_factor
Definition:
MechanicalContactConstraint.h:107
ContactFormulation
ContactFormulation
Definition:
ContactAction.h:23
MechanicalContactConstraint::_aux_system
SystemBase & _aux_system
Definition:
MechanicalContactConstraint.h:119
MechanicalContactConstraint::_formulation
const ContactFormulation _formulation
Definition:
MechanicalContactConstraint.h:98
MechanicalContactConstraint::_al_penetration_tolerance
Real _al_penetration_tolerance
The tolerance of the penetration for augmented Lagrangian method.
Definition:
MechanicalContactConstraint.h:130
MechanicalContactConstraint::_normalize_penalty
const bool _normalize_penalty
Definition:
MechanicalContactConstraint.h:99
MechanicalContactConstraint::_update_stateful_data
bool _update_stateful_data
Definition:
MechanicalContactConstraint.h:108
MechanicalContactConstraint::_residual_copy
NumericVector< Number > & _residual_copy
Definition:
MechanicalContactConstraint.h:110
MechanicalContactConstraint::computeQpSlaveValue
virtual Real computeQpSlaveValue() override
Definition:
MechanicalContactConstraint.C:782
MechanicalContactConstraint::_friction_coefficient
const Real _friction_coefficient
Definition:
MechanicalContactConstraint.h:103
MechanicalContactConstraint::_tension_release
const Real _tension_release
Definition:
MechanicalContactConstraint.h:104
validParams< MechanicalContactConstraint >
InputParameters validParams< MechanicalContactConstraint >()
Definition:
MechanicalContactConstraint.C:33
MechanicalContactConstraint::_contact_linesearch
ContactLineSearchBase * _contact_linesearch
Definition:
MechanicalContactConstraint.h:136
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:1792
MechanicalContactConstraint::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(Moose::ConstraintJacobianType type, unsigned int jvar) override
Compute off-diagonal Jacobian entries.
Definition:
MechanicalContactConstraint.C:1286
MechanicalContactConstraint::timestepSetup
virtual void timestepSetup() override
Definition:
MechanicalContactConstraint.C:227
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:127
MechanicalContactConstraint::_nodal_area_var
MooseVariable * _nodal_area_var
Definition:
MechanicalContactConstraint.h:118
MechanicalContactConstraint::_var_objects
std::vector< MooseVariable * > _var_objects
Definition:
MechanicalContactConstraint.h:116
Generated on Sat Jan 25 2020 12:04:35 for www.mooseframework.org by
1.8.16