Changeset 1998


Ignore:
Timestamp:
Mar 19, 2014, 3:14:30 PM (11 years ago)
Author:
fhourdin
Message:

Reactivation du calcul d'un zmax continu pour les thermiques

(thermcell_height.F90, thermcell_plume.F90, thermcell_dry.F90)
ouvre la voie à la réactivation d'une fermeture humide des thermiques
iflag_thermals_closure=2
(conf_phys_m.F90, thermcell.h, thermcell_main.F90)

Modification liée à la conservation de l'eau

(add_phys_tend.F90, add_pbl_tend.F90, physiq.F90)

Modifications liées au déclenchement stochastique

  1. possibilité de revenir à la Ale déterministe pour le criter ALE>|CIN| iflag_trig_bl=2, 1 par défaut)
  2. possibilité d'activer une fermeture statistique où ALP est divisé par la probabilité de déclenchement iflag_clos_bl=1 (0 par défaut, ancienne option 1 passée en =2)

Modification de l'entrainemement dans la version "stratocumulus" du

modèle du thermique (quand iflag_thermals_ed=8).
(modifie thermcell_plume.F90)

Catherine, Jean-Yves et Frédéric

Location:
LMDZ5/trunk/libf/phylmd
Files:
9 edited

Legend:

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

    r1992 r1998  
    1 SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, text)
     1SUBROUTINE add_pbl_tend(zdu, zdv, zdt, zdq, zdql, paprs, text)
    22  ! ======================================================================
    33  ! Ajoute les tendances de couche limite, soit determinees par la
     
    2929  REAL zdt(klon, klev), zdq(klon, klev), zdql(klon, klev)
    3030  CHARACTER *(*) text
     31  REAL paprs(klon,klev+1)
    3132
    3233  ! Local :
     
    4546    PRINT *, ' add_pbl_tend, zzdt ', zzdt
    4647    PRINT *, ' add_pbl_tend, zzdq ', zzdq
    47     CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, text)
     48    CALL add_phys_tend(zdu, zdv, zzdt, zzdq, zdql, paprs, text)
    4849  ELSE
    49     CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, text)
     50    CALL add_phys_tend(zdu, zdv, zdt, zdq, zdql, paprs, text)
    5051  END IF
    5152
  • LMDZ5/trunk/libf/phylmd/add_phys_tend.F90

    r1907 r1998  
    22! $Id$
    33!
    4 SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,text)
     4SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,paprs,text)
    55!======================================================================
    66! Ajoute les tendances des variables physiques aux variables
     
    1919IMPLICIT none
    2020#include "iniprint.h"
     21#include "YOMCST.h"
    2122
    2223! Arguments :
     
    2425REAL zdu(klon,klev),zdv(klon,klev)
    2526REAL zdt(klon,klev),zdq(klon,klev),zdql(klon,klev)
     27REAL paprs(klon,klev+1)
    2628CHARACTER*(*) text
    2729
     
    2931!--------
    3032REAL zt,zq
     33REAL zq_int, zqp_int, zq_new
     34
     35REAL zqp(klev)
    3136
    3237INTEGER i, k,j
     
    3540INTEGER kadrs(klon*klev)
    3641INTEGER kqadrs(klon*klev)
     42
     43LOGICAL done(klon)
    3744
    3845integer debug_level
     
    107114!=====================================================================================
    108115IF (jqbad .GT. 0) THEN
     116      done(:) = .false.                         !jyg
    109117      DO j = 1, jqbad
    110          i=jqadrs(j)
    111          if(prt_level.ge.debug_level) THEN
    112           print*,'WARNING  : EAU POUR LE POINT i rlon rlat =',i,rlon(i),rlat(i),text
    113           print*,'l    T     dT       Q     dQ    '
    114          endif
    115          DO k = 1, klev
    116            zq=q_seri(i,k)+zdq(i,k)
    117            if (zq.lt.1.e-15) then
    118               if (q_seri(i,k).lt.1.e-15) then
    119                if(prt_level.ge.debug_level) THEN
    120                 print*,' cas q_seri<1.e-15 i k q_seri zq zdq :',i,k,q_seri(i,k),zq,zdq(i,k)
    121                endif
    122                q_seri(i,k)=1.e-15
    123                zdq(i,k)=(1.e-15-q_seri(i,k))
    124               endif
    125            endif
     118        i=jqadrs(j)
     119        IF (.NOT.done(i)) THEN                  !jyg
     120          if(prt_level.ge.debug_level) THEN
     121           print*,'WARNING  : EAU POUR LE POINT i rlon rlat =',i,rlon(i),rlat(i),text
     122           print*,'l    T     dT       Q     dQ    '
     123           DO k = 1, klev
     124              write(*,'(i3,2f14.4,2e14.2)') k,t_seri(i,k),zdt(i,k),q_seri(i,k),zdq(i,k)
     125           ENDDO
     126          endif
     127!jyg<20140228 Corrections pour conservation de l'eau
     128          DO k = 1, klev
     129            zqp(k) = max(q_seri(i,k),1.e-15)
     130          ENDDO
     131          zq_int  = 0.
     132          zqp_int = 0.
     133          DO k = 1, klev
     134            zq_int  = zq_int  + q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/Rg
     135            zqp_int = zqp_int + zqp(k)     *(paprs(i,k)-paprs(i,k+1))/Rg
     136          ENDDO
     137          if(prt_level.ge.debug_level) THEN
     138           print*,' cas q_seri<1.e-15 i k zq_int zqp_int zq_int/zqp_int :', &
     139                                i, kqadrs(j), zq_int, zqp_int, zq_int/zqp_int
     140          endif
     141          DO k = 1, klev
     142            zq_new = zqp(k)*zq_int/zqp_int
     143            zdq(i,k) = zdq(i,k) + zq_new - q_seri(i,k)
     144            q_seri(i,k) = zq_new
     145          ENDDO
     146          done(i) = .true.
     147        ENDIF !(.NOT.done(i))
     148
     149!         DO k = 1, klev
    126150!           zq=q_seri(i,k)+zdq(i,k)
    127151!           if (zq.lt.1.e-15) then
    128 !              zdq(i,k)=(1.e-15-q_seri(i,k))
     152!              if (q_seri(i,k).lt.1.e-15) then
     153!               if(prt_level.ge.debug_level) THEN
     154!                print*,' cas q_seri<1.e-15 i k q_seri zq zdq :',i,k,q_seri(i,k),zq,zdq(i,k)
     155!               endif
     156!               q_seri(i,k)=1.e-15
     157!               zdq(i,k)=(1.e-15-q_seri(i,k))
     158!              endif
    129159!           endif
    130          ENDDO
     160!!           zq=q_seri(i,k)+zdq(i,k)
     161!!           if (zq.lt.1.e-15) then
     162!!              zdq(i,k)=(1.e-15-q_seri(i,k))
     163!!           endif
     164!         ENDDO
     165!jyg>
    131166      ENDDO
    132167ENDIF
  • LMDZ5/trunk/libf/phylmd/conf_phys_m.F90

    r1989 r1998  
    114114    real,save :: seuil_inversion_omp
    115115
    116     integer,SAVE :: iflag_thermals_ed_omp,iflag_thermals_optflux_omp
     116    integer,SAVE :: iflag_thermals_ed_omp,iflag_thermals_optflux_omp,iflag_thermals_closure_omp
    117117    integer,SAVE :: iflag_thermals_omp,nsplit_thermals_omp
    118118    real,save :: tau_thermals_omp,alp_bl_k_omp
     
    11591159    iflag_thermals_optflux_omp = 0
    11601160    call getin('iflag_thermals_optflux',iflag_thermals_optflux_omp)
     1161    !
     1162    !Config Key  = iflag_thermals_closure
     1163    !Config Desc =
     1164    !Config Def  = 0
     1165    !Config Help =
     1166    !
     1167    iflag_thermals_closure_omp = 1
     1168    call getin('iflag_thermals_closure',iflag_thermals_closure_omp)
     1169    !
     1170    !
    11611171    !
    11621172    !
     
    18141824    iflag_thermals_ed = iflag_thermals_ed_omp
    18151825    iflag_thermals_optflux = iflag_thermals_optflux_omp
     1826    iflag_thermals_closure = iflag_thermals_closure_omp
    18161827    nsplit_thermals = nsplit_thermals_omp
    18171828    tau_thermals = tau_thermals_omp
     
    20052016    write(lunout,*)' iflag_thermals_ed = ', iflag_thermals_ed
    20062017    write(lunout,*)' iflag_thermals_optflux = ', iflag_thermals_optflux
     2018    write(lunout,*)' iflag_thermals_closure = ', iflag_thermals_closure
    20072019    write(lunout,*)' iflag_clos = ', iflag_clos
    20082020    write(lunout,*)' type_run = ',type_run
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r1992 r1998  
    17851785     IF (klon_glo==1) THEN
    17861786        CALL add_pbl_tend &
    1787           (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf')
     1787          (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,paprs,'vdf')
    17881788     ELSE
    17891789        CALL add_phys_tend &
    1790           (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf')
     1790          (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,paprs,'vdf')
    17911791     ENDIF
    17921792     !--------------------------------------------------------------------
     
    21552155  !-----------------------------------------------------------------------------------------
    21562156  ! ajout des tendances de la diffusion turbulente
    2157   CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,'con')
     2157  CALL add_phys_tend(d_u_con,d_v_con,d_t_con,d_q_con,dql0,paprs,'con')
    21582158  !-----------------------------------------------------------------------------------------
    21592159
     
    22722272     d_t_wake(:,:)=dt_wake(:,:)*dtime
    22732273     d_q_wake(:,:)=dq_wake(:,:)*dtime
    2274      CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,'wake')
     2274     CALL add_phys_tend(du0,dv0,d_t_wake,d_q_wake,dql0,paprs,'wake')
    22752275     !-----------------------------------------------------------------------------------------
    22762276
     
    23722372           ENDIF
    23732373
     2374
    23742375           !----Initialisations
    23752376           do i=1,klon
     
    23892390                   s_trig,s2,n2
    23902391           ENDIF
     2392 
     2393!Option pour re-activer l'ancien calcul de Ale_bl (iflag_trig_bl=2)
     2394           IF (iflag_trig_bl.eq.1) then
    23912395
    23922396           !----Tirage al\'eatoire et calcul de ale_bl_trig
     
    24072411              endif
    24082412           enddo
     2413
     2414           ELSE IF (iflag_trig_bl.eq.2) then
     2415
     2416           do i=1,klon
     2417              if ( (Ale_bl(i) .gt. abs(cin(i))+1.e-10) )  then
     2418                 proba_notrig(i)=(1.-exp(-s_trig/s2(i)))** &
     2419                      (n2(i)*dtime/tau_trig(i))
     2420                 !        print *, 'proba_notrig(i) ',proba_notrig(i)
     2421                 if (random_notrig(i) .ge. proba_notrig(i)) then
     2422                    ale_bl_trig(i)=Ale_bl(i)
     2423                 else
     2424                    ale_bl_trig(i)=0.
     2425                 endif
     2426              else
     2427                 proba_notrig(i)=1.
     2428                 random_notrig(i)=0.
     2429                 ale_bl_trig(i)=0.
     2430              endif
     2431           enddo
     2432
     2433           ENDIF
     2434
    24092435           !
    24102436           IF (prt_level .GE. 10) THEN
     
    24162442
    24172443        !-----------Statistical closure-----------
    2418         if (iflag_clos_bl.ge.1) then
    2419 
     2444        if (iflag_clos_bl.eq.1) then
     2445
     2446           do i=1,klon
     2447!CR: alp probabiliste
     2448               if (ale_bl_trig(i).gt.0.) then
     2449                  alp_bl(i)=alp_bl(i)/(1.-min(proba_notrig(i),0.999))
     2450               endif
     2451           enddo       
     2452 
     2453        else if (iflag_clos_bl.eq.2) then
     2454
     2455!CR: alp calculee dans thermcell_main
    24202456           do i=1,klon
    24212457              alp_bl(i)=alp_bl_stat(i)
     
    24542490
    24552491        do i=1,klon
    2456            zmax_th(i)=pphi(i,lmax_th(i))/rg
     2492!           zmax_th(i)=pphi(i,lmax_th(i))/rg
     2493!CR:04/05/12:correction calcul zmax
     2494         zmax_th(i)=zmax0(i)
    24572495        enddo
    24582496
     
    24942532        !-----------------------------------------------------------------------------------------
    24952533        ! ajout des tendances de l'ajustement sec ou des thermiques
    2496         CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,'ajsb')
     2534        CALL add_phys_tend(du0,dv0,d_t_ajsb,d_q_ajsb,dql0,paprs,'ajsb')
    24972535        d_t_ajs(:,:)=d_t_ajs(:,:)+d_t_ajsb(:,:)
    24982536        d_q_ajs(:,:)=d_q_ajs(:,:)+d_q_ajsb(:,:)
     
    25522590  !-----------------------------------------------------------------------------------------
    25532591  ! ajout des tendances de la diffusion turbulente
    2554   CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,'lsc')
     2592  CALL add_phys_tend(du0,dv0,d_t_lsc,d_q_lsc,d_ql_lsc,paprs,'lsc')
    25552593  !-----------------------------------------------------------------------------------------
    25562594  DO k = 1, klev
     
    32203258     !-----------------------------------------------------------------------------------------
    32213259     ! ajout des tendances de la trainee de l'orographie
    3222      CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,'oro')
     3260     CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,paprs,'oro')
    32233261     !-----------------------------------------------------------------------------------------
    32243262     !
     
    32663304     !-----------------------------------------------------------------------------------------
    32673305     ! ajout des tendances de la portance de l'orographie
    3268      CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,'lif')
     3306     CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,paprs,'lif')
    32693307     !-----------------------------------------------------------------------------------------
    32703308     !
     
    32803318     !
    32813319     !  ajout des tendances
    3282      CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,'hin')
     3320     CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,paprs,'hin')
    32833321
    32843322  ENDIF
     
    32883326          rain_fall + snow_fall, zustr_gwd_rando, zvstr_gwd_rando, &
    32893327          du_gwd_rando, dv_gwd_rando)
    3290      CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0, &
     3328     CALL add_phys_tend(du_gwd_rando, dv_gwd_rando, dt0, dq0, dql0,paprs, &
    32913329          'flott_gwd_rando')
    32923330  end if
  • LMDZ5/trunk/libf/phylmd/thermcell.h

    r1907 r1998  
    1414
    1515      integer            :: iflag_coupl,iflag_clos,iflag_wake
    16       integer            :: iflag_thermals_ed,iflag_thermals_optflux
     16      integer            :: iflag_thermals_ed,iflag_thermals_optflux,iflag_thermals_closure
    1717
    18       common/ctherm1/iflag_thermals,nsplit_thermals
     18      common/ctherm1/iflag_thermals,nsplit_thermals,iflag_thermals_closure
    1919      common/ctherm2/tau_thermals,alp_bl_k
    2020      common/ctherm4/iflag_coupl,iflag_clos,iflag_wake
  • LMDZ5/trunk/libf/phylmd/thermcell_dry.F90

    r1907 r1998  
    122122               zw2(ig,l+1)=0.
    123123               lmax(ig)=l
     124!            endif
     125!CR:zmax continu 06/05/12: calcul de linter quand le thermique est stoppe par le detrainement
     126            elseif (f_star(ig,l+1).lt.0.) then
     127               linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l))  &
     128     &           -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))
     129               zw2(ig,l+1)=0.
     130               lmax(ig)=l
    124131            endif
    125 
     132!CRfin
    126133               wa_moy(ig,l+1)=sqrt(zw2(ig,l+1))
    127134
  • LMDZ5/trunk/libf/phylmd/thermcell_height.F90

    r1907 r1998  
    8484      enddo
    8585
    86       if (iflag_thermals_ed.ge.1) then
    87 
     86!     if (iflag_thermals_ed.ge.1) then
     87      if (1==0) then
     88!CR:date de quand le calcul du zmax continu etait buggue
    8889         num(:)=0.
    8990         denom(:)=0.
     
    100101       endif
    101102       enddo
    102 
    103        else
    104 
     103 
     104      else
     105!CR:Calcul de zmax continu via le linter     
    105106      do  ig=1,ngrid
    106107! calcul de zlevinter
  • LMDZ5/trunk/libf/phylmd/thermcell_main.F90

    r1978 r1998  
    513513    &                      lalim,lmin,zmax_sec,wmax_sec,lev_out)
    514514
     515 
    515516call test_ltherm(ngrid,nlay,pplev,pplay,lmin,seuil,ztv,po,ztva,zqla,f_star,zw2,'thermcell_dry  lmin  ')
    516517call test_ltherm(ngrid,nlay,pplev,pplay,lalim,seuil,ztv,po,ztva,zqla,f_star,zw2,'thermcell_dry  lalim ')
     
    533534      alim_star_clos(:,:)=alim_star(:,:)
    534535      alim_star_clos(:,:)=entr_star(:,:)+alim_star(:,:)
    535 
    536 ! Appel avec la version seche
     536!
     537!CR Appel de la fermeture seche
     538      if (iflag_thermals_closure.eq.1) then
     539
    537540      CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho,  &
    538541     &   zlev,lalim,alim_star_clos,f_star,zmax_sec,wmax_sec,f,lev_out)
     
    541544! Appel avec les zmax et wmax tenant compte de la condensation
    542545! Semble moins bien marcher
    543 !     CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho,  &
    544 !    &   zlev,lalim,alim_star,f_star,zmax,wmax,f,lev_out)
     546     else if (iflag_thermals_closure.eq.2) then
     547
     548     CALL thermcell_closure(ngrid,nlay,r_aspect_thermals,ptimestep,rho,  &
     549    &   zlev,lalim,alim_star,f_star,zmax,wmax,f,lev_out)
     550
     551     endif
     552
    545553!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    546554
     
    754762      do ig=1,ngrid
    755763        if (ok_lcl(ig)) then
    756           if ((pplay(ig,l) .ge. pcon(ig)) .and. (pplay(ig,l+1) .le. pcon(ig))) then
     764!ATTENTION,zw2 calcule en pplev
     765!          if ((pplay(ig,l) .ge. pcon(ig)) .and. (pplay(ig,l+1) .le. pcon(ig))) then
     766!          klcl(ig)=l
     767!          interp(ig)=(pcon(ig)-pplay(ig,klcl(ig)))/(pplay(ig,klcl(ig)+1)-pplay(ig,klcl(ig)))
     768!          endif
     769          if ((pplev(ig,l) .ge. pcon(ig)) .and. (pplev(ig,l+1) .le. pcon(ig))) then
    757770          klcl(ig)=l
    758           interp(ig)=(pcon(ig)-pplay(ig,klcl(ig)))/(pplay(ig,klcl(ig)+1)-pplay(ig,klcl(ig)))
     771          interp(ig)=(pcon(ig)-pplev(ig,klcl(ig)))/(pplev(ig,klcl(ig)+1)-pplev(ig,klcl(ig)))
    759772          endif
    760773        endif
     
    772785!!    enddo
    773786    do ig =1,ngrid
    774      zmax(ig)=pphi(ig,lmax(ig))/rg
     787!CR:REHABILITATION ZMAX CONTINU
     788!     zmax(ig)=pphi(ig,lmax(ig))/rg
    775789     if (ok_lcl(ig)) then
    776790      rhobarz0(ig)=rhobarz(ig,klcl(ig))+(rhobarz(ig,klcl(ig)+1) &
     
    915929!------------Closure------------------
    916930
    917   IF (iflag_clos_bl.ge.1) THEN
     931  IF (iflag_clos_bl.ge.2) THEN
    918932
    919933!-----Calcul de ALP_BL_STAT
     
    938952  enddo
    939953
    940   ENDIF ! (iflag_clos_bl.ge.1)
     954  ENDIF ! (iflag_clos_bl.ge.2)
    941955
    942956!!! fin nrlmd le 10/04/2012
  • LMDZ5/trunk/libf/phylmd/thermcell_plume.F90

    r1982 r1998  
    66     &           lalim,f0,detr_star,entr_star,f_star,csc,ztva,  &
    77     &           ztla,zqla,zqta,zha,zw2,w_est,ztva_est,zqsatth,lmix,lmix_bis,linter &
    8      &           ,lev_out,lunout1,igout)
    9 
     8     &           ,lev_out,lunout1,igout)
    109!--------------------------------------------------------------------------
    11 ! thermcell_plume: calcule les valeurs de qt, thetal et w dans l ascendance
    12 ! Last modified : Arnaud Jam 2014/02/11
    13 !                 Better representation of stratocumulus
     10!thermcell_plume: calcule les valeurs de qt, thetal et w dans l ascendance
    1411!--------------------------------------------------------------------------
    1512
     
    9592! Initialisation
    9693
     94!     print*,'THERMCELL PLUME OK'
    9795      RLvCp = RLVTT/RCPD
    9896      fact_epsilon=0.002
     
    322320!          zbuoyjam(ig,l)=RG*(ztva_est(ig,l)-ztv(ig,l))/ztv(ig,l)
    323321
    324           entr_star(ig,l)=f_star(ig,l)*zdz*zbetalpha*MAX(0.,  &
    325     &     afact*zbuoyjam(ig,l)/zw2m - fact_epsilon )
    326 
    327           entrbis=entr_star(ig,l)
     322!          entr_star(ig,l)=f_star(ig,l)*zdz*zbetalpha*MAX(0.,  &
     323!    &     afact*zbuoyjam(ig,l)/zw2m - fact_epsilon )
     324
     325!          entrbis=entr_star(ig,l)
    328326
    329327
     
    332330    &     + 0.012*(zdqt(ig,l)/zw2m)**0.5 )
    333331
    334 
    335 !           zbuoy(ig,l)=RG*(ztva_est(ig,l)-ztv(ig,l))/ztv(ig,l)
    336 !
    337 !           entr_star(ig,l)=Max(0.,f_star(ig,l)*zdz*zbetalpha*  &     
    338 !     &     afact*zbuoy(ig,l)/zw2m &
    339 !     &     - 1.*fact_epsilon)
     332          zbuoy(ig,l)=RG*(ztva_est(ig,l)-ztv(ig,l))/ztv(ig,l)
     333
     334          entr_star(ig,l)=f_star(ig,l)*zdz*zbetalpha*MAX(0.,  &
     335    &     afact*zbuoy(ig,l)/zw2m - fact_epsilon )
     336!   &     afact*zbuoy(ig,l)/zw2m - fact_epsilon+ 0.012*(zdqt(ig,l)/zw2m)**0.5)
     337
     338
     339!          entr_star(ig,l)=Max(0.,f_star(ig,l)*zdz*zbetalpha*  &     
     340!    &     afact*zbuoy(ig,l)/zw2m &
     341!    &     - 1.*fact_epsilon)
    340342
    341343         
     
    350352!        endif
    351353
    352 !print*,'alim0',l,lalim(ig),alim_star(ig,l),entrbis,f_star(ig,l)
     354!print*,'alim0',zlev(ig,l),entr_star(ig,l),detr_star(ig,l),zw2m,zbuoy(ig,l),f_star(ig,l)
    353355! Calcul du flux montant normalise
    354356      f_star(ig,l+1)=f_star(ig,l)+alim_star(ig,l)+entr_star(ig,l)  &
     
    425427     &               -zw2(ig,l))/(zw2(ig,l+1)-zw2(ig,l))
    426428           zw2(ig,l+1)=0.
     429!+CR:04/05/12:correction calcul linter pour calcul de zmax continu
     430        elseif (f_star(ig,l+1).lt.0.) then
     431           linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l))  &
     432     &               -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))
     433           zw2(ig,l+1)=0.
     434!fin CR:04/05/12
    427435        endif
    428436
     
    464472     return
    465473     end
     474
     475
    466476
    467477
     
    536546      REAL zqsatth(ngrid,klev)
    537547      REAL zta_est(ngrid,klev)
     548      REAL zbuoyjam(ngrid,klev)
    538549      REAL ztemp(ngrid),zqsat(ngrid)
    539550      REAL zdw2
     
    572583
    573584! Initialisations des variables reeles
    574 if (1==0) then
     585if (1==1) then
    575586      ztva(:,:)=ztv(:,:)
    576587      ztva_est(:,:)=ztva(:,:)
     
    598609      zw2(:,:)=0.
    599610      zbuoy(:,:)=0.
     611      zbuoyjam(:,:)=0.
    600612      gamma(:,:)=0.
    601613      zeps(:,:)=0.
     
    819831                zw2(ig,l+1)=0.
    820832                linter(ig)=l+1
    821             endif
     833!CR:04/05/12:calcul linter
     834        elseif (f_star(ig,l+1).lt.0.) then
     835           linter(ig)=(l*(f_star(ig,l+1)-f_star(ig,l))  &
     836     &               -f_star(ig,l))/(f_star(ig,l+1)-f_star(ig,l))
     837           zw2(ig,l+1)=0.
     838!fin CR:04/05/12
     839        endif
     840
    822841
    823842        if (zw2(ig,l+1).lt.0.) then
     
    862881        if (prt_level.ge.20) print*,'coucou calcul detr 470: ig, l', ig, l
    863882
     883
     884
    864885     return
    865886     end
Note: See TracChangeset for help on using the changeset viewer.