SURFEX v8.1
General documentation of Surfex
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 ( DTCO, TOP, BOP, DTT, DTB, BDD, G, &
7  T, B, 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 !
43 !
46 USE modd_data_teb_n, ONLY : data_teb_t
47 USE modd_data_bem_n, ONLY : data_bem_t
49 USE modd_sfx_grid_n, ONLY : grid_t
50 USE modd_teb_n, ONLY : teb_t
51 USE modd_bem_n, ONLY : bem_t
52 !
53 USE modi_convert_patch_teb
54 USE modi_window_data
55 USE modi_hvac_autosize
56 USE modi_bem_morpho
57 USE modi_stores_hvac_autosize
58 !
59 USE modi_abor1_sfx
60 !
61 USE yomhook ,ONLY : lhook, dr_hook
62 USE parkind1 ,ONLY : jprb
63 !
64 IMPLICIT NONE
65 !
66 !* 0.1 Declarations of arguments
67 ! -------------------------
68 !
69 !
70 TYPE(data_cover_t), INTENT(INOUT) :: DTCO
71 TYPE(teb_options_t), INTENT(INOUT) :: TOP
72 TYPE(bem_options_t), INTENT(INOUT) :: BOP
73 TYPE(data_teb_t), INTENT(INOUT) :: DTT
74 TYPE(data_bem_t), INTENT(INOUT) :: DTB
75 TYPE(bld_desc_t), INTENT(INOUT) :: BDD
76 TYPE(grid_t), INTENT(INOUT) :: G
77 TYPE(teb_t), INTENT(INOUT) :: T
78 TYPE(bem_t), INTENT(INOUT) :: B
79 !
80 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing
81 !
82 !* 0.2 Declarations of local variables
83 ! -------------------------------
84 !
85 INTEGER :: JJ ! counter
86 INTEGER :: ILU ! sizes of TEB arrays
87 LOGICAL :: GPRINT ! flag for warning prints in output file
88 !
89 REAL(KIND=JPRB) :: ZHOOK_HANDLE
90 !-------------------------------------------------------------------------------
91 !
92 ! Initialisation for IO
93 !
94 
95 IF (lhook) CALL dr_hook('INIT_BEM_N',0,zhook_handle)
96 !
97 !
98 !* 3. Physiographic data fields from land cover:
99 ! -----------------------------------------
100 !
101 ilu = SIZE(top%XCOVER,1)
102 IF (top%CBEM=='DEF') ilu=0
103 !
104 ALLOCATE(b%XHC_FLOOR (ilu,bop%NFLOOR_LAYER))
105 ALLOCATE(b%XTC_FLOOR (ilu,bop%NFLOOR_LAYER))
106 ALLOCATE(b%XD_FLOOR (ilu,bop%NFLOOR_LAYER))
107 !
108 ALLOCATE(b%XTCOOL_TARGET(ilu))
109 ALLOCATE(b%XTHEAT_TARGET(ilu))
110 ALLOCATE(b%XEFF_HEAT (ilu))
111 ALLOCATE(b%XSHGC (ilu))
112 ALLOCATE(b%XQIN (ilu))
113 ALLOCATE(b%XQIN_FRAD (ilu))
114 ALLOCATE(b%XSHGC_SH (ilu))
115 ALLOCATE(b%XU_WIN (ilu))
116 ALLOCATE(b%XTRAN_WIN (ilu))
117 ALLOCATE(b%XFLOOR_HEIGHT(ilu))
118 ALLOCATE(b%XINF (ilu))
119 !
120 ALLOCATE(b%XQIN_FLAT (ilu))
121 ALLOCATE(b%XHR_TARGET (ilu))
122 ALLOCATE(b%XV_VENT (ilu))
123 ALLOCATE(b%XCAP_SYS_HEAT(ilu))
124 ALLOCATE(b%XCAP_SYS_RAT (ilu))
125 ALLOCATE(b%XT_ADP (ilu))
126 ALLOCATE(b%XM_SYS_RAT (ilu))
127 ALLOCATE(b%XCOP_RAT (ilu))
128 ALLOCATE(b%XT_SIZE_MAX (ilu))
129 ALLOCATE(b%XT_SIZE_MIN (ilu))
130 ALLOCATE(b%XF_WATER_COND(ilu))
131 ALLOCATE(b%CNATVENT (ilu))
132 ALLOCATE(b%XNATVENT (ilu))
133 !
134 ALLOCATE(b%XABS_WIN (ilu))
135 ALLOCATE(b%XUGG_WIN (ilu))
136 ALLOCATE(b%LSHADE (ilu))
137 ALLOCATE(b%XSHADE (ilu))
138 ALLOCATE(b%LSHAD_DAY(ilu))
139 ALLOCATE(b%LNATVENT_NIGHT(ilu))
140 ALLOCATE(b%XAUX_MAX (ilu))
141 ALLOCATE(b%XN_FLOOR(ilu))
142 ALLOCATE(b%XGLAZ_O_BLD(ilu))
143 ALLOCATE(b%XMASS_O_BLD(ilu))
144 ALLOCATE(b%XFLOOR_HW_RATIO(ilu))
145 ALLOCATE(b%XF_FLOOR_MASS(ilu))
146 ALLOCATE(b%XF_FLOOR_WALL(ilu))
147 ALLOCATE(b%XF_FLOOR_WIN(ilu))
148 ALLOCATE(b%XF_FLOOR_ROOF(ilu))
149 ALLOCATE(b%XF_WALL_FLOOR(ilu))
150 ALLOCATE(b%XF_WALL_MASS(ilu))
151 ALLOCATE(b%XF_WALL_WIN(ilu))
152 ALLOCATE(b%XF_WIN_FLOOR(ilu))
153 ALLOCATE(b%XF_WIN_MASS(ilu))
154 ALLOCATE(b%XF_WIN_WALL(ilu))
155 ALLOCATE(b%XF_WIN_WIN(ilu))
156 ALLOCATE(b%XF_MASS_FLOOR(ilu))
157 ALLOCATE(b%XF_MASS_WALL(ilu))
158 ALLOCATE(b%XF_MASS_WIN(ilu))
159 
160 SELECT CASE(top%CBEM)
161 !----------
162 CASE("DEF")
163 !-----------
164  !parameters that needs to be 0 for calculation
165  b%XGR (:) = 0.
166  b%XF_WASTE_CAN(:) = 0.
167 !----------
168 CASE("BEM")
169 !----------
170 
171  b%XAUX_MAX(:) = 5.
172  CALL convert_patch_teb(bdd, dtb, dtco, dtt, top, 0., b = b )
173  !
174  !
175  ! *. indoor relative surf. and view factors
176  ! --------------------------------------
177  !
178  CALL bem_morpho(t%XBLD, t%XWALL_O_HOR, t%XBLD_HEIGHT, &
179  t%XWALL_O_BLD, b )
180  !
181  ! *. Window optical and thermal data
182  ! -------------------------------
183  !
184  CALL window_data(ilu, b )
185  gprint = .false.
186  DO jj=1,SIZE(b%XSHADE)
187  IF (b%XSHADE(jj) >= 0.0 .AND. b%XSHADE(jj) < 0.5) THEN
188  b%LSHADE(jj) = .false.
189  ELSEIF (b%XSHADE(jj) >= 0.5 .AND. b%XSHADE(jj) <= 1.0) THEN
190  b%LSHADE(jj) = .true.
191  ELSE
192  gprint = .true.
193  b%LSHADE(jj) = .false.
194  ENDIF
195  ENDDO
196  IF (gprint) WRITE(kluout,*) &
197  'TEB-BEM : Error in specifying shading devices for at least one point, no shading device for these points'
198  b%LSHAD_DAY(:) = .false.
199  !
200  ! *. Nocturnal surventilation
201  ! ------------------------
202  gprint = .false.
203  DO jj=1,SIZE(b%XNATVENT)
204  IF (b%XNATVENT(jj) >= 0.0 .AND. b%XNATVENT(jj) < 0.5) THEN
205  b%CNATVENT(jj) = 'NONE'
206  ELSEIF (b%XNATVENT(jj) >= 0.5 .AND. b%XNATVENT(jj) < 1.5) THEN
207  b%CNATVENT(jj) = 'MANU'
208  ELSEIF (b%XNATVENT(jj) >= 1.5 .AND. b%XNATVENT(jj) <= 2.5) THEN
209  b%CNATVENT(jj) = 'AUTO'
210  ELSEIF (b%XNATVENT(jj) >= 2.5 .AND. b%XNATVENT(jj) <= 3.5) THEN
211  b%CNATVENT(jj) = 'MECH'
212  ELSE
213  gprint = .true.
214  b%CNATVENT(jj) = 'NONE'
215  ENDIF
216  ENDDO
217  IF (gprint) WRITE(kluout,*) 'TEB-BEM : Chosen option for surventilation is not yet implemented; None venting is kept instead'
218 
219  b%LNATVENT_NIGHT(:) = .false.
220  !
221 END SELECT
222 !
223 !-------------------------------------------------------------------------------
224 !
225 !* 8. Building HVAC automatic sizing:
226 ! -------------------------------
227 IF (top%CBEM=='BEM' .AND. bop%LAUTOSIZE) THEN
228  CALL hvac_autosize(b, bop, g, t, top, ilu,kluout)
229  !* stores the real systems characteristics in physiographic data
230  ! for further use
231  CALL stores_hvac_autosize(b, bop, dtb)
232 ENDIF
233 !
234 !-------------------------------------------------------------------------------
235 !
236 !
237 IF (lhook) CALL dr_hook('INIT_BEM_N',1,zhook_handle)
238 !
239 !
240 END SUBROUTINE init_bem_n
subroutine stores_hvac_autosize(B, BOP, DTB)
subroutine convert_patch_teb(BDD, DTB, DTCO, DTT, TOP, PDEF_ROAD_DIR, T, B, TPN)
subroutine init_bem_n(DTCO, TOP, BOP, DTT, DTB, BDD, G, T, B, KLUOUT)
Definition: init_bemn.F90:8
integer, parameter jprb
Definition: parkind1.F90:32
subroutine hvac_autosize(B, BOP, G, T, TOP, KI, KLUOUT)
subroutine bem_morpho(PBLD, PWALL_O_HOR, PBLD_HEIGHT, PWALL_O_BLD, B)
Definition: bem_morpho.F90:7
logical lhook
Definition: yomhook.F90:15
subroutine window_data(KI, B)
Definition: window_data.F90:7