*IF DEF,A70_1A,OR,DEF,A70_1B                                               APB4F405.73     
*IF DEF,A01_3A,OR,DEF,A02_3A                                               SB1G3A.2      
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved.    GTS2F400.13739  
C                                                                          GTS2F400.13740  
C Use, duplication or disclosure of this code is subject to the            GTS2F400.13741  
C restrictions as set forth in the contract.                               GTS2F400.13742  
C                                                                          GTS2F400.13743  
C                Meteorological Office                                     GTS2F400.13744  
C                London Road                                               GTS2F400.13745  
C                BRACKNELL                                                 GTS2F400.13746  
C                Berkshire UK                                              GTS2F400.13747  
C                RG12 2SZ                                                  GTS2F400.13748  
C                                                                          GTS2F400.13749  
C If no contract has been raised with this copy of the code, the use,      GTS2F400.13750  
C duplication or disclosure of it is strictly prohibited.  Permission      GTS2F400.13751  
C to do so must first be obtained in writing from the Head of Numerical    GTS2F400.13752  
C Modelling at the above address.                                          GTS2F400.13753  
C ******************************COPYRIGHT******************************    GTS2F400.13754  
C                                                                          GTS2F400.13755  
!+ Subroutine to calculate the fluxes within the band with one gas.        SB1G3A.3      
!                                                                          SB1G3A.4      
! Method:                                                                  SB1G3A.5      
!       Monochromatic calculations are performed for each ESFT term        SB1G3A.6      
!       and the results are summed.                                        SB1G3A.7      
!                                                                          SB1G3A.8      
! Current Owner of Code: J. M. Edwards                                     SB1G3A.9      
!                                                                          SB1G3A.10     
! History:                                                                 SB1G3A.11     
!       Version         Date                    Comment                    SB1G3A.12     
!       4.0             27-07-95                Original Code              SB1G3A.13     
!                                               (J. M. Edwards)            SB1G3A.14     
!       4.2             08-08-96                Code for vertically        ADB1F402.621    
!                                               coherent convective        ADB1F402.622    
!                                               cloud added.               ADB1F402.623    
!                                               (J. M. Edwards)            ADB1F402.624    
!       4.5             18-05-98                Variable for obsolete      ADB1F405.563    
!                                               solver removed.            ADB1F405.564    
!                                               (J. M. Edwards)            ADB1F405.565    
!                                                                          SB1G3A.15     
! Description of Code:                                                     SB1G3A.16     
!   FORTRAN 77  with extensions listed in documentation.                   SB1G3A.17     
!                                                                          SB1G3A.18     
!- ---------------------------------------------------------------------   SB1G3A.19     

      SUBROUTINE SOLVE_BAND_ONE_GAS(IERR                                    2,4SB1G3A.20     
!                       Atmospheric Column                                 SB1G3A.21     
     &   , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS                SB1G3A.22     
!                       Angular Integration                                SB1G3A.23     
     &   , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT            SB1G3A.24     
     &   , L_RESCALE, N_ORDER_GAUSS                                        SB1G3A.25     
!                       Treatment of Scattering                            SB1G3A.26     
     &   , I_SCATTER_METHOD_BAND                                           SB1G3A.27     
!                       Options for Solver                                 SB1G3A.28     
     &   , I_SOLVER, L_NET, N_AUGMENT                                      ADB1F405.566    
!                       Gaseous Properties                                 SB1G3A.30     
     &   , I_BAND, I_GAS                                                   SB1G3A.31     
     &   , I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC                          SB1G3A.32     
     &   , K_ESFT, W_ESFT, SCALE_VECTOR                                    SB1G3A.33     
     &   , P_REFERENCE, T_REFERENCE                                        SB1G3A.34     
     &   , GAS_MIX_RATIO, GAS_FRAC_RESCALED                                SB1G3A.35     
     &   , L_DOPPLER, DOPPLER_CORRECTION                                   SB1G3A.36     
!                       Spectral Region                                    SB1G3A.37     
     &   , ISOLIR                                                          SB1G3A.38     
!                       Solar Properties                                   SB1G3A.39     
     &   , SEC_0, SOLAR_FLUX                                               SB1G3A.40     
!                       Infra-red Properties                               SB1G3A.41     
     &   , PLANCK_SOURCE_TOP, PLANCK_SOURCE_BOTTOM                         SB1G3A.42     
     &   , DIFF_PLANCK_BAND                                                SB1G3A.43     
     &   , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2                            SB1G3A.44     
!                       Surface Properties                                 SB1G3A.45     
     &   , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR, THERMAL_GROUND_BAND    SB1G3A.46     
!                       Clear-sky Optical Properties                       SB1G3A.47     
     &   , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE                SB1G3A.48     
     &   , FORWARD_SCATTER_FREE                                            SB1G3A.49     
!                       Cloudy Properties                                  SB1G3A.50     
     &   , L_CLOUD, I_CLOUD                                                SB1G3A.51     
!                       Cloud Geometry                                     SB1G3A.52     
     &   , N_CLOUD_TOP                                                     SB1G3A.53     
     &   , N_CLOUD_TYPE, FRAC_CLOUD                                        SB1G3A.54     
     &   , I_REGION_CLOUD, FRAC_REGION                                     ADB1F402.625    
     &   , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE                          SB1G3A.55     
     &   , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE                       SB1G3A.56     
     &   , CLOUD_OVERLAP                                                   SB1G3A.57     
     &   , N_COLUMN, L_COLUMN, AREA_COLUMN                                 SB1G3A.58     
!                       Cloudy Optical Properties                          SB1G3A.59     
     &   , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD                              SB1G3A.60     
     &   , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD                          SB1G3A.61     
!                       Calculated Fluxes                                  SB1G3A.62     
     &   , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND                               SB1G3A.63     
!                       Flags for Clear-sky Fluxes                         SB1G3A.64     
     &   , L_CLEAR, I_SOLVER_CLEAR                                         SB1G3A.65     
!                       Clear-sky Fluxes                                   SB1G3A.66     
     &   , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND                   SB1G3A.67     
!                       Planckian Function                                 SB1G3A.68     
     &   , PLANCK_SOURCE_BAND                                              SB1G3A.69     
!                       Dimensions of Arrays                               SB1G3A.70     
     &   , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                              SB1G3A.71     
     &   , NPD_BAND, NPD_SPECIES                                           SB1G3A.72     
     &   , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC                SB1G3A.73     
     &   )                                                                 SB1G3A.74     
