*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.23     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               FILL3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13263  
C                                                                          GTS2F400.13264  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13265  
C restrictions as set forth in the contract.                               GTS2F400.13266  
C                                                                          GTS2F400.13267  
C                Meteorological Office                                     GTS2F400.13268  
C                London Road                                               GTS2F400.13269  
C                BRACKNELL                                                 GTS2F400.13270  
C                Berkshire UK                                              GTS2F400.13271  
C                RG12 2SZ                                                  GTS2F400.13272  
C                                                                          GTS2F400.13273  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13274  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13275  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13276  
C Modelling at the above address.                                          GTS2F400.13277  
C ******************************COPYRIGHT******************************    GTS2F400.13278  
C                                                                          GTS2F400.13279  
!+ Subroutine to set the mixing ratios of gases.                           FILL3A.3      
!                                                                          FILL3A.4      
! Purpose:                                                                 FILL3A.5      
!   The full array of mass mixing ratios of gases is filled.               FILL3A.6      
!                                                                          FILL3A.7      
! Method:                                                                  FILL3A.8      
!   The arrays of supplied mixing ratios are inverted and fed              FILL3A.9      
!   into the array to pass to the radiation code. For well-mixed           FILL3A.10     
!   gases the constant mixing ratios are fed into this array.              FILL3A.11     
!                                                                          FILL3A.12     
! Current Owner of Code: J. M. Edwards                                     FILL3A.13     
!                                                                          FILL3A.14     
! History:                                                                 FILL3A.15     
!       Version         Date                    Comment                    FILL3A.16     
!       4.0             27-07-95                Original Code              FILL3A.17     
!                                               (J. M. Edwards)            FILL3A.18     
!       4.1             10-06-96                Ozone set in lower         ADB1F401.194    
!                                               levels.                    ADB1F401.195    
!                                               (J. M. Edwards)            ADB1F401.196    
!       4.4             26-09-97                Conv. cloud amount on      AJX0F404.57     
!                                               model levs allowed for.    AJX0F404.58     
!                                               J.M.Gregory                AJX0F404.59     
!       4.5             18-05-98                Provision for treating     ADB1F405.12     
!                                               extra (H)(C)FCs            ADB1F405.13     
!                                               included.                  ADB1F405.14     
!                                               (J. M. Edwards)            ADB1F405.15     
!       4.5   April 1998   Option to use interactive soot in place         ALR3F405.67     
!                          of climatological soot.     Luke Robinson.      ALR3F405.68     
!                                                                          FILL3A.19     
! Description of Code:                                                     FILL3A.20     
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.21     
!                                                                          FILL3A.22     
!- ---------------------------------------------------------------------   FILL3A.23     

      SUBROUTINE R2_SET_GAS_MIX_RATIO(IERR                                  2FILL3A.24     
     &   , N_PROFILE, NLEVS, NWET, NOZONE                                  FILL3A.25     
     &   , I_GATHER                                                        FILL3A.26     
     &   , N_ABSORB, TYPE_ABSORB                                           FILL3A.27     
     &   , L_N2O, L_CH4, L_CFC11, L_CFC12, L_O2                            FILL3A.28     
     &   , L_CFC113, L_HCFC22, L_HFC125, L_HFC134A                         ADB1F405.16     
     &   , H2O, CO2, O3, N2O_MIX_RATIO, CH4_MIX_RATIO                      FILL3A.29     
     &   , C11_MIX_RATIO, C12_MIX_RATIO, O2_MIX_RATIO                      FILL3A.30     
     &   , C113_MIX_RATIO, HCFC22_MIX_RATIO                                ADB1F405.17     
     &   , HFC125_MIX_RATIO, HFC134A_MIX_RATIO                             ADB1F405.18     
     &   , GAS_MIX_RATIO                                                   FILL3A.31     
     &   , CO2_DIM1, CO2_DIM2, CO2_3D, L_CO2_3D                            ACN2F405.110    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_SPECIES                  FILL3A.32     
     &   )                                                                 FILL3A.33     
!                                                                          FILL3A.34     
!                                                                          FILL3A.35     
!     COMDECKS INCLUDED                                                    FILL3A.36     
*CALL GASID3A                                                              FILL3A.37     
*CALL STDIO3A                                                              FILL3A.38     
*CALL ERROR3A                                                              FILL3A.39     
!                                                                          FILL3A.40     
!     DUMMY ARGUMENTS.                                                     FILL3A.41     
!                                                                          FILL3A.42     
      INTEGER   !, INTENT(OUT)                                             FILL3A.43     
     &     IERR                                                            FILL3A.44     
!             ERROR FLAG                                                   FILL3A.45     
!                                                                          FILL3A.46     
!     SIZES OF ARRAYS:                                                     FILL3A.47     
      INTEGER   !, INTENT(IN)                                              FILL3A.48     
     &     NPD_FIELD                                                       FILL3A.49     
!             SIZE OF ARRAY FROM UM                                        FILL3A.50     
     &   , NPD_PROFILE                                                     FILL3A.51     
!             SIZE OF ARRAY                                                FILL3A.52     
     &   , NPD_LAYER                                                       FILL3A.53     
!             SIZE OF ARRAY                                                FILL3A.54     
     &   , NPD_SPECIES                                                     FILL3A.55     
!             SIZE OF ARRAY                                                FILL3A.56     
!                                                                          FILL3A.57     
!     SIZES USED:                                                          FILL3A.58     
      INTEGER   !, INTENT(IN)                                              FILL3A.59     
     &     N_PROFILE                                                       FILL3A.60     
!             NUMBER OF PROFILES                                           FILL3A.61     
     &   , NLEVS                                                           FILL3A.62     
!             NUMBER OF LEVELS                                             FILL3A.63     
     &   , NWET                                                            FILL3A.64     
!             NUMBER OF WET LEVELS                                         FILL3A.65     
     &   , NOZONE                                                          FILL3A.66     
!             NUMBER OF OZONE LEVELS                                       FILL3A.67     
!                                                                          FILL3A.68     
!     GATHERING ARRAY:                                                     FILL3A.69     
      INTEGER   !, INTENT(IN)                                              FILL3A.70     
     &     I_GATHER(NPD_FIELD)                                             FILL3A.71     
!             LIST OF POINTS TO BE GATHERED                                FILL3A.72     
!                                                                          FILL3A.73     
!     TYPES OF GASES:                                                      FILL3A.74     
      INTEGER   !, INTENT(IN)                                              FILL3A.75     
     &     N_ABSORB                                                        FILL3A.76     
!             NUMBER OF ABSORBERS                                          FILL3A.77     
     &   , TYPE_ABSORB(NPD_SPECIES)                                        FILL3A.78     
!             TYPES OF ABSORBERS                                           FILL3A.79     
!                                                                          FILL3A.80     
!     FLAGS FOR MINOR GASES:                                               FILL3A.81     
      LOGICAL   !,INTENT(IN)                                               FILL3A.82     
     &     L_N2O                                                           FILL3A.83     
!             FLAG FOR NITROUS OXIDE                                       FILL3A.84     
     &   , L_CH4                                                           FILL3A.85     
!             FLAG FOR METHANE                                             FILL3A.86     
     &   , L_CFC11                                                         FILL3A.87     
!             FLAG FOR CFC11                                               FILL3A.88     
     &   , L_CFC12                                                         FILL3A.89     
!             FLAG FOR CFC12                                               FILL3A.90     
     &   , L_O2                                                            FILL3A.91     
!             FLAG FOR O2                                                  FILL3A.92     
     &   , L_CFC113                                                        ADB1F405.19     
!             FLAG FOR CFC113                                              ADB1F405.20     
     &   , L_HCFC22                                                        ADB1F405.21     
!             FLAG FOR HCFC22                                              ADB1F405.22     
     &   , L_HFC125                                                        ADB1F405.23     
!             FLAG FOR HFC125                                              ADB1F405.24     
     &   , L_HFC134A                                                       ADB1F405.25     
!             FLAG FOR HFC134A                                             ADB1F405.26     
!                                                                          FILL3A.93     
!     MIXING RATIOS SUPPLIED:                                              FILL3A.94     
      INTEGER  CO2_DIM1, CO2_DIM2   ! dimensions of CO2_3D field           ACN2F405.111    
      LOGICAL  L_CO2_3D    !  controls use of 3D co2 field                 ACN2F405.112    
      REAL      !, INTENT(IN)                                              FILL3A.95     
     &     H2O(NPD_FIELD, NWET)                                            FILL3A.96     
!             MASS MIXING RATIO OF WATER VAPOUR                            FILL3A.97     
     &   , CO2                                                             FILL3A.98     
!             MASS MIXING RATIO OF CARBON DIOXIDE                          FILL3A.99     
     &   , CO2_3D(CO2_DIM1, CO2_DIM2)                                      ACN2F405.113    
!             3D MASS MIXING RATIO OF CO2 (full field)                     ACN2F405.114    
     &   , O3(NPD_FIELD, NOZONE)                                           FILL3A.100    
!             MASS MIXING RATIO OF OZONE                                   FILL3A.101    
     &   , N2O_MIX_RATIO                                                   FILL3A.102    
!             MASS MIXING RATIO OF NITROUS OXIDE                           FILL3A.103    
     &   , CH4_MIX_RATIO                                                   FILL3A.104    
!             MASS MIXING RATIO OF METHANE                                 FILL3A.105    
     &   , C11_MIX_RATIO                                                   FILL3A.106    
!             MASS MIXING RATIO OF CFC11                                   FILL3A.107    
     &   , C12_MIX_RATIO                                                   FILL3A.108    
!             MASS MIXING RATIO OF CFC12                                   FILL3A.109    
     &   , O2_MIX_RATIO                                                    FILL3A.110    
!             MASS MIXING RATIO OF O2                                      FILL3A.111    
     &   , C113_MIX_RATIO                                                  ADB1F405.27     
!             MASS MIXING RATIO OF CFC113                                  ADB1F405.28     
     &   , HCFC22_MIX_RATIO                                                ADB1F405.29     
!             MASS MIXING RATIO OF HCFC22                                  ADB1F405.30     
     &   , HFC125_MIX_RATIO                                                ADB1F405.31     
!             MASS MIXING RATIO OF HFC125                                  ADB1F405.32     
     &   , HFC134A_MIX_RATIO                                               ADB1F405.33     
!             MASS MIXING RATIO OF HFC134A                                 ADB1F405.34     
!                                                                          FILL3A.112    
!     ARRAY OF ASSIGNED MXING RATIOS:                                      FILL3A.113    
      REAL      !, INTENT(OUT)                                             FILL3A.114    
     &     GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES)           FILL3A.115    
!             MIXING RATIOS                                                FILL3A.116    
!                                                                          FILL3A.117    
!     LOCAL VARIABLES.                                                     FILL3A.118    
!                                                                          FILL3A.119    
!     POINTERS TO GASES:                                                   FILL3A.120    
      INTEGER                                                              FILL3A.121    
     &     IUMP_H2O                                                        FILL3A.122    
!             POINTER TO WATER VAPOUR                                      FILL3A.123    
     &   , IUMP_CO2                                                        FILL3A.124    
!             POINTER TO CARBON DIOXIDE                                    FILL3A.125    
     &   , IUMP_O3                                                         FILL3A.126    
!             POINTER TO OZONE                                             FILL3A.127    
     &   , IUMP_N2O                                                        FILL3A.128    
!             POINTER TO NITOUS OXIDE                                      FILL3A.129    
     &   , IUMP_CH4                                                        FILL3A.130    
!             POINTER TO METHANE                                           FILL3A.131    
     &   , IUMP_CFC11                                                      FILL3A.132    
!             POINTER TO CFC11                                             FILL3A.133    
     &   , IUMP_CFC12                                                      FILL3A.134    
!             POINTER TO CFC12                                             FILL3A.135    
     &   , IUMP_O2                                                         FILL3A.136    
!             POINTER TO O2                                                FILL3A.137    
     &   , IUMP_CFC113                                                     ADB1F405.35     
!             POINTER TO CFC113                                            ADB1F405.36     
     &   , IUMP_HCFC22                                                     ADB1F405.37     
!             POINTER TO HCFC22                                            ADB1F405.38     
     &   , IUMP_HFC125                                                     ADB1F405.39     
!             POINTER TO HFC125                                            ADB1F405.40     
     &   , IUMP_HFC134A                                                    ADB1F405.41     
!             POINTER TO HFC134A                                           ADB1F405.42     
      INTEGER                                                              FILL3A.139    
     &     I                                                               FILL3A.140    
!             LOOP VARIABLE                                                FILL3A.141    
     &   , L                                                               FILL3A.142    
!             LOOP VARIABLE                                                FILL3A.143    
     &   , LG                                                              FILL3A.144    
!             CORRESPONDING UNGATHERED INDEX                               FILL3A.145    
!                                                                          FILL3A.146    
      REAL                                                                 FILL3A.147    
     &     H2OLMN                                                          FILL3A.148    
!             LIMITING CONCENTRATION OF WATER VAPOUR                       FILL3A.149    
      PARAMETER(H2OLMN=1.E-8)                                              FILL3A.150    
!                                                                          FILL3A.151    
!                                                                          FILL3A.152    
!                                                                          FILL3A.153    
!                                                                          FILL3A.154    
!     MATCH THE INDEXING NUMBERS OF GASEOUS SPECIES IN THE SPECTRAL        FILL3A.155    
!     FILE WITH ACTUAL TYPES OF GASES KNOWN TO THE UM.                     FILL3A.156    
!                                                                          FILL3A.157    
!     SET ALL POINTERS TO 0 INITIALLY TO FLAG MISSING GASES.               FILL3A.158    
      IUMP_H2O=0                                                           FILL3A.159    
      IUMP_CO2=0                                                           FILL3A.160    
      IUMP_O3=0                                                            FILL3A.161    
      IUMP_N2O=0                                                           FILL3A.162    
      IUMP_CH4=0                                                           FILL3A.163    
      IUMP_CFC11=0                                                         FILL3A.164    
      IUMP_CFC12=0                                                         FILL3A.165    
      IUMP_O2=0                                                            FILL3A.166    
      IUMP_CFC113=0                                                        ADB1F405.43     
      IUMP_HCFC22=0                                                        ADB1F405.44     
      IUMP_HFC125=0                                                        ADB1F405.45     
      IUMP_HFC134A=0                                                       ADB1F405.46     
!                                                                          FILL3A.167    
!                                                                          FILL3A.168    
      DO I=1, N_ABSORB                                                     FILL3A.169    
!                                                                          FILL3A.170    
         IF (TYPE_ABSORB(I).EQ.IP_H2O) THEN                                FILL3A.171    
            IUMP_H2O=I                                                     FILL3A.172    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_CO2) THEN                           FILL3A.173    
            IUMP_CO2=I                                                     FILL3A.174    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_O3) THEN                            FILL3A.175    
            IUMP_O3=I                                                      FILL3A.176    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_N2O) THEN                           FILL3A.177    
            IUMP_N2O=I                                                     FILL3A.178    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_CH4) THEN                           FILL3A.179    
            IUMP_CH4=I                                                     FILL3A.180    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_CFC11) THEN                         FILL3A.181    
            IUMP_CFC11=I                                                   FILL3A.182    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_CFC12) THEN                         FILL3A.183    
            IUMP_CFC12=I                                                   FILL3A.184    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_O2) THEN                            FILL3A.185    
            IUMP_O2=I                                                      FILL3A.186    
         ELSE IF (TYPE_ABSORB(I).EQ.IP_CFC113) THEN                        ADB1F405.47     
            IUMP_CFC113=I                                                  ADB1F405.48     
         ELSE IF (TYPE_ABSORB(I).EQ.IP_HCFC22) THEN                        ADB1F405.49     
            IUMP_HCFC22=I                                                  ADB1F405.50     
         ELSE IF (TYPE_ABSORB(I).EQ.IP_HFC125) THEN                        ADB1F405.51     
            IUMP_HFC125=I                                                  ADB1F405.52     
         ELSE IF (TYPE_ABSORB(I).EQ.IP_HFC134A) THEN                       ADB1F405.53     
            IUMP_HFC134A=I                                                 ADB1F405.54     
         ENDIF                                                             FILL3A.187    
!                                                                          FILL3A.188    
      ENDDO                                                                FILL3A.189    
!                                                                          FILL3A.190    
!                                                                          FILL3A.191    
!     ASSIGN MIXING RATIOS OF THE GASES TO THE MAIN ARRAYS.                FILL3A.192    
!                                                                          FILL3A.193    
!     WATER VAPOUR:                                                        FILL3A.194    
!                                                                          FILL3A.195    
      IF (IUMP_H2O.GT.0) THEN                                              FILL3A.196    
!        THE UPPER LEVELS RECEIVE A CONSTANT SMALL VALUE.                  FILL3A.197    
         DO I=1, NLEVS-NWET                                                FILL3A.198    
            DO L=1, N_PROFILE                                              FILL3A.199    
               GAS_MIX_RATIO(L, I, IUMP_H2O)=H2OLMN                        FILL3A.200    
            ENDDO                                                          FILL3A.201    
         ENDDO                                                             FILL3A.202    
         DO I=NLEVS-NWET+1, NLEVS                                          FILL3A.203    
            DO L=1, N_PROFILE                                              FILL3A.204    
               LG=I_GATHER(L)                                              FILL3A.205    
               GAS_MIX_RATIO(L, I, IUMP_H2O)=H2O(LG, NLEVS-I+1)            FILL3A.206    
            ENDDO                                                          FILL3A.207    
         ENDDO                                                             FILL3A.208    
      ELSE                                                                 FILL3A.209    
         WRITE(IU_ERR, '(/A)')                                             FILL3A.210    
     &      '*** ERROR: WATER VAPOUR IS NOT IN THE SPECTRAL FILE.'         FILL3A.211    
         IERR=I_ERR_FATAL                                                  FILL3A.212    
         RETURN                                                            FILL3A.213    
      ENDIF                                                                FILL3A.214    
!                                                                          FILL3A.215    
!     CARBON DIOXIDE:                                                      FILL3A.216    
!                                                                          FILL3A.217    
      IF (IUMP_CO2.GT.0) THEN                                              FILL3A.218    
         DO I=1, NLEVS                                                     FILL3A.219    
           IF (L_CO2_3D) THEN                                              ACN2F405.115    
             DO L=1, N_PROFILE                                             ACN2F405.116    
               LG=I_GATHER(L)                                              ACN2F405.117    
               GAS_MIX_RATIO(L, I, IUMP_CO2)=CO2_3D(LG, NLEVS-I+1)         ACN2F405.118    
             ENDDO                                                         ACN2F405.119    
           ELSE                                                            ACN2F405.120    
             DO L=1, N_PROFILE                                             ACN2F405.121    
               GAS_MIX_RATIO(L, I, IUMP_CO2)=CO2                           ACN2F405.122    
             ENDDO                                                         ACN2F405.123    
           ENDIF                                                           ACN2F405.124    
         ENDDO                                                             FILL3A.223    
      ELSE                                                                 FILL3A.224    
         WRITE(IU_ERR, '(/A)')                                             FILL3A.225    
     &      '*** ERROR: CARBON DIOXIDE IS NOT IN THE SPECTRAL FILE.'       FILL3A.226    
         IERR=I_ERR_FATAL                                                  FILL3A.227    
         RETURN                                                            FILL3A.228    
      ENDIF                                                                FILL3A.229    
!                                                                          FILL3A.230    
!     OZONE:                                                               FILL3A.231    
!                                                                          FILL3A.232    
      IF (IUMP_O3.GT.0) THEN                                               FILL3A.233    
!        THE CLIMATOLOGY OF OZONE IS GIVEN ON NOZONE LEVELS,               ADB1F401.197    
!        THE LOWEST VALUE SUPPLYING THE MIXING RATIO ON                    ADB1F401.198    
!        ALL LOWER LEVELS.                                                 ADB1F401.199    
         DO I=1, NOZONE                                                    FILL3A.235    
            DO L=1, N_PROFILE                                              FILL3A.236    
               LG=I_GATHER(L)                                              FILL3A.237    
               GAS_MIX_RATIO(L, I, IUMP_O3)=O3(LG, NOZONE+1-I)             FILL3A.238    
            ENDDO                                                          FILL3A.239    
         ENDDO                                                             FILL3A.240    
         DO I=NOZONE+1, NLEVS                                              FILL3A.241    
            DO L=1, N_PROFILE                                              FILL3A.242    
               LG=I_GATHER(L)                                              ADB1F401.200    
               GAS_MIX_RATIO(L, I, IUMP_O3)=O3(LG, 1)                      ADB1F401.201    
            ENDDO                                                          FILL3A.244    
         ENDDO                                                             FILL3A.245    
      ELSE                                                                 FILL3A.246    
         WRITE(IU_ERR, '(/A)')                                             FILL3A.247    
     &      '*** ERROR: OZONE IS NOT IN THE SPECTRAL FILE.'                FILL3A.248    
         IERR=I_ERR_FATAL                                                  FILL3A.249    
         RETURN                                                            FILL3A.250    
      ENDIF                                                                FILL3A.251    
!                                                                          FILL3A.252    
!                                                                          FILL3A.253    
!                                                                          FILL3A.254    
!     OTHER TRACE GASES:                                                   FILL3A.255    
!                                                                          FILL3A.256    
!     THESE GASES ARE NOT ALWAYS INCLUDED IN THE CALCULATION.              FILL3A.257    
!     TESTING IS THEREFORE MORE INTRICATE.                                 FILL3A.258    
!                                                                          FILL3A.259    
      IF (IUMP_N2O.GT.0) THEN                                              FILL3A.260    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          FILL3A.261    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         FILL3A.262    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               FILL3A.263    
         IF (L_N2O) THEN                                                   FILL3A.264    
            DO I=1, NLEVS                                                  FILL3A.265    
               DO L=1, N_PROFILE                                           FILL3A.266    
                  GAS_MIX_RATIO(L, I, IUMP_N2O)=N2O_MIX_RATIO              FILL3A.267    
               ENDDO                                                       FILL3A.268    
            ENDDO                                                          FILL3A.269    
         ELSE                                                              FILL3A.270    
            DO I=1, NLEVS                                                  FILL3A.271    
               DO L=1, N_PROFILE                                           FILL3A.272    
                  GAS_MIX_RATIO(L, I, IUMP_N2O)=0.0E+00                    FILL3A.273    
               ENDDO                                                       FILL3A.274    
            ENDDO                                                          FILL3A.275    
         ENDIF                                                             FILL3A.276    
      ELSE                                                                 FILL3A.277    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          FILL3A.278    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         FILL3A.279    
         IF (L_N2O) THEN                                                   FILL3A.280    
            WRITE(IU_ERR, '(/A)')                                          FILL3A.281    
     &         '*** ERROR: NITROUS OXIDE IS NOT IN THE SPECTRAL FILE.'     FILL3A.282    
            IERR=I_ERR_FATAL                                               FILL3A.283    
            RETURN                                                         FILL3A.284    
         ENDIF                                                             FILL3A.285    
      ENDIF                                                                FILL3A.286    
!                                                                          FILL3A.287    
      IF (IUMP_CH4.GT.0) THEN                                              FILL3A.288    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          FILL3A.289    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         FILL3A.290    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               FILL3A.291    
         IF (L_CH4) THEN                                                   FILL3A.292    
            DO I=1, NLEVS                                                  FILL3A.293    
               DO L=1, N_PROFILE                                           FILL3A.294    
                  GAS_MIX_RATIO(L, I, IUMP_CH4)=CH4_MIX_RATIO              FILL3A.295    
               ENDDO                                                       FILL3A.296    
            ENDDO                                                          FILL3A.297    
         ELSE                                                              FILL3A.298    
            DO I=1, NLEVS                                                  FILL3A.299    
               DO L=1, N_PROFILE                                           FILL3A.300    
                  GAS_MIX_RATIO(L, I, IUMP_CH4)=0.0E+00                    FILL3A.301    
               ENDDO                                                       FILL3A.302    
            ENDDO                                                          FILL3A.303    
         ENDIF                                                             FILL3A.304    
      ELSE                                                                 FILL3A.305    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          FILL3A.306    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         FILL3A.307    
         IF (L_CH4) THEN                                                   FILL3A.308    
            WRITE(IU_ERR, '(/A)')                                          FILL3A.309    
     &         '*** ERROR: METHANE IS NOT IN THE SPECTRAL FILE.'           FILL3A.310    
            IERR=I_ERR_FATAL                                               FILL3A.311    
            RETURN                                                         FILL3A.312    
         ENDIF                                                             FILL3A.313    
      ENDIF                                                                FILL3A.314    
!                                                                          FILL3A.315    
      IF (IUMP_CFC11.GT.0) THEN                                            FILL3A.316    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          FILL3A.317    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         FILL3A.318    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               FILL3A.319    
         IF (L_CFC11) THEN                                                 FILL3A.320    
            DO I=1, NLEVS                                                  FILL3A.321    
               DO L=1, N_PROFILE                                           FILL3A.322    
                  GAS_MIX_RATIO(L, I, IUMP_CFC11)=C11_MIX_RATIO            FILL3A.323    
               ENDDO                                                       FILL3A.324    
            ENDDO                                                          FILL3A.325    
         ELSE                                                              FILL3A.326    
            DO I=1, NLEVS                                                  FILL3A.327    
               DO L=1, N_PROFILE                                           FILL3A.328    
                  GAS_MIX_RATIO(L, I, IUMP_CFC11)=0.0E+00                  FILL3A.329    
               ENDDO                                                       FILL3A.330    
            ENDDO                                                          FILL3A.331    
         ENDIF                                                             FILL3A.332    
      ELSE                                                                 FILL3A.333    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          FILL3A.334    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         FILL3A.335    
         IF (L_CFC11) THEN                                                 FILL3A.336    
            WRITE(IU_ERR, '(/A)')                                          FILL3A.337    
     &         '*** ERROR: CFC11 IS NOT IN THE SPECTRAL FILE.'             FILL3A.338    
            IERR=I_ERR_FATAL                                               FILL3A.339    
            RETURN                                                         FILL3A.340    
         ENDIF                                                             FILL3A.341    
      ENDIF                                                                FILL3A.342    
!                                                                          FILL3A.343    
      IF (IUMP_CFC12.GT.0) THEN                                            FILL3A.344    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          FILL3A.345    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         FILL3A.346    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               FILL3A.347    
         IF (L_CFC12) THEN                                                 FILL3A.348    
            DO I=1, NLEVS                                                  FILL3A.349    
               DO L=1, N_PROFILE                                           FILL3A.350    
                  GAS_MIX_RATIO(L, I, IUMP_CFC12)=C12_MIX_RATIO            FILL3A.351    
               ENDDO                                                       FILL3A.352    
            ENDDO                                                          FILL3A.353    
         ELSE                                                              FILL3A.354    
            DO I=1, NLEVS                                                  FILL3A.355    
               DO L=1, N_PROFILE                                           FILL3A.356    
                  GAS_MIX_RATIO(L, I, IUMP_CFC12)=0.0E+00                  FILL3A.357    
               ENDDO                                                       FILL3A.358    
            ENDDO                                                          FILL3A.359    
         ENDIF                                                             FILL3A.360    
      ELSE                                                                 FILL3A.361    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          FILL3A.362    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         FILL3A.363    
         IF (L_CFC12) THEN                                                 FILL3A.364    
            WRITE(IU_ERR, '(/A)')                                          FILL3A.365    
     &         '*** ERROR: CFC12 IS NOT IN THE SPECTRAL FILE.'             FILL3A.366    
            IERR=I_ERR_FATAL                                               FILL3A.367    
            RETURN                                                         FILL3A.368    
         ENDIF                                                             FILL3A.369    
      ENDIF                                                                FILL3A.370    
!                                                                          FILL3A.371    
      IF (IUMP_O2.GT.0) THEN                                               FILL3A.372    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          FILL3A.373    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         FILL3A.374    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               FILL3A.375    
         IF (L_O2) THEN                                                    FILL3A.376    
            DO I=1, NLEVS                                                  FILL3A.377    
               DO L=1, N_PROFILE                                           FILL3A.378    
                  GAS_MIX_RATIO(L, I, IUMP_O2)=O2_MIX_RATIO                FILL3A.379    
               ENDDO                                                       FILL3A.380    
            ENDDO                                                          FILL3A.381    
         ELSE                                                              FILL3A.382    
            DO I=1, NLEVS                                                  FILL3A.383    
               DO L=1, N_PROFILE                                           FILL3A.384    
                  GAS_MIX_RATIO(L, I, IUMP_O2)=0.0E+00                     FILL3A.385    
               ENDDO                                                       FILL3A.386    
            ENDDO                                                          FILL3A.387    
         ENDIF                                                             FILL3A.388    
      ELSE                                                                 FILL3A.389    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          FILL3A.390    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         FILL3A.391    
         IF (L_O2) THEN                                                    FILL3A.392    
            WRITE(IU_ERR, '(/A)')                                          FILL3A.393    
     &         '*** ERROR: O2 IS NOT IN THE SPECTRAL FILE.'                FILL3A.394    
            IERR=I_ERR_FATAL                                               FILL3A.395    
            RETURN                                                         FILL3A.396    
         ENDIF                                                             FILL3A.397    
      ENDIF                                                                FILL3A.398    
