*IF DEF,A03_7A                                                             SFLINT7A.2      
C ******************************COPYRIGHT******************************    SFLINT7A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    SFLINT7A.4      
C                                                                          SFLINT7A.5      
C Use, duplication or disclosure of this code is subject to the            SFLINT7A.6      
C restrictions as set forth in the contract.                               SFLINT7A.7      
C                                                                          SFLINT7A.8      
C                Meteorological Office                                     SFLINT7A.9      
C                London Road                                               SFLINT7A.10     
C                BRACKNELL                                                 SFLINT7A.11     
C                Berkshire UK                                              SFLINT7A.12     
C                RG12 2SZ                                                  SFLINT7A.13     
C                                                                          SFLINT7A.14     
C If no contract has been raised with this copy of the code, the use,      SFLINT7A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      SFLINT7A.16     
C to do so must first be obtained in writing from the Head of Numerical    SFLINT7A.17     
C Modelling at the above address.                                          SFLINT7A.18     
C ******************************COPYRIGHT******************************    SFLINT7A.19     
C                                                                          SFLINT7A.20     
CLL  SUBROUTINES SFL_INT_LAND and SFL_INT_SEA--------------------------    SFLINT7A.21     
CLL                                                                        SFLINT7A.22     
CLL  Purpose: To calculate interpolation coefficients for 10m winds        SFLINT7A.23     
CLL           and 1.5m temperature/specific humidity diagnostics           SFLINT7A.24     
CLL           using a generalisation of the method of Geleyn (1988).       SFLINT7A.25     
CLL                                                                        SFLINT7A.26     
CLL  Suitable for single column use (via *IF definition IBM).              SFLINT7A.27     
CLL                                                                        SFLINT7A.28     
CLL  Model            Modification history:                                SFLINT7A.29     
CLL version  Date                                                          SFLINT7A.30     
CLL                                                                        SFLINT7A.31     
CLL   3.4  18/10/94   *DECK inserted into UM version 3.4. S Jackson        SFLINT7A.32     
CLL                                                                        SFLINT7A.33     
CLL   4.0  30/12/94   Modified calculation of 10m wind interpolation       SFLINT7A.34     
CLL                   factor when effective roughness length used;         SFLINT7A.35     
CLL                   10m wind assumed to lie on "local" profile at        SFLINT7A.36     
CLL                   height z0m+10 metres above the surface.              SFLINT7A.37     
CLL                                                    R.N.B.Smith         SFLINT7A.38     
CLL   4.2   Oct. 96   T3E migration - *DEF CRAY removed                    SFLINT7A.39     
CLL                                     S J Swarbrick                      SFLINT7A.40     
CLL                                                                        SFLINT7A.41     
CLL   4.4   Jul. 97   Split into separate land and sea routines for        SFLINT7A.42     
CLL                   the MOSES II tile model (Richard Essery)             SFLINT7A.43     
CLL                                                                        SFLINT7A.44     
CLL  Programming standard: Unified Model Documentation Paper No 4,         SFLINT7A.45     
CLL                        Version 2, dated 18/1/90.                       SFLINT7A.46     
CLL                                                                        SFLINT7A.47     
CLL  Logical component covered: Part of P243.                              SFLINT7A.48     
CLL                                                                        SFLINT7A.49     
CLL  System Task:                                                          SFLINT7A.50     
CLL                                                                        SFLINT7A.51     
CLL  External Documentation: UMDP No.24                                    SFLINT7A.52     
CLL                                                                        SFLINT7A.53     
                                                                           SFLINT7A.54     
