How to create a user material?

Hello everyone,

I would like to create a user material. The Calculix help is relatively short on info on this topic and seems to assume that the user knows how to create a user material in Abaqus. Since I have never used Abaqus, nor have I ever created my own material law (in other software), I would like to know where I can learn the basics.

Specifically, I would first like to know how the procedure works in general.

  • What should the files be named, and where should they be placed?
  • Are they pure text files, or need they to be compiled, if so, which compiler do i need?
  • What is the syntax of the file? The Calculix help gives variables, but does not describe how they can be used.

In both Abaqus and CalculiX you have to code a Fortran subroutine named UMAT. It’s not so easy (not as hard as creating user elements) but still requires quite a lot of work to properly define the mechanical constitutive behavior. In CalculiX documentation there is a description based on the example of Drucker-Prager model. Keyword syntax is also given there:


assuming 4 constants and 2 internal variables.


there’s available in paper for some detail examples of UMAT (CalculiX),

On finite element implementation of cyclic elastoplasticity: theory, coding, and exemplary problems (Cyprian Suchocki, 2022)

also, the code can be use or modify under GPL.


1 Like


first of all thank you for the two examples. Especially the paper by Suchocki will serve me well later.

But actually this is already a step further than the state I’m currently at. At first, it was less about the concrete implementation, but rather about how I can create a UMAT.

I figured out that I have to compile CalculiX myself, is that true? If so, where can I find a guide for Windows?

If this worked, how must the UMAT file look like (fortran syntax?) and in which directory must I put it, so that it is compiled?

Thanks again for previous help.

Here’s a quote from the documentation:

To use a user subroutine, replace the dummy routine in the CalculiX distribution by yours (e.g. dflux.f from the distribution by the dflux.f you wrote yourself) and recompile.

Take a look at the umat.f file in the source code.

Thank you very much, I will give it a try. Now I have to collect all dependencies and find the right compiler.

1 Like