!                                                                          ADB1F405.55     
      IF (IUMP_CFC113.GT.0) THEN                                           ADB1F405.56     
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          ADB1F405.57     
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         ADB1F405.58     
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               ADB1F405.59     
         IF (L_CFC113) THEN                                                ADB1F405.60     
            DO I=1, NLEVS                                                  ADB1F405.61     
               DO L=1, N_PROFILE                                           ADB1F405.62     
                  GAS_MIX_RATIO(L, I, IUMP_CFC113)=C113_MIX_RATIO          ADB1F405.63     
               ENDDO                                                       ADB1F405.64     
            ENDDO                                                          ADB1F405.65     
         ELSE                                                              ADB1F405.66     
            DO I=1, NLEVS                                                  ADB1F405.67     
               DO L=1, N_PROFILE                                           ADB1F405.68     
                  GAS_MIX_RATIO(L, I, IUMP_CFC113)=0.0E+00                 ADB1F405.69     
               ENDDO                                                       ADB1F405.70     
            ENDDO                                                          ADB1F405.71     
         ENDIF                                                             ADB1F405.72     
      ELSE                                                                 ADB1F405.73     
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          ADB1F405.74     
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         ADB1F405.75     
         IF (L_CFC113) THEN                                                ADB1F405.76     
            WRITE(IU_ERR, '(/A)')                                          ADB1F405.77     
     &         '*** ERROR: CFC113 IS NOT IN THE SPECTRAL FILE.'            ADB1F405.78     
            IERR=I_ERR_FATAL                                               ADB1F405.79     
            RETURN                                                         ADB1F405.80     
         ENDIF                                                             ADB1F405.81     
      ENDIF                                                                ADB1F405.82     
!                                                                          ADB1F405.83     
      IF (IUMP_HCFC22.GT.0) THEN                                           ADB1F405.84     
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          ADB1F405.85     
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         ADB1F405.86     
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               ADB1F405.87     
         IF (L_HCFC22) THEN                                                ADB1F405.88     
            DO I=1, NLEVS                                                  ADB1F405.89     
               DO L=1, N_PROFILE                                           ADB1F405.90     
                  GAS_MIX_RATIO(L, I, IUMP_HCFC22)=HCFC22_MIX_RATIO        ADB1F405.91     
               ENDDO                                                       ADB1F405.92     
            ENDDO                                                          ADB1F405.93     
         ELSE                                                              ADB1F405.94     
            DO I=1, NLEVS                                                  ADB1F405.95     
               DO L=1, N_PROFILE                                           ADB1F405.96     
                  GAS_MIX_RATIO(L, I, IUMP_HCFC22)=0.0E+00                 ADB1F405.97     
               ENDDO                                                       ADB1F405.98     
            ENDDO                                                          ADB1F405.99     
         ENDIF                                                             ADB1F405.100    
      ELSE                                                                 ADB1F405.101    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          ADB1F405.102    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         ADB1F405.103    
         IF (L_HCFC22) THEN                                                ADB1F405.104    
            WRITE(IU_ERR, '(/A)')                                          ADB1F405.105    
     &         '*** ERROR: HCFC22 IS NOT IN THE SPECTRAL FILE.'            ADB1F405.106    
            IERR=I_ERR_FATAL                                               ADB1F405.107    
            RETURN                                                         ADB1F405.108    
         ENDIF                                                             ADB1F405.109    
      ENDIF                                                                ADB1F405.110    
!                                                                          ADB1F405.111    
      IF (IUMP_HFC125.GT.0) THEN                                           ADB1F405.112    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          ADB1F405.113    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         ADB1F405.114    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               ADB1F405.115    
         IF (L_HFC125) THEN                                                ADB1F405.116    
            DO I=1, NLEVS                                                  ADB1F405.117    
               DO L=1, N_PROFILE                                           ADB1F405.118    
                  GAS_MIX_RATIO(L, I, IUMP_HFC125)=HFC125_MIX_RATIO        ADB1F405.119    
               ENDDO                                                       ADB1F405.120    
            ENDDO                                                          ADB1F405.121    
         ELSE                                                              ADB1F405.122    
            DO I=1, NLEVS                                                  ADB1F405.123    
               DO L=1, N_PROFILE                                           ADB1F405.124    
                  GAS_MIX_RATIO(L, I, IUMP_HFC125)=0.0E+00                 ADB1F405.125    
               ENDDO                                                       ADB1F405.126    
            ENDDO                                                          ADB1F405.127    
         ENDIF                                                             ADB1F405.128    
      ELSE                                                                 ADB1F405.129    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          ADB1F405.130    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         ADB1F405.131    
         IF (L_HFC125) THEN                                                ADB1F405.132    
            WRITE(IU_ERR, '(/A)')                                          ADB1F405.133    
     &         '*** ERROR: HFC125 IS NOT IN THE SPECTRAL FILE.'            ADB1F405.134    
            IERR=I_ERR_FATAL                                               ADB1F405.135    
            RETURN                                                         ADB1F405.136    
         ENDIF                                                             ADB1F405.137    
      ENDIF                                                                ADB1F405.138    
!                                                                          ADB1F405.139    
      IF (IUMP_HFC134A.GT.0) THEN                                          ADB1F405.140    
!        THE GAS IS IN THE SPECTRAL FILE. IF IT HAS BEEN SELECTED          ADB1F405.141    
!        FROM THE UI ITS MIXING RATIO MUST BE SET. IF IT IS IN THE         ADB1F405.142    
!        FILE BUT NOT SELECTED THE MIXING RATIO IS SET TO 0.               ADB1F405.143    
         IF (L_HFC134A) THEN                                               ADB1F405.144    
            DO I=1, NLEVS                                                  ADB1F405.145    
               DO L=1, N_PROFILE                                           ADB1F405.146    
                  GAS_MIX_RATIO(L, I, IUMP_HFC134A)=HFC134A_MIX_RATIO      ADB1F405.147    
               ENDDO                                                       ADB1F405.148    
            ENDDO                                                          ADB1F405.149    
         ELSE                                                              ADB1F405.150    
            DO I=1, NLEVS                                                  ADB1F405.151    
               DO L=1, N_PROFILE                                           ADB1F405.152    
                  GAS_MIX_RATIO(L, I, IUMP_HFC134A)=0.0E+00                ADB1F405.153    
               ENDDO                                                       ADB1F405.154    
            ENDDO                                                          ADB1F405.155    
         ENDIF                                                             ADB1F405.156    
      ELSE                                                                 ADB1F405.157    
!        THE GAS IS NOT IN THE SPECTRAL FILE. AN ERROR RESULTS IF          ADB1F405.158    
!        IT WAS TO BE INCLUDED IN THE CALCULATION.                         ADB1F405.159    
         IF (L_HFC134A) THEN                                               ADB1F405.160    
            WRITE(IU_ERR, '(/A)')                                          ADB1F405.161    
     &         '*** ERROR: HFC134A IS NOT IN THE SPECTRAL FILE.'           ADB1F405.162    
            IERR=I_ERR_FATAL                                               ADB1F405.163    
            RETURN                                                         ADB1F405.164    
         ENDIF                                                             ADB1F405.165    
      ENDIF                                                                ADB1F405.166    
!                                                                          FILL3A.399    
!                                                                          FILL3A.400    
!                                                                          FILL3A.401    
      RETURN                                                               FILL3A.402    
      END                                                                  FILL3A.403    
!+ Subroutine to set thermodynamic properties                              FILL3A.404    
!                                                                          FILL3A.405    
! Purpose:                                                                 FILL3A.406    
!   Pressures, temperatures at the centres and edges of layers             FILL3A.407    
!   and the masses in layers are set.                                      FILL3A.408    
!                                                                          FILL3A.409    
! Method:                                                                  FILL3A.410    
!   Straightforward.                                                       FILL3A.411    
!                                                                          FILL3A.412    
! Current Owner of Code: J. M. Edwards                                     FILL3A.413    
!                                                                          FILL3A.414    
! History:                                                                 FILL3A.415    
!       Version         Date                    Comment                    FILL3A.416    
!       4.0             27-07-95                Original Code              FILL3A.417    
!                                               (J. M. Edwards)            FILL3A.418    
!       4.1             10-06-96                Old formulation over       ADB1F401.202    
!                                               sea-ice removed.           ADB1F401.203    
!                                               (J. M. Edwards)            ADB1F401.204    
!       4.2             08-08-96                Ground temperature         ADB1F402.145    
!                                               set equal to that          ADB1F402.146    
!                                               in the middle of the       ADB1F402.147    
!                                               bottom layer.              ADB1F402.148    
!                                               (J. M. Edwards)            ADB1F402.149    
!                                                                          FILL3A.419    
! Description of Code:                                                     FILL3A.420    
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.421    
!                                                                          FILL3A.422    
!- ---------------------------------------------------------------------   FILL3A.423    

      SUBROUTINE R2_SET_THERMODYNAMIC(                                      2FILL3A.424    
     &     N_PROFILE, NLEVS, I_GATHER, L_BOUNDARY_TEMPERATURE              FILL3A.425    
     &   , PSTAR, TSTAR, AB, BB, AC, BC, PEXNER, TAC                       ADB1F401.205    
     &   , P, T, T_BDY, T_SURFACE, D_MASS                                  ADB1F401.206    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER                               FILL3A.428    
     &   )                                                                 FILL3A.429    
!                                                                          FILL3A.430    
!                                                                          FILL3A.431    
!                                                                          FILL3A.432    
      IMPLICIT NONE                                                        FILL3A.433    
!                                                                          FILL3A.434    
!                                                                          FILL3A.435    
!     INCLUDED COMDECKS                                                    FILL3A.436    
*CALL C_G                                                                  FILL3A.437    
*CALL C_R_CP                                                               FILL3A.439    
*CALL PRMCH3A                                                              FILL3A.440    
*CALL PRECSN3A                                                             FILL3A.441    
!                                                                          FILL3A.442    
!     DUMMY ARGUMENTS.                                                     FILL3A.443    
!     SIZES OF ARRAYS:                                                     FILL3A.444    
      INTEGER   !, INTENT(IN)                                              FILL3A.445    
     &     NPD_FIELD                                                       FILL3A.446    
!             SIZE OF ARRAY FROM UM                                        FILL3A.447    
     &   , NPD_PROFILE                                                     FILL3A.448    
!             MAXIMUM NUMBER OF PROFILES                                   FILL3A.449    
     &   , NPD_LAYER                                                       FILL3A.450    
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.451    
!                                                                          FILL3A.452    
!     SIZES USED:                                                          FILL3A.453    
      INTEGER   !, INTENT(IN)                                              FILL3A.454    
     &     N_PROFILE                                                       FILL3A.455    
!             NUMBER OF PROFILES                                           FILL3A.456    
     &   , NLEVS                                                           FILL3A.457    
!             NUMBER OF LEVELS                                             FILL3A.458    
     &   , I_GATHER(NPD_FIELD)                                             FILL3A.459    
!             LIST OF POINTS TO GATHER                                     FILL3A.460    
!                                                                          FILL3A.461    
      REAL      !, INTENT(IN)                                              FILL3A.462    
     &     PSTAR(NPD_FIELD)                                                FILL3A.463    
!             SURFACE PRESSURES                                            FILL3A.464    
     &   , TSTAR(NPD_FIELD)                                                FILL3A.465    
!             SURFACE TEMPERSTURES                                         FILL3A.466    
     &   , AB(NLEVS+1)                                                     FILL3A.467    
!             A AT EDGES OF LAYERS                                         FILL3A.468    
     &   , BB(NLEVS+1)                                                     FILL3A.469    
!             B AT EDGES OF LAYERS                                         FILL3A.470    
     &   , AC(NLEVS)                                                       FILL3A.471    
!             A AT CENTRES OF LAYERS                                       FILL3A.472    
     &   , BC(NLEVS)                                                       FILL3A.473    
!             B AT CENTRES OF LAYERS                                       FILL3A.474    
     &   , TAC(NPD_FIELD, NLEVS)                                           FILL3A.475    
!             TEMPERATURES AT CENTRES OF LAYERS                            FILL3A.476    
     &   , PEXNER(NPD_FIELD, NLEVS+1)                                      FILL3A.477    
!             EXNER FUNCTION AT BOUNDARIES                                 FILL3A.478    
!                                                                          FILL3A.481    
      LOGICAL   !, INTENT(IN)                                              FILL3A.482    
     &     L_BOUNDARY_TEMPERATURE                                          FILL3A.483    
!             FLAG TO CALCULATE TEMPERATURES AT BOUNADRIES OF LAYERS.      FILL3A.484    
!                                                                          FILL3A.485    
!                                                                          FILL3A.486    
      REAL      !, INTENT(OUT)                                             FILL3A.487    
     &     D_MASS(NPD_PROFILE, NPD_LAYER)                                  FILL3A.488    
!             MASS THICKNESSES OF LAYERS                                   FILL3A.489    
     &   , P(NPD_PROFILE, 0: NPD_LAYER)                                    FILL3A.490    
!             PRESSURE FIELD                                               FILL3A.491    
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    FILL3A.492    
!             TEMPERATURE FIELD                                            FILL3A.493    
     &   , T_BDY(NPD_PROFILE, 0: NPD_LAYER)                                FILL3A.494    
!             TEMPERATURES AT EDGES OF LAYERS                              FILL3A.495    
     &   , T_SURFACE(NPD_PROFILE)                                          ADB1F401.207    
!             GATHERED TEMPERATURE OF SURFACE                              ADB1F401.208    
!                                                                          FILL3A.496    
!                                                                          FILL3A.497    
!     LOCAL VARIABLES.                                                     FILL3A.498    
!                                                                          FILL3A.499    
      INTEGER                                                              FILL3A.500    
     &     I                                                               FILL3A.501    
!             LOOP VARIABLE                                                FILL3A.502    
     &   , II                                                              FILL3A.503    
!             LOOP VARIABLE                                                FILL3A.504    
     &   , L                                                               FILL3A.505    
!             LOOP VARIABLE                                                FILL3A.506    
     &   , LG                                                              FILL3A.507    
!             INDEX TO GATHER                                              FILL3A.508    
!                                                                          FILL3A.509    
      REAL                                                                 FILL3A.510    
     &     PU                                                              FILL3A.511    
!             PRESSURE FOR UPPER LAYER                                     FILL3A.512    
     &   , PL                                                              FILL3A.513    
!             PRESSURE FOR LOWER LAYER                                     FILL3A.514    
     &   , PML1                                                            FILL3A.515    
!             PRESSURE FOR INTERPOLATION                                   FILL3A.516    
     &   , WTL                                                             FILL3A.517    
!             WEIGHT FOR LOWER LAYER                                       FILL3A.518    
     &   , WTU                                                             FILL3A.519    
!             WEIGHT FOR UPPER LAYER                                       FILL3A.520    
!                                                                          FILL3A.523    
*CALL P_EXNERC                                                             FILL3A.524    
!                                                                          FILL3A.525    
!                                                                          FILL3A.526    
!                                                                          FILL3A.527    
!     CALCULATE PROPERTIES AT THE CENTRES OF LAYERS.                       FILL3A.528    
      DO I=1, NLEVS                                                        FILL3A.529    
         DO L=1, N_PROFILE                                                 FILL3A.530    
            LG=I_GATHER(L)                                                 FILL3A.531    
            P(L, I)=AC(NLEVS+1-I)+BC(NLEVS+1-I)*PSTAR(LG)                  FILL3A.532    
            T(L, I)=TAC(LG, NLEVS+1-I)                                     FILL3A.533    
            D_MASS(L, I)=(AB(NLEVS+1-I)-AB(NLEVS+2-I)                      FILL3A.534    
     &         +PSTAR(LG)*(BB(NLEVS+1-I)-BB(NLEVS+2-I)))                   FILL3A.535    
     &         /G                                                          FILL3A.536    
         ENDDO                                                             FILL3A.537    
      ENDDO                                                                FILL3A.538    
!                                                                          FILL3A.539    
!                                                                          FILL3A.540    
      IF (L_BOUNDARY_TEMPERATURE) THEN                                     FILL3A.541    
!                                                                          ADB1F401.209    
!        GATHER THE SURFACE TEMPERATURE.                                   ADB1F401.210    
         DO L=1, N_PROFILE                                                 ADB1F401.211    
            LG=I_GATHER(L)                                                 ADB1F401.212    
            T_SURFACE(L)=TSTAR(LG)                                         ADB1F401.213    
         ENDDO                                                             ADB1F401.214    
!                                                                          ADB1F401.215    
!        INTERPOLATE TEMPERATURES AT THE BOUNDARIES OF LAYERS              FILL3A.542    
!        FROM THE EXNER FUNCTION.                                          FILL3A.543    
         DO L=1, N_PROFILE                                                 FILL3A.544    
            LG=I_GATHER(L)                                                 FILL3A.545    
!                                                                          ADB1F401.216    
!           TAKE THE TEMPERATURE OF THE AIR JUST ABOVE THE SURFACE AS      ADB1F401.217    
!           THE TEMPERATURE AT THE MIDDLE OF THE BOTTOM LAYER.             ADB1F402.150    
            T_BDY(L, NLEVS)=TAC(LG, 1)                                     ADB1F402.151    
!           TAKE THE TEMPERATURE AS CONSTANT ACROSS THE TOP HALF-LAYER.    FILL3A.557    
            T_BDY(L, 0)=TAC(LG, NLEVS)                                     FILL3A.558    
!                                                                          ADB1F401.220    
         ENDDO                                                             FILL3A.559    
!                                                                          ADB1F401.221    
         DO I=1, NLEVS-1                                                   FILL3A.560    
            II=NLEVS-I                                                     FILL3A.561    
            DO L=1, N_PROFILE                                              FILL3A.562    
               LG=I_GATHER(L)                                              FILL3A.563    
               PU=PSTAR(LG)*BB(II+2)+AB(II+2)                              FILL3A.564    
               PL=PSTAR(LG)*BB(II+1)+AB(II+1)                              FILL3A.565    
               PML1=PSTAR(LG)*BB(II)+AB(II)                                FILL3A.566    
               WTU=TAC(LG, II+1)*(PEXNER(LG, II+1)                         FILL3A.567    
     &            /P_EXNER_C(PEXNER(LG, II+2), PEXNER(LG, II+1)            FILL3A.568    
     &            , PU, PL, KAPPA)-1.0E+00)                                FILL3A.569    
               WTL=TAC(LG, II)*(PEXNER(LG, II)                             FILL3A.570    
     &            /P_EXNER_C(PEXNER(LG, II+1), PEXNER(LG, II)              FILL3A.571    
     &            , PL, PML1, KAPPA)-1.0E+00)                              FILL3A.572    
               T_BDY(L, I)=(WTU*TAC(LG, NLEVS+1-I)                         FILL3A.573    
     &            +WTL*TAC(LG, NLEVS-I))/(WTL+WTU)                         FILL3A.574    
            ENDDO                                                          FILL3A.575    
         ENDDO                                                             FILL3A.576    
!                                                                          ADB1F401.222    
      ENDIF                                                                FILL3A.577    
!                                                                          FILL3A.578    
!                                                                          FILL3A.579    
!                                                                          FILL3A.580    
      RETURN                                                               FILL3A.581    
      END                                                                  FILL3A.582    
!+ Subroutine to assign Properties of Clouds.                              FILL3A.583    
!                                                                          FILL3A.584    
! Purpose:                                                                 FILL3A.585    
!   The fractions of different types of clouds and their microphysical     FILL3A.586    
!   preoperties are set.                                                   FILL3A.587    
!                                                                          FILL3A.588    
! Method:                                                                  FILL3A.589    
!   Straightforward.                                                       FILL3A.590    
!                                                                          FILL3A.591    
! Current Owner of Code: J. M. Edwards                                     FILL3A.592    
!                                                                          FILL3A.593    
! History:                                                                 FILL3A.594    
!       Version         Date                    Comment                    FILL3A.595    
!       4.0             27-07-95                Original Code              FILL3A.596    
!                                               (J. M. Edwards)            FILL3A.597    
!       4.1             10-06-96                New flag L_AEROSOL_CCN     ADB1F401.223    
!                                               introduced to allow        ADB1F401.224    
!                                               inclusion of indirect      ADB1F401.225    
!                                               aerosol forcing alone.     ADB1F401.226    
!                                               Correction of comments     ADB1F401.227    
!                                               for LCCWC1 and LCCWC2.     ADB1F401.228    
!                                               Correction of level at     ADB1F401.229    
!                                               which temperature for      ADB1F401.230    
!                                               partitioning               ADB1F401.231    
!                                               convective homogeneously   ADB1F401.232    
!                                               mixed cloud is taken.      ADB1F401.233    
!                                               (J. M. Edwards)            ADB1F401.234    
!       4.4             08-04-97                Changes for new precip     AYY1F404.385    
!                                               scheme (qCF prognostic)    AYY1F404.386    
!                                               (A. C. Bushell)            AYY1F404.387    
!       4.4             15-09-97                A parametrization of       ADB2F404.12     
!                                               ice crystals with a        ADB2F404.13     
!                                               temperature dependedence   ADB2F404.14     
!                                               of the size has been       ADB2F404.15     
!                                               added.                     ADB2F404.16     
!                                               Explicit checking of       ADB2F404.17     
!                                               the sizes of particles     ADB2F404.18     
!                                               for the domain of          ADB2F404.19     
!                                               validity of the para-      ADB2F404.20     
!                                               metrization has been       ADB2F404.21     
!                                               added.                     ADB2F404.22     
!                                               (J. M. Edwards)            ADB2F404.23     
!       4.5             18-05-98                New option for             ADB1F405.167    
!                                               partitioning between       ADB1F405.168    
!                                               ice and water in           ADB1F405.169    
!                                               convective cloud           ADB1F405.170    
!                                               included.                  ADB1F405.171    
!                                               (J. M. Edwards)            ADB1F405.172    
!       4.5             13/05/98   Changes to R2_SET_CLOUD_FIELD to use    ASK1F405.296    
!                                  original sect 9 cloud fraction when     ASK1F405.297    
!                                  an extended 'area' cloud fraction is    ASK1F405.298    
!                                  used everywhere else in Radiation.      ASK1F405.299    
!                                  S. Cusack                               ASK1F405.300    
!                                                                          FILL3A.598    
! Description of Code:                                                     FILL3A.599    
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.600    
!                                                                          FILL3A.601    
!- ---------------------------------------------------------------------   FILL3A.602    

      SUBROUTINE R2_SET_CLOUD_FIELD(N_PROFILE, NLEVS, NCLDS                 2,5FILL3A.603    
     &   , I_GATHER                                                        FILL3A.604    
     &   , P, T, D_MASS                                                    FILL3A.605    
     &   , CCB, CCT, CCA, CCCWP                                            FILL3A.606    
     &   , LCCWC1, LCCWC2, LCA_AREA, LCA_BULK                              ASK1F405.301    
     &   , L_MICROPHYSICS, L_AEROSOL_CCN                                   AYY1F404.388    
     &   , SULP_DIM1, SULP_DIM2, ACCUM_SULPHATE, DISS_SULPHATE             AYY1F404.389    
     &   , L_CLOUD_WATER_PARTITION, LAND_G                                 AYY1F404.390    
     &   , I_CLOUD_REPRESENTATION, I_CONDENSED_PARAM                       ADB2F404.24     
     &   , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM                            ADB2F404.25     
     &   , N_CONDENSED, TYPE_CONDENSED                                     FILL3A.610    
     &   , W_CLOUD, FRAC_CLOUD, L_LOCAL_CNV_PARTITION                      ADB1F405.173    
     &   , CONDENSED_MIX_RAT_AREA, CONDENSED_DIM_CHAR                      ASK1F405.302    
     &   , RE_CONV, RE_CONV_FLAG, RE_STRAT, RE_STRAT_FLAG                  FILL3A.613    
     &   , WGT_CONV, WGT_CONV_FLAG, WGT_STRAT, WGT_STRAT_FLAG              FILL3A.614    
     &   , LWP_STRAT, LWP_STRAT_FLAG                                       FILL3A.615    
     &   , NTOT_DIAG, NTOT_DIAG_FLAG                                       AAJ3F404.89     
     &   , STRAT_LWC_DIAG, STRAT_LWC_DIAG_FLAG                             AAJ3F404.90     
     &   , SO4_CCN_DIAG, SO4_CCN_DIAG_FLAG                                 AAJ3F404.91     
     &   , COND_SAMP_WGT, COND_SAMP_WGT_FLAG                               AAJ3F404.92     
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES          FILL3A.616    
     &   , N_CCA_LEV, L_3D_CCA                                             AJX0F404.60     
     &   )                                                                 FILL3A.617    
!                                                                          FILL3A.618    
!                                                                          FILL3A.619    
!                                                                          FILL3A.620    
      IMPLICIT NONE                                                        FILL3A.621    
!                                                                          FILL3A.622    
!                                                                          FILL3A.623    
!     COMDECKS INCLUDED.                                                   FILL3A.624    
*CALL PRMCH3A                                                              FILL3A.625    
*CALL PRECSN3A                                                             FILL3A.626    
*CALL DIMFIX3A                                                             FILL3A.627    
*CALL CLDCMP3A                                                             FILL3A.628    
*CALL CLDTYP3A                                                             FILL3A.629    
*CALL CLREPP3A                                                             FILL3A.630    
*CALL ICLPRM3A                                                             ADB2F404.27     
*CALL C_0_DG_C                                                             FILL3A.631    
*CALL C_R_CP                                                               FILL3A.632    
!                                                                          FILL3A.633    
!                                                                          FILL3A.634    
!     DIMENSIONS OF ARRAYS:                                                FILL3A.635    
      INTEGER   !, INTENT(IN)                                              FILL3A.636    
     &     NPD_FIELD                                                       FILL3A.637    
!             FIELD SIZE IN CALLING PROGRAM                                FILL3A.638    
     &   , NPD_PROFILE                                                     FILL3A.639    
!             SIZE OF ARRAY OF PROFILES                                    FILL3A.640    
     &   , NPD_LAYER                                                       FILL3A.641    
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.642    
     &   , NPD_AEROSOL_SPECIES                                             FILL3A.643    
!             MAXIMUM NUMBER OF AEROSOL_SPECIES                            FILL3A.644    
     &   , SULP_DIM1                                                       AYY1F404.391    
!             1ST DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.392    
     &   , SULP_DIM2                                                       AYY1F404.393    
!             2ND DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.394    
     &   , N_CCA_LEV                                                       AJX0F404.61     
!             NUMBER OF LEVELS FOR CONVECTIVE CLOUD AMOUNT                 AJX0F404.62     
!                                                                          FILL3A.645    
!     ACTUAL SIZES USED:                                                   FILL3A.646    
      INTEGER   !, INTENT(IN)                                              FILL3A.647    
     &     N_PROFILE                                                       FILL3A.648    
!             NUMBER OF PROFILES                                           FILL3A.649    
     &   , NLEVS                                                           FILL3A.650    
!             NUMBER OF ATMOSPHERIC LAYERS                                 FILL3A.651    
     &   , NCLDS                                                           FILL3A.652    
!             NUMBER OF CLOUDY LEVELS                                      FILL3A.653    
!                                                                          FILL3A.654    
!     GATHERING ARRAY:                                                     FILL3A.655    
      INTEGER   !, INTENT(IN)                                              FILL3A.656    
     &     I_GATHER(NPD_FIELD)                                             FILL3A.657    
!             LIST OF POINTS TO BE GATHERED                                FILL3A.658    
!                                                                          FILL3A.659    
!     THERMODYNAMIC FIELDS:                                                FILL3A.660    
      REAL      !, INTENT(IN)                                              FILL3A.661    
     &     P(NPD_PROFILE, 0: NPD_LAYER)                                    FILL3A.662    
!             PRESSURES                                                    FILL3A.663    
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    FILL3A.664    
!             TEMPERATURES                                                 FILL3A.665    
     &   , D_MASS(NPD_PROFILE, NPD_LAYER)                                  FILL3A.666    
!             MASS THICKNESSES OF LAYERS                                   FILL3A.667    
!                                                                          FILL3A.668    
!     CONVECTIVE CLOUDS:                                                   FILL3A.669    
      INTEGER   !, INTENT(IN)                                              FILL3A.670    
     &     CCB(NPD_FIELD)                                                  FILL3A.671    
