Encyclopaedia Index

A shell-and-tube heat-exchanger is used to exemplify the essential ideas of the HEXAGON model devised by D.B Spalding and S.V. Zhubrin.

This may be the first to have shown how the thermo-hydraulics of the shell-side and tube-side fluids can be computed simultaneously.

Moreover the displacements and thermal stresses in tubes and shell are also computed as part of a full SFT (i.e. Solid-Fluid-Thermal) analysis .

The heat exchanger considered is an idealised two-dimensional one, having two baffles within the shell and U-bend tubes connected with a two-part header.

The geometry is as shown.

The tube fluid is water and the shell fluid is air. Their flow patterns are indicated by the calculated velocities, where the white vectors and coloured vectors represent shell- and tube-side fluid respectively.

The MUSES method is employed, the whole volume occupied by the heat exchanger being represented three times, namely for:

  1. shell-fluid velocities and temperature;
  2. tube-fluid velocities and temperature; and
  3. metal temperatures and temperature.

The following figures show calculated displacements and

the Y-component of normal thermal stresses.

The model is set up wholly by way of a standard PHOENICS Q1 file, which contains PLANT statements (listed below). These:

Therafter, when the satellite is run, a corresponding GROUND file is written and compiled, without further user intervention. This file is approximately 550 lines in length, and error-free! Obviously, the advantages to the user are very great.


What the user puts into Q1

The user puts into the Q1 file in Group 9:

RHO1=GRND
{PRPT01} DEN1=1000.
REGION() 1
{PRPT02} DEN1=1000.
REGION() 2
{PRPT03} DEN1=1.2
REGION() 3

The above three statements, followed by the pointer RHO1=GRND and parameterized REGION qualifiers, instruct PLANT to make the density distributions as the distribution of in-cell marker values dictates.

ENUL=GRND
{PRPT05} VISL=1.*SQRT(U1**2+V1**2)*WDIS
REGION() 1
{PRPT06} VISL=0.01
REGION() 2
{PRPT07} VISL=1.*SQRT(U1**2+V1**2)*WDIS
REGION() 3

The above three statements do the same for viscosities as the previous three have done for densities. Note that the viscosities in the domains marked 1 and 3 are made proportional to the products of local velocity magnitudes and distances to the nearest wall.

The user puts into the Q1 file in Group 13:

PATCH(SS002U,PHASEM,1,10,1,NY,1,NZ,1,1)
{SORC01} CO=.2*(U1**2+V1**2)**0.15
COVAL(SS002U,U1,GRND,0.0)
{SORC02} CO=.2*(U1**2+V1**2)**0.15
COVAL(SS002U,V1,GRND,0.0)

Momentum sinks are introduced by above formulae over all cells having marker value appearing in the number of PATCH name, 002.

PATCH(SS003H,PHASEM,1,10,1,NY,1,NZ,1,1)
{SORC03} CO=2.2*(U1**2+V1**2)**0.25
COVAL(SS003H,U1,GRND,0.0)
{SORC04} CO=2.2*(U1**2+V1**2)**0.25
COVAL(SS003H,V1,GRND,0.0)

Momentum sinks are introduced by above formulae over all cells having marker value appearing in the number of PATCH name, 003.

** Tube fluid heat transfer coefficient
STORE(ALF2);FIINIT(ALF2)=0.0
{SC0601} ALF2=1.+1.*SQRT(U1**2+V1**2+TINY)
REGION() 2
** Shell fluid heat transfer coefficient
STORE(ALF3);FIINIT(ALF3)=0.0
{SC0602} ALF3=1.+3.*SQRT(U1**2+V1**2+TINY)
REGION() 3

Tube and shell fluid heat transfer coefficients, ALF2 and ALF3, are made by aboves dependent on local velocity magnitudes over the REGIONs marked 2 and 3 correspondingly.

** Overall heat transfer coefficient
STORE(HTC);FIINIT(HTC)=0.0
{SC0603} HTC=1./(1/ALF2+1/ALF3[,-IG(1),])
REGION() 2
{SC0604} HTC=1./(1/ALF3 +1/ALF2[,+IG(1),])
REGION() 3

Overall heat transfer coefficient, HTC, distribution are calculated by reference to appropriate local heat transfer coefficients in REGIONs 2 and 3.

