*IF DEF,A01_3A                                                             CLLVD3A.2      
C *****************************COPYRIGHT******************************     CLLVD3A.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    CLLVD3A.4      
C                                                                          CLLVD3A.5      
C Use, duplication or disclosure of this code is subject to the            CLLVD3A.6      
C restrictions as set forth in the contract.                               CLLVD3A.7      
C                                                                          CLLVD3A.8      
C                Meteorological Office                                     CLLVD3A.9      
C                London Road                                               CLLVD3A.10     
C                BRACKNELL                                                 CLLVD3A.11     
C                Berkshire UK                                              CLLVD3A.12     
C                RG12 2SZ                                                  CLLVD3A.13     
C                                                                          CLLVD3A.14     
C If no contract has been raised with this copy of the code, the use,      CLLVD3A.15     
C duplication or disclosure of it is strictly prohibited.  Permission      CLLVD3A.16     
C to do so must first be obtained in writing from the Head of Numerical    CLLVD3A.17     
C Modelling at the above address.                                          CLLVD3A.18     
C ******************************COPYRIGHT******************************    CLLVD3A.19     
!+ Subroutine to calculate an observed effective radius.                   CLLVD3A.20     
!                                                                          CLLVD3A.21     
! Purpose:                                                                 CLLVD3A.22     
!   An effective radius as observed from above the cloud-top is            CLLVD3A.23     
!   calculated.                                                            CLLVD3A.24     
!                                                                          CLLVD3A.25     
! Method:                                                                  CLLVD3A.26     
!   For each type of cloud containing water in any layer the effective     CLLVD3A.27     
!   radius is weighted with the product of the area of the cloud and the   CLLVD3A.28     
!   probability that light emitted from the cloud reaches the observing    CLLVD3A.29     
!   instrument.                                                            CLLVD3A.30     
!                                                                          CLLVD3A.31     
! Current Owner of Code: J. M. Edwards                                     CLLVD3A.32     
!                                                                          CLLVD3A.33     
! History:                                                                 CLLVD3A.34     
!       Version         Date                    Comment                    CLLVD3A.35     
!       4.4             24-01-97                Original Code              CLLVD3A.36     
!                                               (J. M. Edwards)            CLLVD3A.37     
!                                                                          CLLVD3A.38     
! Description of Code:                                                     CLLVD3A.39     
!   FORTRAN 77  with extensions listed in documentation.                   CLLVD3A.40     
!                                                                          CLLVD3A.41     
!- ---------------------------------------------------------------------   CLLVD3A.42     

      SUBROUTINE R2_CLOUD_LEVEL_DIAG(IERR, N_PROFILE, NLEVS, NCLDS          1,2CLLVD3A.43     
     &   , I_GATHER                                                        CLLVD3A.44     
     &   , I_CLOUD, I_CLOUD_REPRESENTATION                                 CLLVD3A.45     
     &   , W_CLOUD, FRAC_CLOUD                                             CLLVD3A.46     
     &   , CONDENSED_MIX_RATIO, CONDENSED_RE                               CLLVD3A.47     
     &   , L_OBSERVED_RE, WEIGHTED_RE, SUM_WEIGHT_RE                       CLLVD3A.48     
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER                               CLLVD3A.49     
     &   )                                                                 CLLVD3A.50     
!                                                                          CLLVD3A.51     
!                                                                          CLLVD3A.52     
!                                                                          CLLVD3A.53     
      IMPLICIT NONE                                                        CLLVD3A.54     
!                                                                          CLLVD3A.55     
!                                                                          CLLVD3A.56     
!     COMDECKS INCLUDED.                                                   CLLVD3A.57     
*CALL ERROR3A                                                              CLLVD3A.58     
*CALL STDIO3A                                                              CLLVD3A.59     
*CALL DIMFIX3A                                                             CLLVD3A.60     
*CALL CLDCMP3A                                                             CLLVD3A.61     
*CALL CLDTYP3A                                                             CLLVD3A.62     
*CALL CLREPP3A                                                             CLLVD3A.63     
*CALL CLSCHM3A                                                             CLLVD3A.64     
!                                                                          CLLVD3A.65     
!                                                                          CLLVD3A.66     
      INTEGER   !, INTENT(OUT)                                             CLLVD3A.67     
     &     IERR                                                            CLLVD3A.68     
!             ERROR FLAG                                                   CLLVD3A.69     
!                                                                          CLLVD3A.70     
!     DIMENSIONS OF ARRAYS:                                                CLLVD3A.71     
      INTEGER   !, INTENT(IN)                                              CLLVD3A.72     
     &     NPD_FIELD                                                       CLLVD3A.73     
!             SIZE OF ARRAY OF ARRAYS PASSED FROM MAIN CODE                CLLVD3A.74     
     &   , NPD_PROFILE                                                     CLLVD3A.75     
