subroutine umeshmotion(uref,ulocal,node,nndof,lnodetype,alocal, * ndim,time,dtime,pnewdt,kstep,kinc, * kmeshsweep,jmatyp,jgvblock,lsmooth) C include 'aba_param.inc' C CHARACTER*80 PARTNAME DIMENSION ARRAY(1000) DIMENSION ULOCAL(*) DIMENSION JGVBLOCK(*),JMATYP(*) DIMENSION ALOCAL(NDIM,*) PARAMETER (NELEMMAX=100) DIMENSION JELEMLIST(NELEMMAX),JELEMTYPE(NELEMMAX) PARAMETER (ALamda1=4.0D0,ALamda2=0.01D0) PARAMETER (TRCON = 0.001) PARAMETER (ELINC = 0.1D0) DIMENSION TIME(2) LOCNUM = 0 JRCD = 0 PARTNAME = ' ' PEEQ = 0.0D0 FPEEQ= 0.0D0 FPOROSITY=0.00D0 FRVF = 0.00D0 CHARLENGTH = UREF JTYP = 1 CALL GETPARTINFO(NODE,0,PARTNAME,LOCNUM,JRCD) NELEMS = NELEMMAX CALL GETNODETOELEMCONN(NODE,NELEMS,JELEMLIST,JELEMTYPE,JRCD, $ JGVBLOCK) CALL GETVRMAVGATNODE(NODE,JTYP,'PE',ARRAY,JRCD, $ JELEMLIST,NELEMS,JMATYP,JGVBLOCK) PEEQ = ARRAY(7) IF (PEEQ.GT.0.028D0) THEN FPEEQ=Alamda1*(PEEQ-0.028D0) If(FPEEQ.gt.ALamda2)FPEEQ=ALamda2 CALL GETVRMAVGATNODE(NODE,JTYP,'VOIDR',ARRAY,JRCD, $ JELEMLIST,NELEMS,JMATYP,JGVBLOCK) FPOROSITY = 1.0D0/(1.0D0+ARRAY(1)) CALL GETVRMAVGATNODE(NODE,JTYP,'FLVEL',ARRAY,JRCD, $ JELEMLIST,NELEMS,JMATYP,JGVBLOCK) FLVMAG = ARRAY(1) SURFV = TRCON*FPEEQ*FPOROSITY*FLVMAG if(LNODETYPE.EQ.3)SURFV=SURFV*1.41421356D0 ULOCAL(NDIM) = ULOCAL(NDIM)-SURFV C SHARE OF ELEMENT CONSUMED IN NEXT INCREMENT PELEM = DTIME * SURFV / CHARLENGTH PNEWDT1 = 0.0D0 IF (PELEM.GT.ELINC.AND.SURFV.GT.0.0D0) THEN PNEWDT1 = CHARLENGTH * ELINC / SURFV IF (PNEWDT1.LT.DTIME) THEN WRITE (7,*) 'CHANGING TIME INCREMENT FROM ',DTIME PNEWDT = PNEWDT1 WRITE (7,*) 'TO ',PNEWDT WRITE (7,*) 'BASED ON NODE ',LOCNUM PNEWDT = PNEWDT / DTIME END IF END IF LSMOOTH = 1 END IF return end SUBROUTINE SIGINI(SIGMA,COORDS,NTENS,NCRDS,NOEL,NPT,LAYER, 1KSPT,LREBAR,NAMES) INCLUDE 'ABA_PARAM.INC' DIMENSION SIGMA(NTENS),COORDS(NCRDS) CHARACTER*80 NAMES(*) IF(NAMES(2).EQ.'C3D8P') THEN SIGMA(1)=-5000. SIGMA(2)=-5000. SIGMA(3)=-7500. SIGMA(4)= 0. SIGMA(5)= 0. SIGMA(6)= 0. ENDIF RETURN END