56 USE yomhook
,ONLY : lhook, dr_hook
57 USE parkind1
,ONLY : jprb
63 REAL,
DIMENSION(:),
INTENT(IN) :: ppsn, ppalphan
67 REAL,
DIMENSION(:),
INTENT(IN) :: pwrvn
70 REAL,
DIMENSION(:),
INTENT(IN) :: plaiv
73 REAL,
DIMENSION(:),
INTENT(IN) :: pchip, ptv
77 REAL,
DIMENSION(:),
INTENT(OUT) :: pwrvnmax
81 REAL,
DIMENSION(:),
INTENT(OUT) :: pdeltavn
85 REAL,
DIMENSION(:),
INTENT(OUT) :: pmeltvn
91 REAL,
DIMENSION(SIZE(PLAIV)) :: zlai,zfcp,zfracvn, zsnowrhov
97 REAL(KIND=JPRB) :: zhook_handle
103 REAL,
PARAMETER :: zrhovnpar1 = 67.92
104 REAL,
PARAMETER :: zrhovnpar2 = 51.25
105 REAL,
PARAMETER :: zrhovnpar3 = 2.59
109 REAL,
PARAMETER :: zwrvnmaxpar1 = 6.3
110 REAL,
PARAMETER :: zwrvnmaxpar2 = 0.27
111 REAL,
PARAMETER :: zwrvnmaxpar3 = 46.
115 REAL,
PARAMETER :: zdvnpar1 = 0.89
116 REAL,
PARAMETER :: zdvnpar2 = -4.7
117 REAL,
PARAMETER :: zdvnpar3 = 0.45
118 REAL,
PARAMETER :: zdvnpar4 = 0.3
119 REAL,
PARAMETER :: zmeltf = 5.556e-6
120 REAL,
PARAMETER :: zlai_min = 0.001
123 REAL,
PARAMETER :: zrhovn_tmax = 279.85403
133 IF (lhook) CALL dr_hook(
'SNOW_LEAVES_FRAC_MEB',0,zhook_handle)
135 zsnowrhov(:)= zrhovnpar1
145 zlai(:) = plaiv(:)*(1.-ppsn(:)+ppsn(:)*(1.-ppalphan(:)))
149 WHERE(zlai(:) > zlai_min .AND. plaiv(:)/=xundef)
153 zsnowrhov(:)= zrhovnpar1 + zrhovnpar2*exp( (min(zrhovn_tmax,ptv(:))-xtt)/zrhovnpar3)
157 pwrvnmax(:) = zwrvnmaxpar1*(zwrvnmaxpar2+zwrvnmaxpar3/zsnowrhov(:)) * zlai(:)
161 zfracvn(:) = pwrvn(:)/pwrvnmax(:)
166 pdeltavn(:) = zdvnpar1*zfracvn(:)**zdvnpar4/( 1.+exp( zdvnpar2*( zfracvn(:) - zdvnpar3 ) ) )
170 pmeltvn(:) = zmeltf * ( ptv(:)-xtt ) * zfracvn(:)
174 IF (lhook) CALL dr_hook(
'SNOW_LEAVES_FRAC_MEB',1,zhook_handle)
subroutine snow_leaves_frac_meb(PPSN, PPALPHAN, PWRVN, PTV, PCHIP, PLAIV, PWRVNMAX, PDELTAVN, PMELTVN)