*IF DEF,A70_1A                                                             TWCFRG3A.2      
*IF DEF,A01_3A,OR,DEF,A02_3A                                               TWCFRG3A.3      
C *****************************COPYRIGHT******************************     TWCFRG3A.4      
C (c) CROWN COPYRIGHT 1996, METEOROLOGICAL OFFICE, All Rights Reserved.    TWCFRG3A.5      
C                                                                          TWCFRG3A.6      
C Use, duplication or disclosure of this code is subject to the            TWCFRG3A.7      
C restrictions as set forth in the contract.                               TWCFRG3A.8      
C                                                                          TWCFRG3A.9      
C                Meteorological Office                                     TWCFRG3A.10     
C                London Road                                               TWCFRG3A.11     
C                BRACKNELL                                                 TWCFRG3A.12     
C                Berkshire UK                                              TWCFRG3A.13     
C                RG12 2SZ                                                  TWCFRG3A.14     
C                                                                          TWCFRG3A.15     
C If no contract has been raised with this copy of the code, the use,      TWCFRG3A.16     
C duplication or disclosure of it is strictly prohibited.  Permission      TWCFRG3A.17     
C to do so must first be obtained in writing from the Head of Numerical    TWCFRG3A.18     
C Modelling at the above address.                                          TWCFRG3A.19     
C ******************************COPYRIGHT******************************    TWCFRG3A.20     
C                                                                          TWCFRG3A.21     
!+ Subroutine to calculate two-stream coefficients in the regions.         TWCFRG3A.22     
!                                                                          TWCFRG3A.23     
! Method:                                                                  TWCFRG3A.24     
!       The coefficients for each region are determined and                ADB1F405.994    
!       averaged.                                                          TWCFRG3A.26     
!                                                                          TWCFRG3A.27     
! Current Owner of Code: J. M. Edwards                                     TWCFRG3A.28     
!                                                                          TWCFRG3A.29     
! History:                                                                 TWCFRG3A.30     
!       Version         Date                    Comment                    TWCFRG3A.31     
!       4.2             15-05-96                Original Code              TWCFRG3A.32     
!                                               (J. M. Edwards)            TWCFRG3A.33     
!       4.3             20-02-97                Calls to vector            ADB1F405.995    
!                                               searching routine          ADB5F403.91     
!                                               WHENFGT removed.           ADB5F403.92     
!                                               (J. M. Edwards)            ADB1F405.996    
!       4.5             18-05-98                Unnecessary final          ADB1F405.997    
!                                               dimensions removed         ADB1F405.998    
!                                               from arrays.               ADB1F405.999    
!                                               (J. M. Edwards)            ADB1F405.1000   
!LL  4.5  27/04/98  Add Fujitsu vectorization directive.                   GRB0F405.134    
!LL                                           RBarnes@ecmwf.int            GRB0F405.135    
!                                                                          TWCFRG3A.34     
! Description of Code:                                                     TWCFRG3A.35     
!   FORTRAN 77  with extensions listed in documentation.                   TWCFRG3A.36     
!                                                                          TWCFRG3A.37     
!- ---------------------------------------------------------------------   TWCFRG3A.38     
! Fujitsu directive to encourage vectorization for whole routine           GRB0F405.136    
!OCL NOVREC                                                                GRB0F405.137    

      SUBROUTINE TWO_COEFF_REGION(IERR                                      1,4TWCFRG3A.39     
     &   , N_PROFILE, N_LAYER, N_CLOUD_TOP                                 TWCFRG3A.40     
     &   , I_2STREAM, L_IR_SOURCE_QUAD, N_SOURCE_COEFF                     TWCFRG3A.41     
     &   , N_CLOUD_TYPE, FRAC_CLOUD                                        TWCFRG3A.42     
     &   , I_REGION_CLOUD, FRAC_REGION                                     TWCFRG3A.43     
     &   , ASYMMETRY_FREE, OMEGA_FREE, TAU_FREE                            TWCFRG3A.44     
     &   , ASYMMETRY_CLOUD, OMEGA_CLOUD, TAU_CLOUD                         TWCFRG3A.45     
     &   , ISOLIR, SEC_0                                                   TWCFRG3A.46     
     &   , TRANS, REFLECT, TRANS_0                                         TWCFRG3A.47     
     &   , SOURCE_COEFF                                                    TWCFRG3A.48     
     &   , NPD_PROFILE, NPD_LAYER                                          TWCFRG3A.49     
     &   )                                                                 TWCFRG3A.50     
