*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.77     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               SBF3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13773  
C                                                                          GTS2F400.13774  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13775  
C restrictions as set forth in the contract.                               GTS2F400.13776  
C                                                                          GTS2F400.13777  
C                Meteorological Office                                     GTS2F400.13778  
C                London Road                                               GTS2F400.13779  
C                BRACKNELL                                                 GTS2F400.13780  
C                Berkshire UK                                              GTS2F400.13781  
C                RG12 2SZ                                                  GTS2F400.13782  
C                                                                          GTS2F400.13783  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13784  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13785  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13786  
C Modelling at the above address.                                          GTS2F400.13787  
C ******************************COPYRIGHT******************************    GTS2F400.13788  
C                                                                          GTS2F400.13789  
!+ Subroutine to calculate the fluxes within the band using FESFT.         SBF3A.3      
!                                                                          SBF3A.4      
! Method:                                                                  SBF3A.5      
!       The fluxes in the band including the grey processes are            SBF3A.6      
!       calculated. Effective transmissions are found for each of the      SBF3A.7      
!       gases by calculating the flux including the gas dividing           SBF3A.8      
!       these by the grey fluxes. These effective transmissions            SBF3A.9      
!       are then used to scale the grey fluxes. This is as described       SBF3A.10     
!       by Geleyn and Ritter (1992).                                       SBF3A.11     
!                                                                          SBF3A.12     
! Current Owner of Code: J. M. Edwards                                     SBF3A.13     
!                                                                          SBF3A.14     
! History:                                                                 SBF3A.15     
!       Version         Date                    Comment                    SBF3A.16     
!       4.0             27-07-95                Original Code              SBF3A.17     
!                                               (J. M. Edwards)            SBF3A.18     
!       4.1             10-06-96                Initialization of          ADB1F401.829    
!                                               partial fluxes.            ADB1F401.830    
!                                               (J. M. Edwards)            ADB1F401.831    
!       4.2             08-08-96                Code for vertically        ADB1F402.641    
!                                               coherent convective        ADB1F402.642    
!                                               cloud added.               ADB1F402.643    
!                                               (J. M. Edwards)            ADB1F402.644    
!       4.5             18-05-98                Variable for obsolete      ADB1F405.573    
!                                               solver removed.            ADB1F405.574    
!                                               (J. M. Edwards)            ADB1F405.575    
!                                                                          SBF3A.19     
! Description of Code:                                                     SBF3A.20     
!   FORTRAN 77  with extensions listed in documentation.                   SBF3A.21     
!                                                                          SBF3A.22     
!- ---------------------------------------------------------------------   SBF3A.23     

      SUBROUTINE SOLVE_BAND_FESFT(IERR                                      1,7SBF3A.24     
!                       Atmospheric Column                                 SBF3A.25     
     &   , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS                SBF3A.26     
!                       Angular Integration                                SBF3A.27     
     &   , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT            SBF3A.28     
     &   , L_RESCALE, N_ORDER_GAUSS                                        SBF3A.29     
!                       Treatment of Scattering                            SBF3A.30     
     &   , I_SCATTER_METHOD_BAND                                           SBF3A.31     
!                       Options for Solver                                 SBF3A.32     
     &   , I_SOLVER, L_NET, N_AUGMENT                                      ADB1F405.576    
!                       Gaseous Propeties                                  SBF3A.34     
     &   , I_BAND, N_GAS                                                   SBF3A.35     
     &   , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC            SBF3A.36     
     &   , K_ESFT, W_ESFT, SCALE_VECTOR                                    SBF3A.37     
     &   , P_REFERENCE, T_REFERENCE                                        SBF3A.38     
     &   , GAS_MIX_RATIO, GAS_FRAC_RESCALED                                SBF3A.39     
     &   , L_DOPPLER, DOPPLER_CORRECTION                                   SBF3A.40     
!                       Spectral Region                                    SBF3A.41     
     &   , ISOLIR                                                          SBF3A.42     
!                       Solar Properties                                   SBF3A.43     
     &   , SEC_0, SOLAR_FLUX                                               SBF3A.44     
!                       Infra-red Properties                               SBF3A.45     
     &   , PLANCK_SOURCE_TOP, PLANCK_SOURCE_BOTTOM                         SBF3A.46     
     &   , DIFF_PLANCK_BAND                                                SBF3A.47     
     &   , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2                            SBF3A.48     
!                       Surface Properties                                 SBF3A.49     
     &   , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR                         SBF3A.50     
     &   , THERMAL_GROUND_BAND                                             SBF3A.51     
!                       Clear-sky Optical Properties                       SBF3A.52     
     &   , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE                SBF3A.53     
     &   , FORWARD_SCATTER_FREE                                            SBF3A.54     
!                       Cloudy Properties                                  SBF3A.55     
     &   , L_CLOUD, I_CLOUD                                                SBF3A.56     
!                       Cloud Geometry                                     SBF3A.57     
     &   , N_CLOUD_TOP                                                     SBF3A.58     
     &   , N_CLOUD_TYPE, FRAC_CLOUD                                        SBF3A.59     
     &   , I_REGION_CLOUD, FRAC_REGION                                     ADB1F402.645    
     &   , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE                          SBF3A.60     
     &   , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE                       SBF3A.61     
     &   , CLOUD_OVERLAP                                                   SBF3A.62     
     &   , N_COLUMN, L_COLUMN, AREA_COLUMN                                 SBF3A.63     
!                       Cloudy Optical Properties                          SBF3A.64     
     &   , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD                              SBF3A.65     
     &   , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD                          SBF3A.66     
!                       Fluxes Calculated                                  SBF3A.67     
     &   , FLUX_DIRECT_BAND, FLUX_DIFFUSE_BAND                             SBF3A.68     
!                       Flags for Clear-sky Fluxes                         SBF3A.69     
     &   , L_CLEAR, I_SOLVER_CLEAR                                         SBF3A.70     
!                       Clear-sky Fluxes                                   SBF3A.71     
     &   , FLUX_DIRECT_CLEAR_BAND, FLUX_DIFFUSE_CLEAR_BAND                 SBF3A.72     
!                       Planckian Function                                 SBF3A.73     
     &   , PLANCK_SOURCE_BAND                                              SBF3A.74     
!                       Dimensions of Arrays                               SBF3A.75     
     &   , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                              SBF3A.76     
     &   , NPD_BAND, NPD_SPECIES                                           SBF3A.77     
     &   , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC                SBF3A.78     
     &   )                                                                 SBF3A.79     
!                                                                          SBF3A.80     
!                                                                          SBF3A.81     
!                                                                          SBF3A.82     
      IMPLICIT NONE                                                        SBF3A.83     
!                                                                          SBF3A.84     
!                                                                          SBF3A.85     
!     SIZES OF DUMMY ARRAYS.                                               SBF3A.86     
      INTEGER   !, INTENT(IN)                                              SBF3A.87     
     &     NPD_PROFILE                                                     SBF3A.88     
!             MAXIMUM NUMBER OF PROFILES                                   SBF3A.89     
     &   , NPD_LAYER                                                       SBF3A.90     
!             MAXIMUM NUMBER OF LAYERS                                     SBF3A.91     
     &   , NPD_BAND                                                        SBF3A.92     
!             MAXIMUM NUMBER OF SPECTRAL BANDS                             SBF3A.93     
     &   , NPD_SPECIES                                                     SBF3A.94     
!             MAXIMUM NUMBER OF SPECIES                                    SBF3A.95     
     &   , NPD_ESFT_TERM                                                   SBF3A.96     
!             MAXIMUM NUMBER OF ESFT TERMS                                 SBF3A.97     
     &   , NPD_SCALE_VARIABLE                                              SBF3A.98     
!             MAXIMUM NUMBER OF SCALE VARIABLES                            SBF3A.99     
     &   , NPD_SCALE_FNC                                                   SBF3A.100    
!             MAXIMUM NUMBER OF SCALING FUNCTIONS                          SBF3A.101    
     &   , NPD_COLUMN                                                      SBF3A.102    
