39 1 NEL ,NUVAR ,RHO ,ET ,
40 2 EPSPXX ,EPSPYY ,EPSPZZ ,EPSPXY ,EPSPYZ ,EPSPZX ,
41 3 SIGNXX ,SIGNYY ,SIGNZZ ,SIGNXY ,SIGNYZ ,SIGNZX ,
42 4 MFXX ,MFXY ,MFXZ ,MFYX ,MFYY ,MFYZ ,
43 5 MFZX ,MFZY ,MFZZ ,SOUNDSP ,VISCMAX ,UVAR ,
44 7 NUMTABL,MATPARAM,NVARTMP ,VARTMP )
56#include
"implicit_f.inc"
101 INTEGER ,
INTENT(IN) :: NEL,NUVAR,NVARTMP,NUMTABL
103 my_real ,
DIMENSION(NEL) ,
INTENT(IN) :: RHO,
104 . EPSPXX,EPSPYY,EPSPZZ,EPSPXY,,EPSPZX,
105 . MFXX ,MFXY ,MFXZ ,MFYX, MFYY , ,
110DIMENSION(NEL) ,
INTENT(OUT) ::
111 . signxx ,signyy ,signzz
115 my_real,
DIMENSION(NEL) ,
INTENT(INOUT) :: soundsp, et
116 my_real ,
DIMENSION(NEL,NUVAR) ,
INTENT(INOUT) :: uvar
117 INTEGER ,
DIMENSION(NEL,NVARTMP) ,
INTENT(INOUT) :: VARTMP
118 TYPE(MATPARAM_STRUCT_) :: MATPARAM
123 my_real,
DIMENSION(NEL) ::
124 . jac ,jeq ,b11 ,b22 ,b33 ,b12 ,
125 . b23 ,b13 ,bsqr11 ,bsqr22
126 . bsqr33 ,bsqr12 ,bsqr23 ,bsqr13 ,h1 ,h2 ,h3 ,
127 . zxx ,zxy ,zyz ,zxz , zyx , zzy ,
128 . zzx ,zyy ,zzz ,whysmax ,
129 . zxxold ,zxyold ,zyzold ,zxzold
130 . zyxold , zzyold ,zzxold ,zyyold ,zzzold ,
131 . zxxmid ,zxymid ,zyzmid ,zxzmid ,
132 . zyxmid , zzymid ,zzxmid ,zyymid ,zzzmid ,
133 . dzxx ,dzxy ,dzyz ,dzxz ,
134 . dzyx , dzzy ,dzzx ,dzyy ,dzzz ,
135 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
136 . fs11 ,fs12 ,fs13 ,fs21 ,fs22 ,fs23 ,
137 . fs31 ,fs32 ,fs33 ,slopemax , damage ,
138 . zxxd ,zyyd ,zzzd ,zxyd ,zyzd ,zzxd ,epst ,yld
141 . g,k,nu,hu, shape ,gs,ks,stiffmax,aa, de,e_new,epss, e_old,
142 . ep2,ep3,ep4,ep5,ep6,ert11,ert12,ert13,ert21,e,emod,ep1,
143 . ert22,ert23,ert31,ert32,ert33,scal,
146 . strain(nel,3),slope(nel,3),drate(nel,3),ev(nel,3),
147 . f(nel,3,3),fo(nel,3,3),c(nel,3,3), egl(nel,6),
149 . spknodam(nel,6),spknorate(nel,6),spk(nel,6),sig(nel,6) ,
150 . dfirst(nel,3,6),cijkl(nel,6,6),
152 . evv(mvsiz,3), val(mvsiz,3),av(mvsiz,6),dirprv(mvsiz,3,3)
162 emod = matparam%UPARAM(1)
163 k = matparam%UPARAM(2)
164 g = matparam%UPARAM(3)
165 xscal = matparam%UPARAM
166 scal = matparam%UPARAM(5)
167 hu = matparam%UPARAM(6)
168 shape = matparam%UPARAM(7)
169 stiffmax = emod*hundred
171 whysmax(1:nel) = uvar(1:nel,13)
177 f(i,1,1) = one+mfxx(i)
178 f(i,2,2) = one+mfyy(i)
179 f(i,3,3) = one+mfzz(i)
202 zxxold(i) = uvar(i,1)
203 zyyold(i) = uvar(i,2)
204 zzzold(i) = uvar(i,3)
205 zxyold(i) = uvar(i,4)
206 zyzold(i) = uvar(i,5)
207 zzxold(i) = uvar(i,6)
218 zxxmid(i) = (zxx(i) + zxxold(i))/two
219 zyymid(i) = (zyy(i) + zyyold(i))/two
220 zzzmid(i) = (zzz(i) + zzzold(i))/two
221 zxymid(i) = (zxy(i) + zxyold(i))/two
222 zyzmid(i) = (zyz(i) + zyzold(i))/two
223 zzxmid(i) = (zzx(i) + zzxold(i))/two
226 jac(i) = f(i,1,1)*f(i,2,2)*f(i,3,3) - f(i,1,1)*f(i,2,3)*f(i,3,2) -
227 . f(i,3,3)*f(i,1,2)*f(i,2,1) + f(i,1,2)*f(i,2,3)*f(i,3,1) +
228 . f(i,2,1)*f(i,3,2)*f(i,1,3) - f(i,2,2)*f(i,3,1)*f(i,1,3)
229 jac(i) =
max(jac(i),one)
264 ert11 = dirprv(i,1,1)*ep1 + dirprv(i,2,1)*ep4 + dirprv(i,3,1)*ep6
265 ert12 = dirprv(i,1,2)*ep1 + dirprv(i,2,2)*ep4 + dirprv(i,3,2)*ep6
266 ert13 = dirprv(i,1,3)*ep1 + dirprv(i,2,3)*ep4 + dirprv(i,3,3)*ep6
267 ert21 = dirprv(i,1,1)*ep4 + dirprv(i,2,1)*ep2 + dirprv(i,3,1)*ep5
268 ert22 = dirprv(i,1,2)*ep4 + dirprv(i,2,2)*ep2 + dirprv(i,3,2)*ep5
269 ert23 = dirprv(i,1,3)*ep4 + dirprv(i,2,3)*ep2 + dirprv(i,3,3)*ep5
270 ert31 = dirprv(i,1,1)*ep6 + dirprv(i,2,1)*ep5 + dirprv(i,3,1)*ep3
271 ert32 = dirprv(i,1,2)*ep6 + dirprv(i,2,2)*ep5 + dirprv(i,3,2)*ep3
272 ert33 = dirprv(i,1,3)*ep6 + dirprv(i,2,3)*ep5 + dirprv(i,3,3)*ep3
273 epsp(1) = dirprv(i,1,1)*ert11 + dirprv(i,2,1)*ert21
274 . + dirprv(i,3,1)*ert31
275 epsp(2) = dirprv(i,1,2)*ert12 + dirprv(i,2,2)*ert22
276 . + dirprv(i,3,2)*ert32
277 epsp(3) = dirprv(i,1,3)*ert13 + dirprv(i,2,3)*ert23
278 . + dirprv(i,3,3)*ert33
281 ev(i,1) = sqrt(two*evv(i,1) + one)
282 ev(i,2) = sqrt(two*evv(i,2) + one)
283 ev(i,3) = sqrt(two*evv(i,3) + one)
284 strain(i,1) = one - ev(i,1)
285 strain(i,2) = one - ev(i,2)
286 strain(i,3) = one - ev(i,3)
287 epst(i) = sqrt(strain(i,1)**2 + strain(i,2)**2 + strain(i,3)**2)
288 drate(i,1) = epsp(1)*(one - strain(i,1))
289 drate(i,2) = epsp(2)*(one - strain(i,2))
290 drate(i,3) = epsp(3)*(one - strain(i,3))
298 CALL conversion(zxxmid ,zyymid ,zzzmid ,zxymid ,zyzmid ,zzxmid ,
299 . cijkl ,dfirst ,drate ,xscal ,scal ,nel ,
300 . jac ,slope ,numtabl ,matparam%TABLE ,nvartmp ,
301 . vartmp ,yld ,matparam%TABLE(1)%NDIM )
307 dzxx(i) = zxx(i)-zxxold(i)
308 dzyy(i) = zyy(i)-zyyold(i)
309 dzzz(i) = zzz(i)-zzzold(i)
310 dzxy(i) = zxy(i)-zxyold(i)
311 dzyz(i) = zyz(i)-zyzold(i)
312 dzzx(i) = zzx(i)-zzxold(i)
316 dzxy(i) = dzxy(i)*two
317 dzyz(i) = dzyz(i)*two
318 dzzx(i) = dzzx(i)*two
323 spknorate(i,ik)= uvar(i,6+ik)
324 . + cijkl(i,1,ik)*dzxx(i)+cijkl(i,2,ik)*dzyy(i)
325 . + cijkl(i,3,ik)*dzzz(i)+cijkl(i,4,ik)*dzxy(i)
326 . + cijkl(i,5,ik)*dzyz(i)+cijkl(i,6,ik)*dzzx(i)
328 uvar(i, 7) = spknorate(i,1)
329 uvar(i, 8) = spknorate(i,2)
330 uvar(i, 9) = spknorate(i,3)
331 uvar(i,10) = spknorate(i,4)
332 uvar(i,11) = spknorate(i,5)
333 uvar(i,12) = spknorate(i,6)
341 spknodam(i,ik)=spknorate(i,ik)
342 . +dfirst(i,1,ik)*drate(i,1)
343 . +dfirst(i,2,ik)*drate(i,2)
344 . +dfirst(i,3,ik)*drate(i,3)
346 spknodam(i,ik)=spknorate(i,ik)
347 . + (dfirst(i,1,ik)*drate(i,1)
348 . + dfirst(i,2,ik)*drate(i,2)
349 . + dfirst(i,3,ik)*drate(i,3) )*half
356 CALL condamage(zxx ,zyy ,zzz ,zxy ,zzx ,zyz ,
357 . damage ,nel ,hu ,shape ,whysmax ,
358 . numtabl ,matparam%TABLE ,nvartmp ,vartmp )
363 uvar(i,13) = whysmax(i)
365 spk(i,ik)=spknodam(i,ik)*(one-damage(i))
377 fs11(i) = f(i,1,1)*s1(i) + f(i,1,2)*s4(i) + f(i,1,3)*s6(i)
378 fs12(i) = f(i,1,1)*s4(i) + f(i,1,2)*s2(i) + f(i,1,3)*s5(i)
379 fs13(i) = f(i,1,1)*s6(i) + f(i,1,2)*s5(i) + f(i,1,3)*s3(i)
380 fs21(i) = f(i,2,1)*s1(i) + f(i,2,2)*s4(i) + f(i,2,3)*s6(i)
381 fs22(i) = f(i,2,1)*s4(i) + f(i,2,2)*s2(i) + f(i,2,3)*s5(i)
382 fs23(i) = f(i,2,1)*s6(i) + f(i,2,2)*s5(i) + f(i,2,3)*s3(i)
383 fs31(i) = f(i,3,1)*s1(i) + f(i,3,2)*s4(i) + f(i,3,3)*s6(i)
384 fs32(i) = f(i,3,1)*s4(i) + f(i,3,2)*s2(i) + f(i,3,3)*s5(i)
385 fs33(i) = f(i,3,1)*s6(i) + f(i,3,2)*s5(i) + f(i,3,3)*s3(i)
387 signxx(i) = fs11(i)*f(i,1,1)+fs12(i)*f(i,1,2)+fs13(i)*f(i,1,3)
388 signyy(i) = fs21(i)*f(i,2,1)+fs22(i)*f(i,2,2)+fs23(i)*f(i,2,3)
389 signzz(i) = fs31(i)*f(i,3,1)+fs32(i)*f(i,3,2)+fs33(i)*f(i,3,3)
390 signxy(i) = fs11(i)*f(i,2,1)+fs12(i)*f(i,2,2)+fs13(i)*f(i,2,3)
391 signyz(i) = fs21(i)*f(i,3,1)+fs22(i)*f(i,3,2)+fs23(i)*f(i,3,3)
392 signzx(i) = fs11(i)*f(i,3,1)+fs12(i)*f(i,3,2)+fs13(i)*f(i,3,3)
394 signxx(i) = signxx(i) / jac(i)
395 signyy(i) = signyy(i) / jac(i)
396 signzz(i) = signzz(i) / jac(i)
397 signxy(i) = signxy(i) / jac(i)
398 signyz(i) = signyz(i) / jac(i)
399 signzx(i) = signzx(i) / jac(i)
406 slopemax(i)=
max(slope(i,1) , slope(i,2))
407 slopemax(i)=
max(slopemax(i),
408 slopemax(i)=
max(slopemax(i), emod)
410 gs = slopemax(i)*half
411 ks = slopemax(i)*third
413 soundsp(i) = sqrt(slopemax(i)/rho(i))
416 et(i) =
max(slope(i,1),slope(i,2),slope(i,3))/emod