!                                                                          TWCFRG3A.51     
!                                                                          TWCFRG3A.52     
!                                                                          TWCFRG3A.53     
      IMPLICIT NONE                                                        TWCFRG3A.54     
!                                                                          TWCFRG3A.55     
!                                                                          TWCFRG3A.56     
!     SIZES OF DUMMY ARRAYS.                                               TWCFRG3A.57     
      INTEGER   !, INTENT(IN)                                              TWCFRG3A.58     
     &     NPD_PROFILE                                                     TWCFRG3A.59     
!             MAXIMUM NUMBER OF PROFILES                                   TWCFRG3A.60     
     &   , NPD_LAYER                                                       TWCFRG3A.61     
!             MAXIMUM NUMBER OF LAYERS                                     TWCFRG3A.62     
!                                                                          TWCFRG3A.63     
!     INCLUDE COMDECKS.                                                    TWCFRG3A.64     
*CALL DIMFIX3A                                                             TWCFRG3A.65     
*CALL SPCRG3A                                                              TWCFRG3A.66     
*CALL ERROR3A                                                              TWCFRG3A.67     
*CALL CLDREG3A                                                             TWCFRG3A.68     
!                                                                          TWCFRG3A.69     
!                                                                          TWCFRG3A.70     
!                                                                          TWCFRG3A.71     
!     DUMMY ARGUMENTS.                                                     TWCFRG3A.72     
      INTEGER   !, INTENT(OUT)                                             TWCFRG3A.73     
     &     IERR                                                            TWCFRG3A.74     
!             ERROR FLAG                                                   TWCFRG3A.75     
      INTEGER   !, INTENT(IN)                                              TWCFRG3A.76     
     &     N_PROFILE                                                       TWCFRG3A.77     
!             NUMBER OF PROFILES                                           TWCFRG3A.78     
     &   , N_LAYER                                                         TWCFRG3A.79     
!             NUMBER OF LAYERS                                             TWCFRG3A.80     
     &   , N_CLOUD_TOP                                                     TWCFRG3A.81     
!             TOPMOST CLOUDY LAYER                                         TWCFRG3A.82     
     &   , ISOLIR                                                          TWCFRG3A.83     
!             SPECTRAL REGION                                              TWCFRG3A.84     
     &   , N_CLOUD_TYPE                                                    TWCFRG3A.85     
!             NUMBER OF TYPES OF CLOUDS                                    TWCFRG3A.86     
     &   , I_2STREAM                                                       TWCFRG3A.87     
!             TWO STREAM SCHEME                                            TWCFRG3A.88     
     &   , N_SOURCE_COEFF                                                  TWCFRG3A.89     
!             NUMBER OF SOURCE COEFFICIENTS                                TWCFRG3A.90     
!                                                                          TWCFRG3A.91     
      INTEGER   !, INTENT(IN)                                              TWCFRG3A.92     
     &     I_REGION_CLOUD(NPD_CLOUD_TYPE)                                  TWCFRG3A.93     
!             REGIONS IN WHICH TYPES OF CLOUDS FALL                        TWCFRG3A.94     
!                                                                          TWCFRG3A.95     
      LOGICAL   !, INTENT(IN)                                              TWCFRG3A.96     
     &     L_IR_SOURCE_QUAD                                                TWCFRG3A.97     
!             USE A QUADRATIC SOURCE IN THE INFRA-RED                      TWCFRG3A.98     
!                                                                          TWCFRG3A.99     
!     OPTICAL PROPERTIES OF LAYER:                                         TWCFRG3A.100    
      REAL      !, INTENT(IN)                                              TWCFRG3A.101    
     &     FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              TWCFRG3A.102    
!             FRACTIONS OF DIFFERENT TYPES OF CLOUDS                       TWCFRG3A.103    
     &   , FRAC_REGION(NPD_PROFILE, NPD_LAYER, NPD_REGION)                 TWCFRG3A.104    
!             FRACTIONS OF TOTAL CLOUD OCCUPIED BY EACH REGION             TWCFRG3A.105    
     &   , ASYMMETRY_FREE(NPD_PROFILE, NPD_LAYER)                          ADB1F405.1001   
