26 real(kind=realtype),
parameter :: thresvolume=1.e-2_realtype
27 real(kind=realtype),
parameter :: halocellratio=1e-10_realtype
31 integer(kind=inttype) :: i, j, k, n, m, l, ii
32 integer(kind=inttype) :: mm
33 real(kind=realtype) :: fact, mult
34 real(kind=realtype) :: xp, yp, zp, vp1, vp2, vp3, vp4, vp5, vp6
35 real(kind=realtype) :: xpd, ypd, zpd, vp1d, vp2d, vp3d, vp4d, vp5d, &
37 real(kind=realtype) :: xxp, yyp, zzp
38 real(kind=realtype),
dimension(3) :: v1, v2
40 real(kind=realtype) :: tempd
41 real(kind=realtype) :: tmp
42 real(kind=realtype) :: tmpd
43 real(kind=realtype) :: tmp0
44 real(kind=realtype) :: tmpd0
45 real(kind=realtype) :: tmp1
46 real(kind=realtype) :: tmpd1
65 xp =
eighth*(
x(i, j, k, 1)+
x(i, m, k, 1)+
x(i, m, n, 1)+
x(i, j&
66 & , n, 1)+
x(l, j, k, 1)+
x(l, m, k, 1)+
x(l, m, n, 1)+
x(l, j, n&
69 yp =
eighth*(
x(i, j, k, 2)+
x(i, m, k, 2)+
x(i, m, n, 2)+
x(i, j&
70 & , n, 2)+
x(l, j, k, 2)+
x(l, m, k, 2)+
x(l, m, n, 2)+
x(l, j, n&
73 zp =
eighth*(
x(i, j, k, 3)+
x(i, m, k, 3)+
x(i, m, n, 3)+
x(i, j&
74 & , n, 3)+
x(l, j, k, 3)+
x(l, m, k, 3)+
x(l, m, n, 3)+
x(l, j, n&
79 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(i, &
80 & j, n, 1),
x(i, j, n, 2),
x(i, j, n, 3),
x(i, m, n, 1),
x&
81 & (i, m, n, 2),
x(i, m, n, 3),
x(i, m, k, 1),
x(i, m, k, 2&
82 & ),
x(i, m, k, 3), vp1)
83 call volpym(
x(l, j, k, 1),
x(l, j, k, 2),
x(l, j, k, 3),
x(l, &
84 & m, k, 1),
x(l, m, k, 2),
x(l, m, k, 3),
x(l, m, n, 1),
x&
85 & (l, m, n, 2),
x(l, m, n, 3),
x(l, j, n, 1),
x(l, j, n, 2&
86 & ),
x(l, j, n, 3), vp2)
87 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(l, &
88 & j, k, 1),
x(l, j, k, 2),
x(l, j, k, 3),
x(l, j, n, 1),
x&
89 & (l, j, n, 2),
x(l, j, n, 3),
x(i, j, n, 1),
x(i, j, n, 2&
90 & ),
x(i, j, n, 3), vp3)
91 call volpym(
x(i, m, k, 1),
x(i, m, k, 2),
x(i, m, k, 3),
x(i, &
92 & m, n, 1),
x(i, m, n, 2),
x(i, m, n, 3),
x(l, m, n, 1),
x&
93 & (l, m, n, 2),
x(l, m, n, 3),
x(l, m, k, 1),
x(l, m, k, 2&
94 & ),
x(l, m, k, 3), vp4)
95 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(i, &
96 & m, k, 1),
x(i, m, k, 2),
x(i, m, k, 3),
x(l, m, k, 1),
x&
97 & (l, m, k, 2),
x(l, m, k, 3),
x(l, j, k, 1),
x(l, j, k, 2&
98 & ),
x(l, j, k, 3), vp5)
99 call volpym(
x(i, j, n, 1),
x(i, j, n, 2),
x(i, j, n, 3),
x(l, &
100 & j, n, 1),
x(l, j, n, 2),
x(l, j, n, 3),
x(l, m, n, 1),
x&
101 & (l, m, n, 2),
x(l, m, n, 3),
x(i, m, n, 1),
x(i, m, n, 2&
102 & ),
x(i, m, n, 3), vp6)
106 vol(i, j, k) =
sixth*(vp1+vp2+vp3+vp4+vp5+vp6)
107 if (
vol(i, j, k) .ge. 0.)
then
108 call pushcontrol1b(0)
109 vol(i, j, k) =
vol(i, j, k)
111 vol(i, j, k) = -
vol(i, j, k)
112 call pushcontrol1b(1)
120 if (
vol(1, j, k)/
vol(2, j, k) .lt. halocellratio)
then
121 vol(1, j, k) =
vol(2, j, k)
122 call pushcontrol1b(0)
124 call pushcontrol1b(1)
126 if (
vol(
ie, j, k)/
vol(
il, j, k) .lt. halocellratio)
then
129 call pushcontrol1b(1)
131 call pushcontrol1b(0)
137 if (
vol(i, 1, k)/
vol(i, 2, k) .lt. halocellratio)
then
138 vol(i, 1, k) =
vol(i, 2, k)
139 call pushcontrol1b(0)
141 call pushcontrol1b(1)
143 if (
vol(i,
je, k)/
vol(i,
jl, k) .lt. halocellratio)
then
146 call pushcontrol1b(1)
148 call pushcontrol1b(0)
154 if (
vol(i, j, 1)/
vol(i, j, 2) .lt. halocellratio)
then
155 vol(i, j, 1) =
vol(i, j, 2)
156 call pushcontrol1b(0)
158 call pushcontrol1b(1)
160 if (
vol(i, j,
ke)/
vol(i, j,
kl) .lt. halocellratio)
then
163 call pushcontrol1b(1)
165 call pushcontrol1b(0)
171 call popcontrol1b(branch)
172 if (branch .ne. 0)
then
177 call popcontrol1b(branch)
178 if (branch .eq. 0)
then
180 vold(i, j, 1) = 0.0_8
186 call popcontrol1b(branch)
187 if (branch .ne. 0)
then
192 call popcontrol1b(branch)
193 if (branch .eq. 0)
then
195 vold(i, 1, k) = 0.0_8
201 call popcontrol1b(branch)
202 if (branch .ne. 0)
then
207 call popcontrol1b(branch)
208 if (branch .eq. 0)
then
210 vold(1, j, k) = 0.0_8
223 call popcontrol1b(branch)
224 if (branch .ne. 0)
vold(i, j, k) = -
vold(i, j, k)
226 vold(i, j, k) = 0.0_8
237 call volpym_b(
x(i, j, n, 1),
xd(i, j, n, 1),
x(i, j, n, 2),
xd&
238 & (i, j, n, 2),
x(i, j, n, 3),
xd(i, j, n, 3),
x(l, j, n&
239 & , 1),
xd(l, j, n, 1),
x(l, j, n, 2),
xd(l, j, n, 2),
x&
240 & (l, j, n, 3),
xd(l, j, n, 3),
x(l, m, n, 1),
xd(l, m, &
241 & n, 1),
x(l, m, n, 2),
xd(l, m, n, 2),
x(l, m, n, 3), &
242 &
xd(l, m, n, 3),
x(i, m, n, 1),
xd(i, m, n, 1),
x(i, m&
243 & , n, 2),
xd(i, m, n, 2),
x(i, m, n, 3),
xd(i, m, n, 3)&
246 call volpym_b(
x(i, j, k, 1),
xd(i, j, k, 1),
x(i, j, k, 2),
xd&
247 & (i, j, k, 2),
x(i, j, k, 3),
xd(i, j, k, 3),
x(i, m, k&
248 & , 1),
xd(i, m, k, 1),
x(i, m, k, 2),
xd(i, m, k, 2),
x&
249 & (i, m, k, 3),
xd(i, m, k, 3),
x(l, m, k, 1),
xd(l, m, &
250 & k, 1),
x(l, m, k, 2),
xd(l, m, k, 2),
x(l, m, k, 3), &
251 &
xd(l, m, k, 3),
x(l, j, k, 1),
xd(l, j, k, 1),
x(l, j&
252 & , k, 2),
xd(l, j, k, 2),
x(l, j, k, 3),
xd(l, j, k, 3)&
255 call volpym_b(
x(i, m, k, 1),
xd(i, m, k, 1),
x(i, m, k, 2),
xd&
256 & (i, m, k, 2),
x(i, m, k, 3),
xd(i, m, k, 3),
x(i, m, n&
257 & , 1),
xd(i, m, n, 1),
x(i, m, n, 2),
xd(i, m, n, 2),
x&
258 & (i, m, n, 3),
xd(i, m, n, 3),
x(l, m, n, 1),
xd(l, m, &
259 & n, 1),
x(l, m, n, 2),
xd(l, m, n, 2),
x(l, m, n, 3), &
260 &
xd(l, m, n, 3),
x(l, m, k, 1),
xd(l, m, k, 1),
x(l, m&
261 & , k, 2),
xd(l, m, k, 2),
x(l, m, k, 3),
xd(l, m, k, 3)&
264 call volpym_b(
x(i, j, k, 1),
xd(i, j, k, 1),
x(i, j, k, 2),
xd&
265 & (i, j, k, 2),
x(i, j, k, 3),
xd(i, j, k, 3),
x(l, j, k&
266 & , 1),
xd(l, j, k, 1),
x(l, j, k, 2),
xd(l, j, k, 2),
x&
267 & (l, j, k, 3),
xd(l, j, k, 3),
x(l, j, n, 1),
xd(l, j, &
268 & n, 1),
x(l, j, n, 2),
xd(l, j, n, 2),
x(l, j, n, 3), &
269 &
xd(l, j, n, 3),
x(i, j, n, 1),
xd(i, j, n, 1),
x(i, j&
270 & , n, 2),
xd(i, j, n, 2),
x(i, j, n, 3),
xd(i, j, n, 3)&
273 call volpym_b(
x(l, j, k, 1),
xd(l, j, k, 1),
x(l, j, k, 2),
xd&
274 & (l, j, k, 2),
x(l, j, k, 3),
xd(l, j, k, 3),
x(l, m, k&
275 & , 1),
xd(l, m, k, 1),
x(l, m, k, 2),
xd(l, m, k, 2),
x&
276 & (l, m, k, 3),
xd(l, m, k, 3),
x(l, m, n, 1),
xd(l, m, &
277 & n, 1),
x(l, m, n, 2),
xd(l, m, n, 2),
x(l, m, n, 3), &
278 &
xd(l, m, n, 3),
x(l, j, n, 1),
xd(l, j, n, 1),
x(l, j&
279 & , n, 2),
xd(l, j, n, 2),
x(l, j, n, 3),
xd(l, j, n, 3)&
282 call volpym_b(
x(i, j, k, 1),
xd(i, j, k, 1),
x(i, j, k, 2),
xd&
283 & (i, j, k, 2),
x(i, j, k, 3),
xd(i, j, k, 3),
x(i, j, n&
284 & , 1),
xd(i, j, n, 1),
x(i, j, n, 2),
xd(i, j, n, 2),
x&
285 & (i, j, n, 3),
xd(i, j, n, 3),
x(i, m, n, 1),
xd(i, m, &
286 & n, 1),
x(i, m, n, 2),
xd(i, m, n, 2),
x(i, m, n, 3), &
287 &
xd(i, m, n, 3),
x(i, m, k, 1),
xd(i, m, k, 1),
x(i, m&
288 & , k, 2),
xd(i, m, k, 2),
x(i, m, k, 3),
xd(i, m, k, 3)&
293 xd(i, j, k, 3) =
xd(i, j, k, 3) + tempd
294 xd(i, m, k, 3) =
xd(i, m, k, 3) + tempd
295 xd(i, m, n, 3) =
xd(i, m, n, 3) + tempd
296 xd(i, j, n, 3) =
xd(i, j, n, 3) + tempd
297 xd(l, j, k, 3) =
xd(l, j, k, 3) + tempd
298 xd(l, m, k, 3) =
xd(l, m, k, 3) + tempd
299 xd(l, m, n, 3) =
xd(l, m, n, 3) + tempd
300 xd(l, j, n, 3) =
xd(l, j, n, 3) + tempd
303 xd(i, j, k, 2) =
xd(i, j, k, 2) + tempd
304 xd(i, m, k, 2) =
xd(i, m, k, 2) + tempd
305 xd(i, m, n, 2) =
xd(i, m, n, 2) + tempd
306 xd(i, j, n, 2) =
xd(i, j, n, 2) + tempd
307 xd(l, j, k, 2) =
xd(l, j, k, 2) + tempd
308 xd(l, m, k, 2) =
xd(l, m, k, 2) + tempd
309 xd(l, m, n, 2) =
xd(l, m, n, 2) + tempd
310 xd(l, j, n, 2) =
xd(l, j, n, 2) + tempd
313 xd(i, j, k, 1) =
xd(i, j, k, 1) + tempd
314 xd(i, m, k, 1) =
xd(i, m, k, 1) + tempd
315 xd(i, m, n, 1) =
xd(i, m, n, 1) + tempd
316 xd(i, j, n, 1) =
xd(i, j, n, 1) + tempd
317 xd(l, j, k, 1) =
xd(l, j, k, 1) + tempd
318 xd(l, m, k, 1) =
xd(l, m, k, 1) + tempd
319 xd(l, m, n, 1) =
xd(l, m, n, 1) + tempd
320 xd(l, j, n, 1) =
xd(l, j, n, 1) + tempd
334 subroutine volpym_b(xa, xad, ya, yad, za, zad, xb, xbd, yb, ybd, zb&
335 & , zbd, xc, xcd, yc, ycd, zc, zcd, xd, xdd, yd, ydd, zd, zdd, &
356 real(kind=
realtype),
intent(in) :: xa, ya, za, xb, yb, zb
357 real(kind=
realtype) :: xad, yad, zad, xbd, ybd, zbd
358 real(kind=
realtype),
intent(in) :: xc, yc, zc,
xd, yd, zd
359 real(kind=
realtype) :: xcd, ycd, zcd, xdd, ydd, zdd
369 tempd = ((ya-yc)*(zb-zd)-(za-zc)*(yb-yd))*volumed
370 tempd1 = (xp-
fourth*(xa+xb+xc+
xd))*volumed
371 tempd2 = ((za-zc)*(xb-
xd)-(xa-xc)*(zb-zd))*volumed
372 tempd4 = (yp-
fourth*(ya+yb+yc+yd))*volumed
373 tempd5 = ((xa-xc)*(yb-yd)-(ya-yc)*(xb-
xd))*volumed
374 tempd7 = (zp-
fourth*(za+zb+zc+zd))*volumed
377 zad = zad + tempd6 + (xb-
xd)*tempd4 - (yb-yd)*tempd1
378 zbd = zbd + tempd6 + (ya-yc)*tempd1 - (xa-xc)*tempd4
379 zcd = zcd + tempd6 + (yb-yd)*tempd1 - (xb-
xd)*tempd4
380 zdd = zdd + tempd6 + (xa-xc)*tempd4 - (ya-yc)*tempd1
383 ybd = ybd + (xa-xc)*tempd7 + tempd3 - (za-zc)*tempd1
384 ydd = ydd + tempd3 - (xa-xc)*tempd7 + (za-zc)*tempd1
385 yad = yad + tempd3 - (xb-
xd)*tempd7 + (zb-zd)*tempd1
386 ycd = ycd + (xb-
xd)*tempd7 + tempd3 - (zb-zd)*tempd1
389 xad = xad + (yb-yd)*tempd7 + tempd0 - (zb-zd)*tempd4
390 xcd = xcd + (zb-zd)*tempd4 - (yb-yd)*tempd7 + tempd0
391 xbd = xbd + (za-zc)*tempd4 - (ya-yc)*tempd7 + tempd0
392 xdd = xdd + (ya-yc)*tempd7 + tempd0 - (za-zc)*tempd4
395 subroutine volpym(xa, ya, za, xb, yb, zb, xc, yc, zc, xd, yd, zd, &
415 real(kind=
realtype),
intent(in) :: xa, ya, za, xb, yb, zb
416 real(kind=
realtype),
intent(in) :: xc, yc, zc,
xd, yd, zd
417 volume = (xp-
fourth*(xa+xb+xc+
xd))*((ya-yc)*(zb-zd)-(za-zc)*(yb-yd&
418 & )) + (yp-
fourth*(ya+yb+yc+yd))*((za-zc)*(xb-
xd)-(xa-xc)*(zb-zd))&
419 & + (zp-
fourth*(za+zb+zc+zd))*((xa-xc)*(yb-yd)-(ya-yc)*(xb-
xd))
437 real(kind=realtype),
parameter :: thresvolume=1.e-2_realtype
438 real(kind=realtype),
parameter :: halocellratio=1e-10_realtype
442 integer(kind=inttype) :: i, j, k, n, m, l, ii
443 integer(kind=inttype) :: mm
444 real(kind=realtype) :: fact, mult
445 real(kind=realtype) :: xp, yp, zp, vp1, vp2, vp3, vp4, vp5, vp6
446 real(kind=realtype) :: xxp, yyp, zzp
447 real(kind=realtype),
dimension(3) :: v1, v2
463 xp =
eighth*(
x(i, j, k, 1)+
x(i, m, k, 1)+
x(i, m, n, 1)+
x(i, j&
464 & , n, 1)+
x(l, j, k, 1)+
x(l, m, k, 1)+
x(l, m, n, 1)+
x(l, j, n&
466 yp =
eighth*(
x(i, j, k, 2)+
x(i, m, k, 2)+
x(i, m, n, 2)+
x(i, j&
467 & , n, 2)+
x(l, j, k, 2)+
x(l, m, k, 2)+
x(l, m, n, 2)+
x(l, j, n&
469 zp =
eighth*(
x(i, j, k, 3)+
x(i, m, k, 3)+
x(i, m, n, 3)+
x(i, j&
470 & , n, 3)+
x(l, j, k, 3)+
x(l, m, k, 3)+
x(l, m, n, 3)+
x(l, j, n&
475 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(i, &
476 & j, n, 1),
x(i, j, n, 2),
x(i, j, n, 3),
x(i, m, n, 1),
x&
477 & (i, m, n, 2),
x(i, m, n, 3),
x(i, m, k, 1),
x(i, m, k, 2&
478 & ),
x(i, m, k, 3), vp1)
479 call volpym(
x(l, j, k, 1),
x(l, j, k, 2),
x(l, j, k, 3),
x(l, &
480 & m, k, 1),
x(l, m, k, 2),
x(l, m, k, 3),
x(l, m, n, 1),
x&
481 & (l, m, n, 2),
x(l, m, n, 3),
x(l, j, n, 1),
x(l, j, n, 2&
482 & ),
x(l, j, n, 3), vp2)
483 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(l, &
484 & j, k, 1),
x(l, j, k, 2),
x(l, j, k, 3),
x(l, j, n, 1),
x&
485 & (l, j, n, 2),
x(l, j, n, 3),
x(i, j, n, 1),
x(i, j, n, 2&
486 & ),
x(i, j, n, 3), vp3)
487 call volpym(
x(i, m, k, 1),
x(i, m, k, 2),
x(i, m, k, 3),
x(i, &
488 & m, n, 1),
x(i, m, n, 2),
x(i, m, n, 3),
x(l, m, n, 1),
x&
489 & (l, m, n, 2),
x(l, m, n, 3),
x(l, m, k, 1),
x(l, m, k, 2&
490 & ),
x(l, m, k, 3), vp4)
491 call volpym(
x(i, j, k, 1),
x(i, j, k, 2),
x(i, j, k, 3),
x(i, &
492 & m, k, 1),
x(i, m, k, 2),
x(i, m, k, 3),
x(l, m, k, 1),
x&
493 & (l, m, k, 2),
x(l, m, k, 3),
x(l, j, k, 1),
x(l, j, k, 2&
494 & ),
x(l, j, k, 3), vp5)
495 call volpym(
x(i, j, n, 1),
x(i, j, n, 2),
x(i, j, n, 3),
x(l, &
496 & j, n, 1),
x(l, j, n, 2),
x(l, j, n, 3),
x(l, m, n, 1),
x&
497 & (l, m, n, 2),
x(l, m, n, 3),
x(i, m, n, 1),
x(i, m, n, 2&
498 & ),
x(i, m, n, 3), vp6)
502 vol(i, j, k) =
sixth*(vp1+vp2+vp3+vp4+vp5+vp6)
503 if (
vol(i, j, k) .ge. 0.)
then
504 vol(i, j, k) =
vol(i, j, k)
506 vol(i, j, k) = -
vol(i, j, k)
514 if (
vol(1, j, k)/
vol(2, j, k) .lt. halocellratio)
vol(1, j, k)&
522 if (
vol(i, 1, k)/
vol(i, 2, k) .lt. halocellratio)
vol(i, 1, k)&
530 if (
vol(i, j, 1)/
vol(i, j, 2) .lt. halocellratio)
vol(i, j, 1)&
538 subroutine volpym(xa, ya, za, xb, yb, zb, xc, yc, zc, xd, yd, zd, &
558 real(kind=
realtype),
intent(in) :: xa, ya, za, xb, yb, zb
559 real(kind=
realtype),
intent(in) :: xc, yc, zc,
xd, yd, zd
560 volume = (xp-
fourth*(xa+xb+xc+
xd))*((ya-yc)*(zb-zd)-(za-zc)*(yb-yd&
561 & )) + (yp-
fourth*(ya+yb+yc+yd))*((za-zc)*(xb-
xd)-(xa-xc)*(zb-zd))&
562 & + (zp-
fourth*(za+zb+zc+zd))*((xa-xc)*(yb-yd)-(ya-yc)*(xb-
xd))
578 integer(kind=inttype) :: i, j, k, n, m, l, ii
579 real(kind=realtype) :: fact
580 real(kind=realtype) :: xxp, yyp, zzp
581 real(kind=realtype),
dimension(3) :: v1, v2
582 real(kind=realtype),
dimension(3) :: v1d, v2d
584 real(kind=realtype) :: tempd
596 call pushreal8array(v1, 3)
597 call pushreal8array(v2, 3)
612 i = mod(ii,
ie + 1) + 0
614 j = mod(ii/(
ie+1),
je) + 1
616 k = ii/((
ie+1)*
je) + 1
620 v1(1) =
x(i, j, n, 1) -
x(i, m, k, 1)
621 v1(2) =
x(i, j, n, 2) -
x(i, m, k, 2)
622 v1(3) =
x(i, j, n, 3) -
x(i, m, k, 3)
623 v2(1) =
x(i, j, k, 1) -
x(i, m, n, 1)
624 v2(2) =
x(i, j, k, 2) -
x(i, m, n, 2)
625 v2(3) =
x(i, j, k, 3) -
x(i, m, n, 3)
629 si(i, j, k, 1) = fact*(v1(2)*v2(3)-v1(3)*v2(2))
630 si(i, j, k, 2) = fact*(v1(3)*v2(1)-v1(1)*v2(3))
631 si(i, j, k, 3) = fact*(v1(1)*v2(2)-v1(2)*v2(1))
633 call pushreal8array(v1, 3)
634 call pushreal8array(v2, 3)
641 j = mod(ii/
ie,
je + 1) + 0
643 k = ii/(
ie*(
je+1)) + 1
647 v1(1) =
x(i, j, n, 1) -
x(l, j, k, 1)
648 v1(2) =
x(i, j, n, 2) -
x(l, j, k, 2)
649 v1(3) =
x(i, j, n, 3) -
x(l, j, k, 3)
650 v2(1) =
x(l, j, n, 1) -
x(i, j, k, 1)
651 v2(2) =
x(l, j, n, 2) -
x(i, j, k, 2)
652 v2(3) =
x(l, j, n, 3) -
x(i, j, k, 3)
656 sj(i, j, k, 1) = fact*(v1(2)*v2(3)-v1(3)*v2(2))
657 sj(i, j, k, 2) = fact*(v1(3)*v2(1)-v1(1)*v2(3))
658 sj(i, j, k, 3) = fact*(v1(1)*v2(2)-v1(2)*v2(1))
667 j = mod(ii/
ie,
je) + 1
673 v1(1) =
x(i, j, k, 1) -
x(l, m, k, 1)
674 v1(2) =
x(i, j, k, 2) -
x(l, m, k, 2)
675 v1(3) =
x(i, j, k, 3) -
x(l, m, k, 3)
676 v2(1) =
x(l, j, k, 1) -
x(i, m, k, 1)
677 v2(2) =
x(l, j, k, 2) -
x(i, m, k, 2)
678 v2(3) =
x(l, j, k, 3) -
x(i, m, k, 3)
682 tempd = fact*
skd(i, j, k, 3)
683 skd(i, j, k, 3) = 0.0_8
684 v1d(1) = v1d(1) + v2(2)*tempd
685 v2d(2) = v2d(2) + v1(1)*tempd
686 v1d(2) = v1d(2) - v2(1)*tempd
687 v2d(1) = v2d(1) - v1(2)*tempd
688 tempd = fact*
skd(i, j, k, 2)
689 skd(i, j, k, 2) = 0.0_8
690 v1d(3) = v1d(3) + v2(1)*tempd
691 v2d(1) = v2d(1) + v1(3)*tempd
692 v1d(1) = v1d(1) - v2(3)*tempd
693 v2d(3) = v2d(3) - v1(1)*tempd
694 tempd = fact*
skd(i, j, k, 1)
695 skd(i, j, k, 1) = 0.0_8
696 v1d(2) = v1d(2) + v2(3)*tempd
697 v2d(3) = v2d(3) + v1(2)*tempd
698 v1d(3) = v1d(3) - v2(2)*tempd
699 v2d(2) = v2d(2) - v1(3)*tempd
700 xd(l, j, k, 3) =
xd(l, j, k, 3) + v2d(3)
701 xd(i, m, k, 3) =
xd(i, m, k, 3) - v2d(3)
703 xd(l, j, k, 2) =
xd(l, j, k, 2) + v2d(2)
704 xd(i, m, k, 2) =
xd(i, m, k, 2) - v2d(2)
706 xd(l, j, k, 1) =
xd(l, j, k, 1) + v2d(1)
707 xd(i, m, k, 1) =
xd(i, m, k, 1) - v2d(1)
709 xd(i, j, k, 3) =
xd(i, j, k, 3) + v1d(3)
710 xd(l, m, k, 3) =
xd(l, m, k, 3) - v1d(3)
712 xd(i, j, k, 2) =
xd(i, j, k, 2) + v1d(2)
713 xd(l, m, k, 2) =
xd(l, m, k, 2) - v1d(2)
715 xd(i, j, k, 1) =
xd(i, j, k, 1) + v1d(1)
716 xd(l, m, k, 1) =
xd(l, m, k, 1) - v1d(1)
719 call popreal8array(v2, 3)
720 call popreal8array(v1, 3)
726 j = mod(ii/
ie,
je + 1) + 0
728 k = ii/(
ie*(
je+1)) + 1
732 v1(1) =
x(i, j, n, 1) -
x(l, j, k, 1)
733 v1(2) =
x(i, j, n, 2) -
x(l, j, k, 2)
734 v1(3) =
x(i, j, n, 3) -
x(l, j, k, 3)
735 v2(1) =
x(l, j, n, 1) -
x(i, j, k, 1)
736 v2(2) =
x(l, j, n, 2) -
x(i, j, k, 2)
737 v2(3) =
x(l, j, n, 3) -
x(i, j, k, 3)
741 tempd = fact*
sjd(i, j, k, 3)
742 sjd(i, j, k, 3) = 0.0_8
743 v1d(1) = v1d(1) + v2(2)*tempd
744 v2d(2) = v2d(2) + v1(1)*tempd
745 v1d(2) = v1d(2) - v2(1)*tempd
746 v2d(1) = v2d(1) - v1(2)*tempd
747 tempd = fact*
sjd(i, j, k, 2)
748 sjd(i, j, k, 2) = 0.0_8
749 v1d(3) = v1d(3) + v2(1)*tempd
750 v2d(1) = v2d(1) + v1(3)*tempd
751 v1d(1) = v1d(1) - v2(3)*tempd
752 v2d(3) = v2d(3) - v1(1)*tempd
753 tempd = fact*
sjd(i, j, k, 1)
754 sjd(i, j, k, 1) = 0.0_8
755 v1d(2) = v1d(2) + v2(3)*tempd
756 v2d(3) = v2d(3) + v1(2)*tempd
757 v1d(3) = v1d(3) - v2(2)*tempd
758 v2d(2) = v2d(2) - v1(3)*tempd
759 xd(l, j, n, 3) =
xd(l, j, n, 3) + v2d(3)
760 xd(i, j, k, 3) =
xd(i, j, k, 3) - v2d(3)
762 xd(l, j, n, 2) =
xd(l, j, n, 2) + v2d(2)
763 xd(i, j, k, 2) =
xd(i, j, k, 2) - v2d(2)
765 xd(l, j, n, 1) =
xd(l, j, n, 1) + v2d(1)
766 xd(i, j, k, 1) =
xd(i, j, k, 1) - v2d(1)
768 xd(i, j, n, 3) =
xd(i, j, n, 3) + v1d(3)
769 xd(l, j, k, 3) =
xd(l, j, k, 3) - v1d(3)
771 xd(i, j, n, 2) =
xd(i, j, n, 2) + v1d(2)
772 xd(l, j, k, 2) =
xd(l, j, k, 2) - v1d(2)
774 xd(i, j, n, 1) =
xd(i, j, n, 1) + v1d(1)
775 xd(l, j, k, 1) =
xd(l, j, k, 1) - v1d(1)
778 call popreal8array(v2, 3)
779 call popreal8array(v1, 3)
783 i = mod(ii,
ie + 1) + 0
785 j = mod(ii/(
ie+1),
je) + 1
787 k = ii/((
ie+1)*
je) + 1
791 v1(1) =
x(i, j, n, 1) -
x(i, m, k, 1)
792 v1(2) =
x(i, j, n, 2) -
x(i, m, k, 2)
793 v1(3) =
x(i, j, n, 3) -
x(i, m, k, 3)
794 v2(1) =
x(i, j, k, 1) -
x(i, m, n, 1)
795 v2(2) =
x(i, j, k, 2) -
x(i, m, n, 2)
796 v2(3) =
x(i, j, k, 3) -
x(i, m, n, 3)
800 tempd = fact*
sid(i, j, k, 3)
801 sid(i, j, k, 3) = 0.0_8
802 v1d(1) = v1d(1) + v2(2)*tempd
803 v2d(2) = v2d(2) + v1(1)*tempd
804 v1d(2) = v1d(2) - v2(1)*tempd
805 v2d(1) = v2d(1) - v1(2)*tempd
806 tempd = fact*
sid(i, j, k, 2)
807 sid(i, j, k, 2) = 0.0_8
808 v1d(3) = v1d(3) + v2(1)*tempd
809 v2d(1) = v2d(1) + v1(3)*tempd
810 v1d(1) = v1d(1) - v2(3)*tempd
811 v2d(3) = v2d(3) - v1(1)*tempd
812 tempd = fact*
sid(i, j, k, 1)
813 sid(i, j, k, 1) = 0.0_8
814 v1d(2) = v1d(2) + v2(3)*tempd
815 v2d(3) = v2d(3) + v1(2)*tempd
816 v1d(3) = v1d(3) - v2(2)*tempd
817 v2d(2) = v2d(2) - v1(3)*tempd
818 xd(i, j, k, 3) =
xd(i, j, k, 3) + v2d(3)
819 xd(i, m, n, 3) =
xd(i, m, n, 3) - v2d(3)
821 xd(i, j, k, 2) =
xd(i, j, k, 2) + v2d(2)
822 xd(i, m, n, 2) =
xd(i, m, n, 2) - v2d(2)
824 xd(i, j, k, 1) =
xd(i, j, k, 1) + v2d(1)
825 xd(i, m, n, 1) =
xd(i, m, n, 1) - v2d(1)
827 xd(i, j, n, 3) =
xd(i, j, n, 3) + v1d(3)
828 xd(i, m, k, 3) =
xd(i, m, k, 3) - v1d(3)
830 xd(i, j, n, 2) =
xd(i, j, n, 2) + v1d(2)
831 xd(i, m, k, 2) =
xd(i, m, k, 2) - v1d(2)
833 xd(i, j, n, 1) =
xd(i, j, n, 1) + v1d(1)
834 xd(i, m, k, 1) =
xd(i, m, k, 1) - v1d(1)
844 integer(kind=inttype) :: i, j, k, n, m, l, ii
845 real(kind=realtype) :: fact
846 real(kind=realtype) :: xxp, yyp, zzp
847 real(kind=realtype),
dimension(3) :: v1, v2
874 i = mod(ii,
ie + 1) + 0
876 j = mod(ii/(
ie+1),
je) + 1
878 k = ii/((
ie+1)*
je) + 1
882 v1(1) =
x(i, j, n, 1) -
x(i, m, k, 1)
883 v1(2) =
x(i, j, n, 2) -
x(i, m, k, 2)
884 v1(3) =
x(i, j, n, 3) -
x(i, m, k, 3)
885 v2(1) =
x(i, j, k, 1) -
x(i, m, n, 1)
886 v2(2) =
x(i, j, k, 2) -
x(i, m, n, 2)
887 v2(3) =
x(i, j, k, 3) -
x(i, m, n, 3)
891 si(i, j, k, 1) = fact*(v1(2)*v2(3)-v1(3)*v2(2))
892 si(i, j, k, 2) = fact*(v1(3)*v2(1)-v1(1)*v2(3))
893 si(i, j, k, 3) = fact*(v1(1)*v2(2)-v1(2)*v2(1))
901 j = mod(ii/
ie,
je + 1) + 0
903 k = ii/(
ie*(
je+1)) + 1
907 v1(1) =
x(i, j, n, 1) -
x(l, j, k, 1)
908 v1(2) =
x(i, j, n, 2) -
x(l, j, k, 2)
909 v1(3) =
x(i, j, n, 3) -
x(l, j, k, 3)
910 v2(1) =
x(l, j, n, 1) -
x(i, j, k, 1)
911 v2(2) =
x(l, j, n, 2) -
x(i, j, k, 2)
912 v2(3) =
x(l, j, n, 3) -
x(i, j, k, 3)
916 sj(i, j, k, 1) = fact*(v1(2)*v2(3)-v1(3)*v2(2))
917 sj(i, j, k, 2) = fact*(v1(3)*v2(1)-v1(1)*v2(3))
918 sj(i, j, k, 3) = fact*(v1(1)*v2(2)-v1(2)*v2(1))
926 j = mod(ii/
ie,
je) + 1
932 v1(1) =
x(i, j, k, 1) -
x(l, m, k, 1)
933 v1(2) =
x(i, j, k, 2) -
x(l, m, k, 2)
934 v1(3) =
x(i, j, k, 3) -
x(l, m, k, 3)
935 v2(1) =
x(l, j, k, 1) -
x(i, m, k, 1)
936 v2(2) =
x(l, j, k, 2) -
x(i, m, k, 2)
937 v2(3) =
x(l, j, k, 3) -
x(i, m, k, 3)
941 sk(i, j, k, 1) = fact*(v1(2)*v2(3)-v1(3)*v2(2))
942 sk(i, j, k, 2) = fact*(v1(3)*v2(1)-v1(1)*v2(3))
943 sk(i, j, k, 3) = fact*(v1(1)*v2(2)-v1(2)*v2(1))
964 integer(kind=inttype) :: i, j, ii
965 integer(kind=inttype) :: mm
966 real(kind=realtype) :: fact, mult
967 real(kind=realtype) :: factd
968 real(kind=realtype) :: xxp, yyp, zzp
969 real(kind=realtype) :: xxpd, yypd, zzpd
972 real(kind=realtype) :: tempd
991 call pushcontrol3b(1)
994 xxp =
si(
il, i, j, 1)
995 yyp =
si(
il, i, j, 2)
996 zzp =
si(
il, i, j, 3)
997 call pushcontrol3b(2)
1000 xxp =
sj(i, 1, j, 1)
1001 yyp =
sj(i, 1, j, 2)
1002 zzp =
sj(i, 1, j, 3)
1003 call pushcontrol3b(3)
1006 xxp =
sj(i,
jl, j, 1)
1007 yyp =
sj(i,
jl, j, 2)
1008 zzp =
sj(i,
jl, j, 3)
1009 call pushcontrol3b(4)
1012 xxp =
sk(i, j, 1, 1)
1013 yyp =
sk(i, j, 1, 2)
1014 zzp =
sk(i, j, 1, 3)
1015 call pushcontrol3b(5)
1018 xxp =
sk(i, j,
kl, 1)
1019 yyp =
sk(i, j,
kl, 2)
1020 zzp =
sk(i, j,
kl, 3)
1021 call pushcontrol3b(6)
1023 call pushcontrol3b(0)
1027 fact = sqrt(xxp*xxp + yyp*yyp + zzp*zzp)
1028 if (fact .gt.
zero)
then
1029 call pushreal8(fact)
1031 call pushcontrol1b(0)
1033 call pushcontrol1b(1)
1035 factd = zzp*
bcdatad(mm)%norm(i, j, 3)
1036 zzpd = zzpd + fact*
bcdatad(mm)%norm(i, j, 3)
1037 bcdatad(mm)%norm(i, j, 3) = 0.0_8
1038 factd = factd + yyp*
bcdatad(mm)%norm(i, j, 2)
1039 yypd = yypd + fact*
bcdatad(mm)%norm(i, j, 2)
1040 bcdatad(mm)%norm(i, j, 2) = 0.0_8
1041 factd = factd + xxp*
bcdatad(mm)%norm(i, j, 1)
1042 xxpd = xxpd + fact*
bcdatad(mm)%norm(i, j, 1)
1043 bcdatad(mm)%norm(i, j, 1) = 0.0_8
1044 call popcontrol1b(branch)
1045 if (branch .eq. 0)
then
1047 factd = -(mult*factd/fact**2)
1049 if (xxp**2 + yyp**2 + zzp**2 .eq. 0.0_8)
then
1052 tempd = factd/(2.0*sqrt(xxp**2+yyp**2+zzp**2))
1054 xxpd = xxpd + 2*xxp*tempd
1055 yypd = yypd + 2*yyp*tempd
1056 zzpd = zzpd + 2*zzp*tempd
1057 call popcontrol3b(branch)
1058 if (branch .lt. 3)
then
1059 if (branch .ne. 0)
then
1060 if (branch .eq. 1)
then
1061 sid(1, i, j, 3) =
sid(1, i, j, 3) + zzpd
1062 sid(1, i, j, 2) =
sid(1, i, j, 2) + yypd
1063 sid(1, i, j, 1) =
sid(1, i, j, 1) + xxpd
1076 else if (branch .lt. 5)
then
1077 if (branch .eq. 3)
then
1078 sjd(i, 1, j, 3) =
sjd(i, 1, j, 3) + zzpd
1079 sjd(i, 1, j, 2) =
sjd(i, 1, j, 2) + yypd
1080 sjd(i, 1, j, 1) =
sjd(i, 1, j, 1) + xxpd
1092 else if (branch .eq. 5)
then
1093 skd(i, j, 1, 3) =
skd(i, j, 1, 3) + zzpd
1094 skd(i, j, 1, 2) =
skd(i, j, 1, 2) + yypd
1095 skd(i, j, 1, 1) =
skd(i, j, 1, 1) + xxpd
1123 integer(kind=inttype) :: i, j, ii
1124 integer(kind=inttype) :: mm
1125 real(kind=realtype) :: fact, mult
1126 real(kind=realtype) :: xxp, yyp, zzp
1142 xxp =
si(1, i, j, 1)
1143 yyp =
si(1, i, j, 2)
1144 zzp =
si(1, i, j, 3)
1147 xxp =
si(
il, i, j, 1)
1148 yyp =
si(
il, i, j, 2)
1149 zzp =
si(
il, i, j, 3)
1152 xxp =
sj(i, 1, j, 1)
1153 yyp =
sj(i, 1, j, 2)
1154 zzp =
sj(i, 1, j, 3)
1157 xxp =
sj(i,
jl, j, 1)
1158 yyp =
sj(i,
jl, j, 2)
1159 zzp =
sj(i,
jl, j, 3)
1162 xxp =
sk(i, j, 1, 1)
1163 yyp =
sk(i, j, 1, 2)
1164 zzp =
sk(i, j, 1, 3)
1167 xxp =
sk(i, j,
kl, 1)
1168 yyp =
sk(i, j,
kl, 2)
1169 zzp =
sk(i, j,
kl, 3)
1173 fact = sqrt(xxp*xxp + yyp*yyp + zzp*zzp)
1174 if (fact .gt.
zero) fact = mult/fact
1176 bcdata(mm)%norm(i, j, 1) = fact*xxp
1177 bcdata(mm)%norm(i, j, 2) = fact*yyp
1178 bcdata(mm)%norm(i, j, 3) = fact*zzp
1204 integer(kind=inttype) :: mm, i, j, k
1205 integer(kind=inttype) :: ibeg, iend, jbeg, jend, iimax, jjmax
1207 real(kind=realtype) :: length, dot
1208 real(kind=realtype) :: dotd
1209 real(kind=realtype),
dimension(3) :: v1, v2, norm
1210 real(kind=realtype),
dimension(3) :: v1d
1212 real(kind=realtype) :: tmp
1213 real(kind=realtype) :: tmpd
1214 real(kind=realtype) :: tmp0
1215 real(kind=realtype) :: tmpd0
1216 real(kind=realtype) :: tmp1
1217 real(kind=realtype) :: tmpd1
1218 real(kind=realtype) :: tmp2
1219 real(kind=realtype) :: tmpd2
1220 real(kind=realtype) :: tmp3
1221 real(kind=realtype) :: tmpd3
1222 real(kind=realtype) :: tmp4
1223 real(kind=realtype) :: tmpd4
1224 real(kind=realtype) :: tmp5
1225 real(kind=realtype) :: tmpd5
1226 real(kind=realtype) :: tmp6
1227 real(kind=realtype) :: tmpd6
1228 real(kind=realtype) :: tmp7
1229 real(kind=realtype) :: tmpd7
1230 real(kind=realtype) :: tempd
1231 real(kind=realtype) :: tmp8
1232 real(kind=realtype) :: tmpd8
1233 real(kind=realtype) :: tmp9
1234 real(kind=realtype) :: tmpd9
1235 real(kind=realtype) :: tmp10
1236 real(kind=realtype) :: tmpd10
1237 real(kind=realtype) :: tmp11
1238 real(kind=realtype) :: tmpd11
1239 real(kind=realtype) :: tmp12
1240 real(kind=realtype) :: tmpd12
1241 real(kind=realtype) :: tmp13
1242 real(kind=realtype) :: tmpd13
1243 real(kind=realtype) :: tmp14
1244 real(kind=realtype) :: tmpd14
1245 real(kind=realtype) :: tmp15
1246 real(kind=realtype) :: tmpd15
1247 real(kind=realtype) :: tmp16
1248 real(kind=realtype) :: tmpd16
1271 integer :: ad_from10
1285 call pushreal8(norm(1))
1286 norm(1) =
bcdata(mm)%symnorm(1)
1287 call pushreal8(norm(2))
1288 norm(2) =
bcdata(mm)%symnorm(2)
1289 call pushreal8(norm(3))
1290 norm(3) =
bcdata(mm)%symnorm(3)
1291 length = sqrt(norm(1)**2 + norm(2)**2 + norm(3)**2)
1293 call pushreal8(norm(1))
1294 norm(1) = norm(1)/length
1295 call pushreal8(norm(2))
1296 norm(2) = norm(2)/length
1297 call pushreal8(norm(3))
1298 norm(3) = norm(3)/length
1300 if (length .gt.
eps)
then
1309 if (ibeg .eq. 1) ibeg = 0
1310 if (iend .eq. iimax) iend = iimax + 1
1311 if (jbeg .eq. 1) jbeg = 0
1312 if (jend .eq. jjmax) jend = jjmax + 1
1317 call pushinteger4(i - 1)
1318 call pushinteger4(ad_from)
1320 call pushinteger4(j - 1)
1321 call pushinteger4(ad_from0)
1322 call pushcontrol4b(7)
1330 if (ibeg .eq. 1) ibeg = 0
1331 if (iend .eq. iimax) iend = iimax + 1
1332 if (jbeg .eq. 1) jbeg = 0
1333 if (jend .eq. jjmax) jend = jjmax + 1
1338 call pushinteger4(i - 1)
1339 call pushinteger4(ad_from1)
1341 call pushinteger4(j - 1)
1342 call pushinteger4(ad_from2)
1343 call pushcontrol4b(6)
1351 if (ibeg .eq. 1) ibeg = 0
1352 if (iend .eq. iimax) iend = iimax + 1
1353 if (jbeg .eq. 1) jbeg = 0
1354 if (jend .eq. jjmax) jend = jjmax + 1
1359 call pushinteger4(i - 1)
1360 call pushinteger4(ad_from3)
1362 call pushinteger4(j - 1)
1363 call pushinteger4(ad_from4)
1364 call pushcontrol4b(5)
1372 if (ibeg .eq. 1) ibeg = 0
1373 if (iend .eq. iimax) iend = iimax + 1
1374 if (jbeg .eq. 1) jbeg = 0
1375 if (jend .eq. jjmax) jend = jjmax + 1
1380 call pushinteger4(i - 1)
1381 call pushinteger4(ad_from5)
1383 call pushinteger4(j - 1)
1384 call pushinteger4(ad_from6)
1385 call pushcontrol4b(4)
1393 if (ibeg .eq. 1) ibeg = 0
1394 if (iend .eq. iimax) iend = iimax + 1
1395 if (jbeg .eq. 1) jbeg = 0
1396 if (jend .eq. jjmax) jend = jjmax + 1
1401 call pushinteger4(i - 1)
1402 call pushinteger4(ad_from7)
1404 call pushinteger4(j - 1)
1405 call pushinteger4(ad_from8)
1406 call pushcontrol4b(3)
1414 if (ibeg .eq. 1) ibeg = 0
1415 if (iend .eq. iimax) iend = iimax + 1
1416 if (jbeg .eq. 1) jbeg = 0
1417 if (jend .eq. jjmax) jend = jjmax + 1
1422 call pushinteger4(i - 1)
1423 call pushinteger4(ad_from9)
1425 call pushinteger4(j - 1)
1426 call pushinteger4(ad_from10)
1427 call pushcontrol4b(2)
1429 call pushcontrol4b(8)
1432 call pushcontrol4b(1)
1435 call pushcontrol4b(0)
1440 call popcontrol4b(branch)
1441 if (branch .lt. 4)
then
1442 if (branch .lt. 2)
then
1443 if (branch .eq. 0)
goto 100
1444 else if (branch .eq. 2)
then
1445 call popinteger4(ad_from10)
1446 call popinteger4(ad_to10)
1447 do j=ad_to10,ad_from10,-1
1448 call popinteger4(ad_from9)
1449 call popinteger4(ad_to9)
1450 do i=ad_to9,ad_from9,-1
1451 tmpd16 =
xd(i, j,
ke, 3)
1452 xd(i, j,
ke, 3) = 0.0_8
1453 xd(i, j,
nz, 3) =
xd(i, j,
nz, 3) + tmpd16
1454 tmpd15 =
xd(i, j,
ke, 2)
1455 xd(i, j,
ke, 2) = 0.0_8
1456 xd(i, j,
nz, 2) =
xd(i, j,
nz, 2) + tmpd15
1457 tmpd14 =
xd(i, j,
ke, 1)
1458 dotd = norm(3)*tmpd16 + norm(2)*tmpd15 + norm(1)*tmpd14
1459 xd(i, j,
ke, 1) = 0.0_8
1460 xd(i, j,
nz, 1) =
xd(i, j,
nz, 1) + tmpd14
1462 v1d(1) = v1d(1) + norm(1)*tempd
1463 v1d(2) = v1d(2) + norm(2)*tempd
1464 v1d(3) = v1d(3) + norm(3)*tempd
1465 xd(i, j,
kl, 3) =
xd(i, j,
kl, 3) + v1d(3)
1466 xd(i, j,
nz, 3) =
xd(i, j,
nz, 3) - v1d(3)
1468 xd(i, j,
kl, 2) =
xd(i, j,
kl, 2) + v1d(2)
1469 xd(i, j,
nz, 2) =
xd(i, j,
nz, 2) - v1d(2)
1471 xd(i, j,
kl, 1) =
xd(i, j,
kl, 1) + v1d(1)
1472 xd(i, j,
nz, 1) =
xd(i, j,
nz, 1) - v1d(1)
1477 call popinteger4(ad_from8)
1478 call popinteger4(ad_to8)
1479 do j=ad_to8,ad_from8,-1
1480 call popinteger4(ad_from7)
1481 call popinteger4(ad_to7)
1482 do i=ad_to7,ad_from7,-1
1483 xd(i, j, 2, 3) =
xd(i, j, 2, 3) +
xd(i, j, 0, 3)
1484 dotd = norm(3)*
xd(i, j, 0, 3)
1485 xd(i, j, 0, 3) = 0.0_8
1486 xd(i, j, 2, 2) =
xd(i, j, 2, 2) +
xd(i, j, 0, 2)
1487 dotd = dotd + norm(2)*
xd(i, j, 0, 2)
1488 xd(i, j, 0, 2) = 0.0_8
1489 xd(i, j, 2, 1) =
xd(i, j, 2, 1) +
xd(i, j, 0, 1)
1490 dotd = dotd + norm(1)*
xd(i, j, 0, 1)
1491 xd(i, j, 0, 1) = 0.0_8
1493 v1d(1) = v1d(1) + norm(1)*tempd
1494 v1d(2) = v1d(2) + norm(2)*tempd
1495 v1d(3) = v1d(3) + norm(3)*tempd
1496 xd(i, j, 1, 3) =
xd(i, j, 1, 3) + v1d(3)
1497 xd(i, j, 2, 3) =
xd(i, j, 2, 3) - v1d(3)
1499 xd(i, j, 1, 2) =
xd(i, j, 1, 2) + v1d(2)
1500 xd(i, j, 2, 2) =
xd(i, j, 2, 2) - v1d(2)
1502 xd(i, j, 1, 1) =
xd(i, j, 1, 1) + v1d(1)
1503 xd(i, j, 2, 1) =
xd(i, j, 2, 1) - v1d(1)
1508 else if (branch .lt. 6)
then
1509 if (branch .eq. 4)
then
1510 call popinteger4(ad_from6)
1511 call popinteger4(ad_to6)
1512 do j=ad_to6,ad_from6,-1
1513 call popinteger4(ad_from5)
1514 call popinteger4(ad_to5)
1515 do i=ad_to5,ad_from5,-1
1516 tmpd13 =
xd(i,
je, j, 3)
1517 xd(i,
je, j, 3) = 0.0_8
1518 xd(i,
ny, j, 3) =
xd(i,
ny, j, 3) + tmpd13
1519 tmpd12 =
xd(i,
je, j, 2)
1520 xd(i,
je, j, 2) = 0.0_8
1521 xd(i,
ny, j, 2) =
xd(i,
ny, j, 2) + tmpd12
1522 tmpd11 =
xd(i,
je, j, 1)
1523 dotd = norm(3)*tmpd13 + norm(2)*tmpd12 + norm(1)*tmpd11
1524 xd(i,
je, j, 1) = 0.0_8
1525 xd(i,
ny, j, 1) =
xd(i,
ny, j, 1) + tmpd11
1527 v1d(1) = v1d(1) + norm(1)*tempd
1528 v1d(2) = v1d(2) + norm(2)*tempd
1529 v1d(3) = v1d(3) + norm(3)*tempd
1530 xd(i,
jl, j, 3) =
xd(i,
jl, j, 3) + v1d(3)
1531 xd(i,
ny, j, 3) =
xd(i,
ny, j, 3) - v1d(3)
1533 xd(i,
jl, j, 2) =
xd(i,
jl, j, 2) + v1d(2)
1534 xd(i,
ny, j, 2) =
xd(i,
ny, j, 2) - v1d(2)
1536 xd(i,
jl, j, 1) =
xd(i,
jl, j, 1) + v1d(1)
1537 xd(i,
ny, j, 1) =
xd(i,
ny, j, 1) - v1d(1)
1542 call popinteger4(ad_from4)
1543 call popinteger4(ad_to4)
1544 do j=ad_to4,ad_from4,-1
1545 call popinteger4(ad_from3)
1546 call popinteger4(ad_to3)
1547 do i=ad_to3,ad_from3,-1
1548 xd(i, 2, j, 3) =
xd(i, 2, j, 3) +
xd(i, 0, j, 3)
1549 dotd = norm(3)*
xd(i, 0, j, 3)
1550 xd(i, 0, j, 3) = 0.0_8
1551 xd(i, 2, j, 2) =
xd(i, 2, j, 2) +
xd(i, 0, j, 2)
1552 dotd = dotd + norm(2)*
xd(i, 0, j, 2)
1553 xd(i, 0, j, 2) = 0.0_8
1554 xd(i, 2, j, 1) =
xd(i, 2, j, 1) +
xd(i, 0, j, 1)
1555 dotd = dotd + norm(1)*
xd(i, 0, j, 1)
1556 xd(i, 0, j, 1) = 0.0_8
1558 v1d(1) = v1d(1) + norm(1)*tempd
1559 v1d(2) = v1d(2) + norm(2)*tempd
1560 v1d(3) = v1d(3) + norm(3)*tempd
1561 xd(i, 1, j, 3) =
xd(i, 1, j, 3) + v1d(3)
1562 xd(i, 2, j, 3) =
xd(i, 2, j, 3) - v1d(3)
1564 xd(i, 1, j, 2) =
xd(i, 1, j, 2) + v1d(2)
1565 xd(i, 2, j, 2) =
xd(i, 2, j, 2) - v1d(2)
1567 xd(i, 1, j, 1) =
xd(i, 1, j, 1) + v1d(1)
1568 xd(i, 2, j, 1) =
xd(i, 2, j, 1) - v1d(1)
1573 else if (branch .eq. 6)
then
1574 call popinteger4(ad_from2)
1575 call popinteger4(ad_to2)
1576 do j=ad_to2,ad_from2,-1
1577 call popinteger4(ad_from1)
1578 call popinteger4(ad_to1)
1579 do i=ad_to1,ad_from1,-1
1580 tmpd10 =
xd(
ie, i, j, 3)
1581 xd(
ie, i, j, 3) = 0.0_8
1582 xd(
nx, i, j, 3) =
xd(
nx, i, j, 3) + tmpd10
1583 tmpd9 =
xd(
ie, i, j, 2)
1584 xd(
ie, i, j, 2) = 0.0_8
1585 xd(
nx, i, j, 2) =
xd(
nx, i, j, 2) + tmpd9
1586 tmpd8 =
xd(
ie, i, j, 1)
1587 dotd = norm(3)*tmpd10 + norm(2)*tmpd9 + norm(1)*tmpd8
1588 xd(
ie, i, j, 1) = 0.0_8
1589 xd(
nx, i, j, 1) =
xd(
nx, i, j, 1) + tmpd8
1591 v1d(1) = v1d(1) + norm(1)*tempd
1592 v1d(2) = v1d(2) + norm(2)*tempd
1593 v1d(3) = v1d(3) + norm(3)*tempd
1594 xd(
il, i, j, 3) =
xd(
il, i, j, 3) + v1d(3)
1595 xd(
nx, i, j, 3) =
xd(
nx, i, j, 3) - v1d(3)
1597 xd(
il, i, j, 2) =
xd(
il, i, j, 2) + v1d(2)
1598 xd(
nx, i, j, 2) =
xd(
nx, i, j, 2) - v1d(2)
1600 xd(
il, i, j, 1) =
xd(
il, i, j, 1) + v1d(1)
1601 xd(
nx, i, j, 1) =
xd(
nx, i, j, 1) - v1d(1)
1605 else if (branch .eq. 7)
then
1606 call popinteger4(ad_from0)
1607 call popinteger4(ad_to0)
1608 do j=ad_to0,ad_from0,-1
1609 call popinteger4(ad_from)
1610 call popinteger4(ad_to)
1611 do i=ad_to,ad_from,-1
1612 xd(2, i, j, 3) =
xd(2, i, j, 3) +
xd(0, i, j, 3)
1613 dotd = norm(3)*
xd(0, i, j, 3)
1614 xd(0, i, j, 3) = 0.0_8
1615 xd(2, i, j, 2) =
xd(2, i, j, 2) +
xd(0, i, j, 2)
1616 dotd = dotd + norm(2)*
xd(0, i, j, 2)
1617 xd(0, i, j, 2) = 0.0_8
1618 xd(2, i, j, 1) =
xd(2, i, j, 1) +
xd(0, i, j, 1)
1619 dotd = dotd + norm(1)*
xd(0, i, j, 1)
1620 xd(0, i, j, 1) = 0.0_8
1622 v1d(1) = v1d(1) + norm(1)*tempd
1623 v1d(2) = v1d(2) + norm(2)*tempd
1624 v1d(3) = v1d(3) + norm(3)*tempd
1625 xd(1, i, j, 3) =
xd(1, i, j, 3) + v1d(3)
1626 xd(2, i, j, 3) =
xd(2, i, j, 3) - v1d(3)
1628 xd(1, i, j, 2) =
xd(1, i, j, 2) + v1d(2)
1629 xd(2, i, j, 2) =
xd(2, i, j, 2) - v1d(2)
1631 xd(1, i, j, 1) =
xd(1, i, j, 1) + v1d(1)
1632 xd(2, i, j, 1) =
xd(2, i, j, 1) - v1d(1)
1637 call popreal8(norm(3))
1638 call popreal8(norm(2))
1639 call popreal8(norm(1))
1640 call popreal8(norm(3))
1641 call popreal8(norm(2))
1642 call popreal8(norm(1))
1646 tmpd7 =
xd(i, j,
ke, 3)
1647 xd(i, j,
ke, 3) = 0.0_8
1649 xd(i, j,
nz, 3) =
xd(i, j,
nz, 3) - tmpd7
1650 tmpd6 =
xd(i, j,
ke, 2)
1651 xd(i, j,
ke, 2) = 0.0_8
1653 xd(i, j,
nz, 2) =
xd(i, j,
nz, 2) - tmpd6
1654 tmpd5 =
xd(i, j,
ke, 1)
1655 xd(i, j,
ke, 1) = 0.0_8
1657 xd(i, j,
nz, 1) =
xd(i, j,
nz, 1) - tmpd5
1658 xd(i, j, 1, 3) =
xd(i, j, 1, 3) +
two*
xd(i, j, 0, 3)
1659 xd(i, j, 2, 3) =
xd(i, j, 2, 3) -
xd(i, j, 0, 3)
1660 xd(i, j, 0, 3) = 0.0_8
1661 xd(i, j, 1, 2) =
xd(i, j, 1, 2) +
two*
xd(i, j, 0, 2)
1662 xd(i, j, 2, 2) =
xd(i, j, 2, 2) -
xd(i, j, 0, 2)
1663 xd(i, j, 0, 2) = 0.0_8
1664 xd(i, j, 1, 1) =
xd(i, j, 1, 1) +
two*
xd(i, j, 0, 1)
1665 xd(i, j, 2, 1) =
xd(i, j, 2, 1) -
xd(i, j, 0, 1)
1666 xd(i, j, 0, 1) = 0.0_8
1671 tmpd4 =
xd(i,
je, k, 3)
1672 xd(i,
je, k, 3) = 0.0_8
1674 xd(i,
ny, k, 3) =
xd(i,
ny, k, 3) - tmpd4
1675 tmpd3 =
xd(i,
je, k, 2)
1676 xd(i,
je, k, 2) = 0.0_8
1678 xd(i,
ny, k, 2) =
xd(i,
ny, k, 2) - tmpd3
1679 tmpd2 =
xd(i,
je, k, 1)
1680 xd(i,
je, k, 1) = 0.0_8
1682 xd(i,
ny, k, 1) =
xd(i,
ny, k, 1) - tmpd2
1683 xd(i, 1, k, 3) =
xd(i, 1, k, 3) +
two*
xd(i, 0, k, 3)
1684 xd(i, 2, k, 3) =
xd(i, 2, k, 3) -
xd(i, 0, k, 3)
1685 xd(i, 0, k, 3) = 0.0_8
1686 xd(i, 1, k, 2) =
xd(i, 1, k, 2) +
two*
xd(i, 0, k, 2)
1687 xd(i, 2, k, 2) =
xd(i, 2, k, 2) -
xd(i, 0, k, 2)
1688 xd(i, 0, k, 2) = 0.0_8
1689 xd(i, 1, k, 1) =
xd(i, 1, k, 1) +
two*
xd(i, 0, k, 1)
1690 xd(i, 2, k, 1) =
xd(i, 2, k, 1) -
xd(i, 0, k, 1)
1691 xd(i, 0, k, 1) = 0.0_8
1696 tmpd1 =
xd(
ie, j, k, 3)
1697 xd(
ie, j, k, 3) = 0.0_8
1699 xd(
nx, j, k, 3) =
xd(
nx, j, k, 3) - tmpd1
1700 tmpd0 =
xd(
ie, j, k, 2)
1701 xd(
ie, j, k, 2) = 0.0_8
1703 xd(
nx, j, k, 2) =
xd(
nx, j, k, 2) - tmpd0
1704 tmpd =
xd(
ie, j, k, 1)
1705 xd(
ie, j, k, 1) = 0.0_8
1707 xd(
nx, j, k, 1) =
xd(
nx, j, k, 1) - tmpd
1708 xd(1, j, k, 3) =
xd(1, j, k, 3) +
two*
xd(0, j, k, 3)
1709 xd(2, j, k, 3) =
xd(2, j, k, 3) -
xd(0, j, k, 3)
1710 xd(0, j, k, 3) = 0.0_8
1711 xd(1, j, k, 2) =
xd(1, j, k, 2) +
two*
xd(0, j, k, 2)
1712 xd(2, j, k, 2) =
xd(2, j, k, 2) -
xd(0, j, k, 2)
1713 xd(0, j, k, 2) = 0.0_8
1714 xd(1, j, k, 1) =
xd(1, j, k, 1) +
two*
xd(0, j, k, 1)
1715 xd(2, j, k, 1) =
xd(2, j, k, 1) -
xd(0, j, k, 1)
1716 xd(0, j, k, 1) = 0.0_8
1737 integer(kind=inttype) :: mm, i, j, k
1738 integer(kind=inttype) :: ibeg, iend, jbeg, jend, iimax, jjmax
1740 real(kind=realtype) :: length, dot
1741 real(kind=realtype),
dimension(3) :: v1, v2, norm
1746 x(0, j, k, 1) =
two*
x(1, j, k, 1) -
x(2, j, k, 1)
1747 x(0, j, k, 2) =
two*
x(1, j, k, 2) -
x(2, j, k, 2)
1748 x(0, j, k, 3) =
two*
x(1, j, k, 3) -
x(2, j, k, 3)
1757 x(i, 0, k, 1) =
two*
x(i, 1, k, 1) -
x(i, 2, k, 1)
1758 x(i, 0, k, 2) =
two*
x(i, 1, k, 2) -
x(i, 2, k, 2)
1759 x(i, 0, k, 3) =
two*
x(i, 1, k, 3) -
x(i, 2, k, 3)
1768 x(i, j, 0, 1) =
two*
x(i, j, 1, 1) -
x(i, j, 2, 1)
1769 x(i, j, 0, 2) =
two*
x(i, j, 1, 2) -
x(i, j, 2, 2)
1770 x(i, j, 0, 3) =
two*
x(i, j, 1, 3) -
x(i, j, 2, 3)
1787 norm(1) =
bcdata(mm)%symnorm(1)
1788 norm(2) =
bcdata(mm)%symnorm(2)
1789 norm(3) =
bcdata(mm)%symnorm(3)
1790 length = sqrt(norm(1)**2 + norm(2)**2 + norm(3)**2)
1792 norm(1) = norm(1)/length
1793 norm(2) = norm(2)/length
1794 norm(3) = norm(3)/length
1796 if (length .gt.
eps)
then
1805 if (ibeg .eq. 1) ibeg = 0
1806 if (iend .eq. iimax) iend = iimax + 1
1807 if (jbeg .eq. 1) jbeg = 0
1808 if (jend .eq. jjmax) jend = jjmax + 1
1811 v1(1) =
x(1, i, j, 1) -
x(2, i, j, 1)
1812 v1(2) =
x(1, i, j, 2) -
x(2, i, j, 2)
1813 v1(3) =
x(1, i, j, 3) -
x(2, i, j, 3)
1814 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1815 x(0, i, j, 1) =
x(2, i, j, 1) + dot*norm(1)
1816 x(0, i, j, 2) =
x(2, i, j, 2) + dot*norm(2)
1817 x(0, i, j, 3) =
x(2, i, j, 3) + dot*norm(3)
1827 if (ibeg .eq. 1) ibeg = 0
1828 if (iend .eq. iimax) iend = iimax + 1
1829 if (jbeg .eq. 1) jbeg = 0
1830 if (jend .eq. jjmax) jend = jjmax + 1
1833 v1(1) =
x(
il, i, j, 1) -
x(
nx, i, j, 1)
1834 v1(2) =
x(
il, i, j, 2) -
x(
nx, i, j, 2)
1835 v1(3) =
x(
il, i, j, 3) -
x(
nx, i, j, 3)
1836 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1837 x(
ie, i, j, 1) =
x(
nx, i, j, 1) + dot*norm(1)
1838 x(
ie, i, j, 2) =
x(
nx, i, j, 2) + dot*norm(2)
1839 x(
ie, i, j, 3) =
x(
nx, i, j, 3) + dot*norm(3)
1849 if (ibeg .eq. 1) ibeg = 0
1850 if (iend .eq. iimax) iend = iimax + 1
1851 if (jbeg .eq. 1) jbeg = 0
1852 if (jend .eq. jjmax) jend = jjmax + 1
1855 v1(1) =
x(i, 1, j, 1) -
x(i, 2, j, 1)
1856 v1(2) =
x(i, 1, j, 2) -
x(i, 2, j, 2)
1857 v1(3) =
x(i, 1, j, 3) -
x(i, 2, j, 3)
1858 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1859 x(i, 0, j, 1) =
x(i, 2, j, 1) + dot*norm(1)
1860 x(i, 0, j, 2) =
x(i, 2, j, 2) + dot*norm(2)
1861 x(i, 0, j, 3) =
x(i, 2, j, 3) + dot*norm(3)
1871 if (ibeg .eq. 1) ibeg = 0
1872 if (iend .eq. iimax) iend = iimax + 1
1873 if (jbeg .eq. 1) jbeg = 0
1874 if (jend .eq. jjmax) jend = jjmax + 1
1877 v1(1) =
x(i,
jl, j, 1) -
x(i,
ny, j, 1)
1878 v1(2) =
x(i,
jl, j, 2) -
x(i,
ny, j, 2)
1879 v1(3) =
x(i,
jl, j, 3) -
x(i,
ny, j, 3)
1880 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1881 x(i,
je, j, 1) =
x(i,
ny, j, 1) + dot*norm(1)
1882 x(i,
je, j, 2) =
x(i,
ny, j, 2) + dot*norm(2)
1883 x(i,
je, j, 3) =
x(i,
ny, j, 3) + dot*norm(3)
1893 if (ibeg .eq. 1) ibeg = 0
1894 if (iend .eq. iimax) iend = iimax + 1
1895 if (jbeg .eq. 1) jbeg = 0
1896 if (jend .eq. jjmax) jend = jjmax + 1
1899 v1(1) =
x(i, j, 1, 1) -
x(i, j, 2, 1)
1900 v1(2) =
x(i, j, 1, 2) -
x(i, j, 2, 2)
1901 v1(3) =
x(i, j, 1, 3) -
x(i, j, 2, 3)
1902 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1903 x(i, j, 0, 1) =
x(i, j, 2, 1) + dot*norm(1)
1904 x(i, j, 0, 2) =
x(i, j, 2, 2) + dot*norm(2)
1905 x(i, j, 0, 3) =
x(i, j, 2, 3) + dot*norm(3)
1915 if (ibeg .eq. 1) ibeg = 0
1916 if (iend .eq. iimax) iend = iimax + 1
1917 if (jbeg .eq. 1) jbeg = 0
1918 if (jend .eq. jjmax) jend = jjmax + 1
1921 v1(1) =
x(i, j,
kl, 1) -
x(i, j,
nz, 1)
1922 v1(2) =
x(i, j,
kl, 2) -
x(i, j,
nz, 2)
1923 v1(3) =
x(i, j,
kl, 3) -
x(i, j,
nz, 3)
1924 dot =
two*(v1(1)*norm(1)+v1(2)*norm(2)+v1(3)*norm(3))
1925 x(i, j,
ke, 1) =
x(i, j,
nz, 1) + dot*norm(1)
1926 x(i, j,
ke, 2) =
x(i, j,
nz, 2) + dot*norm(2)
1927 x(i, j,
ke, 3) =
x(i, j,
nz, 3) + dot*norm(3)
1948 integer(kind=inttype) :: i, j, k, ii, nturb
1949 real(kind=realtype) :: ovol
1956 j = mod(ii/
nx,
ny) + 2
1972 integer(kind=inttype) :: i, j, k, ii, nturb
1973 real(kind=realtype) :: ovol
1980 j = mod(ii/
nx,
ny) + 2
2000 integer(kind=inttype) :: i, j, k, l
2003 real(realtype) :: x1
2004 real(realtype) :: max1
2010 x1 = real(
iblank(i, j, k), realtype)
2011 if (x1 .lt.
zero)
then
2012 call pushreal8(max1)
2014 call pushcontrol1b(0)
2016 call pushreal8(max1)
2018 call pushcontrol1b(1)
2024 if (
associated(
fwd))
fwd = 0.0_8
2029 fwd(i, j, k, l) =
fwd(i, j, k, l) + max1*
dwd(i, j, k, l)
2030 dwd(i, j, k, l) = max1*
dwd(i, j, k, l)
2031 call popcontrol1b(branch)
2032 if (branch .eq. 0)
then
2049 integer(kind=inttype) :: i, j, k, l
2052 real(realtype) :: x1
2053 real(realtype) :: max1
2058 x1 = real(
iblank(i, j, k), realtype)
2059 if (x1 .lt.
zero)
then
2064 dw(i, j, k, l) = (
dw(i, j, k, l)+
fw(i, j, k, l))*max1
real(kind=realtype), dimension(:, :, :, :), pointer fwd
integer(kind=inttype), dimension(:), pointer knend
integer(kind=inttype), dimension(:), pointer inend
real(kind=realtype), dimension(:, :, :, :), pointer sjd
integer(kind=inttype), dimension(:), pointer knbeg
real(kind=realtype), dimension(:, :, :), pointer vold
integer(kind=inttype), dimension(:), pointer jnbeg
type(bcdatatype), dimension(:), pointer bcdatad
integer(kind=inttype), dimension(:, :, :), pointer iblank
real(kind=realtype), dimension(:, :, :, :), pointer skd
integer(kind=inttype), dimension(:), pointer bcfaceid
real(kind=realtype), dimension(:, :, :, :), pointer si
real(kind=realtype), dimension(:, :, :, :), pointer sid
integer(kind=inttype) nbocos
real(kind=realtype), dimension(:, :, :), pointer volref
real(kind=realtype), dimension(:, :, :, :), pointer sj
integer(kind=inttype), dimension(:), pointer jnend
integer(kind=inttype), dimension(:), pointer bctype
real(kind=realtype), dimension(:, :, :, :), pointer dw
real(kind=realtype), dimension(:, :, :, :), pointer sk
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :, :), pointer xd
real(kind=realtype), dimension(:, :, :, :), pointer fw
real(kind=realtype), dimension(:, :, :, :), pointer x
integer(kind=inttype), dimension(:), pointer inbeg
real(kind=realtype), dimension(:, :, :, :), pointer dwd
real(kind=realtype), parameter zero
integer(kind=inttype), parameter imax
integer(kind=inttype), parameter kmin
integer(kind=inttype), parameter jmax
real(kind=realtype), parameter eps
real(kind=realtype), parameter eighth
integer(kind=inttype), parameter symm
real(kind=realtype), parameter one
real(kind=realtype), parameter half
integer(kind=inttype), parameter imin
real(kind=realtype), parameter two
real(kind=realtype), parameter fourth
integer(kind=inttype), parameter kmax
integer(kind=inttype), parameter jmin
real(kind=realtype), parameter sixth
integer(kind=inttype) nt1
integer(kind=inttype) nwf
integer(kind=inttype) nt2
integer, parameter realtype