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_name

is 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## value

The value of material properties C1, …, Cnum-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