*IF DEF,A03_6A                                                             ACB1F405.10     
C *****************************COPYRIGHT******************************     SFLBES5B.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    SFLBES5B.4      
C                                                                          SFLBES5B.5      
C Use, duplication or disclosure of this code is subject to the            SFLBES5B.6      
C restrictions as set forth in the contract.                               SFLBES5B.7      
C                                                                          SFLBES5B.8      
C                Meteorological Office                                     SFLBES5B.9      
C                London Road                                               SFLBES5B.10     
C                BRACKNELL                                                 SFLBES5B.11     
C                Berkshire UK                                              SFLBES5B.12     
C                RG12 2SZ                                                  SFLBES5B.13     
C                                                                          SFLBES5B.14     
C If no contract has been raised with this copy of the code, the use,      SFLBES5B.15     
C duplication or disclosure of it is strictly prohibited.  Permission      SFLBES5B.16     
C to do so must first be obtained in writing from the Head of Numerical    SFLBES5B.17     
C Modelling at the above address.                                          SFLBES5B.18     
C ******************************COPYRIGHT******************************    SFLBES5B.19     
!                                                                          SFLBES5B.20     
!!!  SUBROUTINE SF_LBEST-----------------------------------------------    SFLBES5B.21     
!!!                                                                        SFLBES5B.22     
!!!  Purpose: Calculate combination height for surface tiles, and          SFLBES5B.23     
!!!           heat moisture and wind variables at that height              SFLBES5B.24     
!!!                                                                        SFLBES5B.25     
!!! Simon Jackson <- programmer of some or all of previous code changes    SFLBES5B.26     
!!!                                                                        SFLBES5B.27     
!!!  Model            Modification history:                                SFLBES5B.28     
!!! version  Date                                                          SFLBES5B.29     
!!!                                                                        SFLBES5B.30     
!!!   4.3  7/2/97     New deck. S Jackson                                  SFLBES5B.31     
!!!                                                                        SFLBES5B.32     
!!!  Programming standard: Unified Model Documentation Paper No 4,         SFLBES5B.33     
!!!                        Version ?, dated ?.                             SFLBES5B.34     
!!!                                                                        SFLBES5B.35     
!!!  System component covered: P24.                                        SFLBES5B.36     
!!!                                                                        SFLBES5B.37     
!!!  Project task:                                                         SFLBES5B.38     
!!!                                                                        SFLBES5B.39     
!!!  Documentation: UMDP 24.                                               SFLBES5B.40     
!!!---------------------------------------------------------------------   SFLBES5B.41     
                                                                           SFLBES5B.42     
!!  Arguaments --------------------------------------------------------    SFLBES5B.43     
                                                                           SFLBES5B.44     

      SUBROUTINE SF_LBEST (                                                 1,2SFLBES5B.45     
     & P_POINTS,P_FIELD,P1,H_BLEND_OROG,                                   SFLBES5B.46     
     & QCL_1,QCF_1,QSTAR_GB,Q_1,TSTAR_GB,T_1,U_1,V_1,                      SFLBES5B.47     
     & Z0M_EFF,Z0H,Z0M,Z1_UV,Z1_TQ,H_BLEND,HEAT_BLEND_FACTOR,              SFLBES5B.48     
     & Q_BLEND,QW_BLEND,T_BLEND,TL_BLEND,U_BLEND,V_BLEND,                  SFLBES5B.49     
     & WIND_BLEND_FACTOR,LTIMER                                            SFLBES5B.50     
     & )                                                                   SFLBES5B.51     
                                                                           SFLBES5B.52     
      IMPLICIT NONE                                                        SFLBES5B.53     
                                                                           SFLBES5B.54     
      INTEGER              !    Variables defining grid.                   SFLBES5B.55     
     & P_POINTS            ! IN Number of P-grid points to be processed.   SFLBES5B.56     
     &,P_FIELD             ! IN Total number of p points.                  SFLBES5B.57     
     &,P1                  ! IN First p point to be processed.             SFLBES5B.58     
     &,LAND_MASK(P_FIELD)  ! IN Land/sea mask                              SFLBES5B.59     
                                                                           SFLBES5B.60     
      LOGICAL                                                              SFLBES5B.61     
     & LTIMER                                                              SFLBES5B.62     
                                                                           SFLBES5B.63     
      REAL                                                                 SFLBES5B.64     
     & H_BLEND_OROG(P_FIELD)! IN Blending height for effective             SFLBES5B.65     
