35 2 NALE ,IPARG ,NC ,WB ,
36 3 IAD_ELEM,FR_ELEM,FR_NBCC ,SIZEN ,ADDCNE,
37 4 PROCNE ,FSKY ,FSKYV ,IADS )
54#include "implicit_f.inc"
67#include "tabsiz_c.inc"
76 INTEGER NALE(NUMNOD), IPARG(NPARG,NGROUP), NC(11,*), ADDCNE(*), PROCNE(*),
77 . IAD_ELEM(2,*), FR_ELEM(*), FR_NBCC(2,*), IADS(8,*),SIZEN
78 my_real X(3,SX/3), D(3,SD/3), V(3,SV/3), W(3,SW/3), WA(3,*), WB(3,*),
79 . (8,LSKY), FSKYV(LSKY,8)
83 INTEGER ICT(2,28), J1(MVSIZ), J2(MVSIZ), I, NG, NEL, NFT, ITY, MQE, ITR,
84 . NTR, N, NNC, NCT, K, II, SIZE, LENR, LENS
87 . dx(mvsiz) ,dy(mvsiz) , dz(mvsiz),
88 . xx(mvsiz) ,xy(mvsiz) , xz(mvsiz),
89 . dl1(mvsiz) ,ddx(mvsiz), ddy(mvsiz), ddz(mvsiz),
90 . dl(mvsiz) ,xl(mvsiz) , ddl(mvsiz),
91 . beta, dlm, dlmin, gam1, wbtmp(3,sizen)
100 DATA ict/1,2,2,3,3,4,4,1,
112 gam1=half*(
ale%GRID%GAMMA-one)
116 beta=six*(one + two*
ale%GRID%VGY)
120 IF (iparit /= 0)
THEN
122 IF(iabs(nale(i)) == 1)
THEN
131 IF(iabs(nale(i)) == 1)
THEN
145 IF(ivector == 0)
THEN
147 IF(iabs(nale(n)) == 1)
THEN
149 nnc = addcne(n+1)-addcne
150 DO k = nct+1, nct+nnc
162 IF(iabs(nale(n)) == 1)
THEN
164 nnc = addcne(n+1)-addcne(n)
165 DO k = nct+1, nct+nnc
186 IF (ity == 1 .AND. mqe == 1)
THEN
189 j1(i)=nc(ict(1,itr)+1,nft+i)
190 j2(i)=nc(ict(2,itr)+1,nft+i)
191 ddx(i)=(w(1,j2(i))-w(1,j1(i)))*dt2
192 ddy(i)=(w(2,j2(i))-w(2,j1
193 ddz(i)=(w(3,j2(i))-w(3,j1(i)))*dt2
194 dx(i)=d(1,j2(i))-d(1,j1(i))
195 dy(i)=d(2,j2(i))-d(2,j1(i))
196 dz(i)=d(3,j2(i))-d(3,j1(i))
197 xx(i)=x(1,j2(i))-x(1,j1(i))
198 xy(i)=x(2,j2(i))-x(2,j1(i))
199 xz(i)=x(3,j2(i))-x(3,j1(i))
206 xl(i)=sqrt(xx(i)**2+xy(i)**2+xz(i)**2)
207 dl(i)=(xx(i)*dx(i)+xy(i)*dy(i)+xz(i)*dz(i))/xl(i)
208 ddl(i)=(xx(i)*ddx(i)+xy(i)*ddy(i)+xz(i)*ddz(i))/xl(i)
209 dlm=
min(dlm,dl(i)/xl(i))
210 dl1(i)=
ale%GRID%GAMMA+gam1*
min(dl(i)/xl(i),zero)
211 dl(i) = fac(itr)/xl(i) /
ale%GRID%ALPHA/
ale%GRID%ALPHA *ddl(i)*dl1(i)
212 ddl(i)= fac(itr)/xl(i) *
ale%GRID%VGX/
ale%GRID%ALPHA*ddl(i)
218 IF(iabs(nale(j1(i))) == 1)
THEN
219 wbtmp(1,j1(i))=wbtmp(1,j1(i))+dl(i)*xx(i)
220 wbtmp(2,j1(i))=wbtmp(2,j1(i))+dl(i)*xy(i)
221 wbtmp(3,j1(i))=wbtmp(3,j1(i))+dl(i)*xz(i)
222 wa(1,j1(i))=wa(1,j1(i))+ddl(i)*xx(i)
223 wa(2,j1(i))=wa(2,j1(i))+ddl(i)*xy(i)
224 wa(3,j1(i))=wa(3,j1(i))+ddl(i)*xz(i)
226 IF(iabs(nale(j2(i))) == 1)
THEN
227 wbtmp(1,j2(i))=wbtmp(1,j2(i))-dl(i)*xx(i)
228 wbtmp(2,j2(i))=wbtmp(2,j2(i))-dl(i)*xy(i)
229 wbtmp(3,j2(i))=wbtmp(3,j2(i))-dl(i)*xz(i)
230 wa(1,j2(i))=wa(1,j2(i))-ddl(i)*xx(i)
231 wa(2,j2(i))=wa(2,j2(i))-ddl(i)*xy(i)
232 wa(3,j2(i))=wa(3,j2(i))-ddl(i)*xz(i)
237 IF(ivector == 0)
THEN
240 IF(iabs(nale(j1(i))) == 1)
THEN
241 k = iads(ict(1,itr),ii)
243 fsky(1,k)=fsky(1,k)+dl(i)*xx(i)
244 fsky(2,k)=fsky(2,k)+dl(i)*xy(i)
245 fsky(3,k)=fsky(3,k)+dl(i)*xz(i)
247 fsky(4,k)=fsky(4,k)+ddl(i)*xx(i)
248 fsky(5,k)=fsky(5,k)+ddl(i)*xy(i
249 fsky(6,k)=fsky(6,k)+ddl(i)*xz(i)
251 IF(iabs(nale(j2(i))) == 1)
THEN
252 k = iads(ict(2,itr),ii)
254 fsky(1,k)=fsky(1,k)-dl(i)*xx(i)
255 fsky(2,k)=fsky(2,k)-dl(i)*xy(i)
256 fsky(3,k)=fsky(3,k)-dl(i)*xz(i)
259 fsky(5,k)=fsky(5,k)-ddl(i)*xy(i)
260 fsky(6,k)=fsky(6,k)-ddl(i)*xz(i)
264#include "vectorize.inc"
267 IF(iabs(nale(j1(i))) == 1)
THEN
268 k = iads(ict(1,itr),ii)
270 fskyv(k,1)=fskyv(k,1)+dl(i)*xx(i)
271 fskyv(k,2)=fskyv(k,2)+dl(i)*xy
272 fskyv(k,3)=fskyv(k,3)+dl(i)*xz(i)
274 fskyv(k,4)=fskyv(k,4)+ddl(i)*xx(i)
275 fskyv(k,5)=fskyv(k,5)+ddl(i)*xy(i)
276 fskyv(k,6)=fskyv(k,6)+ddl(i)*xz(i)
278 IF(iabs(nale(j2(i))) == 1)
THEN
279 k = iads(ict(2,itr),ii)
281 fskyv(k,1)=fskyv(k,1)-dl(i)*xx(i)
282 fskyv(k,2)=fskyv(k,2)-dl(i)*xy(i)
283 fskyv(k,3)=fskyv(k,3)-dl(i)*xz(i)
285 fskyv(k,4)=fskyv(k,4)-ddl(i)*xx(i)
286 fskyv(k,5)=fskyv(k,5)-ddl(i)*xy(i)
287 fskyv(k,6)=fskyv(k,6)-ddl(i)*xz
303 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
304 CALL spmd_exalew(wa,wbtmp,iad_elem,fr_elem,nale,
SIZE,lenr)
307 IF(iabs(nale(i)) == 1)
THEN
308 wb(1,i)=wb(1,i)+wbtmp(1,i)
309 wb(2,i)=wb(2,i)+wbtmp(2,i)
310 wb(3,i)=wb(3,i)+wbtmp(3,i)
316 lens = fr_nbcc(1,nspmd+1)
317 lenr = fr_nbcc(2,nspmd+1)
319 1 fsky ,fskyv ,iad_elem,fr_elem,nale,
320 2 addcne,procne,fr_nbcc ,
SIZE ,lenr,
323 IF(ivector == 1)
THEN
325 IF(iabs(nale(n)) == 1)
THEN
327 nnc = addcne(n+1)-addcne(n)
328 DO k = nct+1, nct+nnc
329 wb(1,n) = wb(1,n) + fskyv(k,1)
330 wb(2,n) = wb(2,n) + fskyv(k,2)
331 wb(3,n) = wb(3,n) + fskyv(k,3)
332 wa(1,n) = wa(1,n) + fskyv(k,4)
333 wa(2,n) = wa(2,n) + fskyv(k,5)
334 wa(3,n) = wa(3,n) + fskyv(k,6)
348 IF(iabs(nale(n)) == 1)
THEN
350 nnc = addcne(n+1)-addcne(n)
351 DO k = nct+1, nct+nnc
352 wb(1,n) = wb(1,n) + fsky(1,k)
353 wb(2,n) = wb(2,n) + fsky(2,k)
354 wb(3,n) = wb(3,n) + fsky(3,k)
355 wa(1,n) = wa(1,n) + fsky(4,k)
356 wa(2,n) = wa(2,n) + fsky(5,k)
357 wa(3,n) = wa(3,n) + fsky(6,k)
372 IF(iabs(nale(i)) == 1)
THEN
373 w(1,i)= w(1,i)+(wb(1,i)*dt2+wa(1,i))/beta
374 w(2,i)= w(2,i)+(wb(2,i)*dt2+wa(2,i))/beta
375 w(3,i)= w(3,i)+(wb(3,i)*dt2+wa(3,i))/beta
376 ELSEIF(nale(i) == 0)
THEN
380 ELSEIF(iabs(nale(i)) == 2)
THEN