** Heat-exchange with shell-fluid, throughout the shell.
PATCH(SS002T,PHASEM,1,NX,1,NY,1,NZ,1,1)
{SORC05} CO =HTC
{SORC05} VAL=TEMP[,-IG(1),]
COVAL(SS002T,TEMP,GRND,GRND)
** Heat-exchange with tube-fluid, throughout the shell.
PATCH(SS003S,PHASEM,1,NX,1,NY,1,NZ,1,1)
{SORC06} CO =HTC
{SORC06} VAL=TEMP[,+IG(1),]
COVAL(SS003S,TEMP,GRND,GRND)

In the above, the PATCH names indicate the sub-domain cell markers , 2 and 3, over which the heat-exchange sources are applied. The indicial operations for TEMP are arranged in appropriate manner.

** Transfer shell fluid temperatures
PATCH(SS005T,CELL,1,NX,1,NY,1,NZ,1,1)
{SORC10} CO=1.e10
{SORC10} VAL=TEMP[-13,-6,]
COVAL(SS005T,TEM1,GRND,GRND)

The temperatures of the shell fluid, TEMP, are transferred into the stress-analysis sub-domain, MARK=5, to be used as TEM1.

** Tube-wall temperature
PATCH(SS100T,CELL,1,NX,1,NY,1,NZ,1,1)
{SORC11} CO=1.e10
{SORC11} VAL=(ALF2[-13,+6,]*TEMP[-13,+6,]+$
ALF3[-13,-6,]*TEMP[-13,-6,])$
/(ALF2[-13,+6,]+ALF3[-13,-6,]+TINY)
COVAL(SS100T,TEM1,GRND,GRND)

Here the tube wall temperatures, TEM1, are calculated in the sub-domain indicated by MARK=100 as PATCH name number specifies. TEM1s are computed via shell and tube fluid temperatures and heat transfer coefficients transferred from corresponding sub-domains as indicial numbers show.

** Transfer the header temperatures
PATCH(SS004T,CELL,1,NX,1,NY,1,NZ,1,1)
{SORC12} CO=1.e10
{SORC12} VAL=TEMP[-13,+3,]
COVAL(SS004T,TEM1,GRND,GRND)

The temperatures of the header-tube fluid, TEMP, are transferred into the stress-analysis sub-domain, MARK=4, to be used as TEM1.

The user puts into the Q1 file in Group 19:

** Tube-fluid velocities transfer
STORE(UU1,VV1)
{SC0605} UU1=U1[-13,+3,]
REGION(14,23,22,29,1,NZ)
{SC0606} VV1=V1[-13,+3,]
REGION(14,23,22,29,1,NZ)
{SC0607} UU1=U1[-13,+6,]
REGION(14,23,7,18,1,NZ)
{SC0608} VV1=V1[-13,+6,]
REGION(14,23,7,18,1,NZ)

Tube fluid velocities are transferred from where they have been calculated for easy visualisation.

** Shell fluid velocities transfer
STORE(U2,V2)
{SC0609} U2=U1[-13,-6,]
REGION(14,23,7,18,1,NZ)
{SC0610} V2=V1[-13,-6,]
REGION(14,23,7,18,1,NZ)

Shell-fluid velocities are transferred from where they have been calculated for easy visualisation.


