35 . ELBUF_STR ,JFT ,JLT ,GEO ,IGEO ,
36 . MAT ,PID ,MATLY ,POSLY ,IGTYP ,
37 . NLAY ,NPT ,ISUBSTACK ,STACK ,DRAPE ,
38 . NFT ,THK ,NEL ,IDRAPE ,
49#include "implicit_f.inc"
62 INTEGER JFT,JLT,NPT,NEL,IGTYP,ISUBSTACK,NLAY,NFT,IDRAPE,NUMEL_DRAPE
63 INTEGER MAT(*), PID(*), MATLY(*), IGEO(NPROPGI,*)
64 my_real GEO(NPROPG,*),POSLY(MVSIZ,*),THK(*)
65 TYPE(ELBUF_STRUCT_),
TARGET :: ELBUF_STR
66 TYPE (STACK_PLY) :: STACK
67 TYPE (DRAPE_),
DIMENSION(NUMELC_DRAPE + NUMELTG_DRAPE),
TARGET :: DRAPE
68 INTEGER ,
DIMENSION(NUMEL_DRAPE) :: INDX
72 INTEGER I, J, N, IADR, IPTHK, IPMAT, IPPOS ,IPPID, IPID,
73 . ipang,mat_ly(mvsiz),it,itl,ilay,nptt,max_nptt,ipt,jmly,iint,
74 . ipid_ly,ipt_all,mat_lay,nslice,ipos,ie,ip
75 parameter(max_nptt = 100)
77 . thk_it(max_nptt*nlay,mvsiz),zshift,thk_nptt,
78 . thkl,pos_nptt,pos_0,thickt,thinning,thk_ly(mvsiz),
79 . thkly,ratio_thkly(mvsiz,npt)
81 TYPE (DRAPE_PLY_) ,
POINTER :: DRAPE_PLY
84 . A_GAUSS(9,9),W_GAUSS(9,9)
90 2 -.577350269189626,0.577350269189626,0. ,
93 3 -.774596669241483,0. ,0.774596669241483,
96 4 -.861136311594053,-.339981043584856,0.339981043584856,
97 4 0.861136311594053,0. ,0. ,
99 5 -.906179845938664,-.538469310105683,0. ,
100 5 0.538469310105683,0.906179845938664,0. ,
102 6 -.932469514203152,-.661209386466265,-.238619186083197,
103 6 0.238619186083197,0.661209386466265,0.932469514203152,
105 7 -.949107912342759,-.741531185599394,-.405845151377397,
106 7 0. ,0.405845151377397,0.741531185599394,
107 7 0.949107912342759,0. ,0. ,
108 8 -.960289856497536,-.796666477413627,-.525532409916329,
109 8 -.183434642495650,0.183434642495650,0.525532409916329,
110 8 0.796666477413627,0.960289856497536,0. ,
111 9 -.968160239507626,-.836031107326636,-.613371432700590,
112 9 -.324253423403809,0. ,0.324253423403809,
113 9 0.613371432700590,0.836031107326636,0.968160239507626/
121 3 0.555555555555556,0.888888888888889,0.555555555555556,
124 4 0.347854845137454,0.652145154862546,0.652145154862546,
125 4 0.347854845137454,0. ,0. ,
127 5 0.236926885056189,0.478628670499366,0.568888888888889,
128 5 0.478628670499366,0.236926885056189,0. ,
130 6 0.171324492379170,0.360761573048139,0.467913934572691,
131 6 0.467913934572691,0.360761573048139,0.171324492379170,
133 7 0.129484966168870,0.279705391489277,0.381830050505119,
134 7 0.417959183673469,0.381830050505119,0.279705391489277,
135 7 0.129484966168870,0. ,0. ,
136 8 0.101228536290376,0.222381034453374,0.313706645877887,
137 8 0.362683783378362,0.362683783378362,0.313706645877887,
138 8 0.222381034453374,0.101228536290376,0. ,
139 9 0.081274388361574,0.180648160694857,0.260610696402935,
140 9 0.312347077040003,0.330239355001260,0.312347077040003,
141 9 0.260610696402935,0.180648160694857,0.081274388361574/
153 pos_0 = geo(ippos+n,pid(1))
169 ipos = igeo(99,pid(1))
170 zshift = geo(199,pid(1))
171 thickt = stack%GEO(1,isubstack)
172 IF(ipos == 2 ) zshift = zshift /
max(thickt,em20)
173 IF(idrape == 0 )
THEN
178 matly(j) = stack%IGEO(ipmat + n ,isubstack)
179 posly(i,n) = stack%GEO (ippos + n ,isubstack)
189 matly(j) = stack%IGEO(ipmat + n ,isubstack)
190 posly(i,n) = stack%GEO (ippos + n ,isubstack)
191 thickt = stack%GEO(1,isubstack)
192 thkly = stack%GEO (ipthk + n ,isubstack)*thickt
193 ratio_thkly(i,n) = thkly/thk(i)
195 posly(i,n) = zshift + half*ratio_thkly(i,n)
197 posly(i,n) = posly(i,n-1)
198 . + half*(ratio_thkly(i,n)+ratio_thkly(i,n-1))
201 ip= drape(ie)%INDX_PLY(n)
203 drape_ply => drape(ie)%DRAPE_PLY(ip)
204 nslice = drape_ply%NSLICE
205 thinning = drape_ply%RDRAPE(1,1)
206 thickt = stack%GEO(1,isubstack)
207 thkly = stack%GEO(ipthk + n,isubstack)*thickt
208 thkly = thkly*thinning
210 ratio_thkly(i,n) = thkly
212 posly(i,n) = zshift + half*ratio_thkly(i,n)
214 posly(i,n) = posly(i,n-1)
215 . + half*(ratio_thkly(i,n)+ratio_thkly(i,n-1))
218 thickt = stack%GEO(1,isubstack)
219 thkly = stack%GEO(ipthk + n,isubstack)*thickt
221 ratio_thkly(i,n) = thkly
225 posly(i,n) = posly(i,n-1)
226 . + half*(ratio_thkly(i,n)+ratio_thkly(i,n-1))
243 ipos = igeo(99,pid(1))
244 zshift = geo(199,pid(1))
245 thickt = stack%GEO(1,isubstack)
246 IF(ipos == 2 )zshift = zshift /
max(thickt,em20)
249 nptt = elbuf_str%BUFLY(ilay)%NPTT
250 ipid_ly = stack%IGEO(ippid + ilay,isubstack)
251 ipid = stack%IGEO(ippid,isubstack)
253 mat_ly = elbuf_str%BUFLY(ilay)%IMAT
257 mat_ly(i) = stack%IGEO(ipmat + ilay,isubstack)
258 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)
259 ratio_thkly(i,ilay) = thk_ly(i)
260 jmly = (ilay-1)*jlt + i
263 thk_it(ipt,i) = thk_ly(i)/nptt
265 posly(i,ipt) = zshift + half*thk_it(ipt,i)
267 posly(i,ipt) = posly(i,ipt - 1)
268 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
271 matly(jmly) = mat_ly(i)
273 ELSEIF(iint == 2)
THEN
275 mat_ly(i) = stack%IGEO(ipmat + ilay,isubstack)
276 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)
277 mat_ly(i) = stack%IGEO(ipmat + ilay,isubstack)
278 ratio_thkly(i,ilay) = thk_ly(i)
279 jmly = (ilay-1)*jlt + i
282 thk_it(ipt,i) = half*thk_ly(i)*w_gauss(it,nptt)
284 posly(i,ipt) = zshift + half*thk_it(ipt,i)
286 posly(i,ipt) = posly(i,ipt - 1)
287 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
290 matly(jmly) = mat_ly(i)
293 ipt_all = ipt_all + nptt
297 nptt = elbuf_str%BUFLY
298 ipid_ly = stack%IGEO(ippid + ilay,isubstack)
299 ipid = stack%IGEO(ippid,isubstack)
301 mat_ly = elbuf_str%BUFLY(ilay)%IMAT
306 mat_ly(i) = stack%IGEO(ipmat + ilay,isubstack)
308 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)
309 ratio_thkly(i,ilay) = thk_ly(i)
310 jmly = (ilay-1)*jlt + i
313 thk_it(ipt,i) = thk_ly(i)/nptt
315 posly(i,ipt) = zshift + half*thk_it(ipt,i)
317 posly(i,ipt) = posly(i,ipt - 1)
318 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
320 matly(jmly) = mat_ly(i)
323 ip = drape(ie)%INDX_PLY(ilay)
325 drape_ply => drape(ie)%DRAPE_PLY(ip)
326 nslice = drape_ply%NSLICE
327 thickt = stack%GEO(1,isubstack)
328 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)*thickt
329 jmly = (ilay-1)*jlt + i
333 thinning = drape_ply%RDRAPE(it,1)
335 thk_it(ipt,i) = thk_it(ipt
338 posly(i,ipt) = zshift + half*thk_it(ipt,i)
341 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
343 matly(jmly) = mat_ly(i)
346 thickt = stack%GEO(1,isubstack)
347 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)*thickt
348 jmly = (ilay-1)*jlt + i
352 thk_it(ipt,i) = thk_ly(i)/nptt
353 thk_it(ipt,i) = thk_it(ipt,i)/thk(i)
356 posly(i,ipt) = zshift + half*thk_it(ipt,i)
358 posly(i,ipt) = posly(i,ipt - 1)
359 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
361 matly(jmly) = mat_ly(i)
366 ELSEIF(iint == 2)
THEN
369 mat_ly(i) = stack%IGEO(ipmat + ilay,isubstack)
371 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)
372 mat_ly(i) = stack%IGEO(ipmat +
373 ratio_thkly(i,ilay) = thk_ly(i)
374 jmly = (ilay-1)*jlt + i
377 thk_it(ipt,i) = half*thk_ly(i)*w_gauss(it,nptt)
379 posly(i,ipt) = zshift + half*thk_it(ipt,i)
381 posly(i,ipt) = posly(i,ipt - 1)
382 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
384 matly(jmly) = mat_ly(i)
388 ip = drape(ie)%INDX_PLY
391 nslice = drape_ply%NSLICE
393 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)*thickt
394 jmly = (ilay-1)*jlt + i
398 thinning = drape_ply%RDRAPE(it,1)
399 thk_it(ipt,i) = half*thk_ly(i)*w_gauss(it,nptt)*thinning
400 thk_it(ipt,i) = thk_it(ipt,i)/thk(i)
402 posly(i,ipt) = zshift + half*thk_it(ipt,i)
404 posly(i,ipt) = posly(i,ipt - 1)
405 . + half*(thk_it(ipt,i) + thk_it(ipt-1,i))
407 matly(jmly) = mat_ly(i)
410 thickt = stack%GEO(1,isubstack)
411 thk_ly(i) = stack%GEO(ipthk + ilay,isubstack)*thickt
412 jmly = (ilay-1)*jlt + i
416 thk_it(ipt,i) = half*thk_ly(i)*w_gauss(it,nptt)
417 thk_it(ipt,i) = thk_it(ipt,i)/thk(i)
419 posly(i,ipt) = zshift + half*thk_it(ipt,i)
421 posly(i,ipt) = posly(i,ipt - 1)
424 matly(jmly) = mat_ly(i)
430 ipt_all = ipt_all + nptt
438 pos_0 = geo(ippos+n,pid(1))
439 thk_nptt = geo(ipthk+n,pid(1))