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(NPARG,*),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,
75 . I,IPRT,IGEO,IORDER,NMUN,NZERO,NUN,
76 . MWAMUN(NSPHACT),(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,
90 . alphai,alphaxi,alphayi,alphazi,alphai2,
103 DO i=itask+1,nsphact,nthread
107 iorder=nint(get_u_geo(5,igeo))
111 ELSEIF(iorder== 0)
THEN
114 ELSEIF(iorder== 1)
THEN
121 IF ((ncycle == 0).OR.(mcheck > 0))
THEN
124 igtyp = nint(geo(12,igeo))
126 iorder=nint(get_u_geo(5,igeo))
127 IF (iorder==1) sph_iord1 = 1
168 CALL weight0(xi,yi,zi,xi,yi,zi,di,wght)
169 wcompi =spbuf(12,n)*wght/
max(em20,rhoi)
184 vj=spbuf(12,m)/
max(em20,rhoj)
192 vj=xsphr(8,nn)/
max(em20,rhoj)
195 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
196 wcompi=wcompi+vj*wght
197 wgradxi=wgradxi+vj*wgrad(1)
198 wgradyi=wgradyi+vj*wgrad(2)
199 wgradzi=wgradzi+vj*wgrad(3)
204 DO j=kxsp(5,n)+1,kxsp(5,n)+nvoiss
216 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
218 vj=spbuf(12,sm)/
max(em20,rhoj)
221 nc=mod(-js,nspcond+1)
229 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
230 vj=xsphr(8,sm)/
max(em20,rhoj)
232 wcompi=wcompi+vj*wght
233 wgradxi=wgradxi+vj*wgrad(1)
234 wgradyi=wgradyi+vj*wgrad(2)
235 wgradzi=wgradzi+vj*wgrad(3)
239 alphai=one/
max(em20,wcompi)
242 alphai2=alphai*alphai
243 alphaxi=-wgradxi*alphai2
244 alphayi=-wgradyi*alphai2
245 alphazi=-wgradzi*alphai2
278 CALL weight0(xi,yi,zi,xi,yi,zi,di,wght)
279 wcompi =spbuf(12,n)*wght/
max(em20,rhoi)
300 vj=spbuf(12,m)/
max(em20,rhoj)
308 vj=xsphr(8,nn)/
max(em20,rhoj)
311 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
312 wcompi=wcompi+vj*wght
313 wcompxi=wcompxi+vj*wght*(xi-xj)
314 wcompyi=wcompyi+vj*wght*(yi-yj)
315 wcompzi=wcompzi+vj*wght*(zi-zj)
316 wgradxxi=wgradxxi+vj*wgrad(1)*(xi-xj)
317 wgradxyi=wgradxyi+vj*wgrad(1)*(yi-yj)
318 wgradxzi=wgradxzi+vj*wgrad(1)*(zi-zj)
319 wgradyxi=wgradyxi+vj*wgrad(2)*(xi-xj)
320 wgradyyi=wgradyyi+vj*wgrad(2)*(yi-yj)
321 wgradyzi=wgradyzi+vj*wgrad(2)*(zi-zj)
322 wgradzxi=wgradzxi+vj*wgrad(3)*(xi-xj)
323 wgradzyi=wgradzyi+vj*wgrad(3)*(yi-yj)
324 wgradzzi=wgradzzi+vj*wgrad(3)*(zi-zj)
329 DO j=kxsp(5,n)+1,kxsp(5,n)+nvoiss
341 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
343 vj=spbuf(12,sm)/
max(em20,rhoj)
346 nc=mod(-js,nspcond+1)
354 CALL weight1(xi,yi,zi,xj,yj,zj,dij,wght,wgrad)
355 vj=xsphr(8,sm)/
max(em20,rhoj)
357 wcompi=wcompi+vj*wght
358 wcompxi=wcompxi+vj*wght*(xi-xj)
359 wcompyi=wcompyi+vj*wght*(yi-yj)
360 wcompzi=wcompzi+vj*wght*(zi-zj)
362 wgradxxi=wgradxxi+vj*wgrad(1)*(xi-xj)
363 wgradxyi=wgradxyi+vj*wgrad(1)*(yi-yj)
364 wgradxzi=wgradxzi+vj*wgrad(1)*(zi-zj)
365 wgradyxi=wgradyxi+vj*wgrad(2)*(xi-xj)
366 wgradyyi=wgradyyi+vj*wgrad(2)*(yi-yj)
367 wgradyzi=wgradyzi+vj*wgrad(2)*(zi-zj)
368 wgradzxi=wgradzxi+vj*wgrad(3)*(xi-xj)
369 wgradzyi=wgradzyi+vj*wgrad(3)*(yi-yj)
370 wgradzzi=wgradzzi+vj*wgrad(3)*(zi-zj)
375 wacomp(2,n)=one/sign(
max(em20,abs(wcompxi)),wcompxi)
376 wacomp(3,n)=one/sign(
max(em20,abs(wcompyi)),wcompyi)
377 wacomp(4,n)=one/sign(
max(em20,abs(wcompzi)),wcompzi)
389 tcofa11= li22*li33-li32*li23
390 tcofa21= -li21*li33+li31*li23
391 tcofa31= li21*li32-li31*li22
392 tcofa12= -li12*li33+li32*li13
393 tcofa22= li11*li33-li31*li13
394 tcofa32= -li11*li32+li31*li12
395 tcofa13= li12*li23-li22*li13
396 tcofa23= -li11*li23+li21*li13
397 tcofa33= li11*li22-li21*li12
399 det=li11*tcofa11+li12*tcofa21+li13*tcofa31
402 wacomp( 8,n)= -tcofa11*det
403 wacomp( 9,n)= -tcofa21*det
404 wacomp(10,n)= -tcofa31*det
405 wacomp(11,n)= -tcofa12*det
406 wacomp(12,n)= -tcofa22*det
407 wacomp(13,n)= -tcofa32*det
408 wacomp(14,n)= -tcofa13*det
409 wacomp(15,n)= -tcofa23*det
410 wacomp(16,n)= -tcofa33*det
651! lyi22=lyi22+vjy*(yi-yj)
1103! mzi13=li11*lzi13+li12*lzi23+li13*lzi33
1144! . +betaxi*wgradxzi+betayi*wgradyzi+betazi*wgradzzi
1170 1 ISPSYM ,WACOMP ,ISPCOND ,XFRAME ,WSMCOMP ,
1171 2 GEO ,IPART ,IPARTSP ,WASPACT ,ITASK )
1179#include "implicit_f.inc"
1183#include "sphcom.inc"
1184#include "param_c.inc"
1185#include "scr17_c.inc"
1186#include "task_c.inc"
1190 INTEGER ISPSYM(NSPCOND,*), ISPCOND(NISPCOND,*),
1191 . IPART(LIPART1,*), IPARTSP(*), WASPACT(*), ITASK
1194 . WACOMP(16,*), XFRAME(NXFRAME,*), WSMCOMP(6,*),
1199 INTEGER MWAMUN(NSPHACT),MWAZERO(NSPHACT),MWAUN(NSPHACT)
1200 INTEGER SM,JS,NC,IC,IS,
1201 . i,n,iprt,igeo,iorder,nmun,nzero,nun
1203 . ox,oy,oz,ux,uy,uz,vx,vy,vz,wx,wy,wz,
1204 . s11,s12,s13,s22,s23,s33,
1205 . alphaxi,alphayi,alphazi,
1206 . betaxi,betayi,betazi,
1207 . alphaxj,alphayj,alphazj,
1208 . betaxj,betayj,betazj
1217 DO i=itask+1,nsphact,nthread
1221 iorder=nint(get_u_geo(5,igeo))
1225 ELSEIF(iorder== 0)
THEN
1228 ELSEIF(iorder== 1)
THEN
1307 s11=-ux*ux+vx*vx+wx*wx
1308 s12=-ux*uy+vx*vy+wx*wy
1309 s13=-ux*uz+vx*vz+wx*wz
1310 s22=-uy*uy+vy*vy+wy*wy
1311 s23=-uy*uz+vy*vz+wy*wz
1312 s33=-uz*uz+vz*vz+wz*wz
1327 alphaxi=wacomp( 5,sm)
1328 alphayi=wacomp( 6,sm)
1329 alphazi=wacomp( 7,sm)
1330 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1331 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1332 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1333 wsmcomp(4,js)=alphaxj
1334 wsmcomp(5,js)=alphayj
1335 wsmcomp(6,js)=alphazj
1359 betaxj=s11*betaxi+s12*betayi+s13*betazi
1360 betayj=s12*betaxi+s22*betayi+s23*betazi
1361 betazj=s13*betaxi+s23*betayi+s33*betazi
1362 wsmcomp(1,js)=betaxj
1363 wsmcomp(2,js)=betayj
1364 wsmcomp(3,js)=betazj
1365 alphaxi=wacomp( 5,sm)
1366 alphayi=wacomp( 6,sm)
1367 alphazi=wacomp( 7,sm)
1368 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1369 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1370 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1371 wsmcomp( 4,js)=alphaxj
1372 wsmcomp( 5,js)=alphayj
1373 wsmcomp( 6,js)=alphazj
1388 DO sm = 1+itask,
nsphr,nthread
1394 alphaxi=wacompr( 5,sm)
1395 alphayi=wacompr( 6,sm)
1396 alphazi=wacompr( 7,sm)
1397 alphaxj=s11*alphaxi+s12*alphayi+s13*alphazi
1398 alphayj=s12*alphaxi+s22*alphayi+s23*alphazi
1399 alphazj=s13*alphaxi+s23*alphayi+s33*alphazi
1400 wsmcomp(4,js)=alphaxj
1401 wsmcomp(5,js)=alphayj
1402 wsmcomp(6,js)=alphazj