!             SIZE OF ARRAY OF PROFILES                                    CLLVD3A.76     
     &   , NPD_LAYER                                                       CLLVD3A.77     
!             MAXIMUM NUMBER OF LAYERS                                     CLLVD3A.78     
!                                                                          CLLVD3A.79     
!     ACTUAL SIZES USED:                                                   CLLVD3A.80     
      INTEGER   !, INTENT(IN)                                              CLLVD3A.81     
     &     N_PROFILE                                                       CLLVD3A.82     
!             NUMBER OF PROFILES                                           CLLVD3A.83     
     &   , NLEVS                                                           CLLVD3A.84     
!             NUMBER OF ATMOSPHERIC LAYERS                                 CLLVD3A.85     
     &   , NCLDS                                                           CLLVD3A.86     
!             NUMBER OF CLOUDY LEVELS                                      CLLVD3A.87     
     &   , I_GATHER(NPD_FIELD)                                             CLLVD3A.88     
!             LIST OF GATHERED POINTS                                      CLLVD3A.89     
!                                                                          CLLVD3A.90     
!     LOGICAL FLAGS FOR DIAGNOSTICS                                        CLLVD3A.91     
      LOGICAL   !, INTENT(IN)                                              ADB1F405.1004   
     &     L_OBSERVED_RE                                                   CLLVD3A.93     
!             FLAG TO ENABLE DIAGNOSIS OF EFFECTIVE RADIUS SEEN FROM       CLLVD3A.94     
!             SPACE (N.B. THE ROUTINE IS AT PRESENT CALLED ONLY IF         CLLVD3A.95     
!             THIS IS TRUE, BUT ITS PRESENCE HERE ALLOWS FOR POSSIBLE      CLLVD3A.96     
!             FUTURE EXTENSION OF THE ROUTINE).                            CLLVD3A.97     
!                                                                          CLLVD3A.98     
!     REPRESENTATION OF CLOUDS                                             CLLVD3A.99     
      INTEGER   !, INTENT(IN)                                              CLLVD3A.100    
     &     I_CLOUD_REPRESENTATION                                          CLLVD3A.101    
!             REPRESENTATION OF CLOUDS                                     CLLVD3A.102    
     &   , I_CLOUD                                                         CLLVD3A.103    
!             TREATMENT OF OVERLAPS                                        CLLVD3A.104    
!                                                                          CLLVD3A.105    
      REAL      !, INTENT(IN)                                              CLLVD3A.106    
     &     W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 CLLVD3A.107    
!             TOTAL AMOUNTS OF CLOUD                                       CLLVD3A.108    
     &   , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              CLLVD3A.109    
!             FRACTION OF TYPES OF CLOUD                                   CLLVD3A.110    
     &   , CONDENSED_RE(NPD_PROFILE, 0: NPD_LAYER, NPD_CLOUD_COMPONENT)    CLLVD3A.111    
!             EFFECTIVE RADII OF CLOUDY COMPONENTS                         CLLVD3A.112    
     &   , CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER                   CLLVD3A.113    
     &      , NPD_CLOUD_COMPONENT)                                         CLLVD3A.114    
!             MASS MIXING RATIOS OF CONDENSED COMPONENTS                   CLLVD3A.115    
!                                                                          CLLVD3A.116    
      REAL      !, INTENT(OUT)                                             CLLVD3A.117    
     &     WEIGHTED_RE(NPD_FIELD)                                          CLLVD3A.118    
!             WEIGHTED SUM OF EFFECTIVE RADIUS AND WEIGHTING FUNCTION      CLLVD3A.119    
     &   , SUM_WEIGHT_RE(NPD_FIELD)                                        CLLVD3A.120    
!             SUM OF WEIGHTS FOR EFFECTIVE RADIUS                          CLLVD3A.121    
!                                                                          CLLVD3A.122    
!                                                                          CLLVD3A.123    
!                                                                          CLLVD3A.124    
!     LOCAL VARIABLES:                                                     CLLVD3A.125    
      INTEGER                                                              CLLVD3A.126    
     &     I                                                               CLLVD3A.127    
!             LOOP VARIABLE                                                CLLVD3A.128    
     &   , L                                                               CLLVD3A.129    
!             LOOP VARIABLE                                                CLLVD3A.130    
     &   , I_INV                                                           CLLVD3A.131    
!             INVERTED LOOP INDEX                                          CLLVD3A.132    
      REAL                                                                 CLLVD3A.133    
     &     TRANS_OVERLYING_SPACE(NPD_PROFILE)                              CLLVD3A.134    
!             PROBABILITY OF A PHOTON IN CLEAR AIR IN THE LEVEL ABOVE      CLLVD3A.135    
!             THE CURRENT ONE REACHING SPACE                               CLLVD3A.136    
     &   , AREA_EXPOSED(NPD_PROFILE)                                       CLLVD3A.137    