!             NUMBER OF COLUMNS PER POINT                                  SBF3A.103    
!                                                                          SBF3A.104    
!     INCLUDE COMDECKS.                                                    SBF3A.105    
*CALL DIMFIX3A                                                             SBF3A.106    
*CALL ESFTSC3A                                                             SBF3A.107    
*CALL SPCRG3A                                                              SBF3A.108    
*CALL ERROR3A                                                              SBF3A.109    
!                                                                          SBF3A.110    
!                                                                          SBF3A.111    
!                                                                          SBF3A.112    
!     DUMMY ARGUMENTS.                                                     SBF3A.113    
      INTEGER   !, INTENT(OUT)                                             SBF3A.114    
     &     IERR                                                            SBF3A.115    
!             ERROR FLAG                                                   SBF3A.116    
      INTEGER   !, INTENT(IN)                                              SBF3A.117    
     &     N_PROFILE                                                       SBF3A.118    
!             NUMBER OF PROFILES                                           SBF3A.119    
     &   , N_LAYER                                                         SBF3A.120    
!             NUMBER OF LAYERS                                             SBF3A.121    
     &   , I_TOP                                                           SBF3A.122    
!             TOP OF VERTICAL GRID                                         SBF3A.123    
      LOGICAL   !, INTENT(IN)                                              SBF3A.124    
     &     L_LAYER                                                         SBF3A.125    
!             PROPERTIES GIVEN IN LAYERS                                   SBF3A.126    
      REAL  !, INTENT(IN)                                                  SBF3A.127    
     &     D_MASS(NPD_PROFILE, NPD_LAYER)                                  SBF3A.128    
!             MASS THICKNESS OF EACH LAYER                                 SBF3A.129    
     &   , P(NPD_PROFILE, 0: NPD_LAYER)                                    SBF3A.130    
!             PRESSURE                                                     SBF3A.131    
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    SBF3A.132    
!             TEMPERATURE                                                  SBF3A.133    
!                                                                          SBF3A.134    
!                       Angular Integration                                SBF3A.135    
      INTEGER   !, INTENT(IN)                                              SBF3A.136    
     &     I_ANGULAR_INTEGRATION                                           SBF3A.137    
!             ANGULAR INTEGRATION SCHEME                                   SBF3A.138    
     &   , I_2STREAM                                                       SBF3A.139    
!             TWO-STREAM SCHEME                                            SBF3A.140    
     &   , N_ORDER_GAUSS                                                   SBF3A.141    
!             ORDER OF GAUSSIAN INTEGRATION                                SBF3A.142    
      LOGICAL   !, INTENT(IN)                                              SBF3A.143    
     &     L_2_STREAM_CORRECT                                              SBF3A.144    
!             USE AN EDGE CORRECTION                                       SBF3A.145    
     &   , L_RESCALE                                                       SBF3A.146    
!             RESCALE OPTICAL PROPERTIES                                   SBF3A.147    
!                                                                          SBF3A.148    
!                       Treatment of Scattering                            SBF3A.149    
      INTEGER   !, INTENT(IN)                                              SBF3A.150    
     &     I_SCATTER_METHOD_BAND                                           SBF3A.151    
!             METHOD OF TREATING SCATTERING                                SBF3A.152    
!                                                                          SBF3A.153    
!                       Options for solver                                 SBF3A.154    
      INTEGER   !, INTENT(IN)                                              SBF3A.155    
     &     I_SOLVER                                                        SBF3A.156    
!             SOLVER USED                                                  SBF3A.157    
     &   , N_AUGMENT                                                       SBF3A.160    
!             LENGTH OF LONG FLUX VECTOR                                   SBF3A.161    
      LOGICAL   !, INTENT(IN)                                              SBF3A.162    
     &     L_NET                                                           SBF3A.163    
!             CALCULATE NET FLUXES                                         SBF3A.164    
!                                                                          SBF3A.165    
!                       Gaseous Properties                                 SBF3A.166    
      INTEGER   !, INTENT(IN)                                              SBF3A.167    
     &     I_BAND                                                          SBF3A.168    
!             BAND BEING CONSIDERED                                        SBF3A.169    
     &   , N_GAS                                                           SBF3A.170    
!             NUMBER OF GASES IN BAND                                      SBF3A.171    
     &   , INDEX_ABSORB(NPD_SPECIES, NPD_BAND)                             SBF3A.172    
!             LIST OF ABSORBERS IN BANDS                                   SBF3A.173    
     &   , I_BAND_ESFT(NPD_BAND, NPD_SPECIES)                              SBF3A.174    
!             NUMBER OF TERMS IN BAND                                      SBF3A.175    
     &   , I_SCALE_ESFT(NPD_BAND, NPD_SPECIES)                             SBF3A.176    
!             TYPE OF ESFT SCALING                                         SBF3A.177    
     &   , I_SCALE_FNC(NPD_BAND, NPD_SPECIES)                              SBF3A.178    
!             TYPE OF SCALING FUNCTION                                     SBF3A.179    
      LOGICAL   !, INTENT(IN)                                              SBF3A.180    
     &     L_DOPPLER(NPD_SPECIES)                                          SBF3A.181    
!             DOPPLER BROADENING INCLUDED                                  SBF3A.182    
      REAL  !, INTENT(IN)                                                  SBF3A.183    
     &     K_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES)                    SBF3A.184    
!             EXPONENTIAL ESFT TERMS                                       SBF3A.185    
     &   , W_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES)                    SBF3A.186    
!             WEIGHTS FOR ESFT                                             SBF3A.187    
     &   , SCALE_VECTOR(NPD_SCALE_VARIABLE, NPD_ESFT_TERM, NPD_BAND        SBF3A.188    
     &        , NPD_SPECIES)                                               SBF3A.189    
!             ABSORBER SCALING PARAMETERS                                  SBF3A.190    
     &   , P_REFERENCE(NPD_SPECIES, NPD_BAND)                              SBF3A.191    
!             REFERENCE SCALING PRESSURE                                   SBF3A.192    
     &   , T_REFERENCE(NPD_SPECIES, NPD_BAND)                              SBF3A.193    
!             REFERENCE SCALING TEMPERATURE                                SBF3A.194    
     &   , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES)           SBF3A.195    
!             GAS MASS MIXING RATIOS                                       SBF3A.196    
     &   , GAS_FRAC_RESCALED(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES)       SBF3A.197    
!             RESCALED GAS MASS FRACTIONS                                  SBF3A.198    
     &   , DOPPLER_CORRECTION(NPD_SPECIES)                                 SBF3A.199    
!             DOPPLER BROADENING TERMS                                     SBF3A.200    
!                                                                          SBF3A.201    
!                       Spectral Region                                    SBF3A.202    
      INTEGER   !, INTENT(IN)                                              SBF3A.203    
     &     ISOLIR                                                          SBF3A.204    
!             VISIBLE OR IR                                                SBF3A.205    
!                                                                          SBF3A.206    
!                       Solar Properties                                   SBF3A.207    
      REAL  !, INTENT(IN)                                                  SBF3A.208    
     &     SEC_0(NPD_PROFILE)                                              SBF3A.209    
!             SECANT OF SOLAR ZENITH ANGLE                                 SBF3A.210    
     &   , SOLAR_FLUX(NPD_PROFILE)                                         SBF3A.211    
!             INCIDENT SOLAR FLUX IN BAND                                  SBF3A.212    
!                                                                          SBF3A.213    
!                       Infra-red Properties                               SBF3A.214    
      LOGICAL   !, INTENT(IN)                                              SBF3A.215    
     &     L_IR_SOURCE_QUAD                                                SBF3A.216    
!             USE A QUADRATIC SOURCE FUNCTION                              SBF3A.217    
      REAL  !, INTENT(IN)                                                  SBF3A.218    
     &     PLANCK_SOURCE_TOP(NPD_PROFILE)                                  SBF3A.219    
!             PLANCKIAN SOURCE AT TOP                                      SBF3A.220    
     &   , PLANCK_SOURCE_BOTTOM(NPD_PROFILE)                               SBF3A.221    
!             PLANCKIAN SOURCE AT BOTTOM                                   SBF3A.222    
     &   , DIFF_PLANCK_BAND(NPD_PROFILE, NPD_LAYER)                        SBF3A.223    
