# Introduction

Contact mechanics is the analysis of stresses and strains arising in interacting bodies. This field is relevant for many practical applications such as metal forging, car crash tests, machining, and manyothers. In the simplest case, a contact mechanics problem consists of representing the behavior of two bodies coming in contact. The bodies are completely independent and interact with each other through their contact regions only. The bodies can be modeled as deformable, rigid, or a combination of the two.

This blog gives an overview of the modeling technique used in OnScale Solve to simulate contact mechanics problems. In addition, a test case is presented on how to build and run a first contact mechanics simulation in OnScale Solve.

# Modeling Methodology

The contact mechanics literature is rich with many mathematically different algorithms. In spite of their many differences, all these algorithms can be abstracted into a two-step process:

- The detection of contact between two bodies.
- The enforcement of non-penetration between two bodies.

## Contact Detection

Mechanical simulations in OnScale Solve use a finite element solver. Geometry is represented through a mesh, such as a collection of tetrahedron or hexahedron elements. The contact detection step consists of identifying when two surface segments, belonging to two possibly different bodies, intersect. For each surface segment, the algorithm finds the list of other surface segments that intersect it and some additional information needed to compute the contact forces. The key point to note is that the size of the mesh can have an effect on how well contact is represented in the simulation. More discussion about this subject will be given in subsequent posts in which strategies for improved contact simulation will be presented.

## Contact Force

Consider two surfaces coming in contact with each other. In OnScale Solve we designate one of the surfaces as the guide and the other as the follower. If there are large differences in the mesh size or the stiffness of the opposing surfaces, the choice of the guide and follower can be important because it can affect the distribution of the contact forces. Solve automatically assigns the guide and follower sides for a given pair of surfaces coming in contact.

The computation of the contact forces is based on the output from the contact detection step. In particular, the contact forces are computed such that:

- the global equilibrium of forces across all the objects is satisfied, and
- for a given contact surface pair, no node on the follower surface is allowed to penetrate the guide surface.

In OnScale Solve, we use the penalty method, where the interaction between the follower and guide surfaces is represented through a set of springs, so in practice, some penetration will take place during the simulation. The stiffness of the springs determines the amount of allowable penetration. For a given simulation, the optimal stiffness value depends on many factors including the mesh quality, mesh element size, and the material properties. Too small of a penalty stiffness may allow too much penetration and too large of a stiffness may cause non-convergence of the solution. In OnScale Solve, a default stiffness value is computed that should be ideal in most cases.

# Challenges of Modeling Contact

In practice, there are many challenges to successfully model a contact mechanics problem. We list a few of those challenges.

- Mesh quality and mesh element size.
- Very coarse meshes or meshes with distorted elements can lead to the failure of the simulation. Distorted elements can arise either from the mesher, or as a result of the deformation of the bodies as the simulation evolves.
- Material properties.
- Modeling contact between two objects with very different material stiffnesses can be challenging. In general, it is advisable to make the contact surfaces of the stiffer of the two objects as the guide and the softer as the follower.
- Large deformation contact.
- Problems involving large deformations can lead to highly distorted meshes rendering the contact detection step more challenging.
- Abrupt changes in contact regions.
- Contact is a very nonlinear problem that Solve handles as a Quasistatic analysis automatically with adaptive incremental load steps to achieve convergence even for problems with large deformation.

In OnScale Solve, we address those challenges by using adaptive time stepping, mesh quality analysis, element-wise contact stiffness parameters, and general contact. In particular, the general contact algorithm in OnScale Solve tries to handle those challenges by

- automatically detecting the interaction between different surfaces during the simulation.
- automatically assigning the guide and follower sides based on the material properties and the mesh.
- automatically defining a sliding contact model and determining the spring stiffness for the penalty method.

# Case Study

In this section, we go through a simple example to guide you in building your first contact mechanics problem in OnScale Solve. The following two steps are required:

- Build a purely mechanical problem.
- Activate contact in the simulation.

