MB-FGE Test: Flow over back-facing step.
  **************************************************************
  DISPLAY
   This case  concerns 2D  incompressible, laminar/turbulent
   flow over back-facing step.  Geometry of the problem  was
   taken from GAMM-workshop 1984 (Re=50, 150, 500). A  fully
   developed parabolic laminar flow profile is prescribed at
   the inflow.
 
   Computational domain comprises fine grid, which is embedded
   after the step. Sizes (NXFG, NYFG) and refinement ratios
   (IFCX, IFCY) of the fine grid may be modified:
    
            NXFG                                
               NYFG                             
             
   Simulation of the turbulent (LTURB=T) flow can be carried
   out with either the Lam-Bremhorst low-Re extension of the
   Chen-Kim  K-E model (LTWOL=F)  or the 2-layer  low-Re K-E
   model (LTWOL=T).
 
   User can  use higher  order convective  schemes (MINMOD-,
   SUPER-BB-, SMART- or QUICK-scheme) by setting appropriate
   name of the scheme for solved variable.
  ----------------------------------------------------------
  ENDDIS
L(PAUSE
  **************************************************************
BOOLEAN(LUNIF,LTURB,LTWOL,LSCHM)
LUNIF= F;  LTURB = T;  LTWOL= T;  LSCHM= T
IF(LTURB) THEN
+ LUNIF= T
ENDIF
  **************************************************************
  PHOTON USE
   p ; ; ; ; ;
 
   msg Computational Domain:
   mgrid 1 k 1
   mgrid 2 k 1 col 2
   msg Press Any Key to Continue...
   pause
   cl
   set vec av off
   msg Velocity Vectors:
   mvec 1 k 1 sh
   mvec 2 k 1 sh
   msg Press Any Key to Continue...
   pause
   cl
   msg Contours of Pressure:
   mcon 1 p1 k 1 fi
   0.01
   mcon 2 p1 k 1 fi
   0.01
   pause
   cl
   msg Contours of U1-velocity:
   mcon 1 u1 k 1 fi
   0.01
   mcon 2 u1 k 1 fi
   0.01
   msg Press E  to exit PHOTON ...
   pause
  ENDUSE
  **************************************************************
    GROUP 1. Run title and other preliminaries
INTEGER(NX1,NXSTEP,NY1,NZ1,NX2,NY2,NZ2,NXFG,NYFG,IFCX,IFCY,IC,JC)
REAL(XE1,YE1,XE2,YE2,XE3,YE3,XE4,YE4)
REAL(REYNU,UIN,HSTEP,STEPL,HCHAN,LCHAN,YCUR,UCR,DTHYD,TKEIN,EPSIN)
IF(LTURB) THEN
+ REYNU= 4.5E4;  UIN= 1.0
+IF(LTWOL) THEN
+ TEXT(MB-FGE: 2D Flow Over Back-Step (2L K-E).
+ELSE
+ TEXT(MB-FGE: 2D Flow Over Back-Step (L-B K-E).
+ENDIF
ELSE
+ REYNU= 150.0;  UIN= 1.0
+ TEXT(MB-FGE: 2D Flow Over Back-Step (Re=150).
ENDIF
TITLE
HSTEP= 0.5;  STEPL = 3.0;  HCHAN= 1.5;  LCHAN= 22.0
   ** First domain.
NXSTEP= 6;  NX1= 22;  NY1= 12;  NZ1= 1
   ** Fine grid:
NXFG= 8;  NYFG= 8;  IFCX= 3;          IFCY= 2
NX2 = NXFG*IFCX;    NY2 = NYFG*IFCY;  NZ2 = 1
    GROUP 6. Body-fitted coordinates or grid distortion
BFC= T; GSET(D,NX1,NY1,NZ1,LCHAN,HCHAN,0.1)
  ** Define grid points and lines for the main domain:
GSET(P,P1,  0.0,  0.0,0.0);  GSET(P,P2,STEPL,  0.0,0.0)
GSET(P,P3,LCHAN,  0.0,0.0);  GSET(P,P4,LCHAN,HSTEP,0.0)
GSET(P,P5,LCHAN,HCHAN,0.0);  GSET(P,P6,STEPL,HCHAN,0.0)
GSET(P,P7,  0.0,HCHAN,0.0);  GSET(P,P8,  0.0,HSTEP,0.0)
GSET(L,L12,P1,P2,    NXSTEP,-1.3); GSET(L,L23,P2,P3,NX1-NXSTEP,1.0)
GSET(L,L34,P3,P4,     NY1/3, 1.0); GSET(L,L45,P4,P5,   2*NY1/3,1.0)
GSET(L,L56,P5,P6,NX1-NXSTEP, 1.0); GSET(L,L67,P6,P7,    NXSTEP,1.3)
GSET(L,L78,P7,P8,   2*NY1/3, 1.0); GSET(L,L81,P8,P1,     NY1/3,1.0)
GSET(F,F1,P1,P2,P3,P4,P5,P6,P7,P8); GSET(M,F1,+I+J,1,1,1)
GSET(C,K:NZ1+1:,F,K1,1,NX1,1,NY1,+,0.0,0.0,0.1,INC,1.0)
  ** Define grid nodes to insert fine grid:
IC= NXSTEP+1; XE1= XC(IC, 1,1); YE1= YC(IC, 1,1)
IC= IC+NXFG;  XE2= XC(IC, 1,1); YE2= YC(IC, 1,1)
JC= NYFG+1;   XE3= XC(IC,JC,1); YE3= YC(IC,JC,1)
IC= IC-NXFG;  XE4= XC(IC,JC,1); YE4= YC(IC,JC,1)
DUMPC(MBGR1)
  ** Define grid points and lines for the fine grid:
GSET(D,NX2,NY2,NZ2,1.0,1.0,0.1)
GSET(P,P1,XE1,YE1,0.0);  GSET(P,P2,XE2,YE2,0.0)
GSET(P,P3,XE3,YE3,0.0);  GSET(P,P4,XE4,YE4,0.0)
GSET(L,L12,P1,P2,NX2,1.0); GSET(L,L23,P2,P3,NY2,1.0)
GSET(L,L34,P3,P4,NX2,1.0); GSET(L,L41,P4,P1,NY2,1.0)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1)
GSET(C,K:NZ1+1:,F,K1,1,NX2,1,NY2,+,0.0,0.0,0.1,INC,1.0)
DUMPC(MBGR2)
  ** Assemble blocks:
NUMBLK = 2; READCO(MBGR+L); GVIEW(Z); VIEW
  ** Set links:
  ** You can use MBLINK command instead of READCO(...+L).
    MBLINK(2,IN,1)
    GROUP 7. Variables stored, solved & named
STORE(VPOR); SOLVE(P1,U1,V1)
IF(LTURB) THEN
+ STORE(GEN1,ENUT,LEN1);
+ IF(LTWOL) THEN
+  TURMOD(KEMODL-2L)
+ ELSE
+  TURMOD(KECHEN-LOWRE)
+ ENDIF
ENDIF
L($F150)
    GROUP 9. Properties of the medium (or media)
ENUL= UIN*HSTEP/REYNU
    GROUP 11. Initialization of variable or porosity fields
INIADD= F; FIINIT(UC1)= UIN
MPATCH(1,STEP,INIVAL,1,NXSTEP,1,NY1/3,1,NZ1,1,1)
INIT(STEP,VPOR,0.0,0.0)
IF(LTURB) THEN
+ TKEIN= (0.05*UIN)**2; EPSIN= 0.1643*TKEIN**1.5/0.09/HSTEP
+ FIINIT(P1)  = 1.3E-4; FIINIT(KE)= TKEIN;  FIINIT(EP)= EPSIN
+ FIINIT(ENUT)= 1.E-3
ENDIF
    GROUP 13. Boundary conditions and special sources
    ** Inlet.
JC= NY1/3+1
DO II = JC,NY1
+ IF(LUNIF) THEN
+  UCR = UIN
+ ELSE
+  YCUR= HSTEP+(2*(II-JC)+1)/2*(HCHAN-HSTEP)/(NY1-JC+1)
+  UCR = UIN*(1.0-((2*YCUR-HCHAN-HSTEP)/(HCHAN-HSTEP))**2)
+ ENDIF
+ MPATCH(1,INL:II:,WEST,1,1,II,II,1,NZ1,1,LSTEP)
+  COVAL(INL:II:,P1, FIXFLU,UCR*RHO1)
+  COVAL(INL:II:,UC1,ONLYMS,UCR); COVAL(INL:II:,VC1,ONLYMS,0.0)
+ IF(LTURB) THEN
+  COVAL(INL:II:,KE,ONLYMS,TKEIN);COVAL(INL:II:,EP,ONLYMS,EPSIN)
+ ENDIF
ENDDO
    ** Outlet:
MPATCH(1,OUT,EAST,NX1,NX1,1,NY1,1,NZ1,1,LSTEP)
COVAL(OUT,P1,1000.,0.0)
    ** Walls.
MPATCH(1,WS1,SWALL,       1,NXSTEP, JC,        JC,1,NZ1,1,LSTEP)
MPATCH(1,WS2,SWALL,NXSTEP+1,   NX1,  1,         1,1,NZ2,1,LSTEP)
MPATCH(1,WN1,NWALL,       1,   NX1,NY1,       NY1,1,NZ1,1,LSTEP)
MPATCH(2,WW1,WWALL,       1,     1,  1,NY1/3*IFCY,1,NZ2,1,LSTEP)
MPATCH(2,WS3,SWALL,       1,   NX2,  1,         1,1,NZ2,1,LSTEP)
IF(LTURB) THEN
+ COVAL(WS1,UC1,LOGLAW,0.0); COVAL(WS1, VC1,LOGLAW,0.0)
+ COVAL(WS1, KE,  1.0,0.0); COVAL(WS1,LTLS,  1.0,0.0)
+ COVAL(WS2,UC1,LOGLAW,0.0); COVAL(WS2, VC1,LOGLAW,0.0)
+ COVAL(WS2, KE,  1.0,0.0); COVAL(WS2,LTLS,  1.0,0.0)
+ COVAL(WN1,UC1,LOGLAW,0.0); COVAL(WN1, VC1,LOGLAW,0.0)
+ COVAL(WN1, KE,  1.0,0.0); COVAL(WN1,LTLS,  1.0,0.0)
+ COVAL(WW1,UC1,LOGLAW,0.0); COVAL(WW1, VC1,LOGLAW,0.0)
+ COVAL(WW1, KE,  1.0,0.0); COVAL(WW1,LTLS,  1.0,0.0)
+ COVAL(WS3,UC1,LOGLAW,0.0); COVAL(WS3, VC1,LOGLAW,0.0)
+ COVAL(WS3, KE,  1.0,0.0); COVAL(WS3,LTLS,  1.0,0.0)
+ COVAL(OUT,KE,ONLYMS,SAME); COVAL(OUT,EP,ONLYMS,SAME)
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(WN1,UC1,1.0,0.0); COVAL(WN1,VC1,1.0,0.0)
+ COVAL(WW1,UC1,1.0,0.0); COVAL(WW1,VC1,1.0,0.0)
+ COVAL(WS3,UC1,1.0,0.0); COVAL(WS3,VC1,1.0,0.0)
ENDIF
    GROUP 15. Termination of sweeps
LSWEEP = 100; TSTSWP = -1
    GROUP 16. Termination of iterations
SELREF = T; RESFAC = 1.E-3
    GROUP 17. Under-relaxation devices
RELAX(P1,LINRLX,0.5)
IF(LTURB) THEN
+ LSWEEP= 200;  DTHYD= LCHAN/NX/UIN;  KELIN= 1
+ RELAX(  KE,LINRLX,0.5); RELAX( EP,LINRLX,0.1)
+ RELAX( UC1,FALSDT,DTHYD); RELAX(VC1,FALSDT,DTHYD)
+ RELAX(ENUT,LINRLX,0.1)
ENDIF
    GROUP 19. Data communicated by satellite to GROUND
    * LSG7 permits CCM-solver to use higher order schemes.
LSG7= LSCHM
  SCHMBEGIN
      VARNAM UC1 SCHEME MINMOD
      VARNAM VC1 SCHEME MINMOD
      VARNAM KE  SCHEME MINMOD
      VARNAM EP  SCHEME MINMOD
  SCHMEND
    GROUP 22. Spot-value print-out
IXMON= NX1+NX2/2+2; IYMON= NY2/2+1; IZMON=1