6 SUBROUTINE hydro_snow(OGLACIER, PTSTEP, PVEGTYPE, PSR, PLES, PMELT, TPSNOW, PPG_MELT )
67 USE modd_snow_par
, ONLY : xans_t, xans_todry, xansmin, xansmax, &
68 xrhosmax, xrhosmin, xwcrn, xaglamin, &
71 USE modd_data_cover_par
, ONLY : nvt_snow
82 LOGICAL,
INTENT(IN) :: OGLACIER
86 REAL,
INTENT(IN) :: PTSTEP
88 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEGTYPE
89 REAL,
DIMENSION(:),
INTENT(IN) :: PSR, PLES, PMELT
94 REAL,
DIMENSION(:),
INTENT(INOUT) :: PPG_MELT
100 REAL,
DIMENSION(SIZE(PSR)) :: ZSNOWSWEM, ZWSX, ZANSMIN, ZANSMAX
106 REAL(KIND=JPRB) :: ZHOOK_HANDLE
126 zsnowswem(:) = tpsnow%WSNOW(:,1)
136 tpsnow%WSNOW(:,1) = zsnowswem(:) + ptstep * ( psr(:) - ples(:)/
xlstt - pmelt
141 ppg_melt(:) = ppg_melt(:) + pmelt(:)
145 WHERE(tpsnow%WSNOW(:,1) < 1.0e-10) tpsnow%WSNOW(:,1) = 0.
153 zansmin(:) = xaglamin * pvegtype(:,nvt_snow) + xansmin * (1.0-pvegtype
162 WHERE (tpsnow%WSNOW(:,1) > 0.0 )
164 WHERE ( zsnowswem > 0.0)
167 WHERE ( pmelt > 0.0 )
168 tpsnow%ALB(:) = (tpsnow%ALB(:)-zansmin(:))*exp(-xans_t*ptstep/
xday 172 tpsnow%ALB(:) = tpsnow%ALB(:) - xans_todry*ptstep/
xday &
173 + psr(:)*ptstep/xwcrn*(zansmax(:)-zansmin(:))
176 ELSEWHERE (zsnowswem == 0.0)
179 tpsnow%ALB(:) = zansmax(:)
183 tpsnow%ALB(:) = min( zansmax(:), tpsnow%ALB(:) )
184 tpsnow%ALB(:) = max( zansmin(:), tpsnow%ALB(:) )
196 WHERE ( tpsnow%WSNOW(:,1) > 0.0 )
197 WHERE ( zsnowswem > 0.0 )
198 zwsx(:) = max( tpsnow%WSNOW(:,1),psr(:)*ptstep)
199 tpsnow%RHO(:,1) = (tpsnow%RHO(:,1)-xrhosmax)*exp(-xans_t*ptstep/
xday 202 ELSEWHERE ( zsnowswem == 0.0)
203 tpsnow%RHO(:,1) = xrhosmin
212 WHERE ( tpsnow%WSNOW(:,1) == 0.0 )
subroutine hydro_snow(OGLACIER, PTSTEP, PVEGTYPE, PSR, PLES, PMELT