Changeset 1523 for LMDZ5/trunk


Ignore:
Timestamp:
May 24, 2011, 5:02:50 PM (14 years ago)
Author:
idelkadi
Message:

Correction du diagnostique utilise pour le calcul des fractions de nuages bas, moyen et haut

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/newmicro.F

    r1479 r1523  
    11! $Id$
     2
     3
     4
    25!     
    36      SUBROUTINE newmicro (paprs, pplay,ok_newmicro,
     
    5558      LOGICAL, SAVE :: FIRST=.TRUE.
    5659!$OMP THREADPRIVATE(FIRST)
    57 
    5860c Hypoyhese de recouvrement : MAXIMUM_RANDOM
    5961      INTEGER flag_max
     
    7981      LOGICAL lo
    8082c
    81       REAL cetahb, cetamb
    82       PARAMETER (cetahb = 0.45, cetamb = 0.80)
     83!!Abderr modif JL mail du 19.01.2011 18:31
     84!      REAL cetahb, cetamb
     85!      PARAMETER (cetahb = 0.45, cetamb = 0.80)
     86! Remplacer
     87!cetahb*paprs(i,1) par  prmhc
     88!cetamb*paprs(i,1) par  prlmc
     89      REAL prmhc    ! Pressure between medium and high level cloud
     90      REAL prlmc    ! Pressure between low and medium level cloud
     91      PARAMETER (prmhc = 440.*100., prlmc = 680.*100.)
     92
    8393C
    8494      INTEGER i, k
     
    132142      REAL zclear(klon)
    133143      REAL zcloud(klon)
     144      REAL zcloudh(klon)
     145      REAL zcloudm(klon)
     146      REAL zcloudl(klon)
     147
    134148
    135149c **************************
     
    424438         zclear(i)=1.
    425439         zcloud(i)=0.
     440         zcloudh(i)=0.
     441         zcloudm(i)=0.
     442         zcloudl(i)=0.
    426443         pch(i)=1.0
    427444         pcm(i) = 1.0
     
    444461     &              /(1.-MIN(real(zcloud(i), kind=8),1.-ZEPSEC))
    445462               pct(i)=1.-zclear(i)
    446                IF (pplay(i,k).LE.cetahb*paprs(i,1)) THEN
    447                   pch(i) = pch(i)*(1.-MAX(pclc(i,k),zcloud(i)))
    448      &                 /(1.-MIN(real(zcloud(i), kind=8),1.-ZEPSEC))
    449                ELSE IF (pplay(i,k).GT.cetahb*paprs(i,1) .AND.
    450      &                 pplay(i,k).LE.cetamb*paprs(i,1)) THEN
    451                   pcm(i) = pcm(i)*(1.-MAX(pclc(i,k),zcloud(i)))
    452      &                 /(1.-MIN(real(zcloud(i), kind=8),1.-ZEPSEC))
    453                ELSE IF (pplay(i,k).GT.cetamb*paprs(i,1)) THEN
    454                   pcl(i) = pcl(i)*(1.-MAX(pclc(i,k),zcloud(i)))
    455      &                 /(1.-MIN(real(zcloud(i), kind=8),1.-ZEPSEC))
     463               IF (paprs(i,k).LT.prmhc) THEN
     464                  pch(i) = pch(i)*(1.-MAX(pclc(i,k),zcloudh(i)))
     465     &                 /(1.-MIN(real(zcloudh(i), kind=8),1.-ZEPSEC))
     466                  zcloudh(i)=pclc(i,k)
     467               ELSE IF (paprs(i,k).GE.prmhc .AND.
     468     &                 paprs(i,k).LT.prlmc) THEN
     469                  pcm(i) = pcm(i)*(1.-MAX(pclc(i,k),zcloudm(i)))
     470     &                 /(1.-MIN(real(zcloudm(i), kind=8),1.-ZEPSEC))
     471                  zcloudm(i)=pclc(i,k)
     472               ELSE IF (paprs(i,k).GE.prlmc) THEN
     473                  pcl(i) = pcl(i)*(1.-MAX(pclc(i,k),zcloudl(i)))
     474     &                 /(1.-MIN(real(zcloudl(i), kind=8),1.-ZEPSEC))
     475                  zcloudl(i)=pclc(i,k)
    456476               endif
    457477               zcloud(i)=pclc(i,k)
     
    463483               zcloud(i)=MAX(pclc(i,k),zcloud(i))
    464484               pct(i)=zcloud(i)
    465                IF (pplay(i,k).LE.cetahb*paprs(i,1)) THEN
     485               IF (paprs(i,k).LT.prmhc) THEN
    466486                  pch(i) = MIN(pclc(i,k),pch(i))
    467                ELSE IF (pplay(i,k).GT.cetahb*paprs(i,1) .AND.
    468      &                 pplay(i,k).LE.cetamb*paprs(i,1)) THEN
     487               ELSE IF (paprs(i,k).GE.prmhc .AND.
     488     &                 paprs(i,k).LT.prlmc) THEN
    469489                  pcm(i) = MIN(pclc(i,k),pcm(i))
    470                ELSE IF (pplay(i,k).GT.cetamb*paprs(i,1)) THEN
     490               ELSE IF (paprs(i,k).GE.prlmc) THEN
    471491                  pcl(i) = MIN(pclc(i,k),pcl(i))
    472492               endif
     
    478498               zclear(i)=zclear(i)*(1.-pclc(i,k))
    479499               pct(i)=1-zclear(i)
    480                IF (pplay(i,k).LE.cetahb*paprs(i,1)) THEN
     500               IF (paprs(i,k).LT.prmhc) THEN
    481501                  pch(i) = pch(i)*(1.0-pclc(i,k))
    482                ELSE IF (pplay(i,k).GT.cetahb*paprs(i,1) .AND.
    483      &                 pplay(i,k).LE.cetamb*paprs(i,1)) THEN
     502               ELSE IF (paprs(i,k).GE.prmhc .AND.
     503     &                 paprs(i,k).LT.prlmc) THEN
    484504                  pcm(i) = pcm(i)*(1.0-pclc(i,k))
    485                ELSE IF (pplay(i,k).GT.cetamb*paprs(i,1)) THEN
     505               ELSE IF (paprs(i,k).GE.prlmc) THEN
    486506                  pcl(i) = pcl(i)*(1.0-pclc(i,k))
    487507               endif
     
    529549            ENDDO
    530550     
     551
    531552            DO i=1,klon
    532553               DO k=klev-1,1,-1 !From TOA down
Note: See TracChangeset for help on using the changeset viewer.