*IF DEF,A03_7A                                                             RADMOSES.2      
C *****************************COPYRIGHT******************************     RADMOSES.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    RADMOSES.4      
C                                                                          RADMOSES.5      
C Use, duplication or disclosure of this code is subject to the            RADMOSES.6      
C restrictions as set forth in the contract.                               RADMOSES.7      
C                                                                          RADMOSES.8      
C                Meteorological Office                                     RADMOSES.9      
C                London Road                                               RADMOSES.10     
C                BRACKNELL                                                 RADMOSES.11     
C                Berkshire UK                                              RADMOSES.12     
C                RG12 2SZ                                                  RADMOSES.13     
C                                                                          RADMOSES.14     
C If no contract has been raised with this copy of the code, the use,      RADMOSES.15     
C duplication or disclosure of it is strictly prohibited.  Permission      RADMOSES.16     
C to do so must first be obtained in writing from the Head of Numerical    RADMOSES.17     
C Modelling at the above address.                                          RADMOSES.18     
C ******************************COPYRIGHT******************************    RADMOSES.19     
!!!   SUBROUTINE RAD_MOSES---------------------------------------------    RADMOSES.20     
!!!                                                                        RADMOSES.21     
!!!  Purpose: Calculate surface radiation fluxes over snow-free land       RADMOSES.22     
!!!           and snow, and adjust atmospheric heating rates between       RADMOSES.23     
!!!           radiation timesteps for MOSES II land surface scheme.        RADMOSES.24     
!!!                                                                        RADMOSES.25     
!!!  Model            Modification history:                                RADMOSES.26     
!!! version  Date                                                          RADMOSES.27     
!!!  4.4     8/97   New deck    Richard Essery                             RADMOSES.28     
!!!                                                                        RADMOSES.29     
!!!---------------------------------------------------------------------   RADMOSES.30     
                                                                           RADMOSES.31     

      SUBROUTINE RAD_MOSES (                                                1RADMOSES.32     
     & P_FIELD,LAND_FIELD,LAND1,LAND_PTS,LAND_INDEX,NLEVS,BL_LEVELS,       RADMOSES.33     
     & AKH,BKH,COS_Z,ALBEDO,ALBSNF,LW_SURF,LW_DT,PSTAR,SW_SURF_NCZ,        RADMOSES.34     
     & SNOW_FRAC,FRAC,TSTAR_RAD,TSTAR_TILE,TIMESTEP,                       RADMOSES.35     
     & T,RAD_NO_SNOW,RAD_SNOW                                              RADMOSES.36     
     & )                                                                   RADMOSES.37     
                                                                           RADMOSES.38     
      IMPLICIT NONE                                                        RADMOSES.39     
                                                                           RADMOSES.40     
*CALL NSTYPES                                                              RADMOSES.41     
                                                                           RADMOSES.42     
      INTEGER                                                              RADMOSES.43     
     & P_FIELD                     ! IN Total number of P-grid points.     RADMOSES.44     
     &,LAND_FIELD                  ! IN Total number of land points.       RADMOSES.45     
     &,LAND_PTS                    ! IN Number of land points processed.   RADMOSES.46     
     &,LAND1                       ! IN First land point to be processed   RADMOSES.47     
     &,LAND_INDEX(LAND_FIELD)      ! IN Index of land points.              RADMOSES.48     
     &,NLEVS                       ! IN Number of atmospheric levels.      RADMOSES.49     
     &,BL_LEVELS                   ! IN Number of boundary layer levels.   RADMOSES.50     
                                                                           RADMOSES.51     
      REAL                                                                 RADMOSES.52     
     & AKH(NLEVS+1)                ! IN Hybrid 'A' for layer interfaces.   RADMOSES.53     
     &,BKH(NLEVS+1)                ! IN Hybrid 'B' for layer interfaces.   RADMOSES.54     
     &,COS_Z(P_FIELD)              ! IN cos ( zenith angle )               RADMOSES.55     
     &,ALBEDO(P_FIELD)             ! IN Gridbox-mean surface albedo.       RADMOSES.56     
     &,ALBSNF(LAND_FIELD)          ! IN Snow-free surface albedo.          RADMOSES.57     
     &,LW_SURF(P_FIELD)            ! IN Net surface LW flux (W/m2).        RADMOSES.58     
     &,LW_DT(P_FIELD,NLEVS)        ! IN LW atmospheric heating rates       RADMOSES.59     
