*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.65     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               OVMXR3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13637  
C                                                                          GTS2F400.13638  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13639  
C restrictions as set forth in the contract.                               GTS2F400.13640  
C                                                                          GTS2F400.13641  
C                Meteorological Office                                     GTS2F400.13642  
C                London Road                                               GTS2F400.13643  
C                BRACKNELL                                                 GTS2F400.13644  
C                Berkshire UK                                              GTS2F400.13645  
C                RG12 2SZ                                                  GTS2F400.13646  
C                                                                          GTS2F400.13647  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13648  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13649  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13650  
C Modelling at the above address.                                          GTS2F400.13651  
C ******************************COPYRIGHT******************************    GTS2F400.13652  
C                                                                          GTS2F400.13653  
!+ Subroutine to find maximally overlapped energy transfer coefficients.   ADB1F401.756    
!                                                                          OVMXR3A.4      
! Method:                                                                  OVMXR3A.5      
!       Straightforward.                                                   OVMXR3A.6      
!                                                                          OVMXR3A.7      
! Current Owner of Code: J. M. Edwards                                     OVMXR3A.8      
!                                                                          OVMXR3A.9      
! History:                                                                 OVMXR3A.10     
!       Version         Date                    Comment                    OVMXR3A.11     
!       4.0             27-07-95                Original Code              OVMXR3A.12     
!                                               (J. M. Edwards)            OVMXR3A.13     
!       4.1             17-05-96                Add code for new           ADB1F401.757    
!                                               solvers.                   ADB1F401.758    
!       4.5             18-05-98                Reference to obsolete      ADB1F405.455    
!                                               solvers removed.           ADB1F405.456    
!                                               (J. M. Edwards)            ADB1F405.457    
!                                                                          OVMXR3A.14     
! Description of Code:                                                     OVMXR3A.15     
!   FORTRAN 77  with extensions listed in documentation.                   OVMXR3A.16     
!                                                                          OVMXR3A.17     
!- ---------------------------------------------------------------------   OVMXR3A.18     

      SUBROUTINE OVERLAP_MIX_RANDOM(N_PROFILE, N_LAYER, N_CLOUD_TOP         1OVMXR3A.19     
     &   , ISOLIR, I_SOLVER                                                OVMXR3A.20     
     &   , W_CLOUD, W_FREE                                                 OVMXR3A.21     
     &   , CLOUD_OVERLAP                                                   OVMXR3A.22     
     &   , NPD_PROFILE, NPD_LAYER                                          OVMXR3A.23     
     &   )                                                                 OVMXR3A.24     
!                                                                          OVMXR3A.25     
!                                                                          OVMXR3A.26     
!                                                                          OVMXR3A.27     
      IMPLICIT NONE                                                        OVMXR3A.28     
!                                                                          OVMXR3A.29     
!                                                                          OVMXR3A.30     
!     SIZES OF DUMMY ARRAYS.                                               OVMXR3A.31     
      INTEGER   !, INTENT(IN)                                              OVMXR3A.32     
     &     NPD_PROFILE                                                     OVMXR3A.33     
!             MAXIMUM NUMBER OF PROFILES                                   OVMXR3A.34     
     &   , NPD_LAYER                                                       OVMXR3A.35     
!             MAXIMUM NUMBER OF LAYERS                                     OVMXR3A.36     
!                                                                          OVMXR3A.37     
!     INCLUDE COMDECKS.                                                    OVMXR3A.38     
*CALL DIMFIX3A                                                             OVMXR3A.39     
*CALL SPCRG3A                                                              OVMXR3A.40     
*CALL SOLVER3A                                                             OVMXR3A.41     
*CALL CLCFPT3A                                                             OVMXR3A.42     
!                                                                          OVMXR3A.43     
!     DUMMY ARGUMENTS.                                                     OVMXR3A.44     
      INTEGER   !, INTENT(IN)                                              OVMXR3A.45     
     &     N_PROFILE                                                       OVMXR3A.46     
!             NUMBER OF PROFILES                                           OVMXR3A.47     
     &   , N_LAYER                                                         OVMXR3A.48     
!             NUMBER OF LAYERS                                             OVMXR3A.49     
     &   , N_CLOUD_TOP                                                     OVMXR3A.50     
!             TOPMOST CLOUDY LAYER                                         OVMXR3A.51     
     &   , ISOLIR                                                          OVMXR3A.52     
!             SPECTRAL REGION                                              OVMXR3A.53     
     &   , I_SOLVER                                                        OVMXR3A.54     