!                                                                          SB1G3A.75     
!                                                                          SB1G3A.76     
!                                                                          SB1G3A.77     
      IMPLICIT NONE                                                        SB1G3A.78     
!                                                                          SB1G3A.79     
!                                                                          SB1G3A.80     
!     SIZES OF DUMMY ARRAYS.                                               SB1G3A.81     
      INTEGER   !, INTENT(IN)                                              SB1G3A.82     
     &     NPD_PROFILE                                                     SB1G3A.83     
!             MAXIMUM NUMBER OF PROFILES                                   SB1G3A.84     
     &   , NPD_LAYER                                                       SB1G3A.85     
!             MAXIMUM NUMBER OF LAYERS                                     SB1G3A.86     
     &   , NPD_COLUMN                                                      SB1G3A.87     
!             NUMBER OF COLUMNS PER POINT                                  SB1G3A.88     
     &   , NPD_BAND                                                        SB1G3A.89     
!             MAXIMUM NUMBER OF BANDS                                      SB1G3A.90     
     &   , NPD_SPECIES                                                     SB1G3A.91     
!             MAXIMUM NUMBER OF SPECIES                                    SB1G3A.92     
     &   , NPD_ESFT_TERM                                                   SB1G3A.93     
!             MAXIMUM NUMBER OF ESFT VARIABLES                             SB1G3A.94     
     &   , NPD_SCALE_VARIABLE                                              SB1G3A.95     
!             MAXIMUM NUMBER OF SCALING VARIABLES                          SB1G3A.96     
     &   , NPD_SCALE_FNC                                                   SB1G3A.97     
!             MAXIMUM NUMBER OF SCALING FUNCTIONS                          SB1G3A.98     
!                                                                          SB1G3A.99     
!     INCLUDE COMDECKS.                                                    SB1G3A.100    
*CALL DIMFIX3A                                                             SB1G3A.101    
*CALL ESFTSC3A                                                             SB1G3A.102    
*CALL SPCRG3A                                                              SB1G3A.103    
*CALL ERROR3A                                                              SB1G3A.104    
!                                                                          SB1G3A.105    
!                                                                          SB1G3A.106    
!                                                                          SB1G3A.107    
!     DUMMY ARGUMENTS.                                                     SB1G3A.108    
      INTEGER   !, INTENT(OUT)                                             SB1G3A.109    
     &     IERR                                                            SB1G3A.110    
!             ERROR FLAG                                                   SB1G3A.111    
!                                                                          SB1G3A.112    
!                       Atmospheric Column                                 SB1G3A.113    
      INTEGER   !, INTENT(IN)                                              SB1G3A.114    
     &     N_PROFILE                                                       SB1G3A.115    
!             NUMBER OF PROFILES                                           SB1G3A.116    
     &   , N_LAYER                                                         SB1G3A.117    
!             NUMBER OF LAYERS                                             SB1G3A.118    
     &   , I_TOP                                                           SB1G3A.119    
