54
55
56
57 USE elbufdef_mod
61 USE matparam_def_mod
63 use glob_therm_mod
64 use element_mod , only : nixs
65
66
67
68#include "implicit_f.inc"
69
70
71
72#include "mvsiz_p.inc"
73
74
75
76#include "com01_c.inc"
77#include "com04_c.inc"
78#include "param_c.inc"
79#include "scr03_c.inc"
80#include "scr12_c.inc"
81#include "scr17_c.inc"
82#include "scry_c.inc"
83#include "vect01_c.inc"
84#include "scr15_c.inc"
85#include "userlib.inc"
86
87
88
89 INTEGER IXS(NIXS,*), IPARG(NPARG),IPARTS(*),
90 . NEL, IPART(LIPART1,*),
91 . IGEO(NPROPGI,*), IPM(NPROPMI,*), PTSOL(*), NSIGI, NSIGS,
92 . NPF(*),FAIL_INI(*),PERTURB(NPERTURB)
94 . ms(*), x(3,*), geo(npropg,*),pm(npropm,*),
95 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
96 . partsav(20,*), v(3,*), mss(8,*),rnoise(nperturb,*),
97 . sigsp(nsigi,*) , in(*), vr(3,*),temp(*),
98 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*), tf(*),
99 . ins(8,*)
100 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
101 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
102 my_real,
INTENT(IN) :: facload(lfacload,*)
103 TYPE(DETONATORS_STRUCT_)::DETONATORS
104 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
105 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
106 type (glob_therm_) ,intent(in) :: glob_therm
107
108
109
110 INTEGER I,J,NF1,JHBE,IGTYP,IREP,NCC,NUVAR,IP,NREFSTA,
111 . IPID1,NPTR,NPTS,NPTT,NLAY,IADB,MLW,II(6)
112 INTEGER MAT(MVSIZ), PID(MVSIZ), (MVSIZ),
113 . IPROP(MVSIZ) ,IMAT(MVSIZ) ,SID(MVSIZ),
114 . NC1(MVSIZ), NC2(MVSIZ), NC3(MVSIZ), NC4(MVSIZ),
115 . NC5(MVSIZ), NC6(MVSIZ), NC7(MVSIZ), NC8(MVSIZ)
116 CHARACTER(LEN=NCHARTITLE)::TITR1
117 CHARACTER*50 OPTION
119 my_real ,
DIMENSION(MVSIZ,8) :: mas,inn,xx,yy,zz,vx,vy,vz,vrx,vry,vrz
120 my_real ,
DIMENSION(MVSIZ) :: volu,
area,aire,mass,dtx,deltax,sti,stir,viscm,viscr,
121 . x1,x2,x3,x4,x5,x6,x7,x8,y1,y2,y3,y4,y5,y6,y7,y8,z1,z2,z3,z4,z5,z6,z7,z8,
122 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
123 . e1x,e1y,e1z,e2x,e2y,e2z,e3x,e3y,e3z,f1x,f1y,f1z,f2x,f2y,f2z
125 DOUBLE PRECISION ,DIMENSION(MVSIZ) ::
126 . XD1, XD2, XD3, XD4, XD5, XD6, XD7, XD8,
127 . YD1, YD2, YD3, YD4, YD5, YD6, YD7, YD8,
128 . ZD1, ZD2, ZD3, ZD4, ZD5, ZD6, ZD7, ZD8
129 my_real ,
DIMENSION(NEL) :: tempel,thick
130
131 TYPE(L_BUFEL_) ,POINTER :: LBUF
132 TYPE(G_BUFEL_) ,POINTER :: GBUF
133 TYPE(BUF_MAT_) ,POINTER :: MBUF
134
135
136
137 dtx(1:mvsiz) = -huge(dtx(1))
138 gbuf => elbuf_str%GBUF
139 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
140 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
141 nptr = elbuf_str%NPTR
142 npts = elbuf_str%NPTS
143 nptt = elbuf_str%NPTT
144 nlay = elbuf_str%NLAY
145 mlw = elbuf_str%BUFLY(1)%ILAW
146
147 nrefsta = nxref
148 nxref = 0
149 bid = zero
150 jhbe = iparg(23)
151 irep = iparg(35)
152 igtyp = iparg(38)
153
154 nf1=nft+1
155
156 DO i=1,6
157 ii(i) = nel*(i-1)
158 ENDDO
159
160
161 IF (igtyp == 43) THEN
163 . x ,ixs(1,nf1) ,geo ,nel ,mat ,pid ,ngl ,
164 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
165 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
166 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
167 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
168 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
170 IF (elbuf_str%GBUF%G_THK == 1) elbuf_str%GBUF%THK(1:nel) = thick(1:nel)
171 ELSEIF (jcvt == 0) THEN
172 CALL scoor3(x ,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,
173 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
174 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
175 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
176 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7
177 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty
178 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
179 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,bid, bid,glob_therm%NINTEMP,
180 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
181 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
182 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
183 ELSE
184 CALL srcoor3(x,bid ,ixs(1,nf1) ,geo ,mat ,pid ,ngl ,jhbe ,
185 . nc1 ,nc2 ,nc3 ,nc4 ,nc5 ,nc6 ,nc7 ,nc8 ,
186 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
187 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
188 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
189 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
190 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
191 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,bid , bid,glob_therm%NINTEMP,
192 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
193 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
194 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
195 ENDIF
196
197
198
199 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
200 DO i=1,nel
201 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
202 . + temp(ixs(4,i)) + temp(ixs(5,i))
203 . + temp(ixs(6,i)) + temp(ixs(7,i))
204 . + temp(ixs(8,i)) + temp(ixs(9,i)))
205 ENDDO
206 ELSE
207 tempel(1:nel) = pm(79,mat(1:nel))
208 END IF
209
211 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
212 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
213 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 )
215 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
216 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
217 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8,
218 . deltax, volu)
219
220 IF (igtyp /= 43) THEN
221 ip = 0
222 CALL matini(pm ,ixs ,nixs ,x ,
223 . geo ,ale_connectivity ,detonators,iparg ,
224 . sigi ,nel ,skew ,igeo ,
225 . ipart ,iparts ,
226 . mat ,ipm ,nsigs ,numsol ,ptsol ,
227 . ip ,ngl ,npf ,tf ,bufmat ,
228 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
229 . facload, deltax ,tempel ,mat_param )
230 ENDIF
231
232 DO j=1,8
233 DO i=lft,llt
234 xx(i,j)=x(1,ixs(j+1,i+nft))
235 yy(i,j)=x(2,ixs(j+1,i+nft))
236 zz(i,j)=x(3,ixs(j+1,i+nft))
237 vx(i,j)=v(1,ixs(j+1,i+nft))
238 vy(i,j)=v(2,ixs(j+1,i+nft))
239 vz(i,j)=v(3,ixs(j+1,i+nft))
240 ENDDO
241 ENDDO
242 IF (iroddl > 0) THEN
243 DO j=1,8
244 DO i=lft,llt
245 vrx(i,j)=vr(1,ixs(j+1,i+nft))
246 vry(i,j)=vr(2,ixs(j+1,i+nft))
247 vrz(i,j)=vr(3,ixs(j+1,i+nft))
248 ENDDO
249 ENDDO
250 ELSE
251 vrx=zero
252 vry=zero
253 vrz=zero
254 ENDIF
255
256 DO i=lft,llt
257 iprop(i)=ixs(10,i+nft)
258 sid(i) =ixs(11,i+nft)
259 imat(i) =ixs(1,i+nft)
260 ENDDO
261 iadb = ipm(7,imat(1))
262 nuvar = elbuf_str%GBUF%G_NUVAR
263
264
265
266 IF(igtyp == 29)THEN
267 DO i=lft,llt
268 sig_loc(1,i) = gbuf%SIG(ii(1)+i)
269 sig_loc(2,i) = gbuf%SIG(ii(2)+i)
270 sig_loc(3,i) = gbuf%SIG(ii(3)+i)
271 sig_loc(4,i) = gbuf%SIG(ii(4)+i)
272 sig_loc(5,i) = gbuf%SIG(ii(5)+i)
273 sig_loc(6,i) = gbuf%SIG(ii(6)+i)
274 ENDDO
275 IF (userl_avail==1)THEN
276 CALL st_userlib_siniusr(igtyp,rootnam,rootlen
277 1 nel ,nuvar ,iprop ,imat ,sid ,
278 2 gbuf%EINT,gbuf%VOL,gbuf%VAR,gbuf%OFF,gbuf%RHO,sig_loc,
279 3 xx(1,1),xx(1,2),xx(1,3),xx(1,4),xx(1,5),xx(1,6),xx(1,7)
280 4 yy(1,1),yy(1,2),yy(1,3),yy(1,4),yy(1,5),yy(1,6),yy(1,7),yy(1,8),
281 5 zz(1,1),zz(1,2),zz(1,3),zz(1,4),zz(1,5),zz(1,6),zz(1,7),zz(1,8),
282 6 vx(1,1),vx(1,2),vx(1,3),vx(1,4),vx(1,5),vx(1,6),vx(1,7),vx(1,8),
283 7 vy(1,1),vy(1,2),vy(1,3),vy(1,4),vy(1,5),vy(1,6),vy(1,7),vy(1,8),
284 8 vz(1,1),vz(1,2),vz(1,3),vz(1,4),vz(1,5),vz(1,6),vz(1,7),vz(1,8),
285 9 vrx(1,1),vrx(1,2),vrx(1,3),vrx(1,4),
286 9 vrx(1,5),vrx(1,6),vrx(1,7),vrx(1,8),
287 a vry(1,1),vry(1,2),vry(1,3),vry(1,4),
288 a vry(1,5),vry(1,6),vry(1,7),vry(1,8),
289 b vrz(1,1),vrz(1,2),vrz(1,3),vrz(1,4),
290 b vrz(1,5),vrz(1,6),vrz(1,7),vrz
291 c mas(1,1),mas(1,2),mas(1,3),mas(1,4),
292 c mas(1,5),mas(1,6),mas(1,7),mas(1,8),
293 d inn(1,1),inn(1,2),inn(1,3),inn(1,4),
294 d inn(1,5),inn(1,6),inn(1,7),inn(1,8),
295 c sti ,stir ,viscm ,viscr)
296 ELSE
297 option='/PROP/USER29'
299 . anmode=aninfo,
300 . msgtype=msgerror,
301 . c1=option)
302 ENDIF
303 DO i=lft,llt
304 gbuf%SIG(ii(1)+i) = sig_loc(1,i)
305 gbuf%SIG(ii(2)+i) = sig_loc(2,i)
306 gbuf%SIG(ii(3)+i) = sig_loc(3,i)
307 gbuf%SIG(ii(4)+i) = sig_loc(4,i)
308 gbuf%SIG(ii(5)+i) = sig_loc(5,i)
309 gbuf%SIG(ii(6)+i) = sig_loc(6,i)
310 ENDDO
311 ELSEIF(igtyp == 30)THEN
312 CONTINUE
313 ELSEIF(igtyp == 31)THEN
314 CONTINUE
315 ELSEIF(igtyp == 43)THEN
316
317 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
318
320 1 mlw ,nel ,
area ,gbuf%VOL ,gbuf%RHO ,
321 2 sti ,stir ,viscm ,viscr ,bufmat(iadb),
322 3 mas(1,1) ,mas(1,2) ,mas(1,3) ,mas(1,4) ,mas(1,5) ,
323 4 mas(1,6) ,mas(1,7) ,mas(1,8) ,inn(1,1) ,inn(1,2) ,
324 5 inn(1,3) ,inn(1,4) ,inn(1,5) ,inn(1,6) ,inn(1,7) ,
325 6 inn(1,8) ,pm ,mat ,gbuf%OFF ,gbuf%EINT,
326 7 ptsol ,sigsp ,nsigi ,nuvar )
327 ENDIF
328
329 DO j=1,8
330 DO i=lft,llt
331 v(1,ixs(j+1,i+nft)) = vx(i,j)
332 v(2,ixs(j+1,i+nft)) = vy(i,j)
333 v(3,ixs(j+1,i+nft)) = vz(i,j)
334 ENDDO
335 ENDDO
336 IF (iroddl > 0) THEN
337 DO j=1,8
338 DO i=lft,llt
339 vr(1,ixs(j+1,i+nft))= vrx(i,j)
340 vr(2,ixs(j+1,i+nft))= vry(i,j)
341 vr(3,ixs(j+1,i+nft))= vrz(i,j)
342 ENDDO
343 ENDDO
344 ENDIF
345
346
347
348 CALL sumass3(ms,partsav,x,v,iparts(nf1),mss(1,nf1),
349 2 mas,inn,gbuf%VOL,volu,mass,in,
350 3 nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8,
351 4 ins(1,nf1),gbuf%FILL)
352
353
354
355 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
356 . ipm,sigsp,nsigi,fail_ini ,
357 . sigi,nsigs,ixs,nixs,ptsol,
358 . rnoise,perturb,mat_param)
359
360
361
362
363
364 IF(i7stifs/=0)THEN
365 ncc=8
366 CALL sbulk3(volu ,nc1 ,ncc,mat,pm ,
367 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
368 3 bid ,gbuf%FILL)
369 ENDIF
370
371
372
373 aire(:) = zero
374 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
375 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire
376 . volu, dtx, igeo,igtyp)
377
378 DO i=lft,llt
379 dtelem(nft+i)=dtx(i)
380 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti(i)
381 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti(i)
382 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti(i)
383 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti(i)
384 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti(i)
385 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti(i)
386 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti(i
387 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti(i)
388 ENDDO
389 IF (igtyp/=29 .AND. igtyp/=30 .AND. igtyp/=31 .AND.
390 . igtyp/=43) THEN
391 DO i=lft,llt
392 ipid1=ixs(nixs-1,i+nft)
393 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
395 . msgtype=msgerror,
396 . anmode=aninfo_blind_1,
397 . i1=igeo(1,ipid1),
398 . c1=titr1,
399 . i2=igtyp)
400 ENDDO
401 ENDIF
402
403 nxref = nrefsta
404
405 RETURN
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 area(d1, x, x2, y, y2, eint, stif0)
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 sbulk3(volu, nc, nnc, mat, pm, volnod, bvolnod, vns, bns, vnsx, bnsx, fill)
subroutine sini43(elbuf_str, mlw, nel, area, volg, rhog, stifm, stifr, viscm, viscr, uparam, mas1, mas2, mas3, mas4, mas5, mas6, mas7, mas8, inn1, inn2, inn3, inn4, inn5, inn6, inn7, inn8, pm, mat, offg, eintg, ptsol, sigsp, nsigi, nuvar)
subroutine spcoor3(x, ixs, geo, nel, mxt, pid, 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, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, volu, thick)
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 sdlen3(x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, deltax, voln)
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 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)
subroutine suderi3(nel, vol, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8)
subroutine sumass3(ms, partsav, x, v, ipart, mss, mas, inn, vol, volu, mass, in, nc1, nc2, nc3, nc4, nc5, nc6, nc7, nc8, ins, fill)