SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE AVG_ALBEDO_EMIS_GREENROOF(HALBEDO, & 00003 PVEG,PZ0,PLAI,PTG1, & 00004 PSW_BANDS, & 00005 PALBNIR_VEG,PALBVIS_VEG, & 00006 PALBUV_VEG, & 00007 PALBNIR_SOIL,PALBVIS_SOIL, & 00008 PALBUV_SOIL, & 00009 PEMIS_ECO, & 00010 TPSNOW, & 00011 PALBNIR_ECO,PALBVIS_ECO, & 00012 PALBUV_ECO, & 00013 PDIR_ALB,PSCA_ALB, & 00014 PEMIS,PTSRAD ) 00015 ! ################################################### 00016 ! 00017 !!**** ** computes radiative fields used in GREENROOF 00018 !! 00019 !! PURPOSE 00020 !! ------- 00021 !! 00022 !! METHOD 00023 !! ------ 00024 !! Based on avg_albedo_emis_garden 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 XPSNG 00047 ! C. de Munck & A. Lemonsu 09/2011 Greenroofs 00048 !---------------------------------------------------------------------------- 00049 ! 00050 !* 0. DECLARATION 00051 ! ----------- 00052 ! 00053 USE MODD_SURF_PAR, ONLY : XUNDEF 00054 ! 00055 USE MODD_TYPE_SNOW 00056 ! 00057 USE MODD_SNOW_PAR, ONLY : XEMISSN 00058 USE MODD_SURF_PAR, ONLY : XUNDEF 00059 ! 00060 USE MODD_TEB_GREENROOF_n, ONLY : TSNOW, XPSN, XPSNV_A, XPSNG, XPSNV 00061 ! 00062 USE MODI_ALBEDO 00063 USE MODI_ALBEDO_FROM_NIR_VIS 00064 USE MODI_ISBA_SNOW_FRAC 00065 ! 00066 ! 00067 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00068 USE PARKIND1 ,ONLY : JPRB 00069 ! 00070 IMPLICIT NONE 00071 ! 00072 !* 0.1 Declaration of arguments 00073 ! ------------------------ 00074 ! 00075 CHARACTER(LEN=4), INTENT(IN) :: HALBEDO ! albedo type 00076 ! Albedo dependance with surface soil water content 00077 ! "EVOL" = albedo evolves with soil wetness 00078 ! "DRY " = constant albedo value for dry soil 00079 ! "WET " = constant albedo value for wet soil 00080 ! "MEAN" = constant albedo value for medium soil wetness 00081 ! 00082 REAL, DIMENSION(:), INTENT(IN) :: PVEG ! vegetation fraction 00083 REAL, DIMENSION(:), INTENT(IN) :: PZ0 ! roughness length 00084 REAL, DIMENSION(:), INTENT(IN) :: PLAI ! leaf area index 00085 REAL, DIMENSION(:), INTENT(IN) :: PTG1 ! soil surface temperature 00086 REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band 00087 00088 REAL, DIMENSION(:), INTENT(IN) :: PALBNIR_VEG ! near-infra-red albedo of vegetation 00089 REAL, DIMENSION(:), INTENT(IN) :: PALBVIS_VEG ! visible albedo of vegetation 00090 REAL, DIMENSION(:), INTENT(IN) :: PALBUV_VEG ! UV albedo of vegetation 00091 REAL, DIMENSION(:), INTENT(IN) :: PALBNIR_SOIL! near-infra-red albedo of soil 00092 REAL, DIMENSION(:), INTENT(IN) :: PALBVIS_SOIL! visible albedo of soil 00093 REAL, DIMENSION(:), INTENT(IN) :: PALBUV_SOIL ! UV albedo of soil 00094 REAL, DIMENSION(:), INTENT(IN) :: PEMIS_ECO ! emissivity (soil+vegetation) 00095 TYPE(SURF_SNOW), INTENT(IN) :: TPSNOW ! prognostic snow cover 00096 ! 00097 REAL, DIMENSION(:), INTENT(OUT) :: PALBNIR_ECO ! near-infra-red albedo (soil+vegetation) 00098 REAL, DIMENSION(:), INTENT(OUT) :: PALBVIS_ECO ! visible albedo (soil+vegetation) 00099 REAL, DIMENSION(:), INTENT(OUT) :: PALBUV_ECO ! UV albedo (soil+vegetation) 00100 ! 00101 REAL, DIMENSION(:,:), INTENT(OUT) :: PDIR_ALB ! averaged direct albedo (per wavelength) 00102 REAL, DIMENSION(:,:), INTENT(OUT) :: PSCA_ALB ! averaged diffuse albedo (per wavelength) 00103 REAL, DIMENSION(:), INTENT(OUT) :: PEMIS ! averaged emissivity 00104 REAL, DIMENSION(:), INTENT(OUT) :: PTSRAD ! averaged radiaitve temp. 00105 ! 00106 ! 00107 !* 0.2 Declaration of local variables 00108 ! ------------------------------ 00109 ! 00110 ! 00111 REAL, DIMENSION(SIZE(PALBNIR_VEG)) :: ZALBNIR ! near-infra-red albedo with snow 00112 REAL, DIMENSION(SIZE(PALBVIS_VEG)) :: ZALBVIS ! visible albedo with snow 00113 REAL, DIMENSION(SIZE(PALBUV_VEG )) :: ZALBUV ! UV albedo with snow 00114 ! 00115 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00116 !------------------------------------------------------------------------------- 00117 ! 00118 ! 00119 !* 1. averaged albedo on natural continental surfaces (except prognostic snow) 00120 ! ----------------------------------------------- 00121 ! 00122 IF (LHOOK) CALL DR_HOOK('AVG_ALBEDO_EMIS_GREENROOF',0,ZHOOK_HANDLE) 00123 CALL ALBEDO(HALBEDO, & 00124 PALBVIS_VEG,PALBNIR_VEG,PALBUV_VEG,PVEG, & 00125 PALBVIS_SOIL,PALBNIR_SOIL,PALBUV_SOIL, & 00126 PALBVIS_ECO,PALBNIR_ECO,PALBUV_ECO ) 00127 00128 ! 00129 !* 2. averaged albedo and emis. on natural continental surfaces (with prognostic snow) 00130 ! --------------------------------------------------------- 00131 ! 00132 ZALBNIR(:) = 0. 00133 ZALBVIS(:) = 0. 00134 ZALBUV (:) = 0. 00135 ! 00136 PDIR_ALB(:,:) = 0. 00137 PSCA_ALB(:,:) = 0. 00138 PEMIS (:) = 0. 00139 PTSRAD (:) = 0. 00140 ! 00141 ! 00142 CALL ISBA_SNOW_FRAC(TSNOW%SCHEME, & 00143 TSNOW%WSNOW(:,:,1), TSNOW%RHO(:,:,1), & 00144 TSNOW%ALB (:,1), & 00145 PVEG(:), PLAI(:), PZ0(:), & 00146 XPSN(:), XPSNV_A(:), & 00147 XPSNG(:), XPSNV(:) ) 00148 ! 00149 WHERE (PVEG(:)/=XUNDEF) 00150 ! 00151 ! albedo on this tile 00152 ! 00153 ZALBNIR(:) = (1.-XPSN(:))*PALBNIR_ECO(:) + XPSN(:) *TPSNOW%ALB(:,1) 00154 00155 ZALBVIS(:) = (1.-XPSN(:))*PALBVIS_ECO(:) + XPSN(:) *TPSNOW%ALB(:,1) 00156 00157 ZALBUV(:) = (1.-XPSN(:))*PALBUV_ECO (:) + XPSN(:) *TPSNOW%ALB(:,1) 00158 END WHERE 00159 ! 00160 !* albedo for each wavelength 00161 ! 00162 CALL ALBEDO_FROM_NIR_VIS(PSW_BANDS,ZALBNIR, ZALBVIS, ZALBUV, & 00163 PDIR_ALB(:,:), PSCA_ALB(:,:) ) 00164 ! 00165 ! emissivity 00166 ! 00167 WHERE (PEMIS_ECO(:)/=XUNDEF) 00168 PEMIS(:) = (1.-XPSN(:))*PEMIS_ECO(:) + XPSN(:) * XEMISSN 00169 END WHERE 00170 ! 00171 !* radiative surface temperature 00172 ! 00173 IF (TPSNOW%SCHEME=='D95' .OR. TPSNOW%SCHEME=='EBA') THEN 00174 PTSRAD(:) = PTG1(:) 00175 ELSE IF (TPSNOW%SCHEME=='3-L' .OR. TPSNOW%SCHEME=='CRO') THEN 00176 WHERE (PEMIS_ECO(:)/=XUNDEF) 00177 PTSRAD(:) = ( ( (1.-XPSN(:))*PEMIS(:)*PTG1(:)**4 & 00178 + XPSN(:) *TPSNOW%EMIS(:,1)*TPSNOW%TS(:,1)**4 ) )**0.25 & 00179 / PEMIS(:)**0.25 00180 END WHERE 00181 END IF 00182 ! 00183 IF (LHOOK) CALL DR_HOOK('AVG_ALBEDO_EMIS_GREENROOF',1,ZHOOK_HANDLE) 00184 ! 00185 !------------------------------------------------------------------------------- 00186 ! 00187 END SUBROUTINE AVG_ALBEDO_EMIS_GREENROOF