v0.16.0
Loading...
Searching...
No Matches
Functions/Subroutines
umat_small_strain.for File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine umat (stress, statev, ddsdde, sse, spd, scd, rpl, ddsddt, drplde, drpldt, stran, dstran, time, dtime, temp, dtemp, predef, dpred, cmname, ndi, nshr, ntens, nstatv, props, nprops, coords, drot, pnewdt, celent, dfgrd0, dfgrd1, noel, npt, layer, kspt, kstep, kinc)
 

Function/Subroutine Documentation

◆ umat()

subroutine umat ( dimension(ntens)  stress,
dimension(nstatv)  statev,
dimension(ntens,ntens)  ddsdde,
  sse,
  spd,
  scd,
  rpl,
dimension(ntens)  ddsddt,
dimension(ntens)  drplde,
  drpldt,
dimension(ntens)  stran,
dimension(ntens)  dstran,
dimension(2)  time,
  dtime,
  temp,
  dtemp,
dimension(1)  predef,
dimension(1)  dpred,
character*80  cmname,
  ndi,
  nshr,
  ntens,
  nstatv,
dimension(nprops)  props,
  nprops,
dimension(3)  coords,
dimension(3,3)  drot,
  pnewdt,
  celent,
dimension(3,3)  dfgrd0,
dimension(3,3)  dfgrd1,
  noel,
  npt,
  layer,
  kspt,
  kstep,
  kinc 
)

Definition at line 8 of file umat_small_strain.for.

13
14 implicit real*8(a-h,o-z)
15
16 dimension stress(ntens),statev(nstatv),
17 + ddsdde(ntens,ntens),ddsddt(ntens),drplde(ntens),
18 + stran(ntens),dstran(ntens),time(2),predef(1),dpred(1),
19 + props(nprops),coords(3),drot(3,3),dfgrd0(3,3),dfgrd1(3,3)
20
21 character*80 cmname
22
23 integer i,j
24
25 real*8 eye(3,3),eps(3,3),sigma(3,3)
26 real*8 young,nu,mu,kappa,lambda,treps
27
28
29 real*8 zero,one,two,half,three,third
30 parameter(zero=0.d0,one=1.d0,two=2.d0,half=0.5d0,three=3.d0,
31 + third=1.d0/3.d0)
32
33 eye = zero
34 do i=1,3
35 eye(i,i) = one
36 enddo
37
38 young = props(1)
39 nu = props(2)
40 mu = young/(two*(one+nu))
41 kappa = young/(three*(one-two*nu))
42 lambda = kappa - two*third*mu
43
44 eps = half*(dfgrd1 + transpose(dfgrd1)) - eye
45 treps = eps(1,1) + eps(2,2) + eps(3,3)
46 sigma = two*mu*eps + lambda*treps*eye
47
48 stress(1) = sigma(1,1)
49 stress(2) = sigma(2,2)
50 stress(3) = sigma(3,3)
51 stress(4) = sigma(1,2)
52 if(ntens.eq.6) then
53 stress(5) = sigma(1,3)
54 stress(6) = sigma(2,3)
55 endif
56
57 ddsdde = zero
58
59 do i=1,3
60 ddsdde(i,i) = lambda + two*mu
61 enddo
62 do i=1,3
63 do j=1,3
64 if(i.ne.j) ddsdde(i,j) = lambda
65 enddo
66 enddo
67 do i=4,ntens
68 ddsdde(i,i) = mu
69 enddo
70
71 return