*IF DEF,A01_3A                                                             SWRAD3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.14147  
C                                                                          GTS2F400.14148  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.14149  
C restrictions as set forth in the contract.                               GTS2F400.14150  
C                                                                          GTS2F400.14151  
C                Meteorological Office                                     GTS2F400.14152  
C                London Road                                               GTS2F400.14153  
C                BRACKNELL                                                 GTS2F400.14154  
C                Berkshire UK                                              GTS2F400.14155  
C                RG12 2SZ                                                  GTS2F400.14156  
C                                                                          GTS2F400.14157  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.14158  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.14159  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.14160  
C Modelling at the above address.                                          GTS2F400.14161  
C ******************************COPYRIGHT******************************    GTS2F400.14162  
C                                                                          GTS2F400.14163  
!+ Shortwave Interface to Edwards-Slingo radiation scheme.                 SWRAD3A.3      
!                                                                          SWRAD3A.4      
! Purpose:                                                                 SWRAD3A.5      
!   This subroutine interface the Edwards-Slingo radiation scheme          SWRAD3A.6      
!   in the shortwave.                                                      SWRAD3A.7      
!                                                                          SWRAD3A.8      
! Method:                                                                  SWRAD3A.9      
!   Principally, arrays are transferred to the appropriate formats.        SWRAD3A.10     
!   Separate subroutines are called for each physical process.             SWRAD3A.11     
!                                                                          SWRAD3A.12     
! Current Owner of Code: J. M. Edwards                                     SWRAD3A.13     
!                                                                          SWRAD3A.14     
! History:                                                                 SWRAD3A.15     
! Version   Date                    Comment                                AJS1F401.1413   
!  4.0    27-07-95                Original Code                            AJS1F401.1414   
!                                (J. M. Edwards)                           AJS1F401.1415   
!       4.1             10-06-96                Checking code for data     ADB1F401.1015   
!                                               in the spectral files      ADB1F401.1016   
!                                               added. L_AEROSOL_CCN       ADB1F401.1017   
!                                               introduced. Coupling       ADB1F401.1018   
!                                               flux scaled by open-sea    ADB1F401.1019   
!                                               fraction at sea-ice        ADB1F401.1020   
!                                               points. Correction of      ADB1F401.1021   
!                                               heating rates by           ADB1F401.1022   
!                                               fraction of time for       ADB1F401.1023   
!                                               which a point is illum-    ADB1F401.1024   
!                                               inated.                    ADB1F401.1025   
!                                               (J. M. Edwards)            ADB1F401.1026   
!                                                                          SWRAD3A.19     
!  4.1    22.5.96   Use surface flux at wavelengths below 690nm to         AJS1F401.1416   
!                   provide photosynthetically active radiation for use    AJS1F401.1417   
!                   in MOSES boundary layer scheme.  This is added         AJS1F401.1418   
!                   to the SWOUT array as an 'extra level', without        AJS1F401.1419   
!                   Zenith Angle adjustement, to enable use in all         AJS1F401.1420   
!                   physics timesteps.            R.A.Betts                AJS1F401.1421   
!                                                                          AJS1F401.1422   
!                                                                          ADB1F402.693    
!       4.2             10-10-96                Climatological aerosol     ADB1F402.694    
!                                               introduced.                ADB1F402.695    
!                                               (J. M. Edwards)            ADB1F402.696    
!  4.4    08-04-97  Changes for new precip scheme (qCF prognostic)         AYY1F404.362    
!                                               (A. C. Bushell)            AYY1F404.363    
!                                                                          ARE2F404.236    
!  4.4    29/10/97  Optional prognostic snow albedo scheme introduced      ARE2F404.237    
!                                                           R. Essery      ARE2F404.238    
!       4.4             26-09-97                Conv. cloud amount on      AJX0F404.28     
!                                               model levs allowed for.    AJX0F404.29     
!                                               J.M.Gregory                AJX0F404.30     
!                                                                          ADB1F402.697    
!       4.4             04-09-97                Changes to the passing     ADB2F404.1497   
!                                               of arguments introduced.   ADB2F404.1498   
!                                               Dissolved sulphate is      ADB2F404.1499   
!                                               now included in the        ADB2F404.1500   
!                                               indirect effect.           ADB2F404.1501   
!                                               Fluxes at the tropopause   ADB2F404.1502   
!                                               can be diagnosed.          ADB2F404.1503   
!                                               (J. M. Edwards)            ADB2F404.1504   
!       4.5     April 1998    Pass soot variables to FILL3A routines       ALR3F405.110    
!                                                      Luke Robinson.      ALR3F405.111    
!                                                                          ADB2F404.1505   
!       4.5             18-05-98                Obsolete solvers           ADB1F405.946    
!                                               removed. New partitioni-   ADB1F405.947    
!                                               ing in convective cloud    ADB1F405.948    
!                                               introduced.                ADB1F405.949    
!                                               (J. M. Edwards)            ADB1F405.950    
!                                                                          ADB1F405.951    
!  4.5    13/05/98  Various changes to argument list to pass an extended   ASK1F405.273    
!                   'area' cloud fraction into R2_SET_CLOUD.               ASK1F405.274    
!                                                  S.Cusack                ASK1F405.275    
!                                                                          ASK1F405.276    
! Description of Code:                                                     SWRAD3A.20     
!   FORTRAN 77  with extensions listed in documentation.                   SWRAD3A.21     
!                                                                          SWRAD3A.22     
!- ---------------------------------------------------------------------   SWRAD3A.23     

      SUBROUTINE R2_SWRAD(IERR                                              2,26SWRAD3A.24     
!                       Mixing Ratios                                      SWRAD3A.25     
     &   , H2O, CO2, O3, O2_MIX_RATIO                                      ADB2F404.1506   
     &   , CO2_DIM1, CO2_DIM2, CO2_3D, L_CO2_3D                            ACN2F405.90     
!                       Pressure Fields                                    SWRAD3A.27     
     &   , PSTAR, AB, BB, AC, BC                                           SWRAD3A.28     
!                       Temperatures                                       SWRAD3A.29     
     &   , TAC                                                             SWRAD3A.30     
!                       Options for treating clouds                        ADB1F402.884    
     &   , L_GLOBAL_CLOUD_TOP, GLOBAL_CLOUD_TOP                            ADB1F402.885    
!                       Stratiform Cloud Fields                            SWRAD3A.31     
     &   , L_CLOUD_WATER_PARTITION                                         AYY1F404.364    
     &   , LCA_AREA, LCA_BULK, LCCWC1, LCCWC2                              ASK1F405.277    
!                       Convective Cloud Fields                            SWRAD3A.33     
     &   , CCA, CCCWP, CCB, CCT, L_3D_CCA                                  AJX0F404.31     
!                       Surface Fields                                     SWRAD3A.35     
     &   , SAL_VIS, SAL_NIR                                                ARE2F404.239    
     &   , LAND_ICE_ALBEDO, OPEN_SEA_ALBEDO, ICE_FRACTION, LAND            SWRAD3A.36     
     &   , LYING_SNOW                                                      ADB1F402.698    
!                       Prognostic snow albedo flag                        ARE2F404.240    
     &   , L_SNOW_ALBEDO, SAL_DIM                                          ARE2F404.241    
!                       Solar Fields                                       SWRAD3A.37     
     &   , COSZIN, LIT, LIST, SCS                                          SWRAD3A.38     
!                       Aerosol Fields                                     SWRAD3A.39     
     &   , L_CLIMAT_AEROSOL, N_LEVELS_BL                                   ADB1F402.699    
     &   , L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT                        ADB1F401.1027   
     &   , SULP_DIM1, SULP_DIM2                                            ADB1F402.700    
     &   , ACCUM_SULPHATE, AITKEN_SULPHATE, DISS_SULPHATE                  ADB2F404.1507   
     &,L_USE_SOOT_DIRECT, SOOT_DIM1, SOOT_DIM2, FRESH_SOOT, AGED_SOOT      ALR3F405.112    
!                       Level of tropopause                                ADB1F402.701    
     &   , TRINDX                                                          ADB1F402.702    
!                       Spectrum                                           SWRAD3A.41     
*CALL SWSARG3A                                                             ADB2F404.1508   
!                       Algorithmic options                                ADB2F404.1509   
*CALL SWCARG3A                                                             ADB2F404.1510   
     &   , PTS                                                             ADB2F404.1511   
!                       General Diagnostics                                SWRAD3A.43     
     &   , SOLAR_OUT_TOA, L_SOLAR_OUT_TOA                                  SWRAD3A.44     
     &   , SOLAR_OUT_CLEAR, L_SOLAR_OUT_CLEAR                              SWRAD3A.45     
     &   , FLUX_BELOW_690NM_SURF, L_FLUX_BELOW_690NM_SURF                  SWRAD3A.46     
     &   , SURFACE_DOWN_FLUX, L_SURFACE_DOWN_FLUX                          SWRAD3A.47     
     &   , SURF_DOWN_CLR, L_SURF_DOWN_CLR                                  SWRAD3A.48     
     &   , SURF_UP_CLR, L_SURF_UP_CLR                                      SWRAD3A.49     
     &   , LAYER_CLOUD_LIT, L_LAYER_CLOUD_LIT                              SWRAD3A.50     
     &   , CONV_CLOUD_LIT, L_CONV_CLOUD_LIT                                SWRAD3A.51     
     &   , TOTAL_CLOUD_COVER, L_TOTAL_CLOUD_COVER                          SWRAD3A.52     
     &   , CLEAR_HR, L_CLEAR_HR                                            SWRAD3A.53     
     &   , NET_FLUX_TROP, L_NET_FLUX_TROP                                  ADB2F404.1512   
     &   , UP_FLUX_TROP, L_UP_FLUX_TROP                                    ADB2F404.1513   
!                       Microphysical Flag                                 SWRAD3A.54     
     &   , L_MICROPHYSICS                                                  SWRAD3A.55     
!                       Microphysical Diagnostics                          SWRAD3A.56     
     &   , RE_CONV, RE_CONV_FLAG, RE_STRAT, RE_STRAT_FLAG                  SWRAD3A.57     
     &   , WGT_CONV, WGT_CONV_FLAG, WGT_STRAT, WGT_STRAT_FLAG              SWRAD3A.58     
     &   , LWP_STRAT, LWP_STRAT_FLAG                                       SWRAD3A.59     
     &   , WEIGHTED_RE, WEIGHTED_RE_FLAG                                   AAJ3F404.10     
     &   , SUM_WEIGHT_RE, SUM_WEIGHT_RE_FLAG                               AAJ3F404.11     
     &   , NTOT_DIAG, NTOT_DIAG_FLAG                                       AAJ3F404.12     
     &   , STRAT_LWC_DIAG, STRAT_LWC_DIAG_FLAG                             AAJ3F404.13     
     &   , SO4_CCN_DIAG, SO4_CCN_DIAG_FLAG                                 AAJ3F404.14     
     &   , COND_SAMP_WGT, COND_SAMP_WGT_FLAG                               AAJ3F404.15     
!                       Physical Dimensions                                SWRAD3A.60     
     &   , NLIT                                                            SWRAD3A.61     
     &   , N_PROFILE, NLEVS, NCLDS                                         SWRAD3A.62     
     &   , NWET, NOZONE                                                    SWRAD3A.63     
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_COLUMN                   SWRAD3A.64     
     &   , N_CCA_LEV                                                       AJX0F404.32     
!                       Working Dimensions for Diagnostics                 ADB2F404.1514   
     &   , NPDWD_CL_PROFILE                                                ADB2F404.1515   
!                       Output                                             SWRAD3A.74     
     &   , NETSW, SWSEA, SWOUT                                             SWRAD3A.75     
     &   )                                                                 SWRAD3A.76     
!                                                                          SWRAD3A.77     
!                                                                          SWRAD3A.78     
!                                                                          SWRAD3A.79     
      IMPLICIT NONE                                                        SWRAD3A.80     
!                                                                          SWRAD3A.81     
!                                                                          SWRAD3A.82     
!                                                                          SWRAD3A.83     
!     COMDECKS INCLUDED                                                    SWRAD3A.84     
*CALL C_R_CP                                                               SWRAD3A.85     
*CALL C_G                                                                  SWRAD3A.86     
*CALL SWSC                                                                 SWRAD3A.87     
!     INTERNAL DIMENSIONS OF THE CODE                                      SWRAD3A.88     
*CALL DIMFIX3A                                                             SWRAD3A.89     
!     SPECTRAL REGIONS                                                     SWRAD3A.93     
*CALL SPCRG3A                                                              SWRAD3A.94     
!     ANGULAR INTEGRATION                                                  SWRAD3A.95     
*CALL ANGINT3A                                                             SWRAD3A.96     
!     TREATMENT OF SCATTERING                                              SWRAD3A.97     
*CALL SCTMTH3A                                                             SWRAD3A.98     
!     OPTIONS TO THE CODE ALTERABLE IN THE UM.                             ADB2F404.1516   
*CALL SWOPT3A                                                              ADB2F404.1517   
!     OPTIONS TO THE CODE FIXED IN THE UM.                                 ADB2F404.1518   
*CALL SWFIX3A                                                              SWRAD3A.100    
!     NUMERICAL PRECISION                                                  SWRAD3A.102    
*CALL PRMCH3A                                                              SWRAD3A.103    
!     SOLVERS                                                              SWRAD3A.104    
*CALL SOLVER3A                                                             SWRAD3A.105    
!     ERROR FLAGS                                                          SWRAD3A.106    
*CALL ERROR3A                                                              SWRAD3A.107    
!     UNIT NUMBERS FOR PRINTED OUTPUT                                      ADB2F404.1519   
*CALL STDIO3A                                                              ADB2F404.1520   
!                                                                          SWRAD3A.108    
!                                                                          SWRAD3A.109    
!     DUMMY ARGUMENTS                                                      SWRAD3A.110    
!                                                                          SWRAD3A.111    
      INTEGER   !, INTENT(OUT)                                             SWRAD3A.112    
     &     IERR                                                            SWRAD3A.113    
!             ERROR FLAG                                                   SWRAD3A.114    
!                                                                          SWRAD3A.115    
!     DIMENSIONS OF ARRAYS:                                                SWRAD3A.116    
      INTEGER   !, INTENT(IN)                                              SWRAD3A.117    
     &     NPD_FIELD                                                       SWRAD3A.121    
!             FIELD SIZE IN CALLING PROGRAM                                SWRAD3A.122    
     &   , NPD_PROFILE                                                     SWRAD3A.123    
!             SIZE OF ARRAY OF PROFILES                                    SWRAD3A.124    
     &   , NPD_LAYER                                                       SWRAD3A.125    
!             ARRAY SIZES FOR LAYERS                                       SWRAD3A.126    
     &   , NPD_COLUMN                                                      SWRAD3A.127    
!             NUMBER OF COLUMNS PER POINT                                  SWRAD3A.128    
!                                                                          SWRAD3A.129    
!     DIMENSIONS FOR DIAGNOSTIC WORKSPACE                                  ADB2F404.1521   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.131    
     &     NPDWD_CL_PROFILE                                                ADB2F404.1522   
!             NUMBER OF PROFILES ALLOWED IN WORKSPACE FOR                  ADB2F404.1523   
!             CLOUD DIAGNOSTICS                                            ADB2F404.1524   
!                                                                          SWRAD3A.164    
!     ACTUAL SIZES USED:                                                   SWRAD3A.165    
      INTEGER   !, INTENT(IN)                                              SWRAD3A.166    
     &     N_PROFILE                                                       SWRAD3A.167    
!             NUMBER OF PROFILES                                           SWRAD3A.168    
     &   , NWET                                                            SWRAD3A.169    
!             NUMBER OF WET LEVELS                                         SWRAD3A.170    
     &   , NOZONE                                                          SWRAD3A.171    
!             NUMBER OF LEVELS WITH OZONE                                  SWRAD3A.172    
     &   , NLEVS                                                           SWRAD3A.173    
!             NUMBER OF ATMOSPHERIC LAYERS                                 SWRAD3A.174    
     &   , NCLDS                                                           SWRAD3A.175    
!             NUMBER OF CLOUDY LEVELS                                      SWRAD3A.176    
     &   , N_LEVELS_BL                                                     ADB1F402.703    
!             NUMBER OF LEVELS IN THE BOUNDARY LAYER                       ADB1F402.704    
     &   , N_CCA_LEV                                                       AJX0F404.33     
!             NUMBER OF CONVECTIVE CLOUD LEVELS                            AJX0F404.34     
!                                                                          SWRAD3A.177    
!     SPECTRAL DATA:                                                       ADB2F404.1525   
*CALL SWSPDC3A                                                             ADB2F404.1526   
!                                                                          ADB2F404.1527   
!                                                                          SWRAD3A.178    
!                                                                          SWRAD3A.179    
!     GASEOUS MIXING RATIOS                                                SWRAD3A.180    
      REAL      !, INTENT(IN)                                              SWRAD3A.181    
     &     H2O(NPD_FIELD, NWET)                                            SWRAD3A.182    
!             MASS MIXING RATIO OF WATER                                   SWRAD3A.183    
     &   , CO2                                                             SWRAD3A.184    
!             MASS MIXING RATIO OF CO2                                     SWRAD3A.185    
     &   , O3(NPD_FIELD, NOZONE)                                           SWRAD3A.186    
