Fig1. – Scheme of the problem.

Fracture simulation with cohesive elements.

The main goal of this tutorial is to model a crack propagation with extrinsic cohesive elements. The problem can be summarized using the Fig.1.
Please download the archive containing the different file to use for this tutorial:

Exercise 1: Solving a sharp crack tip problem with linear elasticity.

  1. Read the material properties using the file “material.dat”
  2. Understand the problem using the geometry on Fig. 1 and the file “plate.geo”.
  3. Go to the code in “” and read the “main()” function. How the mesh is created ? What are its properties ?
  4. Read the function “solve()”. What is the type of model used ? How the boundary conditions are defined ?
  5. Run the code and observe the results using Paraview:
    • To run the code open a new terminal and deplace yourself to the folder where the program is with
      the following command “cd /Documents/”. Once you are in the right folder, run the program
      with “python3”.
    • In Paraview, you will need to open the file “plate_0000.pvtu” (the plate is added to the pipeline)
      and then click on the “apply” button :
    • Paraview1
    • You will see the plate on the “render view” panel. You have to click on the “warp by vectors” botton:
    • Paraview2
    • A new element is added to the pipeline, you now need to click on the “apply” button again. You can visualize the stress, strain and other elements by clicking on the button pointed by the red arrow on the next figure:
    • Paraview3
  6. Try to observe the blocked boundaries and where the traction is applied. The button “play” pointed by the green arrow will be used in the case of a dynamic propagation of the crack.

Exercise 2: Regularization of the problem with cohesive element insertion.

  1. Open “”. And go to the main function.
  2. You will observe that we changed the material file to “material-cohesive.dat”.
  3. Open the new material file in an editor and try to understand it.
  4. Go back to the Python file and find the changes made in the function “solve()”. As you will see the model has changed to a cohesive one. Try to understand what is being done from the line 140 to the end of the function “solve()”.
  5. Run the program with the command “python3”.
  6. Open Paraview and then open the files “plate_..pvtu”.
  7. Observe the results using paraview. Use the same procedure than in the first exercise. Click on the “play” botton to observe the crack propagation. If you want to observe the stress you will need to click on the “rescale by data range” button.
  8. Why the crack seems to reach an equilibrium ? (It doesn’t propagate anymore).

Exercise 3: Dynamic propagation.

  1. Open the last Python file “”.
  2. Observe the differences with the previous program. What type of condition is applied on the top boundary during the dynamic solving.
  3. Run the program with “python3” and observe the results using Paraview.
  4. Measure the crack speed using Paraview.
  5. Observe the cohesive elements: open the files “cohesive_..pvtu” and repeat the same procedure as in the first exercise.
  6. Color the cohesive elements by damage. To only see the cohesive elements you can click on the eye just beside the plate in the pipeline to make it disappear.
  7. Fix a threshold on the cohesive elements to visualize only the elements with a damage less than 0.9.
  8. Try to constraint the insertion of cohesive elements by defining a different bounding box in the material file. Run the program and observe the changes in Paraview.
  9. You can now go back to the Python file and try to change the boundary conditions. The boundaries of the plate are defined by the following identifiers: “top”, “bottom”, “left” and “right”.