*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.25
*IF DEF,A01_3A,OR,DEF,A02_3A FXCA3A.2
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13280
C GTS2F400.13281
C Use, duplication or disclosure of this code is subject to the GTS2F400.13282
C restrictions as set forth in the contract. GTS2F400.13283
C GTS2F400.13284
C Meteorological Office GTS2F400.13285
C London Road GTS2F400.13286
C BRACKNELL GTS2F400.13287
C Berkshire UK GTS2F400.13288
C RG12 2SZ GTS2F400.13289
C GTS2F400.13290
C If no contract has been raised with this copy of the code, the use, GTS2F400.13291
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13292
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13293
C Modelling at the above address. GTS2F400.13294
C ******************************COPYRIGHT****************************** GTS2F400.13295
C GTS2F400.13296
!+ Subroutine to calculate radiative fluxes. FXCA3A.3
! FXCA3A.4
! Method: FXCA3A.5
! Properties independent of the spectral bands are set. FXCA3A.6
! A loop over bands is then entered. Grey optical properties FXCA3A.7
! are set and an appropriate subroutine is called to treat FXCA3A.8
! the gaseous overlaps. The final fluxes are assigned. FXCA3A.9
! FXCA3A.10
! Current Owner of Code: J. M. Edwards FXCA3A.11
! FXCA3A.12
! History: FXCA3A.13
! Version Date Comment FXCA3A.14
! 4.0 27-07-95 Original Code FXCA3A.15
! (J. M. Edwards) FXCA3A.16
! 4.1 10-06-96 New solvers added. ADB1F401.425
! Revised formulation for ADB1F401.426
! sea-ice. Renaming of ADB1F401.427
! diagnostic and logical ADB1F401.428
! switch for flux ADB1F401.429
! below 690 nm. Pointer ADB1F401.430
! to water vapour added. ADB1F401.431
! (J. M. Edwards) ADB1F401.432
! 4.2 08-08-96 Generalization for ADB1F402.440
! vertically coherent ADB1F402.441
! convective cloud. ADB1F402.442
! 4.4 30-09-96 Effective Radius ADB2F404.551
! relabelled as charact- ADB2F404.552
! eristic dimension for ADB2F404.553
! generality to cover ADB2F404.554
! parametrizations of ADB2F404.555
! non-spherical ice. ADB2F404.556
! (J. M. Edwards) ADB2F404.557
! 4.5 18-05-98 Removal of variable for ADB1F405.292
! obsolete solver. ADB1F405.293
! (J. M. Edwards) ADB1F405.294
! FXCA3A.17
! Description of Code: FXCA3A.18
! FORTRAN 77 with extensions listed in documentation. FXCA3A.19
! FXCA3A.20
!- --------------------------------------------------------------------- FXCA3A.21
SUBROUTINE FLUX_CALC(IERR 2,30FXCA3A.22
! Logical Flags for Processes FXCA3A.23
& , L_RAYLEIGH, L_AEROSOL, L_GAS, L_CONTINUUM FXCA3A.24
& , L_CLOUD, L_DROP, L_ICE FXCA3A.25
! Angular Integration FXCA3A.26
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.27
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.28
! Treatment of Scattering FXCA3A.29
& , I_SCATTER_METHOD, L_SWITCH_SCATTER FXCA3A.30
! Options for treating clouds ADB1F402.904
& , L_GLOBAL_CLOUD_TOP, N_CLOUD_TOP_GLOBAL ADB1F402.905
! Options for Solver FXCA3A.31
& , I_SOLVER ADB1F405.295
! General Spectral Properties FXCA3A.33
& , N_BAND, I_FIRST_BAND, I_LAST_BAND, WEIGHT_BAND FXCA3A.34
! General Atmospheric Properties FXCA3A.35
& , N_PROFILE, N_LAYER FXCA3A.36
& , L_LAYER, L_CLOUD_LAYER FXCA3A.37
& , P, T, T_GROUND, T_LEVEL, D_MASS FXCA3A.38
! Spectral Region FXCA3A.39
& , ISOLIR FXCA3A.40
! Solar Fields FXCA3A.41
& , SEC_0, SOLAR_TOA, SOLAR_FLUX_BAND, RAYLEIGH_COEFFICIENT FXCA3A.42
! Infra-red Fields FXCA3A.43
& , N_DEG_FIT, THERMAL_COEFFICIENT, T_REF_PLANCK FXCA3A.44
& , L_IR_SOURCE_QUAD FXCA3A.45
! Gaseous Absorption FXCA3A.46
& , N_ABSORB, I_GAS_OVERLAP, I_GAS FXCA3A.47
& , GAS_MIX_RATIO, N_BAND_ABSORB, INDEX_ABSORB FXCA3A.48
& , I_BAND_ESFT, W_ESFT, K_ESFT, I_SCALE_ESFT FXCA3A.49
& , I_SCALE_FNC, SCALE_VECTOR FXCA3A.50
& , P_REFERENCE, T_REFERENCE FXCA3A.51
! Doppler Broadening FXCA3A.52
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.53
! Surface Fields FXCA3A.54
& , L_SURFACE, I_SURFACE, I_SPEC_SURFACE, SURFACE_ALBEDO FXCA3A.55
& , ALBEDO_FIELD_DIFF, ALBEDO_FIELD_DIR FXCA3A.56
& , N_DIR_ALBEDO_FIT, DIRECT_ALBEDO_PARM FXCA3A.57
& , EMISSIVITY_GROUND, EMISSIVITY_FIELD FXCA3A.58
! Continuum Absorption FXCA3A.59
& , N_BAND_CONTINUUM, INDEX_CONTINUUM, INDEX_WATER FXCA3A.60
& , K_CONTINUUM, I_SCALE_FNC_CONT, SCALE_CONTINUUM FXCA3A.61
& , P_REF_CONTINUUM, T_REF_CONTINUUM FXCA3A.62
! Properties of Aerosols FXCA3A.63
& , N_AEROSOL, AEROSOL_MIX_RATIO FXCA3A.64
& , AEROSOL_ABSORPTION, AEROSOL_SCATTERING, AEROSOL_ASYMMETRY FXCA3A.65
& , I_AEROSOL_PARAMETRIZATION, NHUMIDITY, HUMIDITIES FXCA3A.66
! Properties of Clouds FXCA3A.67
& , N_CONDENSED, TYPE_CONDENSED FXCA3A.68
& , I_CLOUD, I_CLOUD_REPRESENTATION, W_CLOUD, FRAC_CLOUD FXCA3A.69
& , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR ADB2F404.558
& , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST FXCA3A.71
! Fluxes Calculated FXCA3A.72
& , FLUX_DIRECT, FLUX_DOWN, FLUX_UP FXCA3A.73
! Options for Clear-sky Fluxes FXCA3A.74
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.75
! Clear-sky Fluxes Calculated FXCA3A.76
& , FLUX_DIRECT_CLEAR, FLUX_DOWN_CLEAR, FLUX_UP_CLEAR FXCA3A.77
! Arrays specific to the UM FXCA3A.78
! Arrays for Coupling FXCA3A.79
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.433
& , ALBEDO_SEA_DIFF, ALBEDO_SEA_DIR FXCA3A.80
& , SEA_FLUX FXCA3A.81
! Arrays for diagnostics specific to the UM FXCA3A.82
& , L_FLUX_BELOW_690NM_SURF, WEIGHT_690NM ADB1F401.434
& , FLUX_BELOW_690NM_SURF ADB1F401.435
& , L_SURFACE_DOWN_FLUX, SURFACE_DOWN_FLUX FXCA3A.85
& , L_SURF_DOWN_CLR, SURF_DOWN_CLR FXCA3A.86
& , L_SURF_UP_CLR, SURF_UP_CLR FXCA3A.87
! Dimensions of Arrays FXCA3A.88
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.89
& , NPD_BAND FXCA3A.90
& , NPD_SPECIES FXCA3A.91
& , NPD_ESFT_TERM, NPD_SCALE_FNC, NPD_SCALE_VARIABLE FXCA3A.92
& , NPD_CONTINUUM FXCA3A.93
& , NPD_AEROSOL_SPECIES, NPD_HUMIDITIES FXCA3A.94
& , NPD_CLOUD_PARAMETER FXCA3A.95
& , NPD_THERMAL_COEFF FXCA3A.96
& , NPD_SURFACE, NPD_ALBEDO_PARM FXCA3A.97
& ) FXCA3A.98
! FXCA3A.99
! FXCA3A.100
IMPLICIT NONE FXCA3A.101
! FXCA3A.102
! FXCA3A.103
! DUMMY ARRAY SIZES FXCA3A.104
INTEGER !, INTENT(IN) FXCA3A.105
& NPD_PROFILE FXCA3A.106
! MAXIMUM NUMBER OF PROFILES FXCA3A.107
& , NPD_LAYER FXCA3A.108
! MAXIMUM NUMBER OF LAYERS FXCA3A.109
& , NPD_BAND FXCA3A.110
! NUMBER OF BANDS FXCA3A.111
& , NPD_SPECIES FXCA3A.112
! NUMBER OF SPECIES FXCA3A.113
& , NPD_CONTINUUM FXCA3A.114
! NUMBER OF CONTINUA FXCA3A.115
& , NPD_AEROSOL_SPECIES FXCA3A.116
! NUMBER OF AEROSOL SPECIES FXCA3A.117
& , NPD_HUMIDITIES FXCA3A.118
! MAXIMUM NUMBER OF HUMIDITIES FXCA3A.119
& , NPD_ESFT_TERM FXCA3A.120
! MAXIMUM NUMBER OF ESFT TERMS FXCA3A.121
& , NPD_SCALE_FNC FXCA3A.122
! NUMBER OF SCALING FUNCTIONS FXCA3A.123
& , NPD_SCALE_VARIABLE FXCA3A.124
! NUMBER OF SCALING VARIABLES FXCA3A.125
& , NPD_CLOUD_PARAMETER FXCA3A.126
! MAXIMUM NUMBER OF CLOUD PARAMETERS FXCA3A.127
& , NPD_THERMAL_COEFF FXCA3A.128
! MAXIMUM NUMBER OF THERMAL COEFFICIENTS FXCA3A.129
& , NPD_SURFACE FXCA3A.130
! NUMBER OF SURFACE TYPES FXCA3A.131
& , NPD_ALBEDO_PARM FXCA3A.132
! NUMBER OF PARAMETERS FOR DIRECT ALB. FXCA3A.133
& , NPD_COLUMN FXCA3A.134
! NUMBER OF COLUMNS PER POINT FXCA3A.135
! FXCA3A.136
! INCLUDE COMDECKS. FXCA3A.137
*CALL DIMFIX3A
FXCA3A.138
*CALL GASOVL3A
FXCA3A.139
*CALL CLSCHM3A
FXCA3A.140
*CALL CLREPP3A
FXCA3A.141
*CALL CLDCMP3A
FXCA3A.142
*CALL CLDTYP3A
FXCA3A.143
*CALL ANGINT3A
FXCA3A.144
*CALL SOLVER3A
FXCA3A.145
*CALL TWOSTR3A
FXCA3A.146
*CALL SPCRG3A
FXCA3A.147
*CALL ESFTSC3A
FXCA3A.148
*CALL AERPRM3A
FXCA3A.149
*CALL ERROR3A
FXCA3A.150
! FXCA3A.151
! FXCA3A.152
! FXCA3A.153
! DUMMY ARGUMENTS. FXCA3A.154
INTEGER !, INTENT(OUT) FXCA3A.155
& IERR FXCA3A.156
! ERROR FLAG FXCA3A.157
! FXCA3A.158
!STR GENERAL LOGICAL SWITCHES: ADB1F401.436
LOGICAL !, INTENT(IN) FXCA3A.160
& L_LAYER FXCA3A.161
! VALUES GIVEN IN LAYERS FXCA3A.162
& , L_CLOUD_LAYER FXCA3A.163
! CLOUD VALUES GIVEN IN LAYERS FXCA3A.164
& , L_CLEAR FXCA3A.165
! CALCULATE CLEAR-SKY FLUXES FXCA3A.166
& , L_IR_SOURCE_QUAD FXCA3A.167
! USE A QUADRATIC SOURCE FUNCTION FXCA3A.168
& , L_RESCALE FXCA3A.169
! FLAG FOR DELTA-RESCALING FXCA3A.170
& , L_2_STREAM_CORRECT FXCA3A.171
! CORRECTION TO 2-STREAM SCHEME FXCA3A.172
! FXCA3A.173
!STR PARAMETERS CONTROLLING ALGORITHMS: FXCA3A.174
! REPRESENTATION OF CLOUDS: FXCA3A.175
INTEGER !, INTENT(IN) FXCA3A.176
& I_CLOUD FXCA3A.177
! CLOUD SCHEME USED FXCA3A.178
LOGICAL !, INTENT(IN) ADB1F402.906
& L_GLOBAL_CLOUD_TOP ADB1F402.907
! FLAG TO USE A GLOBAL VALUE FOR THE TOPS OF CLOUDS ADB1F402.908
INTEGER !, INTENT(IN) ADB1F402.909
& N_CLOUD_TOP_GLOBAL ADB1F402.910
! GLOBAL TOPMOST CLOUDY LAYER ADB1F402.911
! ADB1F402.912
! NUMERICAL ALGORITHMS: FXCA3A.179
INTEGER !, INTENT(IN) FXCA3A.180
& ISOLIR FXCA3A.181
! VISIBLE OR IR FXCA3A.182
& , I_SOLVER FXCA3A.183
! SOLVER USED FXCA3A.184
& , I_SOLVER_CLEAR FXCA3A.187
! CLEAR SOLVER USED FXCA3A.188
& , I_2STREAM FXCA3A.189
! TWO-STREAM SCHEME FXCA3A.190
& , I_ANGULAR_INTEGRATION FXCA3A.191
! ANGULAR INTEGRATION SCHEME FXCA3A.192
& , N_ORDER_GAUSS FXCA3A.193
! ORDER OF GAUSSIAN INTEGRATION FXCA3A.194
! RANGE OF SPECTRAL BANDS: FXCA3A.195
INTEGER !, INTENT(IN) FXCA3A.196
& I_FIRST_BAND FXCA3A.197
! FIRST BAND FXCA3A.198
& , I_LAST_BAND FXCA3A.199
! LAST BAND FXCA3A.200
! FXCA3A.201
! GENERAL PROPERTIES OF SPECTRUM: FXCA3A.202
INTEGER !, INTENT(IN) FXCA3A.203
& N_BAND FXCA3A.204
! NUMBER OF SPECTRAL BANDS FXCA3A.205
& , N_ABSORB FXCA3A.206
! NUMBER OF ABSORBERS FXCA3A.207
& , N_AEROSOL FXCA3A.208
! NUMBER OF AEROSOL SPECIES FXCA3A.209
! FXCA3A.210
!STR SOLAR FIELDS: FXCA3A.211
REAL !, INTENT(IN) FXCA3A.212
& SOLAR_TOA(NPD_PROFILE) FXCA3A.213
! INCIDENT SOLAR RADIATION FXCA3A.214
& , SOLAR_FLUX_BAND(NPD_BAND) FXCA3A.215
! NORMALIZED FLUX IN BAND FXCA3A.216
& , SEC_0(NPD_PROFILE) FXCA3A.217
! SECANT OF ZENITH ANGLE FXCA3A.218
! FXCA3A.219
!STR ATMOSPHERIC PROFILES: FXCA3A.220
INTEGER !, INTENT(IN) FXCA3A.221
& N_PROFILE FXCA3A.222
! NUMBER OF PROFILES FXCA3A.223
& , N_LAYER FXCA3A.224
! NUMBER OF LAYERS FXCA3A.225
REAL !, INTENT(IN) FXCA3A.226
& P(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.227
! PRESSURE FXCA3A.228
& , T(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.229
! TEMPERATURE FXCA3A.230
& , T_GROUND(NPD_PROFILE) FXCA3A.231
! TEMPERATURE OF GROUND FXCA3A.232
& , T_LEVEL(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.233
! TEMPERATURE ON LEVELS FXCA3A.234
& , D_MASS(NPD_PROFILE, NPD_LAYER) FXCA3A.235
! MASS THICKNESS OF EACH LAYER FXCA3A.236
& , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES) FXCA3A.237
! GASEOUS MASS MIXING RATIOS FXCA3A.238
! FXCA3A.239
!STR SURFACE PROPERTIES: FXCA3A.240
LOGICAL !, INTENT(IN) FXCA3A.241
& L_SURFACE(NPD_SURFACE) FXCA3A.242
! TYPES OF SURFACES FOR WHICH DATA ARE PRESENT FXCA3A.243
INTEGER !, INTENT(IN) FXCA3A.244
& I_SURFACE(NPD_PROFILE) FXCA3A.245
! TYPE OF SURFACE AT THE FOOT OF EACH PROFILE FXCA3A.246
& , I_SPEC_SURFACE(NPD_SURFACE) FXCA3A.247
! METHOD OF SPECIFYING ALBEDO FXCA3A.248
& , N_DIR_ALBEDO_FIT(NPD_SURFACE) FXCA3A.249
! NUMBER OF PARAMETERS IN FIT TO DIRECT ALBEDO FXCA3A.250
REAL !, INTENT(IN) FXCA3A.251
& SURFACE_ALBEDO(NPD_BAND, NPD_SURFACE) FXCA3A.252
! SURFACE ALBEDO FXCA3A.253
& , ALBEDO_FIELD_DIFF(NPD_PROFILE, NPD_BAND) FXCA3A.254
! SPECIFIED DIFFUSE ALBEDOS FXCA3A.255
& , ALBEDO_FIELD_DIR(NPD_PROFILE, NPD_BAND) FXCA3A.256
! SPECIFIED DIRECT ALBEDOS FXCA3A.257
& , DIRECT_ALBEDO_PARM(0: NPD_ALBEDO_PARM, NPD_BAND, NPD_SURFACE) FXCA3A.258
! COEFFICIENTS FOR DIRECT ALBEDOS FXCA3A.259
& , EMISSIVITY_GROUND(NPD_BAND, NPD_SURFACE) FXCA3A.260
! SURFACE EMISSIVITIES FXCA3A.261
& , EMISSIVITY_FIELD(NPD_PROFILE, NPD_BAND) FXCA3A.262
! SPECIFIED EMISSIVITIES FXCA3A.263
! FXCA3A.264
!STR RAYLEIGH SCATTERING: FXCA3A.265
LOGICAL !, INTENT(IN) FXCA3A.266
& L_RAYLEIGH FXCA3A.267
! INCLUDE RAYLEIGH SCATTERING IN THE CALCULATION. FXCA3A.268
REAL !, INTENT(IN) FXCA3A.269
& RAYLEIGH_COEFFICIENT(NPD_BAND) FXCA3A.270
! RAYLEIGH COEFFICIENTS FXCA3A.271
! FXCA3A.272
!STR FIELDS FOR GASEOUS ABSORPTION: FXCA3A.273
LOGICAL !, INTENT(IN) FXCA3A.274
& L_GAS FXCA3A.275
! INCLUDE GAS ABSORPTION IN THE CALCULATION FXCA3A.276
! GASEOUS OVERLAPS: FXCA3A.277
INTEGER !, INTENT(IN) FXCA3A.278
& I_GAS_OVERLAP(NPD_BAND) FXCA3A.279
! GAS OVERLAP ASSUMPTION FXCA3A.280
& , I_GAS FXCA3A.281
! GAS TO BE CONSIDERED (ONE GAS ONLY) FXCA3A.282
! ESFTS: FXCA3A.283
INTEGER !, INTENT(IN) FXCA3A.284
& N_BAND_ABSORB(NPD_BAND) FXCA3A.285
! NUMBER OF ABSORBERS IN BAND FXCA3A.286
& , INDEX_ABSORB(NPD_SPECIES, NPD_BAND) FXCA3A.287
! LIST OF ABSORBERS IN BANDS FXCA3A.288
& , I_BAND_ESFT(NPD_BAND, NPD_SPECIES) FXCA3A.289
! NUMBER OF TERMS IN BAND FXCA3A.290
& , I_SCALE_ESFT(NPD_BAND, NPD_SPECIES) FXCA3A.291
! TYPE OF ESFT SCALING FXCA3A.292
& , I_SCALE_FNC(NPD_BAND, NPD_SPECIES) FXCA3A.293
! TYPE OF SCALING FUNCTION FXCA3A.294
REAL !, INTENT(IN) FXCA3A.295
& W_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES) FXCA3A.296
! WEIGHTS FOR ESFT FXCA3A.297
& , K_ESFT(NPD_ESFT_TERM, NPD_BAND, NPD_SPECIES) FXCA3A.298
! EXPONENTIAL ESFT TERMS FXCA3A.299
& , SCALE_VECTOR(NPD_SCALE_VARIABLE, NPD_ESFT_TERM, NPD_BAND FXCA3A.300
& , NPD_SPECIES) FXCA3A.301
! ABSORBER SCALING PARAMETERS FXCA3A.302
& , P_REFERENCE(NPD_SPECIES, NPD_BAND) FXCA3A.303
! REFERENCE SCALING PRESSURE FXCA3A.304
& , T_REFERENCE(NPD_SPECIES, NPD_BAND) FXCA3A.305
! REFERENCE SCALING TEMPERATURE FXCA3A.306
! FXCA3A.307
!STR SPECTRAL DATA FOR THE CONTINUUM: FXCA3A.308
LOGICAL !, INTENT(IN) FXCA3A.309
& L_CONTINUUM FXCA3A.310
! INCLUDE CONTINUUM ABSORPTION IN THE CALCULATION FXCA3A.311
INTEGER !, INTENT(IN) FXCA3A.312
& N_BAND_CONTINUUM(NPD_BAND) FXCA3A.313
! NUMBER OF CONTINUA IN BANDS FXCA3A.314
& , INDEX_CONTINUUM(NPD_BAND, NPD_CONTINUUM) FXCA3A.315
! INDICES OF CONTINUA FXCA3A.316
& , INDEX_WATER FXCA3A.317
! INDEX OF WATER FXCA3A.318
& , I_SCALE_FNC_CONT(NPD_BAND, NPD_CONTINUUM) FXCA3A.319
! TYPE OF SCALING FUNCTION FOR CONTINUUM FXCA3A.320
REAL !, INTENT(IN) FXCA3A.321
& K_CONTINUUM(NPD_BAND, NPD_CONTINUUM) FXCA3A.322
! CONTINUUM EXTINCTION COEFFICIENTS FXCA3A.323
& , SCALE_CONTINUUM(NPD_SCALE_VARIABLE, NPD_BAND, NPD_CONTINUUM) FXCA3A.324
! CONTINUUM SCALING PARAMETERS FXCA3A.325
& , P_REF_CONTINUUM(NPD_CONTINUUM, NPD_BAND) FXCA3A.326
! CONTINUUM REFERENCE PRESSURE FXCA3A.327
& , T_REF_CONTINUUM(NPD_CONTINUUM, NPD_BAND) FXCA3A.328
! CONTINUUM REFERENCE TEMPERATURE FXCA3A.329
! FXCA3A.330
! FXCA3A.331
!STR GENERAL CLOUD FIELDS: FXCA3A.332
LOGICAL !, INTENT(IN) FXCA3A.333
& L_CLOUD FXCA3A.334
! CLOUDS ARE REQUIRED IN THE CALCULATION FXCA3A.335
REAL !, INTENT(IN) FXCA3A.336
& W_CLOUD(NPD_PROFILE, NPD_LAYER) FXCA3A.337
! AMOUNT OF CLOUD FXCA3A.338
& , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) FXCA3A.339
! FRACTIONS OF DIFFERENT TYPES OF CLOUD FXCA3A.340
! FXCA3A.341
!STR FIELDS FOR MICROPHYSICAL QUANTITIES: FXCA3A.342
! FXCA3A.343
LOGICAL !, INTENT(IN) FXCA3A.344
& L_DROP FXCA3A.345
! INCLUDE DROPLETS IN THE CALCULATION FXCA3A.346
& , L_ICE FXCA3A.347
! INCLUDE ICE IN THE CALCULATION FXCA3A.348
INTEGER !, INTENT(IN) FXCA3A.349
& N_CONDENSED FXCA3A.350
! NUMBER OF CONDENSED COMPONENTS IN CLOUDS FXCA3A.351
& , TYPE_CONDENSED(NPD_CLOUD_COMPONENT) FXCA3A.352
! TYPES OF CONDENSED COMPONENTS FXCA3A.353
& , I_CONDENSED_PARAM(NPD_CLOUD_COMPONENT) FXCA3A.354
! PARAMETRIZATION SCHEMES FOR COMPONENTS FXCA3A.355
& , I_CLOUD_REPRESENTATION FXCA3A.356
! REPRESENTATION OF MIXING RULE CHOSEN FXCA3A.357
! FXCA3A.358
REAL !, INTENT(IN) FXCA3A.359
& CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER FXCA3A.360
& , NPD_CLOUD_COMPONENT) FXCA3A.361
! MIXING RATIOS OF CONDENSED COMPONENTS FXCA3A.362
& , CONDENSED_DIM_CHAR(NPD_PROFILE, 0: NPD_LAYER ADB2F404.559
& , NPD_CLOUD_COMPONENT) FXCA3A.364
! EFFECTIVE RADII OF CONDENSED COMPONENTS FXCA3A.365
& , CONDENSED_PARAM_LIST(NPD_CLOUD_PARAMETER FXCA3A.366
& , NPD_CLOUD_COMPONENT, NPD_BAND) FXCA3A.367
! COEFFICIENTS IN PARAMETRIZATIONS OF CONDENSED PHASES FXCA3A.368
! FXCA3A.369
! FXCA3A.370
! FXCA3A.371
!STR FIELDS FOR AEROSOLS: FXCA3A.372
LOGICAL !, INTENT(IN) FXCA3A.373
& L_AEROSOL FXCA3A.374
! INCLUDE AEROSOLS IN THE CALCULATION FXCA3A.375
INTEGER !, INTENT(IN) FXCA3A.376
& I_AEROSOL_PARAMETRIZATION(NPD_AEROSOL_SPECIES) FXCA3A.377
! PARAMETRIZATION FLAGS FOR AEROSOL FXCA3A.378
INTEGER !, INTENT(IN) FXCA3A.379
& NHUMIDITY(NPD_AEROSOL_SPECIES) FXCA3A.380
! NUMBER OF HUMIDITIES FXCA3A.381
REAL !, INTENT(IN) FXCA3A.382
& AEROSOL_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER FXCA3A.383
& , NPD_AEROSOL_SPECIES) FXCA3A.384
! NUMBER DENSITY OF AEROSOLS FXCA3A.385
REAL !, INTENT(IN) FXCA3A.386
& AEROSOL_ABSORPTION(NPD_HUMIDITIES, NPD_AEROSOL_SPECIES FXCA3A.387
& , NPD_BAND) FXCA3A.388
! ABSORPTION BY AEROSOLS FXCA3A.389
& , AEROSOL_SCATTERING(NPD_HUMIDITIES, NPD_AEROSOL_SPECIES FXCA3A.390
& , NPD_BAND) FXCA3A.391
! SCATTERING BY AEROSOLS FXCA3A.392
& , AEROSOL_ASYMMETRY(NPD_HUMIDITIES, NPD_AEROSOL_SPECIES FXCA3A.393
& , NPD_BAND) FXCA3A.394
! ASYMMETRY BY AEROSOLS FXCA3A.395
& , HUMIDITIES(NPD_HUMIDITIES, NPD_AEROSOL_SPECIES) FXCA3A.396
! HUMIDITIES FOR SPECIES FXCA3A.397
! FXCA3A.398
! FXCA3A.399
!STR FITTING OF THE PLANCKIAN FUNCTION: FXCA3A.400
INTEGER !, INTENT(IN) FXCA3A.401
& N_DEG_FIT FXCA3A.402
! DEGREE OF THERMAL FITTING FNC. FXCA3A.403
REAL !, INTENT(IN) FXCA3A.404
& THERMAL_COEFFICIENT(0: NPD_THERMAL_COEFF-1, NPD_BAND) FXCA3A.405
! COEFFICIENTS OF SOURCE TERMS FXCA3A.406
& , T_REF_PLANCK FXCA3A.407
! PLANCKIAN REFERENCE TEMPERATURE FXCA3A.408
! FXCA3A.409
!STR DOPPLER BROADENING FXCA3A.410
LOGICAL !, INTENT(IN) FXCA3A.411
& L_DOPPLER(NPD_SPECIES) FXCA3A.412
! FLAGS TO ACTIVATE DOPPLER CORRECTIONS FXCA3A.413
REAL !, INTENT(IN) FXCA3A.414
& DOPPLER_CORRECTION(NPD_SPECIES) FXCA3A.415
! DOPPLER BROADENING TERM FXCA3A.416
REAL !, INTENT(OUT) FXCA3A.417
& WEIGHT_BAND(NPD_BAND) FXCA3A.418
! WEIGHTING FUNCTION FOR BANDS FXCA3A.419
! FXCA3A.420
!STR CONTROL OF SCATTERING: FXCA3A.421
INTEGER !, INTENT(IN) FXCA3A.422
& I_SCATTER_METHOD FXCA3A.423
! METHOD OF TREATING SCATTERING FXCA3A.424
LOGICAL !, INTENT(IN) FXCA3A.425
& L_SWITCH_SCATTER(NPD_BAND) FXCA3A.426
! SWITCHES FOR SCATTERING IN BANDS FXCA3A.427
! FXCA3A.428
! FXCA3A.429
!STR FLUXES CALCULATED: FXCA3A.430
REAL !, INTENT(OUT) FXCA3A.431
& FLUX_DIRECT(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.432
! DIRECT FLUX FXCA3A.433
& , FLUX_DOWN(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.434
! DOWNWARD FLUX FXCA3A.435
& , FLUX_UP(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.436
! UPWARD FLUX FXCA3A.437
& , FLUX_DIRECT_CLEAR(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.438
! CLEAR DIRECT FLUX FXCA3A.439
& , FLUX_DOWN_CLEAR(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.440
! CLEAR DOWNWARD FLUX FXCA3A.441
& , FLUX_UP_CLEAR(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.442
! CLEAR UPWARD FLUX FXCA3A.443
! FXCA3A.444
!STR ARRAYS SPECIFIC TO THE UNIFIED MODEL FXCA3A.445
! FXCA3A.446
! SWITCHES FOR DIAGNOSTICS: FXCA3A.447
LOGICAL !, INTENT(IN) FXCA3A.448
& L_FLUX_BELOW_690NM_SURF ADB1F401.437
! FLUX BELOW 690NM AT SURFACE TO BE CALCULATED ADB1F401.438
& , L_SURFACE_DOWN_FLUX FXCA3A.451
! DOWNWARD SURFACE FLUX REQUIRED FXCA3A.452
& , L_SURF_DOWN_CLR FXCA3A.453
! CALCULATE DOWNWARD CLEAR FLUX FXCA3A.454
& , L_SURF_UP_CLR FXCA3A.455
! CALCULATE UPWARD CLEAR FLUX FXCA3A.456
! FXCA3A.457
! ARRAYS FOR USE WITH COUPLING: FXCA3A.458
INTEGER !, INTENT(IN) ADB1F401.439
& N_FRAC_ICE_POINT ADB1F401.440
! NUMBER OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.441
& , I_FRAC_ICE_POINT(NPD_PROFILE) ADB1F401.442
! INDICES OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.443
REAL !, INTENT(IN) ADB1F401.444
& ICE_FRACTION(NPD_PROFILE) ADB1F401.445
! ICE FRACTION ADB1F401.446
REAL !, INTENT(IN) FXCA3A.459
& ALBEDO_SEA_DIFF(NPD_PROFILE, NPD_BAND) FXCA3A.460
! DIFFUSE ALBEDO FOR OPEN SEA FXCA3A.461
& , ALBEDO_SEA_DIR(NPD_PROFILE, NPD_BAND) FXCA3A.462
! DIRECT ALBEDO FOR OPEN SEA FXCA3A.463
! FXCA3A.464
! ARRAYS FOR USE WITH DIAGNOSTICS: FXCA3A.465
REAL !, INTENT(IN) FXCA3A.466
& WEIGHT_690NM(NPD_BAND) ADB1F401.447
! WEIGHTS FOR EACH BAND FOR REGION BELOW 690 NM ADB1F401.448
! FXCA3A.469
! SURFACE FLUXES FOR COUPLING OR DIAGNOSTIC USE FXCA3A.470
REAL !, INTENT(OUT) FXCA3A.471
& SEA_FLUX(NPD_PROFILE) FXCA3A.472
! NET DOWNWARD FLUX INTO SEA FXCA3A.473
& , SURFACE_DOWN_FLUX(NPD_PROFILE) FXCA3A.474
! DOWNWARD FLUX AT SURFACE FXCA3A.475
& , SURF_DOWN_CLR(NPD_PROFILE) FXCA3A.476
! CLEAR-SKY DOWNWARD FLUX AT SURFACE FXCA3A.477
& , SURF_UP_CLR(NPD_PROFILE) FXCA3A.478
! CLEAR-SKY UPWARD FLUX AT SURFACE FXCA3A.479
& , FLUX_BELOW_690NM_SURF(NPD_PROFILE) ADB1F401.449
! SURFACE FLUX BELOW 690NM ADB1F401.450
! FXCA3A.482
! FXCA3A.483
! FXCA3A.484
! LOCAL ARGUMENTS. FXCA3A.485
! GENERAL POINTERS: FXCA3A.486
INTEGER FXCA3A.487
& I_TOP FXCA3A.488
! TOP LEVEL OF PROFILES FXCA3A.489
& , I_BAND FXCA3A.490
! SPECTRAL BAND FXCA3A.491
& , N_AUGMENT FXCA3A.492
! LENGTH OF LONG FLUX VECTOR FXCA3A.493
& , N_GAS FXCA3A.494
! NUMBER OF ACTIVE GASES FXCA3A.495
& , I_GAS_BAND FXCA3A.496
! SINGLE VARIABLE FOR GAS IN BAND FXCA3A.497
& , N_CONTINUUM FXCA3A.498
! NUMBER OF CONTINUA IN BAND FXCA3A.499
& , I_CONTINUUM FXCA3A.500
! CONTINUUM NUMBER FXCA3A.501
& , I_CONTINUUM_POINTER(NPD_CONTINUUM) FXCA3A.502
! POINTERS TO CONTINUA FXCA3A.503
! FXCA3A.504
! SCATTERING IN INDIVIDUAL BANDS FXCA3A.505
INTEGER FXCA3A.506
& I_SCATTER_METHOD_BAND FXCA3A.507
! METHOD OF TREATING SCATTERING IN GIVEN BAND FXCA3A.508
! FXCA3A.509
! VARIABLES FOR SURFACE PROPERTIES: FXCA3A.510
INTEGER FXCA3A.511
& N_POINT_TYPE(NPD_SURFACE) FXCA3A.512
! NUMBER OF POINTS OF EACH TYPE FXCA3A.513
& , INDEX_SURFACE(NPD_PROFILE, NPD_SURFACE) FXCA3A.514
! INDICES OF EACH SURFACE TYPE FXCA3A.515
! FXCA3A.516
! POINTERS TO THE CONTENTS OF LAYERS: FXCA3A.517
INTEGER FXCA3A.518
& N_FREE_PROFILE(NPD_LAYER) FXCA3A.519
! NUMBER OF FREE PROFILES FXCA3A.520
& , I_FREE_PROFILE(NPD_PROFILE, NPD_LAYER) FXCA3A.521
! COLUMNS CONTAINING FREE PROFILES FXCA3A.522
& , N_CLOUD_TOP FXCA3A.523
! TOPMOST CLOUDY LAYER FXCA3A.524
& , N_CLOUD_PROFILE(NPD_LAYER) FXCA3A.525
! NUMBER OF CLOUDY PROFILES FXCA3A.526
& , I_CLOUD_PROFILE(NPD_PROFILE, NPD_LAYER) FXCA3A.527
! PROFILES CONTAINING CLOUDS FXCA3A.528
! FXCA3A.529
! POINTERS TO TYPES OF CLOUDS: FXCA3A.530
LOGICAL FXCA3A.531
& L_CLOUD_CMP(NPD_CLOUD_COMPONENT) FXCA3A.532
! LOGICAL SWITCHES TO INCLUDE COMPONENTS FXCA3A.533
INTEGER FXCA3A.534
& I_PHASE_CMP(NPD_CLOUD_COMPONENT) FXCA3A.535
! PHASES OF COMPONENTS FXCA3A.536
& , I_CLOUD_TYPE(NPD_CLOUD_COMPONENT) FXCA3A.537
! TYPES OF CLOUD TO WHICH EACH COMPONENT CONTRIBUTES FXCA3A.538
& , I_REGION_CLOUD(NPD_CLOUD_TYPE) ADB1F402.443
! REGIONS IN WHICH PARTICULAR TYPE OF CLOUD FALL ADB1F402.444
! FXCA3A.539
! FRACTIONAL COVERAGE OF DIFFERENT REGIONS: ADB1F402.445
REAL ADB1F402.446
& FRAC_REGION(NPD_PROFILE, NPD_LAYER, NPD_REGION) ADB1F402.447
! FRACTION OF TOTAL CLOUD OCCUPIED BY SPECIFIC REGIONS ADB1F402.448
! ADB1F402.449
! POINTER TO TABLE OF HUMIDITY: FXCA3A.540
INTEGER FXCA3A.541
& I_HUMIDITY_POINTER(NPD_PROFILE, NPD_LAYER) FXCA3A.542
! POINTER TO LOOK-UP TABLE FOR AEROSOLS FXCA3A.543
! FXCA3A.544
! CONTROLLING VARIABLES: FXCA3A.545
INTEGER FXCA3A.546
& I FXCA3A.547
! LOOP INDEX FXCA3A.548
& , J FXCA3A.549
! LOOP INDEX FXCA3A.550
& , K FXCA3A.551
! LOOP INDEX FXCA3A.552
& , L FXCA3A.553
! LOOP INDEX FXCA3A.554
! FXCA3A.555
! LOGICAL SWITCHES: FXCA3A.556
LOGICAL FXCA3A.557
& L_GAS_BAND FXCA3A.558
! FLAG TO INCLUDE GASEOUS ABSORPTION IN A PARTICULAR BAND FXCA3A.559
& , L_MOIST_AEROSOL FXCA3A.560
! FLAG FOR MOIST AEROSOL FXCA3A.561
& , L_AEROSOL_DENSITY FXCA3A.562
! FLAG FOR CALCULATION OF ATMOSPHERIC DENSITY FOR AEROSOLS FXCA3A.563
& , L_NET FXCA3A.564
! FLAG FOR NET FLUXES FXCA3A.565
! FXCA3A.566
! SURFACE PROPERTIES: FXCA3A.567
REAL FXCA3A.568
& ALBEDO_SURFACE_DIFF(NPD_PROFILE) FXCA3A.569
! DIFFUSE SURFACE ALBEDO FXCA3A.570
& , ALBEDO_SURFACE_DIR(NPD_PROFILE) FXCA3A.571
! DIRECT SURFACE ALBEDO FXCA3A.572
! FXCA3A.573
REAL FXCA3A.574
& INC_SOLAR_FLUX_BAND(NPD_PROFILE) FXCA3A.575
! INCIDENT SOLAR FLUX IN BAND FXCA3A.576
REAL FXCA3A.577
& GAS_FRAC_RESCALED(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES) FXCA3A.578
! RESCALED GAS MIXING RATIOS FXCA3A.579
& , AMOUNT_CONTINUUM(NPD_PROFILE, 0: NPD_LAYER, NPD_CONTINUUM) ADB2F404.560
! AMOUNTS OF CONTINUA FXCA3A.582
& , K_CONTINUUM_MONO(NPD_CONTINUUM) FXCA3A.583
! MONOCHROMATIC CONTINUUM COMPONENTS FXCA3A.584
! FXCA3A.585
! THERMAL ARRAYS: FXCA3A.586
REAL FXCA3A.587
& PLANCK_SOURCE_BAND(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.588
! PLANCK FUNCTION IN BAND AT LEVELS FXCA3A.589
& , DIFF_PLANCK_BAND(NPD_PROFILE, NPD_LAYER) FXCA3A.590
! DIFFERENTIAL THERMAL SOURCE IN BAND FXCA3A.591
& , DIFF_PLANCK_BAND_2(NPD_PROFILE, NPD_LAYER) FXCA3A.592
! 2 x 2ND DIFF. THERMAL SOURCE IN BAND FXCA3A.593
& , THERMAL_GROUND_BAND(NPD_PROFILE) FXCA3A.594
! GROUND SOURCE FUNCTION IN BAND FXCA3A.595
! FXCA3A.596
! ATMOSPHERIC DENSITIES: FXCA3A.597
REAL FXCA3A.598
& DENSITY(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.599
! OVERALL DENSITY FXCA3A.600
& , MOLAR_DENSITY_WATER(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.601
! MOLAR DENSITY OF WATER FXCA3A.602
& , MOLAR_DENSITY_FRN(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.603
! MOLAR DENSITY OF FOREIGN SPECIES FXCA3A.604
! FXCA3A.605
! FIELDS FOR MOIST AEROSOLS: FXCA3A.606
REAL FXCA3A.607
& DELTA_HUMIDITY FXCA3A.608
! INCREMENT IN LOOK-UP TABLE FOR HUM. FXCA3A.609
& , MEAN_REL_HUMIDITY(NPD_PROFILE, NPD_LAYER) FXCA3A.610
! MEAN RELATIVE HUMIDITY OF LAYERS FXCA3A.611
! FXCA3A.612
! FUNDAMENTAL OPTICAL PROPERTIES OF LAYERS: FXCA3A.613
REAL FXCA3A.614
& K_GREY_TOT_FREE(NPD_PROFILE, NPD_LAYER) FXCA3A.615
! FREE TOTAL GREY EXTINCTION FXCA3A.616
& , K_EXT_SCAT_FREE(NPD_PROFILE, NPD_LAYER) FXCA3A.617
! FREE SCATTERING EXTINCTION FXCA3A.618
& , ASYMMETRY_FREE(NPD_PROFILE, NPD_LAYER) FXCA3A.619
! FREE ASYMMETRIES FXCA3A.620
& , FORWARD_SCATTER_FREE(NPD_PROFILE, NPD_LAYER) FXCA3A.621
! FREE FORWARD SCATTERING FXCA3A.622
& , K_GREY_TOT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) FXCA3A.623
! TOTAL CLOUDY GREY EXTINCTION FXCA3A.624
& , K_EXT_SCAT_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) FXCA3A.625
! CLOUDY SCATTERING EXTINCTION FXCA3A.626
& , ASYMMETRY_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) FXCA3A.627
! CLOUDY ASYMMETRIES FXCA3A.628
& , FORWARD_SCATTER_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) FXCA3A.629
! CLOUDY FORWARD SCATTERING FXCA3A.630
! FXCA3A.631
! LOCAL RADIATIVE FLUXES: FXCA3A.632
REAL FXCA3A.633
& FLUX_TOTAL(NPD_PROFILE, 2*NPD_LAYER+2) FXCA3A.634
! TOTAL FLUX FXCA3A.635
& , FLUX_TOTAL_CLEAR(NPD_PROFILE, 2*NPD_LAYER+2) FXCA3A.636
! CLEAR TOTAL FLUX FXCA3A.637
& , FLUX_DIRECT_BAND(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.638
! DIRECT FLUX IN BAND FXCA3A.639
& , FLUX_TOTAL_BAND(NPD_PROFILE, 2*NPD_LAYER+2) FXCA3A.640
! TOTAL FLUX IN BAND FXCA3A.641
& , FLUX_DIRECT_CLEAR_BAND(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.642
! DIRECT FLUX IN BAND FXCA3A.643
& , FLUX_TOTAL_CLEAR_BAND(NPD_PROFILE, 2*NPD_LAYER+2) FXCA3A.644
! TOTAL FLUX IN BAND FXCA3A.645
& , PLANCK_FLUX(NPD_PROFILE, 0: NPD_LAYER) FXCA3A.646
! PLANCKIAN FLUX IN BAND FXCA3A.647
! FXCA3A.648
! COEFFICIENTS FOR THE TRANSFER OF ENERGY BETWEEN FXCA3A.649
! PARTIALLY CLOUDY LAYERS: FXCA3A.650
REAL FXCA3A.651
& CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF) FXCA3A.652
! COEFFICIENTS DEFINING OVERLAPPING OPTIONS FOR CLOUDS: FXCA3A.653
! THESE ALSO DEPEND ON THE SOLVER SELECTED. FXCA3A.654
& , W_FREE(NPD_PROFILE, NPD_LAYER) FXCA3A.655
! CLEAR-SKY FRACTION FXCA3A.656
INTEGER FXCA3A.657
& N_COLUMN(NPD_PROFILE) FXCA3A.658
! NUMBER OF COLUMNS REQUIRED FXCA3A.659
LOGICAL FXCA3A.660
& L_COLUMN(NPD_PROFILE, NPD_LAYER, NPD_COLUMN) FXCA3A.661
! COLUMN FLAGS FOR COLUMNS FXCA3A.662
REAL FXCA3A.663
& AREA_COLUMN(NPD_PROFILE, NPD_COLUMN) FXCA3A.664
! AREAS OF COLUMNS FXCA3A.665
! FXCA3A.666
! LOCAL VARIABLES SPECIFIC TO THE UNIFIED MODEL. ADB1F401.451
REAL ADB1F401.452
& PLANCK_FREEZE_SEA ADB1F401.453
! PLANCK FUNCTION OVER FREEZING SEA ADB1F401.454
! ADB1F401.455
! ADB1F401.456
! SUBROUTINES CALLED: FXCA3A.667
EXTERNAL FXCA3A.668
& SET_CLOUD_POINTER, SET_CLOUD_GEOMETRY, SET_SCATTERING FXCA3A.669
& , OVERLAP_MIX_MAXIMUM, OVERLAP_MIX_RANDOM FXCA3A.670
& , SPLIT_MAXIMUM, COLLECT_SURFACE, INITIALIZE_FLUX FXCA3A.671
& , CALCULATE_DENSITY, SET_MOIST_AEROSOL_PROPERTIES FXCA3A.672
& , SCALE_ABSORB, RESCALE_CONTINUUM, GREY_EXTINCTION FXCA3A.673
& , RESCALE_ASYMMETRY FXCA3A.674
& , DIFF_PLANCK_SOURCE, SET_SURFACE_PROPERTIES FXCA3A.675
& , SOLVE_BAND_WITHOUT_GAS, SOLVE_BAND_ONE_GAS FXCA3A.676
& , SOLVE_BAND_RANDOM_OVERLAP, SOLVE_BAND_FESFT FXCA3A.677
& , SOLVE_BAND_CLR_FESFT, SOLVE_BAND_K_EQV FXCA3A.678
& , AUGMENT_TOTAL_FLUX, ASSIGN_FLUX FXCA3A.679
& , R2_INIT_COUPLE_DIAG, R2_COUPLE_DIAG FXCA3A.680
& , OVERLAP_TRIPLE ADB1F402.450
! FUNCTIONS CALLED: FXCA3A.681
LOGICAL FXCA3A.682
& L_CLOUD_DENSITY FXCA3A.683
! FLAG FOR CALCULATION OF ATMOSPHERIC DENSITIES FOR CLOUDS FXCA3A.684
EXTERNAL FXCA3A.685
& L_CLOUD_DENSITY FXCA3A.686
! FXCA3A.687
! FXCA3A.688
! SETTING OF PROPERTIES OF ARRAYS: FXCA3A.689
*CALL CLREPD3A
FXCA3A.690
! FXCA3A.691
! FXCA3A.692
! FXCA3A.693
! FXCA3A.694
! INITIAL DETERMINATION OF FLAGS AND SWITCHES: FXCA3A.695
! FXCA3A.696
IF (I_ANGULAR_INTEGRATION.EQ.IP_TWO_STREAM) THEN FXCA3A.697
! FXCA3A.698
! CURRENTLY, WE DO NOT ALLOW THE USE OF SOLVERS FOR THE ADB1F405.296
! NET FLUX ALONE AS THIS MAKES IT DIFFICULT TO INCORPORATE ADB1F405.297
! SOME DIAGNOSTICS. ADB1F405.298
! ADB1F405.299
L_NET=.FALSE. ADB1F405.300
! FXCA3A.707
ELSE IF (I_ANGULAR_INTEGRATION.EQ.IP_IR_GAUSS) THEN FXCA3A.708
! FXCA3A.709
L_NET=.FALSE. FXCA3A.710
! FXCA3A.711
ENDIF FXCA3A.712
! FXCA3A.713
! THE LENGTH OF THE LONG FLUX VECTOR DEPENDS ON WHETHER WE SOLVE FXCA3A.714
! FOR THE FULL OR THE NET FLUX. FXCA3A.715
IF (L_NET) THEN FXCA3A.716
N_AUGMENT=N_LAYER+1 FXCA3A.717
ELSE FXCA3A.718
N_AUGMENT=2*(N_LAYER+1) FXCA3A.719
ENDIF FXCA3A.720
! FXCA3A.721
! SET THE TOP LEVEL OF THE PROFILES. FXCA3A.722
IF (L_LAYER) THEN FXCA3A.723
I_TOP=1 FXCA3A.724
ELSE FXCA3A.725
I_TOP=0 FXCA3A.726
ENDIF FXCA3A.727
! FXCA3A.728
! FXCA3A.729
! FXCA3A.730
! INITIAL CALCULATIONS FOR SURFACE PROPERTIES: FXCA3A.731
! FXCA3A.732
! COLLECT POINTS WITH THE SAME SURFACE SPECIFICATION. FXCA3A.733
CALL COLLECT_SURFACE
(N_PROFILE FXCA3A.734
& , I_SURFACE FXCA3A.735
& , N_POINT_TYPE, INDEX_SURFACE FXCA3A.736
& , NPD_PROFILE, NPD_SURFACE FXCA3A.737
& ) FXCA3A.738
! FXCA3A.739
! FXCA3A.740
! FXCA3A.741
! INITIAL CALCULATIONS FOR AEROSOLS: FXCA3A.742
! FXCA3A.743
! SET THE SPECTRALLY INDEPENDENT PROPERTIES OF MOIST AEROSOLS. FXCA3A.744
L_MOIST_AEROSOL=.FALSE. FXCA3A.745
DO J=1, N_AEROSOL FXCA3A.746
L_MOIST_AEROSOL=L_MOIST_AEROSOL.OR. FXCA3A.747
& (I_AEROSOL_PARAMETRIZATION(J) FXCA3A.748
& .EQ.IP_AEROSOL_PARAM_MOIST) FXCA3A.749
ENDDO FXCA3A.750
! FXCA3A.751
IF (L_MOIST_AEROSOL) THEN FXCA3A.752
CALL SET_MOIST_AEROSOL_PROPERTIES
(IERR AWO1F403.38
& , N_PROFILE, N_LAYER, L_LAYER AWO1F403.39
& , N_AEROSOL, I_AEROSOL_PARAMETRIZATION, NHUMIDITY FXCA3A.754
& , GAS_MIX_RATIO(1, 0, INDEX_WATER), T, P, DELTA_HUMIDITY FXCA3A.755
& , MEAN_REL_HUMIDITY, I_HUMIDITY_POINTER FXCA3A.756
& , NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES FXCA3A.757
& ) FXCA3A.758
IF (IERR.NE.I_NORMAL) RETURN AWO1F403.40
ENDIF FXCA3A.759
! FXCA3A.760
! FXCA3A.761
! CHECK WHETHER THE DENSITIES WILL BE NEEDED FOR FXCA3A.762
! UNPARAMETRIZED AEROSOLS. FXCA3A.763
L_AEROSOL_DENSITY=.FALSE. ADB1F402.451
IF (L_AEROSOL) THEN FXCA3A.764
DO J=1, N_AEROSOL FXCA3A.766
L_AEROSOL_DENSITY=L_AEROSOL_DENSITY.OR. FXCA3A.767
& (I_AEROSOL_PARAMETRIZATION(J).EQ. FXCA3A.768
& IP_AEROSOL_PARAM_MOIST) FXCA3A.769
& .OR.(I_AEROSOL_PARAMETRIZATION(J).EQ. FXCA3A.770
& IP_AEROSOL_UNPARAMETRIZED) FXCA3A.771
ENDDO FXCA3A.772
ENDIF FXCA3A.773
! FXCA3A.774
! FXCA3A.775
! FXCA3A.776
! INITIAL CALCULATIONS FOR CLOUDS: FXCA3A.777
! FXCA3A.778
! SET POINTERS TO THE TYPES OF CLOUD. FXCA3A.779
CALL SET_CLOUD_POINTER
(IERR FXCA3A.780
& , N_CONDENSED, TYPE_CONDENSED, I_CLOUD_REPRESENTATION FXCA3A.781
& , L_DROP, L_ICE FXCA3A.782
& , I_PHASE_CMP, I_CLOUD_TYPE, L_CLOUD_CMP FXCA3A.783
& ) FXCA3A.784
IF (IERR.NE.I_NORMAL) RETURN FXCA3A.785
! FXCA3A.786
! FXCA3A.787
! SET THE GEOMETRY OF THE CLOUDS. FXCA3A.788
CALL SET_CLOUD_GEOMETRY
(N_PROFILE, N_LAYER FXCA3A.789
& , L_GLOBAL_CLOUD_TOP, N_CLOUD_TOP_GLOBAL ADB1F402.913
& , W_CLOUD FXCA3A.790
& , N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.791
& , N_CLOUD_TOP FXCA3A.792
& , N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.793
& , NPD_PROFILE, NPD_LAYER FXCA3A.794
& ) FXCA3A.795
! FXCA3A.796
IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN ADB1F402.452
! AGGREGATE CLOUDS INTO REGIONS FOR SOLVING. ADB1F402.453
CALL AGGREGATE_CLOUD
(IERR ADB1F402.454
& , N_PROFILE, N_LAYER, N_CLOUD_TOP ADB1F402.455
& , I_CLOUD, I_CLOUD_REPRESENTATION ADB1F402.456
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION) ADB1F402.457
& , FRAC_CLOUD ADB1F402.458
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.459
& , NPD_PROFILE, NPD_LAYER ADB1F402.460
& ) ADB1F402.461
ENDIF ADB1F402.462
! ADB1F401.458
! CALCULATE ENERGY TRANSFER COEFFICIENTS IN A MIXED COLUMN, FXCA3A.797
! OR SPLIT THE ATMOSPHERE INTO COLUMNS WITH A COLUMN MODEL: FXCA3A.798
! FXCA3A.799
IF (I_CLOUD.EQ.IP_CLOUD_MIX_MAX) THEN FXCA3A.800
! FXCA3A.801
CALL OVERLAP_MIX_MAXIMUM
(N_PROFILE, N_LAYER, N_CLOUD_TOP FXCA3A.802
& , ISOLIR, I_SOLVER FXCA3A.803
& , W_CLOUD, W_FREE FXCA3A.804
& , CLOUD_OVERLAP FXCA3A.805
& , NPD_PROFILE, NPD_LAYER FXCA3A.806
& ) FXCA3A.807
ELSE IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN FXCA3A.808
CALL OVERLAP_MIX_RANDOM
(N_PROFILE, N_LAYER, N_CLOUD_TOP FXCA3A.809
& , ISOLIR, I_SOLVER FXCA3A.810
& , W_CLOUD, W_FREE FXCA3A.811
& , CLOUD_OVERLAP FXCA3A.812
& , NPD_PROFILE, NPD_LAYER FXCA3A.813
& ) FXCA3A.814
! FXCA3A.815
ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN ADB1F402.463
! ADB1F402.464
! CALCULATE OVERLAPS FOR THE TRIPLE DECOMPOSITION ADB1F402.465
! OF THE COLUMN INTO STRATIFORM AND CONVECTIVE PARTS. ADB1F402.466
CALL OVERLAP_TRIPLE
(N_PROFILE, N_LAYER, N_CLOUD_TOP ADB1F402.467
& , W_CLOUD, W_FREE, FRAC_REGION ADB1F402.468
& , CLOUD_OVERLAP ADB1F402.469
& , NPD_PROFILE, NPD_LAYER ADB1F402.470
& ) ADB1F402.471
IF (IERR.NE.I_NORMAL) RETURN ADB1F402.472
! ADB1F402.473
ELSE IF (I_CLOUD.EQ.IP_CLOUD_COLUMN_MAX) THEN FXCA3A.816
! FXCA3A.817
CALL SPLIT_MAXIMUM
(N_PROFILE, N_LAYER FXCA3A.818
& , W_CLOUD FXCA3A.819
& , N_COLUMN, AREA_COLUMN, L_COLUMN FXCA3A.820
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.821
& ) FXCA3A.822
ENDIF FXCA3A.823
! FXCA3A.824
! FXCA3A.825
! CALCULATE THE ATMOSPHERIC DENSITIES: FXCA3A.826
! FXCA3A.827
IF ( L_CONTINUUM FXCA3A.828
& .OR.L_AEROSOL_DENSITY FXCA3A.829
& .OR.(L_CLOUD ADB1F401.459
& .AND.L_CLOUD_DENSITY(N_CONDENSED, I_PHASE_CMP, L_CLOUD_CMP ADB1F401.460
& , I_CONDENSED_PARAM FXCA3A.831
& ) ) ) THEN ADB1F401.461
CALL CALCULATE_DENSITY
(N_PROFILE, N_LAYER, L_CONTINUUM FXCA3A.834
& , GAS_MIX_RATIO(1, 0, INDEX_WATER) FXCA3A.835
& , P, T, I_TOP FXCA3A.836
& , DENSITY, MOLAR_DENSITY_WATER, MOLAR_DENSITY_FRN FXCA3A.837
& , NPD_PROFILE, NPD_LAYER FXCA3A.838
& ) FXCA3A.839
ENDIF FXCA3A.840
! FXCA3A.841
! FXCA3A.842
! FXCA3A.843
! INITIALIZE THE TOTAL FLUXES. FXCA3A.844
! FXCA3A.845
CALL INITIALIZE_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT FXCA3A.846
& , ISOLIR FXCA3A.847
& , FLUX_DIRECT, FLUX_TOTAL FXCA3A.848
& , L_CLEAR FXCA3A.849
& , FLUX_DIRECT_CLEAR, FLUX_TOTAL_CLEAR FXCA3A.850
& , 0.0E+00 FXCA3A.851
& , NPD_PROFILE, NPD_LAYER FXCA3A.852
& , L_NET FXCA3A.853
& ) FXCA3A.854
! FXCA3A.855
! INITIALIZE THE PLANCKIAN FLUXES IF REQUIRED. FXCA3A.856
IF ( (ISOLIR.EQ.IP_INFRA_RED).AND.(.NOT.L_NET) ) THEN FXCA3A.857
DO I=0, N_LAYER FXCA3A.858
DO L=1, N_PROFILE FXCA3A.859
PLANCK_FLUX(L, I)=0.0E+00 FXCA3A.860
ENDDO FXCA3A.861
ENDDO FXCA3A.862
ENDIF FXCA3A.863
! FXCA3A.864
! FXCA3A.865
! INITIALIZATION OF DIAGNOSTICS AND COUPLING ARRAYS FOR THE FXCA3A.866
! UNIFIED MODEL. FXCA3A.867
CALL R2_INIT_COUPLE_DIAG
(N_PROFILE FXCA3A.868
& , SEA_FLUX FXCA3A.869
& , L_SURFACE_DOWN_FLUX, SURFACE_DOWN_FLUX FXCA3A.870
& , L_SURF_DOWN_CLR, SURF_DOWN_CLR FXCA3A.871
& , L_SURF_UP_CLR, SURF_UP_CLR FXCA3A.872
& , L_FLUX_BELOW_690NM_SURF, FLUX_BELOW_690NM_SURF ADB1F401.462
& , NPD_PROFILE FXCA3A.874
& ) FXCA3A.875
! FXCA3A.876
! FXCA3A.877
! FXCA3A.878
! FXCA3A.879
! FXCA3A.880
! SOLVE THE EQUATION OF TRANSFER IN EACH BAND AND FXCA3A.881
! INCREMENT THE FLUXES. FXCA3A.882
! FXCA3A.883
DO I_BAND=I_FIRST_BAND, I_LAST_BAND FXCA3A.884
! FXCA3A.885
! FXCA3A.886
! SET THE FLAG FOR THE TREATMENT OF SCATTERING IN THIS BAND FXCA3A.887
CALL SET_SCATTERING
(I_SCATTER_METHOD FXCA3A.888
& , L_SWITCH_SCATTER(I_BAND) FXCA3A.889
& , I_SCATTER_METHOD_BAND FXCA3A.890
& ) FXCA3A.891
! FXCA3A.892
! DETERMINE WHETHER GASEOUS ABSORPTION IS INCLUDED IN THIS BAND. FXCA3A.893
IF ( (L_GAS).AND.(N_BAND_ABSORB(I_BAND).GT.0) ) THEN FXCA3A.894
! FXCA3A.895
! NOTE: I_GAS_BAND IS USED EXTENSIVELY BELOW SINCE NESTED FXCA3A.896
! ARRAY ELEMENTS IN A SUBROUTINE CALL (SEE LATER) CAN FXCA3A.897
! CONFUSE SOME COMPILERS. FXCA3A.898
! FXCA3A.899
! NORMALLY THE NUMBER OF GASES IN THE CALCULATION WILL BE FXCA3A.900
! AS IN THE SPECTRAL FILE, BUT PARTICULAR OPTIONS MAY RESULT FXCA3A.901
! IN THE OMISSION OF SOME GASES. FXCA3A.902
! FXCA3A.903
N_GAS=N_BAND_ABSORB(I_BAND) FXCA3A.904
! FXCA3A.905
IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_SINGLE) THEN FXCA3A.906
! FXCA3A.907
! THERE WILL BE NO GASEOUS ABSORPTION IN THIS BAND FXCA3A.908
! UNLESS THE SELECTED GAS APPEARS. FXCA3A.909
N_GAS=0 FXCA3A.910
! FXCA3A.911
DO I=1, N_BAND_ABSORB(I_BAND) FXCA3A.912
IF (INDEX_ABSORB(I, I_BAND).EQ.I_GAS) N_GAS=1 FXCA3A.913
ENDDO FXCA3A.914
! FXCA3A.915
ENDIF FXCA3A.916
! FXCA3A.917
! FXCA3A.918
IF (N_GAS.GT.0) THEN FXCA3A.919
! FXCA3A.920
! SET THE FLAG FOR GASEOUS ABSORPTION IN THE BAND. FXCA3A.921
L_GAS_BAND=.TRUE. FXCA3A.922
! FXCA3A.923
DO J=1, N_GAS FXCA3A.924
! FXCA3A.925
I_GAS_BAND=INDEX_ABSORB(J, I_BAND) FXCA3A.926
! FXCA3A.927
! RESET THE POINTER IF THERE IS JUST ONE GAS. ADB1F401.463
! FXCA3A.929
IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_SINGLE) FXCA3A.930
& THEN FXCA3A.931
! ONLY THE SELECTED GAS IS ACTIVE IN THE BAND. FXCA3A.932
I_GAS_BAND=I_GAS FXCA3A.933
! FXCA3A.934
ENDIF FXCA3A.935
! FXCA3A.936
IF (I_SCALE_ESFT(I_BAND, I_GAS_BAND) FXCA3A.937
& .EQ.IP_SCALE_BAND) THEN FXCA3A.938
! RESCALE THE AMOUNT OF GAS FOR THIS BAND NOW. FXCA3A.939
CALL SCALE_ABSORB
(IERR, N_PROFILE, N_LAYER FXCA3A.940
& , GAS_MIX_RATIO(1, 0, I_GAS_BAND), P, T FXCA3A.941
& , L_LAYER, I_TOP FXCA3A.942
& , GAS_FRAC_RESCALED(1, 0, I_GAS_BAND) FXCA3A.943
& , I_SCALE_FNC(I_BAND, I_GAS_BAND) FXCA3A.944
& , P_REFERENCE(I_GAS_BAND, I_BAND) FXCA3A.945
& , T_REFERENCE(I_GAS_BAND, I_BAND) FXCA3A.946
& , SCALE_VECTOR(1, 1, I_BAND, I_GAS_BAND) FXCA3A.947
& , L_DOPPLER(I_GAS_BAND) FXCA3A.948
& , DOPPLER_CORRECTION(I_GAS_BAND) FXCA3A.949
& , NPD_PROFILE, NPD_LAYER, NPD_SCALE_FNC FXCA3A.950
& , NPD_SCALE_VARIABLE FXCA3A.951
& ) FXCA3A.952
IF (IERR.NE.I_NORMAL) RETURN FXCA3A.953
! FXCA3A.954
ELSE IF (I_SCALE_ESFT(I_BAND, I_GAS_BAND) FXCA3A.955
& .EQ.IP_SCALE_NULL) THEN FXCA3A.956
! COPY ACROSS THE UNSCALED ARRAY. FXCA3A.957
DO I=1, N_LAYER FXCA3A.958
DO L=1, N_PROFILE FXCA3A.959
GAS_FRAC_RESCALED(L, I, I_GAS_BAND) FXCA3A.960
& =GAS_MIX_RATIO(L, I, I_GAS_BAND) FXCA3A.961
ENDDO FXCA3A.962
ENDDO FXCA3A.963
ENDIF FXCA3A.964
ENDDO FXCA3A.965
ELSE FXCA3A.966
L_GAS_BAND=.FALSE. FXCA3A.967
ENDIF FXCA3A.968
! FXCA3A.969
ELSE FXCA3A.970
L_GAS_BAND=.FALSE. FXCA3A.971
ENDIF FXCA3A.972
! FXCA3A.973
! FXCA3A.974
! FXCA3A.975
! RESCALE AMOUNTS OF CONTINUA. FXCA3A.976
! FXCA3A.977
IF (L_CONTINUUM) THEN FXCA3A.978
N_CONTINUUM=N_BAND_CONTINUUM(I_BAND) FXCA3A.979
DO I=1, N_CONTINUUM FXCA3A.980
I_CONTINUUM_POINTER(I)=INDEX_CONTINUUM(I_BAND, I) FXCA3A.981
I_CONTINUUM=I_CONTINUUM_POINTER(I) FXCA3A.982
K_CONTINUUM_MONO(I_CONTINUUM) FXCA3A.983
& =K_CONTINUUM(I_BAND, I_CONTINUUM) FXCA3A.984
CALL RESCALE_CONTINUUM
(N_PROFILE, N_LAYER, I_CONTINUUM FXCA3A.985
& , P, T, L_LAYER, I_TOP FXCA3A.986
& , DENSITY, MOLAR_DENSITY_WATER, MOLAR_DENSITY_FRN FXCA3A.987
& , GAS_MIX_RATIO(1, 0, INDEX_WATER) FXCA3A.988
& , AMOUNT_CONTINUUM(1, 0, I_CONTINUUM) FXCA3A.989
& , I_SCALE_FNC_CONT(I_BAND, I_CONTINUUM) FXCA3A.990
& , P_REF_CONTINUUM(I_CONTINUUM, I_BAND) FXCA3A.991
& , T_REF_CONTINUUM(I_CONTINUUM, I_BAND) FXCA3A.992
& , SCALE_CONTINUUM(1, I_BAND, I_CONTINUUM) FXCA3A.993
& , NPD_PROFILE, NPD_LAYER, NPD_SCALE_FNC FXCA3A.994
& , NPD_SCALE_VARIABLE FXCA3A.995
& ) FXCA3A.996
ENDDO FXCA3A.997
ENDIF FXCA3A.998
! FXCA3A.999
! FXCA3A.1000
! FXCA3A.1001
! CALCULATE THE GREY EXTINCTION WITHIN THE BAND. FXCA3A.1002
! FXCA3A.1003
CALL GREY_EXTINCTION
(IERR FXCA3A.1004
& , N_PROFILE, N_LAYER, L_LAYER, P, T, DENSITY FXCA3A.1005
& , L_RESCALE FXCA3A.1006
& , L_RAYLEIGH, RAYLEIGH_COEFFICIENT(I_BAND) FXCA3A.1007
& , L_CONTINUUM, N_CONTINUUM, I_CONTINUUM_POINTER FXCA3A.1008
& , K_CONTINUUM_MONO, AMOUNT_CONTINUUM FXCA3A.1009
& , L_AEROSOL, N_AEROSOL, AEROSOL_MIX_RATIO FXCA3A.1010
& , I_AEROSOL_PARAMETRIZATION FXCA3A.1011
& , I_HUMIDITY_POINTER, HUMIDITIES, DELTA_HUMIDITY FXCA3A.1012
& , MEAN_REL_HUMIDITY FXCA3A.1013
& , AEROSOL_ABSORPTION(1, 1, I_BAND) FXCA3A.1014
& , AEROSOL_SCATTERING(1, 1, I_BAND) FXCA3A.1015
& , AEROSOL_ASYMMETRY(1, 1, I_BAND) FXCA3A.1016
& , L_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE, N_CLOUD_TOP FXCA3A.1017
& , L_CLOUD_LAYER, I_CLOUD FXCA3A.1018
& , N_CONDENSED, L_CLOUD_CMP, I_PHASE_CMP FXCA3A.1019
& , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST(1, 1, I_BAND) FXCA3A.1020
& , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR ADB2F404.561
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION) FXCA3A.1022
& , I_CLOUD_TYPE FXCA3A.1023
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1024
& , FORWARD_SCATTER_FREE FXCA3A.1025
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1026
& , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD FXCA3A.1027
& , NPD_PROFILE, NPD_LAYER, NPD_CONTINUUM FXCA3A.1028
& , NPD_AEROSOL_SPECIES, NPD_HUMIDITIES FXCA3A.1029
& , NPD_CLOUD_PARAMETER FXCA3A.1030
& ) FXCA3A.1031
IF (IERR.NE.I_NORMAL) RETURN FXCA3A.1032
! FXCA3A.1033
! FXCA3A.1034
! FXCA3A.1035
IF (I_ANGULAR_INTEGRATION.EQ.IP_TWO_STREAM) THEN FXCA3A.1036
! FXCA3A.1037
! RESCALE THE ASYMMETRY AND CALCULATE THE SCATTERING FXCA3A.1038
! FRACTIONS. (THESE ARE GREY AND MAY BE CALCULATED OUTSIDE FXCA3A.1039
! A LOOP OVER GASES). FXCA3A.1040
! FXCA3A.1041
IF (L_RESCALE) THEN FXCA3A.1042
! FXCA3A.1043
! RESCALE FREE ASYMMETRY: FXCA3A.1044
! FXCA3A.1045
CALL RESCALE_ASYMMETRY
(N_PROFILE, 1, N_LAYER FXCA3A.1046
& , ASYMMETRY_FREE, FORWARD_SCATTER_FREE FXCA3A.1047
& , NPD_PROFILE, NPD_LAYER FXCA3A.1048
& ) FXCA3A.1049
! FXCA3A.1050
! FXCA3A.1051
IF (L_CLOUD) THEN FXCA3A.1052
! FXCA3A.1053
! RESCALE CLOUDY ASYMMETRY: FXCA3A.1054
! FXCA3A.1055
DO K=1, NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION) FXCA3A.1056
CALL RESCALE_ASYMMETRY
(N_PROFILE, N_CLOUD_TOP FXCA3A.1057
& , N_LAYER FXCA3A.1058
& , ASYMMETRY_CLOUD(1, 1, K) FXCA3A.1059
& , FORWARD_SCATTER_CLOUD(1, 1, K) FXCA3A.1060
& , NPD_PROFILE, NPD_LAYER FXCA3A.1061
& ) FXCA3A.1062
ENDDO FXCA3A.1063
! FXCA3A.1064
ENDIF FXCA3A.1065
! FXCA3A.1066
ENDIF FXCA3A.1067
! FXCA3A.1068
ENDIF FXCA3A.1069
! FXCA3A.1070
! FXCA3A.1071
! FXCA3A.1072
! FXCA3A.1073
! PRELIMINARY CALCULATIONS FOR SOURCE TERMS: FXCA3A.1074
! FXCA3A.1075
IF (ISOLIR.EQ.IP_SOLAR) THEN FXCA3A.1076
! CONVERT NORMALIZED BAND FLUXES TO ACTUAL ENERGY FLUXES. FXCA3A.1077
DO L=1, N_PROFILE FXCA3A.1078
INC_SOLAR_FLUX_BAND(L)=SOLAR_TOA(L) FXCA3A.1079
& *SOLAR_FLUX_BAND(I_BAND)/SEC_0(L) FXCA3A.1080
ENDDO FXCA3A.1081
! FXCA3A.1082
ELSE IF (ISOLIR.EQ.IP_INFRA_RED) THEN FXCA3A.1083
! FXCA3A.1084
! CALCULATE THE CHANGE IN THE THERMAL SOURCE FUNCTION FXCA3A.1085
! ACROSS EACH LAYER FOR THE INFRA-RED PART OF THE SPECTRUM. FXCA3A.1086
! FXCA3A.1087
CALL DIFF_PLANCK_SOURCE
(N_PROFILE, N_LAYER FXCA3A.1088
& , N_DEG_FIT, THERMAL_COEFFICIENT(0, I_BAND) FXCA3A.1089
& , T_REF_PLANCK, T_LEVEL, T_GROUND FXCA3A.1090
& , PLANCK_SOURCE_BAND, DIFF_PLANCK_BAND FXCA3A.1091
& , THERMAL_GROUND_BAND FXCA3A.1092
& , L_IR_SOURCE_QUAD, T, DIFF_PLANCK_BAND_2 FXCA3A.1093
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.464
& , PLANCK_FREEZE_SEA ADB1F401.465
& , NPD_PROFILE, NPD_LAYER, NPD_THERMAL_COEFF FXCA3A.1094
& ) FXCA3A.1095
ENDIF FXCA3A.1096
! FXCA3A.1097
! FXCA3A.1098
! FXCA3A.1099
! FXCA3A.1100
! SET THE SURFACE PROPERTIES: FXCA3A.1101
! FXCA3A.1102
CALL SET_SURFACE_PROPERTIES
(N_POINT_TYPE, INDEX_SURFACE FXCA3A.1103
& , I_SPEC_SURFACE FXCA3A.1104
& , ISOLIR, I_BAND FXCA3A.1105
& , SURFACE_ALBEDO FXCA3A.1106
& , ALBEDO_FIELD_DIFF(1, I_BAND), ALBEDO_FIELD_DIR(1, I_BAND) FXCA3A.1107
& , N_DIR_ALBEDO_FIT, DIRECT_ALBEDO_PARM, SEC_0 FXCA3A.1108
& , EMISSIVITY_GROUND, EMISSIVITY_FIELD(1, I_BAND) FXCA3A.1109
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1110
& , THERMAL_GROUND_BAND FXCA3A.1111
& , NPD_PROFILE, NPD_BAND, NPD_SURFACE, NPD_ALBEDO_PARM FXCA3A.1112
& ) FXCA3A.1113
! FXCA3A.1114
! FXCA3A.1115
! FXCA3A.1116
! FXCA3A.1117
! FXCA3A.1118
! CALL A SOLVER APPROPRIATE TO THE PRESENCE OF GASES AND FXCA3A.1119
! THE OVERLAP ASSUMED: FXCA3A.1120
! FXCA3A.1121
IF (.NOT.L_GAS_BAND) THEN FXCA3A.1122
! FXCA3A.1123
! THERE IS NO GASEOUS ABSORPTION. SOLVE FOR THE FXCA3A.1124
! FLUXES DIRECTLY. FXCA3A.1125
! FXCA3A.1126
CALL SOLVE_BAND_WITHOUT_GAS
(IERR FXCA3A.1127
! Atmospheric Properties FXCA3A.1128
& , N_PROFILE, N_LAYER, D_MASS FXCA3A.1129
! Angular integration FXCA3A.1130
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1131
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1132
! Treatment of scattering FXCA3A.1133
& , I_SCATTER_METHOD_BAND FXCA3A.1134
! Options for solver FXCA3A.1135
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.301
! Spectral region FXCA3A.1137
& , ISOLIR FXCA3A.1138
! Solar Properties FXCA3A.1139
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1140
! Infra-red Properties FXCA3A.1141
& , PLANCK_SOURCE_BAND(1, 0) FXCA3A.1142
& , PLANCK_SOURCE_BAND(1, N_LAYER) FXCA3A.1143
& , DIFF_PLANCK_BAND, L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1144
! Surface Properties FXCA3A.1145
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1146
& , THERMAL_GROUND_BAND FXCA3A.1147
! Clear-sky optical properties FXCA3A.1148
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1149
& , FORWARD_SCATTER_FREE FXCA3A.1150
! Cloudy properties FXCA3A.1151
& , L_CLOUD, I_CLOUD FXCA3A.1152
! Cloudy Geometry FXCA3A.1153
& , N_CLOUD_TOP FXCA3A.1154
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1155
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.474
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1156
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1157
& , CLOUD_OVERLAP FXCA3A.1158
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1159
! Cloudy optical properties FXCA3A.1160
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1161
& , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD FXCA3A.1162
! Calculated Fluxes FXCA3A.1163
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1164
! Flags for Clear-sky Fluxes FXCA3A.1165
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1166
! Calculated Clear-sky Fluxes FXCA3A.1167
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1168
! Planckian Function FXCA3A.1169
& , PLANCK_SOURCE_BAND FXCA3A.1170
! Dimensions of Arrays FXCA3A.1171
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1172
& ) FXCA3A.1173
IF (IERR.NE.I_NORMAL) RETURN FXCA3A.1174
! FXCA3A.1175
! FXCA3A.1176
ELSE FXCA3A.1177
! FXCA3A.1178
! GASES ARE INCLUDED. FXCA3A.1179
! FXCA3A.1180
! INITIALIZE THE FLUX IN THE BAND TO ZERO. FXCA3A.1181
CALL INITIALIZE_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT FXCA3A.1182
& , ISOLIR FXCA3A.1183
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1184
& , L_CLEAR FXCA3A.1185
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1186
& , 0.0E+00 FXCA3A.1187
& , NPD_PROFILE, NPD_LAYER FXCA3A.1188
& , L_NET FXCA3A.1189
& ) FXCA3A.1190
! FXCA3A.1191
! TREAT THE GASEOUS OVERLAPS AS DIRECTED BY FXCA3A.1192
! THE OVERLAP SWITCH. FXCA3A.1193
! FXCA3A.1194
IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_SINGLE) THEN FXCA3A.1195
! FXCA3A.1196
CALL SOLVE_BAND_ONE_GAS
(IERR FXCA3A.1197
! Atmospheric Properties FXCA3A.1198
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS FXCA3A.1199
! Angular Integration FXCA3A.1200
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1201
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1202
! Treatment of Scattering FXCA3A.1203
& , I_SCATTER_METHOD_BAND FXCA3A.1204
! Options for solver FXCA3A.1205
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.302
! Gaseous Properties FXCA3A.1207
& , I_BAND, I_GAS FXCA3A.1208
& , I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC FXCA3A.1209
& , K_ESFT, W_ESFT, SCALE_VECTOR FXCA3A.1210
& , P_REFERENCE, T_REFERENCE FXCA3A.1211
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED FXCA3A.1212
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.1213
! Spectral Region FXCA3A.1214
& , ISOLIR FXCA3A.1215
! Solar Properties FXCA3A.1216
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1217
! Infra-red Properties FXCA3A.1218
& , PLANCK_SOURCE_BAND(1, 0) FXCA3A.1219
& , PLANCK_SOURCE_BAND(1, N_LAYER) FXCA3A.1220
& , DIFF_PLANCK_BAND FXCA3A.1221
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1222
! Surface Properties FXCA3A.1223
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1224
& , THERMAL_GROUND_BAND FXCA3A.1225
! Clear-sky optical Properties FXCA3A.1226
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1227
& , FORWARD_SCATTER_FREE FXCA3A.1228
! Cloudy properties FXCA3A.1229
& , L_CLOUD, I_CLOUD FXCA3A.1230
! Cloud Geometry FXCA3A.1231
& , N_CLOUD_TOP FXCA3A.1232
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1233
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.475
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1234
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1235
& , CLOUD_OVERLAP FXCA3A.1236
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1237
! Cloudy Optical Properties FXCA3A.1238
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1239
& , ASYMMETRY_CLOUD FXCA3A.1240
& , FORWARD_SCATTER_CLOUD FXCA3A.1241
! Fluxes Calculated FXCA3A.1242
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1243
! Flags for clear-sky calculations FXCA3A.1244
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1245
! Clear-sky Fluxes FXCA3A.1246
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1247
! Planckian Function FXCA3A.1248
& , PLANCK_SOURCE_BAND FXCA3A.1249
! Dimensions of Arrays FXCA3A.1250
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1251
& , NPD_BAND, NPD_SPECIES FXCA3A.1252
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC FXCA3A.1253
& ) FXCA3A.1254
! FXCA3A.1255
ELSE IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_RANDOM) THEN FXCA3A.1256
! FXCA3A.1257
CALL SOLVE_BAND_RANDOM_OVERLAP
(IERR FXCA3A.1258
! Atmospheric Properties FXCA3A.1259
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS FXCA3A.1260
! Angular Integration FXCA3A.1261
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1262
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1263
! Treatment of Scattering FXCA3A.1264
& , I_SCATTER_METHOD_BAND FXCA3A.1265
! Options for solver FXCA3A.1266
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.303
! Gaseous Properties FXCA3A.1268
& , I_BAND, N_GAS FXCA3A.1269
& , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC FXCA3A.1270
& , K_ESFT, W_ESFT, SCALE_VECTOR FXCA3A.1271
& , P_REFERENCE, T_REFERENCE FXCA3A.1272
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED FXCA3A.1273
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.1274
! Spectral Region FXCA3A.1275
& , ISOLIR FXCA3A.1276
! Solar Properties FXCA3A.1277
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1278
! Infra-red Properties FXCA3A.1279
& , PLANCK_SOURCE_BAND(1, 0) FXCA3A.1280
& , PLANCK_SOURCE_BAND(1, N_LAYER) FXCA3A.1281
& , DIFF_PLANCK_BAND FXCA3A.1282
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1283
! Surface Properties FXCA3A.1284
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1285
& , THERMAL_GROUND_BAND FXCA3A.1286
! Clear-sky optical Properties FXCA3A.1287
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1288
& , FORWARD_SCATTER_FREE FXCA3A.1289
! Cloudy Properties FXCA3A.1290
& , L_CLOUD, I_CLOUD FXCA3A.1291
! Cloud Geometry FXCA3A.1292
& , N_CLOUD_TOP FXCA3A.1293
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1294
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.476
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1295
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1296
& , CLOUD_OVERLAP FXCA3A.1297
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1298
! Cloudy optical Properties FXCA3A.1299
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1300
& , ASYMMETRY_CLOUD FXCA3A.1301
& , FORWARD_SCATTER_CLOUD FXCA3A.1302
! Fluxes Calculated FXCA3A.1303
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1304
! Flags for Clear-sky Calculations FXCA3A.1305
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1306
! Clear-sky Fluxes FXCA3A.1307
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1308
! Planckian Function FXCA3A.1309
& , PLANCK_SOURCE_BAND FXCA3A.1310
! Dimensions of Arrays FXCA3A.1311
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1312
& , NPD_BAND, NPD_SPECIES FXCA3A.1313
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC FXCA3A.1314
& ) FXCA3A.1315
! FXCA3A.1316
ELSE IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_FESFT) THEN FXCA3A.1317
! FXCA3A.1318
CALL SOLVE_BAND_FESFT
(IERR FXCA3A.1319
! Atmospheric Properties FXCA3A.1320
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS FXCA3A.1321
! Angular Integration FXCA3A.1322
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1323
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1324
! Treatment of Scattering FXCA3A.1325
& , I_SCATTER_METHOD_BAND FXCA3A.1326
! Options for solver FXCA3A.1327
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.304
! Gaseous Properties FXCA3A.1329
& , I_BAND, N_GAS FXCA3A.1330
& , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC FXCA3A.1331
& , K_ESFT, W_ESFT, SCALE_VECTOR FXCA3A.1332
& , P_REFERENCE, T_REFERENCE FXCA3A.1333
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED FXCA3A.1334
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.1335
! Spectral Region FXCA3A.1336
& , ISOLIR FXCA3A.1337
! Solar Properties FXCA3A.1338
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1339
! Infra-red Properties FXCA3A.1340
& , PLANCK_SOURCE_BAND(1, 0) FXCA3A.1341
& , PLANCK_SOURCE_BAND(1, N_LAYER) FXCA3A.1342
& , DIFF_PLANCK_BAND FXCA3A.1343
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1344
! Surface Properties FXCA3A.1345
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1346
& , THERMAL_GROUND_BAND FXCA3A.1347
! Clear-sky Optical Properties FXCA3A.1348
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1349
& , FORWARD_SCATTER_FREE FXCA3A.1350
! Cloudy Properties FXCA3A.1351
& , L_CLOUD, I_CLOUD FXCA3A.1352
! Cloud Geometry FXCA3A.1353
& , N_CLOUD_TOP FXCA3A.1354
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1355
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.477
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1356
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1357
& , CLOUD_OVERLAP FXCA3A.1358
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1359
! Cloudy Optical Properties FXCA3A.1360
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1361
& , ASYMMETRY_CLOUD, FORWARD_SCATTER_CLOUD FXCA3A.1362
! Fluxes Calculated FXCA3A.1363
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1364
! Flags for Clear Fluxes FXCA3A.1365
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1366
! Clear-sky Fluxes Calculated FXCA3A.1367
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1368
! Planckian Source Function FXCA3A.1369
& , PLANCK_SOURCE_BAND FXCA3A.1370
! Sizes of Arrays FXCA3A.1371
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1372
& , NPD_BAND, NPD_SPECIES FXCA3A.1373
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC FXCA3A.1374
& ) FXCA3A.1375
! FXCA3A.1376
ELSE IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_CLR_FESFT) THEN FXCA3A.1377
! FXCA3A.1378
CALL SOLVE_BAND_CLR_FESFT
(IERR FXCA3A.1379
! Atmospheric Properties FXCA3A.1380
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS FXCA3A.1381
! Angular Integration FXCA3A.1382
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1383
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1384
! Treatment of Scattering FXCA3A.1385
& , I_SCATTER_METHOD_BAND FXCA3A.1386
! Options for Solver FXCA3A.1387
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.305
! Gaseous Properties FXCA3A.1389
& , I_BAND, N_GAS FXCA3A.1390
& , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC FXCA3A.1391
& , K_ESFT, W_ESFT, SCALE_VECTOR FXCA3A.1392
& , P_REFERENCE, T_REFERENCE FXCA3A.1393
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED FXCA3A.1394
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.1395
! Spectral Region FXCA3A.1396
& , ISOLIR FXCA3A.1397
! Solar Properties FXCA3A.1398
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1399
! Infra-red Properties FXCA3A.1400
& , PLANCK_SOURCE_BAND FXCA3A.1401
& , DIFF_PLANCK_BAND FXCA3A.1402
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1403
! Surface Properties FXCA3A.1404
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1405
& , THERMAL_GROUND_BAND FXCA3A.1406
! Clear-sky Optical Properties FXCA3A.1407
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1408
& , FORWARD_SCATTER_FREE FXCA3A.1409
! Cloudy Properties FXCA3A.1410
& , L_CLOUD, I_CLOUD FXCA3A.1411
! Cloud Geometry FXCA3A.1412
& , N_CLOUD_TOP FXCA3A.1413
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1414
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.478
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1415
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1416
& , CLOUD_OVERLAP FXCA3A.1417
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1418
! Cloudy Optical Properties FXCA3A.1419
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1420
& , ASYMMETRY_CLOUD FXCA3A.1421
& , FORWARD_SCATTER_CLOUD FXCA3A.1422
! Fluxes Calculated FXCA3A.1423
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1424
! Flags for Clear-sky Fluxes FXCA3A.1425
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1426
! Clear-sky Fluxes Calculated FXCA3A.1427
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1428
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1429
& , NPD_BAND, NPD_SPECIES FXCA3A.1430
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC FXCA3A.1431
& ) FXCA3A.1432
! FXCA3A.1433
ELSE IF (I_GAS_OVERLAP(I_BAND).EQ.IP_OVERLAP_K_EQV) THEN FXCA3A.1434
! FXCA3A.1435
CALL SOLVE_BAND_K_EQV
(IERR FXCA3A.1436
! Atmospheric Properties FXCA3A.1437
& , N_PROFILE, N_LAYER, L_LAYER, I_TOP, P, T, D_MASS FXCA3A.1438
! Angular Integration FXCA3A.1439
& , I_ANGULAR_INTEGRATION, I_2STREAM, L_2_STREAM_CORRECT FXCA3A.1440
& , L_RESCALE, N_ORDER_GAUSS FXCA3A.1441
! Treatment of Scattering FXCA3A.1442
& , I_SCATTER_METHOD_BAND FXCA3A.1443
! Options for Solver FXCA3A.1444
& , I_SOLVER, L_NET, N_AUGMENT ADB1F405.306
! Gaseous Properties FXCA3A.1446
& , I_BAND, N_GAS FXCA3A.1447
& , INDEX_ABSORB, I_BAND_ESFT, I_SCALE_ESFT, I_SCALE_FNC FXCA3A.1448
& , K_ESFT, W_ESFT, SCALE_VECTOR FXCA3A.1449
& , P_REFERENCE, T_REFERENCE FXCA3A.1450
& , GAS_MIX_RATIO, GAS_FRAC_RESCALED FXCA3A.1451
& , L_DOPPLER, DOPPLER_CORRECTION FXCA3A.1452
! Spectral Region FXCA3A.1453
& , ISOLIR FXCA3A.1454
! Solar Properties FXCA3A.1455
& , SEC_0, INC_SOLAR_FLUX_BAND FXCA3A.1456
! Infra-red Properties FXCA3A.1457
& , PLANCK_SOURCE_BAND FXCA3A.1458
& , DIFF_PLANCK_BAND FXCA3A.1459
& , L_IR_SOURCE_QUAD, DIFF_PLANCK_BAND_2 FXCA3A.1460
! Surface Properties FXCA3A.1461
& , ALBEDO_SURFACE_DIFF, ALBEDO_SURFACE_DIR FXCA3A.1462
& , THERMAL_GROUND_BAND FXCA3A.1463
! Clear-sky optical properties FXCA3A.1464
& , K_GREY_TOT_FREE, K_EXT_SCAT_FREE, ASYMMETRY_FREE FXCA3A.1465
& , FORWARD_SCATTER_FREE FXCA3A.1466
! Cloudy Properties FXCA3A.1467
& , L_CLOUD, I_CLOUD FXCA3A.1468
! Cloud Geometry FXCA3A.1469
& , N_CLOUD_TOP FXCA3A.1470
& , NP_CLOUD_TYPE(I_CLOUD_REPRESENTATION), FRAC_CLOUD FXCA3A.1471
& , I_REGION_CLOUD, FRAC_REGION ADB1F402.479
& , W_FREE, N_FREE_PROFILE, I_FREE_PROFILE FXCA3A.1472
& , W_CLOUD, N_CLOUD_PROFILE, I_CLOUD_PROFILE FXCA3A.1473
& , CLOUD_OVERLAP FXCA3A.1474
& , N_COLUMN, L_COLUMN, AREA_COLUMN FXCA3A.1475
! Cloudy Optical Properties FXCA3A.1476
& , K_GREY_TOT_CLOUD, K_EXT_SCAT_CLOUD FXCA3A.1477
& , ASYMMETRY_CLOUD FXCA3A.1478
& , FORWARD_SCATTER_CLOUD FXCA3A.1479
! Fluxes Calculated FXCA3A.1480
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1481
! Flags for Clear-sky Calculations FXCA3A.1482
& , L_CLEAR, I_SOLVER_CLEAR FXCA3A.1483
! Clear-sky Fluxes Calculated FXCA3A.1484
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1485
! Dimensions of Arrays FXCA3A.1486
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN FXCA3A.1487
& , NPD_BAND, NPD_SPECIES FXCA3A.1488
& , NPD_ESFT_TERM, NPD_SCALE_VARIABLE, NPD_SCALE_FNC FXCA3A.1489
& ) FXCA3A.1490
! FXCA3A.1491
ENDIF FXCA3A.1492
ENDIF FXCA3A.1493
! FXCA3A.1494
! FXCA3A.1495
! FXCA3A.1496
! INCREMENT THE TOTAL FLUXES. FXCA3A.1497
! FXCA3A.1498
CALL AUGMENT_TOTAL_FLUX
(N_PROFILE, N_LAYER, N_AUGMENT FXCA3A.1499
& , ISOLIR, L_CLEAR, L_NET FXCA3A.1500
& , WEIGHT_BAND(I_BAND), PLANCK_SOURCE_BAND FXCA3A.1501
& , FLUX_DIRECT, FLUX_TOTAL FXCA3A.1502
& , FLUX_DIRECT_BAND, FLUX_TOTAL_BAND FXCA3A.1503
& , FLUX_DIRECT_CLEAR, FLUX_TOTAL_CLEAR FXCA3A.1504
& , FLUX_DIRECT_CLEAR_BAND, FLUX_TOTAL_CLEAR_BAND FXCA3A.1505
& , PLANCK_FLUX FXCA3A.1506
& , NPD_PROFILE, NPD_LAYER FXCA3A.1507
& , ALBEDO_SURFACE_DIFF FXCA3A.1508
& , ALBEDO_SURFACE_DIR FXCA3A.1509
& ) FXCA3A.1510
! FXCA3A.1511
! FXCA3A.1512
! ADB1F401.466
! INCREMENT THE BAND-DEPENDENT DIAGNOSTICS FOR THE FXCA3A.1513
! UNIFIED MODEL. FXCA3A.1514
CALL R2_COUPLE_DIAG
(N_PROFILE, L_NET, ISOLIR FXCA3A.1515
& , ALBEDO_FIELD_DIFF(1, I_BAND), ALBEDO_FIELD_DIR(1, I_BAND) FXCA3A.1516
& , ALBEDO_SEA_DIFF(1, I_BAND), ALBEDO_SEA_DIR(1, I_BAND) FXCA3A.1517
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.467
& , PLANCK_FREEZE_SEA ADB1F401.468
& , PLANCK_SOURCE_BAND(1, N_LAYER), THERMAL_GROUND_BAND ADB1F401.469
& , FLUX_TOTAL_BAND(1, N_AUGMENT) FXCA3A.1519
& , FLUX_TOTAL_BAND(1, N_AUGMENT-1) ADB1F401.470
& , FLUX_DIRECT_BAND(1, N_LAYER) FXCA3A.1521
& , FLUX_TOTAL_CLEAR_BAND(1, N_AUGMENT) FXCA3A.1522
& , FLUX_TOTAL_CLEAR_BAND(1, N_AUGMENT-1) ADB1F401.471
& , FLUX_DIRECT_CLEAR_BAND(1, N_LAYER) FXCA3A.1524
& , WEIGHT_690NM(I_BAND) ADB1F401.472
& , SEA_FLUX FXCA3A.1526
& , L_SURFACE_DOWN_FLUX, SURFACE_DOWN_FLUX FXCA3A.1527
& , L_SURF_DOWN_CLR, SURF_DOWN_CLR FXCA3A.1528
& , L_SURF_UP_CLR, SURF_UP_CLR FXCA3A.1529
& , L_FLUX_BELOW_690NM_SURF, FLUX_BELOW_690NM_SURF ADB1F401.473
& , NPD_PROFILE FXCA3A.1531
& ) FXCA3A.1532
! FXCA3A.1533
ENDDO FXCA3A.1534
! FXCA3A.1535
! FXCA3A.1536
! FXCA3A.1537
! FXCA3A.1538
! PASS THE CALCULATED FLUXES INTO THE OUTPUT ARRAYS. FXCA3A.1539
! FXCA3A.1540
CALL ASSIGN_FLUX
(N_PROFILE, N_LAYER FXCA3A.1541
& , FLUX_TOTAL, FLUX_TOTAL_CLEAR FXCA3A.1542
& , ISOLIR FXCA3A.1543
& , PLANCK_FLUX FXCA3A.1544
& , L_CLEAR, L_NET FXCA3A.1545
& , FLUX_DOWN, FLUX_UP, FLUX_DOWN_CLEAR, FLUX_UP_CLEAR FXCA3A.1546
& , NPD_PROFILE, NPD_LAYER FXCA3A.1547
& ) FXCA3A.1548
! FXCA3A.1549
! FXCA3A.1550
! FXCA3A.1551
RETURN FXCA3A.1552
END FXCA3A.1553
*ENDIF DEF,A01_3A,OR,DEF,A02_3A FXCA3A.1554
*ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.26