** MB-FGE Test: 2D 'cyclone'-like geometry.
  **************************************************************
  DISPLAY
   This case concerns incompressible laminar/turbulent  flow
   through 'cyclone'-like  geometry. To  calculate turbulent
   flow the two layer K-E model is used.
 
   3 Blocks are used.  The main block comprises  XCYCLE-like
   link to itself.
 
   This Q1 file includes Photon Use information.
   ---------------------------------------------------------
  ENDDIS
L(PAUSE
  **************************************************************
BOOLEAN(LTURB);  LTURB= F
  **************************************************************
  PHOTON USE
   p ; ; ; ; ;
 
   msg Computational Domain:
   mgrid 1 k 1 col 2
   mgrid 2 k 1 col 3
   mgrid 3 k 1 col 4
   msg Press Any Key to Continue...
   pause
   cl
   set vec av off
   msg Velocity Vectors:
   mgrid 1 out k 1
   mgrid 2 out k 1
   mgrid 3 out k 1
   mvec 1 k 1 sh
   mvec 2 k 1 sh
   mvec 3 k 1 sh
   msg Press Any Key to Continue...
   pause
   cl
   msg Contours of Pressure:
   mgrid 1 out k 1
   mgrid 2 out k 1
   mgrid 3 out k 1
   mcon 1 p1 k 1 fi
   0.01
   mcon 2 p1 k 1 fi
   0.01
   mcon 3 p1 k 1 fi
   0.01
   msg Press Any Key to Continue...
   msg Press E  to exit PHOTON ...
   pause
  ENDUSE
  **************************************************************
    GROUP 1. Run title and other preliminaries
REAL(REYNO,UIN,REXT,RINT,PI,DEL,DTHYD,TKEIN,EPSIN)
REAL(XB1,YB1,XB2,YB2,XB3,YB3,XARC,YARC,TETC)
INTEGER(NX11,NX12,NX13,NX14,NX15,NX16,NX17,NX1,NY1,NZ1)
INTEGER(NX2,NY2,NZ2,NX3,NY3,NZ3,IBFCX,IC,JC,IC1,JC1)
IF(LTURB) THEN
+ REYNO= 4.5E4;   UIN = 10.0
+ TEXT(MB-FGE: Turbulent flow through 'cyclone'.
ELSE
+ REYNO= 100.0;   UIN = 10.0
+ TEXT(MB-FGE: Laminar flow through 'cyclone'.
ENDIF
TITLE
PI = 3.14159
  ** Problem definition:
REXT = 1.0;  RINT= 0.5;  DEL = 0.5;  TETC = 3.*PI/20.
NX11 = 4;    NX12= 6;    NX13= 6;    NX14 = 12;     NX15= 6
NX16 = 6;    NX17= 4;    NX1 = NX11+NX12+NX13+NX14+NX15+NX16+NX17
NY1  = 10;   NZ1 = 1;    JC  = NY1/2;IBFCX= 1
NX2  = IBFCX*NX12;       NY2 = 8;    NZ2  = 1
NX3  = IBFCX*NX16;       NY3 = 8;    NZ3  = 1
    GROUP 6. Body-fitted coordinates or grid distortion
    ** Create grid for the 1st domain:
BFC= T;  GSET(D,NX1,NY1,NZ1)
GSET(P,P1,-REXT,REXT,0.0); GSET(P,P2,-REXT, 0.0,0.0)
GSET(P,S4,-RINT,REXT,0.0); GSET(P,S3,-RINT, 0.0,0.0)
GSET(P,P3,  0.0, 0.0,0.0); GSET(P,P4,  0.0,REXT,0.0)
GSET(L,L12,P1,P2,NX11,1.0); GSET(L,L23,P2,S3,NY1-JC, 1.3)
GSET(L,LS3,S3,P3,  JC,1.0); GSET(L,L34,P3,P4,  NX11, 1.0)
GSET(L,L4S,P4,S4,  JC,1.0); GSET(L,L41,S4,P1,NY1-JC,-1.3)
GSET(F,F1,P1,-,P2,S3,P3,-,P4,S4); GSET(M,F1,+I+J,1,1,1)
GSET(C,I:NX11+1:,F,I1,RZ,PI/5.,0.0,REXT,INC,1.0); GSET(I)
IC= NX11+1; IC1= IC+NX12; JC1= NY1-JC+1
GSET(C,I:IC1:,F,I:IC:,JC1,NY1,1,1,RZ,TETC,0.0,REXT,INC,1.0)
XB1= XC( IC,  1,1); YB1= YC( IC,  1,1)
XB2= XC( IC,JC1,1); YB2= YC( IC,JC1,1)
XB3= XC(IC1,JC1,1); YB3= YC(IC1,JC1,1)
IC1= IC+NX12/2; XARC= XC(IC1,JC1,1); YARC= YC(IC1,JC1,1)
GSET(P,P5,XB1, YB1,0.0); GSET(P,P6,XB1,0.0,0.0)
GSET(P,P7,XB3, YB3,0.0); GSET(P,P8,XB2,YB2,0.0)
GSET(L,L56,P5,P6,NX12,1.0); GSET(L,L67,P6,P7,NY1-JC, 1.3)
GSET(L,L78,P7,P8,NX12,1.0,ARC,XARC,YARC,0.0)
GSET(L,L85,P8,P5,NY1-JC,-1.3); GSET(F,F2,P5,-,P6,-,P7,-,P8,-)
GSET(M,F2,+I+J,NX11+1,1,1,LAP15)
IC= IC+NX12; IC1= IC+NX13
GSET(C,I:IC1:,F,I:IC:,JC1,NY1,1,1,RZ,TETC,0.0,REXT,INC,1.0)
XB2= XC(IC1,JC1,1); YB2= YC(IC1,JC1,1)
IC1= IC+NX13/2; XARC= XC(IC1,JC1,1); YARC= YC(IC1,JC1,1)
GSET(P,P9,0.0,0.0,0.0); GSET(P,P10,XB2,YB2,0.0)
GSET(P,S7,XB3,YB3,0.0)
GSET(L,L69,P6,P9,NX13,1.0); GSET(L,L910,P9,P10,NY1-JC, 1.3)
GSET(L,L107,P10,S7,NX12,1.0,ARC,XARC,YARC,0.0)
GSET(L,L76,S7,P6,NY1-JC,-1.3); GSET(F,F3,P6,-,P9,-,P10,-,S7,-)
GSET(M,F3,+I+J,NX11+NX12+1,1,1,LAP15)
IC= NX11+NX12+NX13+1; IC1= IC+NX14
GSET(C,I:IC1:,F,I:IC:,RZ,PI,0.0,REXT,INC,1.0)
IC= IC1; IC1= IC+NX15; GSET(I)
GSET(C,I:IC1:,F,I:IC:,JC1,NY1,1,1,RZ,TETC,0.0,REXT,INC,1.0)
XB2= XC( IC,JC1,1); YB2= YC( IC,JC1,1)
XB3= XC(IC1,JC1,1); YB3= YC(IC1,JC1,1)
IC1= IC+NX15/2; XARC= XC(IC1,JC1,1); YARC= YC(IC1,JC1,1)
GSET(P,P1,0.0,2.*REXT,0.0); GSET(P,P2,XB1,2.*REXT,0.0)
GSET(P,P3,XB3,    YB3,0.0); GSET(P,P4,XB2,    YB2,0.0)
GSET(L,L12,P1,P2,NX15,1.0); GSET(L,L23,P2,P3,NY1-JC, 1.3)
GSET(L,L34,P3,P4,NX15,1.0,ARC,XARC,YARC,0.0)
GSET(L,L41,P4,P1,NY1-JC,-1.3); GSET(F,F4,P1,-,P2,-,P3,-,P4,-)
GSET(M,F4,+I+J,NX11+NX12+NX13+NX14+1,1,1,LAP15)
IC= IC+NX15; IC1= IC+NX16
GSET(C,I:IC1:,F,I:IC:,JC1,NY1,1,1,RZ,TETC,0.0,REXT,INC,1.0)
XB2= XC(IC1,JC1,1); YB2= YC(IC1,JC1,1)
IC1= IC+NX16/2; XARC= XC(IC1,JC1,1); YARC= YC(IC1,JC1,1)
GSET(P,P5,XB1,2.*REXT-YB1,0.0); GSET(P,P6,XB2,YB2,0.0)
GSET(P,P7,XB3,        YB3,0.0)
GSET(L,L25,P2,P5,NX16,1.0); GSET(L,L56,P5,P6,NY1-JC, 1.3)
GSET(L,L67,P6,P7,NX15,1.0,ARC,XARC,YARC,0.0)
GSET(L,L72,P7,P2,NY1-JC,-1.3); GSET(F,F5,P2,-,P5,-,P6,-,P7,-)
GSET(M,F5,+I+J,NX11+NX12+NX13+NX14+NX15+1,1,1,LAP15)
IC= NX11+NX12+NX13+NX14+NX15+NX16+1
GSET(C,I:NX17+IC:,F,I:IC:,RZ,PI/5.,0.0,REXT,INC,1.0)
GSET(C,K:NZ1+1:,F,K1,1,NX1,1,NY1,+,0.0,0.0,0.1,INC,1.0)
DUMPC(MBGR1)
    ** Create grid for the 2nd domain:
GSET(D,NX2,NY2,NZ2,REXT,DEL,REXT)
GSET(P,P1,-(DEL+REXT),YB1,0.0);GSET(P,P2,-(DEL+REXT),0.0,0.0)
GSET(P,P3,        XB1,0.0,0.0);GSET(P,P4,        XB1,YB1,0.0)
GSET(L,L12,P1,P2,NX2,1.0);  GSET(L,L23,P2,P3,NY2,-1.3)
GSET(L,L34,P3,P4,NX2,1.0);  GSET(L,L41,P4,P1,NY2, 1.3)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1)
GSET(C,K:NZ2+1:,F,K1,1,NX2,1,NY2,+,0.0,0.0,0.1,INC,1.0)
DUMPC(MBGR2)
    ** Create grid for the 3nd domain:
GSET(D,NX3,NY3,NZ3,REXT,DEL,REXT)
GSET(P,P1,-(DEL+REXT),    2.*REXT,0.0)
GSET(P,P2,-(DEL+REXT),2.*REXT-YB1,0.0)
GSET(P,P3,        XB1,2.*REXT-YB1,0.0)
GSET(P,P4,        XB1,     2*REXT,0.0)
GSET(L,L12,P1,P2,NX2,1.0);  GSET(L,L23,P2,P3,NY2,-1.3)
GSET(L,L34,P3,P4,NX2,1.0);  GSET(L,L41,P4,P1,NY2, 1.3)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1)
GSET(C,K:NZ2+1:,F,K1,1,NX2,1,NY2,+,0.0,0.0,0.1,INC,1.0)
DUMPC(MBGR3)
  ** Assemble blocks:
NUMBLK= 3;  READCO(MBGR+L);  GVIEW(Z);  VIEW
  ** Set links:
    ** To set up LINKS you can use MBLINK or MPATCH commands
       instead of READCO(...+L).
    MBLINK(1,WEST,1,EAST)
    MPATCH(1,MBL1.2,SOUTH ,NX11+1,NX11+NX12,  1,  1,1,NZ1,1,LSTEP)
    MPATCH(2,MBL2.1,NORTH ,     1,      NX2,NY2,NY2,1,NZ2,1,LSTEP)
    IC= NX11+NX12+NX13+NX14+NX15
    MPATCH(1,MBL1.3,SOUTH ,  IC+1,  IC+NX16,  1,  1,1,NZ1,1,LSTEP)
    MPATCH(3,MBL3.1,NORTH ,     1,      NX3,NY3,NY3,1,NZ3,1,LSTEP)
    GROUP 7. Variables stored, solved & named
STORE(VPOR); SOLVE(P1,U1,V1)
IF(LTURB) THEN
+ STORE(ENUT,LEN1);  TURMOD(KEMODL-2L)
ENDIF
L($F150)
    GROUP 9. Properties of the medium (or media)
ENUL = UIN*REXT/REYNO; RHO1 = 1.189
    GROUP 11. Initialization of variable or porosity fields
INIADD= F
IF(LTURB) THEN
+ TKEIN= (0.05*UIN)**2; EPSIN= 0.1643*TKEIN**1.5/0.09/DEL
+ FIINIT(P1)= 1.3E-4; FIINIT(KE)= TKEIN;  FIINIT(EP)= EPSIN
ENDIF
    GROUP 13. Boundary conditions and special sources
    ** Inlet:
MPATCH(3,INL,SOUTH,1,NX3,1,1,1,NZ3,1,LSTEP)
COVAL(INL, P1,FIXFLU,RHO1*UIN)
COVAL(INL,UC1,ONLYMS,0.0); COVAL(INL,VC1,ONLYMS,UIN)
    ** Walls:
MPATCH(1,WS1,SWALL,1,NX11,1,1,1,NZ1,1,LSTEP)
IC= NX11+NX12+NX13+NX14+NX15
MPATCH(1,WS2,SWALL,NX11+NX12+1,IC,1,1,1,NZ1,1,LSTEP)
IC= IC+NX16
MPATCH(1,WS3,SWALL,IC+1,NX1,1,1,1,NZ1,1,LSTEP)
MPATCH(2,WW2,WWALL,1,1,1,NY2,1,NZ2,1,LSTEP)
MPATCH(2,WE2,EWALL,NX2,NX2,1,NY2,1,NZ2,1,LSTEP)
MPATCH(3,WW3,WWALL,1,1,1,NY3,1,NZ3,1,LSTEP)
MPATCH(3,WE3,EWALL,NX3,NX3,1,NY3,1,NZ3,1,LSTEP)
    ** Outlet:
MPATCH(2,OUT,SOUTH,1,NX2,1,1,1,NZ2,1,LSTEP)
COVAL(OUT, P1,1000.0,0.0)
COVAL(OUT,UC1,ONLYMS,0.0); COVAL(OUT,VC1,ONLYMS,0.0)
IF(LTURB) THEN
+ COVAL(INL,KE,ONLYMS,TKEIN); COVAL(INL,EP,ONLYMS,EPSIN)
+ COVAL(OUT,KE,ONLYMS, SAME); COVAL(OUT,EP,ONLYMS, SAME)
+ COVAL(WS1,KE,1.0,0.0); COVAL(WS1,LTLS,1.0,0.0)
+ COVAL(WS2,KE,1.0,0.0); COVAL(WS2,LTLS,1.0,0.0)
+ COVAL(WS3,KE,1.0,0.0); COVAL(WS3,LTLS,1.0,0.0)
+ COVAL(WW2,KE,1.0,0.0); COVAL(WW2,LTLS,1.0,0.0)
+ COVAL(WE2,KE,1.0,0.0); COVAL(WE2,LTLS,1.0,0.0)
+ COVAL(WW3,KE,1.0,0.0); COVAL(WW3,LTLS,1.0,0.0)
+ COVAL(WE3,KE,1.0,0.0); COVAL(WE3,LTLS,1.0,0.0)
+ COVAL(WS1,UC1,LOGLAW,0.0); COVAL(WS1,VC1,LOGLAW,0.0)
+ COVAL(WS2,UC1,LOGLAW,0.0); COVAL(WS2,VC1,LOGLAW,0.0)
+ COVAL(WS3,UC1,LOGLAW,0.0); COVAL(WS3,VC1,LOGLAW,0.0)
+ COVAL(WW2,UC1,LOGLAW,0.0); COVAL(WW2,VC1,LOGLAW,0.0)
+ COVAL(WE2,UC1,LOGLAW,0.0); COVAL(WE2,VC1,LOGLAW,0.0)
+ COVAL(WW3,UC1,LOGLAW,0.0); COVAL(WW3,VC1,LOGLAW,0.0)
+ COVAL(WE3,UC1,LOGLAW,0.0); COVAL(WE3,VC1,LOGLAW,0.0)
ELSE
+ COVAL(WS1,UC1,1.0,0.0); COVAL(WS1,VC1,1.0,0.0)
+ COVAL(WS2,UC1,1.0,0.0); COVAL(WS2,VC1,1.0,0.0)
+ COVAL(WS3,UC1,1.0,0.0); COVAL(WS3,VC1,1.0,0.0)
+ COVAL(WW2,UC1,1.0,0.0); COVAL(WW2,VC1,1.0,0.0)
+ COVAL(WE2,UC1,1.0,0.0); COVAL(WE2,VC1,1.0,0.0)
+ COVAL(WW3,UC1,1.0,0.0); COVAL(WW3,VC1,1.0,0.0)
+ COVAL(WE3,UC1,1.0,0.0); COVAL(WE3,VC1,1.0,0.0)
ENDIF
    GROUP 15. Termination of sweeps
LSWEEP = 700; TSTSWP = -1
    GROUP 16. Termination of iterations
SELREF = T; RESFAC = 1.E-3
    GROUP 17. Under-relaxation devices
DTHYD= 10.*REXT/NY/UIN; RELAX(P1,LINRLX,0.25)
RELAX(UC1,FALSDT,DTHYD); RELAX(VC1,FALSDT,DTHYD)
IF(LTURB) THEN
+ KELIN= 1
+ RELAX(KE,FALSDT,DTHYD); RELAX(EP,FALSDT,DTHYD)
ENDIF
    GROUP 19. Data communicated by satellite to GROUND
    * LSG3 = T, activates curvilinearity treatment;
    * LSG4 = T, activates nonorthogonality treatment.
LSG3= T;  LSG4= T
    GROUP 22. Spot-value print-out
IXMON = NX1/2+1; IYMON = NY1/2+1; IZMON = 1