!             SOLVER TO BE USED                                            OVMXR3A.55     
      REAL      !, INTENT(IN)                                              OVMXR3A.56     
     &     W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 OVMXR3A.57     
!             CLOUD AMOUNTS                                                OVMXR3A.58     
!                                                                          OVMXR3A.59     
      REAL      !, INTENT(OUT)                                             OVMXR3A.60     
     &     W_FREE(NPD_PROFILE, NPD_LAYER)                                  OVMXR3A.61     
!             CLOUD-FREE AMOUNTS                                           OVMXR3A.62     
     &   , CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF)     OVMXR3A.63     
!             COEFFICIENTS FOR TRANSFER OF ENERGY AT INTERFACE             OVMXR3A.64     
!                                                                          OVMXR3A.65     
!                                                                          OVMXR3A.66     
!     LOCAL ARGUMENTS.                                                     OVMXR3A.67     
      INTEGER                                                              OVMXR3A.68     
     &     I                                                               OVMXR3A.69     
     &   , L                                                               OVMXR3A.70     
!                                                                          OVMXR3A.71     
!                                                                          OVMXR3A.72     
!     SET THE FREE FRACTIONS IN EACH LAYER.                                OVMXR3A.73     
      DO I=1, N_CLOUD_TOP-1                                                OVMXR3A.74     
         DO L=1, N_PROFILE                                                 OVMXR3A.75     
            W_FREE(L, I)=1.0E+00                                           OVMXR3A.76     
         ENDDO                                                             OVMXR3A.77     
      ENDDO                                                                OVMXR3A.78     
      DO I=N_CLOUD_TOP, N_LAYER                                            OVMXR3A.79     
         DO L=1, N_PROFILE                                                 OVMXR3A.80     
            W_FREE(L, I)=1.0E+00-W_CLOUD(L, I)                             OVMXR3A.81     
         ENDDO                                                             OVMXR3A.82     
      ENDDO                                                                OVMXR3A.83     
!                                                                          OVMXR3A.84     
!     EVALUATE THE EXTENT OF OVERLAP BETWEEN LAYERS OF CLOUD               OVMXR3A.85     
!     AT THE INTERFACE BETWEEN THE ITH AND (I+1)ST LAYER ON THE            OVMXR3A.86     
!     ASSUMPTION OF RANDOM OVERLAP BETWEEN ADJACENT LAYERS.                OVMXR3A.87     
!     THE TOP AND BOTTOM BOUNDARIES ARE EXCEPTIONAL.                       OVMXR3A.88     
!                                                                          OVMXR3A.89     
!     IN THE SOLAR REGION COEFFICIENTS FOR DOWNWARD COUPLING OF THE        OVMXR3A.90     
!     FLUXES ARE REQUIRED. THESE COEFFICIENTS ARE ALSO NEEDED FOR          OVMXR3A.91     
!     INFRA-RED CALCULATIONS WITH APPROXIMATE SCATTERING.                  OVMXR3A.92     
!                                                                          OVMXR3A.93     
      IF ( (I_SOLVER.EQ.IP_SOLVER_MIX_DIRECT).OR.                          ADB1F405.458    
     &     (ISOLIR.EQ.IP_SOLAR).OR.                                        ADB1F401.761    
     &     ( (ISOLIR.EQ.IP_INFRA_RED).AND.                                 OVMXR3A.95     
     &       (I_SOLVER.EQ.IP_SOLVER_MIX_APP_SCAT) ) ) THEN                 ADB1F405.459    
!                                                                          OVMXR3A.98     
         DO I=N_CLOUD_TOP-1, N_LAYER-1                                     OVMXR3A.99     
            DO L=1, N_PROFILE                                              OVMXR3A.100    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GFF)=W_FREE(L, I+1)           OVMXR3A.101    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GFC)=W_CLOUD(L, I+1)          OVMXR3A.102    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GCF)=W_FREE(L, I+1)           OVMXR3A.103    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GCC)=W_CLOUD(L, I+1)          OVMXR3A.104    
            ENDDO                                                          OVMXR3A.105    
         ENDDO                                                             OVMXR3A.106    
!                                                                          OVMXR3A.107    
         DO L=1, N_PROFILE                                                 OVMXR3A.108    
!           BOTTOM BOUNDARY:                                               OVMXR3A.109    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GFF)=1.0E+00               OVMXR3A.110    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GFC)=0.0E+00               OVMXR3A.111    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GCF)=1.0E+00               OVMXR3A.112    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GCC)=0.0E+00               OVMXR3A.113    
         ENDDO                                                             OVMXR3A.114    
