39 . ELBUF_TAB,SKIN_TENSOR, IPARG ,IXS ,X ,PM ,
40 4 IPARTS ,IPM ,IGEO ,IXS10 ,IXS16 , IXS20 ,
41 5 IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD,
42 6 IAD_ELEM ,FR_ELEM , WEIGHT ,TAG_SKINS6)
49 use element_mod ,
only : nixs
53#include "implicit_f.inc"
57#include "vect01_c.inc"
67 . skin_tensor(3,*),pm(npropm,*), x(3,*)
68 INTEGER IPARG(NPARG,*),
69 . IXS(NIXS,*),IPM(NPROPMI,*),IPARTS(*),
70 . ixs10(6,*) ,ixs16(8,*) ,ixs20(12,*) ,
71 . igeo(npropgi,*),is_written_skin(*),
72 . h3d_part(*),info1,tag_skins6(*),iad_elem(2,*),fr_elem(*),weight(*)
73 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
74 CHARACTER(LEN=NCHARLINE100) :: KEYWORD
79 . evar(3,mvsiz),dir(mvsiz,2),dirb(mvsiz,2)
81 . f_exp,f_str,f_gauss(9)
82 INTEGER I, NEL, NPTR, NPTS, , NLAY, ILAY,
83 . IR,IS,IT,IL,MLW, NUVAR,IUS,LENF,PTF,PTM,PTS,NFAIL,
84 . n,nn,k,k1,k2,jturb,mt,imid,ialel,ipid,ish3n,nni,
85 . nn1,nn2,nn3,nn4,nn5,nn6,nn9,nf,buf,nvarf,
86 . ihbe,nptm,npg, mpt,ipt,iadd,iadr,ipmat,ifailt,
87 . iigeo,iadi,isubstack,ithk,
88 . id_ply,nb_plyoff,ng,nskin,icstr
89 INTEGER ISOLNOD, IVISC,
90 . ISTRAIN,KCVT,IOR_TSH,MT1,ICSIG,PTI,IOK,IPRT,IOK_PART(MVSIZ),
91 . JJ(6),IS_WRITTEN_TENSOR(MVSIZ),MLWI,MID,PID
93 TYPE(g_bufel_) ,
POINTER :: GBUF
94 TYPE(L_BUFEL_) ,
POINTER :: LBUF
98 9 1.000000000000000,1.732050807568877,1.290994448735806,
99 9 1.161256338324528,1.103533701926633,1.072421119155361,
100 9 1.053620970803647,1.041352247171806,1.032886870574820/
105 gbuf => elbuf_tab(ng)%GBUF
107 istrain = iparg(44,ng)
108 isolnod = iparg(28,ng)
111 2 mlw ,nel ,nft ,iad ,ity ,
112 3 npt ,jale ,ismstr ,jeul ,jtur ,
113 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
114 5 nvaux ,jpor ,kcvt ,jclose ,jplasol ,
115 6 irep ,iint ,igtyp ,israt ,isrot ,
116 7 icsen ,isorth ,isorthg ,ifailure,jsms )
122 IF(mlw == 13 .OR. mlw == 0) cycle
133 IF (ity == 1.AND.(igtyp==20 .OR. igtyp==21 .OR. igtyp==22))
THEN
135 IF (igtyp == 21)
THEN
137 ELSEIF (igtyp == 22)
THEN
140 IF (kcvt==1.AND.ior_tsh/=0) kcvt=2
144 IF( h3d_part(iparts(n)) == 1) iok_part(i) = 1
145 is_written_tensor(i) = 0
148 nlay = elbuf_tab(ng)%NLAY
149 nptr = elbuf_tab(ng)%NPTR
150 npts = elbuf_tab(ng)%NPTS
151 nptt = elbuf_tab(ng)%NPTT
152 IF (igtyp == 22 .AND. nlay>9)
THEN
155 f_exp = f_gauss(nlay)
157 IF (jhbe==14.OR.jhbe==16) f_exp = f_exp/(nptr*npts)
159 IF (keyword ==
'TENS/STRESS/OUTER')
THEN
160 is_written_tensor(1:nel) = 1
168 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
170 evar(1:2,i) = lbuf%SIG(jj(1:2) + i)
171 evar(3,i) = lbuf%SIG(jj(4) + i)
175 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
176 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
182 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
184 evar(1:2,i) = evar(1:2,i) + lbuf%SIG(jj(1:2) + i)
185 evar(3,i) = evar(3,i) + lbuf%SIG(jj(4) + i)
189 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
190 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
197 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
202 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
204 ELSEIF(ior_tsh==2)
THEN
209 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
211 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
214 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
219 skin_tensor(1:3,nskin+i) = evar(1:3,i)
220 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
223 evar(1:3,1:nel) = zero
230 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
232 evar(1:2,i) = lbuf%SIG(jj(1:2) + i)
233 evar(3,i) = lbuf%SIG(jj(4) + i)
237 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
238 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
244 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
246 evar(1:2,i) = evar(1:2,i) + lbuf%SIG(jj(1:2) + i)
247 evar(3,i) = evar(3,i) + lbuf%SIG(jj(4) + i)
251 evar(1:2,i) = evar(1:2,i) + lbuf%VISC(jj(1:2) + i)
252 evar(3,i) = evar(3,i) + lbuf%VISC(jj(4) + i)
258 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
263 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
265 ELSEIF(ior_tsh==2)
THEN
270 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
272 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
275 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
280 skin_tensor(1:3,nskin+i) = evar(1:3,i)
281 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
285 ELSEIF (keyword ==
'TENS/STRAIN/OUTER')
THEN
287 is_written_tensor(1:nel) = 1
292 IF (igtyp == 22)
THEN
293 pid = ixs(nixs-1,1 + nft)
294 mid = igeo(100+ilay,pid)
295 mlwi=nint(pm(19,mid))
300 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
301 IF (mlwi == 12 .OR. mlwi == 14)
THEN
303 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
304 evar(3,i) = half*lbuf%EPE(jj(4) + i)
306 ELSEIF (mlwi /= 49 )
THEN
308 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
309 evar(3,i) = half*lbuf%STRA(jj(4) + i)
312 is_written_tensor(1:nel) = 0
318 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
319 IF (mlwi == 12 .OR. mlwi == 14)
THEN
321 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
322 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
324 ELSEIF (mlwi /= 49 )
THEN
326 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
327 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
330 is_written_tensor(1:nel) = 0
335 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
340 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
342 ELSEIF(ior_tsh==2)
THEN
347 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
349 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
352 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
357 skin_tensor(1:3,nskin+i) = evar(1:3,i)
358 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
361 evar(1:3,1:nel) = zero
366 IF (igtyp == 22)
THEN
367 pid = ixs(nixs-1,1 + nft)
368 mid = igeo(100+ilay,pid)
369 mlwi=nint(pm(19,mid))
374 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
375 IF (mlwi == 12 .OR. mlwi == 14)
THEN
377 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
378 evar(3,i) = half*lbuf%EPE(jj(4) + i)
380 ELSEIF (mlwi /= 49 )
THEN
382 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
383 evar(3,i) = half*lbuf%STRA(jj(4) + i)
386 is_written_tensor(1:nel) = 0
392 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
393 IF (mlwi == 12 .OR. mlwi == 14)
THEN
395 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
396 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
398 ELSEIF (mlwi /= 49 )
THEN
400 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
401 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
404 is_written_tensor(1:nel) = 0
409 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
414 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
416 ELSEIF(ior_tsh==2)
THEN
421 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
423 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
426 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
431 skin_tensor(1:3,nskin+i) = evar(1:3,i)
432 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
436 ELSEIF (keyword ==
'TENS/STRAIN/OUTER_AVERAGE')
THEN
438 is_written_tensor(1:nel) = 1
443 IF (igtyp == 22)
THEN
444 pid = ixs(nixs-1,1 + nft)
445 mid = igeo(100+ilay,pid)
446 mlwi=nint(pm(19,mid))
451 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
452 IF (mlwi == 12 .OR. mlwi == 14)
THEN
454 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
455 evar(3,i) = half*lbuf%EPE(jj(4) + i)
457 ELSEIF (mlwi /= 49 )
THEN
459 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
460 evar(3,i) = half*lbuf%STRA(jj(4) + i)
463 is_written_tensor(1:nel) = 0
469 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
470 IF (mlwi == 12 .OR. mlwi == 14)
THEN
472 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
473 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
475 ELSEIF (mlwi /= 49 )
THEN
477 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
478 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
481 is_written_tensor(1:nel) = 0
486 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
491 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
493 ELSEIF(ior_tsh==2)
THEN
498 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
500 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
503 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
507 skin_tensor(1:3,nskin+i) = evar(1:3,i)
508 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
511 evar(1:3,1:nel) = zero
516 IF (igtyp == 22)
THEN
517 pid = ixs(nixs-1,1 + nft)
518 mid = igeo(100+ilay,pid)
519 mlwi=nint(pm(19,mid))
524 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
525 IF (mlwi == 12 .OR. mlwi == 14)
THEN
527 evar(1:2,i) = lbuf%EPE(jj(1:2) + i)
528 evar(3,i) = half*lbuf%EPE(jj(4) + i)
530 ELSEIF (mlwi /= 49 )
THEN
532 evar(1:2,i) = lbuf%STRA(jj(1:2) + i)
533 evar(3,i) = half*lbuf%STRA(jj(4) + i)
536 is_written_tensor(1:nel) = 0
542 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
543 IF (mlwi == 12 .OR. mlwi == 14)
THEN
545 evar(1:2,i) = evar(1:2,i)+lbuf%EPE(jj(1:2) + i)
546 evar(3,i) = evar(3,i)+half*lbuf%EPE(jj(4) + i)
548 ELSEIF (mlwi /= 49 )
THEN
550 evar(1:2,i) = evar(1:2,i)+lbuf%STRA(jj(1:2) + i)
551 evar(3,i) = evar(3,i)+ half*lbuf%STRA(jj(4) + i)
554 is_written_tensor(1:nel) = 0
559 evar(1:3,1:nel) = f_exp*evar(1:3,1:nel)
564 dir(i,1:2)= gbuf%GAMA(jj(1:2) + i)
566 ELSEIF(ior_tsh==2)
THEN
571 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(ir,is,it)
573 dir(i,1:2)= lbuf%GAMA(jj(1:2) + i)
576 CALL tsh_dir2(x,ixs,dir,dirb,icstr,nel)
580 skin_tensor(1:3,nskin+i) = evar(1:3,i)
581 IF(iok_part(i) == 1 ) is_written_skin(nskin+i) = is_written_tensor(i)
591 . elbuf_tab,skin_tensor, iparg ,ixs ,x ,pm ,
592 4 iparts ,ipm ,igeo ,ixs10 ,ixs16 , ixs20 ,
593 5 is_written_skin ,h3d_part,info1 ,keyword ,nskin ,
594 6 iad_elem ,fr_elem , weight ,tag_skins6)