!             BASE OF CONVECTIVE CLOUD                                     FILL3A.672    
     &   , CCT(NPD_FIELD)                                                  FILL3A.673    
!             TOP OF CONVECTIVE CLOUD                                      FILL3A.674    
      REAL      !, INTENT(IN)                                              FILL3A.675    
     &     CCA(NPD_FIELD,N_CCA_LEV)                                        AJX0F404.63     
!             FRACTION OF CONVECTIVE CLOUD                                 FILL3A.677    
     &   , CCCWP(NPD_FIELD)                                                FILL3A.678    
!             WATER PATH OF CONVECTIVE CLOUD                               FILL3A.679    
      LOGICAL   !, INTENT(IN)                                              AJX0F404.64     
     &     L_3D_CCA                                                        AJX0F404.65     
     &   , L_LOCAL_CNV_PARTITION                                           ADB1F405.174    
!             FLAG TO CARRY OUT THE PARTITIONING BETWEEN ICE               ADB1F405.175    
!             AND WATER IN CONVECTIVE CLOUDS AS A FUNCTION OF              ADB1F405.176    
!             THE LOCAL TEMPERATURE                                        ADB1F405.177    
!                                                                          FILL3A.680    
!     LAYER CLOUDS:                                                        FILL3A.681    
      REAL      !, INTENT(IN)                                              FILL3A.682    
     &     LCCWC1(NPD_FIELD, NCLDS+1/(NCLDS+1))                            FILL3A.683    
!             LIQUID WATER CONTENTS                                        AYY1F404.395    
     &   , LCCWC2(NPD_FIELD, NCLDS+1/(NCLDS+1))                            FILL3A.685    
!             ICE WATER CONTENTS                                           AYY1F404.396    
     &   , LCA_AREA(NPD_FIELD, NCLDS+1/(NCLDS+1))                          ASK1F405.303    
!             AREA COVERAGE FRACTIONS OF LAYER CLOUDS                      ASK1F405.304    
     &   , LCA_BULK(NPD_FIELD, NCLDS+1/(NCLDS+1))                          ASK1F405.305    
!             BULK COVERAGE FRACTIONS OF LAYER CLOUDS                      ASK1F405.306    
!                                                                          FILL3A.689    
!     ARRAYS FOR MICROPHYSICS:                                             FILL3A.690    
      LOGICAL   !, INTENT(IN)                                              FILL3A.691    
     &     L_MICROPHYSICS                                                  FILL3A.692    
!             MICROPHYSICAL FLAG                                           FILL3A.693    
     &   , L_AEROSOL_CCN                                                   ADB1F401.242    
!             FLAG TO USE AEROSOLS TO FIND CCN                             ADB1F401.243    
     &   , L_CLOUD_WATER_PARTITION                                         AYY1F404.397    
!             FLAG TO USE PROGNOSTIC CLOUD ICE CONTENTS                    AYY1F404.398    
     &   , LAND_G(NPD_PROFILE)                                             FILL3A.696    
!             FLAG FOR LAND POINTS                                         FILL3A.697    
      REAL      !, INTENT(IN)                                              FILL3A.698    
     &     ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2)                            AYY1F404.399    
!             MIXING RATIOS OF ACCUMULATION-MODE SULPHATE                  AYY1F404.400    
     &   , DISS_SULPHATE(SULP_DIM1, SULP_DIM2)                             AYY1F404.401    
!             MIXING RATIOS OF DISSOLVED SULPHATE                          AYY1F404.402    
!                                                                          FILL3A.702    
!     REPRESENTATION OF CLOUDS                                             FILL3A.703    
      INTEGER   !, INTENT(IN)                                              FILL3A.704    
     &     I_CLOUD_REPRESENTATION                                          FILL3A.705    
!             REPRESENTATION OF CLOUDS                                     FILL3A.706    
!                                                                          ADB2F404.28     
!     PARAMETRIZATIONS FOR CLOUDS:                                         ADB2F404.29     
      INTEGER   !, INTENT(IN)                                              ADB2F404.30     
     &     I_CONDENSED_PARAM(NPD_CLOUD_COMPONENT)                          ADB2F404.31     
!             TYPES OF PARAMETRIZATION USED FOR CONDENSED                  ADB2F404.32     
!             COMPONENTS IN CLOUDS                                         ADB2F404.33     
!     LIMITS ON SIZES OF PARTICLES                                         ADB2F404.34     
      REAL      !, INTENT(IN)                                              ADB2F404.35     
     &     CONDENSED_MIN_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.36     
!             MINIMUM DIMENSION OF EACH CONDENSED COMPONENT                ADB2F404.37     
     &   , CONDENSED_MAX_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.38     
!             MAXIMUM DIMENSION OF EACH CONDENSED COMPONENT                ADB2F404.39     
!                                                                          FILL3A.707    
!     ASSIGNED CLOUD FIELDS:                                               FILL3A.708    
      INTEGER   !, INTENT(OUT)                                             FILL3A.709    
     &     N_CONDENSED                                                     FILL3A.710    
!             NUMBER OF CONDENSED COMPONENTS                               FILL3A.711    
     &   , TYPE_CONDENSED(NPD_CLOUD_COMPONENT)                             FILL3A.712    
!             TYPES OF CONDENSED COMPONENTS                                FILL3A.713    
      REAL      !, INTENT(OUT)                                             FILL3A.714    
     &     W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 FILL3A.715    
!             TOTAL AMOUNTS OF CLOUD                                       FILL3A.716    
     &   , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              FILL3A.717    
!             FRACTION OF EACH TYPE OF CLOUD                               ADB1F401.244    
     &   , CONDENSED_DIM_CHAR(NPD_PROFILE, 0: NPD_LAYER                    ADB2F404.40     
     &      , NPD_CLOUD_COMPONENT)                                         ADB2F404.41     
!             CHARACTERISTIC DIMENSIONS OF CLOUDY COMPONENTS               ADB2F404.42     
     &   , CONDENSED_MIX_RAT_AREA(NPD_PROFILE, 0: NPD_LAYER                ASK1F405.307    
     &      , NPD_CLOUD_COMPONENT)                                         FILL3A.722    
!             MASS MIXING RATIOS OF CONDENSED COMPONENTS USING AREA CLD    ASK1F405.308    
     &   , NTOT_DIAG_G(NPD_PROFILE, NPD_LAYER)                             AAJ3F404.93     
!             DIAGNOSTIC ARRAY FOR NTOT (GATHERED)                         AAJ3F404.94     
     &   , STRAT_LWC_DIAG_G(NPD_PROFILE, NPD_LAYER)                        AAJ3F404.95     
!             DIAGNOSTIC ARRAY FOR STRATIFORM LWC (GATHERED)               AAJ3F404.96     
     &   , SO4_CCN_DIAG_G(NPD_PROFILE, NPD_LAYER)                          AAJ3F404.97     
!             DIAGNOSTIC ARRAY FOR SO4 CCN MASS CONC (GATHERED)            AAJ3F404.98     
!                                                                          AAJ3F404.99     
!                                                                          FILL3A.724    
!     MICROPHYSICAL DIAGNOSTICS:                                           FILL3A.725    
      LOGICAL                                                              FILL3A.726    
     &     RE_CONV_FLAG                                                    FILL3A.727    
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD        FILL3A.728    
     &   , RE_STRAT_FLAG                                                   FILL3A.729    
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD        FILL3A.730    
     &   , WGT_CONV_FLAG                                                   FILL3A.731    
!             DIAGNOSE WEIGHT FOR CONVECTIVE CLOUD                         FILL3A.732    
     &   , WGT_STRAT_FLAG                                                  FILL3A.733    
!             DIAGNOSE WEIGHT FOR STRATIFORM CLOUD                         FILL3A.734    
     &   , LWP_STRAT_FLAG                                                  FILL3A.735    
!             DIAGNOSE LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD       FILL3A.736    
     &   , NTOT_DIAG_FLAG                                                  AAJ3F404.100    
!             DIAGNOSE DROPLET CONCENTRATION*WEIGHT                        AAJ3F404.101    
     &   , STRAT_LWC_DIAG_FLAG                                             AAJ3F404.102    
!             DIAGNOSE STRATIFORM LWC*WEIGHT                               AAJ3F404.103    
     &   , SO4_CCN_DIAG_FLAG                                               AAJ3F404.104    
!             DIAGNOSE SO4 CCN MASS CONC*COND. SAMP. WEIGHT                AAJ3F404.105    
     &   , COND_SAMP_WGT_FLAG                                              AAJ3F404.106    
!             DIAGNOSE CONDITIONAL SAMPLING WEIGHT                         AAJ3F404.107    
!                                                                          FILL3A.737    
      REAL                                                                 FILL3A.738    
     &     RE_CONV(NPD_FIELD, NCLDS)                                       FILL3A.739    
!             EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD                 FILL3A.740    
     &   , RE_STRAT(NPD_FIELD, NCLDS)                                      FILL3A.741    
!             EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD                 FILL3A.742    
     &   , WGT_CONV(NPD_FIELD, NCLDS)                                      FILL3A.743    
!             WEIGHT FOR CONVECTIVE CLOUD                                  FILL3A.744    
     &   , WGT_STRAT(NPD_FIELD, NCLDS)                                     FILL3A.745    
!             WEIGHT FOR STRATIFORM CLOUD                                  FILL3A.746    
     &   , LWP_STRAT(NPD_FIELD, NCLDS)                                     FILL3A.747    
!             LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD                FILL3A.748    
     &   , NTOT_DIAG(NPD_FIELD, NCLDS)                                     AAJ3F404.108    
!             DROPLET CONCENTRATION*WEIGHT                                 AAJ3F404.109    
     &   , STRAT_LWC_DIAG(NPD_FIELD, NCLDS)                                AAJ3F404.110    
!             STRATIFORM LWC*WEIGHT                                        AAJ3F404.111    
     &   , SO4_CCN_DIAG(NPD_FIELD, NCLDS)                                  AAJ3F404.112    
!             SO4 CCN MASS CONC*COND. SAMP. WEIGHT                         AAJ3F404.113    
     &   , COND_SAMP_WGT(NPD_FIELD, NCLDS)                                 AAJ3F404.114    
!             CONDITIONAL SAMPLING WEIGHT                                  AAJ3F404.115    
!                                                                          AAJ3F404.116    
!                                                                          FILL3A.749    
!                                                                          FILL3A.750    
!     LOCAL VARIABLES:                                                     FILL3A.751    
      INTEGER                                                              FILL3A.752    
     &     I                                                               FILL3A.753    
!             LOOP VARIABLE                                                FILL3A.754    
     &   , J                                                               ADB2F404.43     
!             LOOP VARIABLE                                                ADB2F404.44     
     &   , L                                                               FILL3A.755    
!             LOOP VARIABLE                                                FILL3A.756    
     &   , LG                                                              FILL3A.757    
!             INDEX TO GATHER                                              FILL3A.758    
      LOGICAL                                                              ADB1F405.178    
     &     L_GLACIATED_TOP(NPD_PROFILE)                                    ADB1F405.179    
!             LOGICAL FOR GLACIATED TOPS IN CONVECTIVE CLOUD.              ADB1F405.180    
                                                                           ADB1F405.181    
!                                                                          FILL3A.759    
      REAL                                                                 FILL3A.760    
     &     LIQ_FRAC(NPD_PROFILE)                                           FILL3A.761    
!             FRACTION OF LIQUID CLOUD WATER                               FILL3A.762    
     &   , LIQ_FRAC_CONV(NPD_PROFILE)                                      FILL3A.763    
!             FRACTION OF LIQUID WATER IN CONVECTIVE CLOUD                 FILL3A.764    
     &   , T_GATHER(NPD_PROFILE)                                           FILL3A.765    
!             GATHERED TEMPERATURE FOR LSP_FOCWWIL                         FILL3A.766    
     &   , T_LIST(NPD_PROFILE)                                             FILL3A.767    
!             LIST OF TEMPERATURES                                         FILL3A.768    
     &   , TOTAL_MASS(NPD_PROFILE)                                         FILL3A.769    
!             TOTAL MASS IN CONVECTIVE CLOUD                               FILL3A.770    
     &   , CC_DEPTH(NPD_PROFILE)                                           FILL3A.771    
!             DEPTH OF CONVECTIVE CLOUD                                    FILL3A.772    
     &   , CONDENSED_MIX_RAT_BULK(NPD_PROFILE, 0: NPD_LAYER                ASK1F405.309    
     &      , NPD_CLOUD_COMPONENT)                                         ASK1F405.310    
!             MASS MIXING RATIOS OF CONDENSED COMPONENTS USING BULK CLD    ASK1F405.311    
     &   , DENSITY_AIR(NPD_PROFILE, NPD_LAYER)                             FILL3A.773    
!             DENSITY OF AIR                                               ADB2F404.45     
     &   , CONVECTIVE_CLOUD_LAYER(NPD_PROFILE)                             FILL3A.775    
!             AMOUNT OF CONVECTIVE CLOUD IN TH CURRENT LAYER               FILL3A.776    
     &   , MEAN_WATER_CONTENT                                              FILL3A.781    
!             MEAN WATER CONTENT                                           FILL3A.782    
     &   , MEAN_ICE_CONTENT                                                FILL3A.783    
!             MEAN ICE CONTENT                                             FILL3A.784    
     &   , CONDENSED_LIMIT                                                 FILL3A.785    
!             LOWER LIMIT ON WATER CONTENTS                                FILL3A.786    
!                                                                          FILL3A.787    
      PARAMETER(CONDENSED_LIMIT=1.E-8)                                     FILL3A.788    
!                                                                          FILL3A.789    
!                                                                          FILL3A.790    
!                                                                          FILL3A.791    
!     CHECK THE LIMITS FOR CONVECTIVE CLOUD.                               FILL3A.792    
      DO L=1, N_PROFILE                                                    FILL3A.793    
         LG=I_GATHER(L)                                                    FILL3A.794    
         IF ( (CCB(LG).GT.NCLDS).OR.(CCB(LG).LT.1) ) CCB(LG)=1             FILL3A.795    
         IF ( (CCT(LG).GT.NCLDS+1).OR.(CCT(LG).LT.2) ) CCT(LG)=NCLDS+1     FILL3A.796    
         IF (L_3D_CCA) THEN                                                AJX0F404.66     
           IF (CCA(LG,CCB(LG)).LT.TOL_TEST) CCCWP(LG)=0.0E+00              AJX0F404.67     
         ELSE                                                              AJX0F404.68     
           IF (CCA(LG,1).LT.TOL_TEST) CCCWP(LG)=0.0E+00                    AJX0F404.69     
         ENDIF                                                             AJX0F404.70     
      ENDDO                                                                FILL3A.798    
!                                                                          FILL3A.799    
!                                                                          FILL3A.800    
!     SET THE COMPONENTS WITHIN THE CLOUDS. IN THE UNIFIED MODEL WE        FILL3A.801    
!     HAVE FOUR COMPONENTS: STRATIFORM ICE AND WATER AND CONVECTIVE        FILL3A.802    
!     ICE AND WATER.                                                       FILL3A.803    
      N_CONDENSED=4                                                        FILL3A.804    
      TYPE_CONDENSED(1)=IP_CLCMP_ST_WATER                                  FILL3A.805    
      TYPE_CONDENSED(2)=IP_CLCMP_ST_ICE                                    FILL3A.806    
      TYPE_CONDENSED(3)=IP_CLCMP_CNV_WATER                                 FILL3A.807    
      TYPE_CONDENSED(4)=IP_CLCMP_CNV_ICE                                   FILL3A.808    
!                                                                          FILL3A.809    
!                                                                          FILL3A.810    
!                                                                          FILL3A.811    
!     SET THE TOTAL AMOUNTS OF CLOUD AND THE FRACTIONS COMPRISED BY        FILL3A.812    
!     CONVECTIVE AND STRATIFORM COMPONENTS.                                FILL3A.813    
!                                                                          FILL3A.814    
!     ZERO THE AMOUNTS OF CLOUD IN THE UPPER LAYERS.                       FILL3A.815    
      DO I=1, NLEVS-NCLDS                                                  FILL3A.816    
         DO L=1, N_PROFILE                                                 FILL3A.817    
            W_CLOUD(L, I)=0.0E+00                                          FILL3A.818    
         ENDDO                                                             FILL3A.819    
      ENDDO                                                                FILL3A.820    
!                                                                          FILL3A.821    
      IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT .AND.              AYY1F404.403    
     &    .NOT. L_CLOUD_WATER_PARTITION) THEN                              AYY1F404.404    
!  This cloud representation not available with new cloud microphysics     AYY1F404.405    
!                                                                          FILL3A.823    
!        THE CLOUDS ARE DIVIDED INTO MIXED-PHASE STRATIFORM AND            FILL3A.824    
!        CONVECTIVE CLOUDS: LSP_FOCWWIL GIVES THE PARTITIONING BETWEEN     ADB1F405.182    
!        ICE AND WATER IN STRATIFORM CLOUDS AND IN CONVECTIVE CLOUD,       ADB1F405.183    
!        UNLESS THE OPTION TO PARTITION AS A FUNCTION OF THE LOCAL         ADB1F405.184    
!        TEMPERATURE IS SELECTED. WITHIN CONVECTIVE CLOUD THE LIQUID       ADB1F405.185    
!        WATER CONTENT IS DISTRIBUTED UNIFORMLY THROUGHOUT THE CLOUD.      ADB1F405.186    
!                                                                          FILL3A.829    
!        CONVECTIVE CLOUD:                                                 FILL3A.830    
!                                                                          FILL3A.831    
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.832    
            DO L=1, N_PROFILE                                              FILL3A.833    
               CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)=0.0E+00    ASK1F405.312    
               CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)=0.0E+00      ASK1F405.313    
               CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_WATER)=0.0E+00    ASK1F405.314    
               CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_ICE)=0.0E+00      ASK1F405.315    
            ENDDO                                                          FILL3A.836    
         ENDDO                                                             FILL3A.837    
!                                                                          FILL3A.838    
!                                                                          FILL3A.841    
         IF (L_LOCAL_CNV_PARTITION) THEN                                   ADB1F405.187    
!                                                                          ADB1F405.188    
!           PARTITION BETWEEN ICE AND WATER USING THE RELATIONSHIPS        ADB1F405.189    
!           GIVEN IN BOWER ET AL. (1996, Q.J. 122 p 1815-1844). ICE        ADB1F405.190    
!           IS ALLOWED IN A LAYER WARMER THAN THE FREEZING POINT           ADB1F405.191    
!           ONLY IF THE TOP OF THE CLOUD IS GLACIATED.                     ADB1F405.192    
!                                                                          ADB1F405.193    
            DO L=1, N_PROFILE                                              ADB1F405.194    
               IF (T(L, NLEVS+2-CCT(I_GATHER(L))).LT.TM) THEN              ADB1F405.195    
                  L_GLACIATED_TOP(L)=.TRUE.                                ADB1F405.196    
               ELSE                                                        ADB1F405.197    
                  L_GLACIATED_TOP(L)=.FALSE.                               ADB1F405.198    
               ENDIF                                                       ADB1F405.199    
            ENDDO                                                          ADB1F405.200    
                                                                           ADB1F405.201    
         ELSE                                                              ADB1F405.202    
!                                                                          ADB1F405.203    
!           PARTITION BETWEEN ICE AND WATER AS DIRECTED BY THE             ADB1F405.204    
!           TEMPERATURE IN THE MIDDLE OF THE TOP LAYER OF THE CLOUD.       ADB1F405.205    
!           THE PARTITIONING MAY BE PRECALCULATED IN THIS CASE.            ADB1F405.206    
!                                                                          ADB1F405.207    
            DO L=1, N_PROFILE                                              ADB1F405.208    
               T_GATHER(L)=T(L, NLEVS+2-CCT(I_GATHER(L)))                  ADB1F405.209    
            ENDDO                                                          ADB1F405.210    
            CALL LSP_FOCWWIL(T_GATHER, N_PROFILE, LIQ_FRAC_CONV)           ADB1F405.211    
!                                                                          ADB1F405.212    
         ENDIF                                                             ADB1F405.213    
!                                                                          ADB1F405.214    
!                                                                          ADB1F405.215    
         DO L=1, N_PROFILE                                                 FILL3A.842    
            TOTAL_MASS(L)=0.0E+00                                          FILL3A.851    
         ENDDO                                                             FILL3A.852    
!                                                                          FILL3A.853    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.46     
            DO L=1, N_PROFILE                                              FILL3A.855    
               LG=I_GATHER(L)                                              FILL3A.856    
               IF ( (CCT(LG).GE.NLEVS+2-I).AND.                            FILL3A.857    
     &              (CCB(LG).LE.NLEVS+1-I) ) THEN                          FILL3A.858    
                  TOTAL_MASS(L)=TOTAL_MASS(L)+D_MASS(L, I)                 FILL3A.859    
               ENDIF                                                       FILL3A.860    
            ENDDO                                                          FILL3A.861    
         ENDDO                                                             FILL3A.862    
!                                                                          ADB1F405.216    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.47     
            DO L=1, N_PROFILE                                              FILL3A.864    
               LG=I_GATHER(L)                                              FILL3A.865    
               IF ( (CCT(LG).GE.NLEVS+2-I).AND.                            FILL3A.866    
     &              (CCB(LG).LE.NLEVS+1-I) ) THEN                          FILL3A.867    
                  IF (L_LOCAL_CNV_PARTITION) THEN                          ADB1F405.217    
!                    THE PARTITIONING IS RECALCULATED FOR EACH LAYER       ADB1F405.218    
!                    OTHERWISE A GENERIC VALUE IS USED.                    ADB1F405.219    
                     LIQ_FRAC_CONV(L)=MAX(0.0E+00, MIN(1.0E+00             ADB1F405.220    
     &                  , 1.61E-02*(T(L, I)-TM)+8.9E-01))                  ADB1F405.221    
                     IF ((T(L, I).GT.TM).AND.(.NOT.L_GLACIATED_TOP(L)))    ADB1F405.222    
     &                  LIQ_FRAC_CONV(L)=1.0E+00                           ADB1F405.223    
                  ENDIF                                                    ADB1F405.224    
                  CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)         ASK1F405.316    
     &               =CCCWP(LG)*LIQ_FRAC_CONV(L)                           ADB1F405.225    
     &               /(TOTAL_MASS(L)+TOL_MACHINE)                          FILL3A.870    
                  CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)           ASK1F405.317    
     &               =CCCWP(LG)*(1.0E+00-LIQ_FRAC_CONV(L))                 ADB1F405.226    
     &               /(TOTAL_MASS(L)+TOL_MACHINE)                          FILL3A.873    
                  CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_WATER)         ASK1F405.318    
     &               =CCCWP(LG)*LIQ_FRAC_CONV(L)                           ASK1F405.319    
     &               /(TOTAL_MASS(L)+TOL_MACHINE)                          ASK1F405.320    
                  CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_ICE)           ASK1F405.321    
     &               =CCCWP(LG)*(1.0-LIQ_FRAC_CONV(L))                     ASK1F405.322    
     &               /(TOTAL_MASS(L)+TOL_MACHINE)                          ASK1F405.323    
               ENDIF                                                       FILL3A.874    
            ENDDO                                                          FILL3A.875    
         ENDDO                                                             FILL3A.876    
!                                                                          FILL3A.877    
!                                                                          FILL3A.878    
!        STRATIFORM CLOUDS:                                                FILL3A.879    
!                                                                          FILL3A.880    
!        PARTITION BETWEEN ICE AND WATER DEPENDING ON THE                  FILL3A.881    
!        LOCAL TEMPERATURE.                                                FILL3A.882    
!                                                                          FILL3A.883    
         DO I=1, NCLDS                                                     FILL3A.889    
            CALL LSP_FOCWWIL(T(L, NLEVS+1-I), N_PROFILE, LIQ_FRAC)         ADB1F401.245    
            DO L=1, N_PROFILE                                              FILL3A.890    
               LG=I_GATHER(L)                                              FILL3A.891    
               IF (LCA_AREA(LG, I).GT.TOL_TEST) THEN                       ASK1F405.324    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.325    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))                        FILL3A.894    
     &               *LIQ_FRAC(L)/LCA_AREA(LG, I)                          ASK1F405.326    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.327    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))                        FILL3A.897    
     &               *(1.0E+00-LIQ_FRAC(L))/LCA_AREA(LG, I)                ASK1F405.328    
               ELSE                                                        FILL3A.899    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.329    
     &               =0.0E+00                                              FILL3A.901    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.330    
     &               =0.0E+00                                              FILL3A.903    
               ENDIF                                                       FILL3A.904    
!                                                                          ASK1F405.331    
               IF (LCA_BULK(LG, I).GT.TOL_TEST) THEN                       ASK1F405.332    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.333    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))                        ASK1F405.334    
     &               *LIQ_FRAC(L)/LCA_BULK(LG, I)                          ASK1F405.335    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.336    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))                        ASK1F405.337    
     &               *(1.0E+00-LIQ_FRAC(L))/LCA_BULK(LG, I)                ASK1F405.338    
               ELSE                                                        ASK1F405.339    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.340    
     &               =0.0E+00                                              ASK1F405.341    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.342    
     &               =0.0E+00                                              ASK1F405.343    
               ENDIF                                                       ASK1F405.344    
            ENDDO                                                          FILL3A.905    
         ENDDO                                                             FILL3A.906    
!                                                                          FILL3A.907    
!                                                                          FILL3A.908    
!        CLOUD FRACTIONS:                                                  FILL3A.909    
!                                                                          FILL3A.910    
       IF (L_3D_CCA) THEN                                                  AJX0F404.71     
         DO I=1, NCLDS                                                     FILL3A.911    
            DO L=1, N_PROFILE                                              FILL3A.912    
               LG=I_GATHER(L)                                              FILL3A.913    
               W_CLOUD(L, NLEVS+1-I)                                       AJX0F404.72     
     &            =CCA(LG,I)+(1.0E+00-CCA(LG,I))*LCA_AREA(LG, I)           ASK1F405.345    
               FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)                AJX0F404.74     
     &            =CCA(LG,I)/(W_CLOUD(L, NLEVS+1-I)+TOL_MACHINE)           AJX0F404.75     
               FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_STRAT)               AJX0F404.76     
     &            =1.0E+00-FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)    AJX0F404.77     
            ENDDO                                                          AJX0F404.78     
         ENDDO                                                             AJX0F404.79     
       ELSE                                                                AJX0F404.80     
         DO I=1, NCLDS                                                     AJX0F404.81     
            DO L=1, N_PROFILE                                              AJX0F404.82     
              LG=I_GATHER(L)                                               AJX0F404.83     
               IF ( (I.LE.CCT(LG)-1).AND.(I.GE.CCB(LG)) ) THEN             FILL3A.914    
                  W_CLOUD(L, NLEVS+1-I)                                    FILL3A.915    
     &               =CCA(LG,1)+(1.0E+00-CCA(LG,1))*LCA_AREA(LG, I)        ASK1F405.346    
                  FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)             FILL3A.917    
     &               =CCA(LG,1)/(W_CLOUD(L, NLEVS+1-I)+TOL_MACHINE)        AJX0F404.85     
               ELSE                                                        FILL3A.919    
                  W_CLOUD(L, NLEVS+1-I)=LCA_AREA(LG, I)                    ASK1F405.347    
                  FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)=0.0E+00     FILL3A.921    
               ENDIF                                                       FILL3A.922    
               FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_STRAT)               FILL3A.923    
     &            =1.0E+00-FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)    FILL3A.924    
            ENDDO                                                          FILL3A.925    
         ENDDO                                                             FILL3A.926    
       ENDIF                                                               AJX0F404.86     
!                                                                          FILL3A.927    
!        REMOVE VERY THIN CLOUDS TO PREVENT                                FILL3A.928    
!        PROBLEMS OF ILL-CONDITIONING.                                     FILL3A.929    
!                                                                          FILL3A.930    
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.931    
            DO L=1, N_PROFILE                                              FILL3A.932    
               MEAN_WATER_CONTENT                                          FILL3A.933    
     &            =CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_WATER)         ASK1F405.348    
     &            +(CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)       ASK1F405.349    
     &            -CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_WATER))        ASK1F405.350    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CONV)                    FILL3A.937    
               MEAN_ICE_CONTENT                                            FILL3A.938    
     &            =CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_ICE)           ASK1F405.351    
     &            +(CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)         ASK1F405.352    
     &            -CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_ICE))          ASK1F405.353    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CONV)                    FILL3A.942    
               IF ( (MEAN_WATER_CONTENT.LT.CONDENSED_LIMIT)                FILL3A.943    
     &              .AND.(MEAN_ICE_CONTENT.LT.CONDENSED_LIMIT) ) THEN      FILL3A.944    
                  W_CLOUD(L, I)=0.0E+00                                    FILL3A.945    
               ENDIF                                                       FILL3A.946    
            ENDDO                                                          FILL3A.947    
         ENDDO                                                             FILL3A.948    