!             TOTAL AREA OF CLOUD IN THE CURRENT LAYER EXPOSED TO          CLLVD3A.138    
!             CLEAR AIR IN THE LAYER ABOVE                                 CLLVD3A.139    
     &   , AREA_EXPOSED_ST(NPD_PROFILE)                                    CLLVD3A.140    
!             TOTAL AREA OF STRATIFORM CLOUD IN THE CURRENT LAYER          CLLVD3A.141    
!             EXPOSED TO CLEAR AIR IN THE LAYER ABOVE                      CLLVD3A.142    
     &   , AREA_EXPOSED_CNV(NPD_PROFILE)                                   CLLVD3A.143    
!             TOTAL AREA OF CONVECTIVE CLOUD IN THE CURRENT LAYER          CLLVD3A.144    
!             EXPOSED TO CLEAR AIR IN THE LAYER ABOVE                      CLLVD3A.145    
     &   , AREA_CLEAR_ABOVE(NPD_PROFILE)                                   CLLVD3A.146    
!             AREA OF THE CLEAR SKY REGION IN THE LAYER ABOVE              CLLVD3A.147    
     &   , AREA_STRAT(NPD_PROFILE)                                         CLLVD3A.148    
!             AREA OF STRATIFORM CLOUD IN THE CURRENT LAYER                CLLVD3A.149    
     &   , AREA_STRAT_ABOVE(NPD_PROFILE)                                   CLLVD3A.150    
!             AREA OF STRATIFORM CLOUD IN THE LAYER ABOVE                  CLLVD3A.151    
     &   , AREA_CONV(NPD_PROFILE)                                          CLLVD3A.152    
!             AREA OF CONVECTIVE CLOUD IN THE CURRENT LAYER                CLLVD3A.153    
     &   , AREA_CONV_ABOVE(NPD_PROFILE)                                    CLLVD3A.154    
!             AREA OF CONVECTIVE CLOUD IN THE LAYER ABOVE                  CLLVD3A.155    
     &   , AREA_CLEAR_CLEAR(NPD_PROFILE)                                   CLLVD3A.156    
!             AREA OF BOUNDARY WHERE CLEAR SKY OVERLIES CLEAR SKY          CLLVD3A.157    
     &   , AREA_CLEAR(NPD_PROFILE)                                         CLLVD3A.158    
!             AREA OF CLEAR SKY IN THE CURRENT LAYER                       CLLVD3A.159    
!             DOWN TO A LEVEL                                              CLLVD3A.160    
     &   , AREA_UNCORRELATED(NPD_PROFILE)                                  CLLVD3A.161    
!             UNCORRELATED REGION ON THE INTERFACE                         CLLVD3A.162    
     &   , WEIGHTED_RE_G(NPD_PROFILE)                                      CLLVD3A.163    
!             WEIGHTED SUM OF EFFECTIVE RADIUS AND WEIGHTING FUNCTION      CLLVD3A.164    
     &   , SUM_WEIGHT_RE_G(NPD_PROFILE)                                    CLLVD3A.165    
!             SUM OF WEIGHTS FOR EFFECTIVE RADIUS                          CLLVD3A.166    
!                                                                          CLLVD3A.167    
!     VARIABLES FOR GATHERING                                              CLLVD3A.168    
      INTEGER                                                              CLLVD3A.169    
     &     N_LIST                                                          CLLVD3A.170    
!             NUMBER OF POINTS IN LIST                                     CLLVD3A.171    
     &   , L_LIST(NPD_PROFILE)                                             CLLVD3A.172    
!             INDICES OF POINTS IN LIST                                    CLLVD3A.173    
!                                                                          CLLVD3A.174    
!     INDICATOR FUNCTION                                                   CLLVD3A.175    
      REAL                                                                 CLLVD3A.176    
     &     CHI_CNV(NPD_PROFILE)                                            CLLVD3A.177    
!             CONVECTIVE INDICATOR FUNCTION                                CLLVD3A.178    
     &   , CHI_ST(NPD_PROFILE)                                             CLLVD3A.179    
!             STRATIFORM INDICATOR FUNCTION                                CLLVD3A.180    
!                                                                          CLLVD3A.181    
!                                                                          CLLVD3A.182    
!                                                                          CLLVD3A.183    
!                                                                          CLLVD3A.184    
!     INITIALIZATION OF DIAGNOSTIC FIELDS.                                 CLLVD3A.185    
!                                                                          CLLVD3A.186    
      IF (L_OBSERVED_RE) THEN                                              CLLVD3A.187    
         CALL R2_ZERO_1D(NPD_PROFILE, WEIGHTED_RE)                         CLLVD3A.188    
         CALL R2_ZERO_1D(NPD_PROFILE, SUM_WEIGHT_RE)                       CLLVD3A.189    
         DO L=1, N_PROFILE                                                 CLLVD3A.190    
            WEIGHTED_RE_G(L)=0.0E+00                                       CLLVD3A.191    
            SUM_WEIGHT_RE_G(L)=0.0E+00                                     CLLVD3A.192    
         ENDDO                                                             CLLVD3A.193    
      ENDIF                                                                CLLVD3A.194    
