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)
35 real(kind=realtype) :: tempd
36 real(kind=realtype) :: tempd0
37 real(kind=realtype) :: tempd1
38 real(kind=realtype) :: tempd2
43 j = mod(ii/
nx,
ny) + 2
45 if (flowdoms(nn, level, sps)%surfnodeindices(1, i, j, k) .eq. 0) &
51 ind = flowdoms(nn, level, sps)%surfnodeindices(:, i, j, k)
52 u = flowdoms(nn, level, sps)%uv(1, i, j, k)
53 v = flowdoms(nn, level, sps)%uv(2, i, j, k)
57 & v)*
xsurf(3*(ind(2)-1)+1:3*ind(2)) + u*v*
xsurf(3*(ind(3)-1)+1:3&
58 & *ind(3)) + (
one-u)*v*
xsurf(3*(ind(4)-1)+1:3*ind(4))
60 xc(1) =
eighth*(
x(i-1, j-1, k-1, 1)+
x(i, j-1, k-1, 1)+
x(i-1, j, &
61 & k-1, 1)+
x(i, j, k-1, 1)+
x(i-1, j-1, k, 1)+
x(i, j-1, k, 1)+
x(i-&
62 & 1, j, k, 1)+
x(i, j, k, 1))
63 xc(2) =
eighth*(
x(i-1, j-1, k-1, 2)+
x(i, j-1, k-1, 2)+
x(i-1, j, &
64 & k-1, 2)+
x(i, j, k-1, 2)+
x(i-1, j-1, k, 2)+
x(i, j-1, k, 2)+
x(i-&
65 & 1, j, k, 2)+
x(i, j, k, 2))
66 xc(3) =
eighth*(
x(i-1, j-1, k-1, 3)+
x(i, j-1, k-1, 3)+
x(i-1, j, &
67 & k-1, 3)+
x(i, j, k-1, 3)+
x(i-1, j-1, k, 3)+
x(i, j-1, k, 3)+
x(i-&
68 & 1, j, k, 3)+
x(i, j, k, 3))
72 if ((xc(1)-xp(1))**2 + (xc(2)-xp(2))**2 + (xc(3)-xp(3))**2 .eq. &
76 tempd =
d2walld(i, j, k)/(2.0*sqrt((xc(1)-xp(1))**2+(xc(2)-xp(&
77 & 2))**2+(xc(3)-xp(3))**2))
80 tempd0 = 2*(xc(1)-xp(1))*tempd
81 tempd1 = 2*(xc(2)-xp(2))*tempd
82 tempd2 = 2*(xc(3)-xp(3))*tempd
83 xcd(3) = xcd(3) + tempd2
84 xpd(3) = xpd(3) - tempd2
85 xcd(2) = xcd(2) + tempd1
86 xpd(2) = xpd(2) - tempd1
87 xcd(1) = xcd(1) + tempd0
88 xpd(1) = xpd(1) - tempd0
91 xd(i-1, j-1, k-1, 3) =
xd(i-1, j-1, k-1, 3) + tempd
92 xd(i, j-1, k-1, 3) =
xd(i, j-1, k-1, 3) + tempd
93 xd(i-1, j, k-1, 3) =
xd(i-1, j, k-1, 3) + tempd
94 xd(i, j, k-1, 3) =
xd(i, j, k-1, 3) + tempd
95 xd(i-1, j-1, k, 3) =
xd(i-1, j-1, k, 3) + tempd
96 xd(i, j-1, k, 3) =
xd(i, j-1, k, 3) + tempd
97 xd(i-1, j, k, 3) =
xd(i-1, j, k, 3) + tempd
98 xd(i, j, k, 3) =
xd(i, j, k, 3) + tempd
101 xd(i-1, j-1, k-1, 2) =
xd(i-1, j-1, k-1, 2) + tempd
102 xd(i, j-1, k-1, 2) =
xd(i, j-1, k-1, 2) + tempd
103 xd(i-1, j, k-1, 2) =
xd(i-1, j, k-1, 2) + tempd
104 xd(i, j, k-1, 2) =
xd(i, j, k-1, 2) + tempd
105 xd(i-1, j-1, k, 2) =
xd(i-1, j-1, k, 2) + tempd
106 xd(i, j-1, k, 2) =
xd(i, j-1, k, 2) + tempd
107 xd(i-1, j, k, 2) =
xd(i-1, j, k, 2) + tempd
108 xd(i, j, k, 2) =
xd(i, j, k, 2) + tempd
111 xd(i-1, j-1, k-1, 1) =
xd(i-1, j-1, k-1, 1) + tempd
112 xd(i, j-1, k-1, 1) =
xd(i, j-1, k-1, 1) + tempd
113 xd(i-1, j, k-1, 1) =
xd(i-1, j, k-1, 1) + tempd
114 xd(i, j, k-1, 1) =
xd(i, j, k-1, 1) + tempd
115 xd(i-1, j-1, k, 1) =
xd(i-1, j-1, k, 1) + tempd
116 xd(i, j-1, k, 1) =
xd(i, j-1, k, 1) + tempd
117 xd(i-1, j, k, 1) =
xd(i-1, j, k, 1) + tempd
118 xd(i, j, k, 1) =
xd(i, j, k, 1) + tempd
119 xsurfd(3*(ind(1)-1)+1:3*ind(1)) =
xsurfd(3*(ind(1)-1)+1:3*ind(1)&
121 xsurfd(3*(ind(2)-1)+1:3*ind(2)) =
xsurfd(3*(ind(2)-1)+1:3*ind(2)&
123 xsurfd(3*(ind(3)-1)+1:3*ind(3)) =
xsurfd(3*(ind(3)-1)+1:3*ind(3)&
125 xsurfd(3*(ind(4)-1)+1:3*ind(4)) =
xsurfd(3*(ind(4)-1)+1:3*ind(4)&
143 integer(kind=inttype) :: nn, level, sps
145 integer(kind=inttype) :: i, j, k, ii, ind(4)
146 real(kind=realtype) :: xp(3), xc(3), u, v
152 j = mod(ii/
nx,
ny) + 2
154 if (flowdoms(nn, level, sps)%surfnodeindices(1, i, j, k) .eq. 0) &
162 ind = flowdoms(nn, level, sps)%surfnodeindices(:, i, j, k)
163 u = flowdoms(nn, level, sps)%uv(1, i, j, k)
164 v = flowdoms(nn, level, sps)%uv(2, i, j, k)
168 & v)*
xsurf(3*(ind(2)-1)+1:3*ind(2)) + u*v*
xsurf(3*(ind(3)-1)+1:3&
169 & *ind(3)) + (
one-u)*v*
xsurf(3*(ind(4)-1)+1:3*ind(4))
171 xc(1) =
eighth*(
x(i-1, j-1, k-1, 1)+
x(i, j-1, k-1, 1)+
x(i-1, j, &
172 & k-1, 1)+
x(i, j, k-1, 1)+
x(i-1, j-1, k, 1)+
x(i, j-1, k, 1)+
x(i-&
173 & 1, j, k, 1)+
x(i, j, k, 1))
174 xc(2) =
eighth*(
x(i-1, j-1, k-1, 2)+
x(i, j-1, k-1, 2)+
x(i-1, j, &
175 & k-1, 2)+
x(i, j, k-1, 2)+
x(i-1, j-1, k, 2)+
x(i, j-1, k, 2)+
x(i-&
176 & 1, j, k, 2)+
x(i, j, k, 2))
177 xc(3) =
eighth*(
x(i-1, j-1, k-1, 3)+
x(i, j-1, k-1, 3)+
x(i-1, j, &
178 & k-1, 3)+
x(i, j, k-1, 3)+
x(i-1, j-1, k, 3)+
x(i, j-1, k, 3)+
x(i-&
179 & 1, j, k, 3)+
x(i, j, k, 3))
182 d2wall(i, j, k) = sqrt((xc(1)-xp(1))**2 + (xc(2)-xp(2))**2 + (xc&
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_b(nn, level, sps)
real(kind=realtype), dimension(:), pointer xsurf
real(kind=realtype), dimension(:), pointer xsurfd