45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
58 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
59 REAL,
DIMENSION(SIZE(PWSNOW)) :: ppsng
60 REAL(KIND=JPRB) :: zhook_handle
62 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND',0,zhook_handle)
63 ppsng(:) = pwsnow(:) / (pwsnow(:)+xwcrn)
64 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND',1,zhook_handle)
77 REAL,
DIMENSION(:),
INTENT(IN) :: ppsng
78 REAL,
DIMENSION(SIZE(PPSNG)) :: pwsnow
79 REAL(KIND=JPRB) :: zhook_handle
81 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:WSNOW_FROM_SNOW_FRAC_GROUND',0,zhook_handle)
82 pwsnow(:) = xwcrn * ppsng(:) / (1. - ppsng(:))
83 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:WSNOW_FROM_SNOW_FRAC_GROUND',1,zhook_handle)
95 REAL,
DIMENSION(:),
INTENT(IN) :: ppsng
96 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
97 REAL,
DIMENSION(:),
INTENT(IN) :: pz0veg
98 REAL,
DIMENSION(:),
INTENT(IN) :: prhos
99 REAL,
DIMENSION(SIZE(PWSNOW)) :: ppsnv
100 REAL(KIND=JPRB) :: zhook_handle
102 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG',0,zhook_handle)
103 ppsnv(:) = pwsnow(:) / (pwsnow(:)+prhos(:)*xwsnv*pz0veg(:))
105 ppsnv(:) = min(ppsnv(:),ppsng(:))
106 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG',1,zhook_handle)
117 REAL,
DIMENSION(:),
INTENT(IN) :: p_lai
118 REAL,
DIMENSION(:),
INTENT(IN) :: p_snowalb
119 REAL,
DIMENSION(:),
INTENT(IN) :: p_psng
120 REAL,
DIMENSION(SIZE(P_LAI)) :: ppsnv
125 REAL,
DIMENSION(SIZE(P_LAI)) :: flai
126 REAL rlaimax,rlai,a1,a2
127 REAL(KIND=JPRB) :: zhook_handle
129 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_A',0,zhook_handle)
136 flai(:)=1.-(p_lai(:)/rlaimax)*(max(0.0,(a1-max(a2,p_snowalb(:))))/(a1-a2))
138 ppsnv(:)=p_psng(:)*flai(:)
139 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_A',1,zhook_handle)
151 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
152 REAL,
DIMENSION(:),
INTENT(IN) :: ppsng
153 REAL,
DIMENSION(:),
INTENT(IN) :: ppsnv
154 REAL,
DIMENSION(:),
INTENT(IN) :: pveg
155 REAL,
DIMENSION(SIZE(PWSNOW)) :: ppsn
156 REAL(KIND=JPRB) :: zhook_handle
158 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT',0,zhook_handle)
159 ppsn(:) = (1-pveg(:))*ppsng(:) + pveg(:)*ppsnv(:)
160 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT',1,zhook_handle)
174 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow_road
175 LOGICAL,
DIMENSION(:),
INTENT(IN) :: osnow
176 REAL,
DIMENSION(:),
INTENT(OUT) :: pdn_road
177 REAL,
DIMENSION(:),
INTENT(OUT) :: pdf_road
178 REAL(KIND=JPRB) :: zhook_handle
180 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_ROAD',0,zhook_handle)
188 WHERE (pwsnow_road(:)>0. .OR. osnow)
189 pdn_road(:) = max(min(pwsnow_road(:)/(pwsnow_road(:) + xwcrn*0.1) , 0.7), 0.01)
190 pdf_road(:) = 1.-pdn_road(:)
192 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_ROAD',1,zhook_handle)
204 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow_roof
205 LOGICAL,
DIMENSION(:),
INTENT(IN) :: osnow
206 REAL,
DIMENSION(:),
INTENT(OUT) :: pdn_roof
207 REAL,
DIMENSION(:),
INTENT(OUT) :: pdf_roof
208 REAL(KIND=JPRB) :: zhook_handle
210 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_ROOF',0,zhook_handle)
218 WHERE (pwsnow_roof(:)>0. .OR. osnow)
219 pdn_roof(:) = max(pwsnow_roof(:)/(pwsnow_roof(:) + xwcrn*0.1),0.01)
220 pdf_roof(:) = 1.-pdn_roof(:)
222 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_ROOF',1,zhook_handle)
234 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
236 REAL(KIND=JPRB) :: zhook_handle
237 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT_1D',0,zhook_handle)
239 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT_1D',1,zhook_handle)
250 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
251 REAL(KIND=JPRB) :: zhook_handle
253 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT_2D',0,zhook_handle)
255 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_NAT_2D',1,zhook_handle)
264 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
265 REAL(KIND=JPRB) :: zhook_handle
267 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_1D',0,zhook_handle)
269 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_1D',1,zhook_handle)
279 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
280 REAL(KIND=JPRB) :: zhook_handle
281 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_2D',0,zhook_handle)
283 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_2D',1,zhook_handle)
293 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
294 REAL(KIND=JPRB) :: zhook_handle
295 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND_1D',0,zhook_handle)
297 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND_1D',1,zhook_handle)
308 REAL,
DIMENSION(:),
INTENT(IN) :: pwsnow
309 REAL(KIND=JPRB) :: zhook_handle
310 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND_2D',0,zhook_handle)
312 IF (lhook) CALL dr_hook(
'MODE_SURF_SNOW_FRAC:SNOW_FRAC_GROUND_2D',1,zhook_handle)
real function snow_frac_veg_2d(PWSNOW)
real function snow_frac_ground_1d(PWSNOW)
real function, dimension(size(p_lai)) snow_frac_veg_a(P_PSNG, P_LAI, P_SNOWALB)
real function snow_frac_nat_1d(PWSNOW)
subroutine snow_frac_roof(PWSNOW_ROOF, OSNOW, PDN_ROOF, PDF_ROOF)
real function snow_frac_ground_2d(PWSNOW)
real function snow_frac_nat_2d(PWSNOW)
real function, dimension(size(ppsng)) wsnow_from_snow_frac_ground(PPSNG)
real function, dimension(size(pwsnow)) snow_frac_nat(PWSNOW, PPSNG, PPSNV, PVEG)
real function, dimension(size(pwsnow)) snow_frac_veg(PPSNG, PWSNOW, PZ0VEG, PRHOS)
real function, dimension(size(pwsnow)) snow_frac_ground(PWSNOW)
real function snow_frac_veg_1d(PWSNOW)
subroutine snow_frac_road(PWSNOW_ROAD, OSNOW, PDN_ROAD, PDF_ROAD)