!SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier !SFX_LIC This is part of the SURFEX software governed by the CeCILL version 2.1 !SFX_LIC version 1. See LICENSE, Licence_CeCILL_V2.1-en.txt and Licence_CeCILL_V2.1-fr.txt !SFX_LIC for details. version 1. ! ######### SUBROUTINE ALBEDO_FROM_NIR_VIS(PSW_BANDS,PALBNIR,PALBVIS,PALBUV,PDIR_ALB,PSCA_ALB) ! ########################################################################### ! !!**** *ALBEDO_FROM_NIR_VIS* - routine to initialize albedo for !! any wavelength from near-infra-red, !! visible and UV albedo !! !! PURPOSE !! ------- !! !!** METHOD !! ------ !! !! EXTERNAL !! -------- !! !! !! IMPLICIT ARGUMENTS !! ------------------ !! !! REFERENCE !! --------- !! !! !! AUTHOR !! ------ !! V. Masson *Meteo France* !! !! MODIFICATIONS !! ------------- !! Original 02/2003 !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! USE MODD_ISBA_PAR, ONLY : XRED_EDGE, XUV_EDGE USE MODD_SURF_PAR, ONLY : XUNDEF ! ! USE YOMHOOK ,ONLY : LHOOK, DR_HOOK USE PARKIND1 ,ONLY : JPRB ! IMPLICIT NONE ! !* 0.1 Declarations of arguments ! ------------------------- ! REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! mean wavelength of each shortwave band (m) REAL, DIMENSION(:), INTENT(IN) :: PALBNIR ! near infra-red albedo REAL, DIMENSION(:), INTENT(IN) :: PALBVIS ! visible albedo REAL, DIMENSION(:), INTENT(IN) :: PALBUV ! UV albedo REAL, DIMENSION(:,:), INTENT(OUT):: PDIR_ALB ! direct albedo for each wavelength REAL, DIMENSION(:,:), INTENT(OUT):: PSCA_ALB ! diffuse albedo for each wavelength ! !* 0.2 Declarations of local variables ! ------------------------------- ! INTEGER :: ISWB ! number of SW spectral bands INTEGER :: JSWB ! loop counter on number of SW spectral bands REAL(KIND=JPRB) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ALBEDO_FROM_NIR_VIS',0,ZHOOK_HANDLE) ISWB = SIZE(PSW_BANDS) ! PDIR_ALB(:,:) = XUNDEF PSCA_ALB(:,:) = XUNDEF ! IF (ISWB==1) THEN WHERE(PALBNIR(:)/= XUNDEF) PDIR_ALB(:,1) = 0.5*(PALBNIR(:)+PALBVIS(:)) ELSE DO JSWB=1,ISWB IF (PSW_BANDS(JSWB)>XRED_EDGE ) THEN ! XRED_EDGE=0.7 micro-m PDIR_ALB(:,JSWB) = PALBNIR(:) ELSE IF (PSW_BANDS(JSWB)<XUV_EDGE ) THEN ! XUV_EDGE=0.25 micro-m PDIR_ALB(:,JSWB) = PALBUV (:) ELSE PDIR_ALB(:,JSWB) = PALBVIS(:) END IF END DO END IF ! PSCA_ALB(:,:) = PDIR_ALB(:,:) IF (LHOOK) CALL DR_HOOK('ALBEDO_FROM_NIR_VIS',1,ZHOOK_HANDLE) !------------------------------------------------------------------------------- ! END SUBROUTINE ALBEDO_FROM_NIR_VIS