*IF DEF,A02_3A LWRAD3A.2
C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13416
C GTS2F400.13417
C Use, duplication or disclosure of this code is subject to the GTS2F400.13418
C restrictions as set forth in the contract. GTS2F400.13419
C GTS2F400.13420
C Meteorological Office GTS2F400.13421
C London Road GTS2F400.13422
C BRACKNELL GTS2F400.13423
C Berkshire UK GTS2F400.13424
C RG12 2SZ GTS2F400.13425
C GTS2F400.13426
C If no contract has been raised with this copy of the code, the use, GTS2F400.13427
C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13428
C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13429
C Modelling at the above address. GTS2F400.13430
C ******************************COPYRIGHT****************************** GTS2F400.13431
C GTS2F400.13432
!+ Longwave Interface to the Edwards-Slingo Radiation Scheme. LWRAD3A.3
! LWRAD3A.4
! Purpose: LWRAD3A.5
! This routine prepares the call to the Edwards-Slingo radiation LWRAD3A.6
! scheme in the longwave. LWRAD3A.7
! LWRAD3A.8
! Method: LWRAD3A.9
! Principally, this routine transfers arrays into the correct formats. LWRAD3A.10
! LWRAD3A.11
! Current Owner of Code: J. M. Edwards LWRAD3A.12
! LWRAD3A.13
! History: LWRAD3A.14
! Version Date Comment LWRAD3A.15
! 4.0 27-07-95 Original Code LWRAD3A.16
! (J. M. Edwards) LWRAD3A.17
! 4.1 10-06-96 Revised formulation ADB1F401.489
! over sea-ice. Testing ADB1F401.490
! of spectral options ADB1F401.491
! introduced. New solvers ADB1F401.492
! added. ADB1F401.493
! (J. M. Edwards) ADB1F401.494
! 4.2 Nov. 96 T3E migration: CALL WHENFGT replaced GSS2F402.240
! by portable fortran code. GSS2F402.241
! S.J.Swarbrick GSS2F402.242
! 4.2 08-08-96 Climatological aerosols ADB1F402.485
! introduced. ADB1F402.486
! (J. M. Edwards) ADB1F402.487
! 4.4 08-04-97 Changes for new precip AYY1F404.373
! scheme (qCF prognostic) AYY1F404.374
! (A. C. Bushell) AYY1F404.375
! 4.4 26-09-97 Conv. cloud amount on AJX0F404.17
! model levs allowed for. AJX0F404.18
! J.M.Gregory AJX0F404.19
! LWRAD3A.18
! 4.4 04-09-96 Changes to the passing ADB2F404.622
! of arguments into the ADB2F404.623
! routine. Dissolved ADB2F404.624
! sulphate aerosol is ADB2F404.625
! now included in the ADB2F404.626
! indirect effect. ADB2F404.627
! Diagnostics of fluxes ADB2F404.628
! at the tropopause ADB2F404.629
! added. ADB2F404.630
! (J. M. Edwards) ADB2F404.631
! 4.5 18-05-98 Code for new (H)(C)FCs ADB1F405.333
! added. New option ADB1F405.334
! for treating convective ADB1F405.335
! partitioning added. ADB1F405.336
! Code for obsolete ADB1F405.337
! solvers removed. ADB1F405.338
ADB1F405.339
! (J. M. Edwards) ADB1F405.340
! ADB2F404.632
! 4.5 April 1998 Pass soot variables to FILL3A routines ALR3F405.120
! Luke Robinson. ALR3F405.121
! 4.5 June 1998 Various changes to argument list to pass ASK1F405.287
! an extended 'area' cloud fraction into ASK1F405.288
! R2_SET_CLOUD. S. Cusack ASK1F405.289
! Description of Code: LWRAD3A.19
! FORTRAN 77 with extensions listed in documentation. LWRAD3A.20
! LWRAD3A.21
!- --------------------------------------------------------------------- LWRAD3A.22
SUBROUTINE R2_LWRAD(IERR 2,9LWRAD3A.23
! Gaseous Mixing Ratios LWRAD3A.24
& , H2O, CO2, O3 LWRAD3A.25
& , CO2_DIM1, CO2_DIM2, CO2_3D, L_CO2_3D ACN2F405.100
& , N2O_MIX_RATIO, CH4_MIX_RATIO ADB2F404.633
& , CFC11_MIX_RATIO, CFC12_MIX_RATIO, CFC113_MIX_RATIO ADB1F405.341
& , HCFC22_MIX_RATIO, HFC125_MIX_RATIO, HFC134A_MIX_RATIO ADB1F405.342
! Thermodynamic Variables LWRAD3A.26
& , TAC, PEXNER, TSTAR, PSTAR, AB, BB, AC, BC LWRAD3A.27
! Options for treating clouds ADB1F402.864
& , L_GLOBAL_CLOUD_TOP, GLOBAL_CLOUD_TOP ADB1F402.865
! Stratiform Cloud Fields LWRAD3A.28
& , L_CLOUD_WATER_PARTITION AYY1F404.376
& , LCA_AREA, LCA_BULK, LCCWC1, LCCWC2 ASK1F405.290
! Convective Cloud Fields LWRAD3A.30
& , CCA, CCCWP, CCB, CCT, L_3D_CCA AJX0F404.20
! Surface Fields LWRAD3A.32
& , LAND, ICE_FRACTION LWRAD3A.33
& , LYING_SNOW ADB1F402.488
! Aerosol Fields LWRAD3A.34
& , L_CLIMAT_AEROSOL, N_LEVELS_BL ADB1F402.489
& , L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT ADB1F401.495
& , SULP_DIM1,SULP_DIM2 ADB1F401.496
& , ACCUM_SULPHATE, AITKEN_SULPHATE, DISS_SULPHATE ADB2F404.635
&,L_USE_SOOT_DIRECT, SOOT_DIM1, SOOT_DIM2, FRESH_SOOT, AGED_SOOT ALR3F405.122
! Level of tropopause ADB1F402.490
& , TRINDX ADB1F402.491
! Spectrum LWRAD3A.36
*CALL LWSARG3A
ADB2F404.636
! Algorithmic Options ADB2F404.637
*CALL LWCARG3A
ADB2F404.638
& , PTS ADB2F404.639
! General Diagnostics LWRAD3A.38
& , TOTAL_CLOUD_COVER, L_TOTAL_CLOUD_COVER LWRAD3A.39
& , CLEAR_OLR, L_CLEAR_OLR LWRAD3A.40
& , SURFACE_DOWN_FLUX, L_SURFACE_DOWN_FLUX LWRAD3A.41
& , SURF_DOWN_CLR, L_SURF_DOWN_CLR LWRAD3A.42
& , CLEAR_HR, L_CLEAR_HR LWRAD3A.43
& , NET_FLUX_TROP, L_NET_FLUX_TROP ADB2F404.640
& , DOWN_FLUX_TROP, L_DOWN_FLUX_TROP ADB2F404.641
! Physical Dimensions LWRAD3A.44
& , N_PROFILE, NLEVS, NCLDS LWRAD3A.45
& , NWET, NOZONE, NPD_FIELD LWRAD3A.46
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN LWRAD3A.47
& , N_CCA_LEV AJX0F404.21
! Output Fields LWRAD3A.57
& , OLR, LWSEA, LWOUT LWRAD3A.58
& ) LWRAD3A.59
! LWRAD3A.60
! LWRAD3A.61
! LWRAD3A.62
IMPLICIT NONE LWRAD3A.63
! LWRAD3A.64
! LWRAD3A.65
! COMDECKS INCLUDED LWRAD3A.66
*CALL C_0_DG_C
LWRAD3A.67
*CALL C_G
LWRAD3A.68
*CALL C_R_CP
LWRAD3A.69
! INTERNAL DIMENSIONS OF THE CODE LWRAD3A.70
*CALL DIMFIX3A
LWRAD3A.71
! SPECTRAL REGIONS LWRAD3A.75
*CALL SPCRG3A
LWRAD3A.76
! METHODS OF INTEGRATION LWRAD3A.77
*CALL ANGINT3A
LWRAD3A.78
! METHODS OF SCATTERING LWRAD3A.79
*CALL SCTMTH3A
LWRAD3A.80
! OPTIONS TO THE CODE ALTERABLE IN THE UM ADB2F404.642
*CALL LWOPT3A
ADB2F404.643
! OPTIONS TO THE CODE FIXED IN THE UM ADB2F404.644
*CALL LWFIX3A
LWRAD3A.82
! NUMERICAL PRECISIONS LWRAD3A.84
*CALL PRMCH3A
LWRAD3A.85
*CALL PRECSN3A
LWRAD3A.86
! SOLVERS LWRAD3A.87
*CALL SOLVER3A
LWRAD3A.88
! PHYSICAL CONSTANTS LWRAD3A.89
*CALL PHYCN03A
LWRAD3A.90
! UNIT NUMBERS FOR PRINTED OUTPUT ADB2F404.645
*CALL STDIO3A
LWRAD3A.92
! ERROR FLAGS LWRAD3A.93
*CALL ERROR3A
LWRAD3A.94
! LWRAD3A.95
! LWRAD3A.96
! DUMMY ARGUMENTS LWRAD3A.97
! LWRAD3A.98
INTEGER !, INTENT(OUT) LWRAD3A.99
& IERR LWRAD3A.100
! ERROR FLAG LWRAD3A.101
! LWRAD3A.102
! DIMENSIONS OF ARRAYS: LWRAD3A.103
INTEGER !, INTENT(IN) LWRAD3A.104
& NPD_FIELD LWRAD3A.105
! FIELD SIZE IN CALLING PROGRAM LWRAD3A.106
& , NPD_PROFILE LWRAD3A.107
! SIZE OF ARRAY OF PROFILES LWRAD3A.108
& , NPD_LAYER LWRAD3A.109
! ARRAY SIZES FOR LAYERS LWRAD3A.110
& , NPD_COLUMN LWRAD3A.111
! NUMBER OF COLUMNS PER POINT LWRAD3A.112
! LWRAD3A.113
! ACTUAL SIZES USED: LWRAD3A.153
INTEGER !, INTENT(IN) LWRAD3A.154
& N_PROFILE LWRAD3A.155
! NUMBER OF PROFILES LWRAD3A.156
& , NWET LWRAD3A.157
! NUMBER OF WET LEVELS LWRAD3A.158
& , NOZONE LWRAD3A.159
! NUMBER OF LEVELS WITH OZONE LWRAD3A.160
& , NLEVS LWRAD3A.161
! NUMBER OF ATMOSPHERIC LAYERS LWRAD3A.162
& , NCLDS LWRAD3A.163
! NUMBER OF CLOUDY LEVELS LWRAD3A.164
& , N_LEVELS_BL ADB1F402.492
! NUMBER OF LEVELS IN THE BOUNDARY LAYER ADB1F402.493
& , N_CCA_LEV AJX0F404.22
! LWRAD3A.165
! SPECTRAL DATA: ADB2F404.646
*CALL LWSPDC3A
ADB2F404.647
! ADB2F404.648
! GASEOUS MIXING RATIOS: LWRAD3A.166
REAL !, INTENT(IN) LWRAD3A.167
& H2O(NPD_FIELD, NWET) LWRAD3A.168
! MASS MIXING RATIO OF WATER LWRAD3A.169
& , CO2 LWRAD3A.170
! MASS MIXING RATIO OF CO2 LWRAD3A.171
& , O3(NPD_FIELD, NOZONE) LWRAD3A.172
! MASS MIXING RATIOS OF OZONE LWRAD3A.173
& , N2O_MIX_RATIO ADB2F404.649
! MASS MIXING RATIO OF NITROUS OXIDE ADB2F404.650
& , CH4_MIX_RATIO ADB2F404.651
! MASS MIXING RATIO OF METHANE ADB2F404.652
& , CFC11_MIX_RATIO ADB2F404.653
! MASS MIXING RATIO OF CFC11 ADB2F404.654
& , CFC12_MIX_RATIO ADB2F404.655
! MASS MIXING RATIO OF CFC12 ADB2F404.656
& , CFC113_MIX_RATIO ADB1F405.343
! MASS MIXING RATIO OF CFC113 ADB1F405.344
& , HCFC22_MIX_RATIO ADB1F405.345
! MASS MIXING RATIO OF HCFC22 ADB1F405.346
& , HFC125_MIX_RATIO ADB1F405.347
! MASS MIXING RATIO OF HFC125 ADB1F405.348
& , HFC134A_MIX_RATIO ADB1F405.349
! MASS MIXING RATIO OF HFC134A ADB1F405.350
! LWRAD3A.174
! GENERAL ATMOSPHERIC PROPERTIES: LWRAD3A.175
REAL !, INTENT(IN) LWRAD3A.176
& AB(NLEVS+1) LWRAD3A.177
! A AT BOUNDARIES OF LAYERS LWRAD3A.178
& , BB(NLEVS+1) LWRAD3A.179
! B AT BOUNDARIES OF LAYERS LWRAD3A.180
& , AC(NLEVS) LWRAD3A.181
! A AT CENTRES OF LAYERS LWRAD3A.182
& , BC(NLEVS) LWRAD3A.183
! B AT CENTRES OF LAYERS LWRAD3A.184
& , TAC(NPD_FIELD, NLEVS) LWRAD3A.185
! TEMPERATURES AT CENTRES OF LAYERS LWRAD3A.186
& , PEXNER(NPD_FIELD, NLEVS+1) LWRAD3A.187
! Exner FUNCTION AT BOUNDARIES LWRAD3A.188
! LWRAD3A.189
! OPTIONS FOR TREATING CLOUDS ADB1F402.866
LOGICAL !, INTENT(IN) ADB1F402.867
& L_GLOBAL_CLOUD_TOP ADB1F402.868
! FLAG TO USE A GLOBAL VALUE FOR THE TOPS OF CLOUDS ADB1F402.869
! TO ENSURE REPRODUCIBLE RESULTS ADB1F402.870
INTEGER !, INTENT(IN) ADB1F402.871
& GLOBAL_CLOUD_TOP ADB1F402.872
! GLOBAL TOPMOST CLOUDY LAYER ADB1F402.873
! ADB1F402.874
! PROPERTIES OF STRATIFORM CLOUDS: LWRAD3A.190
LOGICAL !, INTENT(IN) AYY1F404.377
& L_CLOUD_WATER_PARTITION AYY1F404.378
! FLAG TO USE PROGNOSTIC CLOUD ICE CONTENTS AYY1F404.379
REAL !, INTENT(IN) LWRAD3A.191
& LCCWC1(NPD_FIELD, NCLDS+1/(NCLDS+1)) LWRAD3A.192
! LIQUID WATER CONTENTS (THESE ARE NOT USED DIRECTLY IN ADB1F401.498
! THE RADIATION: THE TOTAL CONDENSED WATER CONTENT IS ADB1F401.499
! REPARTITIONED USING FOCWWIL). ADB1F401.500
& , LCCWC2(NPD_FIELD, NCLDS+1/(NCLDS+1)) LWRAD3A.194
! ICE WATER CONTENTS (THESE ARE NOT USED DIRECTLY IN ADB1F401.501
! THE RADIATION: THE TOTAL CONDENSED WATER CONTENT IS ADB1F401.502
! REPARTITIONED USING FOCWWIL). ADB1F401.503
& , LCA_AREA(NPD_FIELD, NCLDS+1/(NCLDS+1)) ASK1F405.291
! AREA FRACTIONS OF LAYER CLOUDS OUTSIDE CONVECTIVE TOWERS ASK1F405.292
& , LCA_BULK(NPD_FIELD, NCLDS+1/(NCLDS+1)) ASK1F405.293
! BULK FRACTIONS OF LAYER CLOUDS OUTSIDE CONVECTIVE TOWERS ASK1F405.294
! LWRAD3A.198
! PROPERTIES OF CONVECTIVE CLOUDS: LWRAD3A.199
INTEGER !, INTENT(IN) LWRAD3A.200
& CCB(NPD_FIELD) LWRAD3A.201
! BASE OF CONVECTIVE CLOUD LWRAD3A.202
& , CCT(NPD_FIELD) LWRAD3A.203
! TOP OF CONVECTIVE CLOUD LWRAD3A.204
REAL !, INTENT(IN) LWRAD3A.205
& CCCWP(NPD_FIELD) LWRAD3A.206
! WATER PATH OF CONVECTIVE CLOUD LWRAD3A.207
& , CCA(NPD_FIELD,N_CCA_LEV) AJX0F404.23
! FRACTION OF GRID-BOX COVERED BY CONVECTIVE CLOUD ADB1F401.504
LOGICAL !, INTENT(IN) AJX0F404.24
& L_3D_CCA AJX0F404.25
! FLAG FOR 3D convective cloud amount AJX0F404.26
! LWRAD3A.210
! AEROSOLS: LWRAD3A.211
LOGICAL !, INTENT(IN) ADB1F401.505
& L_CLIMAT_AEROSOL ADB1F402.494
! FLAG FOR CLIMATOLOGICAL AEROSOL ADB1F402.495
LOGICAL !, INTENT(IN) ADB1F402.496
& L_USE_SULPC_DIRECT ADB1F401.506
! FLAG TO USE SULPHUR CYCLE FOR DIRECT EFFECT ADB1F401.507
& , L_USE_SULPC_INDIRECT ADB1F401.508
! FLAG TO USE SULPHUR CYCLE FOR INDIRECT EFFECT ADB1F401.509
& , L_USE_SOOT_DIRECT ! USE DIRECT RAD. EFFECT OF SOOT AEROSOL ALR3F405.123
INTEGER !,INTENT (IN) ADB1F401.510
& SULP_DIM1,SULP_DIM2 ADB1F401.511
! DIMENSIONS FOR _SULPHATE ARRAYS, (P_FIELD,P_LEVELS or 1,1) ADB1F401.512
& , SOOT_DIM1, SOOT_DIM2 ALR3F405.124
! DIMENSIONS FOR SOOT ARRAYS (P_FIELD,P_LEVELS or 1,1) ALR3F405.125
REAL !, INTENT(IN) LWRAD3A.212
& ACCUM_SULPHATE(SULP_DIM1, SULP_DIM2) ADB1F402.497
! MASS MIXING RATIO OF ACCUMULATION MODE AEROSOL ADB1F401.514
& , AITKEN_SULPHATE(SULP_DIM1, SULP_DIM2) ADB1F402.498
! MASS MIXING RATIO OF AITKEN MODE AEROSOL ADB1F401.516
& , DISS_SULPHATE(SULP_DIM1, SULP_DIM2) AYY1F404.380
! MIXING RATIO OF DISSOLVED SULPHATE AYY1F404.381
&,FRESH_SOOT(SOOT_DIM1,SOOT_DIM2),AGED_SOOT(SOOT_DIM1,SOOT_DIM2) ALR3F405.126
! SOOT MIXING RATIOS ALR3F405.127
! LWRAD3A.215
! CARBON CYCLE: ACN2F405.101
LOGICAL L_CO2_3D ! controls use of 3D co2 field ACN2F405.102
INTEGER !, INTENT(IN) ACN2F405.103
& CO2_DIM1, CO2_DIM2 ACN2F405.104
! DIMENSIONS FOR CO2 ARRAY, (P_FIELD,P_LEVELS or 1,1) ACN2F405.105
REAL !, INTENT(IN) ACN2F405.106
& CO2_3D(CO2_DIM1, CO2_DIM2) ACN2F405.107
! MASS MIXING RATIO OF CARBON DIOXIDE ACN2F405.108
! SURFACE FIELDS: LWRAD3A.216
LOGICAL !, INTENT(IN) LWRAD3A.217
& LAND(NPD_FIELD) LWRAD3A.218
! LAND SEA MASK LWRAD3A.219
REAL !, INTENT(IN) LWRAD3A.220
& PSTAR(NPD_FIELD) LWRAD3A.221
! SURFACE PRESSURES LWRAD3A.222
& , TSTAR(NPD_FIELD) LWRAD3A.223
! SURFACE TEMPERATURES LWRAD3A.224
& , ICE_FRACTION(NPD_FIELD) LWRAD3A.225
! SEA ICE FRACTION LWRAD3A.226
& , LYING_SNOW(NPD_FIELD) ADB1F402.499
! MASS LOADING OF LYING SNOW ADB1F402.500
! LWRAD3A.227
! Level of tropopause ADB1F402.501
INTEGER ADB1F402.502
& TRINDX(NPD_FIELD) ADB1F402.503
! THE LAYER BOUNDARY OF THE TROPOPAUSE ADB1F402.504
! ADB1F402.505
! INCREMENT OF TIME: LWRAD3A.228
REAL !, INTENT(IN) LWRAD3A.229
& PTS LWRAD3A.230
! TIME INCREMENT LWRAD3A.231
! LWRAD3A.232
! LWRAD3A.237
! CALCULATED FLUXES: LWRAD3A.238
REAL !, INTENT(OUT) LWRAD3A.239
& OLR(NPD_FIELD) LWRAD3A.240
! NET OUTGOING RADIATION LWRAD3A.241
& , LWOUT(NPD_FIELD, NLEVS+1) LWRAD3A.242
! NET DOWNWARD FLUXES OR HEATING RATES LWRAD3A.243
& , LWSEA(NPD_FIELD) LWRAD3A.244
! SEA-SURFACE COMPONENTS OF FLUX LWRAD3A.245
! LWRAD3A.246
! LWRAD3A.247
! LWRAD3A.248
! DIAGNOSTICS: LWRAD3A.249
! LWRAD3A.250
! INPUT SWITCHES: LWRAD3A.251
LOGICAL !, INTENT(IN) LWRAD3A.252
& L_TOTAL_CLOUD_COVER LWRAD3A.253
! TOTAL CLOUD AMOUNT DIAGNOSED LWRAD3A.254
& , L_CLEAR_OLR LWRAD3A.255
! CLEAR OLR DIAGNOSED LWRAD3A.256
& , L_SURFACE_DOWN_FLUX LWRAD3A.257
! SURFACE DOWNWARD FLUX DIAGNOSED LWRAD3A.258
& , L_SURF_DOWN_CLR LWRAD3A.259
! SURFACE DOWNWARD CLEAR FLUX DIAG. LWRAD3A.260
& , L_CLEAR_HR LWRAD3A.261
! CALCULATE CLEAR-SKY HEATING RATES LWRAD3A.262
& , L_NET_FLUX_TROP ADB2F404.657
! CALCULATE NET DOWNWARD FLUX AT THE TROPOPAUSE ADB2F404.658
& , L_DOWN_FLUX_TROP ADB2F404.659
! CALCULATE DOWNWARD FLUX AT THE TROPOPAUSE ADB2F404.660
! LWRAD3A.263
! CALCULATED DIAGNOSTICS: LWRAD3A.264
REAL !, INTENT(OUT) LWRAD3A.265
& TOTAL_CLOUD_COVER(NPD_FIELD) LWRAD3A.266
! TOTAL CLOUD COVER LWRAD3A.267
& , CLEAR_OLR(NPD_FIELD) LWRAD3A.268
! CLEAR-SKY OLR LWRAD3A.269
& , SURFACE_DOWN_FLUX(NPD_FIELD) LWRAD3A.270
! DOWNWARD SURFACE FLUX LWRAD3A.271
& , SURF_DOWN_CLR(NPD_FIELD) LWRAD3A.272
! DOWNWARD SURFACE CLEARFLUX LWRAD3A.273
& , CLEAR_HR(NPD_FIELD, NLEVS) LWRAD3A.274
! CLEAR-SKY HEATING RATES LWRAD3A.275
& , NET_FLUX_TROP(NPD_FIELD) ADB2F404.661
! NET DOWNWARD FLUX AT THE TROPOPAUSE ADB2F404.662
& , DOWN_FLUX_TROP(NPD_FIELD) ADB2F404.663
! DOWNWARD FLUX AT THE TROPOPAUSE ADB2F404.664
! LWRAD3A.276
! LWRAD3A.277
! LWRAD3A.278
! LOCAL VARIABLES. LWRAD3A.279
! LWRAD3A.280
INTEGER LWRAD3A.281
& I LWRAD3A.282
! LOOP VARIABLE LWRAD3A.283
& , L LWRAD3A.284
! LOOP VARIABLE LWRAD3A.285
INTEGER LWRAD3A.286
& I_GATHER(NPD_FIELD) LWRAD3A.287
! GATHERING ARRAY LWRAD3A.288
LOGICAL LWRAD3A.289
& L_CLEAR LWRAD3A.290
! CALCULATE CLEAR-SKY FIELDS LWRAD3A.291
! FLAGS FOR PROCESSES ACTUALLY ENABLED. ADB1F401.517
LOGICAL ADB1F401.518
& L_RAYLEIGH ADB1F401.519
! LOCAL FLAG FOR RAYLEIGH SCATTERING ADB1F401.520
& , L_GAS ADB1F401.521
! LOCAL FLAG FOR GASEOUS ABSORPTION ADB1F401.522
& , L_CONTINUUM ADB1F401.523
! LOCAL FLAG FOR CONTINUUM ABSORPTION ADB1F401.524
& , L_DROP ADB1F401.525
! LOCAL FLAG FOR SCATTERING BY DROPLETS ADB1F401.526
& , L_AEROSOL ADB1F401.527
! LOCAL FLAG FOR SCATTERING BY AEROSOLS ADB1F401.528
& , L_AEROSOL_CCN ADB1F401.529
! LOCAL FLAG FOR SCATTERING BY AEROSOLS ADB1F401.530
& , L_ICE ADB1F401.531
! LOCAL FLAG FOR SCATTERING BY ICE CRYSTALS ADB1F401.532
INTEGER LWRAD3A.292
& I_SOLVER_CLEAR LWRAD3A.293
! SOLVER FOR CLEAR-SKY FLUXES LWRAD3A.294
& , I_GAS_OVERLAP(NPD_BAND_LW) ADB2F404.665
! OVERLAPS IN EACH BAND LWRAD3A.296
! LWRAD3A.297
! GENERAL ATMOSPHERIC PROPERTIES: LWRAD3A.298
REAL LWRAD3A.299
& D_MASS(NPD_PROFILE, NPD_LAYER) LWRAD3A.300
! MASS THICKNESSES OF LAYERS LWRAD3A.301
& , P(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.302
! PRESSURE FIELD LWRAD3A.303
& , T(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.304
! TEMPERATURE FIELD LWRAD3A.305
& , T_BDY(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.306
! TEMPERATURE FIELD AT BOUNDARIES LWRAD3A.307
& , GAS_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER, NPD_SPECIES_LW) ADB2F404.666
! MASS FRACTIONS OF GASES LWRAD3A.309
! LWRAD3A.310
! SURFACE FIELDS: LWRAD3A.311
INTEGER LWRAD3A.312
& I_SURFACE(NPD_PROFILE) LWRAD3A.313
! TYPE OF SURFACE AT THE FOOT OF EACH PROFILE LWRAD3A.314
REAL !, INTENT(IN) LWRAD3A.315
& ALBEDO_FIELD_DIFF(NPD_PROFILE, NPD_BAND_LW) ADB2F404.667
! DIFFUSE ALBEDOS LWRAD3A.317
& , ALBEDO_FIELD_DIR(NPD_PROFILE, NPD_BAND_LW) ADB2F404.668
! DIRECT ALBEDOS LWRAD3A.319
& , EMISSIVITY_FIELD(NPD_PROFILE, NPD_BAND_LW) ADB2F404.669
! EMISSIVITIES LWRAD3A.321
& , ALBEDO_SEA_DIFF(NPD_PROFILE, NPD_BAND_LW) ADB2F404.670
! DIFFUSE ALBEDO OF OPEN SEA LWRAD3A.323
& , ALBEDO_SEA_DIR(NPD_PROFILE, NPD_BAND_LW) ADB2F404.671
! DIRECT ALBEDO OF OPEN SEA LWRAD3A.325
& , T_SURFACE(NPD_PROFILE) ADB1F401.533
! GATHERED TEMPERATURE OF SURFACE ADB1F401.534
! LWRAD3A.326
! CLOUDY PROPERTIES: LWRAD3A.327
INTEGER LWRAD3A.328
& N_CONDENSED LWRAD3A.329
! NUMBER OF CONDENSED PHASES LWRAD3A.330
& , TYPE_CONDENSED(NPD_CLOUD_COMPONENT) LWRAD3A.331
! TYPES OF CONDENSED COMPONENTS LWRAD3A.332
& , I_CONDENSED_PARAM(NPD_CLOUD_COMPONENT) LWRAD3A.333
! PARAMETRIZATION SCHEMES FOR COMPONENTS LWRAD3A.334
& , N_CLOUD_TOP_GLOBAL ADB1F402.875
! INVERTED GLOBAL TOPMOST CLOUDY LAYER ADB1F402.876
REAL LWRAD3A.335
& CONDENSED_PARAM_LIST(NPD_CLOUD_PARAMETER_LW ADB2F404.672
& , NPD_CLOUD_COMPONENT, NPD_BAND_LW) ADB2F404.673
! PARAMETERS FOR CONDENSED PHASES LWRAD3A.338
& , CONDENSED_DIM_CHAR(NPD_PROFILE, 0: NPD_LAYER ADB2F404.674
& , NPD_CLOUD_COMPONENT) ADB2F404.675
! CHARACTERISTIC DIMENSIONS OF CONDENSED SPECIES ADB2F404.676
& , CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER LWRAD3A.341
& , NPD_CLOUD_COMPONENT) LWRAD3A.342
! MASS FRACTIONS OF LIQUID WATER LWRAD3A.343
& , W_CLOUD(NPD_PROFILE, NPD_LAYER) LWRAD3A.344
! CLOUD AMOUNTS LWRAD3A.345
& , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) LWRAD3A.346
! CLOUD AMOUNTS LWRAD3A.347
& , CONDENSED_MIN_DIM(NPD_CLOUD_COMPONENT) ADB2F404.677
! MINIMUM DIMENSIONS OF CONDENSED COMPONENTS ADB2F404.678
& , CONDENSED_MAX_DIM(NPD_CLOUD_COMPONENT) ADB2F404.679
! MAXIMUM DIMENSIONS OF CONDENSED COMPONENTS ADB2F404.680
! LWRAD3A.348
! PROPERTIES OF AEROSOLS: LWRAD3A.349
REAL LWRAD3A.350
& AEROSOL_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER LWRAD3A.351
& , NPD_AEROSOL_SPECIES_LW) ADB2F404.681
! MIXING RATIOS OF AEROSOLS LWRAD3A.353
! LWRAD3A.354
! COUPLING FIELDS: ADB1F401.535
INTEGER ADB1F401.536
& N_FRAC_ICE_POINT ADB1F401.537
! NUMBER OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.538
& , I_FRAC_ICE_POINT(NPD_PROFILE) ADB1F401.539
! INDICES OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.540
! ADB1F401.541
! FLUXES: LWRAD3A.355
REAL LWRAD3A.356
& FLUX_DIRECT(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.357
! DIRECT FLUX LWRAD3A.358
& , FLUX_DIRECT_CLEAR(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.359
! CLEAR-SKY DIRECT FLUX LWRAD3A.360
& , FLUX_NET(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.361
! DOWNWARD/NET FLUX LWRAD3A.362
& , FLUX_NET_CLEAR(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.363
! CLEAR-SKY DOWNWARD/NET FLUX LWRAD3A.364
& , FLUX_UP(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.365
! UPWARD FLUX LWRAD3A.366
& , FLUX_UP_CLEAR(NPD_PROFILE, 0: NPD_LAYER) LWRAD3A.367
! CLEAR-SKY UPWARD FLUX LWRAD3A.368
! LWRAD3A.369
! FIELDS REQUIRED FOR CALL TO RADIATION CODE BUT NOT USED LWRAD3A.370
INTEGER LWRAD3A.371
& N_ORDER_GAUSS LWRAD3A.372
& , I_GAS LWRAD3A.373
LOGICAL LWRAD3A.374
& L_SWITCH_SCATTER(NPD_BAND_LW) ADB2F404.682
REAL LWRAD3A.376
& SEC_0(NPD_PROFILE) LWRAD3A.377
& , SOLAR_CONSTANT(NPD_PROFILE) LWRAD3A.378
! LWRAD3A.379
! LWRAD3A.384
! AUXILIARY VARIABLES: LWRAD3A.385
REAL LWRAD3A.386
& CPBYG LWRAD3A.387
! SPECIFIC HEAT BY GRAVITY LWRAD3A.388
& , DACON LWRAD3A.389
! DIFFERENCE IN A's LWRAD3A.390
& , DBCON LWRAD3A.391
! DIFFERENCE IN B's LWRAD3A.392
& , WEIGHT_BAND(NPD_BAND_LW) ADB2F404.683
! WEIGHTING FACTORS FOR BANDS LWRAD3A.394
& , NULLMMR LWRAD3A.395
! NULL MASS MIXING RATIO LWRAD3A.396
PARAMETER(CPBYG=CP/G) LWRAD3A.397
PARAMETER(NULLMMR=0.0E+00) LWRAD3A.398
! LWRAD3A.399
! DUMMY FIELDS FOR RADIATION CODE LWRAD3A.400
LOGICAL LWRAD3A.401
& L_DUMMY LWRAD3A.402
REAL LWRAD3A.403
& DUMMY ADB2F404.684
! LWRAD3A.405
! LWRAD3A.406
! SUBROUTINES CALLED: LWRAD3A.407
EXTERNAL LWRAD3A.408
& R2_SET_GAS_MIX_RATIO, R2_SET_THERMODYNAMIC LWRAD3A.409
& , R2_SET_AEROSOL_FIELD, R2_SET_CLOUD_FIELD LWRAD3A.410
& , R2_SET_CLOUD_PARAMETRIZATION LWRAD3A.411
& , R2_SET_SURFACE_FIELD_LW, R2_ZERO_1D LWRAD3A.412
& , R2_COMPARE_PROC ADB1F401.542
! LWRAD3A.420
! LWRAD3A.421
! LWRAD3A.422
! LWRAD3A.423
! INITIALIZE THE ERROR FLAG FOR THE RADIATION CODE. LWRAD3A.424
IERR=I_NORMAL LWRAD3A.425
! SET THE LOGICAL FLAG FOR DUMMY DIAGNOSTICS NOT AVAILABLE FROM ADB1F402.506
! THE LOWER CODE IN THE LONG-WAVE TO .FALSE.. ADB1F402.507
L_DUMMY=.FALSE. ADB1F402.508
! LWRAD3A.426
! LWRAD3A.427
! COMPARE PROCESSES IN THE SPECTRAL FILE WITH THOSE ENABLED IN ADB1F401.543
! THE CODE. ADB1F401.544
CALL R2_COMPARE_PROC
(IERR, L_PRESENT_LW ADB2F404.685
& , L_RAYLEIGH_LW, L_GAS_LW, L_CONTINUUM_LW ADB1F401.546
& , L_DROP_LW, L_AEROSOL_LW, L_AEROSOL_CCN_LW, L_ICE_LW ADB1F401.547
& , L_USE_SULPC_DIRECT, L_USE_SULPC_INDIRECT ADB1F401.548
& , L_USE_SOOT_DIRECT ALR3F405.128
& , L_CLIMAT_AEROSOL ADB1F402.509
& , L_RAYLEIGH, L_GAS, L_CONTINUUM ADB1F401.549
& , L_DROP, L_AEROSOL, L_AEROSOL_CCN, L_ICE ADB1F401.550
& , NPD_TYPE_LW ADB2F404.686
& ) ADB1F401.552
IF (IERR.NE.I_NORMAL) RETURN ADB1F401.553
! ADB1F405.356
! CHECK THAT A VALID NUMBER HAS BEEN SUPPLIED FOR THE SOLVER. ADB1F405.357
IF ( (I_SOLVER_LW.NE.IP_SOLVER_PENTADIAGONAL).AND. ADB1F405.358
& (I_SOLVER_LW.NE.IP_SOLVER_MIX_11).AND. ADB1F405.359
& (I_SOLVER_LW.NE.IP_SOLVER_MIX_APP_SCAT).AND. ADB1F405.360
& (I_SOLVER_LW.NE.IP_SOLVER_MIX_DIRECT).AND. ADB1F405.361
& (I_SOLVER_LW.NE.IP_SOLVER_HOMOGEN_DIRECT).AND. ADB1F405.362
& (I_SOLVER_LW.NE.IP_SOLVER_TRIPLE).AND. ADB1F405.363
& (I_SOLVER_LW.NE.IP_SOLVER_TRIPLE_APP_SCAT) ADB1F405.364
& ) THEN ADB1F405.365
WRITE(IU_ERR, '(/A, /A)') ADB1F405.366
& '*** ERROR: AN INVALID SOLVER HAS BEEN SELECTED ' ADB1F405.367
& , 'IN THE LONGWAVE REGION.' ADB1F405.368
IERR=I_ERR_FATAL ADB1F405.369
RETURN ADB1F405.370
ENDIF ADB1F405.371
! ADB1F405.372
! ADB1F401.554
! ADB1F401.555
! ADB1F402.510
! THE GATHERING ARRAY IS REQUIRED BY THE SETTING SUBROUTINES (FOR LWRAD3A.428
! COMPATIBILITY WITH THE SHORTWAVE), BUT IS FILLED WITH INTEGERS LWRAD3A.429
! FROM 1 TO N_PROFILE SINCE ALL POINTS WILL BE CONSIDERED. LWRAD3A.430
DO L=1, N_PROFILE LWRAD3A.431
I_GATHER(L)=L LWRAD3A.432
ENDDO LWRAD3A.433
! LWRAD3A.434
! LWRAD3A.435
! SET THE MIXING RATIOS OF GASES. LWRAD3A.436
CALL R2_SET_GAS_MIX_RATIO
(IERR LWRAD3A.437
& , N_PROFILE, NLEVS, NWET, NOZONE LWRAD3A.438
& , I_GATHER LWRAD3A.439
& , N_ABSORB_LW, TYPE_ABSORB_LW ADB2F404.687
& , L_N2O_LW, L_CH4_LW, L_CFC11_LW, L_CFC12_LW,. FALSE. ADB2F404.688
& , L_CFC113_LW, L_HCFC22_LW, L_HFC125_LW, L_HFC134A_LW ADB1F405.351
& , H2O, CO2, O3, N2O_MIX_RATIO, CH4_MIX_RATIO LWRAD3A.442
& , CFC11_MIX_RATIO, CFC12_MIX_RATIO, NULLMMR LWRAD3A.443
& , CFC113_MIX_RATIO, HCFC22_MIX_RATIO, HFC125_MIX_RATIO ADB1F405.352
& , HFC134A_MIX_RATIO ADB1F405.353
& , GAS_MIX_RATIO LWRAD3A.444
& , CO2_DIM1, CO2_DIM2, CO2_3D, L_CO2_3D ACN2F405.109
& , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_SPECIES_LW ADB2F404.689
& ) LWRAD3A.446
IF (IERR.NE.I_NORMAL) RETURN LWRAD3A.447
! LWRAD3A.448
! LWRAD3A.449
! CALCULATE PRESSURES AND TEMPERATURES. ADB1F405.354
CALL R2_SET_THERMODYNAMIC
(N_PROFILE, NLEVS, I_GATHER, .TRUE. LWRAD3A.451
& , PSTAR, TSTAR, AB, BB, AC, BC, PEXNER, TAC ADB1F401.556
& , P, T, T_BDY, T_SURFACE, D_MASS ADB1F401.557
& , NPD_FIELD, NPD_PROFILE, NPD_LAYER LWRAD3A.454
& ) LWRAD3A.455
! LWRAD3A.456
! LWRAD3A.457
! SET THE MIXING RATIOS OF AEROSOLS. LWRAD3A.458
IF (L_AEROSOL.OR.L_AEROSOL_CCN) THEN ADB1F401.558
CALL R2_SET_AEROSOL_FIELD
(IERR ADB1F402.511
& , N_PROFILE, NLEVS, N_AEROSOL_LW, TYPE_AEROSOL_LW ADB2F404.690
& , I_GATHER LWRAD3A.461
& , L_CLIMAT_AEROSOL, N_LEVELS_BL ADB1F402.513
& , L_USE_SULPC_DIRECT ADB2F404.691
& , SULP_DIM1, SULP_DIM2 ADB1F402.515
& , ACCUM_SULPHATE, AITKEN_SULPHATE ADB1F402.516
&,L_USE_SOOT_DIRECT, SOOT_DIM1, SOOT_DIM2, FRESH_SOOT, AGED_SOOT ALR3F405.129
& , LAND, LYING_SNOW, PSTAR, AB, BB, TRINDX ADB1F402.517
& , AEROSOL_MIX_RATIO ADB1F402.518
& , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES_LW ADB2F404.692
& ) LWRAD3A.464
ENDIF LWRAD3A.465
! LWRAD3A.466
! LWRAD3A.467
! ASSIGN THE PROPERTIES OF CLOUDS. A DUMMY ARRAY MUST BE PASSED LWRAD3A.468
! FOR THE MICROPHYSICAL DIAGNOSTICS SINCE THEY ARE NOT AVAILABLE LWRAD3A.469
! THROUGH STASH IN THE LONG-WAVE. LWRAD3A.470
! LWRAD3A.471
CALL R2_SET_CLOUD_PARAMETRIZATION
(IERR, N_BAND_LW ADB2F404.693
& , I_ST_WATER_LW, I_CNV_WATER_LW, I_ST_ICE_LW, I_CNV_ICE_LW ADB2F404.694
& , L_DROP_TYPE_LW ADB2F404.695
& , I_DROP_PARAMETRIZATION_LW ADB2F404.696
& , DROP_PARAMETER_LIST_LW ADB2F404.697
& , DROP_PARM_MIN_DIM_LW, DROP_PARM_MAX_DIM_LW ADB2F404.698
& , L_ICE_TYPE_LW ADB2F404.699
& , I_ICE_PARAMETRIZATION_LW ADB2F404.700
& , ICE_PARAMETER_LIST_LW ADB2F404.701
& , ICE_PARM_MIN_DIM_LW, ICE_PARM_MAX_DIM_LW ADB2F404.702
& , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST ADB2F404.703
& , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM ADB2F404.704
& , NPD_BAND_LW, NPD_DROP_TYPE_LW ADB2F404.705
& , NPD_ICE_TYPE_LW, NPD_CLOUD_PARAMETER_LW ADB2F404.706
& ) ADB2F404.707
IF (IERR.NE.I_NORMAL) RETURN ADB2F404.708
! ADB2F404.709
CALL R2_SET_CLOUD_FIELD
(N_PROFILE, NLEVS, NCLDS LWRAD3A.472
& , I_GATHER LWRAD3A.473
& , P, T, D_MASS LWRAD3A.474
& , CCB, CCT, CCA, CCCWP LWRAD3A.475
& , LCCWC1, LCCWC2, LCA_AREA, LCA_BULK ASK1F405.295
& , L_MICROPHYSICS_LW, L_AEROSOL_CCN AYY1F404.382
& , SULP_DIM1, SULP_DIM2, ACCUM_SULPHATE, DISS_SULPHATE AYY1F404.383
& , L_CLOUD_WATER_PARTITION, LAND AYY1F404.384
& , I_CLOUD_REPRESENTATION_LW, I_CONDENSED_PARAM ADB2F404.710
& , CONDENSED_MIN_DIM, CONDENSED_MAX_DIM ADB2F404.711
& , N_CONDENSED, TYPE_CONDENSED LWRAD3A.479
& , W_CLOUD, FRAC_CLOUD, L_LOCAL_CNV_PARTITION_LW ADB1F405.355
& , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR ADB2F404.712
! Microphysical Diagnostics are not available ADB2F404.713
! in this spectral region. ADB2F404.714
& , DUMMY, .FALSE., DUMMY, .FALSE. ADB2F404.715
& , DUMMY, .FALSE., DUMMY, .FALSE. ADB2F404.716
& , DUMMY, .FALSE. ADB2F404.717
& , DUMMY, .FALSE., DUMMY, .FALSE. ADB2F404.718
& , DUMMY, .FALSE., DUMMY, .FALSE. ADB2F404.719
& , NPD_FIELD, NPD_PROFILE, NPD_LAYER, NPD_AEROSOL_SPECIES_LW ADB2F404.720
& , N_CCA_LEV, L_3D_CCA AJX0F404.27
& ) LWRAD3A.486
! LWRAD3A.499
! LWRAD3A.500
CALL R2_SET_SURFACE_FIELD_LW
( LWRAD3A.501
& N_PROFILE, N_BAND_LW ADB2F404.721
& , I_SURFACE, I_SPEC_SURFACE_LW ADB2F404.722
& , L_SURFACE_LW ADB2F404.723
& , EMISSIVITY_FIELD, ALBEDO_FIELD_DIR, ALBEDO_FIELD_DIFF LWRAD3A.505
& , ALBEDO_SEA_DIR, ALBEDO_SEA_DIFF LWRAD3A.506
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.568
& , NPD_PROFILE, NPD_BAND_LW, NPD_SURFACE_LW ADB2F404.724
& ) LWRAD3A.508
! LWRAD3A.509
! SET CLEAR-SKY CALCULATIONS. LWRAD3A.510
L_CLEAR=L_CLEAR_OLR.OR. LWRAD3A.511
& L_SURF_DOWN_CLR.OR. LWRAD3A.512
& L_CLEAR_HR LWRAD3A.513
! LWRAD3A.514
IF (L_CLEAR) THEN LWRAD3A.515
! LWRAD3A.516
! SELECT A CLEAR-SKY SOLVER TO MATCH THE MAIN SOLVER. LWRAD3A.517
IF (I_SOLVER_LW.EQ.IP_SOLVER_PENTADIAGONAL) THEN LWRAD3A.518
I_SOLVER_CLEAR=IP_SOLVER_PENTADIAGONAL LWRAD3A.519
ELSE IF (I_SOLVER_LW.EQ.IP_SOLVER_MIX_11) THEN LWRAD3A.528
I_SOLVER_CLEAR=IP_SOLVER_PENTADIAGONAL LWRAD3A.529
ELSE IF (I_SOLVER_LW.EQ.IP_SOLVER_MIX_APP_SCAT) THEN LWRAD3A.534
I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT ADB1F401.569
ELSE IF (I_SOLVER_LW.EQ.IP_SOLVER_MIX_DIRECT) THEN ADB1F401.570
I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT ADB1F402.519
ELSE IF (I_SOLVER_LW.EQ.IP_SOLVER_TRIPLE) THEN ADB1F402.520
I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT ADB1F402.521
ELSE IF (I_SOLVER_LW.EQ.IP_SOLVER_TRIPLE_APP_SCAT) THEN ADB1F402.522
I_SOLVER_CLEAR=IP_SOLVER_HOMOGEN_DIRECT ADB1F401.571
ENDIF LWRAD3A.538
! LWRAD3A.539
ENDIF LWRAD3A.540
! LWRAD3A.541
! LWRAD3A.542
! SET PROPERTIES OF INDIVIDUAL BANDS. LWRAD3A.543
DO I=1, N_BAND_LW ADB2F404.727
WEIGHT_BAND(I)=1.0E+00 LWRAD3A.545
I_GAS_OVERLAP(I)=I_GAS_OVERLAP_LW LWRAD3A.546
ENDDO LWRAD3A.547
! ADB1F402.877
! INVERT THE TOPMOST CLOUDY LAYER IF USING A GLOBAL VALUE. ADB1F402.878
IF (L_GLOBAL_CLOUD_TOP) THEN ADB1F402.879
N_CLOUD_TOP_GLOBAL=NLEVS+1-GLOBAL_CLOUD_TOP ADB1F402.880
ENDIF ADB1F402.881
! LWRAD3A.548
! LWRAD3A.549
! LWRAD3A.550
CALL FLUX_CALC
(IERR LWRAD3A.551
! Logical Flags for Processes LWRAD3A.552
& , L_RAYLEIGH, L_AEROSOL, L_GAS, L_CONTINUUM ADB1F401.572
& , L_CLOUD_LW, L_DROP, L_ICE ADB1F401.573
! Angular Integration LWRAD3A.555
& , I_ANGULAR_INTEGRATION_LW, I_2STREAM_LW, L_2_STREAM_CORRECT_LW LWRAD3A.556
& , L_RESCALE_LW, N_ORDER_GAUSS LWRAD3A.557
! Treatment of Scattering LWRAD3A.558
& , I_SCATTER_METHOD_LW, L_SWITCH_SCATTER LWRAD3A.559
! Options for treating clouds ADB1F402.882
& , L_GLOBAL_CLOUD_TOP, N_CLOUD_TOP_GLOBAL ADB1F402.883
! Options for Solver LWRAD3A.560
& , I_SOLVER_LW ADB1F405.373
! General Spectral Properties LWRAD3A.562
& , N_BAND_LW, 1, N_BAND_LW ADB2F404.728
& , WEIGHT_BAND LWRAD3A.564
! General Atmospheric Properties LWRAD3A.565
& , N_PROFILE, NLEVS LWRAD3A.566
& , L_LAYER_LW, L_CLOUD_LAYER_LW LWRAD3A.567
& , P, T, T_SURFACE, T_BDY, D_MASS ADB1F401.574
! Spectral Region LWRAD3A.569
& , ISOLIR_LW LWRAD3A.570
! Solar Fields LWRAD3A.571
& , SEC_0, SOLAR_CONSTANT, SOLAR_FLUX_BAND_LW ADB2F404.729
& , RAYLEIGH_COEFFICIENT_LW ADB2F404.730
! Infra-red Fields LWRAD3A.574
& , N_DEG_FIT_LW ADB2F404.731
& , THERMAL_COEFFICIENT_LW ADB2F404.732
& , T_REF_PLANCK_LW, L_IR_SOURCE_QUAD_LW ADB2F404.733
! Gaseous Absorption LWRAD3A.578
& , N_ABSORB_LW, I_GAS_OVERLAP, I_GAS ADB2F404.734
& , GAS_MIX_RATIO LWRAD3A.580
& , N_BAND_ABSORB_LW, INDEX_ABSORB_LW ADB2F404.735
& , I_BAND_ESFT_LW ADB2F404.736
& , W_ESFT_LW, K_ESFT_LW ADB2F404.737
& , I_SCALE_ESFT_LW, I_SCALE_FNC_LW ADB2F404.738
& , SCALE_VECTOR_LW ADB2F404.739
& , P_REFERENCE_LW, T_REFERENCE_LW ADB2F404.740
! Doppler Broadening LWRAD3A.587
& , L_DOPPLER_PRESENT_LW ADB2F404.741
& , DOPPLER_CORRECTION_LW ADB2F404.742
! Surface Fields LWRAD3A.590
& , L_SURFACE_LW, I_SURFACE ADB2F404.743
& , I_SPEC_SURFACE_LW ADB2F404.744
& , SURFACE_ALBEDO_LW ADB2F404.745
& , ALBEDO_FIELD_DIFF, ALBEDO_FIELD_DIR LWRAD3A.594
& , N_DIR_ALBEDO_FIT_LW ADB2F404.746
& , DIRECT_ALBEDO_PARM_LW ADB2F404.747
& , EMISSIVITY_GROUND_LW ADB2F404.748
& , EMISSIVITY_FIELD LWRAD3A.598
! Continuum Absorption LWRAD3A.599
& , N_BAND_CONTINUUM_LW ADB2F404.749
& , INDEX_CONTINUUM_LW, INDEX_WATER_LW ADB2F404.750
& , K_CONTINUUM_LW ADB2F404.751
& , I_SCALE_FNC_CONT_LW ADB2F404.752
& , SCALE_CONTINUUM_LW ADB2F404.753
& , P_REF_CONTINUUM_LW ADB2F404.754
& , T_REF_CONTINUUM_LW ADB2F404.755
! Properties of Aerosols LWRAD3A.607
& , N_AEROSOL_LW ADB2F404.756
& , AEROSOL_MIX_RATIO LWRAD3A.609
& , AEROSOL_ABSORPTION_LW ADB2F404.757
& , AEROSOL_SCATTERING_LW ADB2F404.758
& , AEROSOL_ASYMMETRY_LW ADB2F404.759
& , I_AEROSOL_PARAMETRIZATION_LW ADB2F404.760
& , NHUMIDITY_LW ADB2F404.761
& , HUMIDITIES_LW ADB2F404.762
! Properties of Clouds LWRAD3A.616
& , N_CONDENSED, TYPE_CONDENSED LWRAD3A.617
& , I_CLOUD_LW, I_CLOUD_REPRESENTATION_LW, W_CLOUD, FRAC_CLOUD LWRAD3A.618
& , CONDENSED_MIX_RATIO, CONDENSED_DIM_CHAR ADB2F404.763
& , I_CONDENSED_PARAM, CONDENSED_PARAM_LIST LWRAD3A.620
! Fluxes Calculated LWRAD3A.621
& , FLUX_DIRECT, FLUX_NET, FLUX_UP LWRAD3A.622
! Options for Clear-sky Fluxes LWRAD3A.623
& , L_CLEAR, I_SOLVER_CLEAR LWRAD3A.624
! Clear-sky Fluxes Calculated LWRAD3A.625
& , FLUX_DIRECT_CLEAR, FLUX_NET_CLEAR, FLUX_UP_CLEAR LWRAD3A.626
! Arrays specific to the UM LWRAD3A.627
! Arrays for Coupling LWRAD3A.628
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.575
& , ALBEDO_SEA_DIFF, ALBEDO_SEA_DIR, LWSEA LWRAD3A.629
! Arrays for diagnostics specific to the UM LWRAD3A.630
& , L_DUMMY, DUMMY, DUMMY LWRAD3A.631
& , L_SURFACE_DOWN_FLUX, SURFACE_DOWN_FLUX LWRAD3A.632
& , L_SURF_DOWN_CLR, SURF_DOWN_CLR LWRAD3A.633
& , L_DUMMY, DUMMY LWRAD3A.634
! Dimensions of Arrays LWRAD3A.635
& , NPD_PROFILE, NPD_LAYER, NPD_COLUMN LWRAD3A.636
& , NPD_BAND_LW ADB2F404.764
& , NPD_SPECIES_LW ADB2F404.765
& , NPD_ESFT_TERM_LW, NPD_SCALE_FNC_LW, NPD_SCALE_VARIABLE_LW ADB2F404.766
& , NPD_CONTINUUM_LW ADB2F404.767
& , NPD_AEROSOL_SPECIES_LW, NPD_HUMIDITIES_LW ADB2F404.768
& , NPD_CLOUD_PARAMETER_LW ADB2F404.769
& , NPD_THERMAL_COEFF_LW ADB2F404.770
& , NPD_SURFACE_LW, NPD_ALBEDO_PARM_LW ADB2F404.771
& ) LWRAD3A.647
IF (IERR.NE.I_NORMAL) RETURN LWRAD3A.648
! LWRAD3A.649
! LWRAD3A.650
! LWRAD3A.651
! ASSIGNMENT OF DIAGNOSTICS: LWRAD3A.652
! LWRAD3A.653
! LWRAD3A.654
! OLR: LWRAD3A.655
! LWRAD3A.656
DO L=1, N_PROFILE LWRAD3A.657
OLR(L)=-FLUX_NET(L, 0) LWRAD3A.658
ENDDO LWRAD3A.659
IF (L_CLEAR_OLR) THEN LWRAD3A.660
DO L=1, N_PROFILE LWRAD3A.661
CLEAR_OLR(L)=-FLUX_NET_CLEAR(L, 0) LWRAD3A.662
ENDDO LWRAD3A.663
ENDIF LWRAD3A.664
! LWRAD3A.665
! LWRAD3A.666
! TOTAL CLOUD COVER: LWRAD3A.667
! LWRAD3A.668
IF (L_TOTAL_CLOUD_COVER) THEN LWRAD3A.669
CALL R2_CALC_TOTAL_CLOUD_COVER
(N_PROFILE, NLEVS, NCLDS LWRAD3A.670
& , I_CLOUD_LW, W_CLOUD, TOTAL_CLOUD_COVER LWRAD3A.671
& , NPD_PROFILE, NPD_LAYER LWRAD3A.672
& ) LWRAD3A.673
ENDIF LWRAD3A.674
! LWRAD3A.675
! LWRAD3A.676
! NET FLUX AT THE TROPOPAUSE: ADB2F404.772
! ADB2F404.773
IF (L_NET_FLUX_TROP) THEN ADB2F404.774
DO L=1, N_PROFILE ADB2F404.775
NET_FLUX_TROP(L) ADB2F404.776
& =FLUX_NET(L, NLEVS+1-TRINDX(L)) ADB2F404.777
ENDDO ADB2F404.778
ENDIF ADB2F404.779
! ADB2F404.780
! ADB2F404.781
! DOWNWARD FLUX AT THE TROPOPAUSE: ADB2F404.782
! ADB2F404.783
IF (L_DOWN_FLUX_TROP) THEN ADB2F404.784
DO L=1, N_PROFILE ADB1F405.374
DOWN_FLUX_TROP(L) ADB1F405.375
& =FLUX_NET(L, NLEVS+1-TRINDX(L)) ADB1F405.376
& +FLUX_UP(L, NLEVS+1-TRINDX(L)) ADB1F405.377
ENDDO ADB1F405.378
ENDIF ADB2F404.807
! ADB2F404.808
! ADB2F404.809
! ADB2F404.810
! ADB2F404.811
! ADB2F404.812
! OUTPUT ARRAYS: LWRAD3A.677
! LWRAD3A.678
! CONVERT THE FLUXES TO INCREMENTS IN THE HEATING RATE EXCEPT AT ADB1F405.379
! THE SURFACE: THERE, THE NET DOWNWARD FLUX IS ASSIGNED TO LWOUT. ADB1F405.380
DO I=NLEVS, 1, -1 LWRAD3A.681
DACON=(AB(I)-AB(I+1))*CPBYG/PTS LWRAD3A.682
DBCON=(BB(I)-BB(I+1))*CPBYG/PTS LWRAD3A.683
DO L=1, N_PROFILE LWRAD3A.684
LWOUT(L, I+1)=(FLUX_NET(L, NLEVS-I) LWRAD3A.685
& -FLUX_NET(L, NLEVS+1-I))/(DACON+PSTAR(L)*DBCON) LWRAD3A.686
ENDDO LWRAD3A.687
IF (L_CLEAR_HR) THEN LWRAD3A.688
! THE FACTOR OF PTS IS INCLUDED HERE TO YIELD A RATE FROM AN LWRAD3A.689
! INCREMENT. LWRAD3A.690
DO L=1, N_PROFILE LWRAD3A.691
CLEAR_HR(L, I)=(FLUX_NET_CLEAR(L, NLEVS-I) LWRAD3A.692
& -FLUX_NET_CLEAR(L, NLEVS+1-I))/(PTS LWRAD3A.693
& *(DACON+PSTAR(L)*DBCON)) LWRAD3A.694
ENDDO LWRAD3A.695
ENDIF LWRAD3A.696
ENDDO LWRAD3A.697
LWRAD3A.698
DO L=1, N_PROFILE LWRAD3A.699
LWOUT(L, 1)=FLUX_NET(L, NLEVS) LWRAD3A.700
ENDDO LWRAD3A.701
! LWRAD3A.702
! SEPARATE THE CONTRIBUTIONS OVER OPEN SEA AND SEA-ICE. LWRAD3A.703
! LWSEA MUST BE WEIGHTED WITH THE FRACTION OF OPEN SEA. LWRAD3A.704
DO L=1, N_PROFILE LWRAD3A.705
IF (LAND(L)) THEN LWRAD3A.706
LWSEA(L)=0.0 LWRAD3A.707
ELSE IF (ICE_FRACTION(L).LT.TOL_TEST) THEN LWRAD3A.708
LWSEA(L)=LWOUT(L, 1) LWRAD3A.709
LWOUT(L, 1)=0.0 LWRAD3A.710
ELSE LWRAD3A.711
! LWSEA MUST BE SCALED BY THE FRACTION OF OPEN SEA FOR ADB1F401.576
! CONSISTENCY WITH UPPER LEVELS IN THE MODEL. ADB1F401.577
LWSEA(L)=(1.0E+00-ICE_FRACTION(L))*LWSEA(L) ADB1F401.578
LWOUT(L, 1)=LWOUT(L, 1)-LWSEA(L) LWRAD3A.714
ENDIF LWRAD3A.715
ENDDO LWRAD3A.716
! LWRAD3A.717
! LWRAD3A.718
! LWRAD3A.719
RETURN LWRAD3A.720
END LWRAD3A.721
!+ Subroutine to set surface fields. LWRAD3A.722
! LWRAD3A.723
! Purpose: LWRAD3A.724
! The albedos and emissivity of the surface are set. LWRAD3A.725
! LWRAD3A.726
! Method: LWRAD3A.727
! Straightforward. LWRAD3A.728
! LWRAD3A.729
! Current Owner of Code: J. M. Edwards LWRAD3A.730
! LWRAD3A.731
! History: LWRAD3A.732
! Version Date Comment LWRAD3A.733
! 4.0 27-07-95 Original Code LWRAD3A.734
! (J. M. Edwards) LWRAD3A.735
! LWRAD3A.736
! Description of Code: LWRAD3A.737
! FORTRAN 77 with extensions listed in documentation. LWRAD3A.738
! LWRAD3A.739
!- --------------------------------------------------------------------- LWRAD3A.740
SUBROUTINE R2_SET_SURFACE_FIELD_LW( 1LWRAD3A.741
& N_PROFILE, N_BAND LWRAD3A.742
& , I_SURFACE, I_SPEC_SURFACE, L_SURFACE LWRAD3A.743
& , EMISSIVITY_FIELD, ALBEDO_FIELD_DIR, ALBEDO_FIELD_DIFF LWRAD3A.744
& , ALBEDO_SEA_DIFF, ALBEDO_SEA_DIR LWRAD3A.745
& , N_FRAC_ICE_POINT, I_FRAC_ICE_POINT, ICE_FRACTION ADB1F401.579
& , NPD_PROFILE, NPD_BAND_LW, NPD_SURFACE_LW ADB2F404.813
& ) LWRAD3A.747
! LWRAD3A.748
! LWRAD3A.749
! LWRAD3A.750
IMPLICIT NONE LWRAD3A.751
! LWRAD3A.752
! LWRAD3A.753
! COMDECKS INCLUDED LWRAD3A.754
*CALL SRFSP3A
LWRAD3A.755
*CALL PRMCH3A
ADB1F401.580
*CALL PRECSN3A
ADB1F401.581
! LWRAD3A.756
! DUMMY VARIABLES: LWRAD3A.757
! LWRAD3A.758
! DIMENSIONS OF ARRAYS: LWRAD3A.759
INTEGER !, INTENT(IN) LWRAD3A.760
& NPD_PROFILE LWRAD3A.761
! MAXIMUM NUMBER OF ATMOSPHERIC PROFILES LWRAD3A.762
& , NPD_BAND_LW ADB2F404.814
! MAXIMUM NUMBER OF SPECTRAL BANDS LWRAD3A.764
& , NPD_SURFACE_LW ADB2F404.815
! MAXIMUM NUMBER OF SURFACES LWRAD3A.766
! LWRAD3A.767
! ACTUAL SIZES USED: LWRAD3A.768
INTEGER !, INTENT(IN) LWRAD3A.769
& N_PROFILE LWRAD3A.770
! NUMBER OF ATMOSPHERIC PROFILES LWRAD3A.771
& , N_BAND LWRAD3A.772
! NUMBER OF SPECTRAL BANDS LWRAD3A.773
! LWRAD3A.774
! PROPERTIES OF SURFACES LWRAD3A.775
INTEGER !, INTENT(OUT) LWRAD3A.776
& I_SURFACE(NPD_PROFILE) LWRAD3A.777
! TYPES OF SURFACES LWRAD3A.778
& , I_SPEC_SURFACE(NPD_SURFACE_LW) ADB2F404.816
LOGICAL !, INTENT(OUT) LWRAD3A.780
& L_SURFACE(NPD_SURFACE_LW) ADB2F404.817
! FLAGS FOR TYPES OF SURFACES LWRAD3A.782
! LWRAD3A.783
! SURFACE PROPERTIES SET. LWRAD3A.784
REAL !, INTENT(OUT) LWRAD3A.785
& EMISSIVITY_FIELD(NPD_PROFILE, NPD_BAND_LW) ADB2F404.818
! EMISSIVITIES OF SURFACES LWRAD3A.787
& , ALBEDO_FIELD_DIFF(NPD_PROFILE, NPD_BAND_LW) ADB2F404.819
! DIFFUSE ALBEDO OF SURFACE LWRAD3A.789
& , ALBEDO_FIELD_DIR(NPD_PROFILE, NPD_BAND_LW) ADB2F404.820
! DIRECT ALBEDO OF SURFACE LWRAD3A.791
& , ALBEDO_SEA_DIFF(NPD_PROFILE, NPD_BAND_LW) ADB2F404.821
! DIFFUSE ALBEDO OF OPEN SEA LWRAD3A.793
& , ALBEDO_SEA_DIR(NPD_PROFILE, NPD_BAND_LW) ADB2F404.822
! DIRECT ALBEDO OF OPEN SEA LWRAD3A.795
! LWRAD3A.796
! VARIABLES CONCERNED WITH FRACTIONAL SEA ICE ADB1F401.582
REAL !, INTENT(IN) ADB1F401.583
& ICE_FRACTION(NPD_PROFILE) ADB1F401.584
! ADB1F401.585
INTEGER !, INTENT(OUT) ADB1F401.586
& N_FRAC_ICE_POINT ADB1F401.587
! NUMBER OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.588
& , I_FRAC_ICE_POINT(NPD_PROFILE) ADB1F401.589
! INDICES OF POINTS WITH FRACTIONAL ICE COVER ADB1F401.590
! ADB1F401.591
! LWRAD3A.797
! LOCAL VARIABLES. LWRAD3A.798
INTEGER LWRAD3A.799
& I LWRAD3A.800
! LOOP VARIABLE LWRAD3A.801
& , L LWRAD3A.802
! LOOP VARIABLE LWRAD3A.803
REAL ADB1F401.592
& SEARCH_ARRAY(NPD_PROFILE) ADB1F401.593
! ARRAY FOR SEARCHING ADB1F401.594
& , TARGET ADB1F401.595
! TARGET TO SEARCH FOR ADB1F401.596
! LWRAD3A.804
! LWRAD3A.805
! LWRAD3A.806
! OVERRIDE ANY SURFACE PROERTIES READ IN FROM THE SPECTRAL FILE. LWRAD3A.807
DO L=1, N_PROFILE LWRAD3A.808
I_SURFACE(L)=1 LWRAD3A.809
ENDDO LWRAD3A.810
L_SURFACE(1)=.TRUE. LWRAD3A.811
I_SPEC_SURFACE(1)=IP_SURFACE_INTERNAL LWRAD3A.812
! LWRAD3A.813
! SET THE EMISSIVITY FIELD. LWRAD3A.814
DO I=1, N_BAND LWRAD3A.815
DO L=1, N_PROFILE LWRAD3A.816
EMISSIVITY_FIELD(L, I)=1.0E+00 LWRAD3A.817
ENDDO LWRAD3A.818
ENDDO LWRAD3A.819
! LWRAD3A.820
! ZERO THE SURFACE ALBEDOS. LWRAD3A.821
DO I=1, N_BAND LWRAD3A.822
DO L=1, N_PROFILE LWRAD3A.823
ALBEDO_FIELD_DIFF(L, I)=0.0E+00 LWRAD3A.824
ALBEDO_FIELD_DIR(L, I)=0.0E+00 LWRAD3A.825
ALBEDO_SEA_DIFF(L, I)=0.0E+00 LWRAD3A.826
ALBEDO_SEA_DIR(L, I)=0.0E+00 LWRAD3A.827
ENDDO LWRAD3A.828
ENDDO LWRAD3A.829
! ADB1F401.597
! SET THE FRACTIONAL ICE COVERAGE. POINTS ARE REQUIRED WHERE ADB1F401.598
! THE ICE FRACTION IS NEITHER 0 NOR 1. ADB1F401.599
DO L=1, N_PROFILE ADB1F401.600
SEARCH_ARRAY(L)=ICE_FRACTION(L)*(1.0E+00-ICE_FRACTION(L)) ADB1F401.601
ENDDO ADB1F401.602
TARGET=TOL_TEST ADB1F401.603
! GSS2F402.245
N_FRAC_ICE_POINT=0 GSS2F402.246
DO L =1,N_PROFILE GSS2F402.247
IF (SEARCH_ARRAY(L).GT.TARGET) THEN GSS2F402.248
N_FRAC_ICE_POINT =N_FRAC_ICE_POINT+1 GSS2F402.249
I_FRAC_ICE_POINT(N_FRAC_ICE_POINT)=L GSS2F402.250
END IF GSS2F402.251
END DO GSS2F402.252
! LWRAD3A.830
! LWRAD3A.831
! LWRAD3A.832
RETURN LWRAD3A.833
END LWRAD3A.834
*ENDIF DEF,A02_3A LWRAD3A.835