34 SUBROUTINE admmap4(N ,IXC ,X ,IPARG ,ELBUF_TAB,
41 use element_mod ,
only : nixc
45#include "implicit_f.inc"
49#include "vect01_c.inc"
55 INTEGER N, IXC(NIXC,*), IPARG(NPARG,*),
56 . igeo(npropgi,*), ipm(npropmi,*), sh4tree(ksh4tree,*)
59 TYPE(elbuf_struct_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
63 INTEGER IB,M,N1,N2,N3,N4,IR,IS,IT,IL,IPT,NPTR,NPTS,NPTT,NLAY,
64 . i,j,k,ii,jj,i1,ig,ng,ng1,nel1,nft1,mlw,nel,istra,
65 . iexpan,ih,lens,lenm,lenf,nptm,
66 . ptf,ptm,pte,ptp,pts,qtf,qtm,qte,qtp,qts,kk(12),kk1(12)
68 . nx,ny,nz,stot,x13,y13,z13,x24,y24,z24,zz
70 . qpg(2,4),s2wake(4),sk(2),st(2),mk(2),mt(2),
71 . shk(2),sht(2),z01(11,11)
72 TYPE(g_bufel_) ,
POINTER :: GBUFS,GBUFT
73 TYPE(l_bufel_) ,
POINTER :: LBUFS,LBUFT
74 TYPE() ,
POINTER :: BUFLY
81 1 0. ,0. ,0. ,0. ,0. ,
82 1 0. ,0. ,0. ,0. ,0. ,0. ,
83 2 -.5 ,0.5 ,0. ,0. ,0. ,
84 2 0. ,0. ,0. ,0. ,0. ,0. ,
85 3 -.5 ,0. ,0.5 ,0. ,0. ,
86 3 0. ,0. ,0. ,0. ,0. ,0. ,
87 4 -.5 ,-.1666667,0.1666667,0.5 ,0. ,
88 4 0. ,0. ,0. ,0. ,0. ,0. ,
89 5 -.5 ,-.25 ,0. ,0.25 ,0.5 ,
90 5 0. ,0. ,0. ,0. ,0. ,0. ,
91 6 -.5 ,-.3 ,-.1 ,0.1 ,0.3 ,
92 6 0.5 ,0. ,0. ,0. ,0. ,0. ,
93 7 -.5 ,-.3333333,-.1666667,0.0 ,0.1666667,
94 7 0.3333333,0.5 ,0. ,0. ,0. ,0. ,
95 8 -.5 ,-.3571429,-.2142857,-.0714286,0.0714286,
96 8 0.2142857,0.3571429,0.5 ,0. ,0. ,0. ,
97 9 -.5 ,-.375 ,-.25 ,-.125 ,0.0 ,
98 9 0.125 ,0.25 ,0.375 ,0.5 ,0. ,0. ,
99 a -.5 ,-.3888889,-.2777778,-.1666667,0.0555555,
100 a 0.0555555,0.1666667,0.2777778,0.3888889,0.5 ,0. ,
101 b -.5 ,-.4 ,-.3 ,-.2 ,-.1 ,
102 b 0. ,0.1 ,0.2 ,0.3 ,0.4 ,0.5 /
107 m = sh4tree(2,n)+ib-1
113 x13 = x(1,n3) - x(1,n1)
114 y13 = x(2,n3) - x(2,n1)
115 z13 = x(3,n3) - x(3,n1)
117 x24 = x(1,n4) - x(1,n2)
118 y24 = x(2,n4) - x(2,n2)
119 z24 = x(3,n4) - x(3,n2)
121 nx = y13*z24 - z13*y24
122 ny = z13*x24 - x13*z24
123 nz = x13*y24 - y13*x24
125 s2wake(ib)=sqrt(nx*nx+ny*ny+nz*nz)
144 gbufs => elbuf_tab(ng)%GBUF
145 nlay = elbuf_tab(ng)%NLAY
146 nptr = elbuf_tab(ng)%NPTR
147 npts = elbuf_tab(ng)%NPTS
148 nptt = elbuf_tab(ng)%NPTT
157 m = sh4tree(2,n)+ib-1
163 gbuft => elbuf_tab(ng1)%GBUF
172 gbuft%THK(i1) = gbufs%THK(i)
174 gbuft%EINT(i1) = gbufs%EINT(i)*s2wake(ib)/stot
175 gbuft%EINT(i1+nel1) = gbufs%EINT(i+nel)*s2wake(ib)/stot
177 gbuft%OFF(i1) = gbufs%OFF(i)
179 IF (gbuft%G_EPSD > 0)
THEN
180 gbuft%EPSD(i1) = gbufs%EPSD(i)
185 gbuft%STRA(kk1(k)+i1)=gbufs%STRA(kk(k)+i)
189 IF (iexpan /= 0)
THEN
190 gbuft%TEMP(i1)=gbufs%TEMP(i)
195 IF (gbuft%G_PLA > 0)
THEN
200 elbuf_tab(ng1)%BUFLY(il)%LBUF(ir,is,it)%PLA(i1) =
201 . elbuf_tab(ng) %BUFLY(il)%LBUF(ir,is,it)%PLA(i)
214 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(ir,is,it)
215 lbufs => elbuf_tab(ng )%BUFLY(il)%LBUF(ir,is,it)
216 lbuft%SIG(kk1(1)+i1) = lbufs%SIG(kk(1)+i)
217 lbuft%SIG(kk1(2)+i1) = lbufs%SIG(kk(2)+i)
218 lbuft%SIG(kk1(3)+i1) = lbufs%SIG(kk(3)+i)
219 lbuft%SIG(kk1(4)+i1) = lbufs%SIG(kk(4)+i)
220 lbuft%SIG(kk1(5)+i1) = lbufs%SIG(kk(5)+i)
228 IF (mlw>=28 .AND. mlw/=32)
THEN
233 DO k=1,elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
234 elbuf_tab(ng1)%BUFLY(il)%MAT(ir,is,it)%VAR(nel1*(k-1)+i1)=
235 . elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,it)%VAR(nel*(k-1)+i)
250 ig = nptr*(is-1) + ir
253 gbuft%FORPG(qtf+kk1(1)+i1)=gbufs%FORPG(ptf+kk(1)+i)
254 gbuft%FORPG(qtf+kk1(2)+i1)=gbufs%FORPG(ptf+kk(2)+i)
255 gbuft%FORPG(qtf+kk1(3)+i1)=gbufs%FORPG(ptf+kk(3)+i)
256 gbuft%FORPG(qtf+kk1(4)+i1)=gbufs%FORPG(ptf+kk(4)+i)
257 gbuft%FORPG(qtf+kk1(5)+i1)=gbufs%FORPG(ptf+kk(5)+i)
259 gbuft%MOMPG(qtm+kk1(1)+i1)=gbufs%MOMPG(ptm+kk(1)+i)
260 gbuft%MOMPG(qtm+kk1(2)+i1)=gbufs%MOMPG(ptm+kk(2)+i)
261 gbuft%MOMPG(qtm+kk1(3)+i1)=gbufs%MOMPG(ptm+kk(3)+i)
268 gbuft%FOR(kk1(1)+i1) = gbufs%FOR(kk(1)+i)
269 gbuft%FOR(kk1(2)+i1) = gbufs%FOR(kk(2)+i)
270 gbuft%FOR(kk1(3)+i1) = gbufs%FOR(kk(3)+i)
271 gbuft%FOR(kk1(4)+i1) = gbufs%FOR(kk(4)+i)
272 gbuft%FOR(kk1(5)+i1) = gbufs%FOR(kk(5)+i)
274 gbuft%MOM(kk1(1)+i1) = gbufs%MOM(kk(1)+i)
275 gbuft%MOM(kk1(2)+i1) = gbufs%MOM(kk(2)+i)
276 gbuft%MOM(kk1(3)+i1) = gbufs%MOM(kk(3)+i)
278 gbuft%THK(i1) = gbufs%THK(i)
280 IF (jhbe == 22 .OR. jhbe == 23)
THEN
282 st(1) = gbufs%HOURG(kk(1)+i)
283 st(2) = -gbufs%HOURG(kk(2)+i)
284 mt(1) = gbufs%HOURG(kk(3)+i)
285 mt(2) = -gbufs%HOURG(kk(4)+i)
286 sk(1) = -gbufs%HOURG(kk(7)+i)
287 sk(2) = gbufs%HOURG(kk(8)+i)
288 mk(1) = -gbufs%HOURG(kk(9)+i)
289 mk(2) = gbufs%HOURG(kk(10)+i)
290 sht(1)= gbufs%HOURG(kk(5)+i)
291 sht(2)= -gbufs%HOURG(kk(6)+i)
292 shk(1)= -gbufs%HOURG(kk(11)+i)
293 shk(2)= gbufs%HOURG(kk(12)+i)
296 gbuft%FOR(kk1(1)+i1) = gbuft%FOR(kk1(1)+i1)
297 . + st(1)*qpg(2,ib)+sk(1)*qpg(1,ib)
298 gbuft%FOR(kk1(2)+i1) = gbuft%FOR(kk1(2)+i1)
299 . + st(2)*qpg(2,ib)+sk(2)*qpg(1,ib)
301 gbuft%FOR(kk1(4)+i1) = gbuft%FOR(kk1(4)+i1)
302 . + sht(2)*qpg(2,ib)+shk(2)*qpg(1,ib)
303 gbuft%FOR(kk1(5)+i1) = gbuft%FOR(kk1(5)+i1)
304 . + sht(1)*qpg(2,ib)+shk(1)*qpg(1,ib)
306 gbuft%MOM(kk1(1)+i1) = gbuft%MOM(kk1(1)+i1)
307 . + mt(1)*qpg(2,ib)+mk(1)*qpg(1,ib)
308 gbuft%MOM(kk1(2)+i1) = gbuft%MOM(kk1(2)+i1)
309 . + mt(2)*qpg(2,ib)+mk(2)*qpg(1,ib)
316 gbuft%HOURG(kk1(k)+i1) = zero
321 gbuft%HOURG(kk1(k)+i1) = gbufs%HOURG(kk(k)+i)
325 gbuft%EINT(i1) = gbufs%EINT(i)*s2wake(ib)/stot
326 gbuft%EINT(i1+nel1) = gbufs%EINT(i+nel)*s2wake(ib)/stot
328 gbuft%OFF(i1) = gbufs%OFF(i)
329 IF (gbuft%G_EPSD > 0)
THEN
330 gbuft%EPSD(i1) = gbufs%EPSD(i)
333 gbuft%TEMP(i1) = gbufs%TEMP(i)
338 gbuft%STRA(kk1(k)+i1)=gbufs%STRA(kk(k)+i)
346 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)
347 lbufs => elbuf_tab(ng )%BUFLY(il)%LBUF(1,1,it)
348 lbuft%SIG(kk1(1)+i1) = lbufs%SIG(kk(1)+i)
349 lbuft%SIG(kk1(2)+i1) = lbufs%SIG(kk(2)+i)
350 lbuft%SIG(kk1(3)+i1) = lbufs%SIG(kk(3)+i)
351 lbuft%SIG(kk1(4)+i1) = lbufs%SIG(kk(4)+i)
352 lbuft%SIG(kk1(5)+i1) = lbufs%SIG(kk(5)+i)
356 IF (jhbe == 22 .OR. jhbe == 23)
THEN
359 lbuft => elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)
361 zz = gbuft%THK(i1)*z01(ipt,npt)
362 lbuft%SIG(kk1(1)+i1) = lbuft%SIG(kk1(1)+i1)
363 . + (st(1)+zz*mt(1))*qpg(2,ib)
364 . + (sk(1)+zz*mk(1))*qpg(1,ib)
365 lbuft%SIG(kk1(2)+i1) = lbuft%SIG(kk1(2)+i1)
366 . + (st(2)+zz*mt(2))*qpg(2,ib)
367 . + (sk(2)+zz*mk(2))*qpg(1,ib)
369 lbuft%SIG(kk1(4)+i1) = lbuft%SIG(kk1(4)+i1)
370 . + sht(2)*qpg(2,ib) + shk(2)*qpg(1,ib)
371 lbuft%SIG(kk1(5)+i1) = lbuft%SIG(kk1(5)+i1)
372 . + sht(1)*qpg(2,ib) + shk(1)*qpg(1,ib)
379 IF (gbuft%G_PLA > 0)
THEN
382 elbuf_tab(ng1)%BUFLY(il)%LBUF(1,1,it)%PLA(i1) =
383 . elbuf_tab(ng )%BUFLY(il)%LBUF(1,1,it)%PLA(i)
390 IF (mlw>=28 .AND. mlw/=32)
THEN
393 DO k=1,elbuf_tab(ng)%BUFLY(il)%NVAR_MAT
394 elbuf_tab(ng1)%BUFLY(il)%MAT(1,1,it)%VAR(nel1*(k-1)+i1)=
395 . elbuf_tab(ng )%BUFLY(il)%MAT(1,1,it)%VAR(nel*(k-1)+i)
408 gbufs%OFF(i) =-abs(gbufs%OFF(i))
410 gbufs%FOR(kk(1)+i) = zero
411 gbufs%FOR(kk(2)+i) = zero
412 gbufs%FOR(kk(3)+i) = zero
413 gbufs%FOR(kk(4)+i) = zero
414 gbufs%FOR(kk(5)+i) = zero
416 gbufs%MOM(kk(1)+i) = zero
417 gbufs%MOM(kk(2)+i) = zero
418 gbufs%MOM(kk(3)+i) = zero
420 gbufs%EINT(i+nel) = zero
421 IF (gbufs%G_EPSD > 0) gbufs%EPSD(i) = zero
424 gbufs%STRA(kk(k)+i) = zero
433 elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)%SIG(kk(k)+i)=zero