*IF DEF,A10_1A,OR,DEF,A10_1B,OR,DEF,A10_1C AAD2F404.246 *IF -DEF,SCMA AJC0F405.289 C ******************************COPYRIGHT****************************** GTS2F400.2035 C (c) CROWN COPYRIGHT 1995, METEOROLOGICAL OFFICE, All Rights Reserved. GTS2F400.2036 C GTS2F400.2037 C Use, duplication or disclosure of this code is subject to the GTS2F400.2038 C restrictions as set forth in the contract. GTS2F400.2039 C GTS2F400.2040 C Meteorological Office GTS2F400.2041 C London Road GTS2F400.2042 C BRACKNELL GTS2F400.2043 C Berkshire UK GTS2F400.2044 C RG12 2SZ GTS2F400.2045 C GTS2F400.2046 C If no contract has been raised with this copy of the code, the use, GTS2F400.2047 C duplication or disclosure of it is strictly prohibited. Permission GTS2F400.2048 C to do so must first be obtained in writing from the Head of Numerical GTS2F400.2049 C Modelling at the above address. GTS2F400.2050 C ******************************COPYRIGHT****************************** GTS2F400.2051 C GTS2F400.2052 CLL SUBROUTINE DIAG10_B ------------------------------------------ DIA10B1A.3 CLL DIA10B1A.4 CLL PURPOSE: Calculate diagnostics from section 10 after call to DIA10B1A.5 CLL THETL_QT. DIA10B1A.6 CLL DIA10B1A.7 CLL D.Robinson <- programmer of some or all of previous code or changes DIA10B1A.8 CLL DIA10B1A.9 CLL Model Modification history from model version 3.0: DIA10B1A.10 CLL version Date DIA10B1A.11 CLL DIA10B1A.12 CLL 3.2 26/07/93 CHANGE DIMENSION OF SF TO INCLUDE (0:NITEMS, R.RAWLINS @DYALLOC.841 CLL 3.4 10/08/94 Correct all calculations of temperature R A Stratton ARS1F304.29 CLL (T=theta*exner instead of T=theta/exner) ARS1F304.30 CLL Also multiply some fields by 1.e-6 to avoid problems ARS1F304.31 CLL with values close to missing data value. ARS1F304.32 CLL 11/10/94 Further corrections to moist static energy calculation ARS1F304.33 CLL plus correction to calling of COPYDIAG_3D. R A Stratton ARS1F304.34 ! 4.2 25/04/95 Multiply many of the output field by 1.0e-6 to avoid ARS1F402.9 ! problems with partial sums reaching max values of ARS1F402.10 ! > 1.e9. R A Stratton. ARS1F402.11 !LL 4.3 11/02/97 Added ARGFLDPT and ARGPPX arguments P.Burton GPB1F403.1044 !LL 4.5 28/10/98 Introduce Single Column Model. J-C Thil. AJC0F405.290 CLL @DYALLOC.842 CLL Programming standard: U M DOC Paper NO. 4, DIA10B1A.14 CLL DIA10B1A.15 CLL System components covered : D3112 DIA10B1A.16 CLL DIA10B1A.17 CLL Project task: P1 DIA10B1A.18 CLL DIA10B1A.19 CLL External documentation: U.M. Doc. Paper 10. Appendix 3. DIA10B1A.20 CLL DIA10B1A.21 CLLEND--------------------------------------------------------------- DIA10B1A.22 C DIA10B1A.23 C*L ARGUMENTS:------------------------------------------------------ DIA10B1A.24 DIA10B1A.25SUBROUTINE DIAG10_B( 1,12DIA10B1A.26 & U_ADJ,V_ADJ,QT,THETAL,P_EXNER,PSTAR,U,V, DIA10B1A.27 & SEC_U_LATITUDE,AKH,BKH, DIA10B1A.28 & ROW_LENGTH,P_LEVELS,Q_LEVELS,P_FIELD, DIA10B1A.29 & U_FIELD,FIRST_POINT,LAST_POINT, DIA10B1A.30 & NSECTS,NITEMS,TOTITEMS,NUM_STASH_LEVELS, DIA10B1A.31 & NUM_LEVEL_LISTS,LEN_STLIST,STASHLEN,SF, DIA10B1A.32 & STINDEX,STLIST,SI,STASH_LEVELS,STASHWORK, DIA10B1A.33 & FIELD, GPB1F403.1045 & im_ident, GPB1F403.1046 *CALL ARGFLDPT
GPB1F403.1047 *CALL ARGPPX
GPB1F403.1048 & ICODE,CMESSAGE) GPB1F403.1049 DIA10B1A.35 IMPLICIT NONE DIA10B1A.36 DIA10B1A.37 INTEGER DIA10B1A.38 & P_FIELD !IN 1ST DIMENSION OF FIELD OF PSTAR DIA10B1A.39 &, U_FIELD !IN 1ST DIMENSION OF FIELD OF U,V DIA10B1A.40 &, ROW_LENGTH !IN NUMBER OF POINTS PER ROW DIA10B1A.41 &, P_LEVELS !IN NUMBER OF PRESSURE LEVELS DIA10B1A.42 &, Q_LEVELS !IN NUMBER OF WET LEVELS DIA10B1A.43 &, FIRST_POINT !IN FIRST POINT OUTPUT REQUIRED FOR. DIA10B1A.44 &, LAST_POINT !IN LAST POINT OUTPUT REQUIRED FOR. DIA10B1A.45 DIA10B1A.46 INTEGER GPB1F403.1050 & im_ident !IN : Internal model indent GPB1F403.1051 GPB1F403.1052 *CALL TYPFLDPT
GPB1F403.1053 *CALL CSUBMODL
GPB1F403.1054 *CALL CPPXREF
GPB1F403.1055 *CALL PPXLOOK
GPB1F403.1056 INTEGER DIA10B1A.47 & ICODE !OUT RETURN CODE. NON-ZERO IF ERROR-DETECTED DIA10B1A.48 DIA10B1A.49 CHARACTER DIA10B1A.50 & CMESSAGE*(*) !OUT ERROR MESSAGE DIA10B1A.51 DIA10B1A.52 C INPUT DATA DIA10B1A.53 DIA10B1A.54 REAL DIA10B1A.55 & P_EXNER(P_FIELD,P_LEVELS+1) !IN EXNER PRESS ON 1/2 LVLS DIA10B1A.56 &, THETAL(P_FIELD,P_LEVELS)!IN PRIMARY MODEL ARRAY FOR THETAL FIELD DIA10B1A.57 &, PSTAR(P_FIELD) !IN PRIMARY MODEL ARRAY FOR PSTAR DIA10B1A.58 &, U(U_FIELD,P_LEVELS) !IN PRIMARY MODEL ARRAY FOR U FIELD DIA10B1A.59 &, V(U_FIELD,P_LEVELS) !IN PRIMARY MODEL ARRAY FOR V FIELD DIA10B1A.60 &, U_ADJ(U_FIELD,P_LEVELS) !IN MEAN U OVER ADJUSTENT STEPS DIA10B1A.61 &, V_ADJ(U_FIELD,P_LEVELS) !IN MEAN V OVER ADJUSTENT STEPS. DIA10B1A.62 &, QT(P_FIELD,Q_LEVELS) !IN PRIMARY MODEL ARRAY FOR TOTAL WATER DIA10B1A.63 &, SEC_U_LATITUDE(U_FIELD) !IN 1./(COS(LAT)) AT U POINTS. DIA10B1A.64 &, AKH(P_LEVELS+1) !IN Hybrid Coords. A and B values DIA10B1A.65 &, BKH(P_LEVELS+1) !IN at half levels. DIA10B1A.66 DIA10B1A.67 REAL DIA10B1A.68 & FIELD(P_FIELD*P_LEVELS) ! WORK-SPACE FOR OUTPUT FIELD DIA10B1A.69 DIA10B1A.70 C STASH REQUIREMENTS. DIA10B1A.71 DIA10B1A.72 INTEGER DIA10B1A.73 & NSECTS !IN NO OF PROCESSING SECTIONS (MASTER PCRS) DIA10B1A.74 &, NITEMS !IN MAX NO OF STASH ITEMS IN A SECTION DIA10B1A.75 &, TOTITEMS !IN MAX NO OF TOTAL STASH ITEMS DIA10B1A.76 &, NUM_STASH_LEVELS !IN MAX NUMBER OF LEVELS IN A LEVELS LIST DIA10B1A.77 &, NUM_LEVEL_LISTS !IN MAX NUMBER OF LEVELS LIST DIA10B1A.78 &, LEN_STLIST !IN LENGTH OF LIST OF ITEMS FROM STASH DIA10B1A.79 &, STASHLEN !IN SIZE OF STASHWORK DIA10B1A.80 DIA10B1A.81 INTEGER DIA10B1A.82 & STINDEX(2,NITEMS,0:NSECTS) !IN DIA10B1A.83 &, STLIST(LEN_STLIST,TOTITEMS) !IN DIA10B1A.84 &, SI(NITEMS,0:NSECTS) !IN DIA10B1A.85 &, STASH_LEVELS(NUM_STASH_LEVELS+1,NUM_LEVEL_LISTS) !IN DIA10B1A.86 DIA10B1A.87 LOGICAL DIA10B1A.88 & SF(0:NITEMS,0:NSECTS) !IN @DYALLOC.843 DIA10B1A.90 REAL DIA10B1A.91 & STASHWORK(STASHLEN) !INOUT. WORK SPACE HOLDING STASH OUTPUT. DIA10B1A.92 DIA10B1A.93 C*-------------------------------------------------------------------- DIA10B1A.94 DIA10B1A.95 C*L DEFINE LOCAL ARRAYS AND VARIABLES USED IN THIS ROUTINE---------- DIA10B1A.96 C DEFINE LOCAL ARRAYS: 1 is REQUIRED. DIA10B1A.97 REAL DIA10B1A.98 & VELOCITY(P_FIELD*P_LEVELS) ! WORK-SPACE FOR INTERPOLATED WIND DIA10B1A.99 & ! FIELD. DIA10B1A.100 DIA10B1A.101 C*-------------------------------------------------------------------- DIA10B1A.102 DIA10B1A.103 C DEFINE LOCAL VARIABLES DIA10B1A.104 REAL DIA10B1A.105 & EARTH_RADIUS_INVERSE DIA10B1A.106 &, RECIP_G DIA10B1A.107 &, PKP1,PK ! Pressure at half levels k+1 and k DIA10B1A.108 &, P_EXNER_FULL ! Exner pressure at full model level DIA10B1A.109 &, TEMPL_I,TEMPL_IP1 ! Temperatures at points/rows i and i+1 DIA10B1A.110 &, FACTOR ! Field normalised by this factor ARS1F304.35 DIA10B1A.111 INTEGER DIA10B1A.112 & I,K,K1,LEVEL DIA10B1A.113 & ,FIRST_U,FIRST_P ! first point for copydiag u and p grids ARS1F304.36 & ,LAST_U,LAST_P ! Last point for copydiag u and p grids ARS1F304.37 DIA10B1A.114 *CALL C_DG10_1
DIA10B1A.115 DIA10B1A.116 C Get UM constants. DIA10B1A.117 *CALL C_A
DIA10B1A.118 *CALL C_G
DIA10B1A.119 *CALL C_R_CP
DIA10B1A.120 *CALL C_LHEAT
DIA10B1A.121 DIA10B1A.122 C*L EXTERNAL SUBROUTINES CALLED ------------------------------------ DIA10B1A.123 EXTERNAL COPYDIAG_3D DIA10B1A.124 C*-------------------------------------------------------------------- DIA10B1A.125 DIA10B1A.126 C P_EXNERC contains statement function P_EXNER_C DIA10B1A.127 *CALL P_EXNERC
DIA10B1A.128 DIA10B1A.129 C Comdeck C_DG10_2 initilaises local variables defined in C_DG10_1 DIA10B1A.130 *CALL C_DG10_2
DIA10B1A.131 DIA10B1A.132 CL-------------------------------------------------------------------- DIA10B1A.133 CL MAXIMUM VECTOR LENGTH ASSUMED IS P_FIELD DIA10B1A.134 CL-------------------------------------------------------------------- DIA10B1A.135 FIRST_U=FIRST_FLD_PT GPB1F403.1057 FIRST_P=FIRST_FLD_PT GPB1F403.1058 LAST_U = LAST_U_FLD_PT GPB1F403.1059 LAST_P = LAST_P_FLD_PT GPB1F403.1060 DIA10B1A.136 CL ------------------------------------------------------------------- DIA10B1A.137 CL SECTION 1. DIAGNOSTICS INVOLVING MEAN U OVER ADJUSTMENT STEP. DIA10B1A.138 CL ------------------------------------------------------------------- DIA10B1A.139 DIA10B1A.140 EARTH_RADIUS_INVERSE = 1./A DIA10B1A.141 RECIP_G = 1./G DIA10B1A.142 FACTOR=1.0e-6 ARS1F304.42 DIA10B1A.143 C -------------------------------------------------------------------- DIA10B1A.144 CL SECTION 1.1 ITEM 215 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.145 CL * U DIA10B1A.146 C -------------------------------------------------------------------- DIA10B1A.147 DIA10B1A.148 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.149 IF (L_UADJ_U_DP) THEN DIA10B1A.150 DO 110 K=1,P_LEVELS DIA10B1A.151 K1 = (K-1)*U_FIELD DIA10B1A.152 DO I=FIRST_U,LAST_U GPB1F403.1061 FIELD(K1+I) = -U(I,K)*U_ADJ(I,K)*EARTH_RADIUS_INVERSE*FACTOR ARS1F402.12 END DO DIA10B1A.155 110 CONTINUE DIA10B1A.156 DIA10B1A.157 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_U_DP),FIELD,FIRST_U, ARS1F304.43 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.44 & STLIST(1,INDEX_UADJ_U_DP),LEN_STLIST, DIA10B1A.160 & STASH_LEVELS, DIA10B1A.161 & NUM_STASH_LEVELS+1, GPB1F403.1062 & im_ident,10,215, GPB1F403.1063 *CALL ARGPPX
GPB1F403.1064 & ICODE,CMESSAGE) GPB1F403.1065 IF(ICODE.GT.0) THEN DIA10B1A.163 RETURN DIA10B1A.164 END IF DIA10B1A.165 END IF DIA10B1A.166 DIA10B1A.167 C -------------------------------------------------------------------- DIA10B1A.168 CL SECTION 1.2 ITEM 217 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.169 CL * V DIA10B1A.170 C -------------------------------------------------------------------- DIA10B1A.171 DIA10B1A.172 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.173 IF (L_UADJ_V_DP) THEN DIA10B1A.174 DO 120 K=1,P_LEVELS DIA10B1A.175 K1 = (K-1)*U_FIELD DIA10B1A.176 DO I=FIRST_U,LAST_U GPB1F403.1066 FIELD(K1+I) = -V(I,K)*U_ADJ(I,K)*EARTH_RADIUS_INVERSE*FACTOR ARS1F402.13 END DO DIA10B1A.179 120 CONTINUE DIA10B1A.180 DIA10B1A.181 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_V_DP),FIELD,FIRST_U, ARS1F304.45 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.46 & STLIST(1,INDEX_UADJ_V_DP),LEN_STLIST, DIA10B1A.184 & STASH_LEVELS, DIA10B1A.185 & NUM_STASH_LEVELS+1, GPB1F403.1067 & im_ident,10,217, GPB1F403.1068 *CALL ARGPPX
GPB1F403.1069 & ICODE,CMESSAGE) GPB1F403.1070 IF(ICODE.GT.0) THEN DIA10B1A.187 RETURN DIA10B1A.188 END IF DIA10B1A.189 END IF DIA10B1A.190 DIA10B1A.191 C CHECK TO SEE IF ANY U DIAGNOSTICS REQUESTED WHICH NEED U_ADJ TO DIA10B1A.192 C BE INTERPOLATED. DIA10B1A.193 DIA10B1A.194 IF(L_UADJ_TL_DP.OR.L_UADJ_QT_DP.OR. DIA10B1A.195 & L_UADJ_GEOPOT_DP.OR.L_UADJ_ENERGY_DP) THEN DIA10B1A.196 DIA10B1A.197 C -------------------------------------------------------------------- DIA10B1A.198 CL SECTION 1.3 REMOVE RADIUS OF EARTH FROM U FIELD AND DIA10B1A.199 CL INTERPOLATE TO C-GRID U POINTS. DIA10B1A.200 C -------------------------------------------------------------------- DIA10B1A.201 DIA10B1A.202 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.203 DO 130 K=1,P_LEVELS DIA10B1A.204 K1 = (K-1)*P_FIELD DIA10B1A.205 DO I=START_POINT_NO_HALO,END_P_POINT_NO_HALO GPB1F403.1071 VELOCITY(K1+I) = -.5*(U_ADJ(I,K) + U_ADJ(I-ROW_LENGTH,K)) DIA10B1A.207 & *EARTH_RADIUS_INVERSE DIA10B1A.208 END DO DIA10B1A.209 C SET POLAR VALUES EQUAL TO VALUE ON ADJACENT ROW. DIA10B1A.210 DIA10B1A.211 *IF DEF,MPP GPB1F403.1072 IF (at_top_of_LPG) THEN GPB1F403.1073 *ENDIF GPB1F403.1074 DO I=TOP_ROW_START,TOP_ROW_START+ROW_LENGTH-1 GPB1F403.1075 VELOCITY(K1+I) = -U_ADJ(I,K)*EARTH_RADIUS_INVERSE GPB1F403.1076 ENDDO GPB1F403.1077 *IF DEF,MPP GPB1F403.1078 ENDIF GPB1F403.1079 GPB1F403.1080 IF (at_base_of_LPG) THEN GPB1F403.1081 *ENDIF GPB1F403.1082 DO I=P_BOT_ROW_START,P_BOT_ROW_START+ROW_LENGTH-1 GPB1F403.1083 VELOCITY(K1+I) = -U_ADJ(I-ROW_LENGTH,K)* GPB1F403.1084 & EARTH_RADIUS_INVERSE GPB1F403.1085 ENDDO GPB1F403.1086 *IF DEF,MPP GPB1F403.1087 ENDIF GPB1F403.1088 *ENDIF GPB1F403.1089 130 CONTINUE DIA10B1A.217 DIA10B1A.218 C -------------------------------------------------------------------- DIA10B1A.219 CL SECTION 1.4 ITEM 211 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.220 CL * LIQUID WATER TEMPERATURE. DIA10B1A.221 C -------------------------------------------------------------------- DIA10B1A.222 DIA10B1A.223 IF (L_UADJ_TL_DP) THEN DIA10B1A.224 DO 140 K=1,P_LEVELS DIA10B1A.225 K1 = (K-1)*P_FIELD DIA10B1A.226 DO I=FIRST_P,LAST_P-1 GPB1F403.1090 DIA10B1A.228 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.229 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.230 P_EXNER_FULL = P_EXNER_C DIA10B1A.231 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.232 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.47 DIA10B1A.234 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1) DIA10B1A.235 PK = AKH(K) + BKH(K) *PSTAR(I+1) DIA10B1A.236 P_EXNER_FULL = P_EXNER_C DIA10B1A.237 & (P_EXNER(I+1,K+1),P_EXNER(I+1,K),PKP1,PK,KAPPA) DIA10B1A.238 TEMPL_IP1 = THETAL(I+1,K) * P_EXNER_FULL ARS1F304.48 DIA10B1A.240 FIELD(K1+I) = VELOCITY(K1+I) * 0.5 * (TEMPL_I + TEMPL_IP1) DIA10B1A.241 & *FACTOR ARS1F402.14 DIA10B1A.242 END DO DIA10B1A.243 *IF -DEF,MPP GPB1F403.1091 C RE-CALCULATE END POINTS DIA10B1A.244 DO I=FIRST_P+LAST_ROW_PT-1,LAST_P,ROW_LENGTH GPB1F403.1092 DIA10B1A.246 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.247 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.248 P_EXNER_FULL = P_EXNER_C DIA10B1A.249 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.250 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.49 DIA10B1A.252 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1-ROW_LENGTH) DIA10B1A.253 PK = AKH(K) + BKH(K) *PSTAR(I+1-ROW_LENGTH) DIA10B1A.254 P_EXNER_FULL = P_EXNER_C DIA10B1A.255 & (P_EXNER(I+1-ROW_LENGTH,K+1),P_EXNER(I+1-ROW_LENGTH,K), DIA10B1A.256 & PKP1,PK,KAPPA) DIA10B1A.257 TEMPL_IP1 = THETAL(I+1-ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.50 DIA10B1A.259 FIELD(K1+I) = VELOCITY(K1+I) * 0.5 * (TEMPL_I + TEMPL_IP1) DIA10B1A.260 & *FACTOR ARS1F402.15 DIA10B1A.261 END DO DIA10B1A.262 *ELSE GPB1F403.1093 ! Set last point of field (halo) to a valid number GPB1F403.1094 FIELD(K1+LAST_P)=FIELD(K1+LAST_P-1) GPB1F403.1095 *ENDIF GPB1F403.1096 140 CONTINUE DIA10B1A.263 DIA10B1A.264 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_TL_DP),FIELD,FIRST_P, ARS1F304.51 & LAST_P,P_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.52 & STLIST(1,INDEX_UADJ_TL_DP),LEN_STLIST, DIA10B1A.267 & STASH_LEVELS, DIA10B1A.268 & NUM_STASH_LEVELS+1, GPB1F403.1097 & im_ident,10,211, GPB1F403.1098 *CALL ARGPPX
GPB1F403.1099 & ICODE,CMESSAGE) GPB1F403.1100 IF(ICODE.GT.0) THEN DIA10B1A.270 RETURN DIA10B1A.271 END IF DIA10B1A.272 END IF DIA10B1A.273 DIA10B1A.274 C -------------------------------------------------------------------- DIA10B1A.275 CL SECTION 1.5 ITEM 213 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.276 CL * TOTAL WATER. DIA10B1A.277 C -------------------------------------------------------------------- DIA10B1A.278 DIA10B1A.279 IF (L_UADJ_QT_DP) THEN DIA10B1A.280 DO 150 K=1,Q_LEVELS DIA10B1A.281 K1 = (K-1)*P_FIELD DIA10B1A.282 DO I=FIRST_P,LAST_P-1 GPB1F403.1101 FIELD(K1+I) = VELOCITY(K1+I)*.5*(QT(I,K)+QT(I+1,K)) DIA10B1A.284 END DO DIA10B1A.285 *IF -DEF,MPP GPB1F403.1102 C RE-CALCULATE END POINTS DIA10B1A.286 DO I=FIRST_P+LAST_ROW_PT-1,LAST_P,ROW_LENGTH GPB1F403.1103 FIELD(K1+I) = VELOCITY(K1+I)*.5* DIA10B1A.288 & (QT(I,K)+QT(I+1-ROW_LENGTH,K)) DIA10B1A.289 END DO DIA10B1A.290 *ELSE GPB1F403.1104 ! Set last point of field (halo) to a valid number GPB1F403.1105 FIELD(K1+LAST_P)=FIELD(K1+LAST_P-1) GPB1F403.1106 *ENDIF GPB1F403.1107 150 CONTINUE DIA10B1A.291 DIA10B1A.292 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_QT_DP),FIELD,FIRST_P, ARS1F304.53 & LAST_P,P_FIELD,ROW_LENGTH,Q_LEVELS, ARS1F304.54 & STLIST(1,INDEX_UADJ_QT_DP),LEN_STLIST, DIA10B1A.295 & STASH_LEVELS, DIA10B1A.296 & NUM_STASH_LEVELS+1, GPB1F403.1108 & im_ident,10,213, GPB1F403.1109 *CALL ARGPPX
GPB1F403.1110 & ICODE,CMESSAGE) GPB1F403.1111 IF(ICODE.GT.0) THEN DIA10B1A.298 RETURN DIA10B1A.299 END IF DIA10B1A.300 END IF DIA10B1A.301 DIA10B1A.302 C -------------------------------------------------------------------- DIA10B1A.303 CL SECTION 1.6 ITEM 219 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.304 CL * GEOPOTENTIAL DIA10B1A.305 C -------------------------------------------------------------------- DIA10B1A.306 DIA10B1A.307 IF (L_UADJ_GEOPOT_DP) THEN DIA10B1A.308 DO 160 K=1,P_LEVELS DIA10B1A.309 K1 = (K-1)*P_FIELD DIA10B1A.310 DO I=FIRST_P,LAST_P-1 GPB1F403.1112 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.55 & (STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.313 & STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I)) DIA10B1A.314 END DO DIA10B1A.315 *IF -DEF,MPP GPB1F403.1113 C RE-CALCULATE END POINTS DIA10B1A.316 DO I=FIRST_P+LAST_ROW_PT-1,LAST_P,ROW_LENGTH GPB1F403.1114 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.56 & (STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.319 & STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-ROW_LENGTH)) DIA10B1A.320 END DO DIA10B1A.321 *ELSE GPB1F403.1115 ! Set last point of field (halo) to a valid number GPB1F403.1116 FIELD(K1+LAST_P)=FIELD(K1+LAST_P-1) GPB1F403.1117 *ENDIF GPB1F403.1118 160 CONTINUE DIA10B1A.322 DIA10B1A.323 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_GEOPOT_DP),FIELD, DIA10B1A.324 & FIRST_P, ARS1F304.57 & LAST_P,P_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.58 & STLIST(1,INDEX_UADJ_GEOPOT_DP),LEN_STLIST, DIA10B1A.327 & STASH_LEVELS, DIA10B1A.328 & NUM_STASH_LEVELS+1, GPB1F403.1119 & im_ident,10,219, GPB1F403.1120 *CALL ARGPPX
GPB1F403.1121 & ICODE,CMESSAGE) GPB1F403.1122 IF(ICODE.GT.0) THEN DIA10B1A.330 RETURN DIA10B1A.331 END IF DIA10B1A.332 END IF DIA10B1A.333 DIA10B1A.334 C -------------------------------------------------------------------- DIA10B1A.335 CL SECTION 1.7 ITEM 221 MEAN PRESSURE WEIGHTED U OVER ADJUSTMENT STEPS DIA10B1A.336 CL * MOIST STATIC ENERGY. DIA10B1A.337 C -------------------------------------------------------------------- DIA10B1A.338 DIA10B1A.339 IF (L_UADJ_ENERGY_DP) THEN DIA10B1A.340 DO 170 K=1,Q_LEVELS DIA10B1A.341 K1 = (K-1)*P_FIELD DIA10B1A.342 DO I=FIRST_P,LAST_P-1 GPB1F403.1123 DIA10B1A.344 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.345 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.346 P_EXNER_FULL = P_EXNER_C DIA10B1A.347 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.348 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.59 DIA10B1A.350 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1) DIA10B1A.351 PK = AKH(K) + BKH(K) *PSTAR(I+1) DIA10B1A.352 P_EXNER_FULL = P_EXNER_C DIA10B1A.353 & (P_EXNER(I+1,K+1),P_EXNER(I+1,K),PKP1,PK,KAPPA) DIA10B1A.354 TEMPL_IP1 = THETAL(I+1,K) * P_EXNER_FULL ARS1F304.60 DIA10B1A.356 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.61 & (STASHWORK(K1+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.358 & STASHWORK(K1+LOC_GEOPOTENTIAL+I)+CP* DIA10B1A.359 & (TEMPL_I + TEMPL_IP1) DIA10B1A.360 & +LC*(QT(I,K)+QT(I+1,K))) DIA10B1A.361 DIA10B1A.362 END DO DIA10B1A.363 *IF -DEF,MPP GPB1F403.1124 C RE-CALCULATE END POINTS DIA10B1A.364 DO I=FIRST_P+LAST_ROW_PT-1,LAST_P,ROW_LENGTH GPB1F403.1125 DIA10B1A.366 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.367 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.368 P_EXNER_FULL = P_EXNER_C DIA10B1A.369 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.370 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.62 DIA10B1A.372 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1-ROW_LENGTH) DIA10B1A.373 PK = AKH(K) + BKH(K) *PSTAR(I+1-ROW_LENGTH) DIA10B1A.374 P_EXNER_FULL = P_EXNER_C DIA10B1A.375 & (P_EXNER(I+1-ROW_LENGTH,K+1),P_EXNER(I+1-ROW_LENGTH,K), DIA10B1A.376 & PKP1,PK,KAPPA) DIA10B1A.377 TEMPL_IP1 = THETAL(I+1-ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.63 DIA10B1A.379 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.64 & (STASHWORK(K1+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.381 & STASHWORK(K1+LOC_GEOPOTENTIAL+I-ROW_LENGTH)+CP* ARS1F304.65 & (TEMPL_I + TEMPL_IP1) DIA10B1A.383 & +LC*(QT(I,K)+QT(I+1-ROW_LENGTH,K))) DIA10B1A.384 END DO DIA10B1A.385 *ELSE GPB1F403.1126 ! Set last point of field (halo) to a valid number GPB1F403.1127 FIELD(K1+LAST_P)=FIELD(K1+LAST_P-1) GPB1F403.1128 *ENDIF GPB1F403.1129 170 CONTINUE DIA10B1A.386 DIA10B1A.387 DO 175 K= Q_LEVELS+1,P_LEVELS DIA10B1A.388 K1 = (K-1)*P_FIELD DIA10B1A.389 DO I=FIRST_P,LAST_P-1 GPB1F403.1130 DIA10B1A.391 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.392 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.393 P_EXNER_FULL = P_EXNER_C DIA10B1A.394 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.395 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.66 DIA10B1A.397 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1) DIA10B1A.398 PK = AKH(K) + BKH(K) *PSTAR(I+1) DIA10B1A.399 P_EXNER_FULL = P_EXNER_C DIA10B1A.400 & (P_EXNER(I+1,K+1),P_EXNER(I+1,K),PKP1,PK,KAPPA) DIA10B1A.401 TEMPL_IP1 = THETAL(I+1,K) * P_EXNER_FULL ARS1F304.67 DIA10B1A.403 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.68 & (STASHWORK(K1+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.405 & STASHWORK(K1+LOC_GEOPOTENTIAL+I)+CP* DIA10B1A.406 & (TEMPL_I + TEMPL_IP1) ) DIA10B1A.407 END DO DIA10B1A.408 *IF -DEF,MPP GPB1F403.1131 C RE-CALCULATE END POINTS DIA10B1A.409 DO I=FIRST_P+LAST_ROW_PT-1,LAST_P,ROW_LENGTH GPB1F403.1132 DIA10B1A.411 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.412 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.413 P_EXNER_FULL = P_EXNER_C DIA10B1A.414 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.415 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.69 DIA10B1A.417 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+1-ROW_LENGTH) DIA10B1A.418 PK = AKH(K) + BKH(K) *PSTAR(I+1-ROW_LENGTH) DIA10B1A.419 P_EXNER_FULL = P_EXNER_C DIA10B1A.420 & (P_EXNER(I+1-ROW_LENGTH,K+1),P_EXNER(I+1-ROW_LENGTH,K), DIA10B1A.421 & PKP1,PK,KAPPA) DIA10B1A.422 TEMPL_IP1 = THETAL(I+1-ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.70 DIA10B1A.424 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.71 & (STASHWORK(K1+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.426 & STASHWORK(K1+LOC_GEOPOTENTIAL+I-ROW_LENGTH)+CP* ARS1F304.72 & (TEMPL_I + TEMPL_IP1) ) DIA10B1A.428 DIA10B1A.429 END DO DIA10B1A.430 *ELSE GPB1F403.1133 ! Set last point of field (halo) to a valid number GPB1F403.1134 FIELD(K1+LAST_P)=FIELD(K1+LAST_P-1) GPB1F403.1135 *ENDIF GPB1F403.1136 175 CONTINUE DIA10B1A.431 DIA10B1A.432 CALL COPYDIAG_3D
(STASHWORK(LOC_UADJ_ENERGY_DP),FIELD, DIA10B1A.433 & FIRST_P, ARS1F304.73 & LAST_P,P_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.74 & STLIST(1,INDEX_UADJ_ENERGY_DP),LEN_STLIST, DIA10B1A.436 & STASH_LEVELS, DIA10B1A.437 & NUM_STASH_LEVELS+1, GPB1F403.1137 & im_ident,10,221, GPB1F403.1138 *CALL ARGPPX
GPB1F403.1139 & ICODE,CMESSAGE) GPB1F403.1140 IF(ICODE.GT.0) THEN DIA10B1A.439 RETURN DIA10B1A.440 END IF DIA10B1A.441 END IF DIA10B1A.442 DIA10B1A.443 C END IF FOR U DIAGNOSTICS. DIA10B1A.444 END IF DIA10B1A.445 DIA10B1A.446 CL ------------------------------------------------------------------- DIA10B1A.447 CL SECTION 2. DIAGNOSTICS INVOLVING MEAN V OVER ADJUSTMENT STEP. DIA10B1A.448 CL ------------------------------------------------------------------- DIA10B1A.449 DIA10B1A.450 C -------------------------------------------------------------------- DIA10B1A.451 CL SECTION 2.1 ITEM 216 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.452 CL * U DIA10B1A.453 C -------------------------------------------------------------------- DIA10B1A.454 DIA10B1A.455 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.456 IF (L_VADJ_U_DP) THEN DIA10B1A.457 DO 210 K=1,P_LEVELS DIA10B1A.458 K1 = (K-1)*U_FIELD DIA10B1A.459 DO I=FIRST_U,LAST_U GPB1F403.1141 FIELD(K1+I)= -U(I,K)*V_ADJ(I,K)*SEC_U_LATITUDE(I) DIA10B1A.461 & *EARTH_RADIUS_INVERSE*FACTOR ARS1F402.16 END DO DIA10B1A.463 210 CONTINUE DIA10B1A.464 DIA10B1A.465 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_U_DP),FIELD,FIRST_U, ARS1F304.75 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.76 & STLIST(1,INDEX_VADJ_U_DP),LEN_STLIST, DIA10B1A.468 & STASH_LEVELS, DIA10B1A.469 & NUM_STASH_LEVELS+1, GPB1F403.1142 & im_ident,10,216, GPB1F403.1143 *CALL ARGPPX
GPB1F403.1144 & ICODE,CMESSAGE) GPB1F403.1145 IF(ICODE.GT.0) THEN DIA10B1A.471 RETURN DIA10B1A.472 END IF DIA10B1A.473 END IF DIA10B1A.474 DIA10B1A.475 C -------------------------------------------------------------------- DIA10B1A.476 CL SECTION 2.2 ITEM 218 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.477 CL * V DIA10B1A.478 C -------------------------------------------------------------------- DIA10B1A.479 DIA10B1A.480 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.481 IF (L_VADJ_V_DP) THEN DIA10B1A.482 DO 220 K=1,P_LEVELS DIA10B1A.483 K1 = (K-1)*U_FIELD DIA10B1A.484 DO I=FIRST_U,LAST_U GPB1F403.1146 FIELD(K1+I)= -V(I,K)*V_ADJ(I,K)*SEC_U_LATITUDE(I) DIA10B1A.486 & *EARTH_RADIUS_INVERSE*FACTOR ARS1F402.17 END DO DIA10B1A.488 220 CONTINUE DIA10B1A.489 DIA10B1A.490 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_V_DP),FIELD,FIRST_U, ARS1F304.77 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.78 & STLIST(1,INDEX_VADJ_V_DP),LEN_STLIST, DIA10B1A.493 & STASH_LEVELS, DIA10B1A.494 & NUM_STASH_LEVELS+1, GPB1F403.1147 & im_ident,10,218, GPB1F403.1148 *CALL ARGPPX
GPB1F403.1149 & ICODE,CMESSAGE) GPB1F403.1150 IF(ICODE.GT.0) THEN DIA10B1A.496 RETURN DIA10B1A.497 END IF DIA10B1A.498 END IF DIA10B1A.499 DIA10B1A.500 C CHECK TO SEE IF ANY V DIAGNOSTICS REQUESTED WHICH NEED V_ADJ TO DIA10B1A.501 C BE INTERPOLATED. DIA10B1A.502 DIA10B1A.503 IF(L_VADJ_TL_DP.OR.L_VADJ_QT_DP.OR. DIA10B1A.504 & L_VADJ_GEOPOT_DP.OR.L_VADJ_ENERGY_DP) THEN DIA10B1A.505 DIA10B1A.506 C -------------------------------------------------------------------- DIA10B1A.507 CL SECTION 2.3 REMOVE RADIUS OF EARTH * COSINE OF LATITUDE FROM V FIELD DIA10B1A.508 CL AND INTERPOLATE TO C-GRID V POINTS. DIA10B1A.509 C -------------------------------------------------------------------- DIA10B1A.510 DIA10B1A.511 C MINUS SIGN SETS DELTA P TO POSITIVE VALUE. DIA10B1A.512 DO 230 K=1,P_LEVELS DIA10B1A.513 K1 = (K-1)*U_FIELD DIA10B1A.514 DO I=FIRST_U+1,LAST_U GPB1F403.1151 VELOCITY(K1+I)=-.5*(V_ADJ(I,K)*SEC_U_LATITUDE(I)+ DIA10B1A.516 & V_ADJ(I-1,K)*SEC_U_LATITUDE(I-1)) DIA10B1A.517 & *EARTH_RADIUS_INVERSE DIA10B1A.518 END DO DIA10B1A.519 *IF -DEF,MPP GPB1F403.1152 C RE-CALCULATE END POINTS. DIA10B1A.520 DIA10B1A.521 DO I= FIRST_U+FIRST_ROW_PT-1,LAST_U,ROW_LENGTH GPB1F403.1153 VELOCITY(K1+I)=-.5*(V_ADJ(I,K)*SEC_U_LATITUDE(I)+ DIA10B1A.523 & V_ADJ(I+ROW_LENGTH-1,K)* DIA10B1A.524 & SEC_U_LATITUDE(I+ROW_LENGTH-1)) DIA10B1A.525 & *EARTH_RADIUS_INVERSE DIA10B1A.526 END DO DIA10B1A.527 *ELSE GPB1F403.1154 ! Set first point of field (halo) to a valid number GPB1F403.1155 VELOCITY(K1+FIRST_U)=VELOCITY(K1+FIRST_U+1) GPB1F403.1156 *ENDIF GPB1F403.1157 230 CONTINUE DIA10B1A.528 DIA10B1A.529 DIA10B1A.530 C -------------------------------------------------------------------- DIA10B1A.531 CL SECTION 2.4 ITEM 212 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.532 CL * LIQUID WATER TEMPERATURE. DIA10B1A.533 C -------------------------------------------------------------------- DIA10B1A.534 DIA10B1A.535 IF (L_VADJ_TL_DP) THEN DIA10B1A.536 DO 240 K=1,P_LEVELS DIA10B1A.537 K1 = (K-1)*U_FIELD DIA10B1A.538 DO I=FIRST_U,LAST_U GPB1F403.1158 DIA10B1A.540 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.541 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.542 P_EXNER_FULL = P_EXNER_C DIA10B1A.543 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.544 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.79 DIA10B1A.546 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+ROW_LENGTH) DIA10B1A.547 PK = AKH(K) + BKH(K) *PSTAR(I+ROW_LENGTH) DIA10B1A.548 P_EXNER_FULL = P_EXNER_C DIA10B1A.549 & (P_EXNER(I+ROW_LENGTH,K+1),P_EXNER(I+ROW_LENGTH,K), DIA10B1A.550 & PKP1,PK,KAPPA) DIA10B1A.551 TEMPL_IP1 = THETAL(I+ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.80 DIA10B1A.553 DIA10B1A.554 FIELD(K1+I) = VELOCITY(K1+I) * 0.5 * (TEMPL_I+TEMPL_IP1) DIA10B1A.555 & *FACTOR ARS1F402.18 DIA10B1A.556 END DO DIA10B1A.557 240 CONTINUE DIA10B1A.558 DIA10B1A.559 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_TL_DP),FIELD,FIRST_U, ARS1F304.81 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.82 & STLIST(1,INDEX_VADJ_TL_DP),LEN_STLIST, DIA10B1A.562 & STASH_LEVELS, DIA10B1A.563 & NUM_STASH_LEVELS+1, GPB1F403.1159 & im_ident,10,212, GPB1F403.1160 *CALL ARGPPX
GPB1F403.1161 & ICODE,CMESSAGE) GPB1F403.1162 IF(ICODE.GT.0) THEN DIA10B1A.565 RETURN DIA10B1A.566 END IF DIA10B1A.567 END IF DIA10B1A.568 DIA10B1A.569 C -------------------------------------------------------------------- DIA10B1A.570 CL SECTION 2.5 ITEM 214 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.571 CL * TOTAL WATER. DIA10B1A.572 C -------------------------------------------------------------------- DIA10B1A.573 DIA10B1A.574 IF (L_VADJ_QT_DP) THEN DIA10B1A.575 DO 250 K=1,Q_LEVELS DIA10B1A.576 K1 = (K-1)*U_FIELD DIA10B1A.577 DO I=FIRST_U,LAST_U GPB1F403.1163 FIELD(K1+I) = VELOCITY(K1+I)*.5* DIA10B1A.579 & (QT(I,K)+QT(I+ROW_LENGTH,K)) DIA10B1A.580 END DO DIA10B1A.581 250 CONTINUE DIA10B1A.582 DIA10B1A.583 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_QT_DP),FIELD,FIRST_U, ARS1F304.83 & LAST_U,U_FIELD,ROW_LENGTH,Q_LEVELS, ARS1F304.84 & STLIST(1,INDEX_VADJ_QT_DP),LEN_STLIST, DIA10B1A.586 & STASH_LEVELS, DIA10B1A.587 & NUM_STASH_LEVELS+1, GPB1F403.1164 & im_ident,10,214, GPB1F403.1165 *CALL ARGPPX
GPB1F403.1166 & ICODE,CMESSAGE) GPB1F403.1167 IF(ICODE.GT.0) THEN DIA10B1A.589 RETURN DIA10B1A.590 END IF DIA10B1A.591 END IF DIA10B1A.592 DIA10B1A.593 C -------------------------------------------------------------------- DIA10B1A.594 CL SECTION 2.6 ITEM 220 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.595 CL * GEOPOTENTIAL HEIGHT DIA10B1A.596 C -------------------------------------------------------------------- DIA10B1A.597 DIA10B1A.598 IF (L_VADJ_GEOPOT_DP) THEN DIA10B1A.599 DO 260 K=1,P_LEVELS DIA10B1A.600 K1 = (K-1)*U_FIELD DIA10B1A.601 DO I=FIRST_U,LAST_U GPB1F403.1168 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.85 & (STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1)+ DIA10B1A.604 & STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1+ROW_LENGTH)) DIA10B1A.605 END DO DIA10B1A.606 260 CONTINUE DIA10B1A.607 DIA10B1A.608 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_GEOPOT_DP),FIELD, DIA10B1A.609 & FIRST_U, ARS1F304.86 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.87 & STLIST(1,INDEX_VADJ_GEOPOT_DP),LEN_STLIST, DIA10B1A.612 & STASH_LEVELS, DIA10B1A.613 & NUM_STASH_LEVELS+1, GPB1F403.1169 & im_ident,10,220, GPB1F403.1170 *CALL ARGPPX
GPB1F403.1171 & ICODE,CMESSAGE) GPB1F403.1172 IF(ICODE.GT.0) THEN DIA10B1A.615 RETURN DIA10B1A.616 END IF DIA10B1A.617 END IF DIA10B1A.618 DIA10B1A.619 C -------------------------------------------------------------------- DIA10B1A.620 CL SECTION 2.7 ITEM 222 MEAN PRESSURE WEIGHTED V OVER ADJUSTMENT STEPS DIA10B1A.621 CL * MOIST STATIC ENERGY. DIA10B1A.622 C -------------------------------------------------------------------- DIA10B1A.623 DIA10B1A.624 IF (L_VADJ_ENERGY_DP) THEN DIA10B1A.625 DO 270 K=1,Q_LEVELS DIA10B1A.626 K1 = (K-1)*U_FIELD DIA10B1A.627 DO I=FIRST_U,LAST_U GPB1F403.1173 DIA10B1A.629 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.630 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.631 P_EXNER_FULL = P_EXNER_C DIA10B1A.632 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.633 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.88 DIA10B1A.635 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+ROW_LENGTH) DIA10B1A.636 PK = AKH(K) + BKH(K) *PSTAR(I+ROW_LENGTH) DIA10B1A.637 P_EXNER_FULL = P_EXNER_C DIA10B1A.638 & (P_EXNER(I+ROW_LENGTH,K+1),P_EXNER(I+ROW_LENGTH,K), DIA10B1A.639 & PKP1,PK,KAPPA) DIA10B1A.640 TEMPL_IP1 = THETAL(I+ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.89 DIA10B1A.642 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.90 & (STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1)+ ARS1F304.91 & STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1+ROW_LENGTH) ARS1F304.92 & +CP*(TEMPL_I + TEMPL_IP1) DIA10B1A.646 & +LC*(QT(I,K)+QT(I+ROW_LENGTH,K))) DIA10B1A.647 DIA10B1A.648 END DO DIA10B1A.649 270 CONTINUE DIA10B1A.650 DO 275 K= Q_LEVELS+1,P_LEVELS DIA10B1A.651 K1 = (K-1)*U_FIELD DIA10B1A.652 DO I=FIRST_U,LAST_U GPB1F403.1174 DIA10B1A.654 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I) DIA10B1A.655 PK = AKH(K) + BKH(K) *PSTAR(I) DIA10B1A.656 P_EXNER_FULL = P_EXNER_C DIA10B1A.657 & (P_EXNER(I,K+1),P_EXNER(I,K),PKP1,PK,KAPPA) DIA10B1A.658 TEMPL_I = THETAL(I,K) * P_EXNER_FULL ARS1F304.93 DIA10B1A.660 PKP1 = AKH(K+1) + BKH(K+1)*PSTAR(I+ROW_LENGTH) DIA10B1A.661 PK = AKH(K) + BKH(K) *PSTAR(I+ROW_LENGTH) DIA10B1A.662 P_EXNER_FULL = P_EXNER_C DIA10B1A.663 & (P_EXNER(I+ROW_LENGTH,K+1),P_EXNER(I+ROW_LENGTH,K), DIA10B1A.664 & PKP1,PK,KAPPA) DIA10B1A.665 TEMPL_IP1 = THETAL(I+ROW_LENGTH,K) * P_EXNER_FULL ARS1F304.94 DIA10B1A.667 FIELD(K1+I) = VELOCITY(K1+I)*.5*FACTOR* ARS1F304.95 & (STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1)+ ARS1F304.96 & STASHWORK((K-1)*P_FIELD+LOC_GEOPOTENTIAL+I-1+ROW_LENGTH) ARS1F304.97 & + CP * (TEMPL_I + TEMPL_I+1) ) DIA10B1A.671 DIA10B1A.672 END DO DIA10B1A.673 275 CONTINUE DIA10B1A.674 DIA10B1A.675 CALL COPYDIAG_3D
(STASHWORK(LOC_VADJ_ENERGY_DP),FIELD, DIA10B1A.676 & FIRST_U, ARS1F304.98 & LAST_U,U_FIELD,ROW_LENGTH,P_LEVELS, ARS1F304.99 & STLIST(1,INDEX_VADJ_ENERGY_DP),LEN_STLIST, DIA10B1A.679 & STASH_LEVELS, DIA10B1A.680 & NUM_STASH_LEVELS+1, GPB1F403.1175 & im_ident,10,222, GPB1F403.1176 *CALL ARGPPX
GPB1F403.1177 & ICODE,CMESSAGE) GPB1F403.1178 IF(ICODE.GT.0) THEN DIA10B1A.682 RETURN DIA10B1A.683 END IF DIA10B1A.684 END IF DIA10B1A.685 DIA10B1A.686 C END IF FOR V DIAGNOSTICS. DIA10B1A.687 DIA10B1A.688 END IF DIA10B1A.689 DIA10B1A.690 CL END OF ROUTINE DIAG10_B DIA10B1A.691 DIA10B1A.692 RETURN DIA10B1A.693 END DIA10B1A.694 *ENDIF DIA10B1A.695 *ENDIF AJC0F405.291