42 . ZXX ,ZYY ,ZZZ ,ZXY ,ZYZ ,ZZX ,
43 . CIJKL ,DFIRST ,DRATE ,XSCAL ,SCAL ,NEL ,
44 . JAC ,SLOPE ,NUMTABL ,TABLE ,NVARTMP ,VARTMP ,
56#include "implicit_f.inc"
67 INTEGER,
INTENT(IN) :: NEL, NUMTABL,NVARTMP,NDIM_TABLE
68 my_real,
INTENT(IN) :: SCAL,ZXX(NEL),ZYY(NEL),ZZZ(NEL),ZXY(NEL),
69 . ZZX(NEL),ZYZ(NEL), JAC(NEL), XSCAL
70 INTEGER,
DIMENSION(NEL,NVARTMP),
INTENT(INOUT) :: VARTMP
74 my_real,
INTENT(OUT) :: dfirst(nel,3,6),cijkl(nel,6,6),slope(nel,3),yld(nel)
75 my_real,
INTENT(INOUT) :: drate(nel,3)
76 TYPE (TABLE_4D_),
DIMENSION(NUMTABL) ,
TARGET :: TABLE
83 my_real,
DIMENSION(NEL) :: DYDX1,VOLSTR,
84 . FSIG1,DSIG1,FSIG2,DSIG2,
85 . sigener,dsigener,fsig3,dsig3
86 my_real,
DIMENSION(NEL,3) :: alambda,epsilon,engirate, sigma, dynsigma,
89 . dik(nel,3), sik(nel,3),
90 . ac,as,z1(nel),z2(nel),z3(nel),dsecond(nel,3,6,6),
91 . ah1(nel),ah2(nel),ah3(nel),j2(nel),j3(nel),aa3(nel),aa2(nel),
92 . dzero(nel,3),dat2(nel,6),dat3(nel,6),da(nel,6),da2(nel,6,6),dat22(nel,6,6),
93 . dat32(nel,6,6),dx2(nel,6,6),
94 . dh1zxx,dh1zyy,dh1zxy,dh1zyz,dh1zzx,dh1zzz,
95 . dh2zxx,dh2zyy,dh2zxy,dh2zyz,dh2zzx,dh2zzz,
96 . dh3zxx,dh3zyy,dh3zxy,dh3zyz,dh3zzx,dh3zzz,
97 . dt2zxx,dt2zyy,dt2zxy,dt2zyz,dt2zzx,dt2zzz,
98 . dt3zxx,dt3zyy,dt3zxy,dt3zyz,dt3zzx,dt3zzz,
99 . temp1,temp2,temp3,temp4,temp5,temp11,temp12,
100 . dz1zxx,dz1zyy,dz1zxy,dz1zyz,dz1zzx,dz1zzz,
101 . dz2zxx,dz2zyy,dz2zxy,dz2zyz,dz2zzx,dz2zzz,
102 . dz3zxx,dz3zyy,dz3zxy,dz3zyz,dz3zzx,dz3zzz,
103 . da3zxx,da3zyy,da3zxy,da3zyz,da3zzx,da3zzz,
104 . dah2zxxzxx,dah2zxxzyy,dah2zxxzzz,dah2zxxzxy,dah2zxxzyz,dah2zxxzzx,
105 . dah2zyyzxx,dah2zyyzyy,dah2zyyzzz,dah2zyyzxy,dah2zyyzyz,dah2zyyzzx,
106 . dah2zzzzxx,dah2zzzzyy,dah2zzzzzz,dah2zzzzxy,dah2zzzzyz,dah2zzzzzx
107 . dah2zxyzxx,dah2zxyzyy,dah2zxyzzz,dah2zxyzxy,dah2zxyzyz,dah2zxyzzx,
108 . dah2zyzzxx,dah2zyzzyy,dah2zyzzzz,dah2zyzzxy,dah2zyzzyz,dah2zyzzzx,
109 . dah2zzxzxx,dah2zzxzyy,dah2zzxzzz,dah2zzxzxy,dah2zzxzyz,dah2zzxzzx,
110 . dah3zxxzxx,dah3zxxzyy,dah3zxxzzz,dah3zxxzxy,dah3zxxzyz,dah3zxxzzx,
111 . dah3zyyzxx,dah3zyyzyy,dah3zyyzzz,dah3zyyzxy,dah3zyyzyz,dah3zyyzzx,
112 . dah3zzzzxx,dah3zzzzyy,dah3zzzzzz,dah3zzzzxy,dah3zzzzyz,dah3zzzzzx,
113 . dah3zxyzxx,dah3zxyzyy,dah3zxyzzz,dah3zxyzxy,dah3zxyzyz,dah3zxyzzx,
114 . dah3zyzzxx,dah3zyzzyy,dah3zyzzzz,dah3zyzzxy,dah3zyzzyz,dah3zyzzzx,
115 . dah3zzxzxx,dah3zzxzyy,dah3zzxzzz,dah3zzxzxy,dah3zzxzyz,dah3zzxzzx,
116 . x1,x2,x22,x3,x4,x5,x6,
118 . afac1,afac2,afac3,afac4,afac33,afac5,
119 . ahelp3,ahelp33,ahelp,ahelp4,teta,
120 . xcap,dxcap,three_teta,termdat32,dacos_daa3,d2acos_daa32,
121 . fac1_da2, fac2_da2,fac3_da2,t1da2,t2da2,t3da2,t4da2,t5da2,t6da2,
122 . daa3dt2,daa3dt3,d2a_dt22,d2a_dt2dt3,d2a_dt3dt2
124 INTEGER IPOS(NEL,3),IPOS2(NEL,2),IPOS1(NEL,1)
125 my_real,
DIMENSION(NEL,3) :: XVEC
126 my_real,
DIMENSION(NEL,2) :: XVEC2
127 my_real,
DIMENSION(NEL,1) :: XVEC1
140 ah1(i) = zxx(i) + zyy(i) + zzz(i)
141 ah2(i) = zyy(i)*zzz(i)+zzz(i)*zxx(i)+zxx(i)*zyy(i)
142 . - zyz(i)**2 - zzx(i)**2 - zxy(i)**2
143 ah3(i) = zxx(i)*zyy(i)*zzz(i)+two*zxy(i)*zyz(i)*zzx(i)
144 . - zxx(i)*zyz(i)**2-zyy(i)*zzx(i)**2-zzz(i)*zxy(i)**2
166 dh3zxx = zyy(i)*zzz(i)-zyz(i)**2
167 dh3zyy = zxx(i)*zzz(i)-zzx(i)**2
168 dh3zzz = zyy(i)*zxx(i)-zxy(i)**2
169 dh3zxy = -two*zxy(i)*zzz(i)+two*zyz(i)*zzx(i)
170 dh3zyz = -two*zyz(i)*zxx(i)+two*zxy(i)*zzx(i)
171 dh3zzx = -two*zzx(i)*zyy(i)+two*zyz(i)*zxy(i)
175 j3(i) = (two/twenty7)*ah1(i)**3 - ah1(i)*ah2(i)*third + ah3(i)
176 j2(i) = third*ah1(i)**2 - ah2(i)
177 j2(i) =
max(j2(i),em16)
185 aa3(i) =
min( one,aa3(i))
186 aa3(i) =
max(-one,aa3(i))
187 aa2(i) = sqrt(j2(i)*third)
188 three_teta = acos(aa3(i
192 z1(i) = two*aa2(i)*cos(third*three_teta) + ah1(i)*third
193 z2(i) = two*aa2(i)*cos(third*three_teta - two *pi*third) + ah1(i)*third
194 z3(i) = two*aa2(i)*cos(third*three_teta - four*pi*third) + ah1(i)*third
201 dt2zxx = two*ah1(i)*third-(zyy(i)+zzz(i))
202 dt2zyy = two*ah1(i)*third-(zxx(i)+zzz(i))
203 dt2zzz = two*ah1(i)*third-(zyy(i)+zxx(i))
219 dt3zxx = six * ah1(i)**2/twenty7 - ah2(i)*third
220 . - ah1(i)*(zyy(i)+zzz(i))*third
221 . +(zyy(i)*zzz(i)-zyz(i)**2)
222 dt3zyy = six * ah1(i)**2/twenty7-ah2(i
223 . - ah1(i)*(zxx(i)+zzz(i))*third
224 . +(zxx(i)*zzz(i)-zzx(i)**2)
225 dt3zzz = six * ah1(i)**2/twenty7-ah2(i)*third
226 . - ah1(i)*(zyy(i)+zxx(i))*third
227 . +(zyy(i)*zxx(i)-zxy(i)**2)
228 dt3zxy = two*ah1(i)*zxy(i)*third
229 . +two*(zyz(i)*zzx(i)-zxy(i)*zzz(i))
230 dt3zyz = two*ah1(i)*zyz(i)*third
231 . +two*(zxy(i)*zzx(i)-zyz(i)*zxx(i))
232 dt3zzx = two*ah1(i)*zzx(i)*third
233 . +two*(zyz(i)*zxy(i)-zzx(i)*zyy(i))
256 dacos_daa3 = -one - (aa3(i)**2)/two - (aa3(i)**4)/eight -
257 . (aa3(i)**6)/48.0d0 - (aa3(i)**8)/384.0d0 -
258 . (aa3(i)**10)/(3840.0d0)
259 daa3dt3 = one/(two*sqrt((j2(i)**3)/twenty7))
260 daa3dt2 = -(j3(i)/36.0d0)*(j2(i)**2)/(sqrt(((j2(i)**3)/twenty7)**3))
262 da3zxx = dacos_daa3*(daa3dt3*dt3zxx + daa3dt2*dt2zxx
263 da3zyy = dacos_daa3*(daa3dt3*dt3zyy + daa3dt2*dt2zyy)
264 da3zzz = dacos_daa3*(daa3dt3*dt3zzz + daa3dt2*dt2zzz)
265 da3zxy = dacos_daa3*(daa3dt3*dt3zxy + daa3dt2*dt2zxy)
266 da3zyz = dacos_daa3*(daa3dt3*dt3zyz + daa3dt2
267 da3zzx = dacos_daa3*(daa3dt3*dt3zzx + daa3dt2*dt2zzx)
278 temp4 = one*third/sqrt(j2(i)*third)
279 temp5 = two*sqrt(j2(i)*third)*third
280 teta = three_teta * third
285 dz2zxx =temp4*dt2zxx*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zxx
286 dz3zxx =temp4*dt2zxx*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zxx
288 dz1zyy =temp4*dt2zyy*cos(-teta) +temp5*sin(-teta)*da3zyy
289 dz2zyy =temp4*dt2zyy*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zyy
290 dz3zyy =temp4*dt2zyy*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zyy
292 dz1zzz =temp4*dt2zzz*cos(-teta) +temp5*sin(-teta)*da3zzz
293 dz2zzz =temp4*dt2zzz*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zzz
294 dz3zzz =temp4*dt2zzz*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zzz
296 dz1zxy =temp4*dt2zxy*cos(-teta) +temp5*sin(-teta)*da3zxy
297 dz2zxy =temp4*dt2zxy*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zxy
298 dz3zxy =temp4*dt2zxy*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zxy
301 dz2zyz =temp4*dt2zyz*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zyz
302 dz3zyz =temp4*dt2zyz*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zyz
304 dz1zzx =temp4*dt2zzx*cos(-teta) +temp5*sin(-teta)*da3zzx
305 dz2zzx =temp4*dt2zzx*cos(-teta+two*pi*third) +temp5*sin(-teta+two*pi*third)*da3zzx
306 dz3zzx =temp4*dt2zzx*cos(-teta+four*pi*third) +temp5*sin(-teta+four*pi*third)*da3zzx
314 dfirst(i,1,1)=dz1zxx + third
315 dfirst(i,1,2)=dz1zyy + third
316 dfirst(i,1,3)=dz1zzz + third
320 dfirst(i,2,1)=dz2zxx + third
321 dfirst(i,2,2)=dz2zyy + third
322 dfirst(i,2,3)=dz2zzz + third
326 dfirst(i,3,1)=dz3zxx + third
327 dfirst(i,3,2)=dz3zyy + third
328 dfirst(i,3,3)=dz3zzz + third
387 dah3zxxzyz=-two*zyz(i)
395 dah3zyyzzx=-two*zzx(i)
400 dah3zzzzxy=-two*zxy(i)
406 dah3zxyzzz=-two*zxy(i)
407 dah3zxyzxy=-two*zzz(i)
408 dah3zxyzyz=two*zzx(i)
409 dah3zxyzzx=two*zyz(i)
411 dah3zyzzxx=-two*zyz(i)
414 dah3zyzzxy=two*zzx(i)
415 dah3zyzzyz=-two*zxx(i)
416 dah3zyzzzx=two*zxy(i)
419 dah3zzxzyy=-two*zzx(i)
421 dah3zzxzxy=two*zyz(i)
422 dah3zzxzyz=two*zxy(i)
423 dah3zzxzzx=-two*zyy(i)
427 dat22(i,1,1)=-dah2zxxzxx+(two_third)
428 dat22(i,1,2)=-dah2zxxzyy+(two_third)
429 dat22(i,1,3)=-dah2zxxzzz+(two_third)
430 dat22(i,1,4)=-dah2zxxzxy
431 dat22(i,1,5)=-dah2zxxzyz
432 dat22(i,1,6)=-dah2zxxzzx
434 dat22(i,2,1)=-dah2zyyzxx+(two_third)
435 dat22(i,2,2)=-dah2zyyzyy+(two_third)
436 dat22(i,2,3)=-dah2zyyzzz+(two_third)
437 dat22(i,2,4)=-dah2zyyzxy
438 dat22(i,2,5)=-dah2zyyzyz
439 dat22(i,2,6)=-dah2zyyzzx
441 dat22(i,3,1)=-dah2zzzzxx+(two_third)
442 dat22(i,3,2)=-dah2zzzzyy+(two_third)
443 dat22(i,3,3)=-dah2zzzzzz+(two_third)
444 dat22(i,3,4)=-dah2zzzzxy
445 dat22(i,3,5)=-dah2zzzzyz
446 dat22(i,3,6)=-dah2zzzzzx
448 dat22(i,4,1)=-dah2zxyzxx
449 dat22(i,4,2)=-dah2zxyzyy
450 dat22(i,4,3)=-dah2zxyzzz
451 dat22(i,4,4)=-dah2zxyzxy
452 dat22(i,4,5)=-dah2zxyzyz
453 dat22(i,4,6)=-dah2zxyzzx
455 dat22(i,5,1)=-dah2zyzzxx
456 dat22(i,5,2)=-dah2zyzzyy
457 dat22(i,5,3)=-dah2zyzzzz
458 dat22(i,5,4)=-dah2zyzzxy
459 dat22(i,5,5)=-dah2zyzzyz
460 dat22(i,5,6)=-dah2zyzzzx
462 dat22(i,6,1)=-dah2zzxzxx
463 dat22(i,6,2)=-dah2zzxzyy
464 dat22(i,6,3)=-dah2zzxzzz
465 dat22(i,6,4)=-dah2zzxzxy
466 dat22(i,6,5)=-dah2zzxzyz
467 dat22(i,6,6)=-dah2zzxzzx
471 dat32(i,1,1) = dah3zxxzxx - (ah1(i)*third)*dah2zxxzxx
472 dat32(i,1,2) = dah3zxxzyy - (ah1(i)*third)*dah2zxxzyy
473 dat32(i,1,3) = dah3zxxzzz - (ah1(i)*third)*dah2zxxzzz
474 dat32(i,1,4) = dah3zxxzxy - (ah1(i)*third)*dah2zxxzxy
475 dat32(i,1,5) = dah3zxxzyz - (ah1(i)*third)*dah2zxxzyz
476 dat32(i,1,6) = dah3zxxzzx - (ah1(i)*third)*dah2zxxzzx
478 dat32(i,2,1) = dah3zyyzxx - (ah1(i)*third)*dah2zyyzxx
479 dat32(i,2,2) = dah3zyyzyy - (ah1(i)*third)*dah2zyyzyy
480 dat32(i,2,3) = dah3zyyzzz - (ah1(i)*third)*dah2zyyzzz
481 dat32(i,2,4) = dah3zyyzxy - (ah1(i)*third)*dah2zyyzxy
482 dat32(i,2,5) = dah3zyyzyz - (ah1(i)*third)*dah2zyyzyz
483 dat32(i,2,6) = dah3zyyzzx - (ah1(i)*third)*dah2zyyzzx
485 dat32(i,3,1) = dah3zzzzxx - (ah1(i)*third)*dah2zzzzxx
486 dat32(i,3,2) = dah3zzzzyy - (ah1(i)*third)*dah2zzzzyy
487 dat32(i,3,3) = dah3zzzzzz - (ah1(i)*third)*dah2zzzzzz
488 dat32(i,3,4) = dah3zzzzxy - (ah1(i)*third)*dah2zzzzxy
489 dat32(i,3,5) = dah3zzzzyz - (ah1(i)*third)*dah2zzzzyz
490 dat32(i,3,6) = dah3zzzzzx - (ah1(i)*third)*dah2zzzzzx
492 dat32(i,4,1) = dah3zxyzxx - (ah1(i)*third)*dah2zxyzxx
493 dat32(i,4,2) = dah3zxyzyy - (ah1(i)*third)*dah2zxyzyy
494 dat32(i,4,3) = dah3zxyzzz - (ah1(i)*third)*dah2zxyzzz
495 dat32(i,4,4) = dah3zxyzxy - (ah1(i)*third)*dah2zxyzxy
496 dat32(i,4,5) = dah3zxyzyz - (ah1(i)*third)*dah2zxyzyz
497 dat32(i,4,6) = dah3zxyzzx - (ah1(i)*third)*dah2zxyzzx
499 dat32(i,5,1) = dah3zyzzxx - (ah1(i)*third)*dah2zyzzxx
500 dat32(i,5,2) = dah3zyzzyy - (ah1(i)*third)*dah2zyzzyy
501 dat32(i,5,3) = dah3zyzzzz - (ah1(i)*third)*dah2zyzzzz
502 dat32(i,5,4) = dah3zyzzxy - (ah1(i)*third)*dah2zyzzxy
503 dat32(i,5,5) = dah3zyzzyz - (ah1(i)*third)*dah2zyzzyz
504 dat32(i,5,6) = dah3zyzzzx - (ah1(i)*third)*dah2zyzzzx
506 dat32(i,6,1) = dah3zzxzxx - (ah1(i)*third)*dah2zzxzxx
507 dat32(i,6,2) = dah3zzxzyy - (ah1(i)*third)*dah2zzxzyy
508 dat32(i,6,3) = dah3zzxzzz - (ah1(i)*third)*dah2zzxzzz
509 dat32(i,6,4) = dah3zzxzxy - (ah1(i)*third)*dah2zzxzxy
510 dat32(i,6,5) = dah3zzxzyz - (ah1(i)*third)*dah2zzxzyz
511 dat32(i,6,6) = dah3zzxzzx - (ah1(i)*third)*dah2zzxzzx
515 termdat32 = (ten+two) * ah1(i)/twenty7
516 dat32(i,1,1)=dat32(i,1,1)+termdat32*dh1zxx*dh1zxx
517 . -(third)*dh1zxx*dh2zxx-(third)*dh1zxx*dh2zxx
518 dat32(i,1,2)=dat32(i,1,2)+termdat32*dh1zyy*dh1zxx
519 . -(third)*dh1zxx*dh2zyy-(third)*dh1zyy*dh2zxx
520 dat32(i,1,3)=dat32(i,1,3)+termdat32*dh1zzz*dh1zxx
521 . -(third)*dh1zxx*dh2zzz-(third)*dh1zzz*dh2zxx
522 dat32(i,1,4)=dat32(i,1,4)+termdat32*dh1zxy*dh1zxx
523 . -(third)*dh1zxx*dh2zxy-(third)*dh1zxy*dh2zxx
524 dat32(i,1,5)=dat32(i,1,5)+termdat32*dh1zyz*dh1zxx
525 . -(third)*dh1zxx*dh2zyz-(third)*dh1zyz*dh2zxx
526 dat32(i,1,6)=dat32(i,1,6)+termdat32*dh1zzx*dh1zxx
527 . -(third)*dh1zxx*dh2zzx-(third)*dh1zzx*dh2zxx
529 dat32(i,2,1)=dat32(i,2,1)+termdat32*dh1zxx*dh1zyy
530 . -(third)*dh1zyy*dh2zxx-(third)*dh1zxx*dh2zyy
531 dat32(i,2,2)=dat32(i,2,2)+termdat32*dh1zyy*dh1zyy
532 . -(third)*dh1zyy*dh2zyy-(third)*dh1zyy*dh2zyy
533 dat32(i,2,3)=dat32(i,2,3)+termdat32*dh1zzz*dh1zyy
534 . -(third)*dh1zyy*dh2zzz-(third)*dh1zzz*dh2zyy
535 dat32(i,2,4)=dat32(i,2,4)+termdat32*dh1zxy*dh1zyy
536 . -(third)*dh1zyy*dh2zxy-(third)*dh1zxy*dh2zyy
537 dat32(i,2,5)=dat32(i,2,5)+termdat32*dh1zyz*dh1zyy
538 . -(third)*dh1zyy*dh2zyz-(third)*dh1zyz*dh2zyy
539 dat32(i,2,6)=dat32(i,2,6)+termdat32*dh1zzx*dh1zyy
540 . -(third)*dh1zyy*dh2zzx-(third)*dh1zzx*dh2zyy
542 dat32(i,3,1)=dat32(i,3,1)+termdat32*dh1zxx*dh1zzz
543 . -(third)*dh1zzz*dh2zxx-(third)*dh1zxx*dh2zzz
544 dat32(i,3,2)=dat32(i,3,2)+termdat32*dh1zyy*dh1zzz
545 . -(third)*dh1zzz*dh2zyy-(third)*dh1zyy*dh2zzz
546 dat32(i,3,3)=dat32(i,3,3)+termdat32*dh1zzz*dh1zzz
547 . -(third)*dh1zzz*dh2zzz-(third)*dh1zzz*dh2zzz
548 dat32(i,3,4)=dat32(i,3,4)+termdat32*dh1zxy*dh1zzz
549 . -(third)*dh1zzz*dh2zxy-(third)*dh1zxy*dh2zzz
550 dat32(i,3,5)=dat32(i,3,5)+termdat32*dh1zyz*dh1zzz
551 . -(third)*dh1zzz*dh2zyz-(third)*dh1zyz*dh2zzz
552 dat32(i,3,6)=dat32(i,3,6)+termdat32*dh1zzx*dh1zzz
553 . -(third)*dh1zzz*dh2zzx-(third)*dh1zzx*dh2zzz
555 dat32(i,4,1)=dat32(i,4,1)+termdat32*dh1zxx*dh1zxy
556 . -(third)*dh1zxy*dh2zxx-(third)*dh1zxx*dh2zxy
557 dat32(i,4,2)=dat32(i,4,2)+termdat32*dh1zyy*dh1zxy
558 . -(third)*dh1zxy*dh2zyy-(third)*dh1zyy*dh2zxy
559 dat32(i,4,3)=dat32(i,4,3)+termdat32*dh1zzz*dh1zxy
560 . -(third)*dh1zxy*dh2zzz-(third)*dh1zzz*dh2zxy
561 dat32(i,4,4)=dat32(i,4,4)+termdat32*dh1zxy*dh1zxy
562 . -(third)*dh1zxy*dh2zxy-(third)*dh1zxy*dh2zxy
563 dat32(i,4,5)=dat32(i,4,5)+termdat32*dh1zyz*dh1zxy
564 . -(third)*dh1zxy*dh2zyz-(third)*dh1zyz*dh2zxy
565 dat32(i,4,6)=dat32(i,4,6)+termdat32*dh1zzx*dh1zxy
566 . -(third)*dh1zxy*dh2zzx-(third)*dh1zzx*dh2zxy
568 dat32(i,5,1)=dat32(i,5,1)+termdat32*dh1zxx*dh1zyz
569 . -(third)*dh1zyz*dh2zxx-(third)*dh1zxx*dh2zyz
570 dat32(i,5,2)=dat32(i,5,2)+termdat32*dh1zyy*dh1zyz
571 . -(third)*dh1zyz*dh2zyy-(third)*dh1zyy*dh2zyz
572 dat32(i,5,3)=dat32(i,5,3)+termdat32*dh1zzz*dh1zyz
573 . -(third)*dh1zyz*dh2zzz-(third)*dh1zzz*dh2zyz
574 dat32(i,5,4)=dat32(i,5,4)+termdat32*dh1zxy*dh1zyz
575 . -(third)*dh1zyz*dh2zxy-(third)*dh1zxy*dh2zyz
576 dat32(i,5,5)=dat32(i,5,5)+termdat32*dh1zyz*dh1zyz
577 . -(third)*dh1zyz*dh2zyz-(third)*dh1zyz*dh2zyz
578 dat32(i,5,6)=dat32(i,5,6)+termdat32*dh1zzx*dh1zyz
579 . -(third)*dh1zyz*dh2zzx-(third)*dh1zzx*dh2zyz
581 dat32(i,6,1)=dat32(i,6,1)+termdat32*dh1zxx*dh1zzx
582 . -(third)*dh1zzx*dh2zxx-(third)*dh1zxx*dh2zzx
583 dat32(i,6,2)=dat32(i,6,2)+termdat32*dh1zyy*dh1zzx
584 . -(third)*dh1zzx*dh2zyy-(third)*dh1zyy*dh2zzx
585 dat32(i,6,3)=dat32(i,6,3)+termdat32*dh1zzz*dh1zzx
586 . -(third)*dh1zzx*dh2zzz-(third)*dh1zzz*dh2zzx
587 dat32(i,6,4)=dat32(i,6,4)+termdat32*dh1zxy*dh1zzx
588 . -(third)*dh1zzx*dh2zxy-(third)*dh1zxy*dh2zzx
589 dat32(i,6,5)=dat32(i,6,5)+termdat32*dh1zyz*dh1zzx
590 . -(third)*dh1zzx*dh2zyz-(third)*dh1zyz*dh2zzx
591 dat32(i,6,6)=dat32(i,6,6)+termdat32*dh1zzx*dh1zzx
592 . -(third)*dh1zzx*dh2zzx-(third)*dh1zzx*dh2zzx
596 d2acos_daa32 = - aa3(i) - (aa3(i)**3)/two - (aa3(i)**5)/eight -
597 . (aa3(i)**7)/48.0d0 - (aa3
598 d2a_dt22 = (j3(i)*j2(i)/36.0d0)*(one/sqrt(((j2(i)**3)/twenty7)**3))*(five/two
599 d2a_dt3dt2 = -(j2(i)**2)/(36.0d0*sqrt(((j2(i)**3)/twenty7)**3))
600 d2a_dt2dt3 = -((j2(i)**2)/36.0d0)*(one/sqrt(((j2(i)**3)/twenty7)**3))
603 da2(i,j,k) = d2acos_daa32*((daa3dt3*dat3(i,k) + daa3dt2*dat2(i,k))*
604 . (daa3dt3*dat3(i,j) + daa3dt2*dat2(i,j))) +
605 . dacos_daa3*(d2a_dt3dt2*dat2(i,j)*dat3(i,k) +
606 . d2a_dt2dt3*dat3(i,j)*dat2(i,k) +
607 . d2a_dt22*dat2(i,j)*dat2(i,k))
622 ac = cos(-teta +(l-1)*two*pi*third)
623 as = sin(-teta +(l-1)*two*pi*third)
624 aa2(i)= sqrt(j2(i)*third)
627 t1=(-one/six/aa2(i)**3*third)* ac * dat2(i,j)*dat2(i,k)
628 t2=( third/aa2(i)) * ac * dat22(i,j,k)
629 t3=(one/nine/aa2(i)) * as * dat2(i,k) * da(i,j)
630 t4=(one/nine/aa2(i)) * as * dat2(i,j) * da(i,k)
631 t5=(-two/nine) *aa2(i) * ac * da(i,j) * da(i,k)
632 t6=(two*third) *aa2(i) * as * da2(i,j,k)
633 dsecond(i,l,j,k) = t1 + t2 + t3 + t4 + t5 + t6
654 strainrate(1:nel,1)= zero
655 strainrate(1:nel,2)= zero
656 strainrate(1:nel,3)= zero
663 volstr(i) = one-jac(i)
666 alambda(i,1)=sqrt(two*z1(i)+one)
667 alambda(i,2)=sqrt(two*z2(i)+one)
668 alambda(i,3)=sqrt(two*z3(i)+one)
673 epsilon(i,1) = one - alambda(i,1)
674 epsilon(i,2) = one - alambda(i,2)
675 epsilon(i,3) = one - alambda(i,3)
681 strainrate(i,1)= abs(drate(i,1))
682 strainrate(i,2)= abs(drate(i,2))
683 strainrate(i,3)= abs(drate(i,3))
696 IF (ndim_table == 1)
THEN
697 xvec1(1:nel,1) = epsilon(1:nel,1)
698 ipos1(1:nel,1) = vartmp(1:nel,1)
700 vartmp(1:nel,1) = ipos1(1:nel,1)
701 fsig1(1:nel) = fsig1(1:nel)*scal
702 dsig1(1:nel) = dsig1(1:nel)*scal
704 xvec1(1:nel,1) = epsilon(1:nel,2)
705 ipos1(1:nel,1) = vartmp(1:nel,3)
707 vartmp(1:nel,3) = ipos1(1:nel,1)
708 fsig2(1:nel) = fsig2(1:nel)*scal
709 dsig2(1:nel) = dsig2(1:nel)*scal
711 xvec1(1:nel,1) = epsilon(1:nel,3)
712 ipos1(1:nel,1) = vartmp(1:nel,5)
714 vartmp(1:nel,5) = ipos1(1:nel,1)
715 fsig3(1:nel) = fsig3(1:nel)*scal
716 dsig3(1:nel) = dsig3(1:nel)*scal
719 ELSEIF (ndim_table == 2)
THEN
720 xvec2(1:nel,1) = epsilon(1:nel,1)
721 xvec2(1:nel,2) = zero
722 ipos2(1:nel,1) = vartmp(1:nel,1)
725 vartmp(1:nel,1) = ipos2(1:nel,1)
726 fsig1(1:nel) = fsig1(1:nel)*scal
727 dsig1(1:nel) = dsig1(1:nel)*scal
729 xvec2(1:nel,1) = epsilon(1:nel,2)
730 xvec2(1:nel,2) = zero
731 ipos2(1:nel,1) = vartmp(1:nel,3)
734 vartmp(1:nel,3) = ipos2(1:nel,1)
735 fsig2(1:nel) = fsig2(1:nel)*scal
736 dsig2(1:nel) = dsig2(1:nel)*scal
738 xvec2(1:nel,1) = epsilon(1:nel,3)
739 xvec2(1:nel,2) = zero
740 ipos2(1:nel,1) = vartmp(1:nel,5)
743 vartmp(1:nel,5) = ipos2(1:nel,1)
744 fsig3(1:nel) = fsig3(1:nel)*scal
745 dsig3(1:nel) = dsig3(1:nel)*scal
748 ELSEIF (ndim_table == 3)
THEN
750 xvec(1:nel,1) = epsilon(1:nel,1)
752 xvec(1:nel,3) = volstr(1:nel)
753 ipos(1:nel,1) = vartmp(1:nel,1)
755 ipos(1:nel,3) = vartmp(1:nel,2)
757 vartmp(1:nel,1) = ipos(1:nel,1)
758 vartmp(1:nel,2) = ipos(1:nel,3)
759 fsig1(1:nel) = fsig1(1:nel)*scal
760 dsig1(1:nel) = dsig1(1:nel)*scal
762 xvec(1:nel,1) = epsilon(1:nel,2)
764 xvec(1:nel,3) = volstr(1:nel)
765 ipos(1:nel,1) = vartmp(1:nel,3)
767 ipos(1:nel,3) = vartmp(1:nel,4)
769 vartmp(1:nel,3) = ipos(1:nel,1)
770 vartmp(1:nel,4) = ipos(1:nel,3)
771 fsig2(1:nel) = fsig2(1:nel)*scal
772 dsig2(1:nel) = dsig2(1:nel)*scal
774 xvec(1:nel,1) = epsilon(
776 xvec(1:nel,3) = volstr(1:nel)
777 ipos(1:nel,1) = vartmp(1:nel,5)
779 ipos(1:nel,3) = vartmp(1:nel,6)
781 vartmp(1:nel,5) = ipos(1:nel,1)
782 vartmp(1:nel,6) = ipos(1:nel,3)
783 fsig3(1:nel) = fsig3(1:nel)*scal
784 dsig3(1:nel) = dsig3(1:nel)*scal
789 sigma(i,1) = fsig1(i)
790 slope(i,1) = dsig1(i)
792 sigma(i,2) = fsig2(i)
793 slope(i,2) = dsig2(i)
795 sigma(i,3) = fsig3(i)
796 slope(i,3) = dsig3(i)
803 IF (ndim_table == 1)
THEN
805 xvec1(1:nel,1) = epsilon(1:nel,1)
806 ipos1(1:nel,1) = vartmp(1:nel,7)
808 vartmp(1:nel,7) = ipos1(1:nel,1)
809 fsig1(1:nel) = fsig1(1:nel)*scal
810 dsig1(1:nel) = dsig1(1:nel)*scal
814 xvec1(1:nel,1) = epsilon(1:nel,2)
815 ipos1(1:nel,1) = vartmp(1:nel,10)
817 vartmp(1:nel,10) = ipos1(1:nel,1)
818 fsig2(1:nel) = fsig2(1:nel)*scal
819 dsig2(1:nel) = dsig2(1:nel)*scal
823 xvec1(1:nel,1) = epsilon(1:nel,3)
824 ipos1(1:nel,1) = vartmp(1:nel,13)
826 vartmp(1:nel,13) = ipos1(1:nel,1)
827 fsig3(1:nel) = fsig3(1:nel)*scal
828 dsig3(1:nel) = dsig3(1:nel)*scal
831 ELSEIF (ndim_table == 2)
THEN
833 xvec2(1:nel,1) = epsilon(1:nel,1)
834 xvec2(1:nel,2) = strainrate(1:nel,1) / xscal
835 ipos2(1:nel,1) = vartmp(1:nel,7)
836 ipos2(1:nel,2) = vartmp(1:nel,8)
838 vartmp(1:nel,7) = ipos2(1:nel,1)
839 vartmp(1:nel,8) = ipos2(1:nel,2)
840 fsig1(1:nel) = fsig1(1:nel)*scal
841 dsig1(1:nel) = dsig1(1:nel)*scal
843 xvec2(1:nel,1) = epsilon(1:nel,2)
844 xvec2(1:nel,2) = strainrate(1:nel,2) / xscal
845 ipos2(1:nel,1) = vartmp(1:nel,10)
846 ipos2(1:nel,2) = vartmp(1:nel,11)
848 vartmp(1:nel,10) = ipos2(1:nel,1)
849 vartmp(1:nel,11) = ipos2(1:nel,2)
850 fsig2(1:nel) = fsig2(1:nel)*scal
851 dsig2(1:nel) = dsig2(1:nel)*scal
853 xvec2(1:nel,1) = epsilon(1:nel,3)
854 xvec2(1:nel,2) = strainrate(1:nel,3) / xscal
855 ipos2(1:nel,1) = vartmp(1:nel,13)
856 ipos2(1:nel,2) = vartmp(1:nel,14)
858 vartmp(1:nel,13) = ipos2(1:nel,1)
859 vartmp(1:nel,14) = ipos2(1:nel,2)
860 fsig3(1:nel) = fsig3(1:nel)*scal
861 dsig3(1:nel) = dsig3(1:nel)*scal
864 ELSEIF (ndim_table == 3)
THEN
866 xvec(1:nel,1) = epsilon(1:nel,1)
867 xvec(1:nel,2) = strainrate(1:nel,1) / xscal
868 xvec(1:nel,3) = volstr(1:nel)
870 ipos(1:nel,1) = vartmp(1:nel,7)
871 ipos(1:nel,2) = vartmp(1:nel,8)
872 ipos(1:nel,3) = vartmp(1:nel,9)
874 vartmp(1:nel,7) = ipos(1:nel,1)
875 vartmp(1:nel,8) = ipos(1:nel,2)
876 vartmp(1:nel,9) = ipos(1:nel,3)
877 fsig1(1:nel) = fsig1(1:nel)*scal
878 dsig1(1:nel) = dsig1(1:nel)*scal
882 xvec(1:nel,1) = epsilon(1:nel,2)
883 xvec(1:nel,2) = strainrate(1:nel,2) / xscal
884 xvec(1:nel,3) = volstr(1:nel)
885 ipos(1:nel,1) = vartmp(1:nel,10)
886 ipos(1:nel,2) = vartmp(1:nel,11)
887 ipos(1:nel,3) = vartmp(1:nel,12)
889 vartmp(1:nel,10) = ipos(1:nel,1)
890 vartmp(1:nel,11) = ipos(1:nel,2)
891 vartmp(1:nel,12) = ipos(1:nel,3)
892 fsig2(1:nel) = fsig2(1:nel)*scal
893 dsig2(1:nel) = dsig2(1:nel)*scal
897 xvec(1:nel,1) = epsilon(1:nel,3)
898 xvec(1:nel,2) = strainrate(1:nel,3) / xscal
899 xvec(1:nel,3) = volstr(1:nel)
900 ipos(1:nel,1) = vartmp(1:nel,13)
901 ipos(1:nel,2) = vartmp(1:nel,14)
902 ipos(1:nel,3) = vartmp(1:nel,15)
904 vartmp(1:nel,13) = ipos(1:nel,1)
905 vartmp(1:nel,14) = ipos(1:nel,2)
906 vartmp(1:nel,15) = ipos(1:nel,3)
907 fsig3(1:nel) = fsig3(1:nel)*scal
908 dsig3(1:nel) = dsig3(1:nel)*scal
916 dynsigma(i,1) = fsig1(i)
917 dynsigma(i,2) = fsig2(i)
918 dynsigma(i,3) = fsig3(i)
919 yld(i) = sqrt(dynsigma(i,1)**2 + dynsigma(i,2)**2 + dynsigma(i,3)**2 )
923 sik(i,1)=-sigma(i,1)/
max(alambda(i,1),em20)
924 sik(i,2)=-sigma(i,2)/
max(alambda(i,2),em20)
925 sik(i,3)=-sigma(i,3)/
max(alambda(i,3),em20)
929 dik(i,1) = slope(i,1)/
max(alambda(i,1)**2,em20)+sigma(i,1)/
max(alambda(i,1)**3,em20)
930 dik(i,2) = slope(i,2)/
max(alambda(i,2)**2,em20)+sigma(i,2)/
max(alambda(i,2)**3,em20)
937 drate(i,1)=-(dynsigma(i,1)-sigma(i,1))/
max(alambda(i,1),em20)
938 drate(i,2)=-(dynsigma(i,2)-sigma(i,2))/
max(alambda(i,2),em20)
939 drate(i,3)=-(dynsigma(i,3)-sigma(i,3))/
max(alambda(i,3),em20)
959 cijkl(i,j,k)=cijkl(i,j,k)
960 . + dfirst(i,l,j)*dfirst(i,l,k)*dik(i,l)
961 . + dsecond(i,l,j,k)* sik(i,l)
973 cijkl(i,j,k)=cijkl(i,j,k
988 cijkl(i,j,k)=cijkl(i,j,k)*half