6 SUBROUTINE snow_load_meb(PK, PEK, DEK, PTSTEP, PSR, PWRVNMAX, PKVN, PCHEATV, PMELTVN, &
53 USE modd_snow_par
, ONLY : xrhosmax_es
66 REAL,
INTENT(IN) :: PTSTEP
68 REAL,
DIMENSION(:),
INTENT(IN) :: PSR, PCHEATV, PVELC, PMELTVN, PWRVNMAX, PKVN
70 REAL,
DIMENSION(:),
INTENT(OUT) :: PSUBVCOR
75 REAL,
DIMENSION(SIZE(PSR)) :: ZSRINT, ZUNLOAD, ZWRVN, ZSUB
77 REAL(KIND=JPRB) :: ZHOOK_HANDLE
83 REAL,
PARAMETER :: ZUNLOAD_T = 1.5e+5
84 REAL,
PARAMETER :: ZUNLOAD_TT = 270.15
85 REAL,
PARAMETER :: ZUNLOAD_V = 1.87e+5
105 WHERE(pwrvnmax(:) == 0.0)
107 dek%XSR_GN(:) = pek%XWRVN(:)/ptstep
112 dek%XMELT_CV(:) = 0.0
128 zsrint(:) = max(0.0,pwrvnmax(:)-pek%XWRVN(:))*(1.0-exp(-pkvn(:)*psr(:)*ptstep))
129 zsrint(:) = min(psr(:)*ptstep, zsrint(:))
130 zwrvn(:) = pek%XWRVN(:) + zsrint(:)
132 dek%XSR_GN(:) = max(0.0, psr(:) - zsrint(:)/ptstep)
136 WHERE(pwrvnmax(:) /= 0.0)
142 zsub(:) = dek%XLES_CV(:)*(ptstep/pk%XLSTT(:))
143 psubvcor(:) = max(0.0, zsub(:) - zwrvn(:))/ptstep
144 zwrvn(:) = max(0.0, zwrvn(:) - zsub(:))
148 dek%XMELT_CV(:) = ptstep*max(0.0, pmeltvn(:))
149 dek%XMELT_CV(:) = min(dek%XMELT_CV(:), zwrvn(:))
150 zwrvn(:) = zwrvn(:) - dek%XMELT_CV(:)
151 pek%XWR(:) = pek%XWR(:) + dek%XMELT_CV(:)
160 dek%XFRZ_CV(:) = ptstep*max(0.0, -pmeltvn(:))
161 dek%XFRZ_CV(:) = min(dek%XFRZ_CV(:), max(0.0,pek%XWR(:)-dek%XLER_CV(:)*(ptstep/pk%XLVTT(:))))
162 zwrvn(:) = zwrvn(:) + dek%XFRZ_CV(:)
163 pek%XWR(:) = pek%XWR(:) - dek%XFRZ_CV(:)
168 zunload(:) = min(zwrvn(:), pek%XWRVN(:)*( pvelc(:)*(ptstep/zunload_v) &
169 + max(0.0, pek%XTV(:)-zunload_tt)*(ptstep/zunload_t) ))
170 zwrvn(:) = zwrvn(:) - zunload(:)
171 dek%XSR_GN(:) = dek%XSR_GN(:) + zunload(:)/ptstep
176 dek%XMELT_CV(:) = dek%XMELT_CV(:)/ptstep
177 dek%XFRZ_CV(:) = dek%XFRZ_CV(:) /ptstep
181 pek%XWRVN(:) = zwrvn(:)
183 pek%XTV(:) = pek%XTV(:) + (dek%XFRZ_CV(:) - dek%XMELT_CV(:))*(
xlmtt*ptstep)/pcheatv(:)
subroutine snow_load_meb(PK, PEK, DEK, PTSTEP, PSR, PWRVNMAX, PKVN, PCHEATV, PMELTVN, PVELC, PSUBVCOR)