*IF DEF,A03_7A                                                             SCREEN7A.2      
C *****************************COPYRIGHT******************************     SCREEN7A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    SCREEN7A.4      
C                                                                          SCREEN7A.5      
C Use, duplication or disclosure of this code is subject to the            SCREEN7A.6      
C restrictions as set forth in the contract.                               SCREEN7A.7      
C                                                                          SCREEN7A.8      
C                Meteorological Office                                     SCREEN7A.9      
C                London Road                                               SCREEN7A.10     
C                BRACKNELL                                                 SCREEN7A.11     
C                Berkshire UK                                              SCREEN7A.12     
C                RG12 2SZ                                                  SCREEN7A.13     
C                                                                          SCREEN7A.14     
C If no contract has been raised with this copy of the code, the use,      SCREEN7A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      SCREEN7A.16     
C to do so must first be obtained in writing from the Head of Numerical    SCREEN7A.17     
C Modelling at the above address.                                          SCREEN7A.18     
C ******************************COPYRIGHT******************************    SCREEN7A.19     
!!!   SUBROUTINE SCREEN_TQ----------------------------------------------   SCREEN7A.20     
!!!                                                                        SCREEN7A.21     
!!!  Purpose: Diagnose temperature and/or specific humidity at screen      SCREEN7A.22     
!!!           height (1.5 metres), as requested via the STASH flags.       SCREEN7A.23     
!!!           This version outputs gridbox-average diagnostics over        SCREEN7A.24     
!!!           land surface tiles, but diagnostics for individual tiles     SCREEN7A.25     
!!!           could be made available as well.                             SCREEN7A.26     
!!!                                                                        SCREEN7A.27     
!!!                                                                        SCREEN7A.28     
!!!  Model            Modification history:                                SCREEN7A.29     
!!! version  Date                                                          SCREEN7A.30     
!!!                                                                        SCREEN7A.31     
!!!   4.4    8/97     New deck for MOSES II (R. Essery)                    SCREEN7A.32     
!!!                                                                        SCREEN7A.33     
!!!---------------------------------------------------------------------   SCREEN7A.34     

      SUBROUTINE SCREEN_TQ (                                                1,2SCREEN7A.35     
     & P_POINTS,P_FIELD,P1,LAND1,LAND_PTS,LAND_FIELD,NTYPE,                SCREEN7A.36     
     & LAND_INDEX,TILE_INDEX,TILE_PTS,LAND_MASK,                           SCREEN7A.37     
     & SQ1P5,ST1P5,CHR1P5M,CHR1P5M_SICE,PSTAR,QW_1,RESFT,                  SCREEN7A.38     
     & TILE_FRAC,TL_1,TSTAR,TSTAR_TILE,                                    SCREEN7A.39     
     & Z0H,Z0H_TILE,Z0M,Z0M_TILE,Z1,                                       SCREEN7A.40     
     & Q1P5M,T1P5M                                                         SCREEN7A.41     
     & )                                                                   SCREEN7A.42     
                                                                           SCREEN7A.43     
      IMPLICIT NONE                                                        SCREEN7A.44     
                                                                           SCREEN7A.45     
      INTEGER                                                              SCREEN7A.46     
     & P_POINTS             ! IN Number of P-grid points to be             SCREEN7A.47     
!                           !  processed.                                  SCREEN7A.48     
     &,P_FIELD              ! IN Total number of P-grid points.            SCREEN7A.49     
     &,P1                   ! IN First P-point to be processed.            SCREEN7A.50     
     &,LAND1                ! IN First land point to be processed.         SCREEN7A.51     
     &,LAND_PTS             ! IN Number of land points to be processed.    SCREEN7A.52     
     &,LAND_FIELD           ! IN Total number of land points.              SCREEN7A.53     
     &,NTYPE                ! IN Number of tiles per land point.           SCREEN7A.54     
     &,LAND_INDEX(P_FIELD)  ! IN Index of land points.                     SCREEN7A.55     
     &,TILE_INDEX(LAND_FIELD,NTYPE)                                        SCREEN7A.56     
!                           ! IN Index of tile points.                     SCREEN7A.57     
     &,TILE_PTS(NTYPE)      ! IN Number of tile points.                    SCREEN7A.58     
                                                                           SCREEN7A.59     
      LOGICAL                                                              SCREEN7A.60     
     & LAND_MASK(P_FIELD)   ! IN T for land points, F otherwise.           SCREEN7A.61     
     &,SQ1P5                ! IN STASH flag for 1.5-metre sp humidity.     SCREEN7A.62     
     &,ST1P5                ! IN STASH flag for 1.5-metre temperature.     SCREEN7A.63     
                                                                           SCREEN7A.64     
      REAL                                                                 SCREEN7A.65     
     & CHR1P5M(LAND_FIELD,NTYPE)                                           SCREEN7A.66     