!             TOP OF VERTICAL GRID                                         SB1G3A.120    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.121    
     &     L_LAYER                                                         SB1G3A.122    
!             PROPERTIES GIVEN IN LAYERS                                   SB1G3A.123    
      REAL  !, INTENT(IN)                                                  SB1G3A.124    
     &     P(NPD_PROFILE, 0: NPD_LAYER)                                    SB1G3A.125    
!             PRESSURE                                                     SB1G3A.126    
     &   , T(NPD_PROFILE, 0: NPD_LAYER)                                    SB1G3A.127    
!             TEMPERATURE                                                  SB1G3A.128    
     &   , D_MASS(NPD_PROFILE, NPD_LAYER)                                  SB1G3A.129    
!             MASS THICKNESS OF EACH LAYER                                 SB1G3A.130    
!                                                                          SB1G3A.131    
!                       Angular Integration                                SB1G3A.132    
      INTEGER   !, INTENT(IN)                                              SB1G3A.133    
     &     I_ANGULAR_INTEGRATION                                           SB1G3A.134    
!             ANGULAR INTEGRATION SCHEME                                   SB1G3A.135    
     &   , I_2STREAM                                                       SB1G3A.136    
!             TWO-STREAM SCHEME                                            SB1G3A.137    
     &   , N_ORDER_GAUSS                                                   SB1G3A.138    
!             ORDER OF GAUSSIAN INTEGRATION                                SB1G3A.139    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.140    
     &     L_2_STREAM_CORRECT                                              SB1G3A.141    
!             USE AN EDGE CORRECTION                                       SB1G3A.142    
     &   , L_RESCALE                                                       SB1G3A.143    
!             RESCALE OPTICAL PROPERTIES                                   SB1G3A.144    
!                                                                          SB1G3A.145    
!                       Treatment of Scattering                            SB1G3A.146    
      INTEGER   !, INTENT(IN)                                              SB1G3A.147    
     &     I_SCATTER_METHOD_BAND                                           SB1G3A.148    
!             METHOD OF TREATING SCATTERING                                SB1G3A.149    
!                                                                          SB1G3A.150    
!                       Options for Solver                                 SB1G3A.151    
      INTEGER   !, INTENT(IN)                                              SB1G3A.152    
     &     I_SOLVER                                                        SB1G3A.153    
!             SOLVER USED                                                  SB1G3A.154    
     &   , N_AUGMENT                                                       SB1G3A.157    
!             LENGTH OF LONG FLUX VECTOR                                   SB1G3A.158    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.159    
     &     L_NET                                                           SB1G3A.160    
!             SOLVE FOR NET FLUXES                                         SB1G3A.161    
!                                                                          SB1G3A.162    
!                       Gaseous Properties                                 SB1G3A.163    
      INTEGER   !, INTENT(IN)                                              SB1G3A.164    
     &     I_BAND                                                          SB1G3A.165    
!             BAND BEING CONSIDERED                                        SB1G3A.166    
     &   , I_GAS                                                           SB1G3A.167    
!             GAS BEING CONSIDERED                                         SB1G3A.168    
     &   , I_BAND_ESFT(NPD_BAND, NPD_SPECIES)                              SB1G3A.169    
!             NUMBER OF TERMS IN BAND                                      SB1G3A.170    
     &   , I_SCALE_ESFT(NPD_BAND, NPD_SPECIES)                             SB1G3A.171    
!             TYPE OF ESFT SCALING                                         SB1G3A.172    
     &   , I_SCALE_FNC(NPD_BAND, NPD_SPECIES)                              SB1G3A.173    
!             TYPE OF SCALING FUNCTION                                     SB1G3A.174    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.175    
     &     L_DOPPLER(NPD_SPECIES)                                          SB1G3A.176    
!             DOPPLER BROADENING INCLUDED                                  SB1G3A.177    
      REAL  !, INTENT(IN)                                                  SB1G3A.178    
     &     K_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES)                    SB1G3A.179    
!             EXPONENTIAL ESFT TERMS                                       SB1G3A.180    
     &   , W_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES)                    SB1G3A.181    
!             WEIGHTS FOR ESFT                                             SB1G3A.182    
     &   , SCALE_VECTOR(NPD_SCALE_VARIABLE, NPD_ESFT_TERM, NPD_BAND        SB1G3A.183    
     &        , NPD_SPECIES)                                               SB1G3A.184    
!             ABSORBER SCALING PARAMETERS                                  SB1G3A.185    
     &   , P_REFERENCE(NPD_SPECIES, NPD_BAND)                              SB1G3A.186    
!             REFERENCE SCALING PRESSURE                                   SB1G3A.187    
     &   , T_REFERENCE(NPD_SPECIES, NPD_BAND)                              SB1G3A.188    
