66
67
68
69 USE elbufdef_mod
74 USE matparam_def_mod
75 USE defaults_mod
77 use element_mod , only : nixs
78
79
80
81#include "implicit_f.inc"
82
83
84
85#include "mvsiz_p.inc"
86
87
88
89#include "com01_c.inc"
90#include "com04_c.inc"
91#include "param_c.inc"
92#include "scr12_c.inc"
93#include "scr17_c.inc"
94#include "scry_c.inc"
95#include "vect01_c.inc"
96#include "sphcom.inc"
97
98
99
100 INTEGER IXS(NIXS,*),IPARG_GR(NPARG),IPARG(NPARG,NGROUP),
101 . IPARTS(*),IPART(LIPART1,*),IGEO(NPROPGI,*),PTSOL(*),NPF(*),
102 . IPM(NPROPMI,*),STRSGLOB(*),STRAGLOB(*),FAIL_INI(*),SOL2SPH(2,*),
103 . PERTURB(NPERTURB)
104 INTEGER NEL, NSIGS, IUSER, NSIGI
105 INTEGER ,INTENT(IN) :: NINTEMP
107 . mas(*), pm(npropm,*), x(*), geo(npropg,*),
108 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
109 . partsav(20,*), v(*), mss(
110 . msnf(*), mssf(8,*),wma
111 . volnod(*), bvolnod(*), vns(8,*), bns(8,*),bufmat(*),
112 . mcp(*), mcps(8,*), temp(*), tf(*),sigsp(nsigi,*), mssa(*),
113 . spbuf(nspbuf,*),rnoise(nperturb,*)
114 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
115 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
116 my_real,
INTENT(IN) :: facload(lfacload,*)
117 TYPE(DETONATORS_STRUCT_)::
118 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
119 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
120 TYPE(SOLID_DEFAULTS_), INTENT(IN) :: DEFAULTS_SOLID
121
122
123
124 INTEGER NF1,I,IGTYP,IREP,NCC,IP,NUVAR,IDEF,JHBE,IPID1,NPTR,NPTS,NPTT,NLAY,L_SIGB,L_PLA,IMAS_DS
125 INTEGER MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ), IXT4(MVSIZ,4)
126 INTEGER IX1(MVSIZ), IX2(MVSIZ), IX3(MVSIZ), IX4(MVSIZ)
127 INTEGER NSPHDIR,NCELF,NCELL,IBOLTP
128 double precision
129 . x1(mvsiz),x2(mvsiz),x3(mvsiz),x4(mvsiz),y1(mvsiz),y2(mvsiz),
130 . y3(mvsiz),y4(mvsiz),z1(mvsiz),z2(mvsiz),z3(mvsiz),z4(mvsiz)
131 CHARACTER(LEN=NCHARTITLE)::TITR1
133 . bid, fv, sti
135 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
136 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
137 . tx(mvsiz),ty(mvsiz),tz(mvsiz),
138 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
139 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(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 . volu(mvsiz), dtx(mvsiz),rhocp(mvsiz),
144 . temp0(mvsiz), deltax(mvsiz), aire(mvsiz)
146
147 TYPE(L_BUFEL_) ,POINTER :: LBUF
148 TYPE(G_BUFEL_) ,POINTER :: GBUF
149 TYPE(BUF_MAT_) ,POINTER :: MBUF
150
151
152
153 gbuf => elbuf_str%GBUF
154 lbuf => elbuf_str%BUFLY(1)%LBUF(1,1,1)
155 mbuf => elbuf_str%BUFLY(1)%MAT(1,1,1)
156
157 jhbe = iparg_gr(23)
158 irep = iparg_gr(35)
159 igtyp = iparg_gr(38)
160 nptr = elbuf_str%NPTR
161 npts = elbuf_str%NPTS
162 nptt = elbuf_str%NPTT
163 nlay = elbuf_str%NLAY
164 l_sigb= elbuf_str%BUFLY(1)%L_SIGB
165 l_pla = elbuf_str%BUFLY(1)%L_PLA
166 nf1=nft+1
167 IF(mtn>=28)THEN
168 nuvar = ipm(8,ixs(1,nf1))
169 ELSE
170 nuvar = 0
171 ENDIF
172
173 imas_ds = defaults_solid%IMAS
174 iboltp = iparg_gr(72)
175 jcvt = iparg_gr(37)
176
177 DO i=lft,llt
178 rhocp(i) = pm(69,ixs(1,nft+i))
179 temp0(i) = pm(79,ixs(1,nft+i))
180 ENDDO
181
182 CALL s4coor3(x ,xrefs(1,1,nf1),ixs(1,nf1),ngl ,
183 . mat ,pid ,ix1 ,ix2 ,ix3 ,ix4 ,
184 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
185 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 )
186 CALL s4deri3(gbuf%VOL,veul(1,nf1),geo ,igeo ,rx ,
187 . ry ,rz ,sx ,sy ,
188 . sz ,tx ,ty ,tz ,
189 . x1 ,x2 ,x3 ,x4 ,y1 ,y2 ,
190 . y3 ,y4 ,z1 ,z2 ,z3 ,z4 ,
191 . px1 ,px2 ,px3 ,px4 ,
192 . py1 ,py2 ,py3 ,py4 ,
193 . pz1 ,pz2 ,pz3 ,pz4 ,gbuf%JAC_I,
194 . deltax ,volu ,ngl ,pid ,mat ,
195 . pm ,lbuf%VOL0DP)
196 irep = iparg_gr(35)
198 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
199 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
200 IF (igtyp == 6 .OR. igtyp == 21)
201 .
CALL smorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
202 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty
203 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
204 . rx ,ry ,rz ,sx ,sy ,sz ,nsigi,sigsp,nsigs,
205 . sigi ,ixs ,x ,jhbe ,ptsol,nel ,iparg_gr(28))
206
207
208
209 IF (jthe == 0 .and. nintemp > 0) THEN
210 DO i=1,nel
211 tempel(i) = one_over_8 *(temp(ixs(2,i)) + temp(ixs(3,i))
212 . + temp(ixs(4,i)) + temp(ixs(5,i))
213 . + temp(ixs(6,i)) + temp(ixs(7,i))
214 . + temp(ixs(8,i)) + temp(ixs(9,i)))
215 ENDDO
216 ELSE
217 tempel(1:nel) = temp0(1:nel)
218 END IF
219
220 ip=1
221 CALL matini(pm ,ixs ,nixs ,x ,
222 . geo ,ale_connectivity ,detonators ,iparg_gr ,
223 . sigi ,nel ,skew ,igeo ,
224 . ipart ,iparts ,
225 . mat ,ipm ,nsigs ,numsol ,ptsol ,
226 . ip ,ngl ,npf ,tf ,bufmat ,
227 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
228 . facload, deltax ,tempel ,mat_param )
229
230
231 IF (mtn == 115) THEN
233 ENDIF
234
235 IF (iboltp /=0) THEN
236 CALL sboltini(e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
238 ENDIF
239
240
241
242 IF(jthe /=0)
CALL atheri(mat ,pm ,gbuf%TEMP)
243 IF(jtur /=0)
CALL aturi3(iparg ,gbuf%RHO,pm ,ixs ,x ,
244 . gbuf%RK ,gbuf%RE ,volu )
245
246
247
248 IF(jlag+jale+jeul/=0) THEN
249
250 IF (isigi /= 0 .AND. (jcvt/=0.OR.isorth/=0))
252 . sigi ,lbuf%SIG ,ixs ,nixs ,nsigs ,
253 . nel ,strsglob ,jhbe ,igtyp ,x ,
254 . gbuf%GAMA,ptsol ,lbuf%VOL0DP,rhocp,gbuf%RHO)
255
256 idef = 0
257 IF(mtn >= 28.AND. mtn /= 49)THEN
258 idef = 1
259 ELSEIF(mtn == 14 .OR. mtn == 12) THEN
260 idef = 1
261 ELSEIF(istrain == 1)THEN
262 IF(mtn == 1)THEN
263 idef = 1
264 ELSEIF(mtn == 2)THEN
265 idef = 1
266 ELSEIF(mtn == 4)THEN
267 idef = 1
268 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn == 10.OR.
269 . mtn == 21.OR.mtn == 22.OR.mtn == 23)THEN
270 idef = 1
271 ENDIF
272 ENDIF
273
274 IF (isigi /= 0 .AND. ((mtn >= 28 .AND. iuser == 1).OR.
275 . (nvsolid2 /= 0 .and .idef /=0)))
277 . sigsp ,sigi ,mbuf%VAR ,lbuf%STRA,
278 . ixs ,nixs ,nsigi ,nuvar ,nel ,
279 . nsigs ,iuser ,idef ,straglob ,jhbe ,
280 . igtyp ,x ,gbuf%GAMA,ptsol ,lbuf%SIGB,
281 . l_sigb ,mat(1) ,ipm ,bufmat ,lbuf%PLA,
282 . l_pla )
283
285 1 gbuf%RHO ,mas ,partsav,x ,v,
286 2 iparts(nf1),mss(1,nf1),msnf ,mssf(1,nf1),wma,
287 3 rhocp ,mcp ,mcps(1,nf1),temp0,temp ,
288 4 mssa ,ix1 ,ix2 ,ix3 ,ix4 ,
289 5 gbuf%FILL, volu ,imas_ds ,nintemp )
290
291
292
293
294
295 IF(i7stifs/=0)THEN
296 ncc=4
297 ixt4(1:mvsiz,1) = ix1(1:mvsiz)
298 ixt4(1:mvsiz,2) = ix2(1:mvsiz)
299 ixt4(1:mvsiz,3) = ix3(1:mvsiz)
300 ixt4(1:mvsiz,4) = ix4(1:mvsiz)
301 CALL sbulk3(volu ,ixt4 ,ncc,mat,pm ,
302 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),bid,
303 3 bid ,gbuf%FILL)
304 ENDIF
305 ENDIF
306
307
308
309 IF (isigi /= 0 .AND. isorth/=0) THEN
310 lbuf%SIGL = lbuf%SIG
311 ENDIF
312
313
314
315 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
316 . ipm,sigsp,nsigi,fail_ini ,
317 . sigi,nsigs,ixs,nixs,ptsol,rnoise,perturb,mat_param)
318
319
320
321 IF (nsigi > 0.AND.(ismstr==10.OR.ismstr==12)) THEN
322 CALL s4jaci3(gbuf%SMSTR,gbuf%JAC_I, gbuf%VOL,nel )
323 END IF
324
325
326
327 aire(:) = zero
328 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
329 . gbuf%EINT ,gbuf%TEMP ,gbuf%DELTAX ,gbuf%RK ,gbuf%RE ,bufmat, deltax, aire,
330 . volu, dtx ,igeo,igtyp)
331
332
333 DO 10 i=lft,llt
334 IF(ixs(10,i+nft)/=0) THEN
335 IF( igtyp/=0 .AND.igtyp/=6
336 . .AND.igtyp/=14.AND.igtyp/=15)THEN
337 ipid1=ixs(nixs-1,i+nft)
338 CALL fretitl2(titr1,igeo(npropgi-ltitr+1,ipid1),ltitr)
340 . msgtype=msgerror,
341 . anmode=aninfo_blind_1,
342 . i1=igeo(1,ipid1),
343 . c1=titr1,
344 . i2=igtyp)
345 ENDIF
346 ENDIF
347 dtelem(nft+i)=dtx(i)
348
349 sti = half * gbuf%FILL(i)* gbuf%RHO(i) * volu(i) /
350 .
max(em20,dtx(i)*dtx(i))
351 stifn(ixs(2,i+nft))=stifn(ixs(2,i+nft))+sti
352 stifn(ixs(4,i+nft))=stifn(ixs(4,i+nft))+sti
353 stifn(ixs(6,i+nft))=stifn(ixs(6,i+nft))+sti
354 stifn(ixs(7,i+nft))=stifn(ixs(7,i+nft))+sti
355 10 CONTINUE
356
357
358
359 IF(nsphsol/=0)THEN
360 DO i=lft,llt
361 IF(sol2sph(1,nft+i) < sol2sph(2,nft+i))THEN
362
363 nsphdir=igeo(37,ixs(10,nft+i))
364 ncelf =sol2sph(1,nft+i)+1
365 ncell =sol2sph(2,nft+i)-sol2sph(1,nft+i)
367 . nsphdir ,gbuf%RHO(i) ,ncell ,x ,spbuf(1,ncelf),
368 . ixs(1,i+nft))
369 END IF
370 ENDDO
371 END IF
372
373 RETURN
subroutine atheri(mat, pm, temp)
subroutine aturi3(iparg, rho, pm, ix, x, rk, re, volu)
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 m115_perturb(pm, mat, rho, perturb, rnoise)
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, dimension(:), allocatable iflag_bpreload
integer, parameter nchartitle
subroutine s4jaci3(sav, jac_i, vol, nel)
subroutine s4mass3(rho, ms, partsav, x, v, ipart, mss, msnf, mssf, wma, rhocp, mcp, mcps, temp0, temp, mssa, ix1, ix2, ix3, ix4, fill, volu, imas_ds, nintemp)
subroutine sboltini(e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, bpreld, nel, ix, nix, vpreload, iflag_bpreload)
subroutine sbulk3(volu, nc, nnc, mat, pm, volnod, bvolnod, vns, bns, vnsx, bnsx, fill)
subroutine smorth3(pid, geo, igeo, skew, irep, gama, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f1x, f1y, f1z, f2x, f2y, f2z, nsigi, sigsp, nsigs, sigi, ixs, x, jhbe, pt, nel, isolnod)
subroutine s4coor3(x, xrefs, ixs, ngl, mxt, ngeo, ix1, ix2, ix3, ix4, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4)
subroutine s4deri3(vol, veul, geo, igeo, rx, ry, rz, sx, sy, sz, tx, ty, tz, x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, px1, px2, px3, px4, py1, py2, py3, py4, pz1, pz2, pz3, pz4, jac_i, deltax, det, ngl, ngeo, mxt, pm, voldp)
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
subroutine soltosphv4(nsphdir, rho, ncell, x, spbuf, ixs)
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 userin3(sigsp, sigi, uvar, eps, ix, nix, nsigi, nuvar, nel, nsigs, iuser, idef, straglob, jhbe, igtyp, x, bufgama, pt, sigb, l_sigb, imat, ipm, bufmat, pla, l_pla)
subroutine ustrsin3(sigi, sig, ix, nix, nsigi, nel, strsglob, jhbe, igtyp, x, bufgama, pt, voldp, rho0, rho)