!             MASS MIXING RATIOS OF OZONE                                  SWRAD3A.187    
     &   , O2_MIX_RATIO                                                    ADB2F404.1528   
!             MASS MIXING RATIO OF OXYGEN                                  ADB2F404.1529   
!                                                                          SWRAD3A.188    
!     GENERAL ATMOSPHERIC PROPERTIES:                                      SWRAD3A.189    
      REAL      !, INTENT(IN)                                              SWRAD3A.190    
     &     PSTAR(NPD_FIELD)                                                SWRAD3A.191    
!             SURFACE PRESSURES                                            SWRAD3A.192    
     &   , AB(NLEVS+1)                                                     SWRAD3A.193    
!             A AT BOUNDARIES OF LAYERS                                    SWRAD3A.194    
     &   , BB(NLEVS+1)                                                     SWRAD3A.195    
!             B AT BOUNDARIES OF LAYERS                                    SWRAD3A.196    
     &   , AC(NLEVS)                                                       SWRAD3A.197    
!             A AT CENTRES OF LAYERS                                       SWRAD3A.198    
     &   , BC(NLEVS)                                                       SWRAD3A.199    
!             B AT CENTRES OF LAYERS                                       SWRAD3A.200    
     &   , TAC(NPD_FIELD, NLEVS)                                           SWRAD3A.201    
!             TEMPERATURES AT CENTRES OF LAYERS                            SWRAD3A.202    
!                                                                          SWRAD3A.203    
!     INCIDENT SOLAR RADIATION:                                            SWRAD3A.204    
      INTEGER   !, INTENT(IN)                                              SWRAD3A.205    
     &     NLIT                                                            SWRAD3A.206    
!             NUMBER OF LIT POINTS                                         SWRAD3A.207    
     &   , LIST(NPD_FIELD)                                                 SWRAD3A.208    
!             LIST OF LIT POINTS                                           SWRAD3A.209    
      REAL      !, INTENT(IN)                                              SWRAD3A.210    
     &     COSZIN(NPD_FIELD)                                               SWRAD3A.211    
!             COSINES OF ZENITH ANGLE                                      SWRAD3A.212    
     &   , SCS                                                             SWRAD3A.213    
!             SCALING OF SOLAR INCIDENT FIELD                              SWRAD3A.214    
     &   , LIT(NPD_FIELD)                                                  SWRAD3A.215    
!             FRACTION OF TIME POINT IS LIT                                SWRAD3A.216    
!                                                                          SWRAD3A.217    
!     MICROPHYSICAL FLAG:                                                  SWRAD3A.218    
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.219    
     &     L_MICROPHYSICS                                                  SWRAD3A.220    
!             FLAG FOR PARAMETRIZED MICROPHYSICS                           SWRAD3A.221    
!                                                                          SWRAD3A.222    
!     OPTIONS FOR TREATING CLOUDS                                          ADB1F402.886    
      LOGICAL   !, INTENT(IN)                                              ADB1F402.887    
     &     L_GLOBAL_CLOUD_TOP                                              ADB1F402.888    
!             FLAG TO USE A GLOBAL VALUE FOR THE TOPS OF CLOUDS            ADB1F402.889    
!             TO ENSURE REPRODUCIBLE RESULTS                               ADB1F402.890    
      INTEGER   !, INTENT(IN)                                              ADB1F402.891    
     &     GLOBAL_CLOUD_TOP                                                ADB1F402.892    
!             GLOBAL TOPMOST CLOUDY LAYER                                  ADB1F402.893    
!                                                                          ADB1F402.894    
!     PROPERTIES OF STRATIFORM CLOUDS:                                     SWRAD3A.223    
      LOGICAL   !, INTENT(IN)                                              AYY1F404.365    
     &     L_CLOUD_WATER_PARTITION                                         AYY1F404.366    
!             FLAG TO USE PROGNOSTIC CLOUD ICE CONTENTS                    AYY1F404.367    
      REAL      !, INTENT(IN)                                              SWRAD3A.224    
     &     LCCWC1(NPD_FIELD, NCLDS+1/(NCLDS+1))                            SWRAD3A.225    
!             NOMINAL LIQUID WATER CONTENTS                                SWRAD3A.226    
     &   , LCCWC2(NPD_FIELD, NCLDS+1/(NCLDS+1))                            SWRAD3A.227    
!             NOMINAL ICE WATER CONTENTS                                   SWRAD3A.228    
     &   , LCA_AREA(NPD_FIELD, NCLDS+1/(NCLDS+1))                          ASK1F405.278    
!             AREA FRACTIONS OF LAYER CLOUDS OUTSIDE CONVECTIVE TOWERS     ASK1F405.279    
     &   , LCA_BULK(NPD_FIELD, NCLDS+1/(NCLDS+1))                          ASK1F405.280    
!             BULK FRACTIONS OF LAYER CLOUDS OUTSIDE CONVECTIVE TOWERS     ASK1F405.281    
!                                                                          SWRAD3A.231    
!     PROPERTIES OF CONVECTIVE CLOUDS:                                     SWRAD3A.232    
      INTEGER   !, INTENT(IN)                                              SWRAD3A.233    
     &     CCB(NPD_FIELD)                                                  SWRAD3A.234    
!             BASE OF CONVECTIVE CLOUD                                     SWRAD3A.235    
     &   , CCT(NPD_FIELD)                                                  SWRAD3A.236    
!             TOP OF CONVECTIVE CLOUD                                      SWRAD3A.237    
      REAL      !, INTENT(IN)                                              SWRAD3A.238    
     &     CCCWP(NPD_FIELD)                                                SWRAD3A.239    
!             WATER PATH OF CONVECTIVE CLOUD                               SWRAD3A.240    
     &   , CCA(NPD_FIELD,N_CCA_LEV)                                        AJX0F404.35     
!             FRACTION OF CONVECTIVE CLOUD                                 SWRAD3A.242    
      LOGICAL   !, INTENT(IN)                                              AJX0F404.36     
     &     L_3D_CCA                                                        AJX0F404.37     
!             FLAG FOR 3D convective cloud amount                          AJX0F404.38     
!                                                                          SWRAD3A.243    
!     AEROSOLS:                                                            SWRAD3A.244    
      LOGICAL   !, INTENT(IN)                                              ADB1F401.1033   
     &     L_CLIMAT_AEROSOL                                                ADB1F402.705    
!             FLAG FOR CLIMATOLOGICAL AEROSOL                              ADB1F402.706    
      LOGICAL   !, INTENT(IN)                                              ADB1F402.707    
     &     L_USE_SULPC_DIRECT                                              ADB1F401.1034   
!             FLAG TO USE SULPHUR CYCLE FOR DIRECT EFFECT                  ADB1F401.1035   
     &   , L_USE_SULPC_INDIRECT                                            ADB1F401.1036   
!             FLAG TO USE SULPHUR CYCLE FOR INDIRECT EFFECT                ADB1F401.1037   
     &   , L_USE_SOOT_DIRECT ! USE DIRECT RAD. EFFECT OF SOOT AEROSOL      ALR3F405.113    
      INTEGER   !, INTENT(IN)                                              ADB1F401.1038   
     &     SULP_DIM1,SULP_DIM2                                             ADB1F401.1039   
!             DIMENSIONS FOR _SULPHATE ARRAYS, (P_FIELD,P_LEVELS or 1,1)   ADB1F401.1040   
     &   , SOOT_DIM1, SOOT_DIM2                                            ALR3F405.114    
!          DIMENSIONS FOR SOOT ARRAYS (P_FIELD,P_LEVELS or 1,1)            ALR3F405.115    
      REAL      !, INTENT(IN)                                              SWRAD3A.245    
     &     ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2)                            ADB1F402.708    
!             MASS MIXING RATIO OF ACCUMULATION MODE AEROSOL               ADB1F401.1042   
     &   , AITKEN_SULPHATE(SULP_DIM1, SULP_DIM2)                           ADB1F402.709    
!             MASS MIXING RATIO OF AITKEN MODE AEROSOL                     ADB1F401.1044   
     &   , DISS_SULPHATE(SULP_DIM1, SULP_DIM2)                             AYY1F404.368    
!             MIXING RATIO OF DISSOLVED SULPHATE                           AYY1F404.369    
     &,FRESH_SOOT(SOOT_DIM1,SOOT_DIM2),AGED_SOOT(SOOT_DIM1,SOOT_DIM2)      ALR3F405.116    
!             SOOT MIXING RATIOS                                           ALR3F405.117    
!                                                                          SWRAD3A.248    
!     CARBON CYCLE:                                                        ACN2F405.91     
      LOGICAL   L_CO2_3D    !  controls use of 3D co2 field                ACN2F405.92     
      INTEGER   !, INTENT(IN)                                              ACN2F405.93     
     &     CO2_DIM1, CO2_DIM2                                              ACN2F405.94     
!             DIMENSIONS FOR CO2 ARRAY, (P_FIELD,P_LEVELS or 1,1)          ACN2F405.95     
      REAL      !, INTENT(IN)                                              ACN2F405.96     
     &     CO2_3D(CO2_DIM1, CO2_DIM2)                                      ACN2F405.97     
!             MASS MIXING RATIO OF CARBON DIOXIDE                          ACN2F405.98     
!     PROPERTIES OF THE SURFACE:                                           SWRAD3A.249    
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.250    
     &     LAND(NPD_FIELD)                                                 SWRAD3A.251    
!             LAND SEA MASK                                                SWRAD3A.252    
     &   , L_SNOW_ALBEDO                                                   ARE2F404.242    
!             FLAG FOR PROGNOSTIC SNOW ALBEDO                              ARE2F404.243    
      INTEGER   !, INTENT(IN)                                              ARE2F404.244    
     &     SAL_DIM                                                         ARE2F404.245    
!             DIMENSION FOR SAL_VIS AND SAL_NIR                            ARE2F404.246    
      REAL      !, INTENT(IN)                                              SWRAD3A.253    
     &     ICE_FRACTION(NPD_FIELD)                                         SWRAD3A.254    
!             SEA ICE FRACTION                                             SWRAD3A.255    
     &   , SAL_VIS(SAL_DIM,2)                                              ARE2F404.247    
!             SURFACE VISIBLE ALBEDO FIELD                                 ARE2F404.248    
     &   , SAL_NIR(SAL_DIM,2)                                              ARE2F404.249    
!             SURFACE NEAR-IR ALBEDO FIELD                                 ARE2F404.250    
     &   , LAND_ICE_ALBEDO(NPD_FIELD)                                      SWRAD3A.256    
!             SURFACE ALBEDO OF LAND OR SEA-ICE                            ADB1F401.1045   
     &   , OPEN_SEA_ALBEDO(NPD_FIELD, 2)                                   SWRAD3A.258    
!             SURFACE ALBEDO FIELD OF OPEN SEA                             ADB1F401.1046   
!             (DIRECT AND DIFFUSE COMPONENTS)                              ADB1F401.1047   
     &   , LYING_SNOW(NPD_FIELD)                                           ADB1F402.710    
!             MASS LOADING OF LYING SNOW                                   ADB1F402.711    
!                                                                          SWRAD3A.260    
!                       Level of tropopause                                ADB1F402.712    
      INTEGER                                                              ADB1F402.713    
     &     TRINDX(NPD_FIELD)                                               ADB1F402.714    
!             THE LAYER BOUNDARY OF THE TROPOPAUSE                         ADB1F402.715    
!                                                                          ADB1F402.716    
!     INCREMENT OF TIME:                                                   SWRAD3A.261    
      REAL      !, INTENT(IN)                                              SWRAD3A.262    
     &     PTS                                                             SWRAD3A.263    
!             TIME INCREMENT                                               SWRAD3A.264    
!                                                                          SWRAD3A.265    
!                                                                          SWRAD3A.270    
!     CALCULATED FLUXES:                                                   SWRAD3A.271    
      REAL      !, INTENT(OUT)                                             SWRAD3A.272    
     &     SWOUT(NPD_FIELD, NLEVS+2)                                       AJS1F401.1423   
!             NET DOWNWARD FLUXES                                          SWRAD3A.274    
     &   , SWSEA(NPD_FIELD)                                                SWRAD3A.275    
!             SEA-SURFACE COMPONENTS OF FLUX                               SWRAD3A.276    
     &   , NETSW(NPD_FIELD)                                                SWRAD3A.277    
!             NET ABSORBED SHORTWAVE RADIATION                             SWRAD3A.278    
!                                                                          SWRAD3A.279    
!                                                                          SWRAD3A.280    
!                                                                          SWRAD3A.281    
!     DIAGNOSTICS:                                                         SWRAD3A.282    
!                                                                          SWRAD3A.283    
!     INPUT SWITCHES:                                                      SWRAD3A.284    
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.285    
     &     L_SOLAR_OUT_TOA                                                 SWRAD3A.286    
!             REFLECTED SOLAR TOA REQUIRED                                 SWRAD3A.287    
     &   , L_SOLAR_OUT_CLEAR                                               SWRAD3A.288    
!             CLEAR REFLECTED SOLAR REQUIRED                               SWRAD3A.289    
     &   , L_FLUX_BELOW_690NM_SURF                                         SWRAD3A.290    
!             FLUX BELOW 690NM AT SURFACE TO BE DIAGNOSED                  ADB1F401.1048   
     &   , L_SURFACE_DOWN_FLUX                                             SWRAD3A.292    
!             DOWNWARD SURFACE FLUX REQUIRED                               SWRAD3A.293    
     &   , L_SURF_DOWN_CLR                                                 SWRAD3A.294    
!             CALCULATE DOWNWARD CLEAR FLUX                                SWRAD3A.295    
     &   , L_SURF_UP_CLR                                                   SWRAD3A.296    
!             CALCULATE UPWARD CLEAR FLUX                                  SWRAD3A.297    
     &   , L_TOTAL_CLOUD_COVER                                             SWRAD3A.298    
!             CALCULATE CLOUD COVER                                        SWRAD3A.299    
     &   , L_CLEAR_HR                                                      SWRAD3A.300    
!             CALCULATE CLEAR-SKY HEATING RATES                            SWRAD3A.301    
     &   , L_NET_FLUX_TROP                                                 ADB2F404.1530   
!             CALCULATE NET DOWNWARD FLUX AT THE TROPOPAUSE                ADB2F404.1531   
     &   , L_UP_FLUX_TROP                                                  ADB2F404.1532   
!             CALCULATE UPWARD FLUX AT THE TROPOPAUSE                      ADB2F404.1533   
!                                                                          SWRAD3A.302    
!     CALCULATED DIAGNOSTICS:                                              SWRAD3A.303    
      REAL      !, INTENT(OUT)                                             SWRAD3A.304    
     &     SOLAR_OUT_TOA(NPD_FIELD)                                        SWRAD3A.305    
!             REFLECTED SOLAR TOA                                          SWRAD3A.306    
     &   , SOLAR_OUT_CLEAR(NPD_FIELD)                                      SWRAD3A.307    
!             CLEAR REFLECTED SOLAR                                        SWRAD3A.308    
     &   , FLUX_BELOW_690NM_SURF(NPD_FIELD)                                SWRAD3A.309    
!             NET SURFACE FLUX BELOW 690NM (AT POINTS WHERE THERE          ADB1F401.1049   
!             IS SEA-ICE THIS IS WEIGHTED BY THE FRACTION OF OPEN SEA.)    ADB1F401.1050   
     &   , SURFACE_DOWN_FLUX(NPD_FIELD)                                    SWRAD3A.311    
!             DOWNWARD SURFACE FLUX                                        SWRAD3A.312    
     &   , SURF_DOWN_CLR(NPD_FIELD)                                        SWRAD3A.313    
!             DOWNWARD CLEAR SURFACE FLUX                                  SWRAD3A.314    
     &   , SURF_UP_CLR(NPD_FIELD)                                          SWRAD3A.315    
!             UPWARD CLEAR SURFACE FLUX                                    SWRAD3A.316    
     &   , TOTAL_CLOUD_COVER(NPD_FIELD)                                    SWRAD3A.317    
!             TOTAL CLOUD AMOUNT                                           SWRAD3A.318    
     &   , CLEAR_HR(NPD_FIELD, NLEVS)                                      SWRAD3A.319    
!             CLEAR-SKY HEATING RATES                                      SWRAD3A.320    
     &   , NET_FLUX_TROP(NPD_FIELD)                                        ADB2F404.1534   
!             NET DOWNWARD FLUX AT THE TROPOPAUSE                          ADB2F404.1535   
     &   , UP_FLUX_TROP(NPD_FIELD)                                         ADB2F404.1536   
!             UPWARD FLUX AT THE TROPOPAUSE                                ADB2F404.1537   
!                                                                          SWRAD3A.321    
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.322    
     &     L_LAYER_CLOUD_LIT                                               SWRAD3A.323    
!             LAYER CLOUD AT LIT POINTS WANTED                             SWRAD3A.324    
     &   , L_CONV_CLOUD_LIT                                                SWRAD3A.325    
!             CONVECTIVE CLOUD AT LIT POINTS WANTED                        SWRAD3A.326    
      REAL      !, INTENT(IN)                                              SWRAD3A.327    
     &     LAYER_CLOUD_LIT(NPD_FIELD, NCLDS)                               SWRAD3A.328    