!             REFERENCE SCALING TEMPERATURE                                SB1G3A.189    
     &   , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES)           SB1G3A.190    
!             GAS MASS MIXING RATIOS                                       SB1G3A.191    
     &   , GAS_FRAC_RESCALED(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES)       SB1G3A.192    
!             RESCALED GAS MASS FRACTIONS                                  SB1G3A.193    
     &   , DOPPLER_CORRECTION(NPD_SPECIES)                                 SB1G3A.194    
!             DOPPLER BROADENING TERMS                                     SB1G3A.195    
!                                                                          SB1G3A.196    
!                       Spectral Region                                    SB1G3A.197    
      INTEGER   !, INTENT(IN)                                              SB1G3A.198    
     &     ISOLIR                                                          SB1G3A.199    
!             VISIBLE OR IR                                                SB1G3A.200    
!                                                                          SB1G3A.201    
!                       Solar Properties                                   SB1G3A.202    
      REAL  !, INTENT(IN)                                                  SB1G3A.203    
     &     SEC_0(NPD_PROFILE)                                              SB1G3A.204    
!             SECANT OF SOLAR ZENITH ANGLE                                 SB1G3A.205    
     &   , SOLAR_FLUX(NPD_PROFILE)                                         SB1G3A.206    
!             INCIDENT SOLAR FLUX IN BAND                                  SB1G3A.207    
!                                                                          SB1G3A.208    
!                       Infra-red Properties                               SB1G3A.209    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.210    
     &     L_IR_SOURCE_QUAD                                                SB1G3A.211    
!             USE A QUADRATIC SOURCE FUNCTION                              SB1G3A.212    
      REAL  !, INTENT(IN)                                                  SB1G3A.213    
     &     PLANCK_SOURCE_TOP(NPD_PROFILE)                                  SB1G3A.214    
!             PLANCKIAN SOURCE AT TOP                                      SB1G3A.215    
     &   , PLANCK_SOURCE_BOTTOM(NPD_PROFILE)                               SB1G3A.216    
!             PLANCKIAN SOURCE AT BOTTOM                                   SB1G3A.217    
     &   , DIFF_PLANCK_BAND(NPD_PROFILE, NPD_LAYER)                        SB1G3A.218    
!             THERMAL SOURCE FUNCTION                                      SB1G3A.219    
     &   , DIFF_PLANCK_BAND_2(NPD_PROFILE, NPD_LAYER)                      SB1G3A.220    
!             TWICE SECOND DIFFERENCE OF PLANCKIAN IN BAND                 SB1G3A.221    
!                                                                          SB1G3A.222    
!                       Surface Properties                                 SB1G3A.223    
      REAL  !, INTENT(IN)                                                  SB1G3A.224    
     &     ALBEDO_SURFACE_DIFF(NPD_PROFILE)                                SB1G3A.225    
!             DIFFUSE SURFACE ALBEDO                                       SB1G3A.226    
     &   , ALBEDO_SURFACE_DIR(NPD_PROFILE)                                 SB1G3A.227    
!             DIRECT SURFACE ALBEDO                                        SB1G3A.228    
     &   , THERMAL_GROUND_BAND(NPD_PROFILE)                                SB1G3A.229    
!             THERMAL SOURCE FUNCTION AT GROUND                            SB1G3A.230    
!                                                                          SB1G3A.231    
!                       Clear-sky optical Properties                       SB1G3A.232    
      REAL  !, INTENT(IN)                                                  SB1G3A.233    
     &     K_GREY_TOT_FREE(NPD_PROFILE, NPD_LAYER)                         SB1G3A.234    
!             FREE ABSORPTIVE EXTINCTION                                   SB1G3A.235    
     &   , K_EXT_SCAT_FREE(NPD_PROFILE, NPD_LAYER)                         SB1G3A.236    
!             FREE SCATTERING EXTINCTION                                   SB1G3A.237    
     &   , ASYMMETRY_FREE(NPD_PROFILE, NPD_LAYER)                          SB1G3A.238    
!             CLEAR-SKY ASYMMETRY                                          SB1G3A.239    
     &   , FORWARD_SCATTER_FREE(NPD_PROFILE, NPD_LAYER)                    SB1G3A.240    
!             FREE FORWARD SCATTERING                                      SB1G3A.241    
!                                                                          SB1G3A.242    
!                       Cloudy Properties                                  SB1G3A.243    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.244    
     &     L_CLOUD                                                         SB1G3A.245    
!             CLOUDS REQUIRED                                              SB1G3A.246    
      INTEGER   !, INTENT(IN)                                              SB1G3A.247    
     &     I_CLOUD                                                         SB1G3A.248    
!             CLOUD SCHEME USED                                            SB1G3A.249    
!                                                                          SB1G3A.250    
!                       Cloud Geometry                                     SB1G3A.251    
      INTEGER   !, INTENT(IN)                                              SB1G3A.252    
     &     N_CLOUD_TOP                                                     SB1G3A.253    
