MB-FGE Test: Continuous casting process.
  **************************************************************
  DISPLAY
   A simple  two dimensional representation of  a continuous
   casting process, using the multiblock technique.
   (Chris J.Weire 16/3/94)
                               /----- Free surface
                      SEN     /
            |- - - - _| |_ - - - -|
            |        _____        |
            |                     |    Molten metal enters
            |                     |    through the Submerged
            |                     |    Entry Nozzle (SEN). It
            |                     |    is cooled by the walls
            |                     |    and is drawn out as a
     Water  |                     |    solid, continuous
     Cooled |                     |    billet at the bottom.
     Walls  |        Solid        |
            |        Metal        |
            |        |   |        |
                     v   v
 
   Symmetry is used, and only  the "right hand side" of  the
   caster  is  modelled.  Heat  transfer  is  modelled,  but
   solidification is not.  The free surface  is approximated
   as  a  free  slip  wall.  The "slug flow" outlet velocity
   profile is not modelled.
 
   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
  **************************************************************
  PHOTON USE
   p ; ; ; ; ;

   msg This is the grid. Press Return...
   mgrid 1 k 1 col 5
   mgrid 2 k 1
   pause
   cl
   SET VEC AV OFF
   mvec 1 k 1 sh
   mvec 2 k 1 sh
   msg These are the velocity vectors. Press Return...
   pause
   cl
   mcon 1 p1 k 1 fi
   0.01
   mcon 2 p1 k 1 fi
   0.01
   msg This is the pressure field. Press Return...
   pause
   cl
   mcon 1 tem1 k 1 fi
   0.01
   mcon 2 tem1 k 1 fi
   0.01
   msg This is the temperature field.
   msg Enter e to exit or any other Photon command
   pause
  ENDUSE
    GROUP 1. Run title and other preliminaries
TEXT(MB-FGE: 2D Continuous Caster Model
TITLE
BOOLEAN(LFTHOT); CHAR(PNAME); REAL(THOT,TCOLD)
INTEGER(NXC,NYC,NXS,NYS,FX,LX,FY,LY)
REAL(DPIPE,DIM,REYNO,UIN,UOUT,SPHEAT,COND,SDXOFS,SDYOFS)
REYNO= 10000.; UIN = 1.0;           DIM   = 1.0
DPIPE= DIM/8;  UOUT= UIN*DPIPE/DIM; SPHEAT= 1000.; COND= 3.0E4
TCOLD= 300.;   THOT= 950.
NXC  = 8;      NYC = 16;            NXS   = 32;    NYS = 32
    GROUP 6. Body-fitted coordinates or grid distortion
BFC= T;  GSET(D,NXC,NYC,1)
   ** Set up caster Subdomain
GSET(P,P1,0.0,  0.0,0.0); GSET(P,P2,DIM,  0.0,0.0)
GSET(P,P3,DIM,2*DIM,0.0); GSET(P,P4,0.0,2*DIM,0.0)
GSET(L,L1,P1,P2,NXC,1.0); GSET(L,L2,P2,P3,NYC,1.0)
GSET(L,L3,P3,P4,NXC,1.0); GSET(L,L4,P4,P1,NYC,1.0)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1)
GSET(C,K2,F,K1,+,0.,0.,0.1)
DUMPC(MBGR2)
   ** Set up Pipe Subdomain
SDXOFS= 0.0*DIM; SDYOFS= 2.*DIM; GSET(D,NXS,NYS,1)
GSET(P,P1,    SDXOFS,    SDYOFS,0);GSET(P,P2,SDXOFS+DIM,SDYOFS,0)
GSET(P,P3,SDXOFS+DIM,SDYOFS+DIM,0);GSET(P,P4,SDXOFS,SDYOFS+DIM,0)
GSET(L,L1,P1,P2,NXS,1.0); GSET(L,L2,P2,P3,NYS,1.0)
GSET(L,L3,P3,P4,NXS,1.0); GSET(L,L4,P4,P1,NYS,1.0)
GSET(F,F1,P1,-,P2,-,P3,-,P4,-); GSET(M,F1,+I+J,1,1,1)
GSET(C,K2,F,K1,+,0.,0.,0.1)
DUMPC(MBGR1)
NUMBLK= 2; READCO(MBGR+L); GVIEW(Z); VIEW
    ** You can use MBLINK command instead of READCO(...+L).
    MBLINK(1,SOUTH,2,NORTH)
    GROUP 7. Variables stored, solved & named
STORE(VPOR,TEM1); SOLVE(P1,U1,V1,TEM1)
L($F150)
SOLUTN(TEM1,Y,Y,Y,N,N,N)
    GROUP 9. Properties of the medium (or media)
ENUL= 1.0E-6; RHO1= 1.0; PRNDTL(TEM1)=SPHEAT*ENUL*RHO1/COND
    GROUP 11. Initialization of variable or porosity fields
PNAME= PSIDE; FX= 5; LX= 5; FY= 26; LY= 32; LFTHOT= T
CALL BLOCKAGE
PNAME= PTOP;  FX= 5; LX= 8; FY= 25; LY= 25; LFTHOT= T
CALL BLOCKAGE
PNAME= PBOT;  FX= 1; LX= 8; FY= 20; LY= 20; LFTHOT= F
CALL BLOCKAGE
    GROUP 13. Boundary conditions and special sources
