51
52
53
54 USE elbufdef_mod
56 USE matparam_def_mod
59
60
61
62#include "implicit_f.inc"
63
64
65
66#include "mvsiz_p.inc"
67
68#include "com01_c.inc"
69#include "com04_c.inc"
70#include "param_c.inc"
71#include "tabsiz_c.inc"
72
73
74
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 :: ELBUF_TAB
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
91
92
93
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,,NN8,NN9,NN10,I1
104 INTEGER PID(MVSIZ),MAT(MVSIZ),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
108
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
113
114 INTEGER, DIMENSION(:) , ALLOCATABLE :: MATLY
115 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
116 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
117
118
119
120
121
122
123
124 offset = 0
125 value(1:5) = zero
126 iselect = 1
127 id_ply = 0
128 npg = 1
129
130 nn1 = 1
131 nn2 = nn1
132 nn3 = nn2
133 nn4 = nn3 + numelq
134 nn5 = nn4 + numelc
135 nn6 = nn5 + numeltg
136 nn7 = nn6
137 nn8 = nn7
138 nn9 = nn8
139 nn10= nn9
140
141 DO i=1,numelc+numeltg
142 is_written_shell(i) = 0
143 ENDDO
144
145 DO 490 ng=1,ngroup
146
147 mlw = iparg(1,ng)
148 nel = iparg(2,ng)
149 nft = iparg(3,ng)
150 ity = iparg(5,ng)
151 igtyp = iparg(38,ng)
152 isrot = iparg(41,ng)
153 ixfem = iparg(54,ng)
154 isubstack = iparg(71,ng)
155 idrape = elbuf_tab(ng)%IDRAPE
156 npt = iabs(iparg(6,ng))
157 iok_part(1:nel) = 0
158
159 DO i=1,15
160 jj(i) = nel*(i-1)
161 ENDDO
162
163 IF (mlw /= 13) THEN
164
165
166
167 IF(ity == 2)THEN
168 DO i=1,nel
169 n = i + nft
170 shell_tensor(1,offset+nft+i) = zero
171 shell_tensor(2,offset+nft+i) = zero
172 shell_tensor(3,offset+nft+i) = zero
173 ENDDO
174
175
176
177 ELSEIF (ity == 3 .OR. ity == 7) 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
182 npg = nptr*npts
183
184 ihbe = iparg(23,ng)
185 IF (ity == 3) THEN
186 n0 = 0
187 nni = nn4
188 IF (ihbe == 11) npg = 4
189 ELSE
190 n0 = numelc
191 nni = nn5
192 IF (ihbe == 30) npg = 3
193 ENDIF
194
195 IF (ity == 3) offset = 0
196 IF (ity == 7) offset = numelc
197
198 DO i=1,nel
199 IF (ity == 3) THEN
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
207 ENDIF
208 ENDDO
209
210 IF (mlw == 0) GOTO 490
211
212 a1 = zero
213 a2 = zero
214 a3 = zero
215 istre = 1
216 npt = iabs(iparg(6,ng))
218 mpt0 = mpt
219 IF (npt == 0) mpt = 0
220
221 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17) THEN
222 npt = 1
223 mpt = npt
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
231 ENDIF
232 IF (ply_input > 0) THEN
233 DO j=1,nlay
234 id_ply = 0
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)
239 ENDIF
240 IF (id_ply == ply_input ) THEN
241 npt= elbuf_tab(ng)%BUFLY(j)%NPTT
242 EXIT
243 ENDIF
244 ENDDO
245 ENDIF
247 ENDIF
248
249 ilay = layer_input
250 ipt = ipt_input
251 iply = ply_input
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)
257 ELSE
258 IF (ipt == -3) ipt =
max(1,npt)
259 ENDIF
260
261
262
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
268 IF (ity == 3) THEN
269 ipid = ixc(6,nft+1)
270 DO i=1,nel
271 mat(i)=ixc(1,nft+i)
272 pid(i)=ixc(6,nft+i)
273 ENDDO
274 ELSE
275 ipid = ixtg(5,nft+1)
276 DO i=1,nel
277 mat(i)=ixtg(1,nft+i)
278 pid(i)=ixtg(5,nft+i)
279 ENDDO
280 ENDIF
281
282 irep = igeo(6,ipid)
283 ENDIF
284 IF( keyword == 'TENS/STRAIN' .OR. keyword == 'TENS/MSTRAIN') THEN
285
286 laynpt_max = 1
287 ixlay = 0
288 IF(igtyp == 51 .OR. igtyp == 52) THEN
289 DO ilay=1,nlay
290 laynpt_max =
max(laynpt_max ,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
291 ENDDO
292 ENDIF
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))
296 matly = 0
297 thkly = zero
298 posly = zero
299 thk_ly = zero
300
301
302 IF(ity == 7) THEN
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 )
311 ELSE
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 )
320 ENDIF
321 ENDIF
322
323 IF (keyword == 'TENS/STRESS/MEMB') THEN
324
325 DO i=1,nel
326 value(1) = gbuf%FOR(jj(1)+i)
327 value(2) = gbuf%FOR(jj(2)+i)
328 value(3) = gbuf%FOR(jj(3)+i)
330 . VALUE)
331 ENDDO
332
333 ELSEIF (keyword == 'TENS/STRESS/BEND') THEN
334
335 DO i=1,nel
336 value(1) = gbuf%MOM(jj(1)+i)
337 value(2) = gbuf%MOM(jj(2)+i)
338 value(3) = gbuf%MOM(jj(3)+i)
340 . VALUE)
341 ENDDO
342
343
344 ELSEIF (keyword == 'TENS/STRESS') THEN
345
346
347 iselect = 0
348 ALLOCATE (sige(nel,3))
349 sige(1:nel,1:3) = zero
350
351 IF (mpt == 0) THEN
352 iselect = 1
353 IF (ipt_input == -2 ) THEN
354 factor = -six
355 ELSEIF (ipt_input == -3) THEN
356 factor = six
357 ELSE
358 factor = zero
359 END IF
360 DO i=1,nel
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
364 ENDDO
365
366 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1) THEN
367 iselect = 1
368 DO i=1,nel
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)
372 ENDDO
373
374 ELSEIF (ilay == -1 .AND. iply > 0 .AND. ipt > 0) THEN
375
376 DO j=1,nlay
377 IF (igtyp == 17 .OR. igtyp == 19 .OR. 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)
381 END IF
382 ilay = j
383 IF (id_ply == iply .AND. ipt <= elbuf_tab(ng)%BUFLY(ilay)%NPTT) THEN
384 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
385 ivisc = mat_param(imat)%IVISC
386 iselect = 1
387 DO i=1,nel
388 DO ir=1,nptr
389 DO is=1,npts
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
394 ENDDO
395 ENDDO
396 ENDDO
397 IF (ivisc > 0) THEN
398 DO i=1,nel
399 DO ir=1,nptr
400 DO is=1,npts
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
405 ENDDO
406 ENDDO
407 ENDDO
408 END IF
409 mat_orth = mat_param(imat)%ORTHOTROPY
410 IF (mat_orth > 0) THEN
411 IF (idrape > 0 .AND. (igtyp == 51 .OR. 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
414 ELSE
415 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
416 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
417 ENDIF
418 END IF
419 IF (mat_orth == 2) THEN
421 ELSE IF (mat_orth == 3) THEN
423 END IF
424 EXIT
425 ENDIF
426 ENDDO
427
428 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1) THEN
429
430 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
431 iselect = 1
432 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
433 ivisc = mat_param(imat)%IVISC
434 DO i=1,nel
435 DO ir=1,nptr
436 DO is=1,npts
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
441 ENDDO
442 ENDDO
443 ENDDO
444 IF (ivisc > 0) THEN
445 DO i=1,nel
446 DO ir=1,nptr
447 DO is=1,npts
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
452 ENDDO
453 ENDDO
454 ENDDO
455 END IF
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
460 END IF
461 IF (mat_orth == 2) THEN
463 ELSE IF (mat_orth == 3) THEN
465 END IF
466 ENDIF
467
468 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1) THEN
469
470 IF (igtyp == 1 .OR. igtyp == 9) THEN
471 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT) THEN
472 iselect = 1
473 imat = elbuf_tab(ng)%BUFLY(1)%IMAT
474 ivisc = mat_param(imat)%IVISC
475 DO i=1,nel
476 DO ir=1,nptr
477 DO is=1,npts
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
482 ENDDO
483 ENDDO
484 ENDDO
485 IF (ivisc > 0) THEN
486 DO i=1,nel
487 DO ir=1,nptr
488 DO is=1,npts
489 lbuf
490 sige
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
493 ENDDO
494 ENDDO
495 ENDDO
496 END IF
497 mat_orth
498 IF (mat_orth == 2) THEN
499 dir_a => elbuf_tab(ng)%BUFLY(1)%DIRA
501 END IF
502 ENDIF
503 ENDIF
504 ENDIF
505
506 IF (iselect == 1) THEN
508 . iok_part ,iselect ,nel ,offset ,nft ,
509 . is_written_shell,shell_tensor,sige )
510 END IF
511
512 DEALLOCATE (sige)
513
514 ELSEIF (keyword == 'TENS/MSTRESS') THEN
515
516 iselect = 0
517 ALLOCATE (sigm(nel,3))
518 sigm(1:nel,1:3) = zero
519
520 IF (ilay == -1 .AND. iply > 0 .AND. ipt > 0) THEN
521
522 DO j=1,nlay
523 IF (igtyp == 17 .OR. igtyp == 19 .OR.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)
527 END IF
528
529 IF (id_ply == iply) THEN
530 ilay = j
531 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
532 ivisc = mat_param(imat)%IVISC
533 IF (ipt <= elbuf_tab(ng)%BUFLY(ilayTHEN
534 iselect = 1
535 DO i=1,nel
536 DO ir=1,nptr
537 DO is=1,npts
538 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
539 sigm(i,1) = sigm(i,1) + lbuf%SIG
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
542 ENDDO
543 ENDDO
544 ENDDO
545 IF (ivisc > 0) THEN
546 DO i=1,nel
547 DO ir=1,nptr
548 DO is=1,npts
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
553 ENDDO
554 ENDDO
555 ENDDO
556 END IF
557 ENDIF
558 ENDIF
559 ENDDO
560
561 ELSEIF (ilay > 0 .AND. ilayTHEN
562
563 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
564 iselect = 1
565 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
566 ivisc = mat_param(imat)%IVISC
567 DO i=1,nel
568 DO ir=1,nptr
569 DO is=1,npts
570 lbuf => elbuf_tab
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
574 ENDDO
575 ENDDO
576 ENDDO
577 IF (ivisc > 0) THEN
578 DO i=1,nel
579 DO ir=1,nptr
580 DO is=1,npts
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
585 ENDDO
586 ENDDO
587 ENDDO
588 END IF
589 ENDIF
590
591 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1) THEN
592
593 IF (igtyp == 1 .OR. igtyp == 9) THEN
594 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT) THEN
595 iselect = 1
596 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
597 ivisc = mat_param(imat)%IVISC
598 DO i
599 DO ir=1,nptr
600 DO is=1,npts
601 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir
602 sigm(i,1) = sigm(i,1) + lbuf%SIG(jj(1) + i) / npg
603 sigm(i,2) = sigm(i,2) + lbuf%SIG(jj
604 sigm(i,3) = sigm(i,3) + lbuf%SIG(jj(3) + i) / npg
605 ENDDO
606 ENDDO
607 ENDDO
608 IF (ivisc > 0) THEN
609 DO i=1,nel
610 DO ir=1,nptr
611 DO is
612 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(ir,is,ipt)
613 sigm(i,1) = sigm(i,1) + lbuf%VISC(jj
614 sigm(i
615 sigm(i,3) = sigm(i,3) + lbuf%VISC(jj(3) + i) / npg
616 ENDDO
617 ENDDO
618 ENDDO
619 END IF
620
621 ENDIF
622 ENDIF
623 ENDIF
624
626 . iok_part ,iselect ,nel ,offset ,nft ,
627 . is_written_shell,shell_tensor,sigm )
628
629 DEALLOCATE (sigm)
630
631 ELSE IF (keyword == 'TENS/STRAIN/MEMB') THEN
632
633 DO i=1,nel
634 n = i + nft
635 thk = gbuf%THK(i)
636 j = el2fa(nni+n)
637 value(1) = gbuf%STRA
638 value(2) = gbuf%STRA(jj(2)+i)
639 value(3) = gbuf%STRA(jj(3)+i)
640 value(3) = value(3) * half
642 . shell_tensor,i,offset,nft,VALUE)
643 ENDDO
644
645 ELSEIF (keyword == 'TENS/STRAIN/BEND') THEN
646
647 DO i=1,nel
648 n = i + nft
649 thk = gbuf%THK(i)
650 j = el2fa(nni+n)
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
656 . shell_tensor,i,offset,nft,VALUE)
657 ENDDO
658
659 ELSEIF (keyword == 'TENS/STRAIN') THEN
660
661 IF (mpt == 0) THEN
662 iselect = 1
663 DO i=1,nel
664 IF (ipt == 1) THEN
665 factor = -half*gbuf%THK(i)
666 ELSE
667 factor = half*gbuf%THK(i)
668 ENDIF
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
674 . shell_tensor,i,offset,nft,VALUE)
675 ENDDO
676
677 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1) THEN
678 DO i=1,nel
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
684 . shell_tensor,i,offset,nft,VALUE)
685 ENDDO
686
687
688
689 ELSE IF (iply > 0 .AND. ipt > 0) THEN
690 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52) THEN
691 ipang = 1
692 ipthk = ipang + nlay
693 ippos = ipthk + nlay
694 ipt_all = 0
695 DO j=1,nlay
696 bufly => elbuf_tab(ng)%BUFLY(j)
697 nptt = bufly%NPTT
698 IF (igtyp == 17 .OR. 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)
702 ENDIF
703 IF (id_ply == iply .AND. ipt <= nptt) THEN
704 islice = ipt_all + ipt
705 IF(npg > 1) THEN
706 lens = nel*gbuf%G_STRPG/npg
707 DO i=1,nel
708 n = i + nft
709 thk = gbuf%THK(i)
710 factor = posly(i,islice)
711 value(1:3) = zero
712 DO ipg = 1, npg
713 pts = (ipg -1)*lens
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
717 ENDDO
718 value(3) = value(3) * half
720 . shell_tensor,i,offset,nft,VALUE)
721 ENDDO
722 ELSE
723 DO i=1,nel
724 n = i + nft
725 thk = gbuf%THK(i)
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
732 . shell_tensor,i,offset,nft,VALUE)
733 ENDDO
734 ENDIF
735 ENDIF
736 ipt_all = ipt_all + nptt
737 ENDDO
738 ENDIF
739
740 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1) THEN
741
742 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
743 IF (npg > 1) THEN
744 lens = nel*gbuf%G_STRPG/npg
745 DO i=1,nel
746 n = i + nft
747 thk = gbuf%THK(i)
748 factor = posly(i,ilay)
749 j = el2fa(nni+n)
750 value(1:3) = zero
751 DO ipg = 1, npg
752 pts = (ipg -1)*lens
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
756 ENDDO
757 value(1) = value(1)/npg
758 value(2) = value(2)/npg
759 value(3) = value(3)/npg
760 value(3) = value(3) * half
762 . shell_tensor,i,offset,nft,VALUE)
763 ENDDO
764 ELSE
765 DO i=1,nel
766 n = i + nft
767 thk = gbuf%THK(i)
768 factor = posly(i,ilay)
769 j = el2fa(nni+n)
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
775 . shell_tensor,i,offset,nft,VALUE)
776 ENDDO
777 ENDIF
778 ENDIF
779
780 ELSEIF (ipt <= mpt .AND. ipt THEN
781
782 IF (igtyp == 1 .OR. igtyp == 9) THEN
783 IF(npg > 1) THEN
784 lens = nel*gbuf%G_STRPG/npg
785 DO i=1,nel
786 n = i + nft
787 thk = gbuf%THK(i)
788 factor = posly(i,ipt)
789 j = el2fa(nni+n)
790 value(1:3) = zero
791 DO ipg =1,npg
792 pts = (ipg -1)*lens
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
796 ENDDO
797 value(3) = value(3) * half
799 . shell_tensor,i,offset,nft,VALUE)
800 ENDDO
801 ELSE
802 DO i=1,nel
803 n = i + nft
804 thk = gbuf%THK(i)
805 factor = posly(i,ipt)
806 j = el2fa(nni+n)
807 value(1) = gbuf%STRA
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
812 . shell_tensor,i,offset,nft,VALUE)
813 ENDDO
814 ENDIF
815 ENDIF
816 ENDIF
817 DEALLOCATE(matly, thkly,posly,thk_ly)
818
819 ELSEIF (keyword == 'TENS/MSTRAIN') THEN
820
821 ALLOCATE (epsm(nel,3))
822 epsm(:,:) = zero
823
824 IF (iply > 0 .AND. ipt > 0) THEN
825
826 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52) THEN
827 ipang = 1
828 ipthk = ipang + nlay
829 ippos = ipthk + nlay
830 ipt_all = 0
831 DO j=1,nlay
832 bufly => elbuf_tab(ng)%BUFLY(j)
833 nptt = bufly%NPTT
834 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp ==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)
838 ENDIF
839 IF (id_ply == iply .AND. ipt <= nptt) THEN
840 ilay = j
841 islice = ipt_all + ipt
842 IF(npg > 1) THEN
843 lens = nel*gbuf%G_STRPG/npg
844 DO i=1,nel
845 thk = gbuf%THK(i)
846 factor = posly(i,islice)
847 epsm(i,1:3) = zero
848 DO ipg = 1, npg
849 pts = (ipg -1)*lens
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
853 ENDDO
854 epsm
855 epsm(i,2) = epsm(i,2)/npg
856 epsm(i,3) = half*epsm(i,3)/npg
857 ENDDO
858 ELSE
859 DO i=1,nel
860 thk = gbuf%THK(i)
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
866 ENDDO
867 ENDIF
868 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
869 mat_orth = mat_param(imat)%ORTHOTROPY
870 IF (mat_orth > 0) THEN
871 IF (idrape > 0 .AND. (igtyp == 51 .OR. igtypTHEN
872 dir_a => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRA
873 dir_b => elbuf_tab(ng)%BUFLY(ilay)%LBUF_DIR(ipt)%DIRB
874 ELSE
875 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
876 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
877 ENDIF
878 END IF
879 IF (mat_orth == 2) THEN
881 ELSE IF (mat_orth == 3) THEN
883 END IF
884 ENDIF
885 ipt_all = ipt_all + nptt
886 ENDDO
887 ENDIF
888
889 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1 .AND. ipt == -1) THEN
890
891 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
892 IF(npg > 1) THEN
893 lens = nel*gbuf%G_STRPG/npg
894 DO i=1,nel
895 thk = gbuf%THK(i)
896 factor = posly(i,ilay)
897 epsm(i,1:3) = zero
898 DO ipg = 1, npg
899 pts = (ipg -1)*lens
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
902 epsm(i,3) = epsm(i,3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
903 ENDDO
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
907 ENDDO
908 ELSE
909 DO i=1,nel
910 thk = gbuf%THK(i)
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
916 ENDDO
917 ENDIF
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
923 END IF
924 IF (mat_orth == 2) THEN
926 ELSE IF (mat_orth == 3) THEN
928 END IF
929 ENDIF
930
931 ELSEIF (ipt > 0 .AND. ipt <= mpt .AND. iply == -1 .AND. ilay == -1) THEN
932
933 IF (igtyp == 1 .OR. igtyp == 9) THEN
934 IF(npg > 1) THEN
935 lens = nel*gbuf%G_STRPG/npg
936 DO i=1,nel
937 thk = gbuf%THK(i)
938 factor = posly(i,ipt)
939 epsm(i,1:3) = zero
940 DO ipg = 1, npg
941 pts = (ipg -1)*lens
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
945 ENDDO
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
949 ENDDO
950 ELSE
951 DO i=1,nel
952 thk = gbuf%THK(i)
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
958 ENDDO
959 ENDIF
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
965 END IF
966 ENDIF
967 ENDIF
968
970 . iok_part ,iselect ,nel ,offset ,nft ,
971 . is_written_shell,shell_tensor,epsm )
972
973 DEALLOCATE (epsm)
974 DEALLOCATE(matly, thkly,posly,thk_ly)
975
976 ELSEIF (keyword == 'TENS/EPSDOT/MEMB') THEN
977
978 a1 = one
979 a2 = zero
980 DO i=1,nel
981 thk = gbuf%THK(i)
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
986 . VALUE)
987 ENDDO
988
989 ELSEIF (keyword == 'TENS/EPSDOT/BEND') THEN
990
991 DO i=1,nel
992 thk = gbuf%THK(i)
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
997 . VALUE)
998 ENDDO
999
1000 ELSEIF (keyword == 'TENS/EPSDOT') THEN
1001
1002
1003 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1) THEN
1004 a1 = one
1005 a2 = zero
1006 DO i=1,nel
1007 thk = gbuf%THK(i)
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
1012 . shell_tensor,i,offset,nft,VALUE)
1013 ENDDO
1014
1015 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1016 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
1017 ipang = 1
1018 ipthk = ipang + nlay
1019 ippos = ipthk + nlay
1020 DO j=1,nlay
1021 IF (igtyp == 17 .OR. 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)
1025 ENDIF
1026 bufly => elbuf_tab(ng)%BUFLY(j)
1027 nptt = bufly%NPTT
1028 IF (id_ply == iply .AND. ipt <= nptt) THEN
1029 a2 = stack%GEO(ippos+j,isubstack)+
1030 . half*(((2*ipt-one)/nptt)-one) *
1031 . stack%GEO(ipthk+j,isubstack)
1032 DO i=1,nel
1033 thk = gbuf%THK(i)
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
1038 . shell_tensor,i,offset,nft,VALUE)
1039 ENDDO
1040 ENDIF
1041 ENDDO
1042 ENDIF
1043
1044
1045 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1046 IF (igtyp == 51 .OR. igtyp == 52) THEN
1047 a1 = zero
1048 a2 = zero
1049 ns1 = 8
1050 ns2 = 8
1051 ipang = 1
1052 ipthk = ipang + nlay
1053 ippos = ipthk + nlay
1054 IF (igtyp == 17 .OR. 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)
1058 ENDIF
1059 bufly => elbuf_tab(ng)%BUFLY(ilay)
1060 nptt = bufly%NPTT
1061 IF (ipt <= nptt) THEN
1062 a1 = one
1063 a2 = stack%GEO(ippos+ilay,isubstack)+
1064 . half*(((2*ipt-one)/nptt)-one) *
1065 . stack%GEO(ipthk+ilay,isubstack)
1066 DO i=1,nel
1067 n = i + nft
1068 thk = gbuf%THK(i)
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
1073 . VALUE)
1074 ENDDO
1075 ENDIF
1076 ENDIF
1077
1078 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt == -1 ) THEN
1079 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17) THEN
1080 a1 = one
1081 a2 = half*(((2*ilay-one)/nlay)-one)
1082 DO i=1,nel
1083 n = i + nft
1084 thk = gbuf%THK(i)
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
1087 value(3) = (a1*epsdot(3,i+nft+offset) + a2*epsdot(6,i+nft+offset)*thk)*
1089 . VALUE)
1090 ENDDO
1091 ELSEIF (igtyp == 51 .OR. igtyp == 52) THEN
1092 a1 = one
1093 a2 = stack%GEO(ippos+ilay,isubstack)+
1094 . half*(((2*ipt-one)/nptt)-one) *
1095 . stack%GEO(ipthk+ilay,isubstack)
1096 DO i=1,nel
1097 n = i + nft
1098 thk = gbuf%THK(i)
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
1103 . VALUE)
1104 ENDDO
1105 ENDIF
1106
1107 ELSEIF ( ipt <= mpt .AND. ipt > 0) THEN
1108 a1 = one
1109 a2 = half*(((2*ipt-one)/mpt)-one)
1110 IF (igtyp == 1 .OR. igtyp == 9) THEN
1111 DO i=1,nel
1112 thk = gbuf%THK(i)
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
1117 . VALUE)
1118 ENDDO
1119 ENDIF
1120 ENDIF
1121
1122 ELSE IF (keyword == 'TENS/STRAIN_ENG') THEN
1123
1124 IF (ity == 3 ) THEN
1125 DO i=1,nel
1126 n = i + nft
1127 nni = ixc(2,n)
1128 j = 4*(i-1) +1
1129 xn(j)=x(1,nni)
1130 yn(j)=x(2,nni)
1131 zn(j)=x(3,nni)
1132 dxn(j)=d(1,nni)
1133 dyn(j)=d(2,nni)
1134 dzn(j)=d(3,nni)
1135 nni = ixc(3,n)
1136 xn(j+1)=x(1,nni)
1137 yn(j+1)=x(2,nni)
1138 zn(j+1)=x(3,nni)
1139 dxn(j+1)=d(1,nni)
1140 dyn(j+1)=d(2,nni)
1141 dzn(j+1)=d(3,nni)
1142 nni = ixc(4,n)
1143 xn(j+2)=x(1,nni)
1144 yn(j+2)=x(2,nni)
1145 zn(j+2)=x(3,nni)
1146 dxn(j+2)=d(1,nni)
1147 dyn(j+2)=d(2,nni)
1148 dzn(j+2)=d(3,nni)
1149 nni = ixc(5,n)
1150 xn(j+3)=x(1,nni)
1151 yn(j+3)=x(2,nni)
1152 zn(j+3)=x(3,nni)
1153 dxn(j+3)=d(1,nni)
1154 dyn(j+3)=d(2,nni)
1155 dzn(j+3)=d(3,nni)
1156 strain(1:3,i)=zero
1157 ENDDO
1159 DO i=1,nel
1160 value(1:3)= strain(1:3,i)
1162 . VALUE)
1163 ENDDO
1164 ELSEIF (ity == 7) THEN
1165 DO i=1,nel
1166 n = i + nft
1167 nni = ixtg(2,n)
1168 j = 3*(i-1) +1
1169 xn(j)=x(1,nni)
1170 yn(j)=x(2,nni)
1171 zn(j)=x(3,nni)
1172 dxn(j)=d(1,nni)
1173 dyn(j)=d(2,nni)
1174 dzn(j)=d(3,nni)
1175 nni = ixtg(3,n)
1176 xn(j+1)=x(1,nni)
1177 yn(j+1)=x(2,nni)
1178 zn(j+1)=x(3,nni)
1179 dxn(j+1)=d(1,nni)
1180 dyn(j+1)=d(2,nni)
1181 dzn(j+1)=d(3,nni)
1182 nni = ixtg(4,n)
1183 xn(j+2)=x(1,nni)
1184 yn(j+2)=x(2,nni)
1185 zn(j+2)=x(3,nni)
1186 dxn(j+2)=d(1,nni)
1187 dyn(j+2)=d(2,nni)
1188 dzn(j+2)=d(3,nni)
1189 strain(1:3,i)=zero
1190 ENDDO
1191 CALL sh3_tstrain(xn,yn,zn,dxn,dyn,dzn,strain,nel,ihbe)
1192 DO i=1,nel
1193 value(1:3)= strain(1:3,i)
1195 . VALUE)
1196 ENDDO
1197 END IF
1198
1199
1200 ELSEIF (keyword == 'TENS/STRESS/TMAX') THEN
1201
1202 DO i=1,nel
1203 value(1:3) = gbuf%TM_SIG1(jj(1:3) + i)
1205 . VALUE)
1206 ENDDO
1207
1208 ELSEIF (keyword == 'TENS/STRESS/TMIN') THEN
1209
1210 DO i=1,nel
1211 value(1:3) = gbuf%TM_SIG3(jj(1:3) + i)
1213 . VALUE)
1214 ENDDO
1215
1216 ELSEIF (keyword == 'TENS/STRAIN/TMAX') THEN
1217
1218 DO i=1,nel
1219 value(1:3) = gbuf%TM_STRA1(jj(1:3) + i)
1221 . VALUE)
1222 ENDDO
1223
1224 ELSEIF (keyword == 'TENS/STRAIN/TMIN') THEN
1225
1226 DO i=1,nel
1227 value(1:3) = gbuf%TM_STRA3(jj(1:3) + i)
1229 . VALUE)
1230 ENDDO
1231
1232 ELSEIF (keyword == 'TENS/BSTRESS') THEN
1233
1234 IF (mlw == 87) THEN
1235 imat = ixc(1,nft+1)
1236 iadbuf = ipm(7,imat)
1237 nuparam= ipm(9,imat)
1238 uparam => bufmat(iadbuf:iadbuf+nuparam)
1241 chard = uparam(nchard)
1242 ELSEIF (mlw == 36) THEN
1243 imat = ixc(1,nft+1)
1244 iadbuf = ipm(7,imat)
1245 nuparam= ipm(9,imat)
1246 uparam => bufmat(iadbuf:iadbuf+nuparam)
1249 chard = uparam(nchard)
1250 ENDIF
1251 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1) THEN
1253 IF(mlw == 36 .AND. chard > zero) THEN
1254 DO i=1,nel
1255 DO j=1,nlay
1256 bufly => elbuf_tab(ng)%BUFLY(j)
1257 nptt = bufly%NPTT
1258 DO ir=1,nptr
1259 DO is=1,npts
1260 DO it=1,nptt
1261 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1262 DO k=1,3
1263 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1264 ENDDO
1265 ENDDO
1266 ENDDO
1267 ENDDO
1268 ENDDO
1269 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1270 ENDDO
1271 ELSEIF(mlw == 78) THEN
1272 DO i=1,nel
1273 DO j=1,nlay
1274 bufly => elbuf_tab(ng)%BUFLY(j)
1275 nptt = bufly%NPTT
1276 DO ir=1,nptr
1277 DO is=1,npts
1278 DO it=1,nptt
1279 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1280 DO k=1,3
1281 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt/nlay
1282 ENDDO
1283 ENDDO
1284 ENDDO
1285 ENDDO
1286 ENDDO
1287 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1288 ENDDO
1289 ELSEIF(mlw == 87 .AND. chard > zero) THEN
1290
1291
1292
1293 DO i=1,nel
1294 DO j=1,nlay
1295 bufly => elbuf_tab(ng)%BUFLY(j)
1296 nptt = bufly%NPTT
1297 DO ir=1,nptr
1298 DO is=1,npts
1299 DO it=1,nptt
1300 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1301 DO k=1,3
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
1306 ENDDO
1307 ENDDO
1308 ENDDO
1309 ENDDO
1310 ENDDO
1311 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1312 ENDDO
1313 ENDIF
1315 IF(mlw == 36.AND. chard > zero) THEN
1316 DO i=1,nel
1317 DO j=1,nlay
1318 bufly => elbuf_tab(ng)%BUFLY(j)
1319 nptt = bufly%NPTT
1320 DO ir=1,nptr
1321 DO is=1,npts
1322 DO it=1,nptt
1323 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1324 DO k=1,3
1325 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1326 ENDDO
1327 ENDDO
1328 ENDDO
1329 ENDDO
1330 ENDDO
1331 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1332 ENDDO
1333 ELSEIF(mlw == 78) THEN
1335 DO i=1,nel
1336 DO j=1,nlay
1337 bufly => elbuf_tab(ng)%BUFLY(j)
1338 nptt = bufly%NPTT
1339 DO ir=1,nptr
1340 DO is=1,npts
1341 DO it=1,nptt
1342 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1343 DO k=1,3
1344 value(k) = value(k) + lbuf%SIGA(jj(k) + i) /npg/nptt/nlay
1345 ENDDO
1346 ENDDO
1347 ENDDO
1348 ENDDO
1349 ENDDO
1350 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1351 ENDDO
1352 ELSEIF(
id == 2)
THEN
1353 DO i=1,nel
1354 DO j=1,nlay
1355 bufly => elbuf_tab(ng)%BUFLY(j)
1356 nptt = bufly%NPTT
1357 DO ir=1,nptr
1358 DO is=1,npts
1359 DO it=1,nptt
1360 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1361 DO k=1,3
1362 value(k) = value(k) + lbuf%SIGB(jj(k) + i) /npg/nptt/nlay
1363 ENDDO
1364 ENDDO
1365 ENDDO
1366 ENDDO
1367 ENDDO
1368 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1369 ENDDO
1370 ELSEIF(
id == 3)
THEN
1371 DO i=1,nel
1372 DO j=1,nlay
1373 bufly => elbuf_tab(ng)%BUFLY(j)
1374 nptt = bufly%NPTT
1375 DO ir=1,nptr
1376 DO is=1,npts
1377 DO it=1,nptt
1378 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1379 DO k=1,3
1380 value(k) = value(k) + lbuf%SIGC(jj(k) + i) /npg
1381 ENDDO
1382 ENDDO
1383 ENDDO
1384 ENDDO
1385 ENDDO
1386 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1387 ENDDO
1388 ENDIF
1389 ELSEIF(mlw == 87.AND. chard > zero) THEN
1391 DO i=1,nel
1392 DO j=1,nlay
1393 bufly => elbuf_tab(ng)%BUFLY(j)
1394 nptt = bufly%NPTT
1395 DO ir=1,nptr
1396 DO is=1,npts
1397 DO it=1,nptt
1398 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1399 DO k=1,3
1400 value(k) = value(k) + lbuf%SIGB(jj(k) + i ) /npg/nptt/nlay
1401 ENDDO
1402 ENDDO
1403 ENDDO
1404 ENDDO
1405 ENDDO
1406 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1407 ENDDO
1408 ELSEIF(
id == 2)
THEN
1409 DO i=1,nel
1410 DO j=1,nlay
1411 bufly => elbuf_tab(ng)%BUFLY(j)
1412 nptt = bufly%NPTT
1413 DO ir=1,nptr
1414 DO is=1,npts
1415 DO it=1,nptt
1416 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1417 DO k=1,3
1418 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i) /npg/nptt/nlay
1419 ENDDO
1420 ENDDO
1421 ENDDO
1422 ENDDO
1423 ENDDO
1424 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1425 ENDDO
1426 ELSEIF(
id == 3)
THEN
1427 DO i=1,nel
1428 DO
1429 bufly => elbuf_tab(ng)%BUFLY(j)
1430 nptt = bufly%NPTT
1431 DO ir=1,nptr
1432 DO is=1,npts
1433 DO it=1,nptt
1434 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1435 DO k=1,3
1436 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i) /npg/nptt/nlay
1437 ENDDO
1438 ENDDO !it
1439 ENDDO
1440 ENDDO
1441 ENDDO
1442 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1443 ENDDO
1444 ELSEIF(
id == 4)
THEN
1445 DO i=1,nel
1446 DO j=1,nlay
1447 bufly => elbuf_tab(ng)%BUFLY(j)
1448 nptt = bufly%NPTT
1449 DO ir=1,nptr
1450 DO is=1,npts
1451 DO it=1,nptt
1452 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1453 DO k=1,3
1454 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg/nptt/nlay
1455 ENDDO
1456 ENDDO
1457 ENDDO
1458 ENDDO
1459 ENDDO
1460 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1461 ENDDO
1462 ENDIF
1463 endif
1464 ENDIF
1465
1466
1467
1468 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1469 DO j=1,nlay
1470 id_ply = 0
1471 IF (igtyp == 17 .OR. 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
1475 ENDIF
1476 IF (id_ply == iply) THEN
1477 bufly => elbuf_tab(ng)%BUFLY(j)
1478
1479
1480
1481 IF (mlw == 36 .AND.(
id == -1 .OR.
id == 1).AND. chard > zero)
THEN
1482 DO i=1,nel
1483 DO ir=1,nptr
1484 DO is=1,npts
1485 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1486 DO k=1,3
1487 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1488 ENDDO
1489 ENDDO
1490 ENDDO
1491 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1492 ENDDO
1493
1494
1495
1496 ELSEIF (mlw == 78) THEN
1498 DO i=1,nel
1499 DO ir=1,nptr
1500 DO is=1,npts
1501 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1502 DO k=1,3
1503 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1504 ENDDO
1505 ENDDO
1506 ENDDO
1507 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1508 ENDDO
1509 ELSEIF(
id ==1 )
THEN
1510 DO i=1,nel
1511 DO ir=1,nptr
1512 DO is=1,npts
1513 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1514 DO k=1,3
1515 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1516 ENDDO
1517 ENDDO
1518 ENDDO
1519 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1520 ENDDO
1521 ELSEIF(
id ==2 )
THEN
1522 DO i=1,nel
1523 DO ir=1,nptr
1524 DO is=1,npts
1525 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1526 DO k=1,3
1527 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1528 ENDDO
1529 ENDDO
1530 ENDDO
1531 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1532 ENDDO
1533
1534 ELSEIF(
id ==3 )
THEN
1535 DO i=1,nel
1536 DO ir=1,nptr
1537 DO is=1,npts
1538 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1539 DO k=1,3
1540 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
1541 ENDDO
1542 ENDDO
1543 ENDDO
1544 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1545 ENDDO
1546 ENDIF
1547
1548
1549
1550 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1552 DO i=1,nel
1553 DO ir=1,nptr
1554 DO is=1,npts
1555 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1556 DO k=1,3
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
1561
1562 ENDDO
1563 ENDDO
1564 ENDDO
1565 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1566 ENDDO
1567 ELSEIF(
id ==1 )
THEN
1568 DO i=1,nel
1569 DO ir=1,nptr
1570 DO is=1,npts
1571 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1572 DO k=1,3
1573 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1574 ENDDO
1575 ENDDO
1576 ENDDO
1577 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1578 ENDDO
1579 ELSEIF(
id ==2 )
THEN
1580 DO i=1,nel
1581 DO ir=1,nptr
1582 DO is=1,npts
1583 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1584 DO k=1,3
1585 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1586 ENDDO
1587 ENDDO
1588 ENDDO
1589 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1590 ENDDO
1591 ELSEIF(
id ==3 )
THEN
1592 DO i=1,nel
1593 DO ir=1,nptr
1594 DO is=1,npts
1595 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1596 DO k=1,3
1597 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1598 ENDDO
1599 ENDDO
1600 ENDDO
1601 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1602 ENDDO
1603 ELSEIF(
id ==4 )
THEN
1604 DO i=1,nel
1605 DO ir=1,nptr
1606 DO is=1,npts
1607 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1608 DO k=1,3
1609 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg
1610 ENDDO
1611 ENDDO
1612 ENDDO
1613 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1614 ENDDO
1615 ENDIF
1616 ENDIF
1617 END IF
1618 ENDDO
1619
1620
1621
1622 ELSEIF (ilay > 0 .AND. ilay <=THEN
1623 j = ilay
1624 IF(igtyp == 9) j = 1
1625 bufly => elbuf_tab(ng)%BUFLY(j)
1626
1627
1628
1629 IF (mlw == 36.AND. (
id==-1 . or .
id==1).AND. chard > zero)
THEN
1630 DO i=1,nel
1631 DO ir=1,nptr
1632 DO is=1,npts
1633 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1634 DO k=1
1635 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1636 ENDDO
1637 ENDDO
1638 ENDDO
1639 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1640 ENDDO
1641
1642
1643
1644 ELSEIF (mlw == 78) THEN
1646 DO i=1,nel
1647 DO ir=1,nptr
1648 DO is=1,npts
1649 lbuf => elbuf_tab(ng)%BUFLY(j
1650 DO k=1,3
1651 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1652 ENDDO
1653 ENDDO
1654 ENDDO
1655 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1656 ENDDO
1657 ELSEIF(
id ==1 )
THEN
1658 DO i=1,nel
1659 DO ir=1,nptr
1660 DO is=1,npts
1661 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1662 DO k=1,3
1663 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1664 ENDDO
1665 ENDDO
1666 ENDDO
1667 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1668 ENDDO
1669 ELSEIF(
id ==2 )
THEN
1670 DO i=1,nel
1671 DO ir=1,nptr
1672 DO is=1,npts
1673 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1674 DO k=1,3
1675 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1676 ENDDO
1677 ENDDO
1678 ENDDO
1679 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1680 ENDDO ! i
1681 ELSEIF(
id ==3 )
THEN
1682 DO i=1,nel
1683 DO ir=1,nptr
1684 DO is=1,npts
1685 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1686 DO k=1,3
1687 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
1688 ENDDO
1689 ENDDO
1690 ENDDO
1691 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1692 ENDDO
1693 ENDIF
1694
1695
1696
1697 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1699 DO i=1,nel
1700 DO ir=1,nptr
1701 DO is=1,npts
1702 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1703 DO k=1,3
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
1708
1709 ENDDO
1710 ENDDO
1711 ENDDO
1712 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1713 ENDDO
1714 ELSEIF(
id ==1 )
THEN
1715 DO i=1,nel
1716 DO ir=1,nptr
1717 DO is=1,npts
1718 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1719 DO k=1,3
1720 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1721 ENDDO
1722 ENDDO
1723 ENDDO
1724 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1725 ENDDO
1726 ELSEIF(
id ==2 )
THEN
1727 DO i=1,nel
1728 DO ir=1,nptr
1729 DO is=1,npts
1730 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1731 DO k=1,3
1732 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1733 ENDDO
1734 ENDDO
1735 ENDDO
1736 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1737 ENDDO
1738 ELSEIF(
id ==3 )
THEN
1739 DO i=1,nel
1740 DO ir=1,nptr
1741 DO is=1,npts
1742 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1743 DO k=1,3
1744 VALUE(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1745 ENDDO
1746 ENDDO
1747 ENDDO
1748 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1749 ENDDO
1750 ELSEIF(
id ==4 )
THEN
1751 DO i=1,nel
1752 DO ir=1,nptr
1753 DO is=1,npts
1754 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1755 DO k=1,3
1756 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg
1757 ENDDO
1758 ENDDO !is
1759 ENDDO
1760 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1761 ENDDO
1762 ENDIF
1763 ENDIF
1764
1765
1766
1767 ELSEIF (iply == -1 .AND. ilay <= nlay .AND. ilay > 0 .AND. ipt == -1 ) THEN
1768 IF (igtyp == 9 .OR.igtyp == 10 .OR. igtyp == 11 ) THEN
1769
1770 j = ilay
1771 IF(igtyp == 9) j = 1
1772 bufly => elbuf_tab(ng)%BUFLY(j)
1773 nptt = bufly%NPTT
1774
1775
1776
1777 IF (mlw == 36.AND. (
id==-1 .OR.
id==1) .AND. chard > zero)
THEN
1778 DO i=1,nel
1779 DO ir=1,nptr
1780 DO is=1,npts
1781 DO it=1,nptt
1782 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1783 DO k=1,3
1784 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1785 ENDDO
1786 enddo
1787 ENDDO
1788 enddo
1789 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1790 value(1:3) = zero
1791 ENDDO
1792
1793
1794
1795 ELSEIF (mlw == 78) THEN
1797 DO i=1,nel
1798 DO ir=1,nptr
1799 DO is=1,npts
1800 DO it=1,nptt
1801 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1802 DO k=1,3
1803 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt
1804 ENDDO
1805 enddo
1806 ENDDO
1807 ENDDO
1808 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1809 ENDDO
1810 ELSEIF(
id ==1 )
THEN
1811 DO i=1,nel
1812 DO ir=1,nptr
1813 DO is=1,npts
1814 DO it=1,nptt
1815 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1816 DO k=1,3
1817 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg/nptt
1818 ENDDO
1819 enddo
1820 ENDDO !is
1821 ENDDO
1822 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1823 ENDDO
1824 ELSEIF(
id ==2 )
THEN
1825 DO i=1,nel
1826 DO ir=1,nptr
1827 DO is=1,npts
1828 DO it=1,nptt
1829 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1830 DO k=1,3
1831 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1832 ENDDO
1833 enddo
1834 ENDDO
1835 ENDDO
1836 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1837 ENDDO
1838 ELSEIF(
id ==3 )
THEN
1839 DO i=1,nel
1840 DO ir=1,nptr
1841 DO is=1,npts
1842 DO it=1,nptt
1843 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1844 DO k=1,3
1845 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg/nptt
1846 ENDDO
1847 enddo
1848 ENDDO
1849 ENDDO
1850 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1851 ENDDO
1852 ENDIF
1853
1854
1855
1856 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1858 DO i=1,nel
1859 DO ir=1,nptr
1860 DO is=1,npts
1861 DO it=1,nptt
1862 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1863 DO k=1,3
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
1868
1869 ENDDO
1870 enddo
1871 ENDDO
1872 ENDDO
1873 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft
VALUE)
1874 ENDDO
1875 ELSEIF(
id ==1 )
THEN
1876 DO i=1,nel
1877 DO ir=1,nptr
1878 DO is=1,npts
1879 DO it=1,nptt
1880 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1881 DO k=1,3
1882 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1883 ENDDO
1884 enddo
1885 ENDDO
1886 ENDDO
1887 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1888 ENDDO
1889 ELSEIF(
id ==2 )
THEN
1890 DO i=1,nel
1891 DO ir=1,nptr
1892 DO is=1,npts
1893 DO it=1,nptt
1894 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1895 DO k=1,3
1896 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg/nptt
1897 ENDDO
1898 enddo
1899 ENDDO
1900 ENDDO
1901 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1902 ENDDO
1903 ELSEIF(
id ==3 )
THEN
1904 DO i=1,nel
1905 DO ir=1,nptr
1906 DO is=1,npts
1907 DO it=1,nptt
1908 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1909 DO k=1,3
1910 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i
1911 ENDDO
1912 enddo
1913 ENDDO
1914 ENDDO
1915 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1916 ENDDO
1917 ELSEIF(
id ==4 )
THEN
1918 DO i=1,nel
1919 DO ir=1,nptr
1920 DO is=1,npts
1921 DO it=1,nptt
1922 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1923 DO k=1,3
1924 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
1925 ENDDO
1926 enddo
1927 ENDDO
1928 ENDDO
1929 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1930 ENDDO
1931 ENDIF
1932 ENDIF
1933 ENDIF
1934
1935
1936
1937 ELSE IF(ilay == -1 .AND. ipt > 0 .AND. ipt<=mpt .AND. iply == -1 ) THEN
1938 DO j=1,nlay
1939 bufly => elbuf_tab(ng)%BUFLY(j)
1940 nptt = bufly%NPTT
1941 IF (ipt <= nptt ) THEN
1942
1943
1944
1945 IF (mlw == 36.AND. (
id==-1 .OR.
id==1) .AND. chard > zero)
THEN
1946 DO i=1,nel
1947 DO ir=1,nptr
1948 DO is=1,npts
1949
1950 DO k=1,3
1951 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1952 ENDDO
1953 ENDDO
1954 ENDDO
1955 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1956 ENDDO
1957
1958
1959
1960 ELSEIF (mlw == 78) THEN
1962 DO i=1,nel
1963 DO ir=1,nptr
1964 DO is=1,npts
1965 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1966 DO k=1,3
1967 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1968 ENDDO
1969 ENDDO
1970 ENDDO
1971 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1972 ENDDO
1973 ELSEIF(
id ==1 )
THEN
1974 DO i=1,nel
1975 DO ir=1,nptr
1976 DO is=1,npts
1977 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1978 DO k=1,3
1979 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1980 ENDDO
1981 ENDDO
1982 ENDDO
1983 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1984 ENDDO
1985 ELSEIF(
id ==2 )
THEN
1986 DO i=1,nel
1987 DO ir=1,nptr
1988 DO is=1,npts
1989 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1990 DO k=1,3
1991 value(k) = VALUE(k) + lbuf%SIGB(jj(k) + i)/npg
1992 ENDDO
1993 ENDDO
1994 ENDDO
1995 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1996 ENDDO
1997 ELSEIF(
id ==3 )
THEN
1998 DO i=1,nel
1999 DO ir=1,nptr
2000 DO is=1,npts
2001 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2002 DO k=1,3
2003 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
2004 ENDDO
2005 ENDDO
2006 ENDDO
2007 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2008 ENDDO
2009 ENDIF
2010
2011
2012
2013 ELSEIF( mlw == 87 .AND. chard > zero) THEN
2015 DO i=1,nel
2016 DO ir=1,nptr
2017 DO is=1,npts
2018 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2019 DO k=1,3
2020 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
2021 .
2022 . +lbuf%SIGB(jj(k+6) + i )
2023 . +lbuf%SIGB(jj(k+9) + i ))/npg
2024
2025 ENDDO
2026 ENDDO
2027 ENDDO
2028 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2029 ENDDO
2030 ELSEIF(
id ==1 )
THEN
2031 DO i=1,nel
2032 DO ir=1,nptr
2033 DO is=1,npts
2034 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2035 DO k=1,3
2036 value(k) = value(k) + lbuf%SIGB(jj(k) + i )/npg
2037 ENDDO
2038 ENDDO
2039 ENDDO
2040 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2041 ENDDO
2042 ELSEIF(
id ==2 )
THEN
2043 DO i=1,nel
2044 DO ir=1,nptr
2045 DO is=1,npts
2046 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2047 DO k=1,3
2048 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg
2049 ENDDO
2050 ENDDO
2051 ENDDO
2052 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2053 ENDDO
2054 ELSEIF(
id ==3 )
THEN
2055 DO i=1,nel
2056 DO ir=1,nptr
2057 DO is=1,npts
2058 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2059 DO k=1,3
2060 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i )/npg
2061 ENDDO
2062 ENDDO
2063 ENDDO
2064 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2065 ENDDO
2066 ELSEIF(
id ==4 )
THEN
2067 DO i=1,nel
2068 DO ir=1,nptr
2069 DO is=1,npts
2070 lbuf => elbuf_tab
2071 DO k=1,3
2072 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
2073 ENDDO
2074 ENDDO
2075 ENDDO
2077 ENDDO
2078 ENDIF
2079 ENDIF
2080 endif
2081 ENDDO
2082
2083 END IF
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117 ENDIF
2118
2119
2120
2121
2122 ELSEIF (ity == 50) THEN
2123
2124
2125
2126
2127
2128
2129
2130 ELSE
2131 ENDIF
2132 ENDIF
2133 490 CONTINUE
2134 500 CONTINUE
2135
2136
2137 RETURN
subroutine sh3_tstrain(xn, yn, zn, dx, dy, dz, strain, nel, ihbe)
subroutine sh4_tstrain(xn, yn, zn, dx, dy, dz, strain, nel)
subroutine h3d_write_sh_tensor(iok_part, iselect, is_written, tensor, i, offset, nft, value)
subroutine h3d_write_sh_tensor_array(iok_part, iselect, nel, offset, nft, is_written, tensor, value)
subroutine layini(elbuf_str, jft, jlt, geo, igeo, mat, pid, thkly, matly, posly, igtyp, ixfem, ixlay, nlay, npt, isubstack, stack, drape, nft, thk, nel, ratio_thkly, indx_drape, sedrape, numel_drape)
integer, parameter ncharline100
integer, dimension(:,:), allocatable ply_info
subroutine nbfunct(nfunct, ntable, npts, lsubmodel)
subroutine roto_tens2d(nel, sig, dir)
subroutine roto_tens2d_aniso(nel, tens, dir_a, dir_b)
subroutine uroto_tens2d(nel, sig, dir)
subroutine uroto_tens2d_aniso(nel, tens, dir_a, dir_b)