4 SUBROUTINE wake(p, ph, pi, dtime, sigd_con, &
 
    6                 dtdwn, dqdwn, amdwn, amup, dta, dqa, &
 
    7                 wdtpbl, wdqpbl, udtpbl, udqpbl, &
 
    8                 deltatw, deltaqw, dth, 
hw, sigmaw, wape, fip, gfl, &
 
    9                 dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, qu, &
 
   10                 dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, &
 
   11                 d_deltat_gw, d_deltatw2, d_deltaqw2)
 
  122   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: p, pi
 
  123   REAL, 
DIMENSION (klon, klev+1),   
INTENT(IN)          :: ph, omgb
 
  124   REAL,                             
INTENT(IN)          :: dtime
 
  125   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: te0, qe0
 
  126   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: dtdwn, dqdwn
 
  127   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: wdtpbl, wdqpbl, udtpbl, udqpbl 
 
  128   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: amdwn, amup
 
  129   REAL, 
DIMENSION (klon, klev),     
INTENT(IN)          :: dta, dqa
 
  130   REAL, 
DIMENSION (klon),           
INTENT(IN)          :: sigd_con
 
  134   REAL, 
DIMENSION (klon, klev),     
INTENT(INOUT)       :: deltatw, deltaqw
 
  135   REAL, 
DIMENSION (klon),           
INTENT(INOUT)       :: sigmaw
 
  140   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: dth
 
  141   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: tu, qu
 
  142   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: dtls, dqls
 
  143   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: dtke, dqke
 
  144   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: dtpbl, dqpbl
 
  145   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: spread
 
  146   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: d_deltatw2, d_deltaqw2
 
  147   REAL, 
DIMENSION (klon, klev+1),   
INTENT(OUT)         :: omgbdth, omg
 
  148   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: dp_omgb, dp_deltomg
 
  149   REAL, 
DIMENSION (klon, klev),     
INTENT(OUT)         :: d_deltat_gw
 
  150   REAL, 
DIMENSION (klon),           
INTENT(OUT)         :: hw, wape, fip, gfl, cstar
 
  151   REAL, 
DIMENSION (klon),           
INTENT(OUT)         :: wdens
 
  152   INTEGER, 
DIMENSION (klon),        
INTENT(OUT)         :: ktopw
 
  159   LOGICAL, 
SAVE :: first = .
true.
 
  161   REAL, 
SAVE ::  stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol  
 
  166   REAL sigmad, hwmin, wapecut
 
  171   LOGICAL, 
DIMENSION (klon) :: gwake
 
  174   REAL, 
DIMENSION (klon, klev) :: deltatw0
 
  175   REAL, 
DIMENSION (klon, klev) :: deltaqw0
 
  176   REAL, 
DIMENSION (klon, klev) :: te, qe
 
  177   REAL, 
DIMENSION (klon) :: sigmaw0, sigmaw1
 
  180   REAL, 
DIMENSION (klon) :: ll
 
  181   REAL, 
DIMENSION (klon, klev) :: n2
 
  182   REAL, 
DIMENSION (klon, klev) :: cgw
 
  183   REAL, 
DIMENSION (klon, klev) :: tgw
 
  186   REAL, 
DIMENSION (klon) :: ptop_provis, ptop, ptop_new
 
  187   REAL, 
DIMENSION (klon) :: sum_dth
 
  188   REAL, 
DIMENSION (klon) :: dthmin
 
  189   REAL, 
DIMENSION (klon) :: z, dz, hw0
 
  190   INTEGER, 
DIMENSION (klon) :: ktop, kupper
 
  197   LOGICAL wk_adv(
klon), ok_qx_qw(
klon)
 
  202   INTEGER isubstep, k, i
 
  204   REAL, 
DIMENSION (klon) :: sum_thu, sum_tu, sum_qu, sum_thvu
 
  205   REAL, 
DIMENSION (klon) :: sum_dq, sum_rho
 
  206   REAL, 
DIMENSION (klon) :: sum_dtdwn, sum_dqdwn
 
  207   REAL, 
DIMENSION (klon) :: av_thu, av_tu, av_qu, av_thvu
 
  208   REAL, 
DIMENSION (klon) :: av_dth, av_dq, av_rho
 
  209   REAL, 
DIMENSION (klon) :: av_dtdwn, av_dqdwn
 
  211   REAL, 
DIMENSION (klon, klev) :: rho, rhow
 
  212   REAL, 
DIMENSION (klon, klev+1) :: rhoh
 
  213   REAL, 
