Changeset 2586


Ignore:
Timestamp:
Jul 8, 2016, 4:25:48 PM (8 years ago)
Author:
jbmadeleine
Message:

Added a parameter called cloudth_vert_alpha defined in physiq.def;
it can be used to change the width of the PDF used for the cloud
vertical subgrid scale heterogeneity.

File:
1 edited

Legend:

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

    r2547 r2586  
    55
    66
    7       USE IOIPSL, ONLY : getin
    87      IMPLICIT NONE
    98
     
    5554      REAL sth,senv,sigma1s,sigma2s,xth,xenv
    5655      REAL Tbef,zdelta,qsatbef,zcor
    57       REAL alpha,qlbef 
     56      REAL qlbef 
    5857      REAL ratqs(ngrid,klev) ! determine la largeur de distribution de vapeur
    5958     
     
    171170      cenv(ind1,ind2)=0.5*(1.+1.*erf(xenv))
    172171      ctot(ind1,ind2)=fraca(ind1,ind2)*cth(ind1,ind2)+(1.-1.*fraca(ind1,ind2))*cenv(ind1,ind2)   
    173 !      ctot(ind1,ind2)=alpha*cth(ind1,ind2)+(1.-1.*alpha)*cenv(ind1,ind2)
    174 
    175 
    176172
    177173      qlth(ind1,ind2)=sigma2s*((exp(-1.*xth**2)/sqrt2pi)+xth*sqrt(2.)*cth(ind1,ind2))
    178174      qlenv(ind1,ind2)=sigma1s*((exp(-1.*xenv**2)/sqrt2pi)+xenv*sqrt(2.)*cenv(ind1,ind2))   
    179175      qltot(ind1,ind2)=fraca(ind1,ind2)*qlth(ind1,ind2)+(1.-1.*fraca(ind1,ind2))*qlenv(ind1,ind2)
    180 !      qltot(ind1,ind2)=alpha*qlth(ind1,ind2)+(1.-1.*alpha)*qlenv(ind1,ind2)
    181      
    182 
    183 !      print*,senv,sth,sigma1s,sigma2s,fraca(ind1,ind2),'senv et sth et sig1 et sig2 et alpha'
    184176
    185177!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    255247     &           ratqs,zqs,t)
    256248
    257 
    258       IMPLICIT NONE
    259 
    260 
    261249!===========================================================================
    262250! Auteur : Arnaud Octavio Jam (LMD/CNRS)
     
    265253!===========================================================================
    266254
     255
     256      USE ioipsl_getin_p_mod, ONLY : getin_p
     257
     258      IMPLICIT NONE
    267259
    268260#include "YOMCST.h"
     
    307299      REAL IntJ,IntI1,IntI2,IntI3,coeffqlenv,coeffqlth
    308300      REAL Tbef,zdelta,qsatbef,zcor
    309       REAL alpha,qlbef 
     301      REAL qlbef 
    310302      REAL ratqs(ngrid,klev) ! determine la largeur de distribution de vapeur
     303      ! Change the width of the PDF used for vertical subgrid scale heterogeneity
     304      ! (J Jouhaud, JL Dufresne, JB Madeleine)
     305      REAL,SAVE :: vert_alpha
     306      LOGICAL, SAVE :: firstcall = .TRUE.
    311307     
    312308      REAL zpdf_sig(ngrid),zpdf_k(ngrid),zpdf_delta(ngrid)
     
    314310      REAL zqs(ngrid), qcloud(ngrid)
    315311      REAL erf
    316 
    317 
    318 
    319 
    320312
    321313!------------------------------------------------------------------------------
     
    342334      sqrtpi=sqrt(pi)
    343335
    344 
     336      IF (firstcall) THEN
     337        vert_alpha=0.5
     338        CALL getin_p('cloudth_vert_alpha',vert_alpha)
     339        WRITE(*,*) 'cloudth_vert_alpha = ', vert_alpha
     340        firstcall=.FALSE.
     341      ENDIF
    345342
    346343!-------------------------------------------------------------------------------
     
    412409      cenv(ind1,ind2)=0.5*(1.+1.*erf(xenv))
    413410      ctot(ind1,ind2)=fraca(ind1,ind2)*cth(ind1,ind2)+(1.-1.*fraca(ind1,ind2))*cenv(ind1,ind2)   
    414 !      ctot(ind1,ind2)=alpha*cth(ind1,ind2)+(1.-1.*alpha)*cenv(ind1,ind2)
    415 
    416 
    417411
    418412      qlth(ind1,ind2)=sigma2s*((exp(-1.*xth**2)/sqrt2pi)+xth*sqrt(2.)*cth(ind1,ind2))
    419413      qlenv(ind1,ind2)=sigma1s*((exp(-1.*xenv**2)/sqrt2pi)+xenv*sqrt(2.)*cenv(ind1,ind2))   
    420414      qltot(ind1,ind2)=fraca(ind1,ind2)*qlth(ind1,ind2)+(1.-1.*fraca(ind1,ind2))*qlenv(ind1,ind2)
    421 !      qltot(ind1,ind2)=alpha*qlth(ind1,ind2)+(1.-1.*alpha)*qlenv(ind1,ind2)
    422415     
    423 
    424 !      print*,senv,sth,sigma1s,sigma2s,fraca(ind1,ind2),'senv et sth et sig1 et sig2 et alpha'
    425 
    426 
    427416       IF (iflag_cloudth_vert == 1) THEN
    428417!-------------------------------------------------------------------------------
     
    476465!      deltasenv=aenv*ratqs(ind1,ind2)*zqsatenv(ind1,ind2)
    477466!      deltasth=ath*ratqs(ind1,ind2)*zqsatth(ind1,ind2)
    478       deltasenv=aenv*0.5*sigma1s
    479       deltasth=ath*0.5*sigma2s
     467      deltasenv=aenv*vert_alpha*sigma1s
     468      deltasth=ath*vert_alpha*sigma2s
    480469     
    481470      xenv1=-(senv+deltasenv)/(sqrt(2.)*sigma1s)
Note: See TracChangeset for help on using the changeset viewer.