Contact Module
The interaction of moving bodies is a common occurrence in our world, and therefore modeling such problems is essential to accurately represent the mechanical behavior of the physical world. However, finite element methods do not have an inherent means of modeling contact. Therefore, specific contact algorithms are required. These algorithms enforce constraints between surfaces in the mesh, to prevent penetration and develop contact forces. The MOOSE contact module provides the necessary tools for modeling mechanical contact.
Theory
Mechanical contact between two deformable bodies is based on three requirements.
That is, the penetration distance (typically referred to as the gap in the contact literature) of one of the body into another must not be positive; the contact force opposing penetration must be positive in the normal direction; and either the penetration distance or the contact force must be zero at all times. In the MOOSE Contact Module, these contact constraints are enforced through the use of either node/face constraints or by using a mortar method.
Node/Face Mechanical Contact
Contact constraints can be enforced through the use of node/face constraints in a manner similar to that detailed by Heinstein and Laursen (1999)). In this approach, first, a geometric search determines which secondary nodes have penetrated primary faces. For those nodes, the internal force computed by the divergence of stress is moved to the appropriate primary face at the point of contact. Those forces are distributed to primary nodes by employing the finite element shape functions. Additionally, the secondary nodes are constrained to remain on the primary faces, preventing penetration. The module currently supports frictionless, frictional, and glued contact.
Mortar-Based Mechanical Contact
Models specific for mechanical contact enforcement have been developed based on the MOOSE mortar constraint system, and provide an alternative discretization technique for solving mechanical contact. Results of performance studies using this approach are summarized in MortarPerformance.
Tutorial and examples
Implementation details and analysis
Contact
Syntax Block
Setting up a model to use contact enforcement in MOOSE requires the creation of multiple types of MOOSE objects. Using the top-level Contact syntax block, which streamlines the process of setting up these objects, is highly recommended, and supports most available types of contact. The following input file example shows the basic usage of the Contact
block:
[Contact]
[./leftright]
secondary = 3
primary = 2
model = frictionless
penalty = 1e+6
normal_smoothing_distance = 0.1
[../]
[]
(modules/contact/test/tests/sliding_block/sliding/frictionless_kinematic.i)Objects, Actions, and Syntax
- Contact App
- CohesiveZoneMortarUserObjectAuxPopulates an auxiliary variable with mortar cohesive zone model quantities.
- ContactPressureAuxComputes the contact pressure from the contact force and nodal area
- MortarArchardsLawAuxReturns the weighted gap velocity at a node. This quantity is useful for mortar contact, particularly when dual basis functions are used in contact mechanics
- MortarFrictionalPressureVectorAuxThis class creates an auxiliary vector for outputting the mortar frictional pressure vector.
- MortarFrictionalStateAuxThis class creates discrete states for nodes into frictional contact, including contact/no-contact and stick/slip.
- MortarPressureComponentAuxThis class transforms the Cartesian Lagrange multiplier vector to local coordinates and outputs each individual component along the normal or tangential direction.
- PenaltyMortarUserObjectAuxPopulates an auxiliary variable with a contact quantities from penalty mortar contact.
- WeightedGapVelAuxReturns the weighted gap velocity at a node. This quantity is useful for mortar contact, particularly when dual basis functions are used in contact mechanics
- Contact App
- CartesianMortarMechanicalContactThis class is used to apply normal contact forces using lagrange multipliers
- ComputeDynamicFrictionalForceLMMechanicalContactComputes the tangential frictional forces for dynamic simulations
- ComputeDynamicWeightedGapLMMechanicalContactComputes the normal contact mortar constraints for dynamic simulations
- ComputeFrictionalForceCartesianLMMechanicalContactComputes mortar frictional forces.
- ComputeFrictionalForceLMMechanicalContactComputes the tangential frictional forces
- ComputeWeightedGapCartesianLMMechanicalContactComputes the weighted gap that will later be used to enforce the zero-penetration mechanical contact conditions
- ComputeWeightedGapLMMechanicalContactComputes the weighted gap that will later be used to enforce the zero-penetration mechanical contact conditions
- ExplicitDynamicsContactConstraintApply non-penetration constraints on the mechanical deformation in explicit dynamics using a node on face formulation by solving uncoupled momentum-balance equations.
- MechanicalContactConstraintApply non-penetration constraints on the mechanical deformation using a node on face, primary/secondary algorithm, and multiple options for the physical behavior on the interface and the mathematical formulation for constraint enforcement
- MortarGenericTractionUsed to apply tangential stresses from frictional contact using lagrange multipliers
- NormalMortarMechanicalContactThis class is used to apply normal contact forces using lagrange multipliers
- RANFSNormalMechanicalContactApplies the Reduced Active Nonlinear Function Set scheme in which the secondary node's non-linear residual function is replaced by the zero penetration constraint equation when the constraint is active
- TangentialMortarMechanicalContactUsed to apply tangential stresses from frictional contact using lagrange multipliers
- Contact App
- ContactActionSets up all objects needed for mechanical contact enforcement
- Contact App
- ContactSlipDamperDamp the iterative solution to minimize oscillations in frictional contact constriants between nonlinear iterations
- Contact App
- ExplicitDynamicsContactActionSets up all objects needed for mechanical contact enforcement in explicit dynamics simulations.
- Contact App
- ContactDOFSetSizeOutputs the number of dofs greater than a tolerance threshold indicating mechanical contact
- NumAugmentedLagrangeIterationsGet the number of extra augmented Lagrange loops around the non-linear solve.
- Contact App
- ContactSplitSplit-based preconditioner that partitions the domain into DOFs directly involved in contact (on contact surfaces) and those that are not
- Contact App
- AugmentedLagrangianContactFEProblemManages nested solution for augmented Lagrange contact
- AugmentedLagrangianContactProblemManages nested solution for augmented Lagrange contact
- Contact App
- BilinearMixedModeCohesiveZoneModelComputes the bilinear mixed mode cohesive zone model.
- LMWeightedGapUserObjectProvides the mortar normal Lagrange multiplier for constraint enforcement.
- LMWeightedVelocitiesUserObjectProvides the mortar contact Lagrange multipliers (normal and tangential) for constraint enforcement.
- NodalAreaCompute the tributary area for nodes on a surface
- NodalDensityCompute the tributary densities for nodes on a surface
- NodalWaveSpeedCompute the tributary wave speeds for nodes on a surface
- PenaltyFrictionUserObjectComputes the mortar frictional contact force via a penalty approach.
- PenaltySimpleCohesiveZoneModelComputes the mortar frictional contact force via a penalty approach.
- PenaltyWeightedGapUserObjectComputes the mortar normal contact force via a penalty approach.
References
- Martin W. Heinstein and Tod A. Laursen.
An algorithm for the matrix-free solution of quasistatic frictional contact problems.
International Journal for Numerical Methods in Engineering, 44(9):1205–1226, March 1999.[BibTeX]