49
50
51
52 USE elbufdef_mod
57
58
59
60#include "implicit_f.inc"
61
62
63
64#include "mvsiz_p.inc"
65
66
67
68#include "com04_c.inc"
69#include "param_c.inc"
70#include "scr12_c.inc"
71#include "scr17_c.inc"
72#include "scry_c.inc"
73#include "vect01_c.inc"
74#include "ige3d_c.inc"
75
76
77
78 INTEGER IXIG3D(*), IPARG(*),
79 . NEL, IPART(LIPART1,*),
80 . IGEO(NPROPGI,*), (NPROPMI,*), PTSOL(*), NSIGI, NSIGS,
81 . NPF(*),FAIL_INI(*),KXIG3D(NIXIG3D,*),NCTRL,NCTRLMAX,
82 . IPARTIG3D(*),PX,PY,PZ
84 . ms(*), x(3,*), geo(npropg,*),pm(npropm,*),
85 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
86 . partsav(20,*), v(3,*), mss(8,*), knotlocpc(deg_max,3,*),
87 . knotlocel(2,3,*), sigsp(nsigi,*) , in(*), vr(3,*),
88 . vnige(nctrlmax,*), bnige(nctrlmax,*),bufmat(*), tf(*),
89 . msig3d(numelig3d,nctrlmax),knot(*),wige(*)
90 TYPE(ELBUF_STRUCT_), TARGET ::
91 TYPE(DETONATORS_STRUCT_)::DETONATORS
92 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
93
94
95
96 INTEGER I,J,K,N,NF1,IBID,JHBE,IGTYP,IREP,NCC,NUVAR,IP,NREFSTA,
97 . IPID,NPTR,NPTS,NPTT,NLAY,ITEL
98 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(),
99 . (MVSIZ) ,IMAT(MVSIZ) ,IAD_KNOT,
100 . EL_ID(MVSIZ),N1,N2,N3,NKNOT1,NKNOT2,NKNOT3,
101 . IDX(MVSIZ),IDY(MVSIZ),IDZ(MVSIZ),
102 . IDX2(MVSIZ),IDY2(MVSIZ),IDZ2(MVSIZ)
103 CHARACTER(LEN=NCHARTITLE)::TITR1
105 . bid, fv, v8loc(51,mvsiz), volu(mvsiz), dtx(mvsiz),dtx0(mvsiz),
106 . mass(nctrl,nel),inn(mvsiz,8),xx(nctrl,mvsiz),
107 . yy(nctrl,mvsiz),zz(nctrl,mvsiz),ww(nctrl,mvsiz),
108 . vx(nctrl,mvsiz),vy(nctrl,mvsiz), vz(nctrl,mvsiz),vrx(mvsiz,8),
109 . vry(mvsiz,8),vrz(mvsiz,8),sti(mvsiz),stir(mvsiz),viscm(mvsiz),
110 . viscr(mvsiz),
111 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
112 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
113 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
114 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
115 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
116 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
117 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
118 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
119 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
120 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz),
121 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
122 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
123 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
124 . kx ,ky ,kz, zr, zs, zt
125
127 . volo(mvsiz),dte(mvsiz),pgauss,detjac
129 . r(nctrl),drdxi(3,nctrl),knotlocx(px+1,nctrl,mvsiz),
130 . knotlocy(py+1,nctrl,mvsiz),knotlocz(pz+1,nctrl,mvsiz),
131 . knotlocelx(2,mvsiz),
132 . knotlocely(2,mvsiz),knotlocelz(2,mvsiz)
134 . tbid(mvsiz), tbid2(8,mvsiz)
135
136 TYPE(G_BUFEL_) ,POINTER :: GBUF
137 TYPE(L_BUFEL_) ,POINTER :: LBUF
138 TYPE(BUF_MAT_) ,POINTER :: MBUF
139
140 double precision
141 . w_gauss(9,9),a_gauss(9,9)
142 DATA w_gauss /
143 1 2.d0 ,0.d0 ,0.d0 ,
144 1 0.d0 ,0.d0 ,0.d0 ,
145 1 0.d0 ,0.d0 ,0.d0 ,
146 2 1.d0 ,1.d0 ,0.d0 ,
147 2 0.d0 ,0.d0 ,0.d0 ,
148 2 0.d0 ,0.d0 ,0.d0 ,
149 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
150 3 0.d0 ,0.d0 ,0.d0 ,
151 3 0.d0 ,0.d0 ,0.d0 ,
152 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
153 4 0.347854845137454d0,0.d0 ,0.d0 ,
154 4 0.d0 ,0.d0 ,0.d0 ,
155 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0,
156 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
157 5 0.d0 ,0.d0 ,0.d0 ,
158 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
159 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
160 6 0.d0 ,0.d0 ,0.d0 ,
161 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
162 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
163 7 0.129484966168870d0,0.d0 ,0.d0 ,
164 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
165 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
166 8 0.222381034453374d0,0.101228536290376d0,0.d0 ,
167 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
168 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
169 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
170 DATA a_gauss /
171 1 0.d0
172 1 0.d0 ,0.d0 ,0.d0 ,
173 1 0.d0 ,0.d0 ,0.d0 ,
174 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
175 2 0.d0 ,0.d0 ,0.d0 ,
176 2 0.d0 ,0.d0 ,0.d0 ,
177 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
178 3 0.d0 ,0.d0 ,0.d0 ,
179 3 0.d0 ,0.d0 ,0.d0 ,
180 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
181 4 0.861136311594053d0,0.d0 ,0.d0 ,
182 4 0.d0 ,0.d0 ,0.d0 ,
183 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
184 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
185 5 0.d0 ,0.d0 ,0.d0 ,
186 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0,
187 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
188 6 0.d0 ,0.d0 ,0.d0 ,
189 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
190 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
191 7 0.949107912342759d0,0.d0 ,0.d0 ,
192 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
193 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
194 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
195 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
196 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
197 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
198
199
200
201
202
203 gbuf => elbuf_str%GBUF
204 bid = zero
205 ibid = 0
206 igtyp = iparg(38)
207 mass = zero
208 knotlocx = zero
209 knotlocy = zero
210 knotlocz = zero
211 knotlocelx = zero
212 knotlocely = zero
213 knotlocelz = zero
214 DO i=lft,llt
215 tbid(i)=zero
216 DO j=1,nctrl
217 mass(j,i) = zero
218 ENDDO
219 DO j=1,8
220 tbid2(j,i)=zero
221 ENDDO
222 ENDDO
223
224 nf1=nft+1
225
226 DO i=lft,llt
227 DO j=1,nctrl
228 xx(j,i)=x(1,ixig3d(kxig3d(4,i+nft)+j-1))
229 yy(j,i)=x(2,ixig3d(kxig3d(4,i+nft)+j-1))
230 zz(j,i)=x(3,ixig3d(kxig3d(4,i+nft)+j-1))
231 vx(j,i)=v(1,ixig3d(kxig3d(4,i+nft)+j-1))
232 vy(j,i)=v(2,ixig3d(kxig3d(4,i+nft)+j-1))
233 vz(j,i)=v(3,ixig3d(kxig3d(4,i+nft)+j-1))
234 ww(j,i)=1
235 DO k=1,px+1
236 knotlocx(k,j,i)=knotlocpc(k,1,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
237 ENDDO
238 DO k=1,py+1
239 knotlocy(k,j,i)=knotlocpc(k,2,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
240 ENDDO
241 DO k=1,pz+1
242 knotlocz(k,j,i)=knotlocpc(k,3,(kxig3d(2,i+nft)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
243 ENDDO
244 ENDDO
245 el_id(i)=kxig3d(5,i+nft)
246 idx(i) = kxig3d(6,i+nft)
247 idy(i) = kxig3d(7,i+nft)
248 idz(i) = kxig3d(8,i+nft)
249 idx2(i) = kxig3d(9,i+nft)
250 idy2(i) = kxig3d(10,i+nft)
251 idz2(i)
252 knotlocelx(1,i) = knotlocel(1,1,i+nft)
253 knotlocely(1,i) = knotlocel(1,2,i+nft)
254 knotlocelz(1,i) = knotlocel(1,3,i+nft)
255 knotlocelx(2,i) = knotlocel(2,1,i+nft)
256 knotlocely(2,i) = knotlocel(2,2,i+nft)
257 knotlocelz(2,i) = knotlocel(2,3,i+nft)
258 ENDDO
259 ipid = iparg(62)
260 iad_knot = igeo(40,ipid)
261 n1 = igeo(44,ipid)
262 n2 = igeo(45,ipid)
263 n3 = igeo(46,ipid)
264 nknot1 = n1+px
265 nknot2 = n2+py
266 nknot3 = n3+pz
267
268 DO i=lft,llt
269 iprop(i)=kxig3d(2,i+nft)
270 imat(i) =kxig3d(1,i+nft)
271 ENDDO
272
273
274
275 IF(igtyp == 47) THEN
276
277 DO itel=lft,llt
278 gbuf%VOL(itel)=zero
279 ENDDO
280
281 CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
282
283 n=0
284
285 DO i=1,px
286 DO j=1,py
287 DO k=1,pz
288
289 lbuf => elbuf_str%BUFLY(1)%LBUF(i,j,k)
290 mbuf => elbuf_str%BUFLY(1)%MAT(i,j,k)
291 n=n+1
292
293 DO itel=lft,llt
294
295 lbuf%RHO(itel) = pm(89,imat(itel))
296 zr = a_gauss(i,px)
297 zs = a_gauss(j,py)
298 zt = a_gauss(k,pz)
299 pgauss=w_gauss(i,px)*w_gauss
300
301
302
303
304
305
306
307
308
310 1 itel ,n ,xx(:,itel) ,yy(:,itel),
311 2 zz(:,itel),ww(:,itel) ,idx(itel) ,idy(itel) ,
312 3 idz(itel) ,knotlocx(:,:,itel) ,knotlocy(:,:,itel),knotlocz(:,:,itel) ,
313 4 drdxi ,r ,detjac ,nctrl ,
314 5 zr ,zs
315 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
316 7 py-1 ,pz-1 ,1 ,
317 8 idx2(itel),idy2(itel) ,idz2(itel) ,
318 9 knotlocelx(:,itel),knotlocely(:,itel),knotlocelz(:,itel))
319
320 lbuf%VOL(itel)= pgauss*detjac
321
322 IF (px*py*pz/=1) THEN
323 gbuf%VOL(itel)=gbuf%VOL(itel) + lbuf%VOL(itel)
324 ENDIF
325
326
327
328
329
331 1 lbuf%RHO,ms ,partsav ,xx ,yy ,
332 2 zz ,vx ,vy ,vz ,ipartig3d(nf1),
333 3 msig3d ,lbuf%VOL,tbid ,tbid2 ,bid ,
334 4 bid ,bid ,tbid ,tbid ,tbid ,
335 5 tbid2 ,tbid ,bid ,bid ,nctrl ,
336 6 kxig3d ,ixig3d ,r ,detjac ,pgauss ,
337 7 itel)
338
339 ENDDO
340
341 CALL matini(pm ,ixig3d ,sixig3d ,x ,
342 1
343 2 sigi ,nel ,skew ,igeo ,
344 3 ipart ,ipartig3d ,
345 4 imat ,ipm ,nsigs ,numsol ,ptsol ,
346 5 ibid ,ngl ,npf ,tf ,bufmat ,
347 6 gbuf ,lbuf ,mbuf ,elbuf_str,ibid ,
348 7 tbid ,tbid ,tbid )
349
350
351
352
353 CALL dtmain(geo ,pm ,ipm ,iprop ,imat ,fv ,
354 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat,
355 . tbid ,tbid ,tbid ,tbid ,igeo ,igtyp)
356
357 ENDDO
358 ENDDO
359 ENDDO
360
361 IF (px*py*pz/=1) THEN
362
363 DO i=1,px
364 DO j=1,py
365 DO k=1,pz
366
367 lbuf => elbuf_str%BUFLY(1)%LBUF(i,j,k)
368
370 1 lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx ,
371 2 gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
372 3 nel )
373
374 ENDDO
375 ENDDO
376 ENDDO
377 ENDIF
378
379
380
381
382
383 IF(i7stifs/=0)THEN
384 CALL bulkige3(gbuf%VOL ,nctrl ,imat ,pm ,
385 2 vnige(1,nf1),bnige(1,nf1),px ,
386 3 py ,pz ,nctrlmax )
387 ENDIF
388
389 ENDIF
390
391
392
393 RETURN
subroutine bulkige3(volu, nctrl, mat, pm, vnige, bnige, px, py, pz, nctrlmax)
subroutine dtmain(geo, pm, ipm, pid, mat, fv, eint, temp, deltax, rk, re, bufmat, ddeltax, aire, vol, dtx, igeo, igtyp)
subroutine ig3dmass3(rho, ms, partsav, x, y, z, vx, vy, vz, ipart, msig3d, volu, msnf, mssf, in, vr, ins, wma, rhocp, mcp, mcps, mssa, rhof, frac, nctrl, kxig3d, ixig3d, r, detjac, pgauss, i)
subroutine matini(pm, ix, nix, x, geo, ale_connectivity, detonators, iparg, sigi, nel, skew, igeo, ipart, ipartel, mat, ipm, nsig, nums, pt, ipt, ngl, npf, tf, bufmat, gbuf, lbuf, mbuf, elbuf_str, iloadp, facload, ddeltax, tempel)
integer, parameter nchartitle
subroutine sczero3(rhog, sigg, eintg, nel)
subroutine svalue0(rho, vol, off, sig, eint, dtx, rhog, volg, offg, sigg, eintg, dtxg, nel)
subroutine ig3donederiv(itel, n, xxi, yyi, zzi, wwi, idx, idy, idz, knotlocx, knotlocy, knotlocz, drdx, r, detjac, nctrl, gaussx, gaussy, gaussz, kx, ky, kz, px, py, pz, boolg, idx2, idy2, idz2, knotlocelx, knotlocely, knotlocelz)