!                                                                          FILL3A.949    
!                                                                          FILL3A.950    
!                                                                          FILL3A.951    
!                                                                          FILL3A.952    
      ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN               FILL3A.953    
!                                                                          FILL3A.954    
!        HERE THE CLOUDS ARE SPLIT INTO FOUR SEPARATE TYPES.               FILL3A.955    
!        THE PARTITIONING BETWEEN ICE AND WATER IS REGARDED AS             ADB1F405.227    
!        DETERMINING THE AREAS WITHIN THE GRID_BOX COVERED BY              ADB1F405.228    
!        ICE OR WATER CLOUD, RATHER THAN AS DETERMINING THE IN-CLOUD       ADB1F405.229    
!        MIXING RATIOS. THE GRID-BOX MEAN ICE WATER CONTENTS IN            ADB1F405.230    
!        STRATIFORM CLOUDS MAY BE PREDICTED BY THE ICE MICROPHYSICS        ADB1F405.231    
!        SCHEME OR MAY BE DETERMINED AS A FUNCTION OF THE TEMPERATURE      ADB1F405.232    
!        (LSP_FOCWWIL). IN CONVECTIVE CLOUDS THE PARTITIONING MAY BE       ADB1F405.233    
!        DONE USING THE SAME FUNCTION, LSP_FOCWWIL, BASED ON A SINGLE      ADB1F405.234    
!        TEMPERATURE, OR USING A PARTITION BASED ON THE LOCAL              ADB1F405.235    
!        TEMPERATURE.                                                      ADB1F405.236    
!                                                                          FILL3A.959    
!        CONVECTIVE CLOUD:                                                 FILL3A.960    
!                                                                          FILL3A.961    
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.962    
            DO L=1, N_PROFILE                                              FILL3A.963    
               CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)=0.0E+00    ASK1F405.354    
               CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)=0.0E+00      ASK1F405.355    
               CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_WATER)=0.0E+00    ASK1F405.356    
               CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_ICE)=0.0E+00      ASK1F405.357    
            ENDDO                                                          FILL3A.966    
         ENDDO                                                             FILL3A.967    
!                                                                          FILL3A.968    
         DO L=1, N_PROFILE                                                 FILL3A.969    
            TOTAL_MASS(L)=0.0E+00                                          FILL3A.970    
         ENDDO                                                             FILL3A.971    
!                                                                          FILL3A.972    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.48     
            DO L=1, N_PROFILE                                              FILL3A.974    
               LG=I_GATHER(L)                                              FILL3A.975    
               IF ( (CCT(LG).GE.NLEVS+2-I).AND.                            FILL3A.976    
     &              (CCB(LG).LE.NLEVS+1-I) ) THEN                          FILL3A.977    
                  TOTAL_MASS(L)=TOTAL_MASS(L)+D_MASS(L, I)                 FILL3A.978    
               ENDIF                                                       FILL3A.979    
            ENDDO                                                          FILL3A.980    
         ENDDO                                                             FILL3A.981    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.49     
            DO L=1, N_PROFILE                                              FILL3A.983    
               LG=I_GATHER(L)                                              FILL3A.984    
               IF ( (CCT(LG).GE.NLEVS+2-I).AND.                            FILL3A.985    
     &              (CCB(LG).LE.NLEVS+1-I) ) THEN                          FILL3A.986    
                  CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)         ASK1F405.358    
     &               =CCCWP(LG)/(TOTAL_MASS(L)+TOL_MACHINE)                FILL3A.988    
                  CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)           ASK1F405.359    
     &               =CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)     ASK1F405.360    
                  CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_WATER)         ASK1F405.361    
     &               =CCCWP(LG)/(TOTAL_MASS(L)+TOL_MACHINE)                ASK1F405.362    
                  CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_ICE)           ASK1F405.363    
     &               =CONDENSED_MIX_RAT_BULK(L, I, IP_CLCMP_CNV_WATER)     ASK1F405.364    
               ENDIF                                                       FILL3A.991    
            ENDDO                                                          FILL3A.992    
         ENDDO                                                             FILL3A.993    
!                                                                          FILL3A.994    
!        STRATIFORM CLOUDS:                                                FILL3A.995    
!                                                                          FILL3A.996    
         DO I=1, NCLDS                                                     FILL3A.997    
            DO L=1, N_PROFILE                                              FILL3A.998    
               LG=I_GATHER(L)                                              FILL3A.999    
               IF (LCA_AREA(LG, I).GT.TOL_TEST) THEN                       ASK1F405.365    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.366    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))/LCA_AREA(LG, I)        ASK1F405.367    
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.368    
     &          =CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.369    
               ELSE                                                        FILL3A.1005   
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.370    
     &               =0.0E+00                                              FILL3A.1007   
                 CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.371    
     &               =0.0E+00                                              FILL3A.1009   
               ENDIF                                                       FILL3A.1010   
!                                                                          ASK1F405.372    
               IF (LCA_BULK(LG, I).GT.TOL_TEST) THEN                       ASK1F405.373    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.374    
     &               =(LCCWC1(LG, I)+LCCWC2(LG, I))/LCA_BULK(LG, I)        ASK1F405.375    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.376    
     &          =CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.377    
               ELSE                                                        ASK1F405.378    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_WATER)   ASK1F405.379    
     &               =0.0E+00                                              ASK1F405.380    
                 CONDENSED_MIX_RAT_BULK(L, NLEVS+1-I, IP_CLCMP_ST_ICE)     ASK1F405.381    
     &               =0.0E+00                                              ASK1F405.382    
               ENDIF                                                       ASK1F405.383    
            ENDDO                                                          FILL3A.1011   
         ENDDO                                                             FILL3A.1012   
!                                                                          FILL3A.1013   
!                                                                          FILL3A.1014   
!        CLOUD FRACTIONS:                                                  FILL3A.1015   
!                                                                          FILL3A.1016   
         IF (L_LOCAL_CNV_PARTITION) THEN                                   ADB1F405.237    
!                                                                          ADB1F405.238    
!           PARTITION BETWEEN ICE AND WATER USING THE RELATIONSHIPS        ADB1F405.239    
!           GIVEN IN BOWER ET AL. (1996, Q.J. 122 p 1815-1844). ICE        ADB1F405.240    
!           IS ALLOWED IN A LAYER WARMER THAN THE FREEZING POINT           ADB1F405.241    
!           ONLY IF THE TOP OF THE CLOUD IS GLACIATED.                     ADB1F405.242    
!                                                                          ADB1F405.243    
            DO L=1, N_PROFILE                                              ADB1F405.244    
               IF (T(L, NLEVS+2-CCT(I_GATHER(L))).LT.TM) THEN              ADB1F405.245    
                  L_GLACIATED_TOP(L)=.TRUE.                                ADB1F405.246    
               ELSE                                                        ADB1F405.247    
                  L_GLACIATED_TOP(L)=.FALSE.                               ADB1F405.248    
               ENDIF                                                       ADB1F405.249    
            ENDDO                                                          ADB1F405.250    
                                                                           ADB1F405.251    
         ELSE                                                              ADB1F405.252    
!                                                                          ADB1F405.253    
!           PARTITION BETWEEN ICE AND WATER AS DIRECTED BY THE             ADB1F405.254    
!           TEMPERATURE IN THE MIDDLE OF THE TOP LAYER OF THE CLOUD.       ADB1F405.255    
!           THE PARTITIONING MAY BE PRECALCULATED IN THIS CASE.            ADB1F405.256    
!                                                                          ADB1F405.257    
            DO L=1, N_PROFILE                                              ADB1F405.258    
               T_GATHER(L)=T(L, NLEVS+2-CCT(I_GATHER(L)))                  ADB1F405.259    
            ENDDO                                                          ADB1F405.260    
            CALL LSP_FOCWWIL(T_GATHER, N_PROFILE, LIQ_FRAC_CONV)           ADB1F405.261    
!                                                                          ADB1F405.262    
         ENDIF                                                             ADB1F405.263    
!                                                                          FILL3A.1023   
!                                                                          FILL3A.1024   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1025   
!                                                                          FILL3A.1026   
            IF (.NOT. L_CLOUD_WATER_PARTITION)                             AYY1F404.406    
!           PARTITION STRATIFORM CLOUDS USING THE LOCAL TEMPERATURE.       FILL3A.1027   
     &        CALL LSP_FOCWWIL(T(1, I), N_PROFILE, LIQ_FRAC)               AYY1F404.407    
!                                                                          FILL3A.1029   
          IF (L_3D_CCA) THEN                                               AJX0F404.87     
            DO L=1, N_PROFILE                                              FILL3A.1030   
               LG=I_GATHER(L)                                              FILL3A.1031   
              CONVECTIVE_CLOUD_LAYER(L)=CCA(LG,NLEVS+1-I)                  AJX4F405.4      
            ENDDO                                                          AJX0F404.89     
          ELSE                                                             AJX0F404.90     
            DO L=1, N_PROFILE                                              AJX0F404.91     
            LG=I_GATHER(L)                                                 AJX0F404.92     
               IF ( (CCT(LG).GE.NLEVS+2-I).AND.                            FILL3A.1033   
     &              (CCB(LG).LE.NLEVS+1-I) ) THEN                          FILL3A.1034   
                CONVECTIVE_CLOUD_LAYER(L)=CCA(LG,1)                        AJX0F404.93     
               ELSE                                                        FILL3A.1036   
                  CONVECTIVE_CLOUD_LAYER(L)=0.0E+00                        FILL3A.1037   
               ENDIF                                                       FILL3A.1038   
            ENDDO                                                          AJX0F404.94     
          ENDIF                                                            AJX0F404.95     
!                                                                          FILL3A.1039   
            DO L=1, N_PROFILE                                              AJX0F404.96     
            LG=I_GATHER(L)                                                 AJX0F404.97     
               W_CLOUD(L, I)                                               FILL3A.1040   
     &            =CONVECTIVE_CLOUD_LAYER(L)                               FILL3A.1041   
     &            +(1.0E+00-CONVECTIVE_CLOUD_LAYER(L))                     FILL3A.1042   
     &            *LCA_AREA(LG, NLEVS+1-I)                                 ASK1F405.384    
!                                                                          AYY1F404.408    
               IF (L_CLOUD_WATER_PARTITION) THEN                           AYY1F404.409    
!  PARTITION STRATIFORM CLOUDS USING THE RATIO OF CLOUD WATER CONTENTS.    AYY1F404.410    
                 IF (LCA_AREA(LG, NLEVS+1-I).GT.TOL_TEST) THEN             ASK1F405.385    
                   LIQ_FRAC(L) = LCCWC1(LG, NLEVS+1-I) /                   AYY1F404.412    
     &              (LCCWC1(LG, NLEVS+1-I) + LCCWC2(LG, NLEVS+1-I))        AYY1F404.413    
                 ELSE                                                      AYY1F404.414    
                   LIQ_FRAC(L) = 0.0E+00                                   AYY1F404.415    
                 ENDIF                                                     AYY1F404.416    
               ENDIF                                                       AYY1F404.417    
!                                                                          FILL3A.1044   
               IF (L_LOCAL_CNV_PARTITION) THEN                             ADB1F405.264    
!                                                                          ADB1F405.265    
!                THE PARTITIONING BETWEEN ICE AND WATER MUST BE            ADB1F405.266    
!                RECALCULATED FOR THIS LAYER AS A FUNCTION OF THE          ADB1F405.267    
!                LOCAL TEMPERATURE, BUT ICE IS ALLOWED ABOVE THE           ADB1F405.268    
!                FREEZING POINT ONLY IF THE TOP OF THE CLOUD IS i          ADB1F405.269    
!                GLACIATED.                                                ADB1F405.270    
                 LIQ_FRAC_CONV(L)=MAX(0.0E+00, MIN(1.0E+00                 ADB1F405.271    
     &              , 1.61E-02*(T(L, I)-TM)+8.9E-01))                      ADB1F405.272    
                 IF ( (T(L, I).GT.TM).AND.                                 ADB1F405.273    
     &              .NOT.L_GLACIATED_TOP(L) ) THEN                         ADB1F405.274    
                    LIQ_FRAC_CONV(L)=1.0E+00                               ADB1F405.275    
                 ENDIF                                                     ADB1F405.276    
                                                                           ADB1F405.277    
               ENDIF                                                       ADB1F405.278    
!                                                                          ADB1F405.279    
               FRAC_CLOUD(L, I, IP_CLOUD_TYPE_SW)                          FILL3A.1045   
     &            =LIQ_FRAC(L)*(1.0E+00-CONVECTIVE_CLOUD_LAYER(L))         FILL3A.1046   
     &            *LCA_AREA(LG, NLEVS+1-I)                                 ASK1F405.386    
     &            /(W_CLOUD(L, I)+TOL_MACHINE)                             FILL3A.1048   
               FRAC_CLOUD(L, I, IP_CLOUD_TYPE_SI)                          FILL3A.1049   
     &            =(1.0E+00-LIQ_FRAC(L))                                   FILL3A.1050   
     &            *(1.0E+00-CONVECTIVE_CLOUD_LAYER(L))                     FILL3A.1051   
     &            *LCA_AREA(LG, NLEVS+1-I)/(W_CLOUD(L, I)+TOL_MACHINE)     ASK1F405.387    
               FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CW)                          FILL3A.1053   
     &            =LIQ_FRAC_CONV(L)*CONVECTIVE_CLOUD_LAYER(L)              FILL3A.1054   
     &            /(W_CLOUD(L, I)+TOL_MACHINE)                             FILL3A.1055   
               FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CI)                          FILL3A.1056   
     &            =(1.0E+00-LIQ_FRAC_CONV(L))*CONVECTIVE_CLOUD_LAYER(L)    FILL3A.1057   
     &            /(W_CLOUD(L, I)+TOL_MACHINE)                             FILL3A.1058   
!                                                                          FILL3A.1059   
            ENDDO                                                          FILL3A.1060   
         ENDDO                                                             FILL3A.1061   
!                                                                          FILL3A.1062   
!                                                                          FILL3A.1063   
!        REMOVE VERY THIN CLOUDS TO PREVENT                                FILL3A.1064   
!        PROBLEMS OF ILL-CONDITIONING.                                     FILL3A.1065   
!                                                                          FILL3A.1066   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1067   
            DO L=1, N_PROFILE                                              FILL3A.1068   
               MEAN_WATER_CONTENT                                          FILL3A.1069   
     &            =CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_WATER)         ASK1F405.388    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_SW)                      FILL3A.1071   
     &            +CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_WATER)        ASK1F405.389    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CW)                      FILL3A.1073   
               MEAN_ICE_CONTENT                                            FILL3A.1074   
     &            =CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_ST_ICE)           ASK1F405.390    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_SI)                      FILL3A.1076   
     &            +CONDENSED_MIX_RAT_AREA(L, I, IP_CLCMP_CNV_ICE)          ASK1F405.391    
     &            *FRAC_CLOUD(L, I, IP_CLOUD_TYPE_CI)                      FILL3A.1078   
               IF ( (MEAN_WATER_CONTENT.LT.CONDENSED_LIMIT)                FILL3A.1079   
     &              .AND.(MEAN_ICE_CONTENT.LT.CONDENSED_LIMIT) ) THEN      FILL3A.1080   
                  W_CLOUD(L, I)=0.0E+00                                    FILL3A.1081   
               ENDIF                                                       FILL3A.1082   
            ENDDO                                                          FILL3A.1083   
         ENDDO                                                             FILL3A.1084   
!                                                                          FILL3A.1085   
!                                                                          FILL3A.1086   
      ENDIF                                                                FILL3A.1087   
!                                                                          FILL3A.1088   
!                                                                          FILL3A.1089   
!                                                                          FILL3A.1090   
!     EFFECTIVE RADII OF WATER CLOUDS: A MICROPHYSICAL PARAMETRIZATION     ADB2F404.50     
!     IS AVAILABLE; OTHERWISE STANDARD VALUES ARE USED.                    ADB2F404.51     
!                                                                          FILL3A.1093   
      IF (L_MICROPHYSICS) THEN                                             FILL3A.1094   
!                                                                          FILL3A.1095   
!        STANDARD VALUES ARE USED FOR ICE CRYSTALS, BUT                    FILL3A.1096   
!        A PARAMETRIZATION PROVIDED BY UMIST AND MRF                       FILL3A.1097   
!        IS USED FOR DROPLETS.                                             FILL3A.1098   
!                                                                          FILL3A.1099   
!        CALCULATE THE DENSITY OF AIR.                                     ADB2F404.52     
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1101   
            DO L=1, N_PROFILE                                              FILL3A.1102   
               DENSITY_AIR(L, I)=P(L, I)/(R*T(L, I))                       FILL3A.1103   
            ENDDO                                                          FILL3A.1104   
         ENDDO                                                             FILL3A.1105   
!                                                                          FILL3A.1106   
         DO L=1, N_PROFILE                                                 FILL3A.1107   
            CC_DEPTH(L)=0.0E+00                                            FILL3A.1108   
         ENDDO                                                             FILL3A.1109   
!                                                                          FILL3A.1110   
         DO L=1, N_PROFILE                                                 FILL3A.1111   
            LG=I_GATHER(L)                                                 FILL3A.1112   
            DO I=NLEVS+2-CCT(LG), NLEVS+1-CCB(LG)                          FILL3A.1113   
               CC_DEPTH(L)=CC_DEPTH(L)+D_MASS(L, I)/DENSITY_AIR(L, I)      FILL3A.1114   
            ENDDO                                                          FILL3A.1115   
         ENDDO                                                             FILL3A.1116   
!                                                                          FILL3A.1117   
         CALL R2_RE_MRF_UMIST(N_PROFILE, NLEVS, NCLDS                      FILL3A.1125   
     &      , I_GATHER                                                     AYY1F404.418    
     &      , L_AEROSOL_CCN                                                AYY1F404.419    
     &      , ACCUM_SULPHATE, DISS_SULPHATE                                AYY1F404.420    
     &      , I_CLOUD_REPRESENTATION                                       FILL3A.1127   
     &      , LAND_G, DENSITY_AIR, CONDENSED_MIX_RAT_BULK, CC_DEPTH        ASK1F405.392    
     &      , CONDENSED_DIM_CHAR                                           AAJ3F404.117    
     &      , NTOT_DIAG_G                                                  AAJ3F404.118    
     &      , STRAT_LWC_DIAG_G                                             AAJ3F404.119    
     &      , SO4_CCN_DIAG_G                                               AAJ3F404.120    
     &      , SULP_DIM1, SULP_DIM2                                         AYY1F404.421    
     &      , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES       AYY1F404.422    
     &      )                                                              FILL3A.1131   
!                                                                          ADB2F404.53     
!        CONSTRAIN THE SIZES OF DROPLETS TO LIE WITHIN THE RANGE OF        ADB2F404.54     
!        VALIDITY OF THE PARAMETRIZATION SCHEME.                           ADB2F404.55     
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.56     
            DO L=1, N_PROFILE                                              ADB2F404.57     
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_WATER)                 ADB2F404.58     
     &            =MAX(CONDENSED_MIN_DIM(IP_CLCMP_ST_WATER)                ADB2F404.59     
     &            , MIN(CONDENSED_MAX_DIM(IP_CLCMP_ST_WATER)               ADB2F404.60     
     &            , CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_WATER)))          ADB2F404.61     
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_WATER)                ADB2F404.62     
     &            =MAX(CONDENSED_MIN_DIM(IP_CLCMP_CNV_WATER)               ADB2F404.63     
     &            , MIN(CONDENSED_MAX_DIM(IP_CLCMP_CNV_WATER)              ADB2F404.64     
     &            , CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_WATER)))         ADB2F404.65     
            ENDDO                                                          ADB2F404.66     
         ENDDO                                                             ADB2F404.67     
!                                                                          FILL3A.1132   
!                                                                          FILL3A.1133   
!        SET MICROPHYSICAL DIAGNOSTICS. WEIGHTS FOR CLOUD CALCULATED       FILL3A.1134   
!        HERE ARE USED SOLELY FOR THE MICROPHYSICS AND DO NOT HAVE         FILL3A.1135   
!        AN INDEPENDENT MEANING.                                           FILL3A.1136   
!                                                                          FILL3A.1137   
         IF (WGT_CONV_FLAG) THEN                                           FILL3A.1138   
            IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN        FILL3A.1139   
               DO I=1, NCLDS                                               FILL3A.1140   
                  DO L=1, N_PROFILE                                        FILL3A.1141   
                     LG=I_GATHER(L)                                        FILL3A.1142   
                     WGT_CONV(LG, I)=W_CLOUD(L, NLEVS+1-I)                 FILL3A.1143   
     &                  *FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CONV)      FILL3A.1144   
                  ENDDO                                                    FILL3A.1145   
               ENDDO                                                       FILL3A.1146   
            ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN         FILL3A.1147   
               DO I=1, NCLDS                                               FILL3A.1148   
                  DO L=1, N_PROFILE                                        FILL3A.1149   
                     LG=I_GATHER(L)                                        FILL3A.1150   
                     WGT_CONV(LG, I)=W_CLOUD(L, NLEVS+1-I)                 FILL3A.1151   
     &                  *FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_CW)        FILL3A.1152   
                  ENDDO                                                    FILL3A.1153   
               ENDDO                                                       FILL3A.1154   
            ENDIF                                                          FILL3A.1155   
         ENDIF                                                             FILL3A.1156   
!                                                                          FILL3A.1157   
         IF (RE_CONV_FLAG) THEN                                            FILL3A.1158   
            DO I=1, NCLDS                                                  FILL3A.1159   
               DO L=1, N_PROFILE                                           FILL3A.1160   
                  LG=I_GATHER(L)                                           FILL3A.1161   
!                 EFFECTIVE RADII ARE GIVEN IN MICRONS.                    FILL3A.1162   
                  RE_CONV(LG, I)                                           FILL3A.1163   
     &               =CONDENSED_DIM_CHAR(L, NLEVS+1-I                      ADB2F404.68     
     &               , IP_CLCMP_CNV_WATER)                                 ADB2F404.69     
     &               *WGT_CONV(LG, I)*1.0E+06                              FILL3A.1165   
               ENDDO                                                       FILL3A.1166   
            ENDDO                                                          FILL3A.1167   
         ENDIF                                                             FILL3A.1168   
!                                                                          FILL3A.1169   
         IF (WGT_STRAT_FLAG) THEN                                          FILL3A.1170   
            IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN        FILL3A.1171   
               DO I=1, NCLDS                                               FILL3A.1172   
                  DO L=1, N_PROFILE                                        FILL3A.1173   
                     LG=I_GATHER(L)                                        FILL3A.1174   
                     WGT_STRAT(LG, I)=W_CLOUD(L, NLEVS+1-I)                FILL3A.1175   
     &                  *FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_STRAT)     FILL3A.1176   
                  ENDDO                                                    FILL3A.1177   
               ENDDO                                                       FILL3A.1178   
            ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN         FILL3A.1179   
               DO I=1, NCLDS                                               FILL3A.1180   
                  DO L=1, N_PROFILE                                        FILL3A.1181   
                     LG=I_GATHER(L)                                        FILL3A.1182   
                     WGT_STRAT(LG, I)=W_CLOUD(L, NLEVS+1-I)                FILL3A.1183   
     &                  *FRAC_CLOUD(L, NLEVS+1-I, IP_CLOUD_TYPE_SW)        FILL3A.1184   
                  ENDDO                                                    FILL3A.1185   
               ENDDO                                                       FILL3A.1186   
            ENDIF                                                          FILL3A.1187   
         ENDIF                                                             FILL3A.1188   
!                                                                          FILL3A.1189   
         IF (RE_STRAT_FLAG) THEN                                           FILL3A.1190   
            DO I=1, NCLDS                                                  FILL3A.1191   
               DO L=1, N_PROFILE                                           FILL3A.1192   
                  LG=I_GATHER(L)                                           FILL3A.1193   
!                 EFFECTIVE RADII ARE GIVEN IN MICRONS.                    FILL3A.1194   
                  RE_STRAT(LG, I)                                          FILL3A.1195   
     &               =CONDENSED_DIM_CHAR(L, NLEVS+1-I                      ADB2F404.70     
     &               , IP_CLCMP_ST_WATER)                                  ADB2F404.71     
     &               *WGT_STRAT(LG, I)*1.0E+06                             FILL3A.1197   
               ENDDO                                                       FILL3A.1198   
            ENDDO                                                          FILL3A.1199   
         ENDIF                                                             FILL3A.1200   
                                                                           FILL3A.1201   
         IF (LWP_STRAT_FLAG) THEN                                          FILL3A.1202   
            DO I=1, NCLDS                                                  FILL3A.1203   
               DO L=1, N_PROFILE                                           FILL3A.1204   
                  LG=I_GATHER(L)                                           FILL3A.1205   
                  LWP_STRAT(LG, I)                                         FILL3A.1206   
     &               =CONDENSED_MIX_RAT_AREA(L, NLEVS+1-I                  ASK1F405.393    
     &               , IP_CLCMP_ST_WATER)*D_MASS(L, NLEVS+1-I)             FILL3A.1208   
     &               *WGT_STRAT(LG, I)                                     FILL3A.1209   
               ENDDO                                                       FILL3A.1210   
            ENDDO                                                          FILL3A.1211   
         ENDIF                                                             FILL3A.1212   
                                                                           AAJ3F404.121    
         IF (NTOT_DIAG_FLAG) THEN                                          AAJ3F404.122    
            DO I=1, NCLDS                                                  AAJ3F404.123    
               DO L=1, N_PROFILE                                           AAJ3F404.124    
                  LG=I_GATHER(L)                                           AAJ3F404.125    
                  NTOT_DIAG(LG, I)                                         AAJ3F404.126    
     &               =NTOT_DIAG_G(L, NLEVS+1-I)*WGT_STRAT(LG, I)           AAJ3F404.127    
               ENDDO                                                       AAJ3F404.128    
            ENDDO                                                          AAJ3F404.129    
         ENDIF                                                             AAJ3F404.130    
                                                                           AAJ3F404.131    
         IF (STRAT_LWC_DIAG_FLAG) THEN                                     AAJ3F404.132    
            DO I=1, NCLDS                                                  AAJ3F404.133    
               DO L=1, N_PROFILE                                           AAJ3F404.134    
                  LG=I_GATHER(L)                                           AAJ3F404.135    
                  STRAT_LWC_DIAG(LG, I)                                    AAJ3F404.136    
     &               =STRAT_LWC_DIAG_G(L, NLEVS+1-I)*WGT_STRAT(LG, I)      AAJ3F404.137    
               ENDDO                                                       AAJ3F404.138    
            ENDDO                                                          AAJ3F404.139    
         ENDIF                                                             AAJ3F404.140    
                                                                           AAJ3F404.141    
! Non-cloud diagnostics are "weighted" by the conditional sampling         AAJ3F404.142    
! weight COND_SAMP_WGT, but as this is 1.0 if the SW radiation is          AAJ3F404.143    
! active, and 0.0 if it is not, there is no need to actually               AAJ3F404.144    
! multiply by it.                                                          AAJ3F404.145    
                                                                           AAJ3F404.146    
         IF (COND_SAMP_WGT_FLAG) THEN                                      AAJ3F404.147    
            DO I=1, NCLDS                                                  AAJ3F404.148    
               DO L=1, N_PROFILE                                           AAJ3F404.149    
                  LG=I_GATHER(L)                                           AAJ3F404.150    
                  COND_SAMP_WGT(LG, I)=1.0                                 AAJ3F404.151    
               ENDDO                                                       AAJ3F404.152    
            ENDDO                                                          AAJ3F404.153    
         ENDIF                                                             AAJ3F404.154    
                                                                           AAJ3F404.155    
         IF (SO4_CCN_DIAG_FLAG) THEN                                       AAJ3F404.156    
            DO I=1, NCLDS                                                  AAJ3F404.157    
               DO L=1, N_PROFILE                                           AAJ3F404.158    
                  LG=I_GATHER(L)                                           AAJ3F404.159    
                  SO4_CCN_DIAG(LG, I)                                      AAJ3F404.160    
     &                    =SO4_CCN_DIAG_G(L, NLEVS+1-I)                    AAJ3F404.161    
               ENDDO                                                       AAJ3F404.162    
            ENDDO                                                          AAJ3F404.163    
         ENDIF                                                             AAJ3F404.164    
!                                                                          FILL3A.1213   
!                                                                          FILL3A.1214   
      ELSE                                                                 FILL3A.1215   
!                                                                          FILL3A.1216   
!        ALL EFFECTIVE RADII ARE SET TO STANDARD VALUES.                   FILL3A.1217   
!                                                                          FILL3A.1218   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1219   
            DO L=1, N_PROFILE                                              FILL3A.1220   
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_WATER)=7.E-6           ADB2F404.72     
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_WATER)=7.E-6          ADB2F404.73     
            ENDDO                                                          FILL3A.1225   
         ENDDO                                                             FILL3A.1226   