!             THERMAL SOURCE FUNCTION                                      SBF3A.224    
     &   , DIFF_PLANCK_BAND_2(NPD_PROFILE, NPD_LAYER)                      SBF3A.225    
!             2x2ND DIFFERENCE OF PLANCKIAN IN BAND                        SBF3A.226    
!                                                                          SBF3A.227    
!                       Surface Properties                                 SBF3A.228    
      REAL  !, INTENT(IN)                                                  SBF3A.229    
     &     ALBEDO_SURFACE_DIFF(NPD_PROFILE)                                SBF3A.230    
!             DIFFUSE SURFACE ALBEDO                                       SBF3A.231    
     &   , ALBEDO_SURFACE_DIR(NPD_PROFILE)                                 SBF3A.232    
!             DIRECT SURFACE ALBEDO                                        SBF3A.233    
     &   , THERMAL_GROUND_BAND(NPD_PROFILE)                                SBF3A.234    
!             THERMAL SOURCE FUNCTION AT GROUND                            SBF3A.235    
!                                                                          SBF3A.236    
!                       Clear-sky Optical Properties                       SBF3A.237    
      REAL  !, INTENT(IN)                                                  SBF3A.238    
     &     K_GREY_TOT_FREE(NPD_PROFILE, NPD_LAYER)                         SBF3A.239    
!             FREE ABSORPTIVE EXTINCTION                                   SBF3A.240    
     &   , K_EXT_SCAT_FREE(NPD_PROFILE, NPD_LAYER)                         SBF3A.241    
!             FREE SCATTERING EXTINCTION                                   SBF3A.242    
     &   , ASYMMETRY_FREE(NPD_PROFILE, NPD_LAYER)                          SBF3A.243    
!             CLEAR-SKY ASYMMETRY                                          SBF3A.244    
     &   , FORWARD_SCATTER_FREE(NPD_PROFILE, NPD_LAYER)                    SBF3A.245    
!             FREE FORWARD SCATTERING                                      SBF3A.246    
!                                                                          SBF3A.247    
!                       Cloudy Properties                                  SBF3A.248    
      LOGICAL   !, INTENT(IN)                                              SBF3A.249    
     &     L_CLOUD                                                         SBF3A.250    
!             CLOUDS REQUIRED                                              SBF3A.251    
      INTEGER   !, INTENT(IN)                                              SBF3A.252    
     &     I_CLOUD                                                         SBF3A.253    
!             CLOUD SCHEME USED                                            SBF3A.254    
!                                                                          SBF3A.255    
!                       Cloud Geometry                                     SBF3A.256    
      INTEGER   !, INTENT(IN)                                              SBF3A.257    
     &     N_CLOUD_TOP                                                     SBF3A.258    
!             TOP CLOUDY LAYER                                             SBF3A.259    
     &   , N_CLOUD_TYPE                                                    SBF3A.260    
!             NUMBER OF TYPES OF CLOUDS                                    SBF3A.261    
     &   , N_FREE_PROFILE(NPD_LAYER)                                       SBF3A.262    
!             NUMBER OF FREE PROFILES                                      SBF3A.263    
     &   , I_FREE_PROFILE(NPD_PROFILE, NPD_LAYER)                          SBF3A.264    
!             INDICES OF FREE PROFILES                                     SBF3A.265    
     &   , N_CLOUD_PROFILE(NPD_LAYER)                                      SBF3A.266    
!             NUMBER OF CLOUDY PROFILES                                    SBF3A.267    
     &   , I_CLOUD_PROFILE(NPD_PROFILE, NPD_LAYER)                         SBF3A.268    
!             INDICES OF CLOUDY PROFILES                                   SBF3A.269    
     &   , N_COLUMN(NPD_PROFILE)                                           SBF3A.270    
!             NUMBER OF COLUMNS REQUIRED                                   SBF3A.271    
     &   , I_REGION_CLOUD(NPD_CLOUD_TYPE)                                  ADB1F402.646    
!             REGIONS IN WHICH TYPES OF CLOUDS FALL                        ADB1F402.647    
      LOGICAL   !, INTENT(IN)                                              SBF3A.272    
     &     L_COLUMN(NPD_PROFILE, NPD_LAYER, NPD_COLUMN)                    SBF3A.273    
!             COLUMN FLAGS FOR COLUMNS                                     SBF3A.274    
      REAL  !, INTENT(IN)                                                  SBF3A.275    
     &     W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 SBF3A.276    
!             CLOUDY FRACTION                                              SBF3A.277    
     &   , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              SBF3A.278    
!             FRACTIONS OF TYPES OF CLOUD                                  SBF3A.279    
     &   , W_FREE(NPD_PROFILE, NPD_LAYER)                                  SBF3A.280    
!             CLEAR-SKY FRACTION                                           SBF3A.281    
     &   , CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF)     SBF3A.282    
!             COEFFICIENTS FOR TRANSFER FOR ENERGY AT INTERFACES           SBF3A.283    
     &   , AREA_COLUMN(NPD_PROFILE, NPD_COLUMN)                            SBF3A.284    
!             AREAS OF COLUMNS                                             SBF3A.285    
     &   , FRAC_REGION(NPD_PROFILE, NPD_LAYER, NPD_REGION)                 ADB1F402.648    
!             FRACTIONS OF TOTAL CLOUD OCCUPIED BY EACH REGION             ADB1F402.649    
!                                                                          SBF3A.286    
!                       Cloudy Optical Propeties                           SBF3A.287    
      REAL  !, INTENT(IN)                                                  SBF3A.288    
     &     K_GREY_TOT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)        SBF3A.289    
!             CLOUDY ABSORPTIVE EXTINCTION                                 SBF3A.290    
     &   , K_EXT_SCAT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)        SBF3A.291    
!             CLOUDY SCATTERING EXTINCTION                                 SBF3A.292    
     &   , ASYMMETRY_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)         SBF3A.293    
!             CLOUDY ASYMMETRY                                             SBF3A.294    
     &   , FORWARD_SCATTER_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)   SBF3A.295    
!             CLOUDY FORWARD SCATTERING                                    SBF3A.296    
!                                                                          SBF3A.297    
!                       Fluxes Calculated                                  SBF3A.298    
      REAL  !, INTENT(OUT)                                                 SBF3A.299    
     &     FLUX_DIRECT_BAND(NPD_PROFILE, 0: NPD_LAYER)                     SBF3A.300    
!             DIRECT FLUX IN BAND                                          SBF3A.301    
     &   , FLUX_DIFFUSE_BAND(NPD_PROFILE, 2*NPD_LAYER+2)                   SBF3A.302    
!             DIFFUSE FLUX IN BAND                                         SBF3A.303    
!                                                                          SBF3A.304    
!                       Flags for Clear-sky Calculations                   SBF3A.305    
      LOGICAL   !, INTENT(IN)                                              SBF3A.306    
     &     L_CLEAR                                                         SBF3A.307    
!             CALCULATE CLEAR-SKY FLUXES                                   SBF3A.308    
      INTEGER   !, INTENT(IN)                                              SBF3A.309    
     &     I_SOLVER_CLEAR                                                  SBF3A.310    
!             CLEAR SOLVER USED                                            SBF3A.311    
!                                                                          SBF3A.312    
!                       Clear-sky Fluxes Calculated                        SBF3A.313    
      REAL  !, INTENT(OUT)                                                 SBF3A.314    
     &     FLUX_DIRECT_CLEAR_BAND(NPD_PROFILE, 0: NPD_LAYER)               SBF3A.315    
!             CLEAR-SKY DIRECT FLUX IN BAND                                SBF3A.316    
     &   , FLUX_DIFFUSE_CLEAR_BAND(NPD_PROFILE, 2*NPD_LAYER+2)             SBF3A.317    
!             CLEAR-SKY DIFFUSE FLUX IN BAND                               SBF3A.318    
!                                                                          SBF3A.319    
!                       Planckian Source Function                          SBF3A.320    
      REAL  !, INTENT(IN)                                                  SBF3A.321    
     &     PLANCK_SOURCE_BAND(NPD_PROFILE, 0: NPD_LAYER)                   SBF3A.322    