!             CLEAR-SKY ASYMMETRY FACTOR                                   TWCFRG3A.107    
     &   , OMEGA_FREE(NPD_PROFILE, NPD_LAYER)                              ADB1F405.1002   
!             CLEAR-SKY ALBEDO OF SINGLE SCATTERING                        TWCFRG3A.109    
     &   , TAU_FREE(NPD_PROFILE, NPD_LAYER)                                ADB1F405.1003   
!             CLEAR-SKY OPTICAL DEPTH                                      TWCFRG3A.111    
     &   , ASYMMETRY_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)         TWCFRG3A.112    
!             ASYMMETRY FACTOR                                             TWCFRG3A.113    
     &   , OMEGA_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)             TWCFRG3A.114    
!             ALBEDO OF SINGLE SCATTERING                                  TWCFRG3A.115    
     &   , TAU_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)               TWCFRG3A.116    
!             OPTICAL DEPTH                                                TWCFRG3A.117    
!                                                                          TWCFRG3A.118    
!     SOLAR BEAM                                                           TWCFRG3A.119    
      REAL      !, INTENT(IN)                                              TWCFRG3A.120    
     &     SEC_0(NPD_PROFILE)                                              TWCFRG3A.121    
!             SECANT OF ZENITH ANGLE                                       TWCFRG3A.122    
!                                                                          TWCFRG3A.123    
!                                                                          TWCFRG3A.124    
!     COEFFICIENTS IN THE TWO-STREAM EQUATIONS:                            TWCFRG3A.125    
      REAL      !, INTENT(OUT)                                             TWCFRG3A.126    
     &     TRANS(NPD_PROFILE, NPD_LAYER, NPD_REGION)                       TWCFRG3A.127    
!             DIFFUSE TRANSMISSION COEFFICIENT                             TWCFRG3A.128    
     &   , REFLECT(NPD_PROFILE, NPD_LAYER, NPD_REGION)                     TWCFRG3A.129    
!             DIFFUSE REFLECTION COEFFICIENT                               TWCFRG3A.130    
     &   , TRANS_0(NPD_PROFILE, NPD_LAYER, NPD_REGION)                     TWCFRG3A.131    
!             DIRECT TRANSMISSION COEFFICIENT                              TWCFRG3A.132    
     &   , SOURCE_COEFF(NPD_PROFILE, NPD_LAYER                             TWCFRG3A.133    
     &      , NPD_SOURCE_COEFF, NPD_REGION)                                TWCFRG3A.134    
!             SOURCE COEFFICIENTS IN TWO-STREAM EQUATIONS                  TWCFRG3A.135    
!                                                                          TWCFRG3A.136    
!     LOCAL VARIABLES.                                                     TWCFRG3A.137    
      INTEGER                                                              TWCFRG3A.138    
     &     N_REGION                                                        TWCFRG3A.139    
!             NUMBER OF REGIONS                                            TWCFRG3A.140    
      INTEGER                                                              TWCFRG3A.141    
     &     I                                                               TWCFRG3A.142    
!             LOOP VARIABLE                                                TWCFRG3A.143    
     &   , J                                                               TWCFRG3A.144    
!             LOOP VARIABLE                                                TWCFRG3A.145    
     &   , K                                                               TWCFRG3A.146    
!             LOOP VARIABLE                                                TWCFRG3A.147    
     &   , L                                                               TWCFRG3A.148    
!             LOOP VARIABLE                                                TWCFRG3A.149    
     &   , I_REGION                                                        TWCFRG3A.150    
!             LOOP VARIABLE OVER REGIONS                                   TWCFRG3A.151    
!                                                                          TWCFRG3A.152    
!     COEFFICIENTS IN THE TWO-STREAM EQUATIONS:                            TWCFRG3A.153    
      REAL      !, INTENT(OUT)                                             TWCFRG3A.154    
     &     TRANS_TEMP(NPD_PROFILE, NPD_LAYER)                              TWCFRG3A.155    
!             TEMPORARY DIFFUSE TRANSMISSION COEFFICIENT                   TWCFRG3A.156    
     &   , REFLECT_TEMP(NPD_PROFILE, NPD_LAYER)                            TWCFRG3A.157    
!             TEMPORARY DIFFUSE REFLECTION COEFFICIENT                     TWCFRG3A.158    
     &   , TRANS_0_TEMP(NPD_PROFILE, NPD_LAYER)                            TWCFRG3A.159    
