70
71
72
73 USE elbufdef_mod
78 USE matparam_def_mod
80 use glob_therm_mod
81 use element_mod , only : nixs
82
83
84
85#include "implicit_f.inc"
86
87
88
89#include "mvsiz_p.inc"
90
91
92
93#include "com01_c.inc"
94#include "com04_c.inc"
95#include "param_c.inc"
96#include "scr03_c.inc"
97#include "scr12_c.inc"
98#include "scr17_c.inc"
99#include "scry_c.inc"
100#include "vect01_c.inc"
101#include "sphcom.inc"
102
103
104
105 INTEGER IXS(NIXS,*), IPARG(*),IPARTS(*),
106 . NEL, IPART(LIPART1,*),IPM(NPROPMI,*), PTSOL(*),
107 . NSIGI, IUSER, NSIGS, NPF(*),
108 . KXSP(NISP,*), IPARTSP(*), NOD2SP(*), SOL2SPH(2,*), IRST(3,*)
109 INTEGER IGEO(NPROPGI,*),STRSGLOB(*),STRAGLOB(*),FAIL_INI(*),PERTURB(NPERTURB)
111 . mas(*),pm(npropm,*), x(*), geo(npropg,*),
112 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
113 . partsav(20,*), v(*), mss(8,*),
114 . sigsp(nsigi,*),msnf(*), mssf(8,*), wma(*),
115 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*),
116 . mcp(*), mcps(8,*),temp(*), tf(*),xrefs(8,3,*), mssa(*),
117 . spbuf(nspbuf,*),rnoise(nperturb,*)
118 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
119 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
120 my_real,
INTENT(IN) :: facload(lfacload,*)
121 TYPE(DETONATORS_STRUCT_)::DETONATORS
122 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
123 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
124 type (glob_therm_) ,intent(in) :: glob_therm
125
126
127
128 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ)
129 INTEGER IX1(MVSIZ), IX2(), IX3(MVSIZ), IX4(MVSIZ),
130 . IX5(MVSIZ), IX6(MVSIZ), IX7(MVSIZ), IX8(MVSIZ)
131 INTEGER NF1, I, , IGTYP,IPID1,NCC,IDEF,NREFSTA,
132 . IP,IR, IS, IT,JHBE,IREP,MPT,,NPTR,NPTS,NPTT,NUVAR,
133 . L_PLA,L_SIGB,NSPHDIR, NCELF, NCELL,IBOLTP,NNPT
134 CHARACTER(LEN=NCHARTITLE)::TITR1
136 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
137 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
138 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
139 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
140 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
141 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
142 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
143 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
144 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
145 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz) ,
146 . ajc1(mvsiz) , ajc2(mvsiz) , ajc3(mvsiz) ,
147 . ajc4(mvsiz) , ajc5(mvsiz) , ajc6(mvsiz) ,
148 . ajc7(mvsiz) , ajc8(mvsiz) , ajc9(mvsiz) ,
149 . hx(4,mvsiz) , hy(4,mvsiz), hz(4,mvsiz),
150 . smax(mvsiz) , volu(mvsiz), dtx(mvsiz), deltax(mvsiz),
151 . pxc1(mvsiz),pxc2(mvsiz),pxc3(mvsiz),pxc4(mvsiz),
152 . pyc1(mvsiz),pyc2(mvsiz),pyc3(mvsiz),pyc4(mvsiz),
153 . pzc1(mvsiz),pzc2(mvsiz),pzc3(mvsiz),pzc4(mvsiz),
154 . rhocp(mvsiz),temp0(mvsiz),aire(mvsiz),nu(mvsiz)
156 . bid(mvsiz), fv, sti, wi
157 INTEGER NLYMAX, IPANG, IPMAT
158 INTEGER LLPIJ
159 parameter(nlymax = 200,ipmat = 100,ipang = 200)
161 . ajp1(mvsiz,8) , ajp2(mvsiz,8) , ajp3(mvsiz,8) ,
162 . ajp4(mvsiz,8) , ajp5(mvsiz,8) , ajp6(mvsiz,8) ,
163 . ajp7(mvsiz,8) , ajp8(mvsiz,8) , ajp9(mvsiz,8) ,
164 . dtx0(mvsiz),wt,zr,zs,zt
165 DOUBLE PRECISION
166 . XD1(MVSIZ), XD2(MVSIZ), XD3(MVSIZ), XD4(MVSIZ),
167 . XD5(MVSIZ), XD6(MVSIZ), XD7(MVSIZ), XD8(MVSIZ),
168 . YD1(MVSIZ), YD2(MVSIZ), YD3(MVSIZ), YD4(MVSIZ),
169 . YD5(MVSIZ), YD6(MVSIZ), YD7(MVSIZ), YD8(MVSIZ),
170 . ZD1(MVSIZ), ZD2(MVSIZ), ZD3(MVSIZ), ZD4(MVSIZ),
171 . ZD5(MVSIZ), ZD6(MVSIZ), ZD7(MVSIZ), ZD8(MVSIZ)
173
174 TYPE(L_BUFEL_) ,POINTER :: LBUF
175 TYPE(G_BUFEL_) ,POINTER :: GBUF
176 TYPE() ,POINTER :: MBUF
177
179 . w_gauss(9,9),a_gauss(9,9)
180 DATA w_gauss /
181
182 1 2.d0 ,0.d0 ,0.d0 ,
183 1 0.d0 ,0.d0 ,0.d0 ,
184 1 0.d0 ,0.d0 ,0.d0 ,
185 2 1.d0 ,1.d0 ,0.d0 ,
186 2 0.d0 ,0.d0 ,0.d0 ,
187 2 0.d0 ,0.d0 ,0.d0 ,
188 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
189 3 0.d0 ,0.d0 ,0.d0 ,
190 3 0.d0 ,0.d0 ,0.d0 ,
191 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
192 4 0.347854845137454d0,0.d0 ,0.d0 ,
193 4 0.d0 ,0.d0 ,0.d0 ,
194 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0,
195 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
196 5 0.d0 ,0.d0 ,0.d0 ,
197 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
198 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
199 6 0.d0 ,0.d0 ,0.d0 ,
200 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
201 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
202 7 0.129484966168870d0,0.d0 ,0.d0 ,
203 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
204 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
205 8 0.222381034453374d0,0.101228536290376d0,0.d0 ,
206 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
207 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
208 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
209
210 DATA a_gauss /
211 1 0.d0 ,0.d0 ,0.d0 ,
212 1 0.d0 ,0.d0 ,0.d0 ,
213 1 0.d0 ,0.d0 ,0.d0 ,
214 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
215 2 0.d0 ,0.d0 ,0.d0 ,
216 2 0.d0 ,0.d0 ,0.d0
217 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
218 3 0.d0 ,0.d0 ,0.d0 ,
219 3 0.d0 ,0.d0 ,0.d0 ,
220 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
221 4 0.861136311594053d0,0.d0 ,0.d0 ,
222 4 0.d0 ,0.d0 ,0.d0 ,
223 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
224 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
225 5 0.d0 ,0.d0 ,0.d0 ,
226 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0,
227 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
228 6 0.d0 ,0.d0 ,0.d0 ,
229 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
230 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
231 7 0.949107912342759d0,0.d0 ,0.d0 ,
232 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
233 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
234 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
235 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
236 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
237 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
238
239
240
241
242 dtx(1:mvsiz) = zero
243 dtx0(1:mvsiz) = zero
244 il = 1
245 gbuf => elbuf_str%GBUF
246 mbuf => elbuf_str%BUFLY(il)%MAT(1,1,1)
247 lbuf => elbuf_str%BUFLY(il)%LBUF(1,1,1)
248 nptr = elbuf_str%NPTR
249 npts = elbuf_str%NPTS
250 nptt = elbuf_str%NPTT
251
252 bid(:) = zero
253 nrefsta = nxref
254 nxref = 0
255 mpt =iabs(npt)
256 DO i=lft,llt
257 deltax(i)=ep30
258 ENDDO
259 jhbe = iparg(23)
260 IF (jhbe == 17) mpt = 222
261 irep = iparg(35)
262 igtyp = iparg(38)
263 IF (jhbe == 17) jcvt=iparg(37)
264
265 IF (jcvt==1.AND.isorth/=0) jcvt=2
266
267 nf1=nft+1
268 idef =0
269
270 iboltp = iparg(72)
271
272 DO i=lft,llt
273 rhocp(i) = pm(69,ixs(1,nft+i))
274 temp0(i) = pm(79,ixs(1,nft+i))
275 ENDDO
276
277
278 IF (ismstr==10.OR.ismstr==12) THEN
279
280 CALL scoor3(x ,bid(1) ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
281 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
282 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
283 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
284 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
285 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
286 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
287 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0, temp,glob_therm%NINTEMP,
288 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
289 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
290 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
291 IF (nsigi > 0 ) THEN
293 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
294 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
295 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
296 END IF
298 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
299 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
300 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 ,
301 . ajc1 ,ajc2 ,ajc3 ,
302 . ajc4 ,ajc5 ,ajc6 ,
303 . ajc7 ,ajc8 ,ajc9 ,
304 . hx, hy, hz,
305 . gbuf%JAC_I)
306 llpij = elbuf_str%BUFLY(il)%L_PIJ
307 IF (llpij<=24) THEN
308 DO ir=1,nptr
309 DO is=1,npts
310 DO it=1,nptt
311
312 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
313
314 zr = a_gauss(ir,nptr)
315 zs = a_gauss(is,npts)
316 zt = a_gauss(it,nptt)
317 wt = w_gauss(it,nptt)
318 ip = ir + ( (is-1) + (it-1)*npts )*nptr
319 wi = w_gauss(ir,nptr)*w_gauss(is,npts)*wt
320
321
323 . zr,zs,zt,wi,
324 . hx, hy, hz,
325 . ajc1,ajc2,ajc3,
326 . ajc4,ajc5,ajc6,
327 . ajc7,ajc8,ajc9,lbuf%JAC_I,llpij,lbuf%PIJ,llt)
328
329 ENDDO
330 ENDDO
331 ENDDO
332
333
334 ELSE
335
336 CALL srcoor3(x,bid(1),ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
337 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
338 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
339 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
340 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
341 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
342 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
343 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp,glob_therm%NINTEMP,
344 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
345 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
346 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
348 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
349 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
350 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 ,
351 . ajc1 ,ajc2 ,ajc3 ,
352 . ajc4 ,ajc5 ,ajc6 ,
353 . ajc7 ,ajc8 ,ajc9 ,
354 . hx, hy, hz,
355 . pxc1, pxc2, pxc3, pxc4,
356 . pyc1, pyc2, pyc3, pyc4,
357 . pzc1, pzc2, pzc3, pzc4)
358
359 DO ir=1,nptr
360 DO is=1,npts
361 DO it=1,nptt
362
363 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
364
365 zr = a_gauss(ir,nptr)
366 zs = a_gauss(is,npts)
367 zt = a_gauss(it,nptt)
368 wt = w_gauss(it,nptt)
369 ip = ir + ( (is-1) + (it-1)*npts )*nptr
370 wi = w_gauss(ir,nptr)*w_gauss(is,npts)*wt
371
373 . zr,zs,zt,wi,
374 . hx, hy, hz,
375 . ajc1,ajc2,ajc3,
376 . ajc4,ajc5,ajc6,
377 . ajc7,ajc8,ajc9,lbuf%JAC_I,llpij,lbuf%PIJ,llt)
378
379 ENDDO
380 ENDDO
381 ENDDO
382
383 nnpt = 8
384 DO i=lft,llt
385 nu(i)=
min(half,pm(21,mat(i)))
386 ENDDO
387 CALL s8e_pij(nptr,npts,nptt,nnpt,llt,
388 . pxc1, pxc2, pxc3, pxc4,
389 . pyc1, pyc2, pyc3, pyc4,
390 . pzc1, pzc2, pzc3, pzc4,
391 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
392 . nu ,elbuf_str)
393 END IF
394 END IF
395 IF (jcvt == 0) THEN
396 CALL scoor3(x ,bid(1),ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
397 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
398 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
399 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
400 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
401 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
402 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
403 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0, temp,glob_therm%NINTEMP,
404 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
405 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
406 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
407 ELSE
408 CALL srcoor3(x,bid(1),ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
409 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
410 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
411 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
412 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
413 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
414 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
415 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp,glob_therm%NINTEMP,
416 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
417 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
418 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
419 ENDIF
420
421
422
423
424 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
425 DO i=1,nel
426 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
427 . + temp(ixs(4,i)) + temp(ixs(5,i))
428 . + temp(ixs(6,i)) + temp(ixs(7,i))
429 . + temp(ixs(8,i)) + temp(ixs(9,i)))
430 ENDDO
431 ELSE
432 tempel(1:nel) = temp0(1:nel)
433 END IF
434
435 IF (igtyp == 6) THEN
436 CALL smorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
437 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
438 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
439 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,nsigi,sigsp,nsigs,
440 . sigi ,ixs ,x ,jhbe ,ptsol,nel ,iparg(28))
441 ENDIF
443 . ajc1,ajc2,ajc3,
444 . ajc4,ajc5,ajc6,
445 . ajc7,ajc8,ajc9,smax, volu, ngl,
446 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
447 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
448 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
449
450 ip=8
451 DO ir=1,nptr
452 DO is=1,npts
453 DO it=1,nptt
454 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,it)
455 mbuf => elbuf_str%BUFLY(1)%MAT(ir,is,it)
456 CALL matini(pm ,ixs ,nixs ,x ,
457 . geo ,ale_connectivity ,detonators ,iparg ,
458 . sigi ,nel ,skew ,igeo ,
459 . ipart ,iparts ,
460 . mat ,ipm ,nsigs ,numsol ,ptsol ,
461 . ip ,ngl ,npf ,tf ,bufmat ,
462 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
463 . facload, deltax ,tempel ,mat_param )
464 ENDDO
465 ENDDO
466 ENDDO
467
468 IF (iboltp /=0) THEN
469 CALL sboltini(e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
471 ENDIF
472
473
474
475 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
476
477 CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
478 IF (jhbe == 17) THEN
479
481 . hx, hy, hz,
482 . ajc1,ajc2,ajc3,
483 . ajc4,ajc5,ajc6,
484 . ajc7,ajc8,ajc9,
485 . ajp1,ajp2,ajp3,
486 . ajp4,ajp5,ajp6,
487 . ajp7,ajp8,ajp9)
488 END IF
489
490
491
492 nlay = elbuf_str%NLAY
493 nptr = elbuf_str%NPTR
494 npts = elbuf_str%NPTS
495 nptt = elbuf_str%NPTT
496
497
498 DO ir=1,nptr
499 DO is=1,npts
500 DO it=1,nptt
501
502 lbuf => elbuf_str%BUFLY(il)%LBUF(ir,is,it)
503 mbuf => elbuf_str%BUFLY(il)%MAT(ir,is,it)
504 l_pla = elbuf_str%BUFLY(il)%L_PLA
505 l_sigb= elbuf_str%BUFLY(il)%L_SIGB
506
507 zr = a_gauss(ir,nptr)
508 zs = a_gauss(is,npts)
509 zt = a_gauss(it,nptt)
510 wt = w_gauss(it,nptt)
511 ip = ir + ( (is-1) + (it-1)*npts )*nptr
512 wi = w_gauss(ir,nptr)*w_gauss(is,npts)*wt
513
514 IF (jhbe == 17) THEN
515
516 CALL s8ederi3(lbuf%VOL,veul(1,nf1),geo,wi,
517 . ajp1(1,ip),ajp2(1,ip),ajp3(1,ip),
518 . ajp4(1,ip),ajp5(1,ip),ajp6(1,ip),
519 . ajp7(1,ip),ajp8(1,ip),ajp9(1,ip),
520 . smax, deltax, ngl,lbuf%VOL0DP)
521 ELSE
522 CALL s8zderi3(lbuf%VOL,veul(1,nf1),geo,
523 . zr,zs,zt,wi,
524 . hx, hy, hz,
525 . ajc1,ajc2,ajc3,
526 . ajc4,ajc5,ajc6,
527 . ajc7,ajc8,ajc9,smax, deltax, ngl,lbuf%VOL0DP)
528 END IF
529
530 CALL matini(pm ,ixs ,nixs ,x ,
531 . geo ,ale_connectivity ,detonators ,iparg ,
532 . sigi ,nel ,skew ,igeo ,
533 . ipart ,iparts ,
534 . mat ,ipm ,nsigs ,numsol ,ptsol ,
535 . ip ,ngl ,npf ,tf ,bufmat ,
536 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
537 . facload, deltax,tempel ,mat_param)
538
539 IF(jthe /=0)
CALL atheri(mat,pm,lbuf%TEMP)
540
541 IF(mtn>=28)THEN
542 nuvar = ipm(8,ixs(1,nft+1))
543 idef =1
544 ELSE
545 nuvar = 0
546 IF(mtn == 14 .OR. mtn == 12)THEN
547 idef =1
548 ELSEIF(mtn == 24)THEN
549 idef =1
550 ELSEIF(istrain == 1)THEN
551 IF(mtn == 1)THEN
552 idef =1
553 ELSEIF(mtn == 2)THEN
554 idef =1
555 ELSEIF(mtn == 4)THEN
556 idef =1
557 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn ==10.OR.
558 . mtn == 21.OR.mtn == 22.OR.
559 . mtn == 23.OR.mtn == 49)THEN
560 idef =1
561 ENDIF
562 ENDIF
563 ENDIF
565 . lbuf%SIG ,pm ,lbuf%VOL ,sigsp ,
566 . sigi ,lbuf%EINT,lbuf%RHO ,mbuf%VAR ,lbuf%STRA,
567 . ixs ,nixs ,nsigi ,ip ,nuvar ,
568 . nel ,iuser ,idef ,nsigs ,strsglob ,
569 . straglob ,jhbe ,igtyp ,x ,gbuf%GAMA,
570 . mat ,lbuf%PLA ,l_pla ,ptsol ,lbuf%SIGB,
571 . l_sigb ,ipm ,bufmat ,lbuf%VOL0DP)
572
574 . lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx,
575 . gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
576 . nel )
577
578
579
580
581 IF (isigi /= 0 .AND. isorth/=0) THEN
582 lbuf%SIGL = lbuf%SIG
583 ENDIF
584
585 ENDDO
586 ENDDO
587 ENDDO
588
589
590
592 . gbuf%RHO,mas,partsav,x,v,
593 . iparts(nf1),mss(1,nf1),volu ,
594 . msnf ,mssf(1,nf1) ,bid(1) ,
595 . bid(1) ,bid(1) ,wma ,rhocp ,mcp ,
596 . mcps(1,nf1) ,mssa ,bid(1) ,bid(1),gbuf%FILL,
597 . ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
598
599
600
601 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
602 . ipm,sigsp,nsigi,fail_ini ,
603 . sigi,nsigs,ixs,nixs,ptsol,rnoise,perturb,mat_param)
604
605
606
607
608
609 IF(i7stifs/=0)THEN
610 ncc=8
611 CALL sbulk3(volu ,ix1 ,ncc,mat,pm ,
612 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid(1),
613 3 bid(1) ,gbuf%FILL)
614 ENDIF
615
616
617
618 aire(:) = zero
619 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
620 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
621 . volu, dtx,igeo,igtyp)
622
623 DO 10 i=lft,llt
624 IF(ixs(10,i+nft)/=0.AND.invers>14) THEN
625 IF (igtyp/=0.AND.igtyp/=6.AND.igtyp/=14.AND.igtyp/=15)
626 . THEN
627 ipid1=ixs(nixs-1,i+nft)
628 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
630 . msgtype=msgerror,
631 . anmode=aninfo_blind_1,
632 . i1=igeo(1,ipid1),
633 . c1=titr1,
634 . i2=igtyp)
635 ENDIF
636 ENDIF
637 dtelem(nft+i)=dtx(i)
638
639 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i) /
640 .
max(em20,dtx(i)*dtx(i))
641 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
642 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
643 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
644 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
645 stifn(ixs(6,i+nft))=stifn
646 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
647 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
648 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti
649 10 CONTINUE
650
651
652
653 IF(nsphsol/=0)THEN
654 DO i=lft,llt
655 IF(sol2sph(1,nft+i) < sol2sph(2,nft+i))THEN
656
657 nsphdir=igeo(37,ixs(10,nft+i))
658 ncelf =sol2sph(1,nft+i)+1
659 ncell =sol2sph(2,nft+i)-sol2sph(1,nft+i)
661 . nsphdir ,gbuf%RHO(i) ,ncell ,x ,spbuf(1,ncelf),
662 . ixs(1,i+nft),kxsp(1,ncelf),ipartsp(ncelf),
663 . irst(1,ncelf-first_sphsol+1))
664 END IF
665 ENDDO
666 END IF
667 nxref = nrefsta
668
669 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, mat_param)
integer, dimension(:), allocatable iflag_bpreload
integer, parameter nchartitle
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 s8erefcoor3(sav, npe, nel, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8)
subroutine sboltini(e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, bpreld, nel, ix, nix, vpreload, iflag_bpreload)
subroutine sbulk3(volu, nc, nnc, mat, pm, volnod, bvolnod, vns, bns, vnsx, bnsx, fill)
subroutine sczero3(rhog, sigg, eintg, nel)
subroutine svalue0(rho, vol, off, sig, eint, dtx, rhog, volg, offg, sigg, eintg, dtxg, nel)
subroutine smass3(rho, ms, partsav, x, v, ipart, mss, volu, msnf, mssf, in, vr, ins, wma, rhocp, mcp, mcps, mssa, rhof, frac, fill, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8)
subroutine smorth3(pid, geo, igeo, skew, irep, gama, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f1x, f1y, f1z, f2x, f2y, f2z, nsigi, sigsp, nsigs, sigi, ixs, x, jhbe, pt, nel, isolnod)
subroutine s8zpij_ic(xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, jac1, jac2, jac3, jac4, jac5, jac6, jac7, jac8, jac9, hx, hy, hz, pxc1, pxc2, pxc3, pxc4, pyc1, pyc2, pyc3, pyc4, pzc1, pzc2, pzc3, pzc4)
subroutine s8ederi3(vol, veul, geo, wi, jacp1, jacp2, jacp3, jacp4, jacp5, jacp6, jacp7, jacp8, jacp9, smax, deltax, ngl, voldp)
subroutine s8zderi3(vol, veul, geo, ksi, eta, zeta, wi, hx, hy, hz, cj1, cj2, cj3, cj4, cj5, cj6, cj7, cj8, cj9, smax, deltax, ngl, voldp)
subroutine s8ejacip3(hx, hy, hz, cj1, cj2, cj3, cj4, cj5, cj6, cj7, cj8, cj9, jac1, jac2, jac3, jac4, jac5, jac6, jac7, jac8, jac9)
subroutine s8zderic3(vol, hx, hy, hz, jac1, jac2, jac3, jac4, jac5, jac6, jac7, jac8, jac9, smax, det, ngl, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8)
subroutine s8zjac_ic(xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, jac1, jac2, jac3, jac4, jac5, jac6, jac7, jac8, jac9, hx, hy, hz, jac_i)
subroutine s8zjac_i3(ksi, eta, zeta, wi, hx, hy, hz, cj1, cj2, cj3, cj4, cj5, cj6, cj7, cj8, cj9, jac_i, l_pij, pij, nel)
subroutine s8e_pij(nptr, npts, nptt, nnpt, nel, pxc1, pxc2, pxc3, pxc4, pyc1, pyc2, pyc3, pyc4, pzc1, pzc2, pzc3, pzc4, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, nu, elbuf_str)
subroutine scoor3(x, xrefs, ixs, geo, mxt, ngeo, ngl, ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f1x, f1y, f1z, f2x, f2y, f2z, temp0, temp, nintemp, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8)
subroutine srcoor3(x, xrefs, ixs, geo, mxt, ngeo, ngl, jhbe, ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f1x, f1y, f1z, f2x, f2y, f2z, temp0, temp, nintemp, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8)
subroutine soltosphv8(nsphdir, rho, ncell, x, spbuf, ixs, kxsp, ipartsp, irst)
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)