35 SUBROUTINE cbufxfe(ELBUF_STR,XFEM_STR,ISUBSTACK,STACK ,
36 . IGEO ,GEO ,LFT ,LLT ,MAT,
37 . PID ,NPT ,NPTT ,NLAY,IR ,
47#include "implicit_f.inc"
56#include "com_xfem1.inc"
61 INTEGER IGEO(NPROPGI,*),LFT,LLT,MAT(*),PID(*),NPT,NPTT,NLAY,
62 . ,IS,IXFEM,MTN,ISUBSTACK,NG
66 TYPE(elbuf_struct_) :: ELBUF_STR
67 TYPE(elbuf_struct_),
TARGET ,
DIMENSION(NGROUP,*):: XFEM_STR
72 INTEGER IGTYP,IREP,IXEL,I,II,IT,ILAY,L_DMG
75 . thkly(mvsiz*100),posly(mvsiz,100)
77 .
DIMENSION(:),
POINTER :: dir_dmg
79 TYPE (L_BUFEL_) ,
POINTER :: LBUF
80 TYPE (STACK_PLY) :: STACK
82 igtyp = igeo(11,pid(1))
84 IF (ixfem == 1) npt = 1
88 . lft ,llt ,npt ,geo ,igeo ,
89 . mat ,pid ,thkly ,matly ,posly ,
92 . lft ,llt ,nlay ,ir ,is ,
93 . nptt ,ixfem,thkly ,posly,irep ,ixel)
98 DO it=1,elbuf_str%BUFLY(ilay)%NPTT
99 l_dmg = xfem_str(ng,ixel)%BUFLY(ilay)%L_DMG
100 lbuf => xfem_str(ng,ixel)%BUFLY(ilay)%LBUF(ir,is,it)
101 dir_dmg => lbuf%DMG(1:l_dmg*llt)
104 dir_dmg(i+llt) = zero
110 l_dmg = xfem_str(ng,ixel
111 lbuf => xfem_str(ng,ixel)%BUFLY(1)%LBUF(ir,is,it)
112 dir_dmg => lbuf%DMG(1:l_dmg*llt)
115 dir_dmg(i+llt) = zero
133 . LFT ,LLT ,NPT ,GEO ,IGEO ,
134 . MAT ,PID ,THKLY ,MATLY ,POSLY ,
144#include "implicit_f.inc"
148#include "mvsiz_p.inc"
149#include "param_c.inc"
153 INTEGER LFT,LLT,NPT,IGTYP,ISUBSTACK
156 TYPE (ELBUF_STRUCT_) :: ELBUF_STR
157 TYPE (STACK_PLY) :: STACK
161 INTEGER I,J,N,NPTT,IADR,IPANG,IPTHK,IPMAT,IPPOS,IPPID,IPID,
162 . jmly,ipt,it,ipt_all,iint,mat_ly,ipid_ly,ilay,nlay,max_nptt
163 parameter(max_nptt = 10)
165 . thk_it(max_nptt),pos_it(max_nptt),thk_ly,pos_ly,thk_nptt,
166 . pos_nptt,thickt,pos_0
169 . a_gauss(9,9),w_gauss(9,9)
175 2 -.577350269189626,0.577350269189626,0. ,
178 3 -.774596669241483,0. ,0.774596669241483,
181 4 -.861136311594053,-.339981043584856,0.339981043584856,
182 4 0.861136311594053,0. ,0. ,
184 5 -.906179845938664,-.538469310105683,0. ,
185 5 0.538469310105683,0.906179845938664,0. ,
187 6 -.932469514203152,-.661209386466265,-.238619186083197,
188 6 0.238619186083197,0.661209386466265,0.932469514203152,
190 7 -.949107912342759,-.741531185599394,-.405845151377397,
191 7 0. ,0.405845151377397,0.741531185599394,
192 7 0.949107912342759,0. ,0. ,
193 8 -.960289856497536,-.796666477413627,-.525532409916329,
194 8 -.183434642495650,0.183434642495650,0.525532409916329,
195 8 0.796666477413627,0.960289856497536,0. ,
196 9 -.968160239507626,-.836031107326636,-.613371432700590,
197 9 -.324253423403809,0. ,0.324253423403809,
198 9 0.613371432700590,0.836031107326636,0.968160239507626/
206 3 0.555555555555556,0.888888888888889,0.555555555555556,
209 4 0.347854845137454,0.652145154862546,0.652145154862546,
210 4 0.347854845137454,0. ,0. ,
212 5 0.236926885056189,0.478628670499366,0.568888888888889,
213 5 0.478628670499366,0.236926885056189,0. ,
215 6 0.171324492379170,0.360761573048139,0.467913934572691,
216 6 0.467913934572691,0.360761573048139,0.171324492379170,
218 7 0.129484966168870,0.279705391489277,0.381830050505119,
219 7 0.417959183673469,0.381830050505119,0.279705391489277,
220 7 0.129484966168870,0. ,0. ,
221 8 0.101228536290376,0.222381034453374,0.313706645877887,
222 8 0.362683783378362,0.362683783378362,0.313706645877887,
223 8 0.222381034453374,0.101228536290376,0. ,
224 9 0.081274388361574,0.180648160694857,0.260610696402935,
225 9 0.312347077040003,0.330239355001260,0.312347077040003,
226 9 0.260610696402935,0.180648160694857,0.081274388361574/
231 nlay = elbuf_str%NLAY
238 matly(j) = igeo(ipmat+ilay,pid(1))
239 thkly(j) = geo(ipthk+ilay,pid(1))
240 posly(i,ilay) = geo(ippos+ilay,pid(1))
244 ELSEIF (igtyp == 51.OR. igtyp == 52)
THEN
252 nptt = elbuf_str%BUFLY(ilay)%NPTT
253 thk_ly = stack%GEO(ipthk + ilay,isubstack)
254 pos_ly = stack%GEO(ippos + ilay,isubstack)
255 mat_ly = stack%IGEO(ipmat + ilay,isubstack)
256 ipid_ly = stack%IGEO(ippid + ilay,isubstack)
257 ipid = stack%IGEO(ippid,isubstack)
261 thk_it(it) = thk_ly/nptt
263 pos_0 = pos_ly - half*thk_ly
264 IF (nlay == 1) pos_0 = - half
265 pos_it(1) = pos_0 + half*thk_it(1)
267 pos_it(it) = pos_it(it-1) + half*(thk_it(it) + thk_it(it-1))
269 ELSEIF (iint == 2)
THEN
271 thk_it(it) = half*thk_ly*w_gauss(it,nptt)
272 pos_it(it) = pos_ly + half*thk_ly*a_gauss(it,nptt)
286 jmly = (ilay-1)*llt + i
289 posly(i,ipt)= pos_nptt
296 ELSEIF (igtyp==1)
THEN
302 posly(i,n) = geo(ippos
311 thkly(j) = geo(ipthk+n,pid(i))
312 posly(i,n) = geo(ippos+n,pid(i))