!             FRACTION OF LAYER CLOUD LIT                                  SWRAD3A.329    
     &   , CONV_CLOUD_LIT(NPD_FIELD)                                       SWRAD3A.330    
!             FRACTION OF CONVECTIVE CLOUD LIT                             SWRAD3A.331    
!                                                                          SWRAD3A.332    
!     DIAGNOSTICS FOR THE MRF/UMIST PARAMETRIZATION                        SWRAD3A.333    
!                                                                          SWRAD3A.334    
      LOGICAL   !, INTENT(IN)                                              ADB2F404.1538   
     &     RE_CONV_FLAG                                                    SWRAD3A.336    
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD        SWRAD3A.337    
     &   , RE_STRAT_FLAG                                                   SWRAD3A.338    
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD        SWRAD3A.339    
     &   , WGT_CONV_FLAG                                                   SWRAD3A.340    
!             DIAGNOSE WEIGHT FOR CONVECTIVE CLOUD                         SWRAD3A.341    
     &   , WGT_STRAT_FLAG                                                  SWRAD3A.342    
!             DIAGNOSE WEIGHT FOR STRATIFORM CLOUD                         SWRAD3A.343    
     &   , LWP_STRAT_FLAG                                                  SWRAD3A.344    
!             DIAGNOSE LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD       SWRAD3A.345    
     &   , WEIGHTED_RE_FLAG                                                AAJ3F404.16     
!             CALCULATE OBSERVED EFFECTIVE RADIUS                          AAJ3F404.17     
     &   , SUM_WEIGHT_RE_FLAG                                              AAJ3F404.18     
!             CALCULATE SUM OF WEIGHTS FOR EFFECTIVE RADIUS                AAJ3F404.19     
     &   , NTOT_DIAG_FLAG                                                  AAJ3F404.20     
!             DIAGNOSE DROPLET CONCENTRATION*WEIGHT                        AAJ3F404.21     
     &   , STRAT_LWC_DIAG_FLAG                                             AAJ3F404.22     
!             DIAGNOSE STRATIFORM LWC*WEIGHT                               AAJ3F404.23     
     &   , SO4_CCN_DIAG_FLAG                                               AAJ3F404.24     
!             DIAGNOSE SO4 CCN MASS CONC*COND. SAMP. WEIGHT                AAJ3F404.25     
     &   , COND_SAMP_WGT_FLAG                                              AAJ3F404.26     
!             DIAGNOSE CONDITIONAL SAMPLING WEIGHT                         AAJ3F404.27     
!                                                                          SWRAD3A.346    
      REAL      !, INTENT(OUT)                                             ADB2F404.1539   
     &     RE_CONV(NPD_FIELD, NCLDS)                                       SWRAD3A.348    
!             EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD                 SWRAD3A.349    
     &   , RE_STRAT(NPD_FIELD, NCLDS)                                      SWRAD3A.350    
!             EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD                 SWRAD3A.351    
     &   , WGT_CONV(NPD_FIELD, NCLDS)                                      SWRAD3A.352    
!             WEIGHT FOR CONVECTIVE CLOUD                                  SWRAD3A.353    
     &   , WGT_STRAT(NPD_FIELD, NCLDS)                                     SWRAD3A.354    
!             WEIGHT FOR STRATIFORM CLOUD                                  SWRAD3A.355    
     &   , LWP_STRAT(NPD_FIELD, NCLDS)                                     SWRAD3A.356    
!             LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD                SWRAD3A.357    
     &   , WEIGHTED_RE(NPD_FIELD)                                          AAJ3F404.28     
!             WEIGHTED SUM OF EFFECTIVE RADII                              AAJ3F404.29     
     &   , SUM_WEIGHT_RE(NPD_FIELD)                                        AAJ3F404.30     
!             SUM OF WEIGHTS FOR EFFECTIVE RADIUS                          AAJ3F404.31     
     &   , NTOT_DIAG(NPD_FIELD, NCLDS)                                     AAJ3F404.32     
!             DROPLET CONCENTRATION*WEIGHT                                 AAJ3F404.33     
     &   , STRAT_LWC_DIAG(NPD_FIELD, NCLDS)                                AAJ3F404.34     
!             STRATIFORM LWC*WEIGHT                                        AAJ3F404.35     
     &   , SO4_CCN_DIAG(NPD_FIELD, NCLDS)                                  AAJ3F404.36     
!             SO4 CCN MASS CONC*COND. SAMP. WEIGHT                         AAJ3F404.37     
     &   , COND_SAMP_WGT(NPD_FIELD, NCLDS)                                 AAJ3F404.38     
!             CONDITIONAL SAMPLING WEIGHT                                  AAJ3F404.39     
!                                                                          AAJ3F404.40     
!                                                                          SWRAD3A.358    
!                                                                          SWRAD3A.359    
!                                                                          SWRAD3A.360    
!                                                                          SWRAD3A.361    
!     LOCAL VARIABLES.                                                     SWRAD3A.362    
!                                                                          SWRAD3A.363    
      INTEGER                                                              SWRAD3A.364    
     &     I                                                               SWRAD3A.365    
!             LOOP VARIABLE                                                SWRAD3A.366    
     &   , L                                                               SWRAD3A.367    
!             LOOP VARIABLE                                                SWRAD3A.368    
      LOGICAL                                                              SWRAD3A.369    
     &     L_CLEAR                                                         SWRAD3A.370    
!             CALCULATE CLEAR-SKY FIELDS                                   SWRAD3A.371    
!     FLAGS FOR PROCESSES ACTUALLY ENABLED.                                ADB1F401.1051   
      LOGICAL                                                              ADB1F401.1052   
     &     L_RAYLEIGH                                                      ADB1F401.1053   
!             LOCAL FLAG FOR RAYLEIGH SCATTERING                           ADB1F401.1054   
     &   , L_GAS                                                           ADB1F401.1055   
!             LOCAL FLAG FOR GASEOUS ABSORPTION                            ADB1F401.1056   
     &   , L_CONTINUUM                                                     ADB1F401.1057   
!             LOCAL FLAG FOR CONTINUUM ABSORPTION                          ADB1F401.1058   
     &   , L_DROP                                                          ADB1F401.1059   
!             LOCAL FLAG FOR SCATTERING BY DROPLETS                        ADB1F401.1060   
     &   , L_AEROSOL                                                       ADB1F401.1061   
!             LOCAL FLAG FOR SCATTERING BY AEROSOLS                        ADB1F401.1062   
     &   , L_AEROSOL_CCN                                                   ADB1F401.1063   
!             LOCAL FLAG TO USE AEROSOLS TO DETERMINE CCN                  ADB1F401.1064   
     &   , L_ICE                                                           ADB1F401.1065   
!             LOCAL FLAG FOR SCATTERING BY ICE CRYSTALS                    ADB1F401.1066   
      INTEGER                                                              SWRAD3A.372    
     &     I_SOLVER_CLEAR                                                  SWRAD3A.373    
!             SOLVER FOR CLEAR-SKY FLUXES                                  SWRAD3A.374    
     &   , I_GAS_OVERLAP(NPD_BAND_SW)                                      ADB2F404.1540   
!             OVERLAPS IN EACH BAND                                        SWRAD3A.376    
!                                                                          SWRAD3A.377    
!     GENERAL ATMOSPHERIC PROPERTIES:                                      SWRAD3A.378    
      REAL                                                                 SWRAD3A.379    
     &     D_MASS(NPD_PROFILE, NPD_LAYER)                                  SWRAD3A.380    
!             MASS THICKNESSES OF LAYERS                                   SWRAD3A.381    
     &   , P(NPD_PROFILE, 0: NPD_LAYER)                                    SWRAD3A.382    
!             PRESSURE FIELD                                               SWRAD3A.383    
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    SWRAD3A.384    
!             TEMPERATURE FIELD                                            SWRAD3A.385    
     &   , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES_SW)        ADB2F404.1541   
!             MASS FRACTIONS OF GASES                                      SWRAD3A.387    
     &   , NULLMMR                                                         SWRAD3A.388    
!             NULL MASS MIXING RATIO                                       SWRAD3A.389    
      PARAMETER(                                                           SWRAD3A.390    
     &     NULLMMR=0.0E+00                                                 SWRAD3A.391    
     &   )                                                                 SWRAD3A.392    
!                                                                          SWRAD3A.393    
!     CLOUDY PROPERTIES:                                                   SWRAD3A.394    
      INTEGER                                                              SWRAD3A.395    
     &     N_CONDENSED                                                     SWRAD3A.396    
!             NUMBER OF CONDENSED PHASES                                   SWRAD3A.397    
     &   , TYPE_CONDENSED(NPD_CLOUD_COMPONENT)                             SWRAD3A.398    
!             TYPES OF CONDENSED COMPONENTS                                SWRAD3A.399    
     &   , I_CONDENSED_PARAM(NPD_CLOUD_COMPONENT)                          SWRAD3A.400    
!             PARAMETRIZATION SCHEMES FOR COMPONENTS                       SWRAD3A.401    
     &   , N_CLOUD_TOP_GLOBAL                                              ADB1F402.895    
!             INVERTED GLOBAL TOPMOST CLOUDY LAYER                         ADB1F402.896    
      REAL                                                                 SWRAD3A.402    
     &     CONDENSED_PARAM_LIST(NPD_CLOUD_PARAMETER_SW                     ADB2F404.1542   
     &        , NPD_CLOUD_COMPONENT, NPD_BAND_SW)                          ADB2F404.1543   
!             PARAMETERS FOR CONDENSED PHASES                              SWRAD3A.405    
     &   , CONDENSED_DIM_CHAR(NPD_PROFILE, 0: NPD_LAYER                    ADB2F404.1544   
     &        , NPD_CLOUD_COMPONENT)                                       ADB2F404.1545   
!             CHARACTERISTIC DIMENSIONS OF CONDENSED SPECIES               ADB2F404.1546   
     &   , CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER                   SWRAD3A.408    
     &        , NPD_CLOUD_COMPONENT)                                       SWRAD3A.409    
!             MASS FRACTIONS OF CONDENSED SPECIES                          SWRAD3A.410    
     &   , W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 SWRAD3A.411    
!             CLOUD AMOUNTS                                                SWRAD3A.412    
     &   , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              SWRAD3A.413    
!             FRACTIONS OF DIFFERENT TYPES OF CLOUD                        SWRAD3A.414    
     &   , CONDENSED_MIN_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.1547   
!             MINIMUM DIMENSIONS OF CONDENSED COMPONENTS                   ADB2F404.1548   
     &   , CONDENSED_MAX_DIM(NPD_CLOUD_COMPONENT)                          ADB2F404.1549   
!             MAXIMUM DIMENSIONS OF CONDENSED COMPONENTS                   ADB2F404.1550   
!                                                                          SWRAD3A.415    
!     PROPERTIES OF AEROSOLS:                                              SWRAD3A.416    
      REAL                                                                 SWRAD3A.417    
     &     AEROSOL_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER                     SWRAD3A.418    
     &        , NPD_AEROSOL_SPECIES_SW)                                    ADB2F404.1551   
!             MIXING RATIOS OF AEROSOLS                                    SWRAD3A.420    
!                                                                          SWRAD3A.421    
!     SOLAR FIELDS:                                                        SWRAD3A.422    
      REAL                                                                 SWRAD3A.423    
     &     SEC_0(NPD_PROFILE)                                              SWRAD3A.424    
!             SECANTS OF ZENITH ANGLE                                      SWRAD3A.425    
     &   , SOLAR_INCIDENT_NORM(NPD_PROFILE)                                SWRAD3A.426    
!             NORMALLY INCIDENT SOLAR IRRADIANCE                           SWRAD3A.427    
!                                                                          SWRAD3A.428    
!     SURFACE PROPERTIES:                                                  SWRAD3A.429    
      LOGICAL                                                              SWRAD3A.430    
     &     LAND_G(NPD_PROFILE)                                             SWRAD3A.431    
!             GATHERED SURFACE MASK                                        SWRAD3A.432    
      INTEGER                                                              SWRAD3A.433    
     &     I_SURFACE(NPD_PROFILE)                                          SWRAD3A.434    
!             TYPES OF SURFACE AT EACH POINT                               SWRAD3A.435    
      REAL                                                                 SWRAD3A.436    
     &     ALBEDO_FIELD_DIFF_GREY(NPD_PROFILE)                             SWRAD3A.437    
!             DIFFUSE ALBEDO FIELD                                         SWRAD3A.438    
     &   , ALBEDO_FIELD_DIR_GREY(NPD_PROFILE)                              SWRAD3A.439    
!             DIRECT ALBEDO FIELD                                          SWRAD3A.440    
     &   , ALBEDO_FIELD_DIFF(NPD_PROFILE, NPD_BAND_SW)                     ADB2F404.1552   
!             DIFFUSE ALBEDO FIELD                                         SWRAD3A.442    
     &   , ALBEDO_FIELD_DIR(NPD_PROFILE, NPD_BAND_SW)                      ADB2F404.1553   
!             DIRECT ALBEDO FIELD                                          SWRAD3A.444    
     &   , EMISSIVITY_FIELD(NPD_PROFILE, NPD_BAND_SW)                      ADB2F404.1554   
!             EMISSIVITY FIELD                                             SWRAD3A.446    
     &   , ALBEDO_SEA_DIFF_G(NPD_PROFILE, NPD_BAND_SW)                     ADB2F404.1555   
!             GATHERED DIFFUSE ALBEDO FOR OPEN SEA                         SWRAD3A.448    
     &   , ALBEDO_SEA_DIR_G(NPD_PROFILE, NPD_BAND_SW)                      ADB2F404.1556   
!             GATHERED DIRECT ALBEDO FOR OPEN SEA                          SWRAD3A.450    
!                                                                          SWRAD3A.451    
!     FLUXES:                                                              SWRAD3A.452    
      REAL                                                                 SWRAD3A.453    
     &     FLUX_DIRECT(NPD_PROFILE, 0: NPD_LAYER)                          SWRAD3A.454    
!             DIRECT FLUX                                                  SWRAD3A.455    
     &   , FLUX_DIRECT_CLEAR(NPD_PROFILE, 0: NPD_LAYER)                    SWRAD3A.456    
!             CLEAR-SKY DIRECT FLUX                                        SWRAD3A.457    
     &   , FLUX_NET(NPD_PROFILE, 0: NPD_LAYER)                             SWRAD3A.458    
!             NET/DOWNWARD FLUX                                            SWRAD3A.459    
     &   , FLUX_NET_CLEAR(NPD_PROFILE, 0: NPD_LAYER)                       SWRAD3A.460    
!             CLEAR-SKY NET/DOWNWARD TOTAL FLUX                            ADB1F401.1067   
     &   , FLUX_UP(NPD_PROFILE, 0: NPD_LAYER)                              SWRAD3A.462    
!             UPWARD FLUX                                                  SWRAD3A.463    
     &   , FLUX_UP_CLEAR(NPD_PROFILE, 0: NPD_LAYER)                        SWRAD3A.464    
!             CLEAR-SKY UPWARD FLUX                                        SWRAD3A.465    
!                                                                          SWRAD3A.466    
!     ARRAYS FOR USE WITH DIAGNOSTICS:                                     SWRAD3A.467    
      REAL                                                                 SWRAD3A.468    
     &     WEIGHT_690NM(NPD_BAND_SW)                                       ADB2F404.1557   
!             WEIGHTS FOR EACH BAND FOR REGION BELOW 690 NM                SWRAD3A.470    
     &   , W_CLOUD_DIAG(NPDWD_CL_PROFILE, NPD_LAYER)                       ADB2F404.1558   
!             CLOUD AMOUNTS FOR DIAGNOSTIC USE                             SWRAD3A.472    
!                                                                          SWRAD3A.473    
!     SURFACE FLUXES FOR COUPLING OR DIAGNOSTIC USE                        SWRAD3A.474    
      REAL                                                                 SWRAD3A.475    
     &     SEA_FLUX_G(NPD_PROFILE)                                         SWRAD3A.476    
!             NET DOWNWARD FLUX INTO SEA                                   SWRAD3A.477    
     &   , SURFACE_DOWN_FLUX_G(NPD_PROFILE)                                SWRAD3A.478    
!             DOWNWARD FLUX AT SURFACE                                     SWRAD3A.479    
     &   , SURF_DOWN_CLR_G(NPD_PROFILE)                                    SWRAD3A.480    
!             CLEAR-SKY DOWNWARD FLUX AT SURFACE                           SWRAD3A.481    
     &   , SURF_UP_CLR_G(NPD_PROFILE)                                      SWRAD3A.482    
!             CLEAR-SKY UPWARD FLUX AT SURFACE                             SWRAD3A.483    
     &   , FLUX_BELOW_690NM_SURF_G(NPD_PROFILE)                            SWRAD3A.484    
!             GATHERED SURFACE FLUX BELOW 690NM                            SWRAD3A.485    
!                                                                          SWRAD3A.486    
!     FIELDS REQUIRED FOR CALL TO RADIATION CODE BUT NOT USED              SWRAD3A.487    
      INTEGER                                                              SWRAD3A.488    
     &     N_ORDER_GAUSS                                                   SWRAD3A.489    
     &   , I_GAS                                                           SWRAD3A.490    
      LOGICAL                                                              SWRAD3A.491    
     &     L_SWITCH_SCATTER(NPD_BAND_SW)                                   ADB2F404.1559   