!             TEMPORARY DIRECT TRANSMISSION COEFFICIENT                    TWCFRG3A.160    
     &   , SOURCE_COEFF_TEMP(NPD_PROFILE, NPD_LAYER, NPD_SOURCE_COEFF)     TWCFRG3A.161    
!             TEMPORARY SOURCE COEFFICIENTS IN TWO-STREAM EQUATIONS        TWCFRG3A.162    
!                                                                          TWCFRG3A.163    
!     VARIABLES FOR GATHERING:                                             TWCFRG3A.164    
      INTEGER                                                              TWCFRG3A.165    
     &     N_LIST                                                          TWCFRG3A.166    
!             NUMBER OF POINTS IN LIST                                     TWCFRG3A.167    
     &   , L_LIST(NPD_PROFILE)                                             TWCFRG3A.168    
!             LIST OF COLLECTED POINTS                                     TWCFRG3A.169    
     &   , LL                                                              TWCFRG3A.170    
      REAL                                                                 TWCFRG3A.175    
     &     TAU_GATHERED(NPD_PROFILE, NPD_LAYER)                            TWCFRG3A.176    
!             GATHERED OPTICAL DEPTH                                       TWCFRG3A.177    
     &   , OMEGA_GATHERED(NPD_PROFILE, NPD_LAYER)                          TWCFRG3A.178    
!             GATHERED ALEBDO OF SINGLE SCATTERING                         TWCFRG3A.179    
     &   , ASYMMETRY_GATHERED(NPD_PROFILE, NPD_LAYER)                      TWCFRG3A.180    
!             GATHERED ASYMMETRY                                           TWCFRG3A.181    
     &   , SEC_0_GATHERED(NPD_PROFILE)                                     TWCFRG3A.182    
!             GATHERED ASYMMETRY                                           TWCFRG3A.183    
!                                                                          TWCFRG3A.184    
!     SUBROUTINES CALLED:                                                  TWCFRG3A.185    
      EXTERNAL                                                             TWCFRG3A.186    
     &     TWO_COEFF                                                       ADB5F403.94     
!                                                                          TWCFRG3A.188    
!     CRAY DIRECTIVES FOR THE WHOLE ROUTINE:                               TWCFRG3A.189    
!     POINTS ARE NOT REPEATED IN THE INDEXING ARRAY, SO IT IS SAFE         TWCFRG3A.190    
!     TO VECTORIZE OVER INDIRECTLY ADDRESSED ARRAYS.                       TWCFRG3A.191    
Cfpp$ NODEPCHK R                                                           TWCFRG3A.192    
!                                                                          TWCFRG3A.193    
!                                                                          TWCFRG3A.194    
!                                                                          TWCFRG3A.195    
!     FOR THE TRIPLE OVERLAP THE NUMBER OF REGIONS IS 3.                   TWCFRG3A.196    
      N_REGION=3                                                           TWCFRG3A.197    
!                                                                          TWCFRG3A.198    
!     DETERMINE THE OPTICAL PROPERTIES OF THE CLEAR-SKY REGIONS OF         TWCFRG3A.199    
!     THE LAYERS.                                                          TWCFRG3A.200    
!                                                                          TWCFRG3A.201    
      CALL TWO_COEFF(IERR                                                  TWCFRG3A.202    
     &   , N_PROFILE, 1, N_LAYER                                           TWCFRG3A.203    
     &   , I_2STREAM, L_IR_SOURCE_QUAD                                     TWCFRG3A.204    
     &   , ASYMMETRY_FREE, OMEGA_FREE, TAU_FREE                            TWCFRG3A.205    
     &   , ISOLIR, SEC_0                                                   TWCFRG3A.206    
     &   , TRANS(1, 1, IP_REGION_CLEAR)                                    TWCFRG3A.207    
     &   , REFLECT(1, 1, IP_REGION_CLEAR)                                  TWCFRG3A.208    
     &   , TRANS_0(1, 1, IP_REGION_CLEAR)                                  TWCFRG3A.209    
     &   , SOURCE_COEFF(1, 1, 1, IP_REGION_CLEAR)                          TWCFRG3A.210    
     &   , NPD_PROFILE, NPD_LAYER                                          TWCFRG3A.211    
     &   )                                                                 TWCFRG3A.212    
      IF (IERR.NE.I_NORMAL) RETURN                                         TWCFRG3A.213    
