SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE AVERAGED_ALBEDO_EMIS_ISBA(OFLOOD, HALBEDO, & 00003 PZENITH,PVEG,PZ0,PLAI,PTG1,& 00004 PPATCH, & 00005 PSW_BANDS, & 00006 PALBNIR_VEG,PALBVIS_VEG, & 00007 PALBUV_VEG, & 00008 PALBNIR_SOIL,PALBVIS_SOIL, & 00009 PALBUV_SOIL, & 00010 PEMIS_ECO, & 00011 TPSNOW, & 00012 PALBNIR_ECO,PALBVIS_ECO, & 00013 PALBUV_ECO, & 00014 PDIR_ALB,PSCA_ALB, & 00015 PEMIS,PTSRAD ) 00016 ! ################################################### 00017 ! 00018 !!**** ** computes radiative fields used in ISBA 00019 !! 00020 !! PURPOSE 00021 !! ------- 00022 !! 00023 !! METHOD 00024 !! ------ 00025 !! 00026 !! EXTERNAL 00027 !! -------- 00028 !! 00029 !! IMPLICIT ARGUMENTS 00030 !! ------------------ 00031 !! 00032 !! REFERENCE 00033 !! --------- 00034 !! 00035 !! AUTHOR 00036 !! ------ 00037 !! 00038 !! V. Masson Meteo-France 00039 !! 00040 !! MODIFICATION 00041 !! ------------ 00042 !! 00043 !! Original 01/2004 00044 !! A. Bogatchev 09/2005 EBA snow option 00045 !! B. Decharme 2008 The fraction of vegetation covered by snow must be 00046 ! <= to ZSNG 00047 !---------------------------------------------------------------------------- 00048 ! 00049 !* 0. DECLARATION 00050 ! ----------- 00051 ! 00052 USE MODD_SURF_PAR, ONLY : XUNDEF 00053 ! 00054 USE MODD_TYPE_SNOW 00055 ! 00056 USE MODD_ISBA_n, ONLY : XPSN,XFF,XEMISF 00057 ! 00058 USE MODI_ALBEDO 00059 USE MODI_AVERAGE_RAD 00060 USE MODI_UPDATE_RAD_ISBA_n 00061 ! 00062 ! 00063 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00064 USE PARKIND1 ,ONLY : JPRB 00065 ! 00066 IMPLICIT NONE 00067 ! 00068 !* 0.1 Declaration of arguments 00069 ! ------------------------ 00070 ! 00071 LOGICAL, INTENT(IN) :: OFLOOD 00072 CHARACTER(LEN=4), INTENT(IN) :: HALBEDO ! albedo type 00073 ! Albedo dependance with surface soil water content 00074 ! "EVOL" = albedo evolves with soil wetness 00075 ! "DRY " = constant albedo value for dry soil 00076 ! "WET " = constant albedo value for wet soil 00077 ! "MEAN" = constant albedo value for medium soil wetness 00078 ! 00079 REAL, DIMENSION(:,:), INTENT(IN) :: PVEG ! vegetation fraction 00080 REAL, DIMENSION(:,:), INTENT(IN) :: PZ0 ! roughness length 00081 REAL, DIMENSION(:,:), INTENT(IN) :: PLAI ! leaf area index 00082 REAL, DIMENSION(:,:), INTENT(IN) :: PTG1 ! soil surface temperature 00083 REAL, DIMENSION(:,:), INTENT(IN) :: PPATCH ! tile fraction 00084 REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band 00085 REAL, DIMENSION(:), INTENT(IN) :: PZENITH 00086 00087 REAL, DIMENSION(:,:), INTENT(IN) :: PALBNIR_VEG ! near-infra-red albedo of vegetation 00088 REAL, DIMENSION(:,:), INTENT(IN) :: PALBVIS_VEG ! visible albedo of vegetation 00089 REAL, DIMENSION(:,:), INTENT(IN) :: PALBUV_VEG ! UV albedo of vegetation 00090 REAL, DIMENSION(:,:), INTENT(IN) :: PALBNIR_SOIL! near-infra-red albedo of soil 00091 REAL, DIMENSION(:,:), INTENT(IN) :: PALBVIS_SOIL! visible albedo of soil 00092 REAL, DIMENSION(:,:), INTENT(IN) :: PALBUV_SOIL ! UV albedo of soil 00093 REAL, DIMENSION(:,:), INTENT(IN) :: PEMIS_ECO ! emissivity (soil+vegetation) 00094 TYPE(SURF_SNOW), INTENT(IN) :: TPSNOW ! prognostic snow cover 00095 ! 00096 REAL, DIMENSION(:,:), INTENT(OUT) :: PALBNIR_ECO ! near-infra-red albedo (soil+vegetation) 00097 REAL, DIMENSION(:,:), INTENT(OUT) :: PALBVIS_ECO ! visible albedo (soil+vegetation) 00098 REAL, DIMENSION(:,:), INTENT(OUT) :: PALBUV_ECO ! UV albedo (soil+vegetation) 00099 ! 00100 REAL, DIMENSION(:,:), INTENT(OUT) :: PDIR_ALB ! averaged direct albedo (per wavelength) 00101 REAL, DIMENSION(:,:), INTENT(OUT) :: PSCA_ALB ! averaged diffuse albedo (per wavelength) 00102 REAL, DIMENSION(:), INTENT(OUT) :: PEMIS ! averaged emissivity 00103 REAL, DIMENSION(:), INTENT(OUT) :: PTSRAD ! averaged radiaitve temp. 00104 ! 00105 ! 00106 !* 0.2 Declaration of local variables 00107 ! ------------------------------ 00108 ! 00109 ! 00110 REAL, DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: ZDIR_ALB_PATCH 00111 ! ! direct albedo 00112 REAL, DIMENSION(SIZE(PALBNIR_VEG,1),SIZE(PSW_BANDS),SIZE(PALBVIS_VEG,2)) :: ZSCA_ALB_PATCH 00113 ! ! diffuse albedo 00114 REAL, DIMENSION(SIZE(PEMIS_ECO, 1),SIZE(PALBVIS_VEG,2)) :: ZEMIS_PATCH ! emissivity with snow-flood 00115 REAL, DIMENSION(SIZE(PEMIS_ECO, 1),SIZE(PALBVIS_VEG,2)) :: ZTRAD_PATCH ! Tsrad 00116 REAL, DIMENSION(SIZE(PEMIS_ECO, 1)) :: ZEMIS ! emissivity with flood 00117 ! 00118 INTEGER :: JPATCH ! loop on patches 00119 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00120 !------------------------------------------------------------------------------- 00121 ! 00122 ! 00123 !* 1. averaged albedo on natural continental surfaces (except prognostic snow) 00124 ! ----------------------------------------------- 00125 ! 00126 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_EMIS_ISBA',0,ZHOOK_HANDLE) 00127 CALL ALBEDO(HALBEDO, & 00128 PALBVIS_VEG,PALBNIR_VEG,PALBUV_VEG,PVEG, & 00129 PALBVIS_SOIL,PALBNIR_SOIL,PALBUV_SOIL, & 00130 PALBVIS_ECO,PALBNIR_ECO,PALBUV_ECO ) 00131 00132 ! 00133 !* 2. averaged albedo and emis. on natural continental surfaces (with prognostic snow) 00134 ! --------------------------------------------------------- 00135 ! 00136 ZDIR_ALB_PATCH(:,:,:)=0. 00137 ZSCA_ALB_PATCH(:,:,:)=0. 00138 ZEMIS_PATCH (:,:)=0. 00139 ZTRAD_PATCH (:,:)=0. 00140 ! 00141 PDIR_ALB(:,:)=0. 00142 PSCA_ALB(:,:)=0. 00143 PEMIS (:) =0. 00144 PTSRAD (:) =0. 00145 ! 00146 !* Initialization of albedo for each wavelength, emissivity and snow/flood fractions 00147 ! 00148 CALL UPDATE_RAD_ISBA_n(OFLOOD, TPSNOW%SCHEME,PZENITH,PSW_BANDS,PVEG,PLAI, & 00149 PZ0,PALBNIR_ECO,PALBVIS_ECO,PALBUV_ECO,PEMIS_ECO,& 00150 ZDIR_ALB_PATCH,ZSCA_ALB_PATCH,ZEMIS_PATCH ) 00151 ! 00152 !* radiative surface temperature 00153 ! 00154 DO JPATCH=1,SIZE(PALBVIS_VEG,2) 00155 ! 00156 ZEMIS(:) = PEMIS_ECO(:,JPATCH) 00157 ! 00158 IF(OFLOOD.AND.(TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO'))THEN 00159 WHERE(XPSN(:,JPATCH)<1.0.AND.PEMIS_ECO(:,JPATCH)/=XUNDEF) 00160 ZEMIS(:) = ((1.-XFF(:,JPATCH)-XPSN(:,JPATCH))*PEMIS_ECO(:,JPATCH) + XFF(:,JPATCH)*XEMISF(:,JPATCH))/(1.-XPSN(:,JPATCH)) 00161 ENDWHERE 00162 ENDIF 00163 ! 00164 IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA') THEN 00165 ZTRAD_PATCH(:,JPATCH) = PTG1(:,JPATCH) 00166 ELSE IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN 00167 WHERE (PEMIS_ECO(:,JPATCH)/=XUNDEF .AND. ZEMIS_PATCH(:,JPATCH)/=0.) 00168 ZTRAD_PATCH(:,JPATCH) =( ( (1.-XPSN(:,JPATCH))*ZEMIS (:) *PTG1 (:,JPATCH)**4 & 00169 + XPSN(:,JPATCH) *TPSNOW%EMIS(:,JPATCH)*TPSNOW%TS(:,JPATCH)**4 ) )**0.25 & 00170 / ZEMIS_PATCH(:,JPATCH)**0.25 00171 END WHERE 00172 END IF 00173 END DO 00174 ! 00175 !* averaged fields 00176 ! 00177 CALL AVERAGE_RAD(PPATCH, & 00178 ZDIR_ALB_PATCH, ZSCA_ALB_PATCH, ZEMIS_PATCH, ZTRAD_PATCH, & 00179 PDIR_ALB, PSCA_ALB, PEMIS, PTSRAD ) 00180 IF (LHOOK) CALL DR_HOOK('AVERAGED_ALBEDO_EMIS_ISBA',1,ZHOOK_HANDLE) 00181 ! 00182 !------------------------------------------------------------------------------- 00183 ! 00184 END SUBROUTINE AVERAGED_ALBEDO_EMIS_ISBA