4       SUBROUTINE thermcell_alim(flag,ngrid,klev,ztv,d_temp,zlev,alim_star,lalim)
 
   16 #include "thermcell.h" 
   19       INTEGER, 
INTENT(IN) :: ngrid,klev
 
   20       REAL, 
INTENT(IN) :: ztv(ngrid,klev)
 
   21       REAL, 
INTENT(IN) :: d_temp(ngrid)
 
   22       REAL, 
INTENT(IN) :: zlev(ngrid,klev+1)
 
   23       REAL, 
INTENT(OUT) :: alim_star(ngrid,klev)
 
   24       INTEGER, 
INTENT(OUT) :: lalim(ngrid)
 
   25       INTEGER, 
INTENT(IN) :: flag
 
   27       REAL :: alim_star_tot(ngrid),zi(ngrid),zh(ngrid)
 
   28       REAL :: zlay(ngrid,klev)
 
   34       falim(h,z)=0.2*((z-h)**5+h**5)
 
   42    IF (ngrid==1) print*,
'NEW ALIM flag=',flag
 
   50             if (ztv(ig,l)> ztv(ig,l+1) .and. ztv(ig,1)>=ztv(ig,l) ) 
then 
   51                alim_star(ig,l)=max((ztv(ig,l)-ztv(ig,l+1)),0.)  &
 
   54                alim_star_tot(ig)=alim_star_tot(ig)+alim_star(ig,l)
 
   60             if (alim_star_tot(ig) > 1.e-10 ) 
then 
   61                alim_star(ig,l)=alim_star(ig,l)/alim_star_tot(ig)
 
   83          zlay(:,l)=0.5*(zlev(:,l)+zlev(:,l+1))
 
   88             ztv_parcel=ztv(ig,1)+d_temp(ig)
 
   89             if (ztv_parcel<ztv(ig,l+1) .and. lalim(ig)==1 ) 
THEN 
   91                 zi(ig)=zlay(ig,l)+(zlay(ig,l+1)-zlay(ig,l))/(ztv(ig,l+1)-ztv(ig,l))*(ztv_parcel-ztv(ig,l))
 
  102             if (zlev(ig,l+1)<=zh(ig)) 
THEN 
  103                alim_star(ig,l)=(falim(zh(ig),zlev(ig,l+1))-falim(zh(ig),zlev(ig,l)))/falim(zh(ig),zh(ig))
 
  105             ELSE IF (zlev(ig,l)<=zh(ig)) 
THEN 
  106                alim_star(ig,l)=(falim(zh(ig),zh(ig))-falim(zh(ig),zlev(ig,l)))/falim(zh(ig),zh(ig))
 
  112          alim_star_tot(:)=alim_star_tot(:)+alim_star(:,l)
 
  114       IF (ngrid==1) print*,
'NEW ALIM CALCUL DE ZI ',alim_star_tot
 
subroutine thermcell_alim(flag, ngrid, klev, ztv, d_temp, zlev, alim_star, lalim)