63
64
65
66 USE elbufdef_mod
71 USE matparam_def_mod
72 USE defaults_mod
74 use glob_therm_mod
75 use element_mod , only : nixs
76
77
78
79#include "implicit_f.inc"
80
81
82
83#include "mvsiz_p.inc"
84
85
86
87#include "com01_c.inc"
88#include "com04_c.inc"
89#include "param_c.inc"
90#include "scr12_c.inc"
91#include "scry_c.inc"
92#include "vect01_c.inc"
93#include "scr17_c.inc"
94
95
96
97 INTEGER IXS(NIXS,*), IPARG(*),(*),IGEO(NPROPGI,*),
98 . IXS10(6,*), IPART(LIPART1,*),IPM(NPROPMI,*),
99 . NPF(*),STRSGLOB(*),STRAGLOB(*),PTSOL(*),FAIL_INI(*),PERTURB(NPERTURB)
100 INTEGER NEL ,NSIGI,IUSER, NSIGS
102 . mas(*),pm(npropm,*), x(*), geo(npropg,*),
103 . veul(lveul,*), dtelem(*),sigi(nsigs,*),skew(lskew,*),stifn(*),
104 . partsav(20,*), v(*), mss(8,*), mssx(12,*) , sigsp(nsigi,*),
105 . volnod(*),bvolnod(*), vns(8,*), bns(8,*),rnoise(nperturb,*),
106 . vnsx(12,*), bnsx(12,*) ,bufmat(*),mcp(*),mcps(8,*),mcpsx(12,*),
107 . temp(*), tf(*), in(*),stifr(*), ins(8,*), mssa(*)
108 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
109 INTEGER,INTENT(IN) :: ILOADP(SIZLOADP,*)
110 my_real,
INTENT(IN) :: facload(lfacload,*)
111 TYPE(DETONATORS_STRUCT_) :: DETONATORS
112 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
113 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
114 TYPE(SOLID_DEFAULTS_), INTENT(IN) :: DEFAULTS_SOLID
115 type (glob_therm_) , intent(in) :: glob_therm
116
117
118
119 INTEGER I,J,IP,NF1,NF2,IGTYP,NUVAR,IREP,NCC,IDEF,JHBE,IPID
120 INTEGER ID,NPTR,NPTS,NPTT,NLAY,L_PLA,L_SIGB,IBOLTP,IINT,IMAS_DS
121 CHARACTER(LEN=NCHARTITLE)::TITR
122 INTEGER NC(MVSIZ,10),MAT(MVSIZ), PID(MVSIZ), NGL(MVSIZ)
123 double precision
124 . xx(mvsiz,10), yy(mvsiz,10), zz(mvsiz,10)
126 . fv,
127 . volu(mvsiz), mass(mvsiz),volg(mvsiz),
128 . volp(mvsiz,5), sti(mvsiz),deltax(mvsiz),deltax2(mvsiz),
129 . vx(mvsiz,10), vy(mvsiz,10), vz(mvsiz,10),
130 . px(mvsiz,10,5),py(mvsiz,10,5),pz(mvsiz,10,5),
131 . rx(mvsiz),ry(mvsiz),rz(mvsiz),
132 . sx(mvsiz),sy(mvsiz),sz(mvsiz),
133 . tx(mvsiz),ty(mvsiz),tz(mvsiz),
134 . e1x(mvsiz),e1y(mvsiz),e1z(mvsiz),e2x(mvsiz),
135 . e2y(mvsiz),e2z(mvsiz),e3x(mvsiz),e3y(mvsiz),e3z(mvsiz),
136 . nx(mvsiz,10,5), wip(5,5) ,alph(5,5),beta(5,5),masscp(mvsiz),
137 . rhocp(mvsiz),temp0(mvsiz), aire(mvsiz), dtx(mvsiz)
139
140
141 TYPE(L_BUFEL_) ,POINTER :: LBUF
142 TYPE(G_BUFEL_) ,POINTER :: GBUF
143 TYPE(BUF_MAT_) ,POINTER :: MBUF
144
145 DATA wip / 1. ,0. ,0. ,0. ,0. ,
146 2 0. ,0. ,0. ,0. ,0. ,
147 3 0. ,0. ,0. ,0. ,0. ,
148 4 0.25,0.25,0.25,0.25,0. ,
149 5 0.45,0.45,0.45,0.45,-0.8/
150 DATA alph /0. ,0. ,0. ,0. ,0. ,
151 2 0. ,0. ,0. ,0. ,0. ,
152 3 0. ,0. ,0. ,0. ,0. ,
153 4 0.58541020,0.58541020,0.58541020,0.58541020,0. ,
154 5 0.5 ,0.5 ,0.5 ,0.5 ,0.25/
155 DATA beta /0. ,0. ,0. ,0. ,0. ,
156 2 0. ,0. ,0. ,0. ,0. ,
157 3 0. ,0. ,0. ,0. ,0. ,
158 4 0.13819660,0.13819660,0.13819660,0.13819660,0. ,
159 5 0.16666666666667,0.16666666666667,0.16666666666667,
160 5 0.16666666666667,0.25/
161
162
163
164 gbuf => elbuf_str%GBUF
165
166 irep = iparg(35)
167 igtyp = iparg(38)
168 jhbe = iparg(23)
169 iint = iparg(36)
170 nf1 = nft+1
171 nf2 = nf1-numels8
172 IF (isrot == 1) nf2=1
173 idef = 0
174 nptr = elbuf_str%NPTR
175 npts = elbuf_str%NPTS
176 nptt = elbuf_str%NPTT
177 nlay = elbuf_str%NLAY
178
179 iboltp = iparg(72)
180 jcvt = iparg(37)
181 imas_ds = defaults_solid%IMAS
182
183 DO i=lft,llt
184 rhocp(i) = pm(69,ixs(1,nft+i))
185 temp0(i) = pm(79,ixs(1,nft+i))
186 ENDDO
187
189 1 x ,v ,ixs(1,nf1) ,ixs10(1,nf2) ,xx ,
190 2 yy ,zz ,vx ,vy ,vz ,
191 3 nc ,ngl ,mat ,pid ,mass ,
192 4 dtelem(nf1),sti ,gbuf%SIG ,gbuf%EINT ,gbuf%RHO,
193 5 gbuf%QVIS ,temp0 ,temp ,gbuf%SMSTR ,nel ,
194 6 glob_therm%NINTEMP)
195
197 . xx, yy, zz, px,py,pz, nx,
198 . rx, ry, rz, sx, sy, sz, tx, ty, tz,volu,gbuf%VOL,
199 . elbuf_str,volg)
200 CALL s10len3(volp,ngl,deltax,deltax2,
201 . px,py,pz, volu,gbuf%VOL,volg,
202 . rx, ry, rz, sx, sy, sz, tx, ty, tz,
203 . nel,mat,pm,gbuf%DT_PITER,iint)
205 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
206 . e1x ,e2x ,e3x ,e1y ,e2y ,e3y ,e1z ,e2z ,e3z )
207 IF (igtyp == 6 .OR. igtyp == 21)
208 .
CALL smorth3(pid ,geo ,igeo ,skew ,irep ,gbuf%GAMA ,
209 . rx ,ry ,rz ,sx ,sy ,sz ,tx ,ty ,tz ,
210 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
211 . rx ,ry ,rz ,sx ,sy ,sz ,nsigi,sigsp,nsigs,
212 . sigi ,ixs ,x ,jhbe ,ptsol,nel ,iparg(28))
213
214
215
216 IF(jthe < 0) THEN
217 DO i=lft,llt
218 masscp(i) = zero
219 ENDDO
220 ENDIF
221 IF(jthe /=0)
CALL atheri(mat,pm,gbuf%TEMP)
222
223
224
225 DO ip=1,npt
226 lbuf => elbuf_str%BUFLY(1)%LBUF(ip,1,1)
227 mbuf => elbuf_str%BUFLY(1)%MAT(ip,1,1)
228 l_pla = elbuf_str%BUFLY(1)%L_PLA
229 l_sigb =elbuf_str%BUFLY(1)%L_SIGB
230
231 IF(isrot /= 1)THEN
232 DO i=lft,llt
233 volu(i)=volp(i,ip)
234 lbuf%VOL(i)=volu(i)
235 ENDDO
236 ELSE
237 DO i=lft,llt
238 lbuf%VOL(i)=volu(i)
239 ENDDO
240 ENDIF
241 IF(jthe /=0)
CALL atheri(mat,pm,lbuf%TEMP)
242 IF (jthe == 0 .and. glob_therm%NINTEMP > 0) THEN
243 tempel(1:nel) = zero
244 DO j = 1,10
245 DO i=1,nel
246 tempel(i)= tempel(i) + nx(i,j,ip)*temp(nc(i,j))
247 ENDDO
248 ENDDO
249 ELSE
250 tempel(1:nel) = temp0(1:nel)
251 END IF
252
253 CALL matini(pm ,ixs ,nixs ,x ,
254 . geo ,ale_connectivity ,detonators,iparg ,
255 . sigi ,nel ,skew ,igeo ,
256 . ipart ,iparts ,
257 . mat ,ipm ,nsigs ,numsol ,ptsol ,
258 . ip ,ngl ,npf ,tf ,bufmat ,
259 . gbuf ,lbuf ,mbuf ,elbuf_str ,iloadp ,
260 . facload, deltax ,tempel ,mat_param )
261
262
263
264 aire(:) = zero
265 CALL dtmain(geo ,pm ,ipm ,pid ,mat ,fv ,
266 . lbuf%EINT ,lbuf%TEMP ,lbuf%DELTAX ,lbuf%RK ,lbuf%RE ,bufmat, deltax, aire,
267 . volu, dtx , igeo,igtyp)
268
269
270
271 CALL s10msi(lbuf%RHO,mass,volu,dtelem(nft+1),sti,
272 . lbuf%OFF,lbuf%SIG ,lbuf%EINT ,
273 . gbuf%OFF,gbuf%SIG,gbuf%EINT,gbuf%RHO,wip(npt,ip),
274 . masscp ,rhocp ,gbuf%FILL,nel, dtx)
275
276
277
278
279 IF(mtn>=28)THEN
280 nuvar = ipm(8,ixs(1,nft+1))
281 idef =1
282 ELSE
283 nuvar = 0
284 IF(mtn == 14 .OR. mtn == 12)THEN
285 idef =1
286 ELSEIF(mtn == 24)THEN
287 idef =1
288 ELSEIF(istrain == 1)THEN
289 IF(mtn == 1)THEN
290 idef =1
291 ELSEIF(mtn == 2)THEN
292 idef =1
293 ELSEIF(mtn == 4)THEN
294 idef =1
295 ELSEIF(mtn == 3.OR.mtn == 6.OR.mtn == 10.OR.
296 . mtn == 21.OR.mtn == 22.OR.mtn == 23.
297 . or.mtn == 49)THEN
298 idef =1
299 ENDIF
300 ENDIF
301
302 ENDIF
303
305 . lbuf%SIG,pm, lbuf%VOL,sigsp,
306 . sigi,lbuf%EINT,lbuf%RHO,mbuf%VAR ,lbuf%STRA,
307 . ixs ,nixs,nsigi, ip, nuvar,
308 . nel,iuser,idef,nsigs ,strsglob,
309 . straglob,jhbe,igtyp,x,lbuf%GAMA,
310 . mat ,lbuf%PLA,l_pla,ptsol,lbuf%SIGB,
311 . l_sigb,ipm ,bufmat ,lbuf%VOL0DP)
312
313
314
315
316 IF (isigi /= 0 .AND. isorth/=0) THEN
317 lbuf%SIGL = lbuf%SIG
318 ENDIF
319
320 ENDDO
321
322 IF (iboltp /=0) THEN
323 CALL sboltini(e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
325 ENDIF
326
327
328
329 CALL s10mass3(mass,mas,partsav,iparts(nf1),mss(1,nf1),volu,
330 . xx ,yy ,zz ,vx ,vy ,vz ,
331 . nc ,sti,stifn ,deltax2 ,mssx(1,nf1),masscp,
332 . mcp ,mcps(1,nf1),mcpsx(1,nf1),in ,stifr,
333 . ins(1,nf1),mssa(nf1),x ,gbuf%FILL ,imas_ds)
334
335
336
337 CALL failini(elbuf_str,nptr,npts,nptt,nlay,
338 . ipm,sigsp,nsigi,fail_ini ,
339 . sigi,nsigs,ixs,nixs,ptsol,
340 . rnoise,perturb,mat_param)
341
342
343
344
345 IF(i7stifs/=0)THEN
346 ncc=10
347 CALL sbulk3(volu ,nc ,ncc,mat,pm ,
348 2 volnod,bvolnod,vns(1,nf1),bns(1,nf1),
349 3 vnsx(1,nf1),bnsx(1,nf1) ,gbuf%FILL)
350 ENDIF
351
352 DO i=lft,llt
353 IF(ixs(10,i+nft)/=0) THEN
354 IF( igtyp/=0 .AND.igtyp/=6
355 . .AND.igtyp/=14.AND.igtyp/=15)THEN
356 ipid=ixs(nixs-1,i+nft)
358 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ipid),ltitr)
360 . msgtype=msgerror,
361 . anmode=aninfo_blind_1,
363 . c1=titr)
364 ENDIF
365 ENDIF
366 ENDDO
367
368 RETURN
subroutine atheri(mat, pm, temp)
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 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 s10msi(rho, mass, volu, dtelem, sti, off, sig, eint, offg, sigg, eintg, rhog, wip, masscp, rhocp, fill, nel, dtx)
subroutine s10mass3(mass, ms, partsav, ipart, mss, volu, xx, yy, zz, vx, vy, vz, nc, sti, stifn, deltax2, mssx, masscp, mcp, mcps, mcpsx, in, stifr, ins, mssa, x, fill, imas_ds)
subroutine sigin20b(sig, pm, vol, sigsp, sigi, eint, rho, uvar, eps, ix, nix, nsigi, ipt, nuvar, nel, iuser, idef, nsigs, strsglob, straglob, jhbe, igtyp, x, bufgama, mat, epsp, l_pla, pt, sigb, l_sigb, ipm, bufmat, voldp)
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 s10coor3(x, v, ixs, ixs10, xx, yy, zz, vx, vy, vz, nc, ngl, mxt, ngeo, mass, dtelem, sti, sigg, eintg, rhog, qg, temp0, temp, sav, nel, nintemp)
subroutine s10deri3(vol, ngl, xx, yy, zz, px, py, pz, nx, rx, ry, rz, sx, sy, sz, tx, ty, tz, volu, voln, elbuf_str, volg)
subroutine s10len3(vol, ngl, deltax, deltax2, px, py, pz, volu, voln, volg, rx, ry, rz, sx, sy, sz, tx, ty, tz, nel, mxt, pm, v_piter, iint)
subroutine sreploc3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z)
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)