*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.91 *IF DEF,A01_3A,OR,DEF,A02_3A SLMXDR3A.2 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. SLMXDR3A.3 C SLMXDR3A.4 C Use, duplication or disclosure of this code is subject to the SLMXDR3A.5 C restrictions as set forth in the contract. SLMXDR3A.6 C SLMXDR3A.7 C Meteorological Office SLMXDR3A.8 C London Road SLMXDR3A.9 C BRACKNELL SLMXDR3A.10 C Berkshire UK SLMXDR3A.11 C RG12 2SZ SLMXDR3A.12 C SLMXDR3A.13 C If no contract has been raised with this copy of the code, the use, SLMXDR3A.14 C duplication or disclosure of it is strictly prohibited. Permission SLMXDR3A.15 C to do so must first be obtained in writing from the Head of Numerical SLMXDR3A.16 C Modelling at the above address. SLMXDR3A.17 C ******************************COPYRIGHT****************************** SLMXDR3A.18 C SLMXDR3A.19 !+ Subroutine to solve for mixed fluxes scattering without a matrix. SLMXDR3A.20 ! SLMXDR3A.21 ! Method: SLMXDR3A.22 ! Gaussian elimination in an upward direction is employed to SLMXDR3A.23 ! determine effective albedos for lower levels of the atmosphere. SLMXDR3A.24 ! This allows a downward pass of back-substitution to be carried SLMXDR3A.25 ! out to determine the upward and downward fluxes. SLMXDR3A.26 ! SLMXDR3A.27 ! Current Owner of Code: J. M. Edwards SLMXDR3A.28 ! SLMXDR3A.29 ! History: SLMXDR3A.30 ! Version Date Comment SLMXDR3A.31 ! 4.1 10-04-96 Original Code SLMXDR3A.32 ! (J. M. Edwards) SLMXDR3A.33 ! SLMXDR3A.34 ! Description of Code: SLMXDR3A.35 ! FORTRAN 77 with extensions listed in documentation. SLMXDR3A.36 ! SLMXDR3A.37 !- --------------------------------------------------------------------- SLMXDR3A.38SUBROUTINE SOLVER_MIX_DIRECT(N_PROFILE, N_LAYER, N_CLOUD_TOP 1SLMXDR3A.39 & , T, R, S_DOWN, S_UP SLMXDR3A.40 & , T_CLOUD, R_CLOUD, S_DOWN_CLOUD, S_UP_CLOUD SLMXDR3A.41 & , V11, V21, V12, V22 SLMXDR3A.42 & , U11, U12, U21, U22 SLMXDR3A.43 & , L_NET SLMXDR3A.44 & , FLUX_INC_DOWN SLMXDR3A.45 & , SOURCE_GROUND_FREE, SOURCE_GROUND_CLOUD, ALBEDO_SURFACE_DIFF SLMXDR3A.46 & , FLUX_TOTAL SLMXDR3A.47 & , NPD_PROFILE, NPD_LAYER SLMXDR3A.48 & ) SLMXDR3A.49 ! SLMXDR3A.50 ! SLMXDR3A.51 IMPLICIT NONE SLMXDR3A.52 ! SLMXDR3A.53 ! SLMXDR3A.54 ! SIZES OF DUMMY ARRAYS. SLMXDR3A.55 INTEGER !, INTENT(IN) SLMXDR3A.56 & NPD_PROFILE SLMXDR3A.57 ! MAXIMUM NUMBER OF PROFILES SLMXDR3A.58 & , NPD_LAYER SLMXDR3A.59 ! MAXIMUM NUMBER OF LAYERS SLMXDR3A.60 ! SLMXDR3A.61 ! SLMXDR3A.62 ! DUMMY ARGUMENTS. SLMXDR3A.63 INTEGER !, INTENT(IN) SLMXDR3A.64 & N_PROFILE SLMXDR3A.65 ! NUMBER OF PROFILES SLMXDR3A.66 & , N_LAYER SLMXDR3A.67 ! NUMBER OF LAYERS SLMXDR3A.68 & , N_CLOUD_TOP SLMXDR3A.69 ! TOPMOST CLOUDY LAYER SLMXDR3A.70 LOGICAL !, INTENT(IN) SLMXDR3A.71 & L_NET SLMXDR3A.72 ! FLAG FOR CALCULATION OF NET FLUXES SLMXDR3A.73 REAL !, INTENT(IN) SLMXDR3A.74 & T(NPD_PROFILE, NPD_LAYER) SLMXDR3A.75 ! CLEAR-SKY TRANSMISSION SLMXDR3A.76 & , R(NPD_PROFILE, NPD_LAYER) SLMXDR3A.77 ! CLEAR-SKY REFLECTION SLMXDR3A.78 & , S_DOWN(NPD_PROFILE, NPD_LAYER) SLMXDR3A.79 ! CLEAR-SKY DOWNWARD SOURCE FUNCTION SLMXDR3A.80 & , S_UP(NPD_PROFILE, NPD_LAYER) SLMXDR3A.81 ! CLEAR-SKY UPWARD SOURCE FUNCTION SLMXDR3A.82 & , T_CLOUD(NPD_PROFILE, NPD_LAYER) SLMXDR3A.83 ! CLOUDY TRANSMISSION SLMXDR3A.84 & , R_CLOUD(NPD_PROFILE, NPD_LAYER) SLMXDR3A.85 ! CLOUDY REFLECTION SLMXDR3A.86 & , S_DOWN_CLOUD(NPD_PROFILE, NPD_LAYER) SLMXDR3A.87 ! DOWNWARD CLOUDY SOURCE FUNCTION SLMXDR3A.88 & , S_UP_CLOUD(NPD_PROFILE, NPD_LAYER) SLMXDR3A.89 ! UPWARD CLOUDY SOURCE FUNCTION SLMXDR3A.90 REAL !, INTENT(IN) SLMXDR3A.91 & V11(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.92 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.93 & , V21(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.94 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.95 & , V12(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.96 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.97 & , V22(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.98 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.99 & , U11(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.100 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.101 & , U12(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.102 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.103 & , U21(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.104 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.105 & , U22(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.106 ! ENERGY TRANSFER COEFFICIENT SLMXDR3A.107 REAL !, INTENT(IN) SLMXDR3A.108 & FLUX_INC_DOWN(NPD_PROFILE) SLMXDR3A.109 ! INCIDENT FLUX SLMXDR3A.110 & , SOURCE_GROUND_FREE(NPD_PROFILE) SLMXDR3A.111 ! SOURCE FROM GROUND (CLEAR SKY) SLMXDR3A.112 & , SOURCE_GROUND_CLOUD(NPD_PROFILE) SLMXDR3A.113 ! SOURCE FROM GROUND (CLOUDY REGION) SLMXDR3A.114 & , ALBEDO_SURFACE_DIFF(NPD_PROFILE) SLMXDR3A.115 ! DIFFUSE ALBEDO SLMXDR3A.116 REAL !, INTENT(OUT) SLMXDR3A.117 & FLUX_TOTAL(NPD_PROFILE, 2*NPD_LAYER+2) SLMXDR3A.118 ! TOTAL FLUX SLMXDR3A.119 ! SLMXDR3A.120 ! LOCAL VARIABLES. SLMXDR3A.121 INTEGER SLMXDR3A.122 & I SLMXDR3A.123 ! LOOP VARIABLE SLMXDR3A.124 & , L SLMXDR3A.125 ! LOOP VARIABLE SLMXDR3A.126 ! SLMXDR3A.127 ! EFFECTIVE COUPLING ALBEDOS AND SOURCE FUNCTIONS: SLMXDR3A.128 REAL SLMXDR3A.129 & ALPHA11(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.130 & , ALPHA22(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.131 & , ALPHA21(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.132 & , ALPHA12(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.133 & , G1(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.134 & , G2(NPD_PROFILE, NPD_LAYER+1) SLMXDR3A.135 ! TERMS FOR DOWNWARD PROPAGATION: SLMXDR3A.136 REAL SLMXDR3A.137 & GAMMA11(NPD_PROFILE, NPD_LAYER) SLMXDR3A.138 & , GAMMA12(NPD_PROFILE, NPD_LAYER) SLMXDR3A.139 & , GAMMA21(NPD_PROFILE, NPD_LAYER) SLMXDR3A.140 & , GAMMA22(NPD_PROFILE, NPD_LAYER) SLMXDR3A.141 & , BETA11_INV(NPD_PROFILE, NPD_LAYER) SLMXDR3A.142 & , BETA21(NPD_PROFILE, NPD_LAYER) SLMXDR3A.143 & , BETA22_INV(NPD_PROFILE, NPD_LAYER) SLMXDR3A.144 & , H1(NPD_PROFILE, NPD_LAYER) SLMXDR3A.145 & , H2(NPD_PROFILE, NPD_LAYER) SLMXDR3A.146 ! SLMXDR3A.147 ! AUXILAIRY NUMERICAL VARIABLES REQUIRED ONLY IN THE CURRENT LAYER: SLMXDR3A.148 REAL SLMXDR3A.149 & THETA11 SLMXDR3A.150 & , THETA12 SLMXDR3A.151 & , THETA21 SLMXDR3A.152 & , THETA22 SLMXDR3A.153 & , LAMBDA SLMXDR3A.154 & , LAMBDA_BAR SLMXDR3A.155 ! SLMXDR3A.156 ! TEMPORARY FLUXES SLMXDR3A.157 REAL SLMXDR3A.158 & FLUX_DOWN_1(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.159 ! DOWNWARD FLUXES OUTSIDE CLOUDS JUST BELOW I'TH LEVEL SLMXDR3A.160 & , FLUX_DOWN_2(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.161 ! DOWNWARD FLUXES INSIDE CLOUDS JUST BELOW I'TH LEVEL SLMXDR3A.162 & , FLUX_UP_1(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.163 ! UPWARD FLUXES OUTSIDE CLOUDS JUST ABOVE I'TH LEVEL SLMXDR3A.164 & , FLUX_UP_2(NPD_PROFILE, 0: NPD_LAYER) SLMXDR3A.165 ! UPWARD FLUXES INSIDE CLOUDS JUST ABOVE I'TH LEVEL SLMXDR3A.166 ! SLMXDR3A.167 ! SLMXDR3A.168 ! SLMXDR3A.169 ! INITIALIZE AT THE BOTTOM OF THE COLUMN FOR UPWARD ELIMINATION. SLMXDR3A.170 DO L=1, N_PROFILE SLMXDR3A.171 ALPHA11(L, N_LAYER+1)=ALBEDO_SURFACE_DIFF(L) SLMXDR3A.172 ALPHA22(L, N_LAYER+1)=ALBEDO_SURFACE_DIFF(L) SLMXDR3A.173 ALPHA21(L, N_LAYER+1)=0.0E+00 SLMXDR3A.174 ALPHA12(L, N_LAYER+1)=0.0E+00 SLMXDR3A.175 G1(L, N_LAYER+1)=SOURCE_GROUND_FREE(L) SLMXDR3A.176 G2(L, N_LAYER+1)=SOURCE_GROUND_CLOUD(L) SLMXDR3A.177 ENDDO SLMXDR3A.178 ! SLMXDR3A.179 ! UPWARD ELIMINATION THROUGH THE CLOUDY LAYERS. SLMXDR3A.180 DO I=N_LAYER, N_CLOUD_TOP, -1 SLMXDR3A.181 DO L=1, N_PROFILE SLMXDR3A.182 ! SLMXDR3A.183 THETA11=ALPHA11(L, I+1)*V11(L, I)+ALPHA12(L, I+1)*V21(L, I) SLMXDR3A.184 THETA12=ALPHA11(L, I+1)*V12(L, I)+ALPHA12(L, I+1)*V22(L, I) SLMXDR3A.185 THETA21=ALPHA21(L, I+1)*V11(L, I)+ALPHA22(L, I+1)*V21(L, I) SLMXDR3A.186 THETA22=ALPHA21(L, I+1)*V12(L, I)+ALPHA22(L, I+1)*V22(L, I) SLMXDR3A.187 SLMXDR3A.188 BETA21(L, I)=-THETA21*R(L, I) SLMXDR3A.189 BETA22_INV(L, I)=1.0E+00/(1.0E+00-THETA22*R_CLOUD(L, I)) SLMXDR3A.190 GAMMA21(L, I)=THETA21*T(L, I) SLMXDR3A.191 GAMMA22(L, I)=THETA22*T_CLOUD(L, I) SLMXDR3A.192 H2(L, I)=G2(L, I+1)+THETA21*S_DOWN(L, I) SLMXDR3A.193 & +THETA22*S_DOWN_CLOUD(L, I) SLMXDR3A.194 SLMXDR3A.195 LAMBDA=THETA12*R_CLOUD(L, I)*BETA22_INV(L, I) SLMXDR3A.196 BETA11_INV(L, I)=1.0E+00 SLMXDR3A.197 & /(1.0E+00-THETA11*R(L, I)+LAMBDA*BETA21(L, I)) SLMXDR3A.198 GAMMA11(L, I)=THETA11*T(L, I)+LAMBDA*GAMMA21(L, I) SLMXDR3A.199 GAMMA12(L, I)=THETA12*T_CLOUD(L, I)+LAMBDA*GAMMA22(L, I) SLMXDR3A.200 H1(L, I)=G1(L, I+1)+THETA11*S_DOWN(L, I) SLMXDR3A.201 & +THETA12*S_DOWN_CLOUD(L, I)+LAMBDA*H2(L, I) SLMXDR3A.202 SLMXDR3A.203 LAMBDA=U22(L, I-1)*T_CLOUD(L, I)*BETA22_INV(L, I) SLMXDR3A.204 LAMBDA_BAR=(U21(L, I-1)*T(L, I)+LAMBDA*BETA21(L, I)) SLMXDR3A.205 & *BETA11_INV(L, I) SLMXDR3A.206 ALPHA21(L, I)=U21(L, I-1)*R(L, I)+LAMBDA*GAMMA21(L, I) SLMXDR3A.207 & +LAMBDA_BAR*GAMMA11(L, I) SLMXDR3A.208 ALPHA22(L, I)=U22(L, I-1)*R_CLOUD(L, I) SLMXDR3A.209 & +LAMBDA*GAMMA22(L, I)+LAMBDA_BAR*GAMMA12(L, I) SLMXDR3A.210 G2(L, I)=U21(L, I-1)*S_UP(L, I)+U22(L, I-1)*S_UP_CLOUD(L, I) SLMXDR3A.211 & +LAMBDA*H2(L, I)+LAMBDA_BAR*H1(L, I) SLMXDR3A.212 ! SLMXDR3A.213 LAMBDA=U12(L, I-1)*T_CLOUD(L, I)*BETA22_INV(L, I) SLMXDR3A.214 LAMBDA_BAR=(U11(L, I-1)*T(L, I)+LAMBDA*BETA21(L, I)) SLMXDR3A.215 & *BETA11_INV(L, I) SLMXDR3A.216 ALPHA11(L, I)=U11(L, I-1)*R(L, I)+LAMBDA*GAMMA21(L, I) SLMXDR3A.217 & +LAMBDA_BAR*GAMMA11(L, I) SLMXDR3A.218 ALPHA12(L, I)=U12(L, I-1)*R_CLOUD(L, I) SLMXDR3A.219 & +LAMBDA*GAMMA22(L, I)+LAMBDA_BAR*GAMMA12(L, I) SLMXDR3A.220 G1(L, I)=U11(L, I-1)*S_UP(L, I)+U12(L, I-1)*S_UP_CLOUD(L, I) SLMXDR3A.221 & +LAMBDA*H2(L, I)+LAMBDA_BAR*H1(L, I) SLMXDR3A.222 ! SLMXDR3A.223 ENDDO SLMXDR3A.224 ENDDO SLMXDR3A.225 ! SLMXDR3A.226 ! THE LAYER ABOVE THE CLOUD: ONLY ONE SET OF ALPHAS IS NOW NEEDED. SLMXDR3A.227 ! SLMXDR3A.228 I=N_CLOUD_TOP-1 SLMXDR3A.229 DO L=1, N_PROFILE SLMXDR3A.230 ! SLMXDR3A.231 IF (N_CLOUD_TOP.LT.N_LAYER) THEN SLMXDR3A.232 ! IF THERE IS NO CLOUD IN THE COLUMN THE V'S WILL NOT BE SLMXDR3A.233 ! ASSIGNED SO AN IF TEST IS REQUIRED. SLMXDR3A.234 THETA11=ALPHA11(L, I+1)*V11(L, I)+ALPHA12(L, I+1)*V21(L, I) SLMXDR3A.235 ELSE SLMXDR3A.236 THETA11=ALPHA11(L, I+1) SLMXDR3A.237 ENDIF SLMXDR3A.238 ! SLMXDR3A.239 BETA11_INV(L, I)=1.0E+00/(1.0E+00-THETA11*R(L, I)) SLMXDR3A.240 GAMMA11(L, I)=THETA11*T(L, I) SLMXDR3A.241 H1(L, I)=G1(L, I+1)+THETA11*S_DOWN(L, I) SLMXDR3A.242 ! SLMXDR3A.243 LAMBDA=T(L, I)*BETA11_INV(L, I) SLMXDR3A.244 ALPHA11(L, I)=R(L, I)+LAMBDA*GAMMA11(L, I) SLMXDR3A.245 G1(L, I)=S_UP(L, I)+LAMBDA*H1(L, I) SLMXDR3A.246 ! SLMXDR3A.247 ENDDO SLMXDR3A.248 ! SLMXDR3A.249 DO I=N_CLOUD_TOP-2, 1, -1 SLMXDR3A.250 DO L=1, N_PROFILE SLMXDR3A.251 ! SLMXDR3A.252 BETA11_INV(L, I)=1.0E+00/(1.0E+00-ALPHA11(L, I+1)*R(L, I)) SLMXDR3A.253 GAMMA11(L, I)=ALPHA11(L, I+1)*T(L, I) SLMXDR3A.254 H1(L, I)=G1(L, I+1)+ALPHA11(L, I+1)*S_DOWN(L, I) SLMXDR3A.255 ! SLMXDR3A.256 LAMBDA=T(L, I)*BETA11_INV(L, I) SLMXDR3A.257 ALPHA11(L, I)=R(L, I)+LAMBDA*GAMMA11(L, I) SLMXDR3A.258 G1(L, I)=S_UP(L, I)+LAMBDA*H1(L, I) SLMXDR3A.259 ! SLMXDR3A.260 ENDDO SLMXDR3A.261 ENDDO SLMXDR3A.262 ! SLMXDR3A.263 ! SLMXDR3A.264 ! INITIALIZE FOR DOWNWARD BACK-SUBSTITUTION. SLMXDR3A.265 DO L=1, N_PROFILE SLMXDR3A.266 FLUX_TOTAL(L, 2)=FLUX_INC_DOWN(L) SLMXDR3A.267 FLUX_TOTAL(L, 1)=ALPHA11(L, 1)*FLUX_TOTAL(L, 2)+G1(L, 1) SLMXDR3A.268 ENDDO SLMXDR3A.269 ! SLMXDR3A.270 ! SWEEP DOWNWARD THROUGH THE CLEAR-SKY REGION, FINDING THE DOWNWARD SLMXDR3A.271 ! FLUX AT THE TOP OF THE LAYER AND THE UPWARD FLUX AT THE BOTTOM. SLMXDR3A.272 DO I=1, N_CLOUD_TOP-1 SLMXDR3A.273 DO L=1, N_PROFILE SLMXDR3A.274 FLUX_TOTAL(L, 2*I+1)=(GAMMA11(L, I)*FLUX_TOTAL(L, 2*I) SLMXDR3A.275 & +H1(L, I))*BETA11_INV(L, I) SLMXDR3A.276 FLUX_TOTAL(L, 2*I+2)=T(L, I)*FLUX_TOTAL(L, 2*I) SLMXDR3A.277 & +R(L, I)*FLUX_TOTAL(L, 2*I+1)+S_DOWN(L, I) SLMXDR3A.278 ENDDO SLMXDR3A.279 ENDDO SLMXDR3A.280 ! SLMXDR3A.281 ! PASS INTO THE TOP CLOUDY LAYER. USE FLUX_DOWN_[1,2] TO HOLD, SLMXDR3A.282 ! PROVISIONALLY, THE DOWNWARD FLUXES JUST BELOW THE TOP OF THE SLMXDR3A.283 ! LAYER, THEN CALCULATE THE UPWARD FLUXES AT THE BOTTOM AND SLMXDR3A.284 ! FINALLY THE DOWNWARD FLUXES AT THE BOTTOM OF THE LAYER. SLMXDR3A.285 I=N_CLOUD_TOP SLMXDR3A.286 DO L=1, N_PROFILE SLMXDR3A.287 FLUX_DOWN_1(L, I)=V11(L, I-1)*FLUX_TOTAL(L, 2*I) SLMXDR3A.288 FLUX_DOWN_2(L, I)=V21(L, I-1)*FLUX_TOTAL(L, 2*I) SLMXDR3A.289 FLUX_UP_1(L, I)=(GAMMA11(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.290 & +GAMMA12(L, I)*FLUX_DOWN_2(L, I)+H1(L, I))*BETA11_INV(L, I) SLMXDR3A.291 FLUX_UP_2(L, I)=(GAMMA21(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.292 & +GAMMA22(L, I)*FLUX_DOWN_2(L, I)+H2(L, I) SLMXDR3A.293 & -BETA21(L, I)*FLUX_UP_1(L, I))*BETA22_INV(L, I) SLMXDR3A.294 FLUX_DOWN_1(L, I)=T(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.295 & +R(L, I)*FLUX_UP_1(L, I)+S_DOWN(L, I) SLMXDR3A.296 FLUX_DOWN_2(L, I)=T_CLOUD(L, I)*FLUX_DOWN_2(L, I) SLMXDR3A.297 & +R_CLOUD(L, I)*FLUX_UP_2(L, I)+S_DOWN_CLOUD(L, I) SLMXDR3A.298 ENDDO SLMXDR3A.299 ! SLMXDR3A.300 ! THE MAIN LOOP OF BACK-SUBSTITUTION. THE PROVISIONAL USE OF THE SLMXDR3A.301 ! DOWNWARD FLUXES IS AS ABOVE. SLMXDR3A.302 DO I=N_CLOUD_TOP+1, N_LAYER SLMXDR3A.303 DO L=1, N_PROFILE SLMXDR3A.304 FLUX_DOWN_1(L, I)=V11(L, I-1)*FLUX_DOWN_1(L, I-1) SLMXDR3A.305 & +V12(L, I-1)*FLUX_DOWN_2(L, I-1) SLMXDR3A.306 FLUX_DOWN_2(L, I)=V21(L, I-1)*FLUX_DOWN_1(L, I-1) SLMXDR3A.307 & +V22(L, I-1)*FLUX_DOWN_2(L, I-1) SLMXDR3A.308 FLUX_UP_1(L, I)=(GAMMA11(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.309 & +GAMMA12(L, I)*FLUX_DOWN_2(L, I)+H1(L, I)) SLMXDR3A.310 & *BETA11_INV(L, I) SLMXDR3A.311 FLUX_UP_2(L, I)=(GAMMA21(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.312 & +GAMMA22(L, I)*FLUX_DOWN_2(L, I) SLMXDR3A.313 & -BETA21(L, I)*FLUX_UP_1(L, I)+H2(L, I)) SLMXDR3A.314 & *BETA22_INV(L, I) SLMXDR3A.315 FLUX_DOWN_1(L, I)=T(L, I)*FLUX_DOWN_1(L, I) SLMXDR3A.316 & +R(L, I)*FLUX_UP_1(L, I)+S_DOWN(L, I) SLMXDR3A.317 FLUX_DOWN_2(L, I)=T_CLOUD(L, I)*FLUX_DOWN_2(L, I) SLMXDR3A.318 & +R_CLOUD(L, I)*FLUX_UP_2(L, I)+S_DOWN_CLOUD(L, I) SLMXDR3A.319 ENDDO SLMXDR3A.320 ENDDO SLMXDR3A.321 ! SLMXDR3A.322 ! SLMXDR3A.323 ! CALCULATE THE OVERALL FLUX. SLMXDR3A.324 DO I=N_CLOUD_TOP, N_LAYER SLMXDR3A.325 DO L=1, N_PROFILE SLMXDR3A.326 FLUX_TOTAL(L, 2*I+1)=FLUX_UP_1(L, I)+FLUX_UP_2(L, I) SLMXDR3A.327 FLUX_TOTAL(L, 2*I+2)=FLUX_DOWN_1(L, I)+FLUX_DOWN_2(L, I) SLMXDR3A.328 ENDDO SLMXDR3A.329 ENDDO SLMXDR3A.330 ! SLMXDR3A.331 ! REDUCE TO NET FLUXES IF REQUIRED. SLMXDR3A.332 IF (L_NET) THEN SLMXDR3A.333 DO I=0, N_LAYER SLMXDR3A.334 DO L=1, N_PROFILE SLMXDR3A.335 FLUX_TOTAL(L, I+1) SLMXDR3A.336 & =FLUX_TOTAL(L, 2*I+2)-FLUX_TOTAL(L, 2*I+1) SLMXDR3A.337 ENDDO SLMXDR3A.338 ENDDO SLMXDR3A.339 ENDIF SLMXDR3A.340 ! SLMXDR3A.341 ! SLMXDR3A.342 ! SLMXDR3A.343 RETURN SLMXDR3A.344 END SLMXDR3A.345 *ENDIF DEF,A01_3A,OR,DEF,A02_3A SLMXDR3A.346 *ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.92