33 SUBROUTINE admmap4(N ,IXC ,X ,IPARG ,ELBUF_TAB,
43#include "implicit_f.inc"
47#include "vect01_c.inc"
53 INTEGER N, IXC(NIXC,*), IPARG(NPARG,*),
54 . igeo(npropgi,*), ipm(npropmi,*), sh4tree(ksh4tree,*)
57 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
61 INTEGER IB,M,N1,N2,N3,N4,IR,IS,IT,IL,IPT,NPTR,NPTS,NPTT,NLAY,
62 . i,j,k,ii,jj,i1,ig,ng,ng1,nel1,nft1,mlw,nel,istra,
63 . iexpan,ih,lens,lenm,lenf,nptm,
64 . ptf,ptm,pte,ptp,pts,qtf,qtm,qte,qtp,qts,kk(12),kk1(12)
66 . nx,ny,nz,stot,x13,y13,z13,x24,y24,z24,zz
68 . qpg(2,4),s2wake(4),sk(2),st(2),mk(2),mt(2),
69 . shk(2),sht(2),z01(11,11)
70 TYPE(g_bufel_) ,
POINTER :: GBUFS,GBUFT
71 TYPE(l_bufel_) ,
POINTER :: LBUFS,LBUFT
72 TYPE(buf_lay_) ,
POINTER :: BUFLY
79 1 0. ,0. ,0. ,0. ,0. ,
80 1 0. ,0. ,0. ,0. ,0. ,0. ,
81 2 -.5 ,0.5 ,0. ,0. ,0. ,
82 2 0. ,0. ,0. ,0. ,0. ,0. ,
83 3 -.5 ,0. ,0.5 ,0. ,0. ,
84 3 0. ,0. ,0. ,0. ,0. ,0. ,
85 4 -.5 ,-.1666667,0.1666667,0.5 ,0. ,
86 4 0. ,0. ,0. ,0. ,0. ,0. ,
87 5 -.5 ,-.25 ,0. ,0.25 ,0.5 ,
88 5 0. ,0. ,0. ,0. ,0. ,0. ,
89 6 -.5 ,-.3 ,-.1 ,0.1 ,0.3 ,
90 6 0.5 ,0. ,0. ,0. ,0. ,0. ,
91 7 -.5 ,-.3333333,-.1666667,0.0 ,0.1666667,
92 7 0.3333333,0.5 ,0. ,0. ,0. ,0. ,
93 8 -.5 ,-.3571429,-.2142857,-.0714286,0.0714286,
94 8 0.2142857,0.3571429,0.5 ,0. ,0. ,0. ,
95 9 -.5 ,-.375 ,-.25 ,-.125 ,0.0 ,
96 9 0.125 ,0.25 ,0.375 ,0.5 ,0. ,0. ,
97 a -.5 ,-.3888889,-.2777778,-.1666667,0.0555555,
98 a 0.0555555,0.1666667,0.2777778,0.3888889,0.5 ,0. ,
99 b -.5 ,-.4 ,-.3 ,-.2 ,-.1 ,
100 b 0. ,0.1 ,0.2 ,0.3 ,0.4 ,0.5 /
105 m = sh4tree(2,n)+ib-1
111 x13 = x(1,n3) - x(1,n1)
112 y13 = x(2,n3) - x(2,n1)
113 z13 = x(3,n3) - x(3,n1)
115 x24 = x(1,n4) - x(1,n2)
116 y24 = x(2,n4) - x(2,n2)
117 z24 = x(3,n4) - x(3,n2)
119 nx = y13*z24 - z13*y24
120 ny = z13*x24 - x13*z24
121 nz = x13*y24 - y13*x24
123 s2wake(ib)=sqrt(nx*nx+ny*ny+nz*nz)
142 gbufs => elbuf_tab(ng)%GBUF
143 nlay = elbuf_tab(ng)%NLAY
144 nptr = elbuf_tab(ng)%NPTR
145 npts = elbuf_tab(ng)%NPTS
146 nptt = elbuf_tab(ng)%NPTT
155 m = sh4tree(2,n)+ib-1
161 gbuft => elbuf_tab(ng1)%GBUF
170 gbuft%THK(i1) = gbufs%THK(i)
172 gbuft%EINT(i1) = gbufs%EINT(i)*s2wake(ib)/stot
173 gbuft%EINT(i1+nel1) = gbufs%EINT(i+nel)*s2wake(ib)/stot
175 gbuft%OFF(i1) = gbufs%OFF(i)
177 IF (gbuft%G_EPSD > 0)
THEN
178 gbuft%EPSD(i1) = gbufs%EPSD(i)
183 gbuft%STRA(kk1(k)+i1)=gbufs%STRA(kk(k)+i)
187 IF (iexpan /= 0)
THEN
188 gbuft%TEMP(i1)=gbufs%TEMP(i)
193 IF (gbuft%G_PLA > 0)
THEN
198 elbuf_tab(ng1)%BUFLY(il)%LBUF(ir,is,it)%PLA(i1) =
199 . elbuf_tab(ng) %BUFLY(il)%LBUF(ir,is,it)%PLA(i)
212 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(ir,is,it)
213 lbufs => elbuf_tab(ng )%BUFLY(il)%LBUF(ir,is,it)
214 lbuft%SIG(kk1(1)+i1) = lbufs%SIG(kk(1)+i)
215 lbuft%SIG(kk1(2)+i1) = lbufs%SIG(kk(2)+i)
216 lbuft%SIG(kk1(3)+i1) = lbufs%SIG(kk(3)+i)
217 lbuft%SIG(kk1(4)+i1) = lbufs%SIG(kk(4)+i)
218 lbuft%SIG(kk1(5)+i1) = lbufs%SIG(kk(5)+i)
226 IF (mlw>=28 .AND. mlw/=32)
THEN
231 DO k=1,elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
232 elbuf_tab(ng1)%BUFLY(il)%MAT(ir,is,it)%VAR(nel1*(k-1)+i1)=
233 . elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(nel*(k-1)+i)
248 ig = nptr*(is-1) + ir
251 gbuft%FORPG(qtf+kk1(1)+i1)=gbufs%FORPG(ptf+kk(1)+i)
252 gbuft%FORPG(qtf+kk1(2)+i1)=gbufs%FORPG(ptf+kk(2)+i)
253 gbuft%FORPG(qtf+kk1(3)+i1)=gbufs%FORPG(ptf+kk(3)+i)
254 gbuft%FORPG(qtf+kk1(4)+i1)=gbufs%FORPG(ptf+kk(4)+i)
255 gbuft%FORPG(qtf+kk1(5)+i1)=gbufs%FORPG(ptf+kk(5)+i)
257 gbuft%MOMPG(qtm+kk1(1)+i1)=gbufs%MOMPG(ptm+kk(1)+i)
258 gbuft%MOMPG(qtm+kk1(2)+i1)=gbufs%MOMPG(ptm+kk(2)+i)
259 gbuft%MOMPG(qtm+kk1(3)+i1)=gbufs%MOMPG(ptm+kk(3)+i)
266 gbuft%FOR(kk1(1)+i1) = gbufs%FOR(kk(1)+i)
267 gbuft%FOR(kk1(2)+i1) = gbufs%FOR(kk(2)+i)
268 gbuft%FOR(kk1(3)+i1) = gbufs%FOR(kk(3)+i)
269 gbuft%FOR(kk1(4)+i1) = gbufs%FOR(kk(4)+i)
270 gbuft%FOR(kk1(5)+i1) = gbufs%FOR(kk(5)+i)
272 gbuft%MOM(kk1(1)+i1) = gbufs%MOM(kk(1)+i)
273 gbuft%MOM(kk1(2)+i1) = gbufs%MOM(kk(2)+i)
274 gbuft%MOM(kk1(3)+i1) = gbufs%MOM(kk(3)+i)
276 gbuft%THK(i1) = gbufs%THK(i)
278 IF (jhbe == 22 .OR. jhbe == 23)
THEN
280 st(1) = gbufs%HOURG(kk(1)+i)
281 st(2) = -gbufs%HOURG(kk(2)+i)
282 mt(1) = gbufs%HOURG(kk(3)+i)
283 mt(2) = -gbufs%HOURG(kk(4)+i)
284 sk(1) = -gbufs%HOURG(kk(7)+i)
285 sk(2) = gbufs%HOURG(kk(8)+i)
286 mk(1) = -gbufs%HOURG(kk(9)+i)
287 mk(2) = gbufs%HOURG(kk(10)+i)
288 sht(1)= gbufs%HOURG(kk(5)+i)
289 sht(2)= -gbufs%HOURG(kk(6)+i)
290 shk(1)= -gbufs%HOURG(kk(11)+i)
291 shk(2)= gbufs%HOURG(kk(12)+i)
294 gbuft%FOR(kk1(1)+i1) = gbuft%FOR(kk1(1)+i1)
295 . + st(1)*qpg(2,ib)+sk(1)*qpg(1,ib)
296 gbuft%FOR(kk1(2)+i1) = gbuft%FOR(kk1(2)+i1)
297 . + st(2)*qpg(2,ib)+sk(2)*qpg(1,ib)
299 gbuft%FOR(kk1(4)+i1) = gbuft%FOR(kk1(4)+i1)
300 . + sht(2)*qpg(2,ib)+shk(2)*qpg(1,ib)
301 gbuft%FOR(kk1(5)+i1) = gbuft%FOR(kk1(5)+i1)
302 . + sht(1)*qpg(2,ib)+shk(1)*qpg(1,ib)
304 gbuft%MOM(kk1(1)+i1) = gbuft%MOM(kk1(1)+i1)
305 . + mt(1)*qpg(2,ib)+mk(1)*qpg(1,ib)
306 gbuft%MOM(kk1(2)+i1) = gbuft%MOM(kk1(2)+i1)
307 . + mt(2)*qpg(2,ib)+mk(2)*qpg(1,ib)
314 gbuft%HOURG(kk1(k)+i1) = zero
319 gbuft%HOURG(kk1(k)+i1) = gbufs%HOURG(kk(k)+i)
323 gbuft%EINT(i1) = gbufs%EINT(i)*s2wake(ib)/stot
324 gbuft%EINT(i1+nel1) = gbufs%EINT(i+nel)*s2wake(ib)/stot
326 gbuft%OFF(i1) = gbufs%OFF(i)
327 IF (gbuft%G_EPSD > 0)
THEN
328 gbuft%EPSD(i1) = gbufs%EPSD(i)
331 gbuft%TEMP(i1) = gbufs%TEMP(i)
336 gbuft%STRA(kk1(k)+i1)=gbufs%STRA(kk(k)+i)
344 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)
345 lbufs => elbuf_tab(ng )%BUFLY(il)%LBUF(1,1,it)
346 lbuft%SIG(kk1(1)+i1) = lbufs%SIG(kk(1)+i)
347 lbuft%SIG(kk1(2)+i1) = lbufs%SIG(kk(2)+i)
348 lbuft%SIG(kk1(3)+i1) = lbufs%SIG(kk(3)+i)
349 lbuft%SIG(kk1(4)+i1) = lbufs%SIG(kk(4)+i)
350 lbuft%SIG(kk1(5)+i1) = lbufs%SIG(kk(5)+i)
354 IF (jhbe == 22 .OR. jhbe == 23)
THEN
357 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)
359 zz = gbuft%THK(i1)*z01(ipt,npt)
360 lbuft%SIG(kk1(1)+i1) = lbuft%SIG(kk1(1)+i1)
361 . + (st(1)+zz*mt(1))*qpg(2,ib)
362 . + (sk(1)+zz*mk(1))*qpg(1,ib)
363 lbuft%SIG(kk1(2)+i1) = lbuft%SIG(kk1(2)+i1)
364 . + (st(2)+zz*mt(2))*qpg(2,ib)
365 . + (sk(2)+zz*mk(2))*qpg(1,ib)
367 lbuft%SIG(kk1(4)+i1) = lbuft%SIG(kk1(4)+i1)
368 . + sht(2)*qpg(2,ib) + shk(2)*qpg(1,ib)
369 lbuft%SIG(kk1(5)+i1) = lbuft%SIG(kk1(5)+i1)
370 . + sht(1)*qpg(2,ib) + shk(1)*qpg(1,ib)
377 IF (gbuft%G_PLA > 0)
THEN
380 elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)%PLA(i1) =
381 . elbuf_tab(ng )%BUFLY(il)%LBUF(1,1,it)%PLA(i)
388 IF (mlw>=28 .AND. mlw/=32)
THEN
391 DO k=1,elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
392 elbuf_tab(ng1)%BUFLY(il)%MAT(1,1,it)%VAR(nel1*(k-1)+i1)=
393 . elbuf_tab(ng )%BUFLY(il)%MAT(1,1,it)%VAR(nel*(k-1)+i)
406 gbufs%OFF(i) =-abs(gbufs%OFF(i))
408 gbufs%FOR(kk(1)+i) = zero
409 gbufs%FOR(kk(2)+i) = zero
410 gbufs%FOR(kk(3)+i) = zero
411 gbufs%FOR(kk(4)+i) = zero
412 gbufs%FOR(kk(5)+i) = zero
414 gbufs%MOM(kk(1)+i) = zero
415 gbufs%MOM(kk(2)+i) = zero
416 gbufs%MOM(kk(3)+i) = zero
418 gbufs%EINT(i+nel) = zero
419 IF (gbufs%G_EPSD > 0) gbufs%EPSD(i) = zero
422 gbufs%STRA(kk(k)+i) = zero
431 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%SIG(kk(k)+i)=zero