FUNCTION SNOW_FRAC_VEG_A(P_PSNG,P_LAI,P_SNOWALB) RESULT(PPSNV)
! **********************************************************
!
IMPLICIT NONE
!
REAL, DIMENSION(:), INTENT(IN) :: P_LAI ! leaf area index
REAL, DIMENSION(:), INTENT(IN) :: P_SNOWALB ! snow albedo
REAL, DIMENSION(:), INTENT(IN) :: P_PSNG ! snow fraction over bare ground
REAL, DIMENSION(SIZE(P_LAI)) :: PPSNV ! snow fraction over vegetation
!
!
!
! Definition of local variables
REAL, DIMENSION(SIZE(P_LAI)) :: FLAI ! snow fraction over vegetation
REAL RLAIMAX,RLAI,A1,A2
REAL(KIND=JPRB) :: ZHOOK_HANDLE
!
IF (LHOOK) CALL DR_HOOK('MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_A',0,ZHOOK_HANDLE)
RLAIMAX=7.
RLAI=3.
A1=0.87
A2=0.84
FLAI(:)=1.
WHERE(P_LAI(:)>RLAI)
FLAI(:)=1.-(P_LAI(:)/RLAIMAX)*(MAX(0.0,(A1-MAX(A2,P_SNOWALB(:))))/(A1-A2))
END WHERE
PPSNV(:)=P_PSNG(:)*FLAI(:)
IF (LHOOK) CALL DR_HOOK('MODE_SURF_SNOW_FRAC:SNOW_FRAC_VEG_A',1,ZHOOK_HANDLE)
!
END FUNCTION SNOW_FRAC_VEG_A