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