Changeset 1496


Ignore:
Timestamp:
Mar 11, 2011, 10:44:05 AM (13 years ago)
Author:
Laurent Fairhead
Message:

Modified closure for the new physics package, new values for the iflag_coupl parameter
FH


Fermeture modifiée pour la nouvelle physique, nouvelles valeurs définies pour
le paramètre iflag_coupl
FH

Location:
LMDZ5/trunk/libf
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dyn3d/etat0_netcdf.F90

    r1492 r1496  
    138138                   flag_aerosol, new_aod,                               &
    139139                   bl95_b0, bl95_b1,                                    &
    140                    iflag_thermals,nsplit_thermals,tau_thermals,         &
    141                    iflag_thermals_ed,iflag_thermals_optflux,            &
    142                    iflag_coupl,iflag_clos,iflag_wake, read_climoz,      &
     140                   read_climoz,                                         &
    143141                   alp_offset)
    144142
  • LMDZ5/trunk/libf/dyn3dpar/etat0_netcdf.F90

    r1492 r1496  
    138138                   flag_aerosol, new_aod,                               &
    139139                   bl95_b0, bl95_b1,                                    &
    140                    iflag_thermals,nsplit_thermals,tau_thermals,         &
    141                    iflag_thermals_ed,iflag_thermals_optflux,            &
    142                    iflag_coupl,iflag_clos,iflag_wake, read_climoz,      &
     140                   read_climoz,                                         &
    143141                   alp_offset)
    144142
  • LMDZ5/trunk/libf/phylmd/calltherm.F90

    r1428 r1496  
    216216     &      ,zfm_therm,zentr_therm,zdetr_therm,zqasc,zqla,lmax  &
    217217     &      ,ratqscth,ratqsdiff,zqsatth  &
    218      &      ,r_aspect_thermals,l_mix_thermals &
    219      &      ,tau_thermals,iflag_thermals_ed,Ale,Alp,lalim_conv,wght_th &
     218!    &      ,r_aspect_thermals,l_mix_thermals &
     219!    &      ,tau_thermals,iflag_thermals_ed,iflag_coupl &
     220     &      ,Ale,Alp,lalim_conv,wght_th &
    220221     &      ,zmax0,f0,zw2,fraca,ztv,zpspsk &
    221222     &      ,ztla,zthl)
  • LMDZ5/trunk/libf/phylmd/conf_phys.F90

    r1492 r1496  
    2121                       flag_aerosol, new_aod, &
    2222                       bl95_b0, bl95_b1,&
    23                        iflag_thermals,nsplit_thermals,tau_thermals, &
    24                        iflag_thermals_ed,iflag_thermals_optflux, &
    25                        iflag_coupl,iflag_clos,iflag_wake, read_climoz, &
     23                       read_climoz, &
    2624                       alp_offset)
    2725
     
    3735 include "YOMCST.h"
    3836 include "YOMCST2.h"
     37
     38 include "thermcell.h"
     39
    3940!IM : on inclut/initialise les taux de CH4, N2O, CFC11 et CFC12
    4041include "clesphys.h"
     
    106107  real,save :: seuil_inversion_omp
    107108
    108   integer :: iflag_thermals,nsplit_thermals
    109109  integer,SAVE :: iflag_thermals_ed_omp,iflag_thermals_optflux_omp
    110   integer :: iflag_thermals_ed,iflag_thermals_optflux
    111110  integer,SAVE :: iflag_thermals_omp,nsplit_thermals_omp
    112   real :: tau_thermals
    113   real,save :: tau_thermals_omp
    114   integer :: iflag_coupl
    115   integer :: iflag_clos
    116   integer :: iflag_wake
     111  real,save :: tau_thermals_omp,alp_bl_k_omp
    117112  real :: alp_offset
    118113  REAL, SAVE :: alp_offset_omp
     
    1002997  call getin('nsplit_thermals',nsplit_thermals_omp)
    1003998
     999!Config Key  = alp_bl_k
     1000!Config Desc =
     1001!Config Def  = 0.
     1002!Config Help =
     1003!
     1004  alp_bl_k_omp = 1.
     1005  call getin('alp_bl_k',alp_bl_k_omp)
     1006
     1007!
    10041008!Config Key  = tau_thermals
    10051009!Config Desc =
     
    15541558    nsplit_thermals = nsplit_thermals_omp
    15551559    tau_thermals = tau_thermals_omp
     1560    alp_bl_k = alp_bl_k_omp
    15561561    iflag_coupl = iflag_coupl_omp
    15571562    iflag_clos = iflag_clos_omp
  • LMDZ5/trunk/libf/phylmd/physiq.F

    r1493 r1496  
    12341234     .     flag_aerosol, new_aod,
    12351235     .     bl95_b0, bl95_b1,
    1236      .     iflag_thermals,nsplit_thermals,tau_thermals,
    1237      .     iflag_thermals_ed,iflag_thermals_optflux,
    12381236c     nv flags pour la convection et les poches froides
    1239      .     iflag_coupl,iflag_clos,iflag_wake, read_climoz,
     1237     .     read_climoz,
    12401238     &     alp_offset)
    12411239      call phys_state_var_init(read_climoz)
     
    28462844      if (iflag_cldcon>=5) then
    28472845
     2846         ptconvth(:,:)=fm_therm(:,:)>0.
     2847
     2848       if (iflag_coupl==4) then
     2849
     2850! Dans le cas iflag_coupl==4, on prend la somme des convertures
     2851! convectives et lsc dans la partie des thermiques
     2852! Le controle par iflag_coupl est peut etre provisoire.
     2853         do k=1,klev
     2854            do i=1,klon
     2855               if (ptconv(i,k).and.ptconvth(i,k)) then
     2856                   cldliq(i,k)=cldliq(i,k)+rnebcon(i,k)*clwcon(i,k)
     2857                   cldfra(i,k)=min(cldfra(i,k)+rnebcon(i,k),1.)
     2858               else if (ptconv(i,k)) then
     2859                   cldfra(i,k)=rnebcon(i,k)
     2860                   cldliq(i,k)=rnebcon(i,k)*clwcon(i,k)
     2861               endif
     2862            enddo
     2863         enddo
     2864
     2865         else
    28482866! Si on est sur un point touche par la convection profonde et pas
    28492867! par les thermiques, on prend la couverture nuageuse et l'eau nuageuse
     
    28522870!IM/FH: 2011/02/23
    28532871! definition des points sur lesquels ls thermiques sont actifs
    2854          if (prt_level>9)write(*,*)'TEST SCHEMA DE NUAGES '
    2855          ptconvth(:,:)=fm_therm(:,:)>0.
     2872
    28562873         do k=1,klev
    28572874            do i=1,klon
     
    28622879            enddo
    28632880         enddo
     2881
     2882        endif
     2883
    28642884      else
     2885
    28652886! Ancienne version
    28662887      cldfra(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
  • LMDZ5/trunk/libf/phylmd/thermcell.h

    r1146 r1496  
    11      integer            :: iflag_thermals,nsplit_thermals
    22      real,parameter     :: r_aspect_thermals=2.,l_mix_thermals=30.
     3      real               :: alp_bl_k
    34      real               :: tau_thermals
    45      integer,parameter  :: w2di_thermals=1
     
    910
    1011      common/ctherm1/iflag_thermals,nsplit_thermals
    11       common/ctherm2/tau_thermals
     12      common/ctherm2/tau_thermals,alp_bl_k
    1213      common/ctherm4/iflag_coupl,iflag_clos,iflag_wake
    1314      common/ctherm5/iflag_thermals_ed,iflag_thermals_optflux
  • LMDZ5/trunk/libf/phylmd/thermcell_main.F90

    r1494 r1496  
    88     &                  ,fm0,entr0,detr0,zqta,zqla,lmax  &
    99     &                  ,ratqscth,ratqsdiff,zqsatth  &
    10      &                  ,r_aspect,l_mix,tau_thermals,iflag_thermals_ed &
    1110     &                  ,Ale_bl,Alp_bl,lalim_conv,wght_th &
    1211     &                  ,zmax0, f0,zw2,fraca,ztv &
     
    4746#include "FCTTRE.h"
    4847#include "iniprint.h"
     48#include "thermcell.h"
    4949
    5050!   arguments:
     
    5454      INTEGER itap
    5555
    56       INTEGER ngrid,nlay,w2di
    57       real tau_thermals
    58       integer iflag_thermals_ed
    59       real ptimestep,l_mix,r_aspect
     56      INTEGER ngrid,nlay
     57      real ptimestep
    6058      REAL pt(ngrid,nlay),pdtadj(ngrid,nlay)
    6159      REAL pu(ngrid,nlay),pduadj(ngrid,nlay)
     
    162160      real Ale_bl(klon)
    163161      real Alp_bl(klon)
    164       real alp_int(klon)
     162      real alp_int(klon),dp_int(klon),zdp
    165163      real ale_int(klon)
    166164      integer n_int(klon)
     
    474472
    475473! Appel avec la version seche
    476       CALL thermcell_closure(ngrid,nlay,r_aspect,ptimestep,rho,  &
     474      CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho,  &
    477475     &   zlev,lalim,alim_star_clos,f_star,zmax_sec,wmax_sec,f,lev_out)
    478476
     
    480478! Appel avec les zmax et wmax tenant compte de la condensation
    481479! Semble moins bien marcher
    482 !     CALL thermcell_closure(ngrid,nlay,r_aspect,ptimestep,rho,  &
     480!     CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho,  &
    483481!    &   zlev,lalim,alim_star,f_star,zmax,wmax,f,lev_out)
    484482!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    702700      enddo
    703701
    704 !     print*,'AAAAAAA ',Alp_bl,Ale_bl,lmix
    705 
    706 
    707 ! TEST. IL FAUT REECRIRE LES ALE et ALP
    708 !     Ale_bl(:)=0.5*wmax(:)*wmax(:)
    709 !     Alp_bl(:)=0.1*wmax(:)*wmax(:)*wmax(:)
    710 
    711702!test:calcul de la ponderation des couches pour KE
    712703!initialisations
    713 !      print*,'ponderation'
    714704
    715705      fm_tot(:)=0.
     
    743733      endif
    744734      enddo
     735
     736!------------------------------------------------------------------------
     737! Modif CR/FH 20110310 : Alp integree sur la verticale.
     738! Integrale verticale de ALP.
     739! wth3 etant aux niveaux inter-couches, on utilise d play comme masse des
     740! couches
     741!------------------------------------------------------------------------
     742
     743      alp_int(:)=0.
     744      dp_int(:)=0.
     745      do l=2,nlay
     746        do ig=1,ngrid
     747           if(l.LE.lmax(ig)) THEN
     748           zdp=pplay(ig,l-1)-pplay(ig,l)
     749           alp_int(ig)=alp_int(ig)+0.5*rhobarz(ig,l)*wth3(ig,l)*zdp
     750           dp_int(ig)=dp_int(ig)+zdp
     751           endif
     752        enddo
     753      enddo
     754
     755      if (iflag_coupl==3 .or. iflag_coupl==4) then
     756      do ig=1,ngrid
     757!valeur integree de alp_bl * 0.5:
     758        if (dp_int(ig)>0.) then
     759        Alp_bl(ig)=alp_int(ig)/dp_int(ig)
     760        endif
     761      enddo!
     762      endif
     763
     764
     765! Facteur multiplicatif sur Alp_bl
     766      Alp_bl(:)=alp_bl_k*Alp_bl(:)
     767
     768!------------------------------------------------------------------------
    745769
    746770
Note: See TracChangeset for help on using the changeset viewer.