SURFEX v8.1
General documentation of Surfex
teb_veg_properties.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 teb_veg_properties (PMASK, IO, PEK, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, &
7  PTS, PEMIS, PALB, PTA, PALBNIR_TVEG, PALBVIS_TVEG,&
8  PALBNIR_TSOIL, PALBVIS_TSOIL )
9 ! ##########################################################################
10 !
11 !!**** *GARDEN_PROPERTIES*
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 ! Calculates grid-averaged albedo and emissivity (according to snow scheme)
17 !
18 !! EXTERNAL
19 !! --------
20 !!
21 !! none
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! AUTHOR
27 !! ------
28 !!
29 !! S. Belair * Meteo-France *
30 !-------------------------------------------------------------------------------
31 !
32 !* 0. DECLARATIONS
33 ! ------------
34 !
36 USE modd_isba_n, ONLY : isba_pe_t
37 !
38 USE modd_surf_par, ONLY : xundef
39 !
40 USE modi_isba_properties
41 USE modi_flag_teb_veg_n
42 !
43 USE yomhook ,ONLY : lhook, dr_hook
44 USE parkind1 ,ONLY : jprb
45 !
46 IMPLICIT NONE
47 !
48 !* 0.1 declarations of arguments
49 !
50 !
51 REAL, DIMENSION(:), INTENT(IN) :: PMASK
52 !
53 TYPE(isba_options_t), INTENT(INOUT) :: IO
54 TYPE(isba_pe_t), INTENT(INOUT) :: PEK
55 !
56 REAL, DIMENSION(:,:), INTENT(IN) :: PDIR_SW ! direct incoming solar radiation
57 REAL, DIMENSION(:,:), INTENT(IN) :: PSCA_SW ! diffus incoming solar radiation
58 REAL, DIMENSION(:) , INTENT(IN) :: PSW_BANDS ! mean wavelength of each shortwave band (m)
59 INTEGER, INTENT(IN) :: KSW ! number of short-wave spectral bands
60 !
61 REAL, DIMENSION(:) , INTENT(OUT) :: PTS ! radiative surface temperature
62 REAL, DIMENSION(:) , INTENT(OUT) :: PEMIS ! green areas emissivity
63 REAL, DIMENSION(:) , INTENT(OUT) :: PALB ! green areas albedo
64 !
65 REAL, DIMENSION(:) , INTENT(IN), OPTIONAL :: PTA ! Air temperature (K)
66 !
67 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: PALBNIR_TVEG ! nearIR veg tot albedo
68 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: PALBVIS_TVEG ! visible veg tot albedo
69 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: PALBNIR_TSOIL ! nearIR soil tot albedo
70 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: PALBVIS_TSOIL ! visible soil tot albedo
71 !
72 !-------------------------------------------------------------------------------
73 !
74 !* 0.2 Local variables
75 ! ---------------
76 !
77 INTEGER :: JLAYER
78 INTEGER :: JSWB
79 !
80 REAL, DIMENSION(SIZE(PALB)) :: ZTSNOSNOW ! surf. temp. on snow free part
81 REAL, DIMENSION(SIZE(PALB)) :: ZTSSNOW ! surf. temp. on snow covered part
82 REAL, DIMENSION(SIZE(PALB)) :: ZANOSNOW ! snow-free surface albedo
83 REAL, DIMENSION(SIZE(PALB)) :: ZASNOW ! snow albedo
84 REAL, DIMENSION(SIZE(PALB)) :: ZENOSNOW ! snow-free surface emissivity
85 REAL, DIMENSION(SIZE(PALB)) :: ZESNOW ! snow emissivity
86 !
87 REAL, DIMENSION(SIZE(PALB)) :: ZALBNIR_TVEG ! nearIR veg tot albedo
88 REAL, DIMENSION(SIZE(PALB)) :: ZALBVIS_TVEG ! visible veg tot albedo
89 REAL, DIMENSION(SIZE(PALB)) :: ZALBNIR_TSOIL ! nearIR soil tot albedo
90 REAL, DIMENSION(SIZE(PALB)) :: ZALBVIS_TSOIL ! visible soil tot albedo
91 !
92 REAL(KIND=JPRB) :: ZHOOK_HANDLE
93 !-------------------------------------------------------------------------------
94 !
95 IF (lhook) CALL dr_hook('TEB_VEG_PROPERTIES',0,zhook_handle)
96 !
97 !* 1. Set physical values for points where there is no garden
98 ! -------------------------------------------------------
99 !
100 ! This way, ISBA can run without problem for these points
101 !
102  CALL flag_teb_veg_n(pek, io, pmask, 1)
103 !
104 !
105 !* 2. Computes several properties of gardens
106 ! --------------------------------------
107 !
108  CALL isba_properties(io, pek, pdir_sw, psca_sw, psw_bands, ksw, &
109  zasnow, zanosnow, zesnow, zenosnow, ztssnow, ztsnosnow, &
110  zalbnir_tveg, zalbvis_tveg, zalbnir_tsoil, zalbvis_tsoil)
111 !
112 pek%XSNOWFREE_ALB(:) = zanosnow
113 !
114 !* averaged albedo
115 palb = pek%XPSN(:) * zasnow + (1.-pek%XPSN(:)) * zanosnow
116 !* averaged emissivity
117 pemis= pek%XPSN(:) * zesnow + (1.-pek%XPSN(:)) * zenosnow
118 !* averaged surface radiative temperature
119 ! (recomputed from emitted long wave)
120 pts =((pek%XPSN(:) * zesnow * ztssnow**4 + (1.-pek%XPSN(:)) * zenosnow * ztsnosnow**4) / pemis)**0.25
121 !
122 IF(PRESENT(palbnir_tveg))palbnir_tveg(:) = zalbnir_tveg(:)
123 IF(PRESENT(palbvis_tveg))palbvis_tveg(:) = zalbvis_tveg(:)
124 IF(PRESENT(palbnir_tsoil))palbnir_tsoil(:) = zalbnir_tsoil(:)
125 IF(PRESENT(palbvis_tsoil))palbvis_tsoil(:) = zalbvis_tsoil(:)
126 !
127 IF (lhook) CALL dr_hook('TEB_VEG_PROPERTIES',1,zhook_handle)
128 !
129 !-------------------------------------------------------------------------------
130 !
131 END SUBROUTINE teb_veg_properties
132 
subroutine isba_properties(IO, PEK, PDIR_SW, PSCA_SW, PSW_BANDS, K
subroutine flag_teb_veg_n(PEK, IO, PMASK, KFLAG)
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
subroutine teb_veg_properties(PMASK, IO, PEK, PDIR_SW, PSCA_SW, P
logical lhook
Definition: yomhook.F90:15