MPATCH(1,INLET,NORTH,1,4,NYS,NYS,1,1,1,LSTEP)
COVAL(INLET,P1,FIXFLU,UIN*RHO1);COVAL(INLET,TEM1,ONLYMS,THOT)
COVAL(INLET,UC1,ONLYMS,0.0); COVAL(INLET,VC1,ONLYMS,-UIN)
MPATCH(2,OUTLET,SOUTH,1,8,1,1,1,1,1,LSTEP)
COVAL(OUTLET,P1,FIXP,0.0);COVAL(OUTLET,TEM1,ONLYMS,0.0)
COVAL(OUTLET,UC1,ONLYMS,0.0); COVAL(OUTLET,VC1,ONLYMS,0.0)
MPATCH(1,EW1,EWALL,NXS,NXS,1,NYS,1,1,1,LSTEP)
COVAL(EW1,UC1,1.0,0.0); COVAL(EW1,VC1,1.0,0.0)
COVAL(EW1,TEM1,1/PRNDTL(TEM1),TCOLD)
MPATCH(2,EW2,EWALL,NXC,NXC,1,NYC,1,1,1,LSTEP)
COVAL(EW2,UC1,1.0,0.0); COVAL(EW2,VC1,1.0,0.0)
COVAL(EW2,TEM1,1/PRNDTL(TEM1),TCOLD)
    GROUP 15. Termination of sweeps
LSWEEP= 200; TSTSWP= -1;  SELREF= T;  RESFAC= 1.0E-3
    GROUP 17. Under-relaxation devices
RELAX(P1,LINRLX,0.5)
    GROUP 19. Data communicated by satellite to GROUND
    * LSG7 permits CCM-solver to use higher order schemes.
LSG7= T
  SCHMBEGIN
      VARNAM UC1  SCHEME SUPERB
      VARNAM VC1  SCHEME SUPERB
      VARNAM TEM1 SCHEME SUPERB
  SCHMEND
    GROUP 22. Spot-value print-out
IXMON= NXS/2; IYMON= NYS/2; IZMON= 1
IF(DISTIL) THEN
+CALL TEST:IRUNN:
ENDIF
LIBREF=206
ENDMAIN ! 
SUBROUTINE BLOCKAGE
    ** Applies conpor to block the zone
       and patches for no-slip condition on uc,vc,wc
 MESG( Applying blockage (with wall friction)>   :pname:
 MESGB( FX= :FX: LX= :LX: FY= :FY: LY= :LY:
 CONPOR(:PNAME:,0.0,CELL,FX,LX,FY,LY,1,1)
 PATCH(:PNAME:N,SWALL,:FX:,:LX:,:LY:+1,:LY:+1,1,1,1,LSTEP)
 COVAL(:PNAME:N,UC1,1.0,0.0); COVAL(:PNAME:N,VC1,1.0,0.0)
 IF(LFTHOT) THEN
+ COVAL(:PNAME:N,TEM1,1/PRNDTL(TEM1),TCOLD)
 ELSE
+ COVAL(:PNAME:N,TEM1,1/PRNDTL(TEM1),THOT)
 ENDIF
IF (FY.GT.1) THEN
+ PATCH(:PNAME:S,NWALL,:FX:,:LX:,:FY:-1,:FY:-1,1,1,1,LSTEP)
+ COVAL(:PNAME:S,UC1,1.0,0.0); COVAL(:PNAME:S,VC1,1.0,0.0)
+ IF(LFTHOT) THEN
+  COVAL(:PNAME:S,TEM1,1/PRNDTL(TEM1),THOT)
+ ELSE
+  COVAL(:PNAME:S,TEM1,1/PRNDTL(TEM1),TCOLD)
+ ENDIF
ENDIF
+ PATCH(:PNAME:E,WWALL,:LX:+1,:LX:+1,:FY:,:LY:,1,1,1,LSTEP)
+ COVAL(:PNAME:E,UC1,1.0,0.0); COVAL(:PNAME:E,VC1,1.0,0.0)
+ IF(LFTHOT) THEN
+  COVAL(:PNAME:E,TEM1,1/PRNDTL(TEM1),TCOLD)
+ ELSE
+  COVAL(:PNAME:E,TEM1,1/PRNDTL(TEM1),THOT)
+ ENDIF
IF (FX.GT.1) THEN
+ PATCH(:PNAME:W,EWALL,:FX:-1,:FX:-1,:FY:,:LY:,1,1,1,LSTEP)
+ COVAL(:PNAME:W,UC1,1.0,0.0); COVAL(:PNAME:W,VC1,1.0,0.0)
+ IF(LFTHOT) THEN
+  COVAL(:PNAME:W,TEM1,1/PRNDTL(TEM1),THOT)
+ ELSE
+  COVAL(:PNAME:W,TEM1,1/PRNDTL(TEM1),TCOLD)
+ ENDIF
ENDIF
ENDSUB
SUBROUTINE TEST1
ENDSUB