2 WRITE(*,*)
'FD1 Kernel library loaded' 6 SUBROUTINE fd1interior(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX, U, KN)
10 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
11 REAL(KIND=8),
INTENT(IN) :: DX
12 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
13 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
15 INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
17 INTEGER(KIND=8) :: plane
22 IF(e1 == n1) ie1 = n1 - 1
33 kn(li) = ( u(li+1) - u(li-1) ) * fac
41 SUBROUTINE fd1interiorx(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX, U, KN)
44 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
45 REAL(KIND=8),
INTENT(IN) :: DX
46 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
47 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
49 INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ, IS1, IE1
51 INTEGER(KIND=8) :: plane
56 IF(e1 == n1) ie1 = n1 - 1
67 kn(li) = ( u(li+1) - u(li-1) ) * fac
75 SUBROUTINE fd1interiory(N1,N2,N3,S1,E1,S2,E2,S3,E3,DY,U,KN)
79 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
80 REAL(KIND=8),
INTENT(IN) :: DY
81 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
82 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
84 INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ
85 INTEGER(KIND=8) :: IS1, IS2, IS3, IE1, IE2, IE3
87 INTEGER(KIND=8) :: plane
97 IF(e2 == n2) ie2 = n2 - 1
108 kn(li) = ( u(li+n1) - u(li-n1) ) * fac
116 SUBROUTINE fd1interiorz(N1,N2,N3,S1,E1,S2,E2,S3,E3,DZ,U,KN)
120 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
121 REAL(KIND=8),
INTENT(IN) :: DZ
122 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
123 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
125 INTEGER(KIND=8) :: I, J, K, LI, LIK, LIJ
126 INTEGER(KIND=8) :: IS1, IS2, IS3, IE1, IE2, IE3
128 INTEGER(KIND=8) :: plane
138 IF(e3 == n3) ie3 = n3 - 1
149 kn(li) = ( u(li+plane) - u(li-plane) ) * fac
157 SUBROUTINE fd1interior2(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX,DY,U,KX,KY)
161 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
162 REAL(KIND=8),
INTENT(IN) :: DX,DY
163 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
164 REAL(KIND=8),
INTENT(OUT) :: KX(n1*n2*n3)
165 REAL(KIND=8),
INTENT(OUT) :: KY(n1*n2*n3)
167 INTEGER(KIND=8) :: I, J, K
168 INTEGER(KIND=8) :: LI, LIK, LIJ, IS1, IE1
169 INTEGER(KIND=8) :: LII, IS2, IE2
170 REAL(KIND=8) :: fac1,fac2
171 INTEGER(KIND=8) :: plane
179 IF(e1 == n1) ie1 = n1 - 1
181 IF(e2 == n2) ie2 = n2 - 1
197 kx(li) = ( u(li+1) - u(li-1) ) * fac1
205 ky(lij) = ( u(lij+n1) - u(lij-n1) ) * fac2
213 SUBROUTINE fd1interior3(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX,DY,DZ,U,KX,KY,KZ)
217 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
218 REAL(KIND=8),
INTENT(IN) :: DX,DY,DZ
219 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
220 REAL(KIND=8),
INTENT(OUT) :: KX(n1*n2*n3)
221 REAL(KIND=8),
INTENT(OUT) :: KY(n1*n2*n3)
222 REAL(KIND=8),
INTENT(OUT) :: KZ(n1*n2*n3)
224 INTEGER(KIND=8) :: I, J, K
225 INTEGER(KIND=8) :: LI, LIK, LIJ, IS1, IE1
226 INTEGER(KIND=8) :: LII, IS2, IE2, IS3, IE3
227 REAL(KIND=8) :: fac1,fac2,fac3
228 INTEGER(KIND=8) :: plane
241 IF(e1 == n1) ie1 = n1 - 1
244 IF(e2 == n2) ie2 = n2 - 1
247 IF(e3 == n3) ie3 = n3 - 1
264 kx(li) = ( u(li+1) - u(li-1) ) * fac1
272 ky(lij) = ( u(lij+n1) - u(lij-n1) ) * fac2
283 lik = (k-1)*plane + li
284 kz(lik) = ( u(lik+plane) - u(lik-plane) ) * fac3
291 SUBROUTINE fd1grad3(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX,DY,DZ,U,GRADU)
295 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
296 REAL(KIND=8),
INTENT(IN) :: DX,DY,DZ
297 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3)
298 REAL(KIND=8),
INTENT(OUT) :: GRADU(3*n1*n2*n3)
302 INTEGER(KIND=8) :: I, J, K
303 INTEGER(KIND=8) :: LI, LIK, LIJ, IS1, IE1
304 INTEGER(KIND=8) :: LII, IS2, IE2, IS3, IE3
305 REAL(KIND=8) :: fac1,fac2,fac3
306 INTEGER(KIND=8) :: plane
307 INTEGER(KIND=8) :: numPoints,numPoints2
310 numpoints2 = 2*n1*n2*n3
323 IF(e1 == n1) ie1 = n1 - 1
326 IF(e2 == n2) ie2 = n2 - 1
329 IF(e3 == n3) ie3 = n3 - 1
346 gradu(li) = ( u(li+1) - u(li-1) ) * fac1
354 gradu(lij+numpoints) = ( u(lij+n1) - u(lij-n1) ) * fac2
365 lik = (k-1)*plane + li
366 gradu(lik+numpoints2) = ( u(lik+plane) - u(lik-plane) ) * fac3
373 SUBROUTINE fd1div3(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX,DY,DZ,UVEC,DIVU)
377 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
378 REAL(KIND=8),
INTENT(IN) :: DX,DY,DZ
379 REAL(KIND=8),
INTENT(IN) :: UVEC(3*n1*n2*n3)
380 REAL(KIND=8),
INTENT(OUT) :: DIVU(n1*n2*n3)
384 INTEGER(KIND=8) :: I, J, K
385 INTEGER(KIND=8) :: LI, LIK, LIJ, IS1, IE1
386 INTEGER(KIND=8) :: LII, IS2, IE2, IS3, IE3
387 REAL(KIND=8) :: fac1,fac2,fac3
388 INTEGER(KIND=8) :: plane
389 INTEGER(KIND=8) :: numPoints,numPoints2
392 numpoints2 = 2*n1*n2*n3
405 IF(e1 == n1) ie1 = n1 - 1
408 IF(e2 == n2) ie2 = n2 - 1
411 IF(e3 == n3) ie3 = n3 - 1
428 divu(li) = ( uvec(li+1) - uvec(li-1) ) * fac1
436 divu(lij) = divu(lij) + ( uvec((lij+n1)+numpoints) - uvec((lij-n1)+numpoints) ) * fac2
447 lik = (k-1)*plane + li
448 divu(lik) = divu(lik) + ( uvec((lik+plane)+numpoints2) - uvec((lik-plane)+numpoints2) ) * fac3
456 SUBROUTINE fd1div3all(N1,N2,N3,OPINTERVAL,DX,DY,DZ,&
457 UVHLEFT,UVHRIGHT,UVHFRONT,UVHBACK,UVHBOTTOM,UVHTOP, &
462 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3
463 INTEGER(KIND=8),
INTENT(IN) :: OPINTERVAL(6)
464 REAL(KIND=8),
INTENT(IN) :: DX,DY,DZ
465 REAL(KIND=8),
INTENT(IN) :: UVHLEFT(3*n2*n3)
466 REAL(KIND=8),
INTENT(IN) :: UVHRIGHT(3*n2*n3)
467 REAL(KIND=8),
INTENT(IN) :: UVHFRONT(3*n1*n3)
468 REAL(KIND=8),
INTENT(IN) :: UVHBACK(3*n1*n3)
469 REAL(KIND=8),
INTENT(IN) :: UVHBOTTOM(3*n1*n2)
470 REAL(KIND=8),
INTENT(IN) :: UVHTOP(3*n1*n2)
471 REAL(KIND=8),
INTENT(IN) :: UVEC(3*n1*n2*n3)
472 REAL(KIND=8),
INTENT(OUT) :: DIVU(n1*n2*n3)
476 INTEGER(KIND=8) :: I, J, K
477 INTEGER(KIND=8) :: IH,IU,JH,JU,KH,KU
478 INTEGER(KIND=8) :: LI, LIK, LIJ, IS1, IE1
479 INTEGER(KIND=8) :: LII, IS2, IE2, IS3, IE3
480 INTEGER(KIND=8) :: S1,E1,S2,E2,S3,E3
481 REAL(KIND=8) :: fac1,fac2,fac3
482 INTEGER(KIND=8) :: plane,plane2,numHalo
483 INTEGER(KIND=8) :: numPoints,numPoints2
488 numpoints2 = 2*n1*n2*n3
526 divu(ju) = ( uvec(ju+1) - uvhleft(jh) ) * fac1
542 divu(ju) = ( uvhright(jh) - uvec(ju-1) ) * fac1
550 IF((e1 > s1) .OR. ((e1 < n1) .AND. (s1 > 1)))
THEN 553 IF(e1 == n1) ie1 = n1 - 1
561 divu(iu) = ( uvec(iu+1) - uvec(iu-1) ) * fac1
592 divu(iu) = divu(iu) + ( uvec(iu+n1+numpoints) - uvhfront(ih+numhalo) ) * fac2
616 divu(iu) = divu(iu) + ( uvhback(ih+numhalo) - uvec((iu-n1)+numpoints) ) * fac2
634 IF((e2 > s2) .OR. ((e2 < n2) .AND. (s2 > 1)))
THEN 637 IF(e2 == n2) ie2 = n2 - 1
645 divu(iu) = divu(iu) + ( uvec(iu+n1+numpoints) - uvec(iu-n1+numpoints) ) * fac2
664 divu(iu) = divu(iu) + ( uvec(iu+plane+numpoints2) - uvhbottom(iu+plane2) ) * fac3
679 divu(iu) = divu(iu) + ( uvhtop(ih+plane2) - uvec(iu-plane+numpoints2) ) * fac3
686 IF((e3 > s3) .OR. ((e3 < n3) .AND. (s3 > 1)))
THEN 689 IF(e3 == n3) ie3 = n3 - 1
697 divu(iu) = divu(iu) + ( uvec(iu+plane+numpoints2) - uvec(iu-plane+numpoints2) ) * fac3
709 SUBROUTINE fd1leftboundary(N1,N2,N3,S1,E1,S2,E2,S3,E3, DX, u0, Tau, U, KN)
713 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
714 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), DX, Tau, u0
715 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
717 INTEGER(KIND=8) :: I, J, K, LI, plane, KI
718 REAL(KIND=8) :: fac,bcfac,bcterm
729 kn(li) = ( u(li+1) - u(li) ) * fac + bcfac*u(li) - bcterm
737 SUBROUTINE fd1rightboundary(N1,N2,N3,S1,E1,S2,E2,S3,E3,DX, u0, Tau, U, KN)
741 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
742 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), DX, Tau, u0
743 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
744 INTEGER(KIND=8) :: J, K, LI, plane, KI
745 REAL(KIND=8) :: fac,bcfac,bcterm
757 kn(li) = ( u(li) - u(li-1) ) * fac + bcfac*u(li) - bcterm
764 SUBROUTINE fd1haloleft(N1,N2,N3,S1,E1,S2,E2,S3,E3, DX, U, KN, HL)
769 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
770 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HL(n2*n3), DX
771 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
773 INTEGER(KIND=8) :: J, K, LI, plane, LII, KI, KII
785 kn(li) = ( u(li+1) - hl(lii) ) * fac
792 SUBROUTINE fd1haloright(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, U, KN, HR)
796 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
797 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HR(n2*n3), DX
798 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
800 INTEGER(KIND=8) :: J, K, LI, plane, LII, KI, KII
813 kn(li) = ( hr(lii) - u(li-1) ) * fac
819 SUBROUTINE fd1halofront(N1,N2,N3,S1,E1,S2,E2,S3,E3, DY, U, KN, HL)
824 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
825 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HL(n1*n3), DY
826 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
828 INTEGER(KIND=8) :: I, J, K, LI, plane, LII, KI, KII
840 kn(li) = ( u(li+n1) - hl(lii) ) * fac
846 SUBROUTINE fd1haloback(N1,N2,N3,S1,E1,S2,E2,S3,E3, DY, U, KN, HL)
851 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
852 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HL(n1*n3), DY
853 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
855 INTEGER(KIND=8) :: I, J, K, LI, plane, LII, KI, KII
868 kn(li) = ( hl(lii) - u(li-n1)) * fac
874 SUBROUTINE fd1halotop(N1,N2,N3,S1,E1,S2,E2,S3,E3, DZ, U, KN, HL)
879 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
880 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HL(n1*n2), DZ
881 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
883 INTEGER(KIND=8) :: I, J, K, LI, plane, LII, KI, KII
896 kn(li) = ( hl(lii) - u(li-plane) ) * fac
902 SUBROUTINE fd1halobottom(N1,N2,N3,S1,E1,S2,E2,S3,E3, DZ, U, KN, HL)
907 INTEGER(KIND=8),
INTENT(IN) :: N1, N2, N3, S1, E1, S2, E2, S3, E3
908 REAL(KIND=8),
INTENT(IN) :: U(n1*n2*n3), HL(n1*n2), DZ
909 REAL(KIND=8),
INTENT(OUT) :: KN(n1*n2*n3)
911 INTEGER(KIND=8) :: I, J, K, LI, plane, LII, KI, KII
922 kn(lii) = ( u(li+plane) - hl(lii) ) * fac
subroutine fd1halofront(N1, N2, N3, S1, E1, S2, E2, S3, E3, DY, U, KN, HL)
subroutine fd1div3all(N1, N2, N3, OPINTERVAL, DX, DY, DZ, UVHLEFT, UVHRIGHT, UVHFRONT, UVHBACK, UVHBOTTOM, UVHTOP, UVEC, DIVU)
subroutine fd1interior3(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, DY, DZ, U, KX, KY, KZ)
subroutine fd1div3(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, DY, DZ, UVEC, DIVU)
subroutine fd1grad3(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, DY, DZ, U, GRADU)
subroutine fd1interiorz(N1, N2, N3, S1, E1, S2, E2, S3, E3, DZ, U, KN)
subroutine fd1interiory(N1, N2, N3, S1, E1, S2, E2, S3, E3, DY, U, KN)
subroutine fd1haloback(N1, N2, N3, S1, E1, S2, E2, S3, E3, DY, U, KN, HL)
subroutine fd1halobottom(N1, N2, N3, S1, E1, S2, E2, S3, E3, DZ, U, KN, HL)
subroutine fd1leftboundary(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, u0, Tau, U, KN)
subroutine fd1haloright(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, U, KN, HR)
subroutine fd1rightboundary(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, u0, Tau, U, KN)
subroutine fd1haloleft(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, U, KN, HL)
subroutine fd1halotop(N1, N2, N3, S1, E1, S2, E2, S3, E3, DZ, U, KN, HL)
subroutine fd1interior2(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, DY, U, KX, KY)
subroutine fd1interiorx(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, U, KN)
subroutine fd1interior(N1, N2, N3, S1, E1, S2, E2, S3, E3, DX, U, KN)