!                                                                          CLLVD3A.195    
!     INITIALIZE THE TRANSMISION ABOVE CLOUDS.                             CLLVD3A.196    
      DO L=1, N_PROFILE                                                    CLLVD3A.197    
         TRANS_OVERLYING_SPACE(L)=1.0E+00                                  CLLVD3A.198    
         AREA_CLEAR_ABOVE(L)=1.0E+00                                       CLLVD3A.199    
      ENDDO                                                                CLLVD3A.200    
      IF (L_OBSERVED_RE.AND.(I_CLOUD.EQ.IP_CLOUD_TRIPLE)) THEN             CLLVD3A.201    
         DO L=1, N_PROFILE                                                 CLLVD3A.202    
            AREA_STRAT_ABOVE(L)=0.0E+00                                    CLLVD3A.203    
            AREA_CONV_ABOVE(L)=0.0E+00                                     CLLVD3A.204    
         ENDDO                                                             CLLVD3A.205    
      ENDIF                                                                CLLVD3A.206    
!                                                                          CLLVD3A.207    
!     STEP DOWN THROUGH THE ATMOSPHERE CALCULATING CONTRIBUTIONS TO        CLLVD3A.208    
!     THE DIAGNOSTICS AND SUBSEQUENTLY ALLOWING FOR TRANSMISSION           CLLVD3A.209    
!     THROUGH THE CURRENT LAYER.                                           CLLVD3A.210    
!                                                                          CLLVD3A.211    
      DO I=NCLDS, 1, -1                                                    CLLVD3A.212    
         I_INV=NLEVS+1-I                                                   CLLVD3A.213    
!                                                                          CLLVD3A.214    
         DO L=1, N_PROFILE                                                 CLLVD3A.215    
            AREA_CLEAR(L)=1.0E+00-W_CLOUD(L, I_INV)                        CLLVD3A.216    
         ENDDO                                                             CLLVD3A.217    
!                                                                          CLLVD3A.218    
!        CALCULATE THE LOCAL AREA OF CLOUD RADIATING INTO CLEAR AIR.       CLLVD3A.219    
         IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN                          CLLVD3A.220    
            DO L=1, N_PROFILE                                              CLLVD3A.221    
               AREA_EXPOSED(L)=W_CLOUD(L, I_INV)                           CLLVD3A.222    
     &            *AREA_CLEAR_ABOVE(L)                                     CLLVD3A.223    
            ENDDO                                                          CLLVD3A.224    
         ELSE IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR.                       CLLVD3A.225    
     &             (I_CLOUD.EQ.IP_CLOUD_TRIPLE) ) THEN                     CLLVD3A.226    
            DO L=1, N_PROFILE                                              CLLVD3A.227    
               AREA_EXPOSED(L)=MAX(0.0E+00, (W_CLOUD(L, I_INV)             CLLVD3A.228    
     &            +AREA_CLEAR_ABOVE(L)-1.0E+00))                           CLLVD3A.229    
            ENDDO                                                          CLLVD3A.230    
         ENDIF                                                             CLLVD3A.231    
!                                                                          CLLVD3A.232    
!                                                                          CLLVD3A.233    
!                                                                          CLLVD3A.234    
!                                                                          CLLVD3A.235    
         IF (L_OBSERVED_RE) THEN                                           CLLVD3A.236    
!                                                                          CLLVD3A.237    
!                                                                          CLLVD3A.238    
!                                                                          CLLVD3A.239    
            IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN        CLLVD3A.240    
!                                                                          CLLVD3A.241    
!                                                                          CLLVD3A.242    
               IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR.                      CLLVD3A.243    
     &              (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) ) THEN                CLLVD3A.244    
!                                                                          CLLVD3A.245    
!                 IF THE OVERLAP OF CONVECTIVE CLOUD IS NOT ASSUMED        CLLVD3A.246    
!                 TO BE COHERENT THE OVERALL EXPOSED AREA MAY BE           CLLVD3A.247    
!                 PARTITIONED ACCORDING TO THE FRACTIONAL                  CLLVD3A.248    
!                 CONTRIBUTIONS OF CLOUD IN THE CURRENT LAYER.             CLLVD3A.249    
!                                                                          CLLVD3A.250    
                  DO L=1, N_PROFILE                                        CLLVD3A.251    
                     AREA_EXPOSED_ST(L)=AREA_EXPOSED(L)                    CLLVD3A.252    
     &                  *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT)         CLLVD3A.253    
                     AREA_EXPOSED_CNV(L)=AREA_EXPOSED(L)                   CLLVD3A.254    
     &                  *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CONV)          CLLVD3A.255    
                  ENDDO                                                    CLLVD3A.256    