!                                                                          TWCFRG3A.214    
!                                                                          TWCFRG3A.215    
!     NOW DEAL WITH CLOUDS.                                                TWCFRG3A.216    
!                                                                          TWCFRG3A.217    
!     INITIALIZE THE FULL ARRAYS FOR CLOUDY REGIONS.                       TWCFRG3A.218    
!                                                                          TWCFRG3A.219    
      DO I_REGION=1, N_REGION                                              TWCFRG3A.220    
         IF (I_REGION.NE.IP_REGION_CLEAR) THEN                             TWCFRG3A.221    
            DO I=N_CLOUD_TOP, N_LAYER                                      TWCFRG3A.222    
               DO L=1, N_PROFILE                                           TWCFRG3A.223    
                  TRANS(L, I, I_REGION)=0.0E+00                            TWCFRG3A.224    
                  REFLECT(L, I, I_REGION)=0.0E+00                          TWCFRG3A.225    
               ENDDO                                                       TWCFRG3A.226    
            ENDDO                                                          TWCFRG3A.227    
            DO J=1, N_SOURCE_COEFF                                         TWCFRG3A.228    
               DO I=N_CLOUD_TOP, N_LAYER                                   TWCFRG3A.229    
                  DO L=1, N_PROFILE                                        TWCFRG3A.230    
                     SOURCE_COEFF(L, I, J, I_REGION)=0.0E+00               TWCFRG3A.231    
                  ENDDO                                                    TWCFRG3A.232    
               ENDDO                                                       TWCFRG3A.233    
            ENDDO                                                          TWCFRG3A.234    
!                                                                          TWCFRG3A.235    
            IF (ISOLIR.EQ.IP_SOLAR) THEN                                   TWCFRG3A.236    
               DO I=N_CLOUD_TOP, N_LAYER                                   TWCFRG3A.237    
                  DO L=1, N_PROFILE                                        TWCFRG3A.238    
                     TRANS_0(L, I, I_REGION)=0.0E+00                       TWCFRG3A.239    
                  ENDDO                                                    TWCFRG3A.240    
               ENDDO                                                       TWCFRG3A.241    
            ENDIF                                                          TWCFRG3A.242    
!                                                                          TWCFRG3A.243    
         ENDIF                                                             TWCFRG3A.244    
!                                                                          TWCFRG3A.245    
      ENDDO                                                                TWCFRG3A.246    
!                                                                          TWCFRG3A.247    
!                                                                          TWCFRG3A.248    
!                                                                          TWCFRG3A.249    
!     CONSIDER EACH TYPE OF CLOUD IN TURN, CHECKING WHICH REGION IT        TWCFRG3A.250    
!     CONTRUBUTES TO AND FORM WEIGHTED SUMS OF CLOUD PROPERTIES.           TWCFRG3A.251    
!                                                                          TWCFRG3A.252    
      DO K=1, N_CLOUD_TYPE                                                 TWCFRG3A.253    
!                                                                          TWCFRG3A.254    
!                                                                          TWCFRG3A.255    
!        SET THE REGION IN WHICH CLOUDS OF THIS TYPE ARE INCLUDED.         TWCFRG3A.256    
         I_REGION=I_REGION_CLOUD(K)                                        TWCFRG3A.257    
!                                                                          TWCFRG3A.258    
         DO I=N_CLOUD_TOP, N_LAYER                                         TWCFRG3A.262    
!                                                                          TWCFRG3A.263    
!           FORM A LIST OF POINTS WHERE CLOUD OF THIS TYPE EXISTS          ADB5F403.95     
!           ON THIS ROW FOR GATHERING.                                     ADB5F403.96     
            N_LIST=0                                                       ADB5F403.97     
            DO L=1, N_PROFILE                                              ADB5F403.98     
               IF (FRAC_CLOUD(L, I, K).GT.0.0E+00) THEN                    ADB5F403.99     
                  N_LIST=N_LIST+1                                          ADB5F403.100    
                  L_LIST(N_LIST)=L                                         ADB5F403.101    
               ENDIF                                                       ADB5F403.102    
            ENDDO                                                          ADB5F403.103    
!                                                                          TWCFRG3A.267    
!                                                                          TWCFRG3A.268    
            IF (N_LIST.GT.0) THEN                                          TWCFRG3A.269    
