29 1 NEL ,NUPARAM ,UPARAM ,IPM ,IMAT ,
30 2 NUVAR ,UVAR ,DEPSXX ,DEPSXY ,DEPSXZ ,
31 3 EPSXX ,SIGOXX ,SIGOXY ,SIGOXZ ,
32 5 SIGNXX ,SIGNXY ,SIGNXZ ,TIMESTEP,
37#include "implicit_f.inc"
46 INTEGER ,
INTENT(IN) :: IMAT
47 INTEGER ,
INTENT(IN) :: NEL,NUPARAM,NUVAR
48 INTEGER ,
DIMENSION(NPROPMI,NUMMAT) ,
INTENT(IN) :: IPM
50 my_real ,
DIMENSION(NEL) ,
INTENT(IN) ::
51 . epsxx,depsxx,depsxy,depsxz,sigoxx,sigoxy,sigoxz,
53 my_real ,
DIMENSION(*) ,
INTENT(IN) :: uparam
57 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: signxx,signxy,signxz
58 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT):: uvar
63 my_real :: ddexx,ddexy,ddexz,depsdxx,dexx,depsvxx,depsvxy,depsvxz,dp
64 my_real,
DIMENSION(NEL) :: bulk,g_ins,g_inf,ge,ge2,gv,gv2,beta,c1,c2,
65 . epspxx,epspxy,epspxz
69 iadbuf = ipm(7,imat)-1
71 bulk(i) = uparam(iadbuf+1)
72 g_ins(i) = uparam(iadbuf+2)
73 g_inf(i) = uparam(iadbuf+3)
74 beta(i) = uparam(iadbuf+4)
77 ge(1:nel) = g_inf(1:nel)
78 gv(1:nel) = g_ins(1:nel) - g_inf(1:nel)
79 ge2(1:nel) = ge(1:nel) * two
80 gv2(1:nel) = gv(1:nel) * two
81 c1(1:nel) = one - exp(-beta(1:nel)*timestep)
82 c2(1:nel) =-c1(1:nel) / beta(1:nel)
83 epspxx(1:nel) = depsxx(1:nel)/
max(em20,timestep)
84 epspxy(1:nel) = depsxy(1:nel)/
max(em20,timestep)
85 epspxz(1:nel) = depsxz(1:nel)/
max(em20,timestep)
92 depsdxx = two_third*epspxx(i)
93 dexx = two_third*epsxx(i)
95 depsvxx = c1(i)*(dexx - uvar(i,1)) + c2(i)*depsdxx
96 depsvxy = c1(i)*(epsxy(i) - uvar(i,2)) + c2(i)*epspxy(i)
97 depsvxz = c1(i)*(epsxz(i) - uvar(i,3)) + c2(i)*epspxz(i)
98 dp = bulk(i)*depsxx(i)
100 signxx(i) = sigoxx(i) + ge2(i)*ddexx - gv2(i)*depsvxx + dp
101 signxy(i) = sigoxy(i) + ge(i) *ddexy - gv(i) *depsvxy
102 signxz(i) = sigoxz(i) + ge(i) *ddexz - gv(i) *depsvxz
104 uvar(i,1) = uvar(i,1) + depsvxx + ddexx
105 uvar(i,2) = uvar(i,2) + depsvxy + ddexy
106 uvar(i,3) = uvar(i,3) + depsvxz + ddexz
subroutine sigeps34pi(nel, nuparam, uparam, ipm, imat, nuvar, uvar, depsxx, depsxy, depsxz, epsxx, sigoxx, sigoxy, sigoxz, signxx, signxy, signxz, timestep, epsxy, epsxz)