52
53
54
55 USE elbufdef_mod
57 USE matparam_def_mod
60 use element_mod , only : nixc,nixtg
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "mvsiz_p.inc"
69
70#include "com01_c.inc"
71#include "com04_c.inc"
72#include "param_c.inc"
73#include "tabsiz_c.inc"
74
75
76
77 INTEGER IPARG(NPARG,*),ITENS,INVERT(*),IUVAR_INPUT,
78 . EL2FA(*),IXC(NIXC,*), IGEO(NPROPGI,*),
79 . NELCUT,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) :: DRAPEG
93
94
95
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,
99 . ILAY,IR,IS,IT,NPTR,NPTS,NPTT,NLAY,NPG,IPLY,IDRAPE,
100 . IPID,NS1,NS2,ISTRE,IADBUF,NUPARAM,IMAT,NNI,N0,
101 . IHBE,IREP,ISROT,IVISC,IGTYP,ISUBSTACK,
102 . ID_PLY,IPANG,IPPOS,IPTHK,OFFSET,ISELECT,MAT_ORTH,
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
110
111 TYPE(BUF_LAY_) ,POINTER :: BUFLY
112 TYPE(G_BUFEL_) ,POINTER :: GBUF
113 TYPE(L_BUFEL_) ,POINTER :: LBUF
114 my_real,
DIMENSION(:) ,
POINTER :: uparam,dir_a,dir_b
115
116 INTEGER, DIMENSION(:) , ALLOCATABLE :: MATLY
117 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
118 my_real,
DIMENSION(:,:),
ALLOCATABLE :: posly,thk_ly
119
120
121
122
123
124
125
126 offset = 0
127 value(1:5) = zero
128 iselect = 1
129 id_ply = 0
130 npg = 1
131
132 nn1 = 1
133 nn2 = nn1
134 nn3 = nn2
135 nn4 = nn3 + numelq
136 nn5 = nn4 + numelc
137 nn6 = nn5 + numeltg
138 nn7 = nn6
139 nn8 = nn7
140 nn9 = nn8
141 nn10= nn9
142
143 DO i=1,numelc+numeltg
144 is_written_shell(i) = 0
145 ENDDO
146
147 DO 490 ng=1,ngroup
148
149 mlw = iparg(1,ng)
150 nel = iparg(2,ng)
151 nft = iparg(3,ng)
152 ity = iparg(5,ng)
153 igtyp = iparg(38,ng)
154 isrot = iparg(41,ng)
155 ixfem = iparg(54,ng)
156 isubstack = iparg(71,ng)
157 idrape = elbuf_tab(ng)%IDRAPE
158 npt = iabs(iparg(6,ng))
159 iok_part(1:nel) = 0
160
161 DO i=1,15
162 jj(i) = nel*(i-1)
163 ENDDO
164
165 IF (mlw /= 13) THEN
166
167
168
169 IF(ity == 2)THEN
170 DO i=1,nel
171 n = i + nft
172 shell_tensor(1,offset+nft+i) = zero
173 shell_tensor(2,offset+nft+i) = zero
174 shell_tensor(3,offset+nft+i) = zero
175 ENDDO
176
177
178
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
184 npg = nptr*npts
185
186 ihbe = iparg(23,ng)
187 IF (ity == 3) THEN
188 n0 = 0
189 nni = nn4
190 IF (ihbe == 11) npg = 4
191 ELSE
192 n0 = numelc
193 nni = nn5
194 IF (ihbe == 30) npg = 3
195 ENDIF
196
197 IF (ity == 3) offset = 0
198 IF (ity == 7) offset = numelc
199
200 DO i=1,nel
201 IF (ity == 3) THEN
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
209 ENDIF
210 ENDDO
211
212 IF (mlw == 0) GOTO 490
213
214 a1 = zero
215 a2 = zero
216 a3 = zero
217 istre = 1
218 npt = iabs(iparg(6,ng))
220 mpt0 = mpt
221 IF (npt == 0) mpt = 0
222
223 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR. igtyp == 17) THEN
224 npt = 1
225 mpt = npt
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
233 ENDIF
234 IF (ply_input > 0) THEN
235 DO j=1,nlay
236 id_ply = 0
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)
241 ENDIF
242 IF (id_ply == ply_input ) THEN
243 npt= elbuf_tab(ng)%BUFLY(j)%NPTT
244 EXIT
245 ENDIF
246 ENDDO
247 ENDIF
249 ENDIF
250
251 ilay = layer_input
252 ipt = ipt_input
253 iply = ply_input
254 IF (ilay == -2) ilay = 1
255 IF (ilay == -3) ilay = nlay
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)
259 ELSE
260 IF (ipt == -3) ipt =
max(1,npt)
261 ENDIF
262
263
264
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
270 IF (ity == 3) THEN
271 ipid = ixc(6,nft+1)
272 DO i=1,nel
273 mat(i)=ixc(1,nft+i)
274 pid(i)=ixc(6,nft+i)
275 ENDDO
276 ELSE
277 ipid = ixtg(5,nft+1)
278 DO i=1,nel
279 mat(i)=ixtg(1,nft+i)
280 pid(i)=ixtg(5,nft+i)
281 ENDDO
282 ENDIF
283
284 irep = igeo(6,ipid)
285 zshift = geo(199, ipid)
286 ENDIF
287 IF( keyword == 'TENS/STRAIN' .OR. keyword == 'TENS/MSTRAIN') THEN
288
289 laynpt_max = 1
290 ixlay = 0
291 IF(igtyp == 51 .OR. igtyp == 52) THEN
292 DO ilay=1,nlay
293 laynpt_max =
max(laynpt_max ,elbuf_tab(ng)%BUFLY(ilay)%NPTT)
294 ENDDO
295 ENDIF
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))
299 matly = 0
300 thkly = zero
301 posly = zero
302 thk_ly = zero
303
304
305 IF(ity == 7) THEN
309 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
310 . mat ,pid ,thkly ,matly
311 . igtyp ,ixfem ,ixlay ,nlay ,mpt0 ,
312 . isubstack ,stack ,drape_sh3n ,nft ,gbuf%THK,
313 . nel ,thk_ly ,drapeg%INDX_SH3N ,sedrape,numel_drape )
314 ELSE
318 . elbuf_tab(ng),1 ,nel ,geo ,igeo ,
319 . mat ,pid ,thkly ,matly ,posly ,
320 . igtyp ,ixfem ,ixlay
321 . isubstack ,stack ,drape_sh4n ,nft ,gbuf%THK ,
322 . nel ,thk_ly ,drapeg%INDX_SH4N,sedrape ,numel_drape )
323 ENDIF
324 ENDIF
325
326 IF (keyword == 'TENS/STRESS/MEMB') THEN
327
328 DO i=1,nel
329 value(1) = gbuf%FOR(jj(1)+i)
330 value(2) = gbuf%FOR(jj(2)+i)
331 value(3) = gbuf%FOR(jj(3)+i)
333 . VALUE)
334 ENDDO
335
336 ELSEIF (keyword == 'TENS/STRESS/BEND') THEN
337
338 DO i=1,nel
339 value(1) = gbuf%MOM(jj(1)+i)
340 value(2) = gbuf%MOM(jj(2)+i)
341 value(3) = gbuf%MOM(jj(3)+i)
343 . VALUE)
344 ENDDO
345
346
347 ELSEIF (keyword == 'TENS/STRESS') THEN
348
349
350 iselect = 0
351 ALLOCATE (sige(nel,3))
352 sige(1:nel,1:3) = zero
353
354 IF (mpt == 0) THEN
355 iselect = 1
356 IF (ipt_input == -2 ) THEN
357 factor = -six
358 factor_n = one + six*zshift
359 ELSEIF (ipt_input == -3) THEN
360 factor = six
361 factor_n = one - six*zshift
362 ELSE
363 factor = zero
364 factor_n = one
365 END IF
366 DO i=1,nel
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
370 ENDDO
371
372 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1) THEN
373 iselect = 1
374 DO i=1,nel
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)
378 ENDDO
379
380 ELSEIF (ilay == -1 .AND. iply > 0 .AND. ipt > 0) THEN
381
382 DO j=1,nlay
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)
387 END IF
388 ilay = j
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
392 iselect = 1
393 DO i=1,nel
394 DO ir=1,nptr
395 DO is=1,npts
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
400 ENDDO
401 ENDDO
402 ENDDO
403 IF (ivisc > 0) THEN
404 DO i=1,nel
405 DO ir=1,nptr
406 DO is=1,npts
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
411 ENDDO
412 ENDDO
413 ENDDO
414 END IF
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
420 ELSE
421 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
422 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
423 ENDIF
424 END IF
425 IF (mat_orth == 2) THEN
427 ELSE IF (mat_orth == 3) THEN
429 END IF
430 EXIT
431 ENDIF
432 ENDDO
433
434 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1) THEN
435
436 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
437 iselect = 1
438 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
439 ivisc = mat_param(imat)%IVISC
440 DO i=1,nel
441 DO ir=1,nptr
442 DO is=1,npts
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
447 ENDDO
448 ENDDO
449 ENDDO
450 IF (ivisc > 0) THEN
451 DO i=1,nel
452 DO ir=1,nptr
453 DO is=1,npts
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
458 ENDDO
459 ENDDO
460 ENDDO
461 END IF
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
466 END IF
467 IF (mat_orth == 2) THEN
469 ELSE IF (mat_orth == 3) THEN
471 END IF
472 ENDIF
473
474 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1) THEN
475
476 IF (igtyp == 1 .OR. igtyp == 9) THEN
477 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT) THEN
478 iselect = 1
479 imat = elbuf_tab(ng)%BUFLY(1)%IMAT
480 ivisc = mat_param(imat)%IVISC
481 DO i=1,nel
482 DO ir=1,nptr
483 DO is=1,npts
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) /
487 sige(i,3) = sige(i,3) + lbuf%SIG(jj(3) + i) / npg
488 ENDDO
489 ENDDO
490 ENDDO
491 IF (ivisc > 0) THEN
492 DO i=1,nel
493 DO ir=1,nptr
494 DO is=1,npts
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
499 ENDDO
500 ENDDO
501 ENDDO
502 END IF
503 mat_orth = mat_param(imat)%ORTHOTROPY
504 IF (mat_orth == 2) THEN
505 dir_a => elbuf_tab(ng)%BUFLY(1)%DIRA
507 END IF
508 ENDIF
509 ENDIF
510 ENDIF
511
512 IF (iselect == 1) THEN
514 . iok_part ,iselect ,nel ,offset ,nft ,
515 . is_written_shell,shell_tensor,sige )
516 END IF
517
518 DEALLOCATE (sige)
519
520 ELSEIF (keyword == 'TENS/MSTRESS') THEN
521
522 iselect = 0
523 ALLOCATE (sigm(nel,3))
524 sigm(1:nel,1:3) = zero
525
526 IF (ilay == -1 .AND. iply > 0 .AND. ipt > 0) THEN
527
528 DO j=1,nlay
529 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51) THEN
530 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
531 ELSE IF (igtyp == 52) THEN
532 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack) - numstack)
533 END IF
534
535 IF (id_ply == iply) THEN
536 ilay = j
537 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
538 ivisc = mat_param(imat)%IVISC
539 IF (ipt <= elbuf_tab(ng)%BUFLY(ilay)%NPTT) THEN
540 iselect = 1
541 DO i=1,nel
542 DO ir=1,nptr
543 DO is=1,npts
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
548 ENDDO
549 ENDDO
550 ENDDO
551 IF (ivisc > 0) THEN
552 DO i=1,nel
553 DO ir=1,nptr
554 DO is=1,npts
555 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,ipt)
556 sigm(i,1) = sigm(i,1) + lbuf%VISC(jj(1) + i) / npg
557 sigm(i,2) = sigm(i,2) + lbuf%VISC(jj(2) + i) / npg
558 sigm(i,3) = sigm(i,3) + lbuf%VISC(jj(3) + i) / npg
559 ENDDO
560 ENDDO
561 ENDDO
562 END IF
563 ENDIF
564 ENDIF
565 ENDDO
566
567 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1 .AND. ipt == -1) THEN
568
569 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
570 iselect = 1
571 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
572 ivisc = mat_param(imat)%IVISC
573 DO i=1,nel
574 DO ir=1,nptr
575 DO is=1,npts
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
580 ENDDO
581 ENDDO
582 ENDDO
583 IF (ivisc > 0) THEN
584 DO i=1,nel
585 DO ir=1,nptr
586 DO is=1,npts
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
591 ENDDO
592 ENDDO
593 ENDDO
594 END IF
595 ENDIF
596
597 ELSEIF (ipt > 0 .AND. ilay ==-1 .AND. iply == -1) THEN
598
599 IF (igtyp == 1 .OR. igtyp == 9) THEN
600 IF (ipt <= elbuf_tab(ng)%BUFLY(1)%NPTT) THEN
601 iselect = 1
602 imat = elbuf_tab(ng)%BUFLY(ilay)%IMAT
603 ivisc = mat_param(imat)%IVISC
604 DO i=1,nel
605 DO ir=1,nptr
606 DO is=1,npts
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) / npg
610 sigm(i,3) = sigm(i,3) + lbuf%SIG(jj
611 ENDDO
612 ENDDO
613 ENDDO
614 IF (ivisc > 0) THEN
615 DO i=1,nel
616 DO ir=1,nptr
617 DO is=1,npts
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
622 ENDDO
623 ENDDO
624 ENDDO
625 END IF
626
627 ENDIF
628 ENDIF
629 ENDIF
630
632 . iok_part ,iselect ,nel ,offset ,nft ,
633 . is_written_shell,shell_tensor,sigm )
634
635 DEALLOCATE (sigm)
636
637 ELSE IF (keyword == 'TENS/STRAIN/MEMB') THEN
638
639 DO i=1,nel
640 n = i + nft
641 thk = gbuf%THK(i)
642 j = el2fa(nni+n)
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)
649 ENDDO
650
651 ELSEIF (keyword == 'TENS/STRAIN/BEND') THEN
652
653 DO i=1,nel
654 n = i + nft
655 thk = gbuf%THK(i)
656 j = el2fa(nni+n)
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)
663 ENDDO
664
665 ELSEIF (keyword == 'TENS/STRAIN') THEN
666
667 IF (mpt == 0) THEN
668 iselect = 1
669 DO i=1,nel
670 IF (ipt == 1) THEN
671 factor = (zshift-half)*gbuf%THK(i)
672 ELSE
673 factor = (zshift+half)*gbuf%THK(i)
674 ENDIF
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)
681 ENDDO
682
683 ELSE IF (ilay == -1 .AND. iply == -1 .AND. ipt == -1) THEN
684 DO i=1,nel
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)
691 ENDDO
692
693
694
695 ELSE IF (iply > 0 .AND. ipt > 0) THEN
696 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52) THEN
697 ipang = 1
698 ipthk = ipang + nlay
699 ippos = ipthk + nlay
700 ipt_all = 0
701 DO j=1,nlay
702 bufly => elbuf_tab(ng)%BUFLY(j)
703 nptt = bufly%NPTT
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)
708 ENDIF
709 IF (id_ply == iply .AND. ipt <= nptt) THEN
710 islice = ipt_all + ipt
711 IF(npg > 1) THEN
712 lens = nel*gbuf%G_STRPG/npg
713 DO i=1,nel
714 n = i + nft
715 thk = gbuf%THK(i)
716 factor = posly(i,islice)
717 value(1:3) = zero
718 DO ipg = 1, npg
719 pts = (ipg -1)*lens
720 value(1) = value(1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj(6)+i) * thk
721 value(2) = value(2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
722 value(3) = value(3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
723 ENDDO
724 value(1:3) = value(1:3)/npg
725 value(3) = value(3) * half
727 . shell_tensor,i,offset,nft,VALUE)
728 ENDDO
729 ELSE
730 DO i=1,nel
731 n = i + nft
732 thk = gbuf%THK(i)
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)
740 ENDDO
741 ENDIF
742 ENDIF
743 ipt_all = ipt_all + nptt
744 ENDDO
745 ENDIF
746
747 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1) THEN
748
749 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
750 IF (npg > 1) THEN
751 lens = nel*gbuf%G_STRPG/npg
752 DO i=1,nel
753 n = i + nft
754 thk = gbuf%THK(i)
755 factor = posly(i,ilay)
756 j = el2fa(nni+n)
757 value(1:3) = zero
758 DO ipg = 1, npg
759 pts = (ipg -1)*lens
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
763 ENDDO
764 value(1) = value(1)/npg
765 value(2) = value(2)/npg
766 value(3) = value(3)/npg
767 value(3) = value(3) * half
769 . shell_tensor,i,offset,nft,VALUE)
770 ENDDO
771 ELSE
772 DO i=1,nel
773 n = i + nft
774 thk = gbuf%THK(i)
775 factor = posly(i,ilay)
776 j = el2fa(nni+n)
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
780 value(3) = value(3) * half
782 . shell_tensor,i,offset,nft,VALUE)
783 ENDDO
784 ENDIF
785 ENDIF
786
787 ELSEIF (ipt <= mpt .AND. ipt > 0) THEN
788
789 IF (igtyp == 1 .OR. igtyp == 9) THEN
790 IF(npg > 1) THEN
791 lens = nel*gbuf%G_STRPG/npg
792 DO i=1,nel
793 n = i + nft
794 thk = gbuf%THK(i)
795 factor = posly(i,ipt)
796 j = el2fa(nni+n)
797 value(1:3) = zero
798 DO ipg =1,npg
799 pts = (ipg -1)*lens
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) + factor*gbuf%STRPG(pts + jj(7)+i) * thk
802 value(3) = value(3)+ gbuf%STRPG(pts + jj(3)+i) + factor*gbuf%STRPG(pts + jj(8)+i) * thk
803 ENDDO
804 value(1:3) = value(1:3)/npg
805 value(3) = value(3) * half
807 . shell_tensor,i,offset,nft,VALUE)
808 ENDDO
809 ELSE
810 DO i=1,nel
811 n = i + nft
812 thk = gbuf%THK(i)
813 factor = posly(i,ipt)
814 j = el2fa(nni+n)
815 value(1) = gbuf%STRA(jj(1)+i) + factor*gbuf%STRA(jj(6)+i) * thk
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(8)+i) * thk
818 value(3) = value(3) * half
820 . shell_tensor,i,offset,nft,VALUE)
821 ENDDO
822 ENDIF
823 ENDIF
824 ENDIF
825 DEALLOCATE(matly, thkly,posly,thk_ly)
826
827 ELSEIF (keyword == 'TENS/MSTRAIN') THEN
828
829 ALLOCATE (epsm(nel,3))
830 epsm(:,:) = zero
831
832 IF (iply > 0 .AND. ipt > 0) THEN
833
834 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51 .OR. igtyp == 52) THEN
835 ipang = 1
836 ipthk = ipang + nlay
837 ippos = ipthk + nlay
838 ipt_all = 0
839 DO j=1,nlay
840 bufly => elbuf_tab(ng)%BUFLY(j)
841 nptt = bufly%NPTT
842 IF (igtyp == 17 .OR. igtyp == 19 .OR. igtyp == 51) THEN
843 id_ply = igeo(1,stack%IGEO(2+j,isubstack))
844 ELSEIF (igtyp == 52) THEN
845 id_ply =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
846 ENDIF
847 IF (id_ply == iply .AND. ipt <= nptt) THEN
848 ilay = j
849 islice = ipt_all + ipt
850 IF(npg > 1) THEN
851 lens = nel*gbuf%G_STRPG/npg
852 DO i=1,nel
853 thk = gbuf%THK(i)
854 factor = posly(i,islice)
855 epsm(i,1:3) = zero
856 DO ipg = 1, npg
857 pts = (ipg -1)*lens
858 epsm(i,1) = epsm(i,1)+ gbuf%STRPG(pts + jj(1)+i) + factor*gbuf%STRPG(pts + jj
859 epsm(i,2) = epsm(i,2)+ gbuf%STRPG(pts + jj(2)+i) + factor*gbuf%STRPG
860 epsm
861 ENDDO
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
865 ENDDO
866 ELSE
867 DO i=1,nel
868 thk = gbuf%THK(i)
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
874 ENDDO
875 ENDIF
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
882 ELSE
883 dir_a => elbuf_tab(ng)%BUFLY(ilay)%DIRA
884 dir_b => elbuf_tab(ng)%BUFLY(ilay)%DIRB
885 ENDIF
886 END IF
887 IF (mat_orth == 2) THEN
889 ELSE IF (mat_orth == 3) THEN
891 END IF
892 ENDIF
893 ipt_all = ipt_all + nptt
894 ENDDO
895 ENDIF
896
897 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. iply == -1 .AND. ipt == -1) THEN
898
899 IF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16) THEN
900 IF(npg > 1) THEN
901 lens = nel*gbuf%G_STRPG/npg
902 DO i=1,nel
903 thk = gbuf%THK(i)
904 factor = posly(i,ilay)
905 epsm(i,1:3) = zero
906 DO ipg = 1, npg
907 pts = (ipg -1)*lens
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(
911 ENDDO
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
915 ENDDO
916 ELSE
917 DO i=1,nel
918 thk = gbuf%THK(i)
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
924 ENDDO
925 ENDIF
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
931 END IF
932 IF (mat_orth == 2) THEN
934 ELSE IF (mat_orth == 3) THEN
936 END IF
937 ENDIF
938
939 ELSEIF (ipt > 0 .AND. ipt <= mpt .AND. iply == -1 .AND. ilay == -1) THEN
940
941 IF (igtyp == 1 .OR. igtyp == 9) THEN
942 IF(npg > 1) THEN
943 lens = nel*gbuf%G_STRPG/npg
944 DO i=1,nel
945 thk = gbuf%THK(i)
946 factor = posly(i,ipt)
947 epsm(i,1:3) = zero
948 DO ipg = 1, npg
949 pts = (ipg -1)*lens
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
953 ENDDO
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
957 ENDDO
958 ELSE
959 DO i=1,nel
960 thk = gbuf%THK(i)
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
966 ENDDO
967 ENDIF
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
973 END IF
974 ENDIF
975 ENDIF
976
978 . iok_part ,iselect ,nel ,offset ,nft ,
979 . is_written_shell,shell_tensor,epsm )
980
981 DEALLOCATE (epsm)
982 DEALLOCATE(matly, thkly,posly,thk_ly)
983
984 ELSEIF (keyword == 'TENS/EPSDOT/MEMB') THEN
985
986 a1 = one
987 a2 = zero
988 DO i=1,nel
989 thk = gbuf%THK(i)
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
994 . VALUE)
995 ENDDO
996
997 ELSEIF (keyword == 'TENS/EPSDOT/BEND') THEN
998
999 DO i=1,nel
1000 thk = gbuf%THK(i)
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
1005 . VALUE)
1006 ENDDO
1007
1008 ELSEIF (keyword == 'TENS/EPSDOT') THEN
1009
1010
1011 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1) THEN
1012 a1 = one
1013 a2 = zero
1014 DO i=1,nel
1015 thk = gbuf%THK(i)
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)
1021 ENDDO
1022
1023 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1024 IF (igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
1025 ipang = 1
1026 ipthk = ipang + nlay
1027 ippos = ipthk + nlay
1028 DO j=1,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)
1033 ENDIF
1034 bufly => elbuf_tab(ng)%BUFLY(j)
1035 nptt = bufly%NPTT
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)
1040 DO i=1,nel
1041 thk = gbuf%THK(i)
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)
1047 ENDDO
1048 ENDIF
1049 ENDDO
1050 ENDIF
1051
1052
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
1055 a1 = zero
1056 a2 = zero
1057 ns1 = 8
1058 ns2 = 8
1059 ipang = 1
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)
1066 ENDIF
1067 bufly => elbuf_tab(ng)%BUFLY(ilay)
1068 nptt = bufly%NPTT
1069 IF (ipt <= nptt) THEN
1070 a1 = one
1071 a2 = stack%GEO(ippos+ilay,isubstack)+
1072 . half*(((2*ipt-one)/nptt)-one) *
1073 . stack%GEO(ipthk+ilay,isubstack)
1074 DO i=1,nel
1075 n = i + nft
1076 thk = gbuf%THK(i)
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
1081 . VALUE)
1082 ENDDO
1083 ENDIF
1084 ENDIF
1085
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
1088 a1 = one
1089 a2 = half*(((2*ilay-one)/nlay)-one)
1090 DO i=1,nel
1091 n = i + nft
1092 thk = gbuf%THK(i)
1093 value(1) = a1*epsdot(1,i+nft+offset) + a2*epsdot(4,i+nft+offset)*thk
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
1097 . VALUE)
1098 ENDDO
1099 ELSEIF (igtyp == 51 .OR. igtyp == 52) THEN
1100 a1 = one
1101 a2 = stack%GEO(ippos+ilay,isubstack)+
1102 . half*(((2*ipt-one)/nptt)-one) *
1103 . stack%GEO(ipthk+ilay,isubstack)
1104 DO i=1,nel
1105 n = i + nft
1106 thk = gbuf%THK(i)
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(6,i+nft+offset)*thk)* half
1111 . VALUE)
1112 ENDDO
1113 ENDIF
1114
1115 ELSEIF ( ipt <= mpt .AND. ipt > 0) THEN
1116 a1 = one
1117 a2 = half*(((2*ipt-one)/mpt)-one)
1118 IF (igtyp == 1 .OR. igtyp == 9) THEN
1119 DO i=1,nel
1120 thk = gbuf%THK(i)
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(6,i+nft+offset)*thk)* half
1125 . VALUE)
1126 ENDDO
1127 ENDIF
1128 ENDIF
1129
1130 ELSE IF (keyword == 'TENS/STRAIN_ENG') THEN
1131
1132 IF (ity == 3 ) THEN
1133 DO i=1,nel
1134 n = i + nft
1135 nni = ixc(2,n)
1136 j = 4*(i-1) +1
1137 xn(j)=x(1,nni)
1138 yn(j)=x(2,nni)
1139 zn(j)=x(3,nni)
1140 dxn(j)=d(1,nni)
1141 dyn(j)=d(2,nni)
1142 dzn(j)=d(3,nni)
1143 nni = ixc(3,n)
1144 xn(j+1)=x(1,nni)
1145 yn(j+1)=x(2,nni)
1146 zn(j+1)=x(3,nni)
1147 dxn(j+1)=d(1,nni)
1148 dyn(j+1)=d(2,nni)
1149 dzn(j+1)=d(3,nni)
1150 nni = ixc(4,n)
1151 xn(j+2)=x(1,nni)
1152 yn(j+2)=x(2,nni)
1153 zn(j+2)=x(3,nni)
1154 dxn(j+2)=d(1,nni)
1155 dyn(j+2)=d(2,nni)
1156 dzn(j+2)=d(3,nni)
1157 nni = ixc(5,n)
1158 xn(j+3)=x(1,nni)
1159 yn(j+3)=x(2,nni)
1160 zn(j+3)=x(3,nni)
1161 dxn(j+3)=d(1,nni)
1162 dyn(j+3)=d(2,nni)
1163 dzn(j+3)=d(3,nni)
1164 strain(1:3,i)=zero
1165 ENDDO
1167 DO i=1,nel
1168 value(1:3)= strain(1:3,i)
1170 . VALUE)
1171 ENDDO
1172 ELSEIF (ity == 7) THEN
1173 DO i=1,nel
1174 n = i + nft
1175 nni = ixtg(2,n)
1176 j = 3*(i-1) +1
1177 xn(j)=x(1,nni)
1178 yn(j)=x(2,nni)
1179 zn(j)=x(3,nni)
1180 dxn(j)=d(1,nni)
1181 dyn(j)=d(2,nni)
1182 dzn(j)=d(3,nni)
1183 nni = ixtg(3,n)
1184 xn(j+1)=x(1,nni)
1185 yn(j+1)=x(2,nni)
1186 zn(j+1)=x(3,nni)
1187 dxn(j+1)=d(1,nni)
1188 dyn(j+1)=d(2,nni)
1189 dzn(j+1)=d(3,nni)
1190 nni = ixtg(4,n)
1191 xn(j+2)=x(1,nni)
1192 yn(j+2)=x(2,nni)
1193 zn(j+2)=x(3,nni)
1194 dxn(j+2)=d(1,nni)
1195 dyn(j+2)=d(2,nni)
1196 dzn(j+2)=d(3,nni)
1197 strain(1:3,i)=zero
1198 ENDDO
1199 CALL sh3_tstrain(xn,yn,zn,dxn,dyn,dzn,strain,nel,ihbe)
1200 DO i=1,nel
1201 value(1:3)= strain(1:3,i)
1203 . VALUE)
1204 ENDDO
1205 END IF
1206
1207
1208 ELSEIF (keyword == 'TENS/STRESS/TMAX') THEN
1209
1210 DO i=1,nel
1211 value(1:3) = gbuf%TM_SIG1(jj(1:3) + i)
1213 . VALUE)
1214 ENDDO
1215
1216 ELSEIF (keyword == 'TENS/STRESS/TMIN') THEN
1217
1218 DO i=1,nel
1219 value(1:3) = gbuf%TM_SIG3(jj(1:3) + i)
1221 . VALUE)
1222 ENDDO
1223
1224 ELSEIF (keyword == 'TENS/STRAIN/TMAX') THEN
1225
1226 DO i=1,nel
1227 value(1:3) = gbuf%TM_STRA1(jj(1:3) + i)
1229 . VALUE)
1230 ENDDO
1231
1232 ELSEIF (keyword == 'TENS/STRAIN/TMIN') THEN
1233
1234 DO i=1,nel
1235 value(1:3) = gbuf%TM_STRA3(jj(1:3) + i)
1237 . VALUE)
1238 ENDDO
1239
1240 ELSEIF (keyword == 'TENS/BSTRESS') THEN
1241
1242 IF (mlw == 87) THEN
1243 imat = ixc(1,nft+1)
1244 iadbuf = ipm(7,imat)
1245 nuparam= ipm(9,imat)
1246 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1249 chard = uparam(nchard)
1250 ELSEIF (mlw == 36) THEN
1251 imat = ixc(1,nft+1)
1252 iadbuf = ipm(7,imat)
1253 nuparam= ipm(9,imat)
1254 uparam => bufmat(iadbuf:iadbuf+nuparam-1)
1257 chard = uparam(nchard)
1258 ENDIF
1259 IF ( ilay == -1 .AND. ipt == -1 .AND. iply == -1) THEN
1261 IF(mlw == 36 .AND. chard > zero) THEN
1262 DO i=1,nel
1263 DO j=1,nlay
1264 bufly => elbuf_tab(ng)%BUFLY(j)
1265 nptt = bufly%NPTT
1266 DO ir=1,nptr
1267 DO is=1,npts
1268 DO it=1,nptt
1269 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1270 DO k=1,3
1271 value(k) = VALUE(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1272 ENDDO
1273 ENDDO
1274 ENDDO !is
1275 ENDDO !ir
1276 ENDDO
1277 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1278 ENDDO
1279 ELSEIF(mlw == 78) THEN
1280 DO i=1,nel
1281 DO j=1,nlay
1282 bufly => elbuf_tab(ng)%BUFLY(j)
1283 nptt = bufly%NPTT
1284 DO ir=1,nptr
1285 DO is=1,npts
1286 DO it=1,nptt
1287 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1288 DO k=1,3
1289 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt/nlay
1290 ENDDO
1291 ENDDO
1292 ENDDO
1293 ENDDO
1294 ENDDO
1295 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1296 ENDDO
1297 ELSEIF(mlw == 87 .AND. chard > zero) THEN
1298
1299
1300
1301 DO i=1,nel
1302 DO j=1,nlay
1303 bufly => elbuf_tab(ng)%BUFLY(j)
1304 nptt = bufly%NPTT
1305 DO ir=1,nptr
1306 DO is=1,npts
1307 DO it=1,nptt
1308 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1309 DO k=1,3
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 .
1314 ENDDO
1315 ENDDO
1316 ENDDO
1317 ENDDO
1318 ENDDO
1319 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1320 ENDDO
1321 ENDIF
1323 IF(mlw == 36.AND. chard > zero) THEN
1324 DO i=1,nel
1325 DO j=1,nlay
1326 bufly => elbuf_tab(ng)%BUFLY(j)
1327 nptt = bufly%NPTT
1328 DO ir=1,nptr
1329 DO is=1,npts
1330 DO it=1,nptt
1331 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1332 DO k=1,3
1333 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt/nlay
1334 ENDDO
1335 ENDDO
1336 ENDDO
1337 ENDDO
1338 ENDDO
1339 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1340 ENDDO
1341 ELSEIF(mlw == 78) THEN
1343 DO i=1,nel
1344 DO j=1,nlay
1345 bufly => elbuf_tab(ng)%BUFLY(j)
1346 nptt = bufly%NPTT
1347 DO ir=1,nptr
1348 DO is=1,npts
1349 DO it=1,nptt
1350 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1351 DO k=1,3
1352 value(k) = value(k) + lbuf%SIGA(jj(k) + i) /npg/nptt/nlay
1353 ENDDO
1354 ENDDO
1355 ENDDO
1356 ENDDO
1357 ENDDO
1358 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1359 ENDDO
1360 ELSEIF(
id == 2)
THEN
1361 DO i=1,nel
1362 DO j=1,nlay
1363 bufly => elbuf_tab(ng)%BUFLY(j)
1364 nptt = bufly%NPTT
1365 DO ir=1,nptr
1366 DO is=1,npts
1367 DO it=1,nptt
1368 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1369 DO k=1,3
1370 value(k) = value(k) + lbuf%SIGB(jj(k) + i) /npg/nptt/nlay
1371 ENDDO
1372 ENDDO
1373 ENDDO
1374 ENDDO
1375 ENDDO
1376 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1377 ENDDO
1378 ELSEIF(
id == 3)
THEN
1379 DO i=1,nel
1380 DO j=1,nlay
1381 bufly => elbuf_tab(ng)%BUFLY(j)
1382 nptt = bufly%NPTT
1383 DO ir=1,nptr
1384 DO is=1,npts
1385 DO it=1,nptt
1386 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1387 DO k=1,3
1388 value(k) = value(k) + lbuf%SIGC(jj(k) + i) /npg/nptt/nlay
1389 ENDDO
1390 ENDDO
1391 ENDDO
1392 ENDDO
1393 ENDDO
1394 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1395 ENDDO
1396 ENDIF
1397 ELSEIF(mlw == 87.AND. chard > zero) THEN
1399 DO i=1,nel
1400 DO j=1,nlay
1401 bufly => elbuf_tab(ng)%BUFLY(j)
1402 nptt = bufly%NPTT
1403 DO ir=1,nptr
1404 DO is=1,npts
1405 DO it=1,nptt
1406 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1407 DO k=1,3
1408 value(k) = value(k) + lbuf%SIGB(jj(k) + i ) /npg/nptt/nlay
1409 ENDDO
1410 ENDDO
1411 ENDDO
1412 ENDDO
1413 ENDDO
1414 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1415 ENDDO
1416 ELSEIF(
id == 2)
THEN
1417 DO i=1,nel
1418 DO j=1,nlay
1419 bufly => elbuf_tab(ng)%BUFLY(j)
1420 nptt = bufly%NPTT
1421 DO ir=1,nptr
1422 DO is=1,npts
1423 DO it=1,nptt
1424 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1425 DO k=1,3
1426 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i) /npg/nptt/nlay
1427 ENDDO
1428 ENDDO
1429 ENDDO
1430 ENDDO
1431 ENDDO
1432 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1433 ENDDO
1434 ELSEIF(
id == 3)
THEN
1435 DO i=1,nel
1436 DO j=1,nlay
1437 bufly => elbuf_tab(ng)%BUFLY(j)
1438 nptt = bufly%NPTT
1439 DO ir=1,nptr
1440 DO is=1,npts
1441 DO it=1,nptt
1442 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1443 DO k=1,3
1444 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i) /npg/nptt/nlay
1445 ENDDO
1446 ENDDO
1447 ENDDO
1448 ENDDO !ir
1449 ENDDO
1450 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1451 ENDDO
1452 ELSEIF(
id == 4)
THEN
1453 DO i=1,nel
1454 DO j=1,nlay
1455 bufly => elbuf_tab(ng)%BUFLY(j)
1456 nptt = bufly%NPTT
1457 DO ir=1,nptr
1458 DO is=1,npts
1459 DO it=1,nptt
1460 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1461 DO k=1,3
1462 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg/nptt/nlay
1463 ENDDO
1464 ENDDO
1465 ENDDO
1466 ENDDO
1467 ENDDO
1468 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE )
1469 ENDDO
1470 ENDIF
1471 endif
1472 ENDIF
1473
1474
1475
1476 ELSEIF ( iply > 0 .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1477 DO j=1,nlay
1478 id_ply = 0
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)
1483 ENDIF
1484 IF (id_ply == iply) THEN
1485 bufly => elbuf_tab(ng)%BUFLY(j)
1486
1487
1488
1489 IF (mlw == 36 .AND.(
id == -1 .OR.
id == 1).AND. chard > zero)
THEN
1490 DO i=1,nel
1491 DO ir=1,nptr
1492 DO is=1,npts
1493 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1494 DO k=1,3
1495 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1496 ENDDO
1497 ENDDO
1498 ENDDO
1499 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1500 ENDDO
1501
1502
1503
1504 ELSEIF (mlw == 78) THEN
1506 DO i=1,nel
1507 DO ir=1,nptr
1508 DO is=1,npts
1509 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1510 DO k=1,3
1511 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1512 ENDDO
1513 ENDDO
1514 ENDDO
1515 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1516 ENDDO
1517 ELSEIF(
id ==1 )
THEN
1518 DO i=1,nel
1519 DO ir=1,nptr
1520 DO is=1,npts
1521 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1522 DO k=1,3
1523 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1524 ENDDO
1525 ENDDO
1526 ENDDO
1527 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1528 ENDDO
1529 ELSEIF(
id ==2 )
THEN
1530 DO i=1,nel
1531 DO ir=1,nptr
1532 DO is=1,npts
1533 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1534 DO k=1,3
1535 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1536 ENDDO
1537 ENDDO
1538 ENDDO
1539 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1540 ENDDO
1541
1542 ELSEIF(
id ==3 )
THEN
1543 DO i=1,nel
1544 DO ir=1,nptr
1545 DO is=1,npts
1546 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1547 DO k=1,3
1548 VALUE(k) = value(k) + lbuf%SIGC(jj(k
1549 ENDDO
1550 ENDDO
1551 ENDDO
1552 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1553 ENDDO
1554 ENDIF
1555
1556
1557
1558 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1560 DO i=1,nel
1561 DO ir=1,nptr
1562 DO is=1,npts
1563 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1564 DO k=1,3
1565 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1566 . +lbuf%SIGB(jj(k+3) + i )
1567 . +lbuf%SIGB(jj(k+6) + i )
1568 . +lbuf%SIGB(jj(k+9) + i ))/npg
1569
1570 ENDDO
1571 ENDDO
1572 ENDDO
1573 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1574 ENDDO
1575 ELSEIF(
id ==1 )
THEN
1576 DO i=1,nel
1577 DO ir=1,nptr
1578 DO is=1,npts
1579 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1580 DO k=1,3
1581 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1582 ENDDO
1583 ENDDO
1584 ENDDO
1585 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1586 ENDDO
1587 ELSEIF(
id ==2 )
THEN
1588 DO i=1,nel
1589 DO ir=1,nptr
1590 DO is=1,npts
1591 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1592 DO k=1,3
1593 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1594 ENDDO
1595 ENDDO
1596 ENDDO
1598 ENDDO
1599 ELSEIF(
id ==3 )
THEN
1600 DO i=1,nel
1601 DO ir=1,nptr
1602 DO is=1,npts
1603 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1604 DO k=1,3
1605 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1606 ENDDO
1607 ENDDO
1608 ENDDO
1609 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1610 ENDDO
1611 ELSEIF(
id ==4 )
THEN
1612 DO i=1,nel
1613 DO ir=1,nptr
1614 DO is=1,npts
1615 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1616 DO k=1,3
1617 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg
1618 ENDDO
1619 ENDDO
1620 ENDDO
1621 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1622 ENDDO
1623 ENDIF
1624 ENDIF
1625 END IF
1626 ENDDO
1627
1628
1629
1630 ELSEIF (ilay > 0 .AND. ilay <= nlay .AND. ipt <= mpt .AND. ipt > 0 ) THEN
1631 j = ilay
1632 IF(igtyp == 9) j = 1
1633 bufly => elbuf_tab(ng)%BUFLY(j)
1634
1635
1636
1637 IF (mlw == 36.AND. (
id==-1 . or .
id==1).AND. chard > zero)
THEN
1638 DO i=1,nel
1639 DO ir=1,nptr
1640 DO is=1,npts
1641 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1642 DO k=1,3
1643 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1644 ENDDO
1645 ENDDO
1646 ENDDO
1647 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1648 ENDDO
1649
1650
1651
1652 ELSEIF (mlw == 78) THEN
1654 DO i=1,nel
1655 DO ir=1,nptr
1656 DO is=1,npts
1657 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1658 DO k=1,3
1659 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1660 ENDDO
1661 ENDDO
1662 ENDDO
1663 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1664 ENDDO
1665 ELSEIF(
id ==1 )
THEN
1666 DO i=1,nel
1667 DO ir=1,nptr
1668 DO is=1,npts
1669 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1670 DO k=1,3
1671 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1672 ENDDO
1673 ENDDO
1674 ENDDO
1675 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1676 ENDDO
1677 ELSEIF(
id ==2 )
THEN
1678 DO i=1,nel
1679 DO ir=1,nptr
1680 DO is=1,npts
1681 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1682 DO k=1,3
1683 value(k) = value(k) + lbuf%SIGB(jj(k) + i
1684 ENDDO
1685 ENDDO
1686 ENDDO
1687 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1688 ENDDO
1689 ELSEIF(
id ==3 )
THEN
1690 DO i=1,nel
1691 DO ir=1,nptr
1692 DO is=1,npts
1693 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1694 DO k=1,3
1695 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
1696 ENDDO
1697 ENDDO
1698 ENDDO
1699 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1700 ENDDO
1701 ENDIF
1702
1703
1704
1705 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1707 DO i=1,nel
1708 DO ir=1,nptr
1709 DO is=1,npts
1710 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1711 DO k=1,3
1712 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
1713 . +lbuf%SIGB(jj(k+3) + i )
1714 . +lbuf%SIGB(jj(k+6) + i )
1715 . +lbuf%SIGB(jj
1716
1717 ENDDO
1718 ENDDO
1719 ENDDO
1720 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1721 ENDDO
1722 ELSEIF(
id ==1 )
THEN
1723 DO i=1,nel
1724 DO ir=1,nptr
1725 DO is=1,npts
1726 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1727 DO k=1,3
1728 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1729 ENDDO
1730 ENDDO
1731 ENDDO
1732 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1733 ENDDO
1734 ELSEIF(
id ==2 )
THEN
1735 DO i=1,nel
1736 DO ir=1,nptr
1737 DO is=1,npts
1738 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1739 DO k=1,3
1740 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i)/npg
1741 ENDDO
1742 ENDDO
1743 ENDDO
1744 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1745 ENDDO
1746 ELSEIF(
id ==3 )
THEN
1747 DO i=1,nel
1748 DO ir=1,nptr
1749 DO is=1,npts
1750 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1751 DO k=1,3
1752 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i)/npg
1753 ENDDO
1754 ENDDO
1755 ENDDO
1757 ENDDO
1758 ELSEIF(
id ==4 )
THEN
1759 DO i=1,nel
1760 DO ir=1,nptr
1761 DO is=1,npts
1762 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1763 DO k=1,3
1764 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i)/npg
1765 ENDDO
1766 ENDDO
1767 ENDDO
1769 ENDDO
1770 ENDIF
1771 ENDIF
1772
1773
1774
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
1777
1778 j = ilay
1779 IF(igtyp == 9) j = 1
1780 bufly => elbuf_tab(ng)%BUFLY(j)
1781 nptt = bufly%NPTT
1782
1783
1784
1785 IF (mlw == 36.AND. (
id==-1 .OR.
id==1) .AND. chard > zero)
THEN ! only one bstress
1786 DO i=1,nel
1787 DO ir=1,nptr
1788 DO is=1,npts
1789 DO it=1,nptt
1790 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1791 DO k=1,3
1792 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1793 ENDDO
1794 enddo
1795 ENDDO
1796 enddo
1798 value(1:3) = zero
1799 ENDDO
1800
1801
1802
1803 ELSEIF (mlw == 78) THEN
1805 DO i=1,nel
1806 DO ir=1,nptr
1807 DO is=1,npts
1808 DO it=1,nptt
1809 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1810 DO k=1,3
1811 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg/nptt
1812 ENDDO
1813 enddo
1814 ENDDO
1815 ENDDO
1816 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1817 ENDDO
1818 ELSEIF(
id ==1 )
THEN
1819 DO i=1,nel
1820 DO ir=1,nptr
1821 DO is=1,npts
1822 DO it=1,nptt
1823 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1824 DO k=1,3
1825 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg/nptt
1826 ENDDO
1827 enddo
1828 ENDDO
1829 ENDDO
1830 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1831 ENDDO ! i
1832 ELSEIF(
id ==2 )
THEN
1833 DO i=1,nel
1834 DO ir=1,nptr
1835 DO is=1,npts
1836 DO it=1,nptt
1837 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1838 DO k=1,3
1839 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1840 ENDDO
1841 enddo
1842 ENDDO
1843 ENDDO
1844 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1845 ENDDO
1846 ELSEIF(
id ==3 )
THEN
1847 DO i=1,nel
1848 DO ir=1,nptr
1849 DO is=1,npts
1850 DO it=1,nptt
1851 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1852 DO k=1,3
1853 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg/nptt
1854 ENDDO
1855 enddo
1856 ENDDO
1857 ENDDO
1858 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1859 ENDDO
1860 ENDIF
1861
1862
1863
1864 ELSEIF( mlw == 87 .AND. chard > zero) THEN
1866 DO i=1,nel
1867 DO ir=1,nptr
1868 DO is=1,npts
1869 DO it=1,nptt
1870 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1871 DO k=1,3
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
1876
1877 ENDDO
1878 enddo
1879 ENDDO
1880 ENDDO
1881 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1882 ENDDO
1883 ELSEIF(
id ==1 )
THEN
1884 DO i=1,nel
1885 DO ir=1,nptr
1886 DO is=1,npts
1887 DO it=1,nptt
1888 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1889 DO k=1,3
1890 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg/nptt
1891 ENDDO
1892 enddo
1893 ENDDO
1894 ENDDO
1895 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1896 ENDDO
1897 ELSEIF(
id ==2 )
THEN
1898 DO i=1,nel
1899 DO ir=1,nptr
1900 DO is=1,npts
1901 DO it=1,nptt
1902 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1903 DO k=1,3
1904 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg/nptt
1905 ENDDO
1906 enddo
1907 ENDDO
1908 ENDDO
1909 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1910 ENDDO
1911 ELSEIF(
id ==3 )
THEN
1912 DO i=1,nel
1913 DO ir=1,nptr
1914 DO is=1,npts
1915 DO it=1,nptt
1916 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1917 DO k=1,3
1918 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i )/npg/nptt
1919 ENDDO
1920 enddo
1921 ENDDO
1922 ENDDO
1923 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1924 ENDDO
1925 ELSEIF(
id ==4 )
THEN
1926 DO i=1,nel
1927 DO ir=1,nptr
1928 DO is=1,npts
1929 DO it=1,nptt
1930 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,it)
1931 DO k=1,3
1932 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
1933 ENDDO
1934 enddo
1935 ENDDO
1936 ENDDO
1937 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1938 ENDDO
1939 ENDIF
1940 ENDIF
1941 ENDIF
1942
1943
1944
1945 ELSE IF(ilay == -1 .AND. ipt > 0 .AND. ipt<=mpt .AND. iply == -1 ) THEN
1946 DO j=1,nlay
1947 bufly => elbuf_tab(ng)%BUFLY(j)
1948 nptt = bufly%NPTT
1949 IF (ipt <= nptt ) THEN
1950
1951
1952
1953 IF (mlw == 36.AND. (
id==-1 .OR.
id==1) .AND. chard > zero)
THEN
1954 DO i=1,nel
1955 DO ir=1,nptr
1956 DO is=1,npts
1957 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1958 DO k=1,3
1959 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
1960 ENDDO
1961 ENDDO
1962 ENDDO
1963 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1964 ENDDO
1965
1966
1967
1968 ELSEIF (mlw == 78) THEN
1970 DO i=1,nel
1971 DO ir=1,nptr
1972 DO is=1,npts
1973 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1974 DO k=1,3
1975 value(k) = value(k) + (lbuf%SIGA(jj(k) + i)+lbuf%SIGB(jj(k) + i))/npg
1976 ENDDO
1977 ENDDO
1978 ENDDO
1979 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1980 ENDDO
1981 ELSEIF(
id ==1 )
THEN
1982 DO i=1,nel
1983 DO ir=1,nptr
1984 DO is=1,npts
1985 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1986 DO k=1,3
1987 value(k) = value(k) + lbuf%SIGA(jj(k) + i)/npg
1988 ENDDO
1989 ENDDO
1990 ENDDO
1991 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
1992 ENDDO
1993 ELSEIF(
id ==2 )
THEN
1994 DO i=1,nel
1995 DO ir=1,nptr
1996 DO is=1,npts
1997 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
1998 DO k=1,3
1999 value(k) = value(k) + lbuf%SIGB(jj(k) + i)/npg
2000 ENDDO
2001 ENDDO
2002 ENDDO
2003 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2004 ENDDO
2005 ELSEIF(
id ==3 )
THEN
2006 DO i=1,nel
2007 DO ir=1,nptr
2008 DO is=1,npts
2009 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2010 DO k=1,3
2011 value(k) = value(k) + lbuf%SIGC(jj(k) + i)/npg
2012 ENDDO
2013 ENDDO
2014 ENDDO
2015 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2016 ENDDO
2017 ENDIF
2018
2019
2020
2021 ELSEIF( mlw == 87 .AND. chard > zero) THEN
2023 DO i=1,nel
2024 DO ir=1,nptr
2025 DO is=1,npts
2026 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2027 DO k=1,3
2028 value(k) = value(k) + (lbuf%SIGB(jj(k) + i )
2029 . +lbuf%SIGB(jj(k+
2030 . +lbuf%SIGB(jj(k+6) + i )
2031 . +lbuf%SIGB(jj(k+9) + i ))/npg
2032
2033 ENDDO
2034 ENDDO
2035 ENDDO
2036 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2037 ENDDO
2038 ELSEIF(
id ==1 )
THEN
2039 DO i=1,nel
2040 DO ir=1,nptr
2041 DO is=1,npts
2042 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2043 DO k=1,3
2044 value(k) = value(k) + lbuf%SIGB(jj(k) + i )/npg
2045 ENDDO
2046 ENDDO
2047 ENDDO
2048 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2049 ENDDO
2050 ELSEIF(
id ==2 )
THEN
2051 DO i=1,nel
2052 DO ir=1,nptr
2053 DO is=1,npts
2054 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2055 DO k=1,3
2056 value(k) = value(k) + lbuf%SIGB(jj(k+3) + i )/npg
2057 ENDDO
2058 ENDDO
2059 ENDDO
2060 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2061 ENDDO
2062 ELSEIF(
id ==3 )
THEN
2063 DO i=1,nel
2064 DO ir=1,nptr
2065 DO is=1,npts
2066 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2067 DO k=1,3
2068 value(k) = value(k) + lbuf%SIGB(jj(k+6) + i )/npg
2069 ENDDO
2070 ENDDO
2071 ENDDO
2072 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE
2073 ENDDO
2074 ELSEIF(
id ==4 )
THEN
2075 DO i=1,nel
2076 DO ir=1,nptr
2077 DO is=1,npts
2078 lbuf => elbuf_tab(ng)%BUFLY(j)%LBUF(ir,is,ipt)
2079 DO k=1,3
2080 value(k) = value(k) + lbuf%SIGB(jj(k+9) + i )/npg
2081 ENDDO
2082 ENDDO
2083 ENDDO
2084 CALL h3d_write_sh_tensor(iok_part,iselect,is_written_shell,shell_tensor,i,offset,nft,
VALUE)
2085 ENDDO
2086 ENDIF
2087 ENDIF
2088 endif
2089 ENDDO
2090
2091 END IF
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
2118
2119
2120
2121
2122
2123
2124
2125 ENDIF
2126
2127
2128
2129
2130 ELSEIF (ity == 50) THEN
2131
2132
2133
2134
2135
2136
2137
2138 ELSE
2139 ENDIF
2140 ENDIF
2141 490 CONTINUE
2142 500 CONTINUE
2143
2144
2145 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)