Ignore:
Timestamp:
Feb 13, 2015, 8:22:32 AM (10 years ago)
Author:
fhourdin
Message:

Introduction of a bi-gausian descrption of the subgrid scale
distribution of water associated with deep convection.

Introduction d'un schéma bi-gausien pour la distribution sous maille
de l'eau associée à la convection profonde.

Contrôlé par
iflag_cld_cv=2 (1 pour le schéma de Bony et Emanuel 2001)
autres paramètres de contrôle : tau_cld_cv et coefw_cld_cv

Arnaud Jam

File:
1 edited

Legend:

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

    r2110 r2205  
    11
    22! $Id$
     3
    34
    45
     
    27632764                     cbmf, upwd, dnwd, dnwd0, ma, mip, &
    27642765                     tls, tps, qcondc, wd, &
    2765                      ftd, fqd)
     2766                     ftd, fqd, qnk, qtc, sigt, tau_cld_cv, coefw_cld_cv)
    27662767
    27672768  IMPLICIT NONE
     
    28002801!input/output:
    28012802      INTEGER iflag(nloc)
     2803      REAL,INTENT(in) :: tau_cld_cv, coefw_cld_cv
    28022804!
    28032805!outputs:
     
    28112813      REAL tls(nloc, nd), tps(nloc, nd)
    28122814      REAL qcondc(nloc, nd) ! cld
     2815      REAL qtc(nloc,nd), sigt(nloc,nd) ! cld
    28132816      REAL wd(nloc) ! gust
    28142817      REAL cbmf(nloc)
     
    28302833      REAL qcond(nloc, nd), nqcond(nloc, nd), wa(nloc, nd) ! cld
    28312834      REAL siga(nloc, nd), sax(nloc, nd), mac(nloc, nd) ! cld
    2832 
     2835      REAL sument(nloc), sigment(nloc,nd), qtment(nloc,nd) ! cld
     2836      REAL qnk(nloc)
    28332837      REAL sumdq !jyg
    28342838!
     
    28612865      qcondc(il, i) = 0.0 ! cld
    28622866      qcond(il, i) = 0.0 ! cld
     2867      qtc(il, i) = 0.0 ! cld
     2868      qtment(il, i) = 0.0 ! cld
     2869      sigment(il, i) = 0.0 ! cld
     2870      sigt(il, i) = 0.0 ! cld
    28632871      nqcond(il, i) = 0.0 ! cld
    28642872    END DO
     
    32343242! (saturated updrafts resulting from mixing)                                   ! cld
    32353243          qcond(il, i) = qcond(il, i) + (elij(il,k,i)-awat(il))                ! cld
    3236           nqcond(il, i) = nqcond(il, i) + 1. ! cld
     3244          qtment(il, i) = qtment(il, i) + qent(il,k,i)                         ! cld
     3245          nqcond(il, i) = nqcond(il, i) + 1.                                   ! cld
    32373246        END IF ! i
    32383247      END DO
     
    33103319! (saturated downdrafts resulting from mixing)                                 ! cld
    33113320          qcond(il, i) = qcond(il, i) + elij(il, k, i)                         ! cld
    3312           nqcond(il, i) = nqcond(il, i) + 1. ! cld
     3321          qtment(il, i) = qent(il,k,i) + qtment(il,i)                          ! cld
     3322          nqcond(il, i) = nqcond(il, i) + 1.                                   ! cld
    33133323        END IF ! cld
    33143324      END DO ! cld
     
    33193329      IF (i<=inb(il) .AND. nent(il,i)==0 .AND. iflag(il)<=1) THEN              ! cld
    33203330        qcond(il, i) = qcond(il, i) + (1.-ep(il,i))*clw(il, i)                 ! cld
     3331        qtment(il, i) = qent(il,k,i) + qtment(il,i)                          ! cld
    33213332        nqcond(il, i) = nqcond(il, i) + 1.                                     ! cld
    33223333      END IF                                                                   ! cld
     
    33263337      IF (i<=inb(il) .AND. nqcond(il,i)/=0 .AND. iflag(il)<=1) THEN            ! cld
    33273338        qcond(il, i) = qcond(il, i)/nqcond(il, i)                              ! cld
     3339        qtment(il, i) = qtment(il,i)/nqcond(il, i)                             ! cld
    33283340      END IF                                                                   ! cld
    33293341    END DO
     
    37883800      END IF                                                         ! cld
    37893801    END DO                                                           ! cld
    3790   END DO                                                             ! cld
    3791 
    3792   DO i = 1, nl                                                       ! cld
     3802  END DO 
     3803                                                           ! cld
     3804  DO i = 1, nl 
     3805
     3806! 14/01/15 AJ je remets les parties manquantes cf JYG
     3807! Initialize sument to 0
     3808
     3809    DO il = 1,ncum
     3810     sument(il) = 0.
     3811    ENDDO
     3812
     3813! Sum mixed mass fluxes in sument
     3814
     3815    DO k = 1,nl
     3816      DO il = 1,ncum
     3817        IF  (k<=inb(il) .AND. i<=inb(il) .AND. iflag(il)<=1) THEN   ! cld
     3818          sument(il) =sument(il) + abs(ment(il,k,i))
     3819        ENDIF
     3820      ENDDO     ! il
     3821    ENDDO       ! k
     3822
     3823! 14/01/15 AJ delta n'a rien à faire là...                                                 
    37933824    DO il = 1, ncum                                                  ! cld
    37943825      IF (wa(il,i)>0.0 .AND. iflag(il)<=1) &                         ! cld
    3795         siga(il, i) = mac(il, i)/wa(il, i) &                         ! cld
    3796         *rrd*tvp(il, i)/p(il, i)/100./delta                          ! cld
     3826        siga(il, i) = mac(il, i)/(coefw_cld_cv*wa(il, i)) &          ! cld
     3827        *rrd*tvp(il, i)/p(il, i)/100.                                ! cld
     3828
    37973829      siga(il, i) = min(siga(il,i), 1.0)                             ! cld
    3798 ! IM cf. FH                                                         
     3830
     3831! IM cf. FH
     3832! 14/01/15 AJ ne correspond pas à ce qui a été codé par JYG et SB           
     3833                                                         
    37993834      IF (iflag_clw==0) THEN                                         ! cld
    38003835        qcondc(il, i) = siga(il, i)*clw(il, i)*(1.-ep(il,i)) &       ! cld
    38013836          +(1.-siga(il,i))*qcond(il, i)                              ! cld
     3837
     3838
     3839        sigment(il,i)=sument(il)*tau_cld_cv/(ph(il,i)-ph(il,i+1))    ! cld
     3840        sigment(il, i) = min(1.e-4+sigment(il,i), 1.0 - siga(il,i))  ! cld
     3841        qtc(il, i) = (siga(il,i)*qnk(il)+sigment(il,i)*qtment(il,i)) & ! cld
     3842                     /(siga(il,i)+sigment(il,i))                     ! cld
     3843        sigt(il,i) = sigment(il, i) + siga(il, i)
     3844
     3845!        qtc(il, i) = siga(il,i)*qnk(il)+(1.-siga(il,i))*qtment(il,i) ! cld
     3846      print*,'BIGAUSSIAN CONV',siga(il,i),sigment(il,i),qtc(il,i) 
     3847               
    38023848      ELSE IF (iflag_clw==1) THEN                                    ! cld
    38033849        qcondc(il, i) = qcond(il, i)                                 ! cld
     3850        qtc(il,i) = qtment(il,i)                                     ! cld
    38043851      END IF                                                         ! cld
    38053852
Note: See TracChangeset for help on using the changeset viewer.