!                                                                          CLLVD3A.257    
               ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN                   CLLVD3A.258    
!                                                                          CLLVD3A.259    
!                 HERE, THE DIFFERENT TYPES OF CLOUDS OVERLAP              CLLVD3A.260    
!                 COHERENTLY SO STRATIFORM CLOUD WILL BE EXPOSED           CLLVD3A.261    
!                 ONLY IF THERE IS LESS STRATIFORM CLOUD IN THE            CLLVD3A.262    
!                 LAYER ABOVE AND MORE CLEAR AIR IN THE LAYER ABOVE:       CLLVD3A.263    
!                 UNDER THESE CONDITIONS THE NON-CORRELATED AREAS          CLLVD3A.264    
!                 OVERLAP RANDOMLY.                                        CLLVD3A.265    
!                                                                          CLLVD3A.266    
                  DO L=1, N_PROFILE                                        CLLVD3A.267    
                     AREA_STRAT(L)=W_CLOUD(L, I_INV)                       CLLVD3A.268    
     &                  *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT)         CLLVD3A.269    
                     AREA_EXPOSED_ST(L)=MAX(0.0E+00                        CLLVD3A.270    
     &                  , (AREA_STRAT(L)-AREA_STRAT_ABOVE(L)))             CLLVD3A.271    
                     AREA_EXPOSED_ST(L)=MAX(0.0E+00, AREA_EXPOSED_ST(L)    CLLVD3A.272    
     &                  *(AREA_CLEAR_ABOVE(L)-AREA_CLEAR(L)))              CLLVD3A.273    
                     AREA_EXPOSED_CNV(L)                                   CLLVD3A.274    
     &                  =AREA_EXPOSED(L)-AREA_EXPOSED_ST(L)                CLLVD3A.275    
                  ENDDO                                                    CLLVD3A.276    
               ELSE                                                        CLLVD3A.277    
                  WRITE(IU_ERR, '(/A)')                                    CLLVD3A.278    
     &               '*** ERROR: THE DIAGNOSTIC OF OBSERVED RE HAS NOT '   CLLVD3A.279    
     &               //'BEEN IMPLEMENTED WITH THIS OVERLAP OPTION.'        CLLVD3A.280    
                  IERR=I_ERR_FATAL                                         CLLVD3A.281    
                  RETURN                                                   CLLVD3A.282    
               ENDIF                                                       CLLVD3A.283    
!                                                                          CLLVD3A.284    
!              THE INDICATOR FUNCTIONS FOR LIQUID WATER IN                 CLLVD3A.285    
!              CONVECTIVE OR STRAIFORM CLOUDS ARE SET TO 1                 CLLVD3A.286    
!              IF THERE IS ANY LIQUID WATER AND TO 0 OTHERWISE.            CLLVD3A.287    
               DO L=1, N_PROFILE                                           CLLVD3A.288    
                  IF (CONDENSED_MIX_RATIO(1, I_INV, IP_CLCMP_CNV_WATER)    CLLVD3A.289    
     &               .GT.0.0E+00) THEN                                     CLLVD3A.290    
                     CHI_CNV(L)=1.0E+00                                    CLLVD3A.291    
                  ELSE                                                     CLLVD3A.292    
                     CHI_CNV(L)=0.0E+00                                    CLLVD3A.293    
                  ENDIF                                                    CLLVD3A.294    
                  IF (CONDENSED_MIX_RATIO(1, I_INV, IP_CLCMP_ST_WATER)     CLLVD3A.295    
     &               .GT.0.0E+00) THEN                                     CLLVD3A.296    
                     CHI_ST(L)=1.0E+00                                     CLLVD3A.297    
                  ELSE                                                     CLLVD3A.298    
                     CHI_ST(L)=0.0E+00                                     CLLVD3A.299    
                  ENDIF                                                    CLLVD3A.300    
                  CHI_ST(L)=0.0E+00                                        CLLVD3A.301    
               ENDDO                                                       CLLVD3A.302    
!                                                                          CLLVD3A.303    
!              INCLUDE CONTRIBUTIONS FROM CONVECTIVE AND STRATIFORM        CLLVD3A.304    
!              WATER CLOUDS.                                               CLLVD3A.305    
               DO L=1, N_PROFILE                                           CLLVD3A.306    
                  WEIGHTED_RE_G(L)=WEIGHTED_RE_G(L)                        CLLVD3A.307    
     &               +TRANS_OVERLYING_SPACE(L)                             CLLVD3A.308    
     &               *(AREA_EXPOSED_CNV(L)*CHI_CNV(L)                      CLLVD3A.309    
     &               *CONDENSED_RE(L, I_INV, IP_CLCMP_CNV_WATER)           CLLVD3A.310    
     &               +AREA_EXPOSED_ST(L)*CHI_ST(L)                         CLLVD3A.311    
     &               *CONDENSED_RE(L, I_INV, IP_CLCMP_ST_WATER))           CLLVD3A.312    
                  SUM_WEIGHT_RE_G(L)=SUM_WEIGHT_RE_G(L)                    CLLVD3A.313    
     &               +TRANS_OVERLYING_SPACE(L)                             CLLVD3A.314    
     &               *(AREA_EXPOSED_CNV(L)*CHI_CNV(L)                      CLLVD3A.315    
     &               +AREA_EXPOSED_ST(L)*CHI_ST(L))                        CLLVD3A.316    
               ENDDO                                                       CLLVD3A.317    
