29 1 OFFG, STI, FSKY, FSKYV,
31 3 DELTAX2, IADS10, NC, THEM,
32 4 FTHESKY, AR, X, SAV,
33 5 CONDNSKY,CONDE, ITAGDN, NEL,
34 6 NFT, ISMSTR, JTHE, ISROT, NODADT_THERM)
38#include "implicit_f.inc"
53 INTEGER,
INTENT(IN) :: NFT
54 INTEGER,
INTENT(IN) :: ISMSTR
55 INTEGER,
INTENT(IN) :: JTHE
56 INTEGER,
INTENT(IN) :: ISROT
57 INTEGER,
INTENT(IN) :: NODADT_THERM
61 . offg(*),fskyv(lsky,8),fsky(8,lsky),sti(*),deltax2(*),
62 . fx(mvsiz,10), fy(mvsiz,10), fz(mvsiz,10),them(mvsiz,10),
63 . fthesky(*),ar(3,*),x(3,*), condnsky(*),conde(*)
66 INTEGER IADS(8,*),IADS10(6,*)
72 INTEGER IPERM(4),IPERM1(6),IPERM2(6),N1,N2,NN,JJ,L1,L2,K1,K2
74 . stiv(mvsiz),stie(mvsiz)
77 DATA iperm1/1,2,3,1,2,3/
78 DATA iperm2/2,3,1,4,4,4/
80 . off_l,xm,ym,zm,xx,yy,zz,facirot,facirot2
83 facirot = (nine + third)
86 facirot2 = two * (nine + third)
90 off_l =
min(off_l,offg(i))
114 IF(nodadt_therm == 1)
THEN
125 IF(idt1tet10/=0 .AND. isrot/=1)
THEN
134 IF(idt1tet10/=0 .AND. isrot/=1)
THEN
145 stiv(i) = two/thirty2 * sti(i)
146 stie(i) = two*seven/fourty8 * sti(i)
150#include "vectorize.inc"
153 k = iads(iperm(n),ii)
184 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
185 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
186 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
190 fskyv(k,7)=fskyv(k,7)+half*stie(i)
192 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
193 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
194 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
198 fskyv(k,7)=fskyv(k,7)+half*stie(i)
202 ELSEIF(isrot == 2)
THEN
209 sti(i) = half * sti(i)
213#include "vectorize.inc"
216 k = iads(iperm(n),ii)
243 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
244 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
245 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
247 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
248 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
249 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
251 ELSEIF(itagdn(nn)/=0)
THEN
256 fskyv(k,7)=sti(i)*facirot
261 ELSEIF(isrot == 0)
THEN
263#include "vectorize.inc"
266 k = iads(iperm(n),ii)
274 fskyv(k,7)=sti(i)*deltax2(i)
297 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
298 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
299 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
303 fskyv(k,7)=fskyv(k,7)+half*sti(i)
305 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
306 fskyv(k,2)=fskyv(k,2)+half
307 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
311 fskyv(k,7)=fskyv(k,7)+half*sti(i)
315 ELSEIF(isrot == 1)
THEN
317#include "vectorize.inc"
320 k = iads(iperm(n),ii)
328 fskyv(k,7)=sti(i)*two
329 fskyv(k,8)=sti(i)*deltax2(i)*one_over_8*three
333 IF(ismstr==1.OR.((ismstr==2.OR.ismstr==12).AND.idtmin(1)==3))
THEN
345 IF(abs(offg(i))>one)
THEN
346 xx=sav(i,k2)-sav(i,k1)
347 yy=sav(i,k2+10)-sav(i,k1+10)
348 zz=sav(i,k2+20)-sav(i,k1+20)
349 xm = one_over_8*(yy*fz(i,n+4) - zz*fy(i,n+4))
350 ym = one_over_8*(zz*fx(i,n+4) - xx*fz(i,n+4))
351 zm = one_over_8*(xx*fy(i,n+4) - yy*fx(i,n+4))
354 . ((x(2,n2)-x(2,n1))*fz(i,n+4) - (x(3,n2)-x(3,n1))*fy(i,n+4))
356 . ((x(3,n2)-x(3,n1))*fx(i,n+4) - (x(1,n2)-x(1,n1))*fz(i,n+4))
358 . ((x(1,n2)-x(1,n1))*fy(i,n+4) - (x(2,n2)-x(2,n1))*fx(i,n+4))
361 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
362 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
363 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
364 fskyv(k,4)=fskyv(k,4) + xm
365 fskyv(k,5)=fskyv(k,5) + ym
366 fskyv(k,6)=fskyv(k,6) + zm
368 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
369 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
370 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
371 fskyv(k,4)=fskyv(k,4) - xm
372 fskyv(k,5)=fskyv(k,5) - ym
373 fskyv(k,6)=fskyv(k,6) - zm
389 . ((x(2,n2)-x(2,n1))*fz(i,n+4) - (x(3,n2)-x(3,n1))*fy(i,n+4))
391 . ((x(3,n2)-x(3,n1))*fx(i,n+4) - (x(1,n2)-x(1,n1))*fz(i,n+4))
393 . ((x(1,n2)-x(1,n1))*fy(i,n+4) - (x(2,n2)-x(2,n1))*fx(i,n+4))
396 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
397 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
398 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
399 fskyv(k,4)=fskyv(k,4) + xm
400 fskyv(k,5)=fskyv(k,5) + ym
401 fskyv(k,6)=fskyv(k,6) + zm
403 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
404 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
405 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
406 fskyv(k,4)=fskyv(k,4) - xm
407 fskyv(k,5)=fskyv(k,5) - ym
408 fskyv(k,6)=fskyv(k,6) - zm
412 ELSEIF(isrot == 2)
THEN
414#include "vectorize.inc"
417 k = iads(iperm(n),ii)
425 fskyv(k,7)=sti(i)*two
444 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
445 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
446 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
448 fskyv(k,1)=fskyv(k,1)+half*fx(i,n+4)
449 fskyv(k,2)=fskyv(k,2)+half*fy(i,n+4)
450 fskyv(k,3)=fskyv(k,3)+half*fz(i,n+4)
452 ELSEIF(itagdn(nn)/=0)
THEN
457 fskyv(k,7)=sti(i)*facirot2
465 IF(idt1tet10/=0 .AND. isrot/=1)
THEN
476 stiv(i) = two/thirty2 * sti(i)
483 k = iads(iperm(n),ii)
510 fsky(1,k)=fsky(1,k)+half*fx(i,n+4)
511 fsky(2,k)=fsky(2,k)+half*fy(i,n+4)
512 fsky(3,k)=fsky(3,k)+half*fz(i,n+4)
513 fsky(7,k)=fsky(7,k) + half*stie(i)
515 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
516 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
517 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
518 fsky(7,k)=fsky(7,k ) + half*stie(i)
523 ELSEIF(isrot == 2)
THEN
532 sti(i) = half * sti(i)
538 k = iads(iperm(n),ii)
559 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
560 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
561 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
563 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
564 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
565 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
567 ELSEIF(itagdn(nn)/=0)
THEN
569 fsky(1,k) = fx(i,n+4)
570 fsky(2,k) = fy(i,n+4)
571 fsky(3,k) = fz(i,n+4)
572 fsky(7,k) = sti(i)*facirot
579 ELSEIF(isrot == 0)
THEN
583 k = iads(iperm(n),ii)
590 fsky(7,k)=sti(i)*deltax2(i)
610 fsky(1,k)=fsky(1,k)+half*fx(i,n+4)
611 fsky(2,k)=fsky(2,k)+half*fy(i,n+4)
612 fsky(3,k)=fsky(3,k)+half*fz(i,n+4)
613 fsky(7,k)=fsky(7,k) + half*sti(i)
615 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
616 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
617 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
618 fsky(7,k)=fsky(7,k ) + half*sti(i)
623 ELSEIF(isrot == 1)
THEN
628 k = iads(iperm(n),ii)
636 fsky(8,k)=sti(i)*deltax2(i)*one_over_8*three
640 IF(ismstr==1.OR.((ismstr==2.OR.ismstr==12).AND.idtmin(1)==3))
THEN
652 IF(abs(offg(i))>one)
THEN
653 xx=sav(i,k2)-sav(i,k1)
654 yy=sav(i,k2+10)-sav(i,k1+10)
655 zz=sav(i,k2+20)-sav(i,k1+20)
656 xm = one_over_8*(yy*fz(i
657 ym = one_over_8*(zz*fx(i,n+4) - xx*fz(i,n+4))
658 zm = one_over_8*(xx*fy(i,n+4) - yy*fx(i,n+4))
661 . ((x(2,n2)-x(2,n1))*fz(i,n+4) - (x(3,n2)-x(3,n1))*fy(i,n+4))
663 . ((x(3,n2)-x(3,n1))*fx(i,n+4) - (x(1,n2)-x(1,n1))*fz(i,n+4))
665 . ((x(1,n2)-x(1,n1))*fy(i,n+4) - (x(2,n2)-x(2,n1))*fx(i,n+4))
668 fsky(1,k)=fsky(1,k)+half*fx(i,n+4)
669 fsky(2,k)=fsky(2,k)+half*fy(i,n+4)
670 fsky(3,k)=fsky(3,k)+half*fz(i,n+4)
671 fsky(4,k)=fsky(4,k) + xm
672 fsky(5,k)=fsky(5,k) + ym
673 fsky(6,k)=fsky(6,k) + zm
675 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
676 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
677 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
678 fsky(4,k)=fsky(4,k) - xm
679 fsky(5,k)=fsky(5,k) - ym
680 fsky(6,k)=fsky(6,k) - zm
696 . ((x(2,n2)-x(2,n1))*fz(i,n+4) - (x(3,n2)-x(3,n1))*fy(i,n+4))
698 . ((x(3,n2)-x(3,n1))*fx(i,n+4) - (x(1,n2)-x(1,n1))*fz(i,n+4))
700 . ((x(1,n2)-x(1,n1))*fy(i,n+4) - (x(2,n2)-x(2,n1))*fx(i,n+4))
703 fsky(1,k)=fsky(1,k)+half*fx(i,n+4)
704 fsky(2,k)=fsky(2,k)+half*fy(i,n+4)
705 fsky(3,k)=fsky(3,k)+half*fz(i,n+4)
706 fsky(4,k)=fsky(4,k) + xm
707 fsky(5,k)=fsky(5,k) + ym
708 fsky(6,k)=fsky(6,k) + zm
710 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
711 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
712 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
713 fsky(4,k)=fsky(4,k) - xm
714 fsky(5,k)=fsky(5,k) - ym
715 fsky(6,k)=fsky(6,k) - zm
719 ELSEIF(isrot == 2)
THEN
724 k = iads(iperm(n),ii)
745 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
746 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
747 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
749 fsky(1,k)=fsky(1,k) + half*fx(i,n+4)
750 fsky(2,k)=fsky(2,k) + half*fy(i,n+4)
751 fsky(3,k)=fsky(3,k) + half*fz(i,n+4)
753 ELSEIF(itagdn(nn)/=0)
THEN
755 fsky(1,k) = fx(i,n+4)
756 fsky(2,k) = fy(i,n+4)
757 fsky(3,k) = fz(i,n+4)
758 fsky(7,k) = sti(i)*facirot2
772 k = iads(iperm(n),ii)
786 fthesky(k)=them(i,n+4)
788 k = iads(iperm(n1),ii)
789 fthesky(k)=fthesky(k) + half*them(i,n+4)
790 k = iads(iperm(n2),ii)
791 fthesky(k)=fthesky(k) + half*them(i,n+4)
798 IF(nodadt_therm == 1)
THEN
801 conde(i)=fourth*conde(i)
808 k = iads(iperm(n),ii)
809 condnsky(k)=conde(i)*deltax2(i)
825 condnsky(k)=condnsky(k) + half*conde(i)
827 condnsky(k)=condnsky(k) + half*conde(i)
831 ELSEIF(isrot == 1)
THEN
835 k = iads(iperm(n),ii)
836 condnsky(k)=conde(i)*deltax2(i)*one_over_8*three
839 ELSEIF(isrot == 2)
THEN
843 k = iads(iperm(n),ii)
844 condnsky(k)=conde(i)*two
859 IF(nn /= 0.AND.itagdn(nn)/=0)
THEN
861 condnsky(k)=conde(i)*facirot2
876 fx(i,n1)=fx(i,n1)+half*fx(i,n+4)
877 fy(i,n1)=fy(i,n1)+half*fy(i
878 fz(i,n1)=fz(i,n1)+half*fz(i,n
879 fx(i,n2)=fx(i,n2)+half*fx(i,n+4)
880 fy(i,n2)=fy(i,n2)+half*fy(i,n+4)
881 fz(i,n2)=fz(i,n2)+half*fz(i,n+4)