!                                  !    (K/timestep).                      RADMOSES.60     
     &,PSTAR(P_FIELD)              ! IN Surface pressure (Pa).             RADMOSES.61     
     &,SW_SURF_NCZ(P_FIELD)        ! IN Net surface SW flux divided by     RADMOSES.62     
!                                  !    COS_Z (W/m2).                      RADMOSES.63     
     &,SNOW_FRAC(LAND_FIELD)       ! IN Snow-cover fraction.               RADMOSES.64     
     &,FRAC(LAND_FIELD,NTYPE)      ! IN Tile fractions.                    RADMOSES.65     
     &,TSTAR_RAD(P_FIELD)          ! IN Effective radiative surface        RADMOSES.66     
!                                  !    temperature on the last            RADMOSES.67     
!                                  !    radiation timestep (K).            RADMOSES.68     
     &,TSTAR_TILE(LAND_FIELD,NTYPE)! IN Surface tile temperatures (K).     RADMOSES.69     
     &,TIMESTEP                    ! IN Timesetep (s).                     RADMOSES.70     
                                                                           RADMOSES.71     
      REAL                                                                 RADMOSES.72     
     & T(P_FIELD,NLEVS)            ! INOUT Atmospheric temperatures (K).   RADMOSES.73     
                                                                           RADMOSES.74     
      REAL                                                                 RADMOSES.75     
     & RAD_NO_SNOW(P_FIELD)        ! OUT Net surface radiation over        RADMOSES.76     
!                                  !     snow-free land (W/m2).            RADMOSES.77     
     &,RAD_SNOW(P_FIELD)           ! OUT Net surface radiation over        RADMOSES.78     
!                                  !     snow or land-ice (W/m2).          RADMOSES.79     
                                                                           RADMOSES.80     
! Workspace                                                                RADMOSES.81     
      REAL                                                                 RADMOSES.82     
     & SDT(LAND_FIELD)             ! Sum of absolute radiative heating     RADMOSES.83     
!                                  ! rates.                                RADMOSES.84     
     &,TSTAR_RAD_NOW(LAND_FIELD)   ! TSTAR_RAD on this timestep.           RADMOSES.87     
                                                                           RADMOSES.88     
      REAL                                                                 RADMOSES.89     
     & DACON                       ! Used in calculation of heating        RADMOSES.90     
     &,DBCON                       ! rates.                                RADMOSES.91     
                                                                           RADMOSES.92     
      INTEGER                                                              RADMOSES.93     
     & I                           ! Horizontal field index.               RADMOSES.94     
     &,K                           ! Vertical level index.                 RADMOSES.95     
     &,L                           ! Land field index.                     RADMOSES.96     
     &,N                           ! Tile index.                           RADMOSES.97     
                                                                           RADMOSES.98     
*CALL C_G                                                                  RADMOSES.99     
*CALL C_R_CP                                                               RADMOSES.100    
*CALL CSIGMA                                                               RADMOSES.101    
                                                                           RADMOSES.102    
!----------------------------------------------------------------------    RADMOSES.122    
! Add shortwave contribution to net surface radiation fluxes               RADMOSES.123    
!----------------------------------------------------------------------    RADMOSES.124    
! Snow-free land tiles                                                     RADMOSES.125    
      DO L=LAND1,LAND1+LAND_PTS-1                                          RADMOSES.126    
        I = LAND_INDEX(L)                                                  RADMOSES.127    
        RAD_NO_SNOW(I) = (1. - ALBSNF(L)) * SW_SURF_NCZ(I) * COS_Z(I) /    RADMOSES.128    
     &                                                 (1. - ALBEDO(I))    RADMOSES.129    
      ENDDO                                                                RADMOSES.130    
                                                                           RADMOSES.131    
! Snow and land-ice                                                        RADMOSES.132    
      N = NTYPE                                                            RADMOSES.133    
      DO L=LAND1,LAND1+LAND_PTS-1                                          RADMOSES.134    
        I = LAND_INDEX(L)                                                  RADMOSES.135    
        IF ( SNOW_FRAC(L) .GT. 0. ) THEN                                   RADMOSES.136    
          RAD_SNOW(I) = ( SW_SURF_NCZ(I) * COS_Z(I) -                      RADMOSES.137    
     &                      (1. - SNOW_FRAC(L))*RAD_NO_SNOW(I) )           RADMOSES.138    
     &                                                   / SNOW_FRAC(L)    RADMOSES.139    
        ENDIF                                                              RADMOSES.140    
      ENDDO                                                                RADMOSES.141    
                                                                           RADMOSES.142    
