46 2 EL2FA ,NBF ,TENS ,EPSDOT,IADP ,
47 3 NBF_L ,NBPART,IADG ,X ,IXC ,
48 4 IGEO ,IXTG ,IPM ,STACK,ID_ELEM ,ITY_ELEM ,INFO1,
49 5 INFO2 ,IS_WRITTEN_SHELL,IPARTC ,IPARTTG ,LAYER_INPUT ,IPT_INPUT ,
50 6 PLY_INPUT,GAUSS_INPUT,IUVAR_INPUT,H3D_PART, KEYWORD,D ,
51 7 ID ,BUFMAT ,MAT_PARAM,GEO, DRAPE_SH4N, DRAPE_SH3N, DRAPEG)
60 use element_mod ,
only : nixc,nixtg
64#include "implicit_f.inc"
73#include "tabsiz_c.inc"
77 INTEGER IPARG(NPARG,*),ITENS,INVERT(*),IUVAR_INPUT,
78 . EL2FA(*),IXC(NIXC,*), IGEO(NPROPGI,*),
79 . ,NBF,IADP(*),NBF_L,NBPART,IADG(NSPMD,*),
80 . IXTG(NIXTG,*),IPM(NPROPMI,*),ID_ELEM(*),ITY_ELEM(*),
81 . INFO1,INFO2,IS_WRITTEN_SHELL(*),IPARTC(*),IPARTTG(*),H3D_PART(*),
82 . LAYER_INPUT ,IPT_INPUT,GAUSS_INPUT,PLY_INPUT,ID
83 my_real,
INTENT(IN),
TARGET :: bufmat(sbufmat)
85 . tens(3,*),epsdot(6,*),x(3,*),shell_tensor(3,*),d(3,*)
86 my_real,
INTENT(IN) :: geo(npropg,numgeo)
87 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
88 TYPE (STACK_PLY) :: STACK
89 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
90 CHARACTER(LEN=NCHARLINE100):: KEYWORD
91 TYPE (DRAPE_) ,
INTENT(IN) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
92 TYPE (DRAPEG_),
INTENT(IN) ::
96 my_real :: a1,a2,a3,thk,chard,factor,factor_n,zshift
98 INTEGER I,J,K,N,NG,NEL,NFT,ITY,NPT,MPT,IPT,NBFUNCT,NCHARD,MLW,
103 . ixlay,ixfem,laynpt_max,numel_drape,sedrape,nlay_max,
104 . ipt_all,islice,pts,ipg,lens,mpt0
105 INTEGER NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10
106 INTEGER PID(MVSIZ),MAT(MVSIZ),IOK_PART(MVSIZ),JJ(15)
107 my_real ,
DIMENSION(3,MVSIZ) :: STRAIN
108 my_real ,
DIMENSION(4*MVSIZ) :: XN,YN,ZN,DXN,DYN,DZN
109 my_real ,
DIMENSION(:,:) ,
ALLOCATABLE :: SIGE,SIGM,EPSM
111 TYPE(buf_lay_) ,
POINTER ::
112 TYPE(g_bufel_) ,
POINTER :: GBUF
113 TYPE(l_bufel_) ,
POINTER :: LBUF
114 my_real,
DIMENSION(:) ,
POINTER :: uparam,dir_a,dir_b
116 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
117 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
118 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
143 DO i=1,numelc+numeltg
144 is_written_shell(i) = 0
156 isubstack = iparg(71,ng)
157 idrape = elbuf_tab(ng)%IDRAPE
158 npt = iabs(iparg(6,ng))
172 shell_tensor(1,offset+nft+i) = zero
173 shell_tensor(2,offset+nft+i) = zero
174 shell_tensor(3,offset+nft+i) = zero
179 ELSEIF (ity == 3 .OR. ity == 7)
THEN
180 gbuf => elbuf_tab(ng)%GBUF
181 nptr = elbuf_tab(ng)%NPTR
182 npts = elbuf_tab(ng)%NPTS
183 nlay = elbuf_tab(ng)%NLAY
190 IF (ihbe == 11) npg = 4
194 IF (ihbe == 30) npg = 3
197 IF (ity == 3) offset = 0
198 IF (ity == 7) offset = numelc
202 id_elem(offset+nft+i) = ixc(nixc,nft+i)
203 ity_elem(offset+nft+i) = 3
204 IF( h3d_part(ipartc(nft+i)) == 1) iok_part(i) = 1
205 ELSEIF (ity == 7)
THEN
206 id_elem(offset+nft+i) = ixtg(nixtg,nft+i)
207 ity_elem(offset+nft+i) = 7
208 IF( h3d_part(iparttg(nft+i)) == 1) iok_part(i) = 1
212 IF (mlw == 0)
GOTO 490
218 npt = iabs(iparg(6,ng))
221 IF (npt == 0) mpt = 0
223 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17)
THEN
226 ELSEIF (igtyp == 51 .OR. igtyp == 52)
THEN
227 IF(layer_input == -2)
THEN
228 npt= elbuf_tab(ng)%BUFLY(1)%NPTT
229 ELSEIF(layer_input == -3)
THEN
230 npt= elbuf_tab(ng)%BUFLY(nlay)%NPTT
231 ELSEIF(layer_input > 0 .AND. layer_input <= nlay)
THEN
232 npt= elbuf_tab(ng)%BUFLY(layer_input)%NPTT
234 IF (ply_input > 0)
THEN
237 IF (igtyp == 51)
THEN
238 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
239 ELSEIF (igtyp == 52)
THEN
240 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
242 IF (id_ply == ply_input )
THEN
243 npt= elbuf_tab(ng)%BUFLY(j)%NPTT
254 IF (ilay == -2) ilay = 1
255 IF (ilay == -3) ilay = nlay ! upper
256 IF (ipt == -2) ipt = 1
257 IF (igtyp == 51 .OR. igtyp == 52)
THEN
258 IF (ipt == -3 .AND. ilay > 0) ipt =
max(1,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
260 IF (ipt == -3) ipt =
max(1,npt)
265 IF (keyword ==
'TENS/STRESS/MEMB' .OR.
266 . keyword ==
'TENS/STRESS/BEND' .OR.
267 . keyword ==
'TENS/STRESS' .OR.
268 . keyword ==
'TENS/STRAIN' .OR.
269 . keyword ==
'TENS/MSTRAIN' )
THEN
285 zshift = geo(199, ipid)
287 IF( keyword ==
'TENS/STRAIN' .OR. keyword ==
'TENS/MSTRAIN')
THEN
291 IF(igtyp == 51 .OR. igtyp == 52)
THEN
293 laynpt_max =
max(laynpt_max ,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
296 nlay_max =
max(nlay,npt)
297 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
298 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel,nlay_max*laynpt_max))
306 numel_drape = numeltg_drape
309 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
310 . mat ,pid ,thkly ,matly ,posly ,
311 . igtyp ,ixfem ,ixlay ,nlay ,mpt0 ,
312 . isubstack ,stack ,drape_sh3n ,nft ,gbuf%THK,
313 . nel ,thk_ly ,drapeg%INDX_SH3N ,sedrape,numel_drape )
315 numel_drape = numelc_drape
318 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
319 . mat ,pid ,thkly ,matly ,posly ,
320 . igtyp ,ixfem ,ixlay ,nlay ,mpt0 ,
321 . isubstack ,stack ,drape_sh4n ,nft ,gbuf%THK ,
322 . nel ,thk_ly ,drapeg%INDX_SH4N,sedrape ,numel_drape )
326 IF (keyword ==
'TENS/STRESS/MEMB')
THEN
329 value(1) = gbuf%FOR(jj(1)+i)
330 value(2) = gbuf%FOR(jj(2)+i)
331 value(3) = gbuf%FOR(jj(3)+i)
336 ELSEIF (keyword ==
'TENS/STRESS/BEND')
THEN
339 value(1) = gbuf%MOM(jj(1)+i)
340 value(2) = gbuf%MOM(jj(2)+i)
341 value(3) = gbuf%MOM(jj(3)+i)
347 ELSEIF (keyword ==
'TENS/STRESS')
THEN
351 ALLOCATE (sige(nel,3))
352 sige(1:nel,1:3) = zero
356 IF (ipt_input == -2 )
THEN
358 factor_n = one + six*zshift
359 ELSEIF (ipt_input == -3)
THEN
361 factor_n = one - six*zshift
367 sige(i,1) = gbuf%FOR(jj(1)+i)*factor_n + gbuf%MOM(jj(1)+i) * factor
368 sige(i,2) = gbuf%FOR(jj(2)+i)*factor_n + gbuf%MOM(jj(2)+i) * factor
369 sige(i,3) = gbuf%FOR(jj(3)+i)*factor_n + gbuf%MOM(jj(3)+i) * factor
372 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1)
THEN
375 sige(i,1) = gbuf%FOR(jj(1)+i)
376 sige(i,2) = gbuf%FOR(jj(2)+i)
377 sige(i,3) = gbuf%FOR(jj(3)+i)
380 ELSEIF (ilay == -1 .AND. iply > 0 .AND. ipt > 0)
THEN
383 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51)
THEN
384 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
385 ELSE IF (igtyp == 52)
THEN
386 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack) - numstack)
389 IF (id_ply == iply .AND. ipt <= elbuf_tab(ng)%BUFLY(ilay)%NPTT)
THEN
390 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
391 ivisc = mat_param(imat)%IVISC
396 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
397 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
398 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
399 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
407 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
408 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
409 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
410 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
415 mat_orth = mat_param(imat)%ORTHOTROPY
416 IF (mat_orth > 0)
THEN
417 IF (idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52) )
THEN
418 dir_a => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRA
419 dir_b => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRB
421 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
422 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
425 IF (mat_orth == 2)
THEN
427 ELSE IF (mat_orth == 3)
THEN
434 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1)
THEN
436 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
438 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
439 ivisc = mat_param(imat)%IVISC
443 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
444 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
445 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
446 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
454 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
455 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
456 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
457 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
462 mat_orth = mat_param(imat)%ORTHOTROPY
463 IF (mat_orth > 0)
THEN
464 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
465 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
467 IF (mat_orth == 2)
THEN
469 ELSE IF (mat_orth == 3)
THEN
474 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1)
THEN
476 IF (igtyp == 1 .OR. igtyp == 9)
THEN
477 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT)
THEN
479 imat = elbuf_tab(ng)%BUFLY(1)%IMAT
480 ivisc = mat_param(imat)%IVISC
484 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
485 sige(i,1) = sige(i,1) + lbuf%SIG(jj(1) + i) / npg
486 sige(i,2) = sige(i,2) + lbuf%SIG(jj(2) + i) / npg
487 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
495 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
496 sige(i,1) = sige(i,1) + lbuf%VISC(jj(1) + i) / npg
497 sige(i,2) = sige(i,2) + lbuf%VISC(jj(2) + i) / npg
498 sige(i,3) = sige(i,3) + lbuf%VISC(jj(3) + i) / npg
503 mat_orth = mat_param(imat)%ORTHOTROPY
504 IF (mat_orth == 2)
THEN
505 dir_a => elbuf_tab(ng)%BUFLY(1)%DIRA
512 IF (iselect == 1)
THEN
514 . iok_part ,iselect ,nel ,offset ,nft ,
515 . is_written_shell,shell_tensor,sige )
520 ELSEIF (keyword ==
'TENS/MSTRESS')
THEN
523 ALLOCATE (sigm(nel,3))
524 sigm(1:nel,1:3) = zero
526 IF (ilay == -1 .AND. iply > 0 .AND. ipt > 0)
THEN
529 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51)
THEN
531 ELSE IF (igtyp == 52)
THEN
532 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack) - numstack)
535 IF (id_ply == iply)
THEN
537 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
538 ivisc = mat_param(imat)%IVISC
539 IF (ipt <= elbuf_tab(ng)%BUFLY(ilay)%NPTT)
THEN
544 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
545 sigm(i,1) = sigm(i,1) + lbuf%SIG(jj(1) + i) / npg
546 sigm(i,2) = sigm(i,2) + lbuf%SIG(jj(2) + i) / npg
547 sigm(i,3) = sigm(i,3) + lbuf%SIG(jj(3) + i) / npg
555 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
556 sigm(i,1) = sigm(i,1) + lbuf%VISC(jj(1)
557 sigm(i,2) = sigm(i,2) + lbuf%VISC(jj(2
558 sigm(i,3) = sigm(i,3) + lbuf%VISC(jj(3) + i) / npg
567 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1 .AND.
THEN
569 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
571 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
572 ivisc = mat_param(imat)%IVISC
576 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,1)
577 sigm(i,1) = sigm(i,1) + lbuf%SIG(jj(1) + i) / npg
578 sigm(i,2) = sigm(i,2) + lbuf%SIG(jj(2) + i) / npg
579 sigm(i,3) = sigm(i,3) + lbuf%SIG(jj(3) + i) / npg
587 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
588 sigm(i,1) = sigm(i,1) + lbuf%VISC(jj(1) + i) / npg
589 sigm(i,2) = sigm(i,2) + lbuf%VISC(jj(2) + i) / npg
590 sigm(i,3) = sigm(i,3) + lbuf%VISC(jj(3) + i) / npg
597 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1)
THEN
599 IF (igtyp == 1 .OR. igtyp == 9)
THEN
600 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT)
THEN
602 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
603 ivisc = mat_param(imat)%IVISC
607 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
608 sigm(i,1) = sigm(i,1) + lbuf%SIG(jj(1) + i) / npg
609 sigm(i,2) = sigm(i,2) + lbuf%SIG(jj(2) + i
610 sigm(i,3) = sigm(i,3) + lbuf%SIG(jj(3) + i) / npg
618 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
619 sigm(i,1) = sigm(i,1) + lbuf%VISC(jj(1) + i) / npg
620 sigm(i,2) = sigm(i,2) + lbuf%VISC(jj(2) + i) / npg
621 sigm(i,3) = sigm(i,3) + lbuf%VISC(jj(3) + i) / npg
632 . iok_part ,iselect ,nel ,offset ,nft ,
633 . is_written_shell,shell_tensor,sigm )
637 ELSE IF (keyword ==
'TENS/STRAIN/MEMB')
THEN
643 value(1) = gbuf%STRA(jj(1)+i)
644 value(2) = gbuf%STRA(jj(2)+i)
645 value(3) = gbuf%STRA(jj(3)+i)
646 value(3) = value(3) * half
648 . shell_tensor,i,offset,nft,
VALUE)
651 ELSEIF (keyword ==
'TENS/STRAIN/BEND')
THEN
657 value(1) = gbuf%STRA(jj(6)+i) * thk
658 value(2) = gbuf%STRA(jj(7)+i) * thk
659 value(3) = gbuf%STRA(jj(8)+i) * thk
660 value(3) = value(3) * half
662 . shell_tensor,i,offset,nft,
VALUE)
665 ELSEIF (keyword ==
'TENS/STRAIN')
THEN
671 factor = (zshift-half)*gbuf%THK(i)
673 factor = (zshift+half)*gbuf%THK(i)
675 value(1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i)
676 value(2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i)
677 value(3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i)
678 value(3) = value(3) * half
680 . shell_tensor,i,offset,nft,
VALUE)
683 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1)
THEN
685 value(1) = gbuf%STRA(jj(1)+i)
686 value(2) = gbuf%STRA(jj(2)+i)
687 value(3) = gbuf%STRA(jj(3)+i)
688 value(3) = value(3) * half
690 . shell_tensor,i,offset,nft,
VALUE)
695 ELSE IF (iply > 0 .AND. ipt > 0)
THEN
696 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
702 bufly => elbuf_tab(ng)%BUFLY(j)
704 IF (igtyp == 17 .OR. igtyp == 51)
THEN
705 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
706 ELSEIF (igtyp == 52)
THEN
707 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
709 IF (id_ply == iply .AND. ipt <= nptt)
THEN
710 islice = ipt_all + ipt
712 lens = nel*gbuf%G_STRPG/npg
716 factor = posly(i,islice)
720 value(1) = value(1)+ gbuf%STRPG(pts + jj
722 value(3) = value(3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)
724 value(1:3) = value(1:3)/npg
725 value(3) = value(3) * half
727 . shell_tensor,i,offset,nft,
VALUE)
733 factor = posly(i,islice)
734 value(1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
735 value(2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
736 value(3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i) * thk
737 value(3) = value(3) * half
739 . shell_tensor,i,offset,nft,
VALUE)
743 ipt_all = ipt_all + nptt
747 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1)
THEN
749 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
751 lens = nel*gbuf%G_STRPG/npg
755 factor = posly(i,ilay)
760 value(1) = value(1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj(6)+i) * thk
761 value(2) = value(2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
762 value(3) = value(3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
764 value(1) = value(1)/npg
765 value(2) = value(2)/npg
766 value(3) = value(3)/npg
767 value(3) = value(3) * half
775 factor = posly(i,ilay)
777 value(1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
778 value(2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
779 value(3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i) * thk
780 value(3) = value(3) * half
782 . shell_tensor,i,offset,nft,
VALUE)
787 ELSEIF (ipt <= mpt .AND. ipt > 0)
THEN
789 IF (igtyp == 1 .OR. igtyp == 9)
THEN
791 lens = nel*gbuf%G_STRPG/npg
795 factor = posly(i,ipt)
800 value(1) = value(1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj(6)+i) * thk
801 value(2) = value(2)+ gbuf%STRPG(pts + jj(2)+i)
802 value(3) = value(3)+ gbuf%STRPG(pts + jj(3)+i) + factor
804 value(1:3) = value(1:3)/npg
805 value(3) = value(3) * half
807 . shell_tensor,i,offset,nft,
VALUE)
813 factor = posly(i,ipt)
815 value(1) = gbuf%STRA(jj
816 value(2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
817 value(3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj
818 value(3) = value(3) * half
820 . shell_tensor,i
VALUE)
825 DEALLOCATE(matly, thkly,posly,thk_ly)
827 ELSEIF (keyword ==
'TENS/MSTRAIN')
THEN
829 ALLOCATE (epsm(nel,3))
832 IF (iply > 0 .AND. ipt > 0)
THEN
834 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
840 bufly => elbuf_tab(ng)%BUFLY(j)
842 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51)
THEN
844 ELSEIF (igtyp == 52)
THEN
845 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
847 IF (id_ply == iply .AND. ipt <= nptt)
THEN
849 islice = ipt_all + ipt
851 lens = nel*gbuf%G_STRPG/npg
854 factor = posly(i,islice)
858 epsm(i,1) = epsm(i,1)+ gbuf%STRPG
859 epsm(i,2) = epsm(i,2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
860 epsm(i,3) = epsm(i,3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
862 epsm(i,1) = epsm(i,1)/npg
863 epsm(i,2) = epsm(i,2)/npg
864 epsm(i,3) = half*epsm(i,3)/npg
869 factor = posly(i,islice)
870 epsm(i,1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
871 epsm(i,2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
872 epsm(i,3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i) * thk
873 epsm(i,3) = epsm(i,3) * half
876 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
877 mat_orth = mat_param(imat)%ORTHOTROPY
878 IF (mat_orth > 0)
THEN
879 IF (idrape > 0 .AND. (igtyp == 51 .OR. igtyp == 52) )
THEN
880 dir_a => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRA
881 dir_b => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRB
883 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
884 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
887 IF (mat_orth == 2)
THEN
889 ELSE IF (mat_orth == 3)
THEN
893 ipt_all = ipt_all + nptt
897 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1 .AND. ipt == -1)
THEN
899 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16)
THEN
901 lens = nel*gbuf%G_STRPG/npg
904 factor = posly(i,ilay)
908 epsm(i,1) = epsm(i,1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj(6)+i) * thk
909 epsm(i,2) = epsm(i,2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
910 epsm(i,3) = epsm(i,3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
912 epsm(i,1) = epsm(i,1)/npg
913 epsm(i,2) = epsm(i,2)/npg
914 epsm(i,3) = half*epsm(i,3)/npg
919 factor = posly(i,ilay)
920 epsm(i,1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
921 epsm(i,2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
922 epsm(i,3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i) * thk
923 epsm(i,3) = epsm(i,3) * half
926 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
927 mat_orth = mat_param(imat)%ORTHOTROPY
928 IF (mat_orth > 0)
THEN
929 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
930 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
932 IF (mat_orth == 2)
THEN
934 ELSE IF (mat_orth == 3)
THEN
939 ELSEIF (ipt > 0 .AND. ipt <= mpt .AND. iply == -1 .AND. ilay == -1)
THEN
941 IF (igtyp == 1 .OR. igtyp == 9)
THEN
943 lens = nel*gbuf%G_STRPG/npg
946 factor = posly(i,ipt)
950 epsm(i,1) = epsm(i,1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj(6)+i) * thk
951 epsm(i,2) = epsm(i,2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
952 epsm(i,3) = epsm(i,3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
954 epsm(i,1) = epsm(i,1)/npg
955 epsm(i,2) = epsm(i,2)/npg
956 epsm(i,3) = half*epsm(i,3)/npg
961 factor = posly(i,ipt)
962 epsm(i,1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
963 epsm(i,2) = gbuf%STRA(jj(2)+i) + factor*gbuf%STRA(jj(7)+i) * thk
964 epsm(i,3) = gbuf%STRA(jj(3)+i) + factor*gbuf%STRA(jj(8)+i) * thk
965 epsm(i,3) = epsm(i,3) * half
968 imat = elbuf_tab(ng)%BUFLY(1)%IMAT
969 mat_orth = mat_param(imat)%ORTHOTROPY
970 IF (mat_orth == 2)
THEN
971 dir_a => elbuf_tab(ng)%BUFLY(1)%DIRA
978 . iok_part ,iselect ,nel ,offset ,nft ,
979 . is_written_shell,shell_tensor,epsm )
982 DEALLOCATE(matly, thkly,posly,thk_ly)
984 ELSEIF (keyword ==
'TENS/EPSDOT/MEMB')
THEN
990 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
991 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
992 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)* half
997 ELSEIF (keyword ==
'TENS/EPSDOT/BEND')
THEN
1001 value(1) = epsdot(4,i+nft+offset)
1002 value(2) = epsdot(5,i+nft+offset)
1003 value(3) = epsdot(6,i+nft+offset) * half
1008 ELSEIF (keyword ==
'TENS/EPSDOT')
THEN
1011 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1)
THEN
1016 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
1017 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1018 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)* half
1020 . shell_tensor,i,offset,nft,
VALUE)
1023 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 )
THEN
1024 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52)
THEN
1026 ipthk = ipang + nlay
1027 ippos = ipthk + nlay
1029 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1030 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1031 ELSEIF (igtyp == 52)
THEN
1032 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
1034 bufly => elbuf_tab(ng)%BUFLY(j)
1036 IF (id_ply == iply .AND. ipt <= nptt)
THEN
1037 a2 = stack%GEO(ippos+j,isubstack)+
1038 . half*(((2*ipt-one)/nptt)-one) *
1039 . stack%GEO(ipthk+j,isubstack)
1042 value(1) = epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
1043 value(2) = epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1044 value(3) =(epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)* half
1046 . shell_tensor,i,offset,nft,
VALUE)
1053 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt <= mpt .AND. ipt > 0 )
THEN
1054 IF (igtyp == 51 .OR. igtyp == 52)
THEN
1060 ipthk = ipang + nlay
1061 ippos = ipthk + nlay
1062 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1063 id_ply = igeo(1,stack%IGEO(2+ilay,isubstack))
1064 ELSEIF (igtyp == 52)
THEN
1065 id_ply =
ply_info(1,stack%IGEO(2+ilay,isubstack)-numstack)
1067 bufly => elbuf_tab(ng)%BUFLY(ilay)
1069 IF (ipt <= nptt)
THEN
1071 a2 = stack%GEO(ippos+ilay,isubstack)+
1072 . half*(((2*ipt-one)/nptt)-one) *
1073 . stack%GEO(ipthk+ilay,isubstack)
1077 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
1078 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1079 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)* half
1086 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt == -1 )
THEN
1087 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17)
THEN
1089 a2 = half*(((2*ilay-one)/nlay)-one)
1093 value(1) = a1*epsdot(1,i+nft+offset
1094 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1095 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)* half
1099 ELSEIF (igtyp == 51 .OR. igtyp == 52)
THEN
1101 a2 = stack%GEO(ippos+ilay,isubstack)+
1102 . half*(((2*ipt-one)/nptt)-one) *
1103 . stack%GEO(ipthk+ilay,isubstack)
1107 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
1108 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1109 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(
1115 ELSEIF ( ipt <= mpt .AND. ipt > 0)
THEN
1117 a2 = half*(((2*ipt-one)/mpt)-one)
1118 IF (igtyp == 1 .OR. igtyp == 9)
THEN
1121 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
1122 value(2) = a1*epsdot(2,i+nft+offset) + a2*epsdot(5,i+nft+offset)*thk
1123 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot
1130 ELSE IF (keyword ==
'TENS/STRAIN_ENG')
THEN
1168 value(1:3)= strain(1:3,i)
1172 ELSEIF (ity == 7)
THEN
1199 CALL sh3_tstrain(xn,yn,zn,dxn,dyn,dzn,strain,nel,ihbe)
1201 value(1:3)= strain(1:3,i)
1208 ELSEIF (keyword ==
'TENS/STRESS/TMAX')
THEN
1211 value(1:3) = gbuf%TM_SIG1(jj(1:3) + i)
1216 ELSEIF (keyword ==
'TENS/STRESS/TMIN')
THEN
1219 value(1:3) = gbuf%TM_SIG3(jj(1:3) + i)
1224 ELSEIF (keyword ==
'TENS/STRAIN/TMAX')
THEN
1227 value(1:3) = gbuf%TM_STRA1(jj(1:3) + i)
1232 ELSEIF (keyword ==
'TENS/STRAIN/TMIN')
THEN
1235 value(1:3) = gbuf%TM_STRA3(jj(1:3) + i)
1240 ELSEIF (keyword ==
'TENS/BSTRESS')
THEN
1244 iadbuf = ipm(7,imat)
1245 nuparam= ipm(9,imat)
1246 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1247 nbfunct = uparam(25)
1248 nchard = 34 + 2*nbfunct + 22
1249 chard = uparam(nchard)
1250 ELSEIF (mlw == 36)
THEN
1253 nuparam= ipm(9,imat)
1254 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1256 nchard = 2*nbfunct + 14
1257 chard = uparam(nchard)
1259 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1)
THEN
1261 IF(mlw == 36 .AND. chard > zero)
THEN
1264 bufly => elbuf_tab(ng)%BUFLY(j)
1269 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1271 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1277 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1279 ELSEIF(mlw == 78)
THEN
1282 bufly => elbuf_tab(ng)%BUFLY(j)
1287 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1289 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt/nlay
1295 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1297 ELSEIF(mlw == 87 .AND. chard > zero)
THEN
1303 bufly => elbuf_tab(ng)%BUFLY(j)
1308 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1310 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1311 . +lbuf%SIGB(jj(k+3) + i )
1312 . +lbuf%SIGB(jj(k+6) + i )
1313 . +lbuf%SIGB(jj(k+9) + i ))/npg/nptt/nlay
1319 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1323 IF(mlw == 36.AND. chard > zero)
THEN
1326 bufly => elbuf_tab(ng)%BUFLY(j)
1331 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1333 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1339 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1341 ELSEIF(mlw == 78)
THEN
1345 bufly => elbuf_tab(ng)%BUFLY(j)
1350 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir
1352 value(k) =
VALUE(k) + lbuf%SIGA(jj(k) + i) /npg/nptt/nlay
1358 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1360 ELSEIF(id == 2)
THEN
1363 bufly => elbuf_tab(ng)%BUFLY(j)
1368 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1370 value(k) = value(k) + lbuf%SIGB(jj(k) + i) /npg/nptt/nlay
1376 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1378 ELSEIF(id == 3)
THEN
1381 bufly => elbuf_tab(ng)%BUFLY(j)
1386 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1388 value(k) = value(k) + lbuf%SIGC(jj(k) + i) /npg/nptt/nlay
1394 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1397 ELSEIF(mlw == 87.AND. chard > zero)
THEN
1401 bufly => elbuf_tab(ng)%BUFLY(j)
1406 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1408 value(k) = value(k) + lbuf%SIGB(jj(k) + i ) /npg/nptt/nlay
1414 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1416 ELSEIF(id == 2)
THEN
1419 bufly => elbuf_tab(ng)%BUFLY(j)
1426 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i) /npg/nptt/nlay
1432 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1434 ELSEIF(id == 3)
THEN
1437 bufly => elbuf_tab(ng)%BUFLY(j)
1442 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1444 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i) /npg/nptt/nlay
1450 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1452 ELSEIF( id == 4)
THEN
1455 bufly => elbuf_tab(ng)%BUFLY(j)
1460 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1462 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg/nptt/nlay
1468 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1476 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 )
THEN
1479 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1480 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
1481 ELSEIF (igtyp == 52)
THEN
1482 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack) - numstack)
1484 IF (id_ply == iply)
THEN
1485 bufly => elbuf_tab(ng)%BUFLY(j)
1489 IF (mlw == 36 .AND.( id == -1 .OR. id == 1).AND. chard > zero)
THEN
1493 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1495 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1499 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1504 ELSEIF (mlw == 78)
THEN
1509 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1511 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1517 ELSEIF(id ==1 )
THEN
1521 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1523 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1527 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1529 ELSEIF(id ==2 )
THEN
1533 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1535 value(k) = value(k) + lbuf%SIGB(jj(k) + i
1539 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1542 ELSEIF(id ==3 )
THEN
1546 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1548 VALUE(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
1558 ELSEIF( mlw == 87 .AND. chard > zero)
THEN
1563 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1565 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1566 . +lbuf%SIGB(jj(k+3) + i )
1567 . +lbuf%SIGB(jj(k+6) + i )
1573 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1575 ELSEIF(id ==1 )
THEN
1579 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1581 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1585 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1587 ELSEIF(id ==2 )
THEN
1591 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is
1593 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1597 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1599 ELSEIF(id ==3 )
THEN
1603 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1605 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1615 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1617 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg
1630 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. ipt <= mpt .AND. ipt > 0 )
THEN
1632 IF(igtyp == 9) j = 1
1633 bufly => elbuf_tab(ng)%BUFLY(j)
1637 IF (mlw == 36.AND. (id==-1 . or .id==1).AND. chard > zero)
THEN
1641 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1643 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1647 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1652 ELSEIF (mlw == 78)
THEN
1657 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1659 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1663 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1669 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1671 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1675 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1677 ELSEIF(id ==2 )
THEN
1681 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1683 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1687 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1689 ELSEIF(id ==3 )
THEN
1693 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1695 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
1699 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1705 ELSEIF( mlw == 87 .AND. chard > zero)
THEN
1710 lbuf => elbuf_tab(ng
1712 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1714 . +lbuf%SIGB(jj(k+6) + i )
1720 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1722 ELSEIF(id ==1 )
THEN
1726 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1728 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1732 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1734 ELSEIF(id ==2 )
THEN
1738 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1740 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1744 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1746 ELSEIF(id ==3 )
THEN
1750 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1752 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1756 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1758 ELSEIF(id ==4 )
THEN
1762 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1764 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i
1768 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1775 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt == -1 )
THEN
1776 IF (igtyp == 9 .OR.igtyp == 10 .OR. igtyp == 11 )
THEN
1779 IF(igtyp == 9) j = 1
1780 bufly => elbuf_tab(ng)%BUFLY(j)
1785 IF (mlw == 36.AND. (id==-1 .OR. id==1) .AND. chard > zero)
THEN
1790 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1792 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1797 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1803 ELSEIF (mlw == 78)
THEN
1809 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1811 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt
1816 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1818 ELSEIF(id ==1 )
THEN
1823 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1825 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg/nptt
1830 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1832 ELSEIF(id ==2 )
THEN
1837 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1839 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1844 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1846 ELSEIF(id ==3 )
THEN
1851 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1853 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg/nptt
1858 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1864 ELSEIF( mlw == 87 .AND. chard > zero)
THEN
1870 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1872 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1873 . +lbuf%SIGB(jj(k+3) + i )
1874 . +lbuf%SIGB(jj(k+6) + i )
1875 . +lbuf%SIGB(jj(k+9) + i ))/npg/nptt
1881 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1883 ELSEIF(id ==1 )
THEN
1888 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1890 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1895 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1897 ELSEIF(id ==2 )
THEN
1902 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1904 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg/nptt
1909 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1911 ELSEIF(id ==3 )
THEN
1916 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1918 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i )/npg/nptt
1925 ELSEIF(id ==4 )
THEN
1930 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1932 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
1937 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1945 ELSE IF(ilay == -1 .AND. ipt > 0 .AND. ipt<=mpt .AND. iply == -1 )
THEN
1947 bufly => elbuf_tab(ng)%BUFLY(j)
1949 IF (ipt <= nptt )
THEN
1953 IF (mlw == 36.AND. (id==-1 .OR. id==1) .AND. chard > zero)
THEN
1957 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1959 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1963 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1968 ELSEIF (mlw == 78)
THEN
1973 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1975 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1979 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1981 ELSEIF(id ==1 )
THEN
1985 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1987 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1991 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1993 ELSEIF(id ==2 )
THEN
1997 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1999 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
2003 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2005 ELSEIF(id ==3 )
THEN
2009 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2011 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
2015 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2021 ELSEIF( mlw == 87 .AND. chard > zero)
THEN
2026 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2028 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
2029 . +lbuf%SIGB(jj(k+3) + i )
2030 . +lbuf%SIGB(jj(k+6) + i )
2031 . +lbuf%SIGB(jj(k+9) + i ))/npg
2036 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2038 ELSEIF(id ==1 )
THEN
2042 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2044 value(k) = value(k) + lbuf%SIGB(jj(k) + i )/npg
2048 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2050 ELSEIF(id ==2 )
THEN
2054 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2056 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg
2060 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2062 ELSEIF(id ==3 )
THEN
2066 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2068 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i )/npg
2072 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2074 ELSEIF(id ==4 )
THEN
2078 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2080 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
2084 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2130 ELSEIF (ity == 50)
THEN