3. Abaqus standard/explicit


Read the General Usage section—it is relevant for use with Abaqus as well.

Menu items are printed Bold.


Building the model

Abaqus generally allows you to create your model by two methods, each having their advantages / disadvantages
Method Advantage Disadvantage
CAE GUI interface; design of complex shapes fewer functions
Text editor, etc. efficient; allows for parameterized input (easy case studies: what happens if I scale down by factor); good for regular meshes you have to think; cumbersome in 3D

Next to the text editor, many programs exist that output Abaqus .inp files. DAMASK places additional requirements that restrict the use of some of the efficient routines that the text editor allows.

Using CAE

Set up your model as you are used to. There are only a few points that are specific to DAMASK as outlined below.

Material definition

In the Material Manager choose Create... > General > User Material. Check the unsymmetric option. Select the material behavior as specified in the file material.config by specifying the first two Mechanical Constants:

  • Constant 1 selects the homogenization scheme to be used.
  • Constant 2 selects the microstructure.
You can define as many user materials as you want (need). Assign the materials to the respective elements (sections).

Solution dependent state variables (SDVs)

For user defined output you have to specify the correct numbers of SDVs. These are specified in Edit Material > General > Depvar. Specify the number of solution-dependent state variables. The easiest way to find the correct number is to use the debug.config file to set homogenization basic, start the simulation and kill it right after initialization. You can then find the number to use specified in the jobname.dat file as »maxSizePostResults«. However, there is an even more elegant way, namely:


The script abq_addUserOutput can be used to automatically add user defined output to the input file:

> abq_addUserOutput inputfile.inp

Optional parameters can be used to specify which exact information to use, see abq_addUserOutput.

Additional settings

In the Step Manager set Nlgeom ON for all steps.

For all temperature dependent constitutive models you have to set the temperature. This can be done as Predefined Field. This even applies when you are doing a purely mechanical simulation!

As DAMASK effectively only uses every second iteration you might want to change the maximum number of iterations. You can do this in the Step Module in the menu Other choose General Solution Controls > Manager.... In the new window choose the 1st step and Edit.... In the General Solution Controls Editor switch to the tab Time Incrementation and pick the first subtab called More finally here change the value for IC.

Also in the Step Module you can choose to output the SDVs via the Output > Field Output menu.

In the Job Manager > Create... specify the User subroutine file (either DAMASK_abaqus_std.f or DAMASK_abaqus_exp.f) in the General tab if you did not compile it into a library (see section Starting the simulation).

You may have to modify the extension of the subroutine file from .f to .for, if the operating environment is Windows.

With text editor or using other tools

You can certainly also write the input file by hand or use any other preprocessing tool to create it. In any case you have to make sure to use/activate all the features/options mentioned in the CAE section. Additionally you have to take care that all keyword value pairs (KEYWORD=VALUE) are written without spaces around the equal sign in accordance with the »Abaqus Keywords Reference Manual«. While the Abaqus input parser accepts this, the DAMASK input file parser does not allow spaces in this context!

General Abaqus input file HowTo

This tutorial only works with quite recent DAMASK versions.

Without the use of DAMASK, Abaqus input files might look like in the following tutorial. Lines that start with "**" are comments and are ignored by Abaqus; lines that start with "*" are commands; lines that are entirely empty are FORBIDDEN.

First give your problem a discription and define parameters. The usage of parameters are a benefit compared to the GUI usage, which does not have this feature. Parameters can only be used as reals: they define lengths, loads...; they cannot be used to identify node or element numbers. Parameters can be defined as function of other parameters.
My First Abaqus Input File
H_SIZE = 3.0
H_SIZE2 = H_SIZE/2.0
DISPL = H_SIZE/100000
Create 18 nodes for 4 3D elements, i.e. 3x3 nodes in two layers. Here the above parameters are used. Please note that DAMASK needs 3D coordinates for the FEM nodes and DAMASK needs 3D elements. Nodes are defined as "name, x, y, z". All the nodes belong to the group "N_AREA" in this example.
*node, nset=N_AREA
1, 0.0,        0.0, 0.0
2, <H_SIZE2>,  0.0, 0.0
3, <H_SIZE>,   0.0, 0.0
4, 0.0,        0.5, 0.0
5, 2.0,        0.5, 0.0
6, <H_SIZE>,   0.5, 0.0
7, 0.0,        1.0, 0.0
8, <H_SIZE2>,  1.0, 0.0
9, <H_SIZE>,   1.0, 0.0
10, 0.0,       0.0, 1.0
11, <H_SIZE2>, 0.0, 1.0
12, <H_SIZE>,  0.0, 1.0
13, 0.0,       0.5, 1.0
14, 2.0,       0.5, 1.0
15, <H_SIZE>,  0.5, 1.0
16, 0.0,       1.0, 1.0
17, <H_SIZE2>, 1.0, 1.0
18, <H_SIZE>,  1.0, 1.0
Define elements as "name, node1, node2, node3, node4, node5, node6, node7, node8". Remember the positive definition of nodes 1..4 and 5..6 and that nodes 5..6 are the back-plane of 1..4. These elements are of type "C3D8" eight-node elements in 3D and all elements belong to the group "E_AREA".
*element, type=C3D8, elset=E_AREA
1, 1, 2, 5, 4, 10, 11, 14, 13
2, 2, 3, 6, 5, 11, 12, 15, 14
3, 4, 5, 8, 7, 13, 14, 17, 16
4, 5, 6, 9, 8, 14, 15, 18, 17
Group some nodes into groups, these node groups ease the application of boundary conditions. Here the node groups "BOTTOM" and "TOP" are defined and the node names are specified.
*nset, nset=BOTTOM
1, 2, 3, 10, 11, 12
*nset, nset=TOP
7, 8, 9, 16, 17, 18
Define the material: first specify that all elements of group "E_AREA" (really all elemnts in this simulation) are of type steel. Then define the steel as isotropic elastic with Young's modulus and Poisson's ratio.
*solid section,material=STEEL,elset=E_AREA
*material, name=STEEL
*elastic, type=isotropic
182e3, 0.3
Define the boundary conditions by specifying the name of the node group and then the directions in which to constrain motion. In this example the motion of the BOTTOM nodes is constrained in the 1 direction= x-direction UNTIL the 3 direction=z-direction; this means also the 2 direciton=y-direciton is constrained. The TOP nodes are only constrained in the y-direction.
BOTTOM, 1, 3
TOP, 2
Define the load step by idenifying the maximum number of increments, the time-step at the beginning of the simulation (first 1.0) and the duration of the deformation (1.0).
*step, inc= 200
1.0, 1.0
Moving boundary conditions are similar to the fixed boundary conditions. Note that because we only want to defined the motion in the 1 direction=x-direction: we have to write "TOP, 1, 1, ..". The short-hand form of this is "TOP, 1,, ..." where Abaqus assumes that only one boundary condition is prescribed.
Request the output first as evolution of time (line graphs of x-y type) we want to know the displacement in the x-direction (u1) and the reaction force (rf1) of the top nodes, i.e. those that are displaced by the boundary conditions.
*output, history, frequency=10
*node output, nset=TOP
u1, rf1
Then define the distribution plot, i.e. the colorful contour plots: request all stresses (s), alle strains (e), and all displacements (u). Note that stresses and strains are defined for elemens, while displacements only exist for nodes.
*element output,elset=E_AREA
*node output, nset=N_AREA
Finally, end the load step. Since no other load-step follows, Abaqus knows that this is the last one.
*end step 

