umat#
Description#
This behavior allows running a UMAT function within Z-set. It can be used in Z-mat with external solvers or to run a Fortran UMAT directly within Z-set, which is especially useful for integrating UMAT into the simulation module.
Syntax#
***behavior umat
\(~\,\) **constants
num-coef
\(~\,\) **finite_strain
\(~\,\) **cmname
mat-name
\(~\,\) **umat_file
library_name func_name | **umat_function
func_name
\(~\,\) **depvar
num-sdv
\(~\,\) **model_coef
\(~\,~\,~\,\) C##
value
**constants
num-coef is the number of coefficients
**finite_strain
flag for finite strain model
**cmname
mat-name is the material name. It is passed into the UMAT so that you can choose from multiple user-defined material models implemented within a single UMAT subroutine.
**umat_file
library_name is the library name (absolute path) obtained after compilation of the UMAT, and func_name is the function name.
**umat_function
func_nameis the function name to be retrieved from the main program or other libraries that are already loaded (alternative to
**umat_file
).**depvar
num-sdv is the number of SDV
**model_coef
C##
valueThe value of material properties
C1
, …,C
num-coef.
Note
The zmat_umat
behavior is similar to umat
, with the same options. The key difference is
that it allows specifying the stress value at the start of the increment.
Examples#
Example 1
Linear elastic user subroutine:
c ====================================================================== c UMAT for linear elastic material c ====================================================================== 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,kstep,kinc) include 'aba_param.inc' character*80 cmname dimension stress(ntens),statev(nstatv), 1 ddsdde(ntens,ntens), 2 ddsddt(ntens),drplde(ntens), 3 stran(ntens),dstran(ntens),time(2),predef(1),dpred(1), 4 props(nprops),coords(3),drot(3,3),dfgrd0(3,3),dfgrd1(3,3) integer i, j real young, poisson, lambda, mu C material properties young = props(1) ! Young's modulus poisson = props(2) ! Poisson's ratio C Lame's parameters lambda = young*poisson/((1.0d0+poisson)*(1.0d0-2.0d0*poisson)) mu = young/(2.0d0*(1.0d0+poisson)) C Stiffness matrix do i = 1, ntens do j = 1, ntens ddsdde(i,j) = 0.0d0 end do end do do i = 1, ndi do j = 1, ndi ddsdde(i, j) = lambda end do ddsdde(i,i) = lambda + 2.0d0*mu end do C Shear contribution do i = ndi+1, ntens ddsdde(i,i) = mu end do C Stress increment evaluation do i = 1, ntens do j = 1, ntens stress(i) = stress(i) + ddsdde(i,j) * dstran(j) end do end do C return end
Compilation of the fortran subroutine
gfortran -c -fpic umat_elastic.f gfortran -fPIC -shared -o libumat_sd_el.so umat_elastic.o -Bdynamic -lgfortran
Use the subroutine within Z-mat. This material behavior can be used with Z-set and external solvers.
***behavior umat **umat_file ./libumat_sd_el.so umat_ **depvar 0 **constants 2 **model_coef C1 210000. C2 0.30 ***return
Important
Some external solvers, such as Abaqus, require the absolute path to the user library.
Example 2
The following example shows a umat material definition, which is linked
in fact to the Z-mat file on the right. By default (in the absence of a
**umat_file
definition) the umat
behavior uses a Z-mat one.
***behavior umat ***suppress_temperature
**cmname visc3_zmat.mat ***material
**depvar 2 *file visc3_zmat.mat
**coefficient *integration theta_method_a 0.5 1.e-9 120
masvol 8.1e-9 ***external_storage
***return *file oo.store
*vars
evi22 evcum
*buffer_size 3
***behavior gen_evp
**elasticity isotropic
young 260000.
poisson 0.3
**potential gen_evp ev
*criterion mises
*flow norton
n 7.0
K 400.
*kinematic nonlinear x1
C 30000.0
D 500.0
*isotropic constant
R0 130.0
***return