!             PLANCKIAN SOURCE IN BAND                                     SBF3A.323    
!                                                                          SBF3A.324    
!                                                                          SBF3A.325    
!                                                                          SBF3A.326    
!     LOCAL VARIABLES.                                                     SBF3A.327    
      INTEGER                                                              SBF3A.328    
     &     I                                                               SBF3A.329    
!             LOOP VARIABLE                                                SBF3A.330    
     &   , J                                                               SBF3A.331    
!             LOOP VARIABLE                                                SBF3A.332    
     &   , L                                                               SBF3A.333    
!             LOOP VARIABLE                                                SBF3A.334    
      INTEGER                                                              SBF3A.335    
     &     I_GAS_BAND                                                      SBF3A.336    
!             INDEX OF ACTIVE GAS                                          SBF3A.337    
     &   , I_GAS_POINTER(NPD_SPECIES)                                      SBF3A.338    
!             POINTER ARRAY FOR MONOCHROMATIC ESFTs                        SBF3A.339    
     &   , IEX                                                             SBF3A.340    
!             INDEX OF ESFT TERM                                           SBF3A.341    
      REAL                                                                 SBF3A.342    
     &     K_ESFT_MONO(NPD_SPECIES)                                        SBF3A.343    
!             ESFT MONOCHROMATIC EXPONENTS                                 SBF3A.344    
     &   , K_GAS_ABS(NPD_PROFILE, NPD_LAYER)                               SBF3A.345    
!             GASEOUS ABSORPTION                                           SBF3A.346    
     &   , SOURCE_GROUND(NPD_PROFILE)                                      SBF3A.347    
!             GROUND SOURCE FUNCTION                                       SBF3A.348    
     &   , FLUX_INC_DIRECT(NPD_PROFILE)                                    SBF3A.349    
!             INCIDENT DIRECT FLUX                                         SBF3A.350    
     &   , FLUX_INC_DOWN(NPD_PROFILE)                                      SBF3A.351    
!             INCIDENT DOWNWARD FLUX                                       SBF3A.352    
     &   , ESFT_WEIGHT                                                     SBF3A.353    
!             ESFT WEIGHT FOR CURRENT CALCULATION                          SBF3A.354    
     &   , DUMMY_KE(NPD_PROFILE, NPD_LAYER)                                SBF3A.355    
!             DUMMY ARRAY (NOT USED)                                       SBF3A.356    
      REAL                                                                 SBF3A.357    
     &     FLUX_DIRECT_PART(NPD_PROFILE, 0: NPD_LAYER)                     SBF3A.358    
!             PARTIAL DIRECT FLUX                                          SBF3A.359    
     &   , FLUX_DIFFUSE_PART(NPD_PROFILE, 2*NPD_LAYER+2)                   SBF3A.360    
!             PARTIAL DIFFUSE FLUX                                         SBF3A.361    
     &   , FLUX_DIRECT_CLEAR_PART(NPD_PROFILE, 0: NPD_LAYER)               SBF3A.362    
!             PARTIAL CLEAR-SKY DIRECT FLUX                                SBF3A.363    
     &   , FLUX_DIFFUSE_CLEAR_PART(NPD_PROFILE, 2*NPD_LAYER+2)             SBF3A.364    
!             PARTIAL CLEAR-SKY DIFFUSE FLUX                               SBF3A.365    
     &   , FLUX_DIRECT_GREY(NPD_PROFILE, 0: NPD_LAYER)                     SBF3A.366    
!             GREY DIRECT FLUX                                             SBF3A.367    
     &   , FLUX_DIFFUSE_GREY(NPD_PROFILE, 2*NPD_LAYER+2)                   SBF3A.368    
!             GREY DIFFUSE FLUX                                            SBF3A.369    
     &   , FLUX_DIRECT_CLEAR_GREY(NPD_PROFILE, 0: NPD_LAYER)               SBF3A.370    
!             GREY CLEAR-SKY DIRECT FLUX                                   SBF3A.371    
     &   , FLUX_DIFFUSE_CLEAR_GREY(NPD_PROFILE, 2*NPD_LAYER+2)             SBF3A.372    
!             GREY CLEAR-SKY DIFFUSE FLUX                                  SBF3A.373    
     &   , FLUX_RATIO_DIRECT(NPD_PROFILE, 0: NPD_LAYER)                    SBF3A.374    
!             RATIO OF DIRECT FLUXES                                       SBF3A.375    
     &   , FLUX_RATIO_DIFFUSE(NPD_PROFILE, 2*NPD_LAYER+2)                  SBF3A.376    
!             RATIO OF DIFFUSE FLUXES                                      SBF3A.377    
     &   , FLUX_RATIO_DIRECT_CLEAR(NPD_PROFILE, 0: NPD_LAYER)              SBF3A.378    
!             RATIO OF CLEAR-SKY DIRECT FLUXES                             SBF3A.379    
     &   , FLUX_RATIO_DIFFUSE_CLEAR(NPD_PROFILE, 2*NPD_LAYER+2)            SBF3A.380    
!             RATIO OF CLEAR-SKY DIFFUSE FLUXES                            SBF3A.381    
!                                                                          SBF3A.382    
!     SUBROUTINES CALLED:                                                  SBF3A.383    
      EXTERNAL                                                             SBF3A.384    
     &     INITIALIZE_FLUX, SCALE_ABSORB, GAS_OPTICAL_PROPERTIES           SBF3A.385    
     &   , MONOCHROMATIC_FLUX, AUGMENT_FLUX                                SBF3A.386    
!                                                                          SBF3A.387    
!                                                                          SBF3A.388    
!                                                                          SBF3A.389    
!     FAST EXPONENTIAL OVERLAP, SUPERPOSING ONE GAS AT A TIME.             SBF3A.390    
!                                                                          SBF3A.391    
!     INITIAL SOLUTION FOR GREY FLUXES.                                    SBF3A.392    
!     SET THE APPROPRIATE BOUNDARY CONDITIONS FOR THE TOTAL                SBF3A.393    
!     UPWARD AND DOWNWARD FLUXES.                                          SBF3A.394    
!                                                                          SBF3A.395    
      IF (ISOLIR.EQ.IP_SOLAR) THEN                                         SBF3A.396    
!        VISIBLE REGION.                                                   SBF3A.397    
         DO L=1, N_PROFILE                                                 SBF3A.398    
            SOURCE_GROUND(L)=0.0E+00                                       SBF3A.399    
            FLUX_INC_DIRECT(L)=SOLAR_FLUX(L)                               SBF3A.400    
            FLUX_INC_DOWN(L)=SOLAR_FLUX(L)                                 SBF3A.401    
         ENDDO                                                             SBF3A.402    
      ELSEIF (ISOLIR.EQ.IP_INFRA_RED) THEN                                 SBF3A.403    
!        INFRA-RED REGION.                                                 SBF3A.404    
         DO L=1, N_PROFILE                                                 SBF3A.405    
            FLUX_INC_DIRECT(L)=0.0E+00                                     SBF3A.406    
            FLUX_DIRECT_GREY(L, N_LAYER)=0.0E+00                           ADB1F401.832    
            FLUX_INC_DOWN(L)=-PLANCK_SOURCE_TOP(L)                         SBF3A.407    
            SOURCE_GROUND(L)=THERMAL_GROUND_BAND(L)                        SBF3A.408    
     &         -(1.0E+00-ALBEDO_SURFACE_DIFF(L))                           SBF3A.409    
     &         *PLANCK_SOURCE_BOTTOM(L)                                    SBF3A.410    
         ENDDO                                                             SBF3A.411    
         IF (L_CLEAR) THEN                                                 ADB1F401.833    
            DO L=1, N_PROFILE                                              ADB1F401.834    
               FLUX_DIRECT_CLEAR_GREY(L, N_LAYER)=0.0E+00                  ADB1F401.835    
            ENDDO                                                          ADB1F401.836    
         ENDIF                                                             ADB1F401.837    
      ENDIF                                                                SBF3A.412    
