Tutorial - Write A Simple UMAT in ABAQUS - Simplified Finite Elements
Tutorial - Write A Simple UMAT in ABAQUS - Simplified Finite Elements
Introduction
Although ABAQUS and many other commercial FE solvers have a substantial number of built in
material models which can be used for simulation but they still cant keep pace with the
advancements in the field of material science technology. UMATs, simply allow the user to include
their desired material behavior in simulation.
An example..
Consider two guys working in a workshop. They apply different loads on the spring and measure its
response under those loads.
Guy A stretches the spring by 2 cm. Now Guy B uses this info along with his knowledge about the
properties of spring to calculate the stresses inside the spring. He informs A about the state of the
spring. Now it’s A’s job to decide if the spring can be further stretched or not.
Replace Guy A with solver and Guy B with UMAT. This is a crude example of how a FE solver
interacts with a UMAT.
When you are using a simple spring then Guy B is good enough. For a fancy spring you need a
specialist (or UMAT).
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 1/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Tutorial
I just want to show how to get started with using/writing a simple umat in ABAQUS. So I have
selected one of the simplest possible examples for this purpose – A simple rectangular block.
The block is stretched in vertical direction and stresses are computed using umat. The block behaves
as an isotropic linear elastic material.
The word isotropic is derived from a Greek word. Isos means “equal” and tropos means “way”.
Here isotropic simply means that the properties of the material are same in all directions.
If you are holding a steel block and tap on one of its faces (Face 1). The sound wave will reach
the opposite face in time t1. Now tap on face 2 and face 3. Time taken by the wave to reach the
opposite ends in both cases is t2 and t3 respectively. If t1, t2 and t3 are equal, then the steel
block is isotropic for the property that is being measured – speed of sound in steel.
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 2/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Elastic simply means that when the material is unloaded, it will return to its original
(undeformed) state.
Hooke’s law is one of the most famous equations describing the relation between mechanical load
and deformation of a material.
Deformation = (How the material relieves the load by deforming) x (Load on the structure/material)
In Finite elements, the differential equations are solved in such a manner that we incrementally
deform the structure (i.e. apply displacement or strains) and compute the resulting forces generated
inside the material (i.e. stresses). Let’s shuffle the equation, so that we get stresses on the left hand
side. When “How the material relieves the load by deforming” is taken to the left hand side, it
becomes, “How the material resists deformation”. Hence Hooke’s law can now be wri en as,
Forces/Stresses generated inside the material = (How the material resists deformation) x Deformation
The second term in the above equation “(How the material resists deformation)” is called the stiffness of
the material. We need to input this stiffness in the form of a matrix in our umat. ABAQUS uses this
equation to compute the stresses inside the block for a given deformation. Lets try to build the
stiffness matrix intuitively. Suppose you have a marshmallow in your hand right now. Assign x, y
and z directions along any 3 perpendicular edges of the marshmallow.
(h ps://simplifiedfem.files.wordpress.com/2016/09/image.jpg)
So you can stretch the marshmallow in 3 different directions. Stretch in y direction. The marshmallow
will elongate in this direction. But it will also contract in x-direction. Why is that happening ? To
understand we need to look how at the atoms inside the marshmallow interact. Lets replace atoms by
our good friend Mr. Mueller and see what happens.
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 3/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/image-
2.jpg)
As you pull the middle column of Mr. Muellers in y-direction. The columns on either side also
experience an effect of this pull. They get dragged towards the middle column (i.e. deformation in x
direction) and also along the direction of the pull (y-direction). This happens because all the columns
are connected to each other.
(h ps://simplifiedfem.files.wordpress.com/2016/09/la ice_xy.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/la ice_yz.jpg)
Hence a pull in y-direction will result in a deformation not only in y-direction. But also along x-
direction. And for a 3D object, in z-direction as well. Similarly a pull in x or z direction will result in
deformation along the pull and the other two perpendiculars directions
Our purpose is to build a stiffness matrix. Which defines the resistance of the body in different
directions. We have 3 directions and each direction generates a response in all 3 directions. Hence we
have a total of 9 (3×3) responses. So the stiffness matrix [C] should include 9 resistance values.
Components of [C]
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 4/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Assume I have some fluid in a container. It can be either a gas or a liquid.If I tell you that the fluid
inside the container is Nitrogen and its pressure is 2 atm. Can you decide which state is Nitrogen in ?
No. You need the value of another independent state variable (like pressure). You need the
temperature of the fluid. Using these two state variables (temperature and pressure) you can find out
which state Nitrogen is in.
Similarly for our case (isotropic linear elastic material) we need two independent material parameters
to define the state of the material. We need one constant that measures the resistance offered by Mr.
Mueller la ice in the direction of load. And one constant that measures how much is the la ice
dragged sideways for a vertical (perpendicular) load. The former is called Young’s modulus (E) and
later Poisson’s ratio (v).
The final form of the matrix is further simplified by various assumptions, which are not relevant for
our discussion here.
Now Hooke’s law in the form of these two elastic constants is,
(h ps://simplifiedfem.files.wordpress.com/2016/09/201609112136133.png)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 5/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Its time to enter this equation in the UMAT. A sample Umat ( Link
(h p://abaqus.software.polimi.it/v6.14/books/sub/default.htm) ) is shown below. Its coded in Fortran.
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
4 JSTEP(4)
RETURN
END
Refer to ABAQUS help, if you want to know about all the arguments in this sample UMAT. Here we
will only use DDSDDE, STRESS and DSTRAIN.
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 6/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
4 JSTEP(4)
C ELASTIC USER SUBROUTINE
PARAMETER (ONE=1.0D0, TWO=2.0D0)
E=PROPS(1)
ANU=PROPS(2)
ALAMBDA=E/(ONE+ANU)/(ONE-TWO*ANU)
BLAMBDA=(ONE-ANU)
CLAMBDA=(ONE-TWO*ANU)
DO I=1,NTENS
DO J=1,NTENS
DDSDDE(I,J)=0.0D0
ENDDO
ENDDO
DDSDDE(1,1)=(ALAMBDA*BLAMBDA)
DDSDDE(2,2)=(ALAMBDA*BLAMBDA)
DDSDDE(3,3)=(ALAMBDA*BLAMBDA)
DDSDDE(4,4)=(ALAMBDA*CLAMBDA)
DDSDDE(5,5)=(ALAMBDA*CLAMBDA)
DDSDDE(6,6)=(ALAMBDA*CLAMBDA)
DDSDDE(1,2)=(ALAMBDA*ANU)
DDSDDE(1,3)=(ALAMBDA*ANU)
DDSDDE(2,3)=(ALAMBDA*ANU)
DDSDDE(2,1)=(ALAMBDA*ANU)
DDSDDE(3,1)=(ALAMBDA*ANU)
DDSDDE(3,2)=(ALAMBDA*ANU)
DO I=1,NTENS
DO J=1,NTENS
STRESS(I)=STRESS(I)+DDSDDE(I,J)*DSTRAN(J)
ENDDO
ENDDO
RETURN
END
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 7/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Save this UMAT in the form a Fortran file. For instance as test_umat.for.
The path to this file will be later entered in the Abaqus Job Settings.
ABAQUS Model
Part
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
137.jpg)
Property
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 8/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-125.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-122.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
146.jpg)
Section
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 9/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-172.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
175.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
176.jpg)
Assign section
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-182.jpg)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 10/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-183.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
181.jpg)
Assembly
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-150.jpg)
Step
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 11/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
151.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
152.jpg)
Loads
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
153.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
154.jpg)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 12/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
157.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
159.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
160.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
161.jpg)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 13/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-164.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
165.jpg)
Mesh
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
166.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
167.jpg)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 14/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
168.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-169.jpg)
Jobs
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
131.jpg)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 15/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-132.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
133.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
179-2.jpg)
Results
(h ps://simplifiedfem.files.wordpress.com/2016/09/umat_output.png)
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 16/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
Now we can tweak some parameter inside the UMAT to see how it affects the results. If you increase
the resistance of the material to deformation, then the stresses generated inside the material will also
increase. In our case we will just double the resistance. Don’t forget to save the Fortran file. If you
save with some other name then change the name of the UMAT file in ABAQUS as well.
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 17/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
1 RPL,DDSDDT,DRPLDE,DRPLDT,
2 STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME,
3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,
4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,JSTEP,KINC)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION STRESS(NTENS),STATEV(NSTATV),
1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
3 PROPS(NPROPS),COORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3),
4 JSTEP(4)
C ELASTIC USER SUBROUTINE
PARAMETER (ONE=1.0D0, TWO=2.0D0)
E=PROPS(1)
ANU=PROPS(2)
ALAMBDA=E/(ONE+ANU)/(ONE-TWO*ANU)
BLAMBDA=(ONE-ANU)
CLAMBDA=(ONE-TWO*ANU)
DO I=1,NTENS
DO J=1,NTENS
DDSDDE(I,J)=0.0D0
ENDDO
ENDDO
DDSDDE(1,1)=(ALAMBDA*BLAMBDA)
DDSDDE(2,2)=(ALAMBDA*BLAMBDA)
DDSDDE(3,3)=(ALAMBDA*BLAMBDA)
DDSDDE(4,4)=(ALAMBDA*CLAMBDA)
DDSDDE(5,5)=(ALAMBDA*CLAMBDA)
DDSDDE(6,6)=(ALAMBDA*CLAMBDA)
DDSDDE(1,2)=(ALAMBDA*ANU)
DDSDDE(1,3)=(ALAMBDA*ANU)
DDSDDE(2,3)=(ALAMBDA*ANU)
DDSDDE(2,1)=(ALAMBDA*ANU)
DDSDDE(3,1)=(ALAMBDA*ANU)
DDSDDE(3,2)=(ALAMBDA*ANU)
DO I=1,NTENS
DO J=1,NTENS
STRESS(I)=STRESS(I)+TWO*DDSDDE(I,J)*DSTRAN(J)
ENDDO
ENDDO
RETURN
END
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 18/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-180.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
135.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/screenshot-
179.jpg)
(h ps://simplifiedfem.files.wordpress.com/2016/09/umat_output_2.png)
Here you can see that stress has doubled. This is because we have kept the loads (elongation) same
but doubled the resistance (2*DDSDDE).
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 19/20
21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements
P.S. UMATs can do much more complicated stuff than just updating the stresses. So the spring
analogy discussed above will not always hold
References
1. UMAT Configuration
1. h ps://www.youtube.com/watch?v=ImWUFZAKlr4 (h ps://www.youtube.com/watch?
v=ImWUFZAKlr4)
2. Abaqus Documentation
1. h p://abaqus.software.polimi.it/v6.14/ (h p://abaqus.software.polimi.it/v6.14/)
Blog at WordPress.com.
https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 20/20