SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
init_bemn.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 init_bem_n ( DGU, DTCO, UG, U, TM, &
7  kluout)
8 ! #############################################################
9 !
10 !!**** *INIT_BEM_n* - routine to initialize Building Energy Model
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! G. Pigeon *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 04/2012
36 !-------------------------------------------------------------------------------
37 !
38 !* 0. DECLARATIONS
39 ! ------------
40 !
41 !
45 USE modd_surf_atm_n, ONLY : surf_atm_t
46 USE modd_surfex_n, ONLY : teb_model_t
47 !
48 USE modi_convert_patch_teb
49 USE modi_window_data
50 USE modi_hvac_autosize
51 USE modi_bem_morpho
52 USE modi_stores_hvac_autosize
53 !
54 USE modi_abor1_sfx
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 !
65 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
66 TYPE(data_cover_t), INTENT(INOUT) :: dtco
67 TYPE(surf_atm_grid_t), INTENT(INOUT) :: ug
68 TYPE(surf_atm_t), INTENT(INOUT) :: u
69 TYPE(teb_model_t), INTENT(INOUT) :: tm
70 !
71 INTEGER, INTENT(IN) :: kluout ! logical unit of output listing
72 !
73 !* 0.2 Declarations of local variables
74 ! -------------------------------
75 !
76 INTEGER :: jj ! counter
77 INTEGER :: ilu ! sizes of TEB arrays
78 LOGICAL :: gprint ! flag for warning prints in output file
79 !
80 REAL(KIND=JPRB) :: zhook_handle
81 !-------------------------------------------------------------------------------
82 !
83 ! Initialisation for IO
84 !
85 
86 IF (lhook) CALL dr_hook('INIT_BEM_N',0,zhook_handle)
87 !
88 !
89 !* 3. Physiographic data fields from land cover:
90 ! -----------------------------------------
91 !
92 ilu = SIZE(tm%TOP%XCOVER,1)
93 IF (tm%TOP%CBEM=='DEF') ilu=0
94 !
95 ALLOCATE(tm%B%CUR%XHC_FLOOR (ilu,tm%BOP%NFLOOR_LAYER))
96 ALLOCATE(tm%B%CUR%XTC_FLOOR (ilu,tm%BOP%NFLOOR_LAYER))
97 ALLOCATE(tm%B%CUR%XD_FLOOR (ilu,tm%BOP%NFLOOR_LAYER))
98 !
99 ALLOCATE(tm%B%CUR%XTCOOL_TARGET(ilu))
100 ALLOCATE(tm%B%CUR%XTHEAT_TARGET(ilu))
101 ALLOCATE(tm%B%CUR%XEFF_HEAT (ilu))
102 ALLOCATE(tm%B%CUR%XSHGC (ilu))
103 ALLOCATE(tm%B%CUR%XQIN (ilu))
104 ALLOCATE(tm%B%CUR%XQIN_FRAD (ilu))
105 ALLOCATE(tm%B%CUR%XSHGC_SH (ilu))
106 ALLOCATE(tm%B%CUR%XU_WIN (ilu))
107 ALLOCATE(tm%B%CUR%XTRAN_WIN (ilu))
108 ALLOCATE(tm%B%CUR%XFLOOR_HEIGHT(ilu))
109 ALLOCATE(tm%B%CUR%XINF (ilu))
110 !
111 ALLOCATE(tm%B%CUR%XQIN_FLAT (ilu))
112 ALLOCATE(tm%B%CUR%XHR_TARGET (ilu))
113 ALLOCATE(tm%B%CUR%XV_VENT (ilu))
114 ALLOCATE(tm%B%CUR%XCAP_SYS_HEAT(ilu))
115 ALLOCATE(tm%B%CUR%XCAP_SYS_RAT (ilu))
116 ALLOCATE(tm%B%CUR%XT_ADP (ilu))
117 ALLOCATE(tm%B%CUR%XM_SYS_RAT (ilu))
118 ALLOCATE(tm%B%CUR%XCOP_RAT (ilu))
119 ALLOCATE(tm%B%CUR%XT_SIZE_MAX (ilu))
120 ALLOCATE(tm%B%CUR%XT_SIZE_MIN (ilu))
121 ALLOCATE(tm%B%CUR%XF_WATER_COND(ilu))
122 ALLOCATE(tm%B%CUR%CNATVENT (ilu))
123 ALLOCATE(tm%B%CUR%XNATVENT (ilu))
124 !
125 ALLOCATE(tm%B%CUR%XABS_WIN (ilu))
126 ALLOCATE(tm%B%CUR%XUGG_WIN (ilu))
127 ALLOCATE(tm%B%CUR%LSHADE (ilu))
128 ALLOCATE(tm%B%CUR%XSHADE (ilu))
129 ALLOCATE(tm%B%CUR%LSHAD_DAY(ilu))
130 ALLOCATE(tm%B%CUR%LNATVENT_NIGHT(ilu))
131 ALLOCATE(tm%B%CUR%XAUX_MAX (ilu))
132 ALLOCATE(tm%B%CUR%XN_FLOOR(ilu))
133 ALLOCATE(tm%B%CUR%XGLAZ_O_BLD(ilu))
134 ALLOCATE(tm%B%CUR%XMASS_O_BLD(ilu))
135 ALLOCATE(tm%B%CUR%XFLOOR_HW_RATIO(ilu))
136 ALLOCATE(tm%B%CUR%XF_FLOOR_MASS(ilu))
137 ALLOCATE(tm%B%CUR%XF_FLOOR_WALL(ilu))
138 ALLOCATE(tm%B%CUR%XF_FLOOR_WIN(ilu))
139 ALLOCATE(tm%B%CUR%XF_FLOOR_ROOF(ilu))
140 ALLOCATE(tm%B%CUR%XF_WALL_FLOOR(ilu))
141 ALLOCATE(tm%B%CUR%XF_WALL_MASS(ilu))
142 ALLOCATE(tm%B%CUR%XF_WALL_WIN(ilu))
143 ALLOCATE(tm%B%CUR%XF_WIN_FLOOR(ilu))
144 ALLOCATE(tm%B%CUR%XF_WIN_MASS(ilu))
145 ALLOCATE(tm%B%CUR%XF_WIN_WALL(ilu))
146 ALLOCATE(tm%B%CUR%XF_WIN_WIN(ilu))
147 ALLOCATE(tm%B%CUR%XF_MASS_FLOOR(ilu))
148 ALLOCATE(tm%B%CUR%XF_MASS_WALL(ilu))
149 ALLOCATE(tm%B%CUR%XF_MASS_WIN(ilu))
150 
151 SELECT CASE(tm%TOP%CBEM)
152 !----------
153  CASE("DEF")
154 !-----------
155  !parameters that needs to be 0 for calculation
156  tm%B%CUR%XGR (:) = 0.
157  tm%B%CUR%XF_WASTE_CAN(:) = 0.
158 !----------
159  CASE("BEM")
160 !----------
161 
162  tm%B%CUR%XAUX_MAX(:) = 5.
163  CALL convert_patch_teb(tm%BDD, tm%DTB, dtco, tm%DTT, tm%TOP, &
164  tm%TOP%XCOVER,tm%TOP%LCOVER,0., &
165  phc_floor=tm%B%CUR%XHC_FLOOR, ptc_floor=tm%B%CUR%XTC_FLOOR, &
166  pd_floor=tm%B%CUR%XD_FLOOR, ptcool_target=tm%B%CUR%XTCOOL_TARGET, &
167  ptheat_target=tm%B%CUR%XTHEAT_TARGET, pf_waste_can=tm%B%CUR%XF_WASTE_CAN, &
168  peff_heat=tm%B%CUR%XEFF_HEAT, pqin=tm%B%CUR%XQIN, pqin_frad=tm%B%CUR%XQIN_FRAD, &
169  pshgc=tm%B%CUR%XSHGC, pu_win=tm%B%CUR%XU_WIN, pgr=tm%B%CUR%XGR, &
170  pshgc_sh=tm%B%CUR%XSHGC_SH, pfloor_height=tm%B%CUR%XFLOOR_HEIGHT, &
171  pinf=tm%B%CUR%XINF, pf_water_cond=tm%B%CUR%XF_WATER_COND, &
172  pqin_flat=tm%B%CUR%XQIN_FLAT, phr_target=tm%B%CUR%XHR_TARGET, &
173  pv_vent=tm%B%CUR%XV_VENT, pcap_sys_heat=tm%B%CUR%XCAP_SYS_HEAT, &
174  pcap_sys_rat=tm%B%CUR%XCAP_SYS_RAT, pt_adp=tm%B%CUR%XT_ADP, &
175  pm_sys_rat=tm%B%CUR%XM_SYS_RAT, pcop_rat=tm%B%CUR%XCOP_RAT, &
176  pt_size_max=tm%B%CUR%XT_SIZE_MAX, pt_size_min=tm%B%CUR%XT_SIZE_MIN, &
177  pshade=tm%B%CUR%XSHADE, pnatvent=tm%B%CUR%XNATVENT)
178  !
179  !
180  ! *. indoor relative surf. and view factors
181  ! --------------------------------------
182  !
183  CALL bem_morpho(tm%T%CUR%XBLD, tm%T%CUR%XWALL_O_HOR, tm%T%CUR%XBLD_HEIGHT, &
184  tm%B%CUR%XFLOOR_HEIGHT, tm%B%CUR%XGR, tm%B%CUR%XN_FLOOR, tm%T%CUR%XWALL_O_BLD, &
185  tm%B%CUR%XGLAZ_O_BLD, tm%B%CUR%XMASS_O_BLD, tm%B%CUR%XFLOOR_HW_RATIO, &
186  tm%B%CUR%XF_FLOOR_MASS, tm%B%CUR%XF_FLOOR_WALL, tm%B%CUR%XF_FLOOR_WIN, &
187  tm%B%CUR%XF_FLOOR_ROOF, tm%B%CUR%XF_WALL_FLOOR, tm%B%CUR%XF_WALL_MASS, &
188  tm%B%CUR%XF_WALL_WIN, tm%B%CUR%XF_WIN_FLOOR, tm%B%CUR%XF_WIN_MASS, &
189  tm%B%CUR%XF_WIN_WALL, tm%B%CUR%XF_MASS_FLOOR, tm%B%CUR%XF_MASS_WALL, &
190  tm%B%CUR%XF_MASS_WIN, tm%B%CUR%XF_WASTE_CAN, tm%B%CUR%XF_WIN_WIN )
191  !
192  ! *. Window optical and thermal data
193  ! -------------------------------
194  !
195  CALL window_data(ilu, tm%B%CUR%XSHGC, tm%B%CUR%XU_WIN, tm%B%CUR%XALB_WIN, &
196  tm%B%CUR%XABS_WIN, tm%B%CUR%XUGG_WIN, tm%B%CUR%XTRAN_WIN)
197  gprint = .false.
198  DO jj=1,SIZE(tm%B%CUR%XSHADE)
199  IF (tm%B%CUR%XSHADE(jj) >= 0.0 .AND. tm%B%CUR%XSHADE(jj) < 0.5) THEN
200  tm%B%CUR%LSHADE(jj) = .false.
201  ELSEIF (tm%B%CUR%XSHADE(jj) >= 0.5 .AND. tm%B%CUR%XSHADE(jj) <= 1.0) THEN
202  tm%B%CUR%LSHADE(jj) = .true.
203  ELSE
204  gprint = .true.
205  tm%B%CUR%LSHADE(jj) = .false.
206  ENDIF
207  ENDDO
208  IF (gprint) WRITE(kluout,*) &
209  'TEB-BEM : Error in specifying shading devices for at least one point, no shading device for these points'
210  tm%B%CUR%LSHAD_DAY(:) = .false.
211  !
212  ! *. Nocturnal surventilation
213  ! ------------------------
214  gprint = .false.
215  DO jj=1,SIZE(tm%B%CUR%XNATVENT)
216  IF (tm%B%CUR%XNATVENT(jj) >= 0.0 .AND. tm%B%CUR%XNATVENT(jj) < 0.5) THEN
217  tm%B%CUR%CNATVENT(jj) = 'NONE'
218  ELSEIF (tm%B%CUR%XNATVENT(jj) >= 0.5 .AND. tm%B%CUR%XNATVENT(jj) < 1.5) THEN
219  tm%B%CUR%CNATVENT(jj) = 'MANU'
220  ELSEIF (tm%B%CUR%XNATVENT(jj) >= 1.5 .AND. tm%B%CUR%XNATVENT(jj) <= 2.5) THEN
221  tm%B%CUR%CNATVENT(jj) = 'AUTO'
222  ELSEIF (tm%B%CUR%XNATVENT(jj) >= 2.5 .AND. tm%B%CUR%XNATVENT(jj) <= 3.5) THEN
223  tm%B%CUR%CNATVENT(jj) = 'MECH'
224  ELSE
225  gprint = .true.
226  tm%B%CUR%CNATVENT(jj) = 'NONE'
227  ENDIF
228  ENDDO
229  IF (gprint) WRITE(kluout,*) 'TEB-BEM : Chosen option for surventilation is not yet implemented; None venting is kept instead'
230 
231  tm%B%CUR%LNATVENT_NIGHT(:) = .false.
232  !
233 END SELECT
234 !
235 !-------------------------------------------------------------------------------
236 !
237 !* 8. Building HVAC automatic sizing:
238 ! -------------------------------
239 IF (tm%TOP%CBEM=='BEM' .AND. tm%BOP%LAUTOSIZE) THEN
240  CALL hvac_autosize(tm%BDD, dtco, dgu, tm%B, tm%BOP, ug, u, tm%TG, tm%T, tm%TOP, &
241  ilu,kluout)
242  !* stores the real systems characteristics in physiographic data
243  ! for further use
244  CALL stores_hvac_autosize(tm%B, tm%BOP, tm%DTB)
245 ENDIF
246 !
247 !-------------------------------------------------------------------------------
248 !
249 !
250 IF (lhook) CALL dr_hook('INIT_BEM_N',1,zhook_handle)
251 !
252 !
253 END SUBROUTINE init_bem_n
subroutine stores_hvac_autosize(B, BOP, DTB)
subroutine bem_morpho(PBLD, PWALL_O_HOR, PBLD_HEIGHT, PFLOOR_HEIGHT, PGR, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, PFLOOR_HW_RATIO, PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, PF_FLOOR_ROOF, PF_WALL_FLOOR, PF_WALL_MASS, PF_WALL_WIN, PF_WIN_FLOOR, PF_WIN_MASS, PF_WIN_WALL, PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PF_WASTE_CAN, PF_WIN_WIN)
Definition: bem_morpho.F90:6
subroutine hvac_autosize(BDD, DTCO, DGU, B, BOP, UG, U, TG, T, TOP, KI, KLUOUT)
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PCOVER, OCOVER, PDEF_ROAD_DIR, PZ0_TOWN, PALB_ROOF, PEMIS_ROOF, PHC_ROOF, PTC_ROOF, PD_ROOF, PALB_ROAD, PEMIS_ROAD, PHC_ROAD, PTC_ROAD, PD_ROAD, PALB_WALL, PEMIS_WALL, PHC_WALL, PTC_WALL, PD_WALL, PBLD_HEIGHT, PWALL_O_HOR, PBLD, PGARDEN, PROAD_DIR, PH_TRAFFIC, PLE_TRAFFIC, PH_INDUSTRY, PLE_INDUSTRY, PHC_FLOOR, PTC_FLOOR, PD_FLOOR, PTCOOL_TARGET, PTHEAT_TARGET, PF_WASTE_CAN, PEFF_HEAT, PQIN, PQIN_FRAD, PSHGC, PU_WIN, PGR, PSHGC_SH, PFLOOR_HEIGHT, PINF, PF_WATER_COND, PQIN_FLAT, PHR_TARGET, PV_VENT, PCAP_SYS_HEAT, PCAP_SYS_RAT, PT_ADP, PM_SYS_RAT, PCOP_RAT, PT_SIZE_MAX, PT_SIZE_MIN, PSHADE, PNATVENT, PROUGH_ROOF, PRESIDENTIAL, PROUGH_WALL, PGREENROOF, PEMIS_PANEL, PALB_PANEL, PEFF_PANEL, PFRAC_PANEL)
subroutine window_data(KI, PSHGC, PU_WIN, PALB_WIN, PABS_WIN, PUGG_WIN, PTRAN_WIN)
Definition: window_data.F90:6
subroutine init_bem_n(DGU, DTCO, UG, U, TM, KLUOUT)
Definition: init_bemn.F90:6