!             TOP CLOUDY LAYER                                             SB1G3A.254    
     &   , N_CLOUD_TYPE                                                    SB1G3A.255    
!             NUMBER OF TYPES OF CLOUDS                                    SB1G3A.256    
     &   , N_FREE_PROFILE(NPD_LAYER)                                       SB1G3A.257    
!             NUMBER OF FREE PROFILES                                      SB1G3A.258    
     &   , I_FREE_PROFILE(NPD_PROFILE, NPD_LAYER)                          SB1G3A.259    
!             INDICES OF FREE PROFILES                                     SB1G3A.260    
     &   , N_CLOUD_PROFILE(NPD_LAYER)                                      SB1G3A.261    
!             NUMBER OF CLOUDY PROFILES                                    SB1G3A.262    
     &   , I_CLOUD_PROFILE(NPD_PROFILE, NPD_LAYER)                         SB1G3A.263    
!             INDICES OF CLOUDY PROFILES                                   SB1G3A.264    
     &   , N_COLUMN(NPD_PROFILE)                                           SB1G3A.265    
!             NUMBER OF COLUMNS REQUIRED                                   SB1G3A.266    
     &   , I_REGION_CLOUD(NPD_CLOUD_TYPE)                                  ADB1F402.626    
!             REGIONS IN WHICH TYPES OF CLOUDS FALL                        ADB1F402.627    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.267    
     &     L_COLUMN(NPD_PROFILE, NPD_LAYER, NPD_COLUMN)                    SB1G3A.268    
!             FLAGS FOR CONTENT OF COLUMNS                                 SB1G3A.269    
      REAL  !, INTENT(IN)                                                  SB1G3A.270    
     &     W_FREE(NPD_PROFILE, NPD_LAYER)                                  SB1G3A.271    
!             CLEAR-SKY FRACTION                                           SB1G3A.272    
     &   , W_CLOUD(NPD_PROFILE, NPD_LAYER)                                 SB1G3A.273    
!             CLOUDY FRACTION                                              SB1G3A.274    
     &   , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)              SB1G3A.275    
!             FRACTIONS OF TYPES OF CLOUDS                                 SB1G3A.276    
     &   , CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF)     SB1G3A.277    
!             COEFFICIENTS FOR TRANSFER FOR ENERGY AT INTERFACES           SB1G3A.278    
     &   , AREA_COLUMN(NPD_PROFILE, NPD_COLUMN)                            SB1G3A.279    
!             AREAS OF COLUMNS                                             SB1G3A.280    
     &   , FRAC_REGION(NPD_PROFILE, NPD_LAYER, NPD_REGION)                 ADB1F402.628    
!             FRACTIONS OF TOTAL CLOUD OCCUPIED BY EACH REGION             ADB1F402.629    
!                                                                          SB1G3A.281    
!                       Cloudy Optical Properties                          SB1G3A.282    
      REAL  !, INTENT(IN)                                                  SB1G3A.283    
     &     K_GREY_TOT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)        SB1G3A.284    
!             CLOUDY ABSORPTIVE EXTINCTION                                 SB1G3A.285    
     &   , K_EXT_SCAT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)        SB1G3A.286    
!             CLOUDY SCATTERING EXTINCTION                                 SB1G3A.287    
     &   , ASYMMETRY_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)         SB1G3A.288    
!             CLOUDY ASYMMETRY                                             SB1G3A.289    
     &   , FORWARD_SCATTER_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE)   SB1G3A.290    
!             CLOUDY FORWARD SCATTERING                                    SB1G3A.291    
!                                                                          SB1G3A.292    
!                       Fluxes Calculated                                  SB1G3A.293    
      REAL  !, INTENT(OUT)                                                 SB1G3A.294    
     &     FLUX_DIRECT_BAND(NPD_PROFILE, 0: NPD_LAYER)                     SB1G3A.295    
!             DIRECT FLUX                                                  SB1G3A.296    
     &   , FLUX_TOTAL_BAND(NPD_PROFILE, 2*NPD_LAYER+2)                     SB1G3A.297    
!             TOTAL FLUX                                                   SB1G3A.298    
!                                                                          SB1G3A.299    
!                       Flags for Clear-sky Calculations                   SB1G3A.300    
      LOGICAL   !, INTENT(IN)                                              SB1G3A.301    
     &     L_CLEAR                                                         SB1G3A.302    
!             CALCULATE NET CLEAR-SKY PROPERTIES                           SB1G3A.303    
      INTEGER   !, INTENT(IN)                                              SB1G3A.304    
     &     I_SOLVER_CLEAR                                                  SB1G3A.305    