!                           ! IN Ratio of coefficients for                 SCREEN7A.67     
!                           !    calculation of 1.5 m T.                   SCREEN7A.68     
     &,CHR1P5M_SICE(P_FIELD)! IN Ratio of coefficients for                 SCREEN7A.69     
!                           !    calculation of 1.5 m T.                   SCREEN7A.70     
     &,PSTAR(P_FIELD)       ! IN Surface pressure (Pa).                    SCREEN7A.71     
     &,QW_1(P_FIELD)        ! IN Total water content of lowest             SCREEN7A.72     
!                                atmospheric layer (kg per kg air).        SCREEN7A.73     
     &,RESFT(LAND_FIELD,NTYPE)                                             SCREEN7A.74     
!                           ! IN Surface resistance factor.                SCREEN7A.75     
     &,TILE_FRAC(LAND_FIELD,NTYPE)                                         SCREEN7A.76     
!                           ! IN Tile fractions.                           SCREEN7A.77     
     &,TL_1(P_FIELD)        ! IN Liquid/frozen water temperature for       SCREEN7A.78     
!                                lowest atmospheric layer (K).             SCREEN7A.79     
     &,TSTAR(P_FIELD)       ! IN Gridbox mean surface temperature (K).     SCREEN7A.80     
     &,TSTAR_TILE(LAND_FIELD,NTYPE)                                        SCREEN7A.81     
!                           ! IN Tile surface temperatures (K).            SCREEN7A.82     
     &,Z0H(P_FIELD)         ! IN Roughness length for heat and             SCREEN7A.83     
!                           !    moisture (m).                             SCREEN7A.84     
     &,Z0H_TILE(LAND_FIELD,NTYPE)                                          SCREEN7A.85     
!                           ! IN Tile roughness lengths for heat and       SCREEN7A.86     
!                           !    moisture (m).                             SCREEN7A.87     
     &,Z0M(P_FIELD)         ! IN Roughness length for momentum (m).        SCREEN7A.88     
     &,Z0M_TILE(LAND_FIELD,NTYPE)                                          SCREEN7A.89     
!                           ! IN Tile roughness lengths for momentum (m)   SCREEN7A.90     
     &,Z1(P_FIELD)          ! IN Height of lowest atmospheric level (m).   SCREEN7A.91     
                                                                           SCREEN7A.92     
      REAL                                                                 SCREEN7A.93     
     & Q1P5M(P_FIELD)       ! OUT Specific humidity at screen height of    SCREEN7A.94     
!                           !     1.5 metres (kg water per kg air).        SCREEN7A.95     
     &,T1P5M(P_FIELD)       ! OUT Temperature at screen height of          SCREEN7A.96     
!                           !     1.5 metres (K).                          SCREEN7A.97     
                                                                           SCREEN7A.98     
      REAL                                                                 SCREEN7A.99     
     & CER1P5M              ! Ratio of coefficients reqd for               SCREEN7A.100    
!                           ! calculation of 1.5 m Q.                      SCREEN7A.101    
     &,PSTAR_LAND(LAND_FIELD)! Surface pressure for land points.           SCREEN7A.102    
     &,QS(P_FIELD)          ! Surface saturated sp humidity.               SCREEN7A.103    
     &,QS_TILE(LAND_FIELD)  ! Surface saturated sp humidity.               SCREEN7A.104    
     &,Q                    ! Local Q at 1.5 m.                            SCREEN7A.105    
     &,T                    ! Local T at 1.5 m.                            SCREEN7A.106    
                                                                           SCREEN7A.107    
       INTEGER                                                             SCREEN7A.108    
     & I           ! Loop counter (horizontal field index).                SCREEN7A.109    
     &,J           ! Loop counter (tile point index).                      SCREEN7A.110    
     &,L           ! Loop counter (land point field index).                SCREEN7A.111    
     &,N           ! Loop counter (tile index).                            SCREEN7A.112    
                                                                           SCREEN7A.113    
! Local and other symbolic constants used :-                               SCREEN7A.114    
                                                                           SCREEN7A.115    
*CALL C_G                                                                  SCREEN7A.116    
*CALL C_HT_M                                                               SCREEN7A.117    
*CALL C_R_CP                                                               SCREEN7A.118    
      REAL GRCP                                                            SCREEN7A.119    
      PARAMETER ( GRCP = G / CP )                                          SCREEN7A.120    
                                                                           SCREEN7A.121    
