*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.75
*IF DEF,A01_3A,OR,DEF,A02_3A SBCF3A.2
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13756
C GTS2F400.13757
C Use, duplication or disclosure of this code is subject to the GTS2F400.13758
C restrictions as set forth in the contract. GTS2F400.13759
C GTS2F400.13760
C Meteorological Office GTS2F400.13761
C London Road GTS2F400.13762
C BRACKNELL GTS2F400.13763
C Berkshire UK GTS2F400.13764
C RG12 2SZ GTS2F400.13765
C GTS2F400.13766
C If no contract has been raised with this copy of the code, the use, GTS2F400.13767
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13768
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13769
C Modelling at the above address. GTS2F400.13770
C ******************************COPYRIGHT****************************** GTS2F400.13771
C GTS2F400.13772
!+ Subroutine to calculate the fluxes within the band using CFESFT. SBCF3A.3
! SBCF3A.4
! Method: SBCF3A.5
! The fluxes in the band including the grey processes and the SBCF3A.6
! major gas are calculated. Effective transmissions are found SBCF3A.7
! for the minor gases from clear-sky calculations. These effective SBCF3A.8
! transmissions are used to scale the fluxes found initially. SBCF3A.9
! This treatment of the overlaps is not appropriate in the solar SBCF3A.10
! region. SBCF3A.11
! SBCF3A.12
! Current Owner of Code: J. M. Edwards SBCF3A.13
! SBCF3A.14
! History: SBCF3A.15
! Version Date Comment SBCF3A.16
! 4.0 27-07-95 Original Code SBCF3A.17
! (J. M. Edwards) SBCF3A.18
! 4.2 08-08-96 Code for vertically ADB1F402.631
! coherent convective ADB1F402.632
! cloud added. ADB1F402.633
! (J. M. Edwards) ADB1F402.634
! 4.5 18-05-98 Variable for obsolete ADB1F405.568
! solver removed. ADB1F405.569
! (J. M. Edwards) ADB1F405.570
! SBCF3A.19
! Description of Code: SBCF3A.20
! FORTRAN 77 with extensions listed in documentation. SBCF3A.21
! SBCF3A.22
!- --------------------------------------------------------------------- SBCF3A.23
SUBROUTINE SOLVE_BAND_CLR_FESFT(IERR 1,6SBCF3A.24
! Atmospheric Column SBCF3A.25
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS SBCF3A.26
! Angular Integration SBCF3A.27
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT SBCF3A.28
& , L_RESCALE, N_ORDER_GAUSS SBCF3A.29
! Treatment of Scattering SBCF3A.30
& , I_SCATTER_METHOD_BAND SBCF3A.31
! Options for Solver SBCF3A.32
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.571
! Gaseous Properties SBCF3A.34
& , I_BAND, N_GAS SBCF3A.35
& , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC SBCF3A.36
& , K_ESFT, W_ESFT, SCALE_VECTOR SBCF3A.37
& , P_REFERENCE, T_REFERENCE SBCF3A.38
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED SBCF3A.39
& , L_DOPPLER, DOPPLER_CORRECTION SBCF3A.40
! Spectral region SBCF3A.41
& , ISOLIR SBCF3A.42
! Solar Properties SBCF3A.43
& , SEC_0, SOLAR_FLUX SBCF3A.44
! Infra-red Properties SBCF3A.45
& , PLANCK_SOURCE_BAND SBCF3A.46
& , DIFF_PLANCK_BAND SBCF3A.47
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 SBCF3A.48
! Surface Properties SBCF3A.49
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR, THERMAL_GROUND_BAND SBCF3A.50
! Clear-sky Optical Propeties SBCF3A.51
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE SBCF3A.52
& , FORWARD_SCATTER_FREE SBCF3A.53
! Cloudy Properties SBCF3A.54
& , L_CLOUD, I_CLOUD SBCF3A.55
! Cloud Geometry SBCF3A.56
& , N_CLOUD_TOP SBCF3A.57
& , N_CLOUD_TYPE, FRAC_CLOUD SBCF3A.58
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.635
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE SBCF3A.59
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE SBCF3A.60
& , CLOUD_OVERLAP SBCF3A.61
& , N_COLUMN, L_COLUMN, AREA_COLUMN SBCF3A.62
! Cloudy Optical Properties SBCF3A.63
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD SBCF3A.64
& , ASYMMETRY_CLOUD SBCF3A.65
& , FORWARD_SCATTER_CLOUD SBCF3A.66
! Fluxes Calculated SBCF3A.67
& , FLUX_DIRECT_BAND, FLUX_DIFFUSE_BAND SBCF3A.68
! Flags for Clear-sky Calculations SBCF3A.69
& , L_CLEAR, I_SOLVER_CLEAR SBCF3A.70
! Clear-sky Fluxes Calculated SBCF3A.71
& , FLUX_DIRECT_CLEAR_BAND, FLUX_DIFFUSE_CLEAR_BAND SBCF3A.72
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN SBCF3A.73
& , NPD_BAND, NPD_SPECIES SBCF3A.74
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC SBCF3A.75
& ) SBCF3A.76
! SBCF3A.77
! SBCF3A.78
! SBCF3A.79
IMPLICIT NONE SBCF3A.80
! SBCF3A.81
! SBCF3A.82
! SIZES OF DUMMY ARRAYS. SBCF3A.83
INTEGER !, INTENT(IN) SBCF3A.84
& NPD_PROFILE SBCF3A.85
! MAXIMUM NUMBER OF PROFILES SBCF3A.86
& , NPD_LAYER SBCF3A.87
! MAXIMUM NUMBER OF LAYERS SBCF3A.88
& , NPD_BAND SBCF3A.89
! MAXIMUM NUMBER OF SPECTRAL BANDS SBCF3A.90
& , NPD_SPECIES SBCF3A.91
! MAXIMUM NUMBER OF SPECIES SBCF3A.92
& , NPD_ESFT_TERM SBCF3A.93
! MAXIMUM NUMBER OF ESFT TERMS SBCF3A.94
& , NPD_SCALE_VARIABLE SBCF3A.95
! MAXIMUM NUMBER OF SCALE VARIABLES SBCF3A.96
& , NPD_SCALE_FNC SBCF3A.97
! MAXIMUM NUMBER OF SCALING FUNCTIONS SBCF3A.98
& , NPD_COLUMN SBCF3A.99
! NUMBER OF COLUMNS PER POINT SBCF3A.100
! SBCF3A.101
! INCLUDE COMDECKS. SBCF3A.102
*CALL DIMFIX3A
SBCF3A.103
*CALL STDIO3A
SBCF3A.104
*CALL ESFTSC3A
SBCF3A.105
*CALL PRMCH3A
SBCF3A.106
*CALL PRECSN3A
SBCF3A.107
*CALL DIFFKE3A
SBCF3A.108
*CALL SPCRG3A
SBCF3A.109
*CALL ERROR3A
SBCF3A.110
! SBCF3A.111
! SBCF3A.112
! SBCF3A.113
! DUMMY ARGUMENTS. SBCF3A.114
INTEGER !, INTENT(OUT) SBCF3A.115
& IERR SBCF3A.116
! ERROR FLAG SBCF3A.117
! SBCF3A.118
! Atmospheric Column SBCF3A.119
INTEGER !, INTENT(IN) SBCF3A.120
& N_PROFILE SBCF3A.121
! NUMBER OF PROFILES SBCF3A.122
& , N_LAYER SBCF3A.123
! NUMBER OF LAYERS SBCF3A.124
& , I_TOP SBCF3A.125
! TOP OF VERTICAL GRID SBCF3A.126
LOGICAL !, INTENT(IN) SBCF3A.127
& L_LAYER SBCF3A.128
! PROPERTIES GIVEN IN LAYERS SBCF3A.129
REAL !, INTENT(IN) SBCF3A.130
& D_MASS(NPD_PROFILE, NPD_LAYER) SBCF3A.131
! MASS THICKNESS OF EACH LAYER SBCF3A.132
& , P(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.133
! PRESSURE SBCF3A.134
& , T(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.135
! TEMPERATURE SBCF3A.136
! SBCF3A.137
! Angular Integration SBCF3A.138
INTEGER !, INTENT(IN) SBCF3A.139
& I_ANGULAR_INTEGRATION SBCF3A.140
! ANGULAR INTEGRATION SCHEME SBCF3A.141
& , I_2STREAM SBCF3A.142
! TWO-STREAM SCHEME SBCF3A.143
& , N_ORDER_GAUSS SBCF3A.144
! ORDER OF GAUSSIAN INTEGRATION SBCF3A.145
LOGICAL !, INTENT(IN) SBCF3A.146
& L_2_STREAM_CORRECT SBCF3A.147
! USE AN EDGE CORRECTION SBCF3A.148
& , L_RESCALE SBCF3A.149
! RESCALE OPTICAL PROPERTIES SBCF3A.150
! SBCF3A.151
! Treatment of Scattering SBCF3A.152
INTEGER !, INTENT(IN) SBCF3A.153
& I_SCATTER_METHOD_BAND SBCF3A.154
! METHOD OF TREATING SCATTERING SBCF3A.155
! SBCF3A.156
! Options for Solver SBCF3A.157
INTEGER !, INTENT(IN) SBCF3A.158
& I_SOLVER SBCF3A.159
! SOLVER USED SBCF3A.160
& , N_AUGMENT SBCF3A.163
! LENGTH OF LONG FLUX VECTOR SBCF3A.164
LOGICAL !, INTENT(IN) SBCF3A.165
& L_NET SBCF3A.166
! CALCULATE NET FLUXES SBCF3A.167
! SBCF3A.168
! Gaseous Properties SBCF3A.169
INTEGER !, INTENT(IN) SBCF3A.170
& I_BAND SBCF3A.171
! BAND BEING CONSIDERED SBCF3A.172
& , N_GAS SBCF3A.173
! NUMBER OF GASES IN BAND SBCF3A.174
& , INDEX_ABSORB(NPD_SPECIES, NPD_BAND) SBCF3A.175
! LIST OF ABSORBERS IN BANDS SBCF3A.176
& , I_BAND_ESFT(NPD_BAND, NPD_SPECIES) SBCF3A.177
! NUMBER OF TERMS IN BAND SBCF3A.178
& , I_SCALE_ESFT(NPD_BAND, NPD_SPECIES) SBCF3A.179
! TYPE OF ESFT SCALING SBCF3A.180
& , I_SCALE_FNC(NPD_BAND, NPD_SPECIES) SBCF3A.181
! TYPE OF SCALING FUNCTION SBCF3A.182
LOGICAL !, INTENT(IN) SBCF3A.183
& L_DOPPLER(NPD_SPECIES) SBCF3A.184
! DOPPLER BROADENING INCLUDED SBCF3A.185
REAL !, INTENT(IN) SBCF3A.186
& K_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES) SBCF3A.187
! EXPONENTIAL ESFT TERMS SBCF3A.188
& , W_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES) SBCF3A.189
! WEIGHTS FOR ESFT SBCF3A.190
& , SCALE_VECTOR(NPD_SCALE_VARIABLE, NPD_ESFT_TERM, NPD_BAND SBCF3A.191
& , NPD_SPECIES) SBCF3A.192
! ABSORBER SCALING PARAMETERS SBCF3A.193
& , P_REFERENCE(NPD_SPECIES, NPD_BAND) SBCF3A.194
! REFERENCE SCALING PRESSURE SBCF3A.195
& , T_REFERENCE(NPD_SPECIES, NPD_BAND) SBCF3A.196
! REFERENCE SCALING TEMPERATURE SBCF3A.197
& , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES) SBCF3A.198
! GAS MASS MIXING RATIOS SBCF3A.199
& , GAS_FRAC_RESCALED(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES) SBCF3A.200
! RESCALED GAS MASS FRACTIONS SBCF3A.201
& , DOPPLER_CORRECTION(NPD_SPECIES) SBCF3A.202
! DOPPLER BROADENING TERMS SBCF3A.203
! SBCF3A.204
! Spectral Region SBCF3A.205
INTEGER !, INTENT(IN) SBCF3A.206
& ISOLIR SBCF3A.207
! VISIBLE OR IR SBCF3A.208
! SBCF3A.209
! Solar Properties SBCF3A.210
REAL !, INTENT(IN) SBCF3A.211
& SEC_0(NPD_PROFILE) SBCF3A.212
! SECANT OF SOLAR ZENITH ANGLE SBCF3A.213
& , SOLAR_FLUX(NPD_PROFILE) SBCF3A.214
! INCIDENT SOLAR FLUX IN BAND SBCF3A.215
! SBCF3A.216
! Infra-red Properties SBCF3A.217
LOGICAL !, INTENT(IN) SBCF3A.218
& L_IR_SOURCE_QUAD SBCF3A.219
! USE A QUADRATIC SOURCE FUNCTION SBCF3A.220
REAL !, INTENT(IN) SBCF3A.221
& PLANCK_SOURCE_BAND(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.222
! PLANCKIAN SOURCE IN BAND SBCF3A.223
& , DIFF_PLANCK_BAND(NPD_PROFILE, NPD_LAYER) SBCF3A.224
! THERMAL SOURCE FUNCTION SBCF3A.225
& , DIFF_PLANCK_BAND_2(NPD_PROFILE, NPD_LAYER) SBCF3A.226
! 2x2ND DIFFERENCE OF PLANCKIAN IN BAND SBCF3A.227
! SBCF3A.228
! Surface Properties SBCF3A.229
REAL !, INTENT(IN) SBCF3A.230
& ALBEDO_SURFACE_DIFF(NPD_PROFILE) SBCF3A.231
! DIFFUSE SURFACE ALBEDO SBCF3A.232
& , ALBEDO_SURFACE_DIR(NPD_PROFILE) SBCF3A.233
! DIRECT SURFACE ALBEDO SBCF3A.234
& , THERMAL_GROUND_BAND(NPD_PROFILE) SBCF3A.235
! THERMAL SOURCE FUNCTION AT GROUND SBCF3A.236
! SBCF3A.237
! Clear-sky Optical Properties SBCF3A.238
REAL !, INTENT(IN) SBCF3A.239
& K_GREY_TOT_FREE(NPD_PROFILE, NPD_LAYER) SBCF3A.240
! FREE ABSORPTIVE EXTINCTION SBCF3A.241
& , K_EXT_SCAT_FREE(NPD_PROFILE, NPD_LAYER) SBCF3A.242
! FREE SCATTERING EXTINCTION SBCF3A.243
& , ASYMMETRY_FREE(NPD_PROFILE, NPD_LAYER) SBCF3A.244
! CLEAR-SKY ASYMMETRY SBCF3A.245
& , FORWARD_SCATTER_FREE(NPD_PROFILE, NPD_LAYER) SBCF3A.246
! FREE FORWARD SCATTERING SBCF3A.247
! SBCF3A.248
! SBCF3A.249
! Cloudy Properties SBCF3A.250
LOGICAL !, INTENT(IN) SBCF3A.251
& L_CLOUD SBCF3A.252
! CLOUDS REQUIRED SBCF3A.253
INTEGER !, INTENT(IN) SBCF3A.254
& I_CLOUD SBCF3A.255
! CLOUD SCHEME USED SBCF3A.256
! SBCF3A.257
! Cloud Geometry SBCF3A.258
INTEGER !, INTENT(IN) SBCF3A.259
& N_CLOUD_TOP SBCF3A.260
! TOP CLOUDY LAYER SBCF3A.261
& , N_CLOUD_TYPE SBCF3A.262
! NUMBER OF TYPES OF CLOUDS SBCF3A.263
& , N_FREE_PROFILE(NPD_LAYER) SBCF3A.264
! NUMBER OF FREE PROFILES SBCF3A.265
& , I_FREE_PROFILE(NPD_PROFILE, NPD_LAYER) SBCF3A.266
! INDICES OF FREE PROFILES SBCF3A.267
& , N_CLOUD_PROFILE(NPD_LAYER) SBCF3A.268
! NUMBER OF CLOUDY PROFILES SBCF3A.269
& , I_CLOUD_PROFILE(NPD_PROFILE, NPD_LAYER) SBCF3A.270
! INDICES OF CLOUDY PROFILES SBCF3A.271
& , N_COLUMN(NPD_PROFILE) SBCF3A.272
! NUMBER OF COLUMNS REQUIRED SBCF3A.273
& , I_REGION_CLOUD(NPD_CLOUD_TYPE) ADB1F402.636
! REGIONS IN WHICH TYPES OF CLOUDS FALL ADB1F402.637
LOGICAL !, INTENT(IN) SBCF3A.274
& L_COLUMN(NPD_PROFILE, NPD_LAYER, NPD_COLUMN) SBCF3A.275
! COLUMN FLAGS FOR COLUMNS SBCF3A.276
REAL !, INTENT(IN) SBCF3A.277
& W_CLOUD(NPD_PROFILE, NPD_LAYER) SBCF3A.278
! CLOUDY FRACTION SBCF3A.279
& , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER) SBCF3A.280
! FRACTIONS OF DIFFERENT TYPES OF CLOUD SBCF3A.281
& , W_FREE(NPD_PROFILE, NPD_LAYER) SBCF3A.282
! CLEAR-SKY FRACTION SBCF3A.283
& , CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF) SBCF3A.284
! COEFFICIENTS FOR TRANSFER FOR ENERGY AT INTERFACES SBCF3A.285
& , AREA_COLUMN(NPD_PROFILE, NPD_COLUMN) SBCF3A.286
! AREAS OF COLUMNS SBCF3A.287
& , FRAC_REGION(NPD_PROFILE, NPD_LAYER, NPD_REGION) ADB1F402.638
! FRACTIONS OF TOTAL CLOUD OCCUPIED BY EACH REGION ADB1F402.639
! SBCF3A.288
! Cloudy Optical Properties SBCF3A.289
REAL SBCF3A.290
& K_GREY_TOT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) SBCF3A.291
! CLOUDY ABSORPTIVE EXTINCTION SBCF3A.292
& , K_EXT_SCAT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) SBCF3A.293
! CLOUDY SCATTERING EXTINCTION SBCF3A.294
& , ASYMMETRY_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) SBCF3A.295
! CLOUDY ASYMMETRY SBCF3A.296
& , FORWARD_SCATTER_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) SBCF3A.297
! CLOUDY FORWARD SCATTERING SBCF3A.298
! SBCF3A.299
! Fluxes Calculated SBCF3A.300
REAL !, INTENT(OUT) SBCF3A.301
& FLUX_DIRECT_BAND(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.302
! DIRECT FLUX IN BAND SBCF3A.303
& , FLUX_DIFFUSE_BAND(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.304
! DIFFUSE FLUX IN BAND SBCF3A.305
! SBCF3A.306
! Flags for Clear-sky Fluxes SBCF3A.307
LOGICAL !, INTENT(IN) SBCF3A.308
& L_CLEAR SBCF3A.309
! CALCULATE CLEAR-SKY PROPERTIES SBCF3A.310
INTEGER !, INTENT(IN) SBCF3A.311
& I_SOLVER_CLEAR SBCF3A.312
! CLEAR SOLVER USED SBCF3A.313
! SBCF3A.314
! Clear-sky Fluxes Calculated SBCF3A.315
REAL !, INTENT(IN) SBCF3A.316
& FLUX_DIRECT_CLEAR_BAND(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.317
! CLEAR-SKY DIRECT FLUX IN BAND SBCF3A.318
& , FLUX_DIFFUSE_CLEAR_BAND(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.319
! CLEAR-SKY DIFFUSE FLUX IN BAND SBCF3A.320
! SBCF3A.321
! SBCF3A.322
! SBCF3A.323
! LOCAL VARIABLES. SBCF3A.324
INTEGER SBCF3A.325
& I SBCF3A.326
! LOOP VARIABLE SBCF3A.327
& , J SBCF3A.328
! LOOP VARIABLE SBCF3A.329
& , L SBCF3A.330
! LOOP VARIABLE SBCF3A.331
INTEGER SBCF3A.332
& I_GAS_BAND SBCF3A.333
! INDEX OF ACTIVE GAS SBCF3A.334
& , IEX SBCF3A.335
! INDEX OF ESFT TERM SBCF3A.336
REAL SBCF3A.337
& SOURCE_GROUND(NPD_PROFILE) SBCF3A.338
! GROUND SOURCE FUNCTION SBCF3A.339
& , FLUX_INC_DIRECT(NPD_PROFILE) SBCF3A.340
! INCIDENT DIRECT FLUX SBCF3A.341
& , FLUX_INC_DOWN(NPD_PROFILE) SBCF3A.342
! INCIDENT DOWNWARD FLUX SBCF3A.343
& , ESFT_WEIGHT SBCF3A.344
! ESFT WEIGHT FOR CURRENT CALCULATION SBCF3A.345
& , TAU_GAS(NPD_PROFILE, NPD_LAYER) SBCF3A.346
! OPTICAL DEPTH OF GAS SBCF3A.347
REAL SBCF3A.348
& FLUX_DIRECT_PART(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.349
! PARTIAL DIRECT FLUX SBCF3A.350
& , FLUX_DIFFUSE_PART(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.351
! PARTIAL DIFFUSE FLUX SBCF3A.352
& , FLUX_GAS_DIRECT(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.353
! DIRECT GASEOUS FLUX SBCF3A.354
& , FLUX_GAS_DIFFUSE(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.355
! DIFFUSE GASEOUS FLUX SBCF3A.356
& , FLUX_RATIO_DIRECT(NPD_PROFILE, 0: NPD_LAYER) SBCF3A.357
! RATIO OF DIRECT FLUXES SBCF3A.358
& , FLUX_RATIO_DIFFUSE(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.359
! RATIO OF DIFFUSE FLUXES SBCF3A.360
& , DUMMY_ARRAY(NPD_PROFILE, 2*NPD_LAYER+2) SBCF3A.361
! DUMMY ARRAY FOR ARGUMENT LISTS SBCF3A.362
! SBCF3A.363
! SUBROUTINES CALLED: SBCF3A.364
EXTERNAL SBCF3A.365
& SOLVE_BAND_ONE_GAS, INITIALIZE_FLUX, SCALE_ABSORB SBCF3A.366
& , MONOCHROMATIC_GAS_FLUX, AUGMENT_FLUX SBCF3A.367
! SBCF3A.368
! SBCF3A.369
! SBCF3A.370
! MODIFIED FAST EXPONENTIAL OVERLAP, SUPERPOSING ONE GAS AT A TIME SBCF3A.371
! ON THE MAJOR GAS. SBCF3A.372
! SBCF3A.373
! INITIAL SOLUTION FOR THE FLUXES WITH THE MAJOR GAS. SBCF3A.374
CALL SOLVE_BAND_ONE_GAS
(IERR SBCF3A.375
! Atmospheric Properties SBCF3A.376
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS SBCF3A.377
! Angular Integration SBCF3A.378
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT SBCF3A.379
& , L_RESCALE, N_ORDER_GAUSS SBCF3A.380
! Treatment of Scattering SBCF3A.381
& , I_SCATTER_METHOD_BAND SBCF3A.382
! Options for Solver SBCF3A.383
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.572
! Gaseous Properties SBCF3A.385
& , I_BAND, INDEX_ABSORB(1, I_BAND) SBCF3A.386
& , I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC SBCF3A.387
& , K_ESFT, W_ESFT, SCALE_VECTOR SBCF3A.388
& , P_REFERENCE, T_REFERENCE SBCF3A.389
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED SBCF3A.390
& , L_DOPPLER, DOPPLER_CORRECTION SBCF3A.391
! Spectral Region SBCF3A.392
& , ISOLIR SBCF3A.393
! Solar Properties SBCF3A.394
& , SEC_0, SOLAR_FLUX SBCF3A.395
! Infra-red Propeties SBCF3A.396
& , PLANCK_SOURCE_BAND(1, 0) SBCF3A.397
& , PLANCK_SOURCE_BAND(1, N_LAYER) SBCF3A.398
& , DIFF_PLANCK_BAND SBCF3A.399
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 SBCF3A.400
! Surface Properties SBCF3A.401
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR, THERMAL_GROUND_BAND SBCF3A.402
! Clear-sky Optical Properties SBCF3A.403
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE SBCF3A.404
& , FORWARD_SCATTER_FREE SBCF3A.405
! Cloudy Properties SBCF3A.406
& , L_CLOUD, I_CLOUD SBCF3A.407
! Cloud Geometry SBCF3A.408
& , N_CLOUD_TOP SBCF3A.409
& , N_CLOUD_TYPE, FRAC_CLOUD SBCF3A.410
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.640
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE SBCF3A.411
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE SBCF3A.412
& , CLOUD_OVERLAP SBCF3A.413
& , N_COLUMN, L_COLUMN, AREA_COLUMN SBCF3A.414
! Cloudy Optical Properties SBCF3A.415
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD SBCF3A.416
& , ASYMMETRY_CLOUD SBCF3A.417
& , FORWARD_SCATTER_CLOUD SBCF3A.418
! Fluxes Calculated SBCF3A.419
& , FLUX_DIRECT_BAND, FLUX_DIFFUSE_BAND SBCF3A.420
! Flags for Clear-sky Fluxes SBCF3A.421
& , L_CLEAR, I_SOLVER_CLEAR SBCF3A.422
! Clear-sky Flues Calculated SBCF3A.423
& , FLUX_DIRECT_CLEAR_BAND, FLUX_DIFFUSE_CLEAR_BAND SBCF3A.424
! Planckian Function SBCF3A.425
& , PLANCK_SOURCE_BAND SBCF3A.426
! Dimensions of Arrays SBCF3A.427
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN SBCF3A.428
& , NPD_BAND, NPD_SPECIES SBCF3A.429
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC SBCF3A.430
& ) SBCF3A.431
IF (IERR.NE.I_NORMAL) RETURN SBCF3A.432
! SBCF3A.433
! SBCF3A.434
! SBCF3A.435
! SBCF3A.436
! THE FLUX RATIOS ARE THE RATIOS OF THE FLUXES WITH JUST ONE GAS TO SBCF3A.437
! THE FLUXES WITH NO EXTINCTION. THE PRODUCT OVER ALL MINOR GASES IS SBCF3A.438
! USED TO CALCULATE THE OVERALL FLUX. THERE IS NO NEED TO USE THE SBCF3A.439
! CLEAR RATIOS. SBCF3A.440
! SBCF3A.441
CALL INITIALIZE_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT SBCF3A.442
& , ISOLIR SBCF3A.443
& , FLUX_RATIO_DIRECT, FLUX_RATIO_DIFFUSE SBCF3A.444
& , .FALSE. SBCF3A.445
& , DUMMY_ARRAY, DUMMY_ARRAY SBCF3A.446
& , 1.0E+00 SBCF3A.447
& , NPD_PROFILE, NPD_LAYER SBCF3A.448
& , L_NET SBCF3A.449
& ) SBCF3A.450
! SBCF3A.451
DO J=2, N_GAS SBCF3A.452
! SBCF3A.453
! INITIALIZE THE FLUX IN THE BAND TO ZERO. IN THIS SBCF3A.454
! LOOP FLUX_GAS_... IS USED AS A TEMPORARY VARIABLE SBCF3A.455
! TO HOLD THE FLUXES FOR ONE GAS. SBCF3A.456
CALL INITIALIZE_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT SBCF3A.457
& , ISOLIR SBCF3A.458
& , FLUX_GAS_DIRECT, FLUX_GAS_DIFFUSE SBCF3A.459
& , .FALSE. SBCF3A.460
& , DUMMY_ARRAY, DUMMY_ARRAY SBCF3A.461
& , 0.0E+00 SBCF3A.462
& , NPD_PROFILE, NPD_LAYER SBCF3A.463
& , L_NET SBCF3A.464
& ) SBCF3A.465
! SBCF3A.466
I_GAS_BAND=INDEX_ABSORB(J, I_BAND) SBCF3A.467
DO IEX=1, I_BAND_ESFT(I_BAND, I_GAS_BAND) SBCF3A.468
! SBCF3A.469
! STORE THE ESFT WEIGHT FOR FUTURE USE. SBCF3A.470
ESFT_WEIGHT=W_ESFT(IEX, I_BAND, I_GAS_BAND) SBCF3A.471
! SBCF3A.472
! RESCALE THE AMOUNT OF GAS FOR THIS ABSORBER IF REQUIRED. SBCF3A.473
IF (I_SCALE_ESFT(I_BAND, I_GAS_BAND).EQ.IP_SCALE_TERM) THEN SBCF3A.474
CALL SCALE_ABSORB
(IERR, N_PROFILE, N_LAYER SBCF3A.475
& , GAS_MIX_RATIO(1, 0, I_GAS_BAND), P, T SBCF3A.476
& , L_LAYER, I_TOP SBCF3A.477
& , GAS_FRAC_RESCALED(1, 0, I_GAS_BAND) SBCF3A.478
& , I_SCALE_FNC(I_BAND, I_GAS_BAND) SBCF3A.479
& , P_REFERENCE(I_GAS_BAND, I_BAND) SBCF3A.480
& , T_REFERENCE(I_GAS_BAND, I_BAND) SBCF3A.481
& , SCALE_VECTOR(1, IEX, I_BAND, I_GAS_BAND) SBCF3A.482
& , L_DOPPLER(I_GAS_BAND) SBCF3A.483
& , DOPPLER_CORRECTION(I_GAS_BAND) SBCF3A.484
& , NPD_PROFILE, NPD_LAYER, NPD_SCALE_FNC SBCF3A.485
& , NPD_SCALE_VARIABLE SBCF3A.486
& ) SBCF3A.487
IF (IERR.NE.I_NORMAL) RETURN SBCF3A.488
ENDIF SBCF3A.489
! SBCF3A.490
! SET THE APPROPRIATE BOUNDARY TERMS FOR THE TWO-STREAM SBCF3A.491
! TOTAL UPWARD AND DOWNWARD FLUXES AT THE BOUNDARIES. SBCF3A.492
! SBCF3A.493
IF (ISOLIR.EQ.IP_SOLAR) THEN SBCF3A.494
! THIS TREATMENT OF THE OVERLAPS DOES NOT APPLY TO SBCF3A.495
! THE SOLAR REGION. SBCF3A.496
WRITE(IU_ERR, '(/A)') SBCF3A.497
& '*** ERROR: CLEAR-SKY FESFT IS NOT APPROPRIATE ' SBCF3A.498
& //'IN THE SOLAR REGION.' SBCF3A.499
IERR=I_ERR_FATAL SBCF3A.500
RETURN SBCF3A.501
ELSE IF (ISOLIR.EQ.IP_INFRA_RED) THEN SBCF3A.502
! INFRA-RED REGION. SBCF3A.503
DO L=1, N_PROFILE SBCF3A.504
FLUX_INC_DIRECT(L)=0.0E+00 SBCF3A.505
FLUX_INC_DOWN(L)=-PLANCK_SOURCE_BAND(L, 0) SBCF3A.506
SOURCE_GROUND(L)=THERMAL_GROUND_BAND(L) SBCF3A.507
& -(1.0E+00-ALBEDO_SURFACE_DIFF(L)) SBCF3A.508
& *PLANCK_SOURCE_BAND(L, N_LAYER) SBCF3A.509
ENDDO SBCF3A.510
ENDIF SBCF3A.511
! SBCF3A.512
! SET THE OPTICAL DEPTHS OF EACH LAYER. SBCF3A.513
DO I=1, N_LAYER SBCF3A.514
DO L=1, N_PROFILE SBCF3A.515
TAU_GAS(L, I)=K_ESFT(IEX, I_BAND, I_GAS_BAND) SBCF3A.516
& *GAS_FRAC_RESCALED(L, I, I_GAS_BAND) SBCF3A.517
& *D_MASS(L, I) SBCF3A.518
ENDDO SBCF3A.519
ENDDO SBCF3A.520
! SBCF3A.521
! SBCF3A.522
! CALCULATE THE FLUXES WITH JUST THIS GAS. SBCF3A.523
CALL MONOCHROMATIC_GAS_FLUX
(N_PROFILE, N_LAYER SBCF3A.524
& , L_NET SBCF3A.525
& , TAU_GAS SBCF3A.526
& , ISOLIR, SEC_0, FLUX_INC_DIRECT, FLUX_INC_DOWN SBCF3A.527
& , DIFF_PLANCK_BAND, SOURCE_GROUND SBCF3A.528
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR SBCF3A.529
& , DIFFUSIVITY_FACTOR_MINOR SBCF3A.530
& , FLUX_DIRECT_PART, FLUX_DIFFUSE_PART SBCF3A.531
& , NPD_PROFILE, NPD_LAYER SBCF3A.532
& ) SBCF3A.533
! SBCF3A.534
! INCREMENT THE FLUXES WITHIN THE BAND. THERE IS NO NEED TO SBCF3A.535
! INCREMENT THE CLEAR FLUXES HERE SINCE THE WHOLE CALCULATION SBCF3A.536
! IS WITHOUT CLOUDS. SBCF3A.537
CALL AUGMENT_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT SBCF3A.538
& , ISOLIR, .FALSE. SBCF3A.539
& , ESFT_WEIGHT SBCF3A.540
& , FLUX_GAS_DIRECT, FLUX_GAS_DIFFUSE SBCF3A.541
& , FLUX_DIRECT_PART, FLUX_DIFFUSE_PART SBCF3A.542
& , DUMMY_ARRAY, DUMMY_ARRAY SBCF3A.543
& , DUMMY_ARRAY, DUMMY_ARRAY SBCF3A.544
& , NPD_PROFILE, NPD_LAYER SBCF3A.545
& ) SBCF3A.546
! SBCF3A.547
ENDDO SBCF3A.548
! SBCF3A.549
! CALCULATE THE FLUX RATIO. SBCF3A.550
IF (ISOLIR.EQ.IP_INFRA_RED) THEN SBCF3A.551
IF (L_NET) THEN SBCF3A.552
DO I=1, N_AUGMENT SBCF3A.553
DO L=1, N_PROFILE SBCF3A.554
FLUX_RATIO_DIFFUSE(L, I)=FLUX_RATIO_DIFFUSE(L, I) SBCF3A.555
& *FLUX_GAS_DIFFUSE(L, I) SBCF3A.556
& /(-THERMAL_GROUND_BAND(L)) SBCF3A.557
ENDDO SBCF3A.558
ENDDO SBCF3A.559
ELSE SBCF3A.560
! THIS METHOD WILL FAIL IF USED FOR THE DIFFUSE FLUXES SBCF3A.561
! IF THERE ARE INVERSIONS IN THE PROFILE. AT THE GROUND SBCF3A.562
! THE UPWARD DIFFUSE FLUX WILL BE 0, EVEN WITHOUT SBCF3A.563
! AN INVERSION, SO TOL_DIV IS USED TO RESTORE CONDITIONING. SBCF3A.564
DO I=0, N_LAYER SBCF3A.565
DO L=1, N_PROFILE SBCF3A.566
FLUX_RATIO_DIFFUSE(L, 2*I+1) SBCF3A.567
& =FLUX_RATIO_DIFFUSE(L, 2*I+1) SBCF3A.568
& *FLUX_GAS_DIFFUSE(L, 2*I+1) SBCF3A.569
& /(THERMAL_GROUND_BAND(L)*(1.0E+00+TOL_DIV) SBCF3A.570
& -PLANCK_SOURCE_BAND(L, I)) SBCF3A.571
FLUX_RATIO_DIFFUSE(L, 2*I+2) SBCF3A.572
& =FLUX_RATIO_DIFFUSE(L, 2*I+2) SBCF3A.573
& *FLUX_GAS_DIFFUSE(L, 2*I+2) SBCF3A.574
& /(-PLANCK_SOURCE_BAND(L, I)) SBCF3A.575
ENDDO SBCF3A.576
ENDDO SBCF3A.577
ENDIF SBCF3A.578
ENDIF SBCF3A.579
! SBCF3A.580
ENDDO SBCF3A.581
! SBCF3A.582
! LIMIT THE RATIO OF DIFFUSE FLUXES. SBCF3A.583
DO I=1, N_AUGMENT SBCF3A.584
DO L=1, N_PROFILE SBCF3A.585
FLUX_RATIO_DIFFUSE(L, I)=MAX(0.0E+00 SBCF3A.586
& , FLUX_RATIO_DIFFUSE(L, I)) SBCF3A.587
FLUX_RATIO_DIFFUSE(L, I)=MIN(1.0E+00 SBCF3A.588
& , FLUX_RATIO_DIFFUSE(L, I)) SBCF3A.589
ENDDO SBCF3A.590
ENDDO SBCF3A.591
! SBCF3A.592
! THE OVERALL FLUX IN THE BAND IS CALCULATED FROM THE SBCF3A.593
! FLUX FOR THE MAJOR GAS AND THE FLUX RATIOS. THE SAME RATIOS CAN BE SBCF3A.594
! USED FOR THE CLEAR FLUXES IN THIS CASE. SBCF3A.595
DO I=1, N_AUGMENT SBCF3A.596
DO L=1, N_PROFILE SBCF3A.597
FLUX_DIFFUSE_BAND(L, I)=FLUX_RATIO_DIFFUSE(L, I) SBCF3A.598
& *FLUX_DIFFUSE_BAND(L, I) SBCF3A.599
ENDDO SBCF3A.600
ENDDO SBCF3A.601
IF (L_CLEAR) THEN SBCF3A.602
DO I=1, N_AUGMENT SBCF3A.603
DO L=1, N_PROFILE SBCF3A.604
FLUX_DIFFUSE_CLEAR_BAND(L, I) SBCF3A.605
& =FLUX_RATIO_DIFFUSE(L, I) SBCF3A.606
& *FLUX_DIFFUSE_CLEAR_BAND(L, I) SBCF3A.607
ENDDO SBCF3A.608
ENDDO SBCF3A.609
ENDIF SBCF3A.610
! SBCF3A.611
! SBCF3A.612
! SBCF3A.613
RETURN SBCF3A.614
END SBCF3A.615
*ENDIF DEF,A01_3A,OR,DEF,A02_3A SBCF3A.616
*ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.76