!                                                                          FILL3A.1227   
      ENDIF                                                                FILL3A.1228   
!                                                                          ADB2F404.74     
!                                                                          ADB2F404.75     
!                                                                          ADB2F404.76     
!     SET THE CHARACTERISTIC DIMENSIONS OF ICE CRYSTALS:                   ADB2F404.77     
!                                                                          ADB2F404.78     
!     ICE CRYSTALS IN STRATIFORM CLOUDS:                                   ADB2F404.79     
!                                                                          ADB2F404.80     
      IF (I_CONDENSED_PARAM(IP_CLCMP_ST_ICE).EQ.                           ADB2F404.81     
     &   IP_SLINGO_SCHRECKER_ICE) THEN                                     ADB2F404.82     
!                                                                          ADB2F404.83     
!        THIS PARAMETRIZATION IS BASED ON THE EFFECTIVE RADIUS             ADB2F404.84     
!        AND A STANDARD VALUE OF 30-MICRONS IS ASSUMED.                    ADB2F404.85     
!                                                                          ADB2F404.86     
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.87     
            DO L=1, N_PROFILE                                              ADB2F404.88     
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_ICE)=30.E-6            ADB2F404.89     
            ENDDO                                                          ADB2F404.90     
         ENDDO                                                             ADB2F404.91     
!                                                                          ADB2F404.92     
      ELSE IF (I_CONDENSED_PARAM(IP_CLCMP_ST_ICE).EQ.                      ADB2F404.93     
     &   IP_ICE_ADT) THEN                                                  ADB2F404.94     
!                                                                          ADB2F404.95     
!        THIS PARAMETRIZATION IS BASED ON THE MEAN MAXIMUM                 ADB2F404.96     
!        DIMENSION OF THE CRYSTAL, DETERMINED AS A FUNCTION OF             ADB2F404.97     
!        THE LOCAL TEMPERATURE. THE SIZE IS LIMITED TO ITS VALUE           ADB2F404.98     
!        AT THE FREEZING LEVEL.                                            ADB2F404.99     
!                                                                          ADB2F404.100    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.101    
            DO L=1, N_PROFILE                                              ADB2F404.102    
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_ICE)                   ADB2F404.103    
     &            =MIN(7.198755E-04                                        ADB2F404.104    
     &            , EXP(5.522E-02*(T(L, I)-2.7965E+02))/9.702E+02)         ADB2F404.105    
            ENDDO                                                          ADB2F404.106    
         ENDDO                                                             ADB2F404.107    
!                                                                          ADB2F404.108    
      ENDIF                                                                ADB2F404.109    
!                                                                          ADB2F404.110    
!                                                                          ADB2F404.111    
!     ICE CRYSTALS IN CONVECTIVE CLOUDS:                                   ADB2F404.112    
!                                                                          ADB2F404.113    
      IF (I_CONDENSED_PARAM(IP_CLCMP_CNV_ICE).EQ.                          ADB2F404.114    
     &   IP_SLINGO_SCHRECKER_ICE) THEN                                     ADB2F404.115    
!                                                                          ADB2F404.116    
!        THIS PARAMETRIZATION IS BASED ON THE EFFECTIVE RADIUS             ADB2F404.117    
!        AND A STANDARD VALUE OF 30-MICRONS IS ASSUMED.                    ADB2F404.118    
!                                                                          ADB2F404.119    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.120    
            DO L=1, N_PROFILE                                              ADB2F404.121    
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_ICE)=30.E-6           ADB2F404.122    
            ENDDO                                                          ADB2F404.123    
         ENDDO                                                             ADB2F404.124    
!                                                                          ADB2F404.125    
      ELSE IF (I_CONDENSED_PARAM(IP_CLCMP_CNV_ICE).EQ.                     ADB2F404.126    
     &   IP_ICE_ADT) THEN                                                  ADB2F404.127    
!                                                                          ADB2F404.128    
!        THIS PARAMETRIZATION IS BASED ON THE MEAN MAXIMUM                 ADB2F404.129    
!        DIMENSION OF THE CRYSTAL, DETERMINED AS A FUNCTION OF             ADB2F404.130    
!        THE LOCAL TEMPERATURE. THE SIZE IS LIMITED TO ITS VALUE           ADB2F404.131    
!        AT THE FREEZING LEVEL.                                            ADB2F404.132    
!                                                                          ADB2F404.133    
         DO I=NLEVS+1-NCLDS, NLEVS                                         ADB2F404.134    
            DO L=1, N_PROFILE                                              ADB2F404.135    
               CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_ICE)                  ADB2F404.136    
     &            =MIN(7.198755E-04                                        ADB2F404.137    
     &            , EXP(5.522E-02*(T(L, I)-2.7965E+02))/9.702E+02)         ADB2F404.138    
            ENDDO                                                          ADB2F404.139    
         ENDDO                                                             ADB2F404.140    
!                                                                          ADB2F404.141    
      ENDIF                                                                ADB2F404.142    
!                                                                          ADB2F404.143    
!                                                                          ADB2F404.144    
!                                                                          ADB2F404.145    
!     CONSTRAIN THE SIZES OF ICE CRYSTALS TO LIE WITHIN THE RANGE          ADB2F404.146    
!     OF VALIDITY OF THE PARAMETRIZATION SCHEME.                           ADB2F404.147    
      DO I=NLEVS+1-NCLDS, NLEVS                                            ADB2F404.148    
         DO L=1, N_PROFILE                                                 ADB2F404.149    
            CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_ICE)                      ADB2F404.150    
     &         =MAX(CONDENSED_MIN_DIM(IP_CLCMP_ST_ICE)                     ADB2F404.151    
     &         , MIN(CONDENSED_MAX_DIM(IP_CLCMP_ST_ICE)                    ADB2F404.152    
     &         , CONDENSED_DIM_CHAR(L, I, IP_CLCMP_ST_ICE)))               ADB2F404.153    
            CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_ICE)                     ADB2F404.154    
     &         =MAX(CONDENSED_MIN_DIM(IP_CLCMP_CNV_ICE)                    ADB2F404.155    
     &         , MIN(CONDENSED_MAX_DIM(IP_CLCMP_CNV_ICE)                   ADB2F404.156    
     &         , CONDENSED_DIM_CHAR(L, I, IP_CLCMP_CNV_ICE)))              ADB2F404.157    
         ENDDO                                                             ADB2F404.158    
      ENDDO                                                                ADB2F404.159    
!                                                                          ADB2F404.160    
!                                                                          FILL3A.1229   
!                                                                          FILL3A.1230   
      RETURN                                                               FILL3A.1231   
      END                                                                  FILL3A.1232   
!+ Subroutine to set the parametrization schemes for clouds.               FILL3A.1233   
!                                                                          FILL3A.1234   
! Purpose:                                                                 FILL3A.1235   
!   The parametrization schemes for each component within a cloud          FILL3A.1236   
!   are set.                                                               FILL3A.1237   
!                                                                          FILL3A.1238   
! Method:                                                                  FILL3A.1239   
!   Straightforward.                                                       FILL3A.1240   
!                                                                          FILL3A.1241   
! Current Owner of Code: J. M. Edwards                                     FILL3A.1242   
!                                                                          FILL3A.1243   
! History:                                                                 FILL3A.1244   
!       Version         Date                    Comment                    FILL3A.1245   
!       4.0             27-07-95                Original Code              FILL3A.1246   
!                                               (J. M. Edwards)            FILL3A.1247   
!       4.4             15-09-97                Code to check the          ADB2F404.161    
!                                               range of validity of       ADB2F404.162    
!                                               parametrizations           ADB2F404.163    
!                                               added.                     ADB2F404.164    
!                                               (J. M. Edwards)            ADB2F404.165    
!       4.5             18-05-98                Error message for          ADB1F405.280    
!                                               ice corrected.             ADB1F405.281    
!                                               (J. M. Edwards)            ADB1F405.282    
!                                                                          FILL3A.1248   
! Description of Code:                                                     FILL3A.1249   
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.1250   
!                                                                          FILL3A.1251   
!- ---------------------------------------------------------------------   FILL3A.1252   

      SUBROUTINE R2_SET_CLOUD_PARAMETRIZATION(IERR, N_BAND                  2,4FILL3A.1253   
     &   , I_ST_WATER, I_CNV_WATER, I_ST_ICE, I_CNV_ICE                    FILL3A.1254   
     &   , L_DROP_TYPE, I_DROP_PARAMETRIZATION, DROP_PARAMETER_LIST        FILL3A.1255   
     &   , DROP_PARM_MIN_DIM, DROP_PARM_MAX_DIM                            ADB2F404.166    
     &   , L_ICE_TYPE, I_ICE_PARAMETRIZATION, ICE_PARAMETER_LIST           FILL3A.1256   
     &   , ICE_PARM_MIN_DIM, ICE_PARM_MAX_DIM                              ADB2F404.167    
     &   , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST                         FILL3A.1257   
     &   , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM                            ADB2F404.168    
     &   , NPD_BAND, NPD_DROP_TYPE, NPD_ICE_TYPE, NPD_CLOUD_PARAMETER      FILL3A.1258   
     &   )                                                                 FILL3A.1259   
!                                                                          FILL3A.1260   
!                                                                          FILL3A.1261   
!                                                                          FILL3A.1262   
      IMPLICIT NONE                                                        FILL3A.1263   
!                                                                          FILL3A.1264   
!                                                                          FILL3A.1265   
!     COMDECKS INCLUDED.                                                   FILL3A.1266   
*CALL DIMFIX3A                                                             FILL3A.1267   
*CALL CLDCMP3A                                                             FILL3A.1268   
*CALL STDIO3A                                                              FILL3A.1269   
*CALL ERROR3A                                                              FILL3A.1270   
!                                                                          FILL3A.1271   
!                                                                          FILL3A.1272   
!     DUMMY ARGUMENTS:                                                     FILL3A.1273   
!                                                                          FILL3A.1274   
      INTEGER   !, INTENT(OUT)                                             FILL3A.1275   
     &     IERR                                                            FILL3A.1276   
!             ERROR FLAG                                                   FILL3A.1277   
!                                                                          FILL3A.1278   
!     SIZES OF ARRAYS:                                                     FILL3A.1279   
      INTEGER   !, INTENT(IN)                                              FILL3A.1280   
     &     NPD_BAND                                                        FILL3A.1281   
!             MAXIMUM NUMBER OF SPECTRAL BANDS                             FILL3A.1282   
     &   , NPD_DROP_TYPE                                                   FILL3A.1283   
!             MAXIMUM NUMBER OF TYPES OF DROPLETS                          FILL3A.1284   
     &   , NPD_ICE_TYPE                                                    FILL3A.1285   
!             MAXIMUM NUMBER OF TYPES OF ICE CRYSTALS                      FILL3A.1286   
     &   , NPD_CLOUD_PARAMETER                                             FILL3A.1287   
!             MAXIMUM NUMBER OF PARAMETERS FOR CLOUDS                      FILL3A.1288   
!                                                                          FILL3A.1289   
      INTEGER   !, INTENT(IN)                                              FILL3A.1290   
     &     N_BAND                                                          FILL3A.1291   
!             NUMBER OF SPECTRAL BANDS                                     FILL3A.1292   
!                                                                          FILL3A.1293   
!     TYPES OF DROPLETS AND CRYSTALS:                                      FILL3A.1294   
      INTEGER   !, INTENT(IN)                                              FILL3A.1295   
     &     I_ST_WATER                                                      FILL3A.1296   
!             TYPE OF WATER DROPLETS IN STRATIFORM CLOUDS                  FILL3A.1297   
     &   , I_CNV_WATER                                                     FILL3A.1298   
!             TYPE OF WATER DROPLETS IN CONVECTIVE CLOUDS                  FILL3A.1299   
     &   , I_ST_ICE                                                        FILL3A.1300   
!             TYPE OF ICE CRYSTALS IN STRATIFORM CLOUDS                    FILL3A.1301   
     &   , I_CNV_ICE                                                       FILL3A.1302   
!             TYPE OF ICE CRYSTALS IN CONVECTIVE CLOUDS                    FILL3A.1303   
!                                                                          FILL3A.1304   
      LOGICAL   !, INTENT(IN)                                              FILL3A.1305   
     &     L_DROP_TYPE(NPD_DROP_TYPE)                                      FILL3A.1306   
!             FLAGS FOR TYPES OF DROPLET PRESENT                           FILL3A.1307   
     &   , L_ICE_TYPE(NPD_ICE_TYPE)                                        FILL3A.1308   
!             FLAGS FOR TYPES OF ICE CRYSTAL PRESENT                       FILL3A.1309   
      INTEGER   !, INTENT(IN)                                              FILL3A.1310   
     &     I_DROP_PARAMETRIZATION(NPD_DROP_TYPE)                           FILL3A.1311   
!             PARAMETRIZATIONS OF TYPES OF DROPLETS                        FILL3A.1312   
     &   , I_ICE_PARAMETRIZATION(NPD_ICE_TYPE)                             FILL3A.1313   
!             PARAMETRIZATIONS OF TYPES OF ICE CRYSTALS                    FILL3A.1314   
      REAL      !, INTENT(IN)                                              FILL3A.1315   
     &     DROP_PARAMETER_LIST(NPD_CLOUD_PARAMETER                         FILL3A.1316   
     &        , NPD_BAND, NPD_DROP_TYPE)                                   FILL3A.1317   
!             PARAMETERS FOR OPTICAL PARAMETRIZATIONS OF DROPLETS          FILL3A.1318   
     &   , DROP_PARM_MIN_DIM(NPD_DROP_TYPE)                                ADB2F404.169    
!             MINIMUM SIZE OF DROPLETS PERMITTED IN PARAMETRIZATIONS       ADB2F404.170    
     &   , DROP_PARM_MAX_DIM(NPD_DROP_TYPE)                                ADB2F404.171    
!             MAXIMUM SIZE OF DROPLETS PERMITTED IN PARAMETRIZATIONS       ADB2F404.172    
     &   , ICE_PARAMETER_LIST(NPD_CLOUD_PARAMETER                          FILL3A.1319   
     &        , NPD_BAND, NPD_ICE_TYPE)                                    FILL3A.1320   
!             PARAMETERS FOR OPTICAL PARAMETRIZATIONS OF ICE CRYSTALS      FILL3A.1321   
     &   , ICE_PARM_MIN_DIM(NPD_ICE_TYPE)                                  ADB2F404.173    
!             MINIMUM SIZE OF ICE CRYSTALS PERMITTED IN PARAMETRIZATIONS   ADB2F404.174    
     &   , ICE_PARM_MAX_DIM(NPD_ICE_TYPE)                                  ADB2F404.175    
!             MAXIMUM SIZE OF ICE CRYSTALS PERMITTED IN PARAMETRIZATIONS   ADB2F404.176    
!                                                                          FILL3A.1322   
      INTEGER   !, INTENT(OUT)                                             FILL3A.1323   
     &     I_CONDENSED_PARAM(NPD_CLOUD_COMPONENT)                          FILL3A.1324   
!             TYPES OF PARAMETRIZATION USED FOR CONDENSED                  ADB2F404.177    
!             COMPONENTS IN CLOUDS                                         ADB2F404.178    
      REAL      !, INTENT(OUT)                                             FILL3A.1325   
     &     CONDENSED_PARAM_LIST(NPD_CLOUD_PARAMETER                        FILL3A.1326   
     &        , NPD_CLOUD_COMPONENT, NPD_BAND)                             FILL3A.1327   
!             COEFFICIENTS FOR PARAMETRIZATION OF CONDENSED PHASES         FILL3A.1328   
     &   , CONDENSED_MIN_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.179    
!             MINIMUM DIMENSION OF EACH CONDENSED COMPONENT                ADB2F404.180    
     &   , CONDENSED_MAX_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.181    
!             MAXIMUM DIMENSION OF EACH CONDENSED COMPONENT                ADB2F404.182    
!                                                                          FILL3A.1329   
!                                                                          FILL3A.1330   
!     LOCAL VARIABLES:                                                     FILL3A.1331   
      INTEGER                                                              FILL3A.1332   
     &     I                                                               FILL3A.1333   
!             LOOP VARIABLE                                                FILL3A.1334   
     &   , J                                                               FILL3A.1335   
!             LOOP VARIABLE                                                FILL3A.1336   
     &   , I_SCHEME                                                        FILL3A.1337   
!             PARAMETRIZATION SCHEME                                       FILL3A.1338   
!                                                                          FILL3A.1339   
!     FUNCTIONS CALLED:                                                    FILL3A.1340   
      INTEGER                                                              FILL3A.1341   
     &     SET_N_CLOUD_PARAMETER                                           FILL3A.1342   
!             FUNCTION TO FIND NUMBER OF PARAMETERS FOR CLOUDS             FILL3A.1343   
      EXTERNAL                                                             FILL3A.1344   
     &     SET_N_CLOUD_PARAMETER                                           FILL3A.1345   
!                                                                          FILL3A.1346   
!                                                                          FILL3A.1347   
!                                                                          FILL3A.1348   
!     SELECT PARAMETRIZATION FOR WATER IN STRATIFORM CLOUDS:               FILL3A.1349   
!                                                                          FILL3A.1350   
      IF ( (I_ST_WATER.LE.NPD_DROP_TYPE).AND.                              FILL3A.1351   
     &     (L_DROP_TYPE(I_ST_WATER)) ) THEN                                FILL3A.1352   
         I_SCHEME=I_DROP_PARAMETRIZATION(I_ST_WATER)                       FILL3A.1353   
         I_CONDENSED_PARAM(IP_CLCMP_ST_WATER)=I_SCHEME                     FILL3A.1354   
         CONDENSED_MIN_DIM(IP_CLCMP_ST_WATER)                              ADB2F404.183    
     &      =DROP_PARM_MIN_DIM(I_ST_WATER)                                 ADB2F404.184    
         CONDENSED_MAX_DIM(IP_CLCMP_ST_WATER)                              ADB2F404.185    
     &      =DROP_PARM_MAX_DIM(I_ST_WATER)                                 ADB2F404.186    
      ELSE                                                                 FILL3A.1355   
         WRITE(IU_ERR, '(/A, /A)') '*** ERROR: NO DATA EXIST FOR TYPE '    FILL3A.1356   
     &      , 'OF DROPLET SELECTED IN STRATIFORM WATER CLOUDS.'            FILL3A.1357   
         IERR=I_ERR_FATAL                                                  FILL3A.1358   
         RETURN                                                            FILL3A.1359   
      ENDIF                                                                FILL3A.1360   
!                                                                          FILL3A.1361   
      DO I=1, N_BAND                                                       FILL3A.1362   
         DO J=1, SET_N_CLOUD_PARAMETER(I_SCHEME, IP_CLCMP_ST_WATER)        FILL3A.1363   
            CONDENSED_PARAM_LIST(J, IP_CLCMP_ST_WATER, I)                  FILL3A.1364   
     &         =DROP_PARAMETER_LIST(J, I, I_ST_WATER)                      FILL3A.1365   
         ENDDO                                                             FILL3A.1366   
      ENDDO                                                                FILL3A.1367   
!                                                                          FILL3A.1368   
!                                                                          FILL3A.1369   
!     SELECT PARAMETRIZATION FOR WATER IN CONVECTIVE CLOUDS:               FILL3A.1370   
!                                                                          FILL3A.1371   
      IF ( (I_CNV_WATER.LE.NPD_DROP_TYPE).AND.                             FILL3A.1372   
     &     (L_DROP_TYPE(I_CNV_WATER)) ) THEN                               FILL3A.1373   
         I_SCHEME=I_DROP_PARAMETRIZATION(I_CNV_WATER)                      FILL3A.1374   
         I_CONDENSED_PARAM(IP_CLCMP_CNV_WATER)=I_SCHEME                    FILL3A.1375   
         CONDENSED_MIN_DIM(IP_CLCMP_CNV_WATER)                             ADB2F404.187    
     &      =DROP_PARM_MIN_DIM(I_CNV_WATER)                                ADB2F404.188    
         CONDENSED_MAX_DIM(IP_CLCMP_CNV_WATER)                             ADB2F404.189    
     &      =DROP_PARM_MAX_DIM(I_CNV_WATER)                                ADB2F404.190    
      ELSE                                                                 FILL3A.1376   
         WRITE(IU_ERR, '(/A, /A)') '*** ERROR: NO DATA EXIST FOR TYPE '    FILL3A.1377   
     &      , 'OF DROPLET SELECTED IN CONVECTIVE WATER CLOUDS.'            FILL3A.1378   
         IERR=I_ERR_FATAL                                                  FILL3A.1379   
         RETURN                                                            FILL3A.1380   
      ENDIF                                                                FILL3A.1381   
!                                                                          FILL3A.1382   
      DO I=1, N_BAND                                                       FILL3A.1383   
         DO J=1, SET_N_CLOUD_PARAMETER(I_SCHEME, IP_CLCMP_CNV_WATER)       FILL3A.1384   
            CONDENSED_PARAM_LIST(J, IP_CLCMP_CNV_WATER, I)                 FILL3A.1385   
     &         =DROP_PARAMETER_LIST(J, I, I_CNV_WATER)                     FILL3A.1386   
         ENDDO                                                             FILL3A.1387   
      ENDDO                                                                FILL3A.1388   
!                                                                          FILL3A.1389   
!                                                                          FILL3A.1390   
!     SELECT PARAMETRIZATION FOR ICE IN STRATIFORM CLOUDS:                 FILL3A.1391   
!                                                                          FILL3A.1392   
      IF ( (I_ST_ICE.LE.NPD_ICE_TYPE).AND.                                 FILL3A.1393   
     &     (L_ICE_TYPE(I_ST_ICE)) ) THEN                                   FILL3A.1394   
         I_SCHEME=I_ICE_PARAMETRIZATION(I_ST_ICE)                          FILL3A.1395   
         I_CONDENSED_PARAM(IP_CLCMP_ST_ICE)=I_SCHEME                       FILL3A.1396   
         CONDENSED_MIN_DIM(IP_CLCMP_ST_ICE)                                ADB2F404.191    
     &      =ICE_PARM_MIN_DIM(I_ST_ICE)                                    ADB2F404.192    
         CONDENSED_MAX_DIM(IP_CLCMP_ST_ICE)                                ADB2F404.193    
     &      =ICE_PARM_MAX_DIM(I_ST_ICE)                                    ADB2F404.194    
      ELSE                                                                 FILL3A.1397   
         WRITE(IU_ERR, '(/A, /A)') '*** ERROR: NO DATA EXIST FOR TYPE '    FILL3A.1398   
     &      , 'OF CRYSTAL SELECTED IN STRATIFORM ICE CLOUDS.'              ADB1F405.283    
         IERR=I_ERR_FATAL                                                  FILL3A.1400   
         RETURN                                                            FILL3A.1401   
      ENDIF                                                                FILL3A.1402   
!                                                                          FILL3A.1403   
      DO I=1, N_BAND                                                       FILL3A.1404   
         DO J=1, SET_N_CLOUD_PARAMETER(I_SCHEME, IP_CLCMP_ST_ICE)          FILL3A.1405   
            CONDENSED_PARAM_LIST(J, IP_CLCMP_ST_ICE, I)                    FILL3A.1406   
     &         =ICE_PARAMETER_LIST(J, I, I_ST_ICE)                         FILL3A.1407   
         ENDDO                                                             FILL3A.1408   
      ENDDO                                                                FILL3A.1409   
!                                                                          FILL3A.1410   
!                                                                          FILL3A.1411   
!     SELECT PARAMETRIZATION FOR ICE IN CONVECTIVE CLOUDS:                 FILL3A.1412   
!                                                                          FILL3A.1413   
      IF ( (I_CNV_ICE.LE.NPD_ICE_TYPE).AND.                                FILL3A.1414   
     &     (L_ICE_TYPE(I_CNV_ICE)) ) THEN                                  FILL3A.1415   
         I_SCHEME=I_ICE_PARAMETRIZATION(I_CNV_ICE)                         FILL3A.1416   
         I_CONDENSED_PARAM(IP_CLCMP_CNV_ICE)=I_SCHEME                      FILL3A.1417   
         CONDENSED_MIN_DIM(IP_CLCMP_CNV_ICE)                               ADB2F404.195    
     &      =ICE_PARM_MIN_DIM(I_CNV_ICE)                                   ADB2F404.196    
         CONDENSED_MAX_DIM(IP_CLCMP_CNV_ICE)                               ADB2F404.197    
     &      =ICE_PARM_MAX_DIM(I_CNV_ICE)                                   ADB2F404.198    
      ELSE                                                                 FILL3A.1418   
         WRITE(IU_ERR, '(/A, /A)') '*** ERROR: NO DATA EXIST FOR TYPE '    FILL3A.1419   
     &      , 'OF CRYSTAL SELECTED IN CONVECTIVE ICE CLOUDS.'              ADB1F405.284    
         IERR=I_ERR_FATAL                                                  FILL3A.1421   
         RETURN                                                            FILL3A.1422   
      ENDIF                                                                FILL3A.1423   
!                                                                          FILL3A.1424   
      DO I=1, N_BAND                                                       FILL3A.1425   
         DO J=1, SET_N_CLOUD_PARAMETER(I_SCHEME, IP_CLCMP_CNV_ICE)         FILL3A.1426   
            CONDENSED_PARAM_LIST(J, IP_CLCMP_CNV_ICE, I)                   FILL3A.1427   
     &         =ICE_PARAMETER_LIST(J, I, I_CNV_ICE)                        FILL3A.1428   
         ENDDO                                                             FILL3A.1429   
      ENDDO                                                                FILL3A.1430   
!                                                                          FILL3A.1431   
!                                                                          FILL3A.1432   
!                                                                          FILL3A.1433   
      RETURN                                                               FILL3A.1434   
      END                                                                  FILL3A.1435   
!+ Subroutine to set fields of aerosols.                                   FILL3A.1436   
!                                                                          FILL3A.1437   
! Purpose:                                                                 FILL3A.1438   
!   The mixing ratios of aerosols are transferred to the large array.      ADB1F402.152    
!                                                                          FILL3A.1440   
! Method:                                                                  FILL3A.1441   
!   Straightforward.                                                       FILL3A.1442   
!                                                                          FILL3A.1443   
! Current Owner of Code: J. M. Edwards                                     FILL3A.1444   
!                                                                          FILL3A.1445   
! History:                                                                 FILL3A.1446   
!       Version         Date                    Comment                    FILL3A.1447   
!       4.0             27-07-95                Original Code              FILL3A.1448   
!                                               (J. M. Edwards)            FILL3A.1449   
!       4.1             12-06-96                Code rewritten to          ADB1F401.248    
!                                               include two types          ADB1F401.249    
!                                               of sulphate provided       ADB1F401.250    
!                                               by the sulphur cycle.      ADB1F401.251    
!                                               (J. M. Edwards)            ADB1F401.252    
!       4.2             08-08-96                Climatological aerosol     ADB1F402.153    
!                                               model added.               ADB1F402.154    
!                                               (J. M. Edwards)            ADB1F402.155    
!       4.4             15-09-97                Code for aerosols          ADB2F404.199    
!                                               generalized to allow       ADB2F404.200    
!                                               arbitrary combinations.    ADB2F404.201    
!                                               (J. M. Edwards)            ADB2F404.202    
!                                                                          FILL3A.1450   
! Description of Code:                                                     FILL3A.1451   
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.1452   
!                                                                          FILL3A.1453   
!- ---------------------------------------------------------------------   FILL3A.1454   

      SUBROUTINE R2_SET_AEROSOL_FIELD(IERR                                  2,1ADB1F402.156    
     &   , N_PROFILE, NLEVS, N_AEROSOL, TYPE_AEROSOL                       ADB2F404.203    
     &   , I_GATHER                                                        FILL3A.1456   
     &   , L_CLIMAT_AEROSOL, N_LEVELS_BL                                   ADB1F402.158    
     &   , L_USE_SULPC_DIRECT                                              ADB2F404.204    
     &   , SULP_DIM1, SULP_DIM2                                            ADB1F402.160    
     &   , ACCUM_SULPHATE, AITKEN_SULPHATE                                 ADB1F402.161    
     &,L_USE_SOOT_DIRECT, SOOT_DIM1, SOOT_DIM2, FRESH_SOOT, AGED_SOOT      ALR3F405.69     
     &   , LAND, LYING_SNOW, PSTAR, AB, BB, TRINDX                         ADB1F402.162    
     &   , AEROSOL_MIX_RATIO                                               ADB1F402.163    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES          FILL3A.1458   
     &   )                                                                 FILL3A.1459   
!                                                                          FILL3A.1460   
!                                                                          FILL3A.1461   
!                                                                          FILL3A.1462   
      IMPLICIT NONE                                                        FILL3A.1463   