DAMASK Abaqus input file HowTo

Changes that have to be made to the input file in order to get DAMASK use the input file. The above example is used for this tutorial as well.

The element definition. NOTE: that DAMASK needs groups of elements. Therefore, the group definition is deleted from the element definition and a separate element group definition is given: create a group of elemens which start at the first element (1), run until the last element (4), and take every element in between (1).
*element, type=C3D8
1, 1, 2, 5, 4, 10, 11, 14, 13
2, 2, 3, 6, 5, 11, 12, 15, 14
3, 4, 5, 8, 7, 13, 14, 17, 16
4, 5, 6, 9, 8, 14, 15, 18, 17
*Elset, elset=E_AREA, generate
1, 4, 1

Define the material as conventionally done in DAMASK. Compare this to the previous example: only the elastic definition changes.
*solid section, material=STEEL, elset=E_AREA
*material, name=STEEL
*User Material, constants=2, unsymm

Change the load step definition. Use the nonlinear formulation (nlgeom=YES) which causes the stiffness matrix depend on the current configuration. Also redefine the time-steps: starting with a time-step of 0.1, simulate a deformation of 1.0. The minimum allowed timestep is 0.001, while the maximum allowed timestep is 1.0.
*step, nlgeom=YES, inc= 200
0.1, 1.0, 0.001, 1.0


Starting the simulation

Run Abaqus as usual and specify the location to the DAMASK-Abaqus UMAT:

> abaqus job=Job_sx-px user=DAMASK/src/DAMASK_abaqus_std.f interactive

Ensure that abaqus_v6.env with the required DAMASK definitions is in your working directory.

You can just start your simulations as you normally do, however, in this case the subroutine will be freshly compiled each time. Alternatively, you can build an Abaqus library (see instructions in the abaqus_v6.env file distributed with DAMASK).

When running a job with a pre-compiled version of DAMASK you should not specify a user subroutine file in the job definition. If you nevertheless do so, the newly compiled executable will be used instead of the library version (helpful for testing changes to the code).



Parallelization can speed up simulations significantly. With DAMASK you can use internal parallelization, however, using Abaqus parallelization is not supported.

Internally using OpenMP

DAMASK uses OpenMP for internal parallelization. You can then set the number of threads to be used by DAMASK via the environment variable $DAMASK_NUM_THREADS, e.g.

You need to set the variable before you start CAE when using the CAE version or before you start your simulation when using the text editor.



DAMASK does allow restarting a simulation. However, the only mode supported is 'last converged increment'. You have to specify the original job name as comment in the job definition of the restart file.
Topic revision: r30 - 12 Dec 2018, MartinDiehl

  • News
21 Jan 2019
DAMASK overview paper finally published with full citation information available
01 Dec 2018
DAMASK overview paper now online
17 Sep 2018
CMCn2018 & DAMASK user meeting to be hosted at Max-Planck-Institut für Eisenforschung
22 May 2018
Release of version v2.0.2
01 Sep 2016
CMCn2016 & DAMASK user meeting to be hosted at Max-Planck-Institut für Eisenforschung
25 Jul 2016
Release of version v2.0.1
08 Mar 2016
Release of version v2.0.0
22 Feb 2016
New webserver up and running
09 Feb 2016
Migrated code repository from Subversion to GitLab
17 Dec 2014
Release of revision 3813
14 May 2014
Release of revision 3108
02 Apr 2014
Release of revision 3062
16 Oct 2013
Release of revision 2689
15 Jul 2013
Release of revision 2555
15 Feb 2013
Release of revision 2174
13 Feb 2013
Doxygen documentation
16 Dec 2012
Powered by MathJax rendering
23 Nov 2012
Release of revision 1955
15 Nov 2012
Release of revision 1924
01 Nov 2012
Updated sidebar
30 Oct 2012
Significant website updates and content extensions

This site is powered by FoswikiCopyright by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding DAMASK? Send feedback
§ Imprint § Data Protection