!             CLEAR SOLVER USED                                            SB1G3A.306    
!                                                                          SB1G3A.307    
!                       Clear-sky Fluxes Calculated                        SB1G3A.308    
      REAL  !, INTENT(OUT)                                                 SB1G3A.309    
     &     FLUX_DIRECT_CLEAR_BAND(NPD_PROFILE, 0: NPD_LAYER)               SB1G3A.310    
!             CLEAR-SKY DIRECT FLUX                                        SB1G3A.311    
     &   , FLUX_TOTAL_CLEAR_BAND(NPD_PROFILE, 2*NPD_LAYER+2)               SB1G3A.312    
!             CLEAR-SKY TOTAL FLUX                                         SB1G3A.313    
!                                                                          SB1G3A.314    
!                       Planckian Function                                 SB1G3A.315    
      REAL  !, INTENT(IN)                                                  SB1G3A.316    
     &     PLANCK_SOURCE_BAND(NPD_PROFILE, 0: NPD_LAYER)                   SB1G3A.317    
!             PLANCKIAN SOURCE IN BAND                                     SB1G3A.318    
!                                                                          SB1G3A.319    
!                                                                          SB1G3A.320    
!                                                                          SB1G3A.321    
!     LOCAL VARIABLES.                                                     SB1G3A.322    
      INTEGER                                                              SB1G3A.323    
     &     L                                                               SB1G3A.324    
!             LOOP VARIABLE                                                SB1G3A.325    
      INTEGER                                                              SB1G3A.326    
     &     I_GAS_POINTER(NPD_SPECIES)                                      SB1G3A.327    
!             POINTER ARRAY FOR MONOCHROMATIC ESFTs                        SB1G3A.328    
     &   , IEX                                                             SB1G3A.329    
!             INDEX OF ESFT TERM                                           SB1G3A.330    
      REAL                                                                 SB1G3A.331    
     &     K_ESFT_MONO(NPD_SPECIES)                                        SB1G3A.332    
!             ESFT MONOCHROMATIC EXPONENTS                                 SB1G3A.333    
     &   , K_GAS_ABS(NPD_PROFILE, NPD_LAYER)                               SB1G3A.334    
!             GASEOUS ABSORPTIVE EXTINCTION                                SB1G3A.335    
     &   , SOURCE_GROUND(NPD_PROFILE)                                      SB1G3A.336    
!             GROUND SOURCE FUNCTION                                       SB1G3A.337    
     &   , FLUX_INC_DIRECT(NPD_PROFILE)                                    SB1G3A.338    
!             INCIDENT DIRECT FLUX                                         SB1G3A.339    
     &   , FLUX_INC_DOWN(NPD_PROFILE)                                      SB1G3A.340    
!             INCIDENT DOWNWARD FLUX                                       SB1G3A.341    
     &   , DUMMY_KE(NPD_PROFILE, NPD_LAYER)                                SB1G3A.342    
!             DUMMY ARRAY (NOT USED)                                       SB1G3A.343    
      REAL                                                                 SB1G3A.344    
     &     FLUX_DIRECT_PART(NPD_PROFILE, 0: NPD_LAYER)                     SB1G3A.345    
!             PARTIAL DIRECT FLUX                                          SB1G3A.346    
     &   , FLUX_TOTAL_PART(NPD_PROFILE, 2*NPD_LAYER+2)                     SB1G3A.347    
!             PARTIAL TOTAL FLUX                                           SB1G3A.348    
     &   , FLUX_DIRECT_CLEAR_PART(NPD_PROFILE, 0: NPD_LAYER)               SB1G3A.349    
!             PARTIAL CLEAR-SKY DIRECT FLUX                                SB1G3A.350    
     &   , FLUX_TOTAL_CLEAR_PART(NPD_PROFILE, 2*NPD_LAYER+2)               SB1G3A.351    
!             PARTIAL CLEAR-SKY TOTAL FLUX                                 SB1G3A.352    
!                                                                          SB1G3A.353    
!     SUBROUTINES CALLED:                                                  SB1G3A.354    
      EXTERNAL                                                             SB1G3A.355    
     &     SCALE_ABSORB, GAS_OPTICAL_PROPERTIES                            SB1G3A.356    
     &   , MONOCHROMATIC_FLUX, AUGMENT_FLUX                                SB1G3A.357    
!                                                                          SB1G3A.358    
!                                                                          SB1G3A.359    
!                                                                          SB1G3A.360    
                                                                           SB1G3A.361    
!     THE ESFT TERMS FOR THE FIRST GAS IN THE BAND ALONE ARE USED.         SB1G3A.362    
      I_GAS_POINTER(1)=I_GAS                                               SB1G3A.363    
      DO IEX=1, I_BAND_ESFT(I_BAND, I_GAS)                                 SB1G3A.364    