CLL---------------------------------------------------------------------   SFLINT7A.55     
CLL  SUBROUTINE SFL_INT_LAND                                               SFLINT7A.56     
CLL---------------------------------------------------------------------   SFLINT7A.57     
                                                                           SFLINT7A.58     

      SUBROUTINE SFL_INT_LAND (                                             1,2SFLINT7A.59     
     & P_FIELD,LAND_FIELD,TILE_PTS,TILE_INDEX,LAND_INDEX,                  SFLINT7A.60     
     & CD_STD,CD,CH,RIB,TILE_FRAC,WIND_PROFILE_FACTOR,                     SFLINT7A.61     
     & Z0M,Z0M_EFF,Z0H,Z0F,Z1,                                             SFLINT7A.62     
     & SU10,SV10,ST1P5,SQ1P5,LTIMER,                                       SFLINT7A.63     
     & CDR10M,CHR1P5M                                                      SFLINT7A.64     
     & )                                                                   SFLINT7A.65     
                                                                           SFLINT7A.66     
      IMPLICIT NONE                                                        SFLINT7A.67     
                                                                           SFLINT7A.68     
      INTEGER                                                              SFLINT7A.69     
     & P_FIELD           ! IN Number of P-grid points.                     SFLINT7A.70     
     &,LAND_FIELD        ! IN Number of land points.                       SFLINT7A.71     
     &,TILE_PTS          ! IN Number of tile points.                       SFLINT7A.72     
     &,TILE_INDEX(LAND_FIELD)                                              SFLINT7A.73     
!                        ! IN Index of tile points.                        SFLINT7A.74     
     &,LAND_INDEX(P_FIELD)                                                 SFLINT7A.75     
!                        ! IN Index of land points.                        SFLINT7A.76     
                                                                           SFLINT7A.77     
      REAL                                                                 SFLINT7A.78     
     & CD_STD(LAND_FIELD)! IN Surface drag coefficient for shear stress    SFLINT7A.79     
!                        !    only, i.e. without orographic part of drag   SFLINT7A.80     
     &,CD(LAND_FIELD)    ! IN Effective surface drag coefficient,          SFLINT7A.81     
!                        !    including orographic part of drag            SFLINT7A.82     
     &,CH(LAND_FIELD)    ! IN Surface transfer coefficient for heat and    SFLINT7A.83     
!                        !    moisture.                                    SFLINT7A.84     
     &,RIB(LAND_FIELD)   ! IN Bulk Richardson number for                   SFLINT7A.85     
!                        !    lowest layer.                                SFLINT7A.86     
     &,TILE_FRAC(LAND_FIELD)                                               SFLINT7A.87     
!                        ! IN Tile fraction.                               SFLINT7A.88     
     &,WIND_PROFILE_FACTOR(LAND_FIELD)                                     SFLINT7A.89     
!                        ! IN Factor for converting effective friction     SFLINT7A.90     
!                        !    velocity to local one.                       SFLINT7A.91     
     &,Z0M(LAND_FIELD)   ! IN Roughness length for momentum (m).           SFLINT7A.92     
     &,Z0M_EFF(LAND_FIELD)                                                 SFLINT7A.93     
!                        ! IN Effective roughness length for               SFLINT7A.94     
!                        !    momentum (m).                                SFLINT7A.95     
     &,Z0H(LAND_FIELD)   ! IN Roughness length for heat and                SFLINT7A.96     
!                        !    moisture (m).                                SFLINT7A.97     
     &,Z0F(LAND_FIELD)   ! IN Roughness length in the free                 SFLINT7A.98     
!                        !    convective limit (m).                        SFLINT7A.99     
     &,Z1(P_FIELD)       ! IN Height of lowest model level (m).            SFLINT7A.100    
                                                                           SFLINT7A.101    
      LOGICAL                                                              SFLINT7A.102    
     & SU10              ! IN 10m U-wind diagnostic flag                   SFLINT7A.103    
     &,SV10              ! IN 10m V-wind diagnostic flag                   SFLINT7A.104    
     &,ST1P5             ! IN screen temp diagnostic flag                  SFLINT7A.105    
     &,SQ1P5             ! IN screen specific humidity                     SFLINT7A.106    