!                                                                          CLLVD3A.318    
            ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN         CLLVD3A.319    
!                                                                          CLLVD3A.320    
               IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR.                      CLLVD3A.321    
     &              (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) ) THEN                CLLVD3A.322    
!                                                                          CLLVD3A.323    
!                 IF THE OVERLAP OF CONVECTIVE CLOUD IS NOT ASSUMED        CLLVD3A.324    
!                 TO BE COHERENT THE OVERALL EXPOSED AREA MAY BE           CLLVD3A.325    
!                 PARTITIONED ACCORDING TO THE FRACTIONAL                  CLLVD3A.326    
!                 CONTRIBUTIONS OF CLOUD IN THE CURRENT LAYER.             CLLVD3A.327    
!                 THE EXPOSED AREAS INCLUDE ONLY THE PARTS OF THE          CLLVD3A.328    
!                 CLOUDS CONTAINING WATER DROPLETS.                        CLLVD3A.329    
!                                                                          CLLVD3A.330    
                  DO L=1, N_PROFILE                                        CLLVD3A.331    
                     AREA_EXPOSED_ST(L)=AREA_EXPOSED(L)                    CLLVD3A.332    
     &                  *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW)            CLLVD3A.333    
                     AREA_EXPOSED_CNV(L)=AREA_EXPOSED(L)                   CLLVD3A.334    
     &                  *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW)            CLLVD3A.335    
                  ENDDO                                                    CLLVD3A.336    
!                                                                          CLLVD3A.337    
               ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN                   CLLVD3A.338    
!                                                                          CLLVD3A.339    
!                 HERE, THE DIFFERENT TYPES OF CLOUDS OVERLAP              CLLVD3A.340    
!                 COHERENTLY SO STRATIFORM CLOUD WILL BE EXPOSED           CLLVD3A.341    
!                 ONLY IF THERE IS LESS STRATIFORM CLOUD IN THE            CLLVD3A.342    
!                 LAYER ABOVE AND MORE CLEAR AIR IN THE LAYER ABOVE:       CLLVD3A.343    
!                 UNDER THESE CONDITIONS THE NON-CORRELATED AREAS          CLLVD3A.344    
!                 OVERLAP RANDOMLY.                                        CLLVD3A.345    
!                 THE ACTUAL EXPOSED AREAS OF CONVECTIVE OR                CLLVD3A.346    
!                 STRATIFORM CLOUD MUST THEN BE WEIGHTED BY FACTORS        CLLVD3A.347    
!                 REPRESENTING THE LIQUID PORTION OF EACH CLOUD, SINCE     CLLVD3A.348    
!                 NOTHING IS RETRIEVED OVER ICE. (THE HORIZONTAL           CLLVD3A.349    
!                 ARRANGEMENT OF ICE AND WATER WITHIN EITHER TYPE OF       CLLVD3A.350    
!                 CLOUD IS RANDOM).                                        CLLVD3A.351    
!                                                                          CLLVD3A.352    
                  DO L=1, N_PROFILE                                        CLLVD3A.353    
!                                                                          CLLVD3A.354    
                     AREA_STRAT(L)=W_CLOUD(L, I_INV)                       CLLVD3A.355    
     &                  *(FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW)           CLLVD3A.356    
     &                  +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SI))           CLLVD3A.357    
                     AREA_CONV(L)=W_CLOUD(L, I_INV)                        CLLVD3A.358    
     &                  *(FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW)           CLLVD3A.359    
     &                  +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CI))           CLLVD3A.360    
                     AREA_UNCORRELATED(L)=1.0E+00                          CLLVD3A.361    
     &                  -MIN(AREA_CLEAR(L), AREA_CLEAR_ABOVE(L))           CLLVD3A.362    
     &                  -MIN(AREA_STRAT(L), AREA_STRAT_ABOVE(L))           CLLVD3A.363    
     &                  -MIN(AREA_CONV(L), AREA_CONV_ABOVE(L))             CLLVD3A.364    
                     AREA_EXPOSED_ST(L)=MAX(0.0E+00                        CLLVD3A.365    
     &                  , (AREA_STRAT(L)-AREA_STRAT_ABOVE(L)))             CLLVD3A.366    
                     IF (AREA_UNCORRELATED(L).GT.0.0E+00) THEN             CLLVD3A.367    
                        AREA_EXPOSED_ST(L)                                 CLLVD3A.368    
     &                     =MAX(0.0E+00, AREA_EXPOSED_ST(L)                CLLVD3A.369    
     &                     *(AREA_CLEAR_ABOVE(L)-AREA_CLEAR(L)))           CLLVD3A.370    
     &                     /AREA_UNCORRELATED(L)                           CLLVD3A.371    
                     ELSE                                                  CLLVD3A.372    
                        AREA_EXPOSED_ST(L)=0.0E+00                         CLLVD3A.373    
                     ENDIF                                                 CLLVD3A.374    
                     AREA_EXPOSED_CNV(L)                                   CLLVD3A.375    
     &                  =AREA_EXPOSED(L)-AREA_EXPOSED_ST(L)                CLLVD3A.376    
