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(NUPARAM),
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 NPF(*), NFUNC, IFUNC(NFUNC)
94 INTEGER I,J,K,L,NROT,KEN
97 . EY,C1,C2,ET,VMU,VMU0
103 . , p0,phi,gama0,fac,fac1
104 . , s(3,3),sigpr(3),dirpr(3,3)
105 . ,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)
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
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))
220 sigpr(2)=
min(syield(i),abs(sigpr(2)))*sign(one,sigpr(2))
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)
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
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(i)
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)+emets(i)*deyz(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)
442 . + dirprv(i,1,2)*dirprv(i,2,2)*sigprv(i,2)
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(i,3)
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)
460 signyz(i)=off(i)*sigsyz(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)
THEN
479 IF (gama(i)-uvar(i,1) < zero) sigc_cutoff = zero
482 dav = (epspxx(i)+epspyy(i)+epspzz(i))*third
489 epsp =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
490 epsp = sqrt(three*epsp)/three_half
491 syield(i) = fac1*syield(i)*(finter(ifunc(2),epsp,npf,tf,b*c))
496 sigsxx(i)=sigoxx(i)+sigair(i)
497 sigsyy(i)=sigoyy(i)+sigair(i)
498 sigszz(i)=sigozz(i)+sigair(i)
506 sigsxx(i)=sigsxx(i)+ey*epspxx(i)*timestep
507 sigsyy(i)=sigsyy(i)+ey*epspyy(i)*timestep
508 sigszz(i)=sigszz(i)+ey*epspzz(i)*timestep
509 sigsxy(i)=sigsxy(i)+ey*epspxy(i)*timestep*half
510 sigsyz(i)=sigsyz(i)+ey*epspyz(i)*timestep*half
511 sigszx(i)=sigszx(i)+ey*epspzx(i)*timestep*half
514 sigv(i,1) = sigsxx(i)
515 sigv(i,2) = sigsyy(i)
516 sigv(i,3) = sigszz(i)
517 sigv(i,4) = sigsxy(i)
518 sigv(i,5) = sigsyz(i)
519 sigv(i,6) = sigszx(i)
529 IF(abs(gama(i)) < em10)
THEN
530 sigprv(i,1)=sign(
min(abs(sigprv(i,1)), sigt_cutoff),sigprv(i,1))
531 sigprv(i,2)=sign(
min(abs(sigprv(i,2)), sigt_cutoff),sigprv(i,2))
532 sigprv(i,3)=sign(
min(abs(sigprv(i,3)), sigt_cutoff),sigprv(i,3))
533 ELSEIF(gama(i) < zero )
then
535 sigprv(i,1)=sign(
min(syield(i),abs(sigprv(i,1))),sigprv(i,1))
536 sigprv(i,2)=sign(
min(syield(i),abs(sigprv(i,2))),sigprv(i,2))
537 sigprv(i,3)=sign(
min(syield(i),abs(sigprv(i,3))),sigprv(i,3))
539 sigprv(i,1)=
min(sigprv(i,1), sigt_cutoff)
540 sigprv(i,2)=
min(sigprv(i,2), sigt_cutoff)
541 sigprv(i,3)=
min(sigprv(i,3), sigt_cutoff)
544 sigprv(i,1)=sign(
min(abs(sigprv(i,1)), sigt_cutoff),sigprv(i,1))
545 sigprv(i,2)=sign(
min(abs(sigprv(i,2)), sigt_cutoff),sigprv(i,2))
546 sigprv(i,3)=sign(
min(abs(sigprv(i,3)), sigt_cutoff),sigprv(i,3))
551 sigprv(i,1)=
max(sigprv(i,1), zero)
552 sigprv(i,2)=
max(sigprv(i,2), zero)
553 sigprv(i,3)=
max(sigprv(i,3), zero)
557 sigsxx(i) = dirprv(i,1,1)*dirprv(i,1,1)*sigprv(i,1)
558 . + dirprv(i,1,2)*dirprv(i,1,2)*sigprv(i,2)
559 . + dirprv(i,1,3)*dirprv(i,1,3)*sigprv(i,3)
561 sigsyy(i) = dirprv(i,2,2)*dirprv(i,2,2)*sigprv(i,2)
562 . + dirprv(i,2,3)*dirprv(i,2,3)*sigprv(i,3)
563 . + dirprv(i,2,1)*dirprv(i,2,1)*sigprv(i,1)
565 sigszz(i) = dirprv(i,3,3)*dirprv(i,3,3)*sigprv(i,3)
566 . + dirprv(i,3,1)*dirprv(i,3,1)*sigprv(i,1)
567 . + dirprv(i,3,2)*dirprv(i,3,2)*sigprv(i,2)
569 sigsxy(i) = dirprv(i,1,1)*dirprv(i,2,1)*sigprv(i,1)
570 . + dirprv(i,1,2)*dirprv(i,2,2)*sigprv(i,2)
571 . + dirprv(i,1,3)*dirprv(i,2,3)*sigprv(i,3)
573 sigsyz(i) = dirprv(i,2,2)*dirprv(i,3,2)*sigprv(i,2)
574 . + dirprv(i,2,3)*dirprv(i,3,3)*sigprv(i,3)
575 . + dirprv(i,2,1)*dirprv(i,3,1)*sigprv(i,1)
577 sigszx(i) = dirprv(i,3,3)*dirprv(i,1,3)*sigprv(i,3)
578 . + dirprv(i,3,1)*dirprv(i,1,1)*sigprv(i,1)
579 . + dirprv(i,3,2)*dirprv(i,1,2)*sigprv(i,2)
586 signxx(i)=off(i)*sigsxx(i)-sigair(i)
587 signyy(i)=off(i)*sigsyy(i)-sigair(i)
588 signzz(i)=off(i)*sigszz(i)-sigair(i)
589 signxy(i)=off(i)*sigsxy(i)
590 signyz(i)=off(i)*sigsyz(i)
591 signzx(i)=off(i)*sigszx(i)
592 soundsp(i)=sqrt(ey/rho0(i))
798#include "implicit_f.inc"
802#include "mvsiz_p.inc"
807 . sig(6,*), val(3,*), vec(9,*)
812 INTEGER N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
813 . , NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
815 . CS(6), STR(3,MVSIZ), A(3,3,MVSIZ), V(3,3,MVSIZ), B(3,3,MVSIZ),
816 . xmag(3,mvsiz), pr, aa, bb, aaa(mvsiz),
817 . cc, angp, dd, ftpi, ttpi, strmax,
818 . tol1(mvsiz), tol2(mvsiz), xmaxv(mvsiz), norminf(mvsiz),
822 . mdemi, xmaxinv, flm
835 flm = two*sqrt(flmin)
844 pr = -(cs(1)+cs(2)+cs(3))* third
848 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
849 & - cs(2)*cs(3) - cs(1)*cs(3)
850 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
851 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
852 norminf(nn) = em10*norminf(nn)
855 aa =
max(aaa(nn),norminf(nn))
857 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
858 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
859 & - two*cs(4)*cs(5)*cs(6)
861 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
864 angp=acos(cc) * third
865 dd=two*sqrt(aa * third)
866 str(1,nn)=dd*cos(angp)
867 str(2,nn)=dd*cos(angp+ftpi)
868 str(3,nn)=dd*cos(angp+ttpi)
870 val(1,nn) = str(1,nn)-pr
871 val(2,nn) = str(2,nn)-pr
872 val(3,nn) = str(3,nn)-pr
874 IF(abs(str(3,nn))>abs(str(1,nn))
875 & .AND.aaa(nn)>norminf(nn))
THEN
885 strmax=
max(abs(str(1,nn)),abs(str(3,nn)))
886 tol1(nn)=
max(em20,flm*strmax**2)
887 tol2(nn)=flm*strmax/3
888 a(1,1,nn)=cs(1)-str(1,nn)
889 a(2,2,nn)=cs(2)-str(1,nn)
890 a(3,3,nn)=cs(3)-str(1,nn)
898 b(1,1,nn)=a(2,1,nn)*a(3,2,nn)-a(3,1,nn)
900 b(1,2,nn)=a(2,2,nn)*a(3,3,nn)-a(3,2,nn)
902 b(1,3,nn)=a(2,3,nn)*a(3,1,nn)-a(3,3,nn)
904 b(2,1,nn)=a(3,1,nn)*a(1,2,nn)-a(1,1,nn)
906 b(2,2,nn)=a(3,2,nn)*a(1,3,nn)-a(1,2,nn)
908 b(2,3,nn)=a(3,3,nn)*a(1,1,nn)-a(1,3,nn)
910 b(3,1,nn)=a(1,1,nn)*a(2,2,nn)-a(2,1,nn)
912 b(3,2,nn)=a(1,2,nn)*a(2,3,nn)-a(2,2,nn)
914 b(3,3,nn)=a(1,3,nn)*a(2,1,nn)-a(2,3,nn)
916 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
917 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
918 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
925 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
926 IF(xmag(1,nn)==xmaxv(nn))
THEN
928 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
933 IF(aaa(nn)<norminf(nn))
THEN
934 val(1,nn) = sig(1,nn)
935 val(2,nn) = sig(2,nn)
936 val(3,nn) = sig(3,nn)
944 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
945 nindex1 = nindex1 + 1
948 nindex2 = nindex2 + 1
953#include "vectorize.inc"
957 xmaxinv = one/xmaxv(nn)
958 v(1,1,nn)=b(1,lmax,nn)*xmaxinv
959 v(2,1,nn)=b(2,lmax,nn)*xmaxinv
960 v(3,1,nn)=b(3,lmax,nn)*xmaxinv
961 a(1,1,nn)=a(1,1,nn)+str(1,nn)-str(3,nn)
962 a(2,2,nn)=a(2,2,nn)+str(1,nn)-str(3,nn)
963 a(3,3,nn)=a(3,3,nn)+str(1,nn)-str(3,nn)
965 b(1,1,nn)=a(2,1,nn)*v(3,1,nn)-a(3,1,nn)*v(2,1,nn)
966 b(1,2,nn)=a(2,2,nn)*v(3,1,nn)-a(3,2,nn)*v(2,1,nn)
967 b(1,3,nn)=a(2,3,nn)*v(3,1,nn)-a(3,3,nn)*v(2,1,nn)
968 b(2,1,nn)=a(3,1,nn)*v(1,1,nn)-a(1,1,nn)*v(3,1,nn)
969 b(2,2,nn)=a(3,2,nn)*v(1,1,nn)-a(1,2,nn)*v(3,1,nn)
970 b(2,3,nn)=a(3,3,nn)*v(1,1,nn)-a(1,3,nn)*v(3,1,nn)
971 b(3,1,nn)=a(1,1,nn)*v(2,1,nn)-a(2,1,nn)*v(1,1,nn)
972 b(3,2,nn)=a(1,2,nn)*v(2,1,nn)-a(2,2,nn)*v(1,1,nn)
973 b(3,3,nn)=a(1,3,nn)*v(2,1,nn)-a(2,3,nn)*v(1,1,nn)
974 xmag(1,nn)=sqrt(b(1,1,nn)**2+b(2,1,nn)**2+b(3,1,nn)**2)
975 xmag(2,nn)=sqrt(b(1,2,nn)**2+b(2,2,nn)**2+b(3,2,nn)**2)
976 xmag(3,nn)=sqrt(b(1,3,nn)**2+b(2,3,nn)**2+b(3,3,nn)**2)
978 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
981#include "vectorize.inc"
984 IF(xmag(1,nn)==xmaxv(nn))
THEN
986 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
992 vmag=sqrt(v(1,1,nn)**2+v(2,1,nn)**2)
994 IF(xmaxv(nn)>tol2(nn))
THEN
995 xmaxinv = one/xmaxv(nn)
996 v(1,3,nn)=b(1,lmax,nn)*xmaxinv
997 v(2,3,nn)=b(2,lmax,nn)*xmaxinv
998 v(3,3,nn)=b(3,lmax,nn)*xmaxinv
999 v(1,2,nn)=v(2,3,nn)*v(3,1,nn)-v(2,1,nn)*v(3,3,nn)
1000 v(2,2,nn)=v(3,3,nn)*v(1,1,nn)-v(3,1,nn)*v(1,3,nn)
1001 v(3,2,nn)=v(1,3,nn)*v(2,1,nn)-v(1,1,nn)*v(2,3,nn)
1002 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1003 v(1,2,nn)=v(1,2,nn)*vmag
1004 v(2,2,nn)=v(2,2,nn)*vmag
1005 v(3,2,nn)=v(3,2,nn)*vmag
1006 ELSEIF(vmag>tol2(nn))
THEN
1007 v(1,2,nn)=-v(2,1,nn)/vmag
1008 v(2,2,nn)=v(1,1,nn)/vmag
1021 xmag(1,nn)=sqrt(a(1,1,nn)**2+a(2,1,nn)**2)
1022 xmag(2,nn)=sqrt(a(1,2,nn)**2+a(2,2,nn)**2)
1023 xmag(3,nn)=sqrt(a(1,3,nn)**2+a(2,3,nn)**2)
1025 xmaxv(nn)=
max(xmag(1,nn),xmag(2,nn),xmag(3,nn))
1028#include "vectorize.inc"
1031 IF(xmag(1,nn)==xmaxv(nn))
THEN
1033 ELSEIF(xmag(2,nn)==xmaxv(nn))
THEN
1040 IF(
max(abs(a(3,1,nn)),abs(a(3,2,nn)),abs(a(3,3,nn)))
1042 xmaxinv = one/xmaxv(nn)
1046 v(1,2,nn)=-a(2,lmax,nn)*xmaxinv
1047 v(2,2,nn)= a(1,lmax,nn)*xmaxinv
1050 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
1051 xmaxinv = one/xmaxv(nn)
1052 v(1,1,nn)=-a(2,lmax,nn)*xmaxinv
1053 v(2,1,nn)= a(1,lmax,nn)*xmaxinv
1055 v(1,2,nn)=-a(3,lmax,nn)*v(2,1,nn)
1056 v(2,2,nn)= a(3,lmax,nn)*v(1,1,nn)
1057 v(3,2,nn)= a(1,lmax,nn)*v(2,1,nn)-a(2,lmax,nn)*v(1,1,nn)
1058 vmag=one/sqrt(v(1,2,nn)**2+v(2,2,nn)**2+v(3,2,nn)**2)
1059 v(1,2,nn)=v(1,2,nn)*vmag
1060 v(2,2,nn)=v(2,2,nn)*vmag
1061 v(3,2,nn)=v(3,2,nn)*vmag
1079 vec(7,nn)=vec(2,nn)*vec(6,nn)-vec(3,nn)*vec(5,nn)
1080 vec(8,nn)=vec(3,nn)*vec(4,nn)-vec(1,nn)*vec(6,nn)
1081 vec(9,nn)=vec(1,nn)*vec(5,nn)-vec(2,nn)*vec(4,nn)
1096 vec(1,nn)=-str(1,nn)
1097 vec(2,nn)=-str(2,nn)
1098 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 N, , 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,MVSIZ),
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),
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(5)**2 + cs(6)**2 - cs(1)*cs(2)
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)))
1170 norminf(nn) = em10*norminf(nn)
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
1192 IF(abs(str(3,nn))>abs(str(1,nn))
1193 & .AND.aaa(nn)>norminf(nn))
THEN
1198 index3(nindex3) = 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)
1220 b(1,3,nn)=a(2,3,nn)*a(3,1,nn)-a(3,3,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)
1444 1 NEL ,FXX , FXY , FXZ , FYX ,
1445 2 FYY ,FYZ , FZX , FZY , FZZ ,
1446 3 UXX ,UYY , UZZ , UXY , UYZ ,
1451#include "implicit_f.inc"
1455#include "mvsiz_p.inc"
1459#include "scr05_c.inc"
1465 . FXX(NEL) , FXY(NEL), FXZ(NEL),
1466 . FYX(NEL) , FYY(NEL), FYZ(NEL),
1467 . FZX(NEL) , FZY(NEL), FZZ(NEL)
1472 . UXX(NEL) , UXY(NEL), UXZ(NEL),
1473 . UYY(NEL) , UYZ(NEL), (NEL)
1482 . EV(3,MVSIZ),AV(6,MVSIZ),EVV(3,MVSIZ),DIRPRV(3,3,MVSIZ)
1486 av(1,i)=fxx(i)*fxx(i)+fyx(i)*fyx(i)+fzx(i)*fzx(i)
1487 av(2,i)=fyy(i)*fyy(i)+fxy(i)*fxy(i)+fzy(i)*fzy(i)
1488 av(3,i)=fzz(i)*fzz(i)+fzx(i)*fzx(i)+fzy(i)*fzy(i)
1489 av(4,i)=fxx(i)*fxy(i)+fyx(i)*fyy(i)+fzx(i)*fzy(i)
1490 av(6,i)=fxx(i)*fxz(i)+fyx(i)*fyz(i)+fzx(i)*fzz(i)
1491 av(5,i)=fxz(i)*fxy(i)+fyz(i)*fyy(i)+fzz(i)*fzy(i)
1497 CALL valpvec(av,evv,dirprv,nel)
1500 ev(1,i)=sqrt(evv(1,i))
1501 ev(2,i)=sqrt(evv(2,i))
1502 ev(3,i)=sqrt(evv(3,i))
1507 uxx(i) = dirprv(1,1,i)*dirprv(1,1,i)*ev(1,i)
1508 . + dirprv(1,2,i)*dirprv(1,2,i)*ev(2,i)
1509 . + dirprv(1,3,i)*dirprv(1,3,i)*ev(3,i)
1511 uyy(i) = dirprv(2,2,i)*dirprv(2,2,i)*ev(2,i)
1512 . + dirprv(2,3,i)*dirprv(2,3,i)*ev(3,i)
1513 . + dirprv(2,1,i)*dirprv(2,1,i)*ev(1,i)
1515 uzz(i) = dirprv(3,3,i)*dirprv(3,3,i)*ev(3,i)
1516 . + dirprv(3,1,i)*dirprv(3,1,i)*ev(1,i)
1517 . + dirprv(3,2,i)*dirprv(3,2,i)*ev(2,i)
1519 uxy(i) = dirprv(1,1,i)*dirprv(2,1,i)*ev(1,i)
1520 . + dirprv(1,2,i)*dirprv(2,2,i)*ev(2,i)
1521 . + dirprv(1,3,i)*dirprv(2,3,i)*ev(3,i)
1523 uyz(i) = dirprv(2,2,i)*dirprv(3,2,i)*ev(2,i)
1524 . + dirprv(2,3,i)*dirprv(3,3,i)*ev(3,i)
1525 . + dirprv(2,1,i)*dirprv(3,1,i)*ev(1,i)
1527 uxz(i) = dirprv(3,3,i)*dirprv(1,3,i)*ev(3,i)
1528 . + dirprv(3,1,i)*dirprv(1,1,i)*ev(1,i)
1529 . + dirprv(3,2,i)*dirprv(1,2,i)*ev(2,i)
1543#include "implicit_f.inc"
1547#include "mvsiz_p.inc"
1552 . sig(6,*), val(3,*), vec(9,*)
1557 INTEGER 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),
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
1608 & + cs(3)*s4_2 - cs(1)*cs(2)*cs(3)
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)
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
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)
1907#include "implicit_f.inc"
1911#include "mvsiz_p.inc"
1916 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
1921 INTEGER N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
1922 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
1924 . CS(6), STR(MVSIZ,3), A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
1925 . XMAG(MVSIZ,3), PR, AA, BB, AAA(MVSIZ),
1926 . CC, ANGP, DD, FTPI, TTPI, STRMAX,
1927 . TOL1(MVSIZ), (MVSIZ), XMAXV(MVSIZ), NORMINF(MVSIZ),
1931 . mdemi, xmaxinv, flm
1944 flm = two*sqrt(flmin)
1953 pr = -(cs(1)+cs(2)+cs(3))* third
1957 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
1958 & - cs(2)*cs(3) - cs(1)*cs
1959 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
1960 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
1964 aa =
max(aaa(nn),norminf(nn))
1966 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
1967 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
1968 & - two*cs(4)*cs(5)*cs(6)
1970 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
1973 angp=acos(cc) * third
1974 dd=two*sqrt(aa * third)
1975 str(nn,1)=dd*cos(angp)
1976 str(nn,2)=dd*cos(angp+ftpi)
1977 str(nn,3)=dd*cos(angp+ttpi)
1979 val(nn,1) = str(nn,1)-pr
1980 val(nn,2) = str(nn,2)-pr
1981 val(nn,3) = str(nn,3)-pr
1983 IF(abs(str(nn,3))>abs(str(nn,1))
1984 & .AND.aaa(nn)>norminf(nn))
THEN
1989 index3(nindex3) = nn
1994 strmax=
max(abs(str(nn,1)),abs(str(nn,3)))
1995 tol1(nn)=
max(em20,flm*strmax**2)
1996 tol2(nn)=flm*strmax/3
1997 a(nn,1,1)=cs(1)-str(nn,1)
1998 a(nn,2,2)=cs(2)-str(nn,1)
1999 a(nn,3,3)=cs(3)-str(nn,1)
2007 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2009 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2011 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2013 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2015 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2017 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2019 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2021 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2023 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2025 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2026 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2027 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2034 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2035 IF(xmag(nn,1)==xmaxv(nn))
THEN
2037 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2042 IF(aaa(nn)<norminf(nn))
THEN
2043 val(nn,1) = sig(nn,1)
2044 val(nn,2) = sig(nn,2)
2045 val(nn,3) = sig(nn,3)
2053 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
2054 nindex1 = nindex1 + 1
2055 index1(nindex1) = nn
2057 nindex2 = nindex2 + 1
2058 index2(nindex2) = nn
2062#include "vectorize.inc"
2066 xmaxinv = one/xmaxv(nn)
2067 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2068 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2069 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2070 a(nn,1,1)=a(nn,1,1)+str(nn,1)-str(nn,3)
2071 a(nn,2,2)=a(nn,2,2)+str(nn,1)-str(nn,3)
2072 a(nn,3,3)=a(nn,3,3)+str(nn,1)-str(nn,3)
2074 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2075 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2076 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2077 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2078 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2079 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2080 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2081 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2082 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2083 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2084 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2085 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2087 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2090#include "vectorize.inc"
2093 IF(xmag(nn,1)==xmaxv(nn))
THEN
2095 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2101 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2103 IF(xmaxv(nn)>tol2(nn))
THEN
2104 xmaxinv = one/xmaxv(nn)
2105 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2106 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2107 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2108 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2109 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2110 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2111 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2112 v(nn,1,2)=v(nn,1,2)*vmag
2113 v(nn,2,2)=v(nn,2,2)*vmag
2114 v(nn,3,2)=v(nn,3,2)*vmag
2115 ELSEIF(vmag>tol2(nn))
THEN
2116 v(nn,1,2)=-v(nn,2,1)/vmag
2117 v(nn,2,2)=v(nn,1,1)/vmag
2130 xmag(nn,1)=sqrt(a(nn,1,1)**2+a(nn,2,1)**2)
2131 xmag(nn,2)=sqrt(a(nn,1,2)**2+a(nn,2,2)**2)
2132 xmag(nn,3)=sqrt(a(nn,1,3)**2+a(nn,2,3)**2)
2134 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2137#include "vectorize.inc"
2140 IF(xmag(nn,1)==xmaxv(nn))
THEN
2142 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2149 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2151 xmaxinv = one/xmaxv(nn)
2155 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2156 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2159 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2160 xmaxinv = one/xmaxv(nn)
2161 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2162 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2164 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2165 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2166 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn,2,lmax)*v(nn,1,1)
2167 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2168 v(nn,1,2)=v(nn,1,2)*vmag
2169 v(nn,2,2)=v(nn,2,2)*vmag
2170 v(nn,3,2)=v(nn,3,2)*vmag
2188 vec(nn,7)=vec(nn,2)*vec(nn,6)-vec(nn,3)*vec(nn,5)
2189 vec(nn,8)=vec(nn,3)*vec(nn,4)-vec(nn,1)*vec(nn,6)
2190 vec(nn,9)=vec(nn,1)*vec(nn,5)-vec(nn,2)*vec(nn,4)
2205 vec(nn,1)=-str(nn,1)
2206 vec(nn,2)=-str(nn,2)
2207 vec(nn,3)=-str(nn,3)
2238#include "implicit_f.inc"
2242#include "mvsiz_p.inc"
2247 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
2252 INTEGER N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
2253 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
2255 . CS(6), STR(MVSIZ,3), A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
2256 . XMAG(MVSIZ,3), PR, AA, BB, AAA(MVSIZ),
2257 . CC, ANGP, DD, FTPI, TTPI, STRMAX,
2258 . TOL1(MVSIZ), TOL2(MVSIZ), XMAXV(MVSIZ), (MVSIZ),
2262 . mdemi, xmaxinv, flm,
2263 . valdp(mvsiz,3),vecdp(mvsiz,9)
2276 flm = two*sqrt(flmin)
2285 pr = -(cs(1)+cs(2)+cs(3)) * third
2289 aaa(nn)=cs(4)**2 + cs(5)**2 + cs(6)**2 - cs(1)*cs(2)
2290 & - cs(2)*cs(3) - cs(1)*cs(3)
2291 norminf(nn) =
max(abs(cs(1)),abs(cs(2)),abs(cs(3)),
2292 & abs(cs(4)),abs(cs(5)),abs(cs(6)))
2293 norminf(nn) = em10*norminf(nn)
2296 aa =
max(aaa(nn),norminf(nn))
2298 bb=cs(1)*cs(5)**2 + cs(2)*cs(6)**2
2299 & + cs(3)*cs(4)**2 - cs(1)*cs(2)*cs(3)
2300 & - two*cs(4)*cs(5)*cs(6)
2302 cc=-sqrt(twenty7/
max(em20,aa))*bb*half/
max(em20,aa)
2305 angp=acos(cc) * third
2306 dd=two*sqrt(aa * third)
2307 str(nn,1)=dd*cos(angp)
2308 str(nn,2)=dd*cos(angp+ftpi)
2309 str(nn,3)=dd*cos(angp+ttpi)
2311 valdp(nn,1) = str(nn,1)-pr
2312 valdp(nn,2) = str(nn,2)-pr
2313 valdp(nn,3) = str(nn,3)-pr
2315 IF(abs(str(nn,3))>abs(str(nn,1))
2316 & .AND.aaa(nn)>norminf(nn))
THEN
2321 index3(nindex3) = nn
2326 strmax=
max(abs(str(nn,1)),abs(str(nn,3)))
2327 tol1(nn)=
max(em20,flm*strmax**2)
2328 tol2(nn)=flm*strmax * third
2329 a(nn,1,1)=cs(1)-str(nn,1)
2330 a(nn,2,2)=cs(2)-str(nn,1)
2331 a(nn,3,3)=cs(3)-str(nn,1)
2339 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2341 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2343 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2345 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2347 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2349 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2351 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2353 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2355 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2357 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2358 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2359 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2366 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2367 IF(xmag(nn,1)==xmaxv(nn))
THEN
2369 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2374 IF(aaa(nn)<norminf(nn))
THEN
2375 valdp(nn,1) = sig(nn,1)
2376 valdp(nn,2) = sig(nn,2)
2377 valdp(nn,3) = sig(nn,3)
2384 ELSEIF(xmaxv(nn)>tol1(nn))
THEN
2385 nindex1 = nindex1 + 1
2386 index1(nindex1) = nn
2388 nindex2 = nindex2 + 1
2389 index2(nindex2) = nn
2393#include "vectorize.inc"
2397 xmaxinv = one/xmaxv(nn)
2398 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2399 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2400 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2401 a(nn,1,1)=a(nn,1,1)+str(nn,1)-str(nn,3)
2402 a(nn,2,2)=a(nn,2,2)+str(nn,1)-str(nn,3)
2403 a(nn,3,3)=a(nn,3,3)+str(nn,1)-str(nn,3)
2405 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2406 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2407 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2408 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2409 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2410 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2411 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2412 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2413 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2414 xmag(nn,1)=sqrt(b(nn,1,1)**2+b(nn,2,1)**2+b(nn,3,1)**2)
2415 xmag(nn,2)=sqrt(b(nn,1,2)**2+b(nn,2,2)**2+b(nn,3,2)**2)
2416 xmag(nn,3)=sqrt(b(nn,1,3)**2+b(nn,2,3)**2+b(nn,3,3)**2)
2418 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2421#include "vectorize.inc"
2424 IF(xmag(nn,1)==xmaxv(nn))
THEN
2426 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2432 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2434 IF(xmaxv(nn)>tol2(nn))
THEN
2435 xmaxinv = one/xmaxv(nn)
2436 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2437 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2438 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2439 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2440 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2441 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2442 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2443 v(nn,1,2)=v(nn,1,2)*vmag
2444 v(nn,2,2)=v(nn,2,2)*vmag
2445 v(nn,3,2)=v(nn,3,2)*vmag
2446 ELSEIF(vmag>tol2(nn))
THEN
2447 v(nn,1,2)=-v(nn,2,1)/vmag
2448 v(nn,2,2)=v(nn,1,1)/vmag
2459#include "vectorize.inc"
2462 xmag(nn,1)=sqrt(a(nn,1,1)**2+a(nn,2,1)**2)
2463 xmag(nn,2)=sqrt(a(nn,1,2)**2+a(nn,2,2)**2)
2464 xmag(nn,3)=sqrt(a(nn,1,3)**2+a(nn,2,3)**2)
2466 xmaxv(nn)=
max(xmag(nn,1),xmag(nn,2),xmag(nn,3))
2469#include "vectorize.inc"
2472 IF(xmag(nn,1)==xmaxv(nn))
THEN
2474 ELSEIF(xmag(nn,2)==xmaxv(nn))
THEN
2481 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2483 xmaxinv = one/xmaxv(nn)
2487 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2488 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2491 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2492 xmaxinv = one/xmaxv(nn)
2493 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2494 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2496 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2497 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2498 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn,2,lmax)*v(nn,1,1)
2499 vmag=one/sqrt(v(nn,1,2)**2+v(nn,2,2)**2+v(nn,3,2)**2)
2500 v(nn,1,2)=v(nn,1,2)*vmag
2501 v(nn,2,2)=v(nn,2,2)*vmag
2502 v(nn,3,2)=v(nn,3,2)*vmag
2514 vecdp(nn,1)=v(nn,1,1)
2515 vecdp(nn,2)=v(nn,2,1)
2516 vecdp(nn,3)=v(nn,3,1)
2517 vecdp(nn,4)=v(nn,1,2)
2518 vecdp(nn,5)=v(nn,2,2)
2519 vecdp(nn,6)=v(nn,3,2)
2520 vecdp(nn,7)=vecdp(nn,2)*vecdp(nn,6)-vecdp(nn,3)*vecdp(nn,5)
2521 vecdp(nn,8)=vecdp(nn,3)*vecdp(nn,4)-vecdp(nn,1)*vecdp(nn,6)
2522 vecdp(nn,9)=vecdp(nn,1)*vecdp(nn,5)-vecdp(nn,2)*vecdp(nn,4)
2526 val(nn,1)=valdp(nn,1)
2527 val(nn,2)=valdp(nn,2)
2528 val(nn,3)=valdp(nn,3)
2529 vec(nn,1)=vecdp(nn,1)
2530 vec(nn,2)=vecdp(nn,2)
2531 vec(nn,3)=vecdp(nn,3)
2532 vec(nn,4)=vecdp(nn,4)
2533 vec(nn,5)=vecdp(nn,5)
2534 vec(nn,6)=vecdp(nn,6)
2535 vec(nn,7)=vecdp(nn,7)
2536 vec(nn,8)=vecdp(nn,8)
2537 vec(nn,9)=vecdp(nn,9)
2540#include "vectorize.inc"
2548#include "vectorize.inc"
2554 vec(nn,1)=-str(nn,1)
2555 vec(nn,2)=-str(nn,2)
2556 vec(nn,3)=-str(nn,3)
2572#include "implicit_f.inc"
2576#include "mvsiz_p.inc"
2581 . sig(mvsiz,6), val(mvsiz,3), vec(mvsiz,9)
2586 INTEGER N, NN, LMAX, LMAXV(MVSIZ),NINDEX3, INDEX3(MVSIZ),
2587 . NINDEX1, NINDEX2, INDEX1(MVSIZ), INDEX2(MVSIZ)
2589 . CS1,CS2,CS3,CS4,CS5,CS6,
2590 . A(MVSIZ,3,3), V(MVSIZ,3,3), B(MVSIZ,3,3),
2591 . PR, AA, BB, AAA(MVSIZ),
2592 . , ANGP, DD, , TTPI, STRMAX,
2593 . TOL1(MVSIZ), TOL2(MVSIZ), XMAXV(MVSIZ), NORMINF(MVSIZ),
2598 . mdemi, xmaxinv, flm,
2599 . s4_2,s5_2,s6_2,c1,c2,sq_aa,
2600 . valdp1(mvsiz),valdp2(mvsiz),valdp3(mvsiz),
2601 . str1(mvsiz),str2(mvsiz),str3(mvsiz),
2602 . xmag1(mvsiz),xmag2(mvsiz),xmag3(mvsiz),
2603 . vecdp1(mvsiz),vecdp2(mvsiz),vecdp3(mvsiz),
2604 . vecdp4(mvsiz),vecdp5(mvsiz),vecdp6(mvsiz),
2605 . vecdp7(mvsiz),vecdp8(mvsiz),vecdp9(mvsiz)
2607 DOUBLE PRECISION :: SQRT3DMI, SIN_ANGP, COS_ANGP
2608 PARAMETER (SQRT3DMI=sqrt(3.0d0) / 2.0d0 )
2622 flm = two*sqrt(flmin)
2625 c1 = half*sqrt(twenty7)
2626 c2 = two*sqrt(third)
2634 pr = -(cs1+cs2+cs3) * third
2641 aaa(nn)=s4_2 + s5_2 + s6_2 - cs1*cs2
2642 & - cs2*cs3 - cs1*cs3
2643 norminf(nn) =
max(abs(cs1),abs(cs2),abs(cs3),
2644 & abs(cs4),abs(cs5),abs(cs6))
2645 norminf(nn) = em10*norminf(nn)
2647 aa =
max(aaa(nn),norminf(nn))
2650 bb=cs1*s5_2 + cs2*s6_2
2651 & + cs3*s4_2 - cs1*cs2*cs3
2654 cc=-c1/
max(em10,sq_aa)*bb/
max(em20,aa)
2658 angp=acos(cc) * third
2661 cos_angp = cos(angp)
2662 sin_angp = sin(angp)
2666 str3(nn)=dd*cos_angp
2667 str1(nn)=dd*((-half*cos_angp) - (sin_angp*sqrt3dmi))
2668 str2(nn)=-(str1(nn)+str3(nn))
2670 valdp1(nn) = str1(nn)-pr
2671 valdp2(nn) = str2(nn)-pr
2672 valdp3(nn) = str3(nn)-pr
2674 IF(abs(str3(nn))>abs(str1(nn))
2675 & .AND.aaa(nn)>norminf(nn))
THEN
2686 strmax=
max(abs(str1(nn)),abs(str3(nn)))
2687 tol1(nn)=
max(em20,flm*strmax*strmax)
2688 tol2(nn)=flm*strmax * third
2689 a(nn,1,1)=cs1-str1(nn)
2690 a(nn,2,2)=cs2-str1(nn)
2691 a(nn,3,3)=cs3-str1(nn)
2699 b(nn,1,1)=a(nn,2,1)*a(nn,3,2)-a(nn,3,1)
2701 b(nn,1,2)=a(nn,2,2)*a(nn,3,3)-a(nn,3,2)
2703 b(nn,1,3)=a(nn,2,3)*a(nn,3,1)-a(nn,3,3)
2705 b(nn,2,1)=a(nn,3,1)*a(nn,1,2)-a(nn,1,1)
2707 b(nn,2,2)=a(nn,3,2)*a(nn,1,3)-a(nn,1,2)
2709 b(nn,2,3)=a(nn,3,3)*a(nn,1,1)-a(nn,1,3)
2711 b(nn,3,1)=a(nn,1,1)*a(nn,2,2)-a(nn,2,1)
2713 b(nn,3,2)=a(nn,1,2)*a(nn,2,3)-a(nn,2,2)
2715 b(nn,3,3)=a(nn,1,3)*a(nn,2,1)-a(nn,2,3)
2717 xmag1(nn)=b(nn,1,1)*b(nn,1,1)+b(nn,2,1)*b(nn,2,1)+
2718 . b(nn,3,1)*b(nn,3,1)
2719 xmag2(nn)=b(nn,1,2)*b(nn,1,2)+b(nn,2,2)*b(nn,2,2)+
2720 . b(nn,3,2)*b(nn,3,2)
2721 xmag3(nn)=b(nn,1,3)*b(nn,1,3)+b(nn,2,3)*b(nn,2,3)+
2722 . b(nn,3,3)*b(nn,3,3)
2729 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2730 IF(xmag1(nn)==xmaxv(nn))
THEN
2732 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2737 IF(aaa(nn)<norminf(nn))
THEN
2738 valdp1(nn) = sig(nn,1)
2739 valdp2(nn) = sig(nn,2)
2740 valdp3(nn) = sig(nn,3)
2747 ELSEIF(xmaxv(nn)>tol1(nn)*tol1(nn))
THEN
2748 nindex1 = nindex1 + 1
2749 index1(nindex1) = nn
2751 nindex2 = nindex2 + 1
2752 index2(nindex2) = nn
2756#include "vectorize.inc"
2760 xmaxinv = one/sqrt(xmaxv(nn))
2761 v(nn,1,1)=b(nn,1,lmax)*xmaxinv
2762 v(nn,2,1)=b(nn,2,lmax)*xmaxinv
2763 v(nn,3,1)=b(nn,3,lmax)*xmaxinv
2764 a(nn,1,1)=a(nn,1,1)+str1(nn)-str3(nn)
2765 a(nn,2,2)=a(nn,2,2)+str1(nn)-str3(nn)
2766 a(nn,3,3)=a(nn,3,3)+str1(nn)-str3(nn)
2768 b(nn,1,1)=a(nn,2,1)*v(nn,3,1)-a(nn,3,1)*v(nn,2,1)
2769 b(nn,1,2)=a(nn,2,2)*v(nn,3,1)-a(nn,3,2)*v(nn,2,1)
2770 b(nn,1,3)=a(nn,2,3)*v(nn,3,1)-a(nn,3,3)*v(nn,2,1)
2771 b(nn,2,1)=a(nn,3,1)*v(nn,1,1)-a(nn,1,1)*v(nn,3,1)
2772 b(nn,2,2)=a(nn,3,2)*v(nn,1,1)-a(nn,1,2)*v(nn,3,1)
2773 b(nn,2,3)=a(nn,3,3)*v(nn,1,1)-a(nn,1,3)*v(nn,3,1)
2774 b(nn,3,1)=a(nn,1,1)*v(nn,2,1)-a(nn,2,1)*v(nn,1,1)
2775 b(nn,3,2)=a(nn,1,2)*v(nn,2,1)-a(nn,2,2)*v(nn,1,1)
2776 b(nn,3,3)=a(nn,1,3)*v(nn,2,1)-a(nn,2,3)*v(nn,1,1)
2777 xmag1(nn)=b(nn,1,1)*b(nn,1,1)+b(nn,2,1)*b(nn,2,1)+
2778 . b(nn,3,1)*b(nn,3,1)
2779 xmag2(nn)=b(nn,1,2)*b(nn,1,2)+b(nn,2,2)*b(nn,2,2)+
2780 . b(nn,3,2)*b(nn,3,2)
2781 xmag3(nn)=b(nn,1,3)*b(nn,1,3)+b(nn,2,3)*b(nn,2,3)+
2782 . b(nn,3,3)*b(nn,3,3)
2784 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2787#include "vectorize.inc"
2790 IF(xmag1(nn)==xmaxv(nn))
THEN
2792 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2798 vmag=sqrt(v(nn,1,1)**2+v(nn,2,1)**2)
2800 xmaxv(nn)=sqrt(xmaxv(nn))
2801 IF(xmaxv(nn)>tol2(nn))
THEN
2802 xmaxinv = one/xmaxv(nn)
2803 v(nn,1,3)=b(nn,1,lmax)*xmaxinv
2804 v(nn,2,3)=b(nn,2,lmax)*xmaxinv
2805 v(nn,3,3)=b(nn,3,lmax)*xmaxinv
2806 v(nn,1,2)=v(nn,2,3)*v(nn,3,1)-v(nn,2,1)*v(nn,3,3)
2807 v(nn,2,2)=v(nn,3,3)*v(nn,1,1)-v(nn,3,1)*v(nn,1,3)
2808 v(nn,3,2)=v(nn,1,3)*v(nn,2,1)-v(nn,1,1)*v(nn,2,3)
2809 c1 = v(nn,1,2)*v(nn,1,2)+v(nn,2,2)*v(nn,2,2)+
2810 & v(nn,3,2)*v(nn,3,2)
2812 v(nn,1,2)=v(nn,1,2)*vmag
2813 v(nn,2,2)=v(nn,2,2)*vmag
2814 v(nn,3,2)=v(nn,3,2)*vmag
2815 ELSEIF(vmag>tol2(nn))
THEN
2816 v(nn,1,2)=-v(nn,2,1)/vmag
2817 v(nn,2,2)=v(nn,1,1)/vmag
2828#include "vectorize.inc"
2831 xmag1(nn)=a(nn,1,1)*a(nn,1,1)+a(nn,2,1)*a(nn,2,1)
2832 xmag2(nn)=a(nn,1,2)*a(nn,1,2)+a(nn,2,2)*a(nn,2,2)
2833 xmag3(nn)=a(nn,1,3)*a(nn,1,3)+a(nn,2,3)*a(nn,2,3)
2835 xmaxv(nn)=
max(xmag1(nn),xmag2(nn),xmag3(nn))
2838#include "vectorize.inc"
2841 IF(xmag1(nn)==xmaxv(nn))
THEN
2843 ELSEIF(xmag2(nn)==xmaxv(nn))
THEN
2850 xmaxv(nn)=sqrt(xmaxv(nn))
2851 IF(
max(abs(a(nn,3,1)),abs(a(nn,3,2)),abs(a(nn,3,3)))
2853 xmaxinv = one/xmaxv(nn)
2857 v(nn,1,2)=-a(nn,2,lmax)*xmaxinv
2858 v(nn,2,2)= a(nn,1,lmax)*xmaxinv
2861 ELSEIF(xmaxv(nn)>tol2(nn))
THEN
2862 xmaxinv = one/xmaxv(nn)
2863 v(nn,1,1)=-a(nn,2,lmax)*xmaxinv
2864 v(nn,2,1)= a(nn,1,lmax)*xmaxinv
2866 v(nn,1,2)=-a(nn,3,lmax)*v(nn,2,1)
2867 v(nn,2,2)= a(nn,3,lmax)*v(nn,1,1)
2868 v(nn,3,2)= a(nn,1,lmax)*v(nn,2,1)-a(nn,2,lmax)*v(nn,1,1)
2869 c1 = v(nn,1,2)*v(nn,1,2)+v(nn,2,2)*v(nn,2,2)+
2870 & v(nn,3,2)*v(nn,3,2)
2872 v(nn,1,2)=v(nn,1,2)*vmag
2873 v(nn,2,2)=v(nn,2,2)*vmag
2874 v(nn,3,2)=v(nn,3,2)*vmag
2876 valdp1(nn) = sig(nn,1)
2877 valdp2(nn) = sig(nn,2)
2878 valdp3(nn) = sig(nn,3)
2891 vecdp2(nn)=v(nn,2,1)
2892 vecdp3(nn)=v(nn,3,1)
2893 vecdp4(nn)=v(nn,1,2)
2894 vecdp5(nn)=v(nn,2,2)
2895 vecdp6(nn)=v(nn,3,2)
2896 vecdp7(nn)=vecdp2(nn)*vecdp6(nn)-vecdp3(nn)*vecdp5(nn)
2897 vecdp8(nn)=vecdp3(nn)*vecdp4(nn)-vecdp1(nn)*vecdp6(nn)
2898 vecdp9(nn)=vecdp1(nn)*vecdp5(nn)-vecdp2(nn)*vecdp4(nn)
2902 val(nn,1)=valdp1(nn)
2903 val(nn,2)=valdp2(nn)
2904 val(nn,3)=valdp3(nn)
2905 vec(nn,1)=vecdp1(nn)
2906 vec(nn,2)=vecdp2(nn)
2907 vec(nn,3)=vecdp3(nn)
2908 vec(nn,4)=vecdp4(nn)
2909 vec(nn,5)=vecdp5(nn)
2910 vec(nn,6)=vecdp6(nn)
2911 vec(nn,7)=vecdp7(nn)
2912 vec(nn,8)=vecdp8(nn)
2913 vec(nn,9)=vecdp9(nn)
2916 IF (nindex3 > 0)
THEN
2918 IF(index3(nn) == 1)
THEN