Changeset 2466


Ignore:
Timestamp:
Mar 14, 2016, 5:56:37 PM (8 years ago)
Author:
fhourdin
Message:

Correction de la fonte des precipitations glacees. Jean-Yves Grandpeix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/fisrtilp.F90

    r2415 r2466  
    124124  REAL dzfice(klon)
    125125  REAL zsolid
     126!!!!
     127!  Variables pour Bergeron
     128  REAL zcp, coef1, DeltaT
     129  REAL zqpreci(klon), zqprecl(klon)
    126130  !
    127131  LOGICAL appel1er
     
    457461
    458462!CR ATTENTION: deplacement de la fonte de la glace
    459            zmelt = ((zt(i)-273.15)/(ztfondue-273.15))**2
     463!jyg : Bug !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! jyg
     464!!!        zmelt = ((zt(i)-273.15)/(ztfondue-273.15))**2  !!!!!!!!! jyg
     465!jyg : Bug !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! jyg
     466           zmelt = ((zt(i)-273.15)/(ztfondue-273.15))             ! jyg
    460467           zmelt = MIN(MAX(zmelt,0.),1.)
    461468           zrfl(i)=zrfl(i)+zmelt*zifl(i)
     
    907914              radliq(i,k) = radliq(i,k) + zoliq(i)/REAL(ninter+1)
    908915           ENDIF
    909         ENDDO
    910      ENDDO
    911      !
    912          IF (.NOT. ice_thermo) THEN
     916        ENDDO  ! i = 1,klon
     917     ENDDO     ! n = 1,ninter
     918     !
     919     IF (.NOT. ice_thermo) THEN
    913920       DO i = 1, klon
    914921         IF (rneb(i,k).GT.0.0) THEN
     
    919926       ENDDO
    920927     ELSE
     928!
     929!CR&JYG<
     930! On prend en compte l'effet Bergeron dans les flux de precipitation :
     931! Si T < 0 C, alors les precipitations liquides sont converties en glace, ce qui
     932! provoque un accroissement de temperature DeltaT. L'effet de DeltaT sur le condensat
     933! et les precipitations est grossierement pris en compte en linearisant les equations
     934! et en approximant le processus de precipitation liquide par un processus a seuil.
     935! On fait l'hypothese que le condensat nuageux n'est pas modifié dans cette opération.
     936! Le condensat precipitant liquide est supprime (dans la limite DeltaT<273-T).
     937! Le condensat precipitant solide est augmente.
     938! La vapeur d'eau est augmentee.
     939!
     940       IF ((iflag_bergeron .EQ. 2)) THEN
     941         DO i = 1, klon
     942           IF (rneb(i,k) .GT. 0.0) THEN
     943             zqpreci(i)=(zcond(i)-zoliq(i))*zfice(i)
     944             zqprecl(i)=(zcond(i)-zoliq(i))*(1.-zfice(i))
     945             zcp=RCPD*(1.0+RVTMP2*(zq(i)+zcond(i)))
     946             coef1 = RLMLT*zdqs(i)/RLVTT
     947             DeltaT = max( min( RTT-zt(i), RLMLT*zqprecl(i)/zcp/(1.+coef1) ) , 0.)
     948             zqpreci(i) = zqpreci(i) + zcp/RLMLT*DeltaT
     949             zqprecl(i) = max( zqprecl(i) - zcp/RLMLT*(1.+coef1)*DeltaT, 0. )
     950             zcond(i)   = max( zcond(i)   - zcp/RLVTT*zdqs(i)*DeltaT, 0. )
     951             zq(i)      = zq(i)      + zcp/RLVTT*zdqs(i)*DeltaT
     952             zt(i)      = zt(i)      + DeltaT
     953           ENDIF  ! rneb(i,k) .GT. 0.0
     954         ENDDO
     955         DO i = 1, klon
     956           IF (rneb(i,k).GT.0.0) THEN
     957             d_ql(i,k) = (1-zfice(i))*zoliq(i)
     958             d_qi(i,k) = zfice(i)*zoliq(i)
     959             zrfl(i) = zrfl(i)+ zqprecl(i) &
     960                 *(paprs(i,k)-paprs(i,k+1))/(RG*dtime)
     961             zifl(i) = zifl(i)+ zqpreci(i) &
     962                      *(paprs(i,k)-paprs(i,k+1))/(RG*dtime) 
     963           ENDIF                     
     964         ENDDO
     965!!
     966       ELSE  ! iflag_bergeron
     967!>CR&JYG
     968!!
    921969       DO i = 1, klon
    922970         IF (rneb(i,k).GT.0.0) THEN
     
    940988
    941989!CR : on prend en compte l'effet Bergeron dans les flux de precipitation
    942            if ((iflag_bergeron.eq.1).and.(zt(i).LT.273.15)) then
     990           IF ((iflag_bergeron .EQ. 1) .AND. (zt(i) .LT. 273.15)) THEN
    943991              zsolid = zrfl(i)
    944992              zifl(i) = zifl(i)+zrfl(i)
     
    946994              zt(i)=zt(i)+zsolid*(RG*dtime)/(paprs(i,k)-paprs(i,k+1)) &
    947995                      *(RLSTT-RLVTT)/RCPD/(1.0+RVTMP2*zq(i))
    948            endif
     996           ENDIF  ! (iflag_bergeron .EQ. 1) .AND. (zt(i) .LT. 273.15)
    949997!RC   
    950998
    951          ENDIF                      
     999         ENDIF ! rneb(i,k).GT.0.0
    9521000       ENDDO
    953      ENDIF
     1001
     1002       ENDIF  ! iflag_bergeron .EQ. 2
     1003     ENDIF  ! .NOT. ice_thermo
    9541004
    9551005!CR: la fonte est faite au debut
Note: See TracChangeset for help on using the changeset viewer.