```
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)
if(:ans:.eq.y)then
mesg(Enter new value of friction factor
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)
if(:ans:.eq.y)then
mesg(Enter new value of viscosity
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)
if(:ans:.eq.y)then
mesg(Enter new value of velocity
mesg(New value of velocity is :Velin: m/s
endif

BOOLEAN(dim1)
dim1=F
mesg(Do you want to use 1D case (y) or 3D(n)? (y/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)
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
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)
if(:ans:.eq.y)then
mesg(Enter new value of LSWEEP
mesg(New value of LSWEEP is :LSWEEP:
endif

ENDIF

Group 11.Initialise Var/Porosity Fields
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)
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)