27 integer nterms,i,j,k,imin,jmin,kmin,kflag,n,iy
29 real*8 ratio(20),pneigh(3,20),pnode(3),dummy,
30 & a(-1:1,-1:1,-1:1),xi(-1:1,-1:1,-1:1),et(-1:1,-1:1,-1:1),p(3),
31 & aold(-1:1,-1:1,-1:1),ze(-1:1,-1:1,-1:1),zeold(-1:1,-1:1,-1:1),
32 & xiold(-1:1,-1:1,-1:1),etold(-1:1,-1:1,-1:1),distmin,xiopt,etopt,
33 & d1,d2,d3,d4,
dist,xil,etl,zel,zeopt,dx(3),al
35 intent(in) pneigh,nterms
37 intent(inout) xil,etl,zel,
dist,pnode,ratio
59 call distattach_3d(xi(i,j,k),et(i,j,k),ze(i,j,k),pneigh,
60 & pnode,a(i,j,k),p,ratio,nterms)
79 if(a(i,j,k).lt.distmin)
then 94 if((imin.eq.0).and.(jmin.eq.0).and.(kmin.eq.0))
exit 100 xiold(i,j,k)=xi(i,j,k)
101 etold(i,j,k)=et(i,j,k)
102 zeold(i,j,k)=ze(i,j,k)
110 if((i+imin.ge.-1).and.(i+imin.le.1).and.
111 & (j+jmin.ge.-1).and.(j+jmin.le.1).and.
112 & (k+kmin.ge.-1).and.(k+kmin.le.1))
then 113 a(i,j,k)=aold(i+imin,j+jmin,k+kmin)
114 xi(i,j,k)=xiold(i+imin,j+jmin,k+kmin)
115 et(i,j,k)=etold(i+imin,j+jmin,k+kmin)
116 ze(i,j,k)=zeold(i+imin,j+jmin,k+kmin)
118 xi(i,j,k)=xi(i,j,k)+imin*d1
119 et(i,j,k)=et(i,j,k)+jmin*d1
120 ze(i,j,k)=ze(i,j,k)+kmin*d1
122 xi(i,j,k)=
min(xi(i,j,k),1.d0)
123 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
124 et(i,j,k)=
min(et(i,j,k),1.d0)
125 et(i,j,k)=
max(et(i,j,k),-1.d0)
126 ze(i,j,k)=
min(ze(i,j,k),1.d0)
127 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
131 & pnode,a(i,j,k),p,ratio,nterms)
153 xi(i,j,k)=
min(xi(i,j,k),1.d0)
154 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
155 et(i,j,k)=
min(et(i,j,k),1.d0)
156 et(i,j,k)=
max(et(i,j,k),-1.d0)
157 ze(i,j,k)=
min(ze(i,j,k),1.d0)
158 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
159 call distattach_3d(xi(i,j,k),et(i,j,k),ze(i,j,k),pneigh,
160 & pnode,a(i,j,k),p,ratio,nterms)
175 if(a(i,j,k).lt.distmin)
then 188 if((imin.eq.0).and.(jmin.eq.0).and.(kmin.eq.0))
exit 194 xiold(i,j,k)=xi(i,j,k)
195 etold(i,j,k)=et(i,j,k)
196 zeold(i,j,k)=ze(i,j,k)
204 if((i+imin.ge.-1).and.(i+imin.le.1).and.
205 & (j+jmin.ge.-1).and.(j+jmin.le.1).and.
206 & (k+kmin.ge.-1).and.(k+kmin.le.1))
then 207 a(i,j,k)=aold(i+imin,j+jmin,k+kmin)
208 xi(i,j,k)=xiold(i+imin,j+jmin,k+kmin)
209 et(i,j,k)=etold(i+imin,j+jmin,k+kmin)
210 ze(i,j,k)=zeold(i+imin,j+jmin,k+kmin)
212 xi(i,j,k)=xi(i,j,k)+imin*d2
213 et(i,j,k)=et(i,j,k)+jmin*d2
214 ze(i,j,k)=ze(i,j,k)+kmin*d2
216 xi(i,j,k)=
min(xi(i,j,k),1.d0)
217 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
218 et(i,j,k)=
min(et(i,j,k),1.d0)
219 et(i,j,k)=
max(et(i,j,k),-1.d0)
220 ze(i,j,k)=
min(ze(i,j,k),1.d0)
221 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
225 & pnode,a(i,j,k),p,ratio,nterms)
245 xi(i,j,k)=
min(xi(i,j,k),1.d0)
246 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
247 et(i,j,k)=
min(et(i,j,k),1.d0)
248 et(i,j,k)=
max(et(i,j,k),-1.d0)
249 ze(i,j,k)=
min(ze(i,j,k),1.d0)
250 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
251 call distattach_3d(xi(i,j,k),et(i,j,k),ze(i,j,k),pneigh,
252 & pnode,a(i,j,k),p,ratio,nterms)
267 if(a(i,j,k).lt.distmin)
then 280 if((imin.eq.0).and.(jmin.eq.0).and.(kmin.eq.0))
exit 286 xiold(i,j,k)=xi(i,j,k)
287 etold(i,j,k)=et(i,j,k)
288 zeold(i,j,k)=ze(i,j,k)
296 if((i+imin.ge.-1).and.(i+imin.le.1).and.
297 & (j+jmin.ge.-1).and.(j+jmin.le.1).and.
298 & (k+kmin.ge.-1).and.(k+kmin.le.1))
then 299 a(i,j,k)=aold(i+imin,j+jmin,k+kmin)
300 xi(i,j,k)=xiold(i+imin,j+jmin,k+kmin)
301 et(i,j,k)=etold(i+imin,j+jmin,k+kmin)
302 ze(i,j,k)=zeold(i+imin,j+jmin,k+kmin)
304 xi(i,j,k)=xi(i,j,k)+imin*d3
305 et(i,j,k)=et(i,j,k)+jmin*d3
306 ze(i,j,k)=ze(i,j,k)+kmin*d3
308 xi(i,j,k)=
min(xi(i,j,k),1.d0)
309 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
310 et(i,j,k)=
min(et(i,j,k),1.d0)
311 et(i,j,k)=
max(et(i,j,k),-1.d0)
312 ze(i,j,k)=
min(ze(i,j,k),1.d0)
313 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
317 & pnode,a(i,j,k),p,ratio,nterms)
337 xi(i,j,k)=
min(xi(i,j,k),1.d0)
338 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
339 et(i,j,k)=
min(et(i,j,k),1.d0)
340 et(i,j,k)=
max(et(i,j,k),-1.d0)
341 ze(i,j,k)=
min(ze(i,j,k),1.d0)
342 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
343 call distattach_3d(xi(i,j,k),et(i,j,k),ze(i,j,k),pneigh,
344 & pnode,a(i,j,k),p,ratio,nterms)
359 if(a(i,j,k).lt.distmin)
then 372 if((imin.eq.0).and.(jmin.eq.0).and.(kmin.eq.0))
exit 378 xiold(i,j,k)=xi(i,j,k)
379 etold(i,j,k)=et(i,j,k)
380 zeold(i,j,k)=ze(i,j,k)
388 if((i+imin.ge.-1).and.(i+imin.le.1).and.
389 & (j+jmin.ge.-1).and.(j+jmin.le.1).and.
390 & (k+kmin.ge.-1).and.(k+kmin.le.1))
then 391 a(i,j,k)=aold(i+imin,j+jmin,k+kmin)
392 xi(i,j,k)=xiold(i+imin,j+jmin,k+kmin)
393 et(i,j,k)=etold(i+imin,j+jmin,k+kmin)
394 ze(i,j,k)=zeold(i+imin,j+jmin,k+kmin)
396 xi(i,j,k)=xi(i,j,k)+imin*d4
397 et(i,j,k)=et(i,j,k)+jmin*d4
398 ze(i,j,k)=ze(i,j,k)+kmin*d4
400 xi(i,j,k)=
min(xi(i,j,k),1.d0)
401 xi(i,j,k)=
max(xi(i,j,k),-1.d0)
402 et(i,j,k)=
min(et(i,j,k),1.d0)
403 et(i,j,k)=
max(et(i,j,k),-1.d0)
404 ze(i,j,k)=
min(ze(i,j,k),1.d0)
405 ze(i,j,k)=
max(ze(i,j,k),-1.d0)
409 & pnode,a(i,j,k),p,ratio,nterms)
417 call distattach_3d(xi(0,0,0),et(0,0,0),ze(0,0,0),pneigh,pnode,
418 & a(0,0,0),p,ratio,nterms)
426 if((nterms.eq.20).or.(nterms.eq.8))
then 430 elseif((nterms.eq.4).or.(nterms.eq.10))
then 431 xil=(xi(0,0,0)+1.d0)/2.d0
432 etl=(et(0,0,0)+1.d0)/2.d0
433 zel=(ze(0,0,0)+1.d0)/2.d0
437 call dsort(dx,iy,n,kflag)
438 if(dx(3).gt.1.d-30)
then 439 al=dx(3)/(xil+etl+zel)
450 elseif((nterms.eq.6).or.(nterms.eq.15))
then 451 xil=(xi(0,0,0)+1.d0)/2.d0
452 etl=(et(0,0,0)+1.d0)/2.d0
453 if(xil+etl.gt.1.d0)
then #define max(a, b)
Definition: cascade.c:32
#define min(a, b)
Definition: cascade.c:31
static double * dist
Definition: radflowload.c:42
subroutine dsort(dx, iy, n, kflag)
Definition: dsort.f:6
subroutine distattach_3d(xig, etg, zeg, pneigh, pnode, a, p, ratio, nterms)
Definition: distattach_3d.f:21