!                                                                          SWRAD3A.493    
!     AUXILIARY VARIABLES:                                                 SWRAD3A.494    
      REAL                                                                 SWRAD3A.495    
     &     CPBYG                                                           SWRAD3A.496    
!             SPECIFIC HEAT BY GRAVITY                                     SWRAD3A.497    
     &   , DACON                                                           SWRAD3A.498    
!             DIFFERENCE IN A's                                            SWRAD3A.499    
     &   , DBCON                                                           SWRAD3A.500    
!             DIFFERENCE IN B's                                            SWRAD3A.501    
     &   , WEIGHT_BAND(NPD_BAND_SW)                                        ADB2F404.1560   
!             WEIGHTING FACTORS FOR BANDS                                  SWRAD3A.503    
      PARAMETER(CPBYG=CP/G)                                                SWRAD3A.504    
!                                                                          SWRAD3A.505    
!     VARIABLES REQUIRED FOR COMPATIBILITY WITH SUBROUTINES:               SWRAD3A.506    
      INTEGER                                                              ADB1F401.1068   
     &     N_FRAC_ICE_POINT                                                ADB1F401.1069   
     &   , I_FRAC_ICE_POINT(NPD_PROFILE)                                   ADB1F401.1070   
      REAL                                                                 SWRAD3A.507    
     &     DUMMY                                                           ADB2F404.1561   
!                                                                          SWRAD3A.511    
!                                                                          SWRAD3A.512    
!     SUBROUTINES CALLED:                                                  SWRAD3A.513    
      EXTERNAL                                                             SWRAD3A.514    
     &     R2_SET_GAS_MIX_RATIO, R2_SET_THERMODYNAMIC                      SWRAD3A.515    
     &   , R2_SET_AEROSOL_FIELD, R2_SET_CLOUD_FIELD                        SWRAD3A.516    
     &   , R2_SET_CLOUD_PARAMETRIZATION                                    SWRAD3A.517    
     &   , R2_SET_SURFACE_FIELD_SW, R2_ZERO_1D                             SWRAD3A.518    
     &   , R2_INIT_MRF_UMIST_DIAG                                          SWRAD3A.519    
     &   , R2_COMPARE_PROC                                                 ADB1F401.1072   
!                                                                          SWRAD3A.526    
!                                                                          SWRAD3A.527    
!                                                                          SWRAD3A.528    
!                                                                          SWRAD3A.529    
!                                                                          SWRAD3A.530    
!                                                                          SWRAD3A.531    
!     INITIALIZE THE ERROR FLAG FOR THE RADIATION CODE.                    SWRAD3A.532    
      IERR=I_NORMAL                                                        SWRAD3A.533    
!                                                                          SWRAD3A.534    
!     INITIALIZATIONS FOR DIAGNOSTICS DEPENDING ON BANDS                   ARE2F404.251    
!                                                                          SWRAD3A.535    
      IF ( L_FLUX_BELOW_690NM_SURF .OR. L_SNOW_ALBEDO ) THEN               ARE2F404.252    
         CALL R2_SET_690NM_WEIGHT(N_BAND_SW                                ARE2F404.253    
     &      , L_PRESENT_SW                                                 ARE2F404.254    
     &      , N_BAND_EXCLUDE_SW                                            ARE2F404.255    
     &      , INDEX_EXCLUDE_SW                                             ARE2F404.256    
     &      , WAVE_LENGTH_SHORT_SW                                         ARE2F404.257    
     &      , WAVE_LENGTH_LONG_SW                                          ARE2F404.258    
     &      , WEIGHT_690NM                                                 ARE2F404.259    
     &      , NPD_BAND_SW, NPD_EXCLUDE_SW, NPD_TYPE_SW                     ARE2F404.260    
     &      )                                                              ARE2F404.261    
      ENDIF                                                                ARE2F404.262    
!                                                                          ARE2F404.263    
!     COMPARE PROCESSES IN THE SPECTRAL FILE WITH THOSE ENABLED IN         ADB1F401.1073   
!     THE CODE.                                                            ADB1F401.1074   
      CALL R2_COMPARE_PROC(IERR, L_PRESENT_SW                              ADB2F404.1562   
     &   , L_RAYLEIGH_SW, L_GAS_SW, L_CONTINUUM_SW                         ADB1F401.1076   
     &   , L_DROP_SW, L_AEROSOL_SW, L_AEROSOL_CCN_SW, L_ICE_SW             ADB1F401.1077   
     &   , L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT                        ADB1F401.1078   
     &   , L_USE_SOOT_DIRECT                                               ALR3F405.118    
     &   , L_CLIMAT_AEROSOL                                                ADB1F402.717    
     &   , L_RAYLEIGH, L_GAS, L_CONTINUUM                                  ADB1F401.1079   
     &   , L_DROP, L_AEROSOL, L_AEROSOL_CCN, L_ICE                         ADB1F401.1080   
     &   , NPD_TYPE_SW                                                     ADB2F404.1563   
     &   )                                                                 ADB1F401.1082   
      IF (IERR.NE.I_NORMAL) RETURN                                         ADB1F401.1083   
!                                                                          ADB1F401.1084   
!                                                                          ADB1F401.1085   
!                                                                          ADB1F402.718    
!     SET THE PROPERTIES OF THE SURFACE                                    SWRAD3A.536    
      CALL R2_SET_SURFACE_FIELD_SW(                                        SWRAD3A.537    
     &     N_BAND_SW                                                       ADB2F404.1564   
     &   , NLIT, LIST                                                      SWRAD3A.539    
     &   , I_SURFACE, I_SPEC_SURFACE_SW                                    ADB2F404.1565   
     &   , L_SURFACE_SW                                                    ADB2F404.1566   
     &   , L_MICROPHYSICS, L_SNOW_ALBEDO, SAL_DIM                          ARE2F404.264    
     &   , LAND, OPEN_SEA_ALBEDO, LAND_ICE_ALBEDO, ICE_FRACTION            SWRAD3A.543    
     &   , SAL_VIS, SAL_NIR, WEIGHT_690NM                                  ARE2F404.265    
     &   , EMISSIVITY_FIELD, ALBEDO_FIELD_DIR, ALBEDO_FIELD_DIFF           SWRAD3A.544    
     &   , LAND_G, ALBEDO_SEA_DIFF_G, ALBEDO_SEA_DIR_G                     SWRAD3A.545    
     &   , NPD_FIELD, NPD_PROFILE, NPD_BAND_SW, NPD_SURFACE_SW             ADB2F404.1567   
     &   )                                                                 SWRAD3A.547    
!                                                                          SWRAD3A.548    
!     SET THE MIXING RATIOS OF GASES.                                      SWRAD3A.549    
      CALL R2_SET_GAS_MIX_RATIO(IERR                                       SWRAD3A.550    
     &   , NLIT, NLEVS, NWET, NOZONE                                       SWRAD3A.551    
     &   , LIST                                                            SWRAD3A.552    
     &   , N_ABSORB_SW, TYPE_ABSORB_SW                                     ADB2F404.1568   
     &   , .FALSE., .FALSE., .FALSE., .FALSE., L_O2_SW                     ADB2F404.1569   
     &   , .FALSE., .FALSE., .FALSE., .FALSE.                              ADB1F405.952    
     &   , H2O, CO2, O3, NULLMMR, NULLMMR, NULLMMR, NULLMMR                SWRAD3A.555    
     &   , O2_MIX_RATIO                                                    SWRAD3A.556    
     &   , NULLMMR, NULLMMR, NULLMMR, NULLMMR                              ADB1F405.953    
     &   , GAS_MIX_RATIO                                                   SWRAD3A.557    
     &   , CO2_DIM1, CO2_DIM2, CO2_3D, L_CO2_3D                            ACN2F405.99     
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_SPECIES_SW               ADB2F404.1570   
     &   )                                                                 SWRAD3A.559    
      IF (IERR.NE.I_NORMAL) RETURN                                         SWRAD3A.560    
!                                                                          SWRAD3A.561    
!     SET THE THERMODYNAMIC PROPERTIES OF THE ATMOSPHERE.                  SWRAD3A.562    
      CALL R2_SET_THERMODYNAMIC(NLIT, NLEVS, LIST, .FALSE.                 SWRAD3A.563    
     &   , PSTAR, DUMMY, AB, BB, AC, BC                                    ADB2F404.1571   
     &   , DUMMY, TAC                                                      ADB2F404.1572   
     &   , P, T, DUMMY, DUMMY, D_MASS                                      ADB2F404.1573   
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER                               SWRAD3A.567    
     &   )                                                                 SWRAD3A.568    
!                                                                          SWRAD3A.569    
!                                                                          SWRAD3A.570    
!     SET THE MIXING RATIOS OF AEROSOLS.                                   SWRAD3A.571    
      IF (L_AEROSOL.OR.L_AEROSOL_CCN) THEN                                 ADB1F401.1088   
         CALL R2_SET_AEROSOL_FIELD(IERR                                    ADB1F402.719    
     &      , NLIT, NLEVS, N_AEROSOL_SW, TYPE_AEROSOL_SW                   ADB2F404.1574   
     &      , LIST                                                         SWRAD3A.574    
     &      , L_CLIMAT_AEROSOL, N_LEVELS_BL                                ADB1F402.721    
     &      , L_USE_SULPC_DIRECT                                           ADB2F404.1575   
     &      , SULP_DIM1, SULP_DIM2                                         ADB1F402.723    
     &      , ACCUM_SULPHATE, AITKEN_SULPHATE                              ADB1F402.724    
     &,L_USE_SOOT_DIRECT, SOOT_DIM1, SOOT_DIM2, FRESH_SOOT, AGED_SOOT      ALR3F405.119    
     &      , LAND, LYING_SNOW, PSTAR, AB, BB, TRINDX                      ADB1F402.725    
     &      , AEROSOL_MIX_RATIO                                            ADB1F402.726    
     &      , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES_SW    ADB2F404.1576   
     &      )                                                              SWRAD3A.577    
      ENDIF                                                                SWRAD3A.578    
!                                                                          SWRAD3A.579    
!                                                                          SWRAD3A.580    
!     ASSIGN THE PROPERTIES OF CLOUDS.                                     SWRAD3A.581    
!                                                                          ADB2F404.1577   
      CALL R2_SET_CLOUD_PARAMETRIZATION(IERR, N_BAND_SW                    ADB2F404.1578   
     &   , I_ST_WATER_SW, I_CNV_WATER_SW, I_ST_ICE_SW, I_CNV_ICE_SW        ADB2F404.1579   
     &   , L_DROP_TYPE_SW                                                  ADB2F404.1580   
     &   , I_DROP_PARAMETRIZATION_SW                                       ADB2F404.1581   
     &   , DROP_PARAMETER_LIST_SW                                          ADB2F404.1582   
     &   , DROP_PARM_MIN_DIM_SW, DROP_PARM_MAX_DIM_SW                      ADB2F404.1583   
     &   , L_ICE_TYPE_SW                                                   ADB2F404.1584   
     &   , I_ICE_PARAMETRIZATION_SW                                        ADB2F404.1585   
     &   , ICE_PARAMETER_LIST_SW                                           ADB2F404.1586   
     &   , ICE_PARM_MIN_DIM_SW, ICE_PARM_MAX_DIM_SW                        ADB2F404.1587   
     &   , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST                         ADB2F404.1588   
     &   , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM                            ADB2F404.1589   
     &   , NPD_BAND_SW                                                     ADB2F404.1590   
     &   , NPD_DROP_TYPE_SW, NPD_ICE_TYPE_SW, NPD_CLOUD_PARAMETER_SW       ADB2F404.1591   
     &   )                                                                 ADB2F404.1592   
      IF (IERR.NE.I_NORMAL) RETURN                                         ADB2F404.1593   
!                                                                          ADB2F404.1594   
      CALL R2_INIT_MRF_UMIST_DIAG(IERR                                     SWRAD3A.582    
     &   , RE_CONV, RE_CONV_FLAG, RE_STRAT, RE_STRAT_FLAG                  SWRAD3A.583    
     &   , WGT_CONV, WGT_CONV_FLAG, WGT_STRAT, WGT_STRAT_FLAG              SWRAD3A.584    
     &   , LWP_STRAT, LWP_STRAT_FLAG                                       SWRAD3A.585    
     &   , NTOT_DIAG, NTOT_DIAG_FLAG                                       AAJ3F404.41     
     &   , STRAT_LWC_DIAG, STRAT_LWC_DIAG_FLAG                             AAJ3F404.42     
     &   , SO4_CCN_DIAG, SO4_CCN_DIAG_FLAG                                 AAJ3F404.43     
     &   , COND_SAMP_WGT, COND_SAMP_WGT_FLAG                               AAJ3F404.44     
     &   , NPD_FIELD, NPD_PROFILE, NCLDS                                   SWRAD3A.586    
     &   )                                                                 SWRAD3A.587    
      IF (IERR.NE.I_NORMAL) RETURN                                         SWRAD3A.588    
!                                                                          ADB2F404.1595   
      CALL R2_SET_CLOUD_FIELD(NLIT, NLEVS, NCLDS                           SWRAD3A.589    
     &   , LIST                                                            SWRAD3A.590    
     &   , P, T, D_MASS                                                    SWRAD3A.591    
     &   , CCB, CCT, CCA, CCCWP                                            SWRAD3A.592    
     &   , LCCWC1, LCCWC2, LCA_AREA, LCA_BULK                              ASK1F405.282    
     &   , L_MICROPHYSICS, L_AEROSOL_CCN                                   AYY1F404.370    
     &   , SULP_DIM1, SULP_DIM2, ACCUM_SULPHATE, DISS_SULPHATE             AYY1F404.371    
     &   , L_CLOUD_WATER_PARTITION,  LAND_G                                AYY1F404.372    
     &   , I_CLOUD_REPRESENTATION_SW, I_CONDENSED_PARAM                    ADB2F404.1596   
     &   , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM                            ADB2F404.1597   
     &   , N_CONDENSED, TYPE_CONDENSED                                     SWRAD3A.596    
     &   , W_CLOUD, FRAC_CLOUD, L_LOCAL_CNV_PARTITION_SW                   ADB1F405.954    
     &   , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR                         ADB2F404.1598   
     &   , RE_CONV, RE_CONV_FLAG, RE_STRAT, RE_STRAT_FLAG                  SWRAD3A.599    
     &   , WGT_CONV, WGT_CONV_FLAG, WGT_STRAT, WGT_STRAT_FLAG              SWRAD3A.600    
     &   , LWP_STRAT, LWP_STRAT_FLAG                                       SWRAD3A.601    
     &   , NTOT_DIAG, NTOT_DIAG_FLAG                                       AAJ3F404.85     
     &   , STRAT_LWC_DIAG, STRAT_LWC_DIAG_FLAG                             AAJ3F404.86     
     &   , SO4_CCN_DIAG, SO4_CCN_DIAG_FLAG                                 AAJ3F404.87     
     &   , COND_SAMP_WGT, COND_SAMP_WGT_FLAG                               AAJ3F404.88     
     &   , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES_SW       ADB2F404.1599   
     &   , N_CCA_LEV, L_3D_CCA                                             AJX0F404.39     
     &   )                                                                 SWRAD3A.603    
!                                                                          AAJ3F404.45     
      IF (WEIGHTED_RE_FLAG.AND.SUM_WEIGHT_RE_FLAG) THEN                    AAJ3F404.46     
         CALL R2_CLOUD_LEVEL_DIAG(IERR, NLIT, NLEVS, NCLDS                 AAJ3F404.47     
     &      , LIST                                                         AAJ3F404.48     
     &      , I_CLOUD_SW, I_CLOUD_REPRESENTATION_SW                        AAJ3F404.49     
     &      , W_CLOUD, FRAC_CLOUD                                          AAJ3F404.50     
     &      , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR                      AAJ3F404.51     
     &      , WEIGHTED_RE_FLAG, WEIGHTED_RE, SUM_WEIGHT_RE                 AAJ3F404.52     
     &      , NPD_FIELD, NPD_PROFILE, NPD_LAYER                            AAJ3F404.53     
     &      )                                                              AAJ3F404.54     
         IF (IERR.NE.I_NORMAL) RETURN                                      AAJ3F404.55     
      ENDIF                                                                AAJ3F404.56     
!                                                                          SWRAD3A.617    
!                                                                          SWRAD3A.618    
!                                                                          SWRAD3A.619    
!     SET THE INCIDENT SOLAR FLUX.                                         SWRAD3A.620    
      DO L=1, NLIT                                                         SWRAD3A.621    
         SOLAR_INCIDENT_NORM(L)=SCS*SC*LIT(LIST(L))                        SWRAD3A.622    
         SEC_0(L)=1.0E+00/COSZIN(LIST(L))                                  SWRAD3A.623    
      ENDDO                                                                SWRAD3A.624    
