SURFEX v8.1
General documentation of Surfex
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 
46 TYPE teb_t
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_t
171 
173  !
174  TYPE(teb_t), POINTER :: al(:) => null()
175  !
176 END TYPE teb_np_t
177 !
178 CONTAINS
179 !----------------------------------------------------------------------------
180 !
181 SUBROUTINE teb_init(YTEB)
182 TYPE(teb_t), INTENT(INOUT) :: YTEB
183 REAL(KIND=JPRB) :: ZHOOK_HANDLE
184 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_INIT",0,zhook_handle)
185  NULLIFY(yteb%XROAD_DIR)
186  NULLIFY(yteb%XGARDEN)
187  NULLIFY(yteb%XGREENROOF)
188  NULLIFY(yteb%XBLD)
189  NULLIFY(yteb%XROAD)
190  NULLIFY(yteb%XCAN_HW_RATIO)
191  NULLIFY(yteb%XBLD_HEIGHT)
192  NULLIFY(yteb%XWALL_O_HOR)
193  NULLIFY(yteb%XROAD_O_GRND)
194  NULLIFY(yteb%XGARDEN_O_GRND)
195  NULLIFY(yteb%XWALL_O_GRND)
196  NULLIFY(yteb%XWALL_O_BLD)
197  NULLIFY(yteb%XZ0_TOWN)
198  NULLIFY(yteb%XSVF_ROAD)
199  NULLIFY(yteb%XSVF_GARDEN)
200  NULLIFY(yteb%XSVF_WALL)
201  NULLIFY(yteb%XALB_ROOF)
202  NULLIFY(yteb%XEMIS_ROOF)
203  NULLIFY(yteb%XHC_ROOF)
204  NULLIFY(yteb%XTC_ROOF)
205  NULLIFY(yteb%XD_ROOF)
206  NULLIFY(yteb%XALB_ROAD)
207  NULLIFY(yteb%XEMIS_ROAD)
208  NULLIFY(yteb%XHC_ROAD)
209  NULLIFY(yteb%XTC_ROAD)
210  NULLIFY(yteb%XD_ROAD)
211  NULLIFY(yteb%XALB_WALL)
212  NULLIFY(yteb%XEMIS_WALL)
213  NULLIFY(yteb%XHC_WALL)
214  NULLIFY(yteb%XTC_WALL)
215  NULLIFY(yteb%XD_WALL)
216  NULLIFY(yteb%XH_TRAFFIC)
217  NULLIFY(yteb%XLE_TRAFFIC)
218  NULLIFY(yteb%XH_INDUSTRY)
219  NULLIFY(yteb%XLE_INDUSTRY)
220  NULLIFY(yteb%XTI_ROAD)
221  NULLIFY(yteb%XWS_ROOF)
222  NULLIFY(yteb%XWS_ROAD)
223  NULLIFY(yteb%XT_ROOF)
224  NULLIFY(yteb%XT_ROAD)
225  NULLIFY(yteb%XT_WALL_A)
226  NULLIFY(yteb%XT_WALL_B)
227  NULLIFY(yteb%XAC_ROOF)
228  NULLIFY(yteb%XAC_ROAD)
229  NULLIFY(yteb%XAC_WALL)
230  NULLIFY(yteb%XAC_TOP)
231  NULLIFY(yteb%XAC_ROOF_WAT)
232  NULLIFY(yteb%XAC_ROAD_WAT)
233  NULLIFY(yteb%XQSAT_ROOF)
234  NULLIFY(yteb%XQSAT_ROAD)
235  NULLIFY(yteb%XDELT_ROOF)
236  NULLIFY(yteb%XDELT_ROAD)
237  NULLIFY(yteb%XT_CANYON)
238  NULLIFY(yteb%XQ_CANYON)
239  NULLIFY(yteb%XROUGH_ROOF)
240  NULLIFY(yteb%XROUGH_WALL)
241  NULLIFY(yteb%XRESIDENTIAL)
242 yteb%XDT_RES=0.
243 yteb%XDT_OFF=0.
244 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_INIT",1,zhook_handle)
245 END SUBROUTINE teb_init
246 !
247 SUBROUTINE teb_np_init(YNTEB,KPATCH)
248 TYPE(teb_np_t), INTENT(INOUT) :: YNTEB
249 INTEGER, INTENT(IN) :: KPATCH
250 INTEGER :: JP
251 REAL(KIND=JPRB) :: ZHOOK_HANDLE
252 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_NP_INIT",0,zhook_handle)
253 IF (.NOT.ASSOCIATED(ynteb%AL)) THEN
254  ALLOCATE(ynteb%AL(kpatch))
255  DO jp=1,kpatch
256  CALL teb_init(ynteb%AL(jp))
257  ENDDO
258 ELSE
259  DO jp=1,kpatch
260  CALL teb_init(ynteb%AL(jp))
261  ENDDO
262  DEALLOCATE(ynteb%AL)
263 ENDIF
264 IF (lhook) CALL dr_hook("MODD_TEB_N:TEB_NP_INIT",1,zhook_handle)
265 END SUBROUTINE teb_np_init
266 
267 
268 END MODULE modd_teb_n
subroutine teb_init(YTEB)
Definition: modd_tebn.F90:182
integer, parameter jprb
Definition: parkind1.F90:32
subroutine teb_np_init(YNTEB, KPATCH)
Definition: modd_tebn.F90:248
logical lhook
Definition: yomhook.F90:15