!                                                                          SBF3A.413    
!     THIS CALL CONTAINS NO GASEOUS ABSORPTION SO K_GAS_ABS MUST           SBF3A.414    
!     BE ZEROED.                                                           SBF3A.415    
      DO I=1, N_LAYER                                                      SBF3A.416    
         DO L=1, N_PROFILE                                                 SBF3A.417    
            K_GAS_ABS(L, I)=0.0E+00                                        SBF3A.418    
         ENDDO                                                             SBF3A.419    
      ENDDO                                                                SBF3A.420    
!                                                                          SBF3A.421    
!                                                                          SBF3A.422    
      CALL MONOCHROMATIC_FLUX(IERR                                         SBF3A.423    
!                       Atmospheric Properties                             SBF3A.424    
     &   , N_PROFILE, N_LAYER, D_MASS                                      SBF3A.425    
!                       Angular Integration                                SBF3A.426    
     &   , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT            SBF3A.427    
     &   , L_RESCALE, N_ORDER_GAUSS                                        SBF3A.428    
!                       Treatment of Scattering                            SBF3A.429    
     &   , I_SCATTER_METHOD_BAND                                           SBF3A.430    
!                       Options for Solver                                 SBF3A.431    
     &   , I_SOLVER, L_NET, N_AUGMENT                                      ADB1F405.577    
!                       Gaseous Properties                                 SBF3A.433    
     &   , K_GAS_ABS                                                       SBF3A.434    
!                       Options for Equivalent Extinction                  SBF3A.435    
     &   , .FALSE., DUMMY_KE                                               SBF3A.436    
!                       Spectral Region                                    SBF3A.437    
     &   , ISOLIR                                                          SBF3A.438    
!                       Infra-red Properties                               SBF3A.439    
     &   , DIFF_PLANCK_BAND                                                SBF3A.440    
     &   , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2                            SBF3A.441    
!                       Conditions at TOA                                  SBF3A.442    
     &   , SEC_0, SOLAR_FLUX, FLUX_INC_DOWN                                SBF3A.443    
!                       Surface Properties                                 SBF3A.444    
     &   , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR                         SBF3A.445    
     &   , SOURCE_GROUND, THERMAL_GROUND_BAND                              SBF3A.446    
!                       Clear-sky Optical Properties                       SBF3A.447    
     &   , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE                SBF3A.448    
     &   , FORWARD_SCATTER_FREE                                            SBF3A.449    
!                       Cloudy Properties                                  SBF3A.450    
     &   , L_CLOUD, I_CLOUD                                                SBF3A.451    
!                       Cloud Geometry                                     SBF3A.452    
     &   , N_CLOUD_TOP                                                     SBF3A.453    
     &   , N_CLOUD_TYPE, FRAC_CLOUD                                        SBF3A.454    
     &   , I_REGION_CLOUD, FRAC_REGION                                     ADB1F402.650    
     &   , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE                          SBF3A.455    
     &   , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE                       SBF3A.456    
     &   , CLOUD_OVERLAP                                                   SBF3A.457    
     &   , N_COLUMN, L_COLUMN, AREA_COLUMN                                 SBF3A.458    
!                       Cloudy Optical Properties                          SBF3A.459    
     &   , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD                              SBF3A.460    
     &   , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD                          SBF3A.461    
!                       Fluxes Calculated                                  SBF3A.462    
     &   , FLUX_DIRECT_GREY, FLUX_DIFFUSE_GREY                             SBF3A.463    
!                       Flags for Clear-sky Calculations                   SBF3A.464    
     &   , L_CLEAR, I_SOLVER_CLEAR                                         SBF3A.465    
!                       Clear-sky Fluxes Calculated                        SBF3A.466    
     &   , FLUX_DIRECT_CLEAR_GREY, FLUX_DIFFUSE_CLEAR_GREY                 SBF3A.467    
!                       Planckian Function                                 SBF3A.468    
     &   , PLANCK_SOURCE_BAND                                              SBF3A.469    
!                       Dimensions of Arrays                               SBF3A.470    
     &   , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                              SBF3A.471    
     &   )                                                                 SBF3A.472    
      IF (IERR.NE.I_NORMAL) RETURN                                         SBF3A.473    
!                                                                          SBF3A.474    
!     FESFT IS BASED ON THE DIFFUSE FLUXES, WHEREAS TOTAL FLUXES           SBF3A.475    
!     ARE USED HERE IN THE SOLAR: CONVERSION BACK TO DIFFUSE               SBF3A.476    
!     FLUXES IS REQUIRED.                                                  SBF3A.477    
      IF (ISOLIR.EQ.IP_SOLAR) THEN                                         SBF3A.478    
         IF (L_NET) THEN                                                   SBF3A.479    
            DO I=1, N_AUGMENT                                              SBF3A.480    
               DO L=1, N_PROFILE                                           SBF3A.481    
                  FLUX_DIFFUSE_GREY(L, I)=FLUX_DIFFUSE_GREY(L, I)          SBF3A.482    
     &               -FLUX_DIRECT_GREY(L, I-1)                             SBF3A.483    
               ENDDO                                                       SBF3A.484    
            ENDDO                                                          SBF3A.485    
         ELSE                                                              SBF3A.486    
            DO I=1, N_AUGMENT                                              SBF3A.487    
               DO L=1, N_PROFILE                                           SBF3A.488    
                  FLUX_DIFFUSE_GREY(L, 2*I)=FLUX_DIFFUSE_GREY(L, 2*I)      SBF3A.489    
     &               -FLUX_DIRECT_GREY(L, I-1)                             SBF3A.490    
               ENDDO                                                       SBF3A.491    
            ENDDO                                                          SBF3A.492    
         ENDIF                                                             SBF3A.493    
         IF (L_CLEAR) THEN                                                 SBF3A.494    
            IF (L_NET) THEN                                                SBF3A.495    
               DO I=1, N_AUGMENT                                           SBF3A.496    
                  DO L=1, N_PROFILE                                        SBF3A.497    
                     FLUX_DIFFUSE_CLEAR_GREY(L, I)                         SBF3A.498    
     &                  =FLUX_DIFFUSE_CLEAR_GREY(L, I)                     SBF3A.499    
     &                  -FLUX_DIRECT_CLEAR_GREY(L, I-1)                    SBF3A.500    
                  ENDDO                                                    SBF3A.501    
               ENDDO                                                       SBF3A.502    
            ELSE                                                           SBF3A.503    
               DO I=1, N_AUGMENT                                           SBF3A.504    
                  DO L=1, N_PROFILE                                        SBF3A.505    
                     FLUX_DIFFUSE_CLEAR_GREY(L, 2*I)                       SBF3A.506    
     &                  =FLUX_DIFFUSE_CLEAR_GREY(L, 2*I)                   SBF3A.507    
     &                  -FLUX_DIRECT_CLEAR_GREY(L, I-1)                    SBF3A.508    
                  ENDDO                                                    SBF3A.509    
               ENDDO                                                       SBF3A.510    
            ENDIF                                                          SBF3A.511    
         ENDIF                                                             SBF3A.512    
      ENDIF                                                                SBF3A.513    
!                                                                          SBF3A.514    
!                                                                          SBF3A.515    
!                                                                          SBF3A.516    
!                                                                          SBF3A.517    
!     THE FLUX RATIOS ARE THE RATIOS OF THE GASEOUS FLUXES TO              SBF3A.518    
!     THE GREY FLUXES. THE PRODUCT OVER ALL GASES IS USED TO               SBF3A.519    
!     CALCULATE THE OVERALL FLUX.                                          SBF3A.520    
      CALL INITIALIZE_FLUX(N_PROFILE, N_LAYER, N_AUGMENT                   SBF3A.521    
     &   , ISOLIR                                                          SBF3A.522    
     &   , FLUX_RATIO_DIRECT, FLUX_RATIO_DIFFUSE                           SBF3A.523    
     &   , L_CLEAR                                                         SBF3A.524    
     &   , FLUX_RATIO_DIRECT_CLEAR, FLUX_RATIO_DIFFUSE_CLEAR               SBF3A.525    
     &   , 1.0E+00                                                         SBF3A.526    
     &   , NPD_PROFILE, NPD_LAYER                                          SBF3A.527    
     &   , L_NET                                                           SBF3A.528    
     &   )                                                                 SBF3A.529    
