58
59
60
61 USE elbufdef_mod
64
65
66
67#include "implicit_f.inc"
68
69
70
71#include "mvsiz_p.inc"
72
73
74
75#include "com04_c.inc"
76#include "param_c.inc"
77#include "impl1_c.inc"
78
79
80
81 INTEGER JFT ,JLT ,NFT ,NPT ,
82 . MTN ,ITHK ,,ISUBSTACK,
83 . ISTRAIN ,IPLA ,OFFSET,IHBE ,ISMSTR,IKGEO,IEXPAN
84 INTEGER , INTENT(IN) :: SEDRAPE,NUMEL_DRAPE
85 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IPM(*),IPARG(*)
86 INTEGER INDXOF(MVSIZ),
87 . ETAG(*),IDDL(*) ,NDOF(*) ,IADK(*) ,JDIK(*)
88 INTEGER, DIMENSION(SEDRAPE) :: INDX_DRAPE
89
90
92 . pm(npropm,*),geo(npropg,*),bufmat(*),x(3,*),thke(*),
93 . off(mvsiz),k_diag(*) ,k_lt(*)
94 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
95 TYPE (STACK_PLY) :: STACK
96 TYPE (DRAPE_) :: DRAPE_SH4N()
97
98
99c
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132 INTEGER
133 . I, J,J1,J2, NEL, NPLAT,IPLAT(MVSIZ), NLAY,L_DIRA,L_DIRB,
134 . IREP,IBID,EP,IDRIL,IBID1
135 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),IORTH,IGTYP,IUN
137 . x13(mvsiz), x24(mvsiz), y13(mvsiz), y24(mvsiz),
138 . mx13(mvsiz), mx23(mvsiz), mx34(mvsiz),
139 . my13(mvsiz), my23(mvsiz), my34(mvsiz), z1(mvsiz),
140 . px1(mvsiz), px2(mvsiz), py1(mvsiz),py2(mvsiz),
141 . sx(mvsiz), sy(mvsiz), rx(mvsiz),ry(mvsiz),
142 . sx2(mvsiz), sy2(mvsiz), rx2(mvsiz),ry2(mvsiz),
143 . rhx(mvsiz,4),rhy(mvsiz,4),shx(mvsiz,4),shy(mvsiz,4),
144 . ph1(mvsiz),ph2(mvsiz),hxx(mvsiz),hyy(mvsiz),hxy(mvsiz)
146 . vq(mvsiz,9),
area(mvsiz), vqn(mvsiz,12),thk0(mvsiz),vol(mvsiz),
147 . a_i(mvsiz), thk2(mvsiz),hm(mvsiz,4),hf(mvsiz,4),hc(mvsiz,2),
148 . hz(mvsiz),dhz(mvsiz),hmor(mvsiz,2),hfor(mvsiz,2),
149 . gs(mvsiz),hmfor(mvsiz,6)
151 . corelv(mvsiz,2,4)
153 . k11(9,mvsiz),k12(9,mvsiz),k13(9,mvsiz),k14(9,mvsiz),
154 . k22(9,mvsiz),k23(9,mvsiz),k24(9,mvsiz),k33(9,mvsiz),
155 . m11(9,mvsiz),m12(9,mvsiz),m13(9,mvsiz),m14(9,mvsiz),
156 . m22(9,mvsiz),m23(9,mvsiz),m24(9,mvsiz),m33(9,mvsiz),
157 . mf11(9,mvsiz),mf12(9,mvsiz),mf13(9,mvsiz),mf14(9,mvsiz),
158 . mf22(9,mvsiz),mf23(9,mvsiz),mf24(9,mvsiz),mf33(9,mvsiz),
159 . fm12(9,mvsiz),fm13(9,mvsiz),fm14(9,mvsiz),
160 . fm23(9,mvsiz),fm24(9,mvsiz),fm34(9,mvsiz),
161 . k34(9,mvsiz),k44(9,mvsiz),m34(9,mvsiz),m44(9,mvsiz),
162 . mf34(9,mvsiz),mf44(9,mvsiz)
164 . prx(4,mvsiz),pry(4,mvsiz),prxy(4,mvsiz),phkrx(4,mvsiz),
165 . phkry(4,mvsiz),phkrxy(4,mvsiz),pherx(4,mvsiz),phery(4,mvsiz),
166 . pherxy(4,mvsiz),prz(4,mvsiz),phkrz(4,mvsiz),pherz(4,mvsiz),
167 . phkx(mvsiz),phky(mvsiz),phex(mvsiz),phey
169 . ke11(36,mvsiz),ke22(36,mvsiz),ke33(36,mvsiz),ke44(36,mvsiz),
170 . ke12(36,mvsiz),ke13(36,mvsiz),ke14(36,mvsiz),ke23(36,mvsiz),
171 . ke24(36,mvsiz),ke34(36,mvsiz)
172
174 . DIMENSION(:) ,POINTER :: dir_a, dir_b
176 . ALLOCATABLE, DIMENSION(:), TARGET :: dira,dirb
177 TYPE(G_BUFEL_) ,POINTER :: GBUF
178
179
180
181
182
183
184 gbuf => elbuf_str%GBUF
185 nel=jlt-jft+1
186 idril = iparg(41)
187
188 igtyp = igeo(11,ixc(6,1))
189 irep = igeo(6 ,ixc(6,1))
190 nlay = elbuf_str%NLAY
191 l_dira = elbuf_str%BUFLY(1)%LY_DIRA
192 l_dirb = elbuf_str%BUFLY(1)%LY_DIRB
193 ALLOCATE(dira(nlay*nel*l_dira))
194 ALLOCATE(dirb(nlay*nel*l_dirb))
195 dira = zero
196 dirb = zero
197 dir_a => dira(1:nlay*nel*l_dira)
198 dir_b => dirb(1:nlay*nel*l_dirb)
199 IF (irep == 0) THEN
200 DO j=1,nlay
201 j1 = 1+(j-1)*l_dira*nel
202 j2 = j*l_dira*nel
203 dira(j1:j2) = elbuf_str%BUFLY(j)%DIRA(1:nel*l_dira)
204 ENDDO
205 ENDIF
206
207 CALL czcoork3(jft ,jlt ,x ,ixc ,pm ,
208 1 gbuf%OFF,
area,a_i,vqn ,vq ,
209 2 x13 ,x24 ,y13 ,y24 ,mx13,
210 3 mx23,mx34 ,my13 ,my23 ,my34,
211 4 z1 , geo ,
212 5 elbuf_str,gbuf%SMSTR,nlay,
213 6 irep,npt,ismstr,
214 7 dir_a,dir_b,pid,mat,ngl,nplat,iplat ,
215 8 corelv,off,thke,nel)
216 IF (ikproj>0.OR.idril>0) THEN
217 DO i=1,9
218 DO ep=jft,jlt
219 m11(i,ep) =zero
220 m22(i,ep) =zero
221 m33(i,ep) =zero
222 m44(i,ep) =zero
223 m12(i,ep) =zero
224 m13(i,ep) =zero
225 m14(i,ep) =zero
226 m23(i,ep) =zero
227 m24(i,ep) =zero
228 m34(i,ep) =zero
229 mf11(i,ep) =zero
230 mf22(i,ep) =zero
231 mf33(i,ep) =zero
232 mf44(i,ep) =zero
233 mf12(i,ep) =zero
234 mf13(i,ep) =zero
235 mf14(i,ep) =zero
236 mf23(i,ep) =zero
237 mf24(i,ep) =zero
238 mf34(i,ep) =zero
239 fm12(i,ep) =zero
240 fm13(i,ep) =zero
241 fm14(i,ep) =zero
242 fm23(i,ep) =zero
243 fm24(i,ep) =zero
244 fm34(i,ep) =zero
245 ENDDO
246 ENDDO
247 ENDIF
248 IF (irep>0) THEN
249 CALL cmatc3(jft ,jlt ,pm ,mat ,geo ,
250 1 pid ,
area ,thk0 ,thk2 ,gbuf%THK ,
251 2 thke
252 3 hm ,hf ,hc ,hz ,igtyp
253 4 iorth ,hmor ,hfor ,dir_a ,igeo ,
254 5 idril ,ihbe ,hmfor ,gs ,isubstack,
255 6 stack ,elbuf_str ,nlay ,drape_sh4n ,nft ,
256 7 nel ,indx_drape,sedrape,numel_drape)
257 ELSE
258 CALL cmatc3(jft ,jlt ,pm ,mat ,geo ,
259 1 pid ,
area ,thk0 ,thk2 ,gbuf%THK ,
260 2 thke ,vol ,mtn ,npt ,ithk ,
261 3 hm ,hf ,hc ,hz ,igtyp ,
262 4 iorth ,hmor ,hfor ,dira ,igeo ,
263 5 idril ,ihbe ,hmfor ,gs ,isubstack,
264 6 stack ,elbuf_str ,nlay ,drape_sh4n ,nft ,
265 7 nel ,indx_drape,sedrape,numel_drape)
266 ENDIF
267
268
269
270 iun = 1
271 CALL cmatip3(jft ,jlt ,pm ,mat ,pid ,
272 1 mtn ,npt ,hm ,hf ,iorth ,
273 2 hmor ,hfor ,hmfor ,iun )
274
275 IF (iorth >0 .AND.ikproj<=0 .AND.idril==0 ) THEN
276 DO i=1,9
277 DO ep=jft,jlt
278 mf11(i,ep) =zero
279 mf22(i,ep) =zero
280 mf33(i,ep) =zero
281 mf44(i,ep) =zero
282 mf12(i,ep) =zero
283 mf13(i,ep) =zero
284 mf14(i,ep) =zero
285 mf23(i,ep) =zero
286 mf24(i,ep) =zero
287 mf34(i,ep) =zero
288 fm12(i,ep) =zero
289 fm13(i,ep) =zero
290 fm14(i,ep) =zero
291 fm23(i,ep) =zero
292 fm24(i,ep) =zero
293 fm34(i,ep) =zero
294 ENDDO
295 ENDDO
296 ENDIF
297
298
299
301 2 x24 ,y13 ,y24 ,mx13 ,mx23 ,
302 3 mx34 ,my13 ,my23 ,my34 ,z1 ,
303 4 px1 ,px2 ,py1 ,py2 ,rx ,
304 5 ry ,sx ,sy ,rx2 ,ry2 ,
305 6 sx2 ,sy2 ,rhx ,rhy ,shx ,
306 7 shy ,ph1 ,ph2 ,hxx ,hyy ,
307 8 hxy ,nplat,iplat)
308
309
310
311
312
313
314 CALL czlkec3(jft ,jlt ,vol ,thk0 ,thk2 ,
315 2 hm ,hf ,hz ,a_i ,z1 ,
316 3 px1 ,px2 ,py1 ,py2 ,nplat,
317 4 iplat,dhz ,
318 4 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
319 5 m11,m12,m13
320 6 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
321 7 mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34,
322 8 iorth,hmor,hfor,hmfor)
323
324
325
326 CALL czlkect3(jft ,jlt ,vol ,hc ,rx ,
327 4 ry ,sx ,sy ,rx2 ,ry2 ,
328 5 sx2 ,sy2 ,rhx ,rhy ,shx ,
329 6 shy ,gs ,nplat ,iplat,
330 9 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
331 a m11,m12,m13,m14,m22,m23,m24,m33,m34,m44,
332 b mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
333 c mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34)
334 IF (idril>0) THEN
336 1 x24 ,y13 ,y24 ,mx13 ,mx23 ,
337 2 mx34 ,my13 ,my23 ,my34 ,z1 ,
338 3 rx ,ry ,sx ,sy ,prx ,
339 4 pry ,prxy ,prz ,phkrx,phkry,
340 5 phkrxy,pherx,phery,pherxy,
341 6 phkrz,pherz ,phkx ,phky ,phex ,
342 7 phey ,iplat)
343 CALL czlkecr3(jft ,jlt ,vol ,thk0 ,thk2 ,
344 2 hm ,hf ,hz ,a_i ,z1 ,
345 3 px1 ,px2 ,py1 ,py2 ,
346 6 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
347 7 m11,m12,m13,m14,m22,m23,m24,m33,m34,m44,
348 8 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
349 9 mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34,
350 a
351 4 prx ,pry ,prxy ,prz ,hmfor,nplat)
352 ENDIF
353
354
355
356
357 IF ( iorth >0 .OR. mtn == 27) THEN
358
359
360 CALL cmatch3(jft ,jlt ,pm ,mat ,geo ,
361 1 pid ,mtn ,idril ,igeo ,hm ,
362 2 hf ,hz )
363 ENDIF
364 CALL czlken3(jft ,jlt ,vol ,thk0 ,thk2 ,
365
366 3 py1 ,py2 ,hxx ,hyy
367 4 ph1 ,ph2 ,z1 ,nplat,iplat,dhz ,
368 5 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
369 6
370 7 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
371 8 mf34,mf44,fm12,fm13,fm14,fm23
372 9 idril )
373 IF (idril>0) THEN
374 CALL czlkenr3(jft ,jlt ,vol ,thk0 ,thk2 ,
375 2 hm ,hz ,a_i ,px1 ,px2 ,
376 3 py1
377 4 ph1 ,ph2 ,z1 ,nplat,iplat,dhz ,
378 5 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
379 6 m11,m12,m13,m14,m22,m23,m24,m33,m34,m44,
380 7 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
381 8 mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34,
382 9 phkrx,phkry,phkrxy,pherx,phery,pherxy,
383 a phkrz,pherz,phkx ,phky ,phex ,phey )
384 ENDIF
385 IF (ikgeo ==1)
386 .
CALL czlkecg3(jft ,jlt ,vol ,thk0 ,thk2 ,
387 1 px1 ,px2 ,py1 ,py2 ,rx ,
388 2 ry ,sx ,sy ,rx2 ,ry2 ,
389 3 sx2 ,sy2 ,rhx ,rhy ,shx ,
390 4 shy ,nplat ,iplat,gbuf%FOR,gbuf%MOM,
391 5 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
392 6 m11,m12,m13,m14,m22,m23,m24,m33,m34,m44,
393 7 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
394 8 mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34,
395 9 idril,iorth ,nel)
396
397
398
400 1 jft ,jlt ,vqn ,vq ,nplat,
401 2 iplat ,
402 3 k11,k12,k13,k14,k22,k23,k24,k33,k34,k44,
403 4 m11,m12,m13,m14,m22,m23,m24,m33,m34,m44,
404 5 mf11,mf12,mf13,mf14,mf22,mf23,mf24,mf33,
405 6 mf34,mf44,fm12,fm13,fm14,fm23,fm24,fm34,
406 7 ke11,ke22,ke33,ke44,ke12,ke13,ke14,ke23,
407 8 ke24,ke34,corelv,z1 ,idril ,iorth)
408
410 1 jft, jlt, ixc, etag, off)
411
413 1 ixc ,nel ,iddl ,ndof ,k_diag ,
414 2 k_lt ,iadk ,jdik ,ke11 ,ke12 ,
415 3 ke13 ,ke14 ,ke22 ,ke23 ,ke24 ,
416 5 ke33 ,ke34 ,ke44 ,off )
417
418 RETURN
subroutine assem_c4(ixc, nel, iddl, ndof, k_diag, k_lt, iadk, jdik, kc11, kc12, kc13, kc14, kc22, kc23, kc24, kc33, kc34, kc44, off)
subroutine c4eoff(jft, jlt, ixc, etag, off)
subroutine cmatip3(jft, jlt, pm, mat, pid, mtn, npt, hm, hf, iorth, hmor, hfor, hmfor, ipg)
subroutine cmatch3(jft, jlt, pm, mat, geo, pid, mtn, idril, igeo, hm, hf, hz)
subroutine cmatc3(jft, jlt, pm, mat, geo, pid, area, thk0, thk02, thk, thke, volg, mtn, npt, ithk, hm, hf, hc, hz, igtyp, iorth, hmor, hfor, dir, igeo, idril, ihbe, hmfor, gs, isubstack, stack, elbuf_str, nlay, drape, nft, nel, indx_drape, sedrape, numel_drape)
subroutine czbe3(jft, jlt, area, a_i, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, px1, px2, py1, py2, rx, ry, sx, sy, rx2, ry2, sx2, sy2, rhx, rhy, shx, shy, ph1, ph2, hxx, hyy, hxy, nplat, iplat)
subroutine czber3(jft, jlt, area, a_i, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, rx, ry, sx, sy, prx, pry, prxy, prz, phkrx, phkry, phkrxy, pherx, phery, pherxy, phkrz, pherz, phkx, phky, phex, phey, iplat)
subroutine czcoork3(jft, jlt, x, ixc, pm, offg, area, area_i, vqn, vq, x13, x24, y13, y24, mx13, mx23, mx34, my13, my23, my34, z1, geo, elbuf_str, smstr, nlay, irep, npt, ismstr, dir_a, dir_b, pid, mat, ngl, nplat, iplat, corelv, off, thk, nel)
subroutine czlkec3(jft, jlt, vol, thk0, thk2, hm, hf, hz, a_i, z1, px1, px2, py1, py2, nplat, iplat, dhz, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, iorth, hmor, hfor, hmfor)
subroutine czlkecr3(jft, jlt, vol, thk0, thk2, hm, hf, hz, a_i, z1, px1, px2, py1, py2, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, iorth, hmor, hfor, iplat, dhz, prx, pry, prxy, prz, hmfor, nplat)
subroutine czlkecg3(jft, jlt, vol, thk0, thk2, px1, px2, py1, py2, rx, ry, sx, sy, rx2, ry2, sx2, sy2, rhx, rhy, shx, shy, nplat, iplat, for, mom, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, idril, iorth, nel)
subroutine czlkect3(jft, jlt, vol, hc, rx, ry, sx, sy, rx2, ry2, sx2, sy2, rhx, rhy, shx, shy, gs, nplat, iplat, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34)
subroutine czlken3(jft, jlt, vol, thk0, thk2, hm, hz, a_i, px1, px2, py1, py2, hxx, hyy, hxy, ph1, ph2, z1, nplat, iplat, dhz, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, idril)
subroutine czlkenr3(jft, jlt, vol, thk0, thk2, hm, hz, a_i, px1, px2, py1, py2, hxx, hyy, hxy, ph1, ph2, z1, nplat, iplat, dhz, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, phkrx, phkry, phkrxy, pherx, phery, pherxy, phkrz, pherz, phkx, phky, phex, phey)
subroutine czsumg3(jft, jlt, vqn, vq, nplat, iplat, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, m11, m12, m13, m14, m22, m23, m24, m33, m34, m44, mf11, mf12, mf13, mf14, mf22, mf23, mf24, mf33, mf34, mf44, fm12, fm13, fm14, fm23, fm24, fm34, ke11, ke22, ke33, ke44, ke12, ke13, ke14, ke23, ke24, ke34, corelv, z1, idril, iorth)
subroutine area(d1, x, x2, y, y2, eint, stif0)