35 2 NALE ,IPARG ,NC ,WB ,
36 3 IAD_ELEM,FR_ELEM,FR_NBCC ,SIZEN ,ADDCNE,
37 4 PROCNE ,FSKY ,FSKYV ,IADX ,WMA ,
55#include "implicit_f.inc"
68#include "tabsiz_c.inc"
77 INTEGER NALE(), IPARG(NPARG,NGROUP), NC(NIX,*), ADDCNE(*), PROCNE(*),
78 . IAD_ELEM(2,*), FR_ELEM(*), FR_NBCC(2,*), IADX(NIADX,*) ,
80 my_real X(3,SX/3), D(3,SD/3), V(3,SV/3), W(3,SW/3), WA(
86 . ICT(2,12), J1(MVSIZ), J2(MVSIZ), I , NG, NEL, NFT, , MQE , ITR ,
87 . NTR , N , NNC , NCT , K , II , ICT4(2,6), ICT8(2,12) ,ICT2(2,4),
88 . ISOLNOD , KK , SIZE , LENS, LENR
90 . dx(mvsiz) , dy(mvsiz) , dz(mvsiz) , xx(mvsiz) , xy(mvsiz) , xz(mvsiz) ,
91 . ddx(mvsiz), ddy(mvsiz), ddz(mvsiz) , dl(mvsiz) , ddl(mvsiz),
92 . gam1 , dlf , ddlf , xm(12) ,
93 . ym(12) , zm(12) , vx(mvsiz,3),vy(mvsiz,3),vz(mvsiz,3),vv ,
94 . x13 , y13 , z13 ,x24 ,y24 ,z24 ,dt0x ,
95 . dlf0 ,wbtmp(3,sizen)
97 DATA ict8/1,2,4,3,8,7,5,6,
100 DATA ict4/1,3,3,6,6,1,1,5,3,5,6,5/
101 DATA ict2/1,2,4,3,1,4,2,3/
105 IF(
ale%GRID%ALPHA < zero)
THEN
107 IF(iabs(nale(i)) == 1)
THEN
114 ale%GRID%ALPHA=-
ale%GRID%ALPHA
117 dt0x=dt2/(-
ale%GRID%VGX+sqrt(
ale%GRID%VGX**2+one))/
ale%GRID%ALPHA
118 IF(tt == zero)
ale%GRID%VGZ=dt0x
119 ale%GRID%VGZ=
max(dt0x,(
ale%GRID%VGZ+half*dt0x)/three_half)
120 IF(
ale%GRID%VGY0 == zero)
THEN
121 ale%GRID%VGY0=
ale%GRID%VGY
122 ale%GRID%VGZ0=
ale%GRID%VGZ
125 gam1=
ale%GRID%GAMMA-one
130 IF (iparit /= 0)
THEN
131#include "vectorize.inc"
133 IF(iabs(nale(i)) == 1)
THEN
141#include "vectorize.inc"
143 IF(iabs(nale(i)) == 1)
THEN
158 IF(ivector == 0)
THEN
160 IF(iabs(nale(n)) == 1)
THEN
162 nnc = addcne(n+1)-addcne(n)
163 DO k = nct+1, nct+nnc
175 IF(iabs(nale(n)) == 1)
THEN
177 nnc = addcne(n+1)-addcne(n)
178 DO k = nct+1, nct+nnc
197 IF ((ity == 1 .OR. ity == 2) .AND. mqe == 1)
THEN
204 ict(1,itr)=ict2(1,itr)
205 ict(2,itr)=ict2(2,itr)
209 j1(i)=nc(ict(1,itr)+1,nft+i)
210 j2(i)=nc(ict(2,itr)+1,nft+i)
211 xm(itr)=x(1,j1(i))+x(1,j2(i))
212 ym(itr)=x(2,j1(i))+x(2,j2(i))
213 zm(itr)=x(3,j1(i))+x(3,j2(i))
216 vz(i,1)=-(ym(2)-ym(1))
217 vv=sqrt(vy(i,1)**2+vz(i,1)**2)
222 vz(i,2)=-(ym(4)-ym(3))
223 vv=sqrt(vy(i,2)**2+vz(i,2)**2)
228 ELSEIF(isolnod == 4)
THEN
231 ict(1,itr)=ict4(1,itr)
232 ict(2,itr)=ict4(2,itr)
237 ict(1,itr)=ict8(1,itr)
238 ict(2,itr)=ict8(2,itr)
243 j1(i)=nc(ict(1,itr)+1,nft+i)
244 j2(i)=nc(ict(2,itr)+1,nft+i)
245 xm(itr)=x(1,j1(i))+x(1,j2(i))
246 ym(itr)=x(2,j1(i))+x(2,j2(i))
247 zm(itr)=x(3,j1(i))+x(3,j2(i))
251 x13=xm(kk+3)-xm(kk+1)
252 y13=ym(kk+3)-ym(kk+1)
253 z13=zm(kk+3)-zm(kk+1)
254 x24=xm(kk+4)-xm(kk+2)
255 y24=ym(kk+4)-ym(kk+2)
256 z24=zm(kk+4)-zm(kk+2)
257 vx(i,k)=y13*z24-z13*y24
258 vy(i,k)=z13*x24-x13*z24
259 vz(i,k)=x13*y24-y13*x24
260 vv=sqrt(vx(i,k)**2+vy(i,k)**2+vz(i,k)**2)
268 IF(ity == 1)kk=(itr+3)/4
269 IF(ity == 2)kk=(itr+1)/2
272 j1(i)=nc(ict(1,itr)+1,nft+i)
273 j2(i)=nc(ict(2,itr)+1,nft
275 ddx(i)=(w(1,j2(i))-w(1,j1(i)))*dt2
276 ddy(i)=(w(2,j2(i))-w(2,j1(i)))*dt2
277 ddz(i)=(w(3,j2(i))-w(3,j1(i)))*dt2
278 dx(i)=d(1,j2(i))-d(1,j1(i))
279 dy(i)=d(2,j2(i))-d(2,j1(i))
280 dz(i)=d(3,j2(i))-d(3,j1(i))
283 xz(i)=x(3,j2(i))-x(3,j1(i))
285 ddlf=vx(i,kk)*ddx(i)+vy(i,kk)*ddy(i)+vz(i,kk)*ddz(i)
286 dlf0=abs(vx(i,kk)*xx(i)+vy(i,kk)*xy(i)+vz(i,kk)*xz(i))
287 dlf=(dlf0-
ale%GRID%VGY)/
ale%GRID%VGY
289 dlf0=dlf0-0.2*
ale%GRID%VGY
291 dlf=
ale%GRID%GAMMA+gam1*dlf*dlf*dlf
293 dx(i)=dt2*dlf0*dlf/
ale%GRID%VGZ/
ale%GRID%VGZ
294 ddl(i)=
ale%GRID%VGX/
ale%GRID%VGZ
295 IF(ddlf > 0.)dlf=
ale%GRID%GAMMA
296 dl(i) = 1. /
ale%GRID%VGZ/
ale%GRID%VGZ *dlf
306 IF(nale(j1(i)) /= 0)
THEN
307 wbtmp(1,j1(i))=wbtmp(1,j1(i))+ddx(i)*dl(i)
308 wbtmp(2,j1(i))=wbtmp(2,j1(i))+ddy(i)*dl(i)
309 wbtmp(3,j1(i))=wbtmp(3,j1(i))+ddz(i)*dl(i)
310 wa(1,j1(i))=wa(1,j1(i))+ddx(i)*ddl(i)
311 wa(2,j1(i))=wa(2,j1(i))+ddy(i)*ddl(i)
312 wa(3,j1(i))=wa(3,j1(i))+ddz(i)*ddl(i)
315 IF(nale(j2(i)) /= 0)
THEN
316 wbtmp(1,j2(i))=wbtmp(1,j2(i)
317 wbtmp(2,j2(i))=wbtmp(2,j2(i))-ddy(i)*dl(i)
318 wbtmp(3,j2(i))=wbtmp(3,j2(i))-ddz(i)*dl(i)
319 wa(1,j2(i))=wa(1,j2(i))-ddx(i)*ddl(i)
320 wa(2,j2(i))=wa(2,j2(i))-ddy(i)*ddl(i)
321 wa(3,j2(i))=wa(3,j2(i))-ddz(i)*ddl(i)
328 IF(ivector == 0)
THEN
331 IF(nale(j1(i)) /= 0)
THEN
332 k = iadx(ict(1,itr),ii)
334 fsky(1,k)=fsky(1,k)+dl(i)*ddx(i)
335 fsky(2,k)=fsky(2,k)+dl(i)*ddy(i)
336 fsky(3,k)=fsky(3,k)+dl(i)*ddz(i)
338 fsky(4,k)=fsky(4,k)+ddl(i)*ddx(i)
339 fsky(5,k)=fsky(5,k)+ddl(i)*ddy(i)
340 fsky(6,k)=fsky(6,k)+ddl(i)*ddz(i)
343 IF(nale(j2(i)) /= 0)
THEN
344 k = iadx(ict(2,itr),ii)
346 fsky(1,k)=fsky(1,k)-dl(i)*ddx(i)
347 fsky(2,k)=fsky(2,k)-dl(i)*ddy(i)
348 fsky(3,k)=fsky(3,k)-dl(i)*ddz(i)
350 fsky(4,k)=fsky(4,k)-ddl(i)*ddx(i)
351 fsky(5,k)=fsky(5,k)-ddl(i)*ddy(i)
352 fsky(6,k)=fsky(6,k)-ddl(i)*ddz(i)
356#include "vectorize.inc"
359 IF(nale(j1(i)) /= 0)
THEN
360 k = iadx(ict(1,itr),ii)
362 fskyv(k,1)=fskyv(k,1)+dl(i)*ddx(i)
363 fskyv(k,2)=fskyv(k,2)+dl(i)*ddy(i)
364 fskyv(k,3)=fskyv(k,3)+dl(i)*ddz(i)
366 fskyv(k,4)=fskyv(k,4)+ddl(i)*ddx(i)
367 fskyv(k,5)=fskyv(k,5)+ddl(i)*ddy(i)
368 fskyv(k,6)=fskyv(k,6)+ddl(i)*ddz(i)
371 IF(nale(j2(i)) /= 0)
THEN
372 k = iadx(ict(2,itr),ii)
374 fskyv(k,1)=fskyv(k,1)-dl(i)*ddx(i)
375 fskyv(k,2)=fskyv(k,2)-dl(i)*ddy(i)
376 fskyv(k,3)=fskyv(k,3)-dl(i)*ddz(i)
378 fskyv(k,4)=fskyv(k,4)-ddl(i)*ddx(i)
379 fskyv(k,5)=fskyv(k,5)-ddl(i)*ddy(i)
380 fskyv(k,6)=fskyv(k,6)-ddl(i)*ddz(i)
396 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
397 CALL spmd_exalew(wa,wbtmp,iad_elem,fr_elem,nale,
SIZE,lenr)
400 IF(nale(i) /= 0)
THEN
401 wb(1,i)=wb(1,i)+wbtmp(1,i)
402 wb(2,i)=wb(2,i)+wbtmp(2,i)
403 wb(3,i)=wb(3,i)+wbtmp(3,i)
409 lens = fr_nbcc(1,nspmd+1)
410 lenr = fr_nbcc(2,nspmd+1)
412 1 fsky ,fskyv ,iad_elem,fr_elem,nale,
413 2 addcne,procne,fr_nbcc ,
SIZE ,lenr,
417 IF(ivector == 1)
THEN
421 nnc = addcne(n+1)-addcne(n)
422 DO k = nct+1, nct+nnc
423 wb(1,n) = wb(1,n) + fskyv(k,1)
424 wb(2,n) = wb(2,n) + fskyv(k,2)
425 wb(3,n) = wb(3,n) + fskyv(k,3)
426 wa(1,n) = wa(1,n) + fskyv(k,4)
428 wa(3,n) = wa(3,n) + fskyv(k,6)
441 IF(nale(n) /= 0)
THEN
443 nnc = addcne(n+1)-addcne(n)
444 DO k = nct+1, nct+nnc
445 wb(1,n) = wb(1,n) + fsky(1,k)
446 wb(2,n) = wb(2,n) + fsky(2,k)
447 wb(3,n) = wb(3,n) + fsky(3,k)
448 wa(1,n) = wa(1,n) + fsky(4,k)
449 wa(2,n) = wa(2,n) + fsky(5,k)
450 wa(3,n) = wa(3,n) + fsky(6,k)
465 IF(iabs(nale(i)) == 1)
THEN
466 w(1,i)= w(1,i)+(wb(1,i)*dt2+wa(1,i))/wma(i)
467 w(2,i)= w(2,i)+(wb(2,i)*dt2+wa(2,i))/wma(i)
468 w(3,i)= w(3,i)+(wb(3,i)*dt2+wa(3,i))/wma(i)
469 ELSEIF(nale(i) == 0)
THEN
473 ELSEIF(iabs(nale(i)) == 2)
THEN