!                        !    diagnostic flag                              SFLINT7A.107    
     &,LTIMER            ! IN TIMER diagnostics flag                       SFLINT7A.108    
                                                                           SFLINT7A.109    
      REAL                                                                 SFLINT7A.110    
     & CDR10M(P_FIELD)   ! INOUT GBM interpolation coeff. for 10m wind     SFLINT7A.111    
     &,CHR1P5M(LAND_FIELD)                                                 SFLINT7A.112    
!                        ! OUT Local interpolation coefficient for 1.5m    SFLINT7A.113    
!                        !     temperature                                 SFLINT7A.114    
                                                                           SFLINT7A.115    
      EXTERNAL TIMER                                                       SFLINT7A.116    
                                                                           SFLINT7A.117    
! Local and other symbolic constants :-                                    SFLINT7A.118    
*CALL C_VKMAN                                                              SFLINT7A.119    
                                                                           SFLINT7A.120    
      REAL Z1P5M,Z10M                                                      SFLINT7A.121    
      PARAMETER (                                                          SFLINT7A.122    
     & Z1P5M = 1.5  ! for diagnosis of screen values of temperature        SFLINT7A.123    
!                   ! and humidity (assumed to be at 1.5m).                SFLINT7A.124    
     &,Z10M = 10.0  ! for diagnosis of 10m winds.                          SFLINT7A.125    
     & )                                                                   SFLINT7A.126    
                                                                           SFLINT7A.127    
!  Define local storage.                                                   SFLINT7A.128    
                                                                           SFLINT7A.129    
!  (a) Local work arrays.                                                  SFLINT7A.130    
                                                                           SFLINT7A.131    
      REAL                                                                 SFLINT7A.132    
     & Z1E(LAND_FIELD)  ! Level 1 height + Z0M_EFF                         SFLINT7A.133    
     &,SQRTCD(LAND_FIELD) ! Square root of CD                              SFLINT7A.134    
                                                                           SFLINT7A.135    
!  (b) Scalars.                                                            SFLINT7A.136    
                                                                           SFLINT7A.137    
      REAL                                                                 SFLINT7A.138    
     & Z1S              ! Level 1 height + Z0M_EFF - Z0H                   SFLINT7A.139    
     &,Z1P5ME           ! Z1P5M + Z0H                                      SFLINT7A.140    
     &,Z10ME            ! Z10M + Z0M                                       SFLINT7A.141    
     &,SQRTCD_K         ! Temporary storage in calc of 1.5 amd 10m diags   SFLINT7A.142    
     &,Z_OVER_Z1        ! Temporary storage in calc of 1.5 amd 10m diags   SFLINT7A.143    
     &,CDNZ             ! Neutral drag coef. for momentum @ 10m            SFLINT7A.144    
     &,CDNZ1            ! Neutral drag coef. for momentum @ level1         SFLINT7A.145    
     &,CHNZ             ! Neutral drag coef. for heat/moisture @ 1.5m      SFLINT7A.146    
     &,CHNZ1            ! Neutral drag coef. for heat/moisture @ level1    SFLINT7A.147    
     &,CDTEMP1          ! Workspace in calc of interpolation coeffs.       SFLINT7A.148    
     &,CDTEMP2          ! Workspace in calc of interpolation coeffs.       SFLINT7A.149    
     &,CDTEMP3          ! Workspace in calc of interpolation coeffs.       SFLINT7A.150    
     &,CD10             ! Local interpolation coeff. for 10m wind          SFLINT7A.151    
                                                                           SFLINT7A.152    
      INTEGER                                                              SFLINT7A.153    
     & I       ! Loop counter (horizontal field index).                    SFLINT7A.154    
     &,J       ! Loop counter (tile point index).                          SFLINT7A.155    
     &,L       ! Loop counter (land point field index).                    SFLINT7A.156    
                                                                           SFLINT7A.157    
      IF (LTIMER) THEN                                                     SFLINT7A.158    
        CALL TIMER('SFL_INT   ',3)                                         SFLINT7A.159    
      ENDIF                                                                SFLINT7A.160    
                                                                           SFLINT7A.161    
