SURFEX v8.1
General documentation of Surfex
modd_diag_misc_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 ! ############################
7 ! ############################
8 !
9 !!**** *MODD_DIAG_MISC_TEB - declaration of packed surface parameters for TEB scheme
10 !!
11 !! PURPOSE
12 !! -------
13 !
14 !!
15 !!** IMPLICIT ARGUMENTS
16 !! ------------------
17 !! None
18 !!
19 !! REFERENCE
20 !! ---------
21 !!
22 !! AUTHOR
23 !! ------
24 !! P. Le Moigne *Meteo France*
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 07/10/04
29 !! C de Munck 02/13 adding runoff contributions for teb garden
30 !! V. Masson 06/2013 splits module in two
31 !
32 !
33 !* 0. DECLARATIONS
34 ! ------------
35 !
36 !
37 !
38 USE yomhook ,ONLY : lhook, dr_hook
39 USE parkind1 ,ONLY : jprb
40 !
41 IMPLICIT NONE
42 !
44 !
45 !* miscellaneous variables
46 !
47  REAL, POINTER, DIMENSION(:) :: xz0_town ! town roughness length
48  REAL, POINTER, DIMENSION(:) :: xqf_bld ! domestic heating
49  REAL, POINTER, DIMENSION(:) :: xflx_bld ! heat flux from bld
50  REAL, POINTER, DIMENSION(:) :: xqf_town ! total anthropogenic heat
51  REAL, POINTER, DIMENSION(:) :: xdqs_town ! storage inside building
52 !
53  REAL, POINTER, DIMENSION(:) :: xh_wall_a ! wall sensible heat flux (W/m2)
54  REAL, POINTER, DIMENSION(:) :: xh_wall_b ! wall sensible heat flux (W/m2)
55  REAL, POINTER, DIMENSION(:) :: xh_roof ! roof sensible heat flux (W/m2)
56  REAL, POINTER, DIMENSION(:) :: xh_road ! road sensible heat flux (W/m2)
57  REAL, POINTER, DIMENSION(:) :: xh_strlroof ! structural roof sens. heat flux (W/m2)
58  REAL, POINTER, DIMENSION(:) :: xh_blt ! built surf sensible heat flux (W/m2)
59  REAL, POINTER, DIMENSION(:) :: xrn_wall_a ! net radiation at wall (W/m2)
60  REAL, POINTER, DIMENSION(:) :: xrn_wall_b ! net radiation at wall (W/m2)
61  REAL, POINTER, DIMENSION(:) :: xrn_roof ! net radiation at roof (W/m2)
62  REAL, POINTER, DIMENSION(:) :: xrn_road ! net radiation at road (W/m2)
63  REAL, POINTER, DIMENSION(:) :: xrn_strlroof !net radiation at structural roofs(W/m2)
64  REAL, POINTER, DIMENSION(:) :: xrn_blt ! net radiation at built surf (W/m2)
65  REAL, POINTER, DIMENSION(:) :: xgflux_wall_a !net wall conduction flux (W/m2)
66  REAL, POINTER, DIMENSION(:) :: xgflux_wall_b !net wall conduction flux (W/m2)
67  REAL, POINTER, DIMENSION(:) :: xgflux_roof ! net roof conduction flux (W/m2)
68  REAL, POINTER, DIMENSION(:) :: xgflux_road ! net road conduction flux (W/m2)
69  REAL, POINTER, DIMENSION(:) :: xgflux_strlroof !net structural roof cond flux (W/m2)
70  REAL, POINTER, DIMENSION(:) :: xgflux_blt ! net built surf conduction flux (W/m2)
71  REAL, POINTER, DIMENSION(:) :: xle_roof ! roof latent heat flux (W/m2)
72  REAL, POINTER, DIMENSION(:) :: xle_road ! road latent heat flux (W/m2)
73  REAL, POINTER, DIMENSION(:) :: xle_strlroof !structural roof latent heat flux (W/m2)
74  REAL, POINTER, DIMENSION(:) :: xle_blt ! built surf latent heat flux (W/m2)
75 !
76  REAL, POINTER, DIMENSION(:) :: xrunoff_town ! aggregated water runoff for town (kg/m2/s)
77  REAL, POINTER, DIMENSION(:) :: xirrig_garden ! summer ground irrigation rate (kg/m2/s)
78  REAL, POINTER, DIMENSION(:) :: xrunoff_road ! water runoff for roads (kg/m2/s)
79  REAL, POINTER, DIMENSION(:) :: xirrig_road ! road man-made watering rate (kg/m2/s)
80  REAL, POINTER, DIMENSION(:) :: xrunoff_roof ! aggregated water runoff for roofs (kg/m2/s)
81  REAL, POINTER, DIMENSION(:) :: xrunoff_strlroof ! water runoff for structural roofs (kg/m2/s)
82  REAL, POINTER, DIMENSION(:) :: xirrig_greenroof ! summer ground irrigation rate (kg/m2/s)
83 !
84  REAL, POINTER, DIMENSION(:) :: xabs_sw_roof ! absorbed shortwave radiation over roofs
85  REAL, POINTER, DIMENSION(:) :: xabs_sw_snow_roof ! absorbed longwave radiation over roofs
86  REAL, POINTER, DIMENSION(:) :: xabs_lw_roof ! absorbed shortwave radiation over roofs
87  REAL, POINTER, DIMENSION(:) :: xabs_lw_snow_roof ! absorbed longwave radiation over roofs
88  REAL, POINTER, DIMENSION(:) :: xabs_sw_road ! absorbed shortwave radiation over roads
89  REAL, POINTER, DIMENSION(:) :: xabs_sw_snow_road ! absorbed longwave radiation over roads
90  REAL, POINTER, DIMENSION(:) :: xabs_lw_road ! absorbed shortwave radiation over roads
91  REAL, POINTER, DIMENSION(:) :: xabs_lw_snow_road ! absorbed longwave radiation over roads
92  REAL, POINTER, DIMENSION(:) :: xabs_sw_wall_a ! absorbed shortwave radiation over walls
93  REAL, POINTER, DIMENSION(:) :: xabs_sw_wall_b ! absorbed shortwave radiation over walls
94  REAL, POINTER, DIMENSION(:) :: xabs_lw_wall_a ! absorbed shortwave radiation over walls
95  REAL, POINTER, DIMENSION(:) :: xabs_lw_wall_b ! absorbed shortwave radiation over walls
96  REAL, POINTER, DIMENSION(:) :: xabs_sw_garden ! absorbed shortwave radiation over green areas
97  REAL, POINTER, DIMENSION(:) :: xabs_lw_garden ! absorbed shortwave radiation over green areas
98  REAL, POINTER, DIMENSION(:) :: xabs_sw_greenroof ! absorbed shortwave radiation over green roofs
99  REAL, POINTER, DIMENSION(:) :: xabs_lw_greenroof ! absorbed shortwave radiation over green roofs
100  REAL, POINTER, DIMENSION(:) :: xg_greenroof_roof ! Heat flux between green roof and structural roof
101  REAL, POINTER, DIMENSION(:) :: xabs_sw_panel ! absorbed shortwave radiation over solar panels
102  REAL, POINTER, DIMENSION(:) :: xabs_lw_panel ! absorbed longwave radiation over solar panels
103 !
104  REAL, POINTER, DIMENSION(:) :: xrn_panel ! net radiation over solar panels (W/m2)
105  REAL, POINTER, DIMENSION(:) :: xh_panel ! sensible heat flux over solar panels (W/m2)
106  REAL, POINTER, DIMENSION(:) :: xther_prod_panel ! thermal production of solar panels (W/m2 thermal panel)
107  REAL, POINTER, DIMENSION(:) :: xphot_prod_panel ! photovoltaic production of solar panels (W/m2 photovoltaic panel)
108  REAL, POINTER, DIMENSION(:) :: xprod_panel ! production of solar panels (W/m2 panel)
109  REAL, POINTER, DIMENSION(:) :: xther_prod_bld ! thermal production of solar panels (W/m2 bld)
110  REAL, POINTER, DIMENSION(:) :: xphot_prod_bld ! photovoltaic production of solar panels (W/m2 bld)
111 
112  REAL, POINTER, DIMENSION(:) :: xh_bld_cool ! Sensible cooling energy demand
113  ! of the building [W m-2(bld)]
114  REAL, POINTER, DIMENSION(:) :: xt_bld_cool ! Total cooling energy demand
115  ! of the building [W m-2(bld)]
116  REAL, POINTER, DIMENSION(:) :: xh_bld_heat ! Heating energy demand
117  ! of the building [W m-2(bld)]
118  REAL, POINTER, DIMENSION(:) :: xle_bld_cool ! Latent cooling energy demand
119  ! of the building [W m-2(bld)]
120  REAL, POINTER, DIMENSION(:) :: xle_bld_heat ! Latent heating energy demand
121  ! of the building [W m-2(bld)]
122  REAL, POINTER, DIMENSION(:) :: xh_waste ! Sensible waste heat from HVAC system
123  ! [W m-2(tot)]
124  REAL, POINTER, DIMENSION(:) :: xle_waste ! Latent waste heat from HVAC system
125  ! [W m-2(tot)]
126  REAL, POINTER, DIMENSION(:) :: xhvac_cool ! Energy consumption of the cooling system
127  ! [W m-2(bld)]
128  REAL, POINTER, DIMENSION(:) :: xhvac_heat ! Energy consumption of the heating system
129  ! [W m-2(bld)]
130  REAL, POINTER, DIMENSION(:) :: xcap_sys ! Actual capacity of the cooling system
131  ! [W m-2(bld)]
132  REAL, POINTER, DIMENSION(:) :: xm_sys ! Actual HVAC mass flow rate
133  ! [kg s-1 m-2(bld)]
134  REAL, POINTER, DIMENSION(:) :: xcop ! COP of the cooling system
135  REAL, POINTER, DIMENSION(:) :: xq_sys ! Supply air specific humidity [kg kg-1]
136  REAL, POINTER, DIMENSION(:) :: xt_sys ! Supply air temperature [K]
137  REAL, POINTER, DIMENSION(:) :: xtr_sw_win ! Solar radiation transmitted throught
138  ! windows [W m-2(bld)]
139  REAL, POINTER, DIMENSION(:) :: xfan_power ! HVAC fan power
140  REAL, POINTER, DIMENSION(:) :: xabs_sw_win ! window absorbed shortwave radiation [W m-2]
141  REAL, POINTER, DIMENSION(:) :: xabs_lw_win ! absorbed infrared rad. [W m-2]
142 
143  REAL, POINTER, DIMENSION(:) :: xemit_lw_fac ! LW flux emitted by the facade (W/m2 facade)
144  REAL, POINTER, DIMENSION(:) :: xemit_lw_grnd ! LW flux emitted by the ground (W/m2 ground = road + garden)
145  REAL, POINTER, DIMENSION(:) :: xt_rad_ind !Indoor mean radiant temperature [K]
146  REAL, POINTER, DIMENSION(:) :: xref_sw_grnd ! total solar rad reflected by ground
147  REAL, POINTER, DIMENSION(:) :: xref_sw_fac ! total solar rad reflected by facade
148  REAL, POINTER, DIMENSION(:) :: xhu_bld !Indoor relative humidity
149 !
150  REAL, POINTER, DIMENSION(:) :: xtcool_target ! current cooling setpoint of indoor air
151  REAL, POINTER, DIMENSION(:) :: xtheat_target ! current heating setpoint of indoor air
152  REAL, POINTER, DIMENSION(:) :: xqin ! current internal heat gains [W m-2(floor)]
153 
154 !------------------------------------------------------------------------------
155 !
156 
157 END TYPE diag_misc_teb_t
158 
160  !
161  TYPE(diag_misc_teb_t), POINTER :: al(:) => null()
162  !
163 END TYPE diag_misc_teb_np_t
164 !
165 CONTAINS
166 !
167 SUBROUTINE diag_misc_teb_init(YDIAG_MISC_TEB)
168 TYPE(diag_misc_teb_t), INTENT(INOUT) :: YDIAG_MISC_TEB
169 REAL(KIND=JPRB) :: ZHOOK_HANDLE
170 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_TEB_N:DIAG_MISC_TEB_INIT",0,zhook_handle)
171  NULLIFY(ydiag_misc_teb%XZ0_TOWN)
172  NULLIFY(ydiag_misc_teb%XQF_BLD)
173  NULLIFY(ydiag_misc_teb%XFLX_BLD)
174  NULLIFY(ydiag_misc_teb%XQF_TOWN)
175  NULLIFY(ydiag_misc_teb%XDQS_TOWN)
176  NULLIFY(ydiag_misc_teb%XH_WALL_A)
177  NULLIFY(ydiag_misc_teb%XH_WALL_B)
178  NULLIFY(ydiag_misc_teb%XH_ROOF)
179  NULLIFY(ydiag_misc_teb%XH_ROAD)
180  NULLIFY(ydiag_misc_teb%XH_STRLROOF)
181  NULLIFY(ydiag_misc_teb%XH_BLT)
182  NULLIFY(ydiag_misc_teb%XRN_WALL_A)
183  NULLIFY(ydiag_misc_teb%XRN_WALL_B)
184  NULLIFY(ydiag_misc_teb%XRN_ROOF)
185  NULLIFY(ydiag_misc_teb%XRN_ROAD)
186  NULLIFY(ydiag_misc_teb%XRN_STRLROOF)
187  NULLIFY(ydiag_misc_teb%XRN_BLT)
188  NULLIFY(ydiag_misc_teb%XGFLUX_WALL_A)
189  NULLIFY(ydiag_misc_teb%XGFLUX_WALL_B)
190  NULLIFY(ydiag_misc_teb%XGFLUX_ROOF)
191  NULLIFY(ydiag_misc_teb%XGFLUX_ROAD)
192  NULLIFY(ydiag_misc_teb%XGFLUX_STRLROOF)
193  NULLIFY(ydiag_misc_teb%XGFLUX_BLT)
194  NULLIFY(ydiag_misc_teb%XLE_ROOF)
195  NULLIFY(ydiag_misc_teb%XLE_ROAD)
196  NULLIFY(ydiag_misc_teb%XLE_STRLROOF)
197  NULLIFY(ydiag_misc_teb%XLE_BLT)
198  NULLIFY(ydiag_misc_teb%XRUNOFF_TOWN)
199  NULLIFY(ydiag_misc_teb%XIRRIG_GARDEN)
200  NULLIFY(ydiag_misc_teb%XRUNOFF_ROAD)
201  NULLIFY(ydiag_misc_teb%XIRRIG_ROAD)
202  NULLIFY(ydiag_misc_teb%XRUNOFF_ROOF)
203  NULLIFY(ydiag_misc_teb%XRUNOFF_STRLROOF)
204  NULLIFY(ydiag_misc_teb%XIRRIG_GREENROOF)
205  NULLIFY(ydiag_misc_teb%XABS_LW_GREENROOF)
206  NULLIFY(ydiag_misc_teb%XG_GREENROOF_ROOF)
207  NULLIFY(ydiag_misc_teb%XABS_SW_PANEL)
208  NULLIFY(ydiag_misc_teb%XABS_LW_PANEL)
209  NULLIFY(ydiag_misc_teb%XRN_PANEL)
210  NULLIFY(ydiag_misc_teb%XH_PANEL)
211  NULLIFY(ydiag_misc_teb%XTHER_PROD_PANEL)
212  NULLIFY(ydiag_misc_teb%XPHOT_PROD_PANEL)
213  NULLIFY(ydiag_misc_teb%XPROD_PANEL)
214  NULLIFY(ydiag_misc_teb%XTHER_PROD_BLD)
215  NULLIFY(ydiag_misc_teb%XPHOT_PROD_BLD)
216  NULLIFY(ydiag_misc_teb%XT_BLD_COOL)
217  NULLIFY(ydiag_misc_teb%XH_BLD_COOL)
218  NULLIFY(ydiag_misc_teb%XH_BLD_HEAT)
219  NULLIFY(ydiag_misc_teb%XLE_BLD_COOL)
220  NULLIFY(ydiag_misc_teb%XLE_BLD_HEAT)
221  NULLIFY(ydiag_misc_teb%XHVAC_COOL)
222  NULLIFY(ydiag_misc_teb%XHVAC_HEAT)
223  NULLIFY(ydiag_misc_teb%XH_WASTE)
224  NULLIFY(ydiag_misc_teb%XLE_WASTE)
225  NULLIFY(ydiag_misc_teb%XCAP_SYS)
226  NULLIFY(ydiag_misc_teb%XM_SYS)
227  NULLIFY(ydiag_misc_teb%XCOP)
228  NULLIFY(ydiag_misc_teb%XQ_SYS)
229  NULLIFY(ydiag_misc_teb%XT_SYS)
230  NULLIFY(ydiag_misc_teb%XTR_SW_WIN)
231  NULLIFY(ydiag_misc_teb%XFAN_POWER)
232  NULLIFY(ydiag_misc_teb%XABS_SW_WIN)
233  NULLIFY(ydiag_misc_teb%XABS_LW_WIN)
234  NULLIFY(ydiag_misc_teb%XEMIT_LW_GRND)
235  NULLIFY(ydiag_misc_teb%XEMIT_LW_FAC)
236  NULLIFY(ydiag_misc_teb%XT_RAD_IND)
237  NULLIFY(ydiag_misc_teb%XREF_SW_GRND)
238  NULLIFY(ydiag_misc_teb%XREF_SW_FAC)
239  NULLIFY(ydiag_misc_teb%XHU_BLD)
240  NULLIFY(ydiag_misc_teb%XTCOOL_TARGET)
241  NULLIFY(ydiag_misc_teb%XTHEAT_TARGET)
242  NULLIFY(ydiag_misc_teb%XQIN)
243 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_TEB_N:DIAG_MISC_TEB_INIT",1,zhook_handle)
244 END SUBROUTINE diag_misc_teb_init
245 !
246 SUBROUTINE diag_misc_teb_np_init(YNDIAG_MISC_TEB,KPATCH)
247 TYPE(diag_misc_teb_np_t), INTENT(INOUT) :: YNDIAG_MISC_TEB
248 INTEGER, INTENT(IN) :: KPATCH
249 INTEGER :: JP
250 REAL(KIND=JPRB) :: ZHOOK_HANDLE
251 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_TEB_N:DIAG_MISC_TEB_NP_INIT",0,zhook_handle)
252 IF (.NOT.ASSOCIATED(yndiag_misc_teb%AL)) THEN
253  ALLOCATE(yndiag_misc_teb%AL(kpatch))
254  DO jp=1,kpatch
255  CALL diag_misc_teb_init(yndiag_misc_teb%AL(jp))
256  ENDDO
257 ELSE
258  DO jp=1,kpatch
259  CALL diag_misc_teb_init(yndiag_misc_teb%AL(jp))
260  ENDDO
261  DEALLOCATE(yndiag_misc_teb%AL)
262 ENDIF
263 IF (lhook) CALL dr_hook("MODD_DIAG_MISC_TEB_N:DIAG_MISC_TEB_NP_INIT",1,zhook_handle)
264 END SUBROUTINE diag_misc_teb_np_init
265 
266 
267 
268 END MODULE modd_diag_misc_teb_n
integer, parameter jprb
Definition: parkind1.F90:32
subroutine diag_misc_teb_init(YDIAG_MISC_TEB)
subroutine diag_misc_teb_np_init(YNDIAG_MISC_TEB, KPATCH)
logical lhook
Definition: yomhook.F90:15