!-----------------------------------------------------------------------   SCREEN7A.122    
! Diagnose local and GBM temperatures at 1.5 m if requested via ST1P5      SCREEN7A.123    
!-----------------------------------------------------------------------   SCREEN7A.124    
      IF (ST1P5) THEN                                                      SCREEN7A.125    
                                                                           SCREEN7A.126    
        DO I=P1,P1+P_POINTS-1                                              SCREEN7A.127    
          T1P5M(I) = 0.                                                    SCREEN7A.128    
          IF ( .NOT.LAND_MASK(I) ) THEN                                    SCREEN7A.129    
            T1P5M(I) = TSTAR(I) - GRCP*Z1P5M + CHR1P5M_SICE(I) *           SCREEN7A.130    
     &                 (TL_1(I) - TSTAR(I) + GRCP*(Z1(I)+Z0M(I)-Z0H(I)))   SCREEN7A.131    
          ENDIF                                                            SCREEN7A.132    
        ENDDO                                                              SCREEN7A.133    
                                                                           SCREEN7A.134    
        DO N=1,NTYPE                                                       SCREEN7A.135    
          DO J=1,TILE_PTS(N)                                               SCREEN7A.136    
            L = TILE_INDEX(J,N)                                            SCREEN7A.137    
            I = LAND_INDEX(L)                                              SCREEN7A.138    
            T = TSTAR_TILE(L,N) - GRCP*Z1P5M + CHR1P5M(L,N) *              SCREEN7A.139    
     &                      ( TL_1(I) - TSTAR_TILE(L,N) +                  SCREEN7A.140    
     &                        GRCP*(Z1(I)+Z0M_TILE(L,N)-Z0H_TILE(L,N)) )   SCREEN7A.141    
            T1P5M(I) = T1P5M(I) + TILE_FRAC(L,N)*T                         SCREEN7A.142    
          ENDDO                                                            SCREEN7A.143    
        ENDDO                                                              SCREEN7A.144    
                                                                           SCREEN7A.145    
      ENDIF                                                                SCREEN7A.146    
                                                                           SCREEN7A.147    
!-----------------------------------------------------------------------   SCREEN7A.148    
! Diagnose local and GBM humidities at 1.5 m if requested via SQ1P5        SCREEN7A.149    
!-----------------------------------------------------------------------   SCREEN7A.150    
      IF (SQ1P5) THEN                                                      SCREEN7A.151    
                                                                           SCREEN7A.152    
        CALL QSAT(QS(P1),TSTAR(P1),PSTAR(P1),P_POINTS)                     SCREEN7A.153    
        DO I=P1,P1+P_POINTS-1                                              SCREEN7A.154    
          Q1P5M(I) = 0.                                                    SCREEN7A.155    
          IF ( .NOT.LAND_MASK(I) ) THEN                                    SCREEN7A.156    
            CER1P5M = CHR1P5M_SICE(I) - 1.                                 SCREEN7A.157    
            Q1P5M(I) = QW_1(I) + CER1P5M*( QW_1(I) - QS(I) )               SCREEN7A.158    
          ENDIF                                                            SCREEN7A.159    
        ENDDO                                                              SCREEN7A.160    
                                                                           SCREEN7A.161    
        DO L=LAND1,LAND1+LAND_PTS-1                                        SCREEN7A.162    
          I = LAND_INDEX(L)                                                SCREEN7A.163    
          PSTAR_LAND(L) = PSTAR(I)                                         SCREEN7A.164    
        ENDDO                                                              SCREEN7A.165    
                                                                           SCREEN7A.166    
        DO N=1,NTYPE                                                       SCREEN7A.167    
          CALL QSAT(QS_TILE(LAND1),TSTAR_TILE(LAND1,N),                    SCREEN7A.168    
     &              PSTAR_LAND(LAND1),LAND_PTS)                            SCREEN7A.169    
          DO J=1,TILE_PTS(N)                                               SCREEN7A.170    
            L = TILE_INDEX(J,N)                                            SCREEN7A.171    
            I = LAND_INDEX(L)                                              SCREEN7A.172    
            CER1P5M = RESFT(L,N)*(CHR1P5M(L,N) - 1.)                       SCREEN7A.173    
            Q = QW_1(I) + CER1P5M*( QW_1(I) - QS_TILE(L) )                 SCREEN7A.174    
            Q1P5M(I) = Q1P5M(I) + TILE_FRAC(L,N)*Q                         SCREEN7A.175    
          ENDDO                                                            SCREEN7A.176    
        ENDDO                                                              SCREEN7A.177    
                                                                           SCREEN7A.178    
      ENDIF                                                                SCREEN7A.179    
                                                                           SCREEN7A.180    
      RETURN                                                               SCREEN7A.181    
      END                                                                  SCREEN7A.182    
*ENDIF                                                                     SCREEN7A.183