!                                                                          TWCFRG3A.270    
!              GATHER THE OPTICAL PROPERTIES. THOUGH WE CONSIDER ONLY      TWCFRG3A.271    
!              ONE LAYER AT A TIME THE LOWER ROUTINES WILL OPERATE ON      TWCFRG3A.272    
!              ARRAYS WITH VERTICAL STRUCTURE, SO THE GATHERED ARRAYS      TWCFRG3A.273    
!              ARE TWO-DIMENSIONAL.                                        TWCFRG3A.274    
!                                                                          TWCFRG3A.275    
               DO L=1, N_LIST                                              TWCFRG3A.276    
                  TAU_GATHERED(L, I)                                       TWCFRG3A.277    
     &              =TAU_CLOUD(L_LIST(L), I, K)                            TWCFRG3A.278    
                  OMEGA_GATHERED(L, I)                                     TWCFRG3A.279    
     &              =OMEGA_CLOUD(L_LIST(L), I, K)                          TWCFRG3A.280    
                  ASYMMETRY_GATHERED(L, I)                                 TWCFRG3A.281    
     &              =ASYMMETRY_CLOUD(L_LIST(L), I, K)                      TWCFRG3A.282    
               ENDDO                                                       TWCFRG3A.283    
               IF (ISOLIR.EQ.IP_SOLAR) THEN                                TWCFRG3A.284    
                  DO L=1, N_LIST                                           TWCFRG3A.285    
                     SEC_0_GATHERED(L)=SEC_0(L_LIST(L))                    TWCFRG3A.286    
                  ENDDO                                                    TWCFRG3A.287    
               ENDIF                                                       TWCFRG3A.288    
!                                                                          TWCFRG3A.289    
!                                                                          TWCFRG3A.290    
               CALL TWO_COEFF(IERR                                         TWCFRG3A.291    
     &            , N_LIST, I, I                                           TWCFRG3A.292    
     &            , I_2STREAM, L_IR_SOURCE_QUAD                            TWCFRG3A.293    
     &            , ASYMMETRY_GATHERED, OMEGA_GATHERED                     TWCFRG3A.294    
     &            , TAU_GATHERED                                           TWCFRG3A.295    
     &            , ISOLIR, SEC_0_GATHERED                                 TWCFRG3A.296    
     &            , TRANS_TEMP, REFLECT_TEMP, TRANS_0_TEMP                 TWCFRG3A.297    
     &            , SOURCE_COEFF_TEMP                                      TWCFRG3A.298    
     &            , NPD_PROFILE, NPD_LAYER                                 TWCFRG3A.299    
     &            )                                                        TWCFRG3A.300    
               IF (IERR.NE.I_NORMAL) RETURN                                TWCFRG3A.301    
!                                                                          TWCFRG3A.302    
!                                                                          TWCFRG3A.303    
               DO L=1, N_LIST                                              TWCFRG3A.304    
                  LL=L_LIST(L)                                             TWCFRG3A.305    
                  TRANS(LL, I, I_REGION)=TRANS(LL, I, I_REGION)            TWCFRG3A.306    
     &               +FRAC_CLOUD(LL, I, K)*TRANS_TEMP(L, I)                TWCFRG3A.307    
                  REFLECT(LL, I, I_REGION)=REFLECT(LL, I, I_REGION)        TWCFRG3A.308    
     &               +FRAC_CLOUD(LL, I, K)*REFLECT_TEMP(L, I)              TWCFRG3A.309    
               ENDDO                                                       TWCFRG3A.310    
               DO J=1, N_SOURCE_COEFF                                      TWCFRG3A.311    
                  DO L=1, N_LIST                                           TWCFRG3A.312    
                     LL=L_LIST(L)                                          TWCFRG3A.313    
                     SOURCE_COEFF(LL, I, J, I_REGION)                      TWCFRG3A.314    
     &                  =SOURCE_COEFF(LL, I, J, I_REGION)                  TWCFRG3A.315    
     &                  +FRAC_CLOUD(LL, I, K)                              TWCFRG3A.316    
     &                  *SOURCE_COEFF_TEMP(L, I, J)                        TWCFRG3A.317    
                  ENDDO                                                    TWCFRG3A.318    
               ENDDO                                                       TWCFRG3A.319    
               IF (ISOLIR.EQ.IP_SOLAR) THEN                                TWCFRG3A.320    
                  DO L=1, N_LIST                                           TWCFRG3A.321    
                     LL=L_LIST(L)                                          TWCFRG3A.322    
                     TRANS_0(LL, I, I_REGION)=TRANS_0(LL, I, I_REGION)     TWCFRG3A.323    
     &                  +FRAC_CLOUD(LL, I, K)*TRANS_0_TEMP(L, I)           TWCFRG3A.324    
                  ENDDO                                                    TWCFRG3A.325    
               ENDIF                                                       TWCFRG3A.326    
