60
61
62
63
64
65
66 USE elbufdef_mod
70 USE matparam_def_mod
71 USE defaults_mod
73 use glob_therm_mod
74 use element_mod , only : nixs
75
76
77
78#include "implicit_f.inc"
79
80
81
82#include "mvsiz_p.inc"
83
84
85
86#include "com04_c.inc"
87#include "param_c.inc"
88#include "scr12_c.inc"
89#include "scr17_c.inc"
90#include "scry_c.inc"
91#include "vect01_c.inc"
92
93
94
95 INTEGER IXS(NIXS,*), IPARG(*),IPARTS(*),
96 . NEL, IPART(LIPART1,*),PERTURB(NPERTURB),
97 . IPM(NPROPMI,*), PTSOL(*), NSIGI, IUSER, NSIGS, NPF(*)
98 INTEGER IGEO(NPROPGI,*),STRSGLOB(*),STRAGLOB(*),ORTHOGLOB(*),
99 . FAIL_INI(*)
101 . mas(*), pm(npropm,*), x(*), geo(npropg,*),
102 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
103 . partsav(20,*), v(*), mss(8,*),sigsp(nsigi,*),
104 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*),mcp(*),
105 . mcps(8,*), mcpsx(12,*),temp(*), tf(*), mssa(*),rnoise(nperturb,*)
106 TYPE(), TARGET :: ELBUF_STR
107 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
108 my_real,
INTENT(IN) :: facload(lfacload,*)
109 TYPE(DETONATORS_STRUCT_) :: DETONATORS
110 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
111 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
112 TYPE(SOLID_DEFAULTS_), INTENT(IN) :: DEFAULTS_SOLID
113 type (glob_therm_) ,intent(in) :: glob_therm
114
115
116
117 INTEGER I,NF1,IBID,IGTYP,IREP,IP,ILAY,NLAY,NUVAR,NCC,JHBE,
118 . NUVARR,IDEF,IPANG,IPTHK,IPPOS,IPMAT,IG,IM,MTN0,NLYMAX,
119 . IPID1,NPTR,NPTS,NPTT,L_PLA,L_SIGB,IMAS_DS
120 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ), MAT0(MVSIZ)
121 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ),
122 . IX5(MVSIZ), IX6(MVSIZ)
124 . x1(mvsiz), x2(mvsiz), x3(mvsiz), x4(mvsiz), x5(mvsiz), x6(mvsiz),
125 . y1(mvsiz), y2(mvsiz), y3(mvsiz), y4(mvsiz), y5(mvsiz), y6(mvsiz),
126 . z1(mvsiz), z2(mvsiz), z3(mvsiz), z4(mvsiz), z5(mvsiz), z6(mvsiz)
127 CHARACTER(LEN=NCHARTITLE)::TITR1
129 . bid, fv, sti, zi,wi
131 . v8loc(51,mvsiz),volu(mvsiz),dtx(mvsiz),vzl(mvsiz),vzq(mvsiz),
132 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
133 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
134 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),
135 . e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
136 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
137 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,llsh(mvsiz) ,
138 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz) ,rhocp(mvsiz),temp0(mvsiz), deltax(mvsiz), aire(mvsiz)
140
141 TYPE(G_BUFEL_) ,POINTER :: GBUF
142 TYPE(BUF_LAY_) ,POINTER :: BUFLY
143 TYPE(L_BUFEL_) ,POINTER :: LBUF
144 TYPE(BUF_MAT_) ,POINTER :: MBUF
145
147 . w_gauss(9,9),a_gauss(9,9),angle(mvsiz),dtx0(mvsiz)
148 DATA w_gauss /
149 1 2. ,0. ,0. ,
150 1 0. ,0. ,0. ,
151 1 0. ,0. ,0. ,
152 2 1. ,1. ,0. ,
153 2 0. ,0. ,0. ,
154 2 0. ,0. ,0. ,
155 3 0.555555555555556,0.888888888888889,0.555555555555556,
156 3 0. ,0. ,0. ,
157 3 0. ,0. ,0. ,
158 4 0.347854845137454,0.652145154862546,0.652145154862546,
159 4 0.347854845137454,0. ,0. ,
160 4 0. ,0. ,0. ,
161 5 0.236926885056189,0.478628670499366,0.568888888888889,
162 5 0.478628670499366,0.236926885056189,0. ,
163 5 0. ,0. ,0. ,
164 6 0.171324492379170,0.360761573048139,0.467913934572691,
165 6 0.467913934572691,0.360761573048139,0.171324492379170,
166 6 0. ,0. ,0. ,
167 7 0.129484966168870,0.279705391489277,0.381830050505119,
168 7 0.417959183673469,0.381830050505119,0.279705391489277,
169 7 0.129484966168870,0. ,0. ,
170 8 0.101228536290376,0.222381034453374,0.313706645877887,
171 8 0.362683783378362,0.362683783378362,0.313706645877887,
172 8 0.222381034453374,0.101228536290376,0. ,
173 9 0.081274388361574,0.180648160694857,0.260610696402935,
174 9 0.312347077040003,0.330239355001260,0.312347077040003,
175 9 0.260610696402935,0.180648160694857,0.081274388361574/
176 DATA a_gauss /
177 1 0. ,0. ,0. ,
178 1 0. ,0. ,0. ,
179 1 0. ,0. ,0. ,
180 2 -.577350269189626,0.577350269189626,0. ,
181 2 0. ,0. ,0. ,
182 2 0. ,0. ,0. ,
183 3 -.774596669241483,0. ,0.774596669241483,
184 3 0. ,0. ,0. ,
185 3 0. ,0. ,0. ,
186 4 -.861136311594053,-.339981043584856,0.339981043584856,
187 4 0.861136311594053,0. ,0. ,
188 4 0. ,0. ,0. ,
189 5 -.906179845938664,-.538469310105683,0. ,
190 5 0.538469310105683,0.906179845938664,0. ,
191 5 0. ,0. ,0. ,
192 6 -.932469514203152,-.661209386466265,-.238619186083197,
193 6 0.238619186083197,0.661209386466265,0.932469514203152,
194 6 0. ,0. ,0. ,
195 7 -.949107912342759,-.741531185599394,-.405845151377397,
196 7 0. ,0.405845151377397,0.741531185599394,
197 7 0.949107912342759,0. ,0. ,
198 8 -.960289856497536,-.796666477413627,-.525532409916329,
199 8 -.183434642495650,0.183434642495650,0.525532409916329,
200 8 0.796666477413627,0.960289856497536,0. ,
201 9 -.968160239507626,-.836031107326636,-.613371432700590,
202 9 -.324253423403809,0. ,0.324253423403809,
203 9 0.613371432700590,0.836031107326636,0.968160239507626/
204
205
206
207 gbuf => elbuf_str%GBUF
208 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
209 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
210 bufly => elbuf_str%BUFLY(1)
211 nptr = elbuf_str%NPTR
212 npts = elbuf_str%NPTS
213 nptt = elbuf_str%NPTT
214 nlay = elbuf_str%NLAY
215
216 jhbe = iparg(23)
217 irep = iparg(35)
218 igtyp = iparg(38)
219 nf1=nft+1
220 idef =0
221 ibid = 0
222 bid = zero
223 IF (igtyp /= 22) THEN
224 isorth = 0
225 END IF
226 imas_ds = defaults_solid%IMAS
227
228 DO i=1,nel
229 rhocp(i) = pm(69,ixs(1,nft+i))
230 temp0(i) = pm(79,ixs(1,nft+i))
231 ENDDO
232
233 CALL s6ccoor3(x ,ixs(1,nf1) ,geo ,ngl ,mat ,pid ,
234 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
235 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
236 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0, temp,glob_therm%NINTEMP,
237 . ix1, ix2, ix3, ix4, ix5, ix6,
238 . x1, x2, x3, x4, x5, x6,
239 . y1, y2, y3, y4, y5, y6,
240 . z1, z2, z3, z4, z5, z6)
241 IF (igtyp == 21 .OR. igtyp == 22) THEN
242 DO i=1,nel
243 angle(i) = geo(1,pid(i))
244 END DO
245 CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
246 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
247 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
248 . ngl ,angle,nsigi,sigsp,nsigs,sigi ,ixs ,1 ,
249 . orthoglob,ptsol,nel)
250 IF (igtyp == 22) THEN
251 nlymax= 200
252 ipang = 200
253 ipthk = ipang+nlymax
254 ippos = ipthk+nlymax
255 ipmat = 100
256 ig=pid(1)
257 mtn0=mtn
258 DO i=1,nel
259 mat0(i)=mat(i)
260 dtx0(i) = ep20
261 ENDDO
262 END IF
263 END IF
264 CALL s6cderi3(nel,gbuf%VOL,geo,vzl,ngl,deltax,volu ,
265 . x1, x2, x3, x4, x5, x6,
266 . y1, y2, y3, y4, y5, y6,
267 . z1, z2, z3, z4, z5, z6)
268 IF (idttsh > 0) THEN
270 . x1, x2, x3, x4, x5, x6,
271 . y1, y2, y3, y4, y5, y6,
272 . z1, z2, z3, z4, z5, z6)
273 DO i=1,nel
274 IF (gbuf%IDT_TSH(i)>0)
275 . deltax(i)=
max(llsh(i),deltax(i))
276 ENDDO
277 END IF
278
279
280
281 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
282 DO i=1,nel
283 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
284 . + temp(ixs(4,i)) + temp(ixs(5,i))
285 . + temp(ixs(6,i)) + temp(ixs(7,i))
286 . + temp(ixs(8,i)) + temp(ixs(9,i)))
287 ENDDO
288 ELSE
289 tempel(1:nel) = temp0(1:nel)
290 END IF
291
292 ip=0
293 CALL matini(pm ,ixs ,nixs ,x ,
294 . geo ,ale_connectivity ,detonators ,iparg ,
295 . sigi ,nel ,skew ,igeo ,
296 . ipart ,iparts ,
297 . mat ,ipm ,nsigs ,numsol ,ptsol ,
298 . ip ,ngl ,npf ,tf ,bufmat ,
299 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
300 . facload, deltax ,tempel ,mat_param )
301
302 IF (igtyp == 22)
CALL sczero3(gbuf%RHO,gbuf%SIG,gbuf%EINT,nel)
303
304
305 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
306
307
308 DO ilay=1,nlay
309 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
310 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
311 l_pla = elbuf_str%BUFLY(ilay)%L_PLA
312 l_sigb= elbuf_str%BUFLY(ilay)%L_SIGB
313
314 IF (igtyp == 22) THEN
315 zi = geo(ippos+ilay,ig)
316 wi = geo(ipthk+ilay,ig)
317 im=igeo(ipmat+ilay,ig)
318 mtn=nint(pm(19,im))
319 DO i=1,nel
320 mat(i)=im
321 angle(i) = geo(ipang+ilay,pid(i))
322 ENDDO
323 ELSE
324 zi = a_gauss(ilay,nlay)
325 wi = w_gauss(ilay,nlay)
326 ENDIF
327
328 DO i=1,nel
329 lbuf%VOL0DP(i)= half*wi*(gbuf%VOL(i)+vzl(i)*zi)
330 lbuf%VOL(i)= lbuf%VOL0DP(i)
331 ENDDO
332 IF (igtyp == 22)
333 .
CALL scmorth3(pid ,geo ,igeo ,skew ,irep ,lbuf%GAMA ,
334 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
335 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
336 . ngl ,angle,nsigi,sigsp,nsigs,sigi ,ixs,ilay,
337 . orthoglob,ptsol,nel)
338
339
340
341 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
342 DO i=1,nel
343 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
344 . + temp(ixs(4,i)) + temp(ixs(5,i))
345 . + temp(ixs(6,i)) + temp(ixs(7,i))
346 . + temp(ixs(8,i)) + temp(ixs(9,i)))
347 ENDDO
348 ELSE
349 tempel(1:nel) = temp0(1:nel)
350 END IF
351
352 CALL matini(pm ,ixs ,nixs ,x ,
353 . geo ,ale_connectivity ,detonators,iparg ,
354 . sigi ,nel ,skew ,igeo ,
355 . ipart ,iparts ,
356 . mat ,ipm ,nsigs ,numsol ,ptsol ,
357 . ilay ,ngl ,npf ,tf ,bufmat ,
358 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
359 . facload, deltax ,tempel ,mat_param )
360 IF (mtn >= 28) THEN
361 nuvar = ipm(8,ixs(1,nft+1))
362 idef =1
363 ELSE
364 nuvar = 0
365 IF(mtn == 14 .OR. mtn == 12)THEN
366 idef =1
367 ELSEIF(mtn == 24)THEN
368 idef =1
369 ELSEIF(istrain == 1)THEN
370 IF(mtn == 1)THEN
371 idef =1
372 ELSEIF(mtn == 2)THEN
373 idef =1
374 ELSEIF(mtn == 4)THEN
375 idef =1
376 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn == 10
377 . .OR.mtn == 21.OR.mtn == 22.OR.mtn == 23.OR.mtn == 49)THEN
378 idef =1
379 ENDIF
380 ENDIF
381 ENDIF
383 . lbuf%SIG,pm ,lbuf%VOL ,sigsp ,
384 . sigi ,lbuf%EINT,lbuf%RHO,mbuf%VAR ,lbuf%STRA,
385 . ixs ,nixs ,nsigi ,ilay ,nuvar ,
386 . nel ,iuser ,idef ,nsigs ,strsglob ,
387 . straglob,jhbe ,igtyp ,x ,lbuf%GAMA,
388 . mat ,lbuf%PLA ,l_pla ,ptsol ,lbuf%SIGB,
389 . l_sigb ,ipm ,bufmat ,lbuf%VOL0DP)
390
391 IF(igtyp == 22) THEN
392
393 aire(:) = zero
394 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
395 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
396 . volu, dtx , igeo,igtyp)
397
399 . lbuf%RHO,lbuf%VOL,lbuf%OFF,lbuf%SIG,lbuf%EINT,dtx,
400 . gbuf%RHO,gbuf%VOL,gbuf%OFF,gbuf%SIG,gbuf%EINT,dtx0,
401 . nel )
402 ENDIF
403 ENDDO
404
405 IF(igtyp == 22) THEN
406 mtn=mtn0
407 DO i=1,nel
408 mat(i)=mat0(i)
409 ENDDO
410 ENDIF
411
412
413 CALL s6mass3(gbuf%RHO,mas,partsav,x,v,iparts(nf1),mss(1,nf1),
414 . rhocp,mcp ,mcps(1,nf1),mssa(nf1),gbuf%FILL, volu,
415 . ix1, ix2, ix3, ix4, ix5, ix6,imas_ds)
416
417
418 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
419 . ipm,sigsp,nsigi,fail_ini ,
420 . sigi,nsigs,ixs,nixs,ptsol,
421 . rnoise,perturb,mat_param)
422
423
424
425 IF(i7stifs/=0)THEN
426 ncc=6
427 CALL sbulk3(volu ,ix1 ,ncc,mat,pm ,
428 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
429 3 bid ,gbuf%FILL)
430 ENDIF
431
432
433 aire(:) = zero
434 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
435 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
436 . volu, dtx, igeo,igtyp)
437
438 IF(igtyp == 22) THEN
439 DO i=1,nel
440 dtx(i)=dtx0(i)
441 ENDDO
442 ENDIF
443
444 DO i=1,nel
445 IF(ixs(10,i+nft) /= 0) THEN
446 IF (igtyp < 20 .OR. igtyp > 22) THEN
447 ipid1=ixs(nixs-1,i+nft)
448 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
450 . msgtype=msgerror,
451 . anmode=aninfo_blind_1,
452 . i1=igeo(1,ipid1),
453 . c1=titr1,
454 . i2=igtyp)
455 ENDIF
456 ENDIF
457 dtelem(nft+i)=dtx(i)
458 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i) /
459 .
max(em20,dtx(i)*dtx(i))
460 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
461 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
462 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
463 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
464 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
465 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
466 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
467 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti
468 ENDDO
469
470 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, 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 s6ccoor3(x, ixs, geo, ngl, mxt, ngeo, rx, ry, rz, sx, sy, sz, tx, ty, tz, r11, r21, r31, r12, r22, r32, r13, r23, r33, f1x, f1y, f1z, f2x, f2y, f2z, temp0, temp, nintemp, ix1, ix2, ix3, ix4, ix5, ix6, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6)
subroutine sdlensh3n(nel, llsh3n, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6)
subroutine s6mass3(rho, ms, partsav, x, v, ipart, mss, rhocp, mcp, mcps, mssa, fill, volu, nc1, nc2, nc3, nc4, nc5, nc6, imas_ds)
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 scmorth3(pid, geo, igeo, skew, irep, gama, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, ngl, angle, nsigi, sigsp, nsigs, sigi, ixs, ilay, orthoglob, pt, nel)
subroutine s6cderi3(nel, vol, geo, vzl, ngl, deltax, det, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6, z1, z2, z3, z4, z5, z6)
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)