22 subroutine pbl_profile(ps,td2m,zml1,t2m,tml1,u10m,uml1,stress,hf)
68 real :: ps,td2m,rhoa,zml1,t2m,tml1,u10m,uml1,ustar,hf
69 real :: al,alold,aldiff,tmean,crit
70 real :: deltau,deltat,thetastar,
psim,
psih,e,
ew,tv,stress
71 integer,
parameter :: maxiter=10
72 real,
parameter :: r1=0.74
75 tv=t2m*(1.+0.378*e/ps)
81 if(deltau.le.0.001)
then
84 stress=ustar*ustar*rhoa
88 deltat=tml1-t2m+0.0098*(zml1-2.)
91 if(abs(deltat).le.0.03)
then
94 ustar=(vonkarman*deltau)/ &
95 (log(zml1/10.)-
psim(zml1,al)+
psim(10.,al))
96 stress=ustar*ustar*rhoa
101 crit=(0.0219*tmean*(zml1-2.0)*deltau**2)/ &
102 (deltat*(zml1-10.0)**2)
103 if((deltat.gt.0).and.(crit.le.1.))
then
106 ustar=(vonkarman*deltau)/ &
107 (log(zml1/10.)-
psim(zml1,al)+
psim(10.,al))
108 thetastar=(vonkarman*deltat/r1)/ &
109 (log(zml1/2.)-
psih(zml1,al)+
psih(2.,al))
110 hf=rhoa*cpa*ustar*thetastar
111 stress=ustar*ustar*rhoa
118 ustar=(vonkarman*deltau)/ &
119 (log(zml1/10.)-
psim(zml1,al)+
psim(10.,al))
120 thetastar=(vonkarman*deltat/r1)/ &
121 (log(zml1/2.)-
psih(zml1,al)+
psih(2.,al))
122 al=(tmean*ustar**2)/(ga*vonkarman*thetastar)
123 aldiff=abs((al-alold)/alold)
124 if(aldiff.lt.0.01) goto 30
126 30 hf=rhoa*cpa*ustar*thetastar
127 if(al.gt.9999.) al=9999.
128 if(al.lt.-9999.) al=-9999.
130 stress=ustar*ustar*rhoa
real function psim(z, al)
subroutine pbl_profile(ps, td2m, zml1, t2m, tml1, u10m, uml1, stress, hf)