Here our focus is on UMAT, an advanced subroutine we use to include desired material behavior in simulations. However, the use of this subroutine generally requires considerable expertise.

In this step-by-step guide, I just want to show how to get started with using/writing a UMAT in Abaqus by one of the simplest possible examples for this purpose, an elastic material.

First, I strongly recommend reading this article first to get familiar with the process of writing a subroutine in Abaqus:

Start Writing a Subroutine in Abaqus: Basics and Recommendations

UMAT stands for User MATerial. Remember, we use UMAT when none of the existing material models included in the ABAQUS material library accurately represents the behavior of the material to be modeled.

**What does a UMAT for Abaqus do?**

Obviously, the philosophy behind UMAT subroutine is that the material model developer should be concerned only with the development of the material model and not the development and maintenance of the FE model.

Referring to the article How to start writing a subroutine (Section 3), you can see we use a UMAT in the stress calculation step.

So, the main output of a UMAT subroutine is stress tensor. In the process, Abaqus also need defining of the (consistent) Jacobian to continue its incremental scheme.

Generally, to write a newly developed UMAT, you should follow these steps:

(Since we assumed this is the first time you start writing a UMAT, we start from the simplest one and present our step-by-step example in a pure elastic material, precisely called an isotropic linear elastic material model. For more advanced material models (plasticity, failure, element removal, brittle materials, etc. I refer you to UMAT Subroutine (VUMAT Subroutine) introduction package)

**1. Knowing well the material model theory for our UMAT**

You should master all the aspects of the constitutive model for your material. In this step, the material model is represented in concise mathematical equations.

### EXAMPLE: Isotropic Linear Elastic Material (Theory)

**Isotropic** simply means the properties of the material are same in all directions. And, **Elastic** simply means that when the material is unloaded, it will return to its original (undeformed) state. In addition, **Linear** means that the relation between mechanical load and deformation of a material can be described by **Hookeâ€™s law**. In a stress-strain literature we can state Hookâ€™s law as:

**Stress = [Constant] Ã— Strain**

For our case (isotropic linear elastic material), we need two independent material parameters to define the state:

**1.** Constant that measures the resistance in the direction of load **Â»** **Youngâ€™s modulus** (**E**)

**2.** Constant measures how much the material is dragged sideways for a vertical (perpendicular) load **Â»** **Poissonâ€™s ratio** (** v**).

Eventually, Hookeâ€™s law in the form of these two elastic constants is,

And that is enough for writing our simple subroutine. The matrix **C** is the proportional factor that convert strain to stress. It is called stiffness matrix, i.e. how the material resists deformation.

You can see more details about the theory and equations in Workshop 1: Writing UMAT Subroutine for Isotropic Isothermal Elasticity of our UMAT training package:

**Have you started simulation in Abaqus recently?** I recommend you download these free tutorials here! Â FREE ABAQUS TUTORIALÂ Â

**2. ****Getting Familiar with UMAT parameters (Inputs/Outputs)**

We should restate our material model in UMAT language. So, you need to understand parameters name and their structures (are they scalar, vector or matrix? their dimension?).

As we talked in the article How to start writing a subroutine, the first step in writing any subroutine will be referring to the Abaqus Documentation. Therefore, you should find the UMAT section and review the guide to have a know-how of UMAT parameters.

Here, in a most general way, I sort all parameters for a UMAT in 4 distinguished groups:

**A.** Parameters that are available by Abaqus to our UMAT

You can see all the parameters passed into UMAT in the documentation. The most important and practical ones are:

**Reminder ………………………………………………………………………………………………………………………….**

In FORTRAN, we define **scalars** as single names, like ALPHA, SDV, etc. **Vectors** are defined by a name and their dimensions, like DMGQ(3), STRE(5), etc. For 2D **matrices**, the No. of rows and columns should be clarified when defining these variables: STRM(6,6), DDSDDL (4,4), â€¦

**…………………………………………………………………………………………………………………………………………**

#### 1) NTENS

This is the size of the stress or strain component array and reflects the overall dimension of the Abaqus model into UMAT. For example, that is 6 for a general 3D and 4 for a simplified plane strain (2D) model.

In the stress and strain arrays and in the DDSDDE (discuss soon), direct components are stored first, followed by shear components. There areÂ NDIÂ direct andÂ NSHRÂ engineering shear components. So,

**NTENS = NDI + NSHR**

#### 2) STRESS(NTENS)

A vector form of stress tensor at the start of increment.

It has NTENS elements. For a general 3D model, we need 6 values for stress (3 normal and 3 shear) so this vector will have 6 elements.

#### 3) STRAN(NTENS), DSTRAN(NTENS)

STRAN is a vector form of strain tensor at the start of increment. DSTRAN is the increment (variation) of strain ( ).

#### 4) TIME(2), DTIME

Respectively, total and incremental values of time. TIME is a 2-element vector; the first element, i.e. TIME(1) states the value of step time and the second, i.e. TIME(2), is the value of total time, both at the beginning of the current increment.

**Note.** There are many other variables that Abaqus pass into UMAT and were not discuss here, like **COORDS** (An array containing the coordinates of the point of calculation). According to your material, you may need to use them either. For example, if you are working on a FGM (Functionally Graded Material: material whose properties change gradually with respect to its dimensions) you need to use COORDS(3) parameter too.

### B. Parameters must be calculated and updated by UMAT(outputs)

In a simple UMAT, these parameters are

**1)** STRESS(NTENS)

