6 SUBROUTINE snow_load_meb(PTSTEP,PSR,PTV,PWRVNMAX,PKVN,PCHEATV,PLERCV,PLESC,PMELTVN, &
7 pvelc,pmeltcv,pfrzcv,punloadsnow,pwrv,pwrvn,psubvcor,plvtt,plstt)
52 USE yomhook
,ONLY : lhook, dr_hook
53 USE parkind1
,ONLY : jprb
59 REAL,
INTENT(IN) :: ptstep
61 REAL,
DIMENSION(:),
INTENT(IN) :: plvtt, plstt
62 REAL,
DIMENSION(:),
INTENT(IN) :: psr,pcheatv, plercv, pvelc, &
63 plesc, pmeltvn, pwrvnmax, pkvn
65 REAL,
DIMENSION(:),
INTENT(INOUT) :: pwrvn, pwrv, ptv
67 REAL,
DIMENSION(:),
INTENT(OUT) :: pmeltcv, pfrzcv, punloadsnow, psubvcor
72 REAL,
DIMENSION(SIZE(PSR)) :: zsrint, zunload, zwrvn, zsub
74 REAL(KIND=JPRB) :: zhook_handle
80 REAL,
PARAMETER :: zunload_t = 1.5e+5
81 REAL,
PARAMETER :: zunload_tt = 270.15
82 REAL,
PARAMETER :: zunload_v = 1.87e+5
87 IF (lhook) CALL dr_hook(
'SNOW_LOAD_MEB',0,zhook_handle)
101 WHERE(pwrvnmax(:) == 0.0)
103 punloadsnow(:) = pwrvn(:)/ptstep
123 zsrint(:) = max(0.0,pwrvnmax(:)-pwrvn(:))*(1.0-exp(-pkvn(:)*psr(:)*ptstep))
124 zsrint(:) = min(psr(:)*ptstep, zsrint(:))
125 zwrvn(:) = pwrvn(:) + zsrint(:)
127 punloadsnow(:) = max(0.0, psr(:) - zsrint(:)/ptstep)
133 zsub(:) = plesc(:)*(ptstep/plstt(:))
134 psubvcor(:) = max(0.0, zsub(:) - zwrvn(:))/ptstep
135 zwrvn(:) = max(0.0, zwrvn(:) - zsub(:))
139 pmeltcv(:) = ptstep*max(0.0, pmeltvn(:))
140 pmeltcv(:) = min(pmeltcv(:), zwrvn(:))
141 zwrvn(:) = zwrvn(:) - pmeltcv(:)
142 pwrv(:) = pwrv(:) + pmeltcv(:)
151 pfrzcv(:) = ptstep*max(0.0, -pmeltvn(:))
152 pfrzcv(:) = min(pfrzcv(:), max(0.0,pwrv(:)-plercv(:)*(ptstep/plvtt(:))))
153 zwrvn(:) = zwrvn(:) + pfrzcv(:)
154 pwrv(:) = pwrv(:) - pfrzcv(:)
159 zunload(:) = min(zwrvn(:), pwrvn(:)*( pvelc(:)*(ptstep/zunload_v) &
160 + max(0.0, ptv(:)-zunload_tt)*(ptstep/zunload_t) ))
161 zwrvn(:) = zwrvn(:) - zunload(:)
162 punloadsnow(:) = punloadsnow(:) + zunload(:)/ptstep
167 pmeltcv(:) = pmeltcv(:)/ptstep
168 pfrzcv(:) = pfrzcv(:) /ptstep
174 ptv(:) = ptv(:) + (pfrzcv(:) - pmeltcv(:))*(xlmtt*ptstep)/pcheatv(:)
178 IF (lhook) CALL dr_hook(
'SNOW_LOAD_MEB',1,zhook_handle)
subroutine snow_load_meb(PTSTEP, PSR, PTV, PWRVNMAX, PKVN, PCHEATV, PLERCV, PLESC, PMELTVN, PVELC, PMELTCV, PFRZCV, PUNLOADSNOW, PWRV, PWRVN, PSUBVCOR, PLVTT, PLSTT)