Ignore:
Timestamp:
Apr 6, 2010, 2:49:00 PM (14 years ago)
Author:
idelkadi
Message:

Nouvelle version des thermiques

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/thermcell_plume.F90

    r1311 r1338  
    6464      REAL zqsatth(ngrid,klev)
    6565      REAL zta_est(ngrid,klev)
     66      REAL ztemp(ngrid),zqsat(ngrid)
    6667      REAL zdw2
    6768      REAL zw2modif
     
    7778      real zdz,zfact,zbuoy,zalpha
    7879      real zcor,zdelta,zcvm5,qlbef
    79       real Tbef,qsatbef
    80       real dqsat_dT,DT,num,denom
    8180      REAL REPS,RLvCp,DDT0
    8281      PARAMETER (DDT0=.01)
     
    116115!      write(lunout,*)'THERM 31H '
    117116
     117      print*,'THERMCELL_PLUME OPTIMISE V0 '
    118118! Initialisations des variables reeles
    119119if (1==0) then
     
    239239! sans tenir compte du detrainement et de l'entrainement dans cette
    240240! couche
     241! C'est a dire qu'on suppose
     242! ztla(l)=ztla(l-1) et zqta(l)=zqta(l-1)
    241243! Ici encore, on doit pouvoir ajouter entr_star (qui peut etre calculer
    242244! avant) a l'alimentation pour avoir un calcul plus propre
    243245!---------------------------------------------------------------------------
    244246
    245      call thermcell_condens(ngrid,active, &
    246 &          zpspsk(:,l),pplev(:,l),ztla(:,l-1),zqta(:,l-1),zqla_est(:,l))
     247   ztemp(:)=zpspsk(:,l)*ztla(:,l-1)
     248   call thermcell_qsat(ngrid,active,pplev(:,l),ztemp,zqta(:,l-1),zqsat)
     249
    247250
    248251    do ig=1,ngrid
    249252        if(active(ig)) then
     253        zqla_est(ig,l) = max(0.,zqta(ig,l-1)-zqsat(ig))
    250254        ztva_est(ig,l) = ztla(ig,l-1)*zpspsk(ig,l)+RLvCp*zqla_est(ig,l)
    251255        zta_est(ig,l)=ztva_est(ig,l)
     
    366370    enddo
    367371
    368    call thermcell_condens(ngrid,activetmp,zpspsk(:,l),pplev(:,l),ztla(:,l),zqta(:,l),zqla(:,l))
    369 
     372   ztemp(:)=zpspsk(:,l)*ztla(:,l)
     373   call thermcell_qsat(ngrid,activetmp,pplev(:,l),ztemp,zqta(:,l),zqsatth(:,l))
    370374
    371375   do ig=1,ngrid
     
    373377        if (prt_level.ge.20) print*,'coucou calcul detr 4512: ig, l', ig, l
    374378! on ecrit de maniere conservative (sat ou non)
     379           zqla(ig,l) = max(0.,zqta(ig,l)-zqsatth(ig,l))
    375380!          T = Tl +Lv/Cp ql
    376381           ztva(ig,l) = ztla(ig,l)*zpspsk(ig,l)+RLvCp*zqla(ig,l)
     
    382387
    383388!on ecrit zqsat
    384            zqsatth(ig,l)=qsatbef 
    385389
    386390!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    554558      REAL zqsatth(ngrid,klev)
    555559      REAL zta_est(ngrid,klev)
     560      REAL ztemp(ngrid),zqsat(ngrid)
    556561      REAL zdw2
    557562      REAL zw2modif
     
    570575      real zcor,zdelta,zcvm5,qlbef,zdz2
    571576      real betalpha,zbetalpha
    572       real Tbef,qsatbef,b1,eps, afact
    573       real dqsat_dT,DT,num,denom,m
     577      real eps, afact
    574578      REAL REPS,RLvCp,DDT0
    575579      PARAMETER (DDT0=.01)
     
    589593
    590594!      print*,'THERM 31B'
     595      print*,'THERMCELL_PLUME OPTIMISE V1 CCC '
    591596
    592597! Initialisations des variables reeles
     
    624629      linter(:)=1.
    625630!     linter(:)=1.
    626       b1=2.
    627631! Initialisation des variables entieres
    628632      lmix(:)=1
     
    631635      lalim(:)=1
    632636
    633 !      print*,'THERMCELL PLUME ARNAUD DEDANS'
     637   print*,'THERMCELL PLUME QSAT2 NDDDDN'
    634638
    635639!-------------------------------------------------------------------------
     
    708712! sans tenir compte du detrainement et de l'entrainement dans cette
    709713! couche
     714! C'est a dire qu'on suppose
     715! ztla(l)=ztla(l-1) et zqta(l)=zqta(l-1)
    710716! Ici encore, on doit pouvoir ajouter entr_star (qui peut etre calculer
    711717! avant) a l'alimentation pour avoir un calcul plus propre
    712718!---------------------------------------------------------------------------
    713719
    714      call thermcell_condens(ngrid,active, &
    715 &          zpspsk(:,l),pplev(:,l),ztla(:,l-1),zqta(:,l-1),zqla_est(:,l))
    716 
     720   ztemp(:)=zpspsk(:,l)*ztla(:,l-1)
     721   call thermcell_qsat(ngrid,active,pplev(:,l),ztemp,zqta(:,l-1),zqsat(:))
    717722
    718723    do ig=1,ngrid
    719724!       print*,'active',active(ig),ig,l
    720725        if(active(ig)) then
     726        zqla_est(ig,l)=max(0.,zqta(ig,l-1)-zqsat(ig))
    721727        ztva_est(ig,l) = ztla(ig,l-1)*zpspsk(ig,l)+RLvCp*zqla_est(ig,l)
    722728        zta_est(ig,l)=ztva_est(ig,l)
     
    747753!-------------------------------------------------
    748754
     755     print*,'THERM V1 SANS DQ'
    749756     do ig=1,ngrid
    750757        if (active(ig)) then
     
    758765          zalpha=f0(ig)*f_star(ig,l)/sqrt(w_est(ig,l+1))/rhobarz(ig,l)
    759766          zdqt(ig,l)=max(zqta(ig,l-1)-po(ig,l),0.)/po(ig,l)
     767          zdqt(ig,l)=0.
    760768
    761769         
     
    800808    enddo
    801809
    802    call thermcell_condens(ngrid,activetmp,zpspsk(:,l),pplev(:,l),ztla(:,l),zqta(:,l),zqla(:,l))
    803 
     810   ztemp(:)=zpspsk(:,l)*ztla(:,l)
     811   call thermcell_qsat(ngrid,activetmp,pplev(:,l),ztemp,zqta(:,l),zqsatth(:,l))
    804812
    805813   do ig=1,ngrid
     
    808816! on ecrit de maniere conservative (sat ou non)
    809817!          T = Tl +Lv/Cp ql
     818           zqla(ig,l)=max(0.,zqta(ig,l)-zqsatth(ig,l))
    810819           ztva(ig,l) = ztla(ig,l)*zpspsk(ig,l)+RLvCp*zqla(ig,l)
    811820           ztva(ig,l) = ztva(ig,l)/zpspsk(ig,l)
     
    814823           ztva(ig,l) = ztva(ig,l)*(1.+RETV*(zqta(ig,l)  &
    815824     &              -zqla(ig,l))-zqla(ig,l))
    816 
    817 !on ecrit zqsat
    818            zqsatth(ig,l)=qsatbef 
    819 
    820825           zbuoy(ig,l)=RG*(ztva(ig,l)-ztv(ig,l))/ztv(ig,l)
    821826           zdz=zlev(ig,l+1)-zlev(ig,l)
Note: See TracChangeset for help on using the changeset viewer.