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,IR,NFUNC,NUVAR,NUPARAM,
127 . NVARF,IRUPT,NUMBER_FAILURE,IMAT,NTABL_FAIL,
128 . NIPARAM
129 INTEGER IFUNC(MAXFUNC), LF_DAMMX
130 INTEGER, DIMENSION(:), POINTER :: ITABL_FAIL, IPARAMF
132 . vis(mvsiz),et(mvsiz),
133 . dpla(8*mvsiz), epsp(8*mvsiz),tstar(mvsiz),sxx(mvsiz),
134 . syy(mvsiz),szz(mvsiz),sxy
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 imat = mat(1)
164
165 IF (mtn == 1) THEN
167 1 pm, off, gbuf%SIG, gbuf%EINT,
168 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
169 3 nel, d1, d2, d3,
170 4 d4, d5, d6, voln,
171 5 volgp, deltax, rho0, dvol,
172 6 vd2, vis, mat, nc,
173 7 ngl, geo, pid, dt2t,
174 8 neltst, ityptst, gbuf%OFF, mssa,
175 9 dmels, bufly, ssp, ity,
176 a npt, jtur, jthe, jsms)
177 ELSEIF (mtn == 2) THEN
178 CALL m2law8(mat_elem%MAT_PARAM(imat),
179 1 pm, off, gbuf%SIG, gbuf%EINT,
180 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
181 3 nel, d1, d2, d3,
182 4 d4, d5, d6, voln,
183 5 volgp, deltax, rho0, dvol,
184 6 vd2, vis, mat, nc,
185 7 ngl, geo, pid, gbuf%PLA,
186 8 dt2t, neltst, ityptst, jplasol,
187 9 gbuf%OFF, dpla, epsp, tstar,
188 a et, mssa, dmels, bufly,
189 b ssp, ity, npt, jtur,
190 c jthe, jsms)
191
192 ELSEIF (mtn == 3) THEN
194 1 pm, off, gbuf%SIG, gbuf%PLA,
195 2 gbuf%EINT,gbuf%RHO, d1, d2,
196 3 d3, d4, d5, d6,
197 4 voln, volgp, dvol, mat,
198 5 ngl, jplasol, dpla, epsp,
199 6 tstar, bufly, nel, npt)
201 1 pm, off, gbuf%SIG, gbuf%EINT,
202 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, gbuf%PLA,
203 3 gbuf%TEMP,gbuf%RE, stifn, nel,
204 4 d1, d2, d3, voln,
205 5 deltax, rho0, dvol, vd2,
206 6 vis, mat, nc, ngl,
207 7 geo, pid, dt2t, neltst,
208 8 ityptst, gbuf%OFF, mssa, dmels,
209 9 bufly, ssp, ity, npt,
210 a jtur, jthe, jsms)
211 ELSEIF (mtn == 41) THEN
212 ELSEIF (mtn>=28) THEN
213
214 nuvar = 0
215 DO i=1,nel
216 nuvar =
max(nuvar,ipm(8,mat(i)))
217 ENDDO
218
219 CALL mulaw8(timers,output,
220 1 1, nel, mtn,
221 2 npt, d1, d2, d3,
222 3 d4, d5, d6, pm,
223 4 off, gbuf%SIG, gbuf%EINT,gbuf%RHO,
224 5 gbuf%QVIS,gbuf%VOL, gama, bufly,
225 6 bufmat, tf, npf, stifn,
226 7 voln, volgp, deltax, rho0,
227 8 dvol, vd2, vis, gbuf%EPSD,
228 9 mat, nc, ngl, wxx,
229 a wyy, wzz, geo, pid,
230 b dt2t, neltst, ityptst, jplasol,
231 c rx, ry, rz, sx,
232 d sy, sz, tx, ty,
233 e tz, ismstr, ipm, gbuf%OFF,
234 f isorth, et, mssa, dmels,
235 g table, ihet, ssp, itask,
236 h nel, ity, jsms, jsph,
237 i jthe, jtur, mat_elem%NUMMAT,
238 j mat_elem%MAT_PARAM, svis, snpc,
239 k dt1, tt, maxfunc, npropmi,
240 l npropg, npropm, imon_mat, numgeo,
241 m sbufmat, stf, ntable)
242
243 ENDIF
244
245
246
247 IF ((itask==0).AND.((imon_mat==1)))
CALL startime(timers,121)
248 IF (ifailure == 1)THEN
249 IF (mtn < 28) THEN
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 ntabl_fail = mat_elem%MAT_PARAM(imat)%FAIL(ir)%NTABLE
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(mat_param, 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)