56 SUBROUTINE mmain8(TIMERS , OUTPUT, PM ,GEO ,ELBUF_STR,MAT_ELEM ,
58 3 NPF ,BUFMAT ,STIFN ,X ,D1 ,
59 4 D2 ,D3 ,D4 ,D5 ,D6 ,
60 5 VOLGP ,DELTAX ,VOLN ,DVOL ,VD2 ,
61 6 RHO0 ,MAT ,NC ,NGL ,FV ,
62 7 NEL ,WXX ,WYY ,WZZ ,PID ,
63 8 DT2T ,NELTST ,ITYPTST ,RX ,RY ,
64 9 RZ ,SX ,SY ,SZ ,TX ,
65 A TY ,TZ ,OFF ,IPM ,GAMA ,
66 B MSSA ,DMELS ,TABLE ,SSP ,ITASK ,
67 C SVIS ,SNPC ,NUMGEO ,SBUFMAT ,STF,
73 USE output_mod,
ONLY : output_
78 USE fail_spalling_s_mod
82#include "implicit_f.inc"
90#include
"vect01_c.inc"
95#include "timeri_c.inc"
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) ::
105 INTEGER,
INTENT(IN) :: NTABLE
106 INTEGER (*), IPARG(*), NPF(*),MAT(*),NC(*),NGL(*),
107 . NEL, NELTST, ITYPTST, PID(MVSIZ,*),IPM(NPROPMI,*),
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
121 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
122 TYPE (MAT_ELEM_) ,
TARGET ,
INTENT(INOUT) :: MAT_ELEM
126 INTEGER I,J,JJ(6),J1,J2,IR,NFUNC,NUVAR,NUPARAM,NUVARR,
127 . NVARF,IRUPT,NUMBER_FAILURE,IADBUF,IMAT,NTABL_FAIL,
129 INTEGER IFUNC(MAXFUNC),
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
141 gbuf => elbuf_str%GBUF
142 bufly => elbuf_str%BUFLY(1)
166 1 pm, off, gbuf%SIG, gbuf%EINT,
167 2 gbuf%RHO, gbuf%QVIS,gbuf%VOL, stifn,
170 5 volgp, deltax, rho0, dvol,
172 7 ngl, geo, pid, dt2t,
173 8 neltst, ityptst, gbuf%OFF, mssa,
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,
182 5 volgp, deltax, rho0, dvol,
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,
191 ELSEIF (mtn == 3)
THEN
193 1 pm, off, gbuf%SIG, gbuf%PLA,
194 2 gbuf%EINT,gbuf%RHO, d1, d2,
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,
204 5 deltax, rho0, dvol, vd2,
206 7 geo, pid, dt2t, neltst,
207 8 ityptst, gbuf%OFF, mssa, dmels,
208 9 bufly, ssp, ity, npt,
210 ELSEIF (mtn == 41)
THEN
211 ELSEIF (mtn>=28)
THEN
218 CALL mulaw8(timers,output,
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,
228 a wyy, wzz, geo, pid,
229 b dt2t, neltst, ityptst, jplasol,
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)
246 IF ((itask==0).AND.((imon_mat==1)))
CALL startime(timers,121)
247 IF (ifailure == 1)
THEN
250 number_failure = mat_elem%MAT_PARAM(imat)%NFAIL
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)
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
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)
284 2 tt ,dt1 ,uparamf,ngl ,
285 4 sxx ,syy ,szz ,sxy ,syz ,szx,
286 5 dpla(j1),epsp(j1),tstar,uvarf,off,
288 ELSEIF(irupt == 2)
THEN
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
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
302 CALL fail_spalling_s(nel ,nuparam,
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
311 2 tt ,dt1 ,uparamf,ngl ,
312 4 sxx ,syy ,szz ,sxy ,syz ,szx,
313 5 dpla(j1),lbuf%PLA,uvarf ,off ,
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 )
324 ELSEIF (irupt == 27)
THEN
327 2 dt1 ,uparamf ,ngl ,
328 3 sxx ,syy ,szz ,sxy ,syz ,szx,
329 4 lbuf%PLA ,dpla(j1) ,epsp(j1) ,uvarf,
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 )
339 ELSEIF (irupt == 37)
THEN
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,
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 )
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 )
367 lbuf%SIG(jj(1)+i) = sxx(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)
380 IF ((itask==0).AND.((imon_mat==1)))
CALL stoptime(timers,121)
381 IF (impl_s>0)
CALL put_etfac(nel ,et ,mtn )
383 IF(bufly%L_SSP /=0 )
THEN
384 bufly%LBUF(1,1,1)%SSP(1:nel) = ssp(1:nel)
subroutine mmain8(timers, output, pm, geo, elbuf_str, mat_elem, ix, iparg, v, tf, npf, bufmat, stifn, x, d1, d2, d3, d4, d5, d6, volgp, deltax, voln, dvol, vd2, rho0, mat, nc, ngl, fv, nel, wxx, wyy, wzz, pid, dt2t, neltst, ityptst, rx, ry, rz, sx, sy, sz, tx, ty, tz, off, ipm, gama, mssa, dmels, table, ssp, itask, svis, snpc, numgeo, sbufmat, stf, ntable)