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