Changeset 164 for LMDZ.3.3/trunk


Ignore:
Timestamp:
Nov 17, 2000, 9:59:23 AM (24 years ago)
Author:
lmdz
Message:

Correction du bug sur les precip negatives. O.Boucher et J.Quaas
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/trunk/libf/phylmd/conflx.F

    r41 r164  
    103103      DO k = 1, klev+1
    104104      DO i = 1, klon
    105          pmflxr(i,k) = 0.0
    106          pmflxs(i,k) = 0.0
     105         zmflxr(i,k) = 0.0
     106         zmflxs(i,k) = 0.0
    107107      ENDDO
    108108      ENDDO
     
    981981      ENDDO
    982982c
     983      ldcum(1)=ldcum(1)
     984c
    983985      is = 0
    984986      DO i = 1, klon
     
    10391041      REAL plude(klon,klev)
    10401042      REAL pdmfup(klon,klev), pdpmel(klon,klev)
    1041       REAL pdmfdp(klon,klev)
     1043cjq The variable maxpdmfdp(klon) has been introduced by Olivier Boucher
     1044cjq 14/11/00 to fix the problem with the negative precipitation.     
     1045      REAL pdmfdp(klon,klev), maxpdmfdp(klon)
    10421046      REAL prfl(klon), psfl(klon)
    10431047      REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)
     
    11601164         ENDIF
    11611165         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)
    11631168         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)
    11651171         ENDIF
    11661172c        si la precipitation est negative, on ajuste le plux du
    11671173c        panache descendant pour eliminer la negativite
    11681174         IF ((pmflxr(i,k+1)+pmflxs(i,k+1)).LT.0.0) THEN
     1175cjq            write (*,*) 'total precip negative. rain ',pmflxr(i,k+1),
     1176cjq     .                  'snow ',pmflxs(i,k+1)
    11691177            pdmfdp(i,k) = -pmflxr(i,k)-pmflxs(i,k)-pdmfup(i,k)
    11701178            pmflxr(i,k+1) = 0.0
     
    11761184      ENDDO
    11771185c
     1186cjq The new variable is initialized here.
     1187cjq It contains the humidity which is fed to the downdraft
     1188cjq by evaporation of precipitation in the column below the base
     1189cjq of convection.
     1190cjq
     1191cjq In the former version, this term has been subtracted from precip
     1192cjq as well as the evaporation.
     1193cjq     
     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
     1204cjq End of initialization
     1205c     
    11781206      DO k = ktopm2, klev
    11791207      DO i = 1, klon
     
    11891217            zrfln=MAX(zrnew,0.)
    11901218            zdrfl=MIN(0.,zrfln-zrfl)
     1219cjq At least the amount of precipiation needed to feed the downdraft
     1220cjq with humidity below the base of convection has to be left and can't
     1221cjq 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))
     1224cjq End of insertion
     1225c           
    11911226            zdenom=1.0/MAX(1.0E-20,pmflxr(i,k)+pmflxs(i,k))
    11921227            IF (pten(i,k).GT.RTT) THEN
Note: See TracChangeset for help on using the changeset viewer.