7 PTG, PTC, PTV, PVELC, PLW, &
10 PUSTAR2, PCD, PCH, PRI )
75 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0, PZ0H, PZ0G, PH_VEG, PLAI
82 REAL,
DIMENSION(:),
INTENT(IN) :: PTG, PTC, PTV, PVELC
88 REAL,
DIMENSION(:),
INTENT(IN) :: PLW, PDISPH
92 REAL,
DIMENSION(:),
INTENT(OUT) :: PRAGNC, PGVNC
98 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR2, PCD, PCH, PRI
108 REAL,
DIMENSION(SIZE(PTG)) :: ZDIFFH, ZK, ZPIH, ZDIFFT, ZRIF, ZZ0HG, ZUSTAR
110 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 REAL,
PARAMETER :: ZNY = 0.15e-04
115 REAL,
PARAMETER :: ZALPHA = 4.
118 REAL,
PARAMETER :: ZALPHAPRIM = 3.
119 REAL,
PARAMETER :: ZA = 0.01
120 REAL,
PARAMETER :: ZRAFA = 9.
123 REAL,
PARAMETER :: ZRAGNC_MIN = 1.
130 IF (
lhook)
CALL dr_hook(
'SURFACE_AIR_MEB',0,zhook_handle)
135 zdiffh(:) = max(ph_veg(:)-pdisph(:),0.1)
137 zk(:) = (
xkarman*
xkarman)*pvelc(:)*zdiffh(:)/log(zdiffh(:)/pz0(:))
141 zustar(:) = zk(:)/(
xkarman*zdiffh(:))
142 pcd(:) = zustar(:)/max(1.,pvelc(:))
143 pustar2(:) = zustar(:)**2
147 pragnc(:)=ph_veg(:)*exp(zalpha)/(zalpha*zk(:))*(exp(-zalpha*pz0g(:)/ph_veg(:)) &
148 -exp(-zalpha*(pdisph(:)+pz0(:))/ph_veg(:)))
153 pragnc(:) = max(zragnc_min,pragnc(:))
174 pri(:) = -
xg*ph_veg(:)*(ptg(:)-ptc(:))/(ptg(:)*pvelc(:)*pvelc(:))
180 zpih(:) = sqrt(1. - zrafa*pri(:))
182 zz0hg(:)= pz0g(:)*pz0h(:)/pz0(:)
183 zrif(:) = min(1., pri(:)/
xrimax)
184 zpih(:) = (1/(1. + 15*pri(:)*sqrt(1.+5*pri(:))))* &
185 ((1.-zrif(:)) + zrif(:)*(log(zdiffh(:)/pz0g(:))/log(zdiffh(:)/zz0hg(:))) )
188 pragnc(:) = pragnc(:)/zpih(:)
192 pch(:) = 1/(pragnc(:)*max(1., pvelc(:)))
197 pgvnc(:) = (2.*za)*plai(:)/zalphaprim*sqrt(pvelc(:)/plw(:))*(1.-exp(-0.5*zalphaprim))
201 pgvnc(:) = max(1.e-06,pgvnc(:))
205 zdifft(:) = max(1.e-06,ptv(:)-ptc(:))
206 zdifft(:) = sqrt(sqrt(zdifft(:)/plw(:)))
207 pgvnc(:) = pgvnc(:)+zdifft(:)*plai(:)/890.
209 IF (
lhook)
CALL dr_hook(
'SURFACE_AIR_MEB',1,zhook_handle)
subroutine surface_air_meb(PZ0, PZ0H, PZ0G, PH_VEG, PLAI, PTG, PTC, PTV, PVELC, PLW, PDISPH, PRAGNC, PGVNC, PUSTAR2, PCD, PCH, PRI)