.. _contact-enforcement:

*******************************
Overview of Contact Enforcement
*******************************

A contact search algorithm provides the contact interactions on which contact constraints could be enforced. (An interaction in its simplest form is a node-face pairing as described in :numref:`contact-constraints`.) Contact enforcement must first determine which configuration dictates these interactions and which of these interactions need enforcement. Active set logic is used to determine which interactions provided by the search require interpenetration removal based on tolerances and other algorithmic issues. In addition to enforcing interpenetration constraints, the enforcement algorithm must satisfy constraint conditions defined by the friction model. In the simple example of a frictionless model, contact enforcement must ensure no penetration and a balance of forces.

The active set logic differs in the enforcement algorithms used in explicit and implicit time integration. For explicit time integration, the determination of the active set is usually made from the initial predicted position and remains unchanged for the time step. For example, in a frictionless node-face interaction, contact will enforce the constraint conditions on the pair if the node is penetrating the face in the initial predicted position. However, for large motion problems the active set can be updated within the time step by setting ``NUM GEOMETRY UPDATE ITERATIONS`` (See :numref:`contact-algorithm-enforcementoptions`). For implicit time integration, the active set is iterated with the solve (See :numref:`implicit-contact`) because the motion over a time step is generally expected to be large.

Two basic algorithmic approaches exist in Sierra/SM for contact constraint enforcement. Kinematic enforcement prescribes zero interpenetration and iterates to achieve equal and opposite forces. Augmented Lagrange enforcement applies equal and opposite forces and iterates to achieve zero interpenetration. Augmented Lagrange is generally more robust, able to handle multiple conflicting constraints, and more easily incorporates complicated friction model definitions. As such, Augmented Lagrange is the default enforcement algorithm in both implicit and explicit simulations with Sierra/SM.

In explicit, the contact enforcement algorithm uses Augmented Lagrange enforcement (See :numref:`contact-algorithm`). The enforcement uses a fixed number of iterations which can be set with ``MOMENTUM BALANCE ITERATIONS`` (See :numref:`contact-algorithm-enforcementoptions`).

In implicit, the contact enforcement algorithm is specified with the ``ENFORCEMENT`` command (See :numref:`contact-algorithm-enforcement`). For both Augmented Lagrange and Kinematic enforcement, the number of iterations is determined by convergence criteria that are specified in the ``CONTROL CONTACT`` section (See :numref:`implicit-contact`).