!                                                                          FILL3A.1464   
!                                                                          ADB1F402.164    
!     COMDECKS INCLUDED.                                                   ADB1F402.165    
*CALL C_G                                                                  ADB1F402.166    
*CALL STDIO3A                                                              ADB1F402.167    
*CALL ERROR3A                                                              ADB1F402.168    
*CALL AERCMP3A                                                             ADB2F404.205    
!                                                                          FILL3A.1465   
!     DUMMY ARGUMENTS.                                                     FILL3A.1466   
!                                                                          FILL3A.1467   
!     SIZES OF ARRAYS:                                                     FILL3A.1468   
      INTEGER   !, INTENT(IN)                                              FILL3A.1469   
     &     NPD_FIELD                                                       FILL3A.1470   
!             FIELD SIZE IN CALLING PROGRAM                                FILL3A.1471   
     &   , NPD_PROFILE                                                     FILL3A.1472   
!             SIZE OF ARRAY OF PROFILES                                    FILL3A.1473   
     &   , NPD_LAYER                                                       FILL3A.1474   
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.1475   
     &   , NPD_AEROSOL_SPECIES                                             FILL3A.1476   
!             MAXIMUM NUMBER OF AEROSOL SPECIES                            FILL3A.1477   
!                                                                          FILL3A.1478   
      INTEGER   !, INTENT(OUT)                                             ADB1F402.169    
     &     IERR                                                            ADB1F402.170    
!             ERROR FLAG                                                   ADB1F402.171    
!                                                                          ADB1F402.172    
!     ACTUAL SIZES USED:                                                   FILL3A.1479   
      INTEGER   !, INTENT(IN)                                              FILL3A.1480   
     &     N_PROFILE                                                       FILL3A.1481   
!             NUMBER OF PROFILES                                           FILL3A.1482   
     &   , NLEVS                                                           FILL3A.1483   
!             NUMBER OF ATMOSPHERIC LAYERS                                 FILL3A.1484   
     &   , N_LEVELS_BL                                                     ADB1F402.173    
!             NUMBER OF LEVELS IN THE BOUNDARY LAYER                       ADB1F402.174    
     &   , N_AEROSOL                                                       ADB1F402.175    
!             NUMBER OF AEROSOLS IN SPECTRAL FILE                          ADB1F402.176    
     &   , TYPE_AEROSOL(NPD_AEROSOL_SPECIES)                               ADB2F404.206    
!             ACTUAL TYPES OF AEROSOLS                                     ADB2F404.207    
!                                                                          FILL3A.1485   
!     GATHERING ARRAY:                                                     FILL3A.1486   
      INTEGER   !, INTENT(IN)                                              FILL3A.1487   
     &     I_GATHER(NPD_FIELD)                                             FILL3A.1488   
!             LIST OF POINTS TO GATHER                                     FILL3A.1489   
!                                                                          FILL3A.1490   
!     FLAG FOR THE CLIMATOLOGICAL AEROSOL DISTRIBUTION.                    ADB1F402.177    
      LOGICAL      !, INTENT(IN)                                           ADB1F402.178    
     &     L_CLIMAT_AEROSOL                                                ADB1F402.179    
!             FLAG FOR CLIMATOLOGICAL AEROSOL DISTRIBUTION                 ADB1F402.180    
!                                                                          ADB1F402.181    
!     VARIABLES FOR THE SULPHUR CYCLE:                                     ADB1F402.182    
      LOGICAL      !, INTENT(IN)                                           ADB1F402.183    
     &     L_USE_SULPC_DIRECT                                              ADB1F402.184    
!             FLAG TO USE SULPHUR CYCLE FOR DIRECT EFFECT                  ADB1F402.185    
      INTEGER      !, INTENT(IN)                                           ADB1F402.188    
     &     SULP_DIM1,SULP_DIM2                                             ADB1F402.189    
!             DIMENSIONS FOR _SULPHATE ARRAYS, (P_FIELD,P_LEVELS or 1,1)   ADB1F402.190    
      REAL      !, INTENT(IN)                                              FILL3A.1492   
     &     ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2)                            ADB1F402.191    
!             MASS MIXING RATIOS OF ACCUMULATION MODE AEROSOL              ADB1F401.255    
     &   , AITKEN_SULPHATE(SULP_DIM1, SULP_DIM2)                           ADB1F402.192    
!             MASS MIXING RATIOS OF AITKEN MODE AEROSOL                    ADB1F401.257    
!                                                                          ADB1F402.193    
! Declare soot variables:                                                  ALR3F405.70     
      LOGICAL L_USE_SOOT_DIRECT !USE DIRECT RAD. EFFECT OF SOOT AEROSOL    ALR3F405.71     
      INTEGER SOOT_DIM1,SOOT_DIM2                                          ALR3F405.72     
                !DIMENSIONS FOR SOOT ARRAYS, (P_FIELD,P_LEVELS or 1,1)     ALR3F405.73     
      REAL FRESH_SOOT(SOOT_DIM1, SOOT_DIM2)      ! MMR OF FRESH SOOT       ALR3F405.74     
     &   , AGED_SOOT(SOOT_DIM1, SOOT_DIM2)       ! MMR OF AGED SOOT        ALR3F405.75     
!     GENERAL ATMOSPHERIC PROPERTIES:                                      ADB1F402.194    
      INTEGER   !, INTENT(IN)                                              ADB1F402.195    
     &     TRINDX(NPD_FIELD)                                               ADB1F402.196    
!             LAYER BOUNDARY OF TROPOPAUSE                                 ADB1F402.197    
      REAL      !, INTENT(IN)                                              ADB1F402.198    
     &     PSTAR(NPD_FIELD)                                                ADB1F402.199    
!             SURFACE PRESSURES                                            ADB1F402.200    
     &   , AB(NLEVS+1)                                                     ADB1F402.201    
!             A AT BOUNDARIES OF LAYERS                                    ADB1F402.202    
     &   , BB(NLEVS+1)                                                     ADB1F402.203    
!             B AT BOUNDARIES OF LAYERS                                    ADB1F402.204    
!                                                                          ADB1F402.205    
!     SURFACE FIELDS                                                       ADB1F402.206    
      LOGICAL   !, INTENT(IN)                                              ADB1F402.207    
     &     LAND(NPD_FIELD)                                                 ADB1F402.208    
!             LAND SEA MASK                                                ADB1F402.209    
      REAL      !, INTENT(IN)                                              ADB1F402.210    
     &     LYING_SNOW(NPD_FIELD)                                           ADB1F402.211    
!             DEPTH OF LYING SNOW                                          ADB1F402.212    
!                                                                          FILL3A.1495   
      REAL      !, INTENT(OUT)                                             FILL3A.1496   
     &     AEROSOL_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER                     FILL3A.1497   
     &        , NPD_AEROSOL_SPECIES)                                       FILL3A.1498   
!             MIXING RATIOS OF AEROSOLS                                    FILL3A.1499   
!                                                                          FILL3A.1500   
!                                                                          FILL3A.1501   
!                                                                          FILL3A.1502   
!     LOCAL VARIABLES:                                                     FILL3A.1503   
      INTEGER                                                              FILL3A.1504   
     &     I                                                               FILL3A.1505   
!             LOOP VARIABLE                                                FILL3A.1506   
     &   , J                                                               ADB1F402.213    
!             LOOP VARIABLE                                                ADB1F402.214    
     &   , L                                                               FILL3A.1507   
!             LOOP VARIABLE                                                FILL3A.1508   
     &   , LG                                                              FILL3A.1509   
!             INDEX FOR GATHERING                                          FILL3A.1510   
     &   , BLTOP                                                           ADB1F402.215    
!             INDEX OF UPPER BOUNDARY OF PLANETARY BOUNDARY LAYER          ADB1F402.216    
     &   , I_AEROSOL                                                       ADB2F404.208    
!             ACTUAL TYPE OF AEROSOL BEING CONSIDERED                      ADB2F404.209    
!                                                                          ADB2F404.210    
!                                                                          ADB2F404.211    
!     ARRAYS FOR THE CLIMATOLOGICAL AEROSOL MODEL                          ADB2F404.212    
      LOGICAL                                                              ADB2F404.213    
     &     L_IN_CLIMAT(NPD_AEROSOL_COMPONENT)                              ADB2F404.214    
!             FLAGS TO INDICATE WHICH AEROSOLS ARE INCLUDED IN             ADB2F404.215    
!             THE CLIMATOLOGY: THIS MAY BE USED                            ADB2F404.216    
!             TO ENABLE VARIOUS COMPONENTS TO BE REPLACED BY               ADB2F404.217    
!             FULLY PROGNOSTIC SCHEMES.                                    ADB2F404.218    
      INTEGER                                                              ADB2F404.219    
     &     I_CLIM_POINTER(NPD_AEROSOL_COMPONENT)                           ADB2F404.220    
!             POINTERS TO HARD-WIRED INDICES OF THE ORIGINAL               ADB2F404.221    
!             CLIMATOLOGICAL AEROSOL MODEL                                 ADB2F404.222    
      REAL                                                                 ADB2F404.223    
     &     AEROSOL_MIX_RATIO_CLIM(NPD_PROFILE, 0: NPD_LAYER, 5)            ADB2F404.224    
!             MIXING RATIOS OF THE CLIMATOLOGICAL AEROSOLS                 ADB2F404.225    
!                                                                          ADB2F404.226    
!     SUBROUTINES CALLED:                                                  ADB2F404.227    
      EXTERNAL                                                             ADB2F404.228    
     &     R2_SET_AERO_CLIM_HADCM3                                         ADB2F404.229    
!                                                                          ADB2F404.230    
!                                                                          ADB2F404.231    
!     INITIALIZATION FOR THE CLIMATOLOGICAL AEROSOL MODEL:                 ADB2F404.232    
!                                                                          ADB2F404.233    
      DATA L_IN_CLIMAT/NPD_AEROSOL_COMPONENT*.FALSE./                      ADB2F404.234    
      DATA L_IN_CLIMAT(IP_WATER_SOLUBLE)/.TRUE./                           ADB2F404.235    
      DATA L_IN_CLIMAT(IP_DUST_LIKE)/.TRUE./                               ADB2F404.236    
      DATA L_IN_CLIMAT(IP_OCEANIC)/.TRUE./                                 ADB2F404.237    
      DATA L_IN_CLIMAT(IP_SOOT)/.TRUE./                                    ADB2F404.238    
      DATA L_IN_CLIMAT(IP_SULPHURIC)/.TRUE./                               ADB2F404.239    
!                                                                          ADB2F404.240    
!     MATCHING OF COMPONENTS TO ORIGINAL HARD-WIRED SETTINGS:              ADB2F404.241    
      DATA I_CLIM_POINTER(IP_WATER_SOLUBLE)/1/                             ADB2F404.242    
      DATA I_CLIM_POINTER(IP_DUST_LIKE)/2/                                 ADB2F404.243    
      DATA I_CLIM_POINTER(IP_OCEANIC)/3/                                   ADB2F404.244    
      DATA I_CLIM_POINTER(IP_SOOT)/4/                                      ADB2F404.245    
      DATA I_CLIM_POINTER(IP_SULPHURIC)/5/                                 ADB2F404.246    
!                                                                          ADB2F404.247    
!  Use climatological soot if climatological aerosols are on and not       ALR3F405.76     
!  using interactive soot.                                                 ALR3F405.77     
       L_IN_CLIMAT(IP_SOOT) = L_IN_CLIMAT(IP_SOOT)                         ALR3F405.78     
     &                     .AND.(.NOT.L_USE_SOOT_DIRECT)                   ALR3F405.79     
!                                                                          ADB2F404.248    
!                                                                          ADB2F404.249    
      IF (L_CLIMAT_AEROSOL) THEN                                           ADB2F404.250    
!                                                                          ADB2F404.251    
!        SET THE MIXING RATIOS OF THE CLIMATOLOGICAL AEROSOLS              ADB2F404.252    
!        USED IN THE CLIMATOLOGY OF HADCM3. A SEPARATE SUBROUTINE          ADB2F404.253    
!        IS USED TO ENSURE BIT-REPRODUCIBLE RESULTS BY USING               ADB2F404.254    
!        EARLIER CODE. THIS COULD BE ALTERED IF A NEW CLIMATOLOGY WERE     ADB2F404.255    
!        USED.                                                             ADB2F404.256    
!                                                                          ADB2F404.257    
         CALL R2_SET_AERO_CLIM_HADCM3(N_PROFILE, NLEVS                     ADB2F404.258    
     &      , I_GATHER                                                     ADB2F404.259    
     &      , N_LEVELS_BL                                                  ADB2F404.260    
     &      , LAND, LYING_SNOW, PSTAR, AB, BB, TRINDX                      ADB2F404.261    
     &      , AEROSOL_MIX_RATIO_CLIM                                       ADB2F404.262    
     &      , NPD_FIELD, NPD_PROFILE, NPD_LAYER                            ADB2F404.263    
     &      )                                                              ADB2F404.264    
!                                                                          ADB2F404.265    
      ENDIF                                                                ADB2F404.266    
!                                                                          ADB2F404.267    
!                                                                          ADB2F404.268    
!     THE AEROSOLS REQUIRED BY FOR THE CALCULATION SHOULD HAVE BEEN        ADB2F404.269    
!     SELECTED WHEN THE SPECTRAL FILE WAS READ IN. EACH TYPE SHOULD        ADB2F404.270    
!     BE SET APPROPRIATELY.                                                ADB2F404.271    
!                                                                          ADB2F404.272    
      DO J=1, N_AEROSOL                                                    ADB2F404.273    
!                                                                          ADB2F404.274    
         I_AEROSOL=TYPE_AEROSOL(J)                                         ADB2F404.275    
!                                                                          ADB2F404.276    
         IF (L_CLIMAT_AEROSOL.AND.L_IN_CLIMAT(I_AEROSOL)) THEN             ADB2F404.277    
!                                                                          ADB2F404.278    
            DO I=1, NLEVS                                                  ADB2F404.279    
               DO L=1, N_PROFILE                                           ADB2F404.280    
                  AEROSOL_MIX_RATIO(L, I, J)                               ADB2F404.281    
     &               =AEROSOL_MIX_RATIO_CLIM(L, I                          ADB2F404.282    
     &               , I_CLIM_POINTER(I_AEROSOL))                          ADB2F404.283    
               ENDDO                                                       ADB2F404.284    
            ENDDO                                                          ADB2F404.285    
!                                                                          ADB2F404.286    
         ELSE IF ( (I_AEROSOL.EQ.IP_ACCUM_SULPHATE).AND.                   ADB2F404.287    
     &      L_USE_SULPC_DIRECT) THEN                                       ADB2F404.288    
!                                                                          ADB2F404.289    
!           Aerosols related to the sulphur cycle (note that dissolved     ADB2F404.290    
!           sulphate does not contribute to the direct effect):            ADB2F404.291    
!                                                                          ADB2F404.292    
            DO I=1, NLEVS                                                  ADB2F404.293    
               DO L=1, N_PROFILE                                           ADB2F404.294    
                  LG=I_GATHER(L)                                           ADB2F404.295    
                  AEROSOL_MIX_RATIO(L, I, J)                               ADB2F404.296    
     &               =ACCUM_SULPHATE(LG, NLEVS+1-I)                        ADB2F404.297    
               ENDDO                                                       ADB2F404.298    
            ENDDO                                                          ADB2F404.299    
!                                                                          ADB2F404.300    
         ELSE IF ( (I_AEROSOL.EQ.IP_AITKEN_SULPHATE).AND.                  ADB2F404.301    
     &      L_USE_SULPC_DIRECT) THEN                                       ADB2F404.302    
            DO I=1, NLEVS                                                  ADB2F404.303    
               DO L=1, N_PROFILE                                           ADB2F404.304    
                  LG=I_GATHER(L)                                           ADB2F404.305    
                  AEROSOL_MIX_RATIO(L, I, J)                               ADB2F404.306    
     &               =AITKEN_SULPHATE(LG, NLEVS+1-I)                       ADB2F404.307    
               ENDDO                                                       ADB2F404.308    
            ENDDO                                                          ADB2F404.309    
!                                                                          ADB2F404.310    
         ELSE IF ((I_AEROSOL.EQ.IP_FRESH_SOOT)                             ALR3F405.80     
     &        .AND.L_USE_SOOT_DIRECT) THEN                                 ALR3F405.81     
            DO I=1, NLEVS                                                  ALR3F405.82     
               DO L=1, N_PROFILE                                           ALR3F405.83     
                  LG=I_GATHER(L)                                           ALR3F405.84     
                  AEROSOL_MIX_RATIO(L, I, J)=FRESH_SOOT(LG, NLEVS+1-I)     ALR3F405.85     
               ENDDO                                                       ALR3F405.86     
            ENDDO                                                          ALR3F405.87     
!                                                                          ALR3F405.88     
         ELSE IF ((I_AEROSOL.EQ.IP_AGED_SOOT)                              ALR3F405.89     
     &        .AND.L_USE_SOOT_DIRECT) THEN                                 ALR3F405.90     
            DO I=1, NLEVS                                                  ALR3F405.91     
               DO L=1, N_PROFILE                                           ALR3F405.92     
                  LG=I_GATHER(L)                                           ALR3F405.93     
                  AEROSOL_MIX_RATIO(L, I, J)=AGED_SOOT(LG, NLEVS+1-I)      ALR3F405.94     
               ENDDO                                                       ALR3F405.95     
            ENDDO                                                          ALR3F405.96     
!                                                                          ALR3F405.97     
!                                                                          ADB2F404.311    
         ELSE                                                              ADB2F404.312    
!                                                                          ADB2F404.313    
!           The options to the radiation code do not require this          ADB2F404.314    
!           aerosol to be considered: its mixing ratio is set to 0.        ADB2F404.315    
!           This block of code should not normally be executed,            ADB2F404.316    
!           but may be required for ease of including modifications.       ADB2F404.317    
!                                                                          ADB2F404.318    
            DO I=1, NLEVS                                                  ADB2F404.319    
               DO L=1, N_PROFILE                                           ADB2F404.320    
                  LG=I_GATHER(L)                                           ADB2F404.321    
                  AEROSOL_MIX_RATIO(L, I, J)=0.0E+00                       ADB2F404.322    
               ENDDO                                                       ADB2F404.323    
            ENDDO                                                          ADB2F404.324    
!                                                                          ADB2F404.325    
!                                                                          ADB2F404.326    
         ENDIF                                                             ADB2F404.327    
!                                                                          ADB2F404.328    
      ENDDO                                                                ADB2F404.329    
!                                                                          ADB2F404.330    
!                                                                          ADB2F404.331    
!                                                                          ADB2F404.332    
      RETURN                                                               ADB2F404.333    
      END                                                                  ADB2F404.334    
!+ Subroutine to set fields of climatological aerosols in HADCM3.          ADB2F404.335    
!                                                                          ADB2F404.336    
! Purpose:                                                                 ADB2F404.337    
!   This routine sets the mixing ratios of climatological aerosols.        ADB2F404.338    
!   A separate subroutine is used to ensure that the mixing ratios         ADB2F404.339    
!   of these aerosols are bit-comparable with earlier versions of          ADB2F404.340    
!   the model where the choice of aerosols was more restricted:            ADB2F404.341    
!   keeping the code in its original form reduces the opportunity          ADB2F404.342    
!   for optimizations which compromise bit-reproducibilty.                 ADB2F404.343    
!   The climatoogy used here is the one devised for HADCM3.                ADB2F404.344    
!                                                                          ADB2F404.345    
! Method:                                                                  ADB2F404.346    
!   Straightforward.                                                       ADB2F404.347    
!                                                                          ADB2F404.348    
! Current Owner of Code: J. M. Edwards                                     ADB2F404.349    
!                                                                          ADB2F404.350    
! History:                                                                 ADB2F404.351    
!       Version         Date                    Comment                    ADB2F404.352    
!       4.4             29-09-97                Original Code              ADB2F404.353    
!                                               very closely based on      ADB2F404.354    
!                                               previous versions of       ADB2F404.355    
!                                               this scheme.               ADB2F404.356    
!                                               (J. M. Edwards)            ADB2F404.357    
!  4.5  12/05/98  Swap loop order in final nest of loops to                GRB0F405.11     
!                 improve vectorization.  RBarnes@ecmwf.int                GRB0F405.12     
!                                                                          ADB2F404.358    
! Description of Code:                                                     ADB2F404.359    
!   FORTRAN 77  with extensions listed in documentation.                   ADB2F404.360    
!                                                                          ADB2F404.361    
!- ---------------------------------------------------------------------   ADB2F404.362    

      SUBROUTINE R2_SET_AERO_CLIM_HADCM3(N_PROFILE, NLEVS                   1ADB2F404.363    
     &   , I_GATHER                                                        ADB2F404.364    
     &   , N_LEVELS_BL                                                     ADB2F404.365    
     &   , LAND, LYING_SNOW, PSTAR, AB, BB, TRINDX                         ADB2F404.366    
     &   , AEROSOL_MIX_RATIO_CLIM                                          ADB2F404.367    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER                               ADB2F404.368    
     &   )                                                                 ADB2F404.369    
!                                                                          ADB2F404.370    
!                                                                          ADB2F404.371    
!                                                                          ADB2F404.372    
      IMPLICIT NONE                                                        ADB2F404.373    
!                                                                          ADB2F404.374    
!                                                                          ADB2F404.375    
!     COMDECKS INCLUDED.                                                   ADB2F404.376    
*CALL C_G                                                                  ADB2F404.377    
!                                                                          ADB2F404.378    
!     DUMMY ARGUMENTS.                                                     ADB2F404.379    
!                                                                          ADB2F404.380    
!     SIZES OF ARRAYS:                                                     ADB2F404.381    
      INTEGER   !, INTENT(IN)                                              ADB2F404.382    
     &     NPD_FIELD                                                       ADB2F404.383    
!             FIELD SIZE IN CALLING PROGRAM                                ADB2F404.384    
     &   , NPD_PROFILE                                                     ADB2F404.385    
!             SIZE OF ARRAY OF PROFILES                                    ADB2F404.386    
     &   , NPD_LAYER                                                       ADB2F404.387    
!             MAXIMUM NUMBER OF LAYERS                                     ADB2F404.388    
!                                                                          ADB2F404.389    
!     ACTUAL SIZES USED:                                                   ADB2F404.390    
      INTEGER   !, INTENT(IN)                                              ADB2F404.391    
     &     N_PROFILE                                                       ADB2F404.392    
!             NUMBER OF PROFILES                                           ADB2F404.393    
     &   , NLEVS                                                           ADB2F404.394    
!             NUMBER OF ATMOSPHERIC LAYERS                                 ADB2F404.395    
     &   , N_LEVELS_BL                                                     ADB2F404.396    
!             NUMBER OF LEVELS IN THE BOUNDARY LAYER                       ADB2F404.397    
!                                                                          ADB2F404.398    
!     GATHERING ARRAY:                                                     ADB2F404.399    
      INTEGER   !, INTENT(IN)                                              ADB2F404.400    
     &     I_GATHER(NPD_FIELD)                                             ADB2F404.401    
!             LIST OF POINTS TO GATHER                                     ADB2F404.402    
!                                                                          ADB2F404.403    
!     GENERAL ATMOSPHERIC PROPERTIES:                                      ADB2F404.404    
      INTEGER   !, INTENT(IN)                                              ADB2F404.405    
     &     TRINDX(NPD_FIELD)                                               ADB2F404.406    
!             LAYER BOUNDARY OF TROPOPAUSE                                 ADB2F404.407    
      REAL      !, INTENT(IN)                                              ADB2F404.408    
     &     PSTAR(NPD_FIELD)                                                ADB2F404.409    
!             SURFACE PRESSURES                                            ADB2F404.410    
     &   , AB(NLEVS+1)                                                     ADB2F404.411    
!             A AT BOUNDARIES OF LAYERS                                    ADB2F404.412    
     &   , BB(NLEVS+1)                                                     ADB2F404.413    
!             B AT BOUNDARIES OF LAYERS                                    ADB2F404.414    
!                                                                          ADB2F404.415    
!     SURFACE FIELDS                                                       ADB2F404.416    
      LOGICAL   !, INTENT(IN)                                              ADB2F404.417    
     &     LAND(NPD_FIELD)                                                 ADB2F404.418    
!             LAND-SEA MASK                                                ADB2F404.419    
      REAL      !, INTENT(IN)                                              ADB2F404.420    
     &     LYING_SNOW(NPD_FIELD)                                           ADB2F404.421    
!             DEPTH OF LYING SNOW                                          ADB2F404.422    
!                                                                          ADB2F404.423    
      REAL      !, INTENT(OUT)                                             ADB2F404.424    
     &     AEROSOL_MIX_RATIO_CLIM(NPD_PROFILE, 0: NPD_LAYER, 5)            ADB2F404.425    
!             MIXING RATIOS OF CLIMATOLOGICAL AEROSOLS                     ADB2F404.426    
!                                                                          ADB2F404.427    
!                                                                          ADB2F404.428    
!                                                                          ADB2F404.429    
!     LOCAL VARIABLES:                                                     ADB2F404.430    
      INTEGER                                                              ADB2F404.431    
     &     I                                                               ADB2F404.432    
!             LOOP VARIABLE                                                ADB2F404.433    
     &   , J                                                               ADB2F404.434    
!             LOOP VARIABLE                                                ADB2F404.435    
     &   , L                                                               ADB2F404.436    
!             LOOP VARIABLE                                                ADB2F404.437    
     &   , LG                                                              ADB2F404.438    
!             INDEX FOR GATHERING                                          ADB2F404.439    
     &   , BLTOP                                                           ADB2F404.440    
!             INDEX OF UPPER BOUNDARY OF PLANETARY BOUNDARY LAYER          ADB2F404.441    
      REAL                                                                 ADB1F402.217    
     &     PRESSURE_WT(NPD_FIELD)                                          ADB1F402.218    
!             ARRAY FOR SCALING AEROSOL AMOUNTS FOR DIFFERENT SURFACE      ADB1F402.219    
!             PRESSURES                                                    ADB1F402.220    
!                                                                          ADB1F402.221    
!     TOTAL COLUMN MASS (KG M-2) OF EACH AEROSOL SPECIES IN                ADB1F402.222    
!     THE BOUNDARY LAYER, THE FREE TROPOSPHERE AND THE STRATOSPHERE        ADB1F402.223    
!     RESPECTIVELY. THIS MODEL ASSUMES THAT THERE ARE FIVE AEROSOLS.       ADB1F402.224    
      REAL                                                                 ADB1F402.225    
     &     BL_OCEANMASS(5)                                                 ADB1F402.226    
     &   , BL_LANDMASS(5)                                                  ADB1F402.227    
     &   , FREETROP_MASS(5)                                                ADB1F402.228    
     &   , STRAT_MASS(5)                                                   ADB1F402.229    
!                                                                          ADB1F402.230    
!     INITIALIZATION FOR THE CLIMATOLOGICAL AEROSOL MODEL                  ADB1F402.231    
      DATA BL_LANDMASS/2.77579E-5, 6.70018E-5, 0.0, 9.57169E-7, 0.0/       ADB1F402.232    
      DATA BL_OCEANMASS/1.07535E-5, 0.0, 2.043167E-4, 0.0, 0.0/            ADB1F402.233    
      DATA FREETROP_MASS/3.46974E-6, 8.37523E-6, 0.0, 1.19646E-7, 0.0/     ADB1F402.234    
      DATA STRAT_MASS/0.0, 0.0, 0.0, 0.0, 1.86604E-6/                      ADB1F402.235    
!                                                                          FILL3A.1516   
!                                                                          FILL3A.1517   
!                                                                          FILL3A.1518   
!     TROPOSPHERIC AEROSOL LOADING IS A SIMPLE FUNCTION OF SURFACE         ADB2F404.442    
!     PRESSURE: HALVING PSTAR HALVES THE TROPOSPHERIC AEROSOL BURDEN.      ADB2F404.443    
!     THE STRATOSPHERIC BURDEN IS INDEPENDENT OF PSTAR.  NOTE THE          ADB2F404.444    
!     FACTOR MULTIPLING AEROSOL AMOUNTS USES A REFERENCE PRESSURE          ADB2F404.445    
!     OF 1013 mbars.                                                       ADB2F404.446    
      DO L=1, N_PROFILE                                                    ADB2F404.447    
        PRESSURE_WT(L)=PSTAR(I_GATHER(L))*(1.0/1.013E5)                    ADB2F404.448    
      END DO                                                               ADB2F404.449    