!                                                                          SB1G3A.365    
!        RESCALE FOR EACH ESFT TERM IF THAT IS REQUIRED.                   SB1G3A.366    
         IF (I_SCALE_ESFT(I_BAND, I_GAS).EQ.IP_SCALE_TERM) THEN            SB1G3A.367    
            CALL SCALE_ABSORB(IERR, N_PROFILE, N_LAYER                     SB1G3A.368    
     &         , GAS_MIX_RATIO(1, 0, I_GAS), P, T                          SB1G3A.369    
     &         , L_LAYER, I_TOP                                            SB1G3A.370    
     &         , GAS_FRAC_RESCALED(1, 0, I_GAS)                            SB1G3A.371    
     &         , I_SCALE_FNC(I_BAND, I_GAS)                                SB1G3A.372    
     &         , P_REFERENCE(I_GAS, I_BAND)                                SB1G3A.373    
     &         , T_REFERENCE(I_GAS, I_BAND)                                SB1G3A.374    
     &         , SCALE_VECTOR(1, IEX, I_BAND, I_GAS)                       SB1G3A.375    
     &         , L_DOPPLER(I_GAS), DOPPLER_CORRECTION(I_GAS)               SB1G3A.376    
     &         , NPD_PROFILE, NPD_LAYER, NPD_SCALE_FNC                     SB1G3A.377    
     &         , NPD_SCALE_VARIABLE                                        SB1G3A.378    
     &         )                                                           SB1G3A.379    
            IF (IERR.NE.I_NORMAL) RETURN                                   SB1G3A.380    
         ENDIF                                                             SB1G3A.381    
!                                                                          SB1G3A.382    
!        SET THE APPROPRIATE BOUNDARY TERMS FOR THE TOTAL                  SB1G3A.383    
!        UPWARD AND DOWNWARD FLUXES.                                       SB1G3A.384    
!                                                                          SB1G3A.385    
         IF (ISOLIR.EQ.IP_SOLAR) THEN                                      SB1G3A.386    
!           VISIBLE REGION.                                                SB1G3A.387    
            DO L=1, N_PROFILE                                              SB1G3A.388    
               SOURCE_GROUND(L)=0.0E+00                                    SB1G3A.389    
               FLUX_INC_DOWN(L)=SOLAR_FLUX(L)                              SB1G3A.390    
               FLUX_INC_DIRECT(L)=SOLAR_FLUX(L)                            SB1G3A.391    
            ENDDO                                                          SB1G3A.392    
         ELSEIF (ISOLIR.EQ.IP_INFRA_RED) THEN                              SB1G3A.393    
!           INFRA-RED REGION.                                              SB1G3A.394    
            DO L=1, N_PROFILE                                              SB1G3A.395    
               FLUX_INC_DIRECT(L)=0.0E+00                                  SB1G3A.396    
               FLUX_INC_DOWN(L)=-PLANCK_SOURCE_TOP(L)                      SB1G3A.397    
               SOURCE_GROUND(L)=THERMAL_GROUND_BAND(L)                     SB1G3A.398    
     &            -(1.0E+00-ALBEDO_SURFACE_DIFF(L))                        SB1G3A.399    
     &            *PLANCK_SOURCE_BOTTOM(L)                                 SB1G3A.400    
            ENDDO                                                          SB1G3A.401    
         ENDIF                                                             SB1G3A.402    
!                                                                          SB1G3A.403    
!        ASSIGN THE MONOCHROMATIC ABSORPTION COEFFICIENT.                  SB1G3A.404    
         K_ESFT_MONO(I_GAS)=K_ESFT(IEX, I_BAND, I_GAS)                     SB1G3A.405    
!                                                                          SB1G3A.406    
         CALL GAS_OPTICAL_PROPERTIES(N_PROFILE, N_LAYER                    SB1G3A.407    
     &      , 1, I_GAS_POINTER, K_ESFT_MONO                                SB1G3A.408    
     &      , GAS_FRAC_RESCALED                                            SB1G3A.409    
     &      , K_GAS_ABS                                                    SB1G3A.410    
     &      , NPD_PROFILE, NPD_LAYER, NPD_SPECIES                          SB1G3A.411    
     &      )                                                              SB1G3A.412    
