Ignore:
Timestamp:
Apr 15, 2011, 12:44:31 PM (13 years ago)
Author:
idelkadi
Message:
  1. Introduction de nouvelles facon de calucler les ratqs pour firstilp quand iflag_cldcon>=7 : ratqs devient pronos

tic avec une relaxation vers un ratqs issu de la convection (ratqsc) quand celle-ci est active et une relaxation ve
rs ratqss dans le cas contraire.
Les constantes de temps sont a 3h en dur dans le code (en attendant mieux)
On met un coeff iflag_cldcon/100 devant ratqsc
On plafone le ratqs a 0.5 (la aussi en dur dans le code en attendant de stabiliser une facon de faire).

  1. Introduction de nouveaux diagnostics concernant la separation entre la contribution des thermiques et le reste d

ans fisrtilp (dq/tlscth, dq/tlscst,plulth, plulst)
Correction de la sortie de la hauteur des thermiques zmax_th

  1. Introduction d'une option iflag_wake=2 pour prendre en compte les precipitations issues de fisrtipl dans le forc

age des wake.

  1. Correction d'un bug sur l'identification des points affectes par les thermiques (ptconvth(:,k)=fm_therm(:,k+1)>0

.)

File:
1 edited

Legend:

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

    r1506 r1507  
    173173      save iflag_ratqs
    174174c$OMP THREADPRIVATE(iflag_ratqs)
     175      real facteur,zfratqs1,zfratqs2
     176
    175177      REAL lambda_th(klon,klev),zz,znum,zden
    176178      REAL wmax_th(klon)
     
    924926      save fact_cldcon,facttemps
    925927c$OMP THREADPRIVATE(fact_cldcon,facttemps)
    926       real facteur
    927928
    928929      integer iflag_cldcon
     
    14401441cCR:04.12.07: initialisations poches froides
    14411442c Controle de ALE et ALP pour la fermeture convective (jyg)
    1442           if (iflag_wake.eq.1) then
     1443          if (iflag_wake>=1) then
    14431444            CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr
    14441445     s                  ,alp_bl_prescr, ale_bl_prescr)
     
    19341935! ajout des tendances de la diffusion turbulente
    19351936      CALL add_phys_tend(d_u_vdf,d_v_vdf,d_t_vdf,d_q_vdf,dql0,'vdf')
     1937
    19361938!-----------------------------------------------------------------------------------------
    19371939
     
    20542056      do k=1,klev
    20552057            do i=1,klon
    2056              if (iflag_wake.eq.1) then
     2058             if (iflag_wake>=1) then
    20572059             t_wake(i,k) = t_seri(i,k)
    20582060     .           +(1-wake_s(i))*wake_deltat(i,k)
     
    20712073            enddo
    20722074         enddo
     2075
    20732076     
    20742077cc--   Calcul de l'energie disponible ALE (J/kg) et de la puissance disponible ALP (W/m2)
     
    20812084c
    20822085ccalcul de ale_wake et alp_wake
    2083        if (iflag_wake.eq.1) then
     2086       if (iflag_wake>=1) then
    20842087         if (itap .le. it_wape_prescr) then
    20852088          do i = 1,klon
     
    23432346cpour la couche limite diffuse pour l instant
    23442347c
    2345       if (iflag_wake.eq.1) then
     2348      if (iflag_wake>=1) then
    23462349      DO k=1,klev
    23472350        DO i=1,klon
     
    23582361        ENDDO
    23592362      ENDDO
     2363
     2364      if (iflag_wake==2) then
     2365         dt_dwn(:,:)= dt_dwn(:,:)+(d_t_eva(:,:)+d_t_lsc(:,:))/dtime
     2366         dq_dwn(:,:)= dq_dwn(:,:)+(d_q_eva(:,:)+d_q_lsc(:,:))/dtime
     2367      endif
    23602368c
    23612369ccalcul caracteristiques de la poche froide
     
    24742482      endif
    24752483
     2484      do i=1,klon
     2485         zmax_th(i)=pphi(i,lmax_th(i))/rg
     2486      enddo
     2487
    24762488         endif
    24772489
     
    26042616         enddo
    26052617
    2606       else
     2618      else if (iflag_ratqs.eq.2) then
    26072619
    26082620         do k=1,klev
     
    26202632            enddo
    26212633         enddo
     2634
     2635      else if (iflag_ratqs==3) then
     2636         do k=1,klev
     2637           ratqss(:,k)=ratqsbas+(ratqshaut-ratqsbas)
     2638     s     *min( ((paprs(:,1)-pplay(:,k))/70000.)**2 , 1. )
     2639         enddo
     2640
     2641      else if (iflag_ratqs==4) then
     2642         do k=1,klev
     2643           ratqss(:,k)=ratqsbas+0.5*(ratqshaut-ratqsbas)
     2644     s     *( tanh( (50000.-pplay(:,k))/20000.) + 1.)
     2645         enddo
     2646
    26222647      endif
    26232648
     
    26592684!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    26602685         ratqs(:,:)=max(ratqs(:,:),ratqss(:,:))
    2661       else
     2686      else if (iflag_cldcon<=6) then
    26622687!   on ne prend que le ratqs stable pour fisrtilp
    26632688         ratqs(:,:)=ratqss(:,:)
     2689      else
     2690          zfratqs1=exp(-pdtphys/10800.)
     2691          zfratqs2=exp(-pdtphys/10800.)
     2692!         print*,'RAPPEL RATQS 1 ',zfratqs1,zfratqs2
     2693!    s    ,ratqss(1,14),ratqs(1,14),ratqsc(1,14)
     2694          do k=1,klev
     2695             do i=1,klon
     2696                if (ratqsc(i,k).gt.1.e-10) then
     2697                   ratqs(i,k)=ratqs(i,k)*zfratqs2
     2698     s             +(iflag_cldcon/100.)*ratqsc(i,k)*(1.-zfratqs2)
     2699                endif
     2700                ratqs(i,k)=min(ratqs(i,k)*zfratqs1
     2701     s          +ratqss(i,k)*(1.-zfratqs1),0.5)
     2702             enddo
     2703          enddo
    26642704      endif
     2705
    26652706
    26662707
     
    28442885      if (iflag_cldcon>=5) then
    28452886
    2846          ptconvth(:,:)=fm_therm(:,:)>0.
     2887        do k=1,klev
     2888         ptconvth(:,k)=fm_therm(:,k+1)>0.
     2889        enddo
    28472890
    28482891       if (iflag_coupl==4) then
     
    28902933
    28912934      ENDIF
     2935
     2936!     plulsc(:)=0.
     2937!     do k=1,klev,-1
     2938!        do i=1,klon
     2939!              zzz=prfl(:,k)+psfl(:,k)
     2940!           if (.not.ptconvth.zzz.gt.0.)
     2941!        enddo prfl, psfl,
     2942!     enddo
    28922943c
    28932944c 2. NUAGES STARTIFORMES
     
    33553406       IF (MOD(itap,NINT(freq_cosp/dtime)).EQ.0) THEN
    33563407
    3357 !       print*,'freq_cosp',freq_cosp
     3408       print*,'freq_cosp',freq_cosp
    33583409          mr_ozone=wo(:, :, 1) * dobson_u * 1e3 / zmasse
    33593410!       print*,'Dans physiq.F avant appel cosp ref_liq,ref_ice=',
     
    37143765
    37153766
     3767
     3768c=============================================================
     3769! Separation entre thermiques et non thermiques dans les sorties
     3770! de fisrtilp
     3771c=============================================================
     3772
     3773      if (iflag_thermals>1) then
     3774      d_t_lscth=0.
     3775      d_t_lscst=0.
     3776      d_q_lscth=0.
     3777      d_q_lscst=0.
     3778      do k=1,klev
     3779         do i=1,klon
     3780            if (ptconvth(i,k)) then
     3781                d_t_lscth(i,k)=d_t_eva(i,k)+d_t_lsc(i,k)
     3782                d_q_lscth(i,k)=d_q_eva(i,k)+d_q_lsc(i,k)
     3783            else
     3784                d_t_lscst(i,k)=d_t_eva(i,k)+d_t_lsc(i,k)
     3785                d_q_lscst(i,k)=d_q_eva(i,k)+d_q_lsc(i,k)
     3786            endif
     3787         enddo
     3788      enddo
     3789
     3790      do i=1,klon
     3791      plul_st(i)=prfl(i,lmax_th(i)+1)+psfl(i,lmax_th(i)+1)
     3792      plul_th(i)=prfl(i,1)+psfl(i,1)
     3793      enddo
     3794      endif
     3795
     3796 
    37163797#include "phys_output_write.h"
    37173798
Note: See TracChangeset for help on using the changeset viewer.