38 . ELBUF_TAB,SKIN_TENSOR, IPARG ,IXS ,X ,PM ,
39 4 IPARTS ,IPM ,IGEO ,IXS10 ,IXS16 , IXS20 ,
40 5 IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD,
41 6 IAD_ELEM ,FR_ELEM , WEIGHT ,TAG_SKINS6)
51#include "implicit_f.inc"
55#include "vect01_c.inc"
65 . skin_tensor(3,*),pm(npropm,*), x(3,*)
66 INTEGER IPARG(NPARG,*),
67 . IXS(NIXS,*),IPM(NPROPMI,*),IPARTS(*),
68 . ixs10(6,*) ,ixs16(8,*) ,ixs20(12,*) ,
69 . igeo(npropgi,*),is_written_skin(*),
70 . h3d_part(*),info1,tag_skins6(*),iad_elem(2,*),fr_elem(*),weight(*)
71 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
72 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
77 . evar(3,mvsiz),dir(mvsiz,2),dirb(mvsiz,2)
79 . f_exp,f_str,f_gauss(9)
80 INTEGER I,,II,J,NEL,NPTR,,NPTT,NLAY,L,IFAIL,ILAY,
81 . IR,IS,IT,IL,MLW, NUVAR,IUS,LENF,,PTM,PTS,NFAIL,
82 . n,nn,k,k1,k2,jturb,mt,imid,ialel,ipid,ish3n,nni,
83 . nn1,nn2,nn3,nn4,nn5,nn6,nn9,nf,buf,nvarf,
84 . ihbe,nptm,npg, mpt,ipt,iadd,iadr,ipmat,ifailt,
85 . iigeo,iadi,isubstack,ithk,
86 . id_ply,nb_plyoff,ng,nskin,icstr
87 INTEGER NPT_ALL,IPLY,ISOLNOD,IVISC,NPTG,TSHELL,TSH_ORT,
88 . ISTRAIN,KCVT,IOR_TSH,MT1,ICSIG,PTI,IOK,IPRT,IOK_PART(MVSIZ),
89 . JJ(6),IS_WRITTEN_TENSOR(MVSIZ),MLWI,MID,PID
91 TYPE(g_bufel_) ,
POINTER :: GBUF
92 TYPE(L_BUFEL_) ,
POINTER :: LBUF
93 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
96 9 1.000000000000000,1.732050807568877,1.290994448735806,
97 9 1.161256338324528,1.103533701926633,1.072421119155361,
98 9 1.053620970803647,1.041352247171806,1.032886870574820/
103 gbuf => elbuf_tab(ng)%GBUF
105 istrain = iparg(44,ng)
106 isolnod = iparg(28,ng)
109 2 mlw ,nel ,nft ,iad ,ity ,
110 3 npt ,jale ,ismstr ,jeul ,jtur ,
111 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
112 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
113 6 irep ,iint ,igtyp ,israt ,isrot ,
114 7 icsen ,isorth ,isorthg ,ifailure,jsms )
120 IF(mlw == 13 .OR. mlw == 0) cycle
131 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22))
THEN
133 IF (igtyp == 21)
THEN
135 ELSEIF (igtyp == 22)
THEN
138 IF (kcvt==1.AND.ior_tsh/=0) kcvt=2
142 IF( h3d_part(iparts(n)) == 1) iok_part(i) = 1
143 is_written_tensor(i) = 0
146 nlay = elbuf_tab(ng)%NLAY
147 nptr = elbuf_tab(ng)%NPTR
148 npts = elbuf_tab(ng)%NPTS
149 nptt = elbuf_tab(ng)%NPTT
150 IF (igtyp == 22 .AND. nlay>9)
THEN
153 f_exp = f_gauss(nlay)
155 IF (jhbe==14.OR.jhbe==16) f_exp = f_exp/(nptr*npts)
157 IF (keyword ==
'TENS/STRESS/OUTER')
THEN
158 is_written_tensor(1:nel) = 1
166 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
168 evar(1:2,i) = lbuf%SIG(jj(1:2) + i)
169 evar(3,i) = lbuf%SIG(jj(4) + i)
173 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
174 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
180 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
182 evar(1:2,i) = evar(1:2,i) + lbuf%SIG(jj(1:2) + i)
183 evar(3,i) = evar(3,i) + lbuf%SIG(jj
187 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
188 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
195 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
200 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
202 ELSEIF(ior_tsh==2)
THEN
207 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
209 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
212 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
217 skin_tensor(1:3,nskin+i) = evar(1:3,i)
218 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
221 evar(1:3,1:nel) = zero
228 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
230 evar(1:2,i) = lbuf%SIG(jj(1:2) + i)
231 evar(3,i) = lbuf%SIG(jj(4) + i)
235 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
236 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
242 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
244 evar(1:2,i) = evar(1:2,i) + lbuf%SIG(jj(1:2) + i)
245 evar(3,i) = evar(3,i) + lbuf%SIG(jj(4) + i)
249 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
250 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
256 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
261 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
263 ELSEIF(ior_tsh==2)
THEN
268 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
270 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
273 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
278 skin_tensor(1:3,nskin+i) = evar(1:3,i)
279 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
283 ELSEIF (keyword ==
'TENS/STRAIN/OUTER')
THEN
285 is_written_tensor(1:nel) = 1
290 IF (igtyp == 22)
THEN
291 pid = ixs(nixs-1,1 + nft)
292 mid = igeo(100+ilay,pid)
293 mlwi=nint(pm(19,mid))
298 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
299 IF (mlwi == 12 .OR. mlwi == 14)
THEN
301 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
302 evar(3,i) = half*lbuf%EPE(jj(4) + i)
304 ELSEIF (mlwi /= 49 )
THEN
306 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
307 evar(3,i) = half*lbuf%STRA(jj(4) + i)
310 is_written_tensor(1:nel) = 0
316 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir
317 IF (mlwi == 12 .OR. mlwi == 14)
THEN
319 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
320 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
322 ELSEIF (mlwi /= 49 )
THEN
324 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
325 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
328 is_written_tensor(1:nel) = 0
333 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
338 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
340 ELSEIF(ior_tsh==2)
THEN
345 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
347 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
350 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
355 skin_tensor(1:3,nskin+i) = evar(1:3,i)
356 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor
359 evar(1:3,1:nel) = zero
364 IF (igtyp == 22)
THEN
365 pid = ixs(nixs-1,1 + nft)
366 mid = igeo(100+ilay,pid)
367 mlwi=nint(pm(19,mid))
372 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
373 IF (mlwi == 12 .OR. mlwi == 14)
THEN
375 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
376 evar(3,i) = half*lbuf%EPE(jj(4) + i)
378 ELSEIF (mlwi /= 49 )
THEN
380 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
381 evar(3,i) = half*lbuf%STRA(jj(4) + i)
384 is_written_tensor(1:nel) = 0
390 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
391 IF (mlwi == 12 .OR. mlwi == 14)
THEN
393 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
394 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
396 ELSEIF (mlwi /= 49 )
THEN
398 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
399 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
402 is_written_tensor(1:nel) = 0
407 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
412 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
414 ELSEIF(ior_tsh==2)
THEN
419 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
421 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
424 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel
429 skin_tensor(1:3,nskin+i) = evar(1:3,i)
430 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
434 ELSEIF (keyword ==
'TENS/STRAIN/OUTER_AVERAGE')
THEN
436 is_written_tensor(1:nel) = 1
441 IF (igtyp == 22)
THEN
442 pid = ixs(nixs-1,1 + nft)
443 mid = igeo(100+ilay,pid)
444 mlwi=nint(pm(19,mid))
449 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
450 IF (mlwi == 12 .OR. mlwi == 14)
THEN
452 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
453 evar(3,i) = half*lbuf%EPE(jj(4) + i)
455 ELSEIF (mlwi /= 49 )
THEN
457 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
458 evar(3,i) = half*lbuf%STRA(jj(4) + i)
461 is_written_tensor(1:nel) = 0
467 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
468 IF (mlwi == 12 .OR. mlwi == 14)
THEN
470 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
471 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
473 ELSEIF (mlwi /= 49 )
THEN
475 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
476 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
479 is_written_tensor(1:nel) = 0
484 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
489 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
491 ELSEIF(ior_tsh==2)
THEN
496 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
498 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
501 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
505 skin_tensor(1:3,nskin+i) = evar(1:3,i)
506 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
509 evar(1:3,1:nel) = zero
514 IF (igtyp == 22)
THEN
515 pid = ixs(nixs-1,1 + nft)
516 mid = igeo(100+ilay,pid)
517 mlwi=nint(pm(19,mid))
522 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
523 IF (mlwi == 12 .OR. mlwi == 14)
THEN
525 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
526 evar(3,i) = half*lbuf%EPE
528 ELSEIF (mlwi /= 49 )
THEN
530 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
531 evar(3,i) = half*lbuf%STRA(jj(4) + i)
534 is_written_tensor(1:nel) = 0
540 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it
541 IF (mlwi == 12 .OR. mlwi == 14)
THEN
543 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
544 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
546 ELSEIF (mlwi /= 49 )
THEN
548 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
549 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
552 is_written_tensor(1:nel) = 0
557 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
562 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
564 ELSEIF(ior_tsh==2)
THEN
569 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
571 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
574 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
578 skin_tensor(1:3,nskin+i) = evar(1:3,i)
579 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
589 . elbuf_tab,skin_tensor, iparg ,ixs ,x
590 4 iparts ,ipm ,igeo ,ixs10 ,ixs16 , ixs20 ,
591 5 is_written_skin ,h3d_part,info1 ,keyword ,nskin ,
592 6 iad_elem ,fr_elem , weight ,tag_skins6)