Changeset 164 for LMDZ.3.3/trunk
- Timestamp:
- Nov 17, 2000, 9:59:23 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ.3.3/trunk/libf/phylmd/conflx.F
r41 r164 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) 1042 1046 REAL prfl(klon), psfl(klon) 1043 1047 REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1) … … 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 1167 1173 c panache descendant pour eliminer la negativite 1168 1174 IF ((pmflxr(i,k+1)+pmflxs(i,k+1)).LT.0.0) THEN 1175 cjq write (*,*) 'total precip negative. rain ',pmflxr(i,k+1), 1176 cjq . 'snow ',pmflxs(i,k+1) 1169 1177 pdmfdp(i,k) = -pmflxr(i,k)-pmflxs(i,k)-pdmfup(i,k) 1170 1178 pmflxr(i,k+1) = 0.0 … … 1176 1184 ENDDO 1177 1185 c 1186 cjq The new variable is initialized here. 1187 cjq It contains the humidity which is fed to the downdraft 1188 cjq by evaporation of precipitation in the column below the base 1189 cjq of convection. 1190 cjq 1191 cjq In the former version, this term has been subtracted from precip 1192 cjq as well as the evaporation. 1193 cjq 1194 DO i = 1, klon 1195 maxpdmfdp(i)=0.0 1196 ENDDO 1197 DO k = ktopm2, klev 1198 DO i = 1, klon 1199 if (k.GE.kcbot(i)) then 1200 maxpdmfdp(i)=maxpdmfdp(i)+pdmfdp(i,k) 1201 endif 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),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
Note: See TracChangeset
for help on using the changeset viewer.