There are two different ways of activating contact in OnScale Solve. In what follows we will discuss “General Contact”, the simplest possible option for enabling contact during a mechanical simulation in OnScale Solve.

## Model Geometry

The model consists of a column-beam assembly as shown in fig. 1. The beam is assumed to be bolted to the angle connection, and the angle connection and the beam are both welded to the column. The bolts and nuts that connect the beam to the angle connection are omitted to simplify the model.

## Material Properties

The material used to characterize the behavior of all the parts of the model is Aluminum. This material is predefined in OnScale Solve.

## Boundary Conditions

On the column, restraint boundary conditions are enforced on the top and bottom plane faces. On the beam, a pressure boundary condition equal to 5e^6 Pa is enforced on the top plane surface. The complete set of boundary conditions used is shown in fig. 2.

## Interactions

The goal of this step is to define the interactions between surfaces. In particular, two different types of interactions will be defined:

- Bonded contact between the column and the beam and between the column and the angle connection. This interaction represents the welding of the column to the beam and to the angle connection.
- Sliding contact will be activated for all the surfaces of the model. OnScale Solve will automatically detect any surfaces coming into contact during the simulation and will enforce the sliding contact condition between the detected surfaces.

The first step in this process consists of setting the “Initial Contact” option in OnScale Solve. After loading the cad file, an option is given to choose the “Initial Contact” behavior. Two options are currently avaiable, “Bonded” and “Unbonded” contact.

In general, if the user intends to define only “Bonded” contact for all the surfaces in the model, then, they should choose the “Bonded” contact option. However, if the user requires both “Bonded” and “Unbonded” contact, then they should set the “Initial Contact” option to “Unbonded”. In this particular example, since we use both “Bonded” and “Unbonded” contact, we set the “Initial Contact” option to “Unbonded” as shown in fig. 3.

### Define Bonded Interaction

In OnScale Solve, interactions can be defined under the “Modeler” tab, by clicking on the “Interactions” option and then choosing “Contact” as shown in fig. 4. Once the “Contact” option is chosen, a small table, shown in fig. 5, will show up on the far right. For bonded contact, the type “Bonded” is chosen, and the two surfaces to be bonded together are picked as “SIDE A” and “SIDE B”.

### Define Sliding Contact

In this model, since the angle connection and the beam are bolted together, sliding contact is expected to happen between the top of surface of the angle connection and the bottom surface of the beam. Using “sliding” contact in this case instead of “bonded” contact allows the sliding of the angle connection with respect to the beam resulting from the deformation of the bolts due to the applied load. This choice of the interaction type between the angle connection and the beam results in a more physical simulation.

The activation of sliding contact in OnScale Solve is very simple. With “General Contact” turned on, the solver checks for all possible surfaces coming into contact during the simulation and enforces a sliding contact condition between those surfaces. Under the “Physics” tab, click on the “Global Settings” option. This opens a table as shown in fig. 6. Choose the option “Unbonded” and activate “General Contact”.

The user can also explicitly specify a sliding contact condition between two surfaces by following the same steps specified in the previous section to define the “Bonded” surface pair interactions, but for sliding contact the contact type is set to “Unbonded” instead of “Bonded”. Manually defining the sliding contact conditions may reduce the simulation time, but can be impractical when many surfaces are potentially in contact.

The results of the simulation are plotted in fig. 7 which shows the von Mises stresses plotted on the deformed object. The von Mises stress is a number computed from the Cauchy stress and is usually used as a criterion to determine the onset of plastic yielding of a material. This is particularly used for ductile materials such as some metals.

Also, a zoom-in of the contact area is shown in fig. 8. It can be clearly seen that the “General Contact” algorithm in OnScale Solve captures the interaction between the angle connection and the beam, and defines an optimal spring stiffness in this case to accurately simulate sliding contact between the two objects.

For step by step tutorial of this simulation, please refer to the tutorial here

In future posts, we will discuss in more details the different aspects of modeling contact mechanics including simulation and debugging strategies.