Ignore:
Timestamp:
Jun 20, 2001, 3:29:52 PM (23 years ago)
Author:
lmdzadmin
Message:

Merge de la physique avec la branche principale
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/branches/rel-LF/libf/phylmd/conflx.F

    r79 r230  
    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,klev)
    10421046      REAL prfl(klon), psfl(klon)
    10431047      REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)
    10441048      INTEGER  kcbot(klon), kctop(klon), ktype(klon)
    10451049      LOGICAL  ldland(klon), ldcum(klon)
    1046       INTEGER k, i
     1050      INTEGER k, kp, i
    10471051      REAL zcons1, zcons2, zcucov, ztmelp2
    10481052      REAL pdtime, zdp, zzp, zfac, zsnmlt, zrfl, zrnew
     
    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
     
    11761182      ENDDO
    11771183c
     1184cjq The new variable is initialized here.
     1185cjq It contains the humidity which is fed to the downdraft
     1186cjq by evaporation of precipitation in the column below the base
     1187cjq of convection.
     1188cjq
     1189cjq In the former version, this term has been subtracted from precip
     1190cjq as well as the evaporation.
     1191cjq     
     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
     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,k),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
     
    12071242            pdmfdp(i,k) = 0.0
    12081243            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)
    12101247      ENDIF
    12111248      ENDDO
Note: See TracChangeset for help on using the changeset viewer.