MB-FGE Test: Lid driven flow in a cavern.
**************************************************************
DISPLAY
Lid Driven Cavity Flow Problem (Chris J.Weire 16/3/94)
Moving Wall
> 1m/s
Fine Grids ^
1.0
v
<>
1.0
This case demonstrates the use of 4 zones of Fine Grid
Embedding in the corners of the cavity, where large
velocity & pressure gradients occur. Use of the FGE zones
enables recirculations to be detected without an
excessively large mesh.
The dimensions of the main mesh are set through NX1,NY1,
and the power law exponent in POWER in this Q1. Likewise,
MBFGE refinement factors are set through IFICX, IFICY.
Setting these to 1 creates the equivalent of a normal
power law mesh.
Q1-file contains Photon Use information.
---------------------------------------------------------
ENDDIS
L(PAUSE
**************************************************************
PHOTON USE
p ; ; ; ; ;
mgrid 1 k 1
mgrid 2 k 1 col 2
mgrid 3 k 1 col 3
mgrid 4 k 1 col 4
mgrid 5 k 1 col 5
msg This is the grid, press return to continue...
pause
set vec av off
mvec 1 k 1 sh
mvec 2 k 1 sh
mvec 3 k 1 sh
mvec 4 k 1 sh
mvec 5 k 1 sh
msg Velocity Vectors, press return to continue...
pause
set con scale range on
set con fi depth 4
mcon 1 p1 k 1 fi
0 0.02
mcon 2 p1 k 1 fi
0 0.02
mcon 3 p1 k 1 fi
0 0.02
mcon 4 p1 k 1 fi
0 0.02
mcon 5 p1 k 1 fi
0 0.02
msg Enter e to end, or any Photon command to continue...
ENDUSE
GROUP 1. Run title and other preliminaries
TEXT(MBFGE: Flow in cavity (5 blocks).
TITLE
INTEGER(NX1,NY1,NX2,NY2,NX3,NY3,NX4,NY4,NX5,NY5,IFICX,IFICY,II,JJ)
REAL(POWER,TEMPX,TEMPY,P1X,P1Y,P2X,P2Y,P3X,P3Y,P4X,P4Y)
REAL(REYNO,UIN)
REYNO= 10000.; UIN= 1.0; ENUL= UIN/REYNO
POWER= 1.4; NX1= 16; NY1 = 16; IFICX= 2; IFICY= 2
MESG( Enter the number of cells in the X-direction (DIV BY 4) (16)
READVDU(NX1,INT,16)
MESG( Enter the number of cells in the Y-direction (DIV BY 4) (16)
READVDU(NY1,INT,16)
MESG( Enter the Grid power (1.4)
READVDU(POWER,REAL,1.4)
MESG( Enter the FGEM refinement X-factor (2)
READVDU(IFICX,INT,2)
MESG( Enter the FGEM refinement Y-factor (2)
READVDU(IFICY,INT,2)
MESG( Re is currently set to :REYNO:,
MESG( Enter another or press return to accept:
READVDU(REYNO,REAL,REYNO)
GROUP 6. Body-fitted coordinates or grid distortion
>> NOTE:
The fine grids occupy regions in the coarse grid spanning one
quarter of the cells in each direction, and have IFICX:1, IFICY:1
mesh ratios
**** 2nd Domain (Bottom left, fine)
NX2= IFICX*NX1/4; NY2= IFICY*NY1/4
**** 3rd Domain (Bottom right, fine)
NX3= IFICX*NX1/4; NY3= IFICY*NY1/4
**** 4th Domain (Top right, fine)
NX4= IFICX*NX1/4; NY4= IFICY*NY1/4
**** 5th Domain (Top left, fine)
NX5= IFICX*NX1/4; NY5= IFICY*NY1/4
** Main Mesh 1
NZ = 1; BFC= T; GSET(D,NX1,NY1,NZ)
GSET(P,P1,0.0,0.0,0.0); GSET(P,P2,1.0,0.0,0.0)
GSET(P,P3,1.0,1.0,0.0); GSET(P,P4,0.0,1.0,0.0)
GSET(L,L12,P1,P2,NX1,S:POWER:); GSET(L,L23,P2,P3,NY1,S:POWER:)
GSET(L,L34,P3,P4,NX1,S:POWER:); GSET(L,L41,P4,P1,NY1,S:POWER:)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1,TRANS)
GSET(C,K:NZ+1:,F,K1,+,0.0,0.0,0.1)
DUMPC(MBGR1)
** Sub Mesh 2
GSET(D,NX2,NY2,NZ); P1X=0.5*(0.5**POWER); P1Y=0.5*(0.5**POWER)
GSET(P,P1A,P1X,0.0,0.);GSET(P,P1B,P1X,P1Y,0.)
GSET(P,P1C,0.0,P1Y,0.)
GSET(L,L11A, P1, P1A,NX2,:POWER:)
GSET(L,L1A1B,P1A,P1B,NY2,:POWER:)
GSET(L,L1B1C,P1B,P1C,NX2,-:POWER:)
GSET(L,L1C1, P1C,P1, NY2,-:POWER:)
GSET(F,F2,P1,-,P1A,-,P1B,-,P1C,-); GSET(M,F2,+I+J,1,1,1,TRANS)
GSET(C,K:NZ+1:,F,K1,+,0.,0.,0.1)
DUMPC(MBGR2)
** Sub Mesh 3
GSET(D,NX3,NY3,NZ); P2X= 1.-P1X; P2Y= P1Y
GSET(P,P2A,1.0,P2Y,0.0); GSET(P,P2B,P2X,P2Y,0.0)
GSET(P,P2C,P2X,0.0,0.0)
GSET(L,L22A, P2, P2A,NY2,:POWER:)
GSET(L,L2A2B,P2A,P2B,NX2,:POWER:)
GSET(L,L2B2C,P2B,P2C,NY2,-:POWER:)
GSET(L,L2C2, P2C,P2, NX2,-:POWER:)
GSET(F,F3,P2C,-,P2,-,P2A,-,P2B,-); GSET(M,F3,+I+J,1,1,1,TRANS)
GSET(C,K:NZ+1:,F,K1,+,0.,0.,0.1)
DUMPC(MBGR3)
** Sub Mesh 4
GSET(D,NX4,NY4,NZ); P3X= P2X; P3Y= 1.-P1Y
GSET(P,P3A,P3X,1.0,0.0); GSET(P,P3B,P3X,P3Y,0.0)
GSET(P,P3C,1.0,P3Y,0.0)
GSET(L,L33A, P3, P3A,NX3,:POWER:)
GSET(L,L3A3B,P3A,P3B,NY3,:POWER:)
GSET(L,L3B3C,P3B,P3C,NX3,-:POWER:)
GSET(L,L3C3, P3C,P3, NY3,-:POWER:)
GSET(F,F4,P3B,-,P3C,-,P3,-,P3A,-); GSET(M,F4,+I+J,1,1,1,TRANS)
GSET(C,K:NZ+1:,F,K1,+,0.,0.,0.1)
DUMPC(MBGR4)
** Sub Mesh 5
GSET(D,NX5,NY5,NZ); P4X= P1X; P4Y= P3Y
GSET(P,P4A,0.0,P4Y,0.0); GSET(P,P4B,P4X,P4Y,0.0)
GSET(P,P4C,P4X,1.0,0.0)
GSET(L,L44A, P4, P4A,NY4,:POWER:)
GSET(L,L4A4B,P4A,P4B,NX4,:POWER:)
GSET(L,L4B4C,P4B,P4C,NY4,-:POWER:)
GSET(L,L4C4, P4C,P4, NX4,-:POWER:)
GSET(F,F5,P4A,-,P4B,-,P4C,-,P4,-); GSET(M,F5,+I+J,1,1,1,TRANS)
GSET(C,K:NZ+1:,F,K1,+,0.,0.,0.1)
DUMPC(MBGR5)
>> NOTE:
The Blocks have all been written to disk, and now they are
retrieved. First the number of blocks is set via the numblk
variable, then READCO(xxxx+) instructs satellite to read the grids
from the files xxxx1, xxxx2 etc, and they are arranged in a single
computational space. If all blocks have natural connections, you
can use parameter L(l) in READCO(....+L) command to set up all
LINKS. Alternatively you can use MBLINK commands (see below).
NUMBLK= 5; READCO(MBGR+)
GVIEW(Z); VIEW
>> NOTE:
Fine grid embedding of the fine grids (2-5) within the coarse grid
(1) is achieved with the MBLINK command
MBLINK(2,IN,1); MBLINK(3,IN,1); MBLINK(4,IN,1); MBLINK(5,IN,1)
GROUP 7. Variables stored, solved & named
STORE(VPOR); SOLVE(P1,U1,V1)
L($F150)
GROUP 13. Boundary conditions and special sources
*Fix pressure near centre to 0
PATCH(FIXPRS,CELL,NX1/2,NX1/2,NY1/2,NY1/2,1,1,1,LSTEP)
COVAL(FIXPRS,P1,FIXP,0.0)
>> NOTE: MPATCH is used to set patches within the various blocks.
The first argument is the block number. INLET and OUTLET should
not be used as they set commands for U1 etc so it is necessary to
provide COVAL statements for UC1 etc
*North moving wall
MPATCH(5,WN5,NWALL,1,NX5,NY5,NY5,1,1,1,LSTEP)
COVAL(WN5,UC1,1.0,UIN); COVAL(WN5,VC1,1.0,0.0)
II= NX1/4+1; JJ= 3*NX1/4
MPATCH(1,WN1,NWALL,II,JJ,NY1,NY1,1,1,1,LSTEP)
COVAL(WN1,UC1,1.0,UIN); COVAL(WN1,VC1,1.0,0.0)
MPATCH(4,WN4,NWALL,1,NX4,NY4,NY4,1,1,1,LSTEP)
COVAL(WN4,UC1,1.0,UIN); COVAL(WN4,VC1,1.0,0.0)
*West Wall
MPATCH(5,WW5,WWALL,1,1,1,NY5,1,1,1,LSTEP)
COVAL(WW5,UC1,1.0,0.0); COVAL(WW5,VC1,1.0,0.0)
II= NY1/4+1; JJ= 3*NY1/4
MPATCH(1,WW1,WWALL,1,1,II,JJ,1,1,1,LSTEP)
COVAL(WW1,UC1,1.0,0.0); COVAL(WW1,VC1,1.0,0.0)
MPATCH(2,WW2,WWALL,1,1,1,NY2,1,1,1,LSTEP)
COVAL(WW2,UC1,1.0,0.0); COVAL(WW2,VC1,1.0,0.0)
*East Wall
MPATCH(4,WE4,EWALL,NX4,NX4,1,NY4,1,1,1,LSTEP)
COVAL(WE4,UC1,1.0,0.0); COVAL(WE4,VC1,1.0,0.0)
II= NY1/4+1; JJ= 3*NY1/4
MPATCH(1,WE1,EWALL,NX1,NX1,II,JJ,1,1,1,LSTEP)
COVAL(WE1,UC1,1.0,0.0); COVAL(WE1,VC1,1.0,0.0)
MPATCH(3,WE3,EWALL,NX3,NX3,1,NY3,1,1,1,LSTEP)
COVAL(WE3,UC1,1.0,0.0); COVAL(WE3,VC1,1.0,0.0)
*South Wall
MPATCH(2,WS2,SWALL,1,NX2,1,1,1,1,1,LSTEP)
COVAL(WS2,UC1,1.0,0.0); COVAL(WS2,VC1,1.0,0.0)
II= NX1/4+1; JJ= 3*NX1/4
MPATCH(1,WS1,SWALL,II,JJ,1,1,1,1,1,LSTEP)
COVAL(WS1,UC1,1.0,0.0); COVAL(WS1,VC1,1.0,0.0)
MPATCH(3,WS3,SWALL,1,NX3,1,1,1,1,1,LSTEP)
COVAL(WS3,UC1,1.0,0.0); COVAL(WS3,VC1,1.0,0.0)
GROUP 15. Termination of sweeps
LSWEEP= 200; TSTSWP=-1
GROUP 16. Termination of iterations
SELREF = T; RESFAC = 1.E-3
GROUP 17. Under-relaxation devices
RELAX(P1,LINRLX,0.5)
GROUP 19. Data communicated by satellite to GROUND
CSG3= LCRU
GROUP 22. Spot-value print-out
IXMON= NX1/2; IYMON= NY1/2; IZMON= 1