Professional Documents
Culture Documents
This work is licensed under the Creative Commons Public Domain Mark 1.0
License. To view a copy of this license, visit
http://creativecommons.org/publicdomain/mark/1.0/
Especially note that: Affirmer offers the Work as-is and makes no representations or warranties of any
kind concerning the Work, express, implied, statutory or otherwise, including without limitation
warranties of title, merchantability, fitness for a particular purpose, non-infringement, or the absence of
latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
Please let me know if any of the information below is outdated or you would like to add something.
Please also note that I cannot help you with obtaining any of the below-mentioned software.
1. Workflow Windows
1.1. What you need
A dyna version suitable for making UMATs: currently I’m using
ls-dyna_smp_d_R11_1_0_ifort2017vs2017_lib
Visual Studio 2017 Community Version 15.9.27.
Intel Fortran Compiler: I currently use Intel Parallel Studio XE 2017 with Intel
Fortran Compiler 17.0.
Optional: LS-Run
Please note that other versions or combinations of versions might also run. If you have
trouble finding the right combination of Compiler, Visual Studio etc., it is probably a good
idea to contact the LS-Dyna support.
1.2. Step by step
i. Unzip your dyna version to the file location where you want to run the calculations.
ii. Install Visual Studio. Other versions than the above-mentioned might not work (.e.g.
community, express, etc). During the installation you can select several additional
features. They are not necessary for the compilation of LS-Dyna.
iii. Install the Intel Fortran Compiler. During the installation process from the compiler, it
should be recognized that Visual Studio is already installed. If this is not the case, help can
be found here:
https://software.intel.com/content/www/us/en/develop/articles/troubleshooting-fortran-
integration-issues-with-visual-studio.html
iv. Now you are ready to compile your own executable file.
Open Start->All Programs->Intel Parallel Studio XE 2017-> Compiler 17.0 Update 8 for Intel
64 Visual Studio 2017 environment
Change directory to the folder, where you unzipped the ls-dyna_smp package
-> cd C:\...\...\...
Make the executable:
-> nmake
v. Check if your freshly compiled executable is working:
Either use LS-Run (open the .k - keyfile in LS-PrePost > File > Run LS-DYNA), or the
manager.exe, make sure to choose the correct executable and keyfile. I recommend
starting with a basic keyfile without UMATs.
vi. If you want to run a keyfile with UMATs, modify dyn21.f with your UMAT. Compile again
(nmake). Run the simulation. From here on it’s rinse and repeat – every time you change
your UMAT in dyn21.f you have to compile a new executable.
You can find information on user defined material models in Appendix A of the Keywords manual from
LS-Dyna, some additional information can be found in [1].
Generally, the subroutine runs on integration point level. The most important inputs are the stresses of
the previous time step and the strain increments in the current time step. The routine expects an update
of the stresses to the current time step. The stresses and strains at the beginning and end of the routine,
respectively, are given as vectors, similar to Voigt Notation. Inside LS-Dyna, the notation is as follows. If
the stress tensor is
𝜎11 𝜎12 𝜎13
𝝈 = [𝜎12 𝜎22 𝜎23 ]
𝜎13 𝜎23 𝜎33
the stress vector is 𝜎 = [𝜎11 𝜎22 𝜎33 𝜎12 𝜎23 𝜎13 ]T. Therefore
c sig(1)=local x stress
c sig(2)=local y stress
c sig(3)=local z stress
c sig(4)=local xy stress
c sig(5)=local yz stress
c sig(6)=local zx stress
Other inputs are the material constants cm(1..n). You can set these values in the material model of your
keyfile and access them in the subroutine via cm(1..n). Additionally, you can use history values
hsv(1..n) to access parameters or values you calculated in the time steps before the current time step,
e.g. to calculate an accumulated damage value. The history variables should also be updated to the
current time step. Don’t change the included nlqparam file. Everything besides the history variables and
other objects the subroutine initializes by default is not accessible outside the subroutine and will possibly
be deleted or overwritten at the end of each time step.
Besides programming the UMAT routine you have to implement your material model in your key file. This
is done through the keycard “MAT_USER_DEFINED_MATERIAL_MODELS”.
RO is the density. MT is the number of the material model in the dyn21.f file. LMC is the length of the
material constants array, NHV the number of history variables. The material constants are set in a matrix
with 8 columns (P1 – P8) and an arbitrary number of rows. However, they are accessed as a vector,
counting from 1 to n, e.g. the material constant set in the second row of the matrix in column P8 is
accessed as cm(16). You always have to set at least a bulk modulus as well as a shear modulus in the
material constants array and give their position in the cm(1..n) array under IBULK and IG.
Vectorized material subroutines follow the same principles as the scalar versions, except that the variables
are accessed a little differently. A loop over all integration points in the block of length nlq is required.
do i = lft,llt
…
enddo
Within that loop, all variables are additionally accessed through the iteration variable i. For example, if
you use a Boolean flag ifail for failure or no failure of an integration point, this simply changes to
ifail(i). Likewise, stresses are accessed via sigX(i) with X=1 … 6.
2.3. User defined cohesive models
User defined cohesive models follow similar principles as the user defined materials. They can also be
coded in scalar and vectorized versions. The user defined cohesive subroutine receives the difference of
displacements and velocities, respectively, of the upper and lower surface of the cohesive element. As
output, tractions and an upper bound for element stiffness is expected. See also Appendix R of the LS-
Dyna manual. They are edited in the dyn21b.f file.
Hence, the key inputs are the separations dx(i, 1 … 3) and the minimal output comprises the tractions
in three directions fc(i, 1 … 3) and the maximum stiffness for the time step calculation ek(i). Again,
vectorized through the iteration variable i.
You can find an example of a simple user defined cohesive model in the appendix below.
Here is an example of a user defined cohesive model, which is based on [2]. The same material model is
available in the LS-Dyna material library, number 138.
c***********************************************************************
subroutine umat44c(idpart,cm,lft,llt,fc,dx,dxdt,aux,ek,
& ifail,dt1siz,crv,nnpcrv,nhxbwp,cma,maketan,dsave,ctmp,elsiz,
& reject,ip,nip,x) ! x (last argument) added to match umatc
subroutine call umat44c(idpart, ...., dm_x)
c
c User defined cohesive model. Last worked on 11.2018.
c Leon Kellner, leon.kellner@tuhh.de
c Source: Dávila, C.; Camanho, P. (2001): Decohesion Elements using Two and
c Three-Parameter Mixed Mode Criteria. In: American Helicopter Society
Conference.
c Williamsburg, VA, 2001.
include 'nlqparm'
include 'iounits.inc'
common/aux33loc/ix1(nlq),ix2(nlq),ix3(nlq),ix4(nlq),ix5(nlq),
& ix6(nlq),ix7(nlq),ix8(nlq),mxt(nlq)
C_TASKCOMMON (aux33loc)
return
end
References
[1] T. Erhart, “An Overview of User Defined Interfaces in LS-DYNA,” in 8th European LS-Dyna
Conference, Strasbourg, France, 2011.
[2] C. Dávila and P. Camanho, “Decohesion Elements using Two and Three-Parameter Mixed Mode
Criteria,” in American Helicopter Society Conference, Williamsburg, VA, 2001.