SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
emis_from_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 !#######################
7 !#######################
8 !
9 INTERFACE emis_from_veg
10 !
11  FUNCTION emis_from_veg_0d(PVEG,PVEGTYPE) RESULT(PEMIS)
12 !
13 REAL, INTENT(IN) :: pveg ! vegetatino fraction
14 REAL, DIMENSION(:), INTENT(IN) :: pvegtype ! type of vegetation
15 !
16 REAL :: pemis ! emissivity
17 !
18 END FUNCTION emis_from_veg_0d
19 !
20 !
21  FUNCTION emis_from_veg_1d(PVEG,PVEGTYPE) RESULT(PEMIS)
22 !
23 REAL, DIMENSION(:), INTENT(IN) :: pveg ! vegetation fraction
24 REAL, DIMENSION(:,:), INTENT(IN) :: pvegtype ! type of vegetation
25 !
26 REAL, DIMENSION(SIZE(PVEG)) :: pemis ! emissivity
27 !
28 END FUNCTION emis_from_veg_1d
29 !
30 !
31  FUNCTION emis_from_veg_2d(PVEG,PVEGTYPE) RESULT(PEMIS)
32 !
33 REAL, DIMENSION(:,:), INTENT(IN) :: pveg ! vegetation fraction
34 REAL, DIMENSION(:,:,:), INTENT(IN) :: pvegtype ! type of vegetation
35 !
36 REAL, DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: pemis! emissivity
37 !
38 END FUNCTION emis_from_veg_2d
39 !
40  FUNCTION emis_from_veg_patch(PVEG,PVEGTYPE) RESULT(PEMIS)
41 !
42 REAL, DIMENSION(:), INTENT (IN) :: pveg
43 REAL, DIMENSION(:), INTENT (IN) :: pvegtype
44 !
45 REAL, DIMENSION(SIZE(PVEG)) :: pemis
46 
47 END FUNCTION emis_from_veg_patch
48 !
49 END INTERFACE
50 !
51 END MODULE modi_emis_from_veg
52 !
53 ! ####################################################
54  FUNCTION emis_from_veg_0d(PVEG,PVEGTYPE) RESULT(PEMIS)
55 ! ####################################################
56 !!
57 !! PURPOSE
58 !! -------
59 !
60 ! Calculates averaged emissivity on natural surfaces
61 !
62 !!** METHOD
63 !! ------
64 !!
65 !! EXTERNAL
66 !! --------
67 !! none
68 !!
69 !! IMPLICIT ARGUMENTS
70 !! ------------------
71 !!
72 !! none
73 !!
74 !! REFERENCE
75 !! ---------
76 !!
77 !!
78 !! AUTHOR
79 !! ------
80 !!
81 !! V. Masson and A. Boone * Meteo-France *
82 !!
83 !! MODIFICATIONS
84 !! -------------
85 !! Original 25/03/99
86 !!
87 !-------------------------------------------------------------------------------
88 !
89 !* 0. DECLARATIONS
90 ! ------------
91 !
92 USE modd_data_cover_par, ONLY : nvt_snow
93 USE modd_isba_par, ONLY : xemissoil, xemisveg
94 USE modd_snow_par, ONLY : xemissn
95 !
96 !
97 USE yomhook ,ONLY : lhook, dr_hook
98 USE parkind1 ,ONLY : jprb
99 !
100 IMPLICIT NONE
101 !
102 !* 0.1 declarations of arguments
103 !
104 REAL, INTENT(IN) :: pveg ! vegetation fraction
105 REAL, DIMENSION(:), INTENT(IN) :: pvegtype ! type of vegetation
106 !
107 REAL :: pemis ! emissivity
108 !
109 !* 0.2 declarations of local variables
110 !
111 REAL :: zemissoil ! soil emissivity
112 REAL(KIND=JPRB) :: zhook_handle
113 !
114 !-----------------------------------------------------------------
115 !
116 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_0D',0,zhook_handle)
117 zemissoil = xemissn * pvegtype(nvt_snow) &
118  + xemissoil * (1.-pvegtype(nvt_snow))
119 !
120 pemis = xemisveg * pveg &
121  + zemissoil * (1.-pveg)
122 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_0D',1,zhook_handle)
123 !
124 !-----------------------------------------------------------------
125 !
126 END FUNCTION emis_from_veg_0d
127 !
128 ! ####################################################
129  FUNCTION emis_from_veg_1d(PVEG,PVEGTYPE) RESULT(PEMIS)
130 ! ####################################################
131 !!
132 !! PURPOSE
133 !! -------
134 !
135 ! Calculates averaged emissivity on natural surfaces
136 !
137 !!** METHOD
138 !! ------
139 !!
140 !! EXTERNAL
141 !! --------
142 !! none
143 !!
144 !! IMPLICIT ARGUMENTS
145 !! ------------------
146 !!
147 !! none
148 !!
149 !! REFERENCE
150 !! ---------
151 !!
152 !!
153 !! AUTHOR
154 !! ------
155 !!
156 !! V. Masson and A. Boone * Meteo-France *
157 !!
158 !! MODIFICATIONS
159 !! -------------
160 !! Original 25/03/99
161 !!
162 !-------------------------------------------------------------------------------
163 !
164 !* 0. DECLARATIONS
165 ! ------------
166 !
167 USE modd_data_cover_par, ONLY : nvt_snow
168 USE modd_isba_par, ONLY : xemissoil, xemisveg
169 USE modd_snow_par, ONLY : xemissn
170 !
171 !
172 USE yomhook ,ONLY : lhook, dr_hook
173 USE parkind1 ,ONLY : jprb
174 !
175 IMPLICIT NONE
176 !
177 !* 0.1 declarations of arguments
178 !
179 REAL, DIMENSION(:), INTENT(IN) :: pveg ! vegetation fraction
180 REAL, DIMENSION(:,:), INTENT(IN) :: pvegtype ! type of vegetation
181 !
182 REAL, DIMENSION(SIZE(PVEG)) :: pemis ! emissivity
183 !
184 !* 0.2 declarations of local variables
185 !
186 REAL, DIMENSION(SIZE(PVEG)) :: zemissoil ! soil emissivity
187 REAL(KIND=JPRB) :: zhook_handle
188 !
189 !-----------------------------------------------------------------
190 !
191 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_1D',0,zhook_handle)
192 zemissoil(:) = xemissn * pvegtype(:,nvt_snow) &
193  + xemissoil * (1.-pvegtype(:,nvt_snow))
194 !
195 pemis(:) = xemisveg * pveg(:) &
196  + zemissoil * (1.-pveg(:))
197 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_1D',1,zhook_handle)
198 !
199 !-----------------------------------------------------------------
200 !
201 END FUNCTION emis_from_veg_1d
202 !
203 ! ####################################################
204  FUNCTION emis_from_veg_2d(PVEG,PVEGTYPE) RESULT(PEMIS)
205 ! ####################################################
206 !!
207 !! PURPOSE
208 !! -------
209 !
210 ! Calculates averaged emissivity on natural surfaces
211 !
212 !!** METHOD
213 !! ------
214 !!
215 !! EXTERNAL
216 !! --------
217 !! none
218 !!
219 !! IMPLICIT ARGUMENTS
220 !! ------------------
221 !!
222 !! none
223 !!
224 !! REFERENCE
225 !! ---------
226 !!
227 !!
228 !! AUTHOR
229 !! ------
230 !!
231 !! V. Masson and A. Boone * Meteo-France *
232 !!
233 !! MODIFICATIONS
234 !! -------------
235 !! Original 25/03/99
236 !!
237 !-------------------------------------------------------------------------------
238 !
239 !* 0. DECLARATIONS
240 ! ------------
241 !
242 USE modd_surf_par, ONLY : xundef
243 USE modd_data_cover_par, ONLY : nvt_snow
244 USE modd_isba_par, ONLY : xemissoil, xemisveg
245 USE modd_snow_par, ONLY : xemissn
246 !
247 !
248 USE yomhook ,ONLY : lhook, dr_hook
249 USE parkind1 ,ONLY : jprb
250 !
251 IMPLICIT NONE
252 !
253 !* 0.1 declarations of arguments
254 !
255 REAL, DIMENSION(:,:), INTENT(IN) :: pveg ! vegetation fraction
256 REAL, DIMENSION(:,:,:), INTENT(IN) :: pvegtype ! type of vegetation
257 !
258 REAL, DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: pemis! emissivity
259 !
260 !* 0.2 declarations of local variables
261 !
262 REAL, DIMENSION(SIZE(PVEG,1),SIZE(PVEG,2)) :: zemissoil ! soil emissivity
263 REAL(KIND=JPRB) :: zhook_handle
264 !
265 !-----------------------------------------------------------------
266 !
267 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_2D',0,zhook_handle)
268 zemissoil(:,:) = xemissn * pvegtype(:,:,nvt_snow) &
269  + xemissoil * (1.-pvegtype(:,:,nvt_snow))
270 !
271 pemis(:,:) = xemisveg * pveg(:,:) &
272  + zemissoil * (1.-pveg(:,:))
273 !
274 WHERE (pveg(:,:) == xundef)
275  pemis(:,:) = xundef
276 END WHERE
277 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_2D',1,zhook_handle)
278 !-----------------------------------------------------------------
279 !
280 END FUNCTION emis_from_veg_2d
281 !
282 ! ####################################################
283  FUNCTION emis_from_veg_patch(PVEG,PVEGTYPE) RESULT(PEMIS)
284 ! ####################################################
285 !!
286 !! PURPOSE
287 !! -------
288 !
289 ! Calculates averaged emissivity on natural surfaces
290 !
291 !!** METHOD
292 !! ------
293 !!
294 !! EXTERNAL
295 !! --------
296 !! none
297 !!
298 !! IMPLICIT ARGUMENTS
299 !! ------------------
300 !!
301 !! none
302 !!
303 !! REFERENCE
304 !! ---------
305 !!
306 !!
307 !! AUTHOR
308 !! ------
309 !!
310 !! V. Masson and A. Boone * Meteo-France *
311 !!
312 !! MODIFICATIONS
313 !! -------------
314 !! Original 25/03/99
315 !!
316 !-------------------------------------------------------------------------------
317 !
318 !* 0. DECLARATIONS
319 ! ------------
320 !
321 USE modd_surf_par, ONLY : xundef
322 USE modd_data_cover_par, ONLY : nvt_snow
323 USE modd_isba_par, ONLY : xemissoil, xemisveg
324 USE modd_snow_par, ONLY : xemissn
325 !
326 !
327 USE yomhook ,ONLY : lhook, dr_hook
328 USE parkind1 ,ONLY : jprb
329 !
330 IMPLICIT NONE
331 !
332 !* 0.1 declarations of arguments
333 !
334 REAL, DIMENSION(:), INTENT(IN) :: pveg ! vegetation fraction
335 REAL, DIMENSION(:), INTENT(IN) :: pvegtype ! type of vegetation
336 !
337 REAL, DIMENSION(SIZE(PVEG)) :: pemis ! emissivity
338 !
339 !* 0.2 declarations of local variables
340 !
341 REAL, DIMENSION(SIZE(PVEG)) :: zemissoil ! soil emissivity
342 REAL(KIND=JPRB) :: zhook_handle
343 !
344 !-----------------------------------------------------------------
345 !
346 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_PATCH',0,zhook_handle)
347 zemissoil(:) = xemissn * pvegtype(nvt_snow) &
348  + xemissoil * (1.-pvegtype(nvt_snow))
349 !
350 pemis(:) = xemisveg * pveg(:) &
351  + zemissoil * (1.-pveg(:))
352 !
353 WHERE (pveg(:) == xundef)
354  pemis(:) = xundef
355 END WHERE
356 !
357 IF (lhook) CALL dr_hook('MODI_EMIS_FROM_VEG:EMIS_FROM_VEG_PATCH',1,zhook_handle)
358 !
359 !-----------------------------------------------------------------
360 !
361 END FUNCTION emis_from_veg_patch
real function emis_from_veg_0d(PVEG, PVEGTYPE)
real function, dimension(size(pveg)) emis_from_veg_patch(PVEG, PVEGTYPE)
real function, dimension(size(pveg, 1), size(pveg, 2)) emis_from_veg_2d(PVEG, PVEGTYPE)
real function, dimension(size(pveg)) emis_from_veg_1d(PVEG, PVEGTYPE)