6 SUBROUTINE sm10(PZ,PBLD_HEIGHT,PLAMBDA_F,PL)
31 USE yomhook
,ONLY : lhook, dr_hook
32 USE parkind1
,ONLY : jprb
38 REAL,
DIMENSION(:,:),
INTENT(IN) :: pz
39 REAL,
DIMENSION(:),
INTENT(IN) :: pbld_height
40 REAL,
DIMENSION(:),
INTENT(IN) :: plambda_f
41 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pl
47 REAL,
DIMENSION(SIZE(PZ,1)) :: zz_can
48 REAL,
DIMENSION(SIZE(PZ,1),SIZE(PZ,2)):: zz_surf
49 REAL,
DIMENSION(SIZE(PZ,1),SIZE(PZ,2)):: zz_isbl
50 REAL,
DIMENSION(SIZE(PZ,1)) :: zz_base_isbl
51 REAL,
DIMENSION(SIZE(PZ,1)) :: zdisp_h
52 REAL,
PARAMETER :: zalpha_can = 1.12
56 REAL(KIND=JPRB) :: zhook_handle
60 IF (lhook) CALL dr_hook(
'SM10',0,zhook_handle)
67 zdisp_h(:) = min( plambda_f(:)**0.13 * pbld_height(:) , 0.75 * pbld_height )
68 zz_can(:) = zalpha_can * (pbld_height(:) - zdisp_h(:))
71 zz_surf(:,:) = pz(:,:)
75 zz_isbl(:,jlayer) = max(zz_can(:), pz(:,jlayer) - zdisp_h(:))
78 zz_base_isbl(:) = max(pz(:,1), 1.5 * pbld_height(:) )
82 WHERE (pz(:,jlayer)<=pbld_height(:))
84 pl(:,jlayer) = min(zz_surf(:,jlayer), zz_can(:))
86 WHERE (pz(:,jlayer)>zz_base_isbl(:) )
88 pl(:,jlayer) = zz_isbl(:,jlayer)
90 WHERE (pz(:,jlayer)>pbld_height(:) .AND. pz(:,jlayer)<=1.5*pbld_height(:))
92 pl(:,jlayer) = zz_can(:) + (zz_isbl(:,jlayer)-zz_can(:)) &
93 * (pz(:,jlayer)-pbld_height(:)) / (zz_base_isbl(:) - pbld_height(:))
100 pl(:,jlayer) = max(pl(:,jlayer-1),pl(:,jlayer))
102 IF (lhook) CALL dr_hook(
'SM10',1,zhook_handle)
subroutine sm10(PZ, PBLD_HEIGHT, PLAMBDA_F, PL)