SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
greenroof_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 greenroof_properties (T, TVG, GRM, &
7  pdir_sw, psca_sw, psw_bands, ksw,&
8  pts, pemis, palb, pta, &
9  palbnir_tveg, palbvis_tveg, &
10  palbnir_tsoil, palbvis_tsoil )
11 ! ##########################################################################
12 !
13 !!**** *GREENROOF_PROPERTIES*
14 !!
15 !! PURPOSE
16 !! -------
17 !
18 ! Based on garden_properties
19 ! Calculates grid-averaged albedo and emissivity (according to snow scheme)
20 !
21 !! EXTERNAL
22 !! --------
23 !!
24 !! none
25 !!
26 !! IMPLICIT ARGUMENTS
27 !! ------------------
28 !!
29 !! AUTHOR
30 !! ------
31 !!
32 !! S. Belair * Meteo-France *
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original ?
37 !! C. de Munck and A. Lemonsu 09/2011
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 !
44 USE modd_teb_n, ONLY : teb_t
47 !
48 USE modd_surf_par, ONLY : xundef
49 !
50 !
51 !
52 USE modi_isba_properties
53 USE modi_flag_teb_greenroof_n
54 !
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 IMPLICIT NONE
60 !
61 !* 0.1 declarations of arguments
62 !
63 !
64 TYPE(teb_t), INTENT(INOUT) :: t
65 TYPE(teb_veg_options_t), INTENT(INOUT) :: tvg
66 TYPE(teb_greenroof_model_t), INTENT(INOUT) :: grm
67 !
68 REAL, DIMENSION(:,:), INTENT(IN) :: pdir_sw ! direct incoming solar radiation
69 REAL, DIMENSION(:,:), INTENT(IN) :: psca_sw ! diffus incoming solar radiation
70 REAL, DIMENSION(:) , INTENT(IN) :: psw_bands ! mean wavelength of each shortwave band (m)
71 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
72 !
73 REAL, DIMENSION(:) , INTENT(OUT) :: pts ! radiative surface temperature
74 REAL, DIMENSION(:) , INTENT(OUT) :: pemis ! green areas emissivity
75 REAL, DIMENSION(:) , INTENT(OUT) :: palb ! green areas albedo
76 !
77 REAL, DIMENSION(:) , INTENT(IN), OPTIONAL :: pta ! Air temperature (K)
78 !
79 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: palbnir_tveg ! nearIR veg tot albedo
80 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: palbvis_tveg ! visible veg tot albedo
81 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: palbnir_tsoil ! nearIR soil tot albedo
82 REAL, DIMENSION(:) , INTENT(OUT), OPTIONAL :: palbvis_tsoil ! visible soil tot albedo
83 !
84 !-------------------------------------------------------------------------------
85 !
86 !* 0.2 Local variables
87 ! ---------------
88 !
89 INTEGER :: jlayer
90 INTEGER :: jswb
91 !
92 REAL, DIMENSION(SIZE(PALB)) :: ztsnosnow ! surf. temp. on snow free part
93 REAL, DIMENSION(SIZE(PALB)) :: ztssnow ! surf. temp. on snow covered part
94 REAL, DIMENSION(SIZE(PALB)) :: zanosnow ! snow-free surface albedo
95 REAL, DIMENSION(SIZE(PALB)) :: zasnow ! snow albedo
96 REAL, DIMENSION(SIZE(PALB)) :: zenosnow ! snow-free surface emissivity
97 REAL, DIMENSION(SIZE(PALB)) :: zesnow ! snow emissivity
98 !
99 REAL, DIMENSION(SIZE(PALB)) :: zalbnir_tveg ! nearIR veg tot albedo
100 REAL, DIMENSION(SIZE(PALB)) :: zalbvis_tveg ! visible veg tot albedo
101 REAL, DIMENSION(SIZE(PALB)) :: zalbnir_tsoil ! nearIR soil tot albedo
102 REAL, DIMENSION(SIZE(PALB)) :: zalbvis_tsoil ! visible soil tot albedo
103 !
104 REAL(KIND=JPRB) :: zhook_handle
105 !-------------------------------------------------------------------------------
106 !
107 !* only one patch for green roofs
108 IF (lhook) CALL dr_hook('GREENROOF_PROPERTIES',0,zhook_handle)
109 !
110 !* 1. Set physical values for points where there is no green roof
111 ! -----------------------------------------------------------
112 !
113 ! This way, ISBA can run without problem for these points
114 !
115  CALL flag_teb_greenroof_n(grm%TGR, grm%TGRO, grm%TGRPE, t, tvg, &
116  1)
117 !
118 !
119 !* 2. Computes several properties of green roofs
120 ! ------------------------------------------
121 !
122 !
123  CALL isba_properties(grm%TGRO%CISBA_GR, grm%TGRO%LTR_ML_GR, grm%TGR%CUR%TSNOW, 1, &
124  pdir_sw, psca_sw, psw_bands, ksw, &
125  grm%TGRPE%CUR%XALBNIR, grm%TGRPE%CUR%XALBVIS, grm%TGRPE%CUR%XALBUV, &
126  grm%TGRP%XALBNIR_VEG, grm%TGRP%XALBVIS_VEG, grm%TGRP%XALBUV_VEG, &
127  grm%TGRP%XALBNIR_SOIL, grm%TGRP%XALBVIS_SOIL, &
128  grm%TGRP%XALBUV_SOIL, grm%TGRPE%CUR%XVEG, grm%TGRPE%CUR%XLAI, &
129  grm%TGRPE%CUR%XZ0, grm%TGRPE%CUR%XEMIS, grm%TGR%CUR%XTG(:,1), &
130  zasnow,zanosnow, &
131  zesnow,zenosnow, &
132  ztssnow,ztsnosnow, &
133  grm%TGR%CUR%XSNOWFREE_ALB_VEG, grm%TGR%CUR%XSNOWFREE_ALB_SOIL, &
134  zalbnir_tveg, zalbvis_tveg, zalbnir_tsoil, &
135  zalbvis_tsoil, &
136  grm%TGR%CUR%XPSN, grm%TGR%CUR%XPSNV_A, grm%TGR%CUR%XPSNG, grm%TGR%CUR%XPSNV )
137 !
138 grm%TGR%CUR%XSNOWFREE_ALB = zanosnow
139 !
140 !* averaged albedo
141 palb = grm%TGR%CUR%XPSN(:) * zasnow + (1.-grm%TGR%CUR%XPSN(:)) * zanosnow
142 !* averaged emissivity
143 pemis= grm%TGR%CUR%XPSN(:) * zesnow + (1.-grm%TGR%CUR%XPSN(:)) * zenosnow
144 !* averaged surface radiative temperature
145 ! (recomputed from emitted long wave)
146 pts =((grm%TGR%CUR%XPSN(:) * zesnow * ztssnow**4 + &
147  (1.-grm%TGR%CUR%XPSN(:)) * zenosnow * ztsnosnow**4) / pemis)**0.25
148 !
149 IF(present(palbnir_tveg))palbnir_tveg(:)=zalbnir_tveg(:)
150 IF(present(palbvis_tveg))palbvis_tveg(:)=zalbvis_tveg(:)
151 IF(present(palbnir_tsoil))palbnir_tsoil(:)=zalbnir_tsoil(:)
152 IF(present(palbvis_tsoil))palbvis_tsoil(:)=zalbvis_tsoil(:)
153 !
154 IF (lhook) CALL dr_hook('GREENROOF_PROPERTIES',1,zhook_handle)
155 !
156 !-------------------------------------------------------------------------------
157 !
158 
159 END SUBROUTINE greenroof_properties
subroutine isba_properties(HISBA, OTR_ML, TPSNOW, KPATCH, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PALBNIR, PALBVIS, PALBUV, PALBNIR_VEG, PALBVIS_VEG, PALBUV_VEG, PALBNIR_SOIL, PALBVIS_SOIL, PALBUV_SOIL, PVEG, PLAI, PZ0, PEMIS, PTG, PASNOW, PANOSNOW, PESNOW, PENOSNOW, PTSSNOW, PTSNOSNOW, PSNOWFREE_ALB_VEG, PSNOWFREE_ALB_SOIL, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL, PPSN, PPSNV_A, PPSNG, PPSNV)
subroutine flag_teb_greenroof_n(TGR, TGRO, TGRPE, T, TVG, KFLAG)
subroutine greenroof_properties(T, TVG, GRM, PDIR_SW, PSCA_SW, PSW_BANDS, KSW, PTS, PEMIS, PALB, PTA, PALBNIR_TVEG, PALBVIS_TVEG, PALBNIR_TSOIL, PALBVIS_TSOIL)