52
53
54
55 USE elbufdef_mod
58 USE glob_therm_mod
59 USE matparam_def_mod
60
61
62
63#include "implicit_f.inc"
64
65
66
67#include "mvsiz_p.inc"
68
69
70
71#include "com01_c.inc"
72#include "com04_c.inc"
73#include "param_c.inc"
74#include "scr17_c.inc"
75#include "scry_c.inc"
76#include "sphcom.inc"
77#include "vect01_c.inc"
78
79
80
81 INTEGER KXSP(NISP,*), NPC(*),IPARTSP(*),ITAB(*),IGEO(*),
82 . IXSP(KVOISPH,*),NOD2SP(*),IPARG(*),ISPTAG(*),
83 . IPART(LIPART1,*),IPM(NPROPMI,*), PTSPH(*), NPF(*)
84 INTEGER IGRTYP, NEL,NSIGSPH
86 . x(3,*), geo(npropg,*), xmas(*), pld(*), xin(*),
87 . skew(lskew,*), dtelem(*),stifn(*),stifr(*),partsav(20,*), v(*),
88 . bufmat(*),pm(npropm,*), msr(3,*), inr(3,*),
89 . spbuf(nspbuf,*),sigsph(nsigsph,*), tf(*), mcp(*), temp(*)
90 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
91 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
92 my_real,
INTENT(IN) :: facload(lfacload,*)
93 INTEGER,INTENT(IN) :: I7STIFS
94 my_real,
INTENT(INOUT) :: stifint(numnod)
95 TYPE(DETONATORS_STRUCT_)::
96 type (glob_therm_) ,intent(inout) :: glob_therm
97 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
98
99
100
101 INTEGER IPRT,IMAT,IG,N,I,J,INOD,IGTYP,IBID,NF1,NDEPAR,JJ,IP,(6)
102 INTEGER MXT(),NGEO(MVSIZ),NC1(MVSIZ),(MVSIZ)
104 . vol(mvsiz),mass(mvsiz),rho(mvsiz),deltax(mvsiz),dtx(mvsiz),
105 . x1(mvsiz),y1(mvsiz),z1(mvsiz),rbid(1), aire(mvsiz)
107 . sti,fv,mp,rhocp
109 TYPE() ,POINTER :: GBUF
110 TYPE(L_BUFEL_) ,POINTER :: LBUF
111 TYPE(BUF_MAT_) ,POINTER :: MBUF
112 TYPE(t_ale_connectivity), INTENT(INOUT) ::
113
114 INTEGER GET_U_PNU,GET_U_PID,GET_U_MID,GET_U_MNU
116 . get_u_mat,get_u_geo,get_u_func
119
120
121
122 gbuf => elbuf_str%GBUF
123 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
124 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
125 rbid = zero
126 ibid = 0
127
128 DO i=1,6
129 ii(i) = nel*(i-1)
130 ENDDO
131
132
133 IF(isph2sol==0)THEN
134 DO i=lft,llt
135 n =i+nft
136 iprt=ipartsp(n)
137 imat=ipart(1,iprt)
138 ig =ipart(2,iprt)
139 mp =get_u_geo(1,ig)
140 rho(i)=pm(1,imat)
141 IF (nint(spbuf(13,n))==1) THEN
142
143 vol(i)=spbuf(12,n)/rho(i)
144 ELSEIF (nint(spbuf(13,n))==2) THEN
145
146 vol(i)=spbuf(12,n)
147 ELSE
148 vol(i)=mp/rho(i)
149 ENDIF
150 IF(nspcond/=0) vol(i)=vol(i)/isptag(n)
151 mass(i) =rho(i)*vol(i)
152 spbuf(2,n) =rho(i)
153 spbuf(12,n)=mass(i)
154 END DO
155 ELSE
156 DO i=lft,llt
157 n =i+nft
158 iprt=ipartsp(n)
159 imat=ipart(1,iprt)
160 ig =ipart(2,iprt)
161 rho(i)=pm(1,imat)
162
163
164 vol(i) =spbuf(12,n)
165 mass(i) =rho(i)*vol(i)
166 IF(mass(i)/=spbuf(2,n))THEN
167
168 END IF
169 spbuf(2,n) =rho(i)
170 spbuf(12,n)=mass(i)
171 END DO
172 END IF
173
174 nf1 =nft+1
175
176
177
178 DO i=lft,llt
179 n=nft+i
180 iprt =ipartsp(n)
181 mxt(i) =ipart(1,iprt)
182 ngeo(i)=ipart(2,iprt)
183 ngl(i) =kxsp(nisp,n)
184 nc1(i) =kxsp(3,n)
185 ENDDO
186
187
188
189 DO i=lft,llt
190 n=nft+i
191 deltax(i)=spbuf(1,n)
192 ENDDO
193
194
195
196 DO i=lft,llt
197 gbuf%RHO(i)=rho(i)
198 gbuf%VOL(i)=vol(i)
199 ENDDO
200
201
202
203 DO i=lft,llt
204 n=nft+i
205 inod =kxsp(3,n)
206 x1(i)=x(1,inod)
207 y1(i)=x(2,inod)
208 z1(i)=x(3,inod)
209 ENDDO
210
211 IF(isorth/=0)THEN
212 CALL sporth3(ipart ,ipartsp(nft+1) ,igeo ,gbuf%GAMA,skew,
213 . nel )
214 END IF
215
216 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
217 tempel(1:nel) = temp(nc1(1:nel))
218 ELSE
219 tempel(1:nel) = pm(79,mxt(1:nel))
220 END IF
221
222
223
224 ip=1
225 CALL matini(pm ,kxsp ,nisp ,x ,
226 . geo ,ale_connectivity ,detonators ,iparg ,
227 . sigsph ,nel ,skew ,igeo ,
228 . ipart ,ipartsp,
229 . mxt ,ipm ,nsigsph ,numsphy ,ptsph ,
230 . ip ,ngl ,npf ,tf ,bufmat ,
231 . gbuf ,lbuf ,mbuf ,elbuf_str,iloadp ,
232 . facload, deltax ,tempel ,mat_param )
233
234
235
236 IF(isigi==3.OR.isigi==4.OR.isigi==5)THEN
237 DO i=lft,llt
238 n = i+nft
239 jj=ptsph(n)
240 IF(jj/=0) THEN
241 IF(sigsph(11,jj)/=0.)THEN
242 spbuf(1,n)=sigsph(11,jj)
243 ENDIF
244 ENDIF
245 spbuf(2,n) = gbuf%RHO(i)
246 ENDDO
247 ENDIF
248
249
250
251 IF (jthe > 0)THEN
252 DO i=lft,llt
253 gbuf%TEMP(i)=pm(79,mxt(i))
254 ENDDO
255 ELSEIF (jthe < 0) THEN
256 glob_therm%INTHEAT = 1
257 DO i=lft,llt
258 j = nc1(i)
259 rhocp = pm(69,mxt(i))*vol(i)
260 mcp(j) = rhocp+mcp(j)
261 temp(j) = pm(79,mxt(i))
262 ENDDO
263 END IF
264
265
266
267 CALL sppart3(xmas,partsav,nc1,mass,x,v,ipartsp(nf1))
268
269
270
271 ndepar=numelc+numels+numelt+numelq+numelp+numelr+numeltg
272 . +numelx+nft
273
274 aire(:) = zero
275 igtyp = iparg(38)
276 CALL dtmain(geo ,pm ,ipm ,ngeo ,mxt ,fv ,
277 . gbuf%EINT ,gbuf%TEMP ,gbuf%DELTAX ,gbuf%RK ,gbuf%RE ,bufmat, deltax, aire,
278 . gbuf%VOL, dtx, igeo,igtyp)
279
280 DO i=lft,llt
281 dtelem(ndepar+i)=dtx(i)
282 sti = two * mass(i) /
max(em20,dtx(i)*dtx(i))
283 stifn(kxsp(3,i+nft))=stifn(kxsp(3,i+nft))+sti
284 ENDDO
285
286
287
288 IF(i7stifs/=0)THEN
289 DO i=lft,llt
290 n = i+nft
291
292 stifint(kxsp(3,i+nft))= half*pm(32,mxt(i))*vol(i)**third
293 ENDDO
294 ENDIF
295
296 DO i=lft,llt
297 n=nft+i
298 IF(kxsp(2,n) < 0.AND.
299 . (n < first_sphsol.OR.n >= first_sphsol+nsphsol))THEN
300 gbuf%OFF(i) = zero
301 gbuf%RHO(i) = zero
302 gbuf%EINT(i) = zero
303 gbuf%SIG(ii(1)+i) = zero
304 gbuf%SIG(ii(2)+i) = zero
305 gbuf%SIG(ii(3)+i) = zero
306 gbuf%SIG(ii(4)+i) = zero
307 gbuf%SIG(ii(5)+i) = zero
308 gbuf%SIG(ii(6)+i) = zero
309 ELSEIF(kxsp(2,n) < 0 .AND.
310 . first_sphsol <= n .AND. n < first_sphsol+nsphsol)THEN
311 gbuf%OFF(i) = -one
312 ENDIF
313 ENDDO
314
315 RETURN
316
subroutine dtmain(geo, pm, ipm, pid, mat, fv, eint, temp, deltax, rk, re, bufmat, ddeltax, aire, vol, dtx, igeo, igtyp)
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)
subroutine sporth3(ipart, ipartsp, igeo, gama, skew, nel)
subroutine sppart3(ms, partsav, nc1, mass, x, v, ipart)
integer function get_u_pid(ip)
integer function get_u_pnu(ivar, ip, k)
integer function get_u_mid(im)
integer function get_u_mnu(ivar, im, k)