!                                                                          SWRAD3A.625    
!                                                                          SWRAD3A.626    
!     CHECK THAT A VALID NUMBER HAS BEEN SUPPLIED FOR THE SOLVER.          ADB1F405.955    
      IF ( (I_SOLVER_SW.NE.IP_SOLVER_PENTADIAGONAL).AND.                   ADB1F405.956    
     &     (I_SOLVER_SW.NE.IP_SOLVER_MIX_11).AND.                          ADB1F405.957    
     &     (I_SOLVER_SW.NE.IP_SOLVER_MIX_DIRECT).AND.                      ADB1F405.958    
     &     (I_SOLVER_SW.NE.IP_SOLVER_HOMOGEN_DIRECT).AND.                  ADB1F405.959    
     &     (I_SOLVER_SW.NE.IP_SOLVER_TRIPLE)                               ADB1F405.960    
     &   ) THEN                                                            ADB1F405.961    
         WRITE(IU_ERR, '(/A, /A)')                                         ADB1F405.962    
     &      '*** ERROR: AN INVALID SOLVER HAS BEEN SELECTED '              ADB1F405.963    
     &      , 'IN THE SHORTWAVE REGION.'                                   ADB1F405.964    
         IERR=I_ERR_FATAL                                                  ADB1F405.965    
         RETURN                                                            ADB1F405.966    
      ENDIF                                                                ADB1F405.967    
!                                                                          ADB1F405.968    
!                                                                          ADB1F405.969    
!                                                                          ADB1F405.970    
!     SET CLEAR-SKY CALCULATIONS.                                          SWRAD3A.627    
      L_CLEAR=L_SOLAR_OUT_CLEAR.OR.                                        SWRAD3A.628    
     &        L_SURF_DOWN_CLR.OR.                                          SWRAD3A.629    
     &        L_CLEAR_HR                                                   SWRAD3A.630    
!                                                                          SWRAD3A.631    
      IF (L_CLEAR) THEN                                                    SWRAD3A.632    
!                                                                          SWRAD3A.633    
!        SELECT A CLEAR-SKY SOLVER TO MATCH THE MAIN SOLVER.               SWRAD3A.634    
         IF (I_SOLVER_SW.EQ.IP_SOLVER_PENTADIAGONAL) THEN                  SWRAD3A.635    
            I_SOLVER_CLEAR=IP_SOLVER_PENTADIAGONAL                         SWRAD3A.636    
         ELSE IF (I_SOLVER_SW.EQ.IP_SOLVER_MIX_11) THEN                    SWRAD3A.645    
            I_SOLVER_CLEAR=IP_SOLVER_PENTADIAGONAL                         SWRAD3A.646    
         ELSE IF (I_SOLVER_SW.EQ.IP_SOLVER_MIX_DIRECT) THEN                ADB1F401.1099   
            I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT                        ADB1F401.1100   
         ELSE IF (I_SOLVER_SW.EQ.IP_SOLVER_HOMOGEN_DIRECT) THEN            ADB2F404.1600   
            I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT                        ADB2F404.1601   
         ELSE IF (I_SOLVER_SW.EQ.IP_SOLVER_TRIPLE) THEN                    ADB1F402.727    
            I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT                        ADB1F402.730    
         ENDIF                                                             SWRAD3A.655    
!                                                                          SWRAD3A.656    
      ENDIF                                                                SWRAD3A.657    
!                                                                          SWRAD3A.658    
!                                                                          SWRAD3A.659    
!     SET PROPERTIES FOR INDIVIDUAL BANDS.                                 SWRAD3A.660    
      DO I=1, N_BAND_SW                                                    ADB2F404.1602   
         WEIGHT_BAND(I)=1.0E+00                                            SWRAD3A.662    
         I_GAS_OVERLAP(I)=I_GAS_OVERLAP_SW                                 SWRAD3A.663    
      ENDDO                                                                SWRAD3A.664    
!                                                                          SWRAD3A.665    
!                                                                          SWRAD3A.666    
!     INVERT THE TOPMOST CLOUDY LAYER IF USING A GLOBAL VALUE.             ADB1F402.898    
      IF (L_GLOBAL_CLOUD_TOP) THEN                                         ADB1F402.899    
         N_CLOUD_TOP_GLOBAL=NLEVS+1-GLOBAL_CLOUD_TOP                       ADB1F402.900    
      ENDIF                                                                ADB1F402.901    
!                                                                          SWRAD3A.679    
!                                                                          SWRAD3A.680    
!                                                                          SWRAD3A.681    
!                                                                          SWRAD3A.682    
      CALL FLUX_CALC(IERR                                                  SWRAD3A.683    
!                       Logical Flags for Processes                        SWRAD3A.684    
     &   , L_RAYLEIGH, L_AEROSOL, L_GAS, L_CONTINUUM                       ADB1F401.1103   
     &   , L_CLOUD_SW, L_DROP, L_ICE                                       ADB1F401.1104   
!                       Angular Integration                                SWRAD3A.687    
     &   , I_ANGULAR_INTEGRATION_SW, I_2STREAM_SW, L_2_STREAM_CORRECT_SW   SWRAD3A.688    
     &   , L_RESCALE_SW, N_ORDER_GAUSS                                     SWRAD3A.689    
!                       Treatment of Scattering                            SWRAD3A.690    
     &   , I_SCATTER_METHOD_SW, L_SWITCH_SCATTER                           SWRAD3A.691    
!                       Options for treating clouds                        ADB1F402.902    
     &   , L_GLOBAL_CLOUD_TOP, N_CLOUD_TOP_GLOBAL                          ADB1F402.903    
!                       Options for Solver                                 SWRAD3A.692    
     &   , I_SOLVER_SW                                                     ADB1F405.971    
!                       General Spectral Properties                        SWRAD3A.694    
     &   , N_BAND_SW, 1, N_BAND_SW                                         ADB2F404.1603   
     &   , WEIGHT_BAND                                                     SWRAD3A.696    
!                       General Atmospheric Properties                     SWRAD3A.697    
     &   , NLIT, NLEVS                                                     SWRAD3A.698    
     &   , L_LAYER_SW, L_CLOUD_LAYER_SW                                    SWRAD3A.699    
     &   , P, T, DUMMY, DUMMY, D_MASS                                      ADB2F404.1604   
!                       Spectral Region                                    SWRAD3A.701    
     &   , ISOLIR_SW                                                       SWRAD3A.702    
!                       Solar Fields                                       SWRAD3A.703    
     &   , SEC_0, SOLAR_INCIDENT_NORM, SOLAR_FLUX_BAND_SW                  ADB2F404.1605   
     &   , RAYLEIGH_COEFFICIENT_SW                                         ADB2F404.1606   
!                       Infra-red Fields                                   SWRAD3A.706    
     &   , N_DEG_FIT_SW                                                    ADB2F404.1607   
     &   , THERMAL_COEFFICIENT_SW                                          ADB2F404.1608   
     &   , T_REF_PLANCK_SW, .FALSE.                                        ADB2F404.1609   
!                       Gaseous Absorption                                 SWRAD3A.710    
     &   , N_ABSORB_SW, I_GAS_OVERLAP, I_GAS                               ADB2F404.1610   
     &   , GAS_MIX_RATIO                                                   SWRAD3A.712    
     &   , N_BAND_ABSORB_SW, INDEX_ABSORB_SW                               ADB2F404.1611   
     &   , I_BAND_ESFT_SW                                                  ADB2F404.1612   
     &   , W_ESFT_SW, K_ESFT_SW                                            ADB2F404.1613   
     &   , I_SCALE_ESFT_SW, I_SCALE_FNC_SW                                 ADB2F404.1614   
     &   , SCALE_VECTOR_SW                                                 ADB2F404.1615   
     &   , P_REFERENCE_SW, T_REFERENCE_SW                                  ADB2F404.1616   
!                       Doppler Broadening                                 SWRAD3A.719    
     &   , L_DOPPLER_PRESENT_SW                                            ADB2F404.1617   
     &   , DOPPLER_CORRECTION_SW                                           ADB2F404.1618   
!                       Surface Fields                                     SWRAD3A.722    
     &   , L_SURFACE_SW, I_SURFACE                                         ADB2F404.1619   
     &   , I_SPEC_SURFACE_SW                                               ADB2F404.1620   
     &   , SURFACE_ALBEDO_SW                                               ADB2F404.1621   
     &   , ALBEDO_FIELD_DIFF, ALBEDO_FIELD_DIR                             SWRAD3A.726    
     &   , N_DIR_ALBEDO_FIT_SW                                             ADB2F404.1622   
     &   , DIRECT_ALBEDO_PARM_SW                                           ADB2F404.1623   
     &   , EMISSIVITY_GROUND_SW                                            ADB2F404.1624   
     &   , EMISSIVITY_FIELD                                                SWRAD3A.730    
!                       Continuum Absorption                               SWRAD3A.731    
     &   , N_BAND_CONTINUUM_SW                                             ADB2F404.1625   
     &   , INDEX_CONTINUUM_SW, INDEX_WATER_SW                              ADB2F404.1626   
     &   , K_CONTINUUM_SW, I_SCALE_FNC_CONT_SW                             ADB2F404.1627   
     &   , SCALE_CONTINUUM_SW                                              ADB2F404.1628   
     &   , P_REF_CONTINUUM_SW                                              ADB2F404.1629   
     &   , T_REF_CONTINUUM_SW                                              ADB2F404.1630   
!                       Properties of Aerosols                             SWRAD3A.738    
     &   , N_AEROSOL_SW                                                    ADB2F404.1631   
     &   , AEROSOL_MIX_RATIO                                               SWRAD3A.740    
     &   , AEROSOL_ABSORPTION_SW                                           ADB2F404.1632   
     &   , AEROSOL_SCATTERING_SW                                           ADB2F404.1633   
     &   , AEROSOL_ASYMMETRY_SW                                            ADB2F404.1634   
     &   , I_AEROSOL_PARAMETRIZATION_SW                                    ADB2F404.1635   
     &   , NHUMIDITY_SW                                                    ADB2F404.1636   
     &   , HUMIDITIES_SW                                                   ADB2F404.1637   
!                       Properties of Clouds                               SWRAD3A.747    
     &   , N_CONDENSED, TYPE_CONDENSED                                     SWRAD3A.748    
     &   , I_CLOUD_SW, I_CLOUD_REPRESENTATION_SW, W_CLOUD, FRAC_CLOUD      SWRAD3A.749    
     &   , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR                         ADB2F404.1638   
     &   , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST                         SWRAD3A.751    
!                       Fluxes Calculated                                  SWRAD3A.752    
     &   , FLUX_DIRECT, FLUX_NET, FLUX_UP                                  SWRAD3A.753    
!                       Options for Clear-sky Fluxes                       SWRAD3A.754    
     &   , L_CLEAR, I_SOLVER_CLEAR                                         SWRAD3A.755    
!                       Clear-sky Fluxes Calculated                        SWRAD3A.756    
     &   , FLUX_DIRECT_CLEAR, FLUX_NET_CLEAR, FLUX_UP_CLEAR                SWRAD3A.757    
!                       Arrays specific to the UM                          SWRAD3A.758    
!                       Arrays for Coupling                                SWRAD3A.759    
     &   , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION                ADB1F401.1105   
     &   , ALBEDO_SEA_DIFF_G, ALBEDO_SEA_DIR_G                             SWRAD3A.760    
     &   , SEA_FLUX_G                                                      SWRAD3A.761    
!                       Arrays for diagnostics specific to the UM          SWRAD3A.762    
     &   , L_FLUX_BELOW_690NM_SURF, WEIGHT_690NM                           SWRAD3A.763    
     &   , FLUX_BELOW_690NM_SURF_G                                         SWRAD3A.764    
     &   , L_SURFACE_DOWN_FLUX, SURFACE_DOWN_FLUX_G                        SWRAD3A.765    
     &   , L_SURF_DOWN_CLR, SURF_DOWN_CLR_G                                SWRAD3A.766    
     &   , L_SURF_UP_CLR, SURF_UP_CLR_G                                    SWRAD3A.767    
!                       Dimensions of Arrays                               SWRAD3A.768    
     &   , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                              SWRAD3A.769    
     &   , NPD_BAND_SW                                                     ADB2F404.1639   
     &   , NPD_SPECIES_SW                                                  ADB2F404.1640   
     &   , NPD_ESFT_TERM_SW, NPD_SCALE_FNC_SW                              ADB2F404.1641   
     &   , NPD_SCALE_VARIABLE_SW                                           ADB2F404.1642   
     &   , NPD_CONTINUUM_SW                                                ADB2F404.1643   
     &   , NPD_AEROSOL_SPECIES_SW                                          ADB2F404.1644   
     &   , NPD_HUMIDITIES_SW                                               ADB2F404.1645   
     &   , NPD_CLOUD_PARAMETER_SW                                          ADB2F404.1646   
     &   , NPD_THERMAL_COEFF_SW                                            ADB2F404.1647   
     &   , NPD_SURFACE_SW, NPD_ALBEDO_PARM_SW                              ADB2F404.1648   
     &   )                                                                 SWRAD3A.780    
      IF (IERR.NE.I_NORMAL) RETURN                                         SWRAD3A.781    
!                                                                          SWRAD3A.782    
!                                                                          SWRAD3A.783    
!     PREPARE THE OUTPUT ARRAYS:                                           SWRAD3A.784    
!                                                                          SWRAD3A.785    
!     ZERO SWOUT SO THAT POINTS LYING IN THE NIGHT WILL CONTAIN VALID      SWRAD3A.786    
!     FLUXES AFTER SCATTERING.                                             SWRAD3A.787    
      DO I=1, NLEVS+1                                                      SWRAD3A.788    
         CALL R2_ZERO_1D(N_PROFILE, SWOUT(1, I))                           SWRAD3A.789    
      ENDDO                                                                SWRAD3A.790    
      IF (L_CLEAR_HR) THEN                                                 SWRAD3A.791    
         DO I=1, NLEVS                                                     SWRAD3A.792    
            CALL R2_ZERO_1D(N_PROFILE, CLEAR_HR(1, I))                     SWRAD3A.793    
         ENDDO                                                             SWRAD3A.794    
      ENDIF                                                                SWRAD3A.795    
!                                                                          SWRAD3A.796    
!     SCATTER THE NET DOWNWARD FLUX AT EACH LEVEL INTO SWOUT.              SWRAD3A.797    
      DO I=1, NLEVS+1                                                      SWRAD3A.798    
         DO L=1, NLIT                                                      SWRAD3A.799    
            SWOUT(LIST(L), I)=FLUX_NET(L, NLEVS+1-I)                       SWRAD3A.800    
         ENDDO                                                             SWRAD3A.801    
      ENDDO                                                                SWRAD3A.802    
!                                                                          SWRAD3A.803    
!                                                                          SWRAD3A.804    
!     NET SHORTWAVE RADIATION ABSORBED BY THE PLANET                       SWRAD3A.805    
!     (I. E. EARTH AND ATMOSPHERE TOGETHER):                               SWRAD3A.806    
!                                                                          SWRAD3A.807    
      CALL R2_ZERO_1D(N_PROFILE, NETSW)                                    SWRAD3A.808    
      DO L=1, NLIT                                                         SWRAD3A.809    
         NETSW(LIST(L))=SWOUT(LIST(L), NLEVS+1)                            SWRAD3A.810    
      ENDDO                                                                SWRAD3A.811    
!                                                                          SWRAD3A.812    
!                                                                          SWRAD3A.813    
!                                                                          SWRAD3A.814    
!                                                                          SWRAD3A.815    
!     ASSIGNMENT OF DIAGNOSTICS:                                           SWRAD3A.816    
!                                                                          SWRAD3A.817    
!     TOTAL CLOUD COVER:                                                   SWRAD3A.818    
!                                                                          SWRAD3A.819    
      IF (L_TOTAL_CLOUD_COVER) THEN                                        SWRAD3A.820    
!                                                                          SWRAD3A.821    
!        THE CLOUD AMOUNTS MUST BE RECALCULATED SINCE W_CLOUD              SWRAD3A.822    
!        AS DEFINED ABOVE HOLDS VALUES ONLY AT LIT POINTS.                 SWRAD3A.823    
!        A DIFFERENTLY DEFINED DIAGNOSTIC ARRAY IS USED TO PREVENT         SWRAD3A.824    
!        OUR HAVING TO DECLARE A LOT OF SPACE FOR W_CLOUD.                 SWRAD3A.825    
         IF (L_3D_CCA) THEN                                                AJX0F404.40     
         DO I=NLEVS+1-NCLDS, NLEVS                                         SWRAD3A.826    
            DO L=1, N_PROFILE                                              SWRAD3A.827    
               W_CLOUD_DIAG(L,I) = CCA(L,NLEVS+1-I)                        AJX0F404.41     
     &                +(1.0E+00-CCA(L,NLEVS+1-I))*LCA_AREA(L,NLEVS+1-I)    ASK1F405.283    
              ENDDO                                                        AJX0F404.43     
           ENDDO                                                           AJX0F404.44     
         ELSE                                                              AJX0F404.45     
           DO I=NLEVS+1-NCLDS, NLEVS                                       AJX0F404.46     
             DO L=1, N_PROFILE                                             AJX0F404.47     
               IF ( (CCT(L).GE.NLEVS+2-I).AND.(CCB(L).LE.NLEVS+1-I) )      SWRAD3A.828    
     &            THEN                                                     SWRAD3A.829    
                  W_CLOUD_DIAG(L, I)                                       SWRAD3A.830    
     &               =CCA(L,1)+(1.0E+00-CCA(L,1))*LCA_AREA(L, NLEVS+1-I)   ASK1F405.284    
               ELSE                                                        SWRAD3A.832    
                  W_CLOUD_DIAG(L, I)=LCA_AREA(L, NLEVS+1-I)                ASK1F405.285    
               ENDIF                                                       SWRAD3A.834    
            ENDDO                                                          SWRAD3A.835    
         ENDDO                                                             SWRAD3A.836    
         ENDIF                                                             AJX0F404.49     
