69
70
71
72 USE timer_mod
73 USE output_mod, ONLY : output_
75 USE mat_elem_mod
76 USE mulaw8_mod
77 USE elbufdef_mod
78 USE fail_spalling_s_mod
79
80
81
82#include "implicit_f.inc"
83
84
85
86#include "mvsiz_p.inc"
87
88
89
90#include "vect01_c.inc"
91#include "com08_c.inc"
92#include "scr19_c.inc"
93#include "param_c.inc"
94#include "impl1_c.inc"
95#include "timeri_c.inc"
96
97
98
99 TYPE(TIMER_), INTENT(INOUT) :: TIMERS
100 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
101 INTEGER, INTENT(IN) :: SNPC
102 INTEGER, INTENT(IN) :: NUMGEO
103 INTEGER, INTENT(IN) :: SBUFMAT
104 INTEGER, INTENT(IN) :: STF
105 INTEGER, INTENT(IN) :: NTABLE
106 INTEGER IX(*), IPARG(*), NPF(*),MAT(*),NC(*),NGL(*),
107 . NEL, NELTST, ITYPTST, PID(MVSIZ,*),IPM(NPROPMI,*),
108 . ITASK
110 . pm(npropm,*), geo(*), fv(*), v(*), tf(*),
111 . bufmat(*), stifn(*), x(3,*),wxx(*),wyy(*),wzz(*),
112 . d1(mvsiz,*),d2(mvsiz,*),d3(mvsiz,*),
113 . d4(mvsiz,*),d5(mvsiz,*),d6(mvsiz,*),volgp(mvsiz,*),
114 . voln(mvsiz),dvol(mvsiz),vd2(mvsiz),rho0(mvsiz),deltax(mvsiz),
115 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz) ,
116 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
117 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) ,off(mvsiz) ,
118 . gama(mvsiz,6),dt2t, mssa(*) ,dmels(*) ,ssp(mvsiz)
119 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
120 TYPE(TTABLE) TABLE(*)
121 TYPE (ELBUF_STRUCT_), TARGET :: ELBUF_STR
122 TYPE (MAT_ELEM_) ,TARGET ,INTENT(INOUT) :: MAT_ELEM
123
124
125
126 INTEGER I,J,JJ(6),J1,J2,IR,NFUNC,NUVAR,NUPARAM,NUVARR,
127 . NVARF,IRUPT,NUMBER_FAILURE,IADBUF,IMAT,NTABL_FAIL,
128 . NIPARAM
129 INTEGER IFUNC(MAXFUNC), LF_DAMMX
130 INTEGER, DIMENSION(:), POINTER :: ITABL_FAIL, IPARAMF
132 . qnew(mvsiz),vis(mvsiz),epsd(mvsiz),et(mvsiz),
133 . dpla(8*mvsiz), epsp(8*mvsiz),tstar(mvsiz),sxx(mvsiz),
134 . syy(mvsiz),szz(mvsiz),sxy(mvsiz),syz(mvsiz),szx(mvsiz)
136 . DIMENSION(:) ,POINTER :: uvarf,uparamf,dfmax,tdele
137 TYPE(G_BUFEL_) ,POINTER :: GBUF
138 TYPE(L_BUFEL_) ,POINTER :: LBUF
139 TYPE (BUF_LAY_),POINTER :: BUFLY
140
141 gbuf => elbuf_str%GBUF
142 bufly => elbuf_str%BUFLY(1)
143
144 DO i=1,6
145 jj(i) = nel*(i-1)
146 ENDDO
147
148
149 DO i=1,nel
150 et(i)=zero
151 ENDDO
152
153 DO i=1,nel
154 vis(i) = zero
155 svis(i,1)= zero
156 svis(i,2)= zero
157 svis(i,3)= zero
158 svis(i,4)= zero
159 svis(i,5)= zero
160 svis(i,6)= zero
161 tstar(i) = zero
162 ENDDO
163
164 IF (mtn == 1) THEN
166 1 pm, off, gbuf%SIG, gbuf%EINT,
167 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
168 3 nel, d1, d2, d3,
169 4 d4, d5, d6, voln,
170 5 volgp, deltax, rho0, dvol,
171 6 vd2, vis, mat, nc,
172 7 ngl, geo, pid, dt2t,
173 8 neltst, ityptst, gbuf%OFF, mssa,
174 9 dmels, bufly, ssp, ity,
175 a npt, jtur, jthe, jsms)
176 ELSEIF (mtn == 2) THEN
178 1 pm, off, gbuf%SIG, gbuf%EINT,
179 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
180 3 nel, d1, d2, d3,
181 4 d4, d5, d6, voln,
182 5 volgp, deltax, rho0, dvol,
183 6 vd2, vis, mat, nc,
184 7 ngl, geo, pid, gbuf%PLA,
185 8 dt2t, neltst, ityptst, jplasol,
186 9 gbuf%OFF, dpla, epsp, tstar,
187 a et, mssa, dmels, bufly,
188 b ssp, ity, npt, jtur,
189 c jthe, jsms)
190
191 ELSEIF (mtn == 3) THEN
193 1 pm, off, gbuf%SIG, gbuf%PLA,
194 2 gbuf%EINT,gbuf%RHO, d1, d2,
195 3 d3, d4, d5, d6,
196 4 voln, volgp, dvol, mat,
197 5 ngl, jplasol, dpla, epsp,
198 6 tstar, bufly, nel, npt)
200 1 pm, off, gbuf%SIG, gbuf%EINT,
201 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, gbuf%PLA
202 3 gbuf%TEMP,gbuf%RE, stifn, nel,
203 4 d1, d2, d3, voln,
204 5 deltax, rho0, dvol, vd2,
205 6 vis, mat, nc, ngl,
206 7 geo, pid, dt2t, neltst,
207 8 ityptst, gbuf%OFF, mssa, dmels,
208 9 bufly, ssp, ity
209 a jtur, jthe, jsms)
210 ELSEIF (mtn == 41) THEN
211 ELSEIF (mtn>=28) THEN
212
213 nuvar = 0
214 DO i=1,nel
215 nuvar =
max(nuvar,ipm(8,mat(i)))
216 ENDDO
217
218 CALL mulaw8(timers,output,
219 1 1, nel, mtn,
220 2 npt, d1, d2, d3,
221 3 d4, d5, d6, pm,
222 4 off, gbuf%SIG, gbuf%EINT,gbuf%RHO,
223 5 gbuf%QVIS,gbuf%VOL, gama, bufly,
224 6 bufmat, tf, npf, stifn,
225 7 voln, volgp, deltax, rho0,
226 8 dvol, vd2, vis, gbuf%EPSD,
227 9 mat, nc, ngl, wxx,
228 a wyy, wzz, geo, pid,
229 b dt2t, neltst, ityptst, jplasol,
230 c rx, ry, rz, sx,
231 d sy, sz, tx, ty,
232 e tz, ismstr, ipm, gbuf%OFF,
233 f isorth, et, mssa, dmels,
234 g table, ihet, ssp, itask,
235 h nel, ity, jsms, jsph,
236 i jthe, jtur, mat_elem%NUMMAT,
237 j mat_elem%MAT_PARAM, svis, snpc,
238 k dt1, tt, maxfunc, npropmi,
239 l npropg, npropm, imon_mat, numgeo,
240 m sbufmat, stf, ntable)
241
242 ENDIF
243
244
245
246 IF ((itask==0).AND.((imon_mat==1)))
CALL startime(timers,121)
247 IF (ifailure == 1)THEN
248 IF (mtn < 28) THEN
249 imat = mat(1)
250 number_failure = mat_elem%MAT_PARAM(imat)%NFAIL
251
252 DO ir = 1,number_failure
253 nuparam = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NUPARAM
254 niparam = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NIPARAM
255 uparamf =>mat_elem%MAT_PARAM(imat)%FAIL(ir)%UPARAM(1:nuparam)
256 iparamf =>mat_elem%MAT_PARAM(imat)%FAIL(ir)%IPARAM(1:niparam)
257 nfunc = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NFUNC
258 irupt = mat_elem%MAT_PARAM(imat)%FAIL(ir)%IRUPT
259 ifunc(1:nfunc) = mat_elem%MAT_PARAM(imat)%FAIL(ir)%IFUNC(1:nfunc
260
261 itabl_fail => mat_elem%MAT_PARAM(imat)%FAIL(ir)%TABLE(1:ntabl_fail)
262
263 DO j=1,npt
264 lbuf => bufly%LBUF(1,1,j)
265 uvarf => bufly%FAIL(1,1,j)%FLOC(ir)%VAR
266 nvarf = bufly%FAIL(1,1,j)%FLOC(ir)%NVAR
267 dfmax => bufly%FAIL(1,1,j)%FLOC(ir)%DAMMX
268 tdele => bufly%FAIL(1,1,j)%FLOC(ir)%TDEL
269 lf_dammx = bufly%FAIL(1,1,j)%FLOC(ir)%LF_DAMMX
270
271 j1 = 1 + nel*(j-1)
272 DO i=1,nel
273 sxx(i) = lbuf%SIG(jj(1)+i)
274 syy(i) = lbuf%SIG(jj(2)+i)
275 szz(i) = lbuf%SIG(jj(3)+i)
276 sxy(i) = lbuf%SIG(jj(4)+i)
277 syz(i) = lbuf%SIG(jj(5)+i)
278 szx(i) = lbuf%SIG(jj(6)+i)
279 ENDDO
280
281 IF (irupt == 1)THEN
282
284 2 tt ,dt1 ,uparamf,ngl ,
285 4 sxx ,syy ,szz ,sxy ,syz ,szx,
286 5 dpla(j1),epsp(j1),tstar,uvarf,off,
287 6 dfmax ,tdele)
288 ELSEIF(irupt == 2)THEN
289
291 2 tt ,dt1 ,uparamf,ngl ,
292 4 sxx ,syy ,szz ,sxy ,syz ,szx,
293 5 uvarf,off ,dfmax ,tdele )
294 ELSEIF(irupt == 3)THEN
295
297 2 tt ,dt1 ,uparamf,ngl ,
298 4 sxx ,syy ,szz ,sxy ,syz ,szx,
299 5 dpla(j1),uvarf,off,dfmax,tdele)
300 ELSEIF(irupt == 8)THEN
301
302 CALL fail_spalling_s(nel ,nuparam,
303 2 tt ,uparamf,ngl ,
304 4 sxx ,syy ,szz ,sxy ,syz ,szx,
305 5 dpla(j1),epsp(j1),tstar,off,
306 6 lf_dammx,dfmax ,tdele,gbuf%OFF,
307 7 niparam ,iparamf, mvsiz)
308 ELSEIF(irupt == 9)THEN
309
311 2 tt ,dt1 ,uparamf,ngl ,
312 4 sxx ,syy ,szz ,sxy ,syz ,szx,
313 5 dpla(j1),lbuf%PLA,uvarf ,off ,
314 6 dfmax ,tdele)
315
316 ELSEIF (irupt == 23) THEN
318 1 nel ,nvarf ,npf ,tf ,tt ,
319 2 uparamf ,ngl ,deltax ,
320 3 sxx ,syy ,szz ,sxy ,syz ,szx,
321 4 dpla(j1) ,epsp(j1) ,tstar,uvarf ,ntabl_fail,itabl_fail,
322 5 off ,table ,dfmax,tdele ,nfunc ,ifunc )
323
324 ELSEIF (irupt == 27) THEN
326 1 nel ,nvarf ,tt ,
327 2 dt1 ,uparamf ,ngl ,
328 3 sxx ,syy ,szz ,sxy ,syz ,szx,
329 4 lbuf%PLA ,dpla(j1) ,epsp(j1) ,uvarf,
330 5 off ,dfmax ,tdele)
331
332 ELSEIF (irupt == 30) THEN
334 1 nel ,nuparam ,nvarf ,nfunc ,ifunc ,deltax ,
335 2 npf ,tf ,tt ,bufmat ,tdele ,
336 3 ngl ,dpla(j1) ,uvarf ,off ,dfmax ,lbuf%DMGSCL,
337 4 sxx ,syy ,szz ,sxy ,syz ,szx )
338
339 ELSEIF (irupt == 37) THEN
340
342 1 nel ,nvarf ,npf ,tf ,tt
343 2 uparamf ,ngl ,deltax ,
344 3 sxx ,syy ,szz ,sxy ,syz ,szx,
345 4 lbuf%PLA ,dpla(j1) ,epsp(j1) ,tstar,uvarf,
346 5 off ,dfmax,tdele ,
347 6 nfunc ,ifunc )
348
349
350 ELSEIF (irupt == 38) THEN
352 1 nel ,nuparam ,nvarf ,nfunc ,ifunc ,
353 2 npf ,tf ,tt ,dt1 ,uparamf,
354 3 ngl ,dpla(j1) ,epsp(j1) ,uvarf ,off ,
355 4 sxx ,syy ,szz ,sxy ,syz ,szx ,
356 5 dfmax ,tdele ,deltax )
357
358
359 ELSEIF (irupt == 40) THEN
361 1 nel ,nuparam ,nvarf ,tt ,dt1 ,uparamf,
362 2 sxx ,syy ,szz ,sxy ,syz ,szx ,
363 3 ngl ,dpla(j1) ,uvarf ,off ,dfmax ,tdele )
364 ENDIF
365
366 DO i=1,nel
367 lbuf%SIG(jj(1)+i) = sxx(i)
368 lbuf%SIG(jj(2)+i) = syy(i)
369 lbuf%SIG(jj(3)+i) = szz(i)
370 lbuf%SIG(jj(4)+i) = sxy(i)
371 lbuf%SIG(jj(5)+i) = syz(i)
372 lbuf%SIG(jj(6)+i) = szx(i)
373 ENDDO
374
375 enddo
376 ENDDO
377 ENDIF
378 ENDIF
379
380 IF ((itask==0).AND.((imon_mat==1)))
CALL stoptime(timers,121)
381 IF (impl_s>0)
CALL put_etfac(nel ,et ,mtn )
382
383 IF(bufly%L_SSP /=0 )THEN
384 bufly%LBUF(1,1,1)%SSP(1:nel) = ssp(1:nel)
385 ENDIF
386
387 RETURN
subroutine fail_biquad_s(nel, nuparam, nuvar, mfunc, kfunc, aldt, npf, tf, time, uparam, tdele, ngl, dpla, uvar, off, dfmax, dmgscl, signxx, signyy, signzz, signxy, signyz, signzx)
subroutine fail_emc(nel, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, uvar, off, dfmax, tdele)
subroutine fail_johnson(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, off, dfmax, tdele)
subroutine fail_orthbiquad_s(nel, nuparam, nuvar, mfunc, kfunc, npf, tf, time, timestep, uparam, ngl, dpla, epsp, uvar, off, signxx, signyy, signzz, signxy, signyz, signzx, dfmax, tdele, aldt)
subroutine fail_rtcl_s(nel, nuparam, nuvar, time, timestep, uparam, signxx, signyy, signzz, signxy, signyz, signzx, ngl, dpla, uvar, off, dfmax, tdele)
subroutine fail_tab_old_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, plas, dpla, epsp, tstar, uvar, off, dfmax, tdele, nfunc, ifunc)
subroutine fail_tab_s(nel, nuvar, npf, tf, time, uparam, ngl, aldt, signxx, signyy, signzz, signxy, signyz, signzx, dpla, epsp, tstar, uvar, ntablf, itablf, off, table, dfmax, tdele, nfunc, ifunc)
subroutine fail_tbutcher_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, uvar, off, dfmax, tdele)
subroutine fail_wierzbicki_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, pla, uvar, off, dfmax, tdele)
subroutine fail_wilkins_s(nel, nuparam, nuvar, time, timestep, uparam, ngl, signxx, signyy, signzz, signxy, signyz, signzx, dpla, uvar, off, dfmax, tdele)
subroutine m1law8(pm, off, sig, eint, rho, qold, vol, stifn, nel, d1, d2, d3, d4, d5, d6, vnew, volgp, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, dt2t, neltst, ityptst, offg, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
subroutine m2law8(pm, off, sig, eint, rho, qold, vol, stifn, nel, d1, d2, d3, d4, d5, d6, vnew, volgp, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, epseq, dt2t, neltst, ityptst, ipla, offg, dpla, epsp, tstar, etse, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
subroutine m3law8(pm, off, sig, epseq, eint, rho, d1, d2, d3, d4, d5, d6, vnew, volgp, dvol, mat, ngl, ipla, dpla, epd, tstar, bufly, nel, npt)
subroutine meos8(pm, off, sig, eint, rho, qold, vol, rk, t, re, stifn, nel, d1, d2, d3, vnew, deltax, rho0, dvol, vd2, vis, mat, nc, ngl, geo, pid, dt2t, neltst, ityptst, offg, mssa, dmels, bufly, ssp, ity, npt, jtur, jthe, jsms)
subroutine put_etfac(nel, et, mtn)
subroutine startime(event, itask)
subroutine stoptime(event, itask)