!                                                                          CLLVD3A.377    
                     IF (FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW)            CLLVD3A.378    
     &                  .GT.0.0E+00) THEN                                  CLLVD3A.379    
                        AREA_EXPOSED_CNV(L)=AREA_EXPOSED_CNV(L)            CLLVD3A.380    
     &                     /(1.0E+00                                       CLLVD3A.381    
     &                     +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CI)         CLLVD3A.382    
     &                     /FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW))        CLLVD3A.383    
                     ELSE                                                  CLLVD3A.384    
                        AREA_EXPOSED_CNV(L)=0.0E+00                        CLLVD3A.385    
                     ENDIF                                                 CLLVD3A.386    
!                                                                          CLLVD3A.387    
                     IF (FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW)            CLLVD3A.388    
     &                  .GT.0.0E+00) THEN                                  CLLVD3A.389    
                        AREA_EXPOSED_ST(L)=AREA_EXPOSED_ST(L)              CLLVD3A.390    
     &                     /(1.0E+00                                       CLLVD3A.391    
     &                     +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SI)         CLLVD3A.392    
     &                     /FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW))        CLLVD3A.393    
                     ELSE                                                  CLLVD3A.394    
                        AREA_EXPOSED_ST(L)=0.0E+00                         CLLVD3A.395    
                     ENDIF                                                 CLLVD3A.396    
!                                                                          CLLVD3A.397    
                  ENDDO                                                    CLLVD3A.398    
               ELSE                                                        CLLVD3A.399    
                  WRITE(IU_ERR, '(/A)')                                    CLLVD3A.400    
     &               '*** ERROR: THE DIAGNOSTIC OF OBSERVED RE HAS NOT '   CLLVD3A.401    
     &               //'BEEN IMPLEMENTED WITH THIS OVERLAP OPTION.'        CLLVD3A.402    
                  IERR=I_ERR_FATAL                                         CLLVD3A.403    
                  RETURN                                                   CLLVD3A.404    
               ENDIF                                                       CLLVD3A.405    
!                                                                          CLLVD3A.406    
!                                                                          CLLVD3A.407    
               DO L=1, N_PROFILE                                           CLLVD3A.408    
!                                                                          CLLVD3A.409    
                  WEIGHTED_RE_G(L)=WEIGHTED_RE_G(L)                        CLLVD3A.410    
     &               +TRANS_OVERLYING_SPACE(L)                             CLLVD3A.411    
     &               *(AREA_EXPOSED_CNV(L)                                 CLLVD3A.412    
     &               *CONDENSED_RE(L, I_INV, IP_CLCMP_CNV_WATER)           CLLVD3A.413    
     &               +AREA_EXPOSED_ST(L)                                   CLLVD3A.414    
     &               *CONDENSED_RE(L, I_INV, IP_CLCMP_ST_WATER))           CLLVD3A.415    
                  SUM_WEIGHT_RE_G(L)=SUM_WEIGHT_RE_G(L)                    CLLVD3A.416    
     &               +TRANS_OVERLYING_SPACE(L)                             CLLVD3A.417    
     &               *(AREA_EXPOSED_CNV(L)+AREA_EXPOSED_ST(L))             CLLVD3A.418    
               ENDDO                                                       CLLVD3A.419    
!                                                                          CLLVD3A.420    
            ENDIF                                                          CLLVD3A.421    
!                                                                          CLLVD3A.422    
!                                                                          CLLVD3A.423    
         ENDIF                                                             CLLVD3A.424    