!                                                                          SB1G3A.413    
!                                                                          SB1G3A.414    
         CALL MONOCHROMATIC_FLUX(IERR                                      SB1G3A.415    
!                       Atmospheric Properties                             SB1G3A.416    
     &      , N_PROFILE, N_LAYER, D_MASS                                   SB1G3A.417    
!                       Angular Integration                                SB1G3A.418    
     &      , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT         SB1G3A.419    
     &      , L_RESCALE, N_ORDER_GAUSS                                     SB1G3A.420    
!                       Treatment of Scattering                            SB1G3A.421    
     &      , I_SCATTER_METHOD_BAND                                        SB1G3A.422    
!                       Options for Solver                                 SB1G3A.423    
     &      , I_SOLVER, L_NET, N_AUGMENT                                   ADB1F405.567    
!                       Gaseous Propreties                                 SB1G3A.425    
     &      , K_GAS_ABS                                                    SB1G3A.426    
!                       Options for Equivalent Extinction                  SB1G3A.427    
     &      , .FALSE., DUMMY_KE                                            SB1G3A.428    
!                       Spectral Region                                    SB1G3A.429    
     &      , ISOLIR                                                       SB1G3A.430    
!                       Infra-red Properties                               SB1G3A.431    
     &      , DIFF_PLANCK_BAND                                             SB1G3A.432    
     &      , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2                         SB1G3A.433    
!                       Conditions at TOA                                  SB1G3A.434    
     &      , SEC_0, FLUX_INC_DIRECT, FLUX_INC_DOWN                        SB1G3A.435    
!                       Surface Properties                                 SB1G3A.436    
     &      , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR, SOURCE_GROUND       SB1G3A.437    
     &      , THERMAL_GROUND_BAND                                          SB1G3A.438    
!                       Clear-sky Optical Properties                       SB1G3A.439    
     &      , K_GREY_TOT_FREE, K_EXT_SCAT_FREE                             SB1G3A.440    
     &      , ASYMMETRY_FREE, FORWARD_SCATTER_FREE                         SB1G3A.441    
!                       Cloudy Properties                                  SB1G3A.442    
     &      , L_CLOUD, I_CLOUD                                             SB1G3A.443    
!                       Cloud Geometry                                     SB1G3A.444    
     &      , N_CLOUD_TOP                                                  SB1G3A.445    
     &      , N_CLOUD_TYPE, FRAC_CLOUD                                     SB1G3A.446    
     &      , I_REGION_CLOUD, FRAC_REGION                                  ADB1F402.630    
     &      , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE                       SB1G3A.447    
     &      , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE                    SB1G3A.448    
     &      , CLOUD_OVERLAP                                                SB1G3A.449    
     &      , N_COLUMN, L_COLUMN, AREA_COLUMN                              SB1G3A.450    
!                       Cloudy Optical Properties                          SB1G3A.451    
     &      , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD                           SB1G3A.452    
     &      , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD                       SB1G3A.453    
!                       Flxues Calculated                                  SB1G3A.454    
     &      , FLUX_DIRECT_PART, FLUX_TOTAL_PART                            SB1G3A.455    
!                       Flags for Clear-sky Calculations                   SB1G3A.456    
     &      , L_CLEAR, I_SOLVER_CLEAR                                      SB1G3A.457    
!                       Clear-sky Fluxes Calculated                        SB1G3A.458    
     &      , FLUX_DIRECT_CLEAR_PART, FLUX_TOTAL_CLEAR_PART                SB1G3A.459    
!                       Planckian Function                                 SB1G3A.460    
     &      , PLANCK_SOURCE_BAND                                           SB1G3A.461    
!                       Dimensions of Arrays                               SB1G3A.462    
     &      , NPD_PROFILE, NPD_LAYER, NPD_COLUMN                           SB1G3A.463    
     &      )                                                              SB1G3A.464    
         IF (IERR.NE.I_NORMAL) RETURN                                      SB1G3A.465    
!                                                                          SB1G3A.466    
!        INCREMENT THE FLUXES WITHIN THE BAND.                             SB1G3A.467    
         CALL AUGMENT_FLUX(N_PROFILE, N_LAYER, N_AUGMENT                   SB1G3A.468    
     &      , ISOLIR, L_CLEAR                                              SB1G3A.469    
     &      , W_ESFT(IEX, I_BAND,  I_GAS)                                  SB1G3A.470    
     &      , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND                            SB1G3A.471    
     &      , FLUX_DIRECT_PART, FLUX_TOTAL_PART                            SB1G3A.472    
     &      , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND                SB1G3A.473    
     &      , FLUX_DIRECT_CLEAR_PART, FLUX_TOTAL_CLEAR_PART                SB1G3A.474    
     &      , NPD_PROFILE, NPD_LAYER                                       SB1G3A.475    
     &      )                                                              SB1G3A.476    
      ENDDO                                                                SB1G3A.477    
!                                                                          SB1G3A.478    
!                                                                          SB1G3A.479    
      RETURN                                                               SB1G3A.480    
      END                                                                  SB1G3A.481    
*ENDIF DEF,A01_3A,OR,DEF,A02_3A                                            SB1G3A.482    
*ENDIF DEF,A70_1A,OR,DEF,A70_1B                                            APB4F405.74