9 integer(kind=intType),
intent(in) :: index
10 tstart(index) = mpi_wtime()
18 integer(kind=intType),
intent(in) :: index
27 integer(kind=intType),
intent(in) :: index, il, jl, kl
28 integer(kind=intType),
intent(out) :: i, j, k
29 integer(kind=intType) :: ID, isize, jsize, ksize
35 j = mod(id / isize, jsize)
36 k = id / (isize * jsize)
44 integer(kind=intType),
intent(in) :: i, j, k, il, jl, kl
45 integer(kind=intType) :: isize, jsize, ksize,
windindex
51 windindex = k * isize * jsize + j * isize + i + 1
67 integer(kind=intType) :: i, jj
71 do i = 1, overlap%nrow
72 write (*,
"(a,I4, a)", advance=
'no')
'Row:', i,
" "
73 do jj = overlap%rowPtr(i), overlap%rowPtr(i + 1) - 1
74 write (*,
"(a,I2, a, es10.5)", advance=
'no')
"(", overlap%colInd(jj),
")", overlap%data(jj)
79 print *,
'--------------------------------------'
81 do i = 1, overlap%nRow
82 write (*,
"(a,I4, a)", advance=
'no')
'Row:', i,
" "
83 do jj = overlap%rowPtr(i), overlap%rowPtr(i + 1) - 1
84 write (*,
"(a,I2, a, I8)", advance=
'no')
"(", overlap%colInd(jj),
")", int(overlap%assignedProc(jj))
97 integer(kind=intType),
intent(in) :: n
98 integer(kind=intType),
dimension(n),
intent(in) :: sizeArray
99 integer(kind=intType),
dimension(0:n),
intent(out) :: cumArray
102 integer(kind=intType) :: i
106 cumarray(i) = cumarray(i - 1) + sizearray(i)
124 integer(kind=intType) :: col, colp1, i, k, next
134 allocate (b%data(b%nnz), b%colInd(b%nnz), &
135 b%assignedProc(b%nnz), b%rowPtr(b%nRow + 1))
142 do k = a%rowPTr(i), a%rowPtr(i + 1) - 1
143 colp1 = a%colInd(k) + 1
144 b%rowPtr(colp1) = b%rowPtr(colp1) + 1
153 b%rowPtr(i + 1) = b%rowPtr(i) + b%rowPtr(i + 1)
159 do k = a%rowPtr(i), a%rowPtr(i + 1) - 1
163 b%data(next) = a%data(k)
164 b%assignedProc(next) = a%assignedProc(k)
167 b%rowPtr(col) = next + 1
173 b%rowPtr(i + 1) = b%rowPtr(i)
187 if (mat1%allocated)
then
209 integer(kind=intType),
intent(in) :: n
210 type(
fringetype),
intent(in),
dimension(n) :: fringes
211 integer(kind=intType),
intent(out) :: nFringeProc
212 integer(kind=intType),
intent(out) :: fringeProc(nProc), cumFringeProc(1:nProc + 1)
215 integer(kind=intType) :: i, currentProc
223 if (currentproc /= fringes(i)%donorProc)
then
224 nfringeproc = nfringeproc + 1
225 cumfringeproc(nfringeproc) = i
226 fringeproc(nfringeproc) = fringes(i)%donorProc
227 currentproc = fringes(i)%donorProc
232 cumfringeproc(nfringeproc + 1) = n + 1
245 integer(kind=intType) :: n
246 type(
oversetblock),
dimension(n),
intent(inout) :: oBLocks
249 integer(kind=intType) :: i
254 if (oblocks(i)%allocated)
then
256 oblocks(i)%hexaConn, &
257 oblocks(i)%globalCell, &
258 oblocks(i)%nearWall, &
259 oblocks(i)%invalidDonor, &
260 oblocks(i)%qualDonor, &
262 if (
allocated(oblocks(i)%rbuffer))
then
263 deallocate (oblocks(i)%rBuffer, &
279 integer(kind=intType) :: n
283 integer(kind=intType) :: i
286 if (
allocated(ofringes(i)%x)) &
287 deallocate (ofringes(i)%x)
289 if (
allocated(ofringes(i)%isWall)) &
290 deallocate (ofringes(i)%isWall)
292 if (
allocated(ofringes(i)%xSeed)) &
293 deallocate (ofringes(i)%xSeed)
295 if (
allocated(ofringes(i)%wallInd)) &
296 deallocate (ofringes(i)%wallInd)
298 if (
allocated(ofringes(i)%rbuffer)) &
299 deallocate (ofringes(i)%rBuffer)
301 if (
allocated(ofringes(i)%ibuffer)) &
302 deallocate (ofringes(i)%iBuffer)
304 if (
associated(ofringes(i)%fringeIntBuffer)) &
305 deallocate (ofringes(i)%fringeIntBuffer)
307 if (
associated(ofringes(i)%fringeRealBuffer)) &
308 deallocate (ofringes(i)%fringeRealBuffer)
310 ofringes(i)%allocated = .false.
325 integer(kind=intType) :: n
326 type(
oversetwall),
dimension(n),
intent(inout) :: oSurfs
329 integer(kind=intType) :: i
332 if (osurfs(i)%allocated)
then
339 if (osurfs(i)%nNodes > 0)
then
343 osurfs(i)%allocated = .false.
354 logical,
intent(out) :: wallsPresent
355 integer(kind=intType) :: mm
356 wallspresent = .false.
363 wallspresent = .true.
371 use blockpointers,
only:
nx,
ny,
nz,
ie,
je,
ke,
bcdata,
bcfaceid,
nbocos,
bctype, &
383 integer(kind=intType) :: nn, i, j, k, mm, iStart, iEnd, jStart, jEnd, kStart, kEnd
384 integer(kind=intType) :: ii, jj, kk, i_stencil
385 logical :: floodOrBlank, floodOrBlank2
399 istart = 1; iend = 3;
403 istart =
nx; iend =
ie;
408 jstart = 1; jend = 3;
412 jstart =
ny; jend =
je;
417 kstart = 1; kend = 3;
421 kstart =
nz; kend =
ke;
443 if (floodorblank)
then
455 if (.not. floodorblank2)
then
466 domainloop:
do nn = 1, ndom
467 flowdoms(nn, 1, 1)%intCommVars(1)%var => &
468 flowdoms(nn, 1, 1)%forcedRecv(:, :, :)
507 integer(kind=intType),
intent(in) :: i
515 integer(kind=intType),
intent(in) :: i
523 integer(kind=intType),
intent(in) :: i
531 integer(kind=intType),
intent(in) :: i
539 integer(kind=intType),
intent(in) :: i
547 integer(kind=intType),
intent(in) :: i
555 integer(kind=intType),
intent(in) :: i
562 integer(kind=intType),
intent(inout) :: i
563 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
564 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
565 call setstatus(i, flag, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
571 integer(kind=intType),
intent(inout) :: i
572 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
573 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
574 call setstatus(i, isdonor, flag, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
580 integer(kind=intType),
intent(inout) :: i
581 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
582 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
583 call setstatus(i, isdonor, ishole, flag, isfloodseed, isflooded, iswalldonor, isreceiver)
589 integer(kind=intType),
intent(inout) :: i
590 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
591 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
592 call setstatus(i, isdonor, ishole, iscompute, flag, isflooded, iswalldonor, isreceiver)
598 integer(kind=intType),
intent(inout) :: i
599 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
600 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
601 call setstatus(i, isdonor, ishole, iscompute, isfloodseed, flag, iswalldonor, isreceiver)
607 integer(kind=intType),
intent(inout) :: i
608 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
609 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
610 call setstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, flag, isreceiver)
616 integer(kind=intType),
intent(inout) :: i
617 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver, flag
618 call getstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, isreceiver)
619 call setstatus(i, isdonor, ishole, iscompute, isfloodseed, isflooded, iswalldonor, flag)
622 subroutine setstatus(i, isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver)
626 integer(kind=intType),
intent(out) :: i
627 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver
630 if (isdonor) i = i + 1
631 if (ishole) i = i + 2
632 if (iscompute) i = i + 4
633 if (isfloodseed) i = i + 8
634 if (isflooded) i = i + 16
635 if (iswalldonor) i = i + 32
636 if (isreceiver) i = i + 64
639 subroutine getstatus(i, isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver)
643 logical :: isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver
644 integer(kind=intType) :: i, j
650 isfloodseed = .false.
652 iswalldonor = .false.
702 integer(kind=intType),
intent(in) :: nn, searchNode
703 integer(kind=intType),
intent(out) :: searchInd
704 integer(kind=intType),
intent(in) :: arr(nn)
707 integer(kind=intType) :: first, last, middle
712 middle = (first + last) / 2
714 do while (first <= last)
715 if (arr(middle) < searchnode)
then
717 else if (arr(middle) == searchnode)
then
724 middle = (first + last) / 2
727 if (first > last)
then
729 print *,
' binSearchNode fails for searchNode ', searchnode
745 integer(kind=intType),
intent(in) :: nn
746 integer(kind=intType),
intent(out) :: searchInd
749 type(
pocketedge),
dimension(*),
intent(in) :: arr
752 integer(kind=intType) :: first, last, middle
757 middle = (first + last) / 2
759 do while (first <= last)
760 if (arr(middle) < search)
then
762 else if (arr(middle) == search)
then
769 middle = (first + last) / 2
772 if (first > last)
then
773 print *,
' binSearchPocketEdgeType fails for Edge with nodes ', &
794 integer(kind=intType),
intent(in) :: nn
796 type(
oversetedge),
dimension(*),
intent(inout) :: arr
800 integer(kind=intType),
parameter :: m = 7
802 integer(kind=intType) :: nStack
803 integer(kind=intType) :: i, j, k, r, l, jStack, ii
809 integer(kind=intType),
allocatable,
dimension(:) :: stack
810 integer(kind=intType),
allocatable,
dimension(:) :: tmpStack
815 allocate (stack(nstack), stat=ierr)
818 "Memory allocation failure for stack")
832 if ((r - l) < m)
then
838 do i = (j - 1), l, -1
839 if (arr(i) <= a)
exit
848 if (jstack == 0)
exit
853 l = stack(jstack - 1)
868 if (arr(r) < arr(l))
then
874 if (arr(r) < arr(l + 1))
then
880 if (arr(l + 1) < arr(l))
then
899 if (a <= arr(i))
exit
905 if (arr(j) <= a)
exit
929 if (jstack > nstack)
then
933 allocate (tmpstack(nstack), stat=ierr)
936 "Memory allocation error for tmpStack")
942 deallocate (stack, stat=ierr)
945 "Deallocation error for stack")
947 nstack = nstack + 100
952 allocate (stack(nstack), stat=ierr)
955 "Memory reallocation error for stack")
956 stack(1:ii) = tmpstack(1:ii)
960 deallocate (tmpstack, stat=ierr)
963 "Deallocation error for tmpStack")
966 if ((r - i + 1) >= (j - l))
then
969 stack(jstack - 1) = j
971 stack(jstack) = j - 1
972 stack(jstack - 1) = l
981 deallocate (stack, stat=ierr)
984 "Deallocation error for stack")
990 if (arr(i + 1) < arr(i)) &
992 "Array is not sorted correctly")
1011 integer(kind=intType),
intent(in) :: nn, sortType
1013 type(
fringetype),
dimension(*),
intent(inout) :: arr
1017 integer(kind=intType),
parameter :: m = 7
1019 integer(kind=intType) :: nStack
1020 integer(kind=intType) :: i, j, k, r, l, jStack, ii
1026 integer(kind=intType),
allocatable,
dimension(:) :: stack
1027 integer(kind=intType),
allocatable,
dimension(:) :: tmpStack
1035 "Uuknown sort type")
1041 allocate (stack(nstack), stat=ierr)
1044 "Memory allocation failure for stack")
1058 if ((r - l) < m)
then
1064 do i = (j - 1), l, -1
1065 if (arr(i) <= a)
exit
1074 if (jstack == 0)
exit
1079 l = stack(jstack - 1)
1094 if (arr(r) < arr(l))
then
1100 if (arr(r) < arr(l + 1))
then
1106 if (arr(l + 1) < arr(l))
then
1125 if (a <= arr(i))
exit
1131 if (arr(j) <= a)
exit
1155 if (jstack > nstack)
then
1159 allocate (tmpstack(nstack), stat=ierr)
1162 "Memory allocation error for tmpStack")
1168 deallocate (stack, stat=ierr)
1171 "Deallocation error for stack")
1173 nstack = nstack + 100
1178 allocate (stack(nstack), stat=ierr)
1181 "Memory reallocation error for stack")
1182 stack(1:ii) = tmpstack(1:ii)
1186 deallocate (tmpstack, stat=ierr)
1189 "Deallocation error for tmpStack")
1192 if ((r - i + 1) >= (j - l))
then
1195 stack(jstack - 1) = j
1197 stack(jstack) = j - 1
1198 stack(jstack - 1) = l
1207 deallocate (stack, stat=ierr)
1210 "Deallocation error for stack")
1216 if (arr(i + 1) < arr(i)) &
1218 "Array is not sorted correctly")
1238 type(
fringetype),
dimension(:),
pointer :: fringeList
1240 integer(kind=intType),
intent(inout) :: n
1243 integer(kind=intType) :: fSize
1244 type(
fringetype),
dimension(:),
pointer :: tmpFringePtr
1245 fsize =
size(fringelist)
1253 tmpfringeptr => fringelist
1256 allocate (fringelist(int(1.5 * fsize)))
1259 fringelist(1:fsize) = tmpfringeptr(1:fsize)
1262 deallocate (tmpfringeptr)
1266 fringelist(n) = fringe
1281 integer(kind=intType),
dimension(:, :),
pointer :: intBuffer
1282 real(kind=realtype),
dimension(:, :),
pointer :: realbuffer
1284 integer(kind=intType),
intent(inout) :: n
1287 integer(kind=intType) :: fsize
1288 integer(kind=intType),
dimension(:, :),
pointer :: tmpint
1289 real(kind=realtype),
dimension(:, :),
pointer :: tmpreal
1290 fsize =
size(intbuffer, 2)
1299 tmpreal => realbuffer
1302 allocate (intbuffer(5, int(1.5 * fsize)))
1303 allocate (realbuffer(4, int(1.5 * fsize)))
1306 intbuffer(:, 1:fsize) = tmpint(:, 1:fsize)
1307 realbuffer(:, 1:fsize) = tmpreal(:, 1:fsize)
1310 deallocate (tmpint, tmpreal)
1315 intbuffer(1, n) = fringe%donorProc
1316 intbuffer(2, n) = fringe%donorBlock
1317 intbuffer(3, n) = fringe%dIndex
1318 intbuffer(4, n) = fringe%myBlock
1319 intbuffer(5, n) = fringe%myIndex
1321 realbuffer(1:3, n) = fringe%donorFrac
1322 realbuffer(4, n) = fringe%quality
1340 integer(kind=intType),
intent(in) :: nn
1342 type(
pocketedge),
dimension(*),
intent(inout) :: arr
1346 integer(kind=intType),
parameter :: m = 7
1348 integer(kind=intType) :: nStack
1349 integer(kind=intType) :: i, j, k, r, l, jStack, ii
1355 integer(kind=intType),
allocatable,
dimension(:) :: stack
1356 integer(kind=intType),
allocatable,
dimension(:) :: tmpStack
1361 allocate (stack(nstack), stat=ierr)
1364 "Memory allocation failure for stack")
1378 if ((r - l) < m)
then
1384 do i = (j - 1), l, -1
1385 if (arr(i) <= a)
exit
1394 if (jstack == 0)
exit
1399 l = stack(jstack - 1)
1414 if (arr(r) < arr(l))
then
1420 if (arr(r) < arr(l + 1))
then
1426 if (arr(l + 1) < arr(l))
then
1445 if (a <= arr(i))
exit
1451 if (arr(j) <= a)
exit
1475 if (jstack > nstack)
then
1479 allocate (tmpstack(nstack), stat=ierr)
1482 "Memory allocation error for tmpStack")
1488 deallocate (stack, stat=ierr)
1491 "Deallocation error for stack")
1493 nstack = nstack + 100
1498 allocate (stack(nstack), stat=ierr)
1501 "Memory reallocation error for stack")
1502 stack(1:ii) = tmpstack(1:ii)
1506 deallocate (tmpstack, stat=ierr)
1509 "Deallocation error for tmpStack")
1512 if ((r - i + 1) >= (j - l))
then
1515 stack(jstack - 1) = j
1517 stack(jstack) = j - 1
1518 stack(jstack - 1) = l
1527 deallocate (stack, stat=ierr)
1530 "Deallocation error for stack")
1536 if (arr(i + 1) < arr(i)) &
1538 "Array is not sorted correctly")
1561 integer(kind=intType),
intent(in) :: level, sps
1562 integer(kind=intType),
intent(out) :: totalOrphans
1563 logical,
intent(in) :: lastCall
1566 integer(kind=intType) :: i, j, k, nn, ii, jj, kk, n, ierr
1567 integer(kind=intType) :: magic, localOrphans, i_stencil
1579 if (
iblank(i, j, k) == 1)
then
1587 if (.not. (
iblank(ii, jj, kk) == 1 .or.
iblank(ii, jj, kk) == -1))
then
1610 if (
iblank(i, j, k) == 0 .or.
iblank(i, j, k) == -2 .or. &
1618 if (ii >= 2 .and. jj >= 2 .and. kk >= 2 .and. &
1619 ii <=
il .and. jj <=
jl .and. kk <=
kl)
then
1621 if (
iblank(ii, jj, kk) == 1)
then
1632 localorphans = localorphans + n
1635 if (
associated(flowdoms(nn, level, sps)%orphans))
then
1636 deallocate (flowdoms(nn, level, sps)%orphans)
1638 allocate (flowdoms(nn, level, sps)%orphans(3, n))
1641 flowdoms(nn, level, sps)%nOrphans = n
1645 orphans => flowdoms(nn, level, sps)%orphans
1653 if (
iblank(i, j, k) == 0 .or.
iblank(i, j, k) == -2 .or. &
1661 if (ii >= 2 .and. jj >= 2 .and. kk >= 2 .and. &
1662 ii <=
il .and. jj <=
jl .and. kk <=
kl)
then
1664 if (
iblank(ii, jj, kk) == 1)
then
1667 orphans(:, n) = (/ii, jj, kk/)
1672 flowdoms(nn, level, sps)%iBlankLast(ii, jj, kk) = -5
1684 call mpi_allreduce(localorphans, totalorphans, 1, adflow_integer, mpi_sum, &
1686 call echk(ierr, __file__, __line__)
1689 print *,
'Total number of orphans:', totalorphans
1695 if (lastcall .and. (totalorphans .gt. 0))
then
1702 if (flowdoms(nn, level, sps)%iblankLast(i, j, k) == -5)
iblank(i, j, k) = -5
1725 real(kind=realtype),
intent(in) :: xsearch(3), xelem(3, -1:1, -1:1, -1:1)
1726 real(kind=realtype),
intent(inout) :: uvwquadratic(3)
1731 integer(kind=intType) :: n, niter
1732 real(kind=realtype) :: resid, residtol
1733 real(kind=realtype) :: b(3, 4)
1736 integer(kind=intType) :: j, l, iii, jjj, kkk
1737 real(kind=realtype) :: ff(27), shp(3, 3), psi(3)
1738 real(kind=realtype) :: dff(27, 3), dshp(3, 3, 3)
1749 newton_loop:
do while (niter < 10 .and. resid > residtol)
1755 psi(1:3) = uvwquadratic(1:3)
1759 shp(1, j) =
half * psi(j) * (psi(j) -
one)
1760 shp(2, j) = -(psi(j)**2 - 1)
1761 shp(3, j) =
half * psi(j) * (psi(j) +
one)
1765 ff(1) = shp(1, 1) * shp(1, 2) * shp(1, 3)
1766 ff(2) = shp(2, 1) * shp(1, 2) * shp(1, 3)
1767 ff(3) = shp(3, 1) * shp(1, 2) * shp(1, 3)
1769 ff(4) = shp(1, 1) * shp(2, 2) * shp(1, 3)
1770 ff(5) = shp(2, 1) * shp(2, 2) * shp(1, 3)
1771 ff(6) = shp(3, 1) * shp(2, 2) * shp(1, 3)
1773 ff(7) = shp(1, 1) * shp(3, 2) * shp(1, 3)
1774 ff(8) = shp(2, 1) * shp(3, 2) * shp(1, 3)
1775 ff(9) = shp(3, 1) * shp(3, 2) * shp(1, 3)
1777 ff(10) = shp(1, 1) * shp(1, 2) * shp(2, 3)
1778 ff(11) = shp(2, 1) * shp(1, 2) * shp(2, 3)
1779 ff(12) = shp(3, 1) * shp(1, 2) * shp(2, 3)
1781 ff(13) = shp(1, 1) * shp(2, 2) * shp(2, 3)
1782 ff(14) = shp(2, 1) * shp(2, 2) * shp(2, 3)
1783 ff(15) = shp(3, 1) * shp(2, 2) * shp(2, 3)
1785 ff(16) = shp(1, 1) * shp(3, 2) * shp(2, 3)
1786 ff(17) = shp(2, 1) * shp(3, 2) * shp(2, 3)
1787 ff(18) = shp(3, 1) * shp(3, 2) * shp(2, 3)
1789 ff(19) = shp(1, 1) * shp(1, 2) * shp(3, 3)
1790 ff(20) = shp(2, 1) * shp(1, 2) * shp(3, 3)
1791 ff(21) = shp(3, 1) * shp(1, 2) * shp(3, 3)
1793 ff(22) = shp(1, 1) * shp(2, 2) * shp(3, 3)
1794 ff(23) = shp(2, 1) * shp(2, 2) * shp(3, 3)
1795 ff(24) = shp(3, 1) * shp(2, 2) * shp(3, 3)
1797 ff(25) = shp(1, 1) * shp(3, 2) * shp(3, 3)
1798 ff(26) = shp(2, 1) * shp(3, 2) * shp(3, 3)
1799 ff(27) = shp(3, 1) * shp(3, 2) * shp(3, 3)
1807 dshp(:, :, :) = 0.d0
1809 dshp(1, j, j) =
half * (psi(j) -
one) +
half * psi(j)
1810 dshp(2, j, j) = -2.d0 * psi(j)
1811 dshp(3, j, j) =
half * (psi(j) +
one) +
half * psi(j)
1816 loop_psi_j:
do j = 1, 3
1817 dff(1, j) = dshp(1, 1, j) * shp(1, 2) * shp(1, 3) &
1818 + shp(1, 1) * dshp(1, 2, j) * shp(1, 3) &
1819 + shp(1, 1) * shp(1, 2) * dshp(1, 3, j)
1821 dff(2, j) = dshp(2, 1, j) * shp(1, 2) * shp(1, 3) &
1822 + shp(2, 1) * dshp(1, 2, j) * shp(1, 3) &
1823 + shp(2, 1) * shp(1, 2) * dshp(1, 3, j)
1825 dff(3, j) = dshp(3, 1, j) * shp(1, 2) * shp(1, 3) &
1826 + shp(3, 1) * dshp(1, 2, j) * shp(1, 3) &
1827 + shp(3, 1) * shp(1, 2) * dshp(1, 3, j)
1829 dff(4, j) = dshp(1, 1, j) * shp(2, 2) * shp(1, 3) &
1830 + shp(1, 1) * dshp(2, 2, j) * shp(1, 3) &
1831 + shp(1, 1) * shp(2, 2) * dshp(1, 3, j)
1833 dff(5, j) = dshp(2, 1, j) * shp(2, 2) * shp(1, 3) &
1834 + shp(2, 1) * dshp(2, 2, j) * shp(1, 3) &
1835 + shp(2, 1) * shp(2, 2) * dshp(1, 3, j)
1837 dff(6, j) = dshp(3, 1, j) * shp(2, 2) * shp(1, 3) &
1838 + shp(3, 1) * dshp(2, 2, j) * shp(1, 3) &
1839 + shp(3, 1) * shp(2, 2) * dshp(1, 3, j)
1841 dff(7, j) = dshp(1, 1, j) * shp(3, 2) * shp(1, 3) &
1842 + shp(1, 1) * dshp(3, 2, j) * shp(1, 3) &
1843 + shp(1, 1) * shp(3, 2) * dshp(1, 3, j)
1845 dff(8, j) = dshp(2, 1, j) * shp(3, 2) * shp(1, 3) &
1846 + shp(2, 1) * dshp(3, 2, j) * shp(1, 3) &
1847 + shp(2, 1) * shp(3, 2) * dshp(1, 3, j)
1849 dff(9, j) = dshp(3, 1, j) * shp(3, 2) * shp(1, 3) &
1850 + shp(3, 1) * dshp(3, 2, j) * shp(1, 3) &
1851 + shp(3, 1) * shp(3, 2) * dshp(1, 3, j)
1853 dff(10, j) = dshp(1, 1, j) * shp(1, 2) * shp(2, 3) &
1854 + shp(1, 1) * dshp(1, 2, j) * shp(2, 3) &
1855 + shp(1, 1) * shp(1, 2) * dshp(2, 3, j)
1857 dff(11, j) = dshp(2, 1, j) * shp(1, 2) * shp(2, 3) &
1858 + shp(2, 1) * dshp(1, 2, j) * shp(2, 3) &
1859 + shp(2, 1) * shp(1, 2) * dshp(2, 3, j)
1861 dff(12, j) = dshp(3, 1, j) * shp(1, 2) * shp(2, 3) &
1862 + shp(3, 1) * dshp(1, 2, j) * shp(2, 3) &
1863 + shp(3, 1) * shp(1, 2) * dshp(2, 3, j)
1865 dff(13, j) = dshp(1, 1, j) * shp(2, 2) * shp(2, 3) &
1866 + shp(1, 1) * dshp(2, 2, j) * shp(2, 3) &
1867 + shp(1, 1) * shp(2, 2) * dshp(2, 3, j)
1869 dff(14, j) = dshp(2, 1, j) * shp(2, 2) * shp(2, 3) &
1870 + shp(2, 1) * dshp(2, 2, j) * shp(2, 3) &
1871 + shp(2, 1) * shp(2, 2) * dshp(2, 3, j)
1873 dff(15, j) = dshp(3, 1, j) * shp(2, 2) * shp(2, 3) &
1874 + shp(3, 1) * dshp(2, 2, j) * shp(2, 3) &
1875 + shp(3, 1) * shp(2, 2) * dshp(2, 3, j)
1877 dff(16, j) = dshp(1, 1, j) * shp(3, 2) * shp(2, 3) &
1878 + shp(1, 1) * dshp(3, 2, j) * shp(2, 3) &
1879 + shp(1, 1) * shp(3, 2) * dshp(2, 3, j)
1881 dff(17, j) = dshp(2, 1, j) * shp(3, 2) * shp(2, 3) &
1882 + shp(2, 1) * dshp(3, 2, j) * shp(2, 3) &
1883 + shp(2, 1) * shp(3, 2) * dshp(2, 3, j)
1885 dff(18, j) = dshp(3, 1, j) * shp(3, 2) * shp(2, 3) &
1886 + shp(3, 1) * dshp(3, 2, j) * shp(2, 3) &
1887 + shp(3, 1) * shp(3, 2) * dshp(2, 3, j)
1889 dff(19, j) = dshp(1, 1, j) * shp(1, 2) * shp(3, 3) &
1890 + shp(1, 1) * dshp(1, 2, j) * shp(3, 3) &
1891 + shp(1, 1) * shp(1, 2) * dshp(3, 3, j)
1893 dff(20, j) = dshp(2, 1, j) * shp(1, 2) * shp(3, 3) &
1894 + shp(2, 1) * dshp(1, 2, j) * shp(3, 3) &
1895 + shp(2, 1) * shp(1, 2) * dshp(3, 3, j)
1897 dff(21, j) = dshp(3, 1, j) * shp(1, 2) * shp(3, 3) &
1898 + shp(3, 1) * dshp(1, 2, j) * shp(3, 3) &
1899 + shp(3, 1) * shp(1, 2) * dshp(3, 3, j)
1901 dff(22, j) = dshp(1, 1, j) * shp(2, 2) * shp(3, 3) &
1902 + shp(1, 1) * dshp(2, 2, j) * shp(3, 3) &
1903 + shp(1, 1) * shp(2, 2) * dshp(3, 3, j)
1905 dff(23, j) = dshp(2, 1, j) * shp(2, 2) * shp(3, 3) &
1906 + shp(2, 1) * dshp(2, 2, j) * shp(3, 3) &
1907 + shp(2, 1) * shp(2, 2) * dshp(3, 3, j)
1909 dff(24, j) = dshp(3, 1, j) * shp(2, 2) * shp(3, 3) &
1910 + shp(3, 1) * dshp(2, 2, j) * shp(3, 3) &
1911 + shp(3, 1) * shp(2, 2) * dshp(3, 3, j)
1913 dff(25, j) = dshp(1, 1, j) * shp(3, 2) * shp(3, 3) &
1914 + shp(1, 1) * dshp(3, 2, j) * shp(3, 3) &
1915 + shp(1, 1) * shp(3, 2) * dshp(3, 3, j)
1917 dff(26, j) = dshp(2, 1, j) * shp(3, 2) * shp(3, 3) &
1918 + shp(2, 1) * dshp(3, 2, j) * shp(3, 3) &
1919 + shp(2, 1) * shp(3, 2) * dshp(3, 3, j)
1921 dff(27, j) = dshp(3, 1, j) * shp(3, 2) * shp(3, 3) &
1922 + shp(3, 1) * dshp(3, 2, j) * shp(3, 3) &
1923 + shp(3, 1) * shp(3, 2) * dshp(3, 3, j)
1931 loop_xyz:
do n = 1, 3
1946 b(n, j) = b(n, j) + dff(l, j) * xelem(n, iii, jjj, kkk)
1954 b(n, 4) = xsearch(n)
1961 b(n, 4) = b(n, 4) - ff(l) * xelem(n, iii, jjj, kkk)
1971 if (.not. ok_flag) stop
'Can not invert B in computeQuadraticWeights'
1975 uvwquadratic(n) = uvwquadratic(n) + b(n, 4)
1978 if ((uvwquadratic(n) - 1) * (uvwquadratic(n) + 1) > 0.d0) uvwquadratic(n) =
half
1984 resid = resid + b(n, 4)**2
2003 real(kind=realtype),
intent(inout) :: a(3, 4)
2004 logical,
intent(out) :: ok_flag
2007 integer(kind=intType) :: n
2008 real(kind=realtype) :: det, cofactor(3, 3), ainv(3, 3), rin(3, 1), rout(3, 1), myeps
2013 det = a(1, 1) * a(2, 2) * a(3, 3) &
2014 - a(1, 1) * a(2, 3) * a(3, 2) &
2015 - a(1, 2) * a(2, 1) * a(3, 3) &
2016 + a(1, 2) * a(2, 3) * a(3, 1) &
2017 + a(1, 3) * a(2, 1) * a(3, 2) &
2018 - a(1, 3) * a(2, 2) * a(3, 1)
2020 if (abs(det) <= myeps)
then
2026 cofactor(1, 1) = +(a(2, 2) * a(3, 3) - a(2, 3) * a(3, 2))
2027 cofactor(1, 2) = -(a(2, 1) * a(3, 3) - a(2, 3) * a(3, 1))
2028 cofactor(1, 3) = +(a(2, 1) * a(3, 2) - a(2, 2) * a(3, 1))
2029 cofactor(2, 1) = -(a(1, 2) * a(3, 3) - a(1, 3) * a(3, 2))
2030 cofactor(2, 2) = +(a(1, 1) * a(3, 3) - a(1, 3) * a(3, 1))
2031 cofactor(2, 3) = -(a(1, 1) * a(3, 2) - a(1, 2) * a(3, 1))
2032 cofactor(3, 1) = +(a(1, 2) * a(2, 3) - a(1, 3) * a(2, 2))
2033 cofactor(3, 2) = -(a(1, 1) * a(2, 3) - a(1, 3) * a(2, 1))
2034 cofactor(3, 3) = +(a(1, 1) * a(2, 2) - a(1, 2) * a(2, 1))
2036 ainv = transpose(cofactor) / det
2045 rout = matmul(ainv, rin)
2048 a(n, 4) = rout(n, 1)
2062 integer(kind=intType),
intent(in) :: level, sps
2065 integer(kind=intType) :: i, j, k, nn, ii, jj, kk, i_stencil
2066 logical :: computeCellFound
2078 computecellfound = .false.
2087 computecellfound = .true.
2091 if (.not. computecellfound)
then
2116 integer(kind=intType),
intent(in) :: level, sps
2119 integer(kind=intType) :: i, j, k, nn
2157 integer(Kind=intType) :: nn, mm, ierr
2171 call echk(ierr, __file__, __line__)
2179 use blockpointers,
only:
ndom,
il,
jl,
kl,
status,
iblank,
flowdoms,
ie,
je,
ke,
forcedrecv
2187 integer(kind=intType),
intent(in) :: level, sps
2190 integer(kind=intType) :: i, j, k, nn
2191 integer(kind=intType) :: nCompute, nFringe, nBlank, nFloodSeed, nFlooded, nExplicitBlanked
2192 integer(kind=intType) :: counts(6), ierr
2199 nexplicitblanked = 0
2208 if (
iblank(i, j, k) == -4)
then
2209 nexplicitblanked = nexplicitblanked + 1
2213 nfringe = nfringe + 1
2217 nfloodseed = nfloodseed + 1
2221 nflooded = nflooded + 1
2237 ncompute = ncompute + 1
2247 domainloop:
do nn = 1,
ndom
2248 flowdoms(nn, level, sps)%intCommVars(1)%var => &
2249 flowdoms(nn, level, sps)%iblank(:, :, :)
2255 call mpi_reduce((/ncompute, nfringe, nblank, nflooded, nfloodseed, nexplicitblanked/), &
2257 call echk(ierr, __file__, __line__)
2260 print *,
'+--------------------------------+'
2261 print *,
'| Compute Cells :', counts(1)
2262 print *,
'| Fringe Cells :', counts(2)
2263 print *,
'| Blanked Cells :', counts(3)
2264 print *,
'| Explicitly Blanked Cells:', counts(6)
2265 print *,
'| Flooded Cells :', counts(4)
2266 print *,
'| FloodSeed Cells :', counts(5)
2267 print *,
'+--------------------------------+'
2280 integer(kind=intType),
intent(in) :: level, sps
2283 integer(kind=intType) :: i, j, k, nn
2284 real(kind=realtype) :: xp(3)
2285 character(80) :: fileName
2287 write (filename,
"(a,I2.2,a)")
"proc_",
myid,
".dat"
2288 open (unit=19, file=trim(filename), form=
'formatted')
2298 x(i - 1, j - 1, k - 1, :) + &
2299 x(i, j - 1, k - 1, :) + &
2300 x(i - 1, j, k - 1, :) + &
2301 x(i, j, k - 1, :) + &
2302 x(i - 1, j - 1, k, :) + &
2303 x(i, j - 1, k, :) + &
2304 x(i - 1, j, k, :) + &
2307 write (19,
"(ES18.10, ES18.10, ES18.10, I3)") xp(1), xp(2), xp(3),
iblank(i, j, k)
2326 integer(kind=intType),
dimension(:, :),
allocatable :: work
2329 integer(kind=intType) :: nWork, jj, iDom, jDom
2332 do jj = 1, overlap%nnz
2333 if (overlap%assignedProc(jj) ==
myid)
then
2337 allocate (work(4, nwork))
2341 do jj = overlap%rowPtr(idom), overlap%rowPtr(idom + 1) - 1
2342 jdom = overlap%colInd(jj)
2343 if (overlap%assignedProc(jj) ==
myid)
then
2345 work(1, nwork) = idom
2346 work(2, nwork) = jdom
2361 character(len=*),
intent(in) :: fName
2363 integer(kind=intType) :: i, iDim
2364 open (unit=19, file=trim(fname), form=
'formatted')
2365 write (19, *)
'Variables = "CoordinateX" "CoordianteY" "CoordinateZ"'
2366 write (19, *)
"Zone"
2367 write (19, *)
"Nodes = ", owall%nNodes,
" Elements= ", owall%nCells,
" ZONETYPE=FEQUADRILATERAL"
2368 write (19, *)
"DATAPACKING=BLOCK"
2371 do i = 1, owall%nNodes
2372 write (19, *) owall%x(idim, i)
2376 do i = 1, owall%nCells
2377 write (19, *) owall%conn(1, i), owall%conn(2, i), owall%conn(3, i), owall%conn(4, i)
2399 #include <petsc/finclude/petsc.h>
2404 integer(kind=intType),
intent(in) :: n
2405 integer(kind=intType),
dimension(n),
intent(out) :: blkList
2410 integer(kind=intType) :: i, j, k, ierr, l, nx_cg, ny_cg, nz_cg
2411 integer(kind=intType) :: ii, indx, indy, indz, nn, cgnsInd
2412 integer(kind=intType),
allocatable,
dimension(:) :: cellOffset
2413 real(kind=realtype),
dimension(:),
pointer :: localptr
2414 real(kind=realtype) :: vals(5)
2419 call terminate(
'getOversetIBlank',
'This routine can only be used '&
2420 &
'with 1 spectral instance')
2423 allocate (celloffset(
cgnsndom + 1))
2426 celloffset(nn + 1) = celloffset(nn) + &
2433 petsc_determine, cgnsvec, ierr)
2434 call echk(ierr, __file__, __line__)
2438 call echk(ierr, __file__, __line__)
2441 call vecsetblocksize(cgnsvec, 5, ierr)
2442 call echk(ierr, __file__, __line__)
2460 (indz - 1) * ny_cg * nx_cg + &
2461 (indy - 1) * nx_cg + &
2463 vals(1) = real(
iblank(i, j, k))
2464 if (vals(1) <= -2)
then
2468 vals(3) = real(indx)
2469 vals(4) = real(indy)
2470 vals(5) = real(indz)
2471 call vecsetvaluesblocked(cgnsvec, 1, (/cgnsind/), vals, insert_values, ierr)
2472 call echk(ierr, __file__, __line__)
2478 call vecassemblybegin(cgnsvec, ierr)
2479 call echk(ierr, __file__, __line__)
2481 call vecassemblyend(cgnsvec, ierr)
2482 call echk(ierr, __file__, __line__)
2486 call vecgetarrayf90(cgnsvec, localptr, ierr)
2487 call echk(ierr, __file__, __line__)
2490 do i = 1,
size(localptr)
2491 blklist(i) = int(localptr(i))
2494 call vecrestorearrayf90(cgnsvec, localptr, ierr)
2495 call echk(ierr, __file__, __line__)
2508 real(kind=realtype),
intent(in),
dimension(3) :: frac
2509 real(kind=realtype),
intent(out),
dimension(8) :: weights
2511 weights(1) = (
one - frac(1)) * (
one - frac(2)) * (
one - frac(3))
2512 weights(2) = (frac(1)) * (
one - frac(2)) * (
one - frac(3))
2513 weights(3) = (
one - frac(1)) * (frac(2)) * (
one - frac(3))
2514 weights(4) = (frac(1)) * (frac(2)) * (
one - frac(3))
2515 weights(5) = (
one - frac(1)) * (
one - frac(2)) * (frac(3))
2516 weights(6) = (frac(1)) * (
one - frac(2)) * (frac(3))
2517 weights(7) = (
one - frac(1)) * (frac(2)) * (frac(3))
2518 weights(8) = (frac(1)) * (frac(2)) * (frac(3))
2524 real(kind=realtype),
intent(in),
dimension(3) :: frac
2525 real(kind=realtype),
intent(out),
dimension(8) :: weights
2527 weights(1) = (
one - frac(1)) * (
one - frac(2)) * (
one - frac(3))
2528 weights(2) = (frac(1)) * (
one - frac(2)) * (
one - frac(3))
2529 weights(3) = (frac(1)) * (frac(2)) * (
one - frac(3))
2530 weights(4) = (
one - frac(1)) * (frac(2)) * (
one - frac(3))
2532 weights(5) = (
one - frac(1)) * (
one - frac(2)) * (frac(3))
2533 weights(6) = (frac(1)) * (
one - frac(2)) * (frac(3))
2534 weights(7) = (frac(1)) * (frac(2)) * (frac(3))
2535 weights(8) = (
one - frac(1)) * (frac(2)) * (frac(3))
2551 real(kind=realtype),
dimension(3),
intent(in) :: xcen
2552 real(kind=realtype),
dimension(3, 3, 3, 3),
intent(in) :: blk
2553 real(kind=realtype),
dimension(3),
intent(in) :: frac0
2555 real(kind=realtype),
dimension(3),
intent(out) :: frac
2558 real(kind=realtype),
dimension(3, 1:8) :: xn
2559 real(kind=realtype) :: u, v, w, uv, uw, vw, wvu, du, dv, dw
2560 real(kind=realtype) :: a11, a12, a13, a21, a22, a23, a31, a32, a33, val
2561 real(kind=realtype) :: f(3), x(3)
2562 integer(kind=intType),
dimension(8),
parameter :: indices = [1, 2, 4, 3, 5, 6, 8, 7]
2563 integer(kind=intType) :: i, j, k, ii, ll
2564 real(kind=realtype),
parameter :: adteps = 1.e-25_realtype
2565 real(kind=realtype),
parameter :: thresconv = 1.e-10_realtype
2575 xn(:, indices(ii)) =
eighth * ( &
2577 blk(i + 1, j, k, :) + &
2578 blk(i, j + 1, k, :) + &
2579 blk(i + 1, j + 1, k, :) + &
2580 blk(i, j, k + 1, :) + &
2581 blk(i + 1, j, k + 1, :) + &
2582 blk(i, j + 1, k + 1, :) + &
2583 blk(i + 1, j + 1, k + 1, :))
2591 xn(:, i) = xn(:, i) - xn(:, 1)
2601 xn(1, 7) = xn(1, 7) + xn(1, 2) + xn(1, 4) + xn(1, 5) &
2602 - xn(1, 3) - xn(1, 6) - xn(1, 8)
2603 xn(2, 7) = xn(2, 7) + xn(2, 2) + xn(2, 4) + xn(2, 5) &
2604 - xn(2, 3) - xn(2, 6) - xn(2, 8)
2605 xn(3, 7) = xn(3, 7) + xn(3, 2) + xn(3, 4) + xn(3, 5) &
2606 - xn(3, 3) - xn(3, 6) - xn(3, 8)
2608 xn(1, 3) = xn(1, 3) - xn(1, 2) - xn(1, 4)
2609 xn(2, 3) = xn(2, 3) - xn(2, 2) - xn(2, 4)
2610 xn(3, 3) = xn(3, 3) - xn(3, 2) - xn(3, 4)
2612 xn(1, 6) = xn(1, 6) - xn(1, 2) - xn(1, 5)
2613 xn(2, 6) = xn(2, 6) - xn(2, 2) - xn(2, 5)
2614 xn(3, 6) = xn(3, 6) - xn(3, 2) - xn(3, 5)
2616 xn(1, 8) = xn(1, 8) - xn(1, 4) - xn(1, 5)
2617 xn(2, 8) = xn(2, 8) - xn(2, 4) - xn(2, 5)
2618 xn(3, 8) = xn(3, 8) - xn(3, 4) - xn(3, 5)
2622 u = frac0(1); v = frac0(2); w = frac0(3);
2626 newtonhexa:
do ll = 1, 15
2630 uv = u * v; uw = u * w; vw = v * w; wvu = u * v * w
2632 f(1) = xn(1, 2) * u + xn(1, 4) * v + xn(1, 5) * w &
2633 + xn(1, 3) * uv + xn(1, 6) * uw + xn(1, 8) * vw &
2634 + xn(1, 7) * wvu - x(1)
2635 f(2) = xn(2, 2) * u + xn(2, 4) * v + xn(2, 5) * w &
2636 + xn(2, 3) * uv + xn(2, 6) * uw + xn(2, 8) * vw &
2637 + xn(2, 7) * wvu - x(2)
2638 f(3) = xn(3, 2) * u + xn(3, 4) * v + xn(3, 5) * w &
2639 + xn(3, 3) * uv + xn(3, 6) * uw + xn(3, 8) * vw &
2640 + xn(3, 7) * wvu - x(3)
2644 a11 = xn(1, 2) + xn(1, 3) * v + xn(1, 6) * w + xn(1, 7) * vw
2645 a12 = xn(1, 4) + xn(1, 3) * u + xn(1, 8) * w + xn(1, 7) * uw
2646 a13 = xn(1, 5) + xn(1, 6) * u + xn(1, 8) * v + xn(1, 7) * uv
2648 a21 = xn(2, 2) + xn(2, 3) * v + xn(2, 6) * w + xn(2, 7) * vw
2649 a22 = xn(2, 4) + xn(2, 3) * u + xn(2, 8) * w + xn(2, 7) * uw
2650 a23 = xn(2, 5) + xn(2, 6) * u + xn(2, 8) * v + xn(2, 7) * uv
2652 a31 = xn(3, 2) + xn(3, 3) * v + xn(3, 6) * w + xn(3, 7) * vw
2653 a32 = xn(3, 4) + xn(3, 3) * u + xn(3, 8) * w + xn(3, 7) * uw
2654 a33 = xn(3, 5) + xn(3, 6) * u + xn(3, 8) * v + xn(3, 7) * uv
2660 val = a11 * (a22 * a33 - a32 * a23) + a21 * (a13 * a32 - a12 * a33) &
2661 + a31 * (a12 * a23 - a13 * a22)
2662 val = sign(
one, val) / max(abs(val), adteps)
2666 du = val * ((a22 * a33 - a23 * a32) * f(1) &
2667 + (a13 * a32 - a12 * a33) * f(2) &
2668 + (a12 * a23 - a13 * a22) * f(3))
2669 dv = val * ((a23 * a31 - a21 * a33) * f(1) &
2670 + (a11 * a33 - a13 * a31) * f(2) &
2671 + (a13 * a21 - a11 * a23) * f(3))
2672 dw = val * ((a21 * a32 - a22 * a31) * f(1) &
2673 + (a12 * a31 - a11 * a32) * f(2) &
2674 + (a11 * a22 - a12 * a21) * f(3))
2676 u = u - du; v = v - dv; w = w - dw
2681 val = sqrt(du * du + dv * dv + dw * dw)
2682 if (val <= thresconv)
then
subroutine destroyserialquad(ADT)
subroutine destroyserialhex(ADT)
integer(kind=inttype) ndom
integer(kind=inttype) fringesorttype
type(blocktype), dimension(:, :, :), allocatable, target flowdoms
integer(kind=inttype), dimension(:, :), pointer orphans
integer(kind=inttype) norphans
integer(kind=inttype) kbegor
integer(kind=inttype), dimension(:, :, :, :), pointer fringeptr
integer(kind=inttype), dimension(:, :, :), pointer iblank
integer(kind=inttype) nbkglobal
integer(kind=inttype), dimension(:), pointer bcfaceid
integer(kind=inttype) ibegor
integer(kind=inttype) nbocos
integer(kind=inttype), dimension(:, :, :), pointer status
integer(kind=inttype) jbegor
integer(kind=inttype), dimension(:), pointer bctype
integer(kind=inttype), dimension(:, :, :), pointer forcedrecv
real(kind=realtype), dimension(:, :, :, :), pointer x
type(cgnsblockinfotype), dimension(:), allocatable cgnsdoms
integer(kind=inttype) cgnsndom
type(internalcommtype), dimension(:), allocatable internalcell_2nd
type(commtype), dimension(:), allocatable commpatterncell_2nd
integer adflow_comm_world
integer(kind=inttype), parameter eulerwall
integer(kind=inttype), parameter oversetouterbound
integer(kind=inttype), parameter imax
integer(kind=inttype), parameter kmin
integer(kind=inttype), parameter jmax
real(kind=realtype), parameter eighth
integer(kind=inttype), parameter nswalladiabatic
integer(kind=inttype), parameter sortbyreceiver
real(kind=realtype), parameter one
real(kind=realtype), parameter half
integer(kind=inttype), parameter imin
integer(kind=inttype), parameter sortbydonor
integer(kind=inttype), parameter nswallisothermal
integer(kind=inttype), parameter kmax
integer(kind=inttype), parameter jmin
subroutine whalo1to1intgeneric_b(nVar, level, sps, commPattern, internal)
subroutine whalo1to1intgeneric(nVar, level, sps, commPattern, internal)
subroutine, public kdtree2destroy(tp)
real(kind=realtype), dimension(itotal) oversettimes
integer(kind=inttype) ndomtotal
real(kind=realtype), dimension(itotal) tstart
subroutine wallsonblock(wallsPresent)
subroutine irregularcellcorrection(level, sps)
subroutine getoversetiblank(blkList, n)
subroutine setisdonor(i, flag)
subroutine writeoversetwall(oWall, fName)
subroutine deallocateofringes(oFringes, n)
subroutine fractoweights(frac, weights)
logical function ishole(i)
subroutine binsearchnodes(arr, searchNode, nn, searchInd)
logical function isfloodseed(i)
subroutine qsortpocketedgetype(arr, nn)
subroutine unwindindex(index, il, jl, kl, i, j, k)
subroutine addtofringelist(fringeList, n, fringe)
subroutine qsortedgetype(arr, nn)
subroutine qsortfringetype(arr, nn, sortType)
logical function iswalldonor(i)
subroutine newtonupdate(xCen, blk, frac0, frac)
subroutine flagforcedrecv
logical function checkoversetpresent()
subroutine setiblankarray(level, sps)
subroutine getcumulativeform(sizeArray, n, cumArray)
logical function isdonor(i)
subroutine setisfloodseed(i, flag)
subroutine computefringeprocarray(fringes, n, fringeProc, cumFringeProc, nFringeProc)
subroutine deallocatecsrmatrix(mat1)
logical function isreceiver(i)
subroutine setiswalldonor(i, flag)
subroutine getstatus(i, isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver)
subroutine addtofringebuffer(intBuffer, realBuffer, n, fringe)
subroutine computequadraticweights(xSearch, xElem, uvwQuadratic)
subroutine checkoverset(level, sps, totalOrphans, lastCall)
logical function iscompute(i)
subroutine fractoweights2(frac, weights)
subroutine deallocateosurfs(oSurfs, n)
subroutine getworkarray(overlap, work)
integer(kind=inttype) function windindex(i, j, k, il, jl, kl)
subroutine printoverlapmatrix(overlap)
logical function isflooded(i)
subroutine transposeoverlap(A, B)
subroutine setiscompute(i, flag)
subroutine setstatus(i, isDonor, isHole, isCompute, isFloodSeed, isFlooded, isWallDonor, isReceiver)
subroutine setishole(i, flag)
subroutine fringereduction(level, sps)
subroutine deallocateoblocks(oBlocks, n)
subroutine dumpiblank(level, sps)
subroutine matrixinv3by3(a, ok_flag)
subroutine setisflooded(i, flag)
subroutine binsearchpocketedgetype(arr, search, nn, searchInd)
subroutine setisreceiver(i, flag)
integer(kind=inttype), parameter n_visc_drdw
integer(kind=inttype), dimension(33, 3), target visc_drdw_stencil
subroutine echk(errorcode, file, line)
subroutine setpointers(nn, mm, ll)
subroutine terminate(routineName, errorMessage)