!-----------------------------------------------------------------------   SFLINT7A.162    
!  If selected calculate interpolation coefficient for 10m winds.          SFLINT7A.163    
!-----------------------------------------------------------------------   SFLINT7A.164    
                                                                           SFLINT7A.165    
      IF(SU10.OR.SV10) THEN                                                SFLINT7A.166    
        DO J=1,TILE_PTS                                                    SFLINT7A.167    
          L = TILE_INDEX(J)                                                SFLINT7A.168    
          I = LAND_INDEX(L)                                                SFLINT7A.169    
                                                                           SFLINT7A.170    
          Z1E(L) = Z1(I) + Z0M_EFF(L)                                      SFLINT7A.171    
          Z10ME = Z10M + Z0M(L)                                            SFLINT7A.172    
          CDNZ = LOG( Z10ME / Z0M(L) )                                     SFLINT7A.173    
          CDNZ1 = LOG( Z1E(L) / Z0M_EFF(L) )                               SFLINT7A.174    
          SQRTCD(L) = SQRT(CD(L))                                          SFLINT7A.175    
          SQRTCD_K = SQRTCD(L) / VKMAN                                     SFLINT7A.176    
          Z_OVER_Z1 = Z10M  / Z1(I)                                        SFLINT7A.177    
                                                                           SFLINT7A.178    
          IF (RIB(L).GE.0.0) THEN                                          SFLINT7A.179    
                                                                           SFLINT7A.180    
! Stable case                                                              SFLINT7A.181    
                                                                           SFLINT7A.182    
            CD10 = Z_OVER_Z1 + SQRTCD_K *                                  SFLINT7A.183    
     &                  (CDNZ - Z_OVER_Z1*CDNZ1)                           SFLINT7A.184    
          ELSE                                                             SFLINT7A.185    
                                                                           SFLINT7A.186    
! Unstable Case                                                            SFLINT7A.187    
                                                                           SFLINT7A.188    
            CDTEMP1 = EXP( 1.0 / SQRTCD_K )                                SFLINT7A.189    
            CDTEMP2 = Z1E(L) / Z0M_EFF(L)                                  SFLINT7A.190    
            CDTEMP3 = LOG( ( ( Z1E(L) - Z0M(L) ) * CDTEMP1 -               SFLINT7A.191    
     &                       ( Z0M_EFF(L) - Z0M(L) ) * CDTEMP2 ) /         SFLINT7A.192    
     &                     ( ( Z1E(L) - Z10ME ) * CDTEMP1 -                SFLINT7A.193    
     &                       ( Z0M_EFF(L) - Z10ME ) * CDTEMP2 ) )          SFLINT7A.194    
            CD10 = SQRTCD_K * ( CDNZ + CDTEMP3 )                           SFLINT7A.195    
          ENDIF                                                            SFLINT7A.196    
          CDR10M(I) = CDR10M(I) +                                          SFLINT7A.197    
     &                          TILE_FRAC(L)*CD10*WIND_PROFILE_FACTOR(L)   SFLINT7A.198    
        ENDDO                                                              SFLINT7A.199    
      ENDIF                                                                SFLINT7A.200    
                                                                           SFLINT7A.201    
!-----------------------------------------------------------------------   SFLINT7A.202    
!   If selected calculate interpolation coefficient for 1.5m screen        SFLINT7A.203    
!   temperature and specific humidity.                                     SFLINT7A.204    
!-----------------------------------------------------------------------   SFLINT7A.205    
                                                                           SFLINT7A.206    
      IF (ST1P5.OR.SQ1P5) THEN                                             SFLINT7A.207    
        DO J=1,TILE_PTS                                                    SFLINT7A.208    
          L = TILE_INDEX(J)                                                SFLINT7A.209    
          I = LAND_INDEX(L)                                                SFLINT7A.210    
                                                                           SFLINT7A.211    
