*IF DEF,A01_3A CLLVD3A.2
C *****************************COPYRIGHT****************************** CLLVD3A.3
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved. CLLVD3A.4
C CLLVD3A.5
C Use, duplication or disclosure of this code is subject to the CLLVD3A.6
C restrictions as set forth in the contract. CLLVD3A.7
C CLLVD3A.8
C Meteorological Office CLLVD3A.9
C London Road CLLVD3A.10
C BRACKNELL CLLVD3A.11
C Berkshire UK CLLVD3A.12
C RG12 2SZ CLLVD3A.13
C CLLVD3A.14
C If no contract has been raised with this copy of the code, the use, CLLVD3A.15
C duplication or disclosure of it is strictly prohibited. Permission CLLVD3A.16
C to do so must first be obtained in writing from the Head of Numerical CLLVD3A.17
C Modelling at the above address. CLLVD3A.18
C ******************************COPYRIGHT****************************** CLLVD3A.19
!+ Subroutine to calculate an observed effective radius. CLLVD3A.20
! CLLVD3A.21
! Purpose: CLLVD3A.22
! An effective radius as observed from above the cloud-top is CLLVD3A.23
! calculated. CLLVD3A.24
! CLLVD3A.25
! Method: CLLVD3A.26
! For each type of cloud containing water in any layer the effective CLLVD3A.27
! radius is weighted with the product of the area of the cloud and the CLLVD3A.28
! probability that light emitted from the cloud reaches the observing CLLVD3A.29
! instrument. CLLVD3A.30
! CLLVD3A.31
! Current Owner of Code: J. M. Edwards CLLVD3A.32
! CLLVD3A.33
! History: CLLVD3A.34
! Version Date Comment CLLVD3A.35
! 4.4 24-01-97 Original Code CLLVD3A.36
! (J. M. Edwards) CLLVD3A.37
! CLLVD3A.38
! Description of Code: CLLVD3A.39
! FORTRAN 77 with extensions listed in documentation. CLLVD3A.40
! CLLVD3A.41
!- --------------------------------------------------------------------- CLLVD3A.42
SUBROUTINE R2_CLOUD_LEVEL_DIAG(IERR, N_PROFILE, NLEVS, NCLDS 1,2CLLVD3A.43
& , I_GATHER CLLVD3A.44
& , I_CLOUD, I_CLOUD_REPRESENTATION CLLVD3A.45
& , W_CLOUD, FRAC_CLOUD CLLVD3A.46
& , CONDENSED_MIX_RATIO, CONDENSED_RE CLLVD3A.47
& , L_OBSERVED_RE, WEIGHTED_RE, SUM_WEIGHT_RE CLLVD3A.48
& , NPD_FIELD, NPD_PROFILE, NPD_LAYER CLLVD3A.49
& ) CLLVD3A.50
! CLLVD3A.51
! CLLVD3A.52
! CLLVD3A.53
IMPLICIT NONE CLLVD3A.54
! CLLVD3A.55
! CLLVD3A.56
! COMDECKS INCLUDED. CLLVD3A.57
*CALL ERROR3A
CLLVD3A.58
*CALL STDIO3A
CLLVD3A.59
*CALL DIMFIX3A
CLLVD3A.60
*CALL CLDCMP3A
CLLVD3A.61
*CALL CLDTYP3A
CLLVD3A.62
*CALL CLREPP3A
CLLVD3A.63
*CALL CLSCHM3A
CLLVD3A.64
! CLLVD3A.65
! CLLVD3A.66
INTEGER !, INTENT(OUT) CLLVD3A.67
& IERR CLLVD3A.68
! ERROR FLAG CLLVD3A.69
! CLLVD3A.70
! DIMENSIONS OF ARRAYS: CLLVD3A.71
INTEGER !, INTENT(IN) CLLVD3A.72
& NPD_FIELD CLLVD3A.73
! SIZE OF ARRAY OF ARRAYS PASSED FROM MAIN CODE CLLVD3A.74
& , NPD_PROFILE CLLVD3A.75
! SIZE OF ARRAY OF PROFILES CLLVD3A.76
& , NPD_LAYER CLLVD3A.77
! MAXIMUM NUMBER OF LAYERS CLLVD3A.78
! CLLVD3A.79
! ACTUAL SIZES USED: CLLVD3A.80
INTEGER !, INTENT(IN) CLLVD3A.81
& N_PROFILE CLLVD3A.82
! NUMBER OF PROFILES CLLVD3A.83
& , NLEVS CLLVD3A.84
! NUMBER OF ATMOSPHERIC LAYERS CLLVD3A.85
& , NCLDS CLLVD3A.86
! NUMBER OF CLOUDY LEVELS CLLVD3A.87
& , I_GATHER(NPD_FIELD) CLLVD3A.88
! LIST OF GATHERED POINTS CLLVD3A.89
! CLLVD3A.90
! LOGICAL FLAGS FOR DIAGNOSTICS CLLVD3A.91
LOGICAL !, INTENT(IN) ADB1F405.1004
& L_OBSERVED_RE CLLVD3A.93
! FLAG TO ENABLE DIAGNOSIS OF EFFECTIVE RADIUS SEEN FROM CLLVD3A.94
! SPACE (N.B. THE ROUTINE IS AT PRESENT CALLED ONLY IF CLLVD3A.95
! THIS IS TRUE, BUT ITS PRESENCE HERE ALLOWS FOR POSSIBLE CLLVD3A.96
! FUTURE EXTENSION OF THE ROUTINE). CLLVD3A.97
! CLLVD3A.98
! REPRESENTATION OF CLOUDS CLLVD3A.99
INTEGER !, INTENT(IN) CLLVD3A.100
& I_CLOUD_REPRESENTATION CLLVD3A.101
! REPRESENTATION OF CLOUDS CLLVD3A.102
& , I_CLOUD CLLVD3A.103
! TREATMENT OF OVERLAPS CLLVD3A.104
! CLLVD3A.105
REAL !, INTENT(IN) CLLVD3A.106
& W_CLOUD(NPD_PROFILE, NPD_LAYER) CLLVD3A.107
! TOTAL AMOUNTS OF CLOUD CLLVD3A.108
& , FRAC_CLOUD(NPD_PROFILE, NPD_LAYER, NPD_CLOUD_TYPE) CLLVD3A.109
! FRACTION OF TYPES OF CLOUD CLLVD3A.110
& , CONDENSED_RE(NPD_PROFILE, 0: NPD_LAYER, NPD_CLOUD_COMPONENT) CLLVD3A.111
! EFFECTIVE RADII OF CLOUDY COMPONENTS CLLVD3A.112
& , CONDENSED_MIX_RATIO(NPD_PROFILE, 0: NPD_LAYER CLLVD3A.113
& , NPD_CLOUD_COMPONENT) CLLVD3A.114
! MASS MIXING RATIOS OF CONDENSED COMPONENTS CLLVD3A.115
! CLLVD3A.116
REAL !, INTENT(OUT) CLLVD3A.117
& WEIGHTED_RE(NPD_FIELD) CLLVD3A.118
! WEIGHTED SUM OF EFFECTIVE RADIUS AND WEIGHTING FUNCTION CLLVD3A.119
& , SUM_WEIGHT_RE(NPD_FIELD) CLLVD3A.120
! SUM OF WEIGHTS FOR EFFECTIVE RADIUS CLLVD3A.121
! CLLVD3A.122
! CLLVD3A.123
! CLLVD3A.124
! LOCAL VARIABLES: CLLVD3A.125
INTEGER CLLVD3A.126
& I CLLVD3A.127
! LOOP VARIABLE CLLVD3A.128
& , L CLLVD3A.129
! LOOP VARIABLE CLLVD3A.130
& , I_INV CLLVD3A.131
! INVERTED LOOP INDEX CLLVD3A.132
REAL CLLVD3A.133
& TRANS_OVERLYING_SPACE(NPD_PROFILE) CLLVD3A.134
! PROBABILITY OF A PHOTON IN CLEAR AIR IN THE LEVEL ABOVE CLLVD3A.135
! THE CURRENT ONE REACHING SPACE CLLVD3A.136
& , AREA_EXPOSED(NPD_PROFILE) CLLVD3A.137
! TOTAL AREA OF CLOUD IN THE CURRENT LAYER EXPOSED TO CLLVD3A.138
! CLEAR AIR IN THE LAYER ABOVE CLLVD3A.139
& , AREA_EXPOSED_ST(NPD_PROFILE) CLLVD3A.140
! TOTAL AREA OF STRATIFORM CLOUD IN THE CURRENT LAYER CLLVD3A.141
! EXPOSED TO CLEAR AIR IN THE LAYER ABOVE CLLVD3A.142
& , AREA_EXPOSED_CNV(NPD_PROFILE) CLLVD3A.143
! TOTAL AREA OF CONVECTIVE CLOUD IN THE CURRENT LAYER CLLVD3A.144
! EXPOSED TO CLEAR AIR IN THE LAYER ABOVE CLLVD3A.145
& , AREA_CLEAR_ABOVE(NPD_PROFILE) CLLVD3A.146
! AREA OF THE CLEAR SKY REGION IN THE LAYER ABOVE CLLVD3A.147
& , AREA_STRAT(NPD_PROFILE) CLLVD3A.148
! AREA OF STRATIFORM CLOUD IN THE CURRENT LAYER CLLVD3A.149
& , AREA_STRAT_ABOVE(NPD_PROFILE) CLLVD3A.150
! AREA OF STRATIFORM CLOUD IN THE LAYER ABOVE CLLVD3A.151
& , AREA_CONV(NPD_PROFILE) CLLVD3A.152
! AREA OF CONVECTIVE CLOUD IN THE CURRENT LAYER CLLVD3A.153
& , AREA_CONV_ABOVE(NPD_PROFILE) CLLVD3A.154
! AREA OF CONVECTIVE CLOUD IN THE LAYER ABOVE CLLVD3A.155
& , AREA_CLEAR_CLEAR(NPD_PROFILE) CLLVD3A.156
! AREA OF BOUNDARY WHERE CLEAR SKY OVERLIES CLEAR SKY CLLVD3A.157
& , AREA_CLEAR(NPD_PROFILE) CLLVD3A.158
! AREA OF CLEAR SKY IN THE CURRENT LAYER CLLVD3A.159
! DOWN TO A LEVEL CLLVD3A.160
& , AREA_UNCORRELATED(NPD_PROFILE) CLLVD3A.161
! UNCORRELATED REGION ON THE INTERFACE CLLVD3A.162
& , WEIGHTED_RE_G(NPD_PROFILE) CLLVD3A.163
! WEIGHTED SUM OF EFFECTIVE RADIUS AND WEIGHTING FUNCTION CLLVD3A.164
& , SUM_WEIGHT_RE_G(NPD_PROFILE) CLLVD3A.165
! SUM OF WEIGHTS FOR EFFECTIVE RADIUS CLLVD3A.166
! CLLVD3A.167
! VARIABLES FOR GATHERING CLLVD3A.168
INTEGER CLLVD3A.169
& N_LIST CLLVD3A.170
! NUMBER OF POINTS IN LIST CLLVD3A.171
& , L_LIST(NPD_PROFILE) CLLVD3A.172
! INDICES OF POINTS IN LIST CLLVD3A.173
! CLLVD3A.174
! INDICATOR FUNCTION CLLVD3A.175
REAL CLLVD3A.176
& CHI_CNV(NPD_PROFILE) CLLVD3A.177
! CONVECTIVE INDICATOR FUNCTION CLLVD3A.178
& , CHI_ST(NPD_PROFILE) CLLVD3A.179
! STRATIFORM INDICATOR FUNCTION CLLVD3A.180
! CLLVD3A.181
! CLLVD3A.182
! CLLVD3A.183
! CLLVD3A.184
! INITIALIZATION OF DIAGNOSTIC FIELDS. CLLVD3A.185
! CLLVD3A.186
IF (L_OBSERVED_RE) THEN CLLVD3A.187
CALL R2_ZERO_1D
(NPD_PROFILE, WEIGHTED_RE) CLLVD3A.188
CALL R2_ZERO_1D
(NPD_PROFILE, SUM_WEIGHT_RE) CLLVD3A.189
DO L=1, N_PROFILE CLLVD3A.190
WEIGHTED_RE_G(L)=0.0E+00 CLLVD3A.191
SUM_WEIGHT_RE_G(L)=0.0E+00 CLLVD3A.192
ENDDO CLLVD3A.193
ENDIF CLLVD3A.194
! CLLVD3A.195
! INITIALIZE THE TRANSMISION ABOVE CLOUDS. CLLVD3A.196
DO L=1, N_PROFILE CLLVD3A.197
TRANS_OVERLYING_SPACE(L)=1.0E+00 CLLVD3A.198
AREA_CLEAR_ABOVE(L)=1.0E+00 CLLVD3A.199
ENDDO CLLVD3A.200
IF (L_OBSERVED_RE.AND.(I_CLOUD.EQ.IP_CLOUD_TRIPLE)) THEN CLLVD3A.201
DO L=1, N_PROFILE CLLVD3A.202
AREA_STRAT_ABOVE(L)=0.0E+00 CLLVD3A.203
AREA_CONV_ABOVE(L)=0.0E+00 CLLVD3A.204
ENDDO CLLVD3A.205
ENDIF CLLVD3A.206
! CLLVD3A.207
! STEP DOWN THROUGH THE ATMOSPHERE CALCULATING CONTRIBUTIONS TO CLLVD3A.208
! THE DIAGNOSTICS AND SUBSEQUENTLY ALLOWING FOR TRANSMISSION CLLVD3A.209
! THROUGH THE CURRENT LAYER. CLLVD3A.210
! CLLVD3A.211
DO I=NCLDS, 1, -1 CLLVD3A.212
I_INV=NLEVS+1-I CLLVD3A.213
! CLLVD3A.214
DO L=1, N_PROFILE CLLVD3A.215
AREA_CLEAR(L)=1.0E+00-W_CLOUD(L, I_INV) CLLVD3A.216
ENDDO CLLVD3A.217
! CLLVD3A.218
! CALCULATE THE LOCAL AREA OF CLOUD RADIATING INTO CLEAR AIR. CLLVD3A.219
IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN CLLVD3A.220
DO L=1, N_PROFILE CLLVD3A.221
AREA_EXPOSED(L)=W_CLOUD(L, I_INV) CLLVD3A.222
& *AREA_CLEAR_ABOVE(L) CLLVD3A.223
ENDDO CLLVD3A.224
ELSE IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR. CLLVD3A.225
& (I_CLOUD.EQ.IP_CLOUD_TRIPLE) ) THEN CLLVD3A.226
DO L=1, N_PROFILE CLLVD3A.227
AREA_EXPOSED(L)=MAX(0.0E+00, (W_CLOUD(L, I_INV) CLLVD3A.228
& +AREA_CLEAR_ABOVE(L)-1.0E+00)) CLLVD3A.229
ENDDO CLLVD3A.230
ENDIF CLLVD3A.231
! CLLVD3A.232
! CLLVD3A.233
! CLLVD3A.234
! CLLVD3A.235
IF (L_OBSERVED_RE) THEN CLLVD3A.236
! CLLVD3A.237
! CLLVD3A.238
! CLLVD3A.239
IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN CLLVD3A.240
! CLLVD3A.241
! CLLVD3A.242
IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR. CLLVD3A.243
& (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) ) THEN CLLVD3A.244
! CLLVD3A.245
! IF THE OVERLAP OF CONVECTIVE CLOUD IS NOT ASSUMED CLLVD3A.246
! TO BE COHERENT THE OVERALL EXPOSED AREA MAY BE CLLVD3A.247
! PARTITIONED ACCORDING TO THE FRACTIONAL CLLVD3A.248
! CONTRIBUTIONS OF CLOUD IN THE CURRENT LAYER. CLLVD3A.249
! CLLVD3A.250
DO L=1, N_PROFILE CLLVD3A.251
AREA_EXPOSED_ST(L)=AREA_EXPOSED(L) CLLVD3A.252
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT) CLLVD3A.253
AREA_EXPOSED_CNV(L)=AREA_EXPOSED(L) CLLVD3A.254
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CONV) CLLVD3A.255
ENDDO CLLVD3A.256
! CLLVD3A.257
ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN CLLVD3A.258
! CLLVD3A.259
! HERE, THE DIFFERENT TYPES OF CLOUDS OVERLAP CLLVD3A.260
! COHERENTLY SO STRATIFORM CLOUD WILL BE EXPOSED CLLVD3A.261
! ONLY IF THERE IS LESS STRATIFORM CLOUD IN THE CLLVD3A.262
! LAYER ABOVE AND MORE CLEAR AIR IN THE LAYER ABOVE: CLLVD3A.263
! UNDER THESE CONDITIONS THE NON-CORRELATED AREAS CLLVD3A.264
! OVERLAP RANDOMLY. CLLVD3A.265
! CLLVD3A.266
DO L=1, N_PROFILE CLLVD3A.267
AREA_STRAT(L)=W_CLOUD(L, I_INV) CLLVD3A.268
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT) CLLVD3A.269
AREA_EXPOSED_ST(L)=MAX(0.0E+00 CLLVD3A.270
& , (AREA_STRAT(L)-AREA_STRAT_ABOVE(L))) CLLVD3A.271
AREA_EXPOSED_ST(L)=MAX(0.0E+00, AREA_EXPOSED_ST(L) CLLVD3A.272
& *(AREA_CLEAR_ABOVE(L)-AREA_CLEAR(L))) CLLVD3A.273
AREA_EXPOSED_CNV(L) CLLVD3A.274
& =AREA_EXPOSED(L)-AREA_EXPOSED_ST(L) CLLVD3A.275
ENDDO CLLVD3A.276
ELSE CLLVD3A.277
WRITE(IU_ERR, '(/A)') CLLVD3A.278
& '*** ERROR: THE DIAGNOSTIC OF OBSERVED RE HAS NOT ' CLLVD3A.279
& //'BEEN IMPLEMENTED WITH THIS OVERLAP OPTION.' CLLVD3A.280
IERR=I_ERR_FATAL CLLVD3A.281
RETURN CLLVD3A.282
ENDIF CLLVD3A.283
! CLLVD3A.284
! THE INDICATOR FUNCTIONS FOR LIQUID WATER IN CLLVD3A.285
! CONVECTIVE OR STRAIFORM CLOUDS ARE SET TO 1 CLLVD3A.286
! IF THERE IS ANY LIQUID WATER AND TO 0 OTHERWISE. CLLVD3A.287
DO L=1, N_PROFILE CLLVD3A.288
IF (CONDENSED_MIX_RATIO(1, I_INV, IP_CLCMP_CNV_WATER) CLLVD3A.289
& .GT.0.0E+00) THEN CLLVD3A.290
CHI_CNV(L)=1.0E+00 CLLVD3A.291
ELSE CLLVD3A.292
CHI_CNV(L)=0.0E+00 CLLVD3A.293
ENDIF CLLVD3A.294
IF (CONDENSED_MIX_RATIO(1, I_INV, IP_CLCMP_ST_WATER) CLLVD3A.295
& .GT.0.0E+00) THEN CLLVD3A.296
CHI_ST(L)=1.0E+00 CLLVD3A.297
ELSE CLLVD3A.298
CHI_ST(L)=0.0E+00 CLLVD3A.299
ENDIF CLLVD3A.300
CHI_ST(L)=0.0E+00 CLLVD3A.301
ENDDO CLLVD3A.302
! CLLVD3A.303
! INCLUDE CONTRIBUTIONS FROM CONVECTIVE AND STRATIFORM CLLVD3A.304
! WATER CLOUDS. CLLVD3A.305
DO L=1, N_PROFILE CLLVD3A.306
WEIGHTED_RE_G(L)=WEIGHTED_RE_G(L) CLLVD3A.307
& +TRANS_OVERLYING_SPACE(L) CLLVD3A.308
& *(AREA_EXPOSED_CNV(L)*CHI_CNV(L) CLLVD3A.309
& *CONDENSED_RE(L, I_INV, IP_CLCMP_CNV_WATER) CLLVD3A.310
& +AREA_EXPOSED_ST(L)*CHI_ST(L) CLLVD3A.311
& *CONDENSED_RE(L, I_INV, IP_CLCMP_ST_WATER)) CLLVD3A.312
SUM_WEIGHT_RE_G(L)=SUM_WEIGHT_RE_G(L) CLLVD3A.313
& +TRANS_OVERLYING_SPACE(L) CLLVD3A.314
& *(AREA_EXPOSED_CNV(L)*CHI_CNV(L) CLLVD3A.315
& +AREA_EXPOSED_ST(L)*CHI_ST(L)) CLLVD3A.316
ENDDO CLLVD3A.317
! CLLVD3A.318
ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN CLLVD3A.319
! CLLVD3A.320
IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR. CLLVD3A.321
& (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) ) THEN CLLVD3A.322
! CLLVD3A.323
! IF THE OVERLAP OF CONVECTIVE CLOUD IS NOT ASSUMED CLLVD3A.324
! TO BE COHERENT THE OVERALL EXPOSED AREA MAY BE CLLVD3A.325
! PARTITIONED ACCORDING TO THE FRACTIONAL CLLVD3A.326
! CONTRIBUTIONS OF CLOUD IN THE CURRENT LAYER. CLLVD3A.327
! THE EXPOSED AREAS INCLUDE ONLY THE PARTS OF THE CLLVD3A.328
! CLOUDS CONTAINING WATER DROPLETS. CLLVD3A.329
! CLLVD3A.330
DO L=1, N_PROFILE CLLVD3A.331
AREA_EXPOSED_ST(L)=AREA_EXPOSED(L) CLLVD3A.332
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW) CLLVD3A.333
AREA_EXPOSED_CNV(L)=AREA_EXPOSED(L) CLLVD3A.334
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW) CLLVD3A.335
ENDDO CLLVD3A.336
! CLLVD3A.337
ELSE IF (I_CLOUD.EQ.IP_CLOUD_TRIPLE) THEN CLLVD3A.338
! CLLVD3A.339
! HERE, THE DIFFERENT TYPES OF CLOUDS OVERLAP CLLVD3A.340
! COHERENTLY SO STRATIFORM CLOUD WILL BE EXPOSED CLLVD3A.341
! ONLY IF THERE IS LESS STRATIFORM CLOUD IN THE CLLVD3A.342
! LAYER ABOVE AND MORE CLEAR AIR IN THE LAYER ABOVE: CLLVD3A.343
! UNDER THESE CONDITIONS THE NON-CORRELATED AREAS CLLVD3A.344
! OVERLAP RANDOMLY. CLLVD3A.345
! THE ACTUAL EXPOSED AREAS OF CONVECTIVE OR CLLVD3A.346
! STRATIFORM CLOUD MUST THEN BE WEIGHTED BY FACTORS CLLVD3A.347
! REPRESENTING THE LIQUID PORTION OF EACH CLOUD, SINCE CLLVD3A.348
! NOTHING IS RETRIEVED OVER ICE. (THE HORIZONTAL CLLVD3A.349
! ARRANGEMENT OF ICE AND WATER WITHIN EITHER TYPE OF CLLVD3A.350
! CLOUD IS RANDOM). CLLVD3A.351
! CLLVD3A.352
DO L=1, N_PROFILE CLLVD3A.353
! CLLVD3A.354
AREA_STRAT(L)=W_CLOUD(L, I_INV) CLLVD3A.355
& *(FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW) CLLVD3A.356
& +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SI)) CLLVD3A.357
AREA_CONV(L)=W_CLOUD(L, I_INV) CLLVD3A.358
& *(FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW) CLLVD3A.359
& +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CI)) CLLVD3A.360
AREA_UNCORRELATED(L)=1.0E+00 CLLVD3A.361
& -MIN(AREA_CLEAR(L), AREA_CLEAR_ABOVE(L)) CLLVD3A.362
& -MIN(AREA_STRAT(L), AREA_STRAT_ABOVE(L)) CLLVD3A.363
& -MIN(AREA_CONV(L), AREA_CONV_ABOVE(L)) CLLVD3A.364
AREA_EXPOSED_ST(L)=MAX(0.0E+00 CLLVD3A.365
& , (AREA_STRAT(L)-AREA_STRAT_ABOVE(L))) CLLVD3A.366
IF (AREA_UNCORRELATED(L).GT.0.0E+00) THEN CLLVD3A.367
AREA_EXPOSED_ST(L) CLLVD3A.368
& =MAX(0.0E+00, AREA_EXPOSED_ST(L) CLLVD3A.369
& *(AREA_CLEAR_ABOVE(L)-AREA_CLEAR(L))) CLLVD3A.370
& /AREA_UNCORRELATED(L) CLLVD3A.371
ELSE CLLVD3A.372
AREA_EXPOSED_ST(L)=0.0E+00 CLLVD3A.373
ENDIF CLLVD3A.374
AREA_EXPOSED_CNV(L) CLLVD3A.375
& =AREA_EXPOSED(L)-AREA_EXPOSED_ST(L) CLLVD3A.376
! CLLVD3A.377
IF (FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW) CLLVD3A.378
& .GT.0.0E+00) THEN CLLVD3A.379
AREA_EXPOSED_CNV(L)=AREA_EXPOSED_CNV(L) CLLVD3A.380
& /(1.0E+00 CLLVD3A.381
& +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CI) CLLVD3A.382
& /FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_CW)) CLLVD3A.383
ELSE CLLVD3A.384
AREA_EXPOSED_CNV(L)=0.0E+00 CLLVD3A.385
ENDIF CLLVD3A.386
! CLLVD3A.387
IF (FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW) CLLVD3A.388
& .GT.0.0E+00) THEN CLLVD3A.389
AREA_EXPOSED_ST(L)=AREA_EXPOSED_ST(L) CLLVD3A.390
& /(1.0E+00 CLLVD3A.391
& +FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SI) CLLVD3A.392
& /FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_SW)) CLLVD3A.393
ELSE CLLVD3A.394
AREA_EXPOSED_ST(L)=0.0E+00 CLLVD3A.395
ENDIF CLLVD3A.396
! CLLVD3A.397
ENDDO CLLVD3A.398
ELSE CLLVD3A.399
WRITE(IU_ERR, '(/A)') CLLVD3A.400
& '*** ERROR: THE DIAGNOSTIC OF OBSERVED RE HAS NOT ' CLLVD3A.401
& //'BEEN IMPLEMENTED WITH THIS OVERLAP OPTION.' CLLVD3A.402
IERR=I_ERR_FATAL CLLVD3A.403
RETURN CLLVD3A.404
ENDIF CLLVD3A.405
! CLLVD3A.406
! CLLVD3A.407
DO L=1, N_PROFILE CLLVD3A.408
! CLLVD3A.409
WEIGHTED_RE_G(L)=WEIGHTED_RE_G(L) CLLVD3A.410
& +TRANS_OVERLYING_SPACE(L) CLLVD3A.411
& *(AREA_EXPOSED_CNV(L) CLLVD3A.412
& *CONDENSED_RE(L, I_INV, IP_CLCMP_CNV_WATER) CLLVD3A.413
& +AREA_EXPOSED_ST(L) CLLVD3A.414
& *CONDENSED_RE(L, I_INV, IP_CLCMP_ST_WATER)) CLLVD3A.415
SUM_WEIGHT_RE_G(L)=SUM_WEIGHT_RE_G(L) CLLVD3A.416
& +TRANS_OVERLYING_SPACE(L) CLLVD3A.417
& *(AREA_EXPOSED_CNV(L)+AREA_EXPOSED_ST(L)) CLLVD3A.418
ENDDO CLLVD3A.419
! CLLVD3A.420
ENDIF CLLVD3A.421
! CLLVD3A.422
! CLLVD3A.423
ENDIF CLLVD3A.424
! CLLVD3A.425
! CLLVD3A.426
! CLLVD3A.427
! ADVANCE THE STORED QUANTITIES REFFERRING TO OVERLYING LAYERS. CLLVD3A.428
! CLLVD3A.429
! CLLVD3A.430
! THE TRANSMISSION TO SPACE CURRENTLY HOLDS THE PROBABILITY THAT CLLVD3A.431
! A PHOTON TRAVELLING UPWARDS IN THE CLEAR AIR IN THE LAYER ABOVE CLLVD3A.432
! WILL ESCAPE TO SPACE WITHOUT ENCOUNTERING A CLOUD. TO ADVANCE CLLVD3A.433
! THIS TO THE CURRENT LAYER IT MUST BE MULTIPLIED BY A FACTOR CLLVD3A.434
! REPRESENTING THE OVERLAP ASSUMPTION AT THE TOP OF THE PRESENT CLLVD3A.435
! LAYER. CLLVD3A.436
! CLLVD3A.437
IF (I_CLOUD.EQ.IP_CLOUD_MIX_RANDOM) THEN CLLVD3A.438
! CLLVD3A.439
DO L=1, N_PROFILE CLLVD3A.440
TRANS_OVERLYING_SPACE(L)=TRANS_OVERLYING_SPACE(L) CLLVD3A.441
& *AREA_CLEAR_ABOVE(L) CLLVD3A.442
ENDDO CLLVD3A.443
! CLLVD3A.444
ELSE IF ( (I_CLOUD.EQ.IP_CLOUD_MIX_MAX).OR. CLLVD3A.445
& (I_CLOUD.EQ.IP_CLOUD_TRIPLE) ) THEN CLLVD3A.446
! CLLVD3A.447
DO L=1, N_PROFILE CLLVD3A.448
AREA_CLEAR_CLEAR(L)=MIN(AREA_CLEAR(L) CLLVD3A.449
& , AREA_CLEAR_ABOVE(L)) CLLVD3A.450
IF (AREA_CLEAR(L).GT.0.0E+00) THEN CLLVD3A.451
TRANS_OVERLYING_SPACE(L)=TRANS_OVERLYING_SPACE(L) CLLVD3A.452
& *AREA_CLEAR_CLEAR(L)/AREA_CLEAR(L) CLLVD3A.453
ELSE CLLVD3A.454
TRANS_OVERLYING_SPACE(L)=0.0E+00 CLLVD3A.455
ENDIF CLLVD3A.456
ENDDO CLLVD3A.457
! CLLVD3A.458
ENDIF CLLVD3A.459
! CLLVD3A.460
! ADVANCE THE AREAS OF CLOUD. CLLVD3A.461
DO L=1, N_PROFILE CLLVD3A.462
AREA_CLEAR_ABOVE(L)=AREA_CLEAR(L) CLLVD3A.463
ENDDO CLLVD3A.464
IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CONV_STRAT) THEN CLLVD3A.465
DO L=1, N_PROFILE CLLVD3A.466
AREA_STRAT_ABOVE(L)=W_CLOUD(L, I_INV) CLLVD3A.467
& *FRAC_CLOUD(L, I_INV, IP_CLOUD_TYPE_STRAT) CLLVD3A.468
ENDDO CLLVD3A.469
ELSE IF (I_CLOUD_REPRESENTATION.EQ.IP_CLOUD_CSIW) THEN CLLVD3A.470
DO L=1, N_PROFILE CLLVD3A.471
AREA_STRAT_ABOVE(L)=AREA_STRAT(L) CLLVD3A.472
AREA_CONV_ABOVE(L)=AREA_CONV(L) CLLVD3A.473
ENDDO CLLVD3A.474
ENDIF CLLVD3A.475
! CLLVD3A.476
ENDDO CLLVD3A.477
! CLLVD3A.478
! CLLVD3A.479
! CLLVD3A.480
IF (L_OBSERVED_RE) THEN CLLVD3A.481
! SCATTER THE DIAGNOSTICS BACK TO THE OUTPUT ARRAYS AND CONVERT CLLVD3A.482
! TO MICRONS (TO AVOID FIELDS BEING CORRUPTED BY PACKING). CLLVD3A.483
DO L=1, N_PROFILE CLLVD3A.484
WEIGHTED_RE(I_GATHER(L))=1.0E+06*WEIGHTED_RE_G(L) CLLVD3A.485
SUM_WEIGHT_RE(I_GATHER(L))=SUM_WEIGHT_RE_G(L) CLLVD3A.486
ENDDO CLLVD3A.487
ENDIF CLLVD3A.488
! CLLVD3A.489
! CLLVD3A.490
! CLLVD3A.491
RETURN CLLVD3A.492
END CLLVD3A.493
*ENDIF DEF,A01_3A CLLVD3A.494