!                                                                          OVMXR3A.115    
      ENDIF                                                                OVMXR3A.116    
!                                                                          OVMXR3A.117    
!     WITH APPROXIMATE SCATTERING IN THE LONGWAVE THE CORRESPONDING        OVMXR3A.118    
!     UPWARD COEFFICIENTS ARE NEEDED.                                      OVMXR3A.119    
!                                                                          OVMXR3A.120    
      IF ( (I_SOLVER.EQ.IP_SOLVER_MIX_DIRECT).OR.                          ADB1F405.460    
     &     ( (ISOLIR.EQ.IP_INFRA_RED).AND.                                 ADB1F401.764    
     &       (I_SOLVER.EQ.IP_SOLVER_MIX_APP_SCAT) ) ) THEN                 ADB1F405.461    
!                                                                          OVMXR3A.124    
         DO L=1, N_PROFILE                                                 OVMXR3A.125    
!           TOP CLOUDY BOUNDARY:                                           OVMXR3A.126    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BFF)=1.0E+00         OVMXR3A.127    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BFC)=1.0E+00         OVMXR3A.128    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BCF)=0.0E+00         OVMXR3A.129    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BCC)=0.0E+00         OVMXR3A.130    
         ENDDO                                                             OVMXR3A.131    
!                                                                          OVMXR3A.132    
         DO I=N_CLOUD_TOP, N_LAYER                                         OVMXR3A.133    
            DO L=1, N_PROFILE                                              OVMXR3A.134    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BFF)=W_FREE(L, I)             OVMXR3A.135    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BFC)=W_FREE(L, I)             OVMXR3A.136    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BCF)=W_CLOUD(L, I)            OVMXR3A.137    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BCC)=W_CLOUD(L, I)            OVMXR3A.138    
            ENDDO                                                          OVMXR3A.139    
         ENDDO                                                             OVMXR3A.140    
      ENDIF                                                                OVMXR3A.141    
!                                                                          OVMXR3A.142    
!                                                                          OVMXR3A.143    
      IF (I_SOLVER.EQ.IP_SOLVER_MIX_11) THEN                               ADB1F405.462    
!                                                                          OVMXR3A.176    
         DO L=1, N_PROFILE                                                 OVMXR3A.177    
!                                                                          OVMXR3A.178    
!           TOP BOUNDARY:                                                  OVMXR3A.179    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_GM)=0.0E+00          OVMXR3A.180    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_GP)                  OVMXR3A.181    
     &         =2.0E+00-4.0E+00*W_CLOUD(L, N_CLOUD_TOP)                    OVMXR3A.182    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BM)=0.0E+00          OVMXR3A.183    
            CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BP)=2.0E+00          OVMXR3A.184    
!                                                                          OVMXR3A.185    
!           BOTTOM BOUNDARY:                                               OVMXR3A.186    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GM)=0.0E+00                OVMXR3A.187    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GP)=2.0E+00                OVMXR3A.188    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_BM)=0.0E+00                OVMXR3A.189    
            CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_BP)                        OVMXR3A.190    
     &         =2.0E+00-4.0E+00*W_CLOUD(L, N_LAYER)                        OVMXR3A.191    
!                                                                          OVMXR3A.192    
         ENDDO                                                             OVMXR3A.193    
!                                                                          OVMXR3A.194    
         DO I=N_CLOUD_TOP, N_LAYER-1                                       OVMXR3A.195    
            DO L=1, N_PROFILE                                              OVMXR3A.196    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GM)=0.0E+00                   OVMXR3A.197    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_GP)                           OVMXR3A.198    
     &            =2.0E+00-4.0E+00*W_CLOUD(L, I+1)                         OVMXR3A.199    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BM)=0.0E+00                   OVMXR3A.200    
               CLOUD_OVERLAP(L, I, IP_CLOVLP_BP)                           OVMXR3A.201    
     &            =2.0E+00-4.0E+00*W_CLOUD(L, I)                           OVMXR3A.202    
            ENDDO                                                          OVMXR3A.203    
         ENDDO                                                             OVMXR3A.204    
!                                                                          OVMXR3A.205    
!                                                                          OVMXR3A.206    
      ENDIF                                                                OVMXR3A.207    
!                                                                          OVMXR3A.208    
!                                                                          OVMXR3A.209    
!                                                                          OVMXR3A.210    
      RETURN                                                               OVMXR3A.211    
      END                                                                  OVMXR3A.212    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            OVMXR3A.213    
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.66