SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
modd_tebn.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  MODULE modd_teb_n
7 ! ################
8 !
9 !!**** *MODD_TEB_n - declaration of surface parameters for urban surface
10 !!
11 !! PURPOSE
12 !! -------
13 ! Declaration of surface parameters
14 !
15 !!
16 !!** IMPLICIT ARGUMENTS
17 !! ------------------
18 !! None
19 !!
20 !! REFERENCE
21 !! ---------
22 !!
23 !! AUTHOR
24 !! ------
25 !! V. Masson *Meteo France*
26 !!
27 !! MODIFICATIONS
28 !! -------------
29 !! Original 01/2004
30 !! A. Lemonsu 07/2012 Key for urban hydrology
31 !! V. Masson 06/2013 splits module in two
32 !
33 !* 0. DECLARATIONS
34 ! ------------
35 !
38 !
39 !
40 USE yomhook ,ONLY : lhook, dr_hook
41 USE parkind1 ,ONLY : jprb
42 !
43 IMPLICIT NONE
44 !--------------------------------------------------------------------------
45 
47 ! TEB scheme option
48 !
49 ! Geometric Parameters:
50 !
51  REAL, POINTER, DIMENSION(:) :: XROAD_DIR ! Road direction (deg from North, clockwise)
52  REAL, POINTER, DIMENSION(:) :: XGARDEN ! fraction of veg in the streets (-)
53  REAL, POINTER, DIMENSION(:) :: XGREENROOF ! fraction of greenroofs on roofs (-)
54  REAL, POINTER, DIMENSION(:) :: XBLD ! fraction of buildings (-)
55  REAL, POINTER, DIMENSION(:) :: XROAD ! fraction of roads (-)
56  REAL, POINTER, DIMENSION(:) :: XCAN_HW_RATIO ! canyon h/W (-)
57  REAL, POINTER, DIMENSION(:) :: XBLD_HEIGHT ! buildings height 'h' (m)
58  REAL, POINTER, DIMENSION(:) :: XWALL_O_HOR ! wall surf. / hor. surf. (-)
59  REAL, POINTER, DIMENSION(:) :: XROAD_O_GRND ! road surf. / (road + garden surf.) (-)
60  REAL, POINTER, DIMENSION(:) :: XGARDEN_O_GRND! gard. surf. / (road + garden surf.)(-)
61  REAL, POINTER, DIMENSION(:) :: XWALL_O_GRND ! wall surf. / (road + garden surf.) (-)
62  REAL, POINTER, DIMENSION(:) :: XWALL_O_BLD ! wall surf. / bld surf. (-)
63  REAL, POINTER, DIMENSION(:) :: XZ0_TOWN ! roughness length for momentum (m)
64  REAL, POINTER, DIMENSION(:) :: XSVF_ROAD ! road sky view factor (-)
65  REAL, POINTER, DIMENSION(:) :: XSVF_GARDEN ! green area sky view factor (-)
66  REAL, POINTER, DIMENSION(:) :: XSVF_WALL ! wall sky view factor (-)
67 !
68 ! Roof parameters
69 !
70  REAL, POINTER, DIMENSION(:) :: XALB_ROOF ! roof albedo (-)
71  REAL, POINTER, DIMENSION(:) :: XEMIS_ROOF ! roof emissivity (-)
72  REAL, POINTER, DIMENSION(:,:) :: XHC_ROOF ! roof layers heat capacity (J/K/m3)
73  REAL, POINTER, DIMENSION(:,:) :: XTC_ROOF ! roof layers thermal conductivity (W/K/m)
74  REAL, POINTER, DIMENSION(:,:) :: XD_ROOF ! depth of roof layers (m)
75  REAL, POINTER, DIMENSION(:) :: XROUGH_ROOF ! roof roughness coef
76 !
77 !
78 ! Road parameters
79 !
80  REAL, POINTER, DIMENSION(:) :: XALB_ROAD ! road albedo (-)
81  REAL, POINTER, DIMENSION(:) :: XEMIS_ROAD ! road emissivity (-)
82  REAL, POINTER, DIMENSION(:,:) :: XHC_ROAD ! road layers heat capacity (J/K/m3)
83  REAL, POINTER, DIMENSION(:,:) :: XTC_ROAD ! road layers thermal conductivity (W/K/m)
84  REAL, POINTER, DIMENSION(:,:) :: XD_ROAD ! depth of road layers (m)
85 !
86 ! Wall parameters
87 !
88  REAL, POINTER, DIMENSION(:) :: XALB_WALL ! wall albedo (-)
89  REAL, POINTER, DIMENSION(:) :: XEMIS_WALL ! wall emissivity (-)
90  REAL, POINTER, DIMENSION(:,:) :: XHC_WALL ! wall layers heat capacity (J/K/m3)
91  REAL, POINTER, DIMENSION(:,:) :: XTC_WALL ! wall layers thermal conductivity (W/K/m)
92  REAL, POINTER, DIMENSION(:,:) :: XD_WALL ! depth of wall layers (m)
93  REAL, POINTER, DIMENSION(:) :: XROUGH_WALL ! wall roughness coef
94 !
95 ! Building's use type
96 !
97  REAL, POINTER, DIMENSION(:) :: XRESIDENTIAL ! fraction of Residential use (-)
98  REAL :: XDT_RES ! target temperature change when unoccupied (K) (residential buildings)
99  REAL :: XDT_OFF ! target temperature change when unoccupied (K) (offices buildings)
100 
101 !
102 ! anthropogenic fluxes
103 !
104  REAL, POINTER, DIMENSION(:) :: XH_TRAFFIC ! anthropogenic sensible
105 ! ! heat fluxes due to traffic (W/m2)
106  REAL, POINTER, DIMENSION(:) :: XLE_TRAFFIC ! anthropogenic latent
107 ! ! heat fluxes due to traffic (W/m2)
108  REAL, POINTER, DIMENSION(:) :: XH_INDUSTRY ! anthropogenic sensible
109 ! ! heat fluxes due to factories (W/m2)
110  REAL, POINTER, DIMENSION(:) :: XLE_INDUSTRY ! anthropogenic latent
111 ! ! heat fluxes due to factories (W/m2)
112 !
113 ! temperatures for boundary conditions
114 !
115  REAL, POINTER, DIMENSION(:) :: XTI_ROAD ! road interior temperature (K)
116 !
117 ! Prognostic variables:
118 !
119  REAL, POINTER, DIMENSION(:) :: XWS_ROOF ! roof water reservoir (kg/m2)
120  REAL, POINTER, DIMENSION(:) :: XWS_ROAD ! road water reservoir (kg/m2)
121  REAL, POINTER, DIMENSION(:,:) :: XT_ROOF ! roof layer temperatures (K)
122  REAL, POINTER, DIMENSION(:,:) :: XT_ROAD ! road layer temperatures (K)
123  REAL, POINTER, DIMENSION(:,:) :: XT_WALL_A ! wall layer temperatures (K)
124  REAL, POINTER, DIMENSION(:,:) :: XT_WALL_B ! wall layer temperatures (K)
125 !
126  REAL, POINTER, DIMENSION(:) :: XAC_ROOF ! roof aerodynamic conductance ()
127  REAL, POINTER, DIMENSION(:) :: XAC_ROAD ! road aerodynamic conductance ()
128  REAL, POINTER, DIMENSION(:) :: XAC_WALL ! wall aerodynamic conductance ()
129  REAL, POINTER, DIMENSION(:) :: XAC_TOP ! top aerodynamic conductance ()
130  REAL, POINTER, DIMENSION(:) :: XAC_ROOF_WAT ! water aerodynamic conductance ()
131  REAL, POINTER, DIMENSION(:) :: XAC_ROAD_WAT ! water aerodynamic conductance ()
132 !
133  REAL, POINTER, DIMENSION(:) :: XQSAT_ROOF ! humidity of saturation for roofs (kg/kg)
134  REAL, POINTER, DIMENSION(:) :: XQSAT_ROAD ! humidity of saturation for roads (kg/kg)
135 !
136  REAL, POINTER, DIMENSION(:) :: XDELT_ROOF ! humidity of saturation for roofs (-)
137  REAL, POINTER, DIMENSION(:) :: XDELT_ROAD ! humidity of saturation for roads (-)
138 !
139 ! Semi-prognostic variables:
140 !
141  REAL, POINTER, DIMENSION(:) :: XT_CANYON ! canyon air temperature (K)
142  REAL, POINTER, DIMENSION(:) :: XQ_CANYON ! canyon air specific humidity (kg/kg)
143 !
144 !
145 ! Prognostic snow:
146 !
147  TYPE(surf_snow) :: TSNOW_ROOF ! snow state on roofs:
148 ! ! scheme type/option (-)
149 ! ! number of layers (-)
150 ! ! snow (& liq. water) content (kg/m2)
151 ! ! heat content (J/m2)
152 ! ! temperature (K)
153 ! ! density (kg m-3)
154  TYPE(surf_snow) :: TSNOW_ROAD ! snow state on roads:
155 ! ! scheme type/option (-)
156 ! ! number of layers (-)
157 ! ! snow (& liq. water) content (kg/m2)
158 ! ! heat content (J/m2)
159 ! ! temperature (K)
160 ! ! density (kg m-3)
161 ! ! density (kg m-3)
162  TYPE(surf_snow) :: TSNOW_GARDEN ! snow state on green areas:
163 ! ! scheme type/option (-)
164 ! ! number of layers (-)
165 ! ! snow (& liq. water) content (kg/m2)
166 ! ! heat content (J/m2)
167 ! ! temperature (K)
168 ! ! density (kg m-3)
169 !
170 END TYPE teb_1p_t
171 
172 TYPE teb_t
173  !
174  TYPE(teb_1p_t), POINTER :: ALP(:) => NULL()
175  TYPE(teb_1p_t), POINTER :: CUR => NULL()
176  !
177 END TYPE teb_t
178 !
179 
180 
181  CONTAINS
182 !----------------------------------------------------------------------------
183 !
184 !
185 
186 
187 !
188 !
189 SUBROUTINE teb_goto_patch(YTEB,KTO_PATCH)
190 TYPE(teb_t), INTENT(INOUT) :: yteb
191 INTEGER, INTENT(IN) :: kto_patch
192 REAL(KIND=JPRB) :: zhook_handle
193 !
194 ! Current patch is set to patch KTO_PATCH
195 IF (lhook) CALL dr_hook('MODD_TEB_N:TEB_GOTO_PATCH',0,zhook_handle)
196 
197 yteb%CUR => yteb%ALP(kto_patch)
198 
199 IF (lhook) CALL dr_hook('MODD_TEB_N:TEB_GOTO_PATCH',1,zhook_handle)
200 !
201 END SUBROUTINE teb_goto_patch
202 !
203 SUBROUTINE teb_init(YTEB,KPATCH)
204 TYPE(teb_t), INTENT(INOUT) :: yteb
205 INTEGER, INTENT(IN) :: kpatch
206 INTEGER :: jp
207 REAL(KIND=JPRB) :: zhook_handle
208 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_INIT",0,zhook_handle)
209  ALLOCATE(yteb%ALP(kpatch))
210  yteb%CUR => yteb%ALP(1)
211 DO jp=1,kpatch
212  nullify(yteb%ALP(jp)%XROAD_DIR)
213  nullify(yteb%ALP(jp)%XGARDEN)
214  nullify(yteb%ALP(jp)%XGREENROOF)
215  nullify(yteb%ALP(jp)%XBLD)
216  nullify(yteb%ALP(jp)%XROAD)
217  nullify(yteb%ALP(jp)%XCAN_HW_RATIO)
218  nullify(yteb%ALP(jp)%XBLD_HEIGHT)
219  nullify(yteb%ALP(jp)%XWALL_O_HOR)
220  nullify(yteb%ALP(jp)%XROAD_O_GRND)
221  nullify(yteb%ALP(jp)%XGARDEN_O_GRND)
222  nullify(yteb%ALP(jp)%XWALL_O_GRND)
223  nullify(yteb%ALP(jp)%XWALL_O_BLD)
224  nullify(yteb%ALP(jp)%XZ0_TOWN)
225  nullify(yteb%ALP(jp)%XSVF_ROAD)
226  nullify(yteb%ALP(jp)%XSVF_GARDEN)
227  nullify(yteb%ALP(jp)%XSVF_WALL)
228  nullify(yteb%ALP(jp)%XALB_ROOF)
229  nullify(yteb%ALP(jp)%XEMIS_ROOF)
230  nullify(yteb%ALP(jp)%XHC_ROOF)
231  nullify(yteb%ALP(jp)%XTC_ROOF)
232  nullify(yteb%ALP(jp)%XD_ROOF)
233  nullify(yteb%ALP(jp)%XALB_ROAD)
234  nullify(yteb%ALP(jp)%XEMIS_ROAD)
235  nullify(yteb%ALP(jp)%XHC_ROAD)
236  nullify(yteb%ALP(jp)%XTC_ROAD)
237  nullify(yteb%ALP(jp)%XD_ROAD)
238  nullify(yteb%ALP(jp)%XALB_WALL)
239  nullify(yteb%ALP(jp)%XEMIS_WALL)
240  nullify(yteb%ALP(jp)%XHC_WALL)
241  nullify(yteb%ALP(jp)%XTC_WALL)
242  nullify(yteb%ALP(jp)%XD_WALL)
243  nullify(yteb%ALP(jp)%XH_TRAFFIC)
244  nullify(yteb%ALP(jp)%XLE_TRAFFIC)
245  nullify(yteb%ALP(jp)%XH_INDUSTRY)
246  nullify(yteb%ALP(jp)%XLE_INDUSTRY)
247  nullify(yteb%ALP(jp)%XTI_ROAD)
248  nullify(yteb%ALP(jp)%XWS_ROOF)
249  nullify(yteb%ALP(jp)%XWS_ROAD)
250  nullify(yteb%ALP(jp)%XT_ROOF)
251  nullify(yteb%ALP(jp)%XT_ROAD)
252  nullify(yteb%ALP(jp)%XT_WALL_A)
253  nullify(yteb%ALP(jp)%XT_WALL_B)
254  nullify(yteb%ALP(jp)%XAC_ROOF)
255  nullify(yteb%ALP(jp)%XAC_ROAD)
256  nullify(yteb%ALP(jp)%XAC_WALL)
257  nullify(yteb%ALP(jp)%XAC_TOP)
258  nullify(yteb%ALP(jp)%XAC_ROOF_WAT)
259  nullify(yteb%ALP(jp)%XAC_ROAD_WAT)
260  nullify(yteb%ALP(jp)%XQSAT_ROOF)
261  nullify(yteb%ALP(jp)%XQSAT_ROAD)
262  nullify(yteb%ALP(jp)%XDELT_ROOF)
263  nullify(yteb%ALP(jp)%XDELT_ROAD)
264  nullify(yteb%ALP(jp)%XT_CANYON)
265  nullify(yteb%ALP(jp)%XQ_CANYON)
266  nullify(yteb%ALP(jp)%XROUGH_ROOF)
267  nullify(yteb%ALP(jp)%XROUGH_WALL)
268  nullify(yteb%ALP(jp)%XRESIDENTIAL)
269 yteb%ALP(:)%XDT_RES=0.
270 yteb%ALP(:)%XDT_OFF=0.
271 ENDDO
272 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_INIT",1,zhook_handle)
273 END SUBROUTINE teb_init
274 
275 
276 END MODULE modd_teb_n
subroutine teb_init(YTEB, KPATCH)
Definition: modd_tebn.F90:203
subroutine teb_goto_patch(YTEB, KTO_PATCH)
Definition: modd_tebn.F90:189