5 SUBROUTINE hbtm(knon, paprs, pplay, t2m, t10m, q2m, q10m, ustar, wstar, &
 
    6     flux_t, flux_q, 
u, v, t, q, pblh, cape, eauliq, ctei, pblt, therm, trmb1, &
 
   65   REAL, 
PARAMETER :: vk = 0.35 
 
   66   REAL, 
PARAMETER :: ricr = 0.4
 
   67   REAL, 
PARAMETER :: fak = 8.5 
 
   68   REAL, 
PARAMETER :: fakn = 7.2 
 
   69   REAL, 
PARAMETER :: onet = 1.0/3.0
 
   70   REAL, 
PARAMETER :: t_coup = 273.15
 
   71   REAL, 
PARAMETER :: zkmin = 0.01
 
   72   REAL, 
PARAMETER :: betam = 15.0 
 
   73   REAL, 
PARAMETER :: betah = 15.0
 
   74   REAL, 
PARAMETER :: betas = 5.0 
 
   75   REAL, 
PARAMETER :: sffrac = 0.1 
 
   76   REAL, 
PARAMETER :: usmin = 1.e-12
 
   77   REAL, 
PARAMETER :: binm = betam*sffrac
 
   78   REAL, 
PARAMETER :: binh = betah*sffrac
 
   79   REAL, 
PARAMETER :: ccon = fak*sffrac*vk
 
   80   REAL, 
PARAMETER :: b1 = 70., b2 = 20.
 
   81   REAL, 
PARAMETER :: zref = 2. 
 
  102   LOGICAL omegafl(
klon) 
 
  126   REAL the1, the2, aa, bb, zthvd, zthvu, xintpos, qqsat
 
  130   REAL xhis, rnum, denom, th1, th2, thv1, thv2, ql2
 
  131   REAL dqsat_dt, qsat2, qt1, q2, t1, t2, xnull, delt_the
 
  132   REAL delt_qt, delt_2, quadsat, spblh, reduc
 
  147   REAL zcor, zdelta, zcvm5
 
  149   REAL fac, pblmin, zmzp, term
 
  211     z(i, 1) = rd*t(i, 1)/(0.5*(paprs(i,1)+pplay(i,1)))*(paprs(i,1)-pplay(i,1) &
 
  213     s(i, 1) = (pplay(i,1)/paprs(i,1))**rkappa
 
  229       z(i, k) = z(i, k-1) + rd*0.5*(t(i,k-1)+t(i,k))/paprs(i, k)*(pplay(i,k-1 &
 
  231       s(i, k) = (pplay(i,k)/paprs(i,1))**rkappa
 
  294     khfs(i) = -flux_t(i, 1)*zxt*rd/(rcpd*paprs(i,1))
 
  295     kqfs(i) = -flux_q(i, 1)*zxt*rd/(paprs(i,1))
 
  297     heatv(i) = khfs(i) + 0.608*zxt*kqfs(i)
 
  325     unsobklen(i) = -
rg*vk*heatv(i)/(t(i,1)*max(ustar(i),usmin)**3)
 
  345         zdu2 = u(i, k)**2 + v(i, k)**2
 
  346         zdu2 = max(zdu2, 1.0e-20)
 
  348         zthvd = t(i, k)/s(i, k)*(1.+retv*q(i,k))
 
  354         zthvu = th_th(i)*(1.+retv*qt_th(i))
 
  359         rhino(i, k) = (z(i,k)-zref)*
rg*(zthvd-zthvu)/(zdu2*0.5*(zthvd+zthvu))
 
  361         IF (rhino(i,k)>=ricr) 
THEN 
  362           pblh(i) = z(i, k-1) + (z(i,k-1)-z(i,k))*(ricr-rhino(i,k-1))/(rhino( &
 
  365           pblh(i) = pblh(i) + 100.
 
  366           pblt(i) = t(i, k-1) + (t(i,k)-t(i,k-1))*(pblh(i)-z(i,k-1))/(z(i,k)- &
 
  379     IF (check(i)) pblh(i) = z(i, isommet)
 
  386     IF (heatv(i)>0.) 
THEN 
  400       phiminv(i) = (1.-binm*pblh(i)*unsobklen(i))**onet
 
  420       wm(i) = ustar(i)*phiminv(i)
 
  445       q_star = kqfs(i)/wm(i)
 
  446       t_star = khfs(i)/wm(i)
 
  449         IF (t_star<0. .OR. q_star<0.) 
THEN 
  450           print *, 
'i t_star q_star khfs kqfs wm', i, t_star, q_star, &
 
  451             khfs(i), kqfs(i), wm(i)
 
  461       a1 = b1*(1.+2.*retv*qt_th(i))*t_star**2
 
  462       a2 = (retv*th_th(i))**2*b2*q_star*q_star
 
  463       a3 = 2.*retv*th_th(i)*b212*q_star*t_star
 
  467           print *, 
'i a1 a2 a3 aa', i, a1, a2, a3, aa
 
  468           print *, 
'i qT_th Th_th t_star q_star RETV b1 b2 b212', i, &
 
  469             qt_th(i), th_th(i), t_star, q_star, retv, b1, b2, b212
 
  473       therm(i) = sqrt(b1*(1.+2.*retv*qt_th(i))*t_star**2+(retv*th_th( &
 
  474         i))**2*b2*q_star*q_star &  
 
  476         +max(0.,2.*retv*th_th(i)*b212*q_star*t_star))
 
  482       qt_th(i) = qt_th(i) + b2sr*q_star
 
  503         zdu2 = u(i, k)**2 + v(i, k)**2
 
  504         zdu2 = max(zdu2, 1.0e-20)
 
  506         zthvd = t(i, k)/s(i, k)*(1.+retv*q(i,k))
 
  510         zthvu = th_th(i)*(1.+retv*qt_th(i)) + therm(i)
 
  517         rhino(i, k) = (z(i,k)-zref)*
rg*(zthvd-zthvu)/(zdu2*0.5*(zthvd+zthvu))
 
  520         IF (rhino(i,k)>=ricr) 
THEN 
  521           pblh(i) = z(i, k-1) + (z(i,k-1)-z(i,k))*(ricr-rhino(i,k-1))/(rhino( &
 
  524           pblh(i) = pblh(i) + 100.
 
  525           pblt(i) = t(i, k-1) + (t(i,k)-t(i,k-1))*(pblh(i)-z(i,k-1))/(z(i,k)- &
 
  531             IF (i==950 .OR. i==192 .OR. i==624 .OR. i==118) 
THEN 
  532               print *, 
' i,Th_th,Therm,qT :', i, th_th(i), therm(i), qt_th(i)
 
  533               q_star = kqfs(i)/wm(i)
 
  534               t_star = khfs(i)/wm(i)
 
  535               print *, 
'q* t*, b1,b2,b212 ', q_star, t_star, &
 
  536                 b1*(1.+2.*retv*qt_th(i))*t_star**2, &
 
  537                 (retv*th_th(i))**2*b2*q_star**2, 2.*retv*th_th(i)*b212*q_star &
 
  539               print *, 
'zdu2 ,100.*ustar(i)**2', zdu2, fac*ustar(i)**2
 
  557     IF (check(i)) pblh(i) = z(i, isommet)
 
  572     pblmin = 700.0*ustar(i)
 
  573     pblh(i) = max(pblh(i), pblmin)
 
  575     pblt(i) = t(i, 2) + (t(i,3)-t(i,2))*(pblh(i)-z(i,2))/(z(i,3)-z(i,2))
 
  591     fak1(i) = ustar(i)*pblh(i)*vk
 
  600       zxt = (th_th(i)-zref*0.5*
rg/rcpd/(1.+rvtmp2*qt_th(i)))* &
 
  602       phiminv(i) = (1.-binm*pblh(i)*unsobklen(i))**onet
 
  603       phihinv(i) = sqrt(1.-binh*pblh(i)*unsobklen(i))
 
  604       wm(i) = ustar(i)*phiminv(i)
 
  605       fak2(i) = wm(i)*pblh(i)*vk
 
  606       wstar(i) = (heatv(i)*
rg*pblh(i)/zxt)**onet
 
  607       fak3(i) = fakn*wstar(i)/wm(i)
 
  613     the_th(i) = th_th(i) + therm(i) + rlvcp*qt_th(i)
 
  629       IF (zkmin==0.0 .AND. zp(i)>pblh(i)) zp(i) = pblh(i)
 
  630       IF (zm(i)<pblh(i)) 
THEN 
  631         zmzp = 0.5*(zm(i)+zp(i))
 
  638         zl(i) = zmzp*unsobklen(i)
 
  640         IF (zh(i)<=1.0) zzh(i) = (1.-zh(i))**2
 
  660           pblk(i) = fak1(i)*zh(i)*zzh(i)/(1.+betas*zl(i))
 
  662           pblk(i) = fak1(i)*zh(i)*zzh(i)/(betas+zl(i))
 
  676         IF (zh(i)<sffrac) 
THEN 
  688         term = (1.-betam*zl(i))**onet
 
  689         pblk(i) = fak1(i)*zh(i)*zzh(i)*term
 
  690         pr(i) = term/sqrt(1.-betah*zl(i))
 
  699         pblk(i) = fak2(i)*zh(i)*zzh(i)
 
  702         pr(i) = phiminv(i)/phihinv(i) + ccon*fak3(i)/fak
 
  721       IF (check(i) .OR. omegafl(i)) 
THEN 
  722         IF (.NOT. zsat(i)) 
THEN 
  727           zdelta = max(0., sign(1.,rtt-t2))
 
  728           qqsat = r2es*foeew(t2, zdelta)/pplay(i, k)
 
  729           qqsat = min(0.5, qqsat)
 
  730           zcor = 1./(1.-retv*qqsat)
 
  733           IF (qqsat<qt_th(i)) 
THEN 
  738               plcl(i) = z(i, k-1) + (z(i,k-1)-z(i,k))*(qt_th(i)-qsatbef(i))/( &
 
!$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
 
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm u(l)
 
!$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
 
subroutine hbtm(knon, paprs, pplay, t2m, t10m, q2m, q10m, ustar, wstar, flux_t, flux_q, u, v, t, q, pblh, cape, eauliq, ctei, pblt, therm, trmb1, trmb2, trmb3, plcl)