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_
74#include "implicit_f.inc"
89#include "vect01_c.inc"
93 INTEGER IXS(NIXS,*),IPARG(NPARG,NGROUP),
94 . IPARG_GR(NPARG),IPARTS(*),IGEO(NPROPGI,*),
95 . IPM(NPROPMI,NUMMAT),IPART(LIPART1,*),PTSOL(*),
96 . NG, NSIGI ,NVC,NEL,IUSER, NSIGS, NPF(*),
97 . STRSGLOB(*),STRAGLOB(*),FAIL_INI(*),
98 . KXSP(NISP,*), IPARTSP(*), NOD2SP(*), SOL2SPH(2,*), IRST(3,*)
100 . MAS(*), PM(NPROPM,NUMMAT), X(3,*), GEO(NPROPG,*),
101 . DTELEM(*),SIGI(NSIGS,*),SKEW(LSKEW,*),STIFN(*),
102 . PARTSAV(20,*), V(3, *), MSS(8,*),
103 . SIGSP(NSIGI,*),MSNF(*), MSSF(8,*), WMA(*),
104 . VOLNOD(*), BVOLNOD(*), VNS(8,*), BNS(8,*),
105 . in(*),vr(*), ins(8,*),bufmat(*),
106 . mcp(*), mcps(8,*), temp(*),
107 . xrefs(8,3,*), tf(*), mssa(*),
109 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
110 INTEGER,
INTENT(IN) :: ILOADP(SIZLOADP,*)
111 my_real,
INTENT(IN) :: facload(lfacload,*)
112 TYPE(multi_fvm_struct) :: MULTI_FVM
113 LOGICAL :: ERROR_THROWN
114 TYPE(DETONATORS_STRUCT_) :: DETONATORS
115 TYPE(t_ale_connectivity),
INTENT(INOUT) :: ALE_CONNECTIVITY
116 TYPE(MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
117 type (glob_therm_) ,
intent(in) :: glob_therm
121 INTEGER I,II,J, NF1, IBID, JHBE, IREP,IGTYP, NUVAR, IDEF,
122 . ipt,lvloc,ipid1,nptr,npts,nptt,nlay,
124 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ),
125 . ix1(mvsiz),ix2(mvsiz),ix3(mvsiz),ix4(mvsiz),
126 . ix5(mvsiz),ix6(mvsiz),ix7(mvsiz),ix8(mvsiz)
128 . volu(mvsiz),dtx(mvsiz),
129 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),x5(mvsiz),x6(mvsiz),
130 . x7(mvsiz),x8(mvsiz),y1(mvsiz),y2(mvsiz),y3(mvsiz),y4(mvsiz),
131 . y5(mvsiz),y6(mvsiz),y7(mvsiz),y8(mvsiz),z1(mvsiz),z2(mvsiz),
132 . z3(mvsiz),z4(mvsiz),z5(mvsiz),z6(mvsiz),z7(mvsiz),z8(mvsiz),
133 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,sx(mvsiz) ,
134 . sy(mvsiz) ,sz(mvsiz) ,tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,
135 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),
136 . e2x(mvsiz),e2y(mvsiz),e2z(mvsiz),
137 . e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
138 . f1x(mvsiz) ,f1y(mvsiz) ,f1z(mvsiz) ,
139 . f2x(mvsiz) ,f2y(mvsiz) ,f2z(mvsiz),rhocp(mvsiz),temp0(mvsiz),
140 . px1(mvsiz),px2(mvsiz),px3(mvsiz),px4(mvsiz),
141 . py1(mvsiz),py2(mvsiz),py3(mvsiz),py4(mvsiz),
142 . pz1(mvsiz),pz2(mvsiz),pz3(mvsiz),pz4(mvsiz),
143 . rhof(mvsiz),
alpha(mvsiz), deltax(mvsiz), aire(mvsiz), dummy, pres, vfrac
144 my_real :: tempel(nel)
148 . xd1(mvsiz), xd2(mvsiz), xd3(mvsiz), xd4(mvsiz),
149 . xd5(mvsiz), xd6(mvsiz), xd7(mvsiz), xd8(mvsiz),
150 . yd1(mvsiz), yd2(mvsiz), yd3(mvsiz), yd4(mvsiz),
151 . yd5(mvsiz), yd6(mvsiz), yd7(mvsiz), yd8(mvsiz),
152 . zd1(mvsiz), zd2(mvsiz), zd3(mvsiz), zd4(mvsiz),
153 . zd5(mvsiz), zd6(mvsiz), zd7(mvsiz), zd8(mvsiz),voldp(mvsiz)
154 INTEGER :: ILAY, MATLAW
156 CHARACTER(LEN=NCHARTITLE) :: TITR1
157 parameter(lvloc = 51)
159 TYPE(l_bufel_) ,
POINTER :: LBUF
160 TYPE(G_BUFEL_) ,
POINTER :: GBUF
161 TYPE(BUF_MAT_) ,
POINTER :: MBUF
162 TYPE(BUF_LAY_) ,
POINTER :: BUFLY
167 gbuf => elbuf_str%GBUF
169 nlay = elbuf_str%NLAY
177 IF (jcvt==1.AND.isorth/=0) jcvt=2
181 nptr = elbuf_str%NPTR
182 npts = elbuf_str%NPTS
183 nptt = elbuf_str%NPTT
187 rhocp(i) = pm(69,ixs(1,nft+i))
188 temp0(i) = pm(79,ixs(1,nft+i))
190 rhof(i) = pm(192,ixs(1,nft+i))
191 alpha(i) = pm(193,ixs(1,nft+i))
194 IF (ismstr==10.OR.ismstr==12)
THEN
195 CALL scoor3(x,xrefs(1,1,nf1),ixs(1,nf1), geo ,mat ,pid ,ngl ,
196 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
197 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
198 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
199 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
200 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
201 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
202 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP,
203 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
204 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
205 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
207 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
208 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
209 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
214 CALL scoor3(x,xrefs(1,1,nf1),ixs(1,nf1),geo ,mat ,pid ,ngl ,
215 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
216 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
217 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
218 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
219 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
220 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
221 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP,
222 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
223 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
224 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
226 CALL srcoor3(x,xrefs(1,1,nf1),ixs(1,nf1),geo ,mat ,pid ,ngl ,jhbe ,
227 . ix1 ,ix2 ,ix3 ,ix4 ,ix5 ,ix6 ,ix7 ,ix8 ,
228 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
229 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
230 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8 ,
231 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
232 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
233 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,temp0,temp ,glob_therm%NINTEMP
234 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
235 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
236 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 )
242 .
CALL smorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
243 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
244 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
245 . f1x ,f1y ,f1z ,f2x ,f2y ,f2z ,nsigi,sigsp,nsigs,
246 . sigi ,ixs ,x ,jhbe ,ptsol,nel ,iparg_gr(28))
249 CALL sveok3(nvc,8, ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
252 . gbuf%VOL ,dummy ,geo ,igeo ,
253 . xd1 ,xd2 ,xd3 ,xd4 ,xd5 ,xd6 ,xd7 ,xd8 ,
254 . yd1 ,yd2 ,yd3 ,yd4 ,yd5 ,yd6 ,yd7 ,yd8 ,
255 . zd1 ,zd2 ,zd3 ,zd4 ,zd5 ,zd6 ,zd7 ,zd8 ,
256 . rx ,ry ,rz ,sx ,sy ,sz ,ngl ,pid ,
257 . px1 ,px2 ,px3 ,px4 ,py1 ,py2 ,py3 ,py4 ,
258 . pz1 ,pz2 ,pz3 ,pz4 ,volu ,voldp,nel ,jeul ,
261 . x1 ,x2 ,x3 ,x4 ,x5 ,x6 ,x7 ,x8 ,
262 . y1 ,y2 ,y3 ,y4 ,y5 ,y6 ,y7 ,y8 ,
263 . z1 ,z2 ,z3 ,z4 ,z5 ,z6 ,z7 ,z8,
267 pm(104,ixs(1, 1 + nft)) = zero
270 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
271 mbuf => elbuf_str%BUFLY(ilay)%MAT(1,1,1)
272 bufly => elbuf_str%BUFLY(ilay)
273 nuvar = elbuf_str%BUFLY(ilay)%NVAR_MAT
274 l_pla = elbuf_str%BUFLY(ilay)%L_PLA
276 mat(i) = mat_param( ixs(1,i+nft) )%MULTIMAT%MID(ilay)
278 lbuf%VOL(i) = mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay) * gbuf%VOL(i)
283 CALL matini(pm ,ixs ,nixs ,x ,
284 2 geo ,ale_connectivity ,detonators,iparg_gr ,
285 3 sigi ,nel ,skew ,igeo ,
287 5 mat ,ipm ,nsigs ,numsol ,ptsol ,
288 6 ipt ,ngl ,npf ,tf ,bufmat ,
289 7 gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
290 8 facload, deltax ,tempel)
292 vfrac = mat_param( ixs(1,1+nft) )%MULTIMAT%VFRAC(ilay)
293 pres = pm(104, mat_param( ixs(1,1+nft) )%MULTIMAT%MID(ilay))
294 pm(104,ixs(1, 1 + nft)) = pm(104,ixs(1, 1 + nft)) + vfrac * pres
296 matlaw = ipm(2, mat(1))
297 IF (matlaw == 5)
THEN
299 IF (.NOT. error_thrown)
THEN
300 IF (pm(44, mat(1)) == zero)
THEN
301 CALL ancmsg(msgid = 1623, msgtype = msgerror, anmode = aninfo,
302 . i1 = ipm(1, ixs(1, 1 + nft)), i2 = ipm(1, mat(1)))
304 error_thrown = .true.
306 CALL m5in3(pm, mat, ipm(1, ixs(1,1+nft)), detonators, lbuf%TB, iparg, x, ixs, nixs)
308 IF (matlaw == 6)
THEN
309 IF (pm(24, mat(1)) > zero)
THEN
310 multi_fvm%NS_DIFF = .true.
320 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
322 gbuf%RHO(i) = gbuf%RHO(i) + lbuf%RHO(i) * mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay)
327 gbuf%TEMP(1:nel)=zero
329 lbuf => elbuf_str%BUFLY(ilay)%LBUF(1,1,1)
331 gbuf%TEMP(i) = gbuf%TEMP(i) + lbuf%TEMP(i) * mat_param( ixs(1,i+nft) )%MULTIMAT%VFRAC(ilay)*lbuf%RHO(i)/gbuf%RHO(i)
339 IF(jthe /=0)
CALL atheri(mat,pm ,gbuf%TEMP)
340 IF(jtur /=0)
CALL aturi3(iparg ,gbuf%RHO,pm,ixs,x,
341 . gbuf%RK ,gbuf%RE,volu)
345 IF(jlag+jale+jeul/=0)
THEN
347 . gbuf%RHO ,mas ,partsav ,x ,v ,
348 . iparts(nf1),mss(1,nf1) ,volu ,
349 . msnf ,mssf(1,nf1),in ,
350 . vr ,ins(1,nf1) ,wma ,rhocp ,mcp ,
351 . mcps(1,nf1),mssa ,rhof ,
alpha ,gbuf%FILL,
352 . ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8)
358 CALL dtmain(geo , pm , ipm , pid , mat , fv ,
359 . gbuf%EINT, gbuf%TEMP, gbuf%DELTAX, gbuf%RK, gbuf%RE, bufmat, deltax, aire, volu, dtx, igeo,igtyp)
362 IF(ixs(10,i+nft)/=0)
THEN
363 IF( igtyp/=0 .AND.igtyp/=6 .AND. igtyp/=14
364 . .AND.igtyp/=15.AND. igtyp/=29)
THEN
365 ipid1=ixs(nixs-1,i+nft)
366 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
369 . anmode=aninfo_blind_1,
378 sti = fourth * gbuf%FILL(i) * gbuf%RHO(i) * volu(i) /
379 .
max(em20,dtx(i)*dtx(i))
380 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
381 stifn(ixs(3,i+nft))=stifn(ixs(3,i+nft))+sti
382 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
383 stifn(ixs(5,i+nft))=stifn(ixs(5,i+nft))+sti
384 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
385 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
386 stifn(ixs(8,i+nft))=stifn(ixs(8,i+nft))+sti
387 stifn(ixs(9,i+nft))=stifn(ixs(9,i+nft))+sti