A vector form of stress tensor with **NTENS** elements. The dimension (NTENS) comes from the dimension of the model. For a general 3D model, we need 6 values for stress (3 normal and 3 shear) so this vector will have 6 elements.

At the first, **STRESS** is the stress tensor at the beginning of the increment. Then, we update it as the stress tensor at the end of the increment.

#### 2) DDSDDE(NTENS,NTENS)

A 2D format of **Jacobian** matrix with **NTENS** row and **NTENS** column.

For small-deformation problems (e.g., linear elasticity) or large-deformation problems with small volume changes (e.g., metal plasticity), the consistent Jacobian can be calculated as:

Where, **âˆ†Ïƒ** is the increment in (Cauchy) stress and **âˆ†Îµ** is the increment in strain.

As you may guess, calculation of the consistent Jacobian can be the main challenge in writing a UMAT.

## Read more

You must log in to read the rest of this article. Please log in or register as a user.

Excellent article! We will be linking to this particularly great article on our website. Keep up the great writing. Kanya Waite Longo

Really informative blog article. Really thank you! Cool. Kattie Lorenzo Harwin

You made some nice points there. I looked on the internet for the subject matter and found most individuals will agree with your site.

Hello! I could have sworn Iâ€™ve been to this blog before but after browsing through some of the post I realized itâ€™s new to me. Anyways, Iâ€™m definitely happy I found it and Iâ€™ll be book-marking and checking back frequently!

i like this fabulous article

Simply want to say your article is as astounding. The clearness to your post is

simply spectacular and i could think you’re an expert on this subject.

Fine with your permission allow me to grasp your

feed to stay up to date with approaching post. Thank you 1,000,000 and please carry on the

rewarding work.

i like this best suited article

I believe you have mentioned some very interesting points, thanks for the post.

If you wish for to grow your familiarity simply keep visiting this web page and be updated with the hottest news posted here.

Hello! I could have sworn Iâ€™ve been to this blog before but after browsing through some of the post I realized itâ€™s new to me. Anyways, Iâ€™m definitely happy I found it and Iâ€™ll be book-marking and checking back frequently!

Thanks for finally talking about > Start Writing Your 1st UMAT for Abaqus (PART A:

Foundation) < Loved it!

I read a great article with pleasure, I hope it will continue