41 . ELBUF_TAB,SKIN_TENSOR, IPARG ,IXS ,X ,PM ,
42 4 IPARTS ,IPM ,IGEO ,IXS10 ,IXS16 , IXS20 ,
43 5 IS_WRITTEN_SKIN ,H3D_PART,INFO1 ,KEYWORD ,NSKIN ,
44 6 IAD_ELEM ,FR_ELEM , WEIGHT , TAG_SKINS6 )
51 use element_mod ,
only : nixs
55#include "implicit_f.inc"
68 . skin_tensor(3,*),pm(npropm,*), x(3,*)
69 INTEGER IPARG(NPARG,*),
70 . IXS(NIXS,*),IPM(NPROPMI,*),IPARTS(*),
71 . ixs10(6,*) ,ixs16(8,*) ,ixs20(12,*) ,
72 . igeo(npropgi,*),is_written_skin(*),
73 . h3d_part(*),info1,nskin,tag_skins6(*),iad_elem(2,*),fr_elem(*),weight(*)
74 TYPE (ELBUF_STRUCT_),
DIMENSION(NGROUP),
TARGET :: ELBUF_TAB
75 CHARACTER(LEN=NCHARLINE100):: KEYWORD
81 INTEGER I, II, J, LENR, NEL, NFT, N
82 INTEGER IOK_PART(MVSIZ), TAG_SKIN_ND(NUMNOD)
84 INTEGER (7, NUMSKIN), IXSK(5, MVSIZ), IDEB
89 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITAGPS
91 . ,
DIMENSION(:,:),
ALLOCATABLE :: AFLU, VFLU,VALUE
92 INTEGER FACES(4,6),NS,K1,PWR(7),LL
93 DATA pwr/1,2,4,8,16,32,64/
102 ALLOCATE(aflu(3,numnod),vflu(3,numnod),value(6,numnod))
103 ALLOCATE(itagps(numnod))
109 tag_skin_nd(1:numnod) = 0
113 IF(mod(ll,pwr(jj+1))/pwr(jj) /= 0)cycle
115 ns=ixs(faces(k1,jj)+1,i)
121 IF (keyword ==
'TENS/STRESS/OUTER')
THEN
123 . ixs ,ixs10 ,ixs16 ,ixs20 ,
124 . x ,itagps ,pm ,tag_skin_nd)
127 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
136 IF (itagps(n)>0) value(j,n)=vflu(j,n)/itagps(n)
141 IF (itagps(n)>0) value(j,n)=aflu(j-3,n)/itagps(n)
144 ELSEIF (keyword ==
'TENS/STRAIN/OUTER')
THEN
146 . ixs ,ixs10 ,ixs16 ,ixs20 ,x ,
147 . itagps ,pm ,tag_skin_nd )
149 lenr = iad_elem(1,nspmd+1)-iad_elem(1,1)
158 IF (itagps(n)>0) value(j,n)=vflu(j,n)/itagps(n)
164 IF (itagps(n)>0) value(j,n)=half*aflu(j-3,n)/itagps(n)
170 ixskin(1:7,1:numskin)=0
172 . ixskin ,tag_skins6,nskin )
174 DO i=nft+1,nskin,mvsiz
175 nel =
min(nskin-ideb,mvsiz)
178 ixsk(1:5,ii) = ixskin(1:5,n)
182 IF (keyword ==
'TENS/STRAIN/OUTER')
THEN
185 skin_tensor(1:3,n) = evar(1:3,ii)
186 IF(h3d_part(ixsk(1,ii)) == 1) is_written_skin(n) = 1
188 ELSEIF (keyword ==
'TENS/STRESS/OUTER')
THEN
191 skin_tensor(1:3,n) = evar(1:3,ii)
192 IF(h3d_part(ixsk(1,ii)) == 1) is_written_skin(n) = 1
197 DEALLOCATE(aflu,vflu,
VALUE,itagps)
subroutine h3d_sol_skin_tensor(elbuf_tab, skin_tensor, iparg, ixs, x, pm, iparts, ipm, igeo, ixs10, ixs16, ixs20, is_written_skin, h3d_part, info1, keyword, nskin, iad_elem, fr_elem, weight, tag_skins6)