Tag Archives: Abaqus/Explicit

Coding subroutines in Abaqus

If you are an advanced Abaqus user, I am sure you have heard a word which some people try to avoid at all costs: subroutines. Today, I write about them as well as about my recent experience coding one for my research.


First of all, lets start with the main question: what is a subroutine? It is a script that, when run in parallel with the Finite Element (FE) model, allows users to request features which are not defined by default in the commercial software Abaqus. This FE package recognises a lot of different types of subroutines for both implicit and explicit simulations, depending on the information that we want to include, recalculate, modify, request… In other words, subroutines are useful when we want something that is not already available within the software and we need it in order to produce acceptable results.

Consider, for instance, that we were trying to simulate the response of a certain material, but the material model which was available in Abaqus did not quite reproduce the correct behaviour. What could we do then? The first option would be to contact Dassault Systemes to ask if they had any kind of expansion (with its corresponding extra cost, not too many things are given for free these days I’m afraid); sometimes, since a lot of users request the same thing, it is the company itself the one that creates the official subroutine. This option would save time and effort, but it would also affect our wallet. The second option would be to create a new material model from scratch. How could we do that? Well, we would need to code a UMAT (implicit) or a VUMAT (explicit) subroutine. In order to do so, we would need to learn how to code in Fortran, which is the only language supported by Abaqus (I know, this is a bit of a pain since Fortran is basically obsolete, but hey! It’s always good to learn something new!). We would also need to install two compilers and link them to the FE package, which once again is not straight forward (don’t worry, I’ll try to write another post to explain this). Some people might say that giving up would be the third option, but to me that attitude would be unacceptable, so don’t you dare! Read more

D is for “Ductile Damage”

The FEA dictionary is back and it’s time for letter D! Today I will introduce you to one of the methods to introduce damage in your material models.


Although it was created based on the failure of metals, this damage model can be used to introduce the degradation of mechanical properties for other types of materials. This option is available in Abaqus/Standard and Abaqus/Explicit and it requires the definition of the ideal elastic-plastic behaviour of the material, a damage initiation criterion and a damage evolution response. Please note that if any of the requirements cited before is not defined, the material properties will not be degraded.

In Abaqus there are different options for the damage initiation criterion and basically they can be classified as follows:

  • Criteria for fracture of metals (ductile and shear).
  • Criteria for necking of sheet metal.

Read more

B is for “bar” and “beam” elements

New post about FEA! In this occasion, I bring you some theoretical background for two types of elements which are very useful for modelling certain structures: bars and beams.


Let’s start from the beginning. A bar is basically an element which can resist only axial loading. Therefore each of its nodes has one degree of freedom, i.e. a displacement along the longitudinal axis of the element. On the other hand, each node of a beam presents not only one but three degrees of freedom: displacement in the longitudinal axis, displacement in the transverse direction and rotation.

As you should already know, Finite Element Analysis requires the a stiffness matrix (K) so, in order to illustrate this, in this post I will show you how the K matrix can be derived for bar elements. Note that the process for obtaining the stiffness matrix of a beam element is similar but a bit more tedious.

Read more

A is for Abaqus

Happy New Year everyone! After a well deserved Christmas break I’m back with some more engineering topics. In this occasion I want to introduce a new series of brief posts about Finite Element Analysis. The idea is to cover one topic for each letter of the alphabet (i.e. from A to Z). Let’s get started!


Motivated by the “A-Z Challenge” that I followed for the first time thanks to Dr David Jesson, the idea of doing something similar has been growing in my head for some time. However, in this case I won’t be writing a post every day but, hopefully, once a week a new one will be published.

I had some doubts about the topic, but after meeting some of the members of the Formula Student Team of the University of Seville (Spain), I thought it would be a great idea to do some kind of simple Finite Element guide. In particular, this guide will be focused on the commercial package Abaqus. Some of you might be wondering why I’ve chosen this particular software, and the reason is pretty obvious: it is one of the most used FE packages in industry and loads of students struggle to understand how it works, especially if their first experience with FEA involved Ansys. Don’t get me wrong, I started using Ansys as well and I don’t want to give the impression that I have a problem with it. The thing is though, that a lot of people tend to learn how to model things in Ansys by heart and because of that, they won’t be able to reproduce the same models in other packages.Capture

Read more