! variables to be used later                                               SFLINT7A.212    
          Z1E(L) = Z1(I) + Z0M_EFF(L)                                      SFLINT7A.213    
          Z1S = Z1E(L) - Z0H(L)                                            SFLINT7A.214    
          Z1P5ME = Z1P5M + Z0H(L)                                          SFLINT7A.215    
          CHNZ = LOG( Z1P5ME / Z0H(L) )                                    SFLINT7A.216    
          CHNZ1 = LOG( Z1E(L) / Z0H(L) )                                   SFLINT7A.217    
          SQRTCD(L) = SQRT(CD_STD(L))                                      SFLINT7A.218    
          SQRTCD_K =0.0                                                    SFLINT7A.219    
          IF (SQRTCD(L) .GT. 0.0) SQRTCD_K = CH(L) / (SQRTCD(L) * VKMAN)   SFLINT7A.220    
          Z_OVER_Z1 =  Z1P5M  / Z1S                                        SFLINT7A.221    
                                                                           SFLINT7A.222    
! Stable case                                                              SFLINT7A.223    
                                                                           SFLINT7A.224    
          IF (RIB(L).GE.0.0) THEN                                          SFLINT7A.225    
            CHR1P5M(L) = Z_OVER_Z1 + SQRTCD_K *                            SFLINT7A.226    
     &                  (CHNZ - Z_OVER_Z1 * CHNZ1)                         SFLINT7A.227    
          ELSE                                                             SFLINT7A.228    
                                                                           SFLINT7A.229    
! Unstable Case                                                            SFLINT7A.230    
                                                                           SFLINT7A.231    
            CDTEMP1 = EXP(1.0 / SQRTCD_K)                                  SFLINT7A.232    
            CDTEMP2 = ( Z1P5M * Z1E(L) +                                   SFLINT7A.233    
     &                  Z0H(L) * ( Z1S - Z1P5M ) * CDTEMP1 ) /             SFLINT7A.234    
     &                ( Z1S * Z1P5ME )                                     SFLINT7A.235    
            CHR1P5M(L) = 1.0 - SQRTCD_K * LOG ( CDTEMP2 )                  SFLINT7A.236    
          ENDIF                                                            SFLINT7A.237    
                                                                           SFLINT7A.238    
        ENDDO                                                              SFLINT7A.239    
      ENDIF                                                                SFLINT7A.240    
                                                                           SFLINT7A.241    
      IF (LTIMER) THEN                                                     SFLINT7A.242    
        CALL TIMER('SFL_INT ',4)                                           SFLINT7A.243    
      ENDIF                                                                SFLINT7A.244    
                                                                           SFLINT7A.245    
      RETURN                                                               SFLINT7A.246    
      END                                                                  SFLINT7A.247    
                                                                           SFLINT7A.248    
CLL---------------------------------------------------------------------   SFLINT7A.249    
CLL  SUBROUTINE SFL_INT_SEA                                                SFLINT7A.250    
CLL---------------------------------------------------------------------   SFLINT7A.251    
                                                                           SFLINT7A.252    

      SUBROUTINE SFL_INT_SEA (                                              1,2SFLINT7A.253    
     & P_POINTS,P_FIELD,P1,CD,CH,RIB,Z0M,Z0H,Z0F,Z1,                       SFLINT7A.254    
     & LAND_MASK,SU10,SV10,ST1P5,SQ1P5,LTIMER,                             SFLINT7A.255    
     & CDR10M,CHR1P5M                                                      SFLINT7A.256    
     & )                                                                   SFLINT7A.257    
                                                                           SFLINT7A.258    
      IMPLICIT NONE                                                        SFLINT7A.259    
                                                                           SFLINT7A.260    
      INTEGER                                                              SFLINT7A.261    
     & P_POINTS           ! IN Number of points to be processed.           SFLINT7A.262    
     &,P_FIELD            ! IN Total number points.                        SFLINT7A.263    
     &,P1                 ! IN First point to be processed.                SFLINT7A.264    
                                                                           SFLINT7A.265    
      REAL                                                                 SFLINT7A.266    
     & CD(P_FIELD)        ! IN Effective surface drag coefficient,         SFLINT7A.267    
