7 pwsnow, prsnow, pasnow, &
9 ppsn, ppsnv_a, ppsng, ppsnv )
37 xrhosmax_es, xrhosmin_es, &
38 xwcrn_expl, xdcrn_expl
45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
52 CHARACTER(LEN=*) ,
INTENT(IN) :: hsnow
54 REAL,
DIMENSION(:,:),
INTENT(IN) :: pwsnow
55 REAL,
DIMENSION(:,:),
INTENT(IN) :: prsnow
56 REAL,
DIMENSION(:) ,
INTENT(IN) :: pasnow
57 REAL,
DIMENSION(:) ,
INTENT(IN) :: pveg
58 REAL,
DIMENSION(:) ,
INTENT(IN) :: plai
59 REAL,
DIMENSION(:) ,
INTENT(IN) :: pz0
60 REAL,
DIMENSION(:) ,
INTENT(INOUT):: ppsn
61 REAL,
DIMENSION(:) ,
INTENT(INOUT):: ppsnv_a
62 REAL,
DIMENSION(:) ,
INTENT(INOUT):: ppsng
63 REAL,
DIMENSION(:) ,
INTENT(INOUT):: ppsnv
77 REAL,
DIMENSION(SIZE(PVEG)) :: zsnowswe
78 REAL,
DIMENSION(SIZE(PVEG)) :: zsnowd
79 REAL,
DIMENSION(SIZE(PVEG)) :: zsnowrho
80 REAL(KIND=JPRB) :: zhook_handle
84 IF (lhook) CALL dr_hook(
'ISBA_SNOW_FRAC',0,zhook_handle)
91 DO jlayer=1,
SIZE(pwsnow,2)
92 zsnowswe(:) = zsnowswe(:) + pwsnow(:,jlayer)
95 IF (hsnow ==
'3-L' .OR. hsnow ==
'CRO')
THEN
97 DO jlayer=1,
SIZE(pwsnow,2)
98 zsnowd(:) = zsnowd(:) + pwsnow(:,jlayer) / prsnow(:,jlayer)
100 zsnowrho(:) = zsnowswe(:)/max(xsnowdmin,zsnowd(:))
101 zsnowrho(:) = max(xrhosmin_es,min(xrhosmax_es,zsnowrho(:)))
103 zsnowrho(:) = prsnow(:,1)
109 IF (hsnow ==
'CRO' .OR. hsnow ==
'3-L')
THEN
110 ppsng(:) = min(1.0, zsnowd(:)/xdcrn_expl)
118 IF (hsnow ==
'EBA' )
THEN
120 ppsnv(:) = ppsnv_a(:)
130 IF (lsnow_frac_tot)
THEN
131 ppsn(:) = min(1.0, zsnowswe(:)/xwcrn_expl)
136 IF (lhook) CALL dr_hook(
'ISBA_SNOW_FRAC',1,zhook_handle)
real function, dimension(size(p_lai)) snow_frac_veg_a(P_PSNG, P_LAI, P_SNOWALB)
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)
subroutine isba_snow_frac(HSNOW, PWSNOW, PRSNOW, PASNOW, PVEG, PLAI, PZ0, PPSN, PPSNV_A, PPSNG, PPSNV)