49 USE modd_snow_par
, ONLY : xrhosmax, xhgla, xsnowdmin, xrhosmax_es
59 REAL,
INTENT(IN) :: PTSTEP
62 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
67 REAL,
DIMENSION(:),
INTENT(OUT) :: PICEFLUX
73 REAL,
PARAMETER :: ZTAU=365.25
75 REAL,
DIMENSION(SIZE(PSR)) :: ZGLASTO,ZSTOMAX,ZFLUX,ZSR,ZSWE
76 REAL,
DIMENSION(SIZE(PSR)) :: ZSNOWD
81 REAL(KIND=JPRB) :: ZHOOK_HANDLE
89 zglasto(:) = pek%XICE_STO(:)
100 IF(pek%TSNOW%SCHEME/=
'3-L' .AND. pek%TSNOW%SCHEME/=
'CRO')
THEN 102 zswe(:) = pek%TSNOW%WSNOW(:,1)
105 DO jwrk=1,
SIZE(pek%TSNOW%WSNOW,2)
106 zswe(:) = zswe(:) + pek%TSNOW%WSNOW(:,jwrk)
110 WHERE(zswe(:)>xhgla*zrhosmax)
118 pek%XICE_STO(:) = (zglasto(:)+ptstep*zsr(:))/(1.0+ptstep/(ztau*
xday))
122 zstomax(:) = zsr(:)*ptstep+zglasto(:)
124 pek%XICE_STO(:) = min(zstomax(:),pek%XICE_STO(:))
128 zflux(:) = (zglasto(:)-pek%XICE_STO(:))/ptstep+zsr(:)
132 piceflux(:) = max(0.0,zflux(:))
133 pek%XICE_STO(:) = pek%XICE_STO(:) + piceflux(:)-zflux(:)
135 WHERE(pek%XICE_STO(:)<=1.e-10)pek%XICE_STO(:)=0.0
140 IF(pek%TSNOW%SCHEME/=
'3-L' .AND. pek%TSNOW%SCHEME/=
'CRO')
THEN 142 WHERE(pek%TSNOW%WSNOW(:,1)<=xhgla*zrhosmax)piceflux(:)=0.0
143 pek%TSNOW%WSNOW(:,1)=pek%TSNOW%WSNOW(:,1)-piceflux(:)*ptstep
147 WHERE(zswe(:)<=xhgla*zrhosmax)piceflux(:)=0.0
151 DO jwrk=1,
SIZE(pek%TSNOW%WSNOW,2)
152 zsnowd(:) = zsnowd(:) + pek%TSNOW%WSNOW(:,jwrk)/pek%TSNOW%RHO(:,jwrk
156 DO jwrk=1,
SIZE(pek%TSNOW%WSNOW,2)
157 zflux(:) = piceflux(:)*(pek%TSNOW%WSNOW(:,jwrk)/pek%TSNOW%RHO(:,jwrk
subroutine hydro_glacier(PTSTEP, PSR, PEK, PICEFLUX)