!                               roughness lengths                          SFLBES5B.66     
     &,QCL_1(P_FIELD)      ! IN Level 1 cloud water liquid water content   SFLBES5B.67     
     &,QCF_1(P_FIELD)      ! IN Lev 1 cloud fraction                       SFLBES5B.68     
     &,QSTAR_GB(P_FIELD)   ! IN Mean surface QSTAR                         SFLBES5B.69     
     &,Q_1(P_FIELD)        ! IN Level 1 Q                                  SFLBES5B.70     
     &,TSTAR_GB(P_FIELD)   ! IN Mean surface temperature                   SFLBES5B.71     
     &,T_1(P_FIELD)        ! IN Level 1 temperature                        SFLBES5B.72     
     &,U_1(P_FIELD)        ! IN U wind component for lowest                SFLBES5B.73     
!                               atmospheric layer (m/s).  On P grid.       SFLBES5B.74     
     &,V_1(P_FIELD)        ! IN V wind component for lowest                SFLBES5B.75     
!                               atmospheric layer (m/s).  On P grid.       SFLBES5B.76     
     &,Z0M_EFF(P_FIELD)    ! IN Effective roughness length for momentum    SFLBES5B.77     
     &,Z0H(P_FIELD)        ! IN Roughness length for heat and moisture m   SFLBES5B.78     
     &,Z0M(P_FIELD)        ! IN Roughness length for momentum (m).         SFLBES5B.79     
     &,Z1_UV(P_FIELD)      ! IN Height of level 1 on UV levels             SFLBES5B.80     
     &,Z1_TQ(P_FIELD)      ! IN Height of level 1 on TQ levels             SFLBES5B.81     
                                                                           SFLBES5B.82     
! Output                                                                   SFLBES5B.83     
      REAL                                                                 SFLBES5B.84     
     & H_BLEND(P_FIELD)    ! OUT Blending height for times                 SFLBES5B.85     
     &,HEAT_BLEND_FACTOR(P_FIELD)                                          SFLBES5B.86     
!                            OUT Heat Blending factor                      SFLBES5B.87     
     &,Q_BLEND(P_FIELD)    ! OUT Est of Q at blending height               SFLBES5B.88     
!                                using neutral profile                     SFLBES5B.89     
     &,QW_BLEND(P_FIELD)   ! OUT Est of QW at blending height              SFLBES5B.90     
!                                using neutral profile                     SFLBES5B.91     
     &,T_BLEND(P_FIELD)    ! OUT Est of temperature at blending height     SFLBES5B.92     
!                                using neutral profile                     SFLBES5B.93     
     &,TL_BLEND(P_FIELD)   ! OUT Est of TL at blending height              SFLBES5B.94     
!                                using neutral profile                     SFLBES5B.95     
     &,U_BLEND(P_FIELD)    ! OUT U component of wind at blending height    SFLBES5B.96     
     &,V_BLEND(P_FIELD)    ! OUT U component of wind at blending height    SFLBES5B.97     
     &,WIND_BLEND_FACTOR(P_FIELD)                                          SFLBES5B.98     
!                            OUT Wind Blending factor                      SFLBES5B.99     
!  Work Variables                                                          SFLBES5B.100    
                                                                           SFLBES5B.101    
      INTEGER                                                              SFLBES5B.102    
     & I            ! Loop counter                                         SFLBES5B.103    
                                                                           SFLBES5B.104    
      REAL                                                                 SFLBES5B.105    
     & LAPSE        ! Atmospheric lapse rate in surface layer              SFLBES5B.106    
                                                                           SFLBES5B.107    
*CALL C_MDI                                                                SFLBES5B.108    
*CALL C_VKMAN                                                              SFLBES5B.109    
*CALL C_ROUGH                                                              SFLBES5B.110    
*CALL C_SURF                                                               SFLBES5B.111    
*CALL C_LHEAT                                                              SFLBES5B.112    
*CALL C_R_CP                                                               SFLBES5B.113    
*CALL C_G                                                                  SFLBES5B.114    
                                                                           SFLBES5B.115    
      REAL LCRCP,LS,LSRCP                                                  SFLBES5B.116    
      PARAMETER (                                                          SFLBES5B.117    
     & LCRCP=LC/CP           ! Evaporation-to-dT conversion factor.        SFLBES5B.118    
     &,LS=LF+LC              ! Latent heat of sublimation.                 SFLBES5B.119    
     &,LSRCP=LS/CP           ! Sublimation-to-dT conversion factor.        SFLBES5B.120    
     & )                                                                   SFLBES5B.121    
                                                                           SFLBES5B.122    
      EXTERNAL TIMER                                                       SFLBES5B.123    
                                                                           SFLBES5B.124    
      IF (LTIMER) THEN                                                     SFLBES5B.125    
        CALL TIMER('SF_LBEST',3)                                           SFLBES5B.126    
      ENDIF                                                                SFLBES5B.127    
                                                                           SFLBES5B.128    
