32 SUBROUTINE tensors(ELBUF_TAB,IPARG ,ITENS ,IXS ,PM ,
34 3 X ,IPART ,IPARTSP ,ISPH3D ,IPM )
39 use element_mod ,
only : nixs
43#include "implicit_f.inc"
47#include "vect01_c.inc"
58 . tens(6,*),pm(npropm,*),x(3,*)
59 INTEGER IPARG(NPARG,*),ITENS, ISPH3D,NBF,
60 . IXS(NIXS,*),EL2FA(*),IPM(NPROPMI,*),IPART(LIPART1,*),IPARTSP(*)
62 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
66 . evar(6,mvsiz),off, fac, a1, a2, a3, thk, gama(6)
68 INTEGER I, II,NG, NEL, IPT,MT1,NLAY,IL,
69 . n, j, mlw,ialel,nn1,nn2,nn3,iprt, kcvt,isolnod,
70 . nptr, npts, nptt,nptg, is, ir, it,
71 . jhbe, jivf, jclose, jplasol, irep, igtyp,
72 . icsen, isorthg, ifailure, iint,jj(6)
73 TYPE(g_bufel_) ,
POINTER :: GBUF
74 TYPE(L_BUFEL_) ,
POINTER :: LBUF
84 isolnod = iparg(28,ng)
86 2 mlw ,nel ,nft ,iad ,ity ,
87 3 npt ,jale ,ismstr ,jeul ,jtur ,
88 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
89 5 jpor ,kcvt ,jclose ,jplasol ,
90 6 irep ,iint ,igtyp ,israt ,isrot ,
91 7 icsen ,isorth ,isorthg ,ifailure)
103 gbuf => elbuf_tab(ng)%GBUF
104 nlay = elbuf_tab(ng)%NLAY
105 nptr = elbuf_tab(ng)%NPTR
106 npts = elbuf_tab(ng)%NPTS
107 nptt = elbuf_tab(ng)%NPTT
108 nptg = nptt*npts*nptr
111 IF (kcvt==1 .AND. isorth/=0) kcvt=2
118 evar(1,i) = gbuf%SIG(jj(1) + i)
119 evar(2,i) = gbuf%SIG(jj(2) + i)
120 evar(3,i) = gbuf%SIG(jj(3) + i)
121 evar(4,i) = gbuf%SIG(jj(4) + i)
122 evar(5,i) = gbuf%SIG(jj(5) + i)
123 evar(6,i) = gbuf%SIG(jj(6) + i)
129 IF(el2fa(nn2+n)/=0)
THEN
131 IF (kcvt==2.AND.jhbe/=14)
THEN
132 gama(1)=gbuf%GAMA(jj(1) + i)
133 gama(2)=gbuf%GAMA(jj(2) + i)
134 gama(3)=gbuf%GAMA(jj(3) + i)
135 gama(4)=gbuf%GAMA(jj(4) + i)
136 gama(5)=gbuf%GAMA(jj(5) + i)
137 gama(6)=gbuf%GAMA(jj(6) + i)
151 ELSEIF(itens == 2)
THEN
160 IF (isolnod == 8.AND.npt == 8.AND.jhbe/=14.AND.
161 . jhbe/=24.AND.jhbe/=15 )
THEN
166 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,j)
167 evar(1,i) = evar(1,i) + lbuf%STRA(jj(1)+i)*one_over_8
168 evar(2,i) = evar(2,i) + lbuf%STRA(jj(2)+i)*one_over_8
169 evar(3,i) = evar(3,i) + lbuf%STRA(jj(3)+i)*one_over_8
170 evar(4,i) = evar(4,i) + lbuf%STRA(jj(4)+i)*one_over_8
171 evar(5,i) = evar(5,i) + lbuf%STRA(jj(5)+i)*one_over_8
172 evar(6,i) = evar(6,i) + lbuf%STRA(jj(6)+i)*one_over_8
177 ELSEIF(isolnod == 8 .AND. npt == 1 .AND.
178 . jhbe/=14.AND.jhbe/=15.AND.jhbe/=24)
THEN
180 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
183 evar(1,i) = lbuf%STRA(jj(1)+i)*one_over_8
184 evar(2,i) = lbuf%STRA(jj(2)+i)*one_over_8
185 evar(3,i) = lbuf%STRA(jj(3)+i)*one_over_8
186 evar(4,i) = lbuf%STRA(jj(4)+i)*one_over_8
187 evar(5,i) = lbuf%STRA(jj(5)+i)*one_over_8
188 evar(6,i) = lbuf%STRA(jj(6)+i)*one_over_8
190 ELSEIF(mlw == 14)
THEN
193 evar(1,i) = evar(1,i) + lbuf%EPE(jj(1)+i)
194 evar(2,i) = evar(2,i) + lbuf%EPE(jj(2)+i)
195 evar(3,i) = evar(3,i) + lbuf%EPE(jj(3)+i)
197 ELSEIF(mlw == 24)
THEN
200 evar(1,i) = lbuf%STRA(jj(1)+i)
201 evar(2,i) = lbuf%STRA(jj(2)+i)
202 evar(3,i) = lbuf%STRA(jj(3)+i)
203 evar(4,i) = lbuf%STRA(jj(4)+i)*half
204 evar(5,i) = lbuf%STRA(jj(5)+i)*half
205 evar(6,i) = lbuf%STRA(jj(6)+i)*half
209 ELSEIF (isolnod == 16 .OR. isolnod == 20 .OR.
210 . (isolnod == 8 .AND. jhbe == 14))
THEN
217 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
218 evar(1,i) = evar(1,i) + lbuf%STRA(jj(1)+i)/nptg
219 evar(2,i) = evar(2,i) + lbuf%STRA(jj(2)+i)/nptg
220 evar(3,i) = evar(3,i) + lbuf%STRA(jj(3)+i)/nptg
221 evar(4,i) = evar(4,i) + lbuf%STRA(jj(4)+i)/nptg
222 evar(5,i) = evar(5,i) + lbuf%STRA(jj(5)+i)/nptg
223 evar(6,i) = evar(6,i) + lbuf%STRA(jj(6)+i)/nptg
229 ELSEIF (mlw == 14)
THEN
236 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
237 evar(1,i) = evar(1,i) + lbuf%EPE(jj(1)+i)/nptg
238 evar(2,i) = evar(2,i) + lbuf%EPE(jj(2)+i)/nptg
239 evar(3,i) = evar(3,i) + lbuf%EPE(jj(3)+i)/nptg
245 ELSEIF(mlw == 24)
THEN
252 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ir,is,it)
253 IF (elbuf_tab(ng)%BUFLY(il)%L_STRA > 0)
THEN
254 evar(1,i) = evar(1,i) + lbuf%STRA(jj(1)+i)/nptg
255 evar(2,i) = evar(2,i) + lbuf%STRA(jj(2)+i)/nptg
256 evar(3,i) = evar(3,i) + lbuf%STRA(jj(3)+i)/nptg
257 evar(4,i) = evar(4,i) + lbuf%STRA(jj(4)+i)/nptg
258 evar(5,i) = evar(5,i) + lbuf%STRA(jj(5)+i)/nptg
259 evar(6,i) = evar(6,i) + lbuf%STRA(jj(6)+i)/nptg
268 ELSEIF (isolnod == 10)
THEN
273 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ipt,1,1)
274 evar(1,i) = evar(1,i)+lbuf%STRA(jj(1)+i)/npt
275 evar(2,i) = evar(2,i)+lbuf%STRA(jj(2)+i)/npt
276 evar(3,i) = evar(3,i)+lbuf%STRA(jj(3)+i)/npt
277 evar(4,i) = evar(4,i)+lbuf%STRA(jj(4)+i)/npt
278 evar(5,i) = evar(5,i)+lbuf%STRA(jj(5)+i)/npt
279 evar(6,i) = evar(6,i)+lbuf%STRA(jj(6)+i)/npt
282 ELSEIF(mlw == 14)
THEN
286 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ipt,1,1)
287 evar(1,i) = evar(1,i) + lbuf%EPE(jj(1)+i)/npt
288 evar(2,i) = evar(2,i) + lbuf%EPE(jj(2)+i)/npt
289 evar(3,i) = evar(3,i) + lbuf%EPE(jj(3)+i)/npt
292 ELSEIF (mlw == 24)
THEN
296 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ipt,1,1)
297 evar(1,i) = evar(1,i)+lbuf%STRA(jj(1)+i)/npt
298 evar(2,i) = evar(2,i)+lbuf%STRA(jj(2)+i)/npt
299 evar(3,i) = evar(3,i)+lbuf%STRA(jj(3)+i)/npt
300 evar(4,i) = evar(4,i)+lbuf%STRA(jj(4)+i)/npt
301 evar(5,i) = evar(5,i)+lbuf%STRA(jj(5)+i)/npt
302 evar(6,i) = evar(6,i)+lbuf%STRA(jj(6)+i)/npt
306 ELSEIF ((isolnod == 6.OR.isolnod == 8) .AND. jhbe == 15)
THEN
312 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ipt,1,1)
313 evar(1,i) = evar(1,i)+lbuf%STRA(jj(1)+i)/nptg
314 evar(2,i) = evar(2,i)+lbuf%STRA(jj(2)+i)/nptg
315 evar(3,i) = evar(3,i)+lbuf%STRA(jj(3)+i)/nptg
316 evar(4,i) = evar(4,i)+lbuf%STRA(jj(4)+i)/nptg
317 evar(5,i) = evar(5,i)+lbuf%STRA(jj(5)+i)/nptg
318 evar(6,i) = evar(6,i)+lbuf%STRA(jj(6)+i)/nptg
322 ELSEIF(mlw == 14)
THEN
327 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ipt,1,1)
328 evar(1,i) = evar(1,i) + lbuf%EPE(jj(1)+i)/nptg
329 evar(2,i) = evar(2,i) + lbuf%EPE(jj(2)+i)/nptg
330 evar(3,i) = evar(3,i) + lbuf%EPE(jj(3)+i)/nptg
334 ELSEIF (mlw == 24)
THEN
339 lbuf => elbuf_tab(ng)%BUFLY(il)%LBUF(ipt,1,1)
340 evar(1,i) = evar(1,i)+lbuf%STRA(jj(1)+i)/nptg
341 evar(2,i) = evar(2,i)+lbuf%STRA(jj(2)+i)/nptg
342 evar(3,i) = evar(3,i)+lbuf%STRA(jj(3)+i)/nptg
343 evar(4,i) = evar(4,i)+lbuf%STRA(jj(4)+i)/nptg
344 evar(5,i) = evar(5,i)+lbuf%STRA(jj(5)+i)/nptg
345 evar(6,i) = evar(6,i)+lbuf%STRA(jj(6)+i)/nptg
352 ELSEIF (itens == 4.AND.mlw == 24.AND.
353 . nint(pm(56,mt1)) == 1)
THEN
356 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
358 evar(1,i) = lbuf%DGLO(jj(1)+i)
359 evar(2,i) = lbuf%DGLO(jj(2)+i)
360 evar(3,i) = lbuf%DGLO(jj(3)+i)
361 evar(4,i) = lbuf%DGLO(jj(4)+i)
362 evar(5,i) = lbuf%DGLO(jj(5)+i)
363 evar(6,i) = lbuf%DGLO(jj(6)+i)
369 IF(el2fa(nn2+n)/=0)
THEN
371 gama(1)= gbuf%GAMA(jj(1) + i)
372 gama(2)= gbuf%GAMA(jj(2) + i)
385 CALL srota6(x,ixs(1:nixs,n),kcvt,evar(1:6,i),gama)
403 IF(isolnod == 16)
THEN
406 IF(el2fa(nn2+n)/=0)
THEN
407 tens(1,el2fa(nn2+n)) = evar(1,i)
408 tens(2,el2fa(nn2+n)) = evar(2,i)
409 tens(3,el2fa(nn2+n)) = evar(3,i)
410 tens(4,el2fa(nn2+n)) = evar(4,i)
411 tens(5,el2fa(nn2+n)) = evar(5,i)
412 tens(6,el2fa(nn2+n)) = evar(6,i)
413 tens(1,el2fa(nn2+n)+1) = evar(1,i)
414 tens(2,el2fa(nn2+n)+1) = evar(2,i)
415 tens(3,el2fa(nn2+n)+1) = evar(3,i)
416 tens(4,el2fa(nn2+n)+1) = evar(4,i)
417 tens(5,el2fa(nn2+n)+1) = evar(5,i)
418 tens(6,el2fa(nn2+n)+1) = evar(6,i)
419 tens(1,el2fa(nn2+n)+2) = evar(1,i)
420 tens(2,el2fa(nn2+n)+2) = evar(2,i)
421 tens(3,el2fa(nn2+n)+2) = evar(3,i)
422 tens(4,el2fa(nn2+n)+2) = evar(4,i)
423 tens(5,el2fa(nn2+n)+2) = evar(5,i)
424 tens(6,el2fa(nn2+n)+2) = evar(6,i)
425 tens(1,el2fa(nn2+n)+3) = evar(1,i)
426 tens(2,el2fa(nn2+n)+3) = evar(2,i)
427 tens(3,el2fa(nn2+n)+3) = evar(3,i)
428 tens(4,el2fa(nn2+n)+3) = evar(4,i)
429 tens(5,el2fa(nn2+n)+3) = evar(5,i)
430 tens(6,el2fa(nn2+n)+3) = evar(6,i)
436 IF(el2fa(nn2+n)/=0)
THEN
437 tens(1,el2fa(nn2+n)) = evar(1,i)
438 tens(2,el2fa(nn2+n)) = evar(2,i)
439 tens(3,el2fa(nn2+n)) = evar(3,i)
440 tens(4,el2fa(nn2+n)) = evar(4,i)
441 tens(5,el2fa(nn2+n)) = evar(5,i)
442 tens(6,el2fa(nn2+n)) = evar(6,i)
447 ELSEIF(isph3d == 1.AND.ity == 51)
THEN
451 iprt=ipartsp(1 + nft)
459 IF(el2fa(nn3+n)/=0)
THEN
460 tens(1,el2fa(nn3+n)) = lbuf%SIG(jj(1) + i)
461 tens(2,el2fa(nn3+n)) = lbuf%SIG(jj(2) + i)
462 tens(3,el2fa(nn3+n)) = lbuf%SIG(jj(3) + i)
463 tens(4,el2fa(nn3+n)) = lbuf%SIG(jj(4) + i)
464 tens(5,el2fa(nn3+n)) = lbuf%SIG(jj(5) + i)
465 tens(6,el2fa(nn3+n)) = lbuf%SIG(jj(6) + i)
469 ELSEIF(itens == 4.AND.mlw == 24.
470 . and.nint(pm(56,mt1)) == 1)
THEN
473 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(1,1,1)
476 IF (el2fa(nn3+n)/=0)
THEN
477 evar(1,i) = lbuf%DGLO(jj(1)+i)
478 evar(2,i) = lbuf%DGLO(jj(2)+i)
479 evar(3,i) = lbuf%DGLO(jj(3)+i)
480 evar(4,i) = lbuf%DGLO(jj(4)+i)
481 evar(5,i) = lbuf%DGLO(jj(5)+i)
482 evar(6,i) = lbuf%DGLO(jj(6)+i)
488 IF(el2fa(nn3+n)/=0)
THEN
489 tens(1,el2fa(nn3+n)) = zero
490 tens(2,el2fa(nn3+n)) = zero
491 tens(3,el2fa(nn3+n)) = zero
492 tens(4,el2fa(nn3+n)) = zero
493 tens(5,el2fa(nn3+n)) = zero
494 tens(6,el2fa(nn3+n)) = zero