!----------------------------------------------------------------------    RADMOSES.143    
! Add longwave contribution to net surface radiation fluxes                RADMOSES.144    
!----------------------------------------------------------------------    RADMOSES.145    
                                                                           RADMOSES.146    
! Snow-free land tiles                                                     RADMOSES.147    
      DO L=LAND1,LAND1+LAND_PTS-1                                          RADMOSES.148    
        I = LAND_INDEX(L)                                                  RADMOSES.149    
        RAD_NO_SNOW(I) = RAD_NO_SNOW(I) + LW_SURF(I)                       RADMOSES.150    
     &                                          + SBCON*TSTAR_RAD(I)**4    RADMOSES.151    
        TSTAR_RAD_NOW(L) = 0.                                              RADMOSES.152    
      ENDDO                                                                RADMOSES.153    
      DO N=1,NTYPE-1                                                       RADMOSES.154    
        DO L=LAND1,LAND1+LAND_PTS-1                                        RADMOSES.155    
          I = LAND_INDEX(L)                                                RADMOSES.156    
          RAD_NO_SNOW(I) = RAD_NO_SNOW(I) -                                RADMOSES.157    
     &                             FRAC(L,N)*SBCON*TSTAR_TILE(L,N)**4      ABX1F405.112    
          TSTAR_RAD_NOW(L) = TSTAR_RAD_NOW(L) + (1. - SNOW_FRAC(L)) *      RADMOSES.159    
     &                                   FRAC(L,N)*TSTAR_TILE(L,N)**4      ABX1F405.113    
        ENDDO                                                              RADMOSES.161    
      ENDDO                                                                RADMOSES.162    
                                                                           RADMOSES.163    
! Snow and land-ice                                                        RADMOSES.164    
      N = NTYPE                                                            RADMOSES.165    
      DO L=LAND1,LAND1+LAND_PTS-1                                          RADMOSES.166    
        I = LAND_INDEX(L)                                                  RADMOSES.167    
        IF ( SNOW_FRAC(L) .GT. 0. ) THEN                                   RADMOSES.168    
          RAD_SNOW(I) = RAD_SNOW(I) + LW_SURF(I) +                         RADMOSES.169    
     &                  SBCON*(TSTAR_RAD(I)**4 - TSTAR_TILE(L,N)**4)       RADMOSES.170    
        ENDIF                                                              RADMOSES.171    
        TSTAR_RAD_NOW(L) = TSTAR_RAD_NOW(L) +                              RADMOSES.172    
     &                                  SNOW_FRAC(L)*TSTAR_TILE(L,N)**4    RADMOSES.173    
      ENDDO                                                                RADMOSES.174    
                                                                           RADMOSES.175    
!----------------------------------------------------------------------    RADMOSES.176    
! Adjust temperatures on boundary layer levels for changes in surface      RADMOSES.177    
! temperature and LW heating rates between radiation timesteps             RADMOSES.178    
!----------------------------------------------------------------------    RADMOSES.179    
                                                                           RADMOSES.180    
      DO L=LAND1,LAND1+LAND_PTS-1                                          RADMOSES.181    
        TSTAR_RAD_NOW(L) = TSTAR_RAD_NOW(L)**0.25                          RADMOSES.183    
      ENDDO                                                                RADMOSES.184    
                                                                           RADMOSES.192    
      DO K=1,BL_LEVELS                                                     RADMOSES.193    
        DACON = (AKH(K) - AKH(K+1))*CP / (G*TIMESTEP)                      RADMOSES.194    
        DBCON = (BKH(K) - BKH(K+1))*CP / (G*TIMESTEP)                      RADMOSES.195    
        DO L=LAND1,LAND1+LAND_PTS-1                                        RADMOSES.196    
          I = LAND_INDEX(L)                                                RADMOSES.197    
          T(I,K) = T(I,K) -                                                RADMOSES.198    
     &                SBCON*(TSTAR_RAD(I)**4 - TSTAR_RAD_NOW(L)**4)        ARE1F405.31     
     &                       / (BL_LEVELS*(DACON + PSTAR(I)*DBCON))        ARE1F405.32     
        ENDDO                                                              RADMOSES.201    
      ENDDO                                                                RADMOSES.202    
                                                                           RADMOSES.203    
      RETURN                                                               RADMOSES.204    
      END                                                                  RADMOSES.205    
*ENDIF                                                                     RADMOSES.206