24 use blockpointers,
only :
nx,
ny,
nz,
il,
jl,
kl,
x,
xd, flowdoms,&
28 integer(kind=inttype) :: nn, level, sps
30 integer(kind=inttype) :: i, j, k, ii, ind(4)
31 real(kind=realtype) :: xp(3), xc(3), u, v
32 real(kind=realtype) :: xpd(3), xcd(3)
34 real(kind=realtype) :: arg1
35 real(kind=realtype) :: arg1d
36 real(kind=realtype) :: temp
41 if (flowdoms(nn, level, sps)%surfnodeindices(1, i, j, k) .eq. &
50 ind = flowdoms(nn, level, sps)%surfnodeindices(:, i, j, k)
51 u = flowdoms(nn, level, sps)%uv(1, i, j, k)
52 v = flowdoms(nn, level, sps)%uv(2, i, j, k)
56 xpd(:) = temp*
xsurfd(3*(ind(1)-1)+1:3*ind(1)) + u*(
one-v)*&
57 &
xsurfd(3*(ind(2)-1)+1:3*ind(2)) + u*v*
xsurfd(3*(ind(3)-1)+&
58 & 1:3*ind(3)) + (
one-u)*v*
xsurfd(3*(ind(4)-1)+1:3*ind(4))
59 xp(:) = temp*
xsurf(3*(ind(1)-1)+1:3*ind(1)) + u*(
one-v)*&
60 &
xsurf(3*(ind(2)-1)+1:3*ind(2)) + u*v*
xsurf(3*(ind(3)-1)+1:&
61 & 3*ind(3)) + (
one-u)*v*
xsurf(3*(ind(4)-1)+1:3*ind(4))
63 xcd(1) =
eighth*(
xd(i-1, j-1, k-1, 1)+
xd(i, j-1, k-1, 1)+
xd(&
64 & i-1, j, k-1, 1)+
xd(i, j, k-1, 1)+
xd(i-1, j-1, k, 1)+
xd(i, &
65 & j-1, k, 1)+
xd(i-1, j, k, 1)+
xd(i, j, k, 1))
66 xc(1) =
eighth*(
x(i-1, j-1, k-1, 1)+
x(i, j-1, k-1, 1)+
x(i-1&
67 & , j, k-1, 1)+
x(i, j, k-1, 1)+
x(i-1, j-1, k, 1)+
x(i, j-1, k&
68 & , 1)+
x(i-1, j, k, 1)+
x(i, j, k, 1))
69 xcd(2) =
eighth*(
xd(i-1, j-1, k-1, 2)+
xd(i, j-1, k-1, 2)+
xd(&
70 & i-1, j, k-1, 2)+
xd(i, j, k-1, 2)+
xd(i-1, j-1, k, 2)+
xd(i, &
71 & j-1, k, 2)+
xd(i-1, j, k, 2)+
xd(i, j, k, 2))
72 xc(2) =
eighth*(
x(i-1, j-1, k-1, 2)+
x(i, j-1, k-1, 2)+
x(i-1&
73 & , j, k-1, 2)+
x(i, j, k-1, 2)+
x(i-1, j-1, k, 2)+
x(i, j-1, k&
74 & , 2)+
x(i-1, j, k, 2)+
x(i, j, k, 2))
75 xcd(3) =
eighth*(
xd(i-1, j-1, k-1, 3)+
xd(i, j-1, k-1, 3)+
xd(&
76 & i-1, j, k-1, 3)+
xd(i, j, k-1, 3)+
xd(i-1, j-1, k, 3)+
xd(i, &
77 & j-1, k, 3)+
xd(i-1, j, k, 3)+
xd(i, j, k, 3))
78 xc(3) =
eighth*(
x(i-1, j-1, k-1, 3)+
x(i, j-1, k-1, 3)+
x(i-1&
79 & , j, k-1, 3)+
x(i, j, k-1, 3)+
x(i-1, j-1, k, 3)+
x(i, j-1, k&
80 & , 3)+
x(i-1, j, k, 3)+
x(i, j, k, 3))
83 arg1d = 2*(xc(1)-xp(1))*(xcd(1)-xpd(1)) + 2*(xc(2)-xp(2))*(&
84 & xcd(2)-xpd(2)) + 2*(xc(3)-xp(3))*(xcd(3)-xpd(3))
85 arg1 = (xc(1)-xp(1))**2 + (xc(2)-xp(2))**2 + (xc(3)-xp(3))**&
88 if (arg1 .eq. 0.0_8)
then
91 d2walld(i, j, k) = arg1d/(2.0*temp)
112 integer(kind=inttype) :: nn, level, sps
114 integer(kind=inttype) :: i, j, k, ii, ind(4)
115 real(kind=realtype) :: xp(3), xc(3), u, v
117 real(kind=realtype) :: arg1
121 if (flowdoms(nn, level, sps)%surfnodeindices(1, i, j, k) .eq. &
129 ind = flowdoms(nn, level, sps)%surfnodeindices(:, i, j, k)
130 u = flowdoms(nn, level, sps)%uv(1, i, j, k)
131 v = flowdoms(nn, level, sps)%uv(2, i, j, k)
134 xp(:) = (
one-u)*(
one-v)*
xsurf(3*(ind(1)-1)+1:3*ind(1)) + u*(&
135 &
one-v)*
xsurf(3*(ind(2)-1)+1:3*ind(2)) + u*v*
xsurf(3*(ind(3&
136 & )-1)+1:3*ind(3)) + (
one-u)*v*
xsurf(3*(ind(4)-1)+1:3*ind(4)&
139 xc(1) =
eighth*(
x(i-1, j-1, k-1, 1)+
x(i, j-1, k-1, 1)+
x(i-1&
140 & , j, k-1, 1)+
x(i, j, k-1, 1)+
x(i-1, j-1, k, 1)+
x(i, j-1, k&
141 & , 1)+
x(i-1, j, k, 1)+
x(i, j, k, 1))
142 xc(2) =
eighth*(
x(i-1, j-1, k-1, 2)+
x(i, j-1, k-1, 2)+
x(i-1&
143 & , j, k-1, 2)+
x(i, j, k-1, 2)+
x(i-1, j-1, k, 2)+
x(i, j-1, k&
144 & , 2)+
x(i-1, j, k, 2)+
x(i, j, k, 2))
145 xc(3) =
eighth*(
x(i-1, j-1, k-1, 3)+
x(i, j-1, k-1, 3)+
x(i-1&
146 & , j, k-1, 3)+
x(i, j, k-1, 3)+
x(i-1, j-1, k, 3)+
x(i, j-1, k&
147 & , 3)+
x(i-1, j, k, 3)+
x(i, j, k, 3))
150 arg1 = (xc(1)-xp(1))**2 + (xc(2)-xp(2))**2 + (xc(3)-xp(3))**&
152 d2wall(i, j, k) = sqrt(arg1)
real(kind=realtype), dimension(:, :, :), pointer d2wall
real(kind=realtype), dimension(:, :, :, :), pointer xd
real(kind=realtype), dimension(:, :, :, :), pointer x
real(kind=realtype), dimension(:, :, :), pointer d2walld
real(kind=realtype), parameter eighth
real(kind=realtype), parameter one
real(kind=realtype), parameter large
subroutine updatewalldistancesquickly(nn, level, sps)
subroutine updatewalldistancesquickly_d(nn, level, sps)
real(kind=realtype), dimension(:), pointer xsurf
real(kind=realtype), dimension(:), pointer xsurfd