TALK=T;RUN(1,1)
  PHOTON USE
  p;;;;;

  up 1 0 0;vi 0.5 1 0.75
  gr ou x 1;gr ou y 1;gr ou z 1
  gr ou x m;gr ou y m;gr ou z m
  gr ou x 1 y 1 2 z 2 2 col 2
  gr ou x 6 y 1 2 z 7 7 col 2
  gr ou z 4 x 1 4 y 1 3 col 6
  gr ou z 6 x 2 5 y 1 3 col 6
  ve y 2 sh

  msg                3D SHELL-AND-TUBE HEAT EXCHANGER
  msg                --------------------------------
  msg                    Velocity 1 phase:
  msg  Press Enter to continue
  pause;vi 0 1 0
  *msg                3D SHELL-AND-TUBE HEAT EXCHANGER
  *msg                --------------------------------
  *msg              Temperature distribution 1 phase:
  *con 1sth y 2 sh;in 50
  msg  Press Enter to continue
  pause
  con off;red
  *msg                3D SHELL-AND-TUBE HEAT EXCHANGER
  *msg                --------------------------------
  *msg              Temperature distribution 2 phase:
  *con 2ndh y 2 sh;in 50
  msg Press e to END
  ENDUSE
  DISPLAY
     This case concerns 3D flow of viscous fluid on the shell side
     of a heat exchanger.

     Two types of false-time under-relaxation are provided via
     PLANT: namely 1. global and 2. local.

     For the purpose of illustration, the solution process is
     divided into 3 stages, as follows:

     * No relaxation for             ISWEEP  < 101 ,
     * Global relaxation for         100 < ISWEEP < 201 ,
     * Local relaxation  for         200 < ISWEEP  .

    PLANT information :
     * Data input groups used: 17, 19
     * Ground groups planted : 13, 19-2, 19-3
     * Headings used  : SC02??, SC03??, SORC??
     * Functions used : None
     * Commands used  : IF, REGION
  ENDDIS
       PLANTBEGIN
    ** Global under-relaxation
    RG(2)=AMIN1(XULAST/FLOAT(NX),YVLAST/FLOAT(NY),$
                               ZWLAST/FLOAT(NZ))/$
                     AMAX1(U1,:FLO1:/2.)
                                       AMAX1(U1,:FLO1:/2.)
    REGION(1,1,2,3,2,2)
    IF(ISWEEP.GT.100.AND.ISWEEP.LE.200)

    DTFALS(U1)=RG(2)
    REGION(1,1,1,1,1,1)
    IF(ISWEEP.GT.100.AND.ISWEEP.LE.200)
     Global under-relaxation  is   introduced   by   PLANTed
     codings  for DTFALS(U1) at the start of each sweep.  It
     is assumed to be equal to  the  smallest  of  the  cell
     sizes  divided  by  the  largest  of  inlet  mass  flux
     velocity and local velocity  magnitude  normal  to  the
     inlet  plane.  It  is applied over the whole domain for
     the velocity in question IF isweep is greater than  100
     but less or equal than 200.

    Here and  for  next  two statemnts,  command REGION with
    unity arguments is  used  to  economize  the  operations
    needed for equivalences.
  <<<<<<<<<<<<<<<<<<<<<<< Comment ends <<<<<<<<<<<<<<<<<<<<<
    DTFALS(V1)=RG(2)
    REGION(1,1,1,1,1,1)
    IF(ISWEEP.GT.100.AND.ISWEEP.LE.200)
    The above  settings do for DTFALS(V1) what has been done
    for DTFALS(U1) above.
  <<<<<<<<<<<<<<<<<<<<<<< Comment ends <<<<<<<<<<<<<<<<<<<<<
    DTFALS(W1)=RG(2)
    REGION(1,1,1,1,1,1)
    IF(ISWEEP.GT.100.AND.ISWEEP.LE.200)
    The above settings do for DTFALS(W1) what has been  done
    for DTFALS(U1).
  <<<<<<<<<<<<<<<<<<<<<<< Comment ends <<<<<<<<<<<<<<<<<<<<<
    ** Local self-steering under-relaxation
PATCH(RELAX,PHASEM,1,NX,1,NY,1,NZ,1,1)
   CO=1./TFAL