!                                                                          SWRAD3A.837    
         CALL R2_CALC_TOTAL_CLOUD_COVER(N_PROFILE, NLEVS, NCLDS            SWRAD3A.838    
     &      , I_CLOUD_SW, W_CLOUD_DIAG, TOTAL_CLOUD_COVER                  SWRAD3A.839    
     &      , NPDWD_CL_PROFILE, NPD_LAYER                                  ADB1F405.972    
     &      )                                                              SWRAD3A.841    
!                                                                          SWRAD3A.842    
      ENDIF                                                                SWRAD3A.843    
!                                                                          SWRAD3A.844    
!                                                                          SWRAD3A.845    
!     AMOUNT OF CONVECTIVE CLOUD AT DAYLIT POINTS.                         SWRAD3A.846    
      IF (L_CONV_CLOUD_LIT) THEN                                           SWRAD3A.847    
!        ZERO THE ARRAY EVERYWHERE AND FILL ONLY AT LIT POINTS.            SWRAD3A.848    
         CALL R2_ZERO_1D(N_PROFILE, CONV_CLOUD_LIT)                        SWRAD3A.849    
        IF (L_3D_CCA) THEN                                                 AJX0F404.50     
         DO L=1, NLIT                                                      SWRAD3A.850    
            CONV_CLOUD_LIT(LIST(L))=CCA( LIST(L),CCT(LIST(L)) )            AJX0F404.51     
         ENDDO                                                             SWRAD3A.852    
        ELSE                                                               AJX0F404.52     
          DO L=1, NLIT                                                     AJX0F404.53     
            CONV_CLOUD_LIT(LIST(L))=CCA(LIST(L),1)                         AJX0F404.54     
          ENDDO                                                            AJX0F404.55     
        ENDIF                                                              AJX0F404.56     
      ENDIF                                                                SWRAD3A.853    
!                                                                          SWRAD3A.854    
!                                                                          SWRAD3A.855    
!     AMOUNT OF STRATIFORM CLOUD AT DAYLIT POINTS.                         SWRAD3A.856    
      IF (L_LAYER_CLOUD_LIT) THEN                                          SWRAD3A.857    
         DO I=1, NCLDS                                                     SWRAD3A.858    
            CALL R2_ZERO_1D(N_PROFILE, LAYER_CLOUD_LIT(1, I))              SWRAD3A.859    
            DO L=1, NLIT                                                   SWRAD3A.860    
               LAYER_CLOUD_LIT(LIST(L), I)=LCA_AREA(LIST(L), I)            ASK1F405.286    
            ENDDO                                                          SWRAD3A.862    
         ENDDO                                                             SWRAD3A.863    
      ENDIF                                                                SWRAD3A.864    
!                                                                          SWRAD3A.865    
!                                                                          SWRAD3A.866    
!     OUTGOING SOLAR RADIATION AT TOA:                                     SWRAD3A.867    
!                                                                          SWRAD3A.868    
      IF (L_SOLAR_OUT_TOA) THEN                                            SWRAD3A.869    
         CALL R2_ZERO_1D(N_PROFILE, SOLAR_OUT_TOA)                         SWRAD3A.870    
         DO L=1, NLIT                                                      SWRAD3A.871    
            SOLAR_OUT_TOA(LIST(L))=SOLAR_INCIDENT_NORM(L)/SEC_0(L)         SWRAD3A.872    
     &         -FLUX_NET(L, 0)                                             SWRAD3A.873    
         ENDDO                                                             SWRAD3A.874    
      ENDIF                                                                SWRAD3A.875    
!                                                                          SWRAD3A.876    
!                                                                          SWRAD3A.877    
!     CLEAR-SKY OUTGOING SOLAR RADIATION AT TOA:                           SWRAD3A.878    
!                                                                          SWRAD3A.879    
      IF (L_SOLAR_OUT_CLEAR) THEN                                          SWRAD3A.880    
         CALL R2_ZERO_1D(N_PROFILE, SOLAR_OUT_CLEAR)                       SWRAD3A.881    
         DO L=1, NLIT                                                      SWRAD3A.882    
            SOLAR_OUT_CLEAR(LIST(L))=SOLAR_INCIDENT_NORM(L)/SEC_0(L)       SWRAD3A.883    
     &         -FLUX_NET_CLEAR(L, 0)                                       SWRAD3A.884    
         ENDDO                                                             SWRAD3A.885    
      ENDIF                                                                SWRAD3A.886    
!                                                                          SWRAD3A.887    
!                                                                          SWRAD3A.888    
!     SURFACE FLUX BELOW 690NM.                                            SWRAD3A.889    
!                                                                          SWRAD3A.890    
      IF (L_FLUX_BELOW_690NM_SURF) THEN                                    SWRAD3A.891    
         CALL R2_ZERO_1D(N_PROFILE, FLUX_BELOW_690NM_SURF)                 SWRAD3A.892    
         DO L=1, NLIT                                                      SWRAD3A.893    
            IF (LAND(LIST(L))) THEN                                        ADB1F401.1106   
               FLUX_BELOW_690NM_SURF(LIST(L))                              ADB1F401.1107   
     &            =FLUX_BELOW_690NM_SURF_G(L)                              ADB1F401.1108   
            ELSE                                                           ADB1F401.1109   
               FLUX_BELOW_690NM_SURF(LIST(L))                              ADB1F401.1110   
     &            =FLUX_BELOW_690NM_SURF_G(L)                              ADB1F401.1111   
     &            *(1.0E+00-ICE_FRACTION(LIST(L)))                         ADB1F401.1112   
            ENDIF                                                          ADB1F401.1113   
         ENDDO                                                             SWRAD3A.895    
      ENDIF                                                                SWRAD3A.896    
!                                                                          SWRAD3A.897    
!                                                                          SWRAD3A.898    
!     DOWNWARD FLUX AT THE SURFACE:                                        SWRAD3A.899    
!                                                                          SWRAD3A.900    
      IF (L_SURFACE_DOWN_FLUX) THEN                                        SWRAD3A.901    
         CALL R2_ZERO_1D(N_PROFILE, SURFACE_DOWN_FLUX)                     SWRAD3A.902    
         DO L=1, NLIT                                                      SWRAD3A.903    
            SURFACE_DOWN_FLUX(LIST(L))=SURFACE_DOWN_FLUX_G(L)              SWRAD3A.904    
         ENDDO                                                             SWRAD3A.905    
      ENDIF                                                                SWRAD3A.906    
!                                                                          SWRAD3A.907    
!                                                                          SWRAD3A.908    
!     CLEAR-SKY DOWNWARD FLUX AT THE SURFACE:                              SWRAD3A.909    
!                                                                          SWRAD3A.910    
      IF (L_SURF_DOWN_CLR) THEN                                            SWRAD3A.911    
         CALL R2_ZERO_1D(N_PROFILE, SURF_DOWN_CLR)                         SWRAD3A.912    
         DO L=1, NLIT                                                      SWRAD3A.913    
            SURF_DOWN_CLR(LIST(L))=SURF_DOWN_CLR_G(L)                      SWRAD3A.914    
         ENDDO                                                             SWRAD3A.915    
      ENDIF                                                                SWRAD3A.916    
!                                                                          SWRAD3A.917    
!                                                                          SWRAD3A.918    
!     CLEAR-SKY UPWARD FLUX AT THE SURFACE:                                SWRAD3A.919    
!                                                                          SWRAD3A.920    
      IF (L_SURF_UP_CLR) THEN                                              SWRAD3A.921    
         CALL R2_ZERO_1D(N_PROFILE, SURF_UP_CLR)                           SWRAD3A.922    
         DO L=1, NLIT                                                      SWRAD3A.923    
            SURF_UP_CLR(LIST(L))=SURF_UP_CLR_G(L)                          SWRAD3A.924    
         ENDDO                                                             SWRAD3A.925    
      ENDIF                                                                SWRAD3A.926    
!                                                                          SWRAD3A.927    
!                                                                          SWRAD3A.928    
!     NET FLUX AT THE TROPOPAUSE:                                          ADB2F404.1649   
!                                                                          ADB2F404.1650   
      IF (L_NET_FLUX_TROP) THEN                                            ADB2F404.1651   
         CALL R2_ZERO_1D(N_PROFILE, NET_FLUX_TROP)                         ADB2F404.1652   
         DO L=1, NLIT                                                      ADB2F404.1653   
            NET_FLUX_TROP(LIST(L))                                         ADB2F404.1654   
     &         =FLUX_NET(L, NLEVS+1-TRINDX(LIST(L)))                       ADB2F404.1655   
         ENDDO                                                             ADB2F404.1656   
      ENDIF                                                                ADB2F404.1657   
!                                                                          SWRAD3A.929    
!                                                                          SWRAD3A.930    
!     UPWARD FLUX AT THE TROPOPAUSE:                                       ADB2F404.1658   
!                                                                          ADB2F404.1659   
      IF (L_UP_FLUX_TROP) THEN                                             ADB2F404.1660   
         CALL R2_ZERO_1D(N_PROFILE, UP_FLUX_TROP)                          ADB1F405.973    
         DO L=1, NLIT                                                      ADB1F405.974    
            UP_FLUX_TROP(LIST(L))                                          ADB1F405.975    
     &         =FLUX_UP(L, NLEVS+1-TRINDX(LIST(L)))                        ADB1F405.976    
         ENDDO                                                             ADB1F405.977    
      ENDIF                                                                ADB2F404.1685   
!                                                                          ADB2F404.1686   
!                                                                          ADB2F404.1687   
!                                                                          ADB2F404.1688   
!                                                                          ADB2F404.1689   
!                                                                          ADB2F404.1690   
!     FINAL PROCESSING OF OUTPUT FIELDS                                    SWRAD3A.931    
!                                                                          SWRAD3A.932    
!     CONVERT THE FLUXES TO INCREMENTS.                                    SWRAD3A.933    
      DO I=NLEVS, 1, -1                                                    SWRAD3A.934    
!                                                                          SWRAD3A.935    
         DACON=(AB(I)-AB(I+1))*CPBYG/PTS                                   SWRAD3A.936    
         DBCON=(BB(I)-BB(I+1))*CPBYG/PTS                                   SWRAD3A.937    
         DO L=1, N_PROFILE                                                 SWRAD3A.938    
            SWOUT(L, I+1)=(SWOUT(L, I+1)-SWOUT(L, I))                      SWRAD3A.939    
     &         /(DACON+PSTAR(L)*DBCON)                                     SWRAD3A.940    
         ENDDO                                                             SWRAD3A.941    
!                                                                          SWRAD3A.942    
         IF (L_CLEAR_HR) THEN                                              SWRAD3A.943    
            DO L=1, NLIT                                                   SWRAD3A.944    
               CLEAR_HR(LIST(L), I)=(FLUX_NET_CLEAR(L, NLEVS-I)            SWRAD3A.945    
     &            -FLUX_NET_CLEAR(L, NLEVS+1-I))                           SWRAD3A.946    
     &            /(PTS*(DACON+PSTAR(LIST(L))*DBCON))                      SWRAD3A.947    
            ENDDO                                                          SWRAD3A.948    
         ENDIF                                                             SWRAD3A.949    
!                                                                          SWRAD3A.950    
      ENDDO                                                                SWRAD3A.951    
!                                                                          SWRAD3A.952    
!                                                                          SWRAD3A.953    
!                                                                          SWRAD3A.954    
!     SEPARATE CONTRIBUTIONS OVER OPEN SEA.                                SWRAD3A.955    
!     SEA_FLUX_G IS NOT WEIGHTED BY THE FRACTION OF ICE.                   SWRAD3A.956    
      CALL R2_ZERO_1D(N_PROFILE, SWSEA)                                    SWRAD3A.957    
CDIR$ IVDEP                                                                SWRAD3A.958    
! Fujitsu vectorization directive                                          GRB0F405.551    
!OCL NOVREC                                                                GRB0F405.552    
      DO L=1, NLIT                                                         SWRAD3A.959    
         IF (.NOT.LAND(LIST(L))) THEN                                      SWRAD3A.960    
            SWSEA(LIST(L))=(1.0E+00-ICE_FRACTION(LIST(L)))                 SWRAD3A.961    
     &         *SEA_FLUX_G(L)                                              SWRAD3A.962    
            SWOUT(LIST(L), 1)=SWOUT(LIST(L), 1)-SWSEA(LIST(L))             SWRAD3A.963    
         ENDIF                                                             SWRAD3A.964    
      ENDDO                                                                SWRAD3A.965    
!                                                                          SWRAD3A.966    
!                                                                          SWRAD3A.967    
!     DIVIDE FLUX_BELOW_690NM_SURF BY LAND ALBEDO TO GIVE TOTAL            AJS1F401.1424   
!     DOWNWARD FLUX OF PHOTOSYTHETICALLY ACTIVE RADIATION.  ADD THIS       AJS1F401.1425   
!     TO THE SWOUT ARRAY AS AN EXTRA 'LEVEL' TO ENABLE USE IN NON-         AJS1F401.1426   
!     RADIATION TIMESTEPS.                                                 AJS1F401.1427   
      IF (L_FLUX_BELOW_690NM_SURF) THEN                                    AJS1F401.1428   
        DO L=1, N_PROFILE                                                  AJS1F401.1429   
           SWOUT(L, NLEVS+2)=FLUX_BELOW_690NM_SURF(L) /                    AJS1F401.1430   
     &        (1 - LAND_ICE_ALBEDO(L))                                     AJS1F401.1431   
        ENDDO                                                              AJS1F401.1432   
      ELSE                                                                 AJS1F401.1433   
        DO L=1, N_PROFILE                                                  AJS1F401.1434   
           SWOUT(L, NLEVS+2)=0.0                                           AJS1F401.1435   
        ENDDO                                                              AJS1F401.1436   
      ENDIF                                                                AJS1F401.1437   
!                                                                          AJS1F401.1438   
!                                                                          AJS1F401.1439   
!     DIVIDE BY COSINE OF SOLAR ZENITH ANGLE TO PROVIDE VALUES FOR         SWRAD3A.968    
!     UPPER ROUTINES. THIS APPLIES ONLY TO SWOUT. THE MACHINE TOLERANCE    SWRAD3A.969    
!     IS ADDED TO MAINTAIN CONDITIONING.                                   SWRAD3A.970    
      DO I=1, NLEVS+2                                                      AJS1F401.1440   
         DO L=1, N_PROFILE                                                 SWRAD3A.972    
            SWOUT(L, I)=SWOUT(L, I)/(COSZIN(L)*LIT(L)+TOL_MACHINE)         ADB1F401.1114   
         ENDDO                                                             SWRAD3A.974    
      ENDDO                                                                SWRAD3A.975    
!                                                                          SWRAD3A.976    
!                                                                          SWRAD3A.977    
!                                                                          SWRAD3A.978    
      RETURN                                                               SWRAD3A.979    
      END                                                                  SWRAD3A.980    
!+ Subroutine to set surface fields.                                       SWRAD3A.981    
!                                                                          SWRAD3A.982    
! Purpose:                                                                 SWRAD3A.983    
!   The albedos and emissivity of the surface are set.                     SWRAD3A.984    
!                                                                          SWRAD3A.985    
! Method:                                                                  SWRAD3A.986    
!   Straightforward. Though the arrays passed to the code may depend       SWRAD3A.987    
!   on the spectral band, the input arrays have no spectral dependence.    SWRAD3A.988    
!                                                                          SWRAD3A.989    
! Current Owner of Code: J. M. Edwards                                     SWRAD3A.990    
!                                                                          SWRAD3A.991    
! History:                                                                 SWRAD3A.992    
!       Version         Date                    Comment                    SWRAD3A.993    
!       4.0             27-07-95                Original Code              SWRAD3A.994    
!                                               (J. M. Edwards)            SWRAD3A.995    
!                                                                          SWRAD3A.996    
! Description of Code:                                                     SWRAD3A.997    
!   FORTRAN 77  with extensions listed in documentation.                   SWRAD3A.998    
!                                                                          SWRAD3A.999    
!- ---------------------------------------------------------------------   SWRAD3A.1000   

      SUBROUTINE R2_SET_SURFACE_FIELD_SW(                                   1SWRAD3A.1001   
     &     N_BAND                                                          SWRAD3A.1002   
     &   , NLIT, LIST                                                      SWRAD3A.1003   
     &   , I_SURFACE, I_SPEC_SURFACE, L_SURFACE                            SWRAD3A.1004   
     &   , L_MICROPHYSICS, L_SNOW_ALBEDO, SAL_DIM                          ARE2F404.273    
     &   , LAND, OPEN_SEA_ALBEDO, LAND_ICE_ALBEDO, ICE_FRACTION            SWRAD3A.1006   
     &   , SAL_VIS, SAL_NIR, WEIGHT_690NM                                  ARE2F404.274    
     &   , EMISSIVITY_FIELD, ALBEDO_FIELD_DIR, ALBEDO_FIELD_DIFF           SWRAD3A.1007   
     &   , LAND_G, ALBEDO_SEA_DIFF, ALBEDO_SEA_DIR                         SWRAD3A.1008   
     &   , NPD_FIELD, NPD_PROFILE, NPD_BAND_SW, NPD_SURFACE_SW             ADB2F404.1691   
     &   )                                                                 SWRAD3A.1010   
