48 . GEO ,ALE_CONNECTIVITY ,IPARG_GR,
49 . DTELEM ,SIGI ,NEL ,SKEW ,IGEO ,
50 . STIFN ,PARTSAV ,V ,IPARTS ,MSS ,
51 . IPART ,SIGSP ,NG ,IPARG ,GLOB_THERM,
52 . NSIGI ,MSNF ,NVC ,MSSF ,IPM ,
53 . IUSER ,NSIGS ,VOLNOD ,BVOLNOD ,VNS ,
54 . BNS ,IN ,VR ,INS ,WMA ,
55 . PTSOL ,BUFMAT ,MCP ,MCPS ,TEMP ,
56 . XREFS ,NPF ,TF ,MSSA ,STRSGLOB,
57 . STRAGLOB ,FAIL_INI ,SPBUF ,KXSP ,IPARTSP ,
58 . NOD2SP ,SOL2SPH ,IRST ,ILOADP ,FACLOAD,
59 . MULTI_FVM, ERROR_THROWN,DETONATORS,MAT_PARAM)
69 USE matparam_def_mod,
ONLY : matparam_struct_
71 use element_mod ,
only : nixs
75#include "implicit_f.inc"
90#include "vect01_c.inc"
94 INTEGER IXS(NIXS,*),IPARG(NPARG,NGROUP),
95 . IPARG_GR(NPARG),IPARTS(*),IGEO(NPROPGI,*),
96 . IPM(NPROPMI,NUMMAT),IPART(LIPART1,*),PTSOL(*),
97 . NG, NSIGI ,NVC,NEL,IUSER, NSIGS, NPF(*),
98 . STRSGLOB(*),STRAGLOB(*),FAIL_INI(*),
99 . KXSP(NISP,*), IPARTSP(*), NOD2SP(*), SOL2SPH(2,*), IRST(3,*)
101 . MAS(*), PM(NPROPM,NUMMAT), X(3,*), GEO(NPROPG,*),
102 . DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
103 . PARTSAV(20,*), V(3, *), MSS(8,*),
104 . SIGSP(NSIGI,*),MSNF(*), MSSF(8,*), WMA(*),
105 . VOLNOD(*), BVOLNOD(*), VNS(8,*), BNS(8,*),
106 . in(*),vr(*), ins(8,*),bufmat(*),
107 . mcp(*), mcps(8,*), temp(*),
108 . xrefs(8,3,*), tf(*), mssa(*),
110 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
111 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
112 my_real,
INTENT(IN) :: facload(lfacload,*)
113 TYPE(multi_fvm_struct) :: MULTI_FVM
114 LOGICAL :: ERROR_THROWN
115 TYPE(DETONATORS_STRUCT_) :: DETONATORS
116 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
117 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
118 type (glob_therm_) ,
intent(in) :: glob_therm
122 INTEGER I, NF1, IBID, JHBE, IREP,IGTYP, NUVAR, IDEF,
123 . ipt,lvloc,ipid1,nptr,npts,nptt,nlay,
125 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
126 . ix1(mvsiz),ix2(mvsiz),ix3(mvsiz),ix4(mvsiz),
127 . ix5(mvsiz),ix6(mvsiz),ix7(mvsiz),ix8(mvsiz)
129 . volu(mvsiz),dtx(mvsiz),
130 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
131 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
132 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
133 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
134 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
135 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
136 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),
137 . e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
138 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
139 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
140 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz),rhocp(mvsiz),temp0(mvsiz),
141 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
142 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
143 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
144 . rhof(mvsiz),
alpha(mvsiz), deltax(mvsiz), aire(mvsiz), dummy, pres, vfrac
145 my_real :: tempel(nel)
149 . xd1(mvsiz), xd2(mvsiz), xd3(mvsiz), xd4(mvsiz),
150 . xd5(mvsiz), xd6(mvsiz), xd7(mvsiz), xd8(mvsiz),
151 . yd1(mvsiz), yd2(mvsiz), yd3(mvsiz), yd4(mvsiz),
152 . yd5(mvsiz), yd6(mvsiz), yd7(mvsiz), yd8(mvsiz),
153 . zd1(mvsiz), zd2(mvsiz), zd3(mvsiz), zd4(mvsiz),
154 . zd5(mvsiz), zd6(mvsiz), zd7(mvsiz), zd8(mvsiz),voldp(mvsiz)
155 INTEGER :: ILAY, MATLAW
157 CHARACTER(LEN=NCHARTITLE) :: TITR1
158 parameter(lvloc = 51)
160 TYPE(l_bufel_) ,
POINTER :: LBUF
161 TYPE(G_BUFEL_) ,
POINTER :: GBUF
162 TYPE(BUF_MAT_) ,
POINTER :: MBUF
163 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
168 gbuf => elbuf_str%GBUF
170 nlay = elbuf_str%NLAY
178 IF (jcvt==1.AND.isorth/=0) jcvt=2
182 nptr = elbuf_str%NPTR
183 npts = elbuf_str%NPTS
184 nptt = elbuf_str%NPTT
188 rhocp(i) = pm(69,ixs(1,nft+i))
189 temp0(i) = pm(79,ixs(1,nft+i))
191 rhof(i) = pm(192,ixs(1,nft+i))
192 alpha(i) = pm(193,ixs(1,nft+i))
195 IF (ismstr==10.OR.ismstr==12)
THEN
196 CALL scoor3(x,xrefs(1,1,nf1),ixs(1,nf1), geo ,mat ,pid ,ngl ,
197 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
198 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
199 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
200 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
201 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
202 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
203 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP,
204 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
205 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
206 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
208 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
209 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
210 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
215 CALL scoor3(x,xrefs(1,1,nf1),ixs(1,nf1),geo ,mat ,pid ,ngl ,
216 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
217 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
218 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
219 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
220 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
221 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
222 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP,
223 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
224 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
225 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
227 CALL srcoor3(x,xrefs(1,1,nf1),ixs(1,nf1),geo ,mat ,pid
228 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
229 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
230 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
231 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
232 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
233 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
234 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP,
235 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
236 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
237 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
243 .
CALL smorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
244 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
245 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
246 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,nsigi,sigsp,nsigs,
247 . sigi ,ixs ,x ,jhbe ,ptsol,nel ,iparg_gr(28))
250 CALL sveok3(nvc,8, ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
253 . gbuf%VOL ,dummy ,geo ,igeo ,
254 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
255 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
256 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 ,
257 . rx ,ry ,rz ,sx ,sy ,sz ,ngl ,pid ,
258 . px1 ,px2 ,px3 ,px4 ,py1 ,py2 ,py3 ,py4 ,
259 . pz1 ,pz2 ,pz3 ,pz4 ,volu ,voldp,nel ,jeul ,
262 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
263 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
264 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8,
268 pm(104,ixs(1, 1 + nft)) = zero
271 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
272 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
273 bufly => elbuf_str%BUFLY(ilay)
274 nuvar = elbuf_str%BUFLY(ilay)%NVAR_MAT
275 l_pla = elbuf_str%BUFLY(ilay)%L_PLA
277 mat(i) = mat_param( ixs(1,i+nft) )%MULTIMAT%MID(ilay)
279 lbuf%VOL(i) = mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(i)
284 CALL matini(pm ,ixs ,nixs ,x ,
285 2 geo ,ale_connectivity ,detonators,iparg_gr ,
286 3 sigi ,nel ,skew ,igeo ,
288 5 mat ,ipm ,nsigs ,numsol ,ptsol ,
289 6 ipt ,ngl ,npf ,tf ,bufmat ,
290 7 gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
291 8 facload, deltax ,tempel ,mat_param )
293 vfrac = mat_param( ixs(1,1+nft) )%MULTIMAT%VFRAC(ilay)
294 pres = pm(104, mat_param( ixs(1,1+nft) )%MULTIMAT%MID(ilay))
295 pm(104,ixs(1, 1 + nft)) = pm(104,ixs(1, 1 + nft)) + vfrac * pres
297 matlaw = ipm(2, mat(1))
298 IF (matlaw == 5)
THEN
300 IF (.NOT. error_thrown)
THEN
301 IF (pm(44, mat(1)) == zero)
THEN
302 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
303 . i1 = ipm(1, ixs(1, 1 + nft)), i2 = ipm(1, mat(1)))
305 error_thrown = .true.
307 CALL m5in3(pm, mat, ipm(1, ixs(1,1+nft)), detonators, lbuf%TB, iparg, x, ixs, nixs)
309 IF (matlaw == 6)
THEN
310 IF (pm(24, mat(1)) > zero)
THEN
311 multi_fvm%NS_DIFF = .true.
321 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
323 gbuf%RHO(i) = gbuf%RHO(i) + lbuf%RHO(i) * mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay)
328 gbuf%TEMP(1:nel)=zero
330 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
332 gbuf%TEMP(i) = gbuf%TEMP(i) + lbuf%TEMP(i) * mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay)*lbuf%RHO(i)/gbuf%RHO(i)
340 IF(jthe /=0)
CALL atheri(mat,pm ,gbuf%TEMP)
341 IF(jtur /=0)
CALL aturi3(iparg ,gbuf%RHO,pm,ixs,x,
342 . gbuf%RK ,gbuf%RE,volu)
346 IF(jlag+jale+jeul/=0)
THEN
348 . gbuf%RHO ,mas ,partsav ,x ,v ,
349 . iparts(nf1),mss(1,nf1) ,volu ,
350 . msnf ,mssf(1,nf1),in ,
351 . vr ,ins(1,nf1) ,wma ,rhocp ,mcp ,
352 . mcps(1,nf1),mssa ,rhof ,
alpha ,gbuf%FILL,
353 . ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
359 CALL dtmain(geo , pm , ipm , pid , mat , fv ,
360 . gbuf%EINT, gbuf%TEMP, gbuf%DELTAX, gbuf%RK, gbuf%RE, bufmat, deltax, aire, volu, dtx, igeo,igtyp)
363 IF(ixs(10,i+nft)/=0)
THEN
364 IF( igtyp/=0 .AND.igtyp/=6 .AND. igtyp/=14
365 . .AND.igtyp/=15.AND. igtyp/=29)
THEN
366 ipid1=ixs(nixs-1,i+nft)
367 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
370 . anmode=aninfo_blind_1,
379 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i) /
380 .
max(em20,dtx(i)*dtx(i))
381 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
382 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
383 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
384 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
385 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
386 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
387 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
388 stifn(ixs(9,i+nft))=stifn(ixs(