Cohesive Element Modeling in Abaqus


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 relatively simple to do once 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 *Elastic command.
  • Using criterion=maxs you can specify the traction values for the onset of damage accumulation for the normal and shear directions.
  • Here I used a simple linear *Damage Evolution option. 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


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


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
*Contact Pair, interaction=coh,

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
*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
*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
Traction separation response at two different deformation rates.

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


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.


More to explore

Simple Shear

In large deformations, simple shear is not so simple. This article describes how to properly test and analyze shear behavior.

4 thoughts on “Cohesive Element Modeling in Abaqus”

  1. Chun Jen Hsueh

    This is a great post on clarifying and validating Abaqus cohesive behavior. Really like it!

    I have a quick question. In the figure of example 4, I don’t understand why we have the cohesive element and thick cohesive element curve and surprisingly both of them are having the same traction separation curve?


  2. I want to let everyone know that I fixed an error in Example 5, and that I updated the zip-file that contains the abaqus inp-files. Let me know know if you find any other issues.
    Thanks, Jorgen

  3. Dear Jorgen Bergstrom,

    Thank you very much for the great explanation for cohesive modeling. I would like to ask about the fracture energy that is the second approach for the damage evolution. I know that the fracture energy G is the dissipated energy so the area under the stress strain curve between damage initiation and failure. (from the Abaqus manual section 24.2.3, progressive damage evolution). When I am learning about the cohesive modeling, in many resources the fracture energy is calculated from the full area under traction-separation curve. Isn’t it the area between the damage initiation and failure so in your explanation here, the area under the triangle where the damage evolution is represented?


  4. Shubham Mishra

    If it is going to be addressed what I’m going to ask. I’m a student and new to CZM. I’ve been trying to reproduce results from one of research paper. I failed to do so as the plots I got are not matching with plots given in research paper.
    While surfing thru internet for articles on this subject, I landed here fortunately. I found prepared models and solved the very first example given here.
    First, I plotted Force vs Disp curve thru node 31. The displacements were correct but Reaction Force was somewhere 22.5.
    Then I realized how it’s only RF being experienced at node 31. Hence I used following command to plot results.
    For Reaction Force :- sum (( A,A,..)
    For Disp. :-maxEnvelope((A,A,..)
    The combined plot was matching after this.
    Q1. Is it correct what I’ve done?
    Q2. Can you help me clear my understanding about CZM modelling in Abaqus?
    Any help is appreciated,

Leave a Comment