40
41
42
43#include "implicit_f.inc"
44
45
46
47 INTEGER NEL, NUPARAM, NUVAR
49 . time , timestep , uparam(nuparam),
50 . rho(nel), rho0(nel), volume(nel), eint(nel),
51 . epspxx(nel), epspyy(nel), epspzz(nel),
52 . epspxy(nel), epspyz(nel), epspzx(nel),
53 . depsxx(nel), depsyy(nel), depszz(nel),
54 . depsxy(nel), depsyz(nel), depszx(nel),
55 . epsxx(nel), epsyy(nel), epszz(nel),
56 . epsxy(nel), epsyz(nel), epszx(nel),
57 . sigoxx(nel), sigoyy(nel), sigozz(nel),
58 . sigoxy(nel), sigoyz(nel), sigozx(nel)
59
60
61
63 . signxx(nel), signyy(nel), signzz(nel),
64 . signxy(nel), signyz(nel), signzx(nel),
65 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
66 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
67 . soundsp(nel), viscmax(nel)
68
69
70
71 my_real uvar(nel,nuvar), off(nel)
72
73
74
75 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
77
78
79
80 INTEGER :: I
81 my_real :: bulk,bulk3,g_ins,g_inf,ge,ge2,gv,gv2,c1,c2,beta
82 . gama0,dp_drho
83 my_real ,
DIMENSION(NEL) :: gama,dpdgama,dp,
84 . depsm,epspm,em,depsvxx,depsvyy,depsvzz,depsvxy,depsvyz,depsvzx,
85 . dexx,deyy,dezz,dexy,deyz,dezx,depsdxx,depsdyy,depsdzz,
86 . depsdxy,depsdyz,depsdzx,ddexx,ddeyy,ddezz,ddexy,ddeyz,ddezx
87
88 bulk = uparam(1)
89 g_ins = uparam(2)
90 g_inf = uparam(3)
91 beta = uparam(4)
92 p0 = uparam(5)
93 phi = uparam(6)
94 gama0 = uparam(7)
95
96 ge = g_inf
97 gv = g_ins-g_inf
98 ge2 = ge * two
99 gv2 = gv * two
100 c1 = one - exp(-beta*timestep)
101 c2 =-c1 / beta
102 bulk3 = bulk*three
103
104 DO i=1,nel
105 gama(i) = rho0(i)/rho(i) - one + gama0
106 dpdgama(i)=-p0*(one-phi) / (one+gama(i)-phi)
107 depsm(i) = third *(depsxx(i)+depsyy(i)+depszz(i))
108 epspm(i) = third *(epspxx(i)+epspyy(i)+epspzz(i))
109 em(i) = third *(epsxx(i) +epsyy(i) +epszz(i) )
110 END DO
111
112
113
114 DO i=1,nel
115 dexx(i) = epsxx(i)-em(i)
116 deyy(i) = epsyy(i)-em(i)
117 dezz(i) = epszz(i)-em(i)
118 dexy(i) = epsxy(i)
119 deyz(i) = epsyz(i)
120 dezx(i) = epszx(i)
121
122 ddexx(i) = depsxx(i)-depsm(i)
123 ddeyy(i) = depsyy(i)-depsm(i)
124 ddezz(i) = depszz(i)-depsm(i)
125 ddexy(i) = depsxy(i)
126 ddeyz(i) = depsyz(i)
127 ddezx(i) = depszx(i)
128
129 depsdxx(i) = epspxx(i)-epspm(i)
130 depsdyy(i) = epspyy(i)-epspm(i)
131 depsdzz(i) = epspzz(i)-epspm(i)
132 depsdxy(i) = epspxy(i)
133 depsdyz(i) = epspyz(i)
134 depsdzx(i) = epspzx(i)
135 END DO
136
137 DO i=1,nel
138 depsvxx(i) = c1*(dexx(i)-uvar(i,1)) + c2*depsdxx(i)
139 depsvyy(i) = c1*(deyy(i)-uvar(i,2)) + c2*depsdyy(i)
140 depsvzz(i) = c1*(dezz(i)-uvar(i,3)) + c2*depsdzz(i)
141 depsvxy(i) = c1*(dexy(i)-uvar(i,4)) + c2*depsdxy(i)
142 depsvyz(i) = c1*(deyz(i)-uvar(i,5)) + c2*depsdyz(i)
143 depsvzx(i) = c1*(dezx(i)-uvar(i,6)) + c2*depsdzx(i)
144 END DO
145
146 dp(1:nel) = (bulk3 - dpdgama(1:nel)) * depsm(1:nel)
147
148 DO i=1,nel
149 signxx(i) = sigoxx(i) + ge2*ddexx(i) - gv2*depsvxx(i) + dp(i)
150 signyy(i) = sigoyy(i) + ge2*ddeyy(i) - gv2*depsvyy(i) + dp(i)
151 signzz(i) = sigozz(i) + ge2*ddezz(i) - gv2*depsvzz(i) + dp(i)
152 signxy(i) = sigoxy(i) + ge *ddexy(i) - gv *depsvxy(i)
153 signyz(i) = sigoyz(i) + ge *ddeyz(i) - gv *depsvyz(i)
154 signzx(i) = sigozx(i) + ge *ddezx(i) - gv *depsvzx(i)
155 END DO
156
157 dp_drho = four_over_3*g_ins + bulk
158 soundsp(1:nel) = sqrt(dp_drho / rho0(1:nel))
159
160 DO i=1,nel
161 uvar(i,1) = uvar(i,1) + depsvxx(i) + ddexx(i)
162 uvar(i,2) = uvar(i,2) + depsvyy(i) + ddeyy(i)
163 uvar(i,3) = uvar(i,3) + depsvzz(i) + ddezz(i)
164 uvar(i,4) = uvar(i,4) + depsvxy(i) + ddexy(i)
165 uvar(i,5) = uvar(i,5) + depsvyz(i) + ddeyz(i)
166 uvar(i,6) = uvar(i,6) + depsvzx(i) + ddezx(i)
167 END DO
168
169 RETURN