Modeling the deformation and failure response of parts that are bonded together is one of the few FE topics that seem hard to do, but is in fact relatively simple to do one you know how to set it up. The “trick” is to use cohesive elements or cohesive surface contact. This modeling approach has been around for many years but many people are still struggling to set it up properly. In this article I will try to demonstrate, by example, how this works in Abaqus.
I usually find the Abaqus user’s manuals to be excellent, but when it comes to cohesive elements and cohesive surface contact, the Abaqus docs are not as succinct as I would like. Here I will try to demonstrate my favorite Abaqus cohesive element settings by going through a number of short examples.
Before starting, remember that traction = stress, and separation = displacement. All results presented here were generated using Abaqus and plotted using MCalibration.
Example 1 - Base Line (Tension)
The bottom surface of the bottom substrate is held fixed. The top surface of the top substrate is moved upwards 0.1 mm in 0.1 sec. The adhesive layer is 0.01 mm thick (very thin!), and the cross sectional area is 1 mm x 1 mm. Each substrate is one C3D8R element, and the adhesive is represented using one COH3D8 element. With this setup the applied force has the same numerical value as the (stress) traction (in MPa).
The predicted traction-separation response for the model below is shown in the figure. Notes:
- You can specify the normal and shear stiffnesses using the
criterion=maxsyou can specify the traction values for the onset of damage accumulation for the normal and shear directions.
- Here I used a simple linear
*Damage Evolutionoption. In most real cases you will need to use something better.
- This example was run using Abaqus/Standard.
*Material, name=mat *Elastic, type=traction 4000.0, 700.0, 700.0 *Damage Initiation, criterion=maxs 90.0, 66.0, 66.0 *Damage Evolution, type=displacement, softening=linear 0.04
Example 2 - Base Line (Shear)
This is exactly the same as Example 1, but the loading mode is simple shear. The deformed shape looks a bit crazy, but note that this will not cause convergence issues due to element distortions. Cohesive elements are 1D and do not really distort! Very handy.
The cohesive material model definition is the same as in Example 1, and the predicted traction-separation response is shown below. This figure shows both the tension and shear predictions.
Example 3 - Cohesive Layer Thickness
Cohesive elements are a bit odd in that their response are not specified in terms of stress-strain curves, but instead in terms of traction-separation curves. Due to this it becomes important to properly define the initial cohesive thickness. In the first 2 examples I did not specify the cohesive thickness, and in this case Abaqus assumes a thickness of 1.0. If I reduce the cohesive thickness in example 1 by 50% then I get the results shown in the following figure. This figure shows the response of both thicknesses.
The initial linear elastic response is clearly dependent on the cohesive layer thickness. This makes sense since the traction is given by the modulus multiplied by the cohesive layer strain, and the strain is obtained from the displacement divided by the initial thickness. My preferred way to deal with this is to assign the cohesive thickness to be 1.0, this way the cohesive strain becomes equal to the cohesive displacement. This is also the default behavior in Abaqus.
Also note that the response after damage initiation is defined in terms of the separation distance (not strain). Also note that with this convention you will get the same force-displacement response of the cohesive layer independent of the size of the elements in the through-thickness direction. This should not be a problem since usually the adhesive layers are thin. If the adhesive layer is not thin, then it may be better to switch to continuum elements.
In the following examples I will use a cohesive thickness of 1.0.
** This example used a cohesive layer thickness of 0.5 *Cohesive Section, elset=adhesive, material=mat, response=traction separation 0.5
Example 4 - Cohesive Contact Surfaces (Tension)
Here I will repeat Example 1 using cohesive contact surfaces instead of cohesive elements. Specifically, I will use the following Abaqus/Standard definitions. The results below the code show that in this case cohesive contact surfaces give exactly the same results as cohesive elements. Nice!
*Surface Interaction, name=coh *Surface Behavior, pressure-overclosure=hard *Cohesive Behavior, cohere=original contacts, type=uncoupled ** Knn, Kss, Ktt 4000.0, 700.0, 700.0 *Damage Initiation, criterion=quads 90.0, 66.0, 66.0 *Damage Evolution, type=displacement, softening=linear 0.04 ** *Contact Pair, interaction=coh botBlock.top, topBlock.bot
Example 5 - Cohesive Contact Surfaces (Shear)
In this example I will repeat Example 2 using cohesive contact surfaces instead of cohesive elements.The results below show that in this case cohesive contact surfaces give exactly the same results as cohesive elements.
Example 6 - Tabular Damage Evolution
All examples so far have use a linear softening response after damage initiation. That is useful for demonstration purposes, but it is typically not sufficiently accurate for modeling real adhesives. My recommendation to overcome this issue is to use a tabular damage evolution model instead. In this case the elastic stiffness of the cohesive layer is multiplied by a scalar damage variable that is initially 0, and then starts to increase once the damage initiation condition has been reached. Final failure occurs once the damage variable reaches a value of 1.0. That is, the stress is multiplied by (1-D) to compensate for the damage accumulation. In abaqus this is specified by pairs of displacements and the corresponding damage value. The different lines in the figure below has multiple pairs of damage and displacement values. It is clear that many different responses can be obtained if the damage variable is selected properly.
*Material, name=mat *Density 1.0e-9 *Elastic, type=traction ** Enn, Ess, Ett 4000.0, 700.0, 700.0 ** *Damage Initiation, criterion=maxs ** Snn, Sss, Stt 90.0, 66.0, 66.0, 2.0 ** *Damage Evolution, type=displacement, softening=tabular ** damage variable, total displacement 0.0, 0.00 0.8, 0.05 1.0, 0.20
Example 7 - Rate Dependence
Many aspects of the cohesive response can be made dependent on the applied deformation rate. This is obviously important since most polymer adhesives have a rate-dependent response! In this example I will show how to make the initial elastic response linear viscoelastic, and how to make the damage evolution rate-dependent.
According to the Abaqus manuals it should also be possible to make the damage initiation behavior rate-dependent, but I have experience odd behavior when activating this feature. So my current recommendation is to not use it. Instead you can achieve similar behavior by using a rate-dependent damage evolution specified in a tabular way (see code below).
*Material, name=mat *Density 1.0e-9 *Elastic, type=traction ** Enn, Ess, Ett 4000.0, 700.0, 700.0 *Viscoelastic, time=prony ** gi, kappai, taui 0.7, 0.7, 1.0 0.1, 0.1, 2.0 ** *Damage Initiation, criterion=maxs, rate dependent ** Snn, Sss, Stt 90.0, 66.0, 66.0, 2.0 *Damage Evolution, type=displacement, softening=tabular, rate dependent ** damage variable, total displacement, effective rate 0.0, 0.00, 1.0 0.8, 0.03, 1.0 1.0, 0.05, 1.0 ** 0.0, 0.00, 2.0 0.4, 0.02, 2.0 1.0, 0.03, 2.0
Example 8 - Mixed Mode with Rate-Dependence
In this final example I am using a rate-dependent cohesive response that is also dependent on the loading mode. More specifically, separate traction-separation behaviors in tension and shear are specified using the options
mixed mode behavior=tabular, and
mode mix ratio=traction. The p1 parameter specifies the type of load, p1=0 is tension, p1=1 is shear. In many industrial applications it may also be useful to include data in additional mixed mode configurations. I did not do that here to keep the code simple. More specifically, p1 = (2/pi) * atan(shear_traction/normal_traction).
In this example I also added a small amount of damage stabilization to illustrate how that can be done.
*Damage Initiation, criterion=quads ** Snn, Sss, Stt 45.0, 30.0, 30.0 *Damage Evolution, type=displacement, softening=tabular, mixed mode behavior=tabular, mode mix ratio=traction, rate dependent ** damage, total-disp, phi_1, phi_2, rate ** phi_2 = 1 => purely shear ** make phi_2=0 since isotropic shear ** ** phi_1 = p1 = 0 -> normal ** D, disp, p1, p2, rate 0.0, 0.00, 0.0, 0.0, 1.0 0.8, 0.03, 0.0, 0.0, 1.0 1.0, 0.05, 0.0, 0.0, 1.0 ** phi_1 = p1 = 1 -> shear ** D, disp, p1, p2, rate 0.0, 0.00, 1.0, 0.0, 1.0 0.5, 0.05, 1.0, 0.0, 1.0 1.0, 0.06, 1.0, 0.0, 1.0 ** ** ** D, disp, p1, p2, rate 0.0, 0.00, 0.0, 0.0, 2.0 0.8, 0.04, 0.0, 0.0, 2.0 1.0, 0.06, 0.0, 0.0, 2.0 ** phi_1 = p1 = 1 -> shear ** D, disp, p1, p2, rate 0.0, 0.00, 1.0, 0.0, 2.0 0.6, 0.04, 1.0, 0.0, 2.0 1.0, 0.05, 1.0, 0.0, 2.0 *Damage stabilization 0.01
Abaqus contains some powerful and easy to use features to predict the deformation response (including failure) of adhesives and bonded interfaces. Many of the more advanced features shown here only work with Abaqus/Explicit.
The main topic that I did not show here is how you can use MCalibration to quickly and accurately determine the cohesive parameters from traction-separation experiments. That will be discussed in a separate tutorial. Finally, you can download the examples that I used from the following link.