54 1 ELBUF_STR,IOUT ,IPROP ,IMAT ,NGL ,TIME ,TIMESTEP,FR_WAVE,
55 2 XX1 ,XX2 ,XX3 ,XX4 ,XX5 ,XX6 ,XX7 ,XX8 ,
56 3 YY1 ,YY2 ,YY3 ,YY4 ,YY5 ,YY6 ,YY7 ,YY8 ,
57 4 ZZ1 ,ZZ2 ,ZZ3 ,ZZ4 ,ZZ5 ,ZZ6 ,ZZ7 ,ZZ8 ,
58 5 UX1 ,UX2 ,UX3 ,UX4 ,UX5 ,UX6 ,UX7 ,UX8 ,
59 6 UY1 ,UY2 ,UY3 ,UY4 ,UY5 ,UY6 ,UY7 ,UY8 ,
60 7 UZ1 ,UZ2 ,UZ3 ,UZ4 ,UZ5 ,UZ6 ,UZ7 ,UZ8 ,
61 8 VX1 ,VX2 ,VX3 ,VX4 ,VX5 ,VX6 ,VX7 ,VX8 ,
62 9 VY1 ,VY2 ,VY3 ,VY4 ,VY5 ,VY6 ,VY7 ,VY8 ,
63 A VZ1 ,VZ2 ,VZ3 ,VZ4 ,VZ5 ,VZ6 ,VZ7 ,VZ8 ,
64 B FX1 ,FX2 ,FX3 ,FX4 ,FX5 ,FX6 ,FX7 ,FX8 ,
65 F FY1 ,FY2 ,FY3 ,FY4 ,FY5 ,FY6 ,FY7 ,FY8 ,
66 G FZ1 ,FZ2 ,FZ3 ,FZ4 ,FZ5 ,FZ6 ,FZ7 ,FZ8 ,
67 H STIFM ,STIFR ,VISCM ,VISCR ,PARTSAV,IPARTS ,BUFMAT ,IOUTPRT,
68 L IFAILURE ,NPF ,TF ,IPM ,IGEO ,NPG ,NEL ,JSMS ,
69 M DMELS ,PM ,GEO ,ITASK ,JTHE ,TABLE ,MAT_PARAM,
70 N IDTMINS ,DTFACS,DTMINS)
78 USE sigeps169_connect_mod
146#include "implicit_f.inc"
147#include "param_c.inc"
148#include "com01_c.inc"
149#include "com04_c.inc"
150#include "scr19_c.inc"
152#include "userlib.inc"
153#include "timeri_c.inc"
157 TYPE(timer_),
INTENT(INOUT) :: TIMERS
158 INTEGER NEL,IOUT,IPROP,IMAT,IOUTPRT,IFAILURE,NPG, JSMS,JTHE
159 INTEGER NGL(NEL),IPARTS(*),NPF(*),IPM(NPROPMI,*),
160 . IGEO(NPROPGI,*),ITASK
162 INTEGER,
INTENT(IN) :: IDTMINS
163 my_real,
INTENT(IN) :: DTFACS
164 my_real,
INTENT(IN) :: DTMINS
166 . ,TIMESTEP,PARTSAV(NPSAV,*),DMELS(*),PM(NPROPM,*),
167 . STIFM(*) ,STIFR(*) , VISCM(*) ,VISCR(*) ,FR_WAVE(*),TF(*),
168 . XX1(*),XX2(*),XX3(*),XX4(*),XX5(*),XX6(*),XX7(*),XX8(*),
169 . YY1(*),YY2(*),YY3(*),YY4(*),YY5(*),YY6(*),YY7(*),YY8(*),
170 . ZZ1(*),ZZ2(*),ZZ3(*),ZZ4(*),ZZ5(*),ZZ6(*),ZZ7(*),ZZ8(*),
171 . UX1(*),UX2(*),UX3(*),UX4(*),UX5(*),UX6(*),UX7(*),UX8(*),
172 . UY1(*),UY2(*),UY3(*),UY4(*),UY5(*),UY6(*),UY7(*),UY8(*),
173 . UZ1(*),UZ2(*),UZ3(*),UZ4(*),UZ5(*),UZ6(*),UZ7(*),UZ8(*),
174 . vx1(*),vx2(*),vx3(*),vx4(*),vx5(*),vx6(*),vx7(*),vx8(*),
175 . vy1(*),vy2(*),vy3(*),vy4(*),vy5(*),vy6(*),vy7(*),vy8(*),
176 . vz1(*),vz2(*),vz3(*),vz4(*),vz5(*),vz6(*),vz7(*),vz8(*),
177 . fx1(*),fx2(*),fx3(*),fx4(*),fx5(*),fx6(*),fx7(*),fx8(*),
178 . fy1(*),fy2(*),fy3(*),fy4(*),fy5(*),fy6(*),fy7(*),fy8(*),
179 . fz1(*),fz2(*),fz3(*),fz4(*),fz5(*),fz6(*),fz7(*),fz8(*),
181 TYPE () ,
TARGET :: ELBUF_STR
182 my_real ,
DIMENSION(*) ,
TARGET :: bufmat
183 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(IN) :: MAT_PARAM
187 INTEGER I,J,IR,IPG,IEL,ISRATE,
188 . NPAR,NPARF,NVARF,NFUNC,NFUNCR,NFAILS,,ILAW_USER,IPTR,IPTS,IPTT,
189 . IADBUF,IFAIL,NUVAR,MTN,NDAMF,ISOLID,ISOLIDF,NUMTABL,NVARTMP,LF_DAMMX
190 INTEGER IFUNC(MAXFUNC),IFUNCR(MAXFUNC)
191 my_real :: EPSP,ASRATE,ALPHA,TTHICK,OFF_EL
193 . HH(NPG,NPG),AREAP(MVSIZ,NPG),AREAT(MVSIZ),
195 . VXLOC(MVSIZ,8),(MVSIZ,8),VZLOC(MVSIZ,8),
196 . VXZ(MVSIZ,NPG),VYZ(MVSIZ,NPG),VZZ(MVSIZ,NPG),
197 . VGXA(MVSIZ),VGYA(MVSIZ),VGZA(), VGA2(MVSIZ),
198 . r1x(mvsiz),r2x(mvsiz),r3x(mvsiz),r4x(mvsiz),
199 . r5x(mvsiz),r6x(mvsiz),r7x(mvsiz),r8x(mvsiz),
200 . r1y(mvsiz),r2y(mvsiz),r3y(mvsiz),r4y(mvsiz),
201 . r5y(mvsiz),r6y(mvsiz),r7y(mvsiz),r8y(mvsiz),
202 . r1z(mvsiz),r2z(mvsiz),r3z(mvsiz),r4z(mvsiz),
203 . r5z(mvsiz),r6z(mvsiz),r7z(mvsiz),r8z(mvsiz),
204 . rxx(mvsiz),ryy(mvsiz),rzz(mvsiz),ep1(mvsiz),ep2(mvsiz),
205 . ep3(mvsiz),sig0zz(mvsiz),sig0yz(mvsiz),sig0zx(mvsiz),
206 . dein(mvsiz),deit(mvsiz),sym(mvsiz),ssp(mvsiz),rho0(mvsiz),
207 . e1x(mvsiz),e2x(mvsiz),e3x(mvsiz),e1y(mvsiz),e2y(mvsiz),
208 . e3y(mvsiz),e1z(mvsiz),e2z(mvsiz),e3z(mvsiz),viscmax(mvsiz),
209 . bid(mvsiz),dpla(mvsiz),sigy(mvsiz),epszz(mvsiz),epsyz(mvsiz),
210 . epszx(mvsiz),depszz(mvsiz),depsyz(mvsiz),depszx(mvsiz),
211 . signzz(mvsiz),signyz(mvsiz),signzx(mvsiz),soft(nel),deltae(nel),
212 . user_pla(mvsiz),user_off(mvsiz),user_eint(mvsiz),user_rho(mvsiz),user_vol(mvsiz)
213 TYPE(g_bufel_) ,
POINTER :: GBUF
214 TYPE(L_BUFEL_) ,
POINTER :: LBUF
215 TYPE(FAIL_LOC_) ,
POINTER :: FLOC
217 TYPE (TTABLE) ,
DIMENSION(NTABLE) :: TABLE
218 INTEGER,
DIMENSION(:) ,
POINTER :: ITABLE,VARTMP
219 my_real,
DIMENSION(:),
POINTER :: EPLASN,EPLAST,EPSD,UPARAM,UVAR,,AREAN
223 GBUF => elbuf_str%GBUF
231 numtabl= ipm(226,imat)
235 ifunc(i)=ipm(10+i,imat)
238 itable => ipm(226+1:226+numtabl,imat)
242 alpha =
min(one,asrate*timestep)
244 ismstr = igeo(5,iprop)
245 tthick = geo(41,iprop)
248 uparam => bufmat(iadbuf:iadbuf+npar-1)
256 . gbuf%OFF ,nel ,ioutprt ,gbuf%GAMA ,
257 . xx1 ,xx2 ,xx3 ,xx4 ,xx5 ,xx6 ,xx7 ,xx8 ,
258 . yy1 ,yy2 ,yy3 ,yy4 ,yy5 ,yy6 ,yy7 ,yy8 ,
259 . zz1 ,zz2 ,zz3 ,zz4 ,zz5 ,zz6 ,zz7 ,zz8 ,
260 . vx1 ,vx2 ,vx3 ,vx4 ,vx5 ,vx6 ,vx7 ,vx8 ,
261 . vy1 ,vy2 ,vy3 ,vy4 ,vy5 ,vy6 ,vy7 ,vy8 ,
262 . vz1 ,vz2 ,vz3 ,vz4 ,vz5 ,vz6 ,vz7 ,vz8 ,
264 . r1y ,r2y ,r3y ,r4y ,r5y ,r6y ,r7y ,r8y ,
265 . r1z ,r2z ,r3z ,r4z ,r5z ,r6z ,r7z ,r8z ,
266 . rxx ,ryy ,rzz ,vxloc,vyloc,vzloc,
267 . e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
268 . areap,time ,timestep,ngl,
269 . vgxa ,vgya ,vgza ,vga2, sym , ipm, imat)
271 CALL sdef43(nel ,npg ,hh ,
272 . vxz ,vyz ,vzz ,vxloc,vyloc,vzloc)
280 gbuf%SIG(jj(3)+i) = zero
281 gbuf%SIG(jj(5)+i) = zero
282 gbuf%SIG(jj(6)+i) = zero
311 IF (gbuf%G_PLA > 0) gbuf%PLA(:nel) = zero
312 IF (ismstr == 1 .AND. time == zero)
THEN
314 elbuf_str%BUFLY(1)%LBUF(ipg,1,1)%VOL(1:nel)=areap(1:nel,ipg)
320 IF (mtn == 116 .or. mtn == 83 .or. mtn == 120)
THEN
321 gbuf%EPSD(1:nel) = zero
325 ep1(i) = ep1(i) + vxz(i,ipg)
326 ep2(i) = ep2(i) + vyz(i,ipg)
327 ep3(i) = ep3(i) + vzz(i,ipg)
331 ep1(i) = ep1(i)*fourth
332 ep2(i) = ep2(i)*fourth
333 ep3(i) = ep3(i)*fourth
334 epsp = sqrt(ep1(i)**2 + ep2(i)**2 + ep3(i)**2)
336 epsp = alpha*epsp + (one - alpha)*gbuf%EPSD(i)
344 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
349 lbuf => elbuf_str%BUFLY(1)%LBUF(ipg,1,1)
350 uvar => elbuf_str%BUFLY(1)%MAT(ipg,1,1)%VAR
352 nvartmp = elbuf_str%BUFLY(1)%NVARTMP
353 vartmp => elbuf_str%BUFLY(1)%MAT(ipg,1,1)%VARTMP
355 epsd(1:nel) => lbuf%EPSD(1:nel)
357 arean(1:nel) => areap(1:nel,ipg)
359 IF (ismstr == 1)
THEN
360 area(1:nel) => elbuf_str%BUFLY(1)%LBUF(ipg,1,1)%VOL(1:nel)
362 area(1:nel) => areap(1:nel,ipg)
366 off_el = lbuf%OFF(iel)
367 depszz(iel) = vzz(iel,ipg)*timestep * off_el
368 depsyz(iel) = vyz(iel,ipg)*timestep * off_el
369 depszx(iel) = vxz(iel,ipg)*timestep * off_el
370 sig0zz(iel) = lbuf%SIG(jj(3)+iel)
371 sig0yz(iel) = lbuf%SIG(jj(5)+iel)
372 sig0zx(iel) = lbuf%SIG(jj(6)+iel)
379 IF (elbuf_str%BUFLY(1)%L_EPE > 0)
THEN
381 epszz(iel) = lbuf%EPE(jj(1)+iel) + depszz(iel)
382 epsyz(iel) = lbuf%EPE(jj(2)+iel) + depsyz(iel)
383 epszx(iel) = lbuf%EPE(jj(3)+iel) + depszx(iel)
389 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
395 eplasn => lbuf%PLA(1:nel)
396 eplast => lbuf%PLA(nel+1:nel*2)
399 1 nel ,time ,timestep,uparam ,gbuf%OFF ,
400 2 gbuf%EPSD,stifm ,npar ,
401 3 ifunc ,maxfunc ,npf ,tf ,
area ,
402 4 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
403 5 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
404 6 eplasn ,eplast ,jsms ,dmels )
410 1 nel ,time ,timestep ,uparam ,gbuf%OFF ,
411 2 lbuf%EPSD,stifm ,ifunc ,maxfunc ,npf ,tf ,
412 3
area ,depszz ,depsyz ,depszx ,npar ,epszz ,
413 4 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
414 5 lbuf%PLA ,jsms ,dmels ,sym ,uvar ,nuvar ,
418 gbuf%PLA(iel) = gbuf%PLA(iel) + fourth*lbuf%PLA(iel)
419 gbuf%EPSD(iel) = gbuf%EPSD(iel) + fourth*lbuf%EPSD(iel)
424 eplasn => lbuf%PLA(1:nel)
425 eplast => lbuf%PLA(nel+1:nel*2)
428 1 nel ,npar ,nuvar ,jsms ,time ,timestep ,
429 2 uparam ,uvar ,
area ,epsd ,gbuf%OFF ,lbuf%OFF ,
430 3 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
431 4 signzz ,signyz ,signzx ,stifm ,dmels ,lbuf%DMG ,
432 5 eplasn ,eplast ,ipg ,isolidf ,ngl )
434 gbuf%EPSD(1:nel) = gbuf%EPSD(1:nel) + fourth*lbuf%EPSD(1:nel)
440 1 nel ,npar ,nuvar ,jsms ,time ,timestep ,
441 2 uparam ,uvar ,
area ,gbuf%OFF ,lbuf%OFF ,
442 3 epszz ,epsyz ,epszx ,depszz ,depsyz ,depszx ,
443 4 signzz ,signyz ,signzx ,stifm
444 5 ipg ,isolidf ,ngl ,nfunc ,ifunc ,npf ,tf)
448 1 nel ,ngl ,time ,timestep ,uparam ,gbuf%OFF ,
449 2 lbuf%EPSD,stifm ,jthe ,
450 3
area ,depszz ,depsyz ,depszx ,epszz ,npar ,
451 4 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
452 5 lbuf%PLA ,jsms ,dmels ,uvar ,nuvar ,
453 6 numtabl ,itable ,table ,nvartmp ,vartmp ,lbuf%TEMP,
457 gbuf%PLA(iel) = gbuf%PLA(iel) + fourth*lbuf%PLA(iel)
458 gbuf%EPSD(iel) = gbuf%EPSD(iel) + fourth*lbuf%EPSD(iel)
463 CALL sigeps169_connect(
464 1 nel ,time ,mat_param(imat)%IPARAM, mat_param(imat)%UPARAM ,
465 2 mat_param(imat)%NIPARAM ,mat_param(imat)%NUPARAM ,stifm ,
466 3
area ,gbuf%OFF ,nuvar ,uvar ,ipg ,
468 5 sig0zz ,sig0yz ,sig0zx ,signzz ,signyz ,signzx ,
469 6 lbuf%PLA ,iout ,jsms ,lbuf%DMG ,ngl ,dmels ,
470 7 idtmins ,dtfacs ,dtmins ,gbuf%THK)
475 IF (userl_avail>0)
THEN
481 rho0(iel) = pm(1,imat)
482 user_pla(iel) = lbuf%PLA(iel)
483 user_off(iel) = gbuf%OFF
484 user_eint(iel) = gbuf%EINT(iel)
485 user_rho(iel) = gbuf%RHO(iel)
486 user_vol(iel) = gbuf%VOL(iel)
488 ilaw_user = ipm(217, imat)
489 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
492 CALL eng_userlib_get_law_var(
493 * ncycle, imat,iptr, ipts,iptt,
494 * e1x ,e1y ,e1z ,e2x ,e2y ,e2z ,e3x ,e3y ,e3z ,
495 . bid ,bid, sig0zz, bid, sig0yz,
496 * sig0zx, bid, bid, ep1, bid, ep2, ep3,
497 * bid, bid, bid, bid, bid, bid, bid,
498 * bid, depszz, bid, depsyz, depszx, rho0, bid,
499 * bid, signzz, bid, signyz, signzx, bid, bid,
500 * bid, bid, bid, bid )
503 CALL eng_userlib_sigeps99(
504 * nel ,npar ,nuvar ,ilaw_user,nfunc,
505 * ifunc ,npf ,tf ,time ,timestep,
506 * bufmat(iadbuf) ,user_rho,user_vol,user_eint,ngl,
507 * ssp ,viscmax ,uvar ,user_off ,sigy ,
511 CALL eng_userlib_set_law_var(
512 * bid ,bid ,signzz ,bid ,signyz ,signzx ,
513 * bid ,bid ,bid ,bid ,bid ,bid ,
517 lbuf%PLA(iel) = user_pla(iel)
518 gbuf%OFF(iel) = user_off(iel)
519 gbuf%EINT(iel) = user_eint(iel)
520 gbuf%RHO(iel) = user_rho(iel)
521 gbuf%VOL(iel) = user_vol(iel)
522 stifm(iel) = ssp(iel)*ssp(iel)*
area(iel)*gbuf%RHO(iel)
529 dein(iel) = lbuf%OFF(iel)*half*
530 . depszz(iel)*(sig0zz(iel) + signzz(iel))
531 deit(iel) = lbuf%OFF(iel)*half*(
532 . depsyz(iel)*(sig0yz(iel) + signyz(iel))+
533 . depszx(iel)*(sig0zx(iel) + signzx(iel)) )
536 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
540 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,121)
544 IF (ifailure == 1)
THEN
545 nfails = mat_param(imat)%NFAIL
548 ifail = mat_param(imat)%FAIL(ir)%IRUPT
549 nparf = mat_param(imat)%FAIL(ir)%NUPARAM
550 nvarf = mat_param(imat)%FAIL(ir)%NUVAR
551 nfuncr = mat_param(imat)%FAIL(ir)%NFUNC
553 ifuncr(i) = mat_param(imat)%FAIL(ir)%IFUNC(i)
556 floc => elbuf_str%BUFLY(1)%FAIL(ipg,1,1)%FLOC(ir)
557 lf_dammx = floc%LF_DAMMX
562 1 nel ,nparf ,nvarf ,nfuncr ,ifuncr ,
563 2 npf ,tf ,time ,timestep ,mat_param(imat)%FAIL(ir)%UPARAM,
564 3 floc%VAR ,ngl ,epszz ,epszx ,epsyz ,
565 4 gbuf%EPSD ,gbuf%OFF ,lbuf%OFF,ipg ,isolidf ,
566 5 signzz ,signyz ,signzx ,dein ,deit ,
567 6 floc%DAMMX,lf_dammx ,floc%TDEL,arean ,soft )
569 ELSEIF (ifail == 26)
THEN
573 1 nel ,nparf ,nvarf ,nfuncr ,ifuncr ,
574 2 npf ,tf ,time ,timestep ,mat_param(imat)%FAIL(ir)%UPARAM,
575 3 floc%VAR ,ngl ,ipg ,npg ,ndamf ,
576 4 lbuf%EPSD ,lbuf%PLA ,gbuf%OFF ,lbuf%OFF ,isolidf ,
577 5 signzz ,signyz ,signzx ,sym ,arean ,
578 6 lbuf%DMG ,floc%DAM ,floc%DAMMX,floc%TDEL )
586 isolid =
min(isolid, isolidf)
588 IF (itask==0 .and. imon_mat==1)
CALL stoptime(timers,121)
593 soft(iel) = soft(iel)*gbuf%OFF(iel)
594 gbuf%SIG(jj(3)+iel) = gbuf%SIG(jj(3)+iel) + signzz(iel)*fourth*soft(iel)
595 gbuf%SIG(jj(5)+iel) = gbuf%SIG(jj(5)+iel) + signyz(iel
596 gbuf%SIG(jj(6)+iel) = gbuf%SIG(jj(6)+iel) + signzx(iel)*fourth*soft(iel)
602 . fx1 ,fx2 ,fx3 ,fx4 ,fx5 ,fx6 ,fx7 ,fx8 ,
603 . fy1 ,fy2 ,fy3 ,fy4 ,fy5 ,fy6 ,fy7 ,fy8 ,
604 . fz1 ,fz2 ,fz3 ,fz4 ,fz5 ,fz6 ,fz7 ,fz8 ,
605 . signzz,signyz,signzx)
610 areat(iel) = areat(iel) +
area(iel)
611 deltae(iel) = deltae(iel) + (dein(iel) + deit(iel))*
area(iel)*soft(iel)
616 lbuf%SIG(jj(3)+iel) = signzz(iel)*lbuf%OFF(iel)
617 lbuf%SIG(jj(5)+iel) = signyz(iel)*lbuf%OFF(iel)
618 lbuf%SIG(jj(6)+iel) = signzx(iel)*lbuf%OFF(iel)
620 IF (elbuf_str%BUFLY(1)%L_EPE > 0)
THEN
622 lbuf%EPE(jj(1)+iel) = epszz(iel)
623 lbuf%EPE(jj(2)+iel) = epsyz(iel)
624 lbuf%EPE(jj(3)+iel) = epszx(iel)
640 gbuf%EINT(iel) = gbuf%EINT(iel) + deltae(iel)
644 .
CALL sbilan43(nel ,iparts ,partsav,gbuf%EINT,gbuf%RHO,
645 . areat ,vgxa ,vgya ,vgza ,vga2 ,
649 . fx1 ,fx2 ,fx3 ,fx4 ,fx5 ,fx6 ,fx7 ,fx8 ,
650 . fy1 ,fy2 ,fy3 ,fy4 ,fy5 ,fy6 ,fy7 ,fy8 ,
651 . fz1 ,fz2 ,fz3 ,fz4 ,fz5 ,fz6 ,fz7 ,fz8 ,
652 . r1x ,r2x ,r3x ,r4x ,r5x ,r6x ,r7x ,r8x ,
653 . r1y ,r2y ,r3y ,r4y ,r5y ,r6y ,r7y ,r8y ,
654 . r1z ,r2z ,r3z ,r4z ,r5z ,r6z ,r7z ,r8z ,
655 . rxx ,ryy ,rzz ,tthick )
658 1 e1x, e1y, e1z, e2x,
659 2 e2y, e2z, e3x, e3y,
660 3 e3z, fx1, fx2, fx3,
661 4 fx4, fx5, fx6, fx7,
662 5 fx8, fy1, fy2, fy3,
663 6 fy4, fy5, fy6, fy7,
664 7 fy8, fz1, fz2, fz3,
665 8 fz4, fz5, fz6, fz7,