DIMENSION (klon, klev) :: rhow_moyen
 
  214   REAL, 
DIMENSION (klon, klev) :: zh
 
  215   REAL, 
DIMENSION (klon, klev+1) :: zhh
 
  216   REAL, 
DIMENSION (klon, klev) :: epaisseur1, epaisseur2
 
  218   REAL, 
DIMENSION (klon, klev) :: the, thu
 
  222   REAL, 
DIMENSION (klon, klev+1) :: omgbw
 
  223   REAL, 
DIMENSION (klon) :: pupper
 
  224   REAL, 
DIMENSION (klon) :: omgtop
 
  225   REAL, 
DIMENSION (klon, klev) :: dp_omgbw
 
  226   REAL, 
DIMENSION (klon) :: ztop, dztop
 
  227   REAL, 
DIMENSION (klon, klev) :: alpha_up
 
  229   REAL, 
DIMENSION (klon) :: rre1, rre2
 
  231   REAL, 
DIMENSION (klon, klev) :: th1, th2, q1, q2
 
  232   REAL, 
DIMENSION (klon, klev) :: d_th1, d_th2, d_dth
 
  233   REAL, 
DIMENSION (klon, klev) :: d_q1, d_q2, d_dq
 
  234   REAL, 
DIMENSION (klon, klev) :: omgbdq
 
  236   REAL, 
DIMENSION (klon) :: ff, gg
 
  237   REAL, 
DIMENSION (klon) :: wape2, cstar2, heff
 
  239   REAL, 
DIMENSION (klon, klev) :: crep
 
  241   REAL, 
DIMENSION (klon, klev) :: ppi
 
  244   REAL, 
DIMENSION (klon) :: death_rate, nat_rate
 
  245   REAL, 
DIMENSION (klon, klev) :: entr
 
  246   REAL, 
DIMENSION (klon, klev) :: detr
 
  257   DATA wapecut, sigmad, hwmin/5., .02, 10./
 
  297   OPEN (99, file=
'wake_param.data', status=
'old', form=
'formatted', 
err=9999)
 
  298   READ (99, *, end=9998) stark
 
  299   READ (99, *, end=9998) alpk
 
  300   READ (99, *, end=9998) wdens_ref
 
  301   READ (99, *, end=9998) coefgw
 
  308   CALL bcast(wdens_ref)
 
  335       deltatw0(i, k) = deltatw(i, k)
 
  336       deltaqw0(i, k) = deltaqw(i, k)
 
  341       d_deltat_gw(i, k) = 0.
 
  347       d_deltatw2(i, k) = 0.
 
  348       d_deltaqw2(i, k) = 0.
 
  358     sigmaw(i) = amax1(sigmaw(i), sigmad)
 
  359     sigmaw(i) = amin1(sigmaw(i), 0.99)
 
  360     sigmaw0(i) = sigmaw(i)
 
  402     ll(i) = (1-sqrt(sigmaw(i)))/sqrt(wdens(i))
 
  409       rho(i, k) = p(i, k)/(rd*te(i,k))
 
  413         rhoh(i, k) = ph(i, k)/(rd*te(i,k))
 
  418         rhoh(i, k) = ph(i, k)*2./(rd*(te(i,k)+te(i,k-1)))
 
  420         zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*