!                                                                          ADB1F402.269    
!     For each of the 5 aerosol species, the column amount in the          ADB2F404.450    
!     boundary layer, free troposphere and stratosphere are known for      ADB2F404.451    
!     a standard atmosphere over ocean and land. These can be used         ADB2F404.452    
!     to find mixing ratios for the UM by dividing total aerosol by        ADB1F405.285    
!     total air mass (and using pressure weighting in the                  ADB2F404.454    
!     troposphere).                                                        ADB2F404.455    
!                                                                          ADB1F402.270    
!     Firstly, mixing ratios are set for the 5 aerosol species in the      ADB2F404.456    
!     stratosphere.                                                        ADB2F404.457    
      DO I=1,5                                                             ADB2F404.458    
        DO L=1, N_PROFILE                                                  ADB2F404.459    
          LG=I_GATHER(L)                                                   ADB2F404.460    
          AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-TRINDX(LG),I)                   ADB2F404.461    
     &      =STRAT_MASS(I)*G/                                              ADB2F404.462    
     &      ((AB(TRINDX(LG))+BB(TRINDX(LG))*PSTAR(LG))                     ADB2F404.463    
     &      -(AB(NLEVS+1)+BB(NLEVS+1)*PSTAR(LG)))                          ADB2F404.464    
        END DO                                                             ADB2F404.465    
      END DO                                                               ADB2F404.466    
      DO I=1,5                                                             ADB2F404.467    
        DO L=1, N_PROFILE                                                  ADB2F404.468    
          LG=I_GATHER(L)                                                   ADB2F404.469    
            DO J=(TRINDX(LG)+1),NLEVS                                      ADB2F404.470    
              AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-J,I)=                       ADB2F404.471    
     &          AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-TRINDX(LG),I)             ADB2F404.472    
            END DO                                                         ADB2F404.473    
         END DO                                                            ADB2F404.474    
       END DO                                                              ADB2F404.475    
!      Now, the mixing ratios are set for the 5 aerosol species            ADB2F404.476    
!      in the free troposphere.                                            ADB2F404.477    
!      The half-level at the top of the boundary layer is BLTOP            ADB2F404.478    
       BLTOP=N_LEVELS_BL+1                                                 ADB2F404.479    
       DO I=1,5                                                            ADB2F404.480    
         DO L=1, N_PROFILE                                                 ADB2F404.481    
           LG=I_GATHER(L)                                                  ADB2F404.482    
           AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-BLTOP,I)                       ADB2F404.483    
     &       =FREETROP_MASS(I)*G*                                          ADB2F404.484    
     &       PRESSURE_WT(L)/((AB(BLTOP)+BB(BLTOP)*PSTAR(LG))-              ADB2F404.485    
     &       (AB(TRINDX(LG))+BB(TRINDX(LG))*PSTAR(LG)))                    ADB2F404.486    
         END DO                                                            ADB2F404.487    
       END DO                                                              ADB2F404.488    
       DO L=1, N_PROFILE                                                   ADB2F404.489    
         LG=I_GATHER(L)                                                    ADB2F404.490    
         IF ((BLTOP+1).LE.(TRINDX(LG)-1)) THEN                             ADB2F404.491    
           DO I=1,5                                                        ADB2F404.492    
             DO J=(BLTOP+1),(TRINDX(LG)-1)                                 ADB2F404.493    
               AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-J,I)=                      ADB2F404.494    
     &           AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-BLTOP,I)                 ADB2F404.495    
             END DO                                                        ADB2F404.496    
           END DO                                                          ADB2F404.497    
         END IF                                                            ADB2F404.498    
       END DO                                                              ADB2F404.499    
!                                                                          ADB1F402.271    
!      Now, the boundary layer mixing ratios are set for the               ADB2F404.500    
!      5 aerosol species. A continental aerosol is used over most land     ADB2F404.501    
!      areas, but not over ice sheets, which are identified by the         ADB2F404.502    
!      criterion used in the boundary layer scheme that the mass of        ADB2F404.503    
!      lying snow exceeds 5000 kgm-2. Over ice sheets a maritime           ADB2F404.504    
!      aerosol is used.                                                    ADB2F404.505    
       DO I=1,5                                                            ADB2F404.506    
         DO L=1, N_PROFILE                                                 FILL3A.1520   
           LG=I_GATHER(L)                                                  ADB2F404.507    
           IF ( LAND(LG).AND.(LYING_SNOW(LG).LT.5.0E+03) ) THEN            ADB2F404.508    
            AEROSOL_MIX_RATIO_CLIM(L,NLEVS+2-BLTOP,I)                      ADB2F404.509    
     &        =BL_LANDMASS(I)*G*PRESSURE_WT(L)                             ADB2F404.510    
     &        /(PSTAR(LG)-(AB(BLTOP)+BB(BLTOP)*PSTAR(LG)))                 ADB2F404.511    
           ELSE                                                            ADB2F404.512    
            AEROSOL_MIX_RATIO_CLIM(L,NLEVS+2-BLTOP,I)                      ADB2F404.513    
     &        =BL_OCEANMASS(I)*G*PRESSURE_WT(L)                            ADB2F404.514    
     &        /(PSTAR(LG)-(AB(BLTOP)+BB(BLTOP)*PSTAR(LG)))                 ADB2F404.515    
           END IF                                                          ADB2F404.516    
         END DO                                                            ADB1F402.282    
       END DO                                                              ADB2F404.517    
       DO I=1,5                                                            ADB2F404.518    
         DO J=1,(BLTOP-2)                                                  GRB0F405.13     
           DO L=1, N_PROFILE                                               GRB0F405.14     
             AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-J,I)=                        ADB2F404.521    
     &         AEROSOL_MIX_RATIO_CLIM(L,NLEVS+2-BLTOP,I)                   ADB2F404.522    
           END DO                                                          ADB1F402.299    
         END DO                                                            ADB1F402.300    
       END DO                                                              ADB2F404.523    
!                                                                          FILL3A.1526   
!                                                                          FILL3A.1527   
!                                                                          FILL3A.1528   
      RETURN                                                               FILL3A.1529   
      END                                                                  FILL3A.1530   
!+ Subroutine to calculate the total cloud cover.                          FILL3A.1531   
!                                                                          FILL3A.1532   
! Purpose:                                                                 FILL3A.1533   
!   The total cloud cover at all grid-points is determined.                FILL3A.1534   
!                                                                          FILL3A.1535   
! Method:                                                                  FILL3A.1536   
!   A separate calculation is made for each different assumption about     FILL3A.1537   
!   the overlap.                                                           FILL3A.1538   
!                                                                          FILL3A.1539   
! Current Owner of Code: J. M. Edwards                                     FILL3A.1540   
!                                                                          FILL3A.1541   
! History:                                                                 FILL3A.1542   
!       Version         Date                    Comment                    FILL3A.1543   
!       4.0             27-07-95                Original Code              FILL3A.1544   
!                                               (J. M. Edwards)            FILL3A.1545   
!       4.2             08-08-96                Code added for coherent    ADB1F402.383    
!                                               convective cloud.          ADB1F402.384    
!                                               (J. M. Edwards)            ADB1F402.385    
!                                                                          FILL3A.1546   
! Description of Code:                                                     FILL3A.1547   
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.1548   
!                                                                          FILL3A.1549   
!- ---------------------------------------------------------------------   FILL3A.1550   

      SUBROUTINE R2_CALC_TOTAL_CLOUD_COVER(N_PROFILE, NLEVS, NCLDS          2FILL3A.1551   
     &   , I_CLOUD, W_CLOUD, TOTAL_CLOUD_COVER                             FILL3A.1552   
     &   , NPD_PROFILE, NPD_LAYER                                          FILL3A.1553   
     &   )                                                                 FILL3A.1554   
!                                                                          FILL3A.1555   
!                                                                          FILL3A.1556   
!                                                                          FILL3A.1557   
      IMPLICIT NONE                                                        FILL3A.1558   
!                                                                          FILL3A.1559   
!                                                                          FILL3A.1560   
!     DECLARATION OF ARRAY SIZES.                                          FILL3A.1561   
      INTEGER   !, INTENT(IN)                                              FILL3A.1562   
     &     NPD_PROFILE                                                     FILL3A.1563   
!             MAXIMUM NUMBER OF PROFILES                                   FILL3A.1564   
     &   , NPD_LAYER                                                       FILL3A.1565   
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.1566   
!                                                                          FILL3A.1567   
!     COMDECKS INCLUDED                                                    FILL3A.1568   
*CALL CLSCHM3A                                                             FILL3A.1569   
!                                                                          FILL3A.1570   
!                                                                          FILL3A.1571   
!     DUMMY ARGUMENTS.                                                     FILL3A.1572   
      INTEGER   !, INTENT(IN)                                              FILL3A.1573   
     &     N_PROFILE                                                       FILL3A.1574   
!             NUMBER OF PROFILES                                           FILL3A.1575   
     &   , NLEVS                                                           FILL3A.1576   
!             NUMBER OF LAYERS                                             FILL3A.1577   
     &   , NCLDS                                                           FILL3A.1578   
!             NUMBER OF CLOUDY LAYERS                                      FILL3A.1579   
     &   , I_CLOUD                                                         FILL3A.1580   
!             CLOUD SCHEME EMPLOYED                                        FILL3A.1581   
      REAL      !, INTENT(IN)                                              FILL3A.1582   
     &     W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 FILL3A.1583   
!             CLOUD AMOUNTS                                                FILL3A.1584   
!                                                                          FILL3A.1585   
      REAL      !, INTENT(OUT)                                             FILL3A.1586   
     &     TOTAL_CLOUD_COVER(NPD_PROFILE)                                  FILL3A.1587   
!             TOTAL CLOUD COVER                                            FILL3A.1588   
!                                                                          FILL3A.1589   
!                                                                          FILL3A.1590   
!     LOCAL VARIABLES.                                                     FILL3A.1591   
      INTEGER                                                              FILL3A.1592   
     &     L                                                               FILL3A.1593   
!             LOOP VARIABLE                                                FILL3A.1594   
     &   , I                                                               FILL3A.1595   
!             LOOP VARIABLE                                                FILL3A.1596   
!                                                                          FILL3A.1597   
!                                                                          FILL3A.1598   
!                                                                          FILL3A.1599   
!     DIFFERENT OVERLAP ASSUMPTIONS ARE CODED INTO EACH SOLVER.            FILL3A.1600   
!                                                                          FILL3A.1601   
      IF (I_CLOUD.EQ.IP_CLOUD_MIX_MAX) THEN                                FILL3A.1602   
!                                                                          FILL3A.1603   
!        USE THE TOTAL CLOUD COVER TEMPORARILY TO HOLD THE CLEAR-SKY       FILL3A.1604   
!        FRACTION AND CONVERT BACK TO CLOUD COVER LATER.                   FILL3A.1605   
!        WE CALCULATE THIS QUANTITY BY IMAGINING A TOTALLY TRANSPARENT     FILL3A.1606   
!        ATMOSPHERE CONTAINING TOTALLY OPAQUE CLOUDS AND FINDING THE       FILL3A.1607   
!        TRANSMISSION.                                                     FILL3A.1608   
         DO L=1, N_PROFILE                                                 FILL3A.1609   
            TOTAL_CLOUD_COVER(L)=1.0E+00-W_CLOUD(L, NLEVS+1-NCLDS)         FILL3A.1610   
         ENDDO                                                             FILL3A.1611   
         DO I=NLEVS+1-NCLDS, NLEVS-1                                       FILL3A.1612   
            DO L=1, N_PROFILE                                              FILL3A.1613   
               IF (W_CLOUD(L, I+1).GT.W_CLOUD(L, I)) THEN                  FILL3A.1614   
                  TOTAL_CLOUD_COVER(L)=TOTAL_CLOUD_COVER(L)                FILL3A.1615   
     &               *(1.0E+00-W_CLOUD(L, I+1))/(1.0E+00-W_CLOUD(L, I))    FILL3A.1616   
               ENDIF                                                       FILL3A.1617   
            ENDDO                                                          FILL3A.1618   
         ENDDO                                                             FILL3A.1619   
         DO L=1, N_PROFILE                                                 FILL3A.1620   
            TOTAL_CLOUD_COVER(L)=1.0E+00-TOTAL_CLOUD_COVER(L)              FILL3A.1621   
         ENDDO                                                             FILL3A.1622   
!                                                                          FILL3A.1623   
      ELSE IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN                        FILL3A.1624   
!                                                                          FILL3A.1625   
!        USE THE TOTAL CLOUD COVER TEMPORARILY TO HOLD THE CLEAR-SKY       FILL3A.1626   
!        FRACTION AND CONVERT BACK TO CLOUD COVER LATER.                   FILL3A.1627   
         DO L=1, N_PROFILE                                                 FILL3A.1628   
            TOTAL_CLOUD_COVER(L)=1.0E+00                                   FILL3A.1629   
         ENDDO                                                             FILL3A.1630   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1631   
            DO L=1, N_PROFILE                                              FILL3A.1632   
               TOTAL_CLOUD_COVER(L)=TOTAL_CLOUD_COVER(L)                   FILL3A.1633   
     &            *(1.0E+00-W_CLOUD(L, I))                                 FILL3A.1634   
            ENDDO                                                          FILL3A.1635   
         ENDDO                                                             FILL3A.1636   
         DO L=1, N_PROFILE                                                 FILL3A.1637   
            TOTAL_CLOUD_COVER(L)=1.0E+00-TOTAL_CLOUD_COVER(L)              FILL3A.1638   
         ENDDO                                                             FILL3A.1639   
!                                                                          FILL3A.1640   
      ELSE IF (I_CLOUD.EQ.IP_CLOUD_COLUMN_MAX) THEN                        FILL3A.1641   
!                                                                          FILL3A.1642   
         DO L=1, N_PROFILE                                                 FILL3A.1643   
            TOTAL_CLOUD_COVER(L)=0.0E+00                                   FILL3A.1644   
         ENDDO                                                             FILL3A.1645   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1646   
            DO L=1, N_PROFILE                                              FILL3A.1647   
               TOTAL_CLOUD_COVER(L)=MAX(TOTAL_CLOUD_COVER(L)               FILL3A.1648   
     &            , W_CLOUD(L, I))                                         FILL3A.1649   
            ENDDO                                                          FILL3A.1650   
         ENDDO                                                             ADB1F402.386    
!                                                                          ADB1F402.387    
      ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN                            ADB1F402.388    
!                                                                          ADB1F402.389    
!        USE THE TOTAL CLOUD COVER TEMPORARILY TO HOLD THE CLEAR-SKY       ADB1F402.390    
!        FRACTION AND CONVERT BACK TO CLOUD COVER LATER.                   ADB1F402.391    
!        WE CALCULATE THIS QUANTITY BY IMAGINING A TOTALLY TRANSPARENT     ADB1F402.392    
!        ATMOSPHERE CONTAINING TOTALLY OPAQUE CLOUDS AND FINDING THE       ADB1F402.393    
!        TRANSMISSION.                                                     ADB1F402.394    
         DO L=1, N_PROFILE                                                 ADB1F402.395    
            TOTAL_CLOUD_COVER(L)=1.0E+00-W_CLOUD(L, NLEVS+1-NCLDS)         ADB1F402.396    
         ENDDO                                                             ADB1F402.397    
         DO I=NLEVS+1-NCLDS, NLEVS-1                                       ADB1F402.398    
            DO L=1, N_PROFILE                                              ADB1F402.399    
               IF (W_CLOUD(L, I+1).GT.W_CLOUD(L, I)) THEN                  ADB1F402.400    
                  TOTAL_CLOUD_COVER(L)=TOTAL_CLOUD_COVER(L)                ADB1F402.401    
     &               *(1.0E+00-W_CLOUD(L, I+1))/(1.0E+00-W_CLOUD(L, I))    ADB1F402.402    
               ENDIF                                                       ADB1F402.403    
            ENDDO                                                          ADB1F402.404    
         ENDDO                                                             ADB1F402.405    
         DO L=1, N_PROFILE                                                 ADB1F402.406    
            TOTAL_CLOUD_COVER(L)=1.0E+00-TOTAL_CLOUD_COVER(L)              ADB1F402.407    
         ENDDO                                                             FILL3A.1651   
!                                                                          FILL3A.1652   
      ELSE IF (I_CLOUD.EQ.IP_CLOUD_CLEAR) THEN                             FILL3A.1653   
!                                                                          FILL3A.1654   
         DO L=1, N_PROFILE                                                 FILL3A.1655   
            TOTAL_CLOUD_COVER(L)=0.0E+00                                   FILL3A.1656   
         ENDDO                                                             FILL3A.1657   
!                                                                          FILL3A.1658   
      ENDIF                                                                FILL3A.1659   
!                                                                          FILL3A.1660   
!                                                                          FILL3A.1661   
!                                                                          FILL3A.1662   
      RETURN                                                               FILL3A.1663   
      END                                                                  FILL3A.1664   
!+ Subroutine to implement the MRF UMIST parametrization.                  FILL3A.1665   
!                                                                          FILL3A.1666   
! Purpose:                                                                 FILL3A.1667   
!   Effective Radii are calculated in accordance with this                 FILL3A.1668   
!   parametrization.                                                       FILL3A.1669   
!                                                                          FILL3A.1670   
! Method:                                                                  FILL3A.1671   
!   The number density of CCN is found from the concentration              FILL3A.1672   
!   of aerosols, if available. This yields the number density of           FILL3A.1673   
!   droplets: if aerosols are not present, the number of droplets          FILL3A.1674   
!   is fixed. Effective radii are calculated from the number of            FILL3A.1675   
!   droplets and the LWC. Limits are applied to these values. In           FILL3A.1676   
!   deep convective clouds fixed values are assumed.                       FILL3A.1677   
!                                                                          FILL3A.1678   
! Current Owner of Code: J. M. Edwards                                     FILL3A.1679   
!                                                                          FILL3A.1680   
! History:                                                                 FILL3A.1681   
!       Version         Date                    Comment                    FILL3A.1682   
!       4.0             27-07-95                Original Code              FILL3A.1683   
!                                               (J. M. Edwards)            FILL3A.1684   
!       4.4             15-09-97                Accumulation-mode          ADB2F404.524    
!                                               and dissolved sulphate     ADB2F404.525    
!                                               passed directly to         ADB2F404.526    
!                                               this routine to allow      ADB2F404.527    
!                                               the indirect effect to     ADB2F404.528    
!                                               be used without            ADB2F404.529    
!                                               aerosols being needed      ADB2F404.530    
!                                               in the spectral file.      ADB2F404.531    
!                                               (J. M. Edwards)            ADB2F404.532    
!       4.5             18-05-98                Obsolete bounds on         ADB1F405.286    
!                                               effective radius           ADB1F405.287    
!                                               removed.                   ADB1F405.288    
!                                               (J. M. Edwards)            ADB1F405.289    
!                                                                          FILL3A.1685   
! Description of Code:                                                     FILL3A.1686   
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.1687   
!                                                                          FILL3A.1688   
!- ---------------------------------------------------------------------   FILL3A.1689   

      SUBROUTINE R2_RE_MRF_UMIST(N_PROFILE, NLEVS, NCLDS                    1,1FILL3A.1690   
     &   , I_GATHER                                                        AYY1F404.423    
     &   , L_AEROSOL_CCN, ACCUM_SULPHATE, DISS_SULPHATE                    AYY1F404.424    
     &   , I_CLOUD_REPRESENTATION                                          FILL3A.1692   
     &   , LAND_G, DENSITY_AIR, CONDENSED_MIX_RATIO, CC_DEPTH              FILL3A.1693   
     &   , CONDENSED_RE                                                    FILL3A.1694   
     &   , NTOT_DIAG_G                                                     AAJ3F404.165    
     &   , STRAT_LWC_DIAG_G                                                AAJ3F404.166    
     &   , SO4_CCN_DIAG_G                                                  AAJ3F404.167    
     &   , SULP_DIM1, SULP_DIM2                                            AYY1F404.425    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES          AYY1F404.426    
     &   )                                                                 FILL3A.1696   
!                                                                          FILL3A.1697   
!                                                                          FILL3A.1698   
!                                                                          FILL3A.1699   
      IMPLICIT NONE                                                        FILL3A.1700   
!                                                                          FILL3A.1701   
!                                                                          FILL3A.1702   
!     COMDECKS INCLUDED:                                                   ADB2F404.533    
*CALL C_PI                                                                 FILL3A.1704   
*CALL C_DENSTY                                                             FILL3A.1705   
*CALL C_MICRO                                                              FILL3A.1706   
*CALL DIMFIX3A                                                             FILL3A.1707   
*CALL CLDCMP3A                                                             FILL3A.1708   
*CALL CLREPP3A                                                             FILL3A.1709   
!                                                                          FILL3A.1710   
!                                                                          FILL3A.1711   
!     DUMMY ARGUMENTS:                                                     FILL3A.1712   
!                                                                          FILL3A.1713   
!     SIZES OF ARRAYS:                                                     FILL3A.1714   
      INTEGER   !, INTENT(IN)                                              FILL3A.1715   
     &     NPD_FIELD                                                       AYY1F404.427    
!             SIZE OF INPUT FIELDS TO THE RADIATION                        AYY1F404.428    
     &   , NPD_PROFILE                                                     AYY1F404.429    
!             MAXIMUM NUMBER OF PROFILES                                   FILL3A.1717   
     &   , NPD_LAYER                                                       FILL3A.1718   
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.1719   
     &   , NPD_AEROSOL_SPECIES                                             FILL3A.1720   
!             MAXIMUM NUMBER OF AEROSOL SPECIES                            FILL3A.1721   
     &   , SULP_DIM1                                                       AYY1F404.430    
!             1ST DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.431    
     &   , SULP_DIM2                                                       AYY1F404.432    
!             2ND DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.433    
!                                                                          FILL3A.1722   
      INTEGER   !, INTENT(IN)                                              FILL3A.1723   
     &     N_PROFILE                                                       FILL3A.1724   
!             NUMBER OF ATMOSPHERIC PROFILES                               FILL3A.1725   
     &   , NLEVS                                                           FILL3A.1726   
!             NUMBER OF LEVELS                                             FILL3A.1727   
     &   , NCLDS                                                           FILL3A.1728   
!             NUMBER OF CLOUDY LEVELS                                      FILL3A.1729   
!                                                                          AYY1F404.434    
      INTEGER   !, INTENT(IN)                                              AYY1F404.435    
     &     I_GATHER(NPD_FIELD)                                             AYY1F404.436    
!             LIST OF POINTS TO BE GATHERED                                AYY1F404.437    
      LOGICAL   !, INTENT(IN)                                              FILL3A.1730   
     &     LAND_G(NPD_PROFILE)                                             FILL3A.1731   
!             GATHERED MASK FOR LAND POINTS                                FILL3A.1732   
      INTEGER   !, INTENT(IN)                                              FILL3A.1733   
     &     I_CLOUD_REPRESENTATION                                          FILL3A.1734   
!             REPRESENTATION OF CLOUDS                                     FILL3A.1735   
!                                                                          FILL3A.1736   
!     VARIABLES FOR AEROSOLS                                               FILL3A.1737   
      LOGICAL   !, INTENT(IN)                                              FILL3A.1738   
     &     L_AEROSOL_CCN                                                   ADB1F401.269    
!             FLAG TO USE AEROSOLS TO FIND CCN.                            ADB1F401.270    
      REAL      !, INTENT(IN)                                              FILL3A.1741   
     &     ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2)                            AYY1F404.438    
!             MIXING RATIOS OF ACCUMULATION MODE SULPHATE                  AYY1F404.439    
     &   , DISS_SULPHATE(SULP_DIM1, SULP_DIM2)                             AYY1F404.440    
!             MIXING RATIOS OF DISSOLVED SULPHATE                          AYY1F404.441    
!                                                                          FILL3A.1745   
      REAL      !, INTENT(IN)                                              FILL3A.1746   
     &     DENSITY_AIR(NPD_PROFILE, NPD_LAYER)                             FILL3A.1747   
!             DENSITY OF AIR                                               FILL3A.1748   
!                                                                          FILL3A.1749   
      REAL      !, INTENT(IN)                                              FILL3A.1750   
     &     CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER                   FILL3A.1751   
     &        , NPD_CLOUD_COMPONENT)                                       FILL3A.1752   
!             MIXING RATIOS OF CONDENSED SPECIES                           FILL3A.1753   
     &   , CC_DEPTH(NPD_PROFILE)                                           FILL3A.1754   
!             DEPTH OF CONVECTIVE CLOUD                                    FILL3A.1755   
!                                                                          FILL3A.1756   
      REAL      !, INTENT(OUT)                                             FILL3A.1757   
     &     CONDENSED_RE(NPD_PROFILE, 0: NPD_LAYER, NPD_CLOUD_COMPONENT)    FILL3A.1758   
!             EFFECTIVE RADII OF CONDENSED COMPONENTS OF CLOUDS            FILL3A.1759   
!                                                                          FILL3A.1760   
      REAL      !, INTENT(OUT)                                             AAJ3F404.168    
     &     NTOT_DIAG_G(NPD_PROFILE, NPD_LAYER)                             AAJ3F404.169    
!             DIAGNOSTIC ARRAY FOR NTOT (GATHERED)                         AAJ3F404.170    
     &   , STRAT_LWC_DIAG_G(NPD_PROFILE, NPD_LAYER)                        AAJ3F404.171    
!             DIAGNOSTIC ARRAY FOR STRATIFORM LWC (GATHERED)               AAJ3F404.172    
     &   , SO4_CCN_DIAG_G(NPD_PROFILE, NPD_LAYER)                          AAJ3F404.173    
!             DIAGNOSTIC ARRAY FOR SO4 CCN MASS CONC (GATHERED)            AAJ3F404.174    
!                                                                          AAJ3F404.175    
!                                                                          FILL3A.1761   
!     LOCAL VARIABLES:                                                     FILL3A.1762   
      INTEGER                                                              FILL3A.1763   
     &     I                                                               FILL3A.1764   
!             LOOP VARIABLE                                                FILL3A.1765   
     &   , L                                                               FILL3A.1766   
!             LOOP VARIABLE                                                FILL3A.1767   
!                                                                          FILL3A.1768   
      REAL                                                                 FILL3A.1769   
     &     TOTAL_MIX_RATIO_ST(NPD_PROFILE)                                 FILL3A.1770   
!             TOTAL MIXING RATIO OF WATER SUBSTANCE IN STRATIFORM CLOUD    FILL3A.1771   
     &   , TOTAL_MIX_RATIO_CNV(NPD_PROFILE)                                FILL3A.1772   
!             TOTAL MIXING RATIO OF WATER SUBSTANCE IN STRATIFORM CLOUD    FILL3A.1773   
!                                                                          FILL3A.1774   
      REAL                                                                 FILL3A.1775   
     &     N_DROP(NPD_PROFILE, NPD_LAYER)                                  FILL3A.1776   
!             NUMBER DENSITY OF DROPLETS                                   FILL3A.1777   
     &   , KPARAM                                                          FILL3A.1778   
!             RATIO OF CUBES OF VOLUME RADIUS TO EFFECTIVE RADIUS          FILL3A.1779   
!                                                                          FILL3A.1780   
!     FIXED CONSTANTS OF THE PARAMETRIZATION:                              FILL3A.1781   
      REAL                                                                 FILL3A.1782   
     &     DEEP_CONVECTIVE_CLOUD                                           ADB1F405.290    
!             THRESHOLD VALUE FOR DEEP CONVECTIVE CLOUD                    FILL3A.1788   
      PARAMETER(                                                           FILL3A.1789   
     &     DEEP_CONVECTIVE_CLOUD=5.0E+02                                   ADB1F405.291    
     &   )                                                                 FILL3A.1793   
!                                                                          FILL3A.1794   
!                                                                          FILL3A.1795   
!                                                                          FILL3A.1796   
!     CALCULATE THE NUMBER DENSITY OF DROPLETS                             FILL3A.1797   
      CALL R2_FIND_NUMBER_DROP(N_PROFILE, NLEVS, NCLDS                     FILL3A.1798   
     &   , I_GATHER                                                        AYY1F404.442    
     &   , DENSITY_AIR, L_AEROSOL_CCN                                      AYY1F404.443    
     &   , ACCUM_SULPHATE, DISS_SULPHATE                                   AYY1F404.444    
     &   , LAND_G                                                          FILL3A.1800   
     &   , N_DROP                                                          FILL3A.1801   
     &   , SO4_CCN_DIAG_G                                                  AAJ3F404.176    
     &   , SULP_DIM1, SULP_DIM2                                            AYY1F404.445    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES          AYY1F404.446    
     &   )                                                                 FILL3A.1803   
!                                                                          FILL3A.1804   
      DO I=NLEVS+1-NCLDS, NLEVS                                            FILL3A.1805   
