45 2 EL2FA ,NBF ,TENS ,EPSDOT,IADP ,
46 3 NBF_L ,NBPART,IADG ,X ,IXC ,
47 4 IGEO ,IXTG ,IPM ,STACK,ID_ELEM ,ITY_ELEM ,INFO1,
48 5 INFO2 ,IS_WRITTEN_SHELL,IPARTC ,IPARTTG ,LAYER_INPUT ,IPT_INPUT ,
49 6 PLY_INPUT,GAUSS_INPUT,IUVAR_INPUT,H3D_PART, KEYWORD,D ,
50 7 ID ,BUFMAT ,MAT_PARAM,GEO, DRAPE_SH4N, DRAPE_SH3N, DRAPEG)
62#include "implicit_f.inc"
71#include "tabsiz_c.inc"
75 INTEGER IPARG(NPARG,*),ITENS,INVERT(*),IUVAR_INPUT,
76 . EL2FA(*),IXC(NIXC,*), IGEO(NPROPGI,*),
77 . NELCUT,NBF,IADP(*),NBF_L,NBPART,IADG(NSPMD,*),
78 . IXTG(NIXTG,*),IPM(NPROPMI,*),ID_ELEM(*),ITY_ELEM(*),
79 . INFO1,INFO2,IS_WRITTEN_SHELL(*),IPARTC(*),IPARTTG(*),H3D_PART(*),
80 . LAYER_INPUT ,IPT_INPUT,GAUSS_INPUT,PLY_INPUT,ID
81 my_real,
INTENT(IN),
TARGET :: bufmat(sbufmat)
83 . tens(3,*),epsdot(6,*),x(3,*),shell_tensor(3,*),d(3,*)
84 my_real,
INTENT(IN) :: geo(npropg,numgeo)
85 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET ::
86 TYPE (STACK_PLY) :: STACK
87 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
88 CHARACTER(LEN=NCHARLINE100):: KEYWORD
89 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
90 TYPE (DRAPEG_),
INTENT(IN) :: DRAPEG
94 my_real :: a1,a2,a3,thk,chard,factor
96 INTEGER I,J,K,N,NG,NEL,NFT,ITY,NPT,MPT,IPT,NBFUNCT,NCHARD,MLW,
97 . ILAY,IR,IS,IT,NPTR,NPTS,NPTT,NLAY,NPG,IPLY,IDRAPE,
98 . IPID,NS1,NS2,ISTRE,IADBUF,NUPARAM,IMAT,NNI,N0,
99 . IHBE,IREP,BUF,ISROT,IVISC,IGTYP,ISUBSTACK,
100 . id_ply,ipang,ippos,ipthk,offset,iselect,mat_orth,
101 . ixlay,ixfem,laynpt_max,numel_drape,sedrape,nlay_max,
102 . ipt_all,islice,pts,ipg,lens,mpt0
103 INTEGER NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10,I1
104 INTEGER PID(),MAT(),IOK_PART(MVSIZ),JJ(15)
105 my_real ,
DIMENSION(3,MVSIZ) :: STRAIN
106 my_real ,
DIMENSION(4*MVSIZ) :: XN,YN,ZN,DXN,DYN,DZN
107 my_real ,
DIMENSION(:,:) ,
ALLOCATABLE :: SIGE,SIGM,EPSM
109 TYPE(buf_lay_) ,
POINTER :: BUFLY
110 TYPE(g_bufel_) ,
POINTER :: GBUF
111 TYPE(l_bufel_) ,
POINTER :: LBUF
112 my_real,
DIMENSION(:) ,
POINTER :: uparam,dir_a,dir_b
114 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
115 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
116 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
141 DO i=1,numelc+numeltg
142 is_written_shell(i) = 0
154 isubstack = iparg(71,ng)
155 idrape = elbuf_tab(ng)%IDRAPE
156 npt = iabs(iparg(6,ng))
170 shell_tensor(1,offset+nft+i) = zero
171 shell_tensor(2,offset+nft+i) = zero
172 shell_tensor(3,offset+nft+i) = zero
177 ELSEIF (ity == 3 .OR. ity
THEN
178 gbuf => elbuf_tab(ng)%GBUF
179 nptr = elbuf_tab(ng)%NPTR
180 npts = elbuf_tab(ng)%NPTS
181 nlay = elbuf_tab(ng)%NLAY
188 IF (ihbe == 11) npg = 4
192 IF (ihbe == 30) npg = 3
195 IF (ity == 3) offset = 0
196 IF (ity == 7) offset = numelc
200 id_elem(offset+nft+i) = ixc(nixc,nft+i)
201 ity_elem(offset+nft+i) = 3
202 IF( h3d_part(ipartc(nft+i)) == 1) iok_part(i) = 1
203 ELSEIF (ity == 7)
THEN
204 id_elem(offset+nft+i) = ixtg(nixtg,nft+i)
205 ity_elem(offset+nft+i) = 7
206 IF( h3d_part(iparttg(nft+i)) == 1) iok_part(i) = 1
210 IF (mlw == 0)
GOTO 490
216 npt = iabs(iparg(6,ng))
219 IF (npt == 0) mpt = 0
221 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17)
THEN
224 ELSEIF (igtyp == 51 .OR. igtyp == 52)
THEN
225 IF(layer_input == -2)
THEN
226 npt= elbuf_tab(ng)%BUFLY(1)%NPTT
227 ELSEIF(layer_input == -3)
THEN
228 npt= elbuf_tab(ng)%BUFLY(nlay)%NPTT
229 ELSEIF(layer_input > 0 .AND. layer_input <= nlay)
THEN
230 npt= elbuf_tab(ng)%BUFLY(layer_input)%NPTT
232 IF (ply_input > 0)
THEN
235 IF (igtyp == 51)
THEN
236 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
237 ELSEIF (igtyp == 52)
THEN
238 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
240 IF (id_ply == ply_input )
THEN
241 npt= elbuf_tab(ng)%BUFLY(j)%NPTT
252 IF (ilay == -2) ilay = 1
253 IF (ilay == -3) ilay = nlay
254 IF (ipt == -2) ipt = 1
255 IF (igtyp == 51 .OR. igtyp == 52)
THEN
256 IF (ipt == -3 .AND. ilay > 0) ipt =
max(1,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
258 IF (ipt == -3) ipt =
max(1,npt)
263 IF (keyword ==
'TENS/STRESS/MEMB' .OR.
264 . keyword ==
'TENS/STRESS/BEND' .OR.
265 . keyword ==
'TENS/STRESS' .OR.
266 . keyword ==
'TENS/STRAIN' .OR.
267 . keyword ==
'TENS/MSTRAIN' )
THEN
284 IF( keyword ==
'TENS/STRAIN' .OR. keyword == 'tens/mstrain
') THEN
288.OR.
IF(IGTYP == 51 IGTYP == 52) THEN
290 LAYNPT_MAX = MAX(LAYNPT_MAX ,ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT)
293 NLAY_MAX = MAX(NLAY,NPT)
294 ALLOCATE(MATLY(MVSIZ*NLAY_MAX), THKLY(MVSIZ*NLAY_MAX*LAYNPT_MAX),
295 . POSLY(MVSIZ,NLAY_MAX*LAYNPT_MAX),THK_LY(NEL,NLAY_MAX*LAYNPT_MAX))
301 ! computing position of slice or Ply
303 NUMEL_DRAPE = NUMELTG_DRAPE
306 . ELBUF_TAB(NG),1 ,NEL ,GEO ,IGEO ,
307 . MAT ,PID ,THKLY ,MATLY ,POSLY ,
308 . IGTYP ,IXFEM ,IXLAY ,NLAY ,MPT0 ,
309 . ISUBSTACK ,STACK ,DRAPE_SH3N ,NFT ,GBUF%THK,
310 . NEL ,THK_LY ,DRAPEG%INDX_SH3N ,SEDRAPE,NUMEL_DRAPE )
312 NUMEL_DRAPE = NUMELC_DRAPE
315 . ELBUF_TAB(NG),1 ,NEL ,GEO ,IGEO ,
316 . MAT ,PID ,THKLY ,MATLY ,POSLY ,
317 . IGTYP ,IXFEM ,IXLAY ,NLAY ,MPT0 ,
318 . ISUBSTACK ,STACK ,DRAPE_SH4N ,NFT ,GBUF%THK ,
319 . NEL ,THK_LY ,DRAPEG%INDX_SH4N,SEDRAPE ,NUMEL_DRAPE )
323 IF (KEYWORD == 'tens/stress/memb
') THEN
326 VALUE(1) = GBUF%FOR(JJ(1)+I)
327 VALUE(2) = GBUF%FOR(JJ(2)+I)
328 VALUE(3) = GBUF%FOR(JJ(3)+I)
329 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
333 ELSEIF (KEYWORD == 'tens/stress/bend
') THEN
336 VALUE(1) = GBUF%MOM(JJ(1)+I)
337 VALUE(2) = GBUF%MOM(JJ(2)+I)
338 VALUE(3) = GBUF%MOM(JJ(3)+I)
339 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
344 ELSEIF (KEYWORD == 'tens/stress
') THEN ! stress output in element coordinate system
348 ALLOCATE (SIGE(NEL,3))
349 SIGE(1:NEL,1:3) = ZERO
351 IF (MPT == 0) THEN ! ILAYER=NULL, NPT=NULL
353 IF (IPT_INPUT == -2 ) THEN
354 FACTOR = -SIX ! lower
355 ELSEIF (IPT_INPUT == -3) THEN
361 SIGE(I,1) = GBUF%FOR(JJ(1)+I) + GBUF%MOM(JJ(1)+I) * FACTOR
362 SIGE(I,2) = GBUF%FOR(JJ(2)+I) + GBUF%MOM(JJ(2)+I) * FACTOR
363 SIGE(I,3) = GBUF%FOR(JJ(3)+I) + GBUF%MOM(JJ(3)+I) * FACTOR
366.AND..AND.
ELSE IF (ILAY == -1 IPLY == -1 IPT == -1) THEN
369 SIGE(I,1) = GBUF%FOR(JJ(1)+I)
370 SIGE(I,2) = GBUF%FOR(JJ(2)+I)
371 SIGE(I,3) = GBUF%FOR(JJ(3)+I)
374.AND..AND.
ELSEIF (ILAY == -1 IPLY > 0 IPT > 0) THEN
376 DO J=1,NLAY ! shells type 17,19,51 and 52 only
377.OR..OR.
IF (IGTYP == 17 IGTYP == 19 IGTYP == 51) THEN
378 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
379 ELSE IF (IGTYP == 52) THEN
380 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK) - NUMSTACK)
383.AND.
IF (ID_PLY == IPLY IPT <= ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT) THEN
384 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
385 IVISC = MAT_PARAM(IMAT)%IVISC
390 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
391 SIGE(I,1) = SIGE(I,1) + LBUF%SIG(JJ(1) + I) / NPG
392 SIGE(I,2) = SIGE(I,2) + LBUF%SIG(JJ(2) + I) / NPG
393 SIGE(I,3) = SIGE(I,3) + LBUF%SIG(JJ(3) + I) / NPG
401 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
402 SIGE(I,1) = SIGE(I,1) + LBUF%VISC(JJ(1) + I) / NPG
403 SIGE(I,2) = SIGE(I,2) + LBUF%VISC(JJ(2) + I) / NPG
404 SIGE(I,3) = SIGE(I,3) + LBUF%VISC(JJ(3) + I) / NPG
409 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
410 IF (MAT_ORTH > 0) THEN
411.AND..OR.
IF (IDRAPE > 0 (IGTYP == 51 IGTYP == 52) ) THEN
412 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)%DIRA
413 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)%DIRB
415 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRA
416 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRB
419 IF (MAT_ORTH == 2) THEN
420 CALL UROTO_TENS2D(NEL,SIGE,DIR_A)
421 ELSE IF (MAT_ORTH == 3) THEN ! anisotropic (law 58,158 only)
422 CALL UROTO_TENS2D_ANISO(NEL,SIGE,DIR_A,DIR_B)
428.AND..AND.
ELSEIF (ILAY > 0 ILAY <= NLAY IPLY == -1) THEN
429 ! /TENS/STRESS/LAYER=
430.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN ! shells type 10,11,16 only
432 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
433 IVISC = MAT_PARAM(IMAT)%IVISC
437 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
438 SIGE(I,1) = SIGE(I,1) + LBUF%SIG(JJ(1) + I) / NPG
439 SIGE(I,2) = SIGE(I,2) + LBUF%SIG(JJ(2) + I) / NPG
440 SIGE(I,3) = SIGE(I,3) + LBUF%SIG(JJ(3) + I) / NPG
448 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
449 SIGE(I,1) = SIGE(I,1) + LBUF%VISC(JJ(1) + I) / NPG
450 SIGE(I,2) = SIGE(I,2) + LBUF%VISC(JJ(2) + I) / NPG
451 SIGE(I,3) = SIGE(I,3) + LBUF%VISC(JJ(3) + I) / NPG
456 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
457 IF (MAT_ORTH > 0) THEN
458 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRA
459 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRB
461 IF (MAT_ORTH == 2) THEN ! standard orthotropic rotation
462 CALL UROTO_TENS2D(NEL,SIGE,DIR_A)
463 ELSE IF (MAT_ORTH == 3) THEN ! anisotropic (law 58,158 only)
464 CALL UROTO_TENS2D_ANISO(NEL,SIGE,DIR_A,DIR_B)
468.AND..AND.
ELSEIF (IPT > 0 ILAY ==-1 IPLY == -1) THEN ! shells type 1,9 only
470.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
471 IF (IPT <= ELBUF_TAB(NG)%BUFLY(1)%NPTT) THEN
473 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
474 IVISC = MAT_PARAM(IMAT)%IVISC
478 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
479 SIGE(I,1) = SIGE(I,1) + LBUF%SIG(JJ(1) + I) / NPG
480 SIGE(I,2) = SIGE(I,2) + LBUF%SIG(JJ(2) + I) / NPG
481 SIGE(I,3) = SIGE(I,3) + LBUF%SIG(JJ(3) + I) / NPG
489 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
490 SIGE(I,1) = SIGE(I,1) + LBUF%VISC(JJ(1) + I) / NPG
491 SIGE(I,2) = SIGE(I,2) + LBUF%VISC(JJ(2) + I) / NPG
492 SIGE(I,3) = SIGE(I,3) + LBUF%VISC(JJ(3) + I) / NPG
497 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
498 IF (MAT_ORTH == 2) THEN
499 DIR_A => ELBUF_TAB(NG)%BUFLY(1)%DIRA
500 CALL UROTO_TENS2D(NEL,SIGE,DIR_A)
506 IF (ISELECT == 1) THEN
507 CALL H3D_WRITE_SH_TENSOR_ARRAY(
508 . IOK_PART ,ISELECT ,NEL ,OFFSET ,NFT ,
509 . IS_WRITTEN_SHELL,SHELL_TENSOR,SIGE )
514 ELSEIF (KEYWORD == 'tens/mstress
') THEN ! stress output in material (orthotropic) coordinates
517 ALLOCATE (SIGM(NEL,3))
518 SIGM(1:NEL,1:3) = ZERO
520.AND..AND.
IF (ILAY == -1 IPLY > 0 IPT > 0) THEN
522 DO J=1,NLAY ! shells type 17,19,51 and 52 only
523.OR..OR.
IF (IGTYP == 17 IGTYP == 19 IGTYP == 51) THEN
524 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
525 ELSE IF (IGTYP == 52) THEN
526 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK) - NUMSTACK)
529 IF (ID_PLY == IPLY) THEN
531 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
532 IVISC = MAT_PARAM(IMAT)%IVISC
533 IF (IPT <= ELBUF_TAB(NG)%BUFLY(ILAY)%NPTT) THEN
538 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
539 SIGM(I,1) = SIGM(I,1) + LBUF%SIG(JJ(1) + I) / NPG
540 SIGM(I,2) = SIGM(I,2) + LBUF%SIG(JJ(2) + I) / NPG
541 SIGM(I,3) = SIGM(I,3) + LBUF%SIG(JJ(3) + I) / NPG
549 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
550 SIGM(I,1) = SIGM(I,1) + LBUF%VISC(JJ(1) + I) / NPG
551 SIGM(I,2) = SIGM(I,2) + LBUF%VISC(JJ(2) + I) / NPG
552 SIGM(I,3) = SIGM(I,3) + LBUF%VISC(JJ(3) + I) / NPG
561.AND..AND..AND.
ELSEIF (ILAY > 0 ILAY <= NLAY IPLY == -1 IPT == -1) THEN
563.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN ! shells type 10,11,16 only
565 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
566 IVISC = MAT_PARAM(IMAT)%IVISC
570 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,1)
571 SIGM(I,1) = SIGM(I,1) + LBUF%SIG(JJ(1) + I) / NPG
572 SIGM(I,2) = SIGM(I,2) + LBUF%SIG(JJ(2) + I) / NPG
573 SIGM(I,3) = SIGM(I,3) + LBUF%SIG(JJ(3) + I) / NPG
581 LBUF => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF(IR,IS,IPT)
582 SIGM(I,1) = SIGM(I,1) + LBUF%VISC(JJ(1) + I) / NPG
583 SIGM(I,2) = SIGM(I,2) + LBUF%VISC(JJ(2) + I) / NPG
584 SIGM(I,3) = SIGM(I,3) + LBUF%VISC(JJ(3) + I) / NPG
591.AND..AND.
ELSEIF (IPT > 0 ILAY ==-1 IPLY == -1) THEN ! shells type 1,9 only
593.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
594 IF (IPT <= ELBUF_TAB(NG)%BUFLY(1)%NPTT) THEN
596 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
597 IVISC = MAT_PARAM(IMAT)%IVISC
601 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
602 SIGM(I,1) = SIGM(I,1) + LBUF%SIG(JJ(1) + I) / NPG
603 SIGM(I,2) = SIGM(I,2) + LBUF%SIG(JJ(2) + I) / NPG
604 SIGM(I,3) = SIGM(I,3) + LBUF%SIG(JJ(3) + I) / NPG
612 LBUF => ELBUF_TAB(NG)%BUFLY(1)%LBUF(IR,IS,IPT)
613 SIGM(I,1) = SIGM(I,1) + LBUF%VISC(JJ(1) + I) / NPG
614 SIGM(I,2) = SIGM(I,2) + LBUF%VISC(JJ(2) + I) / NPG
615 SIGM(I,3) = SIGM(I,3) + LBUF%VISC(JJ(3) + I) / NPG
625 CALL H3D_WRITE_SH_TENSOR_ARRAY(
626 . IOK_PART ,ISELECT ,NEL ,OFFSET ,NFT ,
627 . IS_WRITTEN_SHELL,SHELL_TENSOR,SIGM )
631 ELSE IF (KEYWORD == 'tens/strain/memb
') THEN
637 VALUE(1) = GBUF%STRA(JJ(1)+I)
638 VALUE(2) = GBUF%STRA(JJ(2)+I)
639 VALUE(3) = GBUF%STRA(JJ(3)+I)
640 VALUE(3) = VALUE(3) * HALF
641 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
642 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
645 ELSEIF (KEYWORD == 'tens/strain/bend
') THEN ! bend
651 VALUE(1) = GBUF%STRA(JJ(6)+I) * THK
652 VALUE(2) = GBUF%STRA(JJ(7)+I) * THK
653 VALUE(3) = GBUF%STRA(JJ(8)+I) * THK
654 VALUE(3) = VALUE(3) * HALF
655 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
656 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
659 ELSEIF (KEYWORD == 'tens/strain
') THEN ! strain tensor output in element coordinate system
661 IF (MPT == 0) THEN ! ILAYER=NULL, NPT=NULL
665 FACTOR = -HALF*GBUF%THK(I)
667 FACTOR = HALF*GBUF%THK(I)
669 VALUE(1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I)
670 VALUE(2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I)
671 VALUE(3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I)
672 VALUE(3) = VALUE(3) * HALF
673 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
674 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
677.AND..AND.
ELSE IF (ILAY == -1 IPLY == -1 IPT == -1) THEN
679 VALUE(1) = GBUF%STRA(JJ(1)+I)
680 VALUE(2) = GBUF%STRA(JJ(2)+I)
681 VALUE(3) = GBUF%STRA(JJ(3)+I)
682 VALUE(3) = VALUE(3) * HALF
683 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
684 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
689.AND.
ELSE IF (IPLY > 0 IPT > 0) THEN
690.OR..OR..OR.
IF (IGTYP == 17 IGTYP == 19 IGTYP == 51 IGTYP == 52) THEN
696 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
698.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
699 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
700 ELSEIF (IGTYP == 52) THEN
701 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
703.AND.
IF (ID_PLY == IPLY IPT <= NPTT) THEN
704 ISLICE = IPT_ALL + IPT
706 LENS = NEL*GBUF%G_STRPG/NPG
710 FACTOR = POSLY(I,ISLICE)
714 VALUE(1) = VALUE(1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
715 VALUE(2) = VALUE(2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
716 VALUE(3) = VALUE(3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
718 VALUE(3) = VALUE(3) * HALF
719 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
720 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
726 FACTOR = POSLY(I,ISLICE)
727 VALUE(1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
728 VALUE(2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
729 VALUE(3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
730 VALUE(3) = VALUE(3) * HALF
731 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
732 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
736 IPT_ALL = IPT_ALL + NPTT
740.AND..AND.
ELSEIF (ILAY > 0 ILAY <= NLAY IPLY == -1) THEN
742.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
744 LENS = NEL*GBUF%G_STRPG/NPG
748 FACTOR = POSLY(I,ILAY)
753 VALUE(1) = VALUE(1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
754 VALUE(2) = VALUE(2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
755 VALUE(3) = VALUE(3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
757 VALUE(1) = VALUE(1)/NPG
758 VALUE(2) = VALUE(2)/NPG
759 VALUE(3) = VALUE(3)/NPG
760 VALUE(3) = VALUE(3) * HALF
761 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
762 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
768 FACTOR = POSLY(I,ILAY)
770 VALUE(1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
771 VALUE(2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
772 VALUE(3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
773 VALUE(3) = VALUE(3) * HALF
774 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
775 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
780.AND.
ELSEIF (IPT <= MPT IPT > 0) THEN
782.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
784 LENS = NEL*GBUF%G_STRPG/NPG
788 FACTOR = POSLY(I,IPT)
793 VALUE(1) = VALUE(1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
794 VALUE(2) = VALUE(2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
795 VALUE(3) = VALUE(3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
797 VALUE(3) = VALUE(3) * HALF
798 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
799 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
805 FACTOR = POSLY(I,IPT)
807 VALUE(1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
808 VALUE(2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
809 VALUE(3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
810 VALUE(3) = VALUE(3) * HALF
811 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
812 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
817 DEALLOCATE(MATLY, THKLY,POSLY,THK_LY)
819 ELSEIF (KEYWORD == 'tens/mstrain
') THEN ! strain tensor output in material coordinate system
821 ALLOCATE (EPSM(NEL,3))
824.AND.
IF (IPLY > 0 IPT > 0) THEN
826.OR..OR..OR.
IF (IGTYP == 17 IGTYP == 19 IGTYP == 51 IGTYP == 52) THEN
832 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
834.OR..OR.
IF (IGTYP == 17 IGTYP == 19 IGTYP == 51) THEN
835 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
836 ELSEIF (IGTYP == 52) THEN
837 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
839.AND.
IF (ID_PLY == IPLY IPT <= NPTT) THEN
841 ISLICE = IPT_ALL + IPT
843 LENS = NEL*GBUF%G_STRPG/NPG
846 FACTOR = POSLY(I,ISLICE)
850 EPSM(I,1) = EPSM(I,1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
851 EPSM(I,2) = EPSM(I,2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
852 EPSM(I,3) = EPSM(I,3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
854 EPSM(I,1) = EPSM(I,1)/NPG
855 EPSM(I,2) = EPSM(I,2)/NPG
856 EPSM(I,3) = HALF*EPSM(I,3)/NPG
861 FACTOR = POSLY(I,ISLICE)
862 EPSM(I,1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
863 EPSM(I,2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
864 EPSM(I,3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
865 EPSM(I,3) = EPSM(I,3) * HALF
868 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
869 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
870 IF (MAT_ORTH > 0) THEN
871.AND..OR.
IF (IDRAPE > 0 (IGTYP == 51 IGTYP == 52) ) THEN
872 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)%DIRA
873 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%LBUF_DIR(IPT)%DIRB
875 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRA
876 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRB
879 IF (MAT_ORTH == 2) THEN
880 CALL ROTO_TENS2D(NEL,EPSM,DIR_A)
881 ELSE IF (MAT_ORTH == 3) THEN ! anisotropic (law 58,158 only)
882 CALL ROTO_TENS2D_ANISO(NEL,EPSM,DIR_A,DIR_B)
885 IPT_ALL = IPT_ALL + NPTT
889.AND..AND..AND.
ELSEIF (ILAY > 0 ILAY <= NLAY IPLY == -1 IPT == -1) THEN
891.OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16) THEN
893 LENS = NEL*GBUF%G_STRPG/NPG
896 FACTOR = POSLY(I,ILAY)
900 EPSM(I,1) = EPSM(I,1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
901 EPSM(I,2) = EPSM(I,2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
902 EPSM(I,3) = EPSM(I,3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
904 EPSM(I,1) = EPSM(I,1)/NPG
905 EPSM(I,2) = EPSM(I,2)/NPG
906 EPSM(I,3) = HALF*EPSM(I,3)/NPG
911 FACTOR = POSLY(I,ILAY)
912 EPSM(I,1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
913 EPSM(I,2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
914 EPSM(I,3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
915 EPSM(I,3) = EPSM(I,3) * HALF
918 IMAT = ELBUF_TAB(NG)%BUFLY(ILAY)%IMAT
919 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
920 IF (MAT_ORTH > 0) THEN
921 DIR_A => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRA
922 DIR_B => ELBUF_TAB(NG)%BUFLY(ILAY)%DIRB
924 IF (MAT_ORTH == 2) THEN
925 CALL ROTO_TENS2D(NEL,EPSM,DIR_A)
926 ELSE IF (MAT_ORTH == 3) THEN ! anisotropic (law 58,158 only)
927 CALL ROTO_TENS2D_ANISO(NEL,EPSM,DIR_A,DIR_B)
931.AND..AND..AND.
ELSEIF (IPT > 0 IPT <= MPT IPLY == -1 ILAY == -1) THEN
933.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
935 LENS = NEL*GBUF%G_STRPG/NPG
938 FACTOR = POSLY(I,IPT)
942 EPSM(I,1) = EPSM(I,1)+ GBUF%STRPG(PTS + JJ(1)+I) + FACTOR*GBUF%STRPG(PTS + JJ(6)+I) * THK
943 EPSM(I,2) = EPSM(I,2)+ GBUF%STRPG(PTS + JJ(2)+I) + FACTOR*GBUF%STRPG(PTS + JJ(7)+I) * THK
944 EPSM(I,3) = EPSM(I,3)+ GBUF%STRPG(PTS + JJ(3)+I) + FACTOR*GBUF%STRPG(PTS + JJ(8)+I) * THK
946 EPSM(I,1) = EPSM(I,1)/NPG
947 EPSM(I,2) = EPSM(I,2)/NPG
948 EPSM(I,3) = HALF*EPSM(I,3)/NPG
953 FACTOR = POSLY(I,IPT)
954 EPSM(I,1) = GBUF%STRA(JJ(1)+I) + FACTOR*GBUF%STRA(JJ(6)+I) * THK
955 EPSM(I,2) = GBUF%STRA(JJ(2)+I) + FACTOR*GBUF%STRA(JJ(7)+I) * THK
956 EPSM(I,3) = GBUF%STRA(JJ(3)+I) + FACTOR*GBUF%STRA(JJ(8)+I) * THK
957 EPSM(I,3) = EPSM(I,3) * HALF
960 IMAT = ELBUF_TAB(NG)%BUFLY(1)%IMAT
961 MAT_ORTH = MAT_PARAM(IMAT)%ORTHOTROPY
962 IF (MAT_ORTH == 2) THEN
963 DIR_A => ELBUF_TAB(NG)%BUFLY(1)%DIRA
964 CALL ROTO_TENS2D(NEL,EPSM,DIR_A)
969 CALL H3D_WRITE_SH_TENSOR_ARRAY(
970 . IOK_PART ,ISELECT ,NEL ,OFFSET ,NFT ,
971 . IS_WRITTEN_SHELL,SHELL_TENSOR,EPSM )
974 DEALLOCATE(MATLY, THKLY,POSLY,THK_LY)
976 ELSEIF (KEYWORD == 'tens/epsdot/memb
') THEN
982 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
983 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
984 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
985 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
989 ELSEIF (KEYWORD == 'tens/epsdot/bend
') THEN
993 VALUE(1) = EPSDOT(4,I+NFT+OFFSET)
994 VALUE(2) = EPSDOT(5,I+NFT+OFFSET)
995 VALUE(3) = EPSDOT(6,I+NFT+OFFSET) * HALF
996 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1000 ELSEIF (KEYWORD == 'tens/epsdot
') THEN
1003.AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1) THEN
1008 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1009 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1010 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1011 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
1012 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1015.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
1016.OR..OR.
IF (IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
1018 IPTHK = IPANG + NLAY
1019 IPPOS = IPTHK + NLAY
1021.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
1022 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
1023 ELSEIF (IGTYP == 52) THEN
1024 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
1026 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1028.AND.
IF (ID_PLY == IPLY IPT <= NPTT) THEN
1029 A2 = STACK%GEO(IPPOS+J,ISUBSTACK)+
1030 . HALF*(((2*IPT-ONE)/NPTT)-ONE) *
1031 . STACK%GEO(IPTHK+J,ISUBSTACK)
1034 VALUE(1) = EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1035 VALUE(2) = EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1036 VALUE(3) =(EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1037 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,
1038 . SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1045.AND..AND..AND..AND.
ELSEIF (IPLY == -1 ILAY <= NLAY ILAY > 0 IPT <= MPT IPT > 0 ) THEN
1046.OR.
IF (IGTYP == 51 IGTYP == 52) THEN
1052 IPTHK = IPANG + NLAY
1053 IPPOS = IPTHK + NLAY
1054.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
1055 ID_PLY = IGEO(1,STACK%IGEO(2+ILAY,ISUBSTACK))
1056 ELSEIF (IGTYP == 52) THEN
1057 ID_PLY = PLY_INFO(1,STACK%IGEO(2+ILAY,ISUBSTACK)-NUMSTACK)
1059 BUFLY => ELBUF_TAB(NG)%BUFLY(ILAY)
1061 IF (IPT <= NPTT) THEN
1063 A2 = STACK%GEO(IPPOS+ILAY,ISUBSTACK)+
1064 . HALF*(((2*IPT-ONE)/NPTT)-ONE) *
1065 . STACK%GEO(IPTHK+ILAY,ISUBSTACK)
1069 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1070 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1071 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1072 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1078.AND..AND..AND.
ELSEIF (IPLY == -1 ILAY <= NLAY ILAY > 0 IPT == -1 ) THEN
1079.OR..OR..OR.
IF (IGTYP == 10 IGTYP == 11 IGTYP == 16 IGTYP == 17) THEN
1081 A2 = HALF*(((2*ILAY-ONE)/NLAY)-ONE)
1085 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1086 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1087 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1088 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1091.OR.
ELSEIF (IGTYP == 51 IGTYP == 52) THEN
1093 A2 = STACK%GEO(IPPOS+ILAY,ISUBSTACK)+
1094 . HALF*(((2*IPT-ONE)/NPTT)-ONE) *
1095 . STACK%GEO(IPTHK+ILAY,ISUBSTACK)
1099 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1100 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1101 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1102 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1107.AND.
ELSEIF ( IPT <= MPT IPT > 0) THEN
1109 A2 = HALF*(((2*IPT-ONE)/MPT)-ONE)
1110.OR.
IF (IGTYP == 1 IGTYP == 9) THEN
1113 VALUE(1) = A1*EPSDOT(1,I+NFT+OFFSET) + A2*EPSDOT(4,I+NFT+OFFSET)*THK
1114 VALUE(2) = A1*EPSDOT(2,I+NFT+OFFSET) + A2*EPSDOT(5,I+NFT+OFFSET)*THK
1115 VALUE(3) = (A1*EPSDOT(3,I+NFT+OFFSET) + A2*EPSDOT(6,I+NFT+OFFSET)*THK)* HALF
1116 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1122 ELSE IF (KEYWORD == 'tens/strain_eng
') THEN
1124 IF (ITY == 3 ) THEN !4n
1158 CALL SH4_TSTRAIN(XN,YN,ZN,DXN,DYN,DZN,STRAIN,NEL)
1160 VALUE(1:3)= STRAIN(1:3,I)
1161 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1164 ELSEIF (ITY == 7) THEN
1191 CALL SH3_TSTRAIN(XN,YN,ZN,DXN,DYN,DZN,STRAIN,NEL,IHBE)
1193 VALUE(1:3)= STRAIN(1:3,I)
1194 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1200 ELSEIF (KEYWORD == 'tens/stress/tmax
') THEN
1203 VALUE(1:3) = GBUF%TM_SIG1(JJ(1:3) + I)
1204 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1208 ELSEIF (KEYWORD == 'tens/stress/tmin
') THEN
1211 VALUE(1:3) = GBUF%TM_SIG3(JJ(1:3) + I)
1212 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1216 ELSEIF (KEYWORD == 'tens/strain/tmax
') THEN
1219 VALUE(1:3) = GBUF%TM_STRA1(JJ(1:3) + I)
1220 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1224 ELSEIF (KEYWORD == 'tens/strain/tmin
') THEN
1227 VALUE(1:3) = GBUF%TM_STRA3(JJ(1:3) + I)
1228 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,
1232 ELSEIF (KEYWORD == 'tens/bstress
') THEN
1236 IADBUF = IPM(7,IMAT)
1237 NUPARAM= IPM(9,IMAT)
1238 UPARAM => BUFMAT(IADBUF:IADBUF+NUPARAM)
1239 NBFUNCT = UPARAM(25)
1240 NCHARD = 34 + 2*NBFUNCT + 22
1241 CHARD = UPARAM (NCHARD)
1242 ELSEIF (MLW == 36) THEN
1244 IADBUF = IPM(7,IMAT)
1245 NUPARAM= IPM(9,IMAT)
1246 UPARAM => BUFMAT(IADBUF:IADBUF+NUPARAM)
1248 NCHARD = 2*NBFUNCT + 14
1249 CHARD = UPARAM (NCHARD)
1251.AND..AND.
IF ( ILAY == -1 IPT == -1 IPLY == -1) THEN !global value = mean on gauss points IPs and layers
1252 IF(ID == -1) THEN ! sum of all backstresses
1253.AND.
IF(MLW == 36 CHARD > ZERO) THEN
1256 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1261 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1263 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG/NPTT/NLAY
1269 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1271 ELSEIF(MLW == 78) THEN
1274 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1279 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1281 VALUE(K) = VALUE(K) + (LBUF%SIGA(JJ(K) + I)+LBUF%SIGB(JJ(K) + I))/NPG/NPTT/NLAY
1287 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1289.AND.
ELSEIF(MLW == 87 CHARD > ZERO) THEN
1290 !SIGBXX(I) = SIGB(I,1) + SIGB(I,4) + SIGB(I,7) + SIGB(I,10)
1291 !SIGBYY(I) = SIGB(I,2) + SIGB(I,5) + SIGB(I,8) + SIGB(I,11)
1292 !SIGBXY(I) = SIGB(I,3) + SIGB(I,6) + SIGB(I,9) + SIGB(I,12)
1295 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1300 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1302 VALUE(K) = VALUE(K) + (LBUF%SIGB(JJ(K) + I )
1303 . +LBUF%SIGB(JJ(K+3) + I )
1304 . +LBUF%SIGB(JJ(K+6) + I )
1305 . +LBUF%SIGB(JJ(K+9) + I ))/NPG/NPTT/NLAY
1311 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1314 ELSEIF(ID > 0) THEN !!
1315.AND.
IF(MLW == 36 CHARD > ZERO) THEN ! forcement ID=1 y a qu une BS
1318 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1323 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1325 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG/NPTT/NLAY
1331 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1333 ELSEIF(MLW == 78) THEN
1337 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1342 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1344 VALUE(K) = VALUE(K) + LBUF%SIGA(JJ(K) + I) /NPG/NPTT/NLAY
1350 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1352 ELSEIF(ID == 2) THEN
1355 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1360 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1362 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I) /NPG/NPTT/NLAY
1368 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1370 ELSEIF(ID == 3) THEN
1373 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1378 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1380 VALUE(K) = VALUE(K) + LBUF%SIGC(JJ(K) + I) /NPG/NPTT/NLAY
1386 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1389.AND.
ELSEIF(MLW == 87 CHARD > ZERO) THEN
1393 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1398 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1400 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I ) /NPG/NPTT/NLAY
1406 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1408 ELSEIF(ID == 2) THEN
1411 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1416 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1418 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+3) + I) /NPG/NPTT/NLAY
1424 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1426 ELSEIF(ID == 3) THEN
1429 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1434 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1436 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+6) + I) /NPG/NPTT/NLAY
1442 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1444 ELSEIF( ID == 4) THEN
1447 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1452 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1454 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+9) + I)/NPG/NPTT/NLAY
1460 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE )
1468.AND..AND.
ELSEIF ( IPLY > 0 IPT <= MPT IPT > 0 ) THEN
1471.OR.
IF (IGTYP == 17 IGTYP == 51) THEN
1472 ID_PLY = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
1473 ELSEIF (IGTYP == 52) THEN
1474 ID_PLY = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK) - NUMSTACK)
1476 IF (ID_PLY == IPLY) THEN
1477 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1481.AND..OR..AND.
IF (MLW == 36 ( ID == -1 ID == 1) CHARD > ZERO) THEN
1485 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1487 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1491 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1496 ELSEIF (MLW == 78) THEN
1497 IF(ID == -1) THEN ! somme of all backstresses
1501 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1503 VALUE(K) = VALUE(K) + (LBUF%SIGA(JJ(K) + I)+LBUF%SIGB(JJ(K) + I))/NPG
1507 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1509 ELSEIF(ID ==1 ) THEN
1513 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1515 VALUE(K) = VALUE(K) + LBUF%SIGA(JJ(K) + I)/NPG
1519 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1521 ELSEIF(ID ==2 ) THEN
1525 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1527 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1531 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1534 ELSEIF(ID ==3 ) THEN
1538 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1540 VALUE(K) = VALUE(K) + LBUF%SIGC(JJ(K) + I)/NPG
1544 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1550.AND.
ELSEIF( MLW == 87 CHARD > ZERO) THEN
1551 IF(ID == -1) THEN ! somme of all backstresses
1555 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1557 VALUE(K) = VALUE(K) + (LBUF%SIGB(JJ(K) + I )
1558 . +LBUF%SIGB(JJ(K+3) + I )
1559 . +LBUF%SIGB(JJ(K+6) + I )
1560 . +LBUF%SIGB(JJ(K+9) + I ))/NPG
1565 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1567 ELSEIF(ID ==1 ) THEN
1571 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1573 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1577 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1579 ELSEIF(ID ==2 ) THEN
1583 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1585 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+3) + I)/NPG
1589 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1591 ELSEIF(ID ==3 ) THEN
1595 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1597 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+6) + I)/NPG
1601 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1603 ELSEIF(ID ==4 ) THEN
1607 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1609 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+9) + I)/NPG
1613 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1617 END IF !(ID_PLY == IPLY
1622.AND..AND..AND.
ELSEIF (ILAY > 0 ILAY <= NLAY IPT <= MPT IPT > 0 ) THEN
1624 IF(IGTYP == 9) J = 1
1625 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1629.AND..AND.
IF (MLW == 36 (ID==-1 . OR .ID==1) CHARD > ZERO) THEN
1633 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1635 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1639 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1644 ELSEIF (MLW == 78) THEN
1645 IF(ID == -1) THEN ! somme of all backstresses
1649 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1651 VALUE(K) = VALUE(K) + (LBUF%SIGA(JJ(K) + I)+LBUF%SIGB(JJ(K) + I))/NPG
1655 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1657 ELSEIF(ID ==1 ) THEN
1661 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1663 VALUE(K) = VALUE(K) + LBUF%SIGA(JJ(K) + I)/NPG
1667 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1669 ELSEIF(ID ==2 ) THEN
1673 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1675 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1679 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1681 ELSEIF(ID ==3 ) THEN
1685 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1687 VALUE(K) = VALUE(K) + LBUF%SIGC(JJ(K) + I)/NPG
1691 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1697.AND.
ELSEIF( MLW == 87 CHARD > ZERO) THEN
1698 IF(ID == -1) THEN ! somme of all backstresses
1702 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1704 VALUE(K) = VALUE(K) + (LBUF%SIGB(JJ(K) + I )
1705 . +LBUF%SIGB(JJ(K+3) + I )
1706 . +LBUF%SIGB(JJ(K+6) + I )
1707 . +LBUF%SIGB(JJ(K+9) + I ))/NPG
1712 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1714 ELSEIF(ID ==1 ) THEN
1718 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1720 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1724 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1726 ELSEIF(ID ==2 ) THEN
1730 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1732 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+3) + I)/NPG
1736 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1738 ELSEIF(ID ==3 ) THEN
1742 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1744 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+6) + I)/NPG
1748 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1750 ELSEIF(ID ==4 ) THEN
1754 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1756 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+9) + I)/NPG
1760 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1767.AND..AND..AND.
ELSEIF (IPLY == -1 ILAY <= NLAY ILAY > 0 IPT == -1 ) THEN
1768.OR..OR.
IF (IGTYP == 9 IGTYP == 10 IGTYP == 11 ) THEN
1769 ! output in orthotopic frame / elementary
1771 IF(IGTYP == 9) J = 1
1772 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1777.AND..OR..AND.
IF (MLW == 36 (ID==-1 ID==1) CHARD > ZERO) THEN ! only one Bstress
1782 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1784 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG/NPTT
1789 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1795 ELSEIF (MLW == 78) THEN
1796 IF(ID == -1) THEN ! somme of all backstresses
1801 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1803 VALUE(K) = VALUE(K) + (LBUF%SIGA(JJ(K) + I)+LBUF%SIGB(JJ(K) + I))/NPG/NPTT
1808 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1810 ELSEIF(ID ==1 ) THEN
1815 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1817 VALUE(K) = VALUE(K) + LBUF%SIGA(JJ(K) + I)/NPG/NPTT
1822 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1824 ELSEIF(ID ==2 ) THEN
1829 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1831 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG/NPTT
1836 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1838 ELSEIF(ID ==3 ) THEN
1843 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1845 VALUE(K) = VALUE(K) + LBUF%SIGC(JJ(K) + I)/NPG/NPTT
1850 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1856.AND.
ELSEIF( MLW == 87 CHARD > ZERO) THEN
1857 IF(ID == -1) THEN ! somme of all backstresses
1862 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1864 VALUE(K) = VALUE(K) + (LBUF%SIGB(JJ(K) + I )
1865 . +LBUF%SIGB(JJ(K+3) + I )
1866 . +LBUF%SIGB(JJ(K+6) + I )
1867 . +LBUF%SIGB(JJ(K+9) + I ))/NPG/NPTT
1873 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1875 ELSEIF(ID ==1 ) THEN
1880 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1882 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG/NPTT
1887 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1889 ELSEIF(ID ==2 ) THEN
1894 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1896 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+3) + I )/NPG/NPTT
1901 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1903 ELSEIF(ID ==3 ) THEN
1908 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1910 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+6) + I )/NPG/NPTT
1915 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1917 ELSEIF(ID ==4 ) THEN
1922 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IT)
1924 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+9) + I )/NPG
1929 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1937.AND..AND..AND.
ELSE IF(ILAY == -1 IPT > 0 IPT<=MPT IPLY == -1 ) THEN ! output for each layer/PLY as if LAYER==ALL
1939 BUFLY => ELBUF_TAB(NG)%BUFLY(J)
1941 IF (IPT <= NPTT ) THEN
1945.AND..OR..AND.
IF (MLW == 36 (ID==-1 ID==1) CHARD > ZERO) THEN
1949 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1951 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1955 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1960 ELSEIF (MLW == 78) THEN
1961 IF(ID == -1) THEN ! somme of all backstresses
1965 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1967 VALUE(K) = VALUE(K) + (LBUF%SIGA(JJ(K) + I)+LBUF%SIGB(JJ(K) + I))/NPG
1971 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1973 ELSEIF(ID ==1 ) THEN
1977 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1979 VALUE(K) = VALUE(K) + LBUF%SIGA(JJ(K) + I)/NPG
1983 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1985 ELSEIF(ID ==2 ) THEN
1989 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
1991 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I)/NPG
1995 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
1997 ELSEIF(ID ==3 ) THEN
2001 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2003 VALUE(K) = VALUE(K) + LBUF%SIGC(JJ(K) + I)/NPG
2007 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2013.AND.
ELSEIF( MLW == 87 CHARD > ZERO) THEN
2014 IF(ID == -1) THEN ! somme of all backstresses
2018 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2020 VALUE(K) = VALUE(K) + (LBUF%SIGB(JJ(K) + I )
2021 . +LBUF%SIGB(JJ(K+3) + I )
2022 . +LBUF%SIGB(JJ(K+6) + I )
2023 . +LBUF%SIGB(JJ(K+9) + I ))/NPG
2028 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2030 ELSEIF(ID ==1 ) THEN
2034 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2036 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K) + I )/NPG
2040 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2042 ELSEIF(ID ==2 ) THEN
2046 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2048 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+3) + I )/NPG
2052 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2054 ELSEIF(ID ==3 ) THEN
2058 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2060 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+6) + I )/NPG
2064 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2066 ELSEIF(ID ==4 ) THEN
2070 LBUF => ELBUF_TAB(NG)%BUFLY(J)%LBUF(IR,IS,IPT)
2072 VALUE(K) = VALUE(K) + LBUF%SIGB(JJ(K+9) + I )/NPG
2076 CALL H3D_WRITE_SH_TENSOR(IOK_PART,ISELECT,IS_WRITTEN_SHELL,SHELL_TENSOR,I,OFFSET,NFT,VALUE)
2080 ENDIF! (IPT <= NPTT )
2122 ELSEIF (ITY == 50) THEN
2131 ENDIF ! IF (MLW /= 13)
2132 ENDIF ! IF(ITY == 2)
subroutine h3d_shell_tensor(elbuf_tab, shell_tensor, iparg, itens, invert, nelcut, el2fa, nbf, tens, epsdot, iadp, nbf_l, nbpart, iadg, x, ixc, igeo, ixtg, ipm, stack, id_elem, ity_elem, info1, info2, is_written_shell, ipartc, iparttg, layer_input, ipt_input, ply_input, gauss_input, iuvar_input, h3d_part, keyword, d, id, bufmat, mat_param, geo, drape_sh4n, drape_sh3n, drapeg)