*IF DEF,A70_1A,OR,DEF,A70_1B APB4F405.65 *IF DEF,A01_3A,OR,DEF,A02_3A OVMXR3A.2 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.13637 C GTS2F400.13638 C Use, duplication or disclosure of this code is subject to the GTS2F400.13639 C restrictions as set forth in the contract. GTS2F400.13640 C GTS2F400.13641 C Meteorological Office GTS2F400.13642 C London Road GTS2F400.13643 C BRACKNELL GTS2F400.13644 C Berkshire UK GTS2F400.13645 C RG12 2SZ GTS2F400.13646 C GTS2F400.13647 C If no contract has been raised with this copy of the code, the use, GTS2F400.13648 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.13649 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.13650 C Modelling at the above address. GTS2F400.13651 C ******************************COPYRIGHT****************************** GTS2F400.13652 C GTS2F400.13653 !+ Subroutine to find maximally overlapped energy transfer coefficients. ADB1F401.756 ! OVMXR3A.4 ! Method: OVMXR3A.5 ! Straightforward. OVMXR3A.6 ! OVMXR3A.7 ! Current Owner of Code: J. M. Edwards OVMXR3A.8 ! OVMXR3A.9 ! History: OVMXR3A.10 ! Version Date Comment OVMXR3A.11 ! 4.0 27-07-95 Original Code OVMXR3A.12 ! (J. M. Edwards) OVMXR3A.13 ! 4.1 17-05-96 Add code for new ADB1F401.757 ! solvers. ADB1F401.758 ! 4.5 18-05-98 Reference to obsolete ADB1F405.455 ! solvers removed. ADB1F405.456 ! (J. M. Edwards) ADB1F405.457 ! OVMXR3A.14 ! Description of Code: OVMXR3A.15 ! FORTRAN 77 with extensions listed in documentation. OVMXR3A.16 ! OVMXR3A.17 !- --------------------------------------------------------------------- OVMXR3A.18SUBROUTINE OVERLAP_MIX_RANDOM(N_PROFILE, N_LAYER, N_CLOUD_TOP 1OVMXR3A.19 & , ISOLIR, I_SOLVER OVMXR3A.20 & , W_CLOUD, W_FREE OVMXR3A.21 & , CLOUD_OVERLAP OVMXR3A.22 & , NPD_PROFILE, NPD_LAYER OVMXR3A.23 & ) OVMXR3A.24 ! OVMXR3A.25 ! OVMXR3A.26 ! OVMXR3A.27 IMPLICIT NONE OVMXR3A.28 ! OVMXR3A.29 ! OVMXR3A.30 ! SIZES OF DUMMY ARRAYS. OVMXR3A.31 INTEGER !, INTENT(IN) OVMXR3A.32 & NPD_PROFILE OVMXR3A.33 ! MAXIMUM NUMBER OF PROFILES OVMXR3A.34 & , NPD_LAYER OVMXR3A.35 ! MAXIMUM NUMBER OF LAYERS OVMXR3A.36 ! OVMXR3A.37 ! INCLUDE COMDECKS. OVMXR3A.38 *CALL DIMFIX3A
OVMXR3A.39 *CALL SPCRG3A
OVMXR3A.40 *CALL SOLVER3A
OVMXR3A.41 *CALL CLCFPT3A
OVMXR3A.42 ! OVMXR3A.43 ! DUMMY ARGUMENTS. OVMXR3A.44 INTEGER !, INTENT(IN) OVMXR3A.45 & N_PROFILE OVMXR3A.46 ! NUMBER OF PROFILES OVMXR3A.47 & , N_LAYER OVMXR3A.48 ! NUMBER OF LAYERS OVMXR3A.49 & , N_CLOUD_TOP OVMXR3A.50 ! TOPMOST CLOUDY LAYER OVMXR3A.51 & , ISOLIR OVMXR3A.52 ! SPECTRAL REGION OVMXR3A.53 & , I_SOLVER OVMXR3A.54 ! SOLVER TO BE USED OVMXR3A.55 REAL !, INTENT(IN) OVMXR3A.56 & W_CLOUD(NPD_PROFILE, NPD_LAYER) OVMXR3A.57 ! CLOUD AMOUNTS OVMXR3A.58 ! OVMXR3A.59 REAL !, INTENT(OUT) OVMXR3A.60 & W_FREE(NPD_PROFILE, NPD_LAYER) OVMXR3A.61 ! CLOUD-FREE AMOUNTS OVMXR3A.62 & , CLOUD_OVERLAP(NPD_PROFILE, 0: NPD_LAYER, NPD_OVERLAP_COEFF) OVMXR3A.63 ! COEFFICIENTS FOR TRANSFER OF ENERGY AT INTERFACE OVMXR3A.64 ! OVMXR3A.65 ! OVMXR3A.66 ! LOCAL ARGUMENTS. OVMXR3A.67 INTEGER OVMXR3A.68 & I OVMXR3A.69 & , L OVMXR3A.70 ! OVMXR3A.71 ! OVMXR3A.72 ! SET THE FREE FRACTIONS IN EACH LAYER. OVMXR3A.73 DO I=1, N_CLOUD_TOP-1 OVMXR3A.74 DO L=1, N_PROFILE OVMXR3A.75 W_FREE(L, I)=1.0E+00 OVMXR3A.76 ENDDO OVMXR3A.77 ENDDO OVMXR3A.78 DO I=N_CLOUD_TOP, N_LAYER OVMXR3A.79 DO L=1, N_PROFILE OVMXR3A.80 W_FREE(L, I)=1.0E+00-W_CLOUD(L, I) OVMXR3A.81 ENDDO OVMXR3A.82 ENDDO OVMXR3A.83 ! OVMXR3A.84 ! EVALUATE THE EXTENT OF OVERLAP BETWEEN LAYERS OF CLOUD OVMXR3A.85 ! AT THE INTERFACE BETWEEN THE ITH AND (I+1)ST LAYER ON THE OVMXR3A.86 ! ASSUMPTION OF RANDOM OVERLAP BETWEEN ADJACENT LAYERS. OVMXR3A.87 ! THE TOP AND BOTTOM BOUNDARIES ARE EXCEPTIONAL. OVMXR3A.88 ! OVMXR3A.89 ! IN THE SOLAR REGION COEFFICIENTS FOR DOWNWARD COUPLING OF THE OVMXR3A.90 ! FLUXES ARE REQUIRED. THESE COEFFICIENTS ARE ALSO NEEDED FOR OVMXR3A.91 ! INFRA-RED CALCULATIONS WITH APPROXIMATE SCATTERING. OVMXR3A.92 ! OVMXR3A.93 IF ( (I_SOLVER.EQ.IP_SOLVER_MIX_DIRECT).OR. ADB1F405.458 & (ISOLIR.EQ.IP_SOLAR).OR. ADB1F401.761 & ( (ISOLIR.EQ.IP_INFRA_RED).AND. OVMXR3A.95 & (I_SOLVER.EQ.IP_SOLVER_MIX_APP_SCAT) ) ) THEN ADB1F405.459 ! OVMXR3A.98 DO I=N_CLOUD_TOP-1, N_LAYER-1 OVMXR3A.99 DO L=1, N_PROFILE OVMXR3A.100 CLOUD_OVERLAP(L, I, IP_CLOVLP_GFF)=W_FREE(L, I+1) OVMXR3A.101 CLOUD_OVERLAP(L, I, IP_CLOVLP_GFC)=W_CLOUD(L, I+1) OVMXR3A.102 CLOUD_OVERLAP(L, I, IP_CLOVLP_GCF)=W_FREE(L, I+1) OVMXR3A.103 CLOUD_OVERLAP(L, I, IP_CLOVLP_GCC)=W_CLOUD(L, I+1) OVMXR3A.104 ENDDO OVMXR3A.105 ENDDO OVMXR3A.106 ! OVMXR3A.107 DO L=1, N_PROFILE OVMXR3A.108 ! BOTTOM BOUNDARY: OVMXR3A.109 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GFF)=1.0E+00 OVMXR3A.110 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GFC)=0.0E+00 OVMXR3A.111 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GCF)=1.0E+00 OVMXR3A.112 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GCC)=0.0E+00 OVMXR3A.113 ENDDO OVMXR3A.114 ! OVMXR3A.115 ENDIF OVMXR3A.116 ! OVMXR3A.117 ! WITH APPROXIMATE SCATTERING IN THE LONGWAVE THE CORRESPONDING OVMXR3A.118 ! UPWARD COEFFICIENTS ARE NEEDED. OVMXR3A.119 ! OVMXR3A.120 IF ( (I_SOLVER.EQ.IP_SOLVER_MIX_DIRECT).OR. ADB1F405.460 & ( (ISOLIR.EQ.IP_INFRA_RED).AND. ADB1F401.764 & (I_SOLVER.EQ.IP_SOLVER_MIX_APP_SCAT) ) ) THEN ADB1F405.461 ! OVMXR3A.124 DO L=1, N_PROFILE OVMXR3A.125 ! TOP CLOUDY BOUNDARY: OVMXR3A.126 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BFF)=1.0E+00 OVMXR3A.127 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BFC)=1.0E+00 OVMXR3A.128 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BCF)=0.0E+00 OVMXR3A.129 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BCC)=0.0E+00 OVMXR3A.130 ENDDO OVMXR3A.131 ! OVMXR3A.132 DO I=N_CLOUD_TOP, N_LAYER OVMXR3A.133 DO L=1, N_PROFILE OVMXR3A.134 CLOUD_OVERLAP(L, I, IP_CLOVLP_BFF)=W_FREE(L, I) OVMXR3A.135 CLOUD_OVERLAP(L, I, IP_CLOVLP_BFC)=W_FREE(L, I) OVMXR3A.136 CLOUD_OVERLAP(L, I, IP_CLOVLP_BCF)=W_CLOUD(L, I) OVMXR3A.137 CLOUD_OVERLAP(L, I, IP_CLOVLP_BCC)=W_CLOUD(L, I) OVMXR3A.138 ENDDO OVMXR3A.139 ENDDO OVMXR3A.140 ENDIF OVMXR3A.141 ! OVMXR3A.142 ! OVMXR3A.143 IF (I_SOLVER.EQ.IP_SOLVER_MIX_11) THEN ADB1F405.462 ! OVMXR3A.176 DO L=1, N_PROFILE OVMXR3A.177 ! OVMXR3A.178 ! TOP BOUNDARY: OVMXR3A.179 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_GM)=0.0E+00 OVMXR3A.180 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_GP) OVMXR3A.181 & =2.0E+00-4.0E+00*W_CLOUD(L, N_CLOUD_TOP) OVMXR3A.182 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BM)=0.0E+00 OVMXR3A.183 CLOUD_OVERLAP(L, N_CLOUD_TOP-1, IP_CLOVLP_BP)=2.0E+00 OVMXR3A.184 ! OVMXR3A.185 ! BOTTOM BOUNDARY: OVMXR3A.186 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GM)=0.0E+00 OVMXR3A.187 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_GP)=2.0E+00 OVMXR3A.188 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_BM)=0.0E+00 OVMXR3A.189 CLOUD_OVERLAP(L, N_LAYER, IP_CLOVLP_BP) OVMXR3A.190 & =2.0E+00-4.0E+00*W_CLOUD(L, N_LAYER) OVMXR3A.191 ! OVMXR3A.192 ENDDO OVMXR3A.193 ! OVMXR3A.194 DO I=N_CLOUD_TOP, N_LAYER-1 OVMXR3A.195 DO L=1, N_PROFILE OVMXR3A.196 CLOUD_OVERLAP(L, I, IP_CLOVLP_GM)=0.0E+00 OVMXR3A.197 CLOUD_OVERLAP(L, I, IP_CLOVLP_GP) OVMXR3A.198 & =2.0E+00-4.0E+00*W_CLOUD(L, I+1) OVMXR3A.199 CLOUD_OVERLAP(L, I, IP_CLOVLP_BM)=0.0E+00 OVMXR3A.200 CLOUD_OVERLAP(L, I, IP_CLOVLP_BP) OVMXR3A.201 & =2.0E+00-4.0E+00*W_CLOUD(L, I) OVMXR3A.202 ENDDO OVMXR3A.203 ENDDO OVMXR3A.204 ! OVMXR3A.205 ! OVMXR3A.206 ENDIF OVMXR3A.207 ! OVMXR3A.208 ! OVMXR3A.209 ! OVMXR3A.210 RETURN OVMXR3A.211 END OVMXR3A.212 *ENDIF DEF,A01_3A,OR,DEF,A02_3A OVMXR3A.213 *ENDIF DEF,A70_1A,OR,DEF,A70_1B APB4F405.66