0% found this document useful (0 votes)
166 views20 pages

Tutorial - Write A Simple UMAT in ABAQUS - Simplified Finite Elements

The document provides a tutorial on writing a simple user material (UMAT) subroutine in ABAQUS. It explains that a UMAT allows a user to define custom material behavior in a simulation. As an example, it describes writing a UMAT to model an isotropic linear elastic material. The UMAT calculates stresses for a given deformation based on Hooke's law, using Young's modulus and Poisson's ratio to define the material properties. Sample Fortran code for a basic UMAT subroutine is included.

Uploaded by

Lucas Carvalho
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
166 views20 pages

Tutorial - Write A Simple UMAT in ABAQUS - Simplified Finite Elements

The document provides a tutorial on writing a simple user material (UMAT) subroutine in ABAQUS. It explains that a UMAT allows a user to define custom material behavior in a simulation. As an example, it describes writing a UMAT to model an isotropic linear elastic material. The UMAT calculates stresses for a given deformation based on Hooke's law, using Young's modulus and Poisson's ratio to define the material properties. Sample Fortran code for a basic UMAT subroutine is included.

Uploaded by

Lucas Carvalho
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

21/08/2018 Tutorial: Write a simple UMAT in ABAQUS – Simplified Finite Elements

Simplified Finite Elements

Tutorial: Write a simple UMAT in ABAQUS

Introduction

UMAT stands for User Material.

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.

What does Isotropic linear elastic mean ?

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.

Lets start writing the UMAT….

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]

Resistance in x direction due to loads (like a pull) in x Cxx


direction

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

Resistance in x direction due to loads (like a pull) in y Cxy


direction

Resistance in x direction due to loads (like a pull) in z Cxz


direction

Resistance in y direction due to loads (like a pull) in x Cyx


direction

Resistance in y direction due to loads (like a pull) in y Cyy


direction

Resistance in y direction due to loads (like a pull) in z Cyz


direction

Resistance in z direction due to loads (like a pull) in x Czx


direction

Resistance in z direction due to loads (like a pull) in y Czy


direction

Resistance in z direction due to loads (like a pull) in z Czz


direction

What will be the values for the constants in [C] matrix ?

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)

user coding to define DDSDDE, STRESS, STATEV, SSE, SPD, SCD


and, if necessary, RPL, DDSDDT, DRPLDE, DRPLDT, PNEWDT

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.

DDSDDE Jacobian or Stiffness matrix of the


material
STRESS Stress tensor matrix
STRAIN Strain tensor matrix
The STRAIN matrix is provided as an input to the UMAT. UMAT then updates the STRESS matrix
(using DDSDDE and STRAIN matrices) and returns it as an output.

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

Element Type: C3D8R

(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/)

3. Solid Mechanics in Engineering by Raymond Parnes

Blog at WordPress.com.

https://simplifiedfem.wordpress.com/about/tutorial-write-a-simple-umat-in-abaqus/ 20/20

You might also like