rg) + zhh(i, k-1)
 
  423       the(i, k) = te(i, k)/ppi(i, k)
 
  424       thu(i, k) = (te(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
 
  425       tu(i, k) = te(i, k) - deltatw(i, k)*sigmaw(i)
 
  426       qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
 
  428       rhow(i, k) = p(i, k)/(rd*(te(i,k)+deltatw(i,k)))
 
  429       dth(i, k) = deltatw(i, k)/ppi(i, k)
 
  438         n2(i, k) = amax1(0., -
rg**2/the(i,k)*rho(i,k)*(the(i,k+1)-the(i, &
 
  439           k-1))/(p(i,k+1)-p(i,k-1)))
 
  441       zh(i, k) = (zhh(i,k)+zhh(i,k+1))/2
 
  443       cgw(i, k) = sqrt(n2(i,k))*zh(i, k)
 
  444       tgw(i, k) = coefgw*cgw(i, k)/ll(i)
 
  460       epaisseur1(i, k) = 0.
 
  461       epaisseur2(i, k) = 0.
 
  466     epaisseur1(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*
rg) + 1.
 
  467     epaisseur2(i, 1) = -(ph(i,2)-ph(i,1))/(rho(i,1)*
rg) + 1.
 
  468     rhow_moyen(i, 1) = rhow(i, 1)
 
  473       epaisseur1(i, k) = -(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg) + 1.
 
  474       epaisseur2(i, k) = epaisseur2(i, k-1) + epaisseur1(i, k)
 
  475       rhow_moyen(i, k) = (rhow_moyen(i,k-1)*epaisseur2(i,k-1)+rhow(i,k)* &
 
  476         epaisseur1(i,k))/epaisseur2(i, k)
 
  488     pupper(i) = 0.6*ph(i, 1)
 
  489     pupper(i) = max(pupper(i), 45000.)
 
  500     ptop_provis(i) = ph(i, 1)
 
  507       IF (dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min .AND. &
 
  508           ptop_provis(i)==ph(i,1)) 
THEN 
  509         ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
 
  510           k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
 
  519     dthmin(i) = -delta_t_min
 
  525       dz(i) = -(amax1(ph(i,k+1),ptop_provis(i))-ph(i,k))/(rho(i,k)*
rg)
 
  528         sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
 
  529         dthmin(i) = amin1(dthmin(i), dth(i,k))
 
  537     hw0(i) = 2.*sum_dth(i)/amin1(dthmin(i), -0.5)
 
  538     hw0(i) = amax1(hwmin, hw0(i))
 
  550       dz(i) = amin1(-(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg), hw0(i)-z(i))
 
  553         ptop(i) = ph(i, k) - rho(i, k)*
rg*dz(i)
 
  563       IF (ph(i,k+1)<ptop(i)) ktop(i) = k
 
  564       IF (ph(i,k+1)<pupper(i)) kupper(i) = k
 
  570     kupper(i) = max(kupper(i), 2)
 
  571     kupper(i) = min(kupper(i), 
klev-1)
 
  578     ptop_new(i) = ptop(i)
 
  582       IF (k<=ktop(i) .AND. ptop_new(i)==ptop(i) .AND. &
 
  583           dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) 
THEN 
  584         ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
 
  585           k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
 
  591     ptop(i) = ptop_new(i)
 
  596       IF (ph(i,k+1)<ptop(i)) ktop(i) = k
 
  604       IF (k>=kupper(i)) 
THEN 
  616       IF (k<=kupper(i)) 
THEN 
  617         dp_omgb(i, k) = (omgb(i,k+1)-omgb(i,k))/(ph(i,k+1)-ph(i,k))
 
  630     sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
 
  636       dz(i) = -(amax1(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
 
  639         sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
 
  640         sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
 
  641         sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
 
  642         sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
 
  643         sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
 
  644         sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
 
  645         sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
 
  646         sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
 
  647         sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
 
  665     av_thu(i) = sum_thu(i)/hw0(i)
 
  666     av_tu(i) = sum_tu(i)/hw0(i)
 
  667     av_qu(i) = sum_qu(i)/hw0(i)
 
  668     av_thvu(i) = sum_thvu(i)/hw0(i)
 
  670     av_dth(i) = sum_dth(i)/hw0(i)
 
  671     av_dq(i) = sum_dq(i)/hw0(i)
 
  672     av_rho(i) = sum_rho(i)/hw0(i)
 
  673     av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
 
  674     av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
 
  676     wape(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)*av_qu(i &
 
  677       )+av_dth(i)*av_dq(i)))/av_thvu(i)
 
  700       sigmaw(i) = amax1(sigmad, sigd_con(i))
 
  704       cstar(i) = stark*sqrt(2.*wape(i))
 
  713     q0_min(i) = min((qe(i,1)-sigmaw(i)*deltaqw(i,1)), (qe(i, &
 
  714       1)+(1.-sigmaw(i))*deltaqw(i,1)))
 
  718       q1_min(i) = min((qe(i,k)-sigmaw(i)*deltaqw(i,k)), (qe(i, &
 
  719         k)+(1.-sigmaw(i))*deltaqw(i,k)))
 
  720       IF (q1_min(i)<=q0_min(i)) 
THEN 
  721         q0_min(i) = q1_min(i)
 
  727     ok_qx_qw(i) = q0_min(i) >= 0.
 
  736   dtimesub = dtime/nsub
 
  739   DO isubstep = 1, nsub
 
  745       wk_adv(i) = ok_qx_qw(i) .AND. alpha(i) >= 1.
 
  755       IF (wk_adv(i) .AND. cstar(i)>0.01) 
THEN 
  756         omg(i, kupper(i)+1) = -
rg*amdwn(i, kupper(i)+1)/sigmaw(i) + &
 
  757           rg*amup(i, kupper(i)+1)/(1.-sigmaw(i))
 
  758         wdens0 = (sigmaw(i)/(4.*3.14))*((1.-sigmaw(i))*omg(i,kupper(i)+1)/(( &
 
  759           ph(i,1)-pupper(i))*cstar(i)))**(2)
 
  760         IF (wdens(i)<=wdens0*1.1) 
THEN 
  774         gfl(i) = 2.*sqrt(3.14*wdens(i)*sigmaw(i))
 
  775         sigmaw(i) = amin1(sigmaw(i), sigmaw_max)
 
  783         IF (sigmaw(i)>=sigmaw_max) 
THEN 
  784           death_rate(i) = gfl(i)*cstar(i)/sigmaw(i)
 
  788         d_sigmaw(i) = gfl(i)*cstar(i)*dtimesub - death_rate(i)*sigmaw(i)* &
 
  813           dp_deltomg(i, k) = 0.
 
  829         dp_deltomg(i, 1) = -(gfl(i)*cstar(i))/(sigmaw(i)*(1-sigmaw(i)))
 
  835         IF (wk_adv(i) .AND. k<=ktop(i)) 
THEN 
  836           dz(i) = -(ph(i,k)-ph(i,k-1))/(rho(i,k-1)*
rg)
 
  838           dp_deltomg(i, k) = dp_deltomg(i, 1)
 
  839           omg(i, k) = dp_deltomg(i, 1)*z(i)
 
  846         dztop(i) = -(ptop(i)-ph(i,ktop(i)))/(rho(i,ktop(i))*
rg)
 
  847         ztop(i) = z(i) + dztop(i)
 
  848         omgtop(i) = dp_deltomg(i, 1)*ztop(i)
 
  858         omgtop(i) = -rho(i, ktop(i))*
rg*omgtop(i)
 
  859         dp_deltomg(i, 1) = omgtop(i)/(ptop(i)-ph(i,1))
 
  865         IF (wk_adv(i) .AND. k<=ktop(i)) 
THEN 
  866           omg(i, k) = -rho(i, k)*
rg*omg(i, k)
 
  867           dp_deltomg(i, k) = dp_deltomg(i, 1)
 
  875       IF (wk_adv(i) .AND. kupper(i)>ktop(i)) 
THEN 
  876         omg(i, kupper(i)+1) = -
rg*amdwn(i, kupper(i)+1)/sigmaw(i) + &
 
  877           rg*amup(i, kupper(i)+1)/(1.-sigmaw(i))
 
  878         dp_deltomg(i, kupper(i)) = (omgtop(i)-omg(i,kupper(i)+1))/ &
 
  892         IF (wk_adv(i) .AND. k>ktop(i) .AND. k<=kupper(i)) 
THEN 
  893           dp_deltomg(i, k) = dp_deltomg(i, kupper(i))
 
  894           omg(i, k) = omgtop(i) + (ph(i,k)-ptop(i))*dp_deltomg(i, kupper(i))
 
  911           omgbw(i, k) = omgb(i, k) + (1.-sigmaw(i))*omg(i, k)
 
  920           dp_omgbw(i, k) = (omgbw(i,k+1)-omgbw(i,k))/(ph(i,k+1)-ph(i,k))
 
  932           IF (omgb(i,k)>0.) alpha_up(i, k) = 1.
 
  941         rre1(i) = 1. - sigmaw(i)
 
  952         IF (wk_adv(i) .AND. k<=kupper(i)+1) 
THEN 
  953           dth(i, k) = deltatw(i, k)/ppi(i, k)
 
  954           th1(i, k) = the(i, k) - sigmaw(i)*dth(i, k) 
 
  955           th2(i, k) = the(i, k) + (1.-sigmaw(i))*dth(i, k) 
 
  956           q1(i, k) = qe(i, k) - sigmaw(i)*deltaqw(i, k) 
 
  957           q2(i, k) = qe(i, k) + (1.-sigmaw(i))*deltaqw(i, k) 
 
  975         IF (wk_adv(i) .AND. k<=kupper(i)+1) 
THEN 
  976           d_th1(i, k) = th1(i, k-1) - th1(i, k)
 
  977           d_th2(i, k) = th2(i, k-1) - th2(i, k)
 
  978           d_dth(i, k) = dth(i, k-1) - dth(i, k)
 
  979           d_q1(i, k) = q1(i, k-1) - q1(i, k)
 
  980           d_q2(i, k) = q2(i, k-1) - q2(i, k)
 
  981           d_dq(i, k) = deltaqw(i, k-1) - deltaqw(i, k)
 
  995         IF (wk_adv(i) .AND. k<=kupper(i)+1) 
THEN  
  996           omgbdth(i, k) = omgb(i, k)*(dth(i,k-1)-dth(i,k))
 
  997           omgbdq(i, k) = omgb(i, k)*(deltaqw(i,k-1)-deltaqw(i,k))
 
 1005         IF (wk_adv(i) .AND. k<=kupper(i)-1) 
THEN 
 1010           d_deltatw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* &
 
 1011             (rrd1*omg(i,k)*sigmaw(i)*d_th1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( &
 
 1012             i))*d_th2(i,k+1)-(1.-alpha_up(i,k))*omgbdth(i,k)-alpha_up(i,k+1)* &
 
 1013             omgbdth(i,k+1))*ppi(i, k)
 
 1016           d_deltaqw(i, k) = dtimesub/(ph(i,k)-ph(i,k+1))* &
 
 1017             (rrd1*omg(i,k)*sigmaw(i)*d_q1(i,k)-rrd2*omg(i,k+1)*(1.-sigmaw( &
 
 1018             i))*d_q2(i,k+1)-(1.-alpha_up(i,k))*omgbdq(i,k)-alpha_up(i,k+1)* &
 
 1029           d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, &
 
 1030             k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_th2(i,k+1))/(ph(i,k)-ph(i, &
 
 1033             -sigmaw(i)*(1.-sigmaw(i))*dth(i,k)*(omg(i,k)-omg(i,k+1))/(ph(i, &
 
 1037           d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, &
 
 1038             k)-rre2(i)*omg(i,k+1)*(1.-sigmaw(i))*d_q2(i,k+1))/(ph(i,k)-ph(i, &
 
 1041             -sigmaw(i)*(1.-sigmaw(i))*deltaqw(i,k)*(omg(i,k)-omg(i, &
 
 1042             k+1))/(ph(i,k)-ph(i,k+1)) & 
 
 1045         ELSE IF (wk_adv(i) .AND. k==kupper(i)) 
THEN 
 1046           d_te(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_th1(i, &
 
 1047             k)/(ph(i,k)-ph(i,k+1))))*ppi(i, k)
 
 1049           d_qe(i, k) = dtimesub*((rre1(i)*omg(i,k)*sigmaw(i)*d_q1(i, &
 
 1050             k)/(ph(i,k)-ph(i,k+1))))
 
 1063         IF (wk_adv(i) .AND. k<=kupper(i)) 
THEN 
 1070           crep(i, k) = crep_sol*(ph(i,kupper(i))-ph(i,k))/ &
 
 1071             (ph(i,kupper(i))-ph(i,1))
 
 1072           crep(i, k) = crep(i, k) + crep_upper*(ph(i,1)-ph(i,k))/(p(i,1)-ph(i &
 
 1092           dtke(i, k) = (dtdwn(i,k)/sigmaw(i)-dta(i,k)/(1.-sigmaw(i)))
 
 1093           dqke(i, k) = (dqdwn(i,k)/sigmaw(i)-dqa(i,k)/(1.-sigmaw(i)))
 
 1119           entr(i, k) = detr(i, k) + gfl(i)*cstar(i) + &
 
 1120             sigmaw(i)*(1.-sigmaw(i))*dp_deltomg(i, k)
 
 1122           spread(i, k) = (entr(i,k)-detr(i,k))/sigmaw(i)
 
 1133           d_deltat_gw(i, k) = d_deltat_gw(i, k) - tgw(i, k)*deltatw(i, k)* &
 
 1136           ff(i) = d_deltatw(i, k)/dtimesub
 
 1149           IF (dtimesub*tgw(i,k)<1.e-10) 
THEN 
 1150             d_deltatw(i, k) = dtimesub*(ff(i)+dtke(i,k)+dtpbl(i,k) & 
 
 1153               -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( &
 
 1154               i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) & 
 
 1155               -tgw(i,k)*deltatw(i,k))
 
 1157             d_deltatw(i, k) = 1/tgw(i, k)*(1-exp(-dtimesub*tgw(i, &
 
 1158               k)))*(ff(i)+dtke(i,k)+dtpbl(i,k) & 
 
 1160               -entr(i,k)*deltatw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw( &
 
 1161               i)+detr(i,k))*deltatw(i,k)/(1.-sigmaw(i)) & 
 
 1162               -tgw(i,k)*deltatw(i,k))
 
 1165           dth(i, k) = deltatw(i, k)/ppi(i, k)
 
 1167           gg(i) = d_deltaqw(i, k)/dtimesub
 
 1169           d_deltaqw(i, k) = dtimesub*(gg(i)+dqke(i,k)+dqpbl(i,k) & 
 
 1171             -entr(i,k)*deltaqw(i,k)/sigmaw(i)-(death_rate(i)*sigmaw(i)+detr( &
 
 1172             i,k))*deltaqw(i,k)/(1.-sigmaw(i)))
 
 1187       d_deltaqw, sigmaw, d_sigmaw, alpha)
 
 1197         IF (wk_adv(i) .AND. k<=kupper(i)) 
THEN 
 1198           d_te(i, k) = alpha(i)*d_te(i, k)
 
 1199           d_qe(i, k) = alpha(i)*d_qe(i, k)
 
 1200           d_deltatw(i, k) = alpha(i)*d_deltatw(i, k)
 
 1201           d_deltaqw(i, k) = alpha(i)*d_deltaqw(i, k)
 
 1202           d_deltat_gw(i, k) = alpha(i)*d_deltat_gw(i, k)
 
 1208         d_sigmaw(i) = alpha(i)*d_sigmaw(i)
 
 1217         IF (wk_adv(i) .AND. k<=kupper(i)) 
THEN 
 1218           dtls(i, k) = dtls(i, k) + d_te(i, k)
 
 1219           dqls(i, k) = dqls(i, k) + d_qe(i, k)
 
 1221           d_deltatw2(i, k) = d_deltatw2(i, k) + d_deltatw(i, k)
 
 1222           d_deltaqw2(i, k) = d_deltaqw2(i, k) + d_deltaqw(i, k)
 
 1229         IF (wk_adv(i) .AND. k<=kupper(i)) 
THEN 
 1230           te(i, k) = te0(i, k) + dtls(i, k)
 
 1231           qe(i, k) = qe0(i, k) + dqls(i, k)
 
 1232           the(i, k) = te(i, k)/ppi(i, k)
 
 1233           deltatw(i, k) = deltatw(i, k) + d_deltatw(i, k)
 
 1234           deltaqw(i, k) = deltaqw(i, k) + d_deltaqw(i, k)
 
 1235           dth(i, k) = deltatw(i, k)/ppi(i, k)
 
 1243         sigmaw(i) = sigmaw(i) + d_sigmaw(i)
 
 1255         ptop_provis(i) = ph(i, 1)
 
 1261         IF (wk_adv(i) .AND. ptop_provis(i)==ph(i,1) .AND. &
 
 1262             dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) 
THEN 
 1263           ptop_provis(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
 
 1264             k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
 
 1274         dthmin(i) = -delta_t_min
 
 1282           dz(i) = -(amax1(ph(i,k+1),ptop_provis(i))-ph(i,k))/(rho(i,k)*
rg)
 
 1285             sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
 
 1286             dthmin(i) = amin1(dthmin(i), dth(i,k))
 
 1296         hw(i) = 2.*sum_dth(i)/amin1(dthmin(i), -0.5)
 
 1297         hw(i) = amax1(hwmin, hw(i))
 
 1313           dz(i) = amin1(-(ph(i,k+1)-ph(i,k))/(rho(i,k)*
rg), hw(i)-z(i))
 
 1316             ptop(i) = ph(i, k) - rho(i, k)*
rg*dz(i)
 
 1327         ptop_new(i) = ptop(i)
 
 1334         IF (wk_adv(i) .AND. k<=ktop(i) .AND. ptop_new(i)==ptop(i) .AND. &
 
 1335             dth(i,k)>-delta_t_min .AND. dth(i,k-1)<-delta_t_min) 
THEN 
 1336           ptop_new(i) = ((dth(i,k)+delta_t_min)*p(i,k-1)-(dth(i, &
 
 1337             k-1)+delta_t_min)*p(i,k))/(dth(i,k)-dth(i,k-1))
 
 1345         ptop(i) = ptop_new(i)
 
 1352           IF (ph(i,k+1)<ptop(i)) ktop(i) = k
 
 1361         IF (wk_adv(i) .AND. k>=kupper(i)) 
THEN 
 1403         sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
 
 1411           dz(i) = -(max(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
 
 1414             sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
 
 1415             sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
 
 1416             sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
 
 1417             sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
 
 1418             sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
 
 1419             sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
 
 1420             sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
 
 1421             sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
 
 1422             sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
 
 1444         av_thu(i) = sum_thu(i)/hw0(i)
 
 1445         av_tu(i) = sum_tu(i)/hw0(i)
 
 1446         av_qu(i) = sum_qu(i)/hw0(i)
 
 1447         av_thvu(i) = sum_thvu(i)/hw0(i)
 
 1448         av_dth(i) = sum_dth(i)/hw0(i)
 
 1449         av_dq(i) = sum_dq(i)/hw0(i)
 
 1450         av_rho(i) = sum_rho(i)/hw0(i)
 
 1451         av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
 
 1452         av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
 
 1454         wape(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)* &
 
 1455           av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
 
 1464           IF (wape(i)<0.) 
THEN 
 1475         IF (wape(i)<0.) 
THEN 
 1479           sigmaw(i) = max(sigmad, sigd_con(i))
 
 1483           cstar(i) = stark*sqrt(2.*wape(i))
 
 1498       IF (ok_qx_qw(i) .AND. k<=kupper(i)) 
THEN 
 1500         dtls(i, k) = dtls(i, k)/dtime
 
 1501         dqls(i, k) = dqls(i, k)/dtime
 
 1502         d_deltatw2(i, k) = d_deltatw2(i, k)/dtime
 
 1503         d_deltaqw2(i, k) = d_deltaqw2(i, k)/dtime
 
 1504         d_deltat_gw(i, k) = d_deltat_gw(i, k)/dtime
 
 1522     IF (ok_qx_qw(i)) 
THEN 
 1552       IF (ok_qx_qw(i)) 
THEN 
 1554         rho(i, k) = p(i, k)/(rd*te(i,k))
 
 1556           rhoh(i, k) = ph(i, k)/(rd*te(i,k))
 
 1559           rhoh(i, k) = ph(i, k)*2./(rd*(te(i,k)+te(i,k-1)))
 
 1560           zhh(i, k) = (ph(i,k)-ph(i,k-1))/(-rhoh(i,k)*
rg) + zhh(i, k-1)
 
 1562         the(i, k) = te(i, k)/ppi(i, k)
 
 1563         thu(i, k) = (te(i,k)-deltatw(i,k)*sigmaw(i))/ppi(i, k)
 
 1564         tu(i, k) = te(i, k) - deltatw(i, k)*sigmaw(i)
 
 1565         qu(i, k) = qe(i, k) - deltaqw(i, k)*sigmaw(i)
 
 1566         rhow(i, k) = p(i, k)/(rd*(te(i,k)+deltatw(i,k)))
 
 1567         dth(i, k) = deltatw(i, k)/ppi(i, k)
 
 1579     IF (ok_qx_qw(i)) 
THEN 
 1583       sum_thvu(i) = thu(i, 1)*(1.+
eps*qu(i,1))*dz(i)
 
 1591       IF (ok_qx_qw(i)) 
THEN 
 1593         dz(i) = -(amax1(ph(i,k+1),ptop(i))-ph(i,k))/(rho(i,k)*
rg)
 
 1596           sum_thu(i) = sum_thu(i) + thu(i, k)*dz(i)
 
 1597           sum_tu(i) = sum_tu(i) + tu(i, k)*dz(i)
 
 1598           sum_qu(i) = sum_qu(i) + qu(i, k)*dz(i)
 
 1599           sum_thvu(i) = sum_thvu(i) + thu(i, k)*(1.+
eps*qu(i,k))*dz(i)
 
 1600           sum_dth(i) = sum_dth(i) + dth(i, k)*dz(i)
 
 1601           sum_dq(i) = sum_dq(i) + deltaqw(i, k)*dz(i)
 
 1602           sum_rho(i) = sum_rho(i) + rhow(i, k)*dz(i)
 
 1603           sum_dtdwn(i) = sum_dtdwn(i) + dtdwn(i, k)*dz(i)
 
 1604           sum_dqdwn(i) = sum_dqdwn(i) + dqdwn(i, k)*dz(i)
 
 1612     IF (ok_qx_qw(i)) 
THEN 
 1625     IF (ok_qx_qw(i)) 
THEN 
 1627       av_thu(i) = sum_thu(i)/hw0(i)
 
 1628       av_tu(i) = sum_tu(i)/hw0(i)
 
 1629       av_qu(i) = sum_qu(i)/hw0(i)
 
 1630       av_thvu(i) = sum_thvu(i)/hw0(i)
 
 1631       av_dth(i) = sum_dth(i)/hw0(i)
 
 1632       av_dq(i) = sum_dq(i)/hw0(i)
 
 1633       av_rho(i) = sum_rho(i)/hw0(i)
 
 1634       av_dtdwn(i) = sum_dtdwn(i)/hw0(i)
 
 1635       av_dqdwn(i) = sum_dqdwn(i)/hw0(i)
 
 1637       wape2(i) = -
rg*hw0(i)*(av_dth(i)+
eps*(av_thu(i)*av_dq(i)+av_dth(i)* &
 
 1638         av_qu(i)+av_dth(i)*av_dq(i)))/av_thvu(i)
 
 1650       IF (ok_qx_qw(i) .AND. wape2(i)<0.) 
THEN 
 1662     IF (ok_qx_qw(i)) 
THEN 
 1664       IF (wape2(i)<0.) 
THEN 
 1668         sigmaw(i) = amax1(sigmad, sigd_con(i))
 
 1673         cstar2(i) = stark*sqrt(2.*wape2(i))
 
 1681     IF (ok_qx_qw(i)) 
THEN 
 1689     IF (ok_qx_qw(i)) 
THEN 
 1691       IF (ktopw(i)>0 .AND. gwake(i)) 
THEN 
 1699         fip(i) = 0.5*rho(i, ktopw(i))*cstar2(i)**3*heff(i)*2* &
 
 1700           sqrt(sigmaw(i)*wdens(i)*3.14)
 
 1701         fip(i) = alpk*fip(i)
 
 1724       IF (((wape(i)>=wape2(i)) .AND. (wape2(i)<=1.0)) .OR. (ktopw(i)<=2) .OR. &
 
 1725           .NOT. ok_qx_qw(i)) 
THEN 
 1737     IF (((wape(i)>=wape2(i)) .AND. (wape2(i)<=1.0)) .OR. (ktopw(i)<=2) .OR. &
 
 1738         .NOT. ok_qx_qw(i)) 
THEN 
 1749       cstar(i) = cstar2(i)
 
 1760     d_deltaqw, sigmaw, d_sigmaw, 
alpha)
 
 1769   REAL qe(nlon, 
nl), d_qe(nlon, 
nl)
 
 1770   REAL deltaqw(nlon, 
nl), d_deltaqw(nlon, 
nl)
 
 1771   REAL sigmaw(nlon), d_sigmaw(nlon)
 
 1772   LOGICAL wk_adv(nlon)
 
 1779   REAL x, a, b, c, discrim
 
 1787         IF ((deltaqw(i,k)+d_deltaqw(i,k))>=0.) 
THEN 
 1796         x = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + d_qe(i, k) + &
 
 1797           (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - d_sigmaw(i)*(deltaqw(i,k)+ &
 
 1799         a = -d_sigmaw(i)*d_deltaqw(i, k)
 
 1800         b = d_qe(i, k) + (zeta(i,k)-sigmaw(i))*d_deltaqw(i, k) - &
 
 1801           deltaqw(i, k)*d_sigmaw(i)
 
 1802         c = qe(i, k) + (zeta(i,k)-sigmaw(i))*deltaqw(i, k) + epsilon
 
 1803         discrim = b*b - 4.*a*c
 
 1812               alpha1(i) = 0.9*min((2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim &
 
 1814             ELSE IF (a==0.) 
THEN 
 1815               alpha1(i) = 0.9*(-c/b)
 
 1818               alpha1(i) = 0.9*max((2.*c)/(-b+sqrt(discrim)), (-b+sqrt(discrim &
 
 1823         alpha(i) = min(alpha(i), alpha1(i))
 
!IM Implemente en modes sequentiel et parallele CALL rlon_glo CALL bcast(rlon_glo)!$OMP MASTER if(is_mpi_root) then!zstophy
 
!$Id!Thermodynamical constants for t0 real clmci real eps
 
subroutine err(ierr, typ, nam)
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
 
subroutine wake_vec_modulation(nlon, nl, wk_adv, epsilon, qe, d_qe, deltaqw, d_deltaqw, sigmaw, d_sigmaw, alpha)
 
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
 
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
 
!$Id!Parameters for nlm real spfac!IM cf epmax real ptcrit real omtrain real dttrig real alpha real delta real betad COMMON cv30param nlm spfac &!IM cf ptcrit omtrain dttrig alpha
 
subroutine wake(p, ph, pi, dtime, sigd_con, te0, qe0, omgb, dtdwn, dqdwn, amdwn, amup, dta, dqa, wdtpbl, wdqpbl, udtpbl, udqpbl, deltatw, deltaqw, dth, hw, sigmaw, wape, fip, gfl, dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, tu, qu, dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, d_deltat_gw, d_deltatw2, d_deltaqw2)