39 1 A ,SPBUF ,IXS ,KXSP ,IPARTSP ,
40 2 NOD2SP ,IRST ,NGROUNC ,IGROUNC ,IPARG ,
41 3 STIFN ,SOL2SPH,SPH2SOL ,ELBUF_TAB,ITASK ,
42 4 NODFT ,NODLT ,ISKY ,FSKYI ,IGEO ,
51#include "implicit_f.inc"
62#include
"vect01_c.inc"
66 INTEGER IXS(NIXS,*), KXSP(NISP,*), IPARTSP(*), NOD2SP(*),
67 . IRST(3,*), NGROUNC, IGROUNC(*), IPARG(NPARG,*),
68 . SOL2SPH(2,*), SPH2SOL(*), ITASK, NODFT, NODLT, ISKY(*),
69 . IGEO(NPROPGI,*),SOL2SPH_TYP(*)
71 . a(3,*), spbuf(nspbuf,*), stifn(*), fskyi(lskyi,nfskyi)
72 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
76 INTEGER I, J, IR, IS, IT, KP, NP, N, INOD, MG, NG, NEL,
77 . kft, n1, n2, n3, n4, n5
78 . lenr, ig , nelem, offset, nsphdir, iprtsph, iaw,
79 . my_iaw, ierror, nisk, niftsk, niltsk, niskyl, nsol
82 . phi1,phi2,phi3,phi4,phi5,phi6,phi7,phi8,
85 TYPE(g_bufel_) ,
POINTER :: GBUF, GBUFSP
86 TYPE(l_bufel_) ,
POINTER :: LBUF
87 TYPE(BUF_MAT_) ,
POINTER :: MBUF
90 . a_gauss(9,9),a_gauss_tetra(9,9)
98 3 -.666666666666666,0. ,0.666666666666666,
107 6 -.833333333333333,-.5 ,-.166666666666666,
108 6 0.166666666666666,0.5 ,0.833333333333333,
110 7 -.857142857142857,-.571428571428571,-.285714285714285,
111 7 0. ,0.285714285714285,0.571428571428571,
112 7 0.857142857142857,0. ,0. ,
113 8 -.875 ,-.625 ,-.375 ,
114 8 -.125 ,0.125 ,0.375,
116 9 -.888888888888888,-.666666666666666,-.444444444444444,
117 9 -.222222222222222,0. ,0.222222222222222,
118 9 0.444444444444444,0.666666666666666,0.888888888888888/
121 1 0.250000000000000,0.000000000000000,0.000000000000000,
122 1 0.000000000000000,0.000000000000000,0.000000000000000,
123 1 0.000000000000000,0.000000000000000,0.000000000000000,
124 2 0.166666666666667,0.500000000000000,0.000000000000000,
125 2 0.000000000000000,0.000000000000000,0.000000000000000,
126 2 0.000000000000000,0.000000000000000,0.000000000000000,
127 3 0.125000000000000,0.375000000000000,0.625000000000000,
128 3 0.000000000000000,0.000000000000000,0.000000000000000,
129 3 0.000000000000000,0.000000000000000,0.000000000000000,
130 4 0.100000000000000,0.300000000000000,0.500000000000000,
131 4 0.700000000000000,0.000000000000000,0.000000000000000,
132 4 0.000000000000000,0.000000000000000,0.000000000000000,
133 5 0.083333333333333,0.250000000000000,0.416666666666667,
134 5 0.583333333333333,0.750000000000000,0.000000000000000,
135 5 0.000000000000000,0.000000000000000,0.000000000000000,
136 6 0.071428571428571,0.214285714285714,0.357142857142857,
137 6 0.500000000000000,0.642857142857143,0.785714285714286,
138 6 0.000000000000000,0.000000000000000,0.000000000000000,
139 7 0.062500000000000,0.187500000000000,0.312500000000000,
140 7 0.437500000000000,0.562500000000000,0.687500000000000,
141 7 0.812500000000000,0.000000000000000,0.000000000000000,
142 8 0.055555555555556,0.166666666666667,0.277777777777778,
143 8 0.388888888888889,0.500000000000000,0.611111111111111,
144 8 0.722222222222222,0.833333333333333,0.000000000000000,
145 9 0.050000000000000,0.150000000000000,0.250000000000000,
146 9 0.350000000000000,0.450000000000000,0.550000000000000,
147 9 0.650000000000000,0.750000000000000,0.850000000000000/
153 ALLOCATE(awork(4,nthread*numnod),stat=ierror)
155 CALL ancmsg(msgid=19,anmode=aninfo,
156 . c1='(solids to sph)
')
163 DO IAW=ITASK*NUMNOD+1,(ITASK+1)*NUMNOD
173!$OMP DO SCHEDULE(DYNAMIC,1)
176 IF(IPARG(8,NG)==1)GOTO 350
177 IF (IDDW>0) CALL STARTIMEG(NG)
178 DO NELEM = 1,IPARG(2,NG),NVSIZ
181 NFT =IPARG(3,NG) + OFFSET
186 LLT=MIN(NVSIZ,NEL-NELEM+1)
187.AND.
IF(ITY==1IPRTSPH/=0) THEN
189 GBUF => ELBUF_TAB(NG)%GBUF
190 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(1,1,1)
191 MBUF => ELBUF_TAB(NG)%BUFLY(1)%MAT(1,1,1)
195 IF (IPARG(28,NG)==4) THEN
199 IF(GBUF%OFF(I)/=ZERO) THEN
206 NSPHDIR=IGEO(37,IXS(10,N))
210 DO KP=1,SOL2SPH(2,N)-SOL2SPH(1,N)
212 IR=IRST(1,NP-FIRST_SPHSOL+1)
213 IS=IRST(2,NP-FIRST_SPHSOL+1)
214 IT=IRST(3,NP-FIRST_SPHSOL+1)
215 KSI = A_GAUSS_TETRA(IR,NSPHDIR)
216 ETA = A_GAUSS_TETRA(IS,NSPHDIR)
217 ZETA = A_GAUSS_TETRA(IT,NSPHDIR)
225 AWORK(1,MY_IAW+N1)=AWORK(1,MY_IAW+N1)+PHI1*A(1,INOD)
226 AWORK(2,MY_IAW+N1)=AWORK(2,MY_IAW+N1)+PHI1*A(2,INOD)
227 AWORK(3,MY_IAW+N1)=AWORK(3,MY_IAW+N1)+PHI1*A(3,INOD)
228 AWORK(4,MY_IAW+N1)=AWORK(4,MY_IAW+N1)+PHI1*STIFN(INOD)
229 AWORK(1,MY_IAW+N2)=AWORK(1,MY_IAW+N2)+PHI2*A(1,INOD)
230 AWORK(2,MY_IAW+N2)=AWORK(2,MY_IAW+N2)+PHI2*A(2,INOD)
231 AWORK(3,MY_IAW+N2)=AWORK(3,MY_IAW+N2)+PHI2*A(3,INOD)
232 AWORK(4,MY_IAW+N2)=AWORK(4,MY_IAW+N2)+PHI2*STIFN(INOD)
233 AWORK(1,MY_IAW+N3)=AWORK(1,MY_IAW+N3)+PHI3*A(1,INOD)
234 AWORK(2,MY_IAW+N3)=AWORK(2,MY_IAW+N3)+PHI3*A(2,INOD)
235 AWORK(3,MY_IAW+N3)=AWORK(3,MY_IAW+N3)+PHI3*A(3,INOD)
236 AWORK(4,MY_IAW+N3)=AWORK(4,MY_IAW+N3)+PHI3*STIFN(INOD)
237 AWORK(1,MY_IAW+N4)=AWORK(1,MY_IAW+N4)+PHI4*A(1,INOD)
238 AWORK(2,MY_IAW+N4)=AWORK(2,MY_IAW+N4)+PHI4*A(2,INOD)
239 AWORK(3,MY_IAW+N4)=AWORK(3,MY_IAW+N4)+PHI4*A(3,INOD)
240 AWORK(4,MY_IAW+N4)=AWORK(4,MY_IAW+N4)+PHI4*STIFN(INOD)
256 IF(GBUF%OFF(I)/=ZERO) THEN
267 NSPHDIR=NINT((SOL2SPH(2,N)-SOL2SPH(1,N))**THIRD)
271 DO KP=1,SOL2SPH(2,N)-SOL2SPH(1,N)
273 IR=IRST(1,NP-FIRST_SPHSOL+1)
274 IS=IRST(2,NP-FIRST_SPHSOL+1)
275 IT=IRST(3,NP-FIRST_SPHSOL+1)
276 KSI = A_GAUSS(IR,NSPHDIR)
277 ETA = A_GAUSS(IS,NSPHDIR)
278 ZETA = A_GAUSS(IT,NSPHDIR)
280 PHI1=ONE_OVER_8*(ONE-KSI)*(ONE-ETA)*(ONE-ZETA)
281 PHI2=ONE_OVER_8*(ONE-KSI)*(ONE-ETA)*(ONE+ZETA)
282 PHI3=ONE_OVER_8*(ONE+KSI)*(ONE-ETA)*(ONE+ZETA)
283 PHI4=ONE_OVER_8*(ONE+KSI)*(ONE-ETA)*(ONE-ZETA)
284 PHI5=ONE_OVER_8*(ONE-KSI)*(ONE+ETA)*(ONE-ZETA)
285 PHI6=ONE_OVER_8*(ONE-KSI)*(ONE+ETA)*(ONE+ZETA)
286 PHI7=ONE_OVER_8*(ONE+KSI)*(ONE+ETA)*(ONE+ZETA)
287 PHI8=ONE_OVER_8*(ONE+KSI)*(ONE+ETA)*(ONE-ZETA)
290 AWORK(1,MY_IAW+N1)=AWORK(1,MY_IAW+N1)+PHI1*A(1,INOD)
291 AWORK(2,MY_IAW+N1)=AWORK(2,MY_IAW+N1)+PHI1*A(2,INOD)
292 AWORK(3,MY_IAW+N1)=AWORK(3,MY_IAW+N1)+PHI1*A(3,INOD)
293 AWORK(4,MY_IAW+N1)=AWORK(4,MY_IAW+N1)+PHI1*STIFN(INOD)
294 AWORK(1,MY_IAW+N2)=AWORK(1,MY_IAW+N2)+PHI2*A(1,INOD)
295 AWORK(2,MY_IAW+N2)=AWORK(2,MY_IAW+N2)+PHI2*A(2,INOD)
296 AWORK(3,MY_IAW+N2)=AWORK(3,MY_IAW+N2)+PHI2*A(3,INOD)
297 AWORK(4,MY_IAW+N2)=AWORK(4,MY_IAW+N2)+PHI2*STIFN(INOD)
298 AWORK(1,MY_IAW+N3)=AWORK(1,MY_IAW+N3)+PHI3*A(1,INOD)
299 AWORK(2,MY_IAW+N3)=AWORK(2,MY_IAW+N3)+PHI3*A(2,INOD)
300 AWORK(3,MY_IAW+N3)=AWORK(3,MY_IAW+N3)+PHI3*A(3,INOD)
301 AWORK(4,MY_IAW+N3)=AWORK(4,MY_IAW+N3)+PHI3*STIFN(INOD)
302 AWORK(1,MY_IAW+N4)=AWORK(1,MY_IAW+N4)+PHI4*A(1,INOD)
303 AWORK(2,MY_IAW+N4)=AWORK(2,MY_IAW+N4)+PHI4*A(2,INOD)
304 AWORK(3,MY_IAW+N4)=AWORK(3,MY_IAW+N4)+PHI4*A(3,INOD)
305 AWORK(4,MY_IAW+N4)=AWORK(4,MY_IAW+N4)+PHI4*STIFN(INOD)
306 AWORK(1,MY_IAW+N5)=AWORK(1,MY_IAW+N5)+PHI5*A(1,INOD)
307 AWORK(2,MY_IAW+N5)=AWORK(2,MY_IAW+N5)+PHI5*A(2,INOD)
308 AWORK(3,MY_IAW+N5)=AWORK(3,MY_IAW+N5)+PHI5*A(3,INOD)
309 AWORK(4,MY_IAW+N5)=AWORK(4,MY_IAW+N5)+PHI5*STIFN(INOD)
310 AWORK(1,MY_IAW+N6)=AWORK(1,MY_IAW+N6)+PHI6*A(1,INOD)
311 AWORK(2,MY_IAW+N6)=AWORK(2,MY_IAW+N6)+PHI6*A(2,INOD)
312 AWORK(3,MY_IAW+N6)=AWORK(3,MY_IAW+N6)+PHI6*A(3,INOD)
313 AWORK(4,MY_IAW+N6)=AWORK(4,MY_IAW+N6)+PHI6*STIFN(INOD)
314 AWORK(1,MY_IAW+N7)=AWORK(1,MY_IAW+N7)+PHI7*A(1,INOD)
315 AWORK(2,MY_IAW+N7)=AWORK(2,MY_IAW+N7)+PHI7*A(2,INOD)
316 AWORK(3,MY_IAW+N7)=AWORK(3,MY_IAW+N7)+PHI7*A(3,INOD)
317 AWORK(4,MY_IAW+N7)=AWORK(4,MY_IAW+N7)+PHI7*STIFN(INOD)
318 AWORK(1,MY_IAW+N8)=AWORK(1,MY_IAW+N8)+PHI8*A(1,INOD)
319 AWORK(2,MY_IAW+N8)=AWORK(2,MY_IAW+N8)+PHI8*A(2,INOD)
320 AWORK(3,MY_IAW+N8)=AWORK(3,MY_IAW+N8)+PHI8*A(3,INOD)
321 AWORK(4,MY_IAW+N8)=AWORK(4,MY_IAW+N8)+PHI8*STIFN(INOD)
333 IF (IDDW>0) CALL STOPTIMEG(NG)
345 A(1,N)=A(1,N)+AWORK(1,IAW)
346 A(2,N)=A(2,N)+AWORK(2,IAW)
347 A(3,N)=A(3,N)+AWORK(3,IAW)
348 STIFN(N)=STIFN(N)+AWORK(4,IAW)
354 IF(ITASK==0) DEALLOCATE(AWORK)
357 NIFTSK = 1+ITASK*NISKY/ NTHREAD
358 NILTSK = (ITASK+1)*NISKY/NTHREAD
362 DO NISK=NIFTSK,NILTSK
371#include "lockoff.inc"
372 IF (NISKYL+8 > LSKYI) THEN
373 CALL ANCMSG(MSGID=243,ANMODE=ANINFO_BLIND)
377 IF (SOL2SPH_TYP(SPH2SOL(NP))==4) THEN
388 IR=IRST(1,N-FIRST_SPHSOL+1)
389 IS=IRST(2,N-FIRST_SPHSOL+1)
390 IT=IRST(3,N-FIRST_SPHSOL+1)
391 NSPHDIR=IGEO(37,IXS(10,NSOL))
393 KSI = A_GAUSS_TETRA(IR,NSPHDIR)
394 ETA = A_GAUSS_TETRA(IS,NSPHDIR)
395 ZETA = A_GAUSS_TETRA(IT,NSPHDIR)
405 FSKYI(NISKYL,J)=PHI1*FSKYI(NISK,J)
410 FSKYI(NISKYL,J)=PHI2*FSKYI(NISK,J)
415 FSKYI(NISKYL,J)=PHI3*FSKYI(NISK,J)
420 FSKYI(NISKYL,J)=PHI4*FSKYI(NISK,J)
436 NSPHDIR=NINT((SOL2SPH(2,N)-SOL2SPH(1,N))**THIRD)
439 IR=IRST(1,NP-FIRST_SPHSOL+1)
440 IS=IRST(2,NP-FIRST_SPHSOL+1)
441 IT=IRST(3,NP-FIRST_SPHSOL+1)
442 KSI = A_GAUSS(IR,NSPHDIR)
443 ETA = A_GAUSS(IS,NSPHDIR)
444 ZETA = A_GAUSS(IT,NSPHDIR)
446 PHI1=ONE_OVER_8*(ONE-KSI)*(ONE-ETA)*(ONE-ZETA)
447 PHI2=ONE_OVER_8*(ONE-KSI)*(ONE-ETA)*(ONE+ZETA)
448 PHI3=ONE_OVER_8*(ONE+KSI)*(ONE-ETA)*(ONE+ZETA)
449 PHI4=ONE_OVER_8*(ONE+KSI)*(ONE-ETA)*(ONE-ZETA)
450 PHI5=ONE_OVER_8*(ONE-KSI)*(ONE+ETA)*(ONE-ZETA)
451 PHI6=ONE_OVER_8*(ONE-KSI)*(ONE+ETA)*(ONE+ZETA)
452 PHI7=ONE_OVER_8*(ONE+KSI)*(ONE+ETA)*(ONE+ZETA)
453 PHI8=ONE_OVER_8*(ONE+KSI)*(ONE+ETA)*(ONE-ZETA)
458 FSKYI(NISKYL,J)=PHI1*FSKYI(NISK,J)
463 FSKYI(NISKYL,J)=PHI2*FSKYI(NISK,J)
468 FSKYI(NISKYL,J)=PHI3*FSKYI(NISK,J)
473 FSKYI(NISKYL,J)=PHI4*FSKYI(NISK,J)
478 FSKYI(NISKYL,J)=PHI5*FSKYI(NISK,J)
483 FSKYI(NISKYL,J)=PHI6*FSKYI(NISK,J)
488 FSKYI(NISKYL,J)=PHI7*FSKYI(NISK,J)
493 FSKYI(NISKYL,J)=PHI8*FSKYI(NISK,J)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)