40
41
42
44
45
46
47#include "implicit_f.inc"
48#include "comlock.inc"
49
50
51
52#include "vect01_c.inc"
53#include "com06_c.inc"
54#include "com08_c.inc"
55#include "sphcom.inc"
56#include "param_c.inc"
57#include "scr02_c.inc"
58#include "scr17_c.inc"
59#include "task_c.inc"
60
61
62
63 INTEGER KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),
64 . IPART(LIPART1,*) ,IPARTSP(*), NPC(*), IPARG(NPARG,*),
65 . NELTST,ITYPTST,ITAB(*) ,ISPCOND(NISPCOND,*),
66 . ISPSYM(NSPCOND,*), WASPACT(*)
68 . x(3,*) ,v(3,*) ,ms(*) ,
69 . pm(npropm,*), geo(npropg,*),
70 . bufmat(*) ,bufgeo(*) ,pld(*) ,fsav(nthvki,*) ,
71 . spbuf(nspbuf,*) ,partsav(npsav,*) ,dt2t ,
72 . xframe(nxframe,*) ,xspsym(3,*) ,vspsym(3,*), wa(kwasph,*),
73 . wasigsm(6,*), wacomp(16,*), wsmcomp(6,*), war(10,*), stab(7,*)
74 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
75
76
77
78 INTEGER N, INOD, JNOD, J, NVOIS, M, IPRT, IPROP, I,
79 . NVOISS,NC,SM,JS,NN,KS,NR
81 . xi,yi,zi,di,rhoi,xj,yj,zj,dj,rhoj,
82 . sxx,sxy,sxz,syy,syz,szz,
83 . txx,txy,txz,tyy,tyz,tzz,
84 . ax,ay,az,bx,by,bz,fx,fy,fz,
85 . wght,wgrad(3),
86 . dij,mm,
87 . vxi,vyi,vzi,vxj,vyj,vzj,muij,muij2,pij,ssp,
88 . fact,qa,qb,
89 . divvi,divvj,rotvi,rotvj,fi,fj,
90 . fvx,fvy,fvz,wvis,
91 . stij,sfac,dldt,l,cij,dzeta,wnorm,
92 . vi,vj,vij,
93 . ssp2i,ssp2j,stii,
94 . alphai,alphaxi,alphayi,alphazi,
95 . betaxxi,betayxi,betazxi,
96 . betaxyi,betayyi,betazyi,
97 . betaxzi,betayzi,betazzi,
98 . alphaj,alphaxj,alphayj,alphazj,
99 . betaxj,betayj,betazj,
100 . betaxxj,betayxj,betazxj,
101 . betaxyj,betayyj,betazyj,
102 . betaxzj,betayzj,betazzj,
103 . wgrdx,wgrdy,wgrdz,wgrd(3),drhojdr,drhoidr,
104 . voli,volj,dxij,nxij,
105 . cx,cy,cz,dx,dy,dz,tx,ty,tz,wfextt, ww, wi, wr
106
107 wfextt=zero
108 DO 10 i=lft,llt
109 n =nft+i
110 IF(kxsp(2,n)<=0.AND.isph2sol==0)GOTO 10
111 IF(kxsp(2,n)==0.AND.isph2sol/=0)GOTO 10
112 inod =kxsp(3,n)
113 xi=x(1,inod)
114 yi=x(2,inod)
115 zi=x(3,inod)
116 vxi=v(1,inod)
117 vyi=v(2,inod)
118 vzi=v(3,inod)
119 di =spbuf(1,n)
120 rhoi =spbuf(2,n)
121
122 sxx=wa(1,n)
123 syy=wa(2,n)
124 szz=wa(3,n)
125 sxy=wa(4,n)
126 syz=wa(5,n)
127 sxz=wa(6,n)
128 iprt =ipartsp(n)
129 iprop=ipart(2,iprt)
130 qa = geo(14,iprop)
131 qb = geo(15,iprop)
132
133
134 divvi=abs(wa(13,n))
135 rotvi=wa(14,n)
136 fi =divvi/
max(em20,divvi+rotvi)
137
138 alphai=wacomp(1,n)
139
140
141
142 alphaxi=wacomp( 5,n)
143 alphayi=wacomp( 6,n)
144 alphazi=wacomp( 7,n)
145 betaxxi=wacomp( 8,n)
146 betayxi=wacomp( 9,n)
147 betazxi=wacomp(10,n)
148 betaxyi=wacomp(11,n)
149 betayyi=wacomp(12,n)
150 betazyi=wacomp(13,n)
151 betaxzi=wacomp(14,n)
152 betayzi=wacomp(15,n)
153 betazzi=wacomp(16,n)
154
155
156
157 nvois=kxsp(4,n)
158 DO j=1,nvois
159 jnod=ixsp(j,n)
160 IF(jnod>0)THEN
161 m=nod2sp(jnod)
162
163
164 IF(kxsp(2,n)<=0.AND.kxsp(2,m)<=0)cycle
165
166 xj=x(1,jnod)
167 yj=x(2,jnod)
168 zj=x(3,jnod)
169 vxj=v(1,jnod)
170 vyj=v(2,jnod)
171 vzj=v(3,jnod)
172 dj =spbuf(1,m)
173 dij=half*(di+dj)
174 rhoj =spbuf(2,m)
175 txx=wa(1,m)
176 tyy=wa(2,m)
177 tzz=wa(3,m)
178 txy=wa(4,m)
179 tyz=wa(5,m)
180 txz=wa(6,m)
181 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
182 wgrdx=wgrad(1)
183 wgrdy=wgrad(2)
184 wgrdz=wgrad(3)
185 wgrad(1)=wgrdx*alphai+wght*alphaxi
186 . +wgrdx*betaxxi+wgrdy*betaxyi+wgrdz*betaxzi
187 wgrad(2)=wgrdy*alphai+wght*alphayi
188 . +wgrdx*betayxi+wgrdy*betayyi+wgrdz*betayzi
189 wgrad(3)=wgrdz*alphai+wght*alphazi
190 . +wgrdx*betazxi+wgrdy*betazyi+wgrdz*betazzi
191
192
193
194
195
196
197
198
199
200
201
202
203
204 alphaj=wacomp(1,m)
205
206
207
208 alphaxj=wacomp( 5,m)
209 alphayj=wacomp( 6,m)
210 alphazj=wacomp( 7,m)
211 betaxxj=wacomp( 8,m)
212 betayxj=wacomp( 9,m)
213 betazxj=wacomp(10,m)
214 betaxyj=wacomp(11,m)
215 betayyj=wacomp(12,m)
216 betazyj=wacomp(13,m)
217 betaxzj=wacomp(14,m)
218 betayzj=wacomp(15,m)
219 betazzj=wacomp(16,m)
220
221 wgrd(1)=-wgrdx*alphaj+wght*alphaxj
222 . -wgrdx*betaxxj-wgrdy*betaxyj-wgrdz*betaxzj
223 wgrd(2)=-wgrdy*alphaj+wght*alphayj
224 . -wgrdx*betayxj-wgrdy*betayyj-wgrdz*betayzj
225 wgrd(3)=-wgrdz*alphaj+wght*alphazj
226 . -wgrdx*betazxj-wgrdy*betazyj-wgrdz*betazzj
227
228
229
230
231
232
233
234
235
236
237
238
239
240 ax=sxx*wgrad(1)+sxy*wgrad(2)+sxz*wgrad(3)
241 ay=sxy*wgrad(1)+syy*wgrad(2)+syz*wgrad(3)
242 az=sxz*wgrad(1)+syz*wgrad(2)+szz*wgrad(3)
243
244
245
246 bx=-(txx*wgrd(1)+txy*wgrd(2)+txz*wgrd(3))
247 by=-(txy*wgrd(1)+tyy*wgrd(2)+tyz*wgrd(3))
248 bz=-(txz*wgrd(1)+tyz*wgrd(2)+tzz*wgrd(3))
249 mm=spbuf(12,n)*spbuf(12,m)
250
251 vi =spbuf(12,n)/
max(em20,rhoi)
252 vj =spbuf(12,m)/
max(em20,rhoj)
253 vij=vi*vj
254 fx=vij*(ax+bx)
255 fy=vij*(ay+by)
256 fz=vij*(az+bz)
257
258 wi=zero
259 IF(stab(7,n)/=zero.AND.stab(7,m)/=zero)THEN
260 cx=stab(1,n)*wgrad(1)+stab(4,n)*wgrad(2)+stab(6,n)*wgrad(3)
261 cy=stab(4,n)*wgrad(1)+stab(2,n)*wgrad(2)+stab(5,n)*wgrad(3)
262 cz=stab(6,n)*wgrad(1)+stab(5,n)*wgrad(2)+stab(3,n)*wgrad(3)
263 dx=-(stab(1,m)*wgrd(1)+stab(4,m)*wgrd(2)+stab(6,m)*wgrd(3))
264 dy=-(stab(4,m)*wgrd(1)+stab(2,m)*wgrd(2)+stab(5,m)*wgrd(3))
265 dz=-(stab(6,m)*wgrd(1)+stab(5,m)*wgrd(2)+stab(3,m)*wgrd(3))
266
267 ww=wght*dij*dij*dij
268 wr=half*(stab(7,n)+stab(7,m))
269 wi=ww*ww*ww*ww*wr
270 tx=vij*wi*(cx+dx)
271 ty=vij*wi*(cy+dy)
272 tz=vij*wi*(cz+dz)
273 fx=fx+tx
274 fy=fy+ty
275 fz=fz+tz
276 wfextt=wfextt+(tx*v(1,inod)+ty*v(2,inod)+tz*v(3,inod))*dt1
277 END IF
278
279
280 dxij=(vxi-vxj)*(xi-xj)
281 . +(vyi-vyj)*(yi-yj)
282 . +(vzi-vzj)*(zi-zj)
283 nxij=(xi-xj)*(xi-xj)
284 . +(yi-yj)*(yi-yj)
285 . +(zi-zj)*(zi-zj)
286 muij=dij*dxij/(nxij+em02*dij*dij)
287 divvj=abs(wa(13,m))
288 rotvj=wa(14,m)
289 fj =divvj/
max(em20,divvj+rotvj)
291 muij=muij*(fi+fj)*half
292 ssp=(wa(8,n)+wa(8,m))*half
293 muij2=muij*muij
294 pij =(qa*muij2-qb*ssp*muij)*two/
max(em20,rhoi+rhoj)
295 fact=mm*pij
296
297
298 wgrdx=(wgrad(1)-wgrd(1))*half
299 wgrdy=(wgrad(2)-wgrd(2))*half
300 wgrdz=(wgrad(3)-wgrd(3))*half
301 fvx=-fact*wgrdx
302 fvy=-fact*wgrdy
303 fvz=-fact*wgrdz
304
305 IF((nodadt/=0).OR.(i7kglo/=0))THEN
306
307
308 dldt=abs(dxij)
309 l=sqrt(nxij)
310 dldt=
max(em20,dldt/
max(em20,l))
311
312 volj=spbuf(12,m)/
max(em20,rhoj)
313 drhoidr= volj
314 . * (wgrad(1)*wgrad(1)+wgrad(2)*wgrad(2)+wgrad(3)*wgrad(3))
315 ssp2i=wa(9,n)*wa(9,n)
316 stii = volj*spbuf(12,n)*ssp2i*drhoidr
317
318 voli =spbuf(12,n)/
max(em20,rhoi)
319 drhojdr= voli
320 . * (wgrd(1)*wgrd(1)+wgrd(2)*wgrd(2)+wgrd(3)*wgrd(3))
321 ssp2j=wa(9,m)*wa(9,m)
322 stij = voli*spbuf(12,m)*ssp2j*drhojdr
323
324 stij=two*(stii+stij)
325
326
327 wnorm=sqrt(wgrdx*wgrdx+wgrdy*wgrdy+wgrdz*wgrdz)
328 cij =mm*abs(pij)*wnorm/dldt
329 dzeta=cij/
max(em20,sqrt(two*stij*spbuf(12,n)))
330 sfac =sqrt(1.+dzeta*dzeta)-dzeta
331 stij =stij/
max(em20,sfac*sfac)
332 wa(7,n)=wa(7,n)+stij*(one+wi)
333 ENDIF
334 ELSE
335 nn = -jnod
336
337
338 IF(kxsp(2,n)<=0.AND.xsphr(13,nn)<=0)cycle
339 xj=xsphr(3,nn)
340 yj=xsphr(4,nn)
341 zj=xsphr(5,nn)
342 vxj=xsphr(9,nn)
343 vyj=xsphr(10,nn)
344 vzj=xsphr(11,nn)
345 dj =xsphr(2,nn)
346 dij=half*(di+dj)
347 rhoj =xsphr(7,nn)
348 txx=war(1,nn)
349 tyy=war(2,nn)
350 tzz=war(3,nn)
351 txy=war(4,nn)
352 tyz=war(5,nn)
353 txz=war(6,nn)
354 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
355 wgrdx=wgrad(1)
356 wgrdy=wgrad(2)
357 wgrdz=wgrad(3)
358 wgrad(1)=wgrdx*alphai+wght*alphaxi
359 . +wgrdx*betaxxi+wgrdy*betaxyi+wgrdz*betaxzi
360 wgrad(2)=wgrdy*alphai+wght*alphayi
361 . +wgrdx*betayxi+wgrdy*betayyi+wgrdz*betayzi
362 wgrad(3)=wgrdz*alphai+wght*alphazi
363 . +wgrdx*betazxi+wgrdy*betazyi+wgrdz*betazzi
364
365
366
367
368
369
370
371
372
373
374
375
376
377 alphaj=wacompr(1,nn)
378
379
380
381 alphaxj=wacompr( 5,nn)
382 alphayj=wacompr( 6,nn)
383 alphazj=wacompr( 7,nn)
384 betaxxj=wacompr( 8,nn)
385 betayxj=wacompr( 9,nn)
386 betazxj=wacompr(10,nn)
387 betaxyj=wacompr(11,nn)
388 betayyj=wacompr(12,nn)
389 betazyj=wacompr(13,nn)
390 betaxzj=wacompr(14,nn)
391 betayzj=wacompr(15,nn)
392 betazzj=wacompr(16,nn)
393
394 wgrd(1)=-wgrdx*alphaj+wght*alphaxj
395 . -wgrdx*betaxxj-wgrdy*betaxyj-wgrdz*betaxzj
396 wgrd(2)=-wgrdy*alphaj+wght*alphayj
397 . -wgrdx*betayxj-wgrdy*betayyj-wgrdz*betayzj
398 wgrd(3)=-wgrdz*alphaj+wght*alphazj
399 . -wgrdx*betazxj-wgrdy*betazyj-wgrdz*betazzj
400
401
402
403
404
405
406
407
408
409
410
411
412 ax=sxx*wgrad(1)+sxy*wgrad(2)+sxz*wgrad(3)
413 ay=sxy*wgrad(1)+syy*wgrad(2)+syz*wgrad(3)
414 az=sxz*wgrad(1)+syz*wgrad(2)+szz*wgrad(3)
415
416
417
418 bx=-(txx*wgrd(1)+txy*wgrd(2)+txz*wgrd(3))
419 by=-(txy*wgrd(1)+tyy*wgrd(2)+tyz*wgrd(3))
420 bz=-(txz*wgrd(1)+tyz*wgrd(2)+tzz*wgrd(3))
421 mm=spbuf(12,n)*xsphr(8,nn)
422
423 vi =spbuf(12,n)/
max(em20,rhoi)
424 vj =xsphr(8,nn)/
max(em20,rhoj)
425 vij=vi*vj
426 fx=vij*(ax+bx)
427 fy=vij*(ay+by)
428 fz=vij*(az+bz)
429
430 wi=zero
431 IF(stab(7,n)/=zero.AND.stab(7,numsph+nn)/=zero)THEN
432 cx=stab(1,n)*wgrad(1)+stab(4,n)*wgrad(2)+stab(6,n)*wgrad(3)
433 cy=stab(4,n)*wgrad(1)+stab(2,n)*wgrad(2)+stab(5,n)*wgrad(3)
434 cz=stab(6,n)*wgrad(1)+stab(5,n)*wgrad(2)+stab(3,n)*wgrad(3)
435 nr=numsph+nn
436 dx=-(stab(1,nr)*wgrd(1)+stab(4,nr)*wgrd(2)+stab(6,nr)*wgrd(3))
437 dy=-(stab(4,nr)*wgrd(1)+stab(2,nr)*wgrd(2)+stab(5,nr)*wgrd(3))
438 dz=-(stab(6,nr)*wgrd(1)+stab(5,nr)*wgrd(2)+stab(3,nr)*wgrd(3))
439
440 ww=wght*dij*dij*dij
441 wr=half*(stab(7,n)+stab(7,numsph+nn))
442 wi=ww*ww*ww*ww*wr
443 tx=vij*wi*(cx+dx)
444 ty=vij*wi*(cy+dy)
445 tz=vij*wi*(cz+dz)
446 fx=fx+tx
447 fy=fy+ty
448 fz=fz+tz
449 wfextt=wfextt+(tx*v(1,inod)+ty*v(2,inod)+tz*v(3,inod))*dt1
450 END IF
451
452
453 dxij=(vxi-vxj)*(xi-xj)
454 . +(vyi-vyj)*(yi-yj)
455 . +(vzi-vzj)*(zi-zj)
456 nxij=(xi-xj)*(xi-xj)
457 . +(yi-yj)*(yi-yj)
458 . +(zi-zj)*(zi-zj)
459 muij=dij*dxij/(nxij+em02*dij*dij)
460
461 divvj=abs(war(9,nn))
462 rotvj=war(10,nn)
463 fj =divvj/
max(em20,divvj+rotvj)
465 muij=muij*(fi+fj)*half
466
467 ssp=(wa(8,n)+war(7,nn))*half
468 muij2=muij*muij
469 pij =(qa*muij2-qb*ssp*muij)*two/
max(em20,rhoi+rhoj)
470 fact=mm*pij
471
472
473 wgrdx=(wgrad(1)-wgrd(1))*half
474 wgrdy=(wgrad(2)-wgrd(2))*half
475 wgrdz=(wgrad(3)-wgrd(3))*half
476 fvx=-fact*wgrdx
477 fvy=-fact*wgrdy
478 fvz=-fact*wgrdz
479 IF((nodadt/=0).OR.(i7kglo/=0))THEN
480
481
482 dldt=abs(dxij)
483 l=sqrt(nxij)
484 dldt=
max(em20,dldt/
max(em20,l))
485
486 volj=xsphr(8,nn)/
max(em20,rhoj)
487 drhoidr= volj
488 . * (wgrad(1)*wgrad(1)+wgrad(2)*wgrad(2)+wgrad(3)*wgrad(3))
489 ssp2i=wa(9,n)*wa(9,n)
490 stii = volj*spbuf(12,n)*ssp2i*drhoidr
491
492 voli =spbuf(12,n)/
max(em20,rhoi)
493 drhojdr= voli
494 . * (wgrd(1)*wgrd(1)+wgrd(2)*wgrd(2)+wgrd(3)*wgrd(3))
495
496 ssp2j=war(8,nn)*war(8,nn)
497 stij = voli*xsphr(8,nn)*ssp2j*drhojdr
498
499 stij=two*(stii+stij)
500
501
502 wnorm=sqrt(wgrdx*wgrdx+wgrdy*wgrdy+wgrdz*wgrdz)
503 cij =mm*abs(pij)*wnorm/dldt
504 dzeta=cij/
max(em20,sqrt(two*stij*spbuf(12,n)))
505 sfac =sqrt(1.+dzeta*dzeta)-dzeta
506 stij =stij/
max(em20,sfac*sfac)
507 wa(7,n)=wa(7,n)+stij*(one+wi)
508 ENDIF
509 END IF
510
511 fx=fx+fvx
512 fy=fy+fvy
513 fz=fz+fvz
514 wa(10,n)=wa(10,n)+fx
515 wa(11,n)=wa(11,n)+fy
516 wa(12,n)=wa(12,n)+fz
517
518
520 . half*(fvx*(vxi-vxj)+fvy*(vyi-vyj)+fvz*(vzi-vzj)))
521 spbuf(11,n)=spbuf(11,n)+wvis
522 ENDDO
523
524 nvoiss=kxsp(6,n)
525 DO 200 j=kxsp(5,n)+1,kxsp(5,n)+nvoiss
526 js=ixsp(j,n)
527 IF(js>0)THEN
528 sm=js/(nspcond+1)
529
530
531 IF(kxsp(2,n)<=0.AND.kxsp(2,sm)<=0)cycle
532
533 nc=mod(js,nspcond+1)
534 js=ispsym(nc,sm)
535 xj =xspsym(1,js)
536 yj =xspsym(2,js)
537 zj =xspsym(3,js)
538 vxj=vspsym(1,js)
539 vyj=vspsym(2,js)
540 vzj=vspsym(3,js)
541 dj =spbuf(1,sm)
542 dij =half*(di+dj)
543 rhoj=spbuf(2,sm)
544 jnod=kxsp(3,sm)
545
546 txx=wasigsm(1,js)
547 tyy=wasigsm(2,js)
548 tzz=wasigsm(3,js)
549 txy=wasigsm(4,js)
550 tyz=wasigsm(5,js)
551 txz=wasigsm(6,js)
552 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
553 wgrdx=wgrad(1)
554 wgrdy=wgrad(2)
555 wgrdz=wgrad(3)
556 wgrad(1)=wgrdx*alphai+wght*alphaxi
557 . +wgrdx*betaxxi+wgrdy*betaxyi+wgrdz*betaxzi
558 wgrad(2)=wgrdy*alphai+wght*alphayi
559 . +wgrdx*betayxi+wgrdy*betayyi+wgrdz*betayzi
560 wgrad(3)=wgrdz*alphai+wght*alphazi
561 . +wgrdx*betazxi+wgrdy*betazyi+wgrdz*betazzi
562
563
564
565
566
567
568
569
570
571
572
573
574
575 alphaj=wacomp(1,sm)
576
577
578
579 betaxj=wsmcomp(1,js)
580 betayj=wsmcomp(2,js)
581 betazj=wsmcomp(3,js)
582
583
584
585 alphaxj=wsmcomp( 4,js)
586 alphayj=wsmcomp( 5,js)
587 alphazj=wsmcomp( 6,js)
588 betaxxj=wacomp( 8,sm)
589 betayxj=wacomp( 9,sm)
590 betazxj=wacomp(10,sm)
591 betaxyj=wacomp(11,sm)
592 betayyj=wacomp(12,sm)
593 betazyj=wacomp(13,sm)
594 betaxzj=wacomp(14,sm)
595 betayzj=wacomp(15,sm)
596 betazzj=wacomp(16,sm)
597 wgrd(1)=-wgrdx*alphaj+wght*alphaxj
598 . -wgrdx*betaxxj-wgrdy*betaxyj-wgrdz*betaxzj
599 wgrd(2)=-wgrdy*alphaj+wght*alphayj
600 . -wgrdx*betayxj-wgrdy*betayyj-wgrdz*betayzj
601 wgrd(3)=-wgrdz*alphaj+wght*alphazj
602 . -wgrdx*betazxj-wgrdy*betazyj-wgrdz*betazzj
603
604
605
606
607
608
609
610
611
612
613
614 ax=sxx*wgrad(1)+sxy*wgrad(2)+sxz*wgrad(3)
615 ay=sxy*wgrad(1)+syy*wgrad(2)+syz*wgrad(3)
616 az=sxz*wgrad(1)+syz*wgrad(2)+szz*wgrad(3)
617 bx=-(txx*wgrd(1)+txy*wgrd(2)+txz*wgrd(3))
618 by=-(txy*wgrd(1)+tyy*wgrd(2)+tyz*wgrd(3))
619 bz=-(txz*wgrd(1)+tyz*wgrd(2)+tzz*wgrd(3))
620 mm=spbuf(12,n)*spbuf(12,sm)
621
622 vi =spbuf(12,n)/
max(em20,rhoi)
623 vj =spbuf(12,sm)/
max(em20,rhoj)
624 vij=vi*vj
625 fx=vij*(ax+bx)
626 fy=vij*(ay+by)
627 fz=vij*(az+bz)
628 wi=zero
629 IF(stab(7,n)/=zero.AND.stab(7,sm)/=zero)THEN
630 cx=stab(1,n)*wgrad(1)+stab(4,n)*wgrad(2)+stab(6,n)*wgrad(3)
631 cy=stab(4,n)*wgrad(1)+stab(2,n)*wgrad(2)+stab(5,n)*wgrad(3)
632 cz=stab(6,n)*wgrad(1)+stab(5,n)*wgrad(2)+stab(3,n)*wgrad(3)
634 dx=-(stab(1,ks)*wgrd(1)+stab(4,ks)*wgrd(2)+stab(6,ks)*wgrd(3))
635 dy=-(stab(4,ks)*wgrd(1)+stab(2,ks)*wgrd(2)+stab(5,ks)*wgrd(3))
636 dz=-(stab(6,ks)*wgrd(1)+stab(5,ks)*wgrd(2)+stab(3,ks)*wgrd(3))
637
638 ww=wght*dij*dij*dij
639 wr=half*(stab(7,n)+stab(7,sm))
640 wi=ww*ww*ww*ww*wr
641 tx=vij*wi*(cx+dx)
642 ty=vij*wi*(cy+dy)
643 tz=vij*wi*(cz+dz)
644 fx=fx+tx
645 fy=fy+ty
646 fz=fz+tz
647 wfextt=wfextt+(tx*v(1,inod)+ty*v(2,inod)+tz*v(3,inod))*dt1
648 END IF
649
650
651 dxij=(vxi-vxj)*(xi-xj)
652 . +(vyi-vyj)*(yi-yj)
653 . +(vzi-vzj)*(zi-zj)
654 nxij=(xi-xj)*(xi-xj)
655 . +(yi-yj)*(yi-yj)
656 . +(zi-zj)*(zi-zj)
657 muij=dij*dxij/(nxij+em02*dij*dij)
658 divvj=abs(wa(13,sm))
659 rotvj=wa(14,sm)
660 fj=divvj/
max(em20,divvj+rotvj)
662 muij=muij*(fi+fj)*half
663 ssp=(wa(8,n)+wa(8,sm))*half
664 muij2=muij*muij
665 pij =(qa*muij2-qb*ssp*muij)*two/
max(em20,rhoi+rhoj)
666 fact=mm*pij
667
668 wgrdx=(wgrad(1)-wgrd(1))*half
669 wgrdy=(wgrad(2)-wgrd(2))*half
670 wgrdz=(wgrad(3)-wgrd(3))*half
671 fvx=-fact*wgrdx
672 fvy=-fact*wgrdy
673 fvz=-fact*wgrdz
674 IF((nodadt/=0).OR.(i7kglo/=0))THEN
675
676 dldt=abs(dxij)
677 l =sqrt(nxij)
678 dldt=
max(em20,dldt/
max(em20,l))
679
680 volj=spbuf(12,sm)/
max(em20,rhoj)
681 drhoidr= volj
682 . * (wgrad(1)*wgrad(1)+wgrad(2)*wgrad(2)+wgrad(3)*wgrad(3))
683 ssp2i=wa(9,n)*wa(9,n)
684 stii = volj*spbuf(12,n)*ssp2i*drhoidr
685
686 voli =spbuf(12,n)/
max(em20,rhoi)
687 drhojdr= voli
688 . * (wgrd(1)*wgrd(1)+wgrd(2)*wgrd(2)+wgrd(3)*wgrd(3))
689 ssp2j=wa(9,sm)*wa(9,sm)
690 stij = voli*spbuf(12,sm)*ssp2j*drhojdr
691
692 stij=two*(stii+stij)
693
694
695 wnorm=sqrt(wgrdx*wgrdx+wgrdy*wgrdy+wgrdz*wgrdz)
696 cij =mm*abs(pij)*wnorm/dldt
697 dzeta=cij/
max(em20,sqrt(two*stij*spbuf(12,n)))
698 sfac =sqrt(one +dzeta*dzeta)-dzeta
699 stij =stij/
max(em20,sfac*sfac)
700 wa(7,n)=wa(7,n)+stij*(one+wi)
701 ENDIF
702 fx=fx+fvx
703 fy=fy+fvy
704 fz=fz+fvz
705 wa(10,n)=wa(10,n)+fx
706 wa(11,n)=wa(11,n)+fy
707 wa(12,n)=wa(12,n)+fz
708
709
711 . half*(fvx*(vxi-vxj)+fvy*(vyi-vyj)+fvz*(vzi-vzj)))
712 spbuf(11,n)=spbuf(11,n)+wvis
713 ELSE
714 sm=-js/(nspcond+1)
715
716
717 IF(kxsp(2,n)<=0.AND.xsphr(13,sm)<=0)cycle
718 nc=mod(-js,nspcond+1)
720 xj =xspsym(1,js)
721 yj =xspsym(2,js)
722 zj =xspsym(3,js)
723 vxj=vspsym(1,js)
724 vyj=vspsym(2,js)
725 vzj=vspsym(3,js)
726 dj =xsphr(2,sm)
727 dij =half*(di+dj)
728 rhoj=xsphr(7,sm)
729
730 txx=wasigsm(1,js)
731 tyy=wasigsm(2,js)
732 tzz=wasigsm(3,js)
733 txy=wasigsm(4,js)
734 tyz=wasigsm(5,js)
735 txz=wasigsm(6,js)
736 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
737 wgrdx=wgrad(1)
738 wgrdy=wgrad(2)
739 wgrdz=wgrad(3)
740 wgrad(1)=wgrdx*alphai+wght*alphaxi
741 . +wgrdx*betaxxi+wgrdy*betaxyi+wgrdz*betaxzi
742 wgrad(2)=wgrdy*alphai+wght*alphayi
743 . +wgrdx*betayxi+wgrdy*betayyi+wgrdz*betayzi
744 wgrad(3)=wgrdz*alphai+wght*alphazi
745 . +wgrdx*betazxi+wgrdy*betazyi+wgrdz*betazzi
746
747
748
749
750
751
752
753
754
755
756
757
758
759 alphaj=wacompr(1,sm)
760
761
762
763 betaxj=wsmcomp(1,js)
764 betayj=wsmcomp(2,js)
765 betazj=wsmcomp(3,js)
766
767
768
769 alphaxj=wsmcomp( 4,js)
770 alphayj=wsmcomp( 5,js)
771 alphazj=wsmcomp( 6,js)
772 betaxxj=wacompr( 8,sm)
773 betayxj=wacompr( 9,sm)
774 betazxj=wacompr(10,sm)
775 betaxyj=wacompr(11,sm)
776 betayyj=wacompr(12,sm)
777 betazyj=wacompr(13,sm)
778 betaxzj=wacompr(14,sm)
779 betayzj=wacompr(15,sm)
780 betazzj=wacompr(16,sm)
781
782 wgrd(1)=-wgrdx*alphaj+wght*alphaxj
783 . -wgrdx*betaxxj-wgrdy*betaxyj-wgrdz*betaxzj
784 wgrd(2)=-wgrdy*alphaj+wght*alphayj
785 . -wgrdx*betayxj-wgrdy*betayyj-wgrdz*betayzj
786 wgrd(3)=-wgrdz*alphaj+wght*alphazj
787 . -wgrdx*betazxj-wgrdy*betazyj-wgrdz*betazzj
788
789
790
791
792
793
794
795
796
797
798
799 ax=sxx*wgrad(1)+sxy*wgrad(2)+sxz*wgrad(3)
800 ay=sxy*wgrad(1)+syy*wgrad(2)+syz*wgrad(3)
801 az=sxz*wgrad(1)+syz*wgrad(2)+szz*wgrad(3)
802 bx=-(txx*wgrd(1)+txy*wgrd(2)+txz*wgrd(3))
803 by=-(txy*wgrd(1)+tyy*wgrd(2)+tyz*wgrd(3))
804 bz=-(txz*wgrd(1)+tyz*wgrd(2)+tzz*wgrd(3))
805 mm=spbuf(12,n)*xsphr(8,sm)
806
807 vi =spbuf(12,n)/
max(em20,rhoi)
808 vj =xsphr(8,sm)/
max(em20,rhoj)
809 vij=vi*vj
810 fx=vij*(ax+bx)
811 fy=vij*(ay+by)
812 fz=vij*(az+bz)
813 wi=zero
814 IF(stab(7,n)/=zero.AND.stab(7,numsph+sm)/=zero)THEN
815 cx=stab(1,n)*wgrad(1)+stab(4,n)*wgrad(2)+stab(6,n)*wgrad(3)
816 cy=stab(4,n)*wgrad(1)+stab(2,n)*wgrad(2)+stab(5,n)*wgrad(3)
817 cz=stab(6,n)*wgrad(1)+stab(5,n)*wgrad(2)+stab(3,n)*wgrad(3)
819 dx=-(stab(1,ks)*wgrd(1)+stab(4,ks)*wgrd(2)+stab(6,ks)*wgrd(3))
820 dy=-(stab(4,ks)*wgrd(1)+stab(2,ks)*wgrd(2)+stab(5,ks)*wgrd(3))
821 dz=-(stab(6,ks)*wgrd(1)+stab(5,ks)*wgrd(2)+stab(3,ks)*wgrd(3))
822
823 ww=wght*dij*dij*dij
824 wr=half*(stab(7,n)+stab(7,numsph+sm))
825 wi=ww*ww*ww*ww*wr
826 tx=vij*wi*(cx+dx)
827 ty=vij*wi*(cy+dy)
828 tz=vij*wi*(cz+dz)
829 fx=fx+tx
830 fy=fy+ty
831 fz=fz+tz
832 wfextt=wfextt+(tx*v(1,inod)+ty*v(2,inod)+tz*v(3,inod))*dt1
833 END IF
834
835
836 dxij=(vxi-vxj)*(xi-xj)
837 . +(vyi-vyj)*(yi-yj)
838 . +(vzi-vzj)*(zi-zj)
839 nxij=(xi-xj)*(xi-xj)
840 . +(yi-yj)*(yi-yj)
841 . +(zi-zj)*(zi-zj)
842 muij=dij*dxij/(nxij+em02*dij*dij)
843
844 divvj=abs(war(9,sm))
845 rotvj=war(10,sm)
846 fj=divvj/
max(em20,divvj+rotvj)
848 muij=muij*(fi+fj)*half
849
850 ssp=(wa(8,n)+war(7,sm))*half
851 muij2=muij*muij
852 pij =(qa*muij2-qb*ssp*muij)*two/
max(em20,rhoi+rhoj)
853 fact=mm*pij
854
855 wgrdx=(wgrad(1)-wgrd(1))*half
856 wgrdy=(wgrad(2)-wgrd(2))*half
857 wgrdz=(wgrad(3)-wgrd(3))*half
858 fvx=-fact*wgrdx
859 fvy=-fact*wgrdy
860 fvz=-fact*wgrdz
861 IF((nodadt/=0).OR.(i7kglo/=0))THEN
862
863 dldt=abs(dxij)
864 l =sqrt(nxij)
865 dldt=
max(em20,dldt/
max(em20,l))
866
867 volj=xsphr(8,sm)/
max(em20,rhoj)
868 drhoidr= volj
869 . * (wgrad(1)*wgrad(1)+wgrad(2)*wgrad(2)+wgrad(3)*wgrad(3))
870 ssp2i=wa(9,n)*wa(9,n)
871 stii = volj*spbuf(12,n)*ssp2i*drhoidr
872
873 voli =spbuf(12,n)/
max(em20,rhoi)
874 drhojdr= voli
875 . * (wgrd(1)*wgrd(1)+wgrd(2)*wgrd(2)+wgrd(3)*wgrd(3))
876
877 ssp2j=war(8,sm)*war(8,sm)
878 stij = voli*xsphr(8,sm)*ssp2j*drhojdr
879
880 stij=two*(stii+stij)
881
882
883 wnorm=sqrt(wgrdx*wgrdx+wgrdy*wgrdy+wgrdz*wgrdz)
884 cij =mm*abs(pij)*wnorm/dldt
885 dzeta=cij/
max(em20,sqrt(two*stij*spbuf(12,n)))
886 sfac =sqrt(one +dzeta*dzeta)-dzeta
887 stij =stij/
max(em20,sfac*sfac)
888 wa(7,n)=wa(7,n)+stij*(one+wi)
889 ENDIF
890 fx=fx+fvx
891 fy=fy+fvy
892 fz=fz+fvz
893 wa(10,n)=wa(10,n)+fx
894 wa(11,n)=wa(11,n)+fy
895 wa(12,n)=wa(12,n)+fz
896
897
899 . half*(fvx*(vxi-vxj)+fvy*(vyi-vyj)+fvz*(vzi-vzj)))
900 spbuf(11,n)=spbuf(11,n)+wvis
901 END IF
902 200 CONTINUE
903
904 10 CONTINUE
905#include "lockon.inc"
906 wfext=wfext+wfextt
907#include "lockoff.inc"
908
909 RETURN
integer, dimension(:,:), allocatable ispsymr
subroutine weight1(xi, yi, zi, xj, yj, zj, h, w, wgrad)