Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations waross on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

share of element consumed in next increment

Status
Not open for further replies.

hosseinshafii

Mechanical
Jan 29, 2015
4
Hello to all

i am working with umeshmotion to simulate wear of sand productin in oil welbore. i can define mesh motion but i see in some of umesh motion code have a part:share of element consumed in next increment . i do not know what do this part of subroutine ? what means of ELINC OR CHARLENGTH ? maybe CHARLENGTH is characteristic element lenght maybe! but never i do not know means of ELINC . a sample of sobroutine:

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 IN THIS SECTION DEFINE WEAR VELOCITY
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.018D0) THEN

FPEEQ=Alamda1*(PEEQ-0.018D0)
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<<<<<<<<<<<<<<<<<<<<<<<<<<<<HERE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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

 
Replies continue below

Recommended for you

Hello to all

i am working with umeshmotion to simulate wear of sand productin in oil welbore. i can define mesh motion but i see in some of umesh motion code have a part:share of element consumed in next increment . i do not know what do this part of subroutine ? what means of ELINC OR CHARLENGTH ? maybe CHARLENGTH is characteristic element lenght maybe! but never i do not know means of ELINC . a sample of sobroutine:

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 <<<<<<<<<<<<IN THIS SECTION DEFINE WEAR VELOCITY>>>>>>>>>>>>>>>>>
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.018D0) THEN

FPEEQ=Alamda1*(PEEQ-0.018D0)
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<<<<<<<<<<<<<<<<<<<<<<<<<<<<HERE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor