*IF DEF,A08_5A,OR,DEF,A08_7A                                               ARE1F404.350    
C *****************************COPYRIGHT******************************     ICEHTC5A.3      
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved.    ICEHTC5A.4      
C                                                                          ICEHTC5A.5      
C Use, duplication or disclosure of this code is subject to the            ICEHTC5A.6      
C restrictions as set forth in the contract.                               ICEHTC5A.7      
C                                                                          ICEHTC5A.8      
C                Meteorological Office                                     ICEHTC5A.9      
C                London Road                                               ICEHTC5A.10     
C                BRACKNELL                                                 ICEHTC5A.11     
C                Berkshire UK                                              ICEHTC5A.12     
C                RG12 2SZ                                                  ICEHTC5A.13     
C                                                                          ICEHTC5A.14     
C If no contract has been raised with this copy of the code, the use,      ICEHTC5A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      ICEHTC5A.16     
C to do so must first be obtained in writing from the Head of Numerical    ICEHTC5A.17     
C Modelling at the above address.                                          ICEHTC5A.18     
C ******************************COPYRIGHT******************************    ICEHTC5A.19     
!    SUBROUTINE ICE_HTC------------------------------------------------    ICEHTC5A.20     
!                                                                          ICEHTC5A.21     
! Subroutine Interface:                                                    ICEHTC5A.22     

      SUBROUTINE ICE_HTC (                                                  2,2ICEHTC5A.23     
     & NPNTS,NSHYD,LICE_PTS,LICE_INDEX,DZ                                  ICEHTC5A.24     
     &,SURF_HT_FLUX,TIMESTEP                                               ICEHTC5A.25     
     &,TSOIL                                                               ICEHTC5A.26     
C LOGICAL LTIMER                                                           ICEHTC5A.27     
     +,LTIMER                                                              ICEHTC5A.28     
     +)                                                                    ICEHTC5A.29     
                                                                           ICEHTC5A.30     
      IMPLICIT NONE                                                        ICEHTC5A.31     
!                                                                          ICEHTC5A.32     
! Description:                                                             ICEHTC5A.33     
!     Updates deep soil temperatures for ice. No external subroutines      ICEHTC5A.34     
!     are called.                                                          ICEHTC5A.35     
!                                                     (Cox, 10/95)         ICEHTC5A.36     
!                                                                          ICEHTC5A.37     
! Documentation : UM Documentation Paper 25                                ICEHTC5A.38     
!                                                                          ICEHTC5A.39     
! Current Code Owner : David Gregory                                       ICEHTC5A.40     
!                                                                          ICEHTC5A.41     
! History:                                                                 ICEHTC5A.42     
! Version   Date     Comment                                               ICEHTC5A.43     
! -------   ----     -------                                               ICEHTC5A.44     
!  4.1       6/96    New deck.   Peter Cox                                 ICEHTC5A.45     
!LL   4.5   18/06/98  Changed Timer calls to indicate non-barrier          GPB8F405.43     
!LL                                                   P.Burton             GPB8F405.44     
!                                                                          ICEHTC5A.46     
! Code Description:                                                        ICEHTC5A.47     
!   Language: FORTRAN 77 + common extensions.                              ICEHTC5A.48     
!                                                                          ICEHTC5A.49     
! System component covered: P25                                            ICEHTC5A.50     
! System Task: P25                                                         ICEHTC5A.51     
!                                                                          ICEHTC5A.52     
                                                                           ICEHTC5A.53     
! Global variables:                                                        ICEHTC5A.54     
*CALL C_SOILH                                                              ICEHTC5A.55     
                                                                           ICEHTC5A.56     
! Subroutine arguments                                                     ICEHTC5A.57     
!   Scalar arguments with intent(IN) :                                     ICEHTC5A.58     
      INTEGER                                                              ICEHTC5A.59     
     & LICE_PTS             ! IN Number of land ice points.                ICEHTC5A.60     
     &,NPNTS                ! IN Number of gridpoints.                     ICEHTC5A.61     
     &,NSHYD                ! IN Number of soil moisture levels.           ICEHTC5A.62     
                                                                           ICEHTC5A.63     
      REAL                                                                 ICEHTC5A.64     
     & TIMESTEP             ! IN Model timestep (s).                       ICEHTC5A.65     
                                                                           ICEHTC5A.66     
                                                                           ICEHTC5A.67     
!   Array arguments with intent(IN) :                                      ICEHTC5A.68     
      INTEGER                                                              ICEHTC5A.69     
     & LICE_INDEX(NPNTS)    ! IN Array of ice points.                      ICEHTC5A.70     
                                                                           ICEHTC5A.71     
      REAL                                                                 ICEHTC5A.72     
     & DZ(NSHYD)            ! IN Thicknesses of the soil layers (m).       ICEHTC5A.73     
     &,SURF_HT_FLUX(NPNTS)  ! IN Net downward surface heat flux (W/m2).    ICEHTC5A.74     
C                                                                          ICEHTC5A.75     
      LOGICAL LTIMER        ! Logical switch for TIMER diags               ICEHTC5A.76     
                                                                           ICEHTC5A.77     
!   Array arguments with intent(INOUT) :                                   ICEHTC5A.78     
      REAL                                                                 ICEHTC5A.79     
     & TSOIL(NPNTS,NSHYD)   ! INOUT Sub-surface temperatures (K).          ICEHTC5A.80     
                                                                           ICEHTC5A.81     
! Local scalars:                                                           ICEHTC5A.82     
      INTEGER                                                              ICEHTC5A.83     
     & I,J,N                ! WORK Loop counters.                          ICEHTC5A.84     
                                                                           ICEHTC5A.85     
! Local arrays:                                                            ICEHTC5A.86     
      REAL                                                                 ICEHTC5A.87     
     & H_FLUX(NPNTS,0:NSHYD)! WORK The fluxes of heat between layers       ICEHTC5A.88     
!                           !      (W/m2).                                 ICEHTC5A.89     
                                                                           ICEHTC5A.90     
      IF (LTIMER) THEN                                                     ICEHTC5A.91     
        CALL TIMER('ICEHTC  ',103)                                         GPB8F405.45     
      ENDIF                                                                ICEHTC5A.93     
                                                                           ICEHTC5A.94     
!--------------------------------------------------------------------      ICEHTC5A.95     
! Calculate heat fluxes across layer boundaries                            ICEHTC5A.96     
!--------------------------------------------------------------------      ICEHTC5A.97     
      DO N=1,NSHYD-1                                                       ICEHTC5A.98     
        DO J=1,LICE_PTS                                                    ICEHTC5A.99     
          I=LICE_INDEX(J)                                                  ICEHTC5A.100    
          H_FLUX(I,N)=-SNOW_HCON*2.0*(TSOIL(I,N+1)-TSOIL(I,N))             ICEHTC5A.101    
     &                             /(DZ(N+1)+DZ(N))                        ICEHTC5A.102    
        ENDDO                                                              ICEHTC5A.103    
      ENDDO                                                                ICEHTC5A.104    
                                                                           ICEHTC5A.105    
CDIR$ IVDEP                                                                ICEHTC5A.106    
! Fujitsu vectorization directive                                          GRB0F405.357    
!OCL NOVREC                                                                GRB0F405.358    
      DO J=1,LICE_PTS                                                      ICEHTC5A.107    
        I=LICE_INDEX(J)                                                    ICEHTC5A.108    
        H_FLUX(I,NSHYD)=0.0                                                ICEHTC5A.109    
        H_FLUX(I,0)=SURF_HT_FLUX(I)                                        ICEHTC5A.110    
      ENDDO                                                                ICEHTC5A.111    
                                                                           ICEHTC5A.112    
                                                                           ICEHTC5A.113    
!--------------------------------------------------------------------      ICEHTC5A.114    
! Update the sub-surface temperatures                                      ICEHTC5A.115    
!--------------------------------------------------------------------      ICEHTC5A.116    
      DO N=1,NSHYD                                                         ICEHTC5A.117    
! CDIR$ IVDEP here would force vectorization but changes results!          ICEHTC5A.118    
        DO J=1,LICE_PTS                                                    ICEHTC5A.119    
          I=LICE_INDEX(J)                                                  ICEHTC5A.120    
                                                                           ICEHTC5A.121    
          TSOIL(I,N)=TSOIL(I,N)                                            ICEHTC5A.122    
     &     +1.0/(SNOW_HCAP*DZ(N))*(H_FLUX(I,N-1)                           ICEHTC5A.123    
     &     -H_FLUX(I,N))*TIMESTEP                                          ICEHTC5A.124    
                                                                           ICEHTC5A.125    
        ENDDO                                                              ICEHTC5A.126    
      ENDDO                                                                ICEHTC5A.127    
                                                                           ICEHTC5A.128    
      IF (LTIMER) THEN                                                     ICEHTC5A.129    
        CALL TIMER('ICEHTC  ',104)                                         GPB8F405.46     
      ENDIF                                                                ICEHTC5A.131    
                                                                           ICEHTC5A.132    
      RETURN                                                               ICEHTC5A.133    
      END                                                                  ICEHTC5A.134    
*ENDIF                                                                     ICEHTC5A.135