!                                                                          FILL3A.1806   
!        FIND THE TOTAL MIXING RATIO OF WATER SUBSTANCE IN THE CLOUD       FILL3A.1807   
!        AS IMPLIED BY THE REPRESENTATION.                                 FILL3A.1808   
         IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN           FILL3A.1809   
            DO L=1, N_PROFILE                                              FILL3A.1810   
               TOTAL_MIX_RATIO_ST(L)                                       FILL3A.1811   
     &            =CONDENSED_MIX_RATIO(L, I, IP_CLCMP_ST_WATER)            FILL3A.1812   
     &            +CONDENSED_MIX_RATIO(L, I, IP_CLCMP_ST_ICE)              FILL3A.1813   
               TOTAL_MIX_RATIO_CNV(L)                                      FILL3A.1814   
     &            =CONDENSED_MIX_RATIO(L, I, IP_CLCMP_CNV_WATER)           FILL3A.1815   
     &            +CONDENSED_MIX_RATIO(L, I, IP_CLCMP_CNV_ICE)             FILL3A.1816   
            ENDDO                                                          FILL3A.1817   
         ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN            FILL3A.1818   
            DO L=1, N_PROFILE                                              FILL3A.1819   
               TOTAL_MIX_RATIO_ST(L)                                       FILL3A.1820   
     &            =CONDENSED_MIX_RATIO(L, I, IP_CLCMP_ST_WATER)            FILL3A.1821   
               TOTAL_MIX_RATIO_CNV(L)                                      FILL3A.1822   
     &            =CONDENSED_MIX_RATIO(L, I, IP_CLCMP_CNV_WATER)           FILL3A.1823   
            ENDDO                                                          FILL3A.1824   
         ENDIF                                                             FILL3A.1825   
         DO L=1, N_PROFILE                                                 FILL3A.1826   
            IF (LAND_G(L)) THEN                                            FILL3A.1827   
               KPARAM=KPARAM_LAND                                          FILL3A.1828   
            ELSE                                                           FILL3A.1829   
               KPARAM=KPARAM_SEA                                           FILL3A.1830   
            ENDIF                                                          FILL3A.1831   
            CONDENSED_RE(L, I, IP_CLCMP_CNV_WATER)                         FILL3A.1832   
     &         =(3.0E+00*TOTAL_MIX_RATIO_CNV(L)*DENSITY_AIR(L, I)          FILL3A.1833   
     &         /(4.0E+00*PI*RHO_WATER*KPARAM*N_DROP(L, I)))                FILL3A.1834   
     &         **(1.0E+00/3.0E+00)                                         FILL3A.1835   
            CONDENSED_RE(L, I, IP_CLCMP_ST_WATER)                          FILL3A.1836   
     &         =(3.0E+00*TOTAL_MIX_RATIO_ST(L)*DENSITY_AIR(L, I)           FILL3A.1837   
     &         /(4.0E+00*PI*RHO_WATER*KPARAM*N_DROP(L, I)))                FILL3A.1838   
     &         **(1.0E+00/3.0E+00)                                         FILL3A.1839   
         ENDDO                                                             FILL3A.1840   
         DO L=1, N_PROFILE                                                 AAJ3F404.177    
            NTOT_DIAG_G(L, I)=N_DROP(L, I)*1.0E-06                         AAJ3F404.178    
            STRAT_LWC_DIAG_G(L, I)                                         AAJ3F404.179    
     &         =TOTAL_MIX_RATIO_ST(L)*DENSITY_AIR(L, I)*1.0E03             AAJ3F404.180    
         ENDDO                                                             AAJ3F404.181    
      ENDDO                                                                FILL3A.1841   
!                                                                          FILL3A.1842   
!     RESET THE EFFECTIVE RADII FOR DEEP CONVECTIVE CLOUDS.                FILL3A.1857   
      DO I=NLEVS+1-NCLDS, NLEVS                                            FILL3A.1858   
         DO L=1, N_PROFILE                                                 FILL3A.1859   
            IF (CC_DEPTH(L).GT.DEEP_CONVECTIVE_CLOUD) THEN                 FILL3A.1860   
               IF (LAND_G(L)) THEN                                         FILL3A.1861   
                  CONDENSED_RE(L, I, IP_CLCMP_CNV_WATER)=DCONRE_LAND       FILL3A.1862   
               ELSE                                                        FILL3A.1863   
                  CONDENSED_RE(L, I, IP_CLCMP_CNV_WATER)=DCONRE_SEA        FILL3A.1864   
               ENDIF                                                       FILL3A.1865   
            ENDIF                                                          FILL3A.1866   
         ENDDO                                                             FILL3A.1867   
      ENDDO                                                                FILL3A.1868   
!                                                                          FILL3A.1869   
!                                                                          FILL3A.1870   
!                                                                          FILL3A.1871   
      RETURN                                                               FILL3A.1872   
      END                                                                  FILL3A.1873   
!+ Subroutine to calculate the number density of droplets.                 FILL3A.1874   
!                                                                          FILL3A.1875   
! Purpose:                                                                 FILL3A.1876   
!   The number density of cloud droplets is calculated.                    FILL3A.1877   
!                                                                          FILL3A.1878   
! Method:                                                                  FILL3A.1879   
!   Straightforward.                                                       FILL3A.1880   
!                                                                          FILL3A.1881   
! Current Owner of Code: J. M. Edwards                                     FILL3A.1882   
!                                                                          FILL3A.1883   
! History:                                                                 FILL3A.1884   
!       Version         Date                    Comment                    FILL3A.1885   
!       4.0             27-07-95                Original Code              FILL3A.1886   
!                                               (J. M. Edwards)            FILL3A.1887   
!       4.4             15-09-97                Accumulation-mode          ADB2F404.534    
!                                               and dissolved sulphate     ADB2F404.535    
!                                               passed directly to         ADB2F404.536    
!                                               this routine to allow      ADB2F404.537    
!                                               the indirect effect to     ADB2F404.538    
!                                               be used without            ADB2F404.539    
!                                               aerosols being needed      ADB2F404.540    
!                                               in the spectral file.      ADB2F404.541    
!                                               The number of CCN now      ADB2F404.542    
!                                               depends on the             ADB2F404.543    
!                                               dissolved sulphate as      ADB2F404.544    
!                                               well as the accumulation   ADB2F404.545    
!                                               mode sulphate.             ADB2F404.546    
!                                               (J. M. Edwards)            ADB2F404.547    
!                                                                          FILL3A.1888   
! Description of Code:                                                     FILL3A.1889   
!   FORTRAN 77  with extensions listed in documentation.                   FILL3A.1890   
!                                                                          FILL3A.1891   
!- ---------------------------------------------------------------------   FILL3A.1892   

      SUBROUTINE R2_FIND_NUMBER_DROP(N_PROFILE, NLEVS, NCLDS                1FILL3A.1893   
     &   , I_GATHER                                                        AYY1F404.447    
     &   , DENSITY_AIR, L_AEROSOL_CCN                                      AYY1F404.448    
     &   , ACCUM_SULPHATE, DISS_SULPHATE                                   AYY1F404.449    
     &   , LAND_G                                                          FILL3A.1895   
     &   , N_DROP                                                          FILL3A.1896   
     &   , SO4_CCN_DIAG_G                                                  AAJ3F404.182    
     &   , SULP_DIM1, SULP_DIM2                                            AYY1F404.450    
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES          AYY1F404.451    
     &   )                                                                 FILL3A.1898   
!                                                                          FILL3A.1899   
!                                                                          FILL3A.1900   
!                                                                          FILL3A.1901   
      IMPLICIT NONE                                                        FILL3A.1902   
!                                                                          FILL3A.1903   
!                                                                          FILL3A.1904   
!     COMDECKS INCLUDED:                                                   FILL3A.1905   
*CALL C_PI                                                                 FILL3A.1906   
*CALL C_R_CP                                                               FILL3A.1907   
*CALL C_MICRO                                                              FILL3A.1908   
!                                                                          FILL3A.1909   
!                                                                          FILL3A.1910   
!     DUMMY ARGUMENTS:                                                     FILL3A.1911   
!                                                                          FILL3A.1912   
!     SIZES OF ARRAYS:                                                     FILL3A.1913   
      INTEGER   !, INTENT(IN)                                              FILL3A.1914   
     &     NPD_FIELD                                                       AYY1F404.452    
!             SIZE OF INPUT FIELDS                                         AYY1F404.453    
     &   , NPD_PROFILE                                                     AYY1F404.454    
!             MAXIMUM NUMBER OF PROFILES                                   FILL3A.1916   
     &   , NPD_LAYER                                                       FILL3A.1917   
!             MAXIMUM NUMBER OF LAYERS                                     FILL3A.1918   
     &   , NPD_AEROSOL_SPECIES                                             FILL3A.1919   
!             MAXIMUM NUMBER OF AEROSOL SPECIES                            FILL3A.1920   
     &   , SULP_DIM1                                                       AYY1F404.455    
!             1ST DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.456    
     &   , SULP_DIM2                                                       AYY1F404.457    
!             2ND DIMENSION OF ARRAYS OF SULPHATE                          AYY1F404.458    
      INTEGER   !, INTENT(IN)                                              FILL3A.1921   
     &     I_GATHER(NPD_FIELD)                                             AYY1F404.459    
!             LIST OF POINTS TO BE GATHERED                                AYY1F404.460    
      INTEGER   !, INTENT(IN)                                              AYY1F404.461    
     &     N_PROFILE                                                       FILL3A.1922   
!             NUMBER OF ATMOSPHERIC PROFILES                               FILL3A.1923   
     &   , NLEVS                                                           FILL3A.1924   
!             NUMBER OF LEVELS                                             FILL3A.1925   
     &   , NCLDS                                                           FILL3A.1926   
!             NUMBER OF CLOUDY LEVELS                                      FILL3A.1927   
      LOGICAL   !, INTENT(IN)                                              FILL3A.1928   
     &     L_AEROSOL_CCN                                                   ADB1F401.273    
!             FLAG TO USE AEROSOLS TO FIND CCN                             ADB1F401.274    
     &   , LAND_G(NPD_PROFILE)                                             FILL3A.1931   
!             GATHERED MASK FOR LAND POINTS                                FILL3A.1932   
      REAL      !, INTENT(IN)                                              FILL3A.1933   
     &     ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2)                            AYY1F404.462    
!             MIXING RATIOS OF ACCUMULATION-MODE SULPHATE                  AYY1F404.463    
     &   , DISS_SULPHATE(SULP_DIM1, SULP_DIM2)                             AYY1F404.464    
!             MIXING RATIOS OF DISSOLVED SULPHATE                          AYY1F404.465    
     &   , DENSITY_AIR(NPD_PROFILE, NPD_LAYER)                             FILL3A.1937   
!             DENSITY OF AIR                                               FILL3A.1938   
!                                                                          FILL3A.1939   
      REAL      !, INTENT(OUT)                                             FILL3A.1940   
     &     N_DROP(NPD_PROFILE, NPD_LAYER)                                  FILL3A.1941   
!             NUMBER DENSITY OF DROPLETS                                   FILL3A.1942   
!                                                                          AAJ3F404.183    
      REAL                                                                 AAJ3F404.184    
     &     SO4_CCN_DIAG_G(NPD_PROFILE, NPD_LAYER)                          AAJ3F404.185    
!             SO4 CCN MASS CONC DIAGNOSTIC ARRAY (GATHERED)                AAJ3F404.186    
!                                                                          AAJ3F404.187    
!                                                                          FILL3A.1943   
!                                                                          FILL3A.1944   
!     LOCAL VARIABLES:                                                     FILL3A.1945   
      INTEGER                                                              FILL3A.1946   
     &     I                                                               FILL3A.1947   
!             LOOP VARIABLE                                                FILL3A.1948   
     &   , L                                                               FILL3A.1949   
!             LOOP VARIABLE                                                FILL3A.1950   
      REAL                                                                 FILL3A.1951   
     &     PARTICLE_VOLUME                                                 FILL3A.1952   
!             MEAN VOLUME OF A PARTICLE                                    FILL3A.1953   
     &   , N_CCN                                                           FILL3A.1954   
!             NUMBER DENSITY OF CCN                                        FILL3A.1955   
!                                                                          FILL3A.1956   
      REAL                                                                 FILL3A.1961   
     &     RADIUS_0                                                        FILL3A.1962   
!             MEDIAN RADIUS OF LOG-NORMAL DISTRIBUTION                     FILL3A.1963   
     &   , SIGMA_0                                                         FILL3A.1964   
!             GEOMETRIC STANDARD DEVIATION                                 FILL3A.1965   
     &   , DENSITY_SULPHATE                                                FILL3A.1966   
!             DENSITY OF SULPHATE AEROSOL                                  FILL3A.1967   
      PARAMETER(                                                           FILL3A.1968   
     &     RADIUS_0=5.0E-08                                                FILL3A.1969   
     &   , SIGMA_0=2.0                                                     FILL3A.1970   
     &   , DENSITY_SULPHATE=1.769E+03                                      FILL3A.1971   
     &   )                                                                 FILL3A.1973   
!                                                                          FILL3A.1974   
!                                                                          FILL3A.1975   
!                                                                          FILL3A.1976   
      IF (L_AEROSOL_CCN) THEN                                              ADB1F401.278    
!                                                                          FILL3A.1978   
!        IF AEROSOLS ARE INCLUDED THE NUMBER OF CCN IS FOUND FROM THE      FILL3A.1979   
!        CONCENTRATION OF ACCUMULATION-MODE AND DISSOLVED SULPHATE.        ADB2F404.548    
!        NOTE THAT IN PRINCIPLE EACH MODE MIGHT HAVE A DIFFERENT           ADB2F404.549    
!        DENSITY AND SIZE DISTRIBUTION.                                    ADB2F404.550    
!        THE DROPLET NUMBER CONCENTRATION IS HELD TO A MINIMUM             AAJ2F404.1      
!        VALUE OF 5.0E+06 (5cm-3).                                         AAJ2F404.2      
!                                                                          FILL3A.1981   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1982   
            DO L=1, N_PROFILE                                              FILL3A.1983   
               PARTICLE_VOLUME=(4.0E+00*PI/3.0E+00)*RADIUS_0**3            FILL3A.1984   
     &            *EXP(4.5E+00*(LOG(SIGMA_0))**2)                          FILL3A.1985   
               N_CCN=(ACCUM_SULPHATE(I_GATHER(L), NLEVS+1-I)               AYY1F404.466    
     &            +DISS_SULPHATE(I_GATHER(L), NLEVS+1-I))                  AYY1F404.467    
     &            *DENSITY_AIR(L, I)                                       FILL3A.1987   
     &            /(DENSITY_SULPHATE*PARTICLE_VOLUME)                      FILL3A.1988   
               N_DROP(L, I)=3.75E+08*(1.0E+00-EXP(-2.5E-9*N_CCN))          FILL3A.1989   
               IF (N_DROP(L, I) .LT. 5.0E+06) N_DROP(L, I)=5.0E+06         AAJ2F404.3      
!              CONVERT THE MASS MIXING RATIOS FROM (NH4)2SO4               AAJ3F404.188    
!              TO MASS PER UNIT VOLUME OF SO4(IN MICROGRAMMES              AAJ3F404.189    
!              PER CUBIC METRE) FOR DIAGNOSTIC PURPOSES.                   AAJ3F404.190    
               SO4_CCN_DIAG_G(L, I)=                                       AAJ3F404.191    
     &                  (ACCUM_SULPHATE(I_GATHER(L), NLEVS+1-I)            AAJ3F404.192    
     &                  +DISS_SULPHATE(I_GATHER(L), NLEVS+1-I))            AAJ3F404.193    
     &                  * DENSITY_AIR(L, I) * (96./132.) * 1.0E+09         AAJ3F404.194    
            ENDDO                                                          FILL3A.1990   
         ENDDO                                                             FILL3A.1991   
!                                                                          FILL3A.1992   
      ELSE                                                                 FILL3A.1993   
!                                                                          FILL3A.1994   
!        WITHOUT AEROSOLS THE NUMBERS OF DROPLETS ARE FIXED.               FILL3A.1995   
!                                                                          FILL3A.1996   
         DO I=NLEVS+1-NCLDS, NLEVS                                         FILL3A.1997   
            DO L=1, N_PROFILE                                              FILL3A.1998   
               IF (LAND_G(L)) THEN                                         FILL3A.1999   
                  N_DROP(L, I)=NTOT_LAND                                   FILL3A.2000   
               ELSE                                                        FILL3A.2001   
                  N_DROP(L, I)=NTOT_SEA                                    FILL3A.2002   
               ENDIF                                                       FILL3A.2003   
            ENDDO                                                          FILL3A.2004   
         ENDDO                                                             FILL3A.2005   
!                                                                          FILL3A.2006   
      ENDIF                                                                FILL3A.2007   
!                                                                          FILL3A.2008   
!                                                                          FILL3A.2009   
!                                                                          FILL3A.2010   
      RETURN                                                               FILL3A.2011   
      END                                                                  FILL3A.2012   
!+ Subroutine to set the actual process options for the radiation code.    ADB1F401.281    
!                                                                          ADB1F401.282    
! Purpose:                                                                 ADB1F401.283    
!   To set a consistent set of process options for the radiation.          ADB1F401.284    
!                                                                          ADB1F401.285    
! Method:                                                                  ADB1F401.286    
!   The global options for the spectral region are compared with the       ADB1F401.287    
!   contents of the spectral file. The global options should be set        ADB1F401.288    
!   to reflect the capabilities of the code enabled in the model.          ADB1F401.289    
!                                                                          ADB1F401.290    
! Current Owner of Code: J. M. Edwards                                     ADB1F401.291    
!                                                                          ADB1F401.292    
! History:                                                                 ADB1F401.293    
!       Version         Date                    Comment                    ADB1F401.294    
!       4.1             04-03-96                Original Code              ADB1F401.295    
!                                               (J. M. Edwards)            ADB1F401.296    
!                                               Parts of this code are     ADB1F401.297    
!                                               rather redundant. The      ADB1F401.298    
!                                               form of writing is for     ADB1F401.299    
!                                               near consistency with      ADB1F401.300    
!                                               HADAM3.                    ADB1F401.301    
!                                                                          ADB1F401.302    
!       4.5   April 1998   Check for inconsistencies between soot          ALR3F405.98     
!                          spectral file and options used. L Robinson.     ALR3F405.99     
! Description of Code:                                                     ADB1F401.303    
!   FORTRAN 77  with extensions listed in documentation.                   ADB1F401.304    
!                                                                          ADB1F401.305    
!- ---------------------------------------------------------------------   ADB1F401.306    

      SUBROUTINE R2_COMPARE_PROC(IERR, L_PRESENT                            2ADB1F401.307    
     &   , L_RAYLEIGH_PERMITTED, L_GAS_PERMITTED, L_CONTINUUM_PERMITTED    ADB1F401.308    
     &   , L_DROP_PERMITTED, L_AEROSOL_PERMITTED                           ADB1F401.309    
     &   , L_AEROSOL_CCN_PERMITTED, L_ICE_PERMITTED                        ADB1F401.310    
     &   , L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT                        ADB1F401.311    
     &    ,L_USE_SOOT_DIRECT                                               ALR3F405.100    
     &   , L_CLIMAT_AEROSOL                                                ADB1F402.408    
     &   , L_RAYLEIGH, L_GAS, L_CONTINUUM                                  ADB1F401.312    
     &   , L_DROP, L_AEROSOL, L_AEROSOL_CCN, L_ICE                         ADB1F401.313    
     &   , NPD_TYPE                                                        ADB1F401.314    
     &   )                                                                 ADB1F401.315    
!                                                                          ADB1F401.316    
!                                                                          ADB1F401.317    
!                                                                          ADB1F401.318    
      IMPLICIT NONE                                                        ADB1F401.319    
!                                                                          ADB1F401.320    
!                                                                          ADB1F401.321    
!     COMDECKS INCLUDED.                                                   ADB1F401.322    
*CALL STDIO3A                                                              ADB1F401.323    
*CALL ERROR3A                                                              ADB1F401.324    
!                                                                          ADB1F401.325    
!                                                                          ADB1F401.326    
!     DUMMY ARGUMENTS:                                                     ADB1F401.327    
      INTEGER   !, INTENT(OUT)                                             ADB1F401.328    
     &     IERR                                                            ADB1F401.329    
!             ERROR FLAG                                                   ADB1F401.330    
      INTEGER   !, INTENT(IN)                                              ADB1F401.331    
     &     NPD_TYPE                                                        ADB1F401.332    
!             NUMBER OF TYPES OF SPECTRAL DATA                             ADB1F401.333    
!                                                                          ADB1F401.334    
      LOGICAL   !, INTENT(IN)                                              ADB1F401.335    
     &     L_PRESENT(0: NPD_TYPE)                                          ADB1F401.336    
!             ARRAY INDICATING BLOCKS OF DATA PRESENT                      ADB1F401.337    
!             IN THE SPECTRAL FILE.                                        ADB1F401.338    
!                                                                          ADB1F401.339    
!     PROCESSES PERMITTED WITHIN THE UNIFIED MODEL.                        ADB1F401.340    
      LOGICAL   !, INTENT(IN)                                              ADB1F401.341    
     &     L_RAYLEIGH_PERMITTED                                            ADB1F401.342    
!             RAYLEIGH SCATTERING PERMITTED IN THE MODEL                   ADB1F401.343    
     &   , L_GAS_PERMITTED                                                 ADB1F401.344    
!             GASEOUS ABSORPTION PERMITTED IN THE MODEL                    ADB1F401.345    
     &   , L_CONTINUUM_PERMITTED                                           ADB1F401.346    
!             CONTINUUM ABSORPTION PERMITTED IN THE MODEL                  ADB1F401.347    
     &   , L_DROP_PERMITTED                                                ADB1F401.348    
!             CLOUD DROPLET EXTINCTION PERMITTED IN THE MODEL              ADB1F401.349    
     &   , L_AEROSOL_PERMITTED                                             ADB1F401.350    
!             AEROSOL EXTINCTION PERMITTED IN THE MODEL                    ADB1F401.351    
     &   , L_AEROSOL_CCN_PERMITTED                                         ADB1F401.352    
!             DETERMINATION OF CCN FROM AEROSOLS PERMITTED IN THE MODEL    ADB1F401.353    
     &   , L_ICE_PERMITTED                                                 ADB1F401.354    
!             ICE EXTINCTION PERMITTED IN THE MODEL                        ADB1F401.355    
!                                                                          ADB1F401.356    
!     OPTIONS PASSED IN                                                    ADB1F401.357    
      LOGICAL                                                              ADB1F401.358    
     &     L_USE_SULPC_DIRECT                                              ADB1F401.359    
!             LOGICAL TO USE SULPHUR CYCLE FOR THE DIRECT EFFECT           ADB1F401.360    
     &   , L_USE_SULPC_INDIRECT                                            ADB1F401.361    
!             LOGICAL TO USE SULPHUR CYCLE FOR THE INDIRECT EFFECT         ADB1F401.362    
     &    ,L_USE_SOOT_DIRECT                                               ALR3F405.101    
!             LOGICAL TO USE DIRECT RADIATIVE EFFECT DUE TO SOOT           ALR3F405.102    
     &   , L_CLIMAT_AEROSOL                                                ADB1F402.409    
!             LOGICAL TO USE CLIMATOLOGICAL AEROSOL MODEL                  ADB1F402.410    
!                                                                          ADB1F401.363    
!     PROCESSES TO BE ENABLED IN THE RUN.                                  ADB1F401.364    
      LOGICAL   !, INTENT(OUT)                                             ADB1F401.365    
     &     L_RAYLEIGH                                                      ADB1F401.366    
!             RAYLEIGH SCATTERING TO BE ENABLED IN THE RUN                 ADB1F401.367    
     &   , L_GAS                                                           ADB1F401.368    
!             GASEOUS ABSORPTION TO BE ENABLED IN THE RUN                  ADB1F401.369    
     &   , L_CONTINUUM                                                     ADB1F401.370    
!             CONTINUUM ABSORPTION TO BE ENABLED IN THE RUN                ADB1F401.371    
     &   , L_DROP                                                          ADB1F401.372    
!             CLOUD DROPLET EXTINCTION TO BE ENABLED IN THE RUN            ADB1F401.373    
     &   , L_AEROSOL                                                       ADB1F401.374    
!             AEROSOL EXTINCTION TO BE ENABLED IN THE RUN                  ADB1F401.375    
     &   , L_AEROSOL_CCN                                                   ADB1F401.376    
!             DETERMINATION OF CCN FROM AEROSOL TO BE ENABLED IN THE RUN   ADB1F401.377    
     &   , L_ICE                                                           ADB1F401.378    
!             ICE EXTINCTION TO BE ENABLED IN THE RUN                      ADB1F401.379    
!                                                                          ADB1F401.380    
!                                                                          ADB1F401.381    
!                                                                          ADB1F401.382    
!     EACH OPTICAL PROCESS INCLUDED IN THE RADIATION CODE MAY BE           ADB1F401.383    
!     PERMITTED OR DENIED IN THE UNIFIED MODEL, DEPENDING ON THE           ADB1F401.384    
!     PRESENCE OF SUPPORTING CODE. TO BE ENABLED IN A RUN AN OPTICAL       ADB1F401.385    
!     PROCESS MUST BE PERMITTED IN THE UNIFIED MODEL AND HAVE              ADB1F401.386    
!     SUITABLE SPECTRAL DATA.                                              ADB1F401.387    
      L_RAYLEIGH=L_RAYLEIGH_PERMITTED.AND.L_PRESENT(3)                     ADB1F401.388    
      L_GAS=L_GAS_PERMITTED.AND.L_PRESENT(5)                               ADB1F401.389    
      L_CONTINUUM=L_CONTINUUM_PERMITTED.AND.L_PRESENT(9)                   ADB1F401.390    
      L_DROP=L_DROP_PERMITTED.AND.L_PRESENT(10)                            ADB1F401.391    
      L_ICE=L_ICE_PERMITTED.AND.L_PRESENT(12)                              ADB1F401.392    
!                                                                          ADB1F401.393    
!     SET THE CONTROLLING FLAG FOR THE DIRECT RADIATIVE EFFECTS OF         ADB1F402.411    
!     AEROSOLS.                                                            ADB1F402.412    
      IF (L_AEROSOL_PERMITTED) THEN                                        ADB1F402.413    
!        SET THE FLAG AND THEN CHECK THE SPECTRAL FILE.                    ADB1F402.414    
         L_AEROSOL=L_USE_SULPC_DIRECT.OR.L_CLIMAT_AEROSOL                  ADB1F402.415    
     &    .OR. L_USE_SOOT_DIRECT                                           ALR3F405.103    
         IF (L_AEROSOL.AND.(.NOT.L_PRESENT(11))) THEN                      ADB1F402.416    
            WRITE(IU_ERR, '(/A, /A)')                                      ADB1F402.417    
     &         '*** ERROR: THE SPECTRAL FILE CONTAINS NO DATA '            ADB1F402.418    
     &         //'FOR AEROSOLS.', 'SUCH DATA ARE REQUIRED FOR THE '        ADB1F402.419    
     &         //'DIRECT EFFECT.'                                          ADB1F402.420    
            IERR=I_ERR_FATAL                                               ADB1F402.421    
            RETURN                                                         ADB1F402.422    
         ENDIF                                                             ADB1F402.423    
      ELSE                                                                 ADB1F402.424    
!        CHECK THAT AEROSOLS HAVE NOT BEEN REQUESTED                       ADB1F402.425    
!        WHEN NOT PERMITTED.                                               ADB1F402.426    
         IF (L_USE_SULPC_DIRECT                                            ALR3F405.104    
     &   .OR.L_CLIMAT_AEROSOL                                              ALR3F405.105    
     &   .OR.L_USE_SOOT_DIRECT) THEN                                       ALR3F405.106    
            WRITE(IU_ERR, '(/A, /A)')                                      ADB1F402.428    
     &         '*** ERROR: THE DIRECT EFFECTS AEROSOLS ARE NOT '           ADB1F402.429    
     &         , 'PERMITTED IN THIS CONFIGURATION OF THE '                 ADB1F402.430    
     &         //'RADIATION CODE.'                                         ADB1F402.431    
            IERR=I_ERR_FATAL                                               ADB1F402.432    
            RETURN                                                         ADB1F402.433    
         ENDIF                                                             ADB1F402.434    
      ENDIF                                                                ADB1F402.435    
!                                                                          ADB1F402.436    
!     SET THE CONTROLLING FLAG FOR THE INDIRECT EFFECTS OF AEROSOLS.       ADB1F402.437    
!     AT PRESENT THIS DEPENDS SOLELY ON THE SULPHUR CYCLE.                 ADB1F402.438    
      L_AEROSOL_CCN=L_USE_SULPC_INDIRECT                                   ADB1F402.439    
!                                                                          ADB1F401.420    
!                                                                          ADB1F401.421    
!                                                                          ADB1F401.422    
      RETURN                                                               ADB1F401.423    
      END                                                                  ADB1F401.424    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            FILL3A.2013   
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.24