Changeset 230 for LMDZ.3.3/branches/rel-LF/libf/phylmd/conflx.F
- Timestamp:
- Jun 20, 2001, 3:29:52 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/branches/rel-LF/libf/phylmd/conflx.F
r79 r230 103 103 DO k = 1, klev+1 104 104 DO i = 1, klon 105 pmflxr(i,k) = 0.0106 pmflxs(i,k) = 0.0105 zmflxr(i,k) = 0.0 106 zmflxs(i,k) = 0.0 107 107 ENDDO 108 108 ENDDO … … 981 981 ENDDO 982 982 c 983 ldcum(1)=ldcum(1) 984 c 983 985 is = 0 984 986 DO i = 1, klon … … 1039 1041 REAL plude(klon,klev) 1040 1042 REAL pdmfup(klon,klev), pdpmel(klon,klev) 1041 REAL pdmfdp(klon,klev) 1043 cjq The variable maxpdmfdp(klon) has been introduced by Olivier Boucher 1044 cjq 14/11/00 to fix the problem with the negative precipitation. 1045 REAL pdmfdp(klon,klev), maxpdmfdp(klon,klev) 1042 1046 REAL prfl(klon), psfl(klon) 1043 1047 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1) 1044 1048 INTEGER kcbot(klon), kctop(klon), ktype(klon) 1045 1049 LOGICAL ldland(klon), ldcum(klon) 1046 INTEGER k, i1050 INTEGER k, kp, i 1047 1051 REAL zcons1, zcons2, zcucov, ztmelp2 1048 1052 REAL pdtime, zdp, zzp, zfac, zsnmlt, zrfl, zrnew … … 1160 1164 ENDIF 1161 1165 IF (pten(i,k).GT.RTT) THEN 1162 pmflxr(i,k+1)=pmflxr(i,k)+pdmfup(i,k)+pdmfdp(i,k)+pdpmel(i,k) 1166 pmflxr(i,k+1)=pmflxr(i,k)+pdmfup(i,k)+pdmfdp(i,k)+pdpmel(i,k) 1167 pmflxs(i,k+1)=pmflxs(i,k)-pdpmel(i,k) 1163 1168 ELSE 1164 pmflxs(i,k+1)=pmflxs(i,k)+pdmfup(i,k)+pdmfdp(i,k)-pdpmel(i,k) 1169 pmflxs(i,k+1)=pmflxs(i,k)+pdmfup(i,k)+pdmfdp(i,k) 1170 pmflxr(i,k+1)=pmflxr(i,k) 1165 1171 ENDIF 1166 1172 c si la precipitation est negative, on ajuste le plux du … … 1176 1182 ENDDO 1177 1183 c 1184 cjq The new variable is initialized here. 1185 cjq It contains the humidity which is fed to the downdraft 1186 cjq by evaporation of precipitation in the column below the base 1187 cjq of convection. 1188 cjq 1189 cjq In the former version, this term has been subtracted from precip 1190 cjq as well as the evaporation. 1191 cjq 1192 DO k = 1, klev 1193 DO i = 1, klon 1194 maxpdmfdp(i,k)=0.0 1195 ENDDO 1196 ENDDO 1197 DO k = 1, klev 1198 DO kp = k, klev 1199 DO i = 1, klon 1200 maxpdmfdp(i,k)=maxpdmfdp(i,k)+pdmfdp(i,kp) 1201 ENDDO 1202 ENDDO 1203 ENDDO 1204 cjq End of initialization 1205 c 1178 1206 DO k = ktopm2, klev 1179 1207 DO i = 1, klon … … 1189 1217 zrfln=MAX(zrnew,0.) 1190 1218 zdrfl=MIN(0.,zrfln-zrfl) 1219 cjq At least the amount of precipiation needed to feed the downdraft 1220 cjq with humidity below the base of convection has to be left and can't 1221 cjq be evaporated (surely the evaporation can't be positive): 1222 zdrfl=MAX(zdrfl, 1223 . MIN(-pmflxr(i,k)-pmflxs(i,k)-maxpdmfdp(i,k),0.0)) 1224 cjq End of insertion 1225 c 1191 1226 zdenom=1.0/MAX(1.0E-20,pmflxr(i,k)+pmflxs(i,k)) 1192 1227 IF (pten(i,k).GT.RTT) THEN … … 1207 1242 pdmfdp(i,k) = 0.0 1208 1243 pdpmel(i,k) = 0.0 1209 ENDIF 1244 ENDIF 1245 if (pmflxr(i,k) + pmflxs(i,k).lt.-1.e-26) 1246 . write(*,*) 'precip. < 1e-16 ',pmflxr(i,k) + pmflxs(i,k) 1210 1247 ENDIF 1211 1248 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.