!                         !    including orographic part of drag           SFLINT7A.268    
     &,CH(P_FIELD)        ! IN Surface transfer coefficient for heat       SFLINT7A.269    
!                         !    and moisture.                               SFLINT7A.270    
     &,RIB(P_FIELD)       ! IN Bulk Richardson number for                  SFLINT7A.271    
!                         !    lowest layer.                               SFLINT7A.272    
     &,Z0M(P_FIELD)       ! IN Roughness length for momentum (m).          SFLINT7A.273    
     &,Z0H(P_FIELD)       ! IN Roughness length for heat and               SFLINT7A.274    
!                         !    moisture (m).                               SFLINT7A.275    
     &,Z0F(P_FIELD)       ! IN Roughness length in the free                SFLINT7A.276    
!                         !    convective limit (m).                       SFLINT7A.277    
     &,Z1(P_FIELD)        ! IN Height of lowest model level (m).           SFLINT7A.278    
                                                                           SFLINT7A.279    
      LOGICAL                                                              SFLINT7A.280    
     & LAND_MASK(P_FIELD) ! IN T for land points, F otherwise.             SFLINT7A.281    
     &,SU10               ! IN 10m U-wind diagnostic flag                  SFLINT7A.282    
     &,SV10               ! IN 10m V-wind diagnostic flag                  SFLINT7A.283    
     &,ST1P5              ! IN screen temp diagnostic flag                 SFLINT7A.284    
     &,SQ1P5              ! IN screen specific humidity                    SFLINT7A.285    
!                         !    diagnostic flag                             SFLINT7A.286    
     &,LTIMER             ! IN TIMER diagnostics flag                      SFLINT7A.287    
                                                                           SFLINT7A.288    
      REAL                                                                 SFLINT7A.289    
     & CDR10M(P_FIELD)    ! OUT interpolation coefficicent for 10m wind    SFLINT7A.290    
     &,CHR1P5M(P_FIELD)   ! OUT Interpolation coefficient for 1.5m         SFLINT7A.291    
!                         !     temperature                                SFLINT7A.292    
                                                                           SFLINT7A.293    
      EXTERNAL TIMER                                                       SFLINT7A.294    
                                                                           SFLINT7A.295    
!    Local and other symbolic constants :-                                 SFLINT7A.296    
*CALL C_VKMAN                                                              SFLINT7A.297    
      REAL Z1P5M,Z10M                                                      SFLINT7A.298    
      PARAMETER (                                                          SFLINT7A.299    
     & Z1P5M = 1.5  ! for diagnosis of screen values of temperature        SFLINT7A.300    
!                   ! and humidity (assumed to be at 1.5m).                SFLINT7A.301    
     &,Z10M = 10.0  ! for diagnosis of 10m winds.                          SFLINT7A.302    
     & )                                                                   SFLINT7A.303    
                                                                           SFLINT7A.304    
!  Define local storage.                                                   SFLINT7A.305    
                                                                           SFLINT7A.306    
!  (a) Local work arrays.                                                  SFLINT7A.307    
                                                                           SFLINT7A.308    
      REAL                                                                 SFLINT7A.309    
     & Z1E(P_FIELD)     ! Level 1 height + Z0M                             SFLINT7A.310    
     &,SQRTCD(P_FIELD)  ! Square root of CD                                SFLINT7A.311    
                                                                           SFLINT7A.312    