COVAL(RELAX,U1,GRND,SAME)
  IF(ISWEEP.GT.200)
   CO=1./TFAL
COVAL(RELAX,V1,GRND,SAME)
  IF(ISWEEP.GT.200)
   CO=1./TFAL
COVAL(RELAX,W1,GRND,SAME)
  IF(ISWEEP.GT.200)
     Local self-steering   under-relaxation   is  introduced
     through the sources of momentum for  the  whole  domain
     defined  by  PATCH  named RELAX,  which TYPE is PHASEM,
     VALue is SAME,  COefficient, which is set to reciprocal
     of  false-time  step.  It  is  applied  for  each sweep
     greater than 200.
  <<<<<<<<<<<<<<<<<<<<<<< Comment ends <<<<<<<<<<<<<<<<<<<<<
    ** Local fals-time step
STORE(TFAL);OUTPUT(TFAL,Y,Y,Y,Y,Y,Y)
   TFAL=1/(SQRT(U1**2+W1**2+V1**2)/               AMIN1(DXU$
2D*1,AMIN1(DYV2D*1,DZ*1))+               RG(1)/AMIN1(DXU2D*1,AMIN1($
DYV2D*1,DZ*1))**2)
               RG(1)/AMIN1(DXU2D*1,AMIN1(DYV2D*1,DZ*1))**2)
  IF(ISWEEP.GT.200)

     The reciprocal of local self-steering  false-time  step
     is  set  to the local velocity vector magnitude divided
     by smallest distance between walls of  continuity  cell
     in  question plus local diffusivities,  i.e.  kinematic
     viscosities, divided by the smallest distance squarred.

     The variable TFAL,  false-time,  is provided to  assist
     the  computations.  It is calculated right at the start
     of each IZ-slab for all sweeps greter than 200 and  can
     be used to monitor the variation of local magnitudes of
     false-time steps.

   <<<<<<<<<<<<<<<<<<<<<<< Comment ends <<<<<<<<<<<<<<<<<<<<<
    PLANTEND
  PHOTON USE
  p;;;;;

  up 1 0 0;vi 0.5 1 0.75
  gr ou x 1;gr ou y 1;gr ou z 1
  gr ou x m;gr ou y m;gr ou z m
  gr ou x 1 y 1 2 z 2 2 col 2
  gr ou x 6 y 1 2 z 7 7 col 2
  gr ou z 4 x 1 4 y 1 3 col 6
  gr ou z 6 x 2 5 y 1 3 col 6
  ve y 2 sh

  msg                3D SHELL-AND-TUBE HEAT EXCHANGER
  msg                --------------------------------
  msg                        Velocity vectors
  ENDUSE
 ************************************************************
  Group 1. Run Title and Number
 ************************************************************
 ************************************************************
 
 TEXT(In-Form equivalent of PLANT case Z613   )
 
 ************************************************************
 ************************************************************
 
 IRUNN = 1 ;LIBREF = 779
 ************************************************************
  Group 2. Time dependence
 STEADY = T
 ************************************************************
  Group 3. X-Direction Grid Spacing
 CARTES = T
 NX = 5
 XULAST =1.
 XFRAC(1)=0.2 ;XFRAC(2)=0.4
 XFRAC(3)=0.6 ;XFRAC(4)=0.8
 XFRAC(5)=1.
 ************************************************************
  Group 4. Y-Direction Grid Spacing
 NY = 3
 YVLAST =0.5
 YFRAC(1)=0.333333 ;YFRAC(2)=0.666667
 YFRAC(3)=1.
 ************************************************************
  Group 5. Z-Direction Grid Spacing
 PARAB = F
 NZ = 8
 ZWLAST =4.
 ZFRAC(1)=0.125 ;ZFRAC(2)=0.25
 ZFRAC(3)=0.375 ;ZFRAC(4)=0.5
 ZFRAC(5)=0.625 ;ZFRAC(6)=0.75
 ZFRAC(7)=0.875 ;ZFRAC(8)=1.
 ************************************************************
  Group 6. Body-Fitted Coordinates
 ************************************************************
  Group 7. Variables: STOREd,SOLVEd,NAMEd
 ONEPHS = T
 NAME(1)=P1 ;NAME(3)=U1
 NAME(5)=V1 ;NAME(7)=W1
 NAME(147)=TFAL ;NAME(148)=HPOR
 NAME(149)=NPOR ;NAME(150)=EPOR
    * Y in SOLUTN argument list denotes:
    * 1-stored 2-solved 3-whole-field
    * 4-point-by-point 5-explicit 6-harmonic averaging 
 SOLUTN(P1,Y,Y,N,N,N,Y)
 SOLUTN(U1,Y,Y,N,N,N,Y)
 SOLUTN(V1,Y,Y,N,N,N,Y)
 SOLUTN(W1,Y,Y,N,N,N,Y)
 SOLUTN(TFAL,Y,N,N,N,N,Y)
 SOLUTN(HPOR,Y,N,N,N,N,Y)
 SOLUTN(NPOR,Y,N,N,N,N,Y)
 SOLUTN(EPOR,Y,N,N,N,N,Y)
 EPOR = 150 ;HPOR = 148 ;NPOR = 149 ;VPOR = 0
 ************************************************************
  Group 8. Terms & Devices
    * Y in TERMS argument list denotes:
    * 1-built-in source 2-convection 3-diffusion 4-transient
    * 5-first phase variable 6-interphase transport         
 TERMS(P1,Y,Y,Y,N,Y,Y)
 TERMS(U1,Y,Y,Y,Y,Y,Y)
 TERMS(V1,Y,Y,Y,Y,Y,Y)
 TERMS(W1,Y,Y,Y,Y,Y,Y)
 DIFCUT =0.5 ;ZDIFAC =1.
 GALA = F ;ADDDIF = F
 ISOLX = -1 ;ISOLY = -1 ;ISOLZ = -1
 ************************************************************
  Group 9. Properties used if PRPS is not
  stored, and where PRPS = -1.0 if it is!
 RHO1 =1. ;TMP1 =0.
 EL1 =0.
 TSURR =0. ;TEMP0 =0.
 PRESS0 =0.
 DVO1DT =0. ;DRH1DP =0.
 EMISS =0. ;SCATT =0.
 RADIA =0. ;RADIB =0.
 ENUL =10. ;ENUT =0.
 PRNDTL(U1)=1. ;PRNDTL(V1)=1.
 PRNDTL(W1)=1.
 PRT(U1)=1. ;PRT(V1)=1.
 PRT(W1)=1.
 CP1 =1. ;CP2 =1.
 ************************************************************
  Group 10.Inter-Phase Transfer Processes
 ************************************************************
  Group 11.Initial field variables (PHIs)
 FIINIT(P1)=1.0E-10 ;FIINIT(U1)=0.
 FIINIT(V1)=0. ;FIINIT(W1)=0.1
 FIINIT(TFAL)=1.0E-10 ;FIINIT(HPOR)=0.5
 FIINIT(NPOR)=0.5 ;FIINIT(EPOR)=0.5
   No PATCHes yet used for this Group
 INIADD = F
 FSWEEP = 1
 NAMFI =CHAM
 ************************************************************
  Group 12. Patchwise adjustment of terms
  Patches for this group are printed with those
  for Group 13.
  Their names begin either with GP12 or &
 ************************************************************
  Group 13. Boundary & Special Sources
 
 PATCH(INLET1 ,CELL , 1, 1, 2, 3, 2, 2, 1, 1000)
 COVAL(INLET1 ,P1 , FIXFLU ,0.05 )
 
 PATCH(OUTLET1 ,EAST , 5, 5, 2, 3, 7, 7, 1, 1000)
 COVAL(OUTLET1 ,P1 ,1. ,0. )
 
 PATCH(BAFFLE1 ,HIGH , 1, 4, 1, 3, 3, 3, 1, 1000)
 COVAL(BAFFLE1 ,W1 , FIXVAL ,0. )
 
 PATCH(BAFFLE2 ,HIGH , 2, 5, 1, 3, 5, 5, 1, 1000)
 COVAL(BAFFLE2 ,W1 , FIXVAL ,0. )
 
 PATCH(RELAX ,PHASEM, 1, 5, 1, 3, 1, 8, 1, 1)
 COVAL(RELAX ,U1 ,0. ,0. )
 COVAL(RELAX ,V1 ,0. ,0. )
 COVAL(RELAX ,W1 ,0. ,0. )
 
 PATCH(PATCH1 ,CELL , 1, 1, 2, 3, 2, 2, 1, 1)
 
 PATCH(PATCH2 ,CELL , 1, 1, 1, 1, 8, 8, 1, 1)
 
 PATCH(RELAXU ,PHASEM, 1, 4, 1, 3, 1, 8, 1, 1)
 COVAL(RELAXU ,U1 ,In-Form:source - see Grp 19)
 
 PATCH(RELAXV ,PHASEM, 1, 5, 1, 2, 1, 8, 1, 1)
 COVAL(RELAXV ,V1 ,In-Form:source - see Grp 19)
 
 PATCH(RELAXW ,PHASEM, 1, 5, 1, 3, 1, 7, 1, 1)
 COVAL(RELAXW ,W1 ,In-Form:source - see Grp 19)
 XCYCLE = F
 EGWF = T
 WALLCO = GRND2
 ************************************************************
  Group 14. Downstream Pressure For PARAB
 ************************************************************
  Group 15. Terminate Sweeps
 LSWEEP = 400 ;ISWC1 = 1
 LITHYD = 1 ;LITFLX = 1 ;LITC = 1 ;ITHC1 = 1
 SELREF = T
 RESFAC =1.0E-04
 ************************************************************
  Group 16. Terminate Iterations
 LITER(P1)=100 ;LITER(U1)=10
 LITER(V1)=10 ;LITER(W1)=10
 ENDIT(P1)=1.0E-03 ;ENDIT(U1)=1.0E-03
 ENDIT(V1)=1.0E-03 ;ENDIT(W1)=1.0E-03
 ************************************************************
  Group 17. Relaxation
 RELAX(P1,LINRLX,1.)
 RELAX(U1,FALSDT,1.)
 RELAX(V1,FALSDT,1.)
 RELAX(W1,FALSDT,1.)
 RELAX(TFAL,LINRLX,1.)
 OVRRLX =0.
 EXPERT = F ;NNORSL = F
 ************************************************************
  Group 18. Limits
 VARMAX(P1)=1.0E+10 ;VARMIN(P1)=-1.0E+10
 VARMAX(U1)=1.0E+06 ;VARMIN(U1)=-1.0E+06
 VARMAX(V1)=1.0E+06 ;VARMIN(V1)=-1.0E+06
 VARMAX(W1)=1.0E+06 ;VARMIN(W1)=-1.0E+06
 VARMAX(TFAL)=1.0E+10 ;VARMIN(TFAL)=-1.0E+10
 VARMAX(HPOR)=1.0E+10 ;VARMIN(HPOR)=-1.0E+10
 VARMAX(NPOR)=1.0E+10 ;VARMIN(NPOR)=-1.0E+10
 VARMAX(EPOR)=1.0E+10 ;VARMIN(EPOR)=-1.0E+10
 ************************************************************
  Group 19. Data transmitted to GROUND
 PARSOL = F
 ISG62 = 1
 SPEDAT(SET,MAKE,PARAM,C,=1.E-10)
 SPEDAT(SET,STORED,PARAM!PATCH1,C,=MIN(XULAST/5&MIN(YVLAST/3&ZWLAS$)
 SPEDAT(SET,STORED,PARAM!PATCH1,C,T/8))/MAX(U1&0.1/2.)!ZSLFIN)
 SPEDAT(SET,MAKE,REL,C,=1.E-10)
 SPEDAT(SET,STORED,REL!PATCH2,C,=PARAM!ZSLFIN)
 SPEDAT(SET,STORED,DTFALS(U1),C,=REL!IF(ISWEEP.GT.100.AND.ISWEEP.L$)
 SPEDAT(SET,STORED,DTFALS(U1),C,E.200)!ZSLFIN)
 SPEDAT(SET,STORED,DTFALS(V1),C,=REL!IF(ISWEEP.GT.100.AND.ISWEEP.L$)
 SPEDAT(SET,STORED,DTFALS(V1),C,E.200)!ZSLFIN)
 SPEDAT(SET,STORED,DTFALS(W1),C,=REL!IF(ISWEEP.GT.100.AND.ISWEEP.L$)
 SPEDAT(SET,STORED,DTFALS(W1),C,E.200)!ZSLFIN)
 SPEDAT(SET,STORED,TFAL,C,=1./(SQRT(U1^2+W1^2+V1^2)/MIN(DXU&MIN(DY$)
 SPEDAT(SET,STORED,TFAL,C,V&DZ))+10./MIN(DXU&MIN(DYV&DZ))^2)!IF(IS$)
 SPEDAT(SET,STORED,TFAL,C,WEEP.GE.200)!ZSLFIN)
 SPEDAT(SET,SOURCE,U1!RELAXU,C,=1./TFAL*U1!IF(ISWEEP.GT.200))
 SPEDAT(SET,SOURCE,U1!RELAXU,C,=-1./TFAL*U1!LINE!IF(ISWEEP.GT.200))
 SPEDAT(SET,SOURCE,V1!RELAXV,C,=1./TFAL*V1!IF(ISWEEP.GT.200))
 SPEDAT(SET,SOURCE,V1!RELAXV,C,=-1./TFAL*V1!LINE!IF(ISWEEP.GT.200))
 SPEDAT(SET,SOURCE,W1!RELAXW,C,=1./TFAL*W1!IF(ISWEEP.GT.200))
 SPEDAT(SET,SOURCE,W1!RELAXW,C,=-1./TFAL*W1!LINE!IF(ISWEEP.GT.200))
 RG( 1) =10.
 ************************************************************
  Group 20. Preliminary Printout
 DISTIL = T ;NULLPR = F
 NDST = 0
 DSTTOL =1.0E-02
 EX(P1)=371.100006 ;EX(U1)=0.3
 EX(V1)=0.02753 ;EX(W1)=0.3253
 EX(TFAL)=2.757E-03 ;EX(HPOR)=0.
 EX(NPOR)=0. ;EX(EPOR)=0.
 ************************************************************
  Group 21. Print-out of Variables
 INIFLD = F ;SUBWGR = F
    * Y in OUTPUT argument list denotes:
    * 1-field 2-correction-eq. monitor 3-selective dumping      
    * 4-whole-field residual 5-spot-value table 6-residual table
 OUTPUT(P1,Y,N,Y,Y,Y,Y)
 OUTPUT(U1,Y,N,Y,Y,Y,Y)
 OUTPUT(V1,Y,N,Y,Y,Y,Y)
 OUTPUT(W1,Y,N,Y,Y,Y,Y)
 OUTPUT(TFAL,Y,Y,Y,Y,Y,Y)
 OUTPUT(HPOR,N,N,N,N,N,N)
 OUTPUT(NPOR,N,N,N,N,N,N)
 OUTPUT(EPOR,N,N,N,N,N,N)
 ************************************************************
  Group 22. Monitor Print-Out
 IXMON = 3 ;IYMON = 2 ;IZMON = 4
 NPRMON = 100000 ;NPRMNT = 1 ;TSTSWP = -1
 UWATCH = T ;USTEER = T
 HIGHLO = F
 ************************************************************
  Group 23.Field Print-Out & Plot Control
 NPRINT = 100000 ;NUMCLS = 5
 NXPRIN = -1 ;IXPRF = 1 ;IXPRL = 10000
 NYPRIN = -1 ;IYPRF = 1 ;IYPRL = 10000
 NZPRIN = -1 ;IZPRF = 1 ;IZPRL = 10000
 XZPR = T ;YZPR = F
 IPLTF = 1 ;IPLTL = 400 ;NPLT = 1
 ISWPRF = 1 ;ISWPRL = 100000
 ITABL = 3 ;IPROF = 1
 ABSIZ =0.5 ;ORSIZ =0.4
 NTZPRF = 1 ;NCOLPF = 50
 ICHR = 2 ;NCOLCO = 45 ;NROWCO = 20
   No PATCHes yet used for this Group
 ************************************************************
  Group 24. Dumps For Restarts
 SAVE = T ;NOWIPE = F
 NSAVE =CHAM
STOP