47
48
49
50 USE elbufdef_mod
53
54
55
56#include "implicit_f.inc"
57
58
59
60#include "mvsiz_p.inc"
61
62
63
64#include "param_c.inc"
65#include "impl1_c.inc"
66#include "impl2_c.inc"
67
68
69
70 INTEGER JFT, JLT ,MTN , NPT,ITHK,IGTYP,,ISUBSTACK,NLAY,NFT
71 INTEGER MAT(*), PID(*),IGEO(NPROPGI,*),IDRIL,IHBE
72 INTEGER , INTENT(IN) :: SEDRAPE,NUMEL_DRAPE
73 INTEGER, DIMENSION(SEDRAPE) :: INDX_DRAPE
75 . geo(npropg,*), pm(npropm,*),
area(*),
76 . thk0(*),thk02(*),thk(*),thke(*), dir(*),
77 . volg(*),hm(mvsiz,4),hf(mvsiz,4),hc(mvsiz,2),hz(*),hmor(mvsiz,2),hfor(mvsiz,2),
78 . hmfor(mvsiz,6),gs(*)
79 TYPE (STACK_PLY) :: STACK
80 TYPE(ELBUF_STRUCT_) :: ELBUF_STR
81 TYPE (DRAPE_) :: DRAPE(NUMEL_DRAPE)
82
83
84c
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117 INTEGER I,MX,IPID,J,J2,J3,JJ,NEL,L,IGMAT,IPGMAT,
118 . LAYNPT_MAX, NLAY_MAX,ILAY
119
121 . shf(mvsiz),nu(mvsiz),g(mvsiz),ym(mvsiz),a11(mvsiz),a12(mvsiz),
122 . e11,e22,nu12,g31,g23,a22,wmc,facg,coef,wm
124 . fac(mvsiz),hmly(mvsiz,4),hcly(mvsiz,2), hmorly(mvsiz,2),sfac(mvsiz)
125 INTEGER, DIMENSION(:) , ALLOCATABLE :: MATLY
126 my_real,
DIMENSION(:) ,
ALLOCATABLE :: thkly
127 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: posly,thk_ly
128
129 coef =em01
130 nel = jlt-jft+1
131
132 laynpt_max = 1
133 IF(igtyp == 51 .OR. igtyp == 52) THEN
134 DO ilay=1,elbuf_str%NLAY
135 laynpt_max =
max(laynpt_max , elbuf_str%BUFLY(ilay)%NPTT)
136 ENDDO
137 ENDIF
138 nlay_max =
max(nlay,npt, elbuf_str%NLAY)
139 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
140 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel,nlay_max*laynpt_max))
141
142
143 IF(ithk>0.AND.ismdisp==0)THEN
144 DO i=jft,jlt
145 thk0(i)=thk(i)
146 ENDDO
147 ELSE
148 DO i=jft,jlt
149 thk0(i)=thke(i)
150 ENDDO
151 ENDIF
152 igmat = igeo(98,pid(1))
153 ipgmat = 700
154 IF(igtyp == 11 .AND. igmat > 0) THEN
155 DO i=jft,jlt
156 thk02(i) = thk0(i)*thk0(i)
157 volg(i) = thk0(i)*
area(i)
158 ipid=pid(i)
159 mx = pid(i)
160 ym(i) = geo(ipgmat +2 ,mx)
161 nu(i) = geo(ipgmat +3 ,mx)
162 g(i) = geo(ipgmat +4 ,mx)
163 a11(i) = geo(ipgmat +5 ,mx)
164 a12(i) = geo(ipgmat +6 ,mx)
165 ENDDO
166 ELSE
167
168 mx =mat(jft)
169 DO i=jft,jlt
170 thk02(i) = thk0(i)*thk0(i)
171 volg(i) = thk0(i)*
area(i)
172 ipid=pid(i)
173 ym(i) =pm(20,mx)
174 nu(i) =pm(21,mx)
175 g(i) =pm(22,mx)
176 a11(i) =pm(24,mx)
177 a12(i) =pm(25,mx)
178 ENDDO
179 END IF
180 IF(npt==1) THEN
181 DO i=jft,jlt
182 shf(i)=0.
183 ENDDO
184 ELSE
185 DO i=jft,jlt
186 shf(i)=geo(38,pid(i))
187 ENDDO
188 ENDIF
189 DO i=jft,jlt
190 gs(i)=g(i)*shf(i)
191 ENDDO
192
193 IF(mtn>=24)THEN
194 DO i=jft,jlt
195 a12(i) =nu(i)*a11(i)
196 ENDDO
197 ELSEIF (mtn==78)THEN
199 DO i=jft,jlt
200 ym(i) =sfac(i)*ym(i)
201 g(i) =sfac(i)*g(i)
202 a11(i)=sfac(i)*a11(i)
203 a12(i)=sfac(i)*a12(i)
204 ENDDO
205 ENDIF
206 IF (mtn==19.OR.mtn==15.OR.mtn==25) THEN
207 iorth=1
208 ELSE
209 iorth=0
210 ENDIF
211 IF (iorth==1) THEN
212 DO i=jft,jlt
213 hmfor(i,1)=zero
214 hmfor(i,2)=zero
215 hmfor(i,3)=zero
216 hmfor(i,4)=zero
217 hmfor(i,5)=zero
218 hmfor(i,6)=zero
219 ENDDO
220 IF (mtn==19) THEN
221 CALL gepm_lc(jft,jlt,mat,pm,shf,hm,hc)
222 CALL cctoglob(jft,jlt,hm,hc,hmor,dir,nel)
223 DO i=jft,jlt
224 hf(i,1)=one_over_12*hm(i,1)
225 hf(i,2)=one_over_12*hm(i,2)
226 hf(i,3)=one_over_12*hm(i,3)
227 hf(i,4)=one_over_12*hm(i,4)
228 hfor(i,1)=one_over_12*hmor(i,1)
229 hfor(i,2)=one_over_12*hmor(i,2)
230 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
231 ENDDO
232 ELSEIF (mtn==15.OR.mtn==25) THEN
233 IF (igtyp==9) THEN
234 CALL gepm_lc(jft,jlt,mat,pm,shf,hm,hc)
235 CALL cctoglob(jft,jlt,hm,hc,hmor,dir,nel)
236 DO i=jft,jlt
237 hf(i,1)=one_over_12*hm(i,1)
238 hf(i,2)=one_over_12*hm(i,2)
239 hf(i,3)=one_over_12*hm(i,3)
240 hf(i,4)=one_over_12*hm(i,4)
241 hfor(i,1)=one_over_12*hmor(i,1)
242 hfor(i,2)=one_over_12*hmor(i,2)
243 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
244 ENDDO
245 ELSEIF(igtyp == 10.OR.igtyp == 11.OR.igtyp == 17.OR.
246 . igtyp==51 .OR. igtyp == 52)THEN
247
248 CALL layini(elbuf_str,jft ,jlt ,geo ,igeo ,
249 . mat ,pid ,thkly ,matly ,posly ,
250 . igtyp ,0 ,0 ,nlay ,npt ,
251 . isubstack,stack ,drape ,nft ,thke ,
252 . nel ,thk_ly ,indx_drape,sedrape, numel_drape)
253 DO i=jft,jlt
254 hm(i,1)=zero
255 hm(i,2)=zero
256 hm(i,3)=zero
257 hm(i,4)=zero
258 hc(i,1)=zero
259 hc(i,2)=zero
260 hf(i,1)=zero
261 hf(i,2)=zero
262 hf(i,3)=zero
263 hf(i,4)=zero
264 hmor(i,1)=zero
265 hmor(i,2)=zero
266 hfor(i,1)=zero
267 hfor(i,2)=zero
268 ENDDO
269 IF(igtyp==10)THEN
270 DO j=1,npt
271 j2=1+(j-1)*jlt
272 j3=1+(j-1)*jlt*2
273 CALL gepm_lc(jft,jlt,matly(j2),pm,shf,hmly,hcly)
274 CALL cctoglob(jft,jlt,hmly,hcly,hmorly,dir(j3),nel)
275 DO i=jft,jlt
276 jj = j2 - 1 + i
277 wmc=posly(i,j)*posly(i,j)*thkly(jj)
278 hm(i,1)=hm(i,1)+thkly(jj)*hmly(i,1)
279 hm(i,2)=hm(i,2)+thkly(jj)*hmly(i,2)
280 hm(i,3)=hm(i,3)+thkly(jj)*hmly(i,3)
281 hm(i,4)=hm(i,4)+thkly(jj)*hmly(i,4)
282 hc(i,1)=hc(i,1)+thkly(jj)*hcly(i,1)
283 hc(i,2)=hc(i,2)+thkly(jj)*hcly(i,2)
284 hmor(i,1)=hmor(i,1)+thkly(jj)*hmorly(i,1)
285 hmor(i,2)=hmor(i,2)+thkly(jj)*hmorly(i,2)
286 hf(i,1)=hf(i,1)+wmc*hmly(i,1)
287 hf(i,2)=hf(i,2)+wmc*hmly(i,2)
288 hf(i,3)=hf(i,3)+wmc*hmly(i,3)
289 hf(i,4)=hf(i,4)+wmc*hmly(i,4)
290 hfor(i,1)=hfor(i,1)+wmc*hmorly(i,1)
291 hfor(i,2)=hfor(i,2)+wmc*hmorly(i,2)
292 ENDDO
293 ENDDO
294 ELSE
295 DO j=1,npt
296 j2=1+(j-1)*jlt
297 j3=1+(j-1)*jlt*2
298 CALL gepm_lc(jft,jlt,matly(j2),pm,shf,hmly,hcly)
299 CALL cctoglob(jft,jlt,hmly,hcly,hmorly,dir(j3),nel)
300 DO i=jft,jlt
301 jj = j2 - 1 + i
302 wm = posly(i,j)*thkly(jj)
303 wmc= posly(i,j)*wm
304 hm(i,1)=hm(i,1)+thkly(jj)*hmly(i,1)
305 hm(i,2)=hm(i,2)+thkly(jj)*hmly(i,2)
306 hm(i,3)=hm(i,3)+thkly(jj)*hmly(i,3)
307 hm(i,4)=hm(i,4)+thkly(jj)*hmly(i,4)
308 hc(i,1)=hc(i,1)+thkly(jj)*hcly(i,1)
309 hc(i,2)=hc(i,2)+thkly(jj)*hcly(i,2)
310 hmor(i,1)=hmor(i,1)+thkly(jj)*hmorly(i,1)
311 hmor(i,2)=hmor(i,2)+thkly(jj)*hmorly(i,2)
312 hf(i,1)=hf(i,1)+wmc*hmly(i,1)
313 hf(i,2)=hf(i,2)+wmc*hmly(i,2)
314 hf(i,3)=hf(i,3)+wmc*hmly(i,3)
315 hf(i,4)=hf(i,4)+wmc*hmly(i,4)
316 hfor(i,1)=hfor(i,1)+wmc*hmorly(i,1)
317 hfor(i,2)=hfor(i,2)+wmc*hmorly(i,2)
318 hmfor(i,1)=hmfor(i,1)+wm*hmly(i,1)
319 hmfor(i,2)=hmfor(i,2)+wm*hmly(i,2)
320 hmfor(i,3)=hmfor(i,3)+wm*hmly(i,3)
321 hmfor(i,4)=hmfor(i,4)+wm*hmly(i,4)
322 hmfor(i,5)=hmfor(i,5)+wm*hmorly(i,1)
323 hmfor(i,6)=hmfor(i,6)+wm*hmorly(i,2)
324 ENDDO
325 ENDDO
326 END IF
327 DO i=jft,jlt
328 hz(i)=
max(hf(i,1),hf(i,2),hf(i,4))*kz_tol
329 ENDDO
330 ENDIF
331 ENDIF
332 ELSE
333
334 IF (mtn == 27) THEN
335 CALL layini(elbuf_str,jft ,jlt ,geo ,igeo ,
336 . mat ,pid ,thkly ,matly ,posly ,
337 . igtyp ,0 ,0 ,nlay ,npt ,
338 . isubstack,stack ,drape ,nft ,thke ,
339 . jlt ,thk_ly ,indx_drape,sedrape ,numel_drape)
340 DO i=jft,jlt
341 hm(i,1)=a11(i)
342 hm(i,2)=a11(i)
343 hm(i,3)=a12(i)
344 hm(i,4)=g(i)
345 hf(i,1)=zero
346 hf(i,2)=zero
347 hf(i,3)=zero
348 hf(i,4)=zero
349 hc(i,1)=gs(i)
350 hc(i,2)=gs(i)
351 ENDDO
352 DO j=1,npt
353 DO i=jft,jlt
354 j2=1+(j-1)*jlt
355 jj = j2 - 1 + i
356 wm = posly(i,j)*thkly(jj)
357 wmc= posly(i,j)*wm
358 hf(i,1)=hf(i,1)+wmc*hm(i,1)
359 hf(i,2)=hf(i,2)+wmc*hm(i,2)
360 hf(i,3)=hf(i,3)+wmc*hm(i,3)
361 hf(i,4)=hf(i,4)+wmc*hm(i,4)
362 ENDDO
363 END DO
364 DO i=jft,jlt
365 hz(i)= hf(i,1)*kz_tol
366 ENDDO
367 ELSE
368
369 DO i=jft,jlt
370 hm(i,1)=a11(i)
371 hm(i,2)=a11(i)
372 hm(i,3)=a12(i)
373 hm(i,4)=g(i)
374 hf(i,1)=one_over_12*hm(i,1)
375 hf(i,2)=one_over_12*hm(i,2)
376 hf(i,3)=one_over_12*hm(i,3)
377 hf(i,4)=one_over_12*hm(i,4)
378 hc(i,1)=gs(i)
379 hc(i,2)=gs(i)
380 hz(i)= hf(i,1)*kz_tol
381 ENDDO
382 END IF
383 ENDIF
384 IF (idril>0) THEN
385 facg = coef*
min(one,kz_tol*2000)
386 DO i=jft,jlt
387
388 hz(i)= g(i)*facg
389
390 ENDDO
391 END IF
392
393 DEALLOCATE(matly, thkly, posly, thk_ly)
394 RETURN
subroutine cctoglob(jft, jlt, hm, hc, hmor, dir, nel)
subroutine gepm_lc(jft, jlt, mat, pm, shf, hm, hc)
subroutine get_etfac_s(nel, sfac, mtn)
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine layini(elbuf_str, jft, jlt, geo, igeo, mat, pid, thkly, matly, posly, igtyp, ixfem, ixlay, nlay, npt, isubstack, stack, drape, nft, thk, nel, ratio_thkly, indx_drape, sedrape, numel_drape)