TALK=F;RUN( 1, 1)
CPVNAM=VDI;SPPNAM=Core
TEXT(XY Duct, USP Test )
title
DISPLAY
This case solves a two-dimensional steady hydrodynamics
problem about laminar flow in plane channel.
This task has well-known solution as Poiseuille's law
Length of channel is 1 m, height of channel is 0,02 m
ENDDIS
save1begin
REAL(X1,X2,Y1,Y2,DTF,VISC,UAVE,RHO)
REAL(REYNO)
NX = 100
NY = 20
NZ = 1
X1=0.;X2=1.0
Y1=0.;Y2=0.02
VISC = 1.E-5
UAVE = 0.01
RHO = 1.
REYNO = UAVE*Y2/VISC
REYNO = 200.
UAVE = REYNO*VISC/Y2
save1end
LSWEEP=3000
mesg(U average = :UAVE:
BOOL(log1)
log1 = F
mesg(Do you want to use exact solution as inital one? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
log1 = T
endif
RSET(M,NX,NY,NZ)
RSET(D,DOM,X2,Y2,1.)
ENUL=VISC
RHO1=RHO
SOLVE(P1,U1,V1)
STORE(EXP1,EXU1)
TERMS (U1 ,Y,Y,Y,N,N,N)
TERMS (V1 ,Y,Y,Y,N,N,N)
save2begin
REAL(XCOR,DXC,YCOR,DYC,U1C,P1C,HY,P1AVE)
DYC=2./NY
DXC=X2/NX
HY=Y2*0.5
Following commands set the initial fields and inlet boundary source
DO JJ=1,NY
+ YCOR=0.5*DYC+(JJ-1)*DYC-1
+ U1C = 1.5*UAVE*(1-YCOR*YCOR)
+ PATCH(IV:JJ:,INIVAL,1,NX,:JJ:,:JJ:,1,NZ,1,1)
+IF(log1)THEN
+ INIT(IV:JJ:,U1,0.0,U1C)
+ INIT(IV:JJ:,V1,0.0,0.0)
+ENDIF
+ INIT(IV:JJ:,EXU1,0.0,U1C)
+ PATCH(IN:JJ:,WEST,1,1,:JJ:,:JJ:,1,NZ,1,1)
+ COVAL(IN:JJ:,P1,FIXFLU,U1C*RHO)
+ COVAL(IN:JJ:,U1,ONLYMS,U1C)
+ COVAL(IN:JJ:,V1,ONLYMS,0.)
ENDDO
P1AVE = 1.5*RHO*VISC*UAVE*X2/(HY*HY)
DO II=1,NX
+ XCOR=0.5*DXC+(II-1)*DXC
+ P1C = 3*RHO*VISC*UAVE*(X2-XCOR)/(HY*HY)
+ PATCH(IP:II:,INIVAL,:II:,:II:,1,NY,1,NZ,1,1)
+IF(log1)THEN
+ INIT(IP:II:,P1,0.0,P1C)
+ENDIF
+ INIT(IP:II:,EXP1,0.0,P1C)
ENDDO
save2end
PARSOL = F
SAVE7BEGIN
******** Test In-Form ******
(STORED of EXU1 is 1.5*UAVE*(1-((YG-HY)/HY)^2))
(STORED of EXP1 is 3*RHO*VISC*UAVE*(X2-XG)/(HY*HY))
(STORED of DU1 is EXU1-U1)
SAVE7END
PATCH(OUTLET,EAST,NX,NX,1,NY,1,1,1,1)
COVAL(OUTLET,P1, 1.0E+3 ,0.0)
NONORT=T
========= Walls =====================
PATCH(WALL1,SWALL,1,NX,1,1,1,1,1,1)
COVAL(WALL1,U1,1.,0.0)
COVAL(WALL1,V1,1.,0.0)
PATCH(WALL2,NWALL,1,NX,NY,NY,1,1,1,1)
COVAL(WALL2,U1,1.,0.0)
COVAL(WALL2,V1,1.,0.0)
========= Relaxations =====================
DTF=1.E+05
RELAX(P1,LINRLX,0.8)
RELAX(U1,FALSDT,DTF)
RELAX(V1,FALSDT,DTF)
SELREF = T; RESFAC =1.0E-6
ECHO=F;IXMON=NX-1;IYMON=NY/2
TSTSWP=-1
NXPRIN= 1; NYPRIN=1
Usp related variables
INTEGER(LEVEL)
LEVEL = 0
mesg(Level of coarsening is :LEVEL:
mesg(Do you want to change it? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
mesg(Enter level of coarsening
readvdu(LEVEL,int,LEVEL)
mesg(New level of coarsening is :LEVEL:
endif
USP = T
UAUTO = F
USPDBG = F
UTCPLT = F
USPVTK= T
USPIMB = F
MXLEV = LEVEL
MYLEV = LEVEL
MZLEV = LEVEL
DOMAT = -1
MINPRP = -1
MAXPRP = 250
CELLST = 10
FACEST = 10
USPREL = 0.6
UGRITR = 5
UMXLEV = 0
PARSOL = F
ISG62 = 0
ISG60 = 1
mesg(Do you want to use collocated arrangement (y) or staggered one (n)? (y/n)
readvdu(ans,char,y)
if(:ans:.eq.y)then
SPEDAT(SET,USP,METHOD,I,1)
RELAX(P1 ,LINRLX, 4.000000E-01)
RELAX(U1 ,FALSDT, 1.000000E-01)
RELAX(V1 ,FALSDT, 1.000000E-01)
mesg(Do you want to use SIMPLEST (y) or SIMPLE (n)? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
SPEDAT(SET,USP,SIMPLEST,L,T)
endif
endif
SPEDAT(SET,USPVTK,GRADOUT,C,U1)
mesg(Do you want to view results in the centres of cells? (y/n)
readvdu(ans,char,n)
if(:ans:.eq.y)then
SPEDAT(SET,USPIO,VERTCENT,L,F)
endif
> DOM, SIZE, X2, Y2, 1.000000E+00
> DOM, MONIT, 9.000000E-01, 0.100000E+00, 5.000000E-01
> DOM, SCALE, 1.000000E+00, 1.000000E+00, 1.000000E+00
> DOM, SNAPSIZE, 1.000000E-02
if(LEVEL.gt.0)then
> OBJ, NAME, B1
> OBJ, POSITION, 3.000000E-01, 0.000000E+00, 0.000000E+00
> OBJ, SIZE, 3.200000E-01, 1.600000E-02, 1.000000E+00
> OBJ, GEOMETRY, fine
> OBJ, ROTATION24, 1
> OBJ, TYPE, FINE_GRID_VOL
> OBJ, LEVELS, 0.000000E+00, 0.000000E+00, 0.000000E+00
> OBJ, AXES, IXY
endif
if(LEVEL.gt.1)then
> OBJ, NAME, B2
> OBJ, POSITION, 3.600000E-01, 0.000000E+00, 0.000000E+00
> OBJ, SIZE, 1.600000E-01, 0.800000E-02, 1.000000E+00
> OBJ, GEOMETRY, fine
> OBJ, ROTATION24, 1
> OBJ, TYPE, FINE_GRID_VOL
> OBJ, LEVELS, 1.000000E+00, 1.000000E+00, 1.000000E+00
> OBJ, AXES, IXY
endif
STOP