34 1 X ,V ,MS ,SPBUF ,ITAB ,
35 2 KXSP ,IXSP ,NOD2SP ,ISPSYM ,XSPSYM ,
36 3 VSPSYM ,IPARG ,WACOMP ,ISPCOND ,
37 4 XFRAME ,WSMCOMP ,GEO ,IPART ,IPARTSP ,
38 5 WASPACT ,ITASK ,SPH_IORD1,NUMGEO ,NCYCLE ,
47#include "implicit_f.inc"
58 INTEGER KXSP(NISP,*),IXSP(KVOISPH,*),NOD2SP(*),ITAB(*),
59 . ISPSYM(NSPCOND,*),IPARG(,*),ISPCOND(NISPCOND,*),
60 . IPART(LIPART1,*),IPARTSP(*),WASPACT(*),
62 INTEGER,
INTENT(IN) :: NUMGEO ,NCYCLE,MCHECK
63 INTEGER,
INTENT(INOUT) :: SPH_IORD1
66 . x(3,*) ,v(3,*) ,ms(*) ,spbuf(nspbuf,*) ,
67 . xspsym(3,*) ,vspsym(3,*) ,wacomp(16,*),
68 . xframe(nxframe,*) ,wsmcomp(6,*),
73 INTEGER N,INOD,JNOD,J,NVOIS,M,NN,
74 . NVOISS,SM,JS,NC,IC,IS,
75 . I,IPRT,IGEO,IORDER,NMUN,NZERO,NUN,
76 . MWAMUN(NSPHACT),MWAUN(NSPHACT),MWAZERO(NSPHACT),
79 . xi,yi,zi,di,rhoi,xj,yj,zj,dj,rhoj,dij,
82 . wcompi,wcompxi,wcompyi,wcompzi,
83 . wgradxi,wgradyi,wgradzi,
84 . wgradxxi,wgradxyi,wgradxzi,
85 . wgradyxi,wgradyyi,wgradyzi,
86 . wgradzxi,wgradzyi,wgradzzi,det,
87 . li11,li12,li13,li21,li22,li23,li31,li32,li33,
88 . tcofa11,tcofa12,tcofa13,tcofa21,tcofa22,tcofa23,
89 . tcofa31,tcofa32,tcofa33,l(3,3),il(3,3),
90 . lxi11,lxi12,lxi13,lxi22,lxi23,lxi33,
91 . lyi11,lyi12,lyi13,lyi22,lyi23,lyi33,
92 . lzi11,lzi12,lzi13,lzi22,lzi23,lzi33,
93 . mxi11,mxi12,mxi13,mxi21,mxi22,mxi23,mxi31,mxi32,mxi33,
94 . myi11,myi12,myi13,myi21,myi22,myi23,myi31,myi32,myi33,
95 . mzi11,mzi12,mzi13,mzi21,mzi22,mzi23,mzi31,mzi32,mzi33,
96 . alphai,alphaxi,alphayi,alphazi,alphai2,
97 . betaxi,betayi,betazi,
98 . betaxxi,betayxi,betazxi,
99 . betaxyi,betayyi,betazyi,
100 . betaxzi,betayzi,betazzi,
101 . betax,wgrdx,wgrdy,wgrdz,
102 . ox,oy,oz,ux,uy,uz,vx,vy,vz,wx,wy,wz,
103 . s11,s12,s13,s22,s23,s33,
104 . alphaxj,alphayj,alphazj,
105 . betaxj,betayj,betazj
117 DO i=itask+1,nsphact,nthread
121 iorder=nint(get_u_geo(5,igeo))
125 ELSEIF(iorder== 0)
THEN
128 ELSEIF(iorder== 1)
THEN
135 IF ((ncycle == 0).OR.(mcheck > 0))
THEN
138 igtyp = nint(geo(12,igeo))
140 iorder=nint(get_u_geo(5,igeo))
141 IF (iorder==1) sph_iord1 = 1
182 CALL weight0(xi,yi,zi,xi,yi,zi,di,wght)
183 wcompi =spbuf(12,n)*wght/
max(em20,rhoi)
198 vj=spbuf(12,m)/
max(em20,rhoj)
206 vj=xsphr(8,nn)/
max(em20,rhoj)
209 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
210 wcompi=wcompi+vj*wght
212 wgradyi=wgradyi+vj*wgrad(2)
213 wgradzi=wgradzi+vj*wgrad(3)
218 DO j=kxsp(5,n)+1,kxsp(5,n)+nvoiss
230 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
232 vj=spbuf(12,sm)/
max(em20,rhoj)
235 nc=mod(-js,nspcond+1)
243 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
244 vj=xsphr(8,sm)/
max(em20,rhoj)
246 wcompi=wcompi+vj*wght
247 wgradxi=wgradxi+vj*wgrad(1)
248 wgradyi=wgradyi+vj*wgrad(2)
249 wgradzi=wgradzi+vj*wgrad(3)
253 alphai=one/
max(em20,wcompi)
256 alphai2=alphai*alphai
257 alphaxi=-wgradxi*alphai2
258 alphayi=-wgradyi*alphai2
259 alphazi=-wgradzi*alphai2
292 CALL weight0(xi,yi,zi,xi,yi,zi,di,wght)
293 wcompi =spbuf(12,n)*wght/
max(em20,rhoi)
314 vj=spbuf(12,m)/
max(em20,rhoj)
322 vj=xsphr(8,nn)/
max(em20,rhoj)
325 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
326 wcompi=wcompi+vj*wght
327 wcompxi=wcompxi+vj*wght*(xi-xj)
328 wcompyi=wcompyi+vj*wght*(yi-yj)
329 wcompzi=wcompzi+vj*wght*(zi-zj)
330 wgradxxi=wgradxxi+vj*wgrad(1)*(xi-xj)
331 wgradxyi=wgradxyi+vj*wgrad(1)*(yi-yj)
332 wgradxzi=wgradxzi+vj*wgrad(1)*(zi-zj)
333 wgradyxi=wgradyxi+vj*wgrad(2)*(xi-xj)
334 wgradyyi=wgradyyi+vj*wgrad(2)*(yi-yj)
335 wgradyzi=wgradyzi+vj*wgrad(2)*(zi-zj)
336 wgradzxi=wgradzxi+vj*wgrad(3)*(xi-xj)
337 wgradzyi=wgradzyi+vj*wgrad(3)*(yi-yj)
338 wgradzzi=wgradzzi+vj*wgrad(3)*(zi-zj)
343 DO j=kxsp(5,n)+1,kxsp(5,n)+nvoiss
355 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
357 vj=spbuf(12,sm)/
max(em20,rhoj)
360 nc=mod(-js,nspcond+1)
368 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
369 vj=xsphr(8,sm)/
max(em20,rhoj)
371 wcompi=wcompi+vj*wght
372 wcompxi=wcompxi+vj*wght*(xi-xj)
373 wcompyi=wcompyi+vj*wght*(yi-yj)
374 wcompzi=wcompzi+vj*wght*(zi-zj)
376 wgradxxi=wgradxxi+vj*wgrad(1)*(xi-xj)
377 wgradxyi=wgradxyi+vj*wgrad(1)*(yi-yj)
378 wgradxzi=wgradxzi+vj*wgrad(1)*(zi-zj)
379 wgradyxi=wgradyxi+vj*wgrad(2)*(xi-xj)
380 wgradyyi=wgradyyi+vj*wgrad(2)*(yi-yj)
381 wgradyzi=wgradyzi+vj*wgrad(2)*(zi-zj)
382 wgradzxi=wgradzxi+vj*wgrad(3)*(xi-xj)
383 wgradzyi=wgradzyi+vj*wgrad(3)*(yi-yj)
384 wgradzzi=wgradzzi+vj*wgrad(3)*(zi-zj)
389 wacomp(2,n)=one/sign(
max(em20,abs(wcompxi)),wcompxi)
390 wacomp(3,n)=one/sign(
max(em20,abs(wcompyi)),wcompyi)
391 wacomp(4,n)=one/sign(
max(em20,abs(wcompzi)),wcompzi)
403 tcofa11= li22*li33-li32*li23
404 tcofa21= -li21*li33+li31*li23
405 tcofa31= li21*li32-li31*li22
406 tcofa12= -li12*li33+li32*li13
407 tcofa22= li11*li33-li31*li13
408 tcofa32= -li11*li32+li31*li12
409 tcofa13= li12*li23-li22*li13
410 tcofa23= -li11*li23+li21*li13
411 tcofa33= li11*li22-li21*li12
413 det=li11*tcofa11+li12*tcofa21+li13*tcofa31
416 wacomp( 8,n)= -tcofa11*det
417 wacomp( 9,n)= -tcofa21*det
418 wacomp(10,n)= -tcofa31*det
419 wacomp(11,n)= -tcofa12*det
420 wacomp(12,n)= -tcofa22*det
421 wacomp(13,n)= -tcofa32*det
422 wacomp(14,n)= -tcofa13*det
423 wacomp(15,n)= -tcofa23*det
424 wacomp(16,n)= -tcofa33*det
520!
CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
614! li13=li13+vjx*(zi-zj)
665! lyi22=lyi22+vjy*(yi-yj)
731! vj=xsphr(8,nn)/
max(em20,rhoj)*wgrad(1)
753! lyi22=lyi22+vjy*(yi-yj)
754! lyi23=lyi23+vjy*(zi-zj)
781! nc=mod(js,nspcond+1)
832! lxi11=lxi11+vjx*(xi-xj)
921! lxi11=lxi11+vjx*(xi-xj)
1068! . -(li11*(wcompi+wgradxxi)+li12*wgradxyi+li13*wgradxzi)
1127! betayzi=-(mzi21*betaxi+mzi22*betayi+mzi23*betazi)
1184 1 ISPSYM ,WACOMP ,ISPCOND ,XFRAME ,WSMCOMP ,
1185 2 GEO ,IPART ,IPARTSP ,WASPACT ,ITASK )
1193#include "implicit_f.inc"
1197#include "sphcom.inc"
1198#include "param_c.inc"
1199#include "scr17_c.inc"
1200#include "task_c.inc"
1204 INTEGER ISPSYM(NSPCOND,*), ISPCOND(NISPCOND,*),
1205 . IPART(LIPART1,*), IPARTSP(*), WASPACT(*), ITASK
1208 . WACOMP(16,*), XFRAME(NXFRAME,*), WSMCOMP(6,*),
1213 INTEGER MWAMUN(NSPHACT),MWAZERO(NSPHACT),MWAUN(NSPHACT)
1214 INTEGER SM,JS,NC,IC,IS,
1215 . i,n,iprt,igeo,iorder,nmun,nzero,nun
1217 . ox,oy,oz,ux,uy,uz,vx,vy,vz,wx,wy,wz,
1218 . s11,s12,s13,s22,s23,s33,
1219 . alphaxi,alphayi,alphazi,
1220 . betaxi,betayi,betazi,
1221 . alphaxj,alphayj,alphazj,
1222 . betaxj,betayj,betazj
1231 DO i=itask+1,nsphact,nthread
1235 iorder=nint(get_u_geo(5,igeo))
1239 ELSEIF(iorder== 0)
THEN
1242 ELSEIF(iorder== 1)
THEN
1321 s11=-ux*ux+vx*vx+wx*wx
1322 s12=-ux*uy+vx*vy+wx*wy
1323 s13=-ux*uz+vx*vz+wx*wz
1324 s22=-uy*uy+vy*vy+wy*wy
1325 s23=-uy*uz+vy*vz+wy*wz
1326 s33=-uz*uz+vz*vz+wz*wz
1341 alphaxi=wacomp( 5,sm)
1342 alphayi=wacomp( 6,sm)
1343 alphazi=wacomp( 7,sm)
1344 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1345 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1346 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1347 wsmcomp(4,js)=alphaxj
1348 wsmcomp(5,js)=alphayj
1349 wsmcomp(6,js)=alphazj
1373 betaxj=s11*betaxi+s12*betayi+s13*betazi
1374 betayj=s12*betaxi+s22*betayi+s23*betazi
1375 betazj=s13*betaxi+s23*betayi+s33*betazi
1376 wsmcomp(1,js)=betaxj
1377 wsmcomp(2,js)=betayj
1378 wsmcomp(3,js)=betazj
1379 alphaxi=wacomp( 5,sm)
1380 alphayi=wacomp( 6,sm)
1381 alphazi=wacomp( 7,sm)
1382 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1383 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1384 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1385 wsmcomp( 4,js)=alphaxj
1386 wsmcomp( 5,js)=alphayj
1387 wsmcomp( 6,js)=alphazj
1402 DO sm = 1+itask,
nsphr,nthread
1408 alphaxi=wacompr( 5,sm)
1409 alphayi=wacompr( 6,sm)
1410 alphazi=wacompr( 7,sm)
1411 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1412 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1413 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1414 wsmcomp(4,js)=alphaxj
1415 wsmcomp(5,js)=alphayj
1416 wsmcomp(6,js)=alphazj