!                                                                          SBF3A.530    
      DO J=1, N_GAS                                                        SBF3A.531    
!                                                                          SBF3A.532    
!        INITIALIZE THE FLUX IN THE BAND TO ZERO. IN THIS                  SBF3A.533    
!        LOOP FLUX_..._BAND IS USED AS A TEMPORARY VARIABLE                SBF3A.534    
!        TO HOLD THE FLUXES FOR ONE GAS.                                   SBF3A.535    
         CALL INITIALIZE_FLUX(N_PROFILE, N_LAYER, N_AUGMENT                SBF3A.536    
     &      , ISOLIR                                                       SBF3A.537    
     &      , FLUX_DIRECT_BAND, FLUX_DIFFUSE_BAND                          SBF3A.538    
     &      , L_CLEAR                                                      SBF3A.539    
     &      , FLUX_DIRECT_CLEAR_BAND, FLUX_DIFFUSE_CLEAR_BAND              SBF3A.540    
     &      , 0.0E+00                                                      SBF3A.541    
     &      , NPD_PROFILE, NPD_LAYER                                       SBF3A.542    
     &      , L_NET                                                        SBF3A.543    
     &      )                                                              SBF3A.544    
!                                                                          SBF3A.545    
         I_GAS_BAND=INDEX_ABSORB(J, I_BAND)                                SBF3A.546    
         I_GAS_POINTER(1)=I_GAS_BAND                                       SBF3A.547    
         DO IEX=1, I_BAND_ESFT(I_BAND, I_GAS_BAND)                         SBF3A.548    
!                                                                          SBF3A.549    
!           STORE THE ESFT WEIGHT FOR FUTURE USE.                          SBF3A.550    
            ESFT_WEIGHT=W_ESFT(IEX, I_BAND,  I_GAS_BAND)                   SBF3A.551    
!                                                                          SBF3A.552    
!           RESCALE THE AMOUNT OF GAS FOR THIS ABSORBER IF REQUIRED.       SBF3A.553    
            IF (I_SCALE_ESFT(I_BAND, I_GAS_BAND).EQ.IP_SCALE_TERM) THEN    SBF3A.554    
               CALL SCALE_ABSORB(IERR, N_PROFILE, N_LAYER                  SBF3A.555    
     &            , GAS_MIX_RATIO(1, 0, I_GAS_BAND), P, T                  SBF3A.556    
     &            , L_LAYER, I_TOP                                         SBF3A.557    
     &            , GAS_FRAC_RESCALED(1, 0, I_GAS_BAND)                    SBF3A.558    
     &            , I_SCALE_FNC(I_BAND, I_GAS_BAND)                        SBF3A.559    
     &            , P_REFERENCE(I_GAS_BAND, I_BAND)                        SBF3A.560    
     &            , T_REFERENCE(I_GAS_BAND, I_BAND)                        SBF3A.561    
     &            , SCALE_VECTOR(1, IEX, I_BAND, I_GAS_BAND)               SBF3A.562    
     &            , L_DOPPLER(I_GAS_BAND)                                  SBF3A.563    
     &            , DOPPLER_CORRECTION(I_GAS_BAND)                         SBF3A.564    
     &            , NPD_PROFILE, NPD_LAYER, NPD_SCALE_FNC                  SBF3A.565    
     &            , NPD_SCALE_VARIABLE                                     SBF3A.566    
     &            )                                                        SBF3A.567    
               IF (IERR.NE.I_NORMAL) RETURN                                SBF3A.568    
            ENDIF                                                          SBF3A.569    
!                                                                          SBF3A.570    
!           SET THE APPROPRIATE SOURCE TERMS FOR THE TWO-STREAM            SBF3A.571    
!           EQUATIONS.                                                     SBF3A.572    
!           SET THE GROUND SOURCE FUNCTION                                 SBF3A.573    
            IF (ISOLIR.EQ.IP_SOLAR) THEN                                   SBF3A.574    
!              VISIBLE REGION.                                             SBF3A.575    
               DO L=1, N_PROFILE                                           SBF3A.576    
                  SOURCE_GROUND(L)=0.0E+00                                 SBF3A.577    
                  FLUX_INC_DOWN(L)=SOLAR_FLUX(L)                           SBF3A.578    
                  FLUX_INC_DIRECT(L)=SOLAR_FLUX(L)                         SBF3A.579    
               ENDDO                                                       SBF3A.580    
            ELSEIF (ISOLIR.EQ.IP_INFRA_RED) THEN                           SBF3A.581    
!              INFRA-RED REGION.                                           SBF3A.582    
               DO L=1, N_PROFILE                                           SBF3A.583    
                  FLUX_INC_DIRECT(L)=0.0E+00                               SBF3A.584    
                  FLUX_DIRECT_PART(L, N_LAYER)=0.0E+00                     ADB1F401.838    
                  FLUX_INC_DOWN(L)=-PLANCK_SOURCE_TOP(L)                   SBF3A.585    
                  SOURCE_GROUND(L)=THERMAL_GROUND_BAND(L)                  SBF3A.586    
     &               -(1.0E+00-ALBEDO_SURFACE_DIFF(L))                     SBF3A.587    
     &               *PLANCK_SOURCE_BOTTOM(L)                              SBF3A.588    
               ENDDO                                                       SBF3A.589    
               IF (L_CLEAR) THEN                                           ADB1F401.839    
                  DO L=1, N_PROFILE                                        ADB1F401.840    
                     FLUX_DIRECT_CLEAR_PART(L, N_LAYER)=0.0E+00            ADB1F401.841    
                  ENDDO                                                    ADB1F401.842    
               ENDIF                                                       ADB1F401.843    
            ENDIF                                                          SBF3A.590    
!                                                                          SBF3A.591    
!           ASSIGN THE MONOCHROMATIC ABSORPTION COEFFICIENT.               SBF3A.592    
            K_ESFT_MONO(I_GAS_BAND)=K_ESFT(IEX, I_BAND, I_GAS_BAND)        SBF3A.593    
!                                                                          SBF3A.594    
            CALL GAS_OPTICAL_PROPERTIES(N_PROFILE, N_LAYER                 SBF3A.595    
     &         , 1, I_GAS_POINTER, K_ESFT_MONO                             SBF3A.596    
     &         , GAS_FRAC_RESCALED                                         SBF3A.597    
     &         , K_GAS_ABS                                                 SBF3A.598    
     &         , NPD_PROFILE, NPD_LAYER, NPD_SPECIES                       SBF3A.599    
     &         )                                                           SBF3A.600    