!                                                                          TWCFRG3A.327    
            ENDIF                                                          TWCFRG3A.328    
!                                                                          TWCFRG3A.329    
         ENDDO                                                             TWCFRG3A.330    
      ENDDO                                                                TWCFRG3A.331    
!                                                                          TWCFRG3A.332    
!                                                                          ADB5F403.104    
!     FINALLY, SCALE THE WEIGHTED SUMS BY THE CLOUD FRACTIONS.             TWCFRG3A.333    
      DO I_REGION=1, N_REGION                                              TWCFRG3A.334    
         IF (I_REGION.NE.IP_REGION_CLEAR) THEN                             TWCFRG3A.335    
            DO I=N_CLOUD_TOP, N_LAYER                                      TWCFRG3A.336    
!                                                                          ADB5F403.105    
!              GATHER POINTS WITHIN THIS REGION.                           ADB5F403.106    
               N_LIST=0                                                    ADB5F403.107    
               DO L=1,N_PROFILE                                            ADB5F403.108    
                  IF (FRAC_REGION(L, I, I_REGION).GT.0.0E+00) THEN         ADB5F403.109    
                     N_LIST=N_LIST+1                                       ADB5F403.110    
                     L_LIST(N_LIST)=L                                      ADB5F403.111    
                  ENDIF                                                    ADB5F403.112    
               ENDDO                                                       ADB5F403.113    
               DO L=1, N_LIST                                              TWCFRG3A.339    
                  LL=L_LIST(L)                                             TWCFRG3A.340    
                  TRANS(LL, I, I_REGION)=TRANS(LL, I, I_REGION)            TWCFRG3A.341    
     &               /FRAC_REGION(LL, I, I_REGION)                         TWCFRG3A.342    
                  REFLECT(LL, I, I_REGION)=REFLECT(LL, I, I_REGION)        TWCFRG3A.343    
     &               /FRAC_REGION(LL, I, I_REGION)                         TWCFRG3A.344    
               ENDDO                                                       TWCFRG3A.345    
               DO J=1, N_SOURCE_COEFF                                      TWCFRG3A.346    
                  DO L=1, N_LIST                                           TWCFRG3A.347    
                     LL=L_LIST(L)                                          TWCFRG3A.348    
                     SOURCE_COEFF(LL, I, J, I_REGION)                      TWCFRG3A.349    
     &                  =SOURCE_COEFF(LL, I, J, I_REGION)                  TWCFRG3A.350    
     &                  /FRAC_REGION(LL, I, I_REGION)                      TWCFRG3A.351    
                  ENDDO                                                    TWCFRG3A.352    
               ENDDO                                                       TWCFRG3A.353    
               IF (ISOLIR.EQ.IP_SOLAR) THEN                                TWCFRG3A.354    
                  DO L=1, N_LIST                                           TWCFRG3A.355    
                     LL=L_LIST(L)                                          TWCFRG3A.356    
                     TRANS_0(LL, I, I_REGION)=TRANS_0(LL, I, I_REGION)     TWCFRG3A.357    
     &                  /FRAC_REGION(LL, I, I_REGION)                      TWCFRG3A.358    
                  ENDDO                                                    TWCFRG3A.359    
               ENDIF                                                       TWCFRG3A.360    
            ENDDO                                                          TWCFRG3A.361    
         ENDIF                                                             TWCFRG3A.362    
      ENDDO                                                                TWCFRG3A.363    
!                                                                          TWCFRG3A.364    
!                                                                          TWCFRG3A.365    
!                                                                          TWCFRG3A.366    
      RETURN                                                               TWCFRG3A.367    
      END                                                                  TWCFRG3A.368    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            TWCFRG3A.369    
*ENDIF DEF,A70_1A                                                          TWCFRG3A.370