59
60
61
62 USE elbufdef_mod
65 USE matparam_def_mod
68 use glob_therm_mod
69 use s20temp_mod
70
71
72
73#include "implicit_f.inc"
74
75
76
77#include "mvsiz_p.inc"
78
79
80
81#include "com04_c.inc"
82#include "param_c.inc"
83#include "scr12_c.inc"
84#include "scr17_c.inc"
85#include "scry_c.inc"
86#include "vect01_c.inc"
87
88
89
90 INTEGER IXS(NIXS,*),IPARG(*),IPARTS(*),IGEO(NPROPGI
91
92
93INTEGER NEL,NSIGI,IUSER,NSIGS
95 . mas(*), pm(npropm,*), x(*), geo(npropg,*),
96 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
97 . partsav(20,*), v(*), mss(8,*), mssx(12,*), sigsp(nsigi,*),
98 . volnod(*),bvolnod(*), vns(8,*), bns(8,*),rnoise(nperturb,*),
99 . vnsx(12,*), bnsx(12,*),bufmat(*),mcp(*), mcps(8,*),mcpsx(12,*),
100 . temp(*), tf(*)
101 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
102 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
104 TYPE(DETONATORS_STRUCT_)::DETONATORS
105 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
106 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
107 type (glob_therm_) ,intent(in) :: glob_therm
108
109
110
111 INTEGER NF1, IBID, I, IGTYP, IP, NF2,NPTR,NPTS,NPTT,IR,IS,IT,
112 . NB01,NB02,NB03,NB04,NB05,NB06, NUVAR,IDEF,
113 . JHBE, IPID1,NLAY,L_PLA,L_SIGB
114 INTEGER NC(MVSIZ,20),MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
115 CHARACTER(LEN=NCHARTITLE)::TITR1
117 . bid, fv(1),
118 . mass(mvsiz),
119 . sti(mvsiz),deltax(mvsiz),deltax2(mvsiz),
120 . xx(mvsiz,20), yy(mvsiz,20), zz(mvsiz,20),
121 . vx(mvsiz,20), vy(mvsiz,20), vz(mvsiz,20),
122 . px(mvsiz,20), py(mvsiz,20), pz(mvsiz,20),
123 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
124 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
125 . tx(mvsiz),ty(mvsiz),tz(mvsiz),ul(mvsiz,20),
126 . ni(mvsiz,20),dnidr(mvsiz,20),dnids(mvsiz,20),dnidt(mvsiz,20),
127 . dtx(mvsiz), wi,rhocp(mvsiz),temp0(mvsiz), aire(mvsiz)
129 INTEGER ,PARAMETER :: NPE=20
130
131 TYPE(L_BUFEL_) ,POINTER :: LBUF
132 TYPE(G_BUFEL_) ,POINTER :: GBUF
133TYPE(BUF_MAT_) ,POINTER :: MBUF
134
136 . w_gauss(9,9),a_gauss(9,9)
137 DATA w_gauss /
138
139 1 2.d0 ,0.d0 ,0.d0 ,
140 1 0.d0 ,0.d0 ,0.d0 ,
141 1 0.d0 ,0.d0 ,0.d0 ,
142 2 1.d0 ,1.d0 ,0.d0 ,
143 2 0.d0 ,0.d0 ,0.d0 ,
144 2 0.d0 ,0.d0 ,0.d0 ,
145 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
146 3 0.d0 ,0.d0 ,0.d0 ,
147 3 0.d0 ,0.d0 ,0.d0
148 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
149 4 0.347854845137454d0,0.d0 ,0.d0 ,
150 4 0.d0 ,0.d0 ,0.d0
151 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0
152 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
153 5 0.d0 ,0.d0 ,0.d0
154 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
155 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
156 6 0.d0 ,0.d0 ,0.d0 ,
157 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
158 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
159 7 0.129484966168870d0,0.d0 ,0.d0 ,
160 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
161 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
162 8 0.222381034453374d0,0.101228536290376d0,0.d0 ,
163 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
164 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
165 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
166
167 DATA a_gauss /
168 1 0.d0 ,0.d0 ,0.d0 ,
169 1 0.d0 ,0.d0 ,0.d0 ,
170 1 0.d0 ,0.d0 ,0.d0 ,
171 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
172 2 0.d0 ,0.d0 ,0.d0 ,
173 2 0.d0 ,0.d0 ,0.d0 ,
174 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
175 3 0.d0 ,0.d0 ,0.d0 ,
176 3 0.d0 ,0.d0 ,0.d0 ,
177 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
178 4 0.861136311594053d0,0.d0 ,0.d0 ,
179 4 0.d0 ,0.d0 ,0.d0
180 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
181 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
182 5 0.d0 ,0.d0 ,0.d0 ,
183 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0
184 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
185 6 0.d0 ,0.d0 ,0.d0 ,
186 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
187 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
188 7 0.949107912342759d0,0.d0 ,0.d0 ,
189 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
190 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
191 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
192 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
193 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
194 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
195
196
197
198
199 gbuf => elbuf_str%GBUF
200 igtyp = iparg(38)
201 jhbe = iparg(23)
202 nf1 = nft+1
203 nf2 = nf1-(numels8+numels10)
204
205 DO i=lft,llt
206 rhocp(i) = pm(69,ixs(1,nft+i))
207 temp0(i) = pm(79,ixs(1,nft+i))
208 ENDDO
209
211 1 x ,v ,ixs(1,nf1),ixs20(1,nf2),xx ,
212 2 yy ,zz ,vx ,vy ,vz ,
213 3 nc ,ngl ,mat ,pid ,mass ,
214 4 dtelem(nf1),sti ,gbuf%SIG ,gbuf%EINT ,gbuf%RHO,
215 5 gbuf%QVIS ,temp0 ,temp ,nel ,glob_therm%NINTEMP)
216
217
218
219 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
220
221
222
223 nptr = elbuf_str%NPTR
224 npts = elbuf_str%NPTS
225 nptt = elbuf_str%NPTT
226 nlay = elbuf_str%NLAY
227
228 DO it=1,nptt
229 DO is=1,npts
230 DO ir=1,nptr
231
232 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,it)
233 mbuf => elbuf_str%BUFLY(1)%MAT(ir,is,it)
234 l_pla = elbuf_str%BUFLY(1)%L_PLA
235 l_sigb = elbuf_str%BUFLY(1)%L_SIGB
236 ip = ir + ( (is-1) + (it-1)*npts )*nptr
237 wi = w_gauss(ir,nptr)*w_gauss(is,npts)*w_gauss(it,nptt)
238
240 1 a_gauss(ir,nptr),a_gauss(is,npts),a_gauss(it,nptt),ni ,
241 2 dnidr ,dnids ,dnidt )
242
244 1 a_gauss(ir,nptr),a_gauss(is,npts),a_gauss(it,nptt),wi,
245 2 dnidr ,dnids ,dnidt ,rx ,ry ,rz ,
246 3 sx ,sy ,sz ,tx ,ty ,tz ,
247 4 xx ,yy ,zz ,px ,py ,pz ,
248 5 lbuf%VOL,deltax ,deltax2,ir*is*it,nptr*npts*nptt,ul ,
249 6 gbuf%VOL,lbuf%VOL0DP)
250
251 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
252 CALL s20temp(nel,numnod,mvsiz,npe, nc,ni(1,ip),temp,tempel)
253 ELSE
254 tempel(1:nel) = temp0(1:nel)
255 ENDIF
256
257 CALL matini(pm ,ixs ,nixs ,x ,
258 . geo ,ale_connectivity ,detonators,iparg ,
259 . sigi ,nel ,skew ,igeo ,
260 . ipart ,iparts ,
261 . mat ,ipm ,nsigs ,numsol ,ptsol ,
262 . ip ,ngl ,npf ,tf ,bufmat ,
263 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
264 . facload, deltax ,tempel)
265
266 aire(:) = zero
267 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
268 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
269 . gbuf%VOL, dtx , igeo,igtyp)
270
271
272
273 CALL s20msi(lbuf%RHO, mass , lbuf%VOL , dtelem(nf1), sti ,
274 . lbuf%OFF, lbuf%SIG, lbuf%EINT, dtx , nel ,
275 . gbuf%OFF, gbuf%SIG, gbuf%EINT, gbuf%RHO , wi/eight)
276
277 IF (mtn>=28)THEN
278 nuvar = ipm(8,ixs(1,nf1))
279 idef =1
280 ELSE
281 nuvar = 0
282 IF(mtn == 14 .OR. mtn == 12)THEN
283 idef =1
284 ELSEIF(mtn == 24)THEN
285 idef =1
286 ELSEIF(istrain == 1)THEN
287 IF(mtn == 1)THEN
288 idef =1
289 ELSEIF(mtn == 2)THEN
290 idef =1
291 ELSEIF(mtn == 4)THEN
292 idef =1
293 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn ==10.OR.
294 . mtn == 21.OR.mtn == 22.OR.
295 . mtn == 23.OR.mtn == 49)THEN
296 idef =1
297 ENDIF
298 ENDIF
299 ENDIF
300 CALL sigin20b(lbuf%SIG,pm ,lbuf%VOL,sigsp ,
301 . sigi ,lbuf%EINT,lbuf%RHO,mbuf%VAR ,lbuf%STRA,
302 . ixs ,nixs ,nsigi
303 . nel ,iuser ,idef ,nsigs ,strsglob ,
304 . straglob,jhbe ,igtyp ,x ,lbuf%GAMA,
305 . mat ,lbuf%PLA ,l_pla ,ptsol ,lbuf%SIGB,
306 . l_sigb ,ipm ,bufmat ,lbuf%VOL0DP)
307 ENDDO
308 ENDDO
309 ENDDO
310
311 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
312 aire(:) = zero
313 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
314 . gbuf%EINT ,gbuf%TEMP ,gbuf%DELTAX ,gbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
315 . gbuf%VOL, dtx , igeo,igtyp )
316
318 1 mass ,mas,partsav,iparts(nf1),mss(1,nf1),gbuf%VOL ,
319 2 xx ,yy ,zz ,vx ,vy ,vz ,
320 3 nc ,sti,stifn ,deltax2 ,gbuf%RHO ,dtx ,
321 4 dtelem(nf1) ,mssx(1,nf1),rhocp ,mcp ,mcps(1,nf1),
322 5 mcpsx(1,nf1),gbuf%FILL)
323
324
325
326 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
327 . ipm,sigsp,nsigi,fail_ini,
328 . sigi,nsigs,ixs,nixs,ptsol,
329 . rnoise,perturb,mat_param)
330
331
332
333
334 IF(i7stifs/=0)THEN
335 ncc=20
336 CALL sbulk3(gbuf%VOL ,nc ,ncc ,mat ,pm ,
337 2 volnod ,bvolnod,vns(1,nf1),bns(1,nf1),vnsx(1,nf1),
338 3 bnsx(1,nf1),gbuf%FILL)
339 ENDIF
340
341 DO i=lft,llt
342 IF(ixs(10,i+nft)/=0) THEN
343 IF( igtyp/=0 .AND.igtyp/=6
344 . .AND.igtyp/=14.AND.igtyp/=15)THEN
345 ipid1=ixs(nixs-1,i+nft)
346 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
348 .
349 . anmode=aninfo_blind_1,
350 . i1=igeo(1,ipid1),
351 . c1=titr1,
352 . i2=igtyp)
353 ENDIF
354 ENDIF
355 ENDDO
356
357 RETURN
subroutine atheri(mat, pm, temp)
subroutine dtmain(geo, pm, ipm, pid, mat, fv, eint, temp, deltax, rk, re, bufmat, ddeltax, aire, vol, dtx, igeo, igtyp)
subroutine failini(elbuf_str, nptr, npts, nptt, nlay, ipm, sigsp, nsigi, fail_ini, sigi, nsigs, ix, nix, pt, rnoise, perturb, mat_param)
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 s20msi(rho, mass, volu, dtelem, sti, off, sig, eint, dtx, nel, offg, sigg, eintg, rhog, wip)
subroutine s20mass3(mass, ms, partsav, ipart, mss, volg, xx, yy, zz, vx, vy, vz, nc, sti, stifn, deltax2, rho, dtx, dtelem, mssx, rhocp, mcp, mcps, mcpsx, fill)
subroutine sigin20b(sig, pm, vol, sigsp, sigi, eint, rho, uvar, eps, ix, nix, nsigi, ipt, nuvar, nel, iuser, idef, nsigs, strsglob, straglob, jhbe, igtyp, x, bufgama, mat, epsp, l_pla, pt, sigb, l_sigb, ipm, bufmat, voldp)
subroutine sbulk3(volu, nc, nnc, mat, pm, volnod, bvolnod, vns, bns, vnsx, bnsx, fill)
subroutine s20coor3(x, v, ixs, ixs20, xx, yy, zz, vx, vy, vz, nc, ngl, mxt, ngeo, mass, dtelem, sti, sigg, eintg, rhog, qg, temp0, temp, nel, nintemp)
subroutine s20deri3(ngl, off, r, s, t, w, dnidr, dnids, dnidt, dxdr, dydr, dzdr, dxds, dyds, dzds, dxdt, dydt, dzdt, xx, yy, zz, px, py, pz, vol, deltax, deltax2, ip, nip, ul, volg, voldp)
subroutine s20rst(r, s, t, ni, dnidr, dnids, dnidt)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)