!                                                                          SBF3A.601    
            CALL MONOCHROMATIC_FLUX(IERR                                   SBF3A.602    
!                       Atmospheric Properties                             SBF3A.603    
     &         , N_PROFILE, N_LAYER, D_MASS                                SBF3A.604    
!                       Angular Integration                                SBF3A.605    
     &         , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT      SBF3A.606    
     &         , L_RESCALE, N_ORDER_GAUSS                                  SBF3A.607    
!                       Treatment of Scattering                            SBF3A.608    
     &         , I_SCATTER_METHOD_BAND                                     SBF3A.609    
!                       Options for Solver                                 SBF3A.610    
     &         , I_SOLVER, L_NET, N_AUGMENT                                ADB1F405.578    
!                       Gaseous Propreties                                 SBF3A.612    
     &         , K_GAS_ABS                                                 SBF3A.613    
!                       Options for Equivalent Extinction                  SBF3A.614    
     &         , .FALSE., DUMMY_KE                                         SBF3A.615    
!                       Spectral Region                                    SBF3A.616    
     &         , ISOLIR                                                    SBF3A.617    
!                       Infra-red Properties                               SBF3A.618    
     &         , DIFF_PLANCK_BAND                                          SBF3A.619    
     &         , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2                      SBF3A.620    
!                       Conditions at TOA                                  SBF3A.621    
     &         , SEC_0, FLUX_INC_DIRECT, FLUX_INC_DOWN                     SBF3A.622    
!                       Surface Properties                                 SBF3A.623    
     &         , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR, SOURCE_GROUND    SBF3A.624    
     &         , THERMAL_GROUND_BAND                                       SBF3A.625    
!                       Clear-sky Optical Properties                       SBF3A.626    
     &         , K_GREY_TOT_FREE, K_EXT_SCAT_FREE                          SBF3A.627    
     &         , ASYMMETRY_FREE, FORWARD_SCATTER_FREE                      SBF3A.628    
!                       Cloudy Properties                                  SBF3A.629    
     &         , L_CLOUD, I_CLOUD                                          SBF3A.630    
!                       Cloud Geometry                                     SBF3A.631    
     &         , N_CLOUD_TOP                                               SBF3A.632    
     &         , N_CLOUD_TYPE, FRAC_CLOUD                                  SBF3A.633    
     &        , I_REGION_CLOUD, FRAC_REGION                                ADB1F402.651    
     &         , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE                    SBF3A.634    
     &         , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE                 SBF3A.635    
     &         , CLOUD_OVERLAP                                             SBF3A.636    
     &         , N_COLUMN, L_COLUMN, AREA_COLUMN                           SBF3A.637    
!                       Cloudy Optical Properties                          SBF3A.638    
     &         , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD                        SBF3A.639    
     &         , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD                    SBF3A.640    
!                       Flxues Calculated                                  SBF3A.641    
     &         , FLUX_DIRECT_PART, FLUX_DIFFUSE_PART                       SBF3A.642    
!                       Flags for Clear-sky Calculations                   SBF3A.643    
     &         , L_CLEAR, I_SOLVER_CLEAR                                   SBF3A.644    
!                       Clear-sky Fluxes Calculated                        SBF3A.645    
     &         , FLUX_DIRECT_CLEAR_PART, FLUX_DIFFUSE_CLEAR_PART           SBF3A.646    
!                       Planckian Function                                 SBF3A.647    
     &         , PLANCK_SOURCE_BAND                                        SBF3A.648    
!                       Dimensions of Arrays                               SBF3A.649    
     &         , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                        SBF3A.650    
     &         )                                                           SBF3A.651    
            IF (IERR.NE.I_NORMAL) RETURN                                   SBF3A.652    
!                                                                          SBF3A.653    
!           CONVERT THE TOTAL FLUXES BACK TO DIFFUSE FLUXES.               ADB1F401.844    
            IF (ISOLIR.EQ.IP_SOLAR) THEN                                   SBF3A.655    
               IF (L_NET) THEN                                             SBF3A.656    
                  DO I=1, N_AUGMENT                                        SBF3A.657    
                     DO L=1, N_PROFILE                                     SBF3A.658    
                        FLUX_DIFFUSE_PART(L, I)                            SBF3A.659    
     &                     =FLUX_DIFFUSE_PART(L, I)                        SBF3A.660    
     &                     -FLUX_DIRECT_PART(L, I-1)                       SBF3A.661    
                     ENDDO                                                 SBF3A.662    
                  ENDDO                                                    SBF3A.663    
               ELSE                                                        SBF3A.664    
                  DO I=1, N_AUGMENT                                        SBF3A.665    
                     DO L=1, N_PROFILE                                     SBF3A.666    
                        FLUX_DIFFUSE_PART(L, 2*I)                          SBF3A.667    
     &                     =FLUX_DIFFUSE_PART(L, 2*I)                      SBF3A.668    
     &                     -FLUX_DIRECT_PART(L, I-1)                       SBF3A.669    
                     ENDDO                                                 SBF3A.670    
                  ENDDO                                                    SBF3A.671    
               ENDIF                                                       SBF3A.672    
               IF (L_CLEAR) THEN                                           SBF3A.673    
                  IF (L_NET) THEN                                          SBF3A.674    
                     DO I=1, N_AUGMENT                                     SBF3A.675    
                        DO L=1, N_PROFILE                                  SBF3A.676    
                           FLUX_DIFFUSE_CLEAR_PART(L, I)                   SBF3A.677    
     &                        =FLUX_DIFFUSE_CLEAR_PART(L, I)               SBF3A.678    
     &                        -FLUX_DIRECT_CLEAR_PART(L, I-1)              SBF3A.679    
                        ENDDO                                              SBF3A.680    
                     ENDDO                                                 SBF3A.681    
                  ELSE                                                     SBF3A.682    
                     DO I=1, N_AUGMENT                                     SBF3A.683    
                        DO L=1, N_PROFILE                                  SBF3A.684    
                           FLUX_DIFFUSE_CLEAR_PART(L, 2*I)                 SBF3A.685    
     &                        =FLUX_DIFFUSE_CLEAR_PART(L, 2*I)             SBF3A.686    
     &                        -FLUX_DIRECT_CLEAR_PART(L, I-1)              SBF3A.687    
                        ENDDO                                              SBF3A.688    
                     ENDDO                                                 SBF3A.689    
                  ENDIF                                                    SBF3A.690    
               ENDIF                                                       SBF3A.691    
            ENDIF                                                          SBF3A.692    
!                                                                          SBF3A.693    
!           INCREMENT THE FLUXES WITHIN THE BAND.                          SBF3A.694    
            CALL AUGMENT_FLUX(N_PROFILE, N_LAYER, N_AUGMENT                SBF3A.695    
     &         , ISOLIR, L_CLEAR                                           SBF3A.696    
     &         , ESFT_WEIGHT                                               SBF3A.697    
     &         , FLUX_DIRECT_BAND, FLUX_DIFFUSE_BAND                       SBF3A.698    
     &         , FLUX_DIRECT_PART, FLUX_DIFFUSE_PART                       SBF3A.699    
     &         , FLUX_DIRECT_CLEAR_BAND, FLUX_DIFFUSE_CLEAR_BAND           SBF3A.700    
     &         , FLUX_DIRECT_CLEAR_PART, FLUX_DIFFUSE_CLEAR_PART           SBF3A.701    
     &         , NPD_PROFILE, NPD_LAYER                                    SBF3A.702    
     &         )                                                           SBF3A.703    
!                                                                          SBF3A.704    
          ENDDO                                                            SBF3A.705    
!                                                                          SBF3A.706    
!         CALCULATE THE FLUX RATIO.                                        SBF3A.707    
          IF (ISOLIR.EQ.IP_SOLAR) THEN                                     SBF3A.708    
             DO I=0, N_LAYER                                               SBF3A.709    
               DO L=1, N_PROFILE                                           SBF3A.710    
                  IF (ABS(FLUX_DIRECT_GREY(L, I)).GT.0.0E+00) THEN         SBF3A.711    
                     FLUX_RATIO_DIRECT(L, I)=FLUX_RATIO_DIRECT(L, I)       SBF3A.712    
     &                  *FLUX_DIRECT_BAND(L, I)/FLUX_DIRECT_GREY(L, I)     SBF3A.713    
                  ELSE                                                     SBF3A.714    
                     FLUX_RATIO_DIRECT(L, I)=1.0E+00                       SBF3A.715    
                  ENDIF                                                    SBF3A.716    
               ENDDO                                                       SBF3A.717    
            ENDDO                                                          SBF3A.718    
         ENDIF                                                             SBF3A.719    
         DO I=1, N_AUGMENT                                                 SBF3A.720    
            DO L=1, N_PROFILE                                              SBF3A.721    
               IF (ABS(FLUX_DIFFUSE_GREY(L, I)).GT.0.0E+00) THEN           SBF3A.722    
                  FLUX_RATIO_DIFFUSE(L, I)=FLUX_RATIO_DIFFUSE(L, I)        SBF3A.723    
     &               *FLUX_DIFFUSE_BAND(L, I)/FLUX_DIFFUSE_GREY(L, I)      SBF3A.724    
               ELSE                                                        SBF3A.725    
                  FLUX_RATIO_DIFFUSE(L, I)=1.0E+00                         SBF3A.726    
               ENDIF                                                       SBF3A.727    
            ENDDO                                                          SBF3A.728    
         ENDDO                                                             SBF3A.729    
!                                                                          SBF3A.730    
         IF (L_CLEAR) THEN                                                 SBF3A.731    
