SURFEX v8.1
General documentation of Surfex
avg_albedo_emis_teb_veg.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE avg_albedo_emis_teb_veg (PEK, HALBEDO, PTG1, PSW_BANDS, PDIR_ALB,PSCA_ALB, PEMIS, PTSRAD )
7 ! ###################################################
8 !
9 !!**** ** computes radiative fields used in TEB_VEG
10 !!
11 !! PURPOSE
12 !! -------
13 !!
14 !! METHOD
15 !! ------
16 !!
17 !! EXTERNAL
18 !! --------
19 !!
20 !! IMPLICIT ARGUMENTS
21 !! ------------------
22 !!
23 !! REFERENCE
24 !! ---------
25 !!
26 !! AUTHOR
27 !! ------
28 !!
29 !! V. Masson Meteo-France
30 !!
31 !! MODIFICATION
32 !! ------------
33 !!
34 !! Original 01/2004
35 !! A. Bogatchev 09/2005 EBA snow option
36 !! B. Decharme 2008 The fraction of vegetation covered by snow must be
37 ! <= to XPSNG
38 !----------------------------------------------------------------------------
39 !
40 !* 0. DECLARATION
41 ! -----------
42 !
43 !
44 USE modd_isba_n, ONLY : isba_pe_t
45 !
46 USE modd_surf_par, ONLY : xundef
47 !
49 !
50 USE modd_snow_par, ONLY : xemissn
51 USE modd_surf_par, ONLY : xundef
52 !
53 !
54 USE modi_albedo
55 USE modi_albedo_from_nir_vis
56 USE modi_isba_snow_frac
57 !
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 IMPLICIT NONE
63 !
64 !* 0.1 Declaration of arguments
65 ! ------------------------
66 !
67 !
68 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
69 !
70  CHARACTER(LEN=4), INTENT(IN) :: HALBEDO ! albedo type
71 ! Albedo dependance with surface soil water content
72 ! "EVOL" = albedo evolves with soil wetness
73 ! "DRY " = constant albedo value for dry soil
74 ! "WET " = constant albedo value for wet soil
75 ! "MEAN" = constant albedo value for medium soil wetness
76 !
77 REAL, DIMENSION(:), INTENT(IN) :: PTG1 ! soil surface temperature
78 REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band
79 !
80 REAL, DIMENSION(:,:), INTENT(OUT) :: PDIR_ALB ! averaged direct albedo (per wavelength)
81 REAL, DIMENSION(:,:), INTENT(OUT) :: PSCA_ALB ! averaged diffuse albedo (per wavelength)
82 REAL, DIMENSION(:), INTENT(OUT) :: PEMIS ! averaged emissivity
83 REAL, DIMENSION(:), INTENT(OUT) :: PTSRAD ! averaged radiaitve temp.
84 !
85 !
86 !* 0.2 Declaration of local variables
87 ! ------------------------------
88 !
89 !
90 REAL, DIMENSION(SIZE(PEK%XALBNIR_VEG(:))) :: ZALBNIR ! near-infra-red albedo with snow
91 REAL, DIMENSION(SIZE(PEK%XALBVIS_VEG(:))) :: ZALBVIS ! visible albedo with snow
92 REAL, DIMENSION(SIZE(PEK%XALBUV_VEG(:) )) :: ZALBUV ! UV albedo with snow
93 !
94 REAL(KIND=JPRB) :: ZHOOK_HANDLE
95 !-------------------------------------------------------------------------------
96 !
97 !
98 !* 1. averaged albedo on natural continental surfaces (except prognostic snow)
99 ! -----------------------------------------------
100 !
101 IF (lhook) CALL dr_hook('AVG_ALBEDO_EMIS_TEB_VEG',0,zhook_handle)
102 !
103  CALL albedo(halbedo, pek )
104 
105 !
106 !* 2. averaged albedo and emis. on natural continental surfaces (with prognostic snow)
107 ! ---------------------------------------------------------
108 !
109 zalbnir(:)=0.
110 zalbvis(:)=0.
111 zalbuv(:)=0.
112 !
113 pdir_alb(:,:)=0.
114 psca_alb(:,:)=0.
115 pemis(:) =0.
116 ptsrad(:) =0.
117 !
118 !
119  CALL isba_snow_frac(pek%TSNOW%SCHEME, pek%TSNOW%WSNOW, pek%TSNOW%RHO, pek%TSNOW%ALB, &
120  pek%XVEG, pek%XLAI, pek%XZ0,pek%XPSN, pek%XPSNV_A, pek%XPSNG, pek%XPSNV )
121 !
122 WHERE (pek%XVEG/=xundef)
123  !
124  ! albedo on this tile
125  !
126  zalbnir(:) = (1.-pek%XPSN)*pek%XALBNIR + pek%XPSN * pek%TSNOW%ALB
127 
128  zalbvis(:) = (1.-pek%XPSN)*pek%XALBVIS + pek%XPSN * pek%TSNOW%ALB
129 
130  zalbuv(:) = (1.-pek%XPSN)*pek%XALBUV + pek%XPSN * pek%TSNOW%ALB
131 END WHERE
132 !
133 !* albedo for each wavelength
134 !
135  CALL albedo_from_nir_vis(psw_bands,zalbnir, zalbvis, zalbuv, pdir_alb, psca_alb)
136 !
137 ! emissivity
138 !
139 WHERE (pek%XEMIS/=xundef)
140  pemis(:) = (1.-pek%XPSN)*pek%XEMIS + pek%XPSN *xemissn
141 END WHERE
142 !
143 !* radiative surface temperature
144 !
145 IF (pek%TSNOW%SCHEME=='D95' .OR. pek%TSNOW%SCHEME=='EBA') THEN
146  ptsrad(:) = ptg1(:)
147 ELSE IF (pek%TSNOW%SCHEME=='3-L' .OR. pek%TSNOW%SCHEME=='CRO') THEN
148  WHERE (pek%XEMIS/=xundef)
149  ptsrad(:) =( ( (1.-pek%XPSN)*pemis(:) *ptg1(:) **4 &
150  + pek%XPSN *pek%TSNOW%EMIS * pek%TSNOW%TS**4 ) )**0.25 &
151  / pemis(:)**0.25
152  END WHERE
153 END IF
154 !
155 IF (lhook) CALL dr_hook('AVG_ALBEDO_EMIS_TEB_VEG',1,zhook_handle)
156 !
157 !-------------------------------------------------------------------------------
158 !
159 END SUBROUTINE avg_albedo_emis_teb_veg
subroutine isba_snow_frac(HSNOW, PWSNOW, PRSNOW, PASNOW, PVEG, PLAI, PZ0, PPSN, PPSNV_A, PPSNG, P
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine albedo_from_nir_vis(PSW_BANDS, PALBNIR, PALBVIS, PALBUV, PD
subroutine albedo(HALBEDO, PEK, PSNOW, OMASK)
Definition: albedo.F90:7
subroutine avg_albedo_emis_teb_veg(PEK, HALBEDO, PTG1, PSW_BANDS,