6 SUBROUTINE z0eff (HSNOW_SCHEME, &
7 OMEB, PALFA, PZREF, PUREF, PZ0, PZ0REL, PPSN, &
8 PPALPHAN,PZ0LITTER, PWSNOW, ISS, PFF, PZ0_FLOOD, &
9 PZ0_O_Z0H, PZ0_WITH_SNOW, PZ0H_WITH_SNOW,PZ0EFF, &
11 PZ0_MEBV,PZ0H_MEBV,PZ0EFF_MEBV, &
12 PZ0_MEBN,PZ0H_MEBN,PZ0EFF_MEBN )
70 USE modd_snow_par
, ONLY : xz0sn, xwcrn, xz0hsn
72 USE modi_subscale_z0eff
85 CHARACTER(LEN=*),
INTENT(IN) :: HSNOW_SCHEME
87 LOGICAL,
INTENT(IN) :: OMEB
89 REAL,
DIMENSION(:),
INTENT(IN) :: PALFA
90 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
91 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
92 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0
93 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0REL
94 REAL,
DIMENSION(:),
INTENT(IN) :: PPSN
95 REAL,
DIMENSION(:),
INTENT(IN) :: PPALPHAN
96 TYPE(
sso_t),
INTENT(INOUT) :: ISS
97 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0_O_Z0H
99 REAL,
DIMENSION(:),
INTENT(IN) :: PFF
100 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0_FLOOD
103 REAL,
DIMENSION(:),
INTENT(IN) :: PZ0LITTER
105 REAL,
DIMENSION(:),
INTENT(IN) :: PWSNOW
107 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0_WITH_SNOW
108 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0H_WITH_SNOW
109 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0EFF
112 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0G_WITHOUT_SNOW
114 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0_MEBV
115 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0H_MEBV
116 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0EFF_MEBV
118 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0_MEBN
119 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0H_MEBN
120 REAL,
DIMENSION(:),
INTENT(OUT) :: PZ0EFF_MEBN
128 REAL,
DIMENSION(SIZE(PZ0EFF)) :: ZWORK, ZALFA, &
129 ZZ0EFFIP, ZZ0EFFIM, &
130 ZZ0EFFJP, ZZ0EFFJM, &
134 REAL :: Z0CR, ZUZ0CN, ZALRCN1, ZALRCN2
135 REAL(KIND=JPRB) :: ZHOOK_HANDLE
144 WHERE(zalfa(:)<=-
xpi) zalfa = zalfa + 2.*
xpi 145 WHERE(zalfa(:)>
xpi) zalfa = zalfa - 2.*
xpi 163 pz0_with_snow(:) = pz0(:)
164 pz0h_with_snow(:) = pz0(:) / pz0_o_z0h(:)
166 IF(hsnow_scheme==
'EBA')
THEN 171 pz0_with_snow(:) = pz0_with_snow(:) + ( z0cr - pz0(:))* &
172 pwsnow(:)/(pwsnow(:) + xwcrn*(1.0+zuz0cn*pz0(:)))
179 pz0h_with_snow(:) = pz0h_with_snow(:) + ( z0cr - pz0h_with_snow(:))* &
180 pwsnow(:)/(pwsnow(:) + xwcrn*(1.0+zuz0cn*pz0h_with_snow(:)))
187 WHERE (ppsn(:)>0..OR.pff(:)>0.)
189 zwork(:) = ( ppsn(:) /(log(puref(:)/xz0sn ))**2 ) &
190 + ( pff(:) /(log(puref(:)/pz0_flood(:)))**2 ) &
191 + ((1.-ppsn(:)-pff(:))/(log(puref(:)/pz0(:) ))**2 )
193 pz0_with_snow(:) = puref(:) /exp( sqrt( 1./zwork(:) ) )
195 zwork(:) = ( ppsn(:) /(log(pzref(:)/xz0hsn ))**2 ) &
196 + ( pff(:) /(log(pzref(:)/(pz0_flood(:)/ pz0_o_z0h(:))))**2 ) &
197 + ((1.-ppsn(:)-pff(:))/(log(pzref(:)/(pz0(:)/pz0_o_z0h(:)) ))**2 )
199 pz0h_with_snow(:) = pzref(:) /exp( sqrt( 1./zwork(:) ) )
209 pz0g_without_snow(:) = pz0litter
211 zpff(:)=pff(:)/(1-ppsn(:)+1.e-6)
212 zwork(:) = ( zpff(:) * log(pz0_flood(:)) ) &
213 + ( (1.-zpff(:)) * log(pz0litter(:)) )
214 pz0g_without_snow(:) = exp( zwork(:) )
221 zwork(:) = ( ppalphan(:) /(log(puref(:)/xz0sn ))**2 ) &
222 + ((1.-ppalphan(:))/(log(puref(:)/pz0_mebv(:) ))**2 )
223 pz0_mebn(:) = puref(:) /exp( sqrt( 1./zwork(:) ) )
227 zwork(:) = ( ppsn(:) /(log(puref(:)/pz0_mebn(:) ))**2 ) &
228 + ((1.-ppsn(:))/(log(puref(:)/pz0_mebv(:) ))**2 )
229 pz0_with_snow(:) = puref(:) /exp( sqrt( 1./zwork(:) ) )
232 pz0h_mebv(:) = pz0_mebv(:)/pz0_o_z0h(:)
238 zwork(:) = ( ppalphan(:) /(log(pzref(:)/xz0hsn ))**2 ) &
239 + ( (1.-ppalphan(:))/(log(pzref(:)/pz0h_mebv(:) ))**2 )
240 pz0h_mebn(:) = pzref(:) /exp( sqrt( 1./zwork(:) ) )
244 zwork(:) = ( ppsn(:) /(log(pzref(:)/pz0h_mebn(:) ))**2 ) &
245 + ( (1.-ppsn(:))/(log(pzref(:)/pz0h_mebv(:) ))**2 )
246 pz0h_with_snow(:) = pzref(:) /exp( sqrt( 1./zwork(:) ) )
259 pz0eff(:) = pz0_with_snow(:)
261 pz0eff_mebv(:) = pz0_mebv(:)
262 pz0eff_mebn(:) = pz0_mebn(:)
subroutine z0eff(HSNOW_SCHEME, OMEB, PALFA, PZREF, PUREF, PZ0, PZ0REL, PPSN, PPALPHAN, PZ0LITTER, PWSNOW, ISS, PFF, PZ0_FLOOD, PZ0_O_Z0H, PZ0_WITH_SNOW, PZ0H_WITH_SNOW, PZ0EFF, PZ0G_WITHOUT_SNOW, PZ0_MEBV, PZ0H_MEBV, PZ0EFF_MEBV, PZ0_MEBN, PZ0H_MEBN, PZ0EFF_MEBN)