!           CALCULATE THE FLUX RATIOS FOR THE CLEAR FLUXES.                SBF3A.732    
            IF (ISOLIR.EQ.IP_SOLAR) THEN                                   SBF3A.733    
               DO I=0, N_LAYER                                             SBF3A.734    
                  DO L=1, N_PROFILE                                        SBF3A.735    
                     IF (ABS(FLUX_DIRECT_CLEAR_GREY(L, I))                 SBF3A.736    
     &                  .GT.0.0E+00) THEN                                  SBF3A.737    
                        FLUX_RATIO_DIRECT_CLEAR(L, I)                      SBF3A.738    
     &                     =FLUX_RATIO_DIRECT_CLEAR(L, I)                  SBF3A.739    
     &                     *FLUX_DIRECT_CLEAR_BAND(L, I)                   SBF3A.740    
     &                     /FLUX_DIRECT_CLEAR_GREY(L, I)                   SBF3A.741    
                     ELSE                                                  SBF3A.742    
                        FLUX_RATIO_DIRECT_CLEAR(L, I)=1.0E+00              SBF3A.743    
                     ENDIF                                                 SBF3A.744    
                  ENDDO                                                    SBF3A.745    
               ENDDO                                                       SBF3A.746    
            ENDIF                                                          SBF3A.747    
!                                                                          SBF3A.748    
            DO I=1, N_AUGMENT                                              SBF3A.749    
               DO L=1, N_PROFILE                                           SBF3A.750    
                  IF (ABS(FLUX_DIFFUSE_CLEAR_GREY(L, I))                   SBF3A.751    
     &               .GT.0.0E+00) THEN                                     SBF3A.752    
                     FLUX_RATIO_DIFFUSE_CLEAR(L, I)                        SBF3A.753    
     &                  =FLUX_RATIO_DIFFUSE_CLEAR(L, I)                    SBF3A.754    
     &                  *FLUX_DIFFUSE_CLEAR_BAND(L, I)                     SBF3A.755    
     &                  /FLUX_DIFFUSE_CLEAR_GREY(L, I)                     SBF3A.756    
                  ELSE                                                     SBF3A.757    
                     FLUX_RATIO_DIFFUSE_CLEAR(L, I)=1.0E+00                SBF3A.758    
                  ENDIF                                                    SBF3A.759    
               ENDDO                                                       SBF3A.760    
            ENDDO                                                          SBF3A.761    
         ENDIF                                                             SBF3A.762    
!                                                                          SBF3A.763    
      ENDDO                                                                SBF3A.764    
!                                                                          SBF3A.765    
!     THE OVERALL FLUX IN THE BAND IS CALCULATED FROM THE                  SBF3A.766    
!     GREY FLUX AND THE FLUX RATIOS.                                       SBF3A.767    
      IF (ISOLIR.EQ.IP_SOLAR) THEN                                         SBF3A.768    
         DO I=0, N_LAYER                                                   SBF3A.769    
            DO L=1, N_PROFILE                                              SBF3A.770    
               FLUX_DIRECT_BAND(L, I)=FLUX_RATIO_DIRECT(L, I)              SBF3A.771    
     &            *FLUX_DIRECT_GREY(L, I)                                  SBF3A.772    
            ENDDO                                                          SBF3A.773    
         ENDDO                                                             SBF3A.774    
      ENDIF                                                                SBF3A.775    
      DO I=1, N_AUGMENT                                                    SBF3A.776    
         DO L=1, N_PROFILE                                                 SBF3A.777    
            FLUX_DIFFUSE_BAND(L, I)=FLUX_RATIO_DIFFUSE(L, I)               SBF3A.778    
     &         *FLUX_DIFFUSE_GREY(L, I)                                    SBF3A.779    
         ENDDO                                                             SBF3A.780    
      ENDDO                                                                SBF3A.781    
      IF (L_CLEAR) THEN                                                    SBF3A.782    
         IF (ISOLIR.EQ.IP_SOLAR) THEN                                      SBF3A.783    
            DO I=0, N_LAYER                                                SBF3A.784    
               DO L=1, N_PROFILE                                           SBF3A.785    
                  FLUX_DIRECT_CLEAR_BAND(L, I)                             SBF3A.786    
     &               =FLUX_RATIO_DIRECT_CLEAR(L, I)                        SBF3A.787    
     &               *FLUX_DIRECT_CLEAR_GREY(L, I)                         SBF3A.788    
               ENDDO                                                       SBF3A.789    
            ENDDO                                                          SBF3A.790    
         ENDIF                                                             SBF3A.791    
         DO I=1, N_AUGMENT                                                 SBF3A.792    
            DO L=1, N_PROFILE                                              SBF3A.793    
               FLUX_DIFFUSE_CLEAR_BAND(L, I)                               SBF3A.794    
     &            =FLUX_RATIO_DIFFUSE_CLEAR(L, I)                          SBF3A.795    
     &            *FLUX_DIFFUSE_CLEAR_GREY(L, I)                           SBF3A.796    
            ENDDO                                                          SBF3A.797    
         ENDDO                                                             SBF3A.798    
      ENDIF                                                                SBF3A.799    
!                                                                          SBF3A.800    
!                                                                          SBF3A.801    
!     CONVERT BACK TO TOTAL FLUXES.                                        SBF3A.802    
      IF (ISOLIR.EQ.IP_SOLAR) THEN                                         SBF3A.803    
         IF (L_NET) THEN                                                   SBF3A.804    
            DO I=1, N_AUGMENT                                              SBF3A.805    
               DO L=1, N_PROFILE                                           SBF3A.806    
                  FLUX_DIFFUSE_BAND(L, I)=FLUX_DIFFUSE_BAND(L, I)          SBF3A.807    
     &               +FLUX_DIRECT_BAND(L, I-1)                             SBF3A.808    
               ENDDO                                                       SBF3A.809    
            ENDDO                                                          SBF3A.810    
         ELSE                                                              SBF3A.811    
            DO I=1, N_AUGMENT                                              SBF3A.812    
               DO L=1, N_PROFILE                                           SBF3A.813    
                  FLUX_DIFFUSE_BAND(L, 2*I)=FLUX_DIFFUSE_BAND(L, 2*I)      SBF3A.814    
     &               +FLUX_DIRECT_BAND(L, I-1)                             SBF3A.815    
               ENDDO                                                       SBF3A.816    
            ENDDO                                                          SBF3A.817    
         ENDIF                                                             SBF3A.818    
         IF (L_CLEAR) THEN                                                 SBF3A.819    
            IF (L_NET) THEN                                                SBF3A.820    
               DO I=1, N_AUGMENT                                           SBF3A.821    
                  DO L=1, N_PROFILE                                        SBF3A.822    
                     FLUX_DIFFUSE_CLEAR_BAND(L, I)                         SBF3A.823    
     &                  =FLUX_DIFFUSE_CLEAR_BAND(L, I)                     SBF3A.824    
     &                  +FLUX_DIRECT_CLEAR_BAND(L, I-1)                    SBF3A.825    
                  ENDDO                                                    SBF3A.826    
               ENDDO                                                       SBF3A.827    
            ELSE                                                           SBF3A.828    
               DO I=1, N_AUGMENT                                           SBF3A.829    
                  DO L=1, N_PROFILE                                        SBF3A.830    
                     FLUX_DIFFUSE_CLEAR_BAND(L, 2*I)                       SBF3A.831    
     &                  =FLUX_DIFFUSE_CLEAR_BAND(L, 2*I)                   SBF3A.832    
     &                  +FLUX_DIRECT_CLEAR_BAND(L, I-1)                    SBF3A.833    
                  ENDDO                                                    SBF3A.834    
               ENDDO                                                       SBF3A.835    
            ENDIF                                                          SBF3A.836    
         ENDIF                                                             SBF3A.837    
      ENDIF                                                                SBF3A.838    
!                                                                          SBF3A.839    
!                                                                          SBF3A.840    
!                                                                          SBF3A.841    
      RETURN                                                               SBF3A.842    
      END                                                                  SBF3A.843    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            SBF3A.844    
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.78