Changeset 4834


Ignore:
Timestamp:
Feb 29, 2024, 2:25:22 AM (2 months ago)
Author:
fhourdin
Message:

Suite travaille poches (Lamine, Jean-Yves, Fredho)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/lmdz_wake.F90

    r4825 r4834  
    66
    77SUBROUTINE wake(klon,klev,znatsurf, p, ph, pi, dtime, &
    8                 tenv0, qe0, omgb, &
     8                tb0, qb0, omgb, &
    99                dtdwn, dqdwn, amdwn, amup, dta, dqa, wgen, &
    1010                sigd_con, Cin, &
    1111                deltatw, deltaqw, sigmaw, asigmaw, wdens, awdens, &                  ! state variables           
    1212                dth, hw, wape, fip, gfl, &
    13                 dtls, dqls, ktopw, omgbdth, dp_omgb, tu, qu, &
     13                dtls, dqls, ktopw, omgbdth, dp_omgb, tx, qx, &
    1414                dtke, dqke, omg, dp_deltomg, wkspread, cstar, &
    1515                d_deltat_gw, &                                                      ! tendencies
     
    8080
    8181  ! aire : aire de la maille
    82   ! tenv0  : temperature dans l'environnement  (K)
    83   ! qe0  : humidite dans l'environnement     (kg/kg)
     82  ! tb0  : horizontal average of temperature  (K)
     83  ! qb0  : horizontal average of humidity   (kg/kg)
    8484  ! omgb : vitesse verticale moyenne sur la maille (Pa/s)
    8585  ! dtdwn: source de chaleur due aux descentes (K/s)
     
    101101  ! Variables internes :
    102102
    103   ! rhow : masse volumique de la poche froide
    104   ! rho  : environment density at P levels
    105   ! rhoh : environment density at Ph levels
    106   ! tenv   : environment temperature | may change within
    107   ! qe   : environment humidity    | sub-time-stepping
    108   ! the  : environment potential temperature
    109   ! thu  : potential temperature in undisturbed area
    110   ! tu   :  temperature  in undisturbed area
    111   ! qu   : humidity in undisturbed area
     103  ! rho  : mean density at P levels
     104  ! rhoh : mean density at Ph levels
     105  ! tb   : mean temperature | may change within
     106  ! qb   : mean humidity    | sub-time-stepping
     107  ! thb  : mean potential temperature
     108  ! thx  : potential temperature in (x) area
     109  ! tx   : temperature  in (x) area
     110  ! qx   : humidity in (x) area
    112111  ! dp_omgb: vertical gradient og LS omega
    113112  ! omgbw  : wake average vertical omega
     
    115114  ! omgbdq : flux of Delta_q transported by LS omega
    116115  ! dth  : potential temperature diff. wake-undist.
    117   ! th1  : first pot. temp. for vertical advection (=thu)
     116  ! th1  : first pot. temp. for vertical advection (=thx)
    118117  ! th2  : second pot. temp. for vertical advection (=thw)
    119118  ! q1   : first humidity for vertical advection
    120119  ! q2   : second humidity for vertical advection
    121   ! d_deltatw   : terme de redistribution pour deltatw
    122   ! d_deltaqw   : terme de redistribution pour deltaqw
    123   ! deltatw0   : deltatw initial
    124   ! deltaqw0   : deltaqw initial
     120  ! d_deltatw   : redistribution term for deltatw
     121  ! d_deltaqw   : redistribution term for deltaqw
     122  ! deltatw0   : initial deltatw
     123  ! deltaqw0   : initial deltaqw
    125124  ! hw0    : wake top hight (defined as the altitude at which deltatw=0)
    126125  ! amflux : horizontal mass flux through wake boundary
    127126  ! wdens_ref: initial number of wakes per unit area (3D) or per
    128   ! unit length (2D), at the beginning of each time step
     127  !            unit length (2D), at the beginning of each time step
    129128  ! Tgw    : 1 sur la periode de onde de gravite
    130129  ! Cgw    : vitesse de propagation de onde de gravite
    131   ! LL     : distance entre 2 poches
     130  ! LL     : distance between 2 wakes
    132131
    133132  ! -------------------------------------------------------------------------
     
    145144  REAL, DIMENSION (klon, klev),     INTENT(IN)          :: omgb
    146145  REAL,                             INTENT(IN)          :: dtime
    147   REAL, DIMENSION (klon, klev),     INTENT(IN)          :: tenv0, qe0
     146  REAL, DIMENSION (klon, klev),     INTENT(IN)          :: tb0, qb0
    148147  REAL, DIMENSION (klon, klev),     INTENT(IN)          :: dtdwn, dqdwn
    149148  REAL, DIMENSION (klon, klev),     INTENT(IN)          :: amdwn, amup
     
    166165
    167166  REAL, DIMENSION (klon, klev),     INTENT(OUT)         :: dth
    168   REAL, DIMENSION (klon, klev),     INTENT(OUT)         :: tu, qu
     167  REAL, DIMENSION (klon, klev),     INTENT(OUT)         :: tx, qx
    169168  REAL, DIMENSION (klon, klev),     INTENT(OUT)         :: dtls, dqls
    170169  REAL, DIMENSION (klon, klev),     INTENT(OUT)         :: dtke, dqke
     
    195194  REAL, DIMENSION (klon, klev)                          :: deltatw0
    196195  REAL, DIMENSION (klon, klev)                          :: deltaqw0
    197   REAL, DIMENSION (klon, klev)                          :: tenv, qe
     196  REAL, DIMENSION (klon, klev)                          :: tb, qb
    198197
    199198  ! Variables liees a la dynamique de population 1
     
    239238  ! Sub-timestep tendencies and related variables
    240239  REAL, DIMENSION (klon, klev)                          :: d_deltatw, d_deltaqw
    241   REAL, DIMENSION (klon, klev)                          :: d_tenv, d_qe
     240  REAL, DIMENSION (klon, klev)                          :: d_tb, d_qb
    242241  REAL, DIMENSION (klon)                                :: d_wdens, d_awdens, d_sigmaw, d_asigmaw
    243242  REAL, DIMENSION (klon)                                :: d_sig_gen, d_sig_death, d_sig_col, d_sig_spread, d_sig_bnd
     
    261260  REAL                                                  :: d_wdens_targ
    262261
    263   REAL, DIMENSION (klon)                                :: sum_thu, sum_tu, sum_qu, sum_thvu
    264   REAL, DIMENSION (klon)                                :: sum_dq, sum_rho
     262  REAL, DIMENSION (klon)                                :: sum_thx, sum_tx, sum_qx, sum_thvx
     263  REAL, DIMENSION (klon)                                :: sum_dq
    265264  REAL, DIMENSION (klon)                                :: sum_dtdwn, sum_dqdwn
    266   REAL, DIMENSION (klon)                                :: av_thu, av_tu, av_qu, av_thvu
    267   REAL, DIMENSION (klon)                                :: av_dth, av_dq, av_rho
     265  REAL, DIMENSION (klon)                                :: av_thx, av_tx, av_qx, av_thvx
     266  REAL, DIMENSION (klon)                                :: av_dth, av_dq
    268267  REAL, DIMENSION (klon)                                :: av_dtdwn, av_dqdwn
    269268
    270   REAL, DIMENSION (klon, klev)                          :: rho, rhow
     269  REAL, DIMENSION (klon, klev)                          :: rho
    271270  REAL, DIMENSION (klon, klev+1)                        :: rhoh
    272   REAL, DIMENSION (klon, klev)                          :: rhow_moyen
    273271  REAL, DIMENSION (klon, klev)                          :: zh
    274272  REAL, DIMENSION (klon, klev+1)                        :: zhh
    275   REAL, DIMENSION (klon, klev)                          :: epaisseur1, epaisseur2
    276 
    277   REAL, DIMENSION (klon, klev)                          :: the, thu
     273
     274  REAL, DIMENSION (klon, klev)                          :: thb, thx
    278275
    279276  REAL, DIMENSION (klon, klev)                          :: omgbw
     
    312309  LOGICAL                                               :: first_call=.true.
    313310
     311
     312  !!-- variables liees au nouveau calcul de ptop et hw
     313  REAL, DIMENSION (klon, klev)                          :: int_dth
     314  REAL, DIMENSION (klon, klev)                          :: zzz, dzzz
     315  REAL                                                  :: epsil
     316  REAL, DIMENSION (klon)                                :: ptop1
     317  INTEGER, DIMENSION (klon)                             :: ktop1
     318  REAL, DIMENSION (klon)                                :: omega
     319  REAL, DIMENSION (klon)                                :: h_zzz
     320
     321! print*,'WAKE LJYF'
    314322
    315323  ! -------------------------------------------------------------------------
     
    388396
    389397  delta_t_min = 0.2
     398! delta_t_min = 0.001
    390399
    391400  ! 1. - Save initial values, initialize tendencies, initialize output fields
     
    398407!!      deltatw0(i, k) = deltatw(i, k)
    399408!!      deltaqw0(i, k) = deltaqw(i, k)
    400 !!      tenv(i, k) = tenv0(i, k)
    401 !!      qe(i, k) = qe0(i, k)
     409!!      tb(i, k) = tb0(i, k)
     410!!      qb(i, k) = qb0(i, k)
    402411!!      dtls(i, k) = 0.
    403412!!      dqls(i, k) = 0.
    404413!!      d_deltat_gw(i, k) = 0.
    405 !!      d_tenv(i, k) = 0.
    406 !!      d_qe(i, k) = 0.
     414!!      d_tb(i, k) = 0.
     415!!      d_qb(i, k) = 0.
    407416!!      d_deltatw(i, k) = 0.
    408417!!      d_deltaqw(i, k) = 0.
     
    416425      deltatw0(:,:) = deltatw(:,:)
    417426      deltaqw0(:,:) = deltaqw(:,:)
    418       tenv(:,:) = tenv0(:,:)
    419       qe(:,:) = qe0(:,:)
     427      tb(:,:) = tb0(:,:)
     428      qb(:,:) = qb0(:,:)
    420429      dtls(:,:) = 0.
    421430      dqls(:,:) = 0.
    422431      d_deltat_gw(:,:) = 0.
    423       d_tenv(:,:) = 0.
    424       d_qe(:,:) = 0.
     432      d_tb(:,:) = 0.
     433      d_qb(:,:) = 0.
    425434      d_deltatw(:,:) = 0.
    426435      d_deltaqw(:,:) = 0.
     
    544553!<jyg
    545554dth(:,:) = 0.
    546 tu(:,:) = 0.
    547 qu(:,:) = 0.
     555tx(:,:) = 0.
     556qx(:,:) = 0.
    548557dtke(:,:) = 0.
    549558dqke(:,:) = 0.
     
    591600    ktop(i) = 0
    592601    kupper(i) = 0
    593     sum_thu(i) = 0.
    594     sum_tu(i) = 0.
    595     sum_qu(i) = 0.
    596     sum_thvu(i) = 0.
     602    sum_thx(i) = 0.
     603    sum_tx(i) = 0.
     604    sum_qx(i) = 0.
     605    sum_thvx(i) = 0.
    597606    sum_dth(i) = 0.
    598607    sum_dq(i) = 0.
    599     sum_rho(i) = 0.
    600608    sum_dtdwn(i) = 0.
    601609    sum_dqdwn(i) = 0.
    602610
    603     av_thu(i) = 0.
    604     av_tu(i) = 0.
    605     av_qu(i) = 0.
    606     av_thvu(i) = 0.
     611    av_thx(i) = 0.
     612    av_tx(i) = 0.
     613    av_qx(i) = 0.
     614    av_thvx(i) = 0.
    607615    av_dth(i) = 0.
    608616    av_dq(i) = 0.
    609     av_rho(i) = 0.
    610617    av_dtdwn(i) = 0.
    611618    av_dqdwn(i) = 0.
     
    620627  DO k = 1, klev
    621628    DO i = 1, klon
    622       ! write(*,*)'wake 1',i,k,RD,tenv(i,k)
    623       rho(i, k) = p(i, k)/(RD*tenv(i,k))
     629      ! write(*,*)'wake 1',i,k,RD,tb(i,k)
     630      rho(i, k) = p(i, k)/(RD*tb(i,k))
    624631      ! write(*,*)'wake 2',rho(i,k)
    625632      IF (k==1) THEN
    626         ! write(*,*)'wake 3',i,k,rd,tenv(i,k)
    627         rhoh(i, k) = ph(i, k)/(RD*tenv(i,k))
    628         ! write(*,*)'wake 4',i,k,rd,tenv(i,k)
     633        ! write(*,*)'wake 3',i,k,rd,tb(i,k)
     634        rhoh(i, k) = ph(i, k)/(RD*tb(i,k))
     635        ! write(*,*)'wake 4',i,k,rd,tb(i,k)
    629636        zhh(i, k) = 0
    630637      ELSE
    631         ! write(*,*)'wake 5',rd,(tenv(i,k)+tenv(i,k-1))
    632         rhoh(i, k) = ph(i, k)*2./(RD*(tenv(i,k)+tenv(i,k-1)))
     638        ! write(*,*)'wake 5',rd,(tb(i,k)+tb(i,k-1))
     639        rhoh(i, k) = ph(i, k)*2./(RD*(tb(i,k)+tb(i,k-1)))
    633640        ! write(*,*)'wake 6',(-rhoh(i,k)*RG)+zhh(i,k-1)
    634641        zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*RG) + zhh(i, k-1)
    635642      END IF
    636643      ! write(*,*)'wake 7',ppi(i,k)
    637       the(i, k) = tenv(i, k)/ppi(i, k)
    638       thu(i, k) = (tenv(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
    639       tu(i, k) = tenv(i, k) - deltatw(i, k)*sigmaw(i)
    640       qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
    641       ! write(*,*)'wake 8',(RD*(tenv(i,k)+deltatw(i,k)))
    642       rhow(i, k) = p(i, k)/(RD*(tenv(i,k)+deltatw(i,k)))
     644      thb(i, k) = tb(i, k)/ppi(i, k)
     645      thx(i, k) = (tb(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
     646      tx(i, k) = tb(i, k) - deltatw(i, k)*sigmaw(i)
     647      qx(i, k) = qb(i, k) - deltaqw(i, k)*sigmaw(i)
     648      ! write(*,*)'wake 8',(RD*(tb(i,k)+deltatw(i,k)))
    643649      dth(i, k) = deltatw(i, k)/ppi(i, k)
    644650    END DO
     
    650656        n2(i, k) = 0
    651657      ELSE
    652         n2(i, k) = amax1(0., -RG**2/the(i,k)*rho(i,k)*(the(i,k+1)-the(i,k-1))/ &
     658        n2(i, k) = amax1(0., -RG**2/thb(i,k)*rho(i,k)*(thb(i,k+1)-thb(i,k-1))/ &
    653659                             (p(i,k+1)-p(i,k-1)))
    654660      END IF
     
    667673  END DO
    668674
    669   ! Calcul de la masse volumique moyenne de la colonne   (bdlmd)
    670   ! -----------------------------------------------------------------
    671 
    672   DO k = 1, klev
    673     DO i = 1, klon
    674       epaisseur1(i, k) = 0.
    675       epaisseur2(i, k) = 0.
    676     END DO
    677   END DO
    678 
    679   DO i = 1, klon
    680     epaisseur1(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*RG) + 1.
    681     epaisseur2(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*RG) + 1.
    682     rhow_moyen(i, 1) = rhow(i, 1)
    683   END DO
    684 
    685   DO k = 2, klev
    686     DO i = 1, klon
    687       epaisseur1(i, k) = -(ph(i,k+1)-ph(i,k))/(rho(i,k)*RG) + 1.
    688       epaisseur2(i, k) = epaisseur2(i, k-1) + epaisseur1(i, k)
    689       rhow_moyen(i, k) = (rhow_moyen(i,k-1)*epaisseur2(i,k-1)+rhow(i,k)* &
    690         epaisseur1(i,k))/epaisseur2(i, k)
    691     END DO
    692   END DO
    693 
    694675 
    695676  ! Choose an integration bound well above wake top
     
    698679  ! Determine Wake top pressure (Ptop) from buoyancy integral
    699680  ! --------------------------------------------------------
     681
    700682   Do i=1, klon
    701683       wk_adv(i) = .True.
    702684   Enddo
    703685   Call pkupper (klon, klev, ptop, ph, p, pupper, kupper, &
    704                     dth, hw0, rho, &
    705                     ktop, wk_adv)
     686                    dth, hw0, rho, delta_t_min, &
     687                    ktop, wk_adv, h_zzz, ptop1, ktop1)
    706688   
    707689   IF (prt_level>=10) THEN
     
    736718  ! --------------------------------------
    737719
    738   ! Initialize sum_thvu to 1st level virt. pot. temp.
     720  ! Initialize sum_thvx to 1st level virt. pot. temp.
    739721
    740722  DO i = 1, klon
    741723    z(i) = 1.
    742724    dz(i) = 1.
    743     sum_thvu(i) = thu(i, 1)*(1.+epsim1*qu(i,1))*dz(i)
     725    sum_thvx(i) = thx(i, 1)*(1.+epsim1*qx(i,1))*dz(i)
    744726    sum_dth(i) = 0.
    745727  END DO
     
    751733              ! LJYF : ecriture pas sympa avec un tableau z(i) qui n'est pas utilise come tableau
    752734        z(i) = z(i) + dz(i)
    753         sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
    754         sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
    755         sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
    756         sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+epsim1*qu(i,k))*dz(i)
     735        sum_thx(i) = sum_thx(i) + thx(i, k)*dz(i)
     736        sum_tx(i) = sum_tx(i) + tx(i, k)*dz(i)
     737        sum_qx(i) = sum_qx(i) + qx(i, k)*dz(i)
     738        sum_thvx(i) = sum_thvx(i) + thx(i, k)*(1.+epsim1*qx(i,k))*dz(i)
    757739        sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
    758740        sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
    759         sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
    760741        sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
    761742        sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
     
    777758
    778759  DO i = 1, klon
    779     av_thu(i) = sum_thu(i)/hw0(i)
    780     av_tu(i) = sum_tu(i)/hw0(i)
    781     av_qu(i) = sum_qu(i)/hw0(i)
    782     av_thvu(i) = sum_thvu(i)/hw0(i)
     760    av_thx(i) = sum_thx(i)/hw0(i)
     761    av_tx(i) = sum_tx(i)/hw0(i)
     762    av_qx(i) = sum_qx(i)/hw0(i)
     763    av_thvx(i) = sum_thvx(i)/hw0(i)
    783764    ! av_thve = sum_thve/hw0
    784765    av_dth(i) = sum_dth(i)/hw0(i)
    785766    av_dq(i) = sum_dq(i)/hw0(i)
    786     av_rho(i) = sum_rho(i)/hw0(i)
    787767    av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
    788768    av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
    789769
    790770    wape(i) = -RG*hw0(i)*(av_dth(i)+ &
    791         epsim1*(av_thu(i)*av_dq(i)+av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
     771        epsim1*(av_thx(i)*av_dq(i)+av_dth(i)*av_qx(i)+av_dth(i)*av_dq(i)))/av_thvx(i)
    792772
    793773  END DO
     
    852832  ! --------------------------
    853833  DO i = 1, klon
    854     q0_min(i) = min((qe(i,1)-sigmaw(i)*deltaqw(i,1)),  &
    855                     (qe(i,1)+(1.-sigmaw(i))*deltaqw(i,1)))
     834    q0_min(i) = min((qb(i,1)-sigmaw(i)*deltaqw(i,1)),  &
     835                    (qb(i,1)+(1.-sigmaw(i))*deltaqw(i,1)))
    856836  END DO
    857837  DO k = 2, klev
    858838    DO i = 1, klon
    859       q1_min(i) = min((qe(i,k)-sigmaw(i)*deltaqw(i,k)), &
    860                       (qe(i,k)+(1.-sigmaw(i))*deltaqw(i,k)))
     839      q1_min(i) = min((qb(i,k)-sigmaw(i)*deltaqw(i,k)), &
     840                      (qb(i,k)+(1.-sigmaw(i))*deltaqw(i,k)))
    861841      IF (q1_min(i)<=q0_min(i)) THEN
    862842        q0_min(i) = q1_min(i)
     
    890870  ! ------------------------------------------------------------------------
    891871  !
    892   wk_adv = .True.
    893872  DO isubstep = 1, nsub
    894873  !
     
    896875    ! wk_adv is the logical flag enabling wake evolution in the time advance
    897876    ! loop
    898    
    899877    DO i = 1, klon
    900878      wk_adv(i) = ok_qx_qw(i) .AND. alpha(i) >= 1.
     
    11631141      IF (wk_adv(i)) THEN
    11641142        omgtop(i) = -rho(i, ktop(i))*RG*omgtop(i)
    1165         dp_deltomg(i, 1) = omgtop(i)/(ptop(i)-ph(i,1))
     1143!! LJYF        dp_deltomg(i, 1) = omgtop(i)/(ptop(i)-ph(i,1))
     1144        dp_deltomg(i, 1) = omgtop(i)/min(ptop(i)-ph(i,1),-smallestreal)
    11661145      END IF
    11671146    END DO
     
    12681247        IF (wk_adv(i) .AND. k<=kupper(i)+1) THEN
    12691248          dth(i, k) = deltatw(i, k)/ppi(i, k)
    1270           th1(i, k) = the(i, k) - sigmaw(i)*dth(i, k) ! undisturbed area
    1271           th2(i, k) = the(i, k) + (1.-sigmaw(i))*dth(i, k) ! wake
    1272           q1(i, k) = qe(i, k) - sigmaw(i)*deltaqw(i, k) ! undisturbed area
    1273           q2(i, k) = qe(i, k) + (1.-sigmaw(i))*deltaqw(i, k) ! wake
     1249          th1(i, k) = thb(i, k) - sigmaw(i)*dth(i, k) ! undisturbed area
     1250          th2(i, k) = thb(i, k) + (1.-sigmaw(i))*dth(i, k) ! wake
     1251          q1(i, k) = qb(i, k) - sigmaw(i)*deltaqw(i, k) ! undisturbed area
     1252          q2(i, k) = qb(i, k) + (1.-sigmaw(i))*deltaqw(i, k) ! wake
    12741253        END IF
    12751254      END DO
     
    13531332          ! C
    13541333          ! -----------------------------------------------------------------
    1355           d_tenv(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)- &
     1334          d_tb(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)- &
    13561335                                  rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/ &
    13571336                                 (ph(i,k)-ph(i,k+1)) &
     
    13591338                                 (ph(i,k)-ph(i,k+1)) )*ppi(i, k)
    13601339
    1361           d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)- &
     1340          d_qb(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)- &
    13621341                                  rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/ &
    13631342                                 (ph(i,k)-ph(i,k+1)) &
     
    13651344                                 (ph(i,k)-ph(i,k+1)) )
    13661345        ELSE IF (wk_adv(i) .AND. k==kupper(i)) THEN
    1367           d_tenv(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)/(ph(i,k)-ph(i,k+1)))*ppi(i, k)
    1368 
    1369           d_qe(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)/(ph(i,k)-ph(i,k+1)))
     1346          d_tb(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i,k)/(ph(i,k)-ph(i,k+1)))*ppi(i, k)
     1347
     1348          d_qb(i, k) = dtimesub*(rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i,k)/(ph(i,k)-ph(i,k+1)))
    13701349
    13711350        END IF
     
    15151494    ! Scale tendencies so that water vapour remains positive in w and x.
    15161495
    1517     CALL wake_vec_modulation(klon, klev, wk_adv, epsilon_loc, qe, d_qe, deltaqw, &
     1496    CALL wake_vec_modulation(klon, klev, wk_adv, epsilon_loc, qb, d_qb, deltaqw, &
    15181497      d_deltaqw, sigmaw, d_sigmaw, alpha)
    15191498    !
     
    15341513      DO i = 1, klon
    15351514        IF (wk_adv(i) .AND. k<=kupper(i)) THEN
    1536           d_tenv(i, k) = alpha(i)*d_tenv(i, k)
    1537           d_qe(i, k) = alpha(i)*d_qe(i, k)
     1515          d_tb(i, k) = alpha(i)*d_tb(i, k)
     1516          d_qb(i, k) = alpha(i)*d_qb(i, k)
    15381517          d_deltatw(i, k) = alpha(i)*d_deltatw(i, k)
    15391518          d_deltaqw(i, k) = alpha(i)*d_deltaqw(i, k)
     
    15541533      DO i = 1, klon
    15551534        IF (wk_adv(i) .AND. k<=kupper(i)) THEN
    1556           dtls(i, k) = dtls(i, k) + d_tenv(i, k)
    1557           dqls(i, k) = dqls(i, k) + d_qe(i, k)
     1535          dtls(i, k) = dtls(i, k) + d_tb(i, k)
     1536          dqls(i, k) = dqls(i, k) + d_qb(i, k)
    15581537          ! cc nrlmd
    15591538          d_deltatw2(i, k) = d_deltatw2(i, k) + d_deltatw(i, k)
     
    15661545      DO i = 1, klon
    15671546        IF (wk_adv(i) .AND. k<=kupper(i)) THEN
    1568           tenv(i, k) = tenv0(i, k) + dtls(i, k)
    1569           qe(i, k) = qe0(i, k) + dqls(i, k)
    1570           the(i, k) = tenv(i, k)/ppi(i, k)
     1547          tb(i, k) = tb0(i, k) + dtls(i, k)
     1548          qb(i, k) = qb0(i, k) + dqls(i, k)
     1549          thb(i, k) = tb(i, k)/ppi(i, k)
    15711550          deltatw(i, k) = deltatw(i, k) + d_deltatw(i, k)
    15721551          deltaqw(i, k) = deltaqw(i, k) + d_deltaqw(i, k)
    15731552          dth(i, k) = deltatw(i, k)/ppi(i, k)
    1574           ! c      print*,'k,qx,qw',k,qe(i,k)-sigmaw(i)*deltaqw(i,k)
    1575           ! c     $        ,qe(i,k)+(1-sigmaw(i))*deltaqw(i,k)
     1553          ! c      print*,'k,qx,qw',k,qb(i,k)-sigmaw(i)*deltaqw(i,k)
     1554          ! c     $        ,qb(i,k)+(1-sigmaw(i))*deltaqw(i,k)
    15761555        END IF
    15771556      END DO
     
    17321711
    17331712   Call pkupper (klon, klev, ptop, ph, p, pupper, kupper, &
    1734                     dth, hw, rho, &
    1735                     ktop, wk_adv)
    1736  
     1713                    dth, hw, rho, delta_t_min, &
     1714                    ktop, wk_adv, h_zzz, ptop1, ktop1)
    17371715
    17381716    ! 5/ Set deltatw & deltaqw to 0 above kupper
     
    17531731    DO i = 1, klon
    17541732      IF (wk_adv(i)) THEN !!! nrlmd
    1755         sum_thu(i) = 0.
    1756         sum_tu(i) = 0.
    1757         sum_qu(i) = 0.
    1758         sum_thvu(i) = 0.
     1733        sum_thx(i) = 0.
     1734        sum_tx(i) = 0.
     1735        sum_qx(i) = 0.
     1736        sum_thvx(i) = 0.
    17591737        sum_dth(i) = 0.
    17601738        sum_dq(i) = 0.
    1761         sum_rho(i) = 0.
    17621739        sum_dtdwn(i) = 0.
    17631740        sum_dqdwn(i) = 0.
    17641741
    1765         av_thu(i) = 0.
    1766         av_tu(i) = 0.
    1767         av_qu(i) = 0.
    1768         av_thvu(i) = 0.
     1742        av_thx(i) = 0.
     1743        av_tx(i) = 0.
     1744        av_qx(i) = 0.
     1745        av_thvx(i) = 0.
    17691746        av_dth(i) = 0.
    17701747        av_dq(i) = 0.
    1771         av_rho(i) = 0.
    17721748        av_dtdwn(i) = 0.
    17731749        av_dqdwn(i) = 0.
     
    17781754    ! --------------------------------------
    17791755
    1780     ! Initialize sum_thvu to 1st level virt. pot. temp.
     1756    ! Initialize sum_thvx to 1st level virt. pot. temp.
    17811757
    17821758    DO i = 1, klon
     
    17841760        z(i) = 1.
    17851761        dz(i) = 1.
    1786         sum_thvu(i) = thu(i, 1)*(1.+epsim1*qu(i,1))*dz(i)
     1762        sum_thvx(i) = thx(i, 1)*(1.+epsim1*qx(i,1))*dz(i)
    17871763        sum_dth(i) = 0.
    17881764      END IF
     
    17951771          IF (dz(i)>0) THEN
    17961772            z(i) = z(i) + dz(i)
    1797             sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
    1798             sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
    1799             sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
    1800             sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+epsim1*qu(i,k))*dz(i)
     1773            sum_thx(i) = sum_thx(i) + thx(i, k)*dz(i)
     1774            sum_tx(i) = sum_tx(i) + tx(i, k)*dz(i)
     1775            sum_qx(i) = sum_qx(i) + qx(i, k)*dz(i)
     1776            sum_thvx(i) = sum_thvx(i) + thx(i, k)*(1.+epsim1*qx(i,k))*dz(i)
    18011777            sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
    18021778            sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
    1803             sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
    18041779            sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
    18051780            sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
     
    18251800    DO i = 1, klon
    18261801      IF (wk_adv(i)) THEN !!! nrlmd
    1827         av_thu(i) = sum_thu(i)/hw0(i)
    1828         av_tu(i) = sum_tu(i)/hw0(i)
    1829         av_qu(i) = sum_qu(i)/hw0(i)
    1830         av_thvu(i) = sum_thvu(i)/hw0(i)
     1802        av_thx(i) = sum_thx(i)/hw0(i)
     1803        av_tx(i) = sum_tx(i)/hw0(i)
     1804        av_qx(i) = sum_qx(i)/hw0(i)
     1805        av_thvx(i) = sum_thvx(i)/hw0(i)
    18311806        av_dth(i) = sum_dth(i)/hw0(i)
    18321807        av_dq(i) = sum_dq(i)/hw0(i)
    1833         av_rho(i) = sum_rho(i)/hw0(i)
    18341808        av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
    18351809        av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
    18361810
    1837         wape(i) = -RG*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) + &
    1838                               av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
     1811        wape(i) = -RG*hw0(i)*(av_dth(i)+epsim1*(av_thx(i)*av_dq(i) + &
     1812                              av_dth(i)*av_qx(i)+av_dth(i)*av_dq(i)))/av_thvx(i)
    18391813      END IF
    18401814    END DO
     
    18861860  !
    18871861  END DO   ! isubstep end sub-timestep loop
    1888 
    18891862  !
    18901863  ! ------------------------------------------------------------------------
     
    19151888      ! cc
    19161889      z(i) = 0.
    1917       sum_thu(i) = 0.
    1918       sum_tu(i) = 0.
    1919       sum_qu(i) = 0.
    1920       sum_thvu(i) = 0.
     1890      sum_thx(i) = 0.
     1891      sum_tx(i) = 0.
     1892      sum_qx(i) = 0.
     1893      sum_thvx(i) = 0.
    19211894      sum_dth(i) = 0.
    19221895      sum_half_dth(i) = 0.
    19231896      sum_dq(i) = 0.
    1924       sum_rho(i) = 0.
    19251897      sum_dtdwn(i) = 0.
    19261898      sum_dqdwn(i) = 0.
    19271899
    1928       av_thu(i) = 0.
    1929       av_tu(i) = 0.
    1930       av_qu(i) = 0.
    1931       av_thvu(i) = 0.
     1900      av_thx(i) = 0.
     1901      av_tx(i) = 0.
     1902      av_qx(i) = 0.
     1903      av_thvx(i) = 0.
    19321904      av_dth(i) = 0.
    19331905      av_dq(i) = 0.
    1934       av_rho(i) = 0.
    19351906      av_dtdwn(i) = 0.
    19361907      av_dqdwn(i) = 0.
     
    19471918      IF (ok_qx_qw(i)) THEN
    19481919        ! cc
    1949         rho(i, k) = p(i, k)/(RD*tenv(i,k))
     1920        rho(i, k) = p(i, k)/(RD*tb(i,k))
    19501921        IF (k==1) THEN
    1951           rhoh(i, k) = ph(i, k)/(RD*tenv(i,k))
     1922          rhoh(i, k) = ph(i, k)/(RD*tb(i,k))
    19521923          zhh(i, k) = 0
    19531924        ELSE
    1954           rhoh(i, k) = ph(i, k)*2./(RD*(tenv(i,k)+tenv(i,k-1)))
     1925          rhoh(i, k) = ph(i, k)*2./(RD*(tb(i,k)+tb(i,k-1)))
    19551926          zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*RG) + zhh(i, k-1)
    19561927        END IF
    1957         the(i, k) = tenv(i, k)/ppi(i, k)
    1958         thu(i, k) = (tenv(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
    1959         tu(i, k) = tenv(i, k) - deltatw(i, k)*sigmaw(i)
    1960         qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
    1961         rhow(i, k) = p(i, k)/(RD*(tenv(i,k)+deltatw(i,k)))
     1928        thb(i, k) = tb(i, k)/ppi(i, k)
     1929        thx(i, k) = (tb(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
     1930        tx(i, k) = tb(i, k) - deltatw(i, k)*sigmaw(i)
     1931        qx(i, k) = qb(i, k) - deltaqw(i, k)*sigmaw(i)
    19621932        dth(i, k) = deltatw(i, k)/ppi(i, k)
    19631933      END IF
     
    19681938  ! -----------------------------------------------------------
    19691939
    1970   ! Initialize sum_thvu to 1st level virt. pot. temp.
     1940  ! Initialize sum_thvx to 1st level virt. pot. temp.
    19711941
    19721942  DO i = 1, klon
     
    19771947      dz(i) = 1.
    19781948      dz_half(i) = 1.
    1979       sum_thvu(i) = thu(i, 1)*(1.+epsim1*qu(i,1))*dz(i)
     1949      sum_thvx(i) = thx(i, 1)*(1.+epsim1*qx(i,1))*dz(i)
    19801950      sum_dth(i) = 0.
    19811951    END IF
     
    19911961        IF (dz(i)>0) THEN
    19921962          z(i) = z(i) + dz(i)
    1993           sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
    1994           sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
    1995           sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
    1996           sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+epsim1*qu(i,k))*dz(i)
     1963          sum_thx(i) = sum_thx(i) + thx(i, k)*dz(i)
     1964          sum_tx(i) = sum_tx(i) + tx(i, k)*dz(i)
     1965          sum_qx(i) = sum_qx(i) + qx(i, k)*dz(i)
     1966          sum_thvx(i) = sum_thvx(i) + thx(i, k)*(1.+epsim1*qx(i,k))*dz(i)
    19971967          sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
    19981968          sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
    1999           sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
    20001969          sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
    20011970          sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
     
    20271996    IF (ok_qx_qw(i)) THEN
    20281997      ! cc
    2029       av_thu(i) = sum_thu(i)/hw0(i)
    2030       av_tu(i) = sum_tu(i)/hw0(i)
    2031       av_qu(i) = sum_qu(i)/hw0(i)
    2032       av_thvu(i) = sum_thvu(i)/hw0(i)
     1998      av_thx(i) = sum_thx(i)/hw0(i)
     1999      av_tx(i) = sum_tx(i)/hw0(i)
     2000      av_qx(i) = sum_qx(i)/hw0(i)
     2001      av_thvx(i) = sum_thvx(i)/hw0(i)
    20332002      av_dth(i) = sum_dth(i)/hw0(i)
    20342003      av_dq(i) = sum_dq(i)/hw0(i)
    2035       av_rho(i) = sum_rho(i)/hw0(i)
    20362004      av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
    20372005      av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
    20382006
    2039       wape2(i) = -RG*hw0(i)*(av_dth(i)+epsim1*(av_thu(i)*av_dq(i) + &
    2040                              av_dth(i)*av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
     2007      wape2(i) = -RG*hw0(i)*(av_dth(i)+epsim1*(av_thx(i)*av_dq(i) + &
     2008                             av_dth(i)*av_qx(i)+av_dth(i)*av_dq(i)))/av_thvx(i)
    20412009    END IF
    20422010  END DO
     
    23742342END SUBROUTINE wake
    23752343
    2376 SUBROUTINE wake_vec_modulation(nlon, nl, wk_adv, epsilon_loc, qe, d_qe, deltaqw, &
     2344SUBROUTINE wake_vec_modulation(nlon, nl, wk_adv, epsilon_loc, qb, d_qb, deltaqw, &
    23772345    d_deltaqw, sigmaw, d_sigmaw, alpha)
    23782346  ! ------------------------------------------------------
     
    23842352
    23852353  ! Input
    2386   REAL qe(nlon, nl), d_qe(nlon, nl)
     2354  REAL qb(nlon, nl), d_qb(nlon, nl)
    23872355  REAL deltaqw(nlon, nl), d_deltaqw(nlon, nl)
    23882356  REAL sigmaw(nlon), d_sigmaw(nlon)
     
    24102378    DO i = 1, nlon
    24112379      IF (wk_adv(i)) THEN
    2412         x = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + d_qe(i, k) + &
     2380        x = qb(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + d_qb(i, k) + &
    24132381          (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - d_sigmaw(i) * &
    24142382          (deltaqw(i,k)+d_deltaqw(i,k))
    24152383        a = -d_sigmaw(i)*d_deltaqw(i, k)
    2416         b = d_qe(i, k) + (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - &
     2384        b = d_qb(i, k) + (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - &
    24172385          deltaqw(i, k)*d_sigmaw(i)
    2418         c = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + epsilon_loc
     2386        c = qb(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + epsilon_loc
    24192387        discrim = b*b - 4.*a*c
    24202388        ! print*, 'x, a, b, c, discrim', x, a, b, c, discrim
     
    24482416
    24492417SUBROUTINE pkupper (klon, klev, ptop, ph, p, pupper, kupper, &
    2450                     dth, hw_, rho, &
    2451                     ktop, wk_adv)
     2418                    dth, hw_, rho, delta_t_min, &
     2419                    ktop, wk_adv, h_zzz, ptop1, ktop1)
    24522420
    24532421USE lmdz_wake_ini , ONLY : wk_pupper
    24542422USE lmdz_wake_ini , ONLY : RG
    24552423USE lmdz_wake_ini , ONLY : hwmin
     2424USE lmdz_wake_ini , ONLY : RD
     2425USE lmdz_wake_ini , ONLY : smallestreal
     2426
    24562427IMPLICIT NONE
    24572428
    2458 INTEGER,  INTENT(IN)                              :: klon,klev
    2459 REAL,     INTENT(IN),   DIMENSION (klon,klev+1)   :: ph, p
    2460 REAL,     INTENT(IN),   DIMENSION (klon,klev+1)   :: rho
    2461 LOGICAL,  INTENT(IN),   DIMENSION (klon)          :: wk_adv
    2462 REAL,     INTENT(IN),   DIMENSION (klon,klev+1)   :: dth
    2463 
    2464 REAL,     INTENT(OUT),   DIMENSION (klon)         :: hw_
    2465 REAL,     INTENT(OUT),   DIMENSION (klon)         :: ptop
    2466 INTEGER,  INTENT(OUT),   DIMENSION (klon)         :: Ktop
    2467 REAL,     INTENT(OUT),   DIMENSION (klon)         :: pupper
    2468 INTEGER,  INTENT(OUT),   DIMENSION (klon)         :: kupper
     2429INTEGER,                              INTENT(IN) :: klon,klev
     2430REAL,       DIMENSION (klon,klev+1) , INTENT(IN) :: ph, p
     2431REAL,       DIMENSION (klon,klev+1) , INTENT(IN) :: rho
     2432LOGICAL,    DIMENSION (klon)        , INTENT(IN) :: wk_adv
     2433REAL,       DIMENSION (klon,klev+1) , INTENT(IN) :: dth
     2434REAL,                                 INTENT(IN) :: delta_t_min
     2435
     2436REAL,       DIMENSION (klon)  , INTENT(OUT)        :: hw_
     2437REAL,       DIMENSION (klon)  , INTENT(OUT)        :: ptop
     2438INTEGER,    DIMENSION (klon)  , INTENT(OUT)        :: Ktop
     2439REAL,       DIMENSION (klon)  , INTENT(OUT)        :: pupper
     2440INTEGER,    DIMENSION (klon)  , INTENT(OUT)        :: kupper
     2441REAL,       DIMENSION (klon)  , INTENT(OUT)        :: h_zzz       !!
     2442REAL,       DIMENSION (klon)  , INTENT(OUT)        :: Ptop1      !!
     2443INTEGER,    DIMENSION (klon)  , INTENT(OUT)        :: ktop1      !!
     2444
     2445
     2446!=====================================
     2447! local variables
     2448!=====================================
     2449
    24692450INTEGER                                           :: i,k
    2470 REAL                                              :: delta_t_min
    2471 
    2472 
    2473 REAL,     DIMENSION (klon)         :: dthmin
    2474 REAL,     DIMENSION (klon)         :: ptop_provis,ptop_new
    2475 REAL,     DIMENSION (klon)         :: z, dz
    2476 REAL,     DIMENSION (klon)         :: sum_dth
    2477 
    2478 !INTEGER, SAVE :: compte=0
    2479 
     2451REAL,     DIMENSION (klon)                        :: dthmin
     2452REAL,     DIMENSION (klon)                        :: ptop_provis,ptop_new
     2453INTEGER,     DIMENSION (klon)                     :: k_ptop_provis
     2454REAL,     DIMENSION (klon)                        :: z, dz
     2455REAL,     DIMENSION (klon)                        :: sum_dth
     2456REAL,     DIMENSION (klon)                        :: omega        !!
     2457REAL,     DIMENSION (klon,klev+1)                 :: int_dth      !!
     2458REAL,     DIMENSION (klon,klev+1)                 :: dzz          !!
     2459REAL,     DIMENSION (klon,klev+1)                 :: zzz          !!
     2460REAL,     DIMENSION (klon)                 :: frac_int_dth          !!
     2461REAL                                              :: epsil        !!
     2462REAL                                              :: ddd!!
     2463
     2464LOGICAL :: new_ptop
     2465
     2466INTEGER, SAVE :: ipas=0
    24802467! LJYF : a priori z, dz sum_dth sont aussi des variables internes
    24812468! Les eliminer apres verification convergence numerique
    24822469
    2483 !compte=compte+1
    2484 !print*,'compte=',compte
    2485 
    2486   delta_t_min = 0.2
     2470 ! delta_t_min = 0.2
    24872471 
     2472new_ptop=.FALSE.
     2473
    24882474    ! Determine Ptop from buoyancy integral
    24892475    ! ---------------------------------------
    24902476
    24912477    ! -     1/ Pressure of the level where dth changes sign.
    2492     !print*,'WAKE LJYF'
    2493 
    2494     DO i = 1, klon
     2478    ipas=ipas+1
     2479
     2480    DO i = 1, klon
     2481      IF (wk_adv(i)) THEN
    24952482        ptop_provis(i) = ph(i, 1)
    2496     END DO
    2497 
     2483        k_ptop_provis(i) = 1
     2484      END IF
     2485    END DO
     2486
     2487   
     2488   
    24982489    DO k = 2, klev
    24992490      DO i = 1, klon
    2500 !       if (compte==92) then
    2501 !            print*,'debug xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    2502 !            print*,'debug i =',i
    2503 !            print*,'debug k =',k
    2504 !            print*,'debug wk_adv(i) =',wk_adv(i)
    2505 !            print*,'debug ptop_provis(i) =',ptop_provis(i)
    2506 !            print*,'debug ph(i,1) =',ph(i,1)
    2507 !            print*,'debug dth(i,k) =',dth(i,k)
    2508 !            print*,'debug delta_t_min =',delta_t_min
    2509 !            print*,'debug p(i,k-1) =',p(i,k-1)
    2510 !            print*,'debug dth(i,k-1) =',dth(i,k-1)
    2511 !            print*,'debug p(i,k) =',p(i,k)
    2512 !       endif
    25132491        IF (wk_adv(i) .AND. ptop_provis(i)==ph(i,1) .AND. &
    25142492! LJYF changer :           dth(i,k)>=-delta_t_min .AND. dth(i,k-1)<-delta_t_min) THEN
    2515             dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) THEN
     2493            dth(i,k)>=-delta_t_min .AND. dth(i,k-1)<-delta_t_min) THEN
    25162494          ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) - &
    25172495                            (dth(i,k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
     2496          k_ptop_provis(i) = k
    25182497        END IF
    25192498      END DO
     
    25342513        IF (wk_adv(i)) THEN
    25352514          dz(i) = -(amax1(ph(i,k+1),ptop_provis(i))-ph(i,k))/(rho(i,k)*RG)
    2536           IF (dz(i)>0) THEN
     2515          IF (dz(i)>0.) THEN
    25372516            z(i) = z(i) + dz(i)
    25382517            sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
     
    25772556
    25782557    DO i = 1, klon
     2558      IF (wk_adv(i)) THEN
    25792559        ptop_new(i) = ptop(i)
     2560      END IF
    25802561    END DO
    25812562
     
    25882569          ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1) - &
    25892570                         (dth(i,k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
    2590         END IF
    2591       END DO
    2592     END DO
    2593 
    2594 
    2595     DO i = 1, klon
     2571         ! k_ptop_provis(i) = k
     2572        END IF
     2573      END DO
     2574    END DO
     2575
     2576
     2577    DO i = 1, klon
     2578      IF (wk_adv(i)) THEN
    25962579        ptop(i) = ptop_new(i)
     2580      END IF
    25972581    END DO
    25982582
     
    26082592!    PRINT *, 'wake-3, ktop(igout), kupper(igout) ', ktop(igout), kupper(igout)
    26092593!  ENDIF
     2594
     2595
     2596    ! -----------------------------------------------------------------------
     2597    ! nouveau calcul de hw et ptop
     2598    ! -----------------------------------------------------------------------
     2599if (new_ptop) then
     2600   
     2601    epsil = 0.05                            ! 5 pour cent
     2602   !  epsil = 0.20
     2603   
     2604       DO i = 1, klon
     2605          IF (wk_adv(i)) THEN
     2606             int_dth(i,1) = 0.
     2607         END IF
     2608       END DO
     2609   
     2610   
     2611   
     2612    DO K = 2, klev+1
     2613       Do i = 1, klon
     2614          IF (wk_adv(i)) THEN
     2615             if (k<=k_ptop_provis(i)) then
     2616                  ddd=dth(i,k-1)*(ph(i,k-1) - min(ptop_provis(i),ph(i,k)))
     2617             else
     2618                  ddd=0.
     2619             endif
     2620             int_dth(i,k) = int_dth(i,k-1) + ddd
     2621          END IF
     2622       END DO
     2623    END DO
     2624   ! print*, 'xxx, int_dth', (k,int_dth(1,k),k=1,klev)
     2625   ! print*, 'xxx, k_ptop_provis', k_ptop_provis(1)
     2626   
     2627 
     2628    DO i=1,klon
     2629       IF (wk_adv(i)) THEN
     2630        frac_int_dth(i)=(1.-epsil)*int_dth(i,k_ptop_provis(i))
     2631       ENDIF
     2632    ENDDO
     2633    DO k = 1,klev
     2634       DO i =1, klon
     2635!         print*,ipas,'yyy ',k,int_dth(i,k),frac_int_dth(i)
     2636          IF (wk_adv(i) .AND. int_dth(i,k)>=frac_int_dth(i)) THEN
     2637            ktop1(i) = min(k, k_ptop_provis(i))
     2638            !print*,ipas,'yyy ktop1= ',ktop1
     2639          END if
     2640       END DO
     2641    END DO
     2642    !print*, 'LAMINE'
     2643   
     2644    DO i = 1, klon
     2645       IF (wk_adv(i)) THEN
     2646           !print*, ipas,'xxx1, int_dth(i,ktop1(i)), frac_int_dth(i), int_dth(i,ktop1(i)+1) ',ktop1
     2647           ddd=int_dth(i,ktop1(i)+1)-int_dth(i,ktop1(i))
     2648           if (ddd==0.) then
     2649              omega(i)=0.
     2650           else
     2651              omega(i) = (frac_int_dth(i) - int_dth(i,ktop1(i)))/ddd
     2652           endif
     2653           print*,'OMEGA ',omega(i)
     2654       END IF
     2655    END DO
     2656   
     2657    print*, 'xxx'
     2658    DO i = 1, klon
     2659       IF (wk_adv(i)) THEN
     2660      ! print*, 'xxx, int_dth(i,ktop1(i)), frac_int_dth(i), int_dth(i,ktop1(i)+1) ', &
     2661      !               int_dth(i,ktop1(i)), frac_int_dth(i), int_dth(i,ktop1(i)+1)
     2662      ! print*, 'xxx, omega(i), ph(i,ktop1(i)), ph(i,ktop1(i)+1) ',  &
     2663      !e               omega(i), ph(i,ktop1(i)), ph(i,ktop1(i)+1)
     2664          ptop1(i) = min((1 - omega(i))*ph(i,ktop1(i)) + omega(i)*ph(i,ktop1(i)+1), ph(i,1))
     2665      END IF
     2666    END DO
     2667   
     2668    DO i=1, klon
     2669       IF (wk_adv(i)) THEN
     2670           zzz(i, 1) = 0
     2671       END IF
     2672     END DO
     2673    DO k = 1, klev
     2674       DO i = 1, klon
     2675           IF (wk_adv(i)) THEN         
     2676              dzz(i,k) = (ph(i,k) - ph(i,k+1))/(rho(i,k)*RG)
     2677              zzz(i,k+1) = zzz(i,k) + dzz(i,k)
     2678           END IF
     2679       END DO
     2680    END DO
     2681   
     2682    DO i =1, klon
     2683       IF (wk_adv(i)) THEN
     2684           h_zzz(i) = max((1- omega(i))*zzz(i,ktop1(i)) + omega(i)*zzz(i,ktop1(i)+1), hwmin)
     2685       END IF
     2686    END DO
     2687
     2688endif
     2689  !---------- FIN nouveau calcul hw et ptop -------------------------------------
     2690
    26102691
    26112692 kupper = 0
Note: See TracChangeset for help on using the changeset viewer.