SUBROUTINE TNPREP(A1,A2,B1,B2,C2,GDENOM,GCOEFF, 2
     1                  GCONST,CPHCHG,TSTART,IWATER, 
     2                  TBAR,TCTOP,TCBOT,FI,ZPOND,TBAR1P,
     3                  ISAND,ILG,IL1,IL2,JL,IG                        )
C
C     * AUG 19/04 - Y.DELAGE.   REGROUP COMMON BLOCKS
C     *                         MAKE DECLARATIONS EXPLICIT
C     * AUG 06/02 - D.VERSEGHY. SHORTENED CLASS3 COMMON BLOCK,
C     * JUN 17/02 - D.VERSEGHY. USE NEW LUMPED SOIL AND PONDED
C     *                         WATER TEMPERATURE FOR FIRST LAYER;
C     *                         SHORTENED COMMON BLOCK.
C     * MAR 28/02 - D.VERSEGHY. CHANGE POND THRESHOLD VALUE FOR
C     *                         CALCULATION OF "IWATER".
C     * JUN 20/97 - D.VERSEGHY. CLASS - VERSION 2.7.
C     *                         INCORPORATE EXPLICITLY CALCULATED
C     *                         THERMAL CONDUCTIVITIES AT TOPS AND
C     *                         BOTTOMS OF SOIL LAYERS.
C     * SEP 27/96 - D.VERSEGHY. CLASS - VERSION 2.5.
C     *                         SURFACE TREATED AS WATER ONLY IF
C     *                         ZPOND > 1 MM.
C     * AUG 18/95 - D.VERSEGHY. CLASS - VERSION 2.4.
C     *                         REVISIONS TO ALLOW FOR INHOMOGENEITY
C     *                         BETWEEN SOIL LAYERS AND FRACTIONAL
C     *                         ORGANIC MATTER CONTENT.
C     * NOV 28/94 - M. LAZARE.  CLASS - VERSION 2.3.
C     *                         TCSATW,TCSATI DECLARED REAL(16).
C     * APR 10/92 - M. LAZARE.  CLASS - VERSION 2.1.
C     *                         DIVIDE PREVIOUS SUBROUTINE "T3LAYR"
C     *                         INTO "TNPREP" AND "TNPOST" AND
C     *                         VECTORIZE.
C     * APR 11/89 - D.VERSEGHY. CALCULATE COEFFICIENTS FOR GROUND HEAT
C     *                         FLUX, EXPRESSED AS A LINEAR FUNCTION
C     *                         OF SURFACE TEMPERATURE.  COEFFICIENTS
C     *                         ARE CALCULATED FROM LAYER TEMPERATURES,
C     *                         THICKNESSES AND THERMAL CONDUCTIVITIES,
C     *                         ASSUMING A QUADRATIC VARIATION OF
C     *                         TEMPERATURE WITH DEPTH WITHIN EACH
C     *                         SOIL LAYER. SET THE SURFACE LATENT 
C     *                         HEAT OF VAPORIZATION OF WATER AND 
C     *                         THE STARTING TEMPERATURE FOR THE 
C     *                         ITERATION IN "TSOLVC"/"TSOLVE".
C                                                         
      IMPLICIT NONE
      INTEGER ILG,IL1,IL2,JL,IG,I
      REAL DELZ1,A3,B3,C3
C                        
C     * OUTPUT ARRAYS.
C
      REAL A1    (ILG),    A2    (ILG),    B1    (ILG),
     1     B2    (ILG),    C2    (ILG),    GDENOM(ILG),    GCOEFF(ILG),
     2     GCONST(ILG),    CPHCHG(ILG),    TSTART(ILG)
C
      INTEGER              IWATER(ILG)     
C
C     * INPUT ARRAYS.
C
      REAL TBAR  (ILG,IG), TCTOP (ILG,IG), TCBOT (ILG,IG)
C
      REAL FI    (ILG),    ZPOND (ILG),    TBAR1P(ILG)
C
      INTEGER              ISAND (ILG,IG)
C
#include "class_com.cdk"
C-----------------------------------------------------------------------
C     * INITIALIZATION OF ARRAYS.
C
      DO 100 I=IL1,IL2
          IF(FI(I).GT.0.)                                          THEN
              DELZ1=DELZ(1)+ZPOND(I)                                                         
              IF(ZPOND(I).GT.0.5E-3)                          THEN
                  IWATER(I)=1
              ELSE                                                                        
                  IF(ISAND(I,1).GT.-4)                THEN
                      IWATER(I)=0
                  ELSE
                      IWATER(I)=2
                  ENDIF
              ENDIF    
C
              IF(IWATER(I).EQ.2)                                    THEN
                  CPHCHG(I)=CLHVAP+CLHMLT
              ELSE                                                                        
                  CPHCHG(I)=CLHVAP
              ENDIF                                                                   
C
              A1(I)=DELZ1/(3.0*TCTOP(I,1))
              A2(I)=DELZ1/(2.0*TCTOP(I,1))
              A3=A2(I)                                                                       
              B1(I)=DELZ1/(6.0*TCBOT(I,1))
              B2(I)=DELZ1/(2.0*TCBOT(I,1))+DELZ(2)/(3.0*TCTOP(I,2))
              B3=DELZ1/(2.0*TCBOT(I,1))+DELZ(2)/(2.0*TCTOP(I,2))
              C2(I)=DELZ(2)/(6.0*TCBOT(I,2))
              C3=DELZ(2)/(2.0*TCBOT(I,2))+DELZ(3)/(3.0*TCTOP(I,3))
              GDENOM(I)=A1(I)*(B2(I)*C3-B3*C2(I))-B1(I)*(A2(I)*C3-
     1                  A3*C2(I))                                    
              GCOEFF(I)=(B2(I)*C3-B3*C2(I)-B1(I)*(C3-C2(I)))/GDENOM(I) 
              GCONST(I)=(-TBAR1P(I)*(B2(I)*C3-B3*C2(I))+
     1                    TBAR(I,2)*B1(I)*C3-
     2                    TBAR(I,3)*B1(I)*C2(I))/GDENOM(I)           
              TSTART(I)=TBAR(I,1)
          ENDIF                                                            
  100 CONTINUE
C                                                                            
      RETURN                                                                      
      END