!                                                                          SWRAD3A.1011   
!                                                                          SWRAD3A.1012   
!                                                                          SWRAD3A.1013   
      IMPLICIT NONE                                                        SWRAD3A.1014   
!                                                                          SWRAD3A.1015   
!                                                                          SWRAD3A.1016   
!     COMDECKS INCLUDED                                                    SWRAD3A.1017   
*CALL SRFSP3A                                                              SWRAD3A.1018   
!                                                                          SWRAD3A.1019   
!     DUMMY VARIABLES:                                                     SWRAD3A.1020   
!                                                                          SWRAD3A.1021   
!     DIMENSIONS OF ARRAYS:                                                SWRAD3A.1022   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1023   
     &     NPD_FIELD                                                       SWRAD3A.1024   
!             SIZE OF INPUT FIELDS                                         SWRAD3A.1025   
     &   , NPD_PROFILE                                                     SWRAD3A.1026   
!             MAXIMUM NUMBER OF ATMOSPHERIC PROFILES                       SWRAD3A.1027   
     &   , NPD_BAND_SW                                                     ADB2F404.1692   
!             MAXIMUM NUMBER OF SPECTRAL BANDS                             SWRAD3A.1029   
     &   , NPD_SURFACE_SW                                                  ADB2F404.1693   
!             MAXIMUM NUMBER OF SURFACES                                   SWRAD3A.1031   
!                                                                          SWRAD3A.1032   
!     ACTUAL SIZES USED:                                                   SWRAD3A.1033   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1034   
     &     N_BAND                                                          SWRAD3A.1035   
!             NUMBER OF SPECTRAL BANDS                                     SWRAD3A.1036   
     &   , SAL_DIM                                                         ARE2F404.275    
!             DIMENSION OF SAL_VIS AND SAL_NIR                             ARE2F404.276    
!                                                                          SWRAD3A.1037   
!     LIT POINTS:                                                          SWRAD3A.1038   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1039   
     &     NLIT                                                            SWRAD3A.1040   
!             NUMBER OF LIT POINTS                                         SWRAD3A.1041   
     &   , LIST(NPD_FIELD)                                                 SWRAD3A.1042   
!             LIST OF SUNLIT POINTS                                        SWRAD3A.1043   
!                                                                          SWRAD3A.1044   
!     PROPERTIES OF SURFACES                                               SWRAD3A.1045   
      INTEGER   !, INTENT(OUT)                                             SWRAD3A.1046   
     &     I_SURFACE(NPD_PROFILE)                                          SWRAD3A.1047   
!             TYPES OF SURFACES                                            SWRAD3A.1048   
     &   , I_SPEC_SURFACE(NPD_SURFACE_SW)                                  ADB2F404.1694   
      LOGICAL   !, INTENT(OUT)                                             SWRAD3A.1050   
     &     L_SURFACE(NPD_SURFACE_SW)                                       ADB2F404.1695   
!             FLAGS FOR TYPES OF SURFACES                                  SWRAD3A.1052   
!                                                                          SWRAD3A.1053   
!     PHYSICAL PROPERTIES OF SURFACES:                                     SWRAD3A.1054   
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.1055   
     &     LAND(NPD_FIELD)                                                 SWRAD3A.1056   
!             LAND MASK                                                    SWRAD3A.1057   
      REAL      !, INTENT(IN)                                              SWRAD3A.1058   
     &     OPEN_SEA_ALBEDO(NPD_FIELD, 2)                                   SWRAD3A.1059   
!             DIFFUSE ALBEDO FIELD                                         SWRAD3A.1060   
     &   , LAND_ICE_ALBEDO(NPD_FIELD)                                      SWRAD3A.1061   
!             DIRECT ALBEDO FIELD                                          SWRAD3A.1062   
     &   , SAL_VIS(SAL_DIM,2)                                              ARE2F404.277    
!             VISIBLE ALBEDO FIELD                                         ARE2F404.278    
     &   , SAL_NIR(SAL_DIM,2)                                              ARE2F404.279    
!             NEAR-IR ALBEDO FIELD                                         ARE2F404.280    
     &   , WEIGHT_690NM(NPD_BAND_SW)                                       ARE2F404.281    
!             WEIGHTS FOR EACH BAND FOR REGION BELOW 690 NM                ARE2F404.282    
     &   , ICE_FRACTION(NPD_FIELD)                                         SWRAD3A.1063   
!             FRACTION OF SEA ICE                                          SWRAD3A.1064   
!                                                                          SWRAD3A.1065   
!     MISCELLANEOUS INPUTS                                                 SWRAD3A.1066   
      LOGICAL   !, INTENT(IN)                                              SWRAD3A.1067   
     &     L_MICROPHYSICS                                                  SWRAD3A.1068   
!             FLAG TO CALCULATE MICROPHYSICS                               SWRAD3A.1069   
     &   , L_SNOW_ALBEDO                                                   ARE2F404.283    
!             FLAG FOR PROGNOSTIC SNOW ALBEDO                              ARE2F404.284    
!                                                                          SWRAD3A.1070   
!                                                                          SWRAD3A.1071   
!     SURFACE PROPERTIES SET.                                              SWRAD3A.1072   
      REAL      !, INTENT(OUT)                                             SWRAD3A.1073   
     &     EMISSIVITY_FIELD(NPD_PROFILE, NPD_BAND_SW)                      ADB2F404.1696   
!             EMISSIVITIES OF SURFACES                                     SWRAD3A.1075   
     &   , ALBEDO_FIELD_DIFF(NPD_PROFILE, NPD_BAND_SW)                     ADB2F404.1697   
!             DIFFUSE ALBEDO OF SURFACE                                    SWRAD3A.1077   
     &   , ALBEDO_FIELD_DIR(NPD_PROFILE, NPD_BAND_SW)                      ADB2F404.1698   
!             DIRECT ALBEDO OF SURFACE                                     SWRAD3A.1079   
!                                                                          SWRAD3A.1080   
!     GATHERED SURFACE FIELDS                                              SWRAD3A.1081   
      LOGICAL   !, INTENT(OUT)                                             SWRAD3A.1082   
     &     LAND_G(NPD_PROFILE)                                             SWRAD3A.1083   
!             GATHERED LAND FLAGS                                          SWRAD3A.1084   
      REAL      !, INTENT(OUT)                                             SWRAD3A.1085   
     &     ALBEDO_SEA_DIFF(NPD_PROFILE, NPD_BAND_SW)                       ADB2F404.1699   
!             DIFFUSE ALBEDO OF OPEN SEA                                   SWRAD3A.1087   
     &   , ALBEDO_SEA_DIR(NPD_PROFILE, NPD_BAND_SW)                        ADB2F404.1700   
!             DIRECT ALBEDO OF OPEN SEA                                    SWRAD3A.1089   
!                                                                          SWRAD3A.1090   
!                                                                          SWRAD3A.1091   
!     LOCAL VARIABLES.                                                     SWRAD3A.1092   
      INTEGER                                                              SWRAD3A.1093   
     &     I                                                               SWRAD3A.1094   
!             LOOP VARIABLE                                                SWRAD3A.1095   
     &   , L                                                               SWRAD3A.1096   
!             LOOP VARIABLE                                                SWRAD3A.1097   
!                                                                          SWRAD3A.1098   
!                                                                          SWRAD3A.1099   
!                                                                          SWRAD3A.1100   
!     OVERRIDE ANY SURFACE PROERTIES READ IN FROM THE SPECTRAL FILE.       SWRAD3A.1101   
      DO L=1, NLIT                                                         SWRAD3A.1102   
         I_SURFACE(L)=1                                                    SWRAD3A.1103   
      ENDDO                                                                SWRAD3A.1104   
      L_SURFACE(1)=.TRUE.                                                  SWRAD3A.1105   
      I_SPEC_SURFACE(1)=IP_SURFACE_INTERNAL                                SWRAD3A.1106   
!                                                                          SWRAD3A.1107   
!                                                                          SWRAD3A.1108   
      IF (L_MICROPHYSICS) THEN                                             SWRAD3A.1109   
!        GATHER THE ARRAY OF SURFACE FLAGS IF THE MICROPHYSICS             SWRAD3A.1110   
!        IS PARAMETRIZED.                                                  SWRAD3A.1111   
         DO L=1, NLIT                                                      SWRAD3A.1112   
            LAND_G(L)=LAND(LIST(L))                                        SWRAD3A.1113   
         ENDDO                                                             SWRAD3A.1114   
      ENDIF                                                                SWRAD3A.1115   
!                                                                          SWRAD3A.1116   
!                                                                          SWRAD3A.1117   
!     SET THE ALBEDO FIELDS: AN AVERAGE ALBEDO IS REQUIRED OVER WHERE      SWRAD3A.1118   
!     THERE IS SEA-ICE. SEPARATE ALBEDOS ARE PROVIDED FOR LAND/ICE         SWRAD3A.1119   
!     OR FOR OPEN SEA. BAND-DEPENDENT COPIES OF THE ALBEDOS MUST BE        SWRAD3A.1120   
!     MADE FOR CALCULATING COUPLING FLUXES.                                SWRAD3A.1121   
!                                                                          SWRAD3A.1122   
      DO I=1, N_BAND                                                       SWRAD3A.1123   
         DO L=1, NLIT                                                      SWRAD3A.1124   
!                                                                          SWRAD3A.1125   
            EMISSIVITY_FIELD(L, I)=0.0E+00                                 SWRAD3A.1126   
!                                                                          SWRAD3A.1127   
            IF (.NOT.LAND(LIST(L))) THEN                                   SWRAD3A.1128   
               ALBEDO_FIELD_DIFF(L, I)                                     SWRAD3A.1129   
     &            =LAND_ICE_ALBEDO(LIST(L))*ICE_FRACTION(LIST(L))          SWRAD3A.1130   
     &            +OPEN_SEA_ALBEDO(LIST(L), 2)                             SWRAD3A.1131   
     &            *(1.0E+00-ICE_FRACTION(LIST(L)))                         SWRAD3A.1132   
               ALBEDO_FIELD_DIR(L, I)                                      SWRAD3A.1133   
     &            =LAND_ICE_ALBEDO(LIST(L))*ICE_FRACTION(LIST(L))          SWRAD3A.1134   
     &            +OPEN_SEA_ALBEDO(LIST(L), 1)                             SWRAD3A.1135   
     &            *(1.0E+00-ICE_FRACTION(LIST(L)))                         SWRAD3A.1136   
               ALBEDO_SEA_DIR(L, I)=OPEN_SEA_ALBEDO(LIST(L), 1)            SWRAD3A.1137   
               ALBEDO_SEA_DIFF(L, I)=OPEN_SEA_ALBEDO(LIST(L), 2)           SWRAD3A.1138   
            ELSE                                                           SWRAD3A.1139   
               IF ( L_SNOW_ALBEDO ) THEN                                   ARE2F404.285    
                 ALBEDO_FIELD_DIFF(L,I) =                                  ARE2F404.286    
     &                                WEIGHT_690NM(I)*SAL_VIS(LIST(L),2)   ARE2F404.287    
     &                       + (1. - WEIGHT_690NM(I))*SAL_NIR(LIST(L),2)   ARE2F404.288    
                 ALBEDO_FIELD_DIR(L,I) =                                   ARE2F404.289    
     &                                WEIGHT_690NM(I)*SAL_VIS(LIST(L),1)   ARE2F404.290    
     &                       + (1. - WEIGHT_690NM(I))*SAL_NIR(LIST(L),1)   ARE2F404.291    
               ELSE                                                        ARE2F404.292    
               ALBEDO_FIELD_DIFF(L, I)=LAND_ICE_ALBEDO(LIST(L))            SWRAD3A.1140   
               ALBEDO_FIELD_DIR(L, I)=LAND_ICE_ALBEDO(LIST(L))             SWRAD3A.1141   
               ENDIF                                                       ARE2F404.293    
               ALBEDO_SEA_DIR(L, I)=0.0E+00                                SWRAD3A.1142   
               ALBEDO_SEA_DIFF(L, I)=0.0E+00                               SWRAD3A.1143   
            ENDIF                                                          SWRAD3A.1144   
!                                                                          SWRAD3A.1145   
         ENDDO                                                             SWRAD3A.1146   
      ENDDO                                                                SWRAD3A.1147   
!                                                                          SWRAD3A.1148   
!                                                                          SWRAD3A.1149   
!                                                                          SWRAD3A.1150   
      RETURN                                                               SWRAD3A.1151   
      END                                                                  SWRAD3A.1152   
!+ Subroutine to calculate weights for the flux below 690 nm.              SWRAD3A.1153   
!                                                                          SWRAD3A.1154   
! Purpose:                                                                 SWRAD3A.1155   
!   Weights to calculate the flux below 690 nm are set.                    SWRAD3A.1156   
!                                                                          SWRAD3A.1157   
! Method:                                                                  SWRAD3A.1158   
!   Straightforward. The flux is assumed to be linearly distributed        SWRAD3A.1159   
!   across bands.                                                          SWRAD3A.1160   
!                                                                          SWRAD3A.1161   
! Current Owner of Code: J. M. Edwards                                     SWRAD3A.1162   
!                                                                          SWRAD3A.1163   
! History:                                                                 SWRAD3A.1164   
!       Version         Date                    Comment                    SWRAD3A.1165   
!       4.0             27-07-95                Original Code              SWRAD3A.1166   
!                                               (J. M. Edwards)            SWRAD3A.1167   
!                                                                          SWRAD3A.1168   
! Description of Code:                                                     SWRAD3A.1169   
!   FORTRAN 77  with extensions listed in documentation.                   SWRAD3A.1170   
!                                                                          SWRAD3A.1171   
!- ---------------------------------------------------------------------   SWRAD3A.1172   

      SUBROUTINE R2_SET_690NM_WEIGHT(N_BAND                                 1SWRAD3A.1173   
     &   , L_PRESENT                                                       ADB1F401.1115   
     &   , N_BAND_EXCLUDE, INDEX_EXCLUDE                                   SWRAD3A.1174   
     &   , WAVE_LENGTH_SHORT, WAVE_LENGTH_LONG                             SWRAD3A.1175   
     &   , WEIGHT_690NM                                                    SWRAD3A.1176   
     &   , NPD_BAND_SW, NPD_EXCLUDE_SW, NPD_TYPE_SW                        ADB2F404.1701   
     &   )                                                                 SWRAD3A.1178   
!                                                                          SWRAD3A.1179   
!                                                                          SWRAD3A.1180   
!                                                                          SWRAD3A.1181   
      IMPLICIT NONE                                                        SWRAD3A.1182   
!                                                                          SWRAD3A.1183   
!                                                                          SWRAD3A.1184   
!     DUMMY VARIABLES:                                                     SWRAD3A.1185   
!                                                                          SWRAD3A.1186   
!     DIMENSIONS OF ARRAYS:                                                SWRAD3A.1187   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1188   
     &     NPD_BAND_SW                                                     ADB2F404.1702   
!             MAXIMUM NUMBER OF SPECTRAL BANDS                             SWRAD3A.1190   
     &   , NPD_EXCLUDE_SW                                                  ADB2F404.1703   
!             MAXIMUM NUMBER OF EXCLUDED REGIONS                           SWRAD3A.1192   
     &   , NPD_TYPE_SW                                                     ADB2F404.1704   
!             MAXIMUM NUMBER OF TYPES OF SPECTRAL DATA                     ADB1F401.1118   
!                                                                          SWRAD3A.1193   
!     ACTUAL SIZES USED:                                                   SWRAD3A.1194   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1195   
     &     N_BAND                                                          SWRAD3A.1196   
!             NUMBER OF SPECTRAL BANDS                                     SWRAD3A.1197   
     &   , N_BAND_EXCLUDE(NPD_BAND_SW)                                     ADB2F404.1705   
!             NUMBER OF EXCLUDED REGIONS IN BANDS                          SWRAD3A.1199   
     &   , INDEX_EXCLUDE(NPD_EXCLUDE_SW, NPD_BAND_SW)                      ADB2F404.1706   
!             INDICES OF EXCLUDED REGIONS IN BANDS                         SWRAD3A.1201   
!                                                                          SWRAD3A.1202   
      LOGICAL   !, INTENT(IN)                                              ADB1F401.1119   
     &     L_PRESENT(0: NPD_TYPE_SW)                                       ADB2F404.1707   
!             FLAG FOR TYPES OF SPECTRAL DATA PRESENT                      ADB1F401.1121   
!                                                                          ADB1F402.731    
      REAL      !, INTENT(IN)                                              SWRAD3A.1203   
     &     WAVE_LENGTH_SHORT(NPD_BAND_SW)                                  ADB2F404.1708   
!             SHORT WAVELENGTH LIMITS OF BANDS                             SWRAD3A.1205   
     &   , WAVE_LENGTH_LONG(NPD_BAND_SW)                                   ADB2F404.1709   
