*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.43     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               MNIRR3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13450  
C                                                                          GTS2F400.13451  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13452  
C restrictions as set forth in the contract.                               GTS2F400.13453  
C                                                                          GTS2F400.13454  
C                Meteorological Office                                     GTS2F400.13455  
C                London Road                                               GTS2F400.13456  
C                BRACKNELL                                                 GTS2F400.13457  
C                Berkshire UK                                              GTS2F400.13458  
C                RG12 2SZ                                                  GTS2F400.13459  
C                                                                          GTS2F400.13460  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13461  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13462  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13463  
C Modelling at the above address.                                          GTS2F400.13464  
C ******************************COPYRIGHT******************************    GTS2F400.13465  
C                                                                          GTS2F400.13466  
!+ Subroutine to calculate the infra-red radiance ignoring scattering.     MNIRR3A.3      
!                                                                          MNIRR3A.4      
! Method:                                                                  MNIRR3A.5      
!       Using the secant of the ray transmission coefficients for          MNIRR3A.6      
!       each layer may be defined and source terms may be calculated.      MNIRR3A.7      
!       The upward and downward radiances are integrated along             MNIRR3A.8      
!       their paths.                                                       MNIRR3A.9      
!                                                                          MNIRR3A.10     
! Current Owner of Code: J. M. Edwards                                     MNIRR3A.11     
!                                                                          MNIRR3A.12     
! History:                                                                 MNIRR3A.13     
!       Version         Date                    Comment                    MNIRR3A.14     
!       4.0             27-07-95                Original Code              MNIRR3A.15     
!                                               (J. M. Edwards)            MNIRR3A.16     
!                                                                          MNIRR3A.17     
! Description of Code:                                                     MNIRR3A.18     
!   FORTRAN 77  with extensions listed in documentation.                   MNIRR3A.19     
!                                                                          MNIRR3A.20     
!- ---------------------------------------------------------------------   MNIRR3A.21     

      SUBROUTINE MONOCHROMATIC_IR_RADIANCE(N_PROFILE, N_LAYER               1MNIRR3A.22     
     &   , L_NET                                                           MNIRR3A.23     
     &   , TAU                                                             MNIRR3A.24     
     &   , RAD_INC_DOWN                                                    MNIRR3A.25     
     &   , DIFF_PLANCK, SOURCE_GROUND, ALBEDO_SURFACE_DIFF                 MNIRR3A.26     
     &   , SECANT_RAY                                                      MNIRR3A.27     
     &   , RADIANCE                                                        MNIRR3A.28     
     &   , NPD_PROFILE, NPD_LAYER                                          MNIRR3A.29     
     &         )                                                           MNIRR3A.30     
!                                                                          MNIRR3A.31     
!                                                                          MNIRR3A.32     
      IMPLICIT NONE                                                        MNIRR3A.33     
!                                                                          MNIRR3A.34     
!                                                                          MNIRR3A.35     
!     SIZES OF DUMMY ARRAYS.                                               MNIRR3A.36     
      INTEGER   !, INTENT(IN)                                              MNIRR3A.37     
     &     NPD_PROFILE                                                     MNIRR3A.38     
!             MAXIMUM NUMBER OF PROFILES                                   MNIRR3A.39     
     &   , NPD_LAYER                                                       MNIRR3A.40     
!             MAXIMUM NUMBER OF LAYERS                                     MNIRR3A.41     
!                                                                          MNIRR3A.42     
!     INCLUDE COMDECKS                                                     MNIRR3A.43     
*CALL PRMCH3A                                                              MNIRR3A.44     
!                                                                          MNIRR3A.45     
!     DUMMY ARGUMENTS.                                                     MNIRR3A.46     
      INTEGER   !, INTENT(IN)                                              MNIRR3A.47     
     &     N_PROFILE                                                       MNIRR3A.48     
!             NUMBER OF PROFILES                                           MNIRR3A.49     
     &   , N_LAYER                                                         MNIRR3A.50     
!             NUMBER OF LAYERS                                             MNIRR3A.51     
      LOGICAL   !, INTENT(IN)                                              MNIRR3A.52     
     &     L_NET                                                           MNIRR3A.53     
!             CALCULATE NET FLUXES.                                        MNIRR3A.54     
      REAL      !, INTENT(IN)                                              MNIRR3A.55     
     &     TAU(NPD_PROFILE, NPD_LAYER)                                     MNIRR3A.56     
!             OPTICAL DEPTHS OF LAYERS                                     MNIRR3A.57     
     &   , RAD_INC_DOWN(NPD_PROFILE)                                       MNIRR3A.58     
!             INCIDENT DOWNWARD RADIANCE                                   MNIRR3A.59     
     &   , SOURCE_GROUND(NPD_PROFILE)                                      MNIRR3A.60     
!             SOURCE FUNCTION OF GROUND                                    MNIRR3A.61     
     &   , ALBEDO_SURFACE_DIFF(NPD_PROFILE)                                MNIRR3A.62     
!             DIFFUSE ALBEDO                                               MNIRR3A.63     
     &   , DIFF_PLANCK(NPD_PROFILE, NPD_LAYER)                             MNIRR3A.64     
!             DIFFERENCE IN PLANCK FUNCTION                                MNIRR3A.65     
     &   , SECANT_RAY                                                      MNIRR3A.66     
