36 1 NEL , NUPARAM, NUVAR , NFUNC , IFUNC , NPF ,
37 2 TF , TIME , TIMESTEP, UPARAM, RHO0 , RHO ,
39 4 EPSPXX , EPSPYY , EPSPZZ , EPSPXY, EPSPYZ, EPSPZX,
40 5 DEPSXX , DEPSYY , DEPSZZ , DEPSXY, DEPSYZ, DEPSZX,
41 6 EPSXX , EPSYY , EPSZZ , EPSXY , EPSYZ , EPSZX ,
42 7 SIGOXX , SIGOYY , SIGOZZ , SIGOXY, SIGOYZ, SIGOZX,
43 8 SIGNXX , SIGNYY , SIGNZZ , SIGNXY, SIGNYZ, SIGNZX,
44 9 SIGVXX , SIGVYY , SIGVZZ , SIGVXY, SIGVYZ, SIGVZX,
45 A SOUNDSP, VISCMAX, UVAR , OFF )
50#include "implicit_f.inc"
60 INTEGER NEL, NUPARAM, NUVAR
62 . TIME , TIMESTEP , UPARAM(),
63 . RHO (NEL), RHO0 (NEL), VOLUME(NEL), EINT(NEL),
64 . EPSPXX(NEL), EPSPYY(NEL), EPSPZZ(NEL),
65 . EPSPXY(NEL), EPSPYZ(NEL), EPSPZX(NEL),
66 . DEPSXX(NEL), DEPSYY(NEL), DEPSZZ(NEL),
67 . DEPSXY(NEL), DEPSYZ(NEL), DEPSZX(NEL),
68 . EPSXX (NEL), EPSYY (NEL), EPSZZ (NEL),
69 . EPSXY (NEL), EPSYZ (NEL), EPSZX (NEL),
70 . sigoxx(nel), sigoyy(nel), sigozz(nel),
71 . sigoxy(nel), sigoyz(nel), sigozx(nel)
76 . signxx(nel), signyy(nel), signzz(nel),
77 . signxy(nel), signyz(nel), signzx(nel),
78 . sigvxx(nel), sigvyy(nel), sigvzz(nel),
79 . sigvxy(nel), sigvyz(nel), sigvzx(nel),
80 . soundsp(nel), viscmax(nel)
84 my_real uvar(nel,nuvar), off(nel)
88 INTEGER (*), NFUNC, IFUNC(NFUNC)
97 . EY,C1,C2,ET,VMU,VMU0
99 . , axx,bxx,cxx,ayy,byy,cyy,azz,bzz,czz
100 . , axy,bxy,cxy,ayz,byz,cyz,azx,bzx,czx
101 . , c1xx,c2xx,etxx,vmuxx, c1yy,c2yy,etyy,vmuyy
102 . , c1xy,c2xy,gtxy,vmuxy, c1yz,c2yz,gtyz,vmuyz
103 . , c1zx,c2zx,gtzx,vmuzx, p0
104 . , s(3,3),sigpr(3),dirpr(3,3)
105 . , c1zz,c2zz,etzz,vmuzz,sigt_cutoff,sigc_cutoff
107 . e(mvsiz),edot(mvsiz),dav,e1,e2,e3,e4,e5,e6,epsp
108 . , epet(mvsiz),emet(mvsiz),epets(mvsiz),emets(mvsiz)
109 . , emxx(mvsiz),emyy(mvsiz),emzz(mvsiz)
110 . , gmxy(mvsiz),gmyz(mvsiz),gmzx(mvsiz)
111 . , epetxx(mvsiz),epetyy(mvsiz),epetzz(mvsiz)
112 . , emetxx(mvsiz),emetyy(mvsiz),emetzz(mvsiz)
113 . , gpgtxy(mvsiz),gpgtyz(mvsiz),gpgtzx(mvsiz
114 . , gmgtxy(mvsiz),gmgtyz(mvsiz),gmgtzx(mvsiz)
115 . , syxx(mvsiz),syyy(mvsiz),syzz(mvsiz)
116 . , syxy(mvsiz),syyz(mvsiz),syzx(mvsiz)
117 . , sigair(mvsiz),gama(mvsiz),syield(mvsiz)
118 . , sigsxx(mvsiz),sigsyy(mvsiz),sigszz(mvsiz)
119 . , sigsxy(mvsiz),sigsyz(mvsiz),sigszx(mvsiz)
120 . , dexx(mvsiz),deyy(mvsiz),dezz(mvsiz)
121 . , dexy(mvsiz),deyz(mvsiz),dezx(mvsiz)
122 . , dedtxx(mvsiz),dedtyy(mvsiz),dedtzz(mvsiz)
123 . , dedtxy(mvsiz),dedtyz(mvsiz),dedtzx(mvsiz)
124 . , dsdtxx(mvsiz),dsdtyy(mvsiz),dsdtzz(mvsiz)
125 . , dsdtxy(mvsiz),dsdtyz(mvsiz),dsdtzx(mvsiz)
128 . sigv(mvsiz,6), sigprv(mvsiz,3), dirprv(mvsiz,3,3)
155 gama(i) = rho0(i)/rho(i)-one+gama0
156 var = -(p0*gama(i))/(one+gama(i)-phi+em15)
157 sigair(i) =
max(zero,var)
169 syield(i)=fac*finter(ifunc(1),gama(i),npf,tf,b*c)
171 syield(i) = abs(a+b*(one+c*gama(i)))
174 dav = (epspxx(i)+epspyy(i)+epspzz(i))*third
181 epsp =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
182 epsp = sqrt(three*epsp)/three_half
183 syield(i) = fac1*syield(i)*(finter(ifunc(2),epsp,npf,tf,b*c))
188 sigsxx(i)=sigoxx(i)+sigair(i)
189 sigsyy(i)=sigoyy(i)+sigair(i)
190 sigszz(i)=sigozz(i)+sigair(i)
198 sigsxx(i)=sigsxx(i)+ey*epspxx(i)*timestep
199 sigsyy(i)=sigsyy(i)+ey*epspyy(i)*timestep
200 sigszz(i)=sigszz(i)+ey*epspzz(i)*timestep
201 sigsxy(i)=sigsxy(i)+ey*epspxy(i)*timestep*half
202 sigsyz(i)=sigsyz(i)+ey*epspyz(i)*timestep*half
203 sigszx(i)=sigszx(i)+ey*epspzx(i)*timestep*half
219 sigpr(1)=
min(syield(i),abs(sigpr(1)))*sign(one,sigpr(1))
221 sigpr(3)=
min(syield(i),abs(sigpr(3)))*sign(one,sigpr(3))
227 IF(k==l) s(k,l)= sigpr(k)
229 CALL dreh(s,dirpr,1,1,1)
242 sigv(i,1) = sigsxx(i)
243 sigv(i,2) = sigsyy(i)
244 sigv(i,3) = sigszz(i)
245 sigv(i,4) = sigsxy(i)
246 sigv(i,5) = sigsyz(i)
247 sigv(i,6) = sigszx(i)
257 sigprv(i,1)=sign(
min(syield(i),abs(sigprv(i,1))),sigprv(i,1))
258 sigprv(i,2)=sign(
min(syield(i),abs(sigprv(i,2))),sigprv(i,2))
259 sigprv(i,3)=sign(
min(syield(i),abs(sigprv(i,3))),sigprv(i,3))
261 sigsxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*sigprv(i,1)
262 . + dirprv(i,1,2)*dirprv(i,1,2)*sigprv(i,2)
263 . + dirprv(i,1,3)*dirprv(i,1,3)*sigprv(i,3)
264 sigsyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*sigprv(i,2)
265 . + dirprv(i,2,3)*dirprv(i,2,3)*sigprv(i,3)
266 . + dirprv(i,2,1)*dirprv(i,2,1)*sigprv(i,1)
267 sigszz(i) = dirprv(i,3,3)*dirprv(i,3,3)*sigprv(i,3)
268 . + dirprv(i,3,1)*dirprv(i,3,1)*sigprv(i,1)
269 . + dirprv(i,3,2)*dirprv(i,3,2)*sigprv(i,2)
270 sigsxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*sigprv(i,1)
271 . + dirprv(i,1,2)*dirprv(i,2,2)*sigprv(i,2)
272 . + dirprv(i,1,3)*dirprv(i,2,3)*sigprv(i,3)
273 sigsyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*sigprv(i,2)
274 . + dirprv(i,2,3)*dirprv(i,3,3)*sigprv(i,3)
275 . + dirprv(i,2,1)*dirprv(i,3,1)*sigprv(i,1)
276 sigszx(i) = dirprv(i,3,3)*dirprv(i,1,3)*sigprv(i,3)
277 . + dirprv(i,3,1)*dirprv(i,1,1)*sigprv(i,1)
278 . + dirprv(i,3,2)*dirprv(i,1,2)*sigprv(i,2)
284 signxx(i)=off(i)*sigsxx(i)-sigair(i)
285 signyy(i)=off(i)*sigsyy(i)-sigair
286 signzz(i)=off(i)*sigszz(i)-sigair(i)
287 signxy(i)=off(i)*sigsxy(i)
288 signyz(i)=off(i)*sigsyz(i)
289 signzx(i)=off(i)*sigszx(i)
291 soundsp(i)=sqrt(ey/rho0(i))
308 & abs(epspxx(i)),abs(epspyy(i)),abs(epspzz(i)),
309 & abs(epspxy(i)),abs(epspyz(i)),abs(epspzx(i)))
312 epet(i)=(e(i)+et)/vmu
313 emet(i)=(e(i)*et)/vmu
314 epets(i)=(e(i)+et)/vmu0
315 emets(i)=two*(e(i)*et)/vmu0
321 syield(i)=fac*finter(ifunc(1),gama(i),npf,tf,b*c)
323 syield(i) = abs(a+b*(one+c*gama(i)))
326 dav = (epspxx(i)+epspyy(i)+epspzz(i))*third
333 epsp =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
334 epsp = sqrt(three*epsp)/three_half
335 syield(i) = fac1*syield(i)*(finter(ifunc(2),epsp,npf,tf,b*c))
340 sigsxx(i)=sigoxx(i)+sigair(i)
341 sigsyy(i)=sigoyy(i)+sigair(i)
342 sigszz(i)=sigozz(i)+sigair(i)
350 dexy(i)=epsxy(i)* half
351 deyz(i)=epsyz(i)* half
352 dezx(i)=epszx(i)* half
357 dedtxy(i)=epspxy(i) * half
358 dedtyz(i)=epspyz(i) * half
359 dedtzx(i)=epspzx(i) * half
363 dsdtxx(i)=e(i)*dedtxx(i)-epet(i)*sigsxx(i)+emet(i)*dexx(i)
364 dsdtyy(i)=e(i)*dedtyy(i)-epet(i)*sigsyy(i)+emet(i)*deyy(i)
365 dsdtzz(i)=e(i)*dedtzz(i)-epet(i)*sigszz(i)+emet(i)*dezz(i)
366 dsdtxy(i)=e(i)*dedtxy(i)-epets(i)*sigsxy(i)+emets(i)*dexy(i)
367 dsdtyz(i)=e(i)*dedtyz(i)-epets(i)*sigsyz(i
368 dsdtzx(i)=e(i)*dedtzx(i)-epets(i)*sigszx(i)+emets(i)*dezx(i)
373 sigsxx(i)=sigsxx(i)+dsdtxx(i)*timestep
374 sigsyy(i)=sigsyy(i)+dsdtyy(i)*timestep
375 sigszz(i)=sigszz(i)+dsdtzz(i)*timestep
376 sigsxy(i)=sigsxy(i)+dsdtxy(i)*timestep
377 sigsyz(i)=sigsyz(i)+dsdtyz(i)*timestep
378 sigszx(i)=sigszx(i)+dsdtzx(i)*timestep
396 sigpr(1)=
min(syield(i),abs(sigpr(1)))*sign(one,sigpr(1))
397 sigpr(2)=
min(syield(i),abs(sigpr(2)))*sign(one,sigpr(2))
398 sigpr(3)=
min(syield(i),abs(sigpr(3)))*sign(one,sigpr(3))
404 IF(k==l) s(k,l)= sigpr(k)
406 CALL dreh(s,dirpr,1,1,1)
418 sigv(i,1) = sigsxx(i)
419 sigv(i,2) = sigsyy(i)
420 sigv(i,3) = sigszz(i)
421 sigv(i,4) = sigsxy(i)
422 sigv(i,5) = sigsyz(i)
423 sigv(i,6) = sigszx(i)
428 sigprv(i,1)=sign(
min(syield(i),abs(sigprv(i,1))),sigprv(i,1))
429 sigprv(i,2)=sign(
min(syield(i),abs(sigprv(i,2))),sigprv(i,2))
430 sigprv(i,3)=sign(
min(syield(i),abs(sigprv(i,3))),sigprv(i,3))
432 sigsxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*sigprv(i,1)
433 . + dirprv(i,1,2)*dirprv(i,1,2)*sigprv(i,2)
434 . + dirprv(i,1,3)*dirprv(i,1,3)*sigprv(i,3)
435 sigsyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*sigprv(i,2)
436 . + dirprv(i,2,3)*dirprv(i,2,3)*sigprv(i,3)
437 . + dirprv(i,2,1)*dirprv(i,2,1)*sigprv(i,1)
438 sigszz(i) = dirprv(i,3,3)*dirprv(i,3,3)*sigprv(i,3)
439 . + dirprv(i,3,1)*dirprv(i,3,1)*sigprv(i,1)
440 . + dirprv(i,3,2)*dirprv(i,3,2)*sigprv(i,2)
441 sigsxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*sigprv(i,1)
443 . + dirprv(i,1,3)*dirprv(i,2,3)*sigprv(i,3)
444 sigsyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*sigprv(i,2)
445 . + dirprv(i,2,3)*dirprv(i,3,3)*sigprv
446 . + dirprv(i,2,1)*dirprv(i,3,1)*sigprv(i,1)
447 sigszx(i) = dirprv(i,3,3)*dirprv(i,1,3)*sigprv(i,3)
448 . + dirprv(i,3,1)*dirprv(i,1,1)*sigprv(i,1)
449 . + dirprv(i,3,2)*dirprv(i,1,2)*sigprv(i,2)
456 signxx(i)=off(i)*sigsxx(i)-sigair(i)
457 signyy(i)=off(i)*sigsyy(i)-sigair(i)
458 signzz(i)=off(i)*sigszz(i)-sigair(i)
459 signxy(i)=off(i)*sigsxy(i)
461 signzx(i)=off(i)*sigszx(i)
463 soundsp(i)=sqrt(e(i)/rho0(i))
470 sigt_cutoff = uparam(11)
471 sigc_cutoff = sigt_cutoff
474 syield(i)=fac*finter(ifunc(1),gama(i),npf,tf,b*c)
476 syield(i) = abs(a+b*(one+c*gama(i)))
478 IF(gama(i) > zero .AND. (gama(i)-uvar(i,1)) < zero) sigc_cutoff = zero
480 dav = (epspxx(i)+epspyy(i)+epspzz(i))*third
487 epsp =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6
488 epsp = sqrt(three*epsp)/three_half
489 syield(i) = fac1*syield(i)*(finter(ifunc(2),epsp,npf,tf,b*c))
494 sigsxx(i)=sigoxx(i)+sigair(i)
495 sigsyy(i)=sigoyy(i)+sigair(i)
496 sigszz(i)=sigozz(i)+sigair(i)
504 sigsxx(i)=sigsxx(i)+ey*epspxx(i)*timestep
505 sigsyy(i)=sigsyy(i)+ey*epspyy(i)*timestep
506 sigszz(i)=sigszz(i)+ey*epspzz(i)*timestep
507 sigsxy(i)=sigsxy(i)+ey*epspxy(i)*timestep*half
508 sigsyz(i)=sigsyz(i)+ey*epspyz(i)*timestep*half
509 sigszx(i)=sigszx(i)+ey*epspzx(i)*timestep*half
512 sigv(i,1) = sigsxx(i)
513 sigv(i,2) = sigsyy(i)
514 sigv(i,3) = sigszz(i)
515 sigv(i,4) = sigsxy(i)
516 sigv(i,5) = sigsyz(i)
517 sigv(i,6) = sigszx(i)
527 IF(abs(gama(i)) < em10)
THEN
528 sigprv(i,1)=sign(
min(abs(sigprv(i,1)), sigt_cutoff),sigprv(i,1))
529 sigprv(i,2)=sign(
min(abs(sigprv(i,2)), sigt_cutoff),sigprv(i,2))
530 sigprv(i,3)=sign(
min(abs(sigprv(i,3)), sigt_cutoff),sigprv(i,3))
531 ELSEIF(gama(i) < zero )
then
533 sigprv(i,1)=sign(
min(syield(i),abs(sigprv(i,1))),sigprv(i,1))
534 sigprv(i,2)=sign(
min(syield(i),abs(sigprv(i,2))),sigprv(i,2))
535 sigprv(i,3)=sign(
min(syield(i),abs(sigprv(i,3))),sigprv(i,3))
537 sigprv(i,1)=
min(sigprv(i,1), sigt_cutoff)
538 sigprv(i,2)=
min(sigprv(i,2), sigt_cutoff)
539 sigprv(i,3)=
min(sigprv(i,3), sigt_cutoff)
543 sigprv(i,2)=sign(
min(abs(sigprv(i,2)), sigt_cutoff),sigprv(i,2))
544 sigprv(i,3)=sign(
min(abs(sigprv(i,
549 sigprv(i,1)=
max(sigprv(i,1), zero)
550 sigprv(i,2)=
max(sigprv(i,2), zero)
551 sigprv(i,3)=
max(sigprv(i,3), zero)
555 sigsxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*sigprv(i,1)
556 . + dirprv(i,1,2)*dirprv(i,1,2)*sigprv(i,2)
557 . + dirprv(i,1,3)*dirprv(i,1,3)*sigprv(i,3)
559 sigsyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*sigprv(i,2)
560 . + dirprv(i,2,3)*dirprv(i,2,3)*sigprv(i,3)
561 . + dirprv(i,2,1)*dirprv(i,2,1)*sigprv(i,1)
563 sigszz(i) = dirprv(i,3,3)*dirprv(i,3,3)*sigprv(i,3)
564 . + dirprv(i,3,1)*dirprv(i,3,1)*sigprv(i,1)
565 . + dirprv(i,3,2)*dirprv(i,3,2)*sigprv(i,2)
567 sigsxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*sigprv(i,1)
568 . + dirprv(i,1,2)*dirprv(i,2,2)*sigprv(i,2)
569 . + dirprv(i,1,3)*dirprv(i,2,3)*sigprv(i,3)
571 sigsyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*sigprv(i,2)
572 . + dirprv(i,2,3)*dirprv(i,3,3)*sigprv(i,3)
573 . + dirprv(i,2,1)*dirprv(i,3,1)*sigprv(i,1)
575 sigszx(i) = dirprv(i,3,3)*dirprv(i,1,3)*sigprv(i,3)
576 . + dirprv(i,3,1)*dirprv(i,1,1)*sigprv(i,1)
577 . + dirprv(i,3,2)*dirprv(i,1,2)*sigprv(i,2)
584 signxx(i)=off(i)*sigsxx(i)-sigair(i)
585 signyy(i)=off(i)*sigsyy(i)-sigair(i)
586 signzz(i)=off(i)*sigszz(i)-sigair(i)
587 signxy(i)=off(i)*sigsxy(i)
588 signyz(i)=off(i)*sigsyz(i)
589 signzx(i)=off(i)*sigszx(i)
590 soundsp(i)=sqrt(ey/rho0(i))
797#include "implicit_f.inc"
801#include "mvsiz_p.inc"
806 . sig(6,*), val(3,*), vec(9,*)
811 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
812 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
814 . CS(6), STR(3,MVSIZ), A(3,3,MVSIZ), V(3,3,MVSIZ), B(3,3,MVSIZ),
815 . xmag(3,mvsiz), pr, aa, bb, aaa(mvsiz),
816 . cc, angp, dd, ftpi, ttpi, strmax,
817 . tol1(mvsiz), tol2(mvsiz), xmaxv(mvsiz), norminf(mvsiz),
819 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
820 . a22, a23, a31, a32, a33,
821 . mdemi, xmaxinv, flm
834 flm = two*sqrt(flmin)
843 pr = -(cs(1)+cs(2)+cs(3))* third
847 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
848 & - cs(2)*cs(3) - cs(1)*cs(3)
849 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
850 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
851 norminf(nn) = em10*norminf(nn)
854 aa =
max(aaa(nn),norminf(nn))
856 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
857 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
858 & - two*cs(4)*cs(5)*cs(6)
860 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
863 angp=acos(cc) * third
864 dd=two*sqrt(aa * third)
865 str(1,nn)=dd*cos(angp)
866 str(2,nn)=dd*cos(angp+ftpi)
867 str(3,nn)=dd*cos(angp+ttpi)
869 val(1,nn) = str(1,nn)-pr
870 val(2,nn) = str(2,nn)-pr
871 val(3,nn) = str(3,nn)-pr
873 IF(abs(str(3,nn))>abs(str(1,nn))
874 & .AND.aaa(nn)>norminf(nn))
THEN
884 strmax=
max(abs(str(1,nn)),abs(str(3,nn)))
885 tol1(nn)=
max(em20,flm*strmax**2)
886 tol2(nn)=flm*strmax/3
887 a(1,1,nn)=cs(1)-str(1,nn)
888 a(2,2,nn)=cs(2)-str(1,nn)
889 a(3,3,nn)=cs(3)-str(1,nn)
897 b(1,1,nn)=a(2,1,nn)*a(3,2,nn)-a(3,1,nn)
899 b(1,2,nn)=a(2,2,nn)*a(3,3,nn)-a(3,2,nn)
901 b(1,3,nn)=a(2,3,nn)*a(3,1,nn)-a(3,3,nn)
903 b(2,1,nn)=a(3,1,nn)*a(1,2,nn)-a(1,1,nn)
905 b(2,2,nn)=a(3,2,nn)*a(1,3,nn)-a(1,2,nn)
907 b(2,3,nn)=a(3,3,nn)*a(1,1,nn)-a(1,3,nn)
909 b(3,1,nn)=a(1,1,nn)*a(2,2,nn)-a(2,1,nn)
911 b(3,2,nn)=a(1,2,nn)*a(2,3,nn)-a(2,2,nn)
913 b(3,3,nn)=a(1,3,nn)*a(2,1,nn)-a(2,3,nn)
915 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
916 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
917 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
924 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
925 IF(xmag(1,nn)==xmaxv(nn))
THEN
927 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
932 IF(aaa(nn)<norminf(nn))
THEN
933 val(1,nn) = sig(1,nn)
934 val(2,nn) = sig(2,nn)
935 val(3,nn) = sig(3,nn)
943 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
944 nindex1 = nindex1 + 1
947 nindex2 = nindex2 + 1
952#include "vectorize.inc"
956 xmaxinv = one/xmaxv(nn)
957 v(1,1,nn)=b(1,lmax,nn)*xmaxinv
958 v(2,1,nn)=b(2,lmax,nn)*xmaxinv
959 v(3,1,nn)=b(3,lmax,nn)*xmaxinv
960 a(1,1,nn)=a(1,1,nn)+str(1,nn)-str(3,nn)
961 a(2,2,nn)=a(2,2,nn)+str(1,nn)-str(3,nn)
962 a(3,3,nn)=a(3,3,nn)+str(1,nn)-str(3,nn)
964 b(1,1,nn)=a(2,1,nn)*v(3,1,nn)-a(3,1,nn)*v(2,1,nn)
965 b(1,2,nn)=a(2,2,nn)*v(3,1,nn)-a(3,2,nn)*v(2,1,nn)
966 b(1,3,nn)=a(2,3,nn)*v(3,1,nn)-a(3,3,nn)*v(2,1,nn)
967 b(2,1,nn)=a(3,1,nn)*v(1,1,nn)-a(1,1,nn)*v(3,1,nn)
968 b(2,2,nn)=a(3,2,nn)*v(1,1,nn)-a(1,2,nn)*v(3,1,nn)
969 b(2,3,nn)=a(3,3,nn)*v(1,1,nn)-a(1,3,nn)*v(3,1,nn)
970 b(3,1,nn)=a(1,1,nn)*v(2,1,nn)-a(2,1,nn)*v(1,1,nn)
971 b(3,2,nn)=a(1,2,nn)*v(2,1,nn)-a(2,2,nn)*v(1,1,nn)
972 b(3,3,nn)=a(1,3,nn)*v(2,1,nn)-a(2,3,nn)*v(1,1,nn)
973 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
974 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
975 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
977 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
980#include "vectorize.inc"
983 IF(xmag(1,nn)==xmaxv(nn))
THEN
985 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
991 vmag=sqrt(v(1,1,nn)**2+v(2,1,nn)**2)
993 IF(xmaxv(nn)>tol2(nn))
THEN
994 xmaxinv = one/xmaxv(nn)
995 v(1,3,nn)=b(1,lmax,nn)*xmaxinv
996 v(2,3,nn)=b(2,lmax,nn)*xmaxinv
997 v(3,3,nn)=b(3,lmax,nn)*xmaxinv
998 v(1,2,nn)=v(2,3,nn)*v(3,1,nn)-v(2,1,nn)*v(3,3,nn)
999 v(2,2,nn)=v(3,3,nn)*v(1,1,nn)-v(3,1,nn)*v(1,3,nn)
1000 v(3,2,nn)=v(1,3,nn)*v(2,1,nn)-v(1,1,nn)*v(2,3,nn)
1001 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1002 v(1,2,nn)=v(1,2,nn)*vmag
1003 v(2,2,nn)=v(2,2,nn)*vmag
1004 v(3,2,nn)=v(3,2,nn)*vmag
1005 ELSEIF(vmag>tol2(nn))
THEN
1006 v(1,2,nn)=-v(2,1,nn)/vmag
1007 v(2,2,nn)=v(1,1,nn)/vmag
1020 xmag(1,nn)=sqrt(a(1,1,nn)**2+a(2,1,nn)**2)
1021 xmag(2,nn)=sqrt(a(1,2,nn)**2+a(2,2,nn)**2)
1022 xmag(3,nn)=sqrt(a(1,3,nn)**2+a(2,3,nn)**2)
1024 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1027#include "vectorize.inc"
1030 IF(xmag(1,nn)==xmaxv(nn))
THEN
1032 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1039 IF(
max(abs(a(3,1,nn)),abs(a(3,2,nn)),abs(a(3,3,nn)))
1041 xmaxinv = one/xmaxv(nn)
1045 v(1,2,nn)=-a(2,lmax,nn)*xmaxinv
1046 v(2,2,nn)= a(1,lmax,nn)*xmaxinv
1049 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
1050 xmaxinv = one/xmaxv(nn)
1051 v(1,1,nn)=-a(2,lmax,nn)*xmaxinv
1052 v(2,1,nn)= a(1,lmax,nn)*xmaxinv
1054 v(1,2,nn)=-a(3,lmax,nn)*v(2,1,nn)
1055 v(2,2,nn)= a(3,lmax,nn)*v(1,1,nn)
1056 v(3,2,nn)= a(1,lmax,nn)*v(2,1,nn)-a(2,lmax,nn)*v(1,1,nn)
1057 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1058 v(1,2,nn)=v(1,2,nn)*vmag
1059 v(2,2,nn)=v(2,2,nn)*vmag
1060 v(3,2,nn)=v(3,2,nn)*vmag
1078 vec(7,nn)=vec(2,nn)*vec(6,nn)-vec(3,nn)*vec(5,nn)
1079 vec(8,nn)=vec(3,nn)*vec(4,nn)-vec(1,nn)*vec(6,nn)
1080 vec(9,nn)=vec(1,nn)*vec(5,nn)-vec(2,nn)*vec(4,nn)
1095 vec(1,nn)=-str(1,nn)
1096 vec(2,nn)=-str(2,nn)
1097 vec(3,nn)=-str(3,nn)
1115#include "implicit_f.inc"
1119#include "mvsiz_p.inc"
1124 . sig(6,*), val(3,*), vec(9,*)
1129 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
1130 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
1132 . CS(6), STR(3,MVSIZ), A(3,3,MVSIZ), V(3,3,MVSIZ), B(3,3,),
1133 . xmag(3,mvsiz), pr, aa, bb, aaa(mvsiz),
1134 . cc, angp, dd, ftpi, ttpi, strmax,
1135 . tol1(mvsiz), tol2(mvsiz), xmaxv(mvsiz), norminf(mvsiz),
1137 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
1138 . a22, a23, a31, a32, a33,
1139 . mdemi, xmaxinv, flm,
1140 . valdp(3,mvsiz),vecdp(9,mvsiz)
1153 flm = two*sqrt(flmin)
1162 pr = -(cs(1)+cs(2)+cs(3)) * third
1166 aaa(nn)=cs(4)**2 + cs
1167 & - cs(2)*cs(3) - cs(1)*cs(3)
1168 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
1169 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
1173 aa =
max(aaa(nn),norminf(nn))
1175 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
1176 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
1177 & - two*cs(4)*cs(5)*cs(6)
1179 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
1182 angp=acos(cc) * third
1183 dd=two*sqrt(aa * third)
1184 str(1,nn)=dd*cos(angp)
1185 str(2,nn)=dd*cos(angp+ftpi)
1186 str(3,nn)=dd*cos(angp+ttpi)
1188 valdp(1,nn) = str(1,nn)-pr
1189 valdp(2,nn) = str(2,nn)-pr
1190 valdp(3,nn) = str(3,nn)-pr
1193 & .AND.aaa(nn)>norminf(nn))
THEN
1198 index3(nindex3) = nn
1203 strmax=
max(abs(str(1,nn)),abs(str(3,nn)))
1204 tol1(nn)=
max(em20,flm*strmax**2)
1205 tol2(nn)=flm*strmax * third
1206 a(1,1,nn)=cs(1)-str(1,nn)
1207 a(2,2,nn)=cs(2)-str(1,nn)
1208 a(3,3,nn)=cs(3)-str(1,nn)
1216 b(1,1,nn)=a(2,1,nn)*a(3,2,nn)-a(3,1,nn)
1218 b(1,2,nn)=a(2,2,nn)*a(3,3,nn)-a(3,2,nn)
1222 b(2,1,nn)=a(3,1,nn)*a(1,2,nn)-a(1,1,nn)
1224 b(2,2,nn)=a(3,2,nn)*a(1,3,nn)-a(1,2,nn)
1226 b(2,3,nn)=a(3,3,nn)*a(1,1,nn)-a(1,3,nn)
1228 b(3,1,nn)=a(1,1,nn)*a(2,2,nn)-a(2,1,nn)
1230 b(3,2,nn)=a(1,2,nn)*a(2,3,nn)-a(2,2,nn)
1232 b(3,3,nn)=a(1,3,nn)*a(2,1,nn)-a(2,3,nn)
1234 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
1235 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
1236 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
1243 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1244 IF(xmag(1,nn)==xmaxv(nn))
THEN
1246 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1251 IF(aaa(nn)<norminf(nn))
THEN
1252 valdp(1,nn) = sig(1,nn)
1253 valdp(2,nn) = sig(2,nn)
1254 valdp(3,nn) = sig(3,nn)
1261 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
1262 nindex1 = nindex1 + 1
1263 index1(nindex1) = nn
1265 nindex2 = nindex2 + 1
1266 index2(nindex2) = nn
1270#include "vectorize.inc"
1274 xmaxinv = one/xmaxv(nn)
1275 v(1,1,nn)=b(1,lmax,nn)*xmaxinv
1276 v(2,1,nn)=b(2,lmax,nn)*xmaxinv
1277 v(3,1,nn)=b(3,lmax,nn)*xmaxinv
1278 a(1,1,nn)=a(1,1,nn)+str(1,nn)-str(3,nn)
1279 a(2,2,nn)=a(2,2,nn)+str(1,nn)-str(3,nn)
1280 a(3,3,nn)=a(3,3,nn)+str(1,nn)-str(3,nn)
1282 b(1,1,nn)=a(2,1,nn)*v(3,1,nn)-a(3,1,nn)*v(2,1,nn)
1283 b(1,2,nn)=a(2,2,nn)*v(3,1,nn)-a(3,2,nn)*v(2,1,nn)
1284 b(1,3,nn)=a(2,3,nn)*v(3,1,nn)-a(3,3,nn)*v(2,1,nn)
1285 b(2,1,nn)=a(3,1,nn)*v(1,1,nn)-a(1,1,nn)*v(3,1,nn)
1286 b(2,2,nn)=a(3,2,nn)*v(1,1,nn)-a(1,2,nn)*v(3,1,nn)
1287 b(2,3,nn)=a(3,3,nn)*v(1,1,nn)-a(1,3,nn)*v(3,1,nn)
1288 b(3,1,nn)=a(1,1,nn)*v(2,1,nn)-a(2,1,nn)*v(1,1,nn)
1289 b(3,2,nn)=a(1,2,nn)*v(2,1,nn)-a(2,2,nn)*v(1,1,nn)
1290 b(3,3,nn)=a(1,3,nn)*v(2,1,nn)-a(2,3,nn)*v(1,1,nn)
1291 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
1292 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
1293 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
1295 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1298#include "vectorize.inc"
1301 IF(xmag(1,nn)==xmaxv(nn))
THEN
1303 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1309 vmag=sqrt(v(1,1,nn)**2+v(2,1,nn)**2)
1311 IF(xmaxv(nn)>tol2(nn))
THEN
1312 xmaxinv = one/xmaxv(nn)
1313 v(1,3,nn)=b(1,lmax,nn)*xmaxinv
1314 v(2,3,nn)=b(2,lmax,nn)*xmaxinv
1315 v(3,3,nn)=b(3,lmax,nn)*xmaxinv
1316 v(1,2,nn)=v(2,3,nn)*v(3,1,nn)-v(2,1,nn)*v(3,3,nn)
1317 v(2,2,nn)=v(3,3,nn)*v(1,1,nn)-v(3,1,nn)*v(1,3,nn)
1318 v(3,2,nn)=v(1,3,nn)*v(2,1,nn)-v(1,1,nn)*v(2,3,nn)
1319 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1320 v(1,2,nn)=v(1,2,nn)*vmag
1321 v(2,2,nn)=v(2,2,nn)*vmag
1322 v(3,2,nn)=v(3,2,nn)*vmag
1323 ELSEIF(vmag>tol2(nn))
THEN
1324 v(1,2,nn)=-v(2,1,nn)/vmag
1325 v(2,2,nn)=v(1,1,nn)/vmag
1338 xmag(1,nn)=sqrt(a(1,1,nn)**2+a(2,1,nn)**2)
1339 xmag(2,nn)=sqrt(a(1,2,nn)**2+a(2,2,nn)**2)
1340 xmag(3,nn)=sqrt(a(1,3,nn)**2+a(2,3,nn)**2)
1342 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1345#include "vectorize.inc"
1348 IF(xmag(1,nn)==xmaxv(nn))
THEN
1350 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1357 IF(
max(abs(a(3,1,nn)),abs(a(3,2,nn)),abs(a(3,3,nn)))
1359 xmaxinv = one/xmaxv(nn)
1363 v(1,2,nn)=-a(2,lmax,nn)*xmaxinv
1364 v(2,2,nn)= a(1,lmax,nn)*xmaxinv
1367 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
1368 xmaxinv = one/xmaxv(nn)
1369 v(1,1,nn)=-a(2,lmax,nn)*xmaxinv
1370 v(2,1,nn)= a(1,lmax,nn)*xmaxinv
1372 v(1,2,nn)=-a(3,lmax,nn)*v(2,1,nn)
1373 v(2,2,nn)= a(3,lmax,nn)*v(1,1,nn)
1374 v(3,2,nn)= a(1,lmax,nn)*v(2,1,nn)-a(2,lmax,nn)*v(1,1,nn)
1375 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1376 v(1,2,nn)=v(1,2,nn)*vmag
1377 v(2,2,nn)=v(2,2,nn)*vmag
1378 v(3,2,nn)=v(3,2,nn)*vmag
1390 vecdp(1,nn)=v(1,1,nn)
1391 vecdp(2,nn)=v(2,1,nn)
1392 vecdp(3,nn)=v(3,1,nn)
1393 vecdp(4,nn)=v(1,2,nn)
1394 vecdp(5,nn)=v(2,2,nn)
1395 vecdp(6,nn)=v(3,2,nn)
1396 vecdp(7,nn)=vecdp(2,nn)*vecdp(6,nn)-vecdp(3,nn)*vecdp(5,nn)
1397 vecdp(8,nn)=vecdp(3,nn)*vecdp(4,nn)-vecdp(1,nn)*vecdp(6,nn)
1398 vecdp(9,nn)=vecdp(1,nn)*vecdp(5,nn)-vecdp(2,nn)*vecdp(4,nn)
1402 val(1,nn)=valdp(1,nn)
1403 val(2,nn)=valdp(2,nn)
1404 val(3,nn)=valdp(3,nn)
1405 vec(1,nn)=vecdp(1,nn)
1406 vec(2,nn)=vecdp(2,nn)
1407 vec(3,nn)=vecdp(3,nn)
1408 vec(4,nn)=vecdp(4,nn)
1409 vec(5,nn)=vecdp(5,nn)
1410 vec(6,nn)=vecdp(6,nn)
1411 vec(7,nn)=vecdp(7,nn)
1412 vec(8,nn)=vecdp(8,nn)
1413 vec(9,nn)=vecdp(9,nn)
1428 vec(1,nn)=-str(1,nn)
1429 vec(2,nn)=-str(2,nn)
1430 vec(3,nn)=-str(3,nn)
1543#include "implicit_f.inc"
1547#include "mvsiz_p.inc"
1552 . sig(6,*), val(3,*), vec(9,*)
1557 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
1558 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
1560 . CS(6), STR(3,MVSIZ), A(3,3,MVSIZ), V(3,3,MVSIZ), B(3,3,MVSIZ),
1561 . XMAG(3,MVSIZ), PR, AA, BB, AAA(MVSIZ),
1562 . CC, ANGP, DD, FTPI, TTPI, STRMAX,
1563 . TOL1(MVSIZ), TOL2(MVSIZ), XMAXV(MVSIZ), NORMINF(MVSIZ),
1565 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
1566 . a22, a23, a31, a32, a33,
1567 . mdemi, xmaxinv, flm,
1568 . valdp(3,mvsiz),vecdp(9,mvsiz),s4_2,s5_2,s6_2,c1,c2,sq_aa
1581 flm = two*sqrt(flmin)
1583 c1 = half*sqrt(twenty7)
1584 c2 = two*sqrt(third)
1592 pr = -(cs(1)+cs(2)+cs(3)) * third
1599 aaa(nn)=s4_2 + s5_2 + s6_2 - cs(1)*cs(2)
1600 & - cs(2)*cs(3) - cs(1)*cs(3)
1601 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
1602 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
1603 norminf(nn) = em10*norminf(nn)
1605 aa =
max(aaa(nn),norminf(nn))
1607 bb=cs(1)*s5_2 + cs(2)*s6_2
1608 & + cs(3)*s4_2 - cs(1)*cs(2)*cs(3)
1609 & - two*cs(4)*cs(5)*cs(6)
1612 cc=-c1/
max(em10,sq_aa)*bb/
max(em20,aa)
1616 angp=acos(cc) * third
1618 str(1,nn)=dd*cos(angp)
1619 str(2,nn)=dd*cos(angp+ftpi)
1620 str(3,nn)=dd*cos(angp+ttpi)
1622 valdp(1,nn) = str(1,nn)-pr
1623 valdp(2,nn) = str(2,nn)-pr
1624 valdp(3,nn) = str(3,nn)-pr
1626 IF(abs(str(3,nn))>abs(str(1,nn))
1627 & .AND.aaa(nn)>norminf(nn))
THEN
1632 index3(nindex3) = nn
1637 strmax=
max(abs(str(1,nn)),abs(str(3,nn)))
1638 tol1(nn)=
max(em20,flm*strmax*strmax)
1639 tol2(nn)=flm*strmax * third
1640 a(1,1,nn)=cs(1)-str(1,nn)
1641 a(2,2,nn)=cs(2)-str(1,nn)
1642 a(3,3,nn)=cs(3)-str(1,nn)
1650 b(1,1,nn)=a(2,1,nn)*a(3,2,nn)-a(3,1,nn)
1652 b(1,2,nn)=a(2,2,nn)*a(3,3,nn)-a(3,2,nn)
1654 b(1,3,nn)=a(2,3,nn)*a(3,1,nn)-a(3,3,nn)
1656 b(2,1,nn)=a(3,1,nn)*a(1,2,nn)-a(1,1,nn)
1658 b(2,2,nn)=a(3,2,nn)*a(1,3,nn)-a(1,2,nn)
1660 b(2,3,nn)=a(3,3,nn)*a(1,1,nn)-a(1,3,nn)
1662 b(3,1,nn)=a(1,1,nn)*a(2,2,nn)-a(2,1,nn)
1664 b(3,2,nn)=a(1,2,nn)*a(2,3,nn)-a(2,2,nn)
1666 b(3,3,nn)=a(1,3,nn)*a(2,1,nn)-a(2,3,nn)
1668 xmag(1,nn)=b(1,1,nn)*b(1,1,nn)+b(2,1,nn)*b(2,1,nn)+
1669 . b(3,1,nn)*b(3,1,nn)
1670 xmag(2,nn)=b(1,2,nn)*b(1,2,nn)+b(2,2,nn)*b(2,2,nn)+
1671 . b(3,2,nn)*b(3,2,nn)
1672 xmag(3,nn)=b(1,3,nn)*b(1,3,nn)+b(2,3,nn)*b(2,3,nn)+
1673 . b(3,3,nn)*b(3,3,nn)
1680 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1681 IF(xmag(1,nn)==xmaxv(nn))
THEN
1683 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1688 IF(aaa(nn)<norminf(nn))
THEN
1689 valdp(1,nn) = sig(1,nn)
1690 valdp(2,nn) = sig(2,nn)
1691 valdp(3,nn) = sig(3,nn)
1698 ELSEIF(xmaxv(nn)>tol1(nn)*tol1(nn))
THEN
1699 nindex1 = nindex1 + 1
1700 index1(nindex1) = nn
1702 nindex2 = nindex2 + 1
1703 index2(nindex2) = nn
1707#include "vectorize.inc"
1711 xmaxinv = one/sqrt(xmaxv(nn))
1712 v(1,1,nn)=b(1,lmax,nn)*xmaxinv
1713 v(2,1,nn)=b(2,lmax,nn)*xmaxinv
1714 v(3,1,nn)=b(3,lmax,nn)*xmaxinv
1715 a(1,1,nn)=a(1,1,nn)+str(1,nn)-str(3,nn)
1716 a(2,2,nn)=a(2,2,nn)+str(1,nn)-str(3,nn)
1717 a(3,3,nn)=a(3,3,nn)+str(1,nn)-str(3,nn)
1719 b(1,1,nn)=a(2,1,nn)*v(3,1,nn)-a(3,1,nn)*v(2,1,nn)
1720 b(1,2,nn)=a(2,2,nn)*v(3,1,nn)-a(3,2,nn)*v(2,1,nn)
1721 b(1,3,nn)=a(2,3,nn)*v(3,1,nn)-a(3,3,nn)*v(2,1,nn)
1722 b(2,1,nn)=a(3,1,nn)*v(1,1,nn)-a(1,1,nn)*v(3,1,nn)
1723 b(2,2,nn)=a(3,2,nn)*v(1,1,nn)-a(1,2,nn)*v(3,1,nn)
1724 b(2,3,nn)=a(3,3,nn)*v(1,1,nn)-a(1,3,nn)*v(3,1,nn)
1725 b(3,1,nn)=a(1,1,nn)*v(2,1,nn)-a(2,1,nn)*v(1,1,nn)
1726 b(3,2,nn)=a(1,2,nn)*v(2,1,nn)-a(2,2,nn)*v(1,1,nn)
1727 b(3,3,nn)=a(1,3,nn)*v(2,1,nn)-a(2,3,nn)*v(1,1,nn)
1728 xmag(1,nn)=b(1,1,nn)*b(1,1,nn)+b(2,1,nn)*b(2,1,nn)+
1729 . b(3,1,nn)*b(3,1,nn)
1730 xmag(2,nn)=b(1,2,nn)*b(1,2,nn)+b(2,2,nn)*b(2,2,nn)+
1731 . b(3,2,nn)*b(3,2,nn)
1732 xmag(3,nn)=b(1,3,nn)*b(1,3,nn)+b(2,3,nn)*b(2,3,nn)+
1733 . b(3,3,nn)*b(3,3,nn)
1735 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1738#include "vectorize.inc"
1741 IF(xmag(1,nn)==xmaxv(nn))
THEN
1743 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1749 vmag=sqrt(v(1,1,nn)**2+v(2,1,nn)**2)
1751 xmaxv(nn)=sqrt(xmaxv(nn))
1752 IF(xmaxv(nn)>tol2(nn))
THEN
1753 xmaxinv = one/xmaxv(nn)
1754 v(1,3,nn)=b(1,lmax,nn)*xmaxinv
1755 v(2,3,nn)=b(2,lmax,nn)*xmaxinv
1756 v(3,3,nn)=b(3,lmax,nn)*xmaxinv
1757 v(1,2,nn)=v(2,3,nn)*v(3,1,nn)-v(2,1,nn)*v(3,3,nn)
1758 v(2,2,nn)=v(3,3,nn)*v(1,1,nn)-v(3,1,nn)*v(1,3,nn)
1759 v(3,2,nn)=v(1,3,nn)*v(2,1,nn)-v(1,1,nn)*v(2,3,nn)
1760 c1 = v(1,2,nn)*v(1,2,nn)+v(2,2,nn)*v(2,2,nn)+
1761 & v(3,2,nn)*v(3,2,nn)
1763 v(1,2,nn)=v(1,2,nn)*vmag
1764 v(2,2,nn)=v(2,2,nn)*vmag
1765 v(3,2,nn)=v(3,2,nn)*vmag
1766 ELSEIF(vmag>tol2(nn))
THEN
1767 v(1,2,nn)=-v(2,1,nn)/vmag
1768 v(2,2,nn)=v(1,1,nn)/vmag
1781 xmag(1,nn)=a(1,1,nn)*a(1,1,nn)+a(2,1,nn)*a(2,1,nn)
1782 xmag(2,nn)=a(1,2,nn)*a(1,2,nn)+a(2,2,nn)*a(2,2,nn)
1783 xmag(3,nn)=a(1,3,nn)*a(1,3,nn)+a(2,3,nn)*a(2,3,nn)
1785 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1788#include "vectorize.inc"
1791 IF(xmag(1,nn)==xmaxv(nn))
THEN
1793 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1800 xmaxv(nn)=sqrt(xmaxv(nn))
1801 IF(
max(abs(a(3,1,nn)),abs(a(3,2,nn)),abs(a(3,3,nn)))
1803 xmaxinv = one/xmaxv(nn)
1807 v(1,2,nn)=-a(2,lmax,nn)*xmaxinv
1808 v(2,2,nn)= a(1,lmax,nn)*xmaxinv
1811 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
1812 xmaxinv = one/xmaxv(nn)
1813 v(1,1,nn)=-a(2,lmax,nn)*xmaxinv
1814 v(2,1,nn)= a(1,lmax,nn)*xmaxinv
1816 v(1,2,nn)=-a(3,lmax,nn)*v(2,1,nn)
1817 v(2,2,nn)= a(3,lmax,nn)*v(1,1,nn)
1818 v(3,2,nn)= a(1,lmax,nn)*v(2,1,nn)-a(2,lmax,nn)*v(1,1,nn)
1819 c1 = v(1,2,nn)*v(1,2,nn)+v(2,2,nn)*v(2,2,nn)+
1820 & v(3,2,nn)*v(3,2,nn)
1822 v(1,2,nn)=v(1,2,nn)*vmag
1823 v(2,2,nn)=v(2,2,nn)*vmag
1824 v(3,2,nn)=v(3,2,nn)*vmag
1836 vecdp(1,nn)=v(1,1,nn)
1837 vecdp(2,nn)=v(2,1,nn)
1838 vecdp(3,nn)=v(3,1,nn)
1839 vecdp(4,nn)=v(1,2,nn)
1840 vecdp(5,nn)=v(2,2,nn)
1841 vecdp(6,nn)=v(3,2,nn)
1842 vecdp(7,nn)=vecdp(2,nn)*vecdp(6,nn)-vecdp(3,nn)*vecdp(5,nn)
1843 vecdp(8,nn)=vecdp(3,nn)*vecdp(4,nn)-vecdp(1,nn)*vecdp(6,nn)
1844 vecdp(9,nn)=vecdp(1,nn)*vecdp(5,nn)-vecdp(2,nn)*vecdp(4,nn)
1848 val(1,nn)=valdp(1,nn)
1849 val(2,nn)=valdp(2,nn)
1850 val(3,nn)=valdp(3,nn)
1851 vec(1,nn)=vecdp(1,nn)
1852 vec(2,nn)=vecdp(2,nn)
1853 vec(3,nn)=vecdp(3,nn)
1854 vec(4,nn)=vecdp(4,nn)
1855 vec(5,nn)=vecdp(5,nn)
1856 vec(6,nn)=vecdp(6,nn)
1857 vec(7,nn)=vecdp(7,nn)
1858 vec(8,nn)=vecdp(8,nn)
1859 vec(9,nn)=vecdp(9,nn)
1874 vec(1,nn)=-str(1,nn)
1875 vec(2,nn)=-str(2,nn)
1876 vec(3,nn)=-str(3,nn)
1905#include
"implicit_f.inc"
1909#include "mvsiz_p.inc"
1914 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
1919 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
1920 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
1922 . CS(6), STR(MVSIZ,3), A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
1923 . XMAG(,3), PR, AA, BB, AAA(MVSIZ),
1924 . CC, ANGP, DD, FTPI, , STRMAX,
1925 . TOL1(MVSIZ), TOL2(MVSIZ), (MVSIZ), NORMINF(MVSIZ),
1927 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
1928 . a22, a23, a31, a32, a33,
1929 . mdemi, xmaxinv, flm
1942 flm = two*sqrt(flmin)
1951 pr = -(cs(1)+cs(2)+cs(3))* third
1955 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
1956 & - cs(2)*cs(3) - cs(1)*cs(3)
1957 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
1958 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
1959 norminf(nn) = em10*norminf(nn)
1962 aa =
max(aaa(nn),norminf(nn))
1964 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
1965 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
1966 & - two*cs(4)*cs(5)*cs(6)
1968 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
1971 angp=acos(cc) * third
1972 dd=two*sqrt(aa * third)
1973 str(nn,1)=dd*cos(angp)
1974 str(nn,2)=dd*cos(angp+ftpi)
1975 str(nn,3)=dd*cos(angp+ttpi)
1977 val(nn,1) = str(nn,1)-pr
1978 val(nn,2) = str(nn,2)-pr
1979 val(nn,3) = str(nn,3)-pr
1981 IF(abs(str(nn,3))>abs(str(nn,1))
1982 & .AND.aaa(nn)>norminf(nn))
THEN
1987 index3(nindex3) = nn
1992 strmax=
max(abs(str(nn,1)),abs(str(nn,3)))
1993 tol1(nn)=
max(em20,flm*strmax**2)
1994 tol2(nn)=flm*strmax/3
1995 a(nn,1,1)=cs(1)-str(nn,1)
1996 a(nn,2,2)=cs(2)-str(nn,1)
1997 a(nn,3,3)=cs(3)-str(nn,1)
2005 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2007 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2009 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2011 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2013 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2015 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2017 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2019 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2021 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2023 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2024 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2025 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2032 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2033 IF(xmag(nn,1)==xmaxv(nn))
THEN
2035 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2040 IF(aaa(nn)<norminf(nn))
THEN
2041 val(nn,1) = sig(nn,1)
2042 val(nn,2) = sig(nn,2)
2043 val(nn,3) = sig(nn,3)
2051 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
2052 nindex1 = nindex1 + 1
2053 index1(nindex1) = nn
2055 nindex2 = nindex2 + 1
2056 index2(nindex2) = nn
2060#include "vectorize.inc"
2064 xmaxinv = one/xmaxv(nn)
2065 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2066 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2067 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2068 a(nn,1,1)=a(nn,1,1)+str(nn,1)-str(nn,3)
2069 a(nn,2,2)=a(nn,2,2)+str(nn,1)-str(nn,3)
2070 a(nn,3,3)=a(nn,3,3)+str(nn,1)-str(nn,3)
2072 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2073 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2074 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2075 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2076 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2077 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2078 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2079 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2080 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2081 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2082 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2083 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2085 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2088#include "vectorize.inc"
2091 IF(xmag(nn,1)==xmaxv(nn))
THEN
2093 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2099 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2101 IF(xmaxv(nn)>tol2(nn))
THEN
2102 xmaxinv = one/xmaxv(nn)
2103 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2104 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2105 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2106 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2107 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2108 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2109 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2110 v(nn,1,2)=v(nn,1,2)*vmag
2111 v(nn,2,2)=v(nn,2,2)*vmag
2112 v(nn,3,2)=v(nn,3,2)*vmag
2113 ELSEIF(vmag>tol2(nn))
THEN
2114 v(nn,1,2)=-v(nn,2,1)/vmag
2115 v(nn,2,2)=v(nn,1,1)/vmag
2128 xmag(nn,1)=sqrt(a(nn,1,1)**2+a(nn,2,1)**2)
2129 xmag(nn,2)=sqrt(a(nn,1,2)**2+a(nn,2,2)**2)
2130 xmag(nn,3)=sqrt(a(nn,1,3)**2+a(nn,2,3)**2)
2132 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2135#include "vectorize.inc"
2138 IF(xmag(nn,1)==xmaxv(nn))
THEN
2140 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2147 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2149 xmaxinv = one/xmaxv(nn)
2153 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2154 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2157 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2158 xmaxinv = one/xmaxv(nn)
2159 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2160 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2162 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2163 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2164 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn,2,lmax)*v(nn,1,1)
2165 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2166 v(nn,1,2)=v(nn,1,2)*vmag
2167 v(nn,2,2)=v(nn,2,2)*vmag
2168 v(nn,3,2)=v(nn,3,2)*vmag
2186 vec(nn,7)=vec(nn,2)*vec(nn,6)-vec(nn,3)*vec(nn,5)
2187 vec(nn,8)=vec(nn,3)*vec(nn,4)-vec(nn,1)*vec(nn,6)
2188 vec(nn,9)=vec(nn,1)*vec(nn,5)-vec(nn,2)*vec(nn,4)
2203 vec(nn,1)=-str(nn,1)
2204 vec(nn,2)=-str(nn,2)
2205 vec(nn,3)=-str(nn,3)
2234#include "implicit_f.inc"
2238#include "mvsiz_p.inc"
2243 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
2248 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
2249 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
2251 . CS(6), STR(MVSIZ,3), A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
2252 . XMAG(,3), PR, AA, BB, AAA(MVSIZ),
2253 . CC, ANGP, DD, FTPI, TTPI, STRMAX,
2254 . TOL1(MVSIZ), TOL2(MVSIZ), XMAXV(MVSIZ), NORMINF(MVSIZ),
2256 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
2257 . a22, a23, a31, a32, a33,
2258 . mdemi, xmaxinv, flm,
2259 . valdp(mvsiz,3),vecdp(mvsiz,9)
2272 flm = two*sqrt(flmin)
2281 pr = -(cs(1)+cs(2)+cs(3)) * third
2285 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
2286 & - cs(2)*cs(3) - cs(1)*cs(3)
2287 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
2288 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
2289 norminf(nn) = em10*norminf(nn)
2292 aa =
max(aaa(nn),norminf(nn))
2294 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
2295 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
2296 & - two*cs(4)*cs(5)*cs(6)
2298 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
2301 angp=acos(cc) * third
2302 dd=two*sqrt(aa * third)
2303 str(nn,1)=dd*cos(angp)
2304 str(nn,2)=dd*cos(angp+ftpi)
2305 str(nn,3)=dd*cos(angp+ttpi
2307 valdp(nn,1) = str(nn,1)-pr
2308 valdp(nn,2) = str(nn,2)-pr
2309 valdp(nn,3) = str(nn,3)-pr
2311 IF(abs(str(nn,3))>abs(str(nn,1))
2312 & .AND.aaa(nn)>norminf(nn))
THEN
2317 index3(nindex3) = nn
2322 strmax=
max(abs(str(nn,1)),abs(str(nn,3)))
2323 tol1(nn)=
max(em20,flm*strmax**2)
2324 tol2(nn)=flm*strmax * third
2325 a(nn,1,1)=cs(1)-str(nn,1)
2326 a(nn,2,2)=cs(2)-str(nn,1)
2327 a(nn,3,3)=cs(3)-str(nn,1)
2335 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2337 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2339 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2341 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2343 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2345 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2347 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2349 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2351 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2353 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2354 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2355 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2362 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2363 IF(xmag(nn,1)==xmaxv(nn))
THEN
2365 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2370 IF(aaa(nn)<norminf(nn))
THEN
2371 valdp(nn,1) = sig(nn,1)
2372 valdp(nn,2) = sig(nn,2)
2373 valdp(nn,3) = sig(nn,3)
2380 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
2381 nindex1 = nindex1 + 1
2382 index1(nindex1) = nn
2384 nindex2 = nindex2 + 1
2385 index2(nindex2) = nn
2389#include "vectorize.inc"
2393 xmaxinv = one/xmaxv(nn)
2394 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2395 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2396 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2397 a(nn,1,1)=a(nn,1,1)+str(nn,1)-str(nn,3)
2398 a(nn,2,2)=a(nn,2,2)+str(nn,1)-str(nn,3)
2399 a(nn,3,3)=a(nn,3,3)+str(nn,1)-str(nn,3)
2401 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2402 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2403 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2404 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2405 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2406 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2407 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2408 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2409 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2410 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2411 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn
2412 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2414 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2417#include "vectorize.inc"
2420 IF(xmag(nn,1)==xmaxv(nn))
THEN
2422 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2428 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2430 IF(xmaxv(nn)>tol2(nn))
THEN
2431 xmaxinv = one/xmaxv(nn)
2432 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2433 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2434 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2435 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2436 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2437 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2438 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2439 v(nn,1,2)=v(nn,1,2)*vmag
2440 v(nn,2,2)=v(nn,2,2)*vmag
2441 v(nn,3,2)=v(nn,3,2)*vmag
2442 ELSEIF(vmag>tol2(nn))
THEN
2443 v(nn,1,2)=-v(nn,2,1)/vmag
2444 v(nn,2,2)=v(nn,1,1)/vmag
2455#include "vectorize.inc"
2458 xmag(nn,1)=sqrt(a(nn,1,1)**2+a(nn,2,1)**2)
2459 xmag(nn,2)=sqrt(a(nn,1,2)**2+a(nn,2,2)**2)
2460 xmag(nn,3)=sqrt(a(nn,1,3)**2+a(nn,2,3)**2)
2462 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2465#include "vectorize.inc"
2468 IF(xmag(nn,1)==xmaxv(nn))
THEN
2470 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2477 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2479 xmaxinv = one/xmaxv(nn)
2483 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2484 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2487 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2488 xmaxinv = one/xmaxv(nn)
2489 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2490 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2492 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2493 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2494 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn
2495 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2496 v(nn,1,2)=v(nn,1,2)*vmag
2497 v(nn,2,2)=v(nn,2,2)*vmag
2498 v(nn,3,2)=v(nn,3,2)*vmag
2510 vecdp(nn,1)=v(nn,1,1)
2511 vecdp(nn,2)=v(nn,2,1)
2512 vecdp(nn,3)=v(nn,3,1)
2513 vecdp(nn,4)=v(nn,1,2)
2514 vecdp(nn,5)=v(nn,2,2)
2515 vecdp(nn,6)=v(nn,3,2)
2516 vecdp(nn,7)=vecdp(nn,2)*vecdp(nn,6)-vecdp(nn,3)*vecdp(nn,5)
2517 vecdp(nn,8)=vecdp(nn,3)*vecdp(nn,4)-vecdp(nn,1)*vecdp(nn,6)
2518 vecdp(nn,9)=vecdp(nn,1)*vecdp(nn,5)-vecdp(nn,2)*vecdp(nn,4)
2522 val(nn,1)=valdp(nn,1)
2523 val(nn,2)=valdp(nn,2)
2524 val(nn,3)=valdp(nn,3)
2525 vec(nn,1)=vecdp(nn,1)
2526 vec(nn,2)=vecdp(nn,2)
2527 vec(nn,3)=vecdp(nn,3)
2528 vec(nn,4)=vecdp(nn,4)
2529 vec(nn,5)=vecdp(nn,5)
2530 vec(nn,6)=vecdp(nn,6)
2531 vec(nn,7)=vecdp(nn,7)
2532 vec(nn,8)=vecdp(nn,8)
2533 vec(nn,9)=vecdp(nn,9)
2536#include "vectorize.inc"
2544#include "vectorize.inc"
2550 vec(nn,1)=-str(nn,1)
2551 vec(nn,2)=-str(nn,2)
2552 vec(nn,3)=-str(nn,3)
2568#include "implicit_f.inc"
2572#include "mvsiz_p.inc"
2577 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
2582 INTEGER I, L, N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
2583 . NINDEX1, NINDEX2, INDEX1(), INDEX2(MVSIZ)
2585 . CS1,CS2,CS3,CS4,CS5,CS6,
2586 . A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
2587 . PR, AA, BB, AAA(MVSIZ),
2588 . CC, ANGP, DD, , TTPI, STRMAX,
2589 . TOL1(MVSIZ), TOL2(MVSIZ), XMAXV(MVSIZ), NORMINF(MVSIZ),
2591 . s21, s31, s12, s22, s32, s13, s23, s33, a11, a12, a13, a21,
2593 . a22, a23, a31, a32, a33,
2594 . mdemi, xmaxinv, flm,
2595 . s4_2,s5_2,s6_2,c1,c2,sq_aa,
2596 . valdp1(mvsiz),valdp2(mvsiz),valdp3(mvsiz),
2597 . str1(mvsiz),str2(mvsiz),str3(mvsiz),
2598 . xmag1(mvsiz),xmag2(mvsiz),xmag3(mvsiz),
2599 . vecdp1(mvsiz),vecdp2(mvsiz),vecdp3(mvsiz),
2600 . vecdp4(mvsiz),vecdp5(mvsiz),vecdp6(mvsiz),
2601 . vecdp7(mvsiz),vecdp8(mvsiz),vecdp9(mvsiz)
2603 DOUBLE PRECISION :: SQRT3DMI, SIN_ANGP, COS_ANGP
2604 PARAMETER (SQRT3DMI=sqrt(3.0d0) / 2.0d0 )
2618 flm = two*sqrt(flmin)
2621 c1 = half*sqrt(twenty7)
2622 c2 = two*sqrt(third)
2630 pr = -(cs1+cs2+cs3) * third
2637 aaa(nn)=s4_2 + s5_2 + s6_2 - cs1*cs2
2638 & - cs2*cs3 - cs1*cs3
2639 norminf(nn) =
max(abs(cs1),abs(cs2),abs(cs3),
2640 & abs(cs4),abs(cs5),abs(cs6))
2641 norminf(nn) = em10*norminf(nn)
2643 aa =
max(aaa(nn),norminf(nn))
2646 bb=cs1*s5_2 + cs2*s6_2
2647 & + cs3*s4_2 - cs1*cs2*cs3
2650 cc=-c1/
max(em10,sq_aa)*bb/
max(em20,aa)
2654 angp=acos(cc) * third
2657 cos_angp = cos(angp)
2658 sin_angp = sin(angp)
2662 str3(nn)=dd*cos_angp
2663 str1(nn)=dd*((-half*cos_angp) - (sin_angp*sqrt3dmi))
2664 str2(nn)=-(str1(nn)+str3(nn))
2666 valdp1(nn) = str1(nn)-pr
2667 valdp2(nn) = str2(nn)-pr
2668 valdp3(nn) = str3(nn)-pr
2670 IF(abs(str3(nn))>abs(str1(nn))
2671 & .AND.aaa(nn)>norminf(nn))
THEN
2682 strmax=
max(abs(str1(nn)),abs(str3(nn)))
2683 tol1(nn)=
max(em20,flm*strmax*strmax)
2684 tol2(nn)=flm*strmax * third
2685 a(nn,1,1)=cs1-str1(nn)
2686 a(nn,2,2)=cs2-str1(nn)
2687 a(nn,3,3)=cs3-str1(nn)
2695 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2697 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2699 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2701 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2703 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2705 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2707 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2709 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2711 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2713 xmag1(nn)=b(nn,1,1)*b(nn,1,1)+b(nn,2,1)*b(nn,2,1)+
2714 . b(nn,3,1)*b(nn,3,1)
2715 xmag2(nn)=b(nn,1,2)*b(nn,1,2)+b(nn,2,2)*b(nn,2,2)+
2716 . b(nn,3,2)*b(nn,3,2)
2717 xmag3(nn)=b(nn,1,3)*b(nn,1,3)+b(nn,2,3)*b(nn,2,3)+
2718 . b(nn,3,3)*b(nn,3,3)
2725 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2726 IF(xmag1(nn)==xmaxv(nn))
THEN
2728 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2733 IF(aaa(nn)<norminf(nn))
THEN
2734 valdp1(nn) = sig(nn,1)
2735 valdp2(nn) = sig(nn,2)
2736 valdp3(nn) = sig(nn,3)
2743 ELSEIF(xmaxv(nn)>tol1(nn)*tol1(nn))
THEN
2744 nindex1 = nindex1 + 1
2745 index1(nindex1) = nn
2747 nindex2 = nindex2 + 1
2748 index2(nindex2) = nn
2752#include "vectorize.inc"
2756 xmaxinv = one/sqrt(xmaxv(nn))
2757 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2758 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2759 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2760 a(nn,1,1)=a(nn,1,1)+str1(nn)-str3(nn)
2761 a(nn,2,2)=a(nn,2,2)+str1(nn)-str3(nn)
2762 a(nn,3,3)=a(nn,3,3)+str1(nn)-str3(nn)
2764 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2765 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2766 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2767 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2768 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2769 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2770 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2771 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2772 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2773 xmag1(nn)=b(nn,1,1)*b(nn,1,1)+b(nn,2,1)*b(nn,2,1)+
2774 . b(nn,3,1)*b(nn,3,1)
2775 xmag2(nn)=b(nn,1,2)*b(nn,1,2)+b(nn,2,2)*b(nn,2,2)+
2776 . b(nn,3,2)*b(nn,3,2)
2777 xmag3(nn)=b(nn,1,3)*b(nn,1,3)+b(nn,2,3)*b(nn,2,3)+
2778 . b(nn,3,3)*b(nn,3,3)
2780 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2783#include "vectorize.inc"
2786 IF(xmag1(nn)==xmaxv(nn))
THEN
2788 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2794 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2796 xmaxv(nn)=sqrt(xmaxv(nn))
2797 IF(xmaxv(nn)>tol2(nn))
THEN
2798 xmaxinv = one/xmaxv(nn)
2799 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2800 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2801 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2802 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2803 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2804 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2805 c1 = v(nn,1,2)*v(nn,1,2)+v(nn,2,2)*v(nn,2,2)+
2806 & v(nn,3,2)*v(nn,3,2)
2808 v(nn,1,2)=v(nn,1,2)*vmag
2809 v(nn,2,2)=v(nn,2,2)*vmag
2810 v(nn,3,2)=v(nn,3,2)*vmag
2811 ELSEIF(vmag>tol2(nn))
THEN
2812 v(nn,1,2)=-v(nn,2,1)/vmag
2813 v(nn,2,2)=v(nn,1,1)/vmag
2824#include "vectorize.inc"
2827 xmag1(nn)=a(nn,1,1)*a(nn,1,1)+a(nn,2,1)*a(nn,2,1)
2828 xmag2(nn)=a(nn,1,2)*a(nn,1,2)+a(nn,2,2)*a(nn,2,2)
2829 xmag3(nn)=a(nn,1,3)*a(nn,1,3)+a(nn,2,3)*a(nn,2,3)
2831 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2834#include "vectorize.inc"
2837 IF(xmag1(nn)==xmaxv(nn))
THEN
2839 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2846 xmaxv(nn)=sqrt(xmaxv(nn))
2847 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2849 xmaxinv = one/xmaxv(nn)
2853 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2854 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2857 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2858 xmaxinv = one/xmaxv(nn)
2859 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2860 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2862 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2863 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2864 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn,2,lmax)*v(nn,1,1)
2865 c1 = v(nn,1,2)*v(nn,1,2)+v(nn,2,2)*v(nn,2,2)+
2866 & v(nn,3,2)*v(nn,3,2)
2868 v(nn,1,2)=v(nn,1,2)*vmag
2869 v(nn,2,2)=v(nn,2,2)*vmag
2870 v(nn,3,2)=v(nn,3,2)*vmag
2872 valdp1(nn) = sig(nn,1)
2873 valdp2(nn) = sig(nn,2)
2874 valdp3(nn) = sig(nn,3)
2886 vecdp1(nn)=v(nn,1,1)
2887 vecdp2(nn)=v(nn,2,1)
2888 vecdp3(nn)=v(nn,3,1)
2889 vecdp4(nn)=v(nn,1,2)
2890 vecdp5(nn)=v(nn,2,2)
2891 vecdp6(nn)=v(nn,3,2)
2892 vecdp7(nn)=vecdp2(nn)*vecdp6(nn)-vecdp3(nn)*vecdp5(nn)
2893 vecdp8(nn)=vecdp3(nn)*vecdp4(nn)-vecdp1(nn)*vecdp6(nn)
2894 vecdp9(nn)=vecdp1(nn)*vecdp5(nn)-vecdp2(nn)*vecdp4(nn)
2898 val(nn,1)=valdp1(nn)
2899 val(nn,2)=valdp2(nn)
2900 val(nn,3)=valdp3(nn)
2901 vec(nn,1)=vecdp1(nn)
2902 vec(nn,2)=vecdp2(nn)
2903 vec(nn,3)=vecdp3(nn)
2904 vec(nn,4)=vecdp4(nn)
2905 vec(nn,5)=vecdp5(nn)
2906 vec(nn,6)=vecdp6(nn)
2907 vec(nn,7)=vecdp7(nn)
2908 vec(nn,8)=vecdp8(nn)
2909 vec(nn,9)=vecdp9(nn)
2912 IF (nindex3 > 0)
THEN
2914 IF(index3(nn) == 1)
THEN