TALK=F;RUN( 1, 1)
TEXT(Flow in porous media. USP Test 6.
title
DISPLAY
This case solves a three-dimensional steady hydrodynamics
problem with flow in propous medium.
The analytical solution is: U1 = Uin, P1 = P-A*X
where A depends on viscosity friction factor.
ENDDIS
real(fric,visc,Velin)
fric=10.
mesg(Default value of friction factor is :fric:
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter new value of friction factor
readvdu(fric,real,fric)
mesg(New value of friction factor is :fric:
endif
visc=0.
mesg(Default value of viscosity is :visc:
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter new value of viscosity
readvdu(visc,real,visc)
mesg(New value of viscosity is :visc:
endif
Velin=1.
mesg(Default value of inlet velocity is :Velin: m/s
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter new value of velocity
readvdu(Velin,real,Velin)
mesg(New value of velocity is :Velin: m/s
endif
STEADY=T
BOOLEAN(dim1)
dim1=F
mesg(Do you want to use 1D case (y) or 3D(n)? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
dim1=T
endif
RSET(D,DOM,1.,1.,1.)
RHO1 = 1.
ENUL = visc
IF(dim1)THEN
RSET(M,10,1,1)
STORE(V1,W1)
SOLVE(P1,U1)
SOLUTN(P1 ,Y,Y,Y,N,N,Y)
SOLUTN(U1 ,Y,Y,Y,N,N,Y)
LSWEEP = 5
PATCH(IN,WEST,1,1,1,NY,1,NZ,1,1)
COVAL(IN,P1, FIXFLU, Velin*RHO1)
COVAL(IN,U1, 0., Velin)
COVAL(IN,V1, 0., 0.)
COVAL(IN,W1, 0., 0.)
PATCH(OUT,EAST,NX,NX,1,NY,1,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
ELSE
RSET(M,10,10,10)
Group 7. Variables: STOREd,SOLVEd,NAMEd
ONEPHS = T
SOLVE(P1,U1,V1,W1)
SOLUTN(P1 ,Y,Y,Y,N,N,Y)
SOLUTN(U1 ,Y,Y,Y,N,N,Y)
SOLUTN(V1 ,Y,Y,Y,N,N,Y)
SOLUTN(W1 ,Y,Y,Y,N,N,Y)
integer(idir)
idir = 0
mesg(Default direction of flow is from WEST to EAST
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter new direction of flow
mesg(0 = WEST-EAST, 1 = EAST-WEST
mesg(2 = SOUTH-NORTH, 3 = NORTH-SOUTH
mesg(4 = LOW-HIGH, 5 = HIGH-LOW
readvdu(idir,int,0)
if(idir.gt.5)then
idir = 0
endif
if(idir.lt.0)then
idir = 0
endif
endif
Flow from WEST to EAST
if(idir.eq.0)then
mesg(Flow from WEST to EAST
PATCH(IN,WEST,1,1,1,NY,1,NZ,1,1)
COVAL(IN,P1, FIXFLU, Velin*RHO1)
COVAL(IN,U1, 0., Velin)
COVAL(IN,V1, 0., 0.)
COVAL(IN,W1, 0., 0.)
PATCH(OUT,EAST,NX,NX,1,NY,1,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Flow from EAST to WEST
if(idir.eq.1)then
mesg(Flow from EAST to WEST
PATCH(IN,EAST,NX,NX,1,NY,1,NZ,1,1)
COVAL(IN,P1, FIXFLU, -Velin*RHO1)
COVAL(IN,U1, 0., -Velin)
COVAL(IN,V1, 0., 0.)
COVAL(IN,W1, 0., 0.)
PATCH(OUT,WEST,1,1,1,NY,1,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Flow from SOUTH to NORTH
if(idir.eq.2)then
mesg(Flow from SOUTH to NORTH
PATCH(IN,SOUTH,1,NX,1,1,1,NZ,1,1)
COVAL(IN,P1, FIXFLU, Velin*RHO1)
COVAL(IN,U1, 0., 0.)
COVAL(IN,V1, 0., Velin)
COVAL(IN,W1, 0., 0.)
PATCH(OUT,NORTH,1,NX,NY,NY,1,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Flow from NORTH to SOUTH
if(idir.eq.3)then
mesg(Flow from NORTH to SOUTH
PATCH(IN,NORTH,1,NX,NY,NY,1,NZ,1,1)
COVAL(IN,P1, FIXFLU, -Velin*RHO1)
COVAL(IN,U1, 0., 0.)
COVAL(IN,V1, 0., -Velin)
COVAL(IN,W1, 0., 0.)
PATCH(OUT,SOUTH,1,NX,1,1,1,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Flow from LOW to HIGH
if(idir.eq.4)then
mesg(Flow from LOW to HIGH
PATCH(IN,LOW,1,NX,1,NY,1,1,1,1)
COVAL(IN,P1, FIXFLU, Velin*RHO1)
COVAL(IN,U1, 0., 0.)
COVAL(IN,V1, 0., 0.)
COVAL(IN,W1, 0., Velin)
PATCH(OUT,HIGH,1,NX,1,NY,NZ,NZ,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Flow from HIGH to LOW
if(idir.eq.5)then
mesg(Flow from HIGH to LOW
PATCH(IN,HIGH,1,NX,1,NY,NZ,NZ,1,1)
COVAL(IN,P1, FIXFLU, -Velin*RHO1)
COVAL(IN,U1, 0., 0.)
COVAL(IN,V1, 0., 0.)
COVAL(IN,W1, 0., -Velin)
PATCH(OUT,LOW,1,NX,1,NY,1,1,1,1)
COVAL(OUT,P1, 1.E+3, 0.)
endif
Group 15. Terminate Sweeps
LSWEEP = 25
mesg(Default value of LSWEEP is :LSWEEP:
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter new value of LSWEEP
readvdu(LSWEEP,int,LSWEEP)
mesg(New value of LSWEEP is :LSWEEP:
endif
ENDIF
Group 11.Initialise Var/Porosity Fields
INIADD = F
FIINIT(U1) =0.0; FIINIT(V1) =0.0
FIINIT(W1) =0.0; FIINIT(P1) =0.0
PATCH(FRICT ,VOLUME,1,NX,1,NY,1,NZ,1,1)
COVAL(FRICT ,U1 , fric, 0.000000E+00)
COVAL(FRICT ,V1 , fric, 0.000000E+00)
COVAL(FRICT ,W1 , fric, 0.000000E+00)
RESFAC = 1.E-06
Group 16. Terminate Iterations
LITER (P1)=200 ;LITER (U1)=200 ;LITER (V1)=200
LITER (W1)=200
ENDIT(P1) = 1.e-9; ENDIT(U1) = 1.e-9; ENDIT(V1) = 1.e-9
ENDIT(W1) = 1.e-9
Group 17. Relaxation
RELAX(P1 ,LINRLX, 1.0)
RELAX(U1 ,FALSDT, 1.E+8)
RELAX(V1 ,FALSDT, 1.E+8)
RELAX(W1 ,FALSDT, 1.E+8)
ECHO = T
Group 22. Monitor Print-Out
IXMON=NX-1 ;IYMON=1 ;IZMON=1
NPRMON=100000
NPRMNT=1
TSTSWP=-1
Group 23.Field Print-Out & Plot Control
NXPRIN=1; NYPRIN =1
NPRINT = 100000
ISWPRF = 1 ;ISWPRL = 100000
Usp related variables
USP = T
USPDBG = F
UAUTO = F
UTCPLT = T
USPVTK = T
USPIMB = F
MXLEV = 4
MYLEV = 4
MZLEV = 4
DOMAT = -1
MINPRP = -1
MAXPRP = 250
CELLST = 1
FACEST = 1
USPREL = 0.7
PARSOL = F
ISG62 = 0
ISG60 = 1
mesg(Do you want to use collocated arrangement (y) or staggered one (n)? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
SPEDAT(SET,USP,METHOD,I,1)
LSWEEP = 100
endif
IF(dim1)THEN
mesg(Do you want to use the debug mode (y)? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
USPDBG = T
SPEDAT(SET,USPDBG,PRINTCOEF,L,T)
SPEDAT(SET,USPDBG,PRINTASSP,L,T)
endif
ENDIF
STOP