55
56
57
58 USE elbufdef_mod
59 use element_mod , only : nixq
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "mvsiz_p.inc"
68
69
70
71#include "com01_c.inc"
72#include "param_c.inc"
73
74
75
76 INTEGER, INTENT(IN) :: ISMSTR
77 INTEGER, INTENT(IN) :: NFT
78 INTEGER, INTENT(IN) :: MTN
79 INTEGER, INTENT(IN) :: JMULT
80 INTEGER, INTENT(IN) :: JHBE
81 INTEGER, INTENT(IN) :: JCVT
82 INTEGER, INTENT(IN) :: IGTYP
83 INTEGER, INTENT(IN) :: ISORTH
84 INTEGER IXQ(NIXQ,*), ICP, ICSIG, IKGEO
85 INTEGER NEL, LIAD, NPG,
86 . IPM(NPROPMI,*), IGEO(NPROPGI,*), ETAG(*), IDDL(*),
87 . NDOF(*), IADK(*), JDIK(*)
89 . pm(npropm,*), geo(npropg,*), x(3,*),
90 . bufmat(*), k_diag(*), k_lt(*)
91 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
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, J, EP
118
119 INTEGER IKORTH,IADBUF,ICPG,IPREDU
120
121 INTEGER IAD0
122
123 INTEGER LCO
124
125 INTEGER NF1
126
127 INTEGER MXT(MVSIZ),
128 + NC1(MVSIZ),NC2(MVSIZ),NC3(MVSIZ),NC4(MVSIZ),
129 + NGL(MVSIZ),NGEO(MVSIZ)
130
131 INTEGER NNPT,NPTR,NPTS,IR,IS,IT,IP
132
133
134
135
136
137
138
139
140
141
142
143
144
146 + offg(mvsiz),off(mvsiz),gama(mvsiz,6),
147 + y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
148 + z1(mvsiz),z2(mvsiz),z3(mvsiz),z4(mvsiz),
149 + y12(mvsiz),y34(mvsiz),y13(mvsiz),y24(mvsiz),
150 + y14(mvsiz),y23(mvsiz),
151 + z12(mvsiz),z34(mvsiz),z13(mvsiz),z24(mvsiz),
152 + z14(mvsiz),z23(mvsiz),
153 + y234(mvsiz),y124(mvsiz),yavg(mvsiz),
154 + pyc1(mvsiz),pyc2(mvsiz),pzc1(mvsiz),pzc2(mvsiz),
155 + ay(mvsiz),
156 + aire(mvsiz),volu(mvsiz),
157 + py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
158 + pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
159 + airn(mvsiz),voln(mvsiz),
160 + k11(2,2,mvsiz),k12(2,2,mvsiz),k13(2,2,mvsiz),k14(2,2,mvsiz),
161 + k22(2,2,mvsiz),k23(2,2,mvsiz),k24(2,2,mvsiz),
162 + k33(2,2,mvsiz),k34(2,2,mvsiz),k44(2,2,mvsiz),
163 + k11u(2,2,mvsiz),k12u(2,2,mvsiz),k13u(2,2,mvsiz),k14u(2,2,mvsiz),
164 + k22u(2,2,mvsiz),k23u(2,2,mvsiz),k24u(2,2,mvsiz),
165 + k33u(2,2,mvsiz),k34u(2,2,mvsiz),k44u(2,2,mvsiz),
166 + k11l(2,2,mvsiz),k12l(2,2,mvsiz),k13l(2,2,mvsiz),k14l(2,2,mvsiz),
167 + k22l(2,2,mvsiz),k23l(2,2,mvsiz),k24l(2,2,mvsiz),
168 + k33l(2,2,mvsiz),k34l(2,2,mvsiz),k44l(2,2,mvsiz),
169 + r11(mvsiz),r12(mvsiz),r13(mvsiz),
170 + r21(mvsiz),r22(mvsiz),r23(mvsiz),
171 + r31(mvsiz),r32(mvsiz),r33(mvsiz)
172
173
175 . nu(mvsiz),c1,e0(mvsiz),fac(mvsiz),bid(1),
176 . hh(2,mvsiz),hh1(2,mvsiz),
177 . dm(9,mvsiz),dgm(9,mvsiz),gm(9,mvsiz),
178 . dd(9,mvsiz),dg(9,mvsiz),gg(mvsiz),g33(9,mvsiz),
179 . byz1(mvsiz),byz2(mvsiz),byz3(mvsiz),byz4(mvsiz),
180 . bzy1(mvsiz),bzy2(mvsiz),bzy3(mvsiz),bzy4(mvsiz),
181 + nuu(mvsiz)
182
183
185 + vd2(mvsiz),vis(mvsiz),
186 + rx(mvsiz),ry(mvsiz),rz(mvsiz),
187 + sx(mvsiz),sy(mvsiz),sz(mvsiz)
188
190 + wi,ksi,eta
192 + w_gauss(9,9),a_gauss(9,9)
193 TYPE(G_BUFEL_) ,POINTER :: GBUF
194 TYPE(L_BUFEL_) ,POINTER :: LBUF
195
196 DATA w_gauss /
197 1 2. ,0. ,0. ,
198 1 0. ,0. ,0. ,
199 1 0. ,0. ,0. ,
200 2 1. ,1. ,0. ,
201 2 0. ,0. ,0. ,
202 2 0. ,0. ,0. ,
203 3 0.555555555555556,0.888888888888889,0.555555555555556,
204 3 0. ,0. ,0. ,
205 3 0. ,0. ,0. ,
206 4 0.347854845137454,0.652145154862546,0.652145154862546,
207 4 0.347854845137454,0. ,0. ,
208 4 0. ,0. ,0. ,
209 5 0.236926885056189,0.478628670499366,0.568888888888889,
210 5 0.478628670499366,0.236926885056189,0. ,
211 5 0. ,0. ,0. ,
212 6 0.171324492379170,0.360761573048139,0.467913934572691,
213 6 0.467913934572691,0.360761573048139,0.171324492379170,
214 6 0. ,0. ,0. ,
215 7 0.129484966168870,0.279705391489277,0.381830050505119,
216 7 0.417959183673469,0.381830050505119,0.279705391489277,
217 7 0.129484966168870,0. ,0. ,
218 8 0.101228536290376,0.222381034453374,0.313706645877887,
219 8 0.362683783378362,0.362683783378362,0.313706645877887,
220 8 0.222381034453374,0.101228536290376,0. ,
221 9 0.081274388361574,0.180648160694857,0.260610696402935,
222 9 0.312347077040003,0.330239355001260,0.312347077040003,
223 9 0.260610696402935,0.180648160694857,0.081274388361574/
224 DATA a_gauss /
225 1 0. ,0. ,0. ,
226 1 0. ,0. ,0. ,
227 1 0. ,0. ,0. ,
228 2 -.577350269189626,0.577350269189626,0. ,
229 2 0. ,0. ,0. ,
230 2 0. ,0. ,0. ,
231 3 -.774596669241483,0. ,0.774596669241483,
232 3 0. ,0. ,0. ,
233 3 0. ,0. ,0. ,
234 4 -.861136311594053,-.339981043584856,0.339981043584856,
235 4 0.861136311594053,0. ,0. ,
236 4 0. ,0. ,0. ,
237 5 -.906179845938664,-.538469310105683,0. ,
238 5 0.538469310105683,0.906179845938664,0. ,
239 5 0. ,0. ,0. ,
240 6 -.932469514203152,-.661209386466265,-.238619186083197,
241 6 0.238619186083197,0.661209386466265,0.932469514203152,
242 6 0. ,0. ,0. ,
243 7 -.949107912342759,-.741531185599394,-.405845151377397,
244 7 0. ,0.405845151377397,0.741531185599394,
245 7 0.949107912342759,0. ,0. ,
246 8 -.960289856497536,-.796666477413627,-.525532409916329,
247 8 -.183434642495650,0.183434642495650,0.525532409916329,
248 8 0.796666477413627,0.960289856497536,0. ,
249 9 -.968160239507626,-.836031107326636,-.613371432700590,
250 9 -.324253423403809,0. ,0.324253423403809,
251 9 0.613371432700590,0.836031107326636,0.968160239507626/
252
253
254
255 gbuf => elbuf_str%GBUF
256 IF (isorth == 0) THEN
257 DO i=1,nel
258 gama(i,1) = one
259 gama(i,2) = zero
260 gama(i,3) = zero
261 gama(i,4) = zero
262 gama(i,5) = one
263 gama(i,6) = zero
264 ENDDO
265 ELSE
266 DO i=1,nel
267 gama(i,1) = gbuf%GAMA(i )
268 gama(i,2) = gbuf%GAMA(i + nel)
269 gama(i,3) = gbuf%GAMA(i + 2*nel)
270 gama(i,4) = gbuf%GAMA(i + 3*nel)
271 gama(i,5) = gbuf%GAMA(i + 4*nel)
272 gama(i,6) = gbuf%GAMA(i + 5*nel)
273 ENDDO
274 ENDIF
275 iad0 = 1
276 IF (isorth > 0) iad0 = 1 + 6*nel
277 IF (igtyp == 21.OR.igtyp == 22) THEN
278 ikorth=2
279 ELSEIF (isorth>0) THEN
280 ikorth=1
281 ELSE
282 ikorth=0
283 ENDIF
284
285 lco = 1 + nixq*nft
286 nf1 = 1 + nft
287
288
289
290
291 IF (jcvt==0) THEN
293 1 x, ixq(1,nf1),y1, y2,
294 2 y3, y4, z1, z2,
295 3 z3, z4, nc1, nc2,
296 4 nc3, nc4, ngl, mxt,
297 5 ngeo, vd2, vis, nel)
298 ELSE
300 1 x, ixq(1,nf1),y1, y2,
301 2 y3, y4, z1, z2,
302 3 z3, z4, nc1, nc2,
303 4 nc3, nc4, ngl, mxt,
304 5 ngeo, vd2, r11, r12,
305 6 r13, r21, r22, r23,
306 7 r31, r32, r33, gama,
307 8 y234, y124, vis, nel,
308 9 isorth)
309 ENDIF
310
311
312
313 DO i=1,nel
314 nu(i)=
min(half,pm(21,mxt(i)))
315 c1 =pm(32,mxt(i))
316 e0(i) =three*(one-two*nu(i))*c1
317 ENDDO
318 IF(icp==2) THEN
319 CALL s8zsigp3(1 ,nel ,gbuf%SIG,e0 ,gbuf%PLA,
320 2 fac ,gbuf%G_PLA,nel )
321 DO i=1,nel
322 nuu(i)=nu(i)+(half-nu(i))*fac(i)
323 ENDDO
324 ELSEIF(icp==1) THEN
325 DO i=1,nel
326 nuu(i)=half
327 ENDDO
328 ELSE
329 DO i=1,nel
330 nuu(i)=zero
331 ENDDO
332 ENDIF
333
335 1 gbuf%OFF,aire, volu, ngl,
336 2 y1, y2, y3, y4,
337 3 z1, z2, z3, z4,
338 4 y234, y124, nel, jmult,
339 5 jcvt)
340
341 IF(n2d==1) THEN
342 DO i=1,nel
343 yavg(i) = x(2,nc1(i))+x(2,nc2(i))+x(2,nc3(i))+x(2,nc4(i))
344 ENDDO
345 ENDIF
346
348 1 y1, y2, y3, y4,
349 2 z1, z2, z3, z4,
350 3 y12, y34, y13, y24,
351 4 y14, y23, z12, z34,
352 5 z13, z24, z14, z23,
353 6 pyc1, pyc2, pzc1, pzc2,
354 7 aire, volu, yavg, rx,
355 8 ry, rz, sx, sy,
356 9 sz, nel, jhbe)
357
358
359
360
361 icpg = 0
362 IF(icpg==2) icpg = 1
363
364
365 nptr = 2
366 npts = 2
367 nnpt = nptr*npts
368
369 IF (mtn>=28) THEN
370 iadbuf = ipm(7,mxt(1))
371 ELSE
372 iadbuf = 1
373 ENDIF
374 CALL mmats(1 ,nel ,pm ,mxt ,hh ,
375 . mtn ,ikorth ,ipm ,igeo ,gama ,
376 . bufmat(iadbuf) ,dm ,dgm ,gm ,
377 . jhbe ,gbuf%SIG ,bid ,nnpt ,nel )
379 1 hh, hh1, fac, icpg,
380 2 ipredu, nel, mtn, ismstr,
381 3 jhbe)
382
383 DO i=1,nel
384 offg(i) = gbuf%OFF(i)
385 ENDDO
386
387 DO ep=1,nel
388 DO j=1,2
389 DO i=1,2
390 k11(i,j,ep)=zero
391 k12(i,j,ep)=zero
392 k13(i,j,ep)=zero
393 k14(i,j,ep)=zero
394 k22(i,j,ep)=zero
395 k23(i,j,ep)=zero
396 k24(i,j,ep)=zero
397 k33(i,j,ep)=zero
398 k34(i,j,ep)=zero
399 k44(i,j,ep)=zero
400 k11u(i,j,ep)=zero
401 k12u(i,j,ep)=zero
402 k13u(i,j,ep)=zero
403 k14u(i,j,ep)=zero
404 k22u(i,j,ep)=zero
405 k23u(i,j,ep)=zero
406 k24u(i,j,ep)=zero
407 k33u(i,j,ep)=zero
408 k34u(i,j,ep)=zero
409 k44u(i,j,ep)=zero
410 k11l(i,j,ep)=zero
411 k12l(i,j,ep)=zero
412 k13l(i,j,ep)=zero
413 k14l(i,j,ep)=zero
414 k22l(i,j,ep)=zero
415 k23l(i,j,ep)=zero
416 k24l(i,j,ep)=zero
417 k33l(i,j,ep)=zero
418 k34l(i,j,ep)=zero
419 k44l(i,j,ep)=zero
420 ENDDO
421 ENDDO
422 ENDDO
423
424
425 it = 1
426 DO 100 ir=1,nptr
427 DO 200 is=1,npts
428 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
429
430
431 ip = ir + (is-1)*nptr
432 ksi = a_gauss(ir,nptr)
433 eta = a_gauss(is,npts)
434 wi = w_gauss(ir,nptr)*w_gauss(is,npts)
435
436
438 1 offg, off, ksi, eta,
439 2 wi, yavg, y12, y34,
440 3 y13, y24, y14, y23,
441 4 z12, z34, z13, z24,
442 5 z14, z23, py1, py2,
443 6 py3, py4, pz1, pz2,
444 7 pz3, pz4, pyc1, pyc2,
445 8 pzc1, pzc2, byz1, byz2,
446 9 byz3, byz4, bzy1, bzy2,
447 a bzy3, bzy4, airn, voln,
448 b nuu, nel, jhbe)
449
450
452 1 pm, mxt, hh1, voln,
453 2 icsig, dd, gg, dg,
454 3 g33, dm, gm, dgm,
455 4 ikorth, lbuf%SIG,ir, is,
456 5 it, nel, jhbe, mtn)
457
459 1 py1, py2, py3, py4,
460 2 pz1, pz2, pz3, pz4,
461 3 pyc1, pyc2, pzc1, pzc2,
462 4 ay, r22, r23, k11,
463 5 k12, k13, k14, k22,
464 6 k23, k24, k33, k34,
465 7 k44, k11u, k12u, k13u,
466 8 k14u, k22u, k23u, k24u,
467 9 k33u, k34u, k44u, k11l,
468 a k12l, k13l, k14l, k22l,
469 b k23l, k24l, k33l, k34l,
470 c k44l, dd, gg, dg,
471 d g33, ikorth, icpg, offg,
472 e nel, jcvt)
473
474
475
476
477
478
479
480
481
482
483200 CONTINUE
484100 CONTINUE
485
486
487 IF (ipredu > 0) THEN
489 1 pyc1, pyc2, pzc1, pzc2,
490 2 ay, r22, r23, k11,
491 3 k12, k13, k14, k22,
492 4 k23, k24, k33, k34,
493 5 k44, hh, volu, fac,
494 6 icpg, offg, nel, jcvt)
495 ENDIF
496
497
498 IF (ikgeo/=0) THEN
500 1 pyc1, pyc2, pzc1, pzc2,
501 2 ay, k11, k12, k13,
502 3 k14, k22, k23, k24,
503 4 k33, k34, k44, gbuf%SIG,
504 5 volu, offg, nel)
505 ENDIF
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520 IF (jcvt/=0) THEN
522 1 r22, r32, r23, r33,
523 2 k11, k12, k13, k14,
524 3 k22, k23, k24, k33,
525 4 k34, k44, nel)
526 ENDIF
527
528
529
530
531
533 1 ixq(1,nf1),nel ,iddl ,ndof ,k_diag,
534 2 k_lt ,iadk ,jdik ,k11 ,k12 ,
535 3 k13 ,k14 ,k22 ,k23 ,k24 ,
536 4 k33 ,k34 ,k44 ,offg )
537
538 RETURN
subroutine assem_q4(ixq, nel, iddl, ndof, k_diag, k_lt, iadk, jdik, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, off)
subroutine mmat_h1(hh, hh1, fac, icp, ipredu, nel, mtn, ismstr, jhbe)
subroutine mmats(jft, jlt, pm, mat, hh, mtn, iorth, ipm, igeo, gama, uparam, cc, cg, g33, jhbe, sig, eps, nppt, nel)
subroutine mmstifs(pm, mat, hh, vol, icsig, dd, gg, dg, g33, dm, gm, dgm, iorth, sig, ir, is, it, nel, jhbe, mtn)
subroutine q4deric2(y1, y2, y3, y4, z1, z2, z3, z4, y12, y34, y13, y24, y14, y23, z12, z34, z13, z24, z14, z23, pyc1, pyc2, pzc1, pzc2, aire, volu, yavg, rx, ry, rz, sx, sy, sz, nel, jhbe)
subroutine q4kega2(py1, py2, pz1, pz2, ay, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, sig, air, off, nel)
subroutine q4kel2(py1, py2, py3, py4, pz1, pz2, pz3, pz4, pyc1, pyc2, pzc1, pzc2, ay, r22, r23, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, k11u, k12u, k13u, k14u, k22u, k23u, k24u, k33u, k34u, k44u, k11l, k12l, k13l, k14l, k22l, k23l, k24l, k33l, k34l, k44l, dd, gg, dg, g33, iksup, icp, off, nel, jcvt)
subroutine q4kep2(py1, py2, pz1, pz2, ay, r22, r23, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, hh, air, fac, icp, off, nel, jcvt)
subroutine q4kerot2(r22, r32, r23, r33, k11, k12, k13, k14, k22, k23, k24, k33, k34, k44, nel)
subroutine qvolu2(off, aire, volu, ngl, y1, y2, y3, y4, z1, z2, z3, z4, y234, y124, nel, jmult, jcvt)
subroutine s8zsigp3(lft, llt, sig, e0, defp, fac, g_pla, nel)
subroutine q4deri2(vol, ksi, eta, wi, y12, y34, y13, y24, y14, y23, z12, z34, z13, z24, z14, z23, y1, y2, y3, y4, yavg, ihbe, ngl)
subroutine qcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, sy, sz, ty, tz)
subroutine qrcoor2(x, ixq, ngl, mxt, pid, ix1, ix2, ix3, ix4, y1, y2, y3, y4, z1, z2, z3, z4, sy, sz, ty, tz, e1y, e1z, e2y, e2z)