!#################################################################         SFLBES5B.129    
! Start of code                                                            SFLBES5B.130    
!#################################################################         SFLBES5B.131    
                                                                           SFLBES5B.132    
      DO I=P1,P1+P_POINTS-1                                                SFLBES5B.133    
                                                                           SFLBES5B.134    
        H_BLEND(I) = Z1_UV(I) + Z0M_EFF(I)                                 ARN0F405.1819   
                                                                           SFLBES5B.140    
        IF (H_BLEND(I) .NE. Z1_UV(I) + Z0M_EFF(I)) THEN                    ARN0F405.1820   
          WIND_BLEND_FACTOR(I) = LOG ( H_BLEND(I) / Z0M_EFF(I) ) /         SFLBES5B.146    
     &                LOG ( (Z1_UV(I) + Z0M_EFF(I)) / Z0M_EFF(I) )         ARN0F405.1821   
                                                                           SFLBES5B.148    
        U_BLEND(I) = U_1(I) * WIND_BLEND_FACTOR(I)                         SFLBES5B.149    
        V_BLEND(I) = V_1(I) * WIND_BLEND_FACTOR(I)                         SFLBES5B.150    
                                                                           SFLBES5B.151    
        ELSE                                                               SFLBES5B.152    
                                                                           SFLBES5B.154    
          WIND_BLEND_FACTOR(I) = 1.0                                       SFLBES5B.155    
                                                                           SFLBES5B.156    
          U_BLEND(I) = U_1(I)                                              SFLBES5B.157    
          V_BLEND(I) = V_1(I)                                              SFLBES5B.158    
                                                                           SFLBES5B.159    
        ENDIF                                                              SFLBES5B.161    
                                                                           SFLBES5B.162    
        H_BLEND(I) = Z1_TQ(I) + Z0M_EFF(I)                                 ARN0F405.1822   
                                                                           SFLBES5B.163    
        IF (H_BLEND(I) .NE. Z1_TQ(I) + Z0M_EFF(I)) THEN                    ARN0F405.1823   
          HEAT_BLEND_FACTOR(I) = LOG ( H_BLEND(I) / Z0H(I) ) /             SFLBES5B.165    
     &                LOG ( (Z1_TQ(I) + Z0M_EFF(I)) / Z0H(I) )             ARN0F405.1824   
                                                                           SFLBES5B.167    
          T_BLEND(I) = TSTAR_GB(I) - G/CP * (H_BLEND(I) - Z0H(I))          ARN0F405.1825   
     &               + (T_1(I) + G/CP * (Z1_TQ(I) + Z0M_EFF(I)- Z0H(I))    ARN0F405.1826   
     &                    - TSTAR_GB(I) ) * HEAT_BLEND_FACTOR(I)           ARN0F405.1827   
                                                                           SFLBES5B.170    
         Q_BLEND(I) = QSTAR_GB(I) + ( Q_1(I) - QSTAR_GB(I) ) *             SFLBES5B.171    
     &                 HEAT_BLEND_FACTOR(I)                                SFLBES5B.172    
        ELSE                                                               SFLBES5B.173    
                                                                           SFLBES5B.174    
          HEAT_BLEND_FACTOR(I) = 1.0                                       SFLBES5B.176    
                                                                           SFLBES5B.177    
          T_BLEND(I) = T_1(I)                                              SFLBES5B.178    
          Q_BLEND(I) = Q_1(I)                                              SFLBES5B.179    
                                                                           SFLBES5B.180    
        ENDIF                                                              SFLBES5B.181    
                                                                           SFLBES5B.182    
        TL_BLEND(I) = T_BLEND(I) - LCRCP*QCL_1(I) - LSRCP*QCF_1(I)         SFLBES5B.183    
                                                           ! P243.9        SFLBES5B.184    
                                                                           SFLBES5B.185    
        QW_BLEND(I) = Q_BLEND(I) + QCL_1(I) + QCF_1(I)     ! P243.10       SFLBES5B.186    
                                                                           SFLBES5B.187    
      ENDDO                                                                SFLBES5B.188    
                                                                           SFLBES5B.189    
                                                                           SFLBES5B.190    
      IF (LTIMER) THEN                                                     SFLBES5B.191    
        CALL TIMER('SF_LBEST',4)                                           SFLBES5B.192    
      ENDIF                                                                SFLBES5B.193    
                                                                           SFLBES5B.194    
      RETURN                                                               SFLBES5B.195    
      END                                                                  SFLBES5B.196    
                                                                           SFLBES5B.197    
*ENDIF                                                                     SFLBES5B.198    
                                                                           SFLBES5B.199