In the GROUND file, PLANT inserts the following statements:


 C      Property name: PRPT01
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFDEN1 =L0F(AUX(DEN1  ))
       DO 90101 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90101 IY=IYF     ,IYL
        I=IY+IADD
       L0DEN1=LFDEN1+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.1  ) THEN
      F(L0DEN1  )=1000.
         ENDIF
 90101  CONTINUE
       ENDIF
      ENDIF
 C      Property name: PRPT02
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFDEN1 =L0F(AUX(DEN1  ))
       DO 90102 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90102 IY=IYF     ,IYL
        I=IY+IADD
       L0DEN1=LFDEN1+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.2  ) THEN
      F(L0DEN1  )=1000.
         ENDIF
 90102  CONTINUE
       ENDIF
      ENDIF
 C      Property name: PRPT03
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFDEN1 =L0F(AUX(DEN1  ))
       DO 90103 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90103 IY=IYF     ,IYL
        I=IY+IADD
       L0DEN1=LFDEN1+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.3  ) THEN
      F(L0DEN1  )=1.2
         ENDIF
 90103  CONTINUE
       ENDIF
      ENDIF
 C      Property name: PRPT05
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFVISL =L0F(AUX(VISL  ))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       LFWDIS=L0F(INAME('WDIS  '))
       DO 90605 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90605 IY=IYF     ,IYL
        I=IY+IADD
       L0VISL=LFVISL+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.1  ) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
       L0WDIS=LFWDIS+I
      F(L0VISL  )=1.*SQRT(F(L0U1)**2+F(L0V1)**2)*F(L0WDIS)
         ENDIF
 90605  CONTINUE
       ENDIF
      ENDIF
 C      Property name: PRPT06
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFVISL =L0F(AUX(VISL  ))
       DO 90606 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90606 IY=IYF     ,IYL
        I=IY+IADD
       L0VISL=LFVISL+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.2  ) THEN
      F(L0VISL  )=0.01
         ENDIF
 90606  CONTINUE
       ENDIF
      ENDIF
 C      Property name: PRPT07
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFVISL =L0F(AUX(VISL  ))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       LFWDIS=L0F(INAME('WDIS  '))
       DO 90607 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 90607 IY=IYF     ,IYL
        I=IY+IADD
       L0VISL=LFVISL+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.3  ) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
       L0WDIS=LFWDIS+I
      F(L0VISL  )=1.*SQRT(F(L0U1)**2+F(L0V1)**2)*F(L0WDIS)
         ENDIF
 90607  CONTINUE
       ENDIF
      ENDIF
 C      Source name: SORC01
      IF(INDVAR.EQ.INAME('U1    ').AND.NPATCH.EQ.'SS002U  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 13701 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13701 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.002) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(LFCO +I)=.2*(F(L0U1)**2+F(L0V1)**2)**0.15
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13701  CONTINUE
      ENDIF
 C      Source name: SORC02
      IF(INDVAR.EQ.INAME('V1    ').AND.NPATCH.EQ.'SS002U  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 13702 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13702 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.002) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(LFCO +I)=.2*(F(L0U1)**2+F(L0V1)**2)**0.15
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13702  CONTINUE
      ENDIF
 C      Source name: SORC03
      IF(INDVAR.EQ.INAME('U1    ').AND.NPATCH.EQ.'SS003H  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 13703 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13703 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.003) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(LFCO +I)=2.2*(F(L0U1)**2+F(L0V1)**2)**0.25
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13703  CONTINUE
      ENDIF
 C      Source name: SORC04
      IF(INDVAR.EQ.INAME('V1    ').AND.NPATCH.EQ.'SS003H  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 13704 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13704 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.003) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(LFCO +I)=2.2*(F(L0U1)**2+F(L0V1)**2)**0.25
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13704  CONTINUE
      ENDIF
 C      Source name: SORC05
      IF(INDVAR.EQ.INAME('TEMP  ').AND.NPATCH.EQ.'SS002T  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFHTC =L0F(INAME('HTC   '))
       DO 13705 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13705 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.002) THEN
       L0HTC =LFHTC +I
      F(LFCO +I)=F(L0HTC)
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13705  CONTINUE
      ENDIF
 C      Source name: SORC06
      IF(INDVAR.EQ.INAME('TEMP  ').AND.NPATCH.EQ.'SS003S  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       LFHTC =L0F(INAME('HTC   '))
       DO 13706 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13706 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.003) THEN
       L0HTC =LFHTC +I
      F(LFCO +I)=F(L0HTC)
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13706  CONTINUE
      ENDIF
 C      Source name: SORC10
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS005T  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       DO 13710 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13710 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.005) THEN
      F(LFCO +I)=1.E10
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13710  CONTINUE
      ENDIF
 C      Source name: SORC11
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS100T  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       DO 13711 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13711 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.100) THEN
      F(LFCO +I)=1.E10
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13711  CONTINUE
      ENDIF
 C      Source name: SORC12
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS004T  ') THEN
       LFCO  =L0F(CO )
       LFMARK=L0F(INAME('MARK'))
       DO 13712 IX=IXF    ,IXL 
        IADD=NY*(IX-1)
       DO 13712 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.004) THEN
      F(LFCO +I)=1.E10
         ELSE
      F(LFCO +I)=0.
         ENDIF
 13712  CONTINUE
      ENDIF
 C      Source name: SORC05
      IF(INDVAR.EQ.INAME('TEMP  ').AND.NPATCH.EQ.'SS002T  ') THEN
       LFCO  =L0F(CO)
       LFVAL =L0F(VAL)
       LFMARK=L0F(INAME('MARK'))
       LFTEMP=L0F(INAME('TEMP  '))
       DO 13805 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13805 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.002) THEN
       L0TEMP=LFTEMP+I
      F(LFVAL+I)=F(L0TEMP-IG(1))
         ELSE
      F(LFVAL+I)=0.
      F(LFCO +I)=0.
         ENDIF
 13805  CONTINUE
      ENDIF
 C      Source name: SORC06
      IF(INDVAR.EQ.INAME('TEMP  ').AND.NPATCH.EQ.'SS003S  ') THEN
       LFCO  =L0F(CO)
       LFVAL =L0F(VAL)
       LFMARK=L0F(INAME('MARK'))
       LFTEMP=L0F(INAME('TEMP  '))
       DO 13806 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13806 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.003) THEN
       L0TEMP=LFTEMP+I
      F(LFVAL+I)=F(L0TEMP+IG(1))
         ELSE
      F(LFVAL+I)=0.
      F(LFCO +I)=0.
         ENDIF
 13806  CONTINUE
      ENDIF
 C      Source name: SORC10
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS005T  ') THEN
       LFCO  =L0F(CO)
       LFVAL =L0F(VAL)
       LFMARK=L0F(INAME('MARK'))
       LFTEMP=L0F(INAME('TEMP  '))
       DO 13810 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13810 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.005) THEN
       L0TEMP=LFTEMP+I
      F(LFVAL+I)=F(L0TEMP-NY*13-6)
         ELSE
      F(LFVAL+I)=0.
      F(LFCO +I)=0.
         ENDIF
 13810  CONTINUE
      ENDIF
 C      Source name: SORC11
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS100T  ') THEN
       LFCO  =L0F(CO)
       LFVAL =L0F(VAL)
       LFMARK=L0F(INAME('MARK'))
       LFALF2=L0F(INAME('ALF2  '))
       LFTEMP=L0F(INAME('TEMP  '))
       LFALF3=L0F(INAME('ALF3  '))
       DO 13811 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13811 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.100) THEN
       L0ALF2=LFALF2+I
       L0TEMP=LFTEMP+I
       L0ALF3=LFALF3+I
      F(LFVAL+I)=(F(L0ALF2-NY*13+6)*F(L0TEMP-NY*13+6)+
     1F(L0ALF3-NY*13-6)*F(L0TEMP-NY*13-6))/(F(L0ALF2-NY*13+6)+
     1F(L0ALF3-NY*13-6)+TINY)
         ELSE
      F(LFVAL+I)=0.
      F(LFCO +I)=0.
         ENDIF
 13811  CONTINUE
      ENDIF
 C      Source name: SORC12
      IF(INDVAR.EQ.INAME('TEM1  ').AND.NPATCH.EQ.'SS004T  ') THEN
       LFCO  =L0F(CO)
       LFVAL =L0F(VAL)
       LFMARK=L0F(INAME('MARK'))
       LFTEMP=L0F(INAME('TEMP  '))
       DO 13812 IX=IXF     ,IXL
        IADD=NY*(IX-1)
       DO 13812 IY=IYF     ,IYL
        I=IY+IADD
        INMARK=NINT(F(LFMARK+I))
         IF(INMARK.EQ.004) THEN
       L0TEMP=LFTEMP+I
      F(LFVAL+I)=F(L0TEMP-NY*13+3)
         ELSE
      F(LFVAL+I)=0.
      F(LFCO +I)=0.
         ENDIF
 13812  CONTINUE
      ENDIF
 C      Special calls name: SC0601
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFALF2 =L0F(INAME('ALF2  '))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 19601 IX=1       ,NX
        IADD=NY*(IX-1)
       DO 19601 IY=1       ,NY
        I=IY+IADD
       L0ALF2=LFALF2+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.2  ) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(L0ALF2  )=1.+1.*SQRT(F(L0U1)**2+F(L0V1)**2+TINY)
         ENDIF
 19601  CONTINUE
       ENDIF
      ENDIF
 C      Special calls name: SC0602
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFALF3 =L0F(INAME('ALF3  '))
       LFU1  =L0F(U1    )
       LFV1  =L0F(V1    )
       DO 19602 IX=1       ,NX
        IADD=NY*(IX-1)
       DO 19602 IY=1       ,NY
        I=IY+IADD
       L0ALF3=LFALF3+I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.3  ) THEN
       L0U1  =LFU1  +I
       L0V1  =LFV1  +I
      F(L0ALF3  )=1.+3.*SQRT(F(L0U1)**2+F(L0V1)**2+TINY)
         ENDIF
 19602  CONTINUE
       ENDIF
      ENDIF
 C      Special calls name: SC0603
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFHTC  =L0F(INAME('HTC   '))
       LFALF2=L0F(INAME('ALF2  '))
       LFALF3=L0F(INAME('ALF3  '))
       DO 19603 IX=1       ,NX
        IADD=NY*(IX-1)
       DO 19603 IY=1       ,NY
        I=IY+IADD
       L0HTC =LFHTC +I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.2  ) THEN
       L0ALF2=LFALF2+I
       L0ALF3=LFALF3+I
      F(L0HTC   )=1./(1/F(L0ALF2)+1/F(L0ALF3-IG(1)))
         ENDIF
 19603  CONTINUE
       ENDIF
      ENDIF
 C      Special calls name: SC0604
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFMARK=L0F(INAME('MARK'))
       LFHTC  =L0F(INAME('HTC   '))
       LFALF3=L0F(INAME('ALF3  '))
       LFALF2=L0F(INAME('ALF2  '))
       DO 19604 IX=1       ,NX
        IADD=NY*(IX-1)
       DO 19604 IY=1       ,NY
        I=IY+IADD
       L0HTC =LFHTC +I
       L0MARK=LFMARK+I
        INMARK=NINT(F(L0MARK))
         IF(INMARK.EQ.3  ) THEN
       L0ALF3=LFALF3+I
       L0ALF2=LFALF2+I
      F(L0HTC   )=1./(1/F(L0ALF3)+1/F(L0ALF2+IG(1)))
         ENDIF
 19604  CONTINUE
       ENDIF
      ENDIF
 C      Special calls name: SC0605
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFUU1  =L0F(INAME('UU1   '))
       LFU1  =L0F(U1    )
       DO 19605 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19605 IY=22      ,29
        I=IY+IADD
       L0UU1 =LFUU1 +I
       L0U1  =LFU1  +I
 19605 F(L0UU1   )=F(L0U1-NY*13+3)
       ENDIF
      ENDIF
 C      Special calls name: SC0606
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFVV1  =L0F(INAME('VV1   '))
       LFV1  =L0F(V1    )
       DO 19606 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19606 IY=22      ,29
        I=IY+IADD
       L0VV1 =LFVV1 +I
       L0V1  =LFV1  +I
 19606 F(L0VV1   )=F(L0V1-NY*13+3)
       ENDIF
      ENDIF
 C      Special calls name: SC0607
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFUU1  =L0F(INAME('UU1   '))
       LFU1  =L0F(U1    )
       DO 19607 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19607 IY=7       ,18
        I=IY+IADD
       L0UU1 =LFUU1 +I
       L0U1  =LFU1  +I
 19607 F(L0UU1   )=F(L0U1-NY*13+6)
       ENDIF
      ENDIF
 C      Special calls name: SC0608
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFVV1  =L0F(INAME('VV1   '))
       LFV1  =L0F(V1    )
       DO 19608 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19608 IY=7       ,18
        I=IY+IADD
       L0VV1 =LFVV1 +I
       L0V1  =LFV1  +I
 19608 F(L0VV1   )=F(L0V1-NY*13+6)
       ENDIF
      ENDIF
 C      Special calls name: SC0609
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFU2   =L0F(U2    )
       LFU1  =L0F(U1    )
       DO 19609 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19609 IY=7       ,18
        I=IY+IADD
       L0U2  =LFU2  +I
       L0U1  =LFU1  +I
 19609 F(L0U2    )=F(L0U1-NY*13-6)
       ENDIF
      ENDIF
 C      Special calls name: SC0610
      IF(ISTEP.GE.1       .AND.ISTEP.LE.LSTEP   ) THEN
       IF(IZ.GE.1       .AND.IZ.LE.NZ      ) THEN
       LFV2   =L0F(V2    )
       LFV1  =L0F(V1    )
       DO 19610 IX=14      ,23
        IADD=NY*(IX-1)
       DO 19610 IY=7       ,18
        I=IY+IADD
       L0V2  =LFV2  +I
       L0V1  =LFV1  +I
 19610 F(L0V2    )=F(L0V1-NY*13-6)
       ENDIF
      ENDIF

Click here to return to "Contents"