!  (b) Scalars.                                                            SFLINT7A.313    
                                                                           SFLINT7A.314    
      REAL                                                                 SFLINT7A.315    
     & Z1S              ! Level 1 height + Z0M - Z0H                       SFLINT7A.316    
     &,Z1P5ME           ! Z1P5M + Z0H                                      SFLINT7A.317    
     &,Z10ME            ! Z10M + Z0M                                       SFLINT7A.318    
     &,SQRTCD_K         ! Temporary storage in calc of 1.5 amd 10m diags   SFLINT7A.319    
     &,Z_OVER_Z1        ! Temporary storage in calc of 1.5 amd 10m diags   SFLINT7A.320    
     &,CDNZ             ! Neutral drag coef. for momentum @ 10m            SFLINT7A.321    
     &,CDNZ1            ! Neutral drag coef. for momentum @ level1         SFLINT7A.322    
     &,CHNZ             ! Neutral drag coef. for heat/moisture @ 1.5m      SFLINT7A.323    
     &,CHNZ1            ! Neutral drag coef. for heat/moisture @ level1    SFLINT7A.324    
     &,CDTEMP1          ! Workspace in calc of interpolation coeffs.       SFLINT7A.325    
     &,CDTEMP2          ! Workspace in calc of interpolation coeffs.       SFLINT7A.326    
     &,CDTEMP3          ! Workspace in calc of interpolation coeffs.       SFLINT7A.327    
                                                                           SFLINT7A.328    
      INTEGER                                                              SFLINT7A.329    
     & I       ! Loop counter (horizontal field index).                    SFLINT7A.330    
                                                                           SFLINT7A.331    
      IF (LTIMER) THEN                                                     SFLINT7A.332    
        CALL TIMER('SFL_INT   ',3)                                         SFLINT7A.333    
      ENDIF                                                                SFLINT7A.334    
                                                                           SFLINT7A.335    
      DO I=P1,P1+P_POINTS-1                                                SFLINT7A.336    
        SQRTCD(I) = SQRT(CD(I))                                            SFLINT7A.337    
        Z1E(I) = Z1(I) + Z0M(I)                                            SFLINT7A.338    
      ENDDO                                                                SFLINT7A.339    
                                                                           SFLINT7A.340    
!-----------------------------------------------------------------------   SFLINT7A.341    
!   If selected calculate interpolation coefficient for 10m winds.         SFLINT7A.342    
!-----------------------------------------------------------------------   SFLINT7A.343    
                                                                           SFLINT7A.344    
      IF(SU10.OR.SV10) THEN                                                SFLINT7A.345    
        DO I=P1,P1+P_POINTS-1                                              SFLINT7A.346    
          IF ( .NOT. LAND_MASK(I) ) THEN                                   SFLINT7A.347    
                                                                           SFLINT7A.348    
            Z10ME = Z10M + Z0M(I)                                          SFLINT7A.349    
            CDNZ = LOG( Z10ME / Z0M(I) )                                   SFLINT7A.350    
            CDNZ1 = LOG( Z1E(I) / Z0M(I) )                                 SFLINT7A.351    
            SQRTCD_K = SQRTCD(I) / VKMAN                                   SFLINT7A.352    
            Z_OVER_Z1 = Z10M  / Z1(I)                                      SFLINT7A.353    
                                                                           SFLINT7A.354    
            IF (RIB(I).GE.0.0) THEN                                        SFLINT7A.355    
                                                                           SFLINT7A.356    
! Stable case                                                              SFLINT7A.357    
                                                                           SFLINT7A.358    
              CDR10M(I) = Z_OVER_Z1 + SQRTCD_K *                           SFLINT7A.359    
     &                    (CDNZ - Z_OVER_Z1*CDNZ1)                         SFLINT7A.360    
            ELSE                                                           SFLINT7A.361    
                                                                           SFLINT7A.362    
