*IF DEF,A13_1A,OR,DEF,A13_1B ATJ0F402.28 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.14895 C GTS2F400.14896 C Use, duplication or disclosure of this code is subject to the GTS2F400.14897 C restrictions as set forth in the contract. GTS2F400.14898 C GTS2F400.14899 C Meteorological Office GTS2F400.14900 C London Road GTS2F400.14901 C BRACKNELL GTS2F400.14902 C Berkshire UK GTS2F400.14903 C RG12 2SZ GTS2F400.14904 C GTS2F400.14905 C If no contract has been raised with this copy of the code, the use, GTS2F400.14906 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.14907 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.14908 C Modelling at the above address. GTS2F400.14909 C ******************************COPYRIGHT****************************** GTS2F400.14910 C GTS2F400.14911 CLL SUBROUTINE COEFF_TH_Q ----------------------------------------- COFTHQ1A.3 CLL COFTHQ1A.4 CLL PURPOSE: CALCULATES EFFECTIVE DIFFUSION COEFFICIENTS COFTHQ1A.5 CLL FOR THETAL OR Q IN NS AND EW DIRECTIONS COFTHQ1A.6 CLL IF STEEP SLOPE THEN EFFECTIVE DIFFUSION IS ZERO. COFTHQ1A.7 CLL COFTHQ1A.8 CLL NOTE PRESSURE ARRAY NEEDS TO BE GLOBAL (SHARED) COFTHQ1A.9 CLL FOR MULTI-TASKING AT 3.4 UPWARDS. COFTHQ1A.10 CLL COFTHQ1A.11 CLL NOT SUITABLE FOR SINGLE COLUMN USE. COFTHQ1A.12 CLL COFTHQ1A.13 CLL VERSION FOR CRAY Y-MP COFTHQ1A.14 CLL COFTHQ1A.15 CLL MODEL MODIFICATION HISTORY COFTHQ1A.16 CLL VERSION DATE COFTHQ1A.17 CLL 4.0 03/02/95 NEW SUBROUTINE CALLED BY DIF_CTL COFTHQ1A.18 CLL AUTHOR: T.DAVIES FR. REVIEWER: M MAWSON COFTHQ1A.19 ! 4.1 07/05/96 Added MPP code and TYPFLDPT arguments and fixed APB0F401.1345 ! bug in wrap-arounds P.Burton APB0F401.1346 CLL COFTHQ1A.20 CLL PROGRAMMING STANDARD: UNIFIED MODEL DOCUMENTATION PAPER NO. 4, COFTHQ1A.21 CLL STANDARD B. VERSION 2, DATED 18/01/90 COFTHQ1A.22 CLL COFTHQ1A.23 CLL SYSTEM COMPONENTS COVERED: P131 COFTHQ1A.24 CLL COFTHQ1A.25 CLL SYSTEM TASK: P1 COFTHQ1A.26 CLL COFTHQ1A.27 CLL DOCUMENTATION: THE EQUATION USED IS (47) COFTHQ1A.28 CLL IN UNIFIED MODEL DOCUMENTATION PAPER COFTHQ1A.29 CLL NO. 10 M.J.P. CULLEN,T.DAVIES AND M.H.MAWSON COFTHQ1A.30 CLL VERSION 16, DATED 09/01/91. COFTHQ1A.31 CLLEND------------------------------------------------------------- COFTHQ1A.32 COFTHQ1A.33 C*L ARGUMENTS:--------------------------------------------------- COFTHQ1A.34SUBROUTINE COEFF_TH_Q 4,2COFTHQ1A.35 1 (DIFFUSION_EW,DIFFUSION_NS, COFTHQ1A.36 2 PRESSURE,LEVEL,PRESSURE_TEST,AK,BK, COFTHQ1A.37 3 COS_U_LATITUDE,ROW_LENGTH, APB0F401.1347 *CALL ARGFLDPT
APB0F401.1348 5 LATITUDE_STEP_INVERSE,LONGITUDE_STEP_INVERSE, COFTHQ1A.40 6 P_FIELD,U_FIELD,P_LEVELS, COFTHQ1A.41 7 DIFFUSION_COEFFICIENT,DIFFUSION_COEFFICIENT2) COFTHQ1A.42 COFTHQ1A.43 IMPLICIT NONE COFTHQ1A.44 COFTHQ1A.45 INTEGER COFTHQ1A.46 * U_FIELD !IN DIMENSION OF FIELDS ON VELOCITY GRID COFTHQ1A.47 *, P_FIELD !IN DIMENSION OF FIELDS ON PRESSURE GRID COFTHQ1A.48 *, P_LEVELS !IN NUMBER OF MODEL LEVELS COFTHQ1A.49 *, ROW_LENGTH !IN NUMBER OF POINTS PER ROW COFTHQ1A.50 *, LEVEL ! MODEL LEVEL FOR DIFFUSION COFTHQ1A.53 APB0F401.1349 ! All TYPFLDPT arguments are intent IN APB0F401.1350 *CALL TYPFLDPT
APB0F401.1351 COFTHQ1A.54 REAL COFTHQ1A.55 * DIFFUSION_EW(P_FIELD) !OUT HOLDS EAST-WEST COFTHQ1A.56 * !EFFECTIVE DIFFUSION COEFFICIENT. COFTHQ1A.57 *,DIFFUSION_NS(P_FIELD) !OUT HOLDS NORTH_SOUTH COFTHQ1A.58 * !EFFECTIVE DIFFUSION COEFFICIENT. COFTHQ1A.59 COFTHQ1A.60 REAL COFTHQ1A.61 * PRESSURE(P_FIELD,P_LEVELS) !IN HOLDS 3-D PRESSURE FIELD COFTHQ1A.62 * ! LEVEL=1 IS SURFACE THEN LEVEL=K IS MODEL LEVEL K-1 COFTHQ1A.63 *,DIFFUSION_COEFFICIENT(U_FIELD) !IN HOLDS EAST-WEST DIFFUSION COFTHQ1A.64 * ! COEFFICIENT. COFTHQ1A.65 *,DIFFUSION_COEFFICIENT2(U_FIELD) !IN HOLDS NORTH-SOUTH DIFFUSION COFTHQ1A.66 * ! COEFFICIENT. COFTHQ1A.67 *,AK(P_LEVELS) !IN LAYER AK'S COFTHQ1A.68 *,BK(P_LEVELS) !IN LAYER BK'S COFTHQ1A.69 *,COS_U_LATITUDE(U_FIELD) !IN COS(LAT) AT U POINTS COFTHQ1A.70 *,LATITUDE_STEP_INVERSE !IN 1/(DELTA LAMDA) COFTHQ1A.71 *,LONGITUDE_STEP_INVERSE !IN 1/(DELTA PHI) COFTHQ1A.72 *, PRESSURE_TEST ! PRESSURE ALTITUDE LIMIT FOR SLOPE TEST COFTHQ1A.73 COFTHQ1A.74 C*--------------------------------------------------------------------- COFTHQ1A.75 COFTHQ1A.76 C*L DEFINE ARRAYS AND VARIABLES USED IN THIS ROUTINE----------------- COFTHQ1A.77 C*--------------------------------------------------------------------- COFTHQ1A.78 ! Define local arrays APB0F401.1352 LOGICAL MASK(P_FIELD) ! Indicates of EW_DIFFUSION to be set to APB0F401.1353 ! ! zero at a point APB0F401.1354 C DEFINE LOCAL VARIABLES COFTHQ1A.79 COFTHQ1A.80 C LOCAL REALS. COFTHQ1A.81 REAL COFTHQ1A.82 * PRESSURE_LEVEL COFTHQ1A.83 COFTHQ1A.84 C COUNT VARIABLES FOR DO LOOPS ETC. COFTHQ1A.85 INTEGER COFTHQ1A.86 * I,IJ,LEVEL_P COFTHQ1A.87 COFTHQ1A.88 C*L EXTERNAL SUBROUTINE CALLS: NONE------------------------------ COFTHQ1A.89 COFTHQ1A.90 C*--------------------------------------------------------------------- COFTHQ1A.91 CL MAXIMUM VECTOR LENGTH ASSUMED IS END_P_UPDATE-START_P_UPDATE+1 COFTHQ1A.92 CL--------------------------------------------------------------------- COFTHQ1A.93 CL INTERNAL STRUCTURE. COFTHQ1A.94 CL--------------------------------------------------------------------- COFTHQ1A.95 CL COFTHQ1A.96 CL--------------------------------------------------------------------- COFTHQ1A.97 CL SECTION 1. DELTALAMBDA TERMS COFTHQ1A.98 CL--------------------------------------------------------------------- COFTHQ1A.99 LEVEL_P=LEVEL+1 COFTHQ1A.100 C---------------------------------------------------------------------- COFTHQ1A.101 C LEVEL_P =LEVEL+1 SINCE LEVEL_P=1 IS THE SURFACE COFTHQ1A.102 CL TOP LEVEL LEVEL_P = P_LEVELS SINCE SLOPE TEST NEED NOT BE COFTHQ1A.103 CL DONE FOR TOP MOST (PRESSURE) LEVELS COFTHQ1A.104 C---------------------------------------------------------------------- COFTHQ1A.105 IF(LEVEL_P.GT.P_LEVELS)LEVEL_P=P_LEVELS COFTHQ1A.106 C---------------------------------------------------------------------- COFTHQ1A.107 CL SECTION 1.1 CALCULATE DELTAPHILAMBDA*1/(DELTALAMBDA)SQUARED COFTHQ1A.108 C---------------------------------------------------------------------- COFTHQ1A.109 COFTHQ1A.110 DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO APB0F401.1355 DIFFUSION_EW(I) = 0.5*(DIFFUSION_COEFFICIENT(I-ROW_LENGTH)+ COFTHQ1A.112 & DIFFUSION_COEFFICIENT(I))*LONGITUDE_STEP_INVERSE COFTHQ1A.113 & *LONGITUDE_STEP_INVERSE COFTHQ1A.114 END DO COFTHQ1A.115 COFTHQ1A.116 C---------------------------------------------------------------------- COFTHQ1A.117 CL TEST TO SEE IF DIFFUSION COEFFICIENT SET TO ZERO COFTHQ1A.118 C IF STEEP SLOPE AT PRESSURE > PRESSURE_TEST ONLY COFTHQ1A.119 C APPLY GENERAL TEST FOR REFERENCE SURFACE PRESSURE OF 1000HPA COFTHQ1A.120 PRESSURE_LEVEL=AK(LEVEL)+100000.0*BK(LEVEL) COFTHQ1A.121 C COFTHQ1A.122 IF(PRESSURE_LEVEL.GT.PRESSURE_TEST)THEN COFTHQ1A.123 COFTHQ1A.124 C---------------------------------------------------------------------- COFTHQ1A.125 CL SECTION 1.2 SET EFFECTIVE DIFFUSION COEFFICIENT TO ZERO COFTHQ1A.126 C IF STEEP SLOPE BELOW CHOSEN LEVEL COFTHQ1A.127 C---------------------------------------------------------------------- COFTHQ1A.128 COFTHQ1A.129 DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO-1 APB0F401.1356 MASK(I)=((PRESSURE(I,LEVEL_P).GT.PRESSURE(I+1,LEVEL_P-1)).OR. APB0F401.1357 & (PRESSURE(I,LEVEL_P).LT.PRESSURE(I+1,LEVEL_P+1))) APB0F401.1358 ENDDO APB0F401.1359 APB0F401.1360 *IF -DEF,MPP APB0F401.1361 ! Recalculate end-points APB0F401.1362 DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO,ROW_LENGTH APB0F401.1363 IJ=I+ROW_LENGTH-1 APB0F401.1364 MASK(IJ)=((PRESSURE(IJ,LEVEL_P).GT.PRESSURE(I,LEVEL_P-1)).OR. APB0F401.1365 & (PRESSURE(IJ,LEVEL_P).LT.PRESSURE(I,LEVEL_P+1))) APB0F401.1366 ENDDO APB0F401.1367 *ENDIF APB0F401.1368 APB0F401.1369 ! And zero appropriate points of EW_DIFFUSION APB0F401.1370 DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO APB0F401.1371 IF (MASK(I)) DIFFUSION_EW(I)=0.0 APB0F401.1372 ENDDO APB0F401.1373 COFTHQ1A.149 ENDIF COFTHQ1A.150 COFTHQ1A.151 COFTHQ1A.152 C---------------------------------------------------------------------- COFTHQ1A.153 CL SECTION 2 CALCULATE NS EFFECTIVE DIFFUSION COFTHQ1A.154 C---------------------------------------------------------------------- COFTHQ1A.155 COFTHQ1A.156 C CALCULATE DELTAPHI TERMS COFTHQ1A.157 C DELTALAMBDAK*COSLAT/(DELTAPHI)SQUARED COFTHQ1A.158 COFTHQ1A.159 DO I= START_POINT_NO_HALO-ROW_LENGTH+1,END_P_POINT_NO_HALO APB0F401.1374 DIFFUSION_NS(I)=0.5*(DIFFUSION_COEFFICIENT2(I)*COS_U_LATITUDE(I) COFTHQ1A.161 & +DIFFUSION_COEFFICIENT2(I-1)*COS_U_LATITUDE(I-1))* COFTHQ1A.162 & LATITUDE_STEP_INVERSE*LATITUDE_STEP_INVERSE COFTHQ1A.163 END DO COFTHQ1A.164 COFTHQ1A.165 C RECALCULATE END-POINTS COFTHQ1A.166 COFTHQ1A.167 COFTHQ1A.168 *IF -DEF,MPP APB0F401.1375 DO I=START_POINT_NO_HALO-ROW_LENGTH,END_P_POINT_NO_HALO, APB0F401.1376 & ROW_LENGTH APB0F401.1377 IJ=I+ROW_LENGTH-1 COFTHQ1A.170 DIFFUSION_NS(I)=0.5*(DIFFUSION_COEFFICIENT2(I)*COS_U_LATITUDE(I) COFTHQ1A.171 & +DIFFUSION_COEFFICIENT2(IJ)*COS_U_LATITUDE(IJ))* COFTHQ1A.172 & LATITUDE_STEP_INVERSE*LATITUDE_STEP_INVERSE COFTHQ1A.173 END DO COFTHQ1A.174 *ELSE APB0F401.1378 DIFFUSION_NS(START_POINT_NO_HALO-ROW_LENGTH)= APB0F401.1379 & DIFFUSION_NS(START_POINT_NO_HALO-ROW_LENGTH+1) APB0F401.1380 *ENDIF APB0F401.1381 COFTHQ1A.175 C---------------------------------------------------------------------- COFTHQ1A.176 CL SECTION 2.2 SET EFFECTIVE DIFFUSION COEFFICIENT TO ZERO COFTHQ1A.177 C IF STEEP SLOPE COFTHQ1A.178 C---------------------------------------------------------------------- COFTHQ1A.179 CL TEST TO SEE IF DIFFUSION COEFFICIENT SET TO ZERO COFTHQ1A.180 C IF STEEP SLOPE AT PRESSURE > PRESSURE_TEST ONLY COFTHQ1A.181 C APPLY GENERAL TEST FOR REFERENCE SURFACE PRESSURE OF 1000HPA COFTHQ1A.182 C COFTHQ1A.183 IF(PRESSURE_LEVEL.GT.PRESSURE_TEST)THEN COFTHQ1A.184 COFTHQ1A.185 DO I=START_POINT_NO_HALO-ROW_LENGTH,END_P_POINT_NO_HALO APB0F401.1382 IF((PRESSURE(I+ROW_LENGTH,LEVEL_P).GT.PRESSURE(I,LEVEL_P-1)).OR. COFTHQ1A.187 & (PRESSURE(I+ROW_LENGTH,LEVEL_P).LT. COFTHQ1A.188 & PRESSURE(I,LEVEL_P+1)))THEN COFTHQ1A.189 DIFFUSION_NS(I)=0.0 COFTHQ1A.190 ENDIF COFTHQ1A.191 END DO COFTHQ1A.192 COFTHQ1A.193 ENDIF COFTHQ1A.194 COFTHQ1A.195 CL END OF ROUTINE COEFF_TH_Q COFTHQ1A.196 COFTHQ1A.197 RETURN COFTHQ1A.198 END COFTHQ1A.199 *ENDIF COFTHQ1A.200