!             LONG WAVELENGTH LIMITS OF BANDS                              SWRAD3A.1207   
!                                                                          SWRAD3A.1208   
!                                                                          SWRAD3A.1209   
!     WEIGHTS SET.                                                         SWRAD3A.1210   
      REAL      !, INTENT(OUT)                                             SWRAD3A.1211   
     &     WEIGHT_690NM(NPD_BAND_SW)                                       ADB2F404.1710   
!             WEIGHTS APPLYING TO EACH BAND                                SWRAD3A.1213   
!                                                                          SWRAD3A.1214   
!     LOCAL VARIABLES.                                                     SWRAD3A.1215   
      INTEGER                                                              SWRAD3A.1216   
     &     I                                                               SWRAD3A.1217   
!             LOOP VARIABLE                                                SWRAD3A.1218   
     &   , J                                                               SWRAD3A.1219   
!             LOOP VARIABLE                                                SWRAD3A.1220   
      REAL                                                                 SWRAD3A.1221   
     &     TOTAL_ENERGY_RANGE                                              SWRAD3A.1222   
!             TOTAL RANGE OF ENERGIES COVERED BY BAND                      SWRAD3A.1223   
     &   , ENERGY_RANGE_BELOW_690NM                                        SWRAD3A.1224   
!             RANGE OF ENERGIES IN BAND BELOW 690 NM                       SWRAD3A.1225   
!                                                                          SWRAD3A.1226   
!                                                                          SWRAD3A.1227   
!                                                                          SWRAD3A.1228   
      DO I=1, N_BAND                                                       SWRAD3A.1229   
         IF (WAVE_LENGTH_LONG(I).LT.6.9E-07) THEN                          SWRAD3A.1230   
            WEIGHT_690NM(I)=1.0E+00                                        SWRAD3A.1231   
         ELSE IF (WAVE_LENGTH_SHORT(I).GT.6.9E-07) THEN                    SWRAD3A.1232   
            WEIGHT_690NM(I)=0.0E+00                                        SWRAD3A.1233   
         ELSE                                                              SWRAD3A.1234   
!                                                                          SWRAD3A.1235   
            ENERGY_RANGE_BELOW_690NM=1.0E+00/WAVE_LENGTH_SHORT(I)          SWRAD3A.1236   
     &         -1.0E+00/6.9E-07                                            SWRAD3A.1237   
            TOTAL_ENERGY_RANGE=1.0E+00/WAVE_LENGTH_SHORT(I)                SWRAD3A.1238   
     &         -1.0E+00/WAVE_LENGTH_LONG(I)                                SWRAD3A.1239   
            IF (L_PRESENT(14)) THEN                                        ADB1F401.1122   
!              REMOVE CONTRIBUTIONS FROM EXCLUDED BANDS.                   ADB1F402.732    
               DO J=1, N_BAND_EXCLUDE(I)                                   ADB1F402.733    
                  IF (WAVE_LENGTH_LONG(INDEX_EXCLUDE(J, I)).LT.            ADB1F402.734    
     &               6.9E-07) THEN                                         ADB1F402.735    
                     ENERGY_RANGE_BELOW_690NM=ENERGY_RANGE_BELOW_690NM     ADB1F402.736    
     &                  -1.0E+00/WAVE_LENGTH_SHORT(INDEX_EXCLUDE(J, I))    ADB1F402.737    
     &                  +1.0E+00/WAVE_LENGTH_LONG(INDEX_EXCLUDE(J, I))     ADB1F402.738    
                  ELSE IF (WAVE_LENGTH_SHORT(INDEX_EXCLUDE(J, I)).LT.      ADB1F402.739    
     &               6.9E-07) THEN                                         ADB1F402.740    
                     ENERGY_RANGE_BELOW_690NM=ENERGY_RANGE_BELOW_690NM     ADB1F402.741    
     &                  -1.0E+00/WAVE_LENGTH_SHORT(INDEX_EXCLUDE(J, I))    ADB1F402.742    
     &                  +1.0E+00/6.9E-07                                   ADB1F402.743    
                  ENDIF                                                    ADB1F402.744    
                  TOTAL_ENERGY_RANGE=TOTAL_ENERGY_RANGE                    ADB1F402.745    
     &               -1.0E+00/WAVE_LENGTH_SHORT(INDEX_EXCLUDE(J, I))       SWRAD3A.1245   
     &               +1.0E+00/WAVE_LENGTH_LONG(INDEX_EXCLUDE(J, I))        SWRAD3A.1246   
               ENDDO                                                       ADB1F402.746    
            ENDIF                                                          ADB1F401.1123   
!                                                                          SWRAD3A.1257   
            WEIGHT_690NM(I)=ENERGY_RANGE_BELOW_690NM/TOTAL_ENERGY_RANGE    SWRAD3A.1258   
!                                                                          SWRAD3A.1259   
         ENDIF                                                             SWRAD3A.1260   
!                                                                          SWRAD3A.1261   
      ENDDO                                                                SWRAD3A.1262   
!                                                                          SWRAD3A.1263   
!                                                                          SWRAD3A.1264   
!                                                                          SWRAD3A.1265   
      RETURN                                                               SWRAD3A.1266   
      END                                                                  SWRAD3A.1267   
!+ Subroutine to initialize diagnostics for MRF/UMIST parametrization.     SWRAD3A.1268   
!                                                                          SWRAD3A.1269   
! Purpose:                                                                 SWRAD3A.1270   
!   Checks are made for consistency of the diagnostic requests and the     SWRAD3A.1271   
!   arrays are filled with zeros at all points.                            SWRAD3A.1272   
!                                                                          SWRAD3A.1273   
! Method:                                                                  SWRAD3A.1274   
!   Straightforward.                                                       SWRAD3A.1275   
!                                                                          SWRAD3A.1276   
! Current Owner of Code: J. M. Edwards                                     SWRAD3A.1277   
!                                                                          SWRAD3A.1278   
! History:                                                                 SWRAD3A.1279   
!       Version         Date                    Comment                    SWRAD3A.1280   
!       4.0             27-07-95                Original Code              SWRAD3A.1281   
!                                               (J. M. Edwards)            SWRAD3A.1282   
!                                                                          SWRAD3A.1283   
! Description of Code:                                                     SWRAD3A.1284   
!   FORTRAN 77  with extensions listed in documentation.                   SWRAD3A.1285   
!                                                                          SWRAD3A.1286   
!- ---------------------------------------------------------------------   SWRAD3A.1287   

      SUBROUTINE R2_INIT_MRF_UMIST_DIAG(IERR                                1,9SWRAD3A.1288   
     &   , RE_CONV, RE_CONV_FLAG, RE_STRAT, RE_STRAT_FLAG                  SWRAD3A.1289   
     &   , WGT_CONV, WGT_CONV_FLAG, WGT_STRAT, WGT_STRAT_FLAG              SWRAD3A.1290   
     &   , LWP_STRAT, LWP_STRAT_FLAG                                       SWRAD3A.1291   
     &   , NTOT_DIAG, NTOT_DIAG_FLAG                                       AAJ3F404.57     
     &   , STRAT_LWC_DIAG, STRAT_LWC_DIAG_FLAG                             AAJ3F404.58     
     &   , SO4_CCN_DIAG, SO4_CCN_DIAG_FLAG                                 AAJ3F404.59     
     &   , COND_SAMP_WGT, COND_SAMP_WGT_FLAG                               AAJ3F404.60     
     &   , NPD_FIELD, N_PROFILE, NCLDS                                     SWRAD3A.1292   
     &   )                                                                 SWRAD3A.1293   
!                                                                          SWRAD3A.1294   
!                                                                          SWRAD3A.1295   
!                                                                          SWRAD3A.1296   
      IMPLICIT NONE                                                        SWRAD3A.1297   
!                                                                          SWRAD3A.1298   
!                                                                          SWRAD3A.1299   
!     COMDECKS INCLUDED                                                    SWRAD3A.1300   
*CALL ERROR3A                                                              SWRAD3A.1301   
*CALL STDIO3A                                                              SWRAD3A.1302   
!                                                                          SWRAD3A.1303   
!     DUMMY VARIABLES:                                                     SWRAD3A.1304   
!                                                                          SWRAD3A.1305   
!     ERROR FLAG                                                           SWRAD3A.1306   
      INTEGER   !, INTENT(OUT)                                             SWRAD3A.1307   
     &     IERR                                                            SWRAD3A.1308   
!             ERROR FLAG                                                   SWRAD3A.1309   
!                                                                          SWRAD3A.1310   
!     DIMENSIONS OF ARRAYS:                                                SWRAD3A.1311   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1312   
     &     NPD_FIELD                                                       SWRAD3A.1313   
!             ACTUAL SIZE OF INPUT ARRAY                                   SWRAD3A.1314   
!                                                                          SWRAD3A.1315   
!     SIZES USED:                                                          SWRAD3A.1316   
      INTEGER   !, INTENT(IN)                                              SWRAD3A.1317   
     &     N_PROFILE                                                       SWRAD3A.1318   
!             NUMBER OF PROFILES                                           SWRAD3A.1319   
     &   , NCLDS                                                           SWRAD3A.1320   
!             NUMBER OF CLOUDY LEVELS                                      SWRAD3A.1321   
                                                                           SWRAD3A.1322   
!     DIAGNOSTICS FOR THE MRF/UMIST PARAMETRIZATION                        SWRAD3A.1323   
!                                                                          SWRAD3A.1324   
      LOGICAL                                                              SWRAD3A.1325   
     &     RE_CONV_FLAG                                                    SWRAD3A.1326   
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD        SWRAD3A.1327   
     &   , RE_STRAT_FLAG                                                   SWRAD3A.1328   
!             DIAGNOSE EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD        SWRAD3A.1329   
     &   , WGT_CONV_FLAG                                                   SWRAD3A.1330   
!             DIAGNOSE WEIGHT FOR CONVECTIVE CLOUD                         SWRAD3A.1331   
     &   , WGT_STRAT_FLAG                                                  SWRAD3A.1332   
!             DIAGNOSE WEIGHT FOR STRATIFORM CLOUD                         SWRAD3A.1333   
     &   , LWP_STRAT_FLAG                                                  SWRAD3A.1334   
!             DIAGNOSE LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD       SWRAD3A.1335   
     &   , NTOT_DIAG_FLAG                                                  AAJ3F404.61     
!             DIAGNOSE DROPLET CONCENTRATION*WEIGHT                        AAJ3F404.62     
     &   , STRAT_LWC_DIAG_FLAG                                             AAJ3F404.63     
!             DIAGNOSE STRATIFORM LWC*WEIGHT                               AAJ3F404.64     
     &   , SO4_CCN_DIAG_FLAG                                               AAJ3F404.65     
!             DIAGNOSE SO4 CCN MASS CONC*COND. SAMP. WEIGHT                AAJ3F404.66     
     &   , COND_SAMP_WGT_FLAG                                              AAJ3F404.67     
!             DIAGNOSE CONDITIONAL SAMPLING WEIGHT                         AAJ3F404.68     
!                                                                          SWRAD3A.1336   
      REAL                                                                 SWRAD3A.1337   
     &     RE_CONV(NPD_FIELD, NCLDS)                                       SWRAD3A.1338   
!             EFFECTIVE RADIUS*WEIGHT FOR CONVECTIVE CLOUD                 SWRAD3A.1339   
     &   , RE_STRAT(NPD_FIELD, NCLDS)                                      SWRAD3A.1340   
!             EFFECTIVE RADIUS*WEIGHT FOR STRATIFORM CLOUD                 SWRAD3A.1341   
     &   , WGT_CONV(NPD_FIELD, NCLDS)                                      SWRAD3A.1342   
!             WEIGHT FOR CONVECTIVE CLOUD                                  SWRAD3A.1343   
     &   , WGT_STRAT(NPD_FIELD, NCLDS)                                     SWRAD3A.1344   
!             WEIGHT FOR STRATIFORM CLOUD                                  SWRAD3A.1345   
     &   , LWP_STRAT(NPD_FIELD, NCLDS)                                     SWRAD3A.1346   
!             LIQUID WATER PATH*WEIGHT FOR STRATIFORM CLOUD                SWRAD3A.1347   
     &   , NTOT_DIAG(NPD_FIELD, NCLDS)                                     AAJ3F404.69     
!             DROPLET CONCENTRATION*WEIGHT                                 AAJ3F404.70     
     &   , STRAT_LWC_DIAG(NPD_FIELD, NCLDS)                                AAJ3F404.71     
!             STRATIFORM LWC*WEIGHT                                        AAJ3F404.72     
     &   , SO4_CCN_DIAG(NPD_FIELD, NCLDS)                                  AAJ3F404.73     
!             SO4 CCN MASS CONC*COND. SAMP. WEIGHT                         AAJ3F404.74     
     &   , COND_SAMP_WGT(NPD_FIELD, NCLDS)                                 AAJ3F404.75     
!             CONDITIONAL SAMPLING WEIGHT                                  AAJ3F404.76     
!                                                                          SWRAD3A.1348   
!                                                                          SWRAD3A.1349   
!     LOCAL VARIABLES.                                                     SWRAD3A.1350   
      INTEGER                                                              SWRAD3A.1351   
     &     I                                                               SWRAD3A.1352   
!             LOOP VARIABLE                                                SWRAD3A.1353   
!                                                                          SWRAD3A.1354   
!                                                                          SWRAD3A.1355   
!                                                                          SWRAD3A.1356   
      IF (RE_CONV_FLAG) THEN                                               SWRAD3A.1357   
         IF (.NOT.WGT_CONV_FLAG) THEN                                      SWRAD3A.1358   
            WRITE(IU_ERR, '(/A, /A)')                                      SWRAD3A.1359   
     &         '*** ERROR: MICROPHYSICAL DIAGNOSTICS FOR CONVECTIVE'       SWRAD3A.1360   
     &         , 'CLOUD MUST INCLUDE THE CLOUD WEIGHTING.'                 SWRAD3A.1361   
            IERR=I_ERR_FATAL                                               SWRAD3A.1362   
            RETURN                                                         SWRAD3A.1363   
         ENDIF                                                             SWRAD3A.1364   
      ENDIF                                                                SWRAD3A.1365   
!                                                                          SWRAD3A.1366   
      IF ( (RE_STRAT_FLAG).OR.(LWP_STRAT_FLAG) ) THEN                      SWRAD3A.1367   
         IF (.NOT.WGT_STRAT_FLAG) THEN                                     SWRAD3A.1368   
            WRITE(IU_ERR, '(/A, /A)')                                      SWRAD3A.1369   
     &         '*** ERROR: MICROPHYSICAL DIAGNOSTICS FOR STRATIFORM'       SWRAD3A.1370   
     &         , 'CLOUD MUST INCLUDE THE CLOUD WEIGHTING.'                 SWRAD3A.1371   
            IERR=I_ERR_FATAL                                               SWRAD3A.1372   
            RETURN                                                         SWRAD3A.1373   
         ENDIF                                                             SWRAD3A.1374   
      ENDIF                                                                SWRAD3A.1375   
!                                                                          SWRAD3A.1376   
!                                                                          SWRAD3A.1377   
      DO I=1, NCLDS                                                        SWRAD3A.1378   
         IF (WGT_CONV_FLAG)                                                SWRAD3A.1379   
     &      CALL R2_ZERO_1D(N_PROFILE, WGT_CONV(1, I))                     SWRAD3A.1380   
         IF (RE_CONV_FLAG)                                                 SWRAD3A.1381   
     &      CALL R2_ZERO_1D(N_PROFILE, RE_CONV(1, I))                      SWRAD3A.1382   
         IF (WGT_STRAT_FLAG)                                               SWRAD3A.1383   
     &      CALL R2_ZERO_1D(N_PROFILE, WGT_STRAT(1, I))                    SWRAD3A.1384   
         IF (RE_STRAT_FLAG)                                                SWRAD3A.1385   
     &      CALL R2_ZERO_1D(N_PROFILE, RE_STRAT(1, I))                     SWRAD3A.1386   
         IF (LWP_STRAT_FLAG)                                               SWRAD3A.1387   
     &      CALL R2_ZERO_1D(N_PROFILE, LWP_STRAT(1, I))                    SWRAD3A.1388   
         IF (NTOT_DIAG_FLAG)                                               AAJ3F404.77     
     &      CALL R2_ZERO_1D(N_PROFILE, NTOT_DIAG(1, I))                    AAJ3F404.78     
         IF (STRAT_LWC_DIAG_FLAG)                                          AAJ3F404.79     
     &      CALL R2_ZERO_1D(N_PROFILE, STRAT_LWC_DIAG(1, I))               AAJ3F404.80     
         IF (SO4_CCN_DIAG_FLAG)                                            AAJ3F404.81     
     &      CALL R2_ZERO_1D(N_PROFILE, SO4_CCN_DIAG(1, I))                 AAJ3F404.82     
         IF (COND_SAMP_WGT_FLAG)                                           AAJ3F404.83     
     &      CALL R2_ZERO_1D(N_PROFILE, COND_SAMP_WGT(1, I))                AAJ3F404.84     
      ENDDO                                                                SWRAD3A.1389   
!                                                                          SWRAD3A.1390   
!                                                                          SWRAD3A.1391   
!                                                                          SWRAD3A.1392   
      RETURN                                                               SWRAD3A.1393   
      END                                                                  SWRAD3A.1394   
*ENDIF DEF,A01_3A                                                          SWRAD3A.1395