! Unstable Case                                                            SFLINT7A.363    
                                                                           SFLINT7A.364    
              CDTEMP1 = EXP( 1.0 / SQRTCD_K )                              SFLINT7A.365    
              CDTEMP2 = Z1E(I) / Z0M(I)                                    SFLINT7A.366    
              CDTEMP3 = LOG( Z1(I)* CDTEMP1 /                              SFLINT7A.367    
     &                       ((Z1(I) - Z10M)*CDTEMP1 + Z10ME*CDTEMP2) )    SFLINT7A.368    
              CDR10M(I) = SQRTCD_K * ( CDNZ + CDTEMP3 )                    SFLINT7A.369    
            ENDIF                                                          SFLINT7A.370    
                                                                           SFLINT7A.371    
          ENDIF                                                            SFLINT7A.372    
        ENDDO                                                              SFLINT7A.373    
      ENDIF                                                                SFLINT7A.374    
                                                                           SFLINT7A.375    
!-----------------------------------------------------------------------   SFLINT7A.376    
!   If selected calculate interpolation coefficient for 1.5m screen        SFLINT7A.377    
!   temperature and specific humidity.                                     SFLINT7A.378    
!-----------------------------------------------------------------------   SFLINT7A.379    
                                                                           SFLINT7A.380    
      IF (ST1P5.OR.SQ1P5) THEN                                             SFLINT7A.381    
        DO I=P1,P1+P_POINTS-1                                              SFLINT7A.382    
          IF ( .NOT. LAND_MASK(I) ) THEN                                   SFLINT7A.383    
                                                                           SFLINT7A.384    
! variables to be used later                                               SFLINT7A.385    
            Z1S = Z1E(I) - Z0H(I)                                          SFLINT7A.386    
            Z1P5ME = Z1P5M + Z0H(I)                                        SFLINT7A.387    
            CHNZ = LOG( Z1P5ME / Z0H(I) )                                  SFLINT7A.388    
            CHNZ1 = LOG( Z1E(I) / Z0H(I) )                                 SFLINT7A.389    
            SQRTCD(I) = SQRT(CD(I))                                        SFLINT7A.390    
            SQRTCD_K =0.0                                                  SFLINT7A.391    
            IF (SQRTCD(I) .GT. 0.0)                                        SFLINT7A.392    
     &        SQRTCD_K = CH(I) / (SQRTCD(I) * VKMAN)                       SFLINT7A.393    
            Z_OVER_Z1 =  Z1P5M  / Z1S                                      SFLINT7A.394    
                                                                           SFLINT7A.395    
! Stable case                                                              SFLINT7A.396    
                                                                           SFLINT7A.397    
            IF (RIB(I).GE.0.0) THEN                                        SFLINT7A.398    
              CHR1P5M(I) = Z_OVER_Z1 + SQRTCD_K *                          SFLINT7A.399    
     &                    (CHNZ - Z_OVER_Z1 * CHNZ1)                       SFLINT7A.400    
            ELSE                                                           SFLINT7A.401    
                                                                           SFLINT7A.402    
! Unstable Case                                                            SFLINT7A.403    
                                                                           SFLINT7A.404    
              CDTEMP1 = EXP(1.0 / SQRTCD_K)                                SFLINT7A.405    
              CDTEMP2 = ( Z1P5M * Z1E(I) +                                 SFLINT7A.406    
     &                   Z0H(I) * ( Z1S - Z1P5M ) * CDTEMP1 ) /            SFLINT7A.407    
     &                  ( Z1S * Z1P5ME )                                   SFLINT7A.408    
              CHR1P5M(I) = 1.0 - SQRTCD_K * LOG ( CDTEMP2 )                SFLINT7A.409    
            ENDIF                                                          SFLINT7A.410    
                                                                           SFLINT7A.411    
          ENDIF                                                            SFLINT7A.412    
        ENDDO                                                              SFLINT7A.413    
      ENDIF                                                                SFLINT7A.414    
                                                                           SFLINT7A.415    
      IF (LTIMER) THEN                                                     SFLINT7A.416    
        CALL TIMER('SFL_INT ',4)                                           SFLINT7A.417    
      ENDIF                                                                SFLINT7A.418    
                                                                           SFLINT7A.419    
      RETURN                                                               SFLINT7A.420    
      END                                                                  SFLINT7A.421    
*ENDIF                                                                     SFLINT7A.422