!             SECANT OF ANGLE WITH VERTICAL                                MNIRR3A.67     
      REAL      !, INTENT(OUT)                                             MNIRR3A.68     
     &     RADIANCE(NPD_PROFILE, 2*NPD_LAYER+2)                            MNIRR3A.69     
!             DIFFUSE RADIANCE                                             MNIRR3A.70     
!                                                                          MNIRR3A.71     
!     LOCAL VARIABLES.                                                     MNIRR3A.72     
      INTEGER                                                              MNIRR3A.73     
     &     I                                                               MNIRR3A.74     
!             LOOP VARIABLE                                                MNIRR3A.75     
     &   , L                                                               MNIRR3A.76     
!             LOOP VARIABLE                                                MNIRR3A.77     
      REAL                                                                 MNIRR3A.78     
     &     TRANS(NPD_PROFILE, NPD_LAYER)                                   MNIRR3A.79     
!             TRANSMISSIVITIES                                             MNIRR3A.80     
     &   , SOURCE_UP(NPD_PROFILE, NPD_LAYER)                               MNIRR3A.81     
!             UPWARD SOURCE FUNCTION                                       MNIRR3A.82     
     &   , SOURCE_DOWN(NPD_PROFILE, NPD_LAYER)                             MNIRR3A.83     
!             DOWNWARD SOURCE FUNCTION                                     MNIRR3A.84     
!                                                                          MNIRR3A.85     
!                                                                          MNIRR3A.86     
      DO I=1, N_LAYER                                                      MNIRR3A.87     
         DO L=1, N_PROFILE                                                 MNIRR3A.88     
            TRANS(L, I)=EXP(-SECANT_RAY*TAU(L, I))                         MNIRR3A.89     
         ENDDO                                                             MNIRR3A.90     
      ENDDO                                                                MNIRR3A.91     
!                                                                          MNIRR3A.92     
      DO I=1, N_LAYER                                                      MNIRR3A.93     
         DO L=1, N_PROFILE                                                 MNIRR3A.94     
            SOURCE_UP(L, I)=(1.0E+00-TRANS(L, I)+SQRT_TOL_MACHINE)         MNIRR3A.95     
     &         *DIFF_PLANCK(L, I)                                          MNIRR3A.96     
     &         /(SECANT_RAY*TAU(L, I)+SQRT_TOL_MACHINE)                    MNIRR3A.97     
            SOURCE_DOWN(L, I)=-SOURCE_UP(L, I)                             MNIRR3A.98     
         ENDDO                                                             MNIRR3A.99     
      ENDDO                                                                MNIRR3A.100    
!                                                                          MNIRR3A.101    
!     DOWNWARD RADIANCE.                                                   MNIRR3A.102    
      DO L=1, N_PROFILE                                                    MNIRR3A.103    
         RADIANCE(L, 2)=RAD_INC_DOWN(L)                                    MNIRR3A.104    
      ENDDO                                                                MNIRR3A.105    
      DO I=1, N_LAYER                                                      MNIRR3A.106    
         DO L=1, N_PROFILE                                                 MNIRR3A.107    
            RADIANCE(L, 2*I+2)=TRANS(L, I)*RADIANCE(L, 2*I)                MNIRR3A.108    
     &         +SOURCE_DOWN(L, I)                                          MNIRR3A.109    
         ENDDO                                                             MNIRR3A.110    
      ENDDO                                                                MNIRR3A.111    
!                                                                          MNIRR3A.112    
!     UPWARD RADIANCE.                                                     MNIRR3A.113    
      DO L=1, N_PROFILE                                                    MNIRR3A.114    
         RADIANCE(L, 2*N_LAYER+1)=SOURCE_GROUND(L)                         MNIRR3A.115    
     &      +ALBEDO_SURFACE_DIFF(L)*RADIANCE(L, 2*N_LAYER+2)               MNIRR3A.116    
      ENDDO                                                                MNIRR3A.117    
      DO I=N_LAYER, 1, -1                                                  MNIRR3A.118    
         DO L=1, N_PROFILE                                                 MNIRR3A.119    
            RADIANCE(L, 2*I-1)=TRANS(L, I)*RADIANCE(L, 2*I+1)              MNIRR3A.120    
     &         +SOURCE_UP(L, I)                                            MNIRR3A.121    
         ENDDO                                                             MNIRR3A.122    
      ENDDO                                                                MNIRR3A.123    
!                                                                          MNIRR3A.124    
!     REDUCE TO A NET RADIANCE IF THIS IS REQUIRED.                        MNIRR3A.125    
      IF (L_NET) THEN                                                      MNIRR3A.126    
         DO I=0, N_LAYER                                                   MNIRR3A.127    
            DO L=1, N_PROFILE                                              MNIRR3A.128    
               RADIANCE(L, I+1)=RADIANCE(L, 2*I+2)                         MNIRR3A.129    
     &            -RADIANCE(L, 2*I+1)                                      MNIRR3A.130    
            ENDDO                                                          MNIRR3A.131    
         ENDDO                                                             MNIRR3A.132    
      ENDIF                                                                MNIRR3A.133    
!                                                                          MNIRR3A.134    
!                                                                          MNIRR3A.135    
      RETURN                                                               MNIRR3A.136    
      END                                                                  MNIRR3A.137    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            MNIRR3A.138    
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.44