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)