*IF DEF,A70_1B                                                             SBKE3B.2      
*IF DEF,A01_3A,OR,DEF,A02_3A                                               SBKE3B.3      
C ******************************COPYRIGHT******************************    SBKE3B.4      
C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved.    SBKE3B.5      
C                                                                          SBKE3B.6      
C Use, duplication or disclosure of this code is subject to the            SBKE3B.7      
C restrictions as set forth in the contract.                               SBKE3B.8      
C                                                                          SBKE3B.9      
C                Meteorological Office                                     SBKE3B.10     
C                London Road                                               SBKE3B.11     
C                BRACKNELL                                                 SBKE3B.12     
C                Berkshire UK                                              SBKE3B.13     
C                RG12 2SZ                                                  SBKE3B.14     
C                                                                          SBKE3B.15     
C If no contract has been raised with this copy of the code, the use,      SBKE3B.16     
C duplication or disclosure of it is strictly prohibited.  Permission      SBKE3B.17     
C to do so must first be obtained in writing from the Head of Numerical    SBKE3B.18     
C Modelling at the above address.                                          SBKE3B.19     
C ******************************COPYRIGHT******************************    SBKE3B.20     
C                                                                          SBKE3B.21     
!+ Subroutine to calculate fluxes using equivalent extinction.             SBKE3B.22     
!                                                                          SBKE3B.23     
! Method:                                                                  SBKE3B.24     
!       For each minor gas an equivalent extinction is calculated          SBKE3B.25     
!       from a clear-sky calculation. These equivalent extinctions         SBKE3B.26     
!       are then used in a full calculation involving the major gas.       SBKE3B.27     
!                                                                          SBKE3B.28     
! Current Owner of Code: J. M. Edwards                                     SBKE3B.29     
!                                                                          SBKE3B.30     
! History:                                                                 SBKE3B.31     
!       Version         Date                    Comment                    SBKE3B.32     
!       4.5             11-06-98                Optimised version          SBKE3B.33     
                                                                           SBKE3B.34     
! Description of Code:                                                     SBKE3B.35     
!   FORTRAN 77  with extensions listed in documentation.                   SBKE3B.36     
!                                                                          SBKE3B.37     
!- ---------------------------------------------------------------------   SBKE3B.38     

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