Ignore:
Timestamp:
Jun 11, 2014, 3:46:46 PM (10 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes r1997:2055 into testing branch

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/phylmd/fisrtilp.F90

    r1910 r2056  
    1313  !
    1414  USE dimphy
     15  USE microphys_mod ! cloud microphysics (JBM 3/14)
    1516  IMPLICIT none
    1617  !======================================================================
     
    2627  include "tracstoke.h"
    2728  include "fisrtilp.h"
     29  include "nuage.h" ! JBM (3/14)
    2830  include "iniprint.h"
    2931
     
    111113  REAL zoliq(klon), zcond(klon), zq(klon), zqn(klon), zdelq
    112114  REAL zoliqp(klon), zoliqi(klon)
    113   REAL ztglace, zt(klon)
    114   INTEGER nexpo ! exponentiel pour glace/eau
     115  REAL zt(klon)
     116! JBM (3/14) nexpo is replaced by exposant_glace
     117! REAL nexpo ! exponentiel pour glace/eau
     118! INTEGER, PARAMETER :: nexpo=6
     119  INTEGER exposant_glace_old
     120  REAL t_glace_min_old
    115121  REAL zdz(klon),zrho(klon),ztot      , zrhol(klon)
    116122  REAL zchau      ,zfroi      ,zfice(klon),zneb(klon)
     
    202208  !  nexpo regle la raideur de la transition eau liquide / eau glace.
    203209  !
    204   ztglace = RTT - 15.0
    205 !AJ<
    206   IF (ice_thermo) THEN
    207     nexpo = 2
    208   ELSE
    209     nexpo = 6
     210  IF (iflag_t_glace.EQ.0) THEN
     211!   ztglace = RTT - 15.0
     212    t_glace_min_old = RTT - 15.0
     213    !AJ<
     214    IF (ice_thermo) THEN
     215!     nexpo = 2
     216      exposant_glace_old = 2
     217    ELSE
     218!     nexpo = 6
     219      exposant_glace_old = 6
     220    ENDIF
    210221  ENDIF
     222 
    211223!!  RLVTT = 2.501e6 ! pas de redefinition des constantes physiques (jyg)
    212224!!  RLSTT = 2.834e6 ! pas de redefinition des constantes physiques (jyg)
     
    710722        endif
    711723     ELSE
     724       IF (iflag_t_glace.EQ.0) THEN
    712725         if (iflag_fisrtilp_qsat.lt.1) then
    713726           DO i = 1, klon
    714               zfice(i) = 1.0 - (zt(i)-ztglace) / (273.15-ztglace)
     727              zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.15-t_glace_min_old)
    715728              zfice(i) = MIN(MAX(zfice(i),0.0),1.0)
    716               zfice(i) = zfice(i)**nexpo
     729              zfice(i) = zfice(i)**exposant_glace_old
     730!             zfice(i) = zfice(i)**nexpo
    717731              zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) &
    718732                       +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i))
     
    720734         else
    721735           DO i=1, klon
    722               zfice(i) = 1.0 - (zt(i)-ztglace) / (273.15-ztglace)
     736              zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.15-t_glace_min_old)
    723737              zfice(i) = MIN(MAX(zfice(i),0.0),1.0)
    724               zfice(i) = zfice(i)**nexpo
     738              zfice(i) = zfice(i)**exposant_glace_old
     739!             zfice(i) = zfice(i)**nexpo
    725740!CR: ATTENTION zt different de Tbef: à corriger
    726741              zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i))) &
     
    729744         endif
    730745!         print*,zt(i),zrfl(i),zifl(i),'temp1'
     746       ELSE ! of IF (iflag_t_glace.EQ.0)
     747         if (iflag_fisrtilp_qsat.lt.1) then
     748           DO i = 1, klon
     749! JBM: icefrac_lsc is now a function contained in microphys_mod
     750              zfice(i) = icefrac_lsc(zt(i), t_glace_min, &
     751                                     t_glace_max, exposant_glace)
     752              zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*zq(i)) &
     753                       +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*zq(i))
     754           ENDDO
     755         else
     756           DO i=1, klon
     757! JBM: icefrac_lsc is now a function contained in microphys_mod
     758              zfice(i) = icefrac_lsc(zt(i), t_glace_min, &
     759                                     t_glace_max, exposant_glace)
     760!CR: ATTENTION zt different de Tbef: à corriger
     761              zt(i) = zt(i) + (1.-zfice(i))*zcond(i) * RLVTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i))) &
     762                       +zfice(i)*zcond(i) * RLSTT/RCPD/(1.0+RVTMP2*(zq(i)+zcond(i)))
     763           ENDDO
     764         endif
     765!         print*,zt(i),zrfl(i),zifl(i),'temp1'
     766       ENDIF
    731767     ENDIF
    732768!>AJ
     
    743779!AJ<
    744780     IF (.NOT. ice_thermo) THEN
    745      DO i = 1, klon
    746         IF (rneb(i,k).GT.0.0) THEN
    747            zfice(i) = 1.0 - (zt(i)-ztglace) / (273.13-ztglace)
    748            zfice(i) = MIN(MAX(zfice(i),0.0),1.0)
    749            zfice(i) = zfice(i)**nexpo
    750      !!      zfice(i)=0.
    751         ENDIF
    752      ENDDO
     781       IF (iflag_t_glace.EQ.0) THEN
     782         DO i = 1, klon
     783            IF (rneb(i,k).GT.0.0) THEN
     784               zfice(i) = 1.0 - (zt(i)-t_glace_min_old) / (273.13-t_glace_min_old)
     785               zfice(i) = MIN(MAX(zfice(i),0.0),1.0)
     786               zfice(i) = zfice(i)**exposant_glace_old
     787!              zfice(i) = zfice(i)**nexpo
     788         !!      zfice(i)=0.
     789            ENDIF
     790         ENDDO
     791       ELSE ! of IF (iflag_t_glace.EQ.0)
     792         DO i = 1, klon
     793            IF (rneb(i,k).GT.0.0) THEN
     794! JBM: icefrac_lsc is now a function contained in microphys_mod
     795              zfice(i) = icefrac_lsc(zt(i), t_glace_min, &
     796                                     t_glace_max, exposant_glace)
     797            ENDIF
     798         ENDDO
     799       ENDIF
    753800     ENDIF
    754801     DO i = 1, klon
     
    895942        IF (rneb(i,k).GT.0.0.and.zprec_cond(i).gt.0.) THEN
    896943           !AA lessivage nucleation LMD5 dans la couche elle-meme
    897            if (t(i,k) .GE. ztglace) THEN
     944          IF (iflag_t_glace.EQ.0) THEN
     945           if (t(i,k) .GE. t_glace_min_old) THEN
    898946              zalpha_tr = a_tr_sca(3)
    899947           else
    900948              zalpha_tr = a_tr_sca(4)
    901949           endif
     950          ELSE ! of IF (iflag_t_glace.EQ.0)
     951           if (t(i,k) .GE. t_glace_min) THEN
     952              zalpha_tr = a_tr_sca(3)
     953           else
     954              zalpha_tr = a_tr_sca(4)
     955           endif
     956          ENDIF
    902957           zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i))
    903958           pfrac_nucl(i,k)=pfrac_nucl(i,k)*(1.-zneb(i)*zfrac_lessi)
     
    915970        DO i = 1, klon
    916971           IF (rneb(i,k).GT.0.0.and.zprec_cond(i).gt.0.) THEN
    917               if (t(i,kk) .GE. ztglace) THEN
     972             IF (iflag_t_glace.EQ.0) THEN
     973              if (t(i,kk) .GE. t_glace_min_old) THEN
    918974                 zalpha_tr = a_tr_sca(1)
    919975              else
    920976                 zalpha_tr = a_tr_sca(2)
    921977              endif
     978             ELSE ! of IF (iflag_t_glace.EQ.0)
     979              if (t(i,kk) .GE. t_glace_min) THEN
     980                 zalpha_tr = a_tr_sca(1)
     981              else
     982                 zalpha_tr = a_tr_sca(2)
     983              endif
     984             ENDIF
    922985              zfrac_lessi = 1. - EXP(zalpha_tr*zprec_cond(i)/zneb(i))
    923986              pfrac_impa(i,kk)=pfrac_impa(i,kk)*(1.-zneb(i)*zfrac_lessi)
Note: See TracChangeset for help on using the changeset viewer.