!                                                                          CLLVD3A.425    
!                                                                          CLLVD3A.426    
!                                                                          CLLVD3A.427    
!        ADVANCE THE STORED QUANTITIES REFFERRING TO OVERLYING LAYERS.     CLLVD3A.428    
!                                                                          CLLVD3A.429    
!                                                                          CLLVD3A.430    
!        THE TRANSMISSION TO SPACE CURRENTLY HOLDS THE PROBABILITY THAT    CLLVD3A.431    
!        A PHOTON TRAVELLING UPWARDS IN THE CLEAR AIR IN THE LAYER ABOVE   CLLVD3A.432    
!        WILL ESCAPE TO SPACE WITHOUT ENCOUNTERING A CLOUD. TO ADVANCE     CLLVD3A.433    
!        THIS TO THE CURRENT LAYER IT MUST BE MULTIPLIED BY A FACTOR       CLLVD3A.434    
!        REPRESENTING THE OVERLAP ASSUMPTION AT THE TOP OF THE PRESENT     CLLVD3A.435    
!        LAYER.                                                            CLLVD3A.436    
!                                                                          CLLVD3A.437    
         IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN                          CLLVD3A.438    
!                                                                          CLLVD3A.439    
            DO L=1, N_PROFILE                                              CLLVD3A.440    
               TRANS_OVERLYING_SPACE(L)=TRANS_OVERLYING_SPACE(L)           CLLVD3A.441    
     &            *AREA_CLEAR_ABOVE(L)                                     CLLVD3A.442    
            ENDDO                                                          CLLVD3A.443    
!                                                                          CLLVD3A.444    
         ELSE IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR.                       CLLVD3A.445    
     &             (I_CLOUD.EQ.IP_CLOUD_TRIPLE) ) THEN                     CLLVD3A.446    
!                                                                          CLLVD3A.447    
            DO L=1, N_PROFILE                                              CLLVD3A.448    
               AREA_CLEAR_CLEAR(L)=MIN(AREA_CLEAR(L)                       CLLVD3A.449    
     &            , AREA_CLEAR_ABOVE(L))                                   CLLVD3A.450    
               IF (AREA_CLEAR(L).GT.0.0E+00) THEN                          CLLVD3A.451    
                  TRANS_OVERLYING_SPACE(L)=TRANS_OVERLYING_SPACE(L)        CLLVD3A.452    
     &               *AREA_CLEAR_CLEAR(L)/AREA_CLEAR(L)                    CLLVD3A.453    
               ELSE                                                        CLLVD3A.454    
                  TRANS_OVERLYING_SPACE(L)=0.0E+00                         CLLVD3A.455    
               ENDIF                                                       CLLVD3A.456    
            ENDDO                                                          CLLVD3A.457    
!                                                                          CLLVD3A.458    
         ENDIF                                                             CLLVD3A.459    
!                                                                          CLLVD3A.460    
!        ADVANCE THE AREAS OF CLOUD.                                       CLLVD3A.461    
         DO L=1, N_PROFILE                                                 CLLVD3A.462    
            AREA_CLEAR_ABOVE(L)=AREA_CLEAR(L)                              CLLVD3A.463    
         ENDDO                                                             CLLVD3A.464    
         IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN           CLLVD3A.465    
            DO L=1, N_PROFILE                                              CLLVD3A.466    
               AREA_STRAT_ABOVE(L)=W_CLOUD(L, I_INV)                       CLLVD3A.467    
     &            *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT)               CLLVD3A.468    
            ENDDO                                                          CLLVD3A.469    
         ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN            CLLVD3A.470    
            DO L=1, N_PROFILE                                              CLLVD3A.471    
               AREA_STRAT_ABOVE(L)=AREA_STRAT(L)                           CLLVD3A.472    
               AREA_CONV_ABOVE(L)=AREA_CONV(L)                             CLLVD3A.473    
            ENDDO                                                          CLLVD3A.474    
         ENDIF                                                             CLLVD3A.475    
!                                                                          CLLVD3A.476    
      ENDDO                                                                CLLVD3A.477    
!                                                                          CLLVD3A.478    
!                                                                          CLLVD3A.479    
!                                                                          CLLVD3A.480    
      IF (L_OBSERVED_RE) THEN                                              CLLVD3A.481    
!        SCATTER THE DIAGNOSTICS BACK TO THE OUTPUT ARRAYS AND CONVERT     CLLVD3A.482    
!        TO MICRONS (TO AVOID FIELDS BEING CORRUPTED BY PACKING).          CLLVD3A.483    
         DO L=1, N_PROFILE                                                 CLLVD3A.484    
            WEIGHTED_RE(I_GATHER(L))=1.0E+06*WEIGHTED_RE_G(L)              CLLVD3A.485    
            SUM_WEIGHT_RE(I_GATHER(L))=SUM_WEIGHT_RE_G(L)                  CLLVD3A.486    
         ENDDO                                                             CLLVD3A.487    
      ENDIF                                                                CLLVD3A.488    
!                                                                          CLLVD3A.489    
!                                                                          CLLVD3A.490    
!                                                                          CLLVD3A.491    
      RETURN                                                               CLLVD3A.492    
      END                                                                  CLLVD3A.493    
*ENDIF DEF,A01_3A                                                          CLLVD3A.494