|
SURFEX v7.3
General documentation of Surfex
|
00001 ! ################ 00002 MODULE MODD_BEM_n 00003 ! ################ 00004 ! 00005 !!**** *MODD_BEM_n - declaration of parameters and option for BEM 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 ! Declaration of surface parameters 00010 ! 00011 !! 00012 !!** IMPLICIT ARGUMENTS 00013 !! ------------------ 00014 !! None 00015 !! 00016 !! REFERENCE 00017 !! --------- 00018 !! 00019 !! AUTHOR 00020 !! ------ 00021 !! B. Bueno *Meteo France* 00022 !! 00023 !! MODIFICATIONS 00024 !! ------------- 00025 !! Original 10/2010 00026 !! G. Pigeon 06/2011 add LSHAD_DAY 00027 !! G. Pigeon 07/2011 add LNATVENT_NIGHT 00028 !! G. Pigeon 08/2011 change from MODD_BLD -> MODD_BEM 00029 !! G. Pigeon 10/2011 add indoor relative surf. and view factors 00030 !! G. Pigeon 09/2012 add TRAN_WIN 00031 !! G. Pigeon 10/2012 add XF_WIN_WIN 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00037 USE PARKIND1 ,ONLY : JPRB 00038 ! 00039 IMPLICIT NONE 00040 00041 TYPE BEM_OPTIONS_t 00042 ! BLD scheme option 00043 ! 00044 ! Number of layers 00045 ! 00046 INTEGER :: NFLOOR_LAYER ! number of layers in walls 00047 CHARACTER(LEN=6) :: CCOOL_COIL ! type of cooling coil 00048 CHARACTER(LEN=6) :: CHEAT_COIL ! type of heating coil 00049 LOGICAL :: LAUTOSIZE ! Flag to activate autosize calculations 00050 ! 00051 END TYPE BEM_OPTIONS_t 00052 ! 00053 TYPE(BEM_OPTIONS_t), ALLOCATABLE, TARGET, SAVE :: BEM_OPTIONS_MODEL(:) 00054 ! 00055 INTEGER, POINTER :: NFLOOR_LAYER=>NULL() 00056 !$OMP THREADPRIVATE(NFLOOR_LAYER) 00057 CHARACTER(LEN=6), POINTER :: CCOOL_COIL=>NULL() 00058 !$OMP THREADPRIVATE(CCOOL_COIL) 00059 CHARACTER(LEN=6), POINTER :: CHEAT_COIL=>NULL() 00060 !$OMP THREADPRIVATE(CHEAT_COIL) 00061 LOGICAL, POINTER :: LAUTOSIZE=>NULL() 00062 !$OMP THREADPRIVATE(LAUTOSIZE) 00063 ! 00064 ! 00065 !-------------------------------------------------------------------------- 00066 ! 00067 TYPE BEM_t 00068 ! 00069 ! Floor parameters 00070 ! 00071 REAL, POINTER, DIMENSION(:,:) :: XHC_FLOOR ! floor layers heat capacity (J/K/m3) 00072 REAL, POINTER, DIMENSION(:,:) :: XTC_FLOOR ! floor layers thermal conductivity (W/K/m) 00073 REAL, POINTER, DIMENSION(:,:) :: XD_FLOOR ! depth of floor layers (m) 00074 ! 00075 ! HVAC parameters 00076 ! 00077 REAL, POINTER, DIMENSION(:) :: XTCOOL_TARGET ! cooling setpoint of indoor air 00078 REAL, POINTER, DIMENSION(:) :: XTHEAT_TARGET ! heating setpoint of indoor air 00079 REAL, POINTER, DIMENSION(:) :: XF_WASTE_CAN ! fraction of waste heat released into the canyon 00080 REAL, POINTER, DIMENSION(:) :: XEFF_HEAT ! efficiency of the heating system 00081 ! 00082 ! Indoor parameters 00083 ! 00084 REAL, POINTER, DIMENSION(:) :: XTI_BLD ! building interior temperature (K) 00085 REAL, POINTER, DIMENSION(:,:) :: XT_FLOOR ! floor layer temperatures (K) 00086 REAL, POINTER, DIMENSION(:,:) :: XT_MASS ! Air cooled building internal th. mass temperature (K) 00087 ! 00088 REAL, POINTER, DIMENSION(:) :: XQIN ! internal heat gains [W m-2(floor)] 00089 REAL, POINTER, DIMENSION(:) :: XQIN_FRAD ! radiant fraction of internal heat gains 00090 REAL, POINTER, DIMENSION(:) :: XSHGC ! solar heat gain coef. of windows 00091 REAL, POINTER, DIMENSION(:) :: XSHGC_SH ! solar heat gain coef. of windows + shading 00092 REAL, POINTER, DIMENSION(:) :: XU_WIN ! window U-factor [K m W-2] 00093 REAL, POINTER, DIMENSION(:) :: XTRAN_WIN ! window transmittance (-) 00094 REAL, POINTER, DIMENSION(:) :: XGR ! glazing ratio 00095 REAL, POINTER, DIMENSION(:) :: XFLOOR_HEIGHT ! building floor height [m] 00096 REAL, POINTER, DIMENSION(:) :: XINF ! infiltration/ventilation flow rate [AC/H] 00097 ! 00098 ! New parameters 00099 ! 00100 REAL, POINTER, DIMENSION(:) :: XF_WATER_COND ! fraction of evaporation for condensers (cooling system) 00101 REAL, POINTER, DIMENSION(:) :: XAUX_MAX ! Auxiliar variable for autosize calcs 00102 REAL, POINTER, DIMENSION(:) :: XQIN_FLAT ! Latent franction of internal heat gains 00103 REAL, POINTER, DIMENSION(:) :: XHR_TARGET ! Relative humidity setpoint 00104 REAL, POINTER, DIMENSION(:) :: XT_WIN2 ! Indoor window temperature [K] 00105 REAL, POINTER, DIMENSION(:) :: XQI_BLD ! Indoor air specific humidity [kg kg-1] 00106 REAL, POINTER, DIMENSION(:) :: XV_VENT ! Ventilation flow rate [AC/H] 00107 REAL, POINTER, DIMENSION(:) :: XCAP_SYS_HEAT ! Capacity of the heating system 00108 ! [W m-2(bld)] 00109 REAL, POINTER, DIMENSION(:) :: XCAP_SYS_RAT ! Rated capacity of the cooling system 00110 ! [W m-2(bld)] 00111 REAL, POINTER, DIMENSION(:) :: XT_ADP ! Apparatus dewpoint temperature of the 00112 ! cooling coil [K] 00113 REAL, POINTER, DIMENSION(:) :: XM_SYS_RAT ! Rated HVAC mass flow rate 00114 ! [kg s-1 m-2(bld)] 00115 REAL, POINTER, DIMENSION(:) :: XCOP_RAT ! Rated COP of the cooling system 00116 REAL, POINTER, DIMENSION(:) :: XT_WIN1 ! outdoor window temperature [K] 00117 REAL, POINTER, DIMENSION(:) :: XALB_WIN ! window albedo 00118 REAL, POINTER, DIMENSION(:) :: XABS_WIN ! window absortance 00119 REAL, POINTER, DIMENSION(:) :: XT_SIZE_MAX ! Maximum outdoor air temperature for 00120 ! HVAC sizing [K] 00121 REAL, POINTER, DIMENSION(:) :: XT_SIZE_MIN ! Minimum outdoor air temperature for 00122 ! HVAC sizing [K] 00123 REAL, POINTER, DIMENSION(:) :: XUGG_WIN ! Window glass-to-glass U-factor [K m W-2] 00124 LOGICAL, POINTER, DIMENSION(:):: LSHADE ! flag to activate shading devices -> LOGICAL in the code 00125 REAL, POINTER, DIMENSION(:):: XSHADE ! flag to activate shading devices -> REAL for i/o 0. or 1. 00126 CHARACTER(LEN=4), POINTER, DIMENSION(:) :: CNATVENT ! flag to activate natural ventilation 'NONE', 'MANU', 'AUTO' 00127 REAL, POINTER, DIMENSION(:):: XNATVENT ! flag to describe surventilation system for i/o 00128 ! 0 for NONE, 1 for MANU and 2 for AUTO 00129 LOGICAL, POINTER, DIMENSION(:):: LSHAD_DAY !Has shading been necessary this day ? 00130 LOGICAL, POINTER, DIMENSION(:):: LNATVENT_NIGHT !Has nocturnal surventilation been necessary and possible this night ? 00131 ! 00132 !indoor relative surfaces and view factors 00133 REAL, POINTER, DIMENSION(:) :: XN_FLOOR ! Number of floors 00134 REAL, POINTER, DIMENSION(:) :: XGLAZ_O_BLD ! Window area [m2_win/m2_bld] 00135 REAL, POINTER, DIMENSION(:) :: XMASS_O_BLD ! Mass area [m2_mass/m2_bld] 00136 REAL, POINTER, DIMENSION(:) :: XFLOOR_HW_RATIO ! H/W ratio of 1 floor level 00137 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_MASS ! View factor floor-mass 00138 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_WALL ! View factor floor-wall 00139 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_WIN ! View factor floor-window 00140 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_ROOF ! View factor floor-roof 00141 REAL, POINTER, DIMENSION(:) :: XF_WALL_FLOOR ! View factor wall-floor 00142 REAL, POINTER, DIMENSION(:) :: XF_WALL_MASS ! View factor wall-mass 00143 REAL, POINTER, DIMENSION(:) :: XF_WALL_WIN ! View factor wall-win 00144 REAL, POINTER, DIMENSION(:) :: XF_WIN_FLOOR ! View factor win-floor 00145 REAL, POINTER, DIMENSION(:) :: XF_WIN_MASS ! View factor win-mass 00146 REAL, POINTER, DIMENSION(:) :: XF_WIN_WALL ! View factor win-wall 00147 REAL, POINTER, DIMENSION(:) :: XF_WIN_WIN ! indoor View factor win-win 00148 REAL, POINTER, DIMENSION(:) :: XF_MASS_FLOOR ! View factor mass-floor 00149 REAL, POINTER, DIMENSION(:) :: XF_MASS_WALL ! View factor mass-wall 00150 REAL, POINTER, DIMENSION(:) :: XF_MASS_WIN ! View factor mass-window 00151 00152 00153 ! 00154 END TYPE BEM_t 00155 00156 TYPE(BEM_t), ALLOCATABLE, TARGET, SAVE :: BEM_MODEL(:,:) 00157 00158 REAL, POINTER, DIMENSION(:,:) :: XHC_FLOOR=>NULL() 00159 !$OMP THREADPRIVATE(XHC_FLOOR) 00160 REAL, POINTER, DIMENSION(:,:) :: XTC_FLOOR=>NULL() 00161 !$OMP THREADPRIVATE(XTC_FLOOR) 00162 REAL, POINTER, DIMENSION(:,:) :: XD_FLOOR=>NULL() 00163 !$OMP THREADPRIVATE(XD_FLOOR) 00164 REAL, POINTER, DIMENSION(:) :: XTCOOL_TARGET=>NULL() 00165 !$OMP THREADPRIVATE(XTCOOL_TARGET) 00166 REAL, POINTER, DIMENSION(:) :: XTHEAT_TARGET=>NULL() 00167 !$OMP THREADPRIVATE(XTHEAT_TARGET) 00168 REAL, POINTER, DIMENSION(:) :: XTI_BLD=>NULL() 00169 !$OMP THREADPRIVATE(XTI_BLD) 00170 REAL, POINTER, DIMENSION(:,:) :: XT_FLOOR=>NULL() 00171 !$OMP THREADPRIVATE(XT_FLOOR) 00172 REAL, POINTER, DIMENSION(:) :: XQIN=>NULL() 00173 !$OMP THREADPRIVATE(XQIN) 00174 REAL, POINTER, DIMENSION(:) :: XQIN_FRAD=>NULL() 00175 !$OMP THREADPRIVATE(XQIN_FRAD) 00176 REAL, POINTER, DIMENSION(:) :: XSHGC=>NULL() 00177 !$OMP THREADPRIVATE(XSHGC) 00178 REAL, POINTER, DIMENSION(:) :: XSHGC_SH=>NULL() 00179 !$OMP THREADPRIVATE(XSHGC_SH) 00180 REAL, POINTER, DIMENSION(:) :: XU_WIN=>NULL() 00181 !$OMP THREADPRIVATE(XU_WIN) 00182 REAL, POINTER, DIMENSION(:) :: XTRAN_WIN=>NULL() 00183 !$OMP THREADPRIVATE(XTRAN_WIN) 00184 REAL, POINTER, DIMENSION(:) :: XGR=>NULL() 00185 !$OMP THREADPRIVATE(XGR) 00186 REAL, POINTER, DIMENSION(:) :: XFLOOR_HEIGHT=>NULL() 00187 !$OMP THREADPRIVATE(XFLOOR_HEIGHT) 00188 REAL, POINTER, DIMENSION(:) :: XEFF_HEAT=>NULL() 00189 !$OMP THREADPRIVATE(XEFF_HEAT) 00190 REAL, POINTER, DIMENSION(:) :: XINF=>NULL() 00191 !$OMP THREADPRIVATE(XINF) 00192 REAL, POINTER, DIMENSION(:,:) :: XT_MASS=>NULL() 00193 !$OMP THREADPRIVATE(XT_MASS) 00194 REAL, POINTER, DIMENSION(:) :: XF_WASTE_CAN=>NULL() 00195 !$OMP THREADPRIVATE(XF_WASTE_CAN) 00196 ! 00197 LOGICAL, POINTER, DIMENSION(:) :: LSHADE=>NULL() 00198 !$OMP THREADPRIVATE(LSHADE) 00199 REAL, POINTER, DIMENSION(:) :: XSHADE=>NULL() 00200 !$OMP THREADPRIVATE(XSHADE) 00201 CHARACTER(LEN=4), POINTER, DIMENSION(:) :: CNATVENT=>NULL() 00202 !$OMP THREADPRIVATE(CNATVENT) 00203 REAL, POINTER, DIMENSION(:) :: XNATVENT=>NULL() 00204 !$OMP THREADPRIVATE(XNATVENT) 00205 REAL, POINTER, DIMENSION(:) :: XF_WATER_COND=>NULL() 00206 !$OMP THREADPRIVATE(XF_WATER_COND) 00207 REAL, POINTER, DIMENSION(:) :: XAUX_MAX=>NULL() 00208 !$OMP THREADPRIVATE(XAUX_MAX) 00209 REAL, POINTER, DIMENSION(:) :: XQIN_FLAT=>NULL() 00210 !$OMP THREADPRIVATE(XQIN_FLAT) 00211 REAL, POINTER, DIMENSION(:) :: XHR_TARGET=>NULL() 00212 !$OMP THREADPRIVATE(XHR_TARGET) 00213 REAL, POINTER, DIMENSION(:) :: XT_WIN2=>NULL() 00214 !$OMP THREADPRIVATE(XT_WIN2) 00215 REAL, POINTER, DIMENSION(:) :: XQI_BLD=>NULL() 00216 !$OMP THREADPRIVATE(XQI_BLD) 00217 REAL, POINTER, DIMENSION(:) :: XV_VENT=>NULL() 00218 !$OMP THREADPRIVATE(XV_VENT) 00219 REAL, POINTER, DIMENSION(:) :: XCAP_SYS_HEAT=>NULL() 00220 !$OMP THREADPRIVATE(XCAP_SYS_HEAT) 00221 REAL, POINTER, DIMENSION(:) :: XCAP_SYS_RAT=>NULL() 00222 !$OMP THREADPRIVATE(XCAP_SYS_RAT) 00223 REAL, POINTER, DIMENSION(:) :: XT_ADP=>NULL() 00224 !$OMP THREADPRIVATE(XT_ADP) 00225 REAL, POINTER, DIMENSION(:) :: XM_SYS_RAT=>NULL() 00226 !$OMP THREADPRIVATE(XM_SYS_RAT) 00227 REAL, POINTER, DIMENSION(:) :: XCOP_RAT=>NULL() 00228 !$OMP THREADPRIVATE(XCOP_RAT) 00229 REAL, POINTER, DIMENSION(:) :: XT_WIN1=>NULL() 00230 !$OMP THREADPRIVATE(XT_WIN1) 00231 REAL, POINTER, DIMENSION(:) :: XALB_WIN=>NULL() 00232 !$OMP THREADPRIVATE(XALB_WIN) 00233 REAL, POINTER, DIMENSION(:) :: XABS_WIN=>NULL() 00234 !$OMP THREADPRIVATE(XABS_WIN) 00235 REAL, POINTER, DIMENSION(:) :: XT_SIZE_MAX=>NULL() 00236 !$OMP THREADPRIVATE(XT_SIZE_MAX) 00237 REAL, POINTER, DIMENSION(:) :: XT_SIZE_MIN=>NULL() 00238 !$OMP THREADPRIVATE(XT_SIZE_MIN) 00239 REAL, POINTER, DIMENSION(:) :: XUGG_WIN=>NULL() 00240 !$OMP THREADPRIVATE(XUGG_WIN) 00241 LOGICAL, POINTER, DIMENSION(:):: LSHAD_DAY=>NULL() 00242 !$OMP THREADPRIVATE(LSHAD_DAY) 00243 LOGICAL, POINTER, DIMENSION(:):: LNATVENT_NIGHT =>NULL() 00244 !$OMP THREADPRIVATE(LNATVENT_NIGHT) 00245 REAL, POINTER, DIMENSION(:) :: XN_FLOOR=> NULL() 00246 !$OMP THREADPRIVATE(XN_FLOOR) 00247 REAL, POINTER, DIMENSION(:) :: XGLAZ_O_BLD=> NULL() 00248 !$OMP THREADPRIVATE(XGLAZ_O_BLD) 00249 REAL, POINTER, DIMENSION(:) :: XMASS_O_BLD=> NULL() 00250 !$OMP THREADPRIVATE(XMASS_O_BLD) 00251 REAL, POINTER, DIMENSION(:) :: XFLOOR_HW_RATIO=> NULL() 00252 !$OMP THREADPRIVATE(XFLOOR_HW_RATIO) 00253 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_MASS=> NULL() 00254 !$OMP THREADPRIVATE(XF_FLOOR_MASS) 00255 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_WALL=> NULL() 00256 !$OMP THREADPRIVATE(XF_FLOOR_WALL) 00257 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_WIN=> NULL() 00258 !$OMP THREADPRIVATE(XF_FLOOR_WIN) 00259 REAL, POINTER, DIMENSION(:) :: XF_FLOOR_ROOF=> NULL() 00260 !$OMP THREADPRIVATE(XF_FLOOR_ROOF) 00261 REAL, POINTER, DIMENSION(:) :: XF_WALL_FLOOR=> NULL() 00262 !$OMP THREADPRIVATE(XF_WALL_FLOOR) 00263 REAL, POINTER, DIMENSION(:) :: XF_WALL_MASS=> NULL() 00264 !$OMP THREADPRIVATE(XF_WALL_MASS) 00265 REAL, POINTER, DIMENSION(:) :: XF_WALL_WIN=> NULL() 00266 !$OMP THREADPRIVATE(XF_WALL_WIN) 00267 REAL, POINTER, DIMENSION(:) :: XF_WIN_FLOOR=> NULL() 00268 !$OMP THREADPRIVATE(XF_WIN_FLOOR) 00269 REAL, POINTER, DIMENSION(:) :: XF_WIN_MASS=> NULL() 00270 !$OMP THREADPRIVATE(XF_WIN_MASS) 00271 REAL, POINTER, DIMENSION(:) :: XF_WIN_WALL=> NULL() 00272 !$OMP THREADPRIVATE(XF_WIN_WALL) 00273 REAL, POINTER, DIMENSION(:) :: XF_WIN_WIN=> NULL() 00274 !$OMP THREADPRIVATE(XF_WIN_WIN) 00275 REAL, POINTER, DIMENSION(:) :: XF_MASS_FLOOR=> NULL() 00276 !$OMP THREADPRIVATE(XF_MASS_FLOOR) 00277 REAL, POINTER, DIMENSION(:) :: XF_MASS_WALL=> NULL() 00278 !$OMP THREADPRIVATE(XF_MASS_WALL) 00279 REAL, POINTER, DIMENSION(:) :: XF_MASS_WIN=> NULL() 00280 !$OMP THREADPRIVATE(XF_MASS_WIN) 00281 00282 CONTAINS 00283 00284 SUBROUTINE BEM_OPTIONS_GOTO_MODEL(KFROM, KTO, LKFROM) 00285 LOGICAL, INTENT(IN) :: LKFROM 00286 INTEGER, INTENT(IN) :: KFROM, KTO 00287 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00288 ! 00289 ! Save current state for allocated arrays 00290 ! 00291 ! Current model is set to model KTO 00292 IF (LHOOK) CALL DR_HOOK('MODD_BEM_N:BEM_OPTIONS_GOTO_MODEL',0,ZHOOK_HANDLE) 00293 NFLOOR_LAYER=>BEM_OPTIONS_MODEL(KTO)%NFLOOR_LAYER 00294 CCOOL_COIL=>BEM_OPTIONS_MODEL(KTO)%CCOOL_COIL 00295 CHEAT_COIL=>BEM_OPTIONS_MODEL(KTO)%CHEAT_COIL 00296 LAUTOSIZE=>BEM_OPTIONS_MODEL(KTO)%LAUTOSIZE 00297 IF (LHOOK) CALL DR_HOOK('MODD_BEM_N:BEM_OPTIONS_GOTO_MODEL',1,ZHOOK_HANDLE) 00298 00299 END SUBROUTINE BEM_OPTIONS_GOTO_MODEL 00300 00301 SUBROUTINE BEM_OPTIONS_ALLOC(KMODEL) 00302 INTEGER, INTENT(IN) :: KMODEL 00303 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00304 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_OPTIONS_ALLOC",0,ZHOOK_HANDLE) 00305 ALLOCATE(BEM_OPTIONS_MODEL(KMODEL)) 00306 BEM_OPTIONS_MODEL(:)%NFLOOR_LAYER = 0 00307 BEM_OPTIONS_MODEL(:)%CCOOL_COIL = ' ' 00308 BEM_OPTIONS_MODEL(:)%CHEAT_COIL = ' ' 00309 BEM_OPTIONS_MODEL(:)%LAUTOSIZE = .FALSE. 00310 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_OPTIONS_ALLOC",1,ZHOOK_HANDLE) 00311 END SUBROUTINE BEM_OPTIONS_ALLOC 00312 00313 SUBROUTINE BEM_OPTIONS_DEALLO 00314 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00315 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_OPTIONS_DEALLO",0,ZHOOK_HANDLE) 00316 IF (ALLOCATED(BEM_OPTIONS_MODEL)) DEALLOCATE(BEM_OPTIONS_MODEL) 00317 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_OPTIONS_DEALLO",1,ZHOOK_HANDLE) 00318 END SUBROUTINE BEM_OPTIONS_DEALLO 00319 00320 !---------------------------------------------------------------------------- 00321 00322 SUBROUTINE BEM_GOTO_MODEL(KFROM, KTO, LKFROM, KFROM_PATCH, KTO_PATCH) 00323 INTEGER, INTENT(IN) :: KFROM, KTO 00324 LOGICAL, INTENT(IN) :: LKFROM 00325 INTEGER, INTENT(IN) :: KFROM_PATCH, KTO_PATCH 00326 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00327 ! 00328 ! Save current state for allocated arrays 00329 IF (LKFROM) THEN 00330 BEM_MODEL(KFROM,KFROM_PATCH)%LSHADE=>LSHADE 00331 BEM_MODEL(KFROM,KFROM_PATCH)%XSHADE=>XSHADE 00332 BEM_MODEL(KFROM,KFROM_PATCH)%CNATVENT=>CNATVENT 00333 BEM_MODEL(KFROM,KFROM_PATCH)%XNATVENT=>XNATVENT 00334 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WATER_COND=>XF_WATER_COND 00335 BEM_MODEL(KFROM,KFROM_PATCH)%XHC_FLOOR=>XHC_FLOOR 00336 BEM_MODEL(KFROM,KFROM_PATCH)%XTC_FLOOR=>XTC_FLOOR 00337 BEM_MODEL(KFROM,KFROM_PATCH)%XD_FLOOR=>XD_FLOOR 00338 BEM_MODEL(KFROM,KFROM_PATCH)%XTCOOL_TARGET=>XTCOOL_TARGET 00339 BEM_MODEL(KFROM,KFROM_PATCH)%XTHEAT_TARGET=>XTHEAT_TARGET 00340 BEM_MODEL(KFROM,KFROM_PATCH)%XTI_BLD=>XTI_BLD 00341 BEM_MODEL(KFROM,KFROM_PATCH)%XT_FLOOR=>XT_FLOOR 00342 BEM_MODEL(KFROM,KFROM_PATCH)%XT_MASS=>XT_MASS 00343 BEM_MODEL(KFROM,KFROM_PATCH)%XQIN=>XQIN 00344 BEM_MODEL(KFROM,KFROM_PATCH)%XQIN_FRAD=>XQIN_FRAD 00345 BEM_MODEL(KFROM,KFROM_PATCH)%XSHGC=>XSHGC 00346 BEM_MODEL(KFROM,KFROM_PATCH)%XSHGC_SH=>XSHGC_SH 00347 BEM_MODEL(KFROM,KFROM_PATCH)%XU_WIN=>XU_WIN 00348 BEM_MODEL(KFROM,KFROM_PATCH)%XTRAN_WIN=>XTRAN_WIN 00349 BEM_MODEL(KFROM,KFROM_PATCH)%XGR=>XGR 00350 BEM_MODEL(KFROM,KFROM_PATCH)%XFLOOR_HEIGHT=>XFLOOR_HEIGHT 00351 BEM_MODEL(KFROM,KFROM_PATCH)%XEFF_HEAT=>XEFF_HEAT 00352 BEM_MODEL(KFROM,KFROM_PATCH)%XINF=>XINF 00353 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WASTE_CAN=>XF_WASTE_CAN 00354 ! 00355 BEM_MODEL(KFROM,KFROM_PATCH)%XAUX_MAX=>XAUX_MAX 00356 BEM_MODEL(KFROM,KFROM_PATCH)%XQIN_FLAT=>XQIN_FLAT 00357 BEM_MODEL(KFROM,KFROM_PATCH)%XHR_TARGET=>XHR_TARGET 00358 BEM_MODEL(KFROM,KFROM_PATCH)%XT_WIN2=>XT_WIN2 00359 BEM_MODEL(KFROM,KFROM_PATCH)%XQI_BLD=>XQI_BLD 00360 BEM_MODEL(KFROM,KFROM_PATCH)%XV_VENT=>XV_VENT 00361 BEM_MODEL(KFROM,KFROM_PATCH)%XCAP_SYS_HEAT=>XCAP_SYS_HEAT 00362 BEM_MODEL(KFROM,KFROM_PATCH)%XCAP_SYS_RAT=>XCAP_SYS_RAT 00363 BEM_MODEL(KFROM,KFROM_PATCH)%XT_ADP=>XT_ADP 00364 BEM_MODEL(KFROM,KFROM_PATCH)%XM_SYS_RAT=>XM_SYS_RAT 00365 BEM_MODEL(KFROM,KFROM_PATCH)%XCOP_RAT=>XCOP_RAT 00366 BEM_MODEL(KFROM,KFROM_PATCH)%XT_WIN1=>XT_WIN1 00367 BEM_MODEL(KFROM,KFROM_PATCH)%XALB_WIN=>XALB_WIN 00368 BEM_MODEL(KFROM,KFROM_PATCH)%XABS_WIN=>XABS_WIN 00369 BEM_MODEL(KFROM,KFROM_PATCH)%XT_SIZE_MAX=>XT_SIZE_MAX 00370 BEM_MODEL(KFROM,KFROM_PATCH)%XT_SIZE_MIN=>XT_SIZE_MIN 00371 BEM_MODEL(KFROM,KFROM_PATCH)%XUGG_WIN=>XUGG_WIN 00372 BEM_MODEL(KFROM,KFROM_PATCH)%LSHAD_DAY=>LSHAD_DAY 00373 BEM_MODEL(KFROM,KFROM_PATCH)%LNATVENT_NIGHT=>LNATVENT_NIGHT 00374 ! 00375 BEM_MODEL(KFROM,KFROM_PATCH)%XN_FLOOR=>XN_FLOOR 00376 BEM_MODEL(KFROM,KFROM_PATCH)%XGLAZ_O_BLD=>XGLAZ_O_BLD 00377 BEM_MODEL(KFROM,KFROM_PATCH)%XMASS_O_BLD=>XMASS_O_BLD 00378 BEM_MODEL(KFROM,KFROM_PATCH)%XFLOOR_HW_RATIO=>XFLOOR_HW_RATIO 00379 BEM_MODEL(KFROM,KFROM_PATCH)%XF_FLOOR_MASS=>XF_FLOOR_MASS 00380 BEM_MODEL(KFROM,KFROM_PATCH)%XF_FLOOR_WALL=>XF_FLOOR_WALL 00381 BEM_MODEL(KFROM,KFROM_PATCH)%XF_FLOOR_WIN=>XF_FLOOR_WIN 00382 BEM_MODEL(KFROM,KFROM_PATCH)%XF_FLOOR_ROOF=>XF_FLOOR_ROOF 00383 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WALL_FLOOR=>XF_WALL_FLOOR 00384 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WALL_MASS=>XF_WALL_MASS 00385 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WALL_WIN=>XF_WALL_WIN 00386 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WIN_FLOOR=>XF_WIN_FLOOR 00387 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WIN_MASS=>XF_WIN_MASS 00388 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WIN_WALL=>XF_WIN_WALL 00389 BEM_MODEL(KFROM,KFROM_PATCH)%XF_WIN_WIN=>XF_WIN_WIN 00390 BEM_MODEL(KFROM,KFROM_PATCH)%XF_MASS_FLOOR=>XF_MASS_FLOOR 00391 BEM_MODEL(KFROM,KFROM_PATCH)%XF_MASS_WALL=>XF_MASS_WALL 00392 BEM_MODEL(KFROM,KFROM_PATCH)%XF_MASS_WIN=>XF_MASS_WIN 00393 ENDIF 00394 ! 00395 IF (LHOOK) CALL DR_HOOK('MODD_BEM_N:BEM_GOTO_MODEL',0,ZHOOK_HANDLE) 00396 ! 00397 XHC_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XHC_FLOOR 00398 XTC_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XTC_FLOOR 00399 XD_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XD_FLOOR 00400 XTCOOL_TARGET=>BEM_MODEL(KTO,KTO_PATCH)%XTCOOL_TARGET 00401 XTHEAT_TARGET=>BEM_MODEL(KTO,KTO_PATCH)%XTHEAT_TARGET 00402 XTI_BLD=>BEM_MODEL(KTO,KTO_PATCH)%XTI_BLD 00403 XT_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XT_FLOOR 00404 XT_MASS=>BEM_MODEL(KTO,KTO_PATCH)%XT_MASS 00405 XQIN=>BEM_MODEL(KTO,KTO_PATCH)%XQIN 00406 XQIN_FRAD=>BEM_MODEL(KTO,KTO_PATCH)%XQIN_FRAD 00407 XSHGC=>BEM_MODEL(KTO,KTO_PATCH)%XSHGC 00408 XSHGC_SH=>BEM_MODEL(KTO,KTO_PATCH)%XSHGC_SH 00409 XU_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XU_WIN 00410 XTRAN_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XTRAN_WIN 00411 XGR=>BEM_MODEL(KTO,KTO_PATCH)%XGR 00412 XFLOOR_HEIGHT=>BEM_MODEL(KTO,KTO_PATCH)%XFLOOR_HEIGHT 00413 XEFF_HEAT=>BEM_MODEL(KTO,KTO_PATCH)%XEFF_HEAT 00414 XINF=>BEM_MODEL(KTO,KTO_PATCH)%XINF 00415 XF_WASTE_CAN=>BEM_MODEL(KTO,KTO_PATCH)%XF_WASTE_CAN 00416 ! 00417 LSHADE=>BEM_MODEL(KTO,KTO_PATCH)%LSHADE 00418 XSHADE=>BEM_MODEL(KTO,KTO_PATCH)%XSHADE 00419 CNATVENT=>BEM_MODEL(KTO,KTO_PATCH)%CNATVENT 00420 XNATVENT=>BEM_MODEL(KTO,KTO_PATCH)%XNATVENT 00421 XF_WATER_COND=>BEM_MODEL(KTO,KTO_PATCH)%XF_WATER_COND 00422 XAUX_MAX=>BEM_MODEL(KTO,KTO_PATCH)%XAUX_MAX 00423 XQIN_FLAT=>BEM_MODEL(KTO,KTO_PATCH)%XQIN_FLAT 00424 XHR_TARGET=>BEM_MODEL(KTO,KTO_PATCH)%XHR_TARGET 00425 XT_WIN2=>BEM_MODEL(KTO,KTO_PATCH)%XT_WIN2 00426 XQI_BLD=>BEM_MODEL(KTO,KTO_PATCH)%XQI_BLD 00427 XV_VENT=>BEM_MODEL(KTO,KTO_PATCH)%XV_VENT 00428 XCAP_SYS_HEAT=>BEM_MODEL(KTO,KTO_PATCH)%XCAP_SYS_HEAT 00429 XCAP_SYS_RAT=>BEM_MODEL(KTO,KTO_PATCH)%XCAP_SYS_RAT 00430 XT_ADP=>BEM_MODEL(KTO,KTO_PATCH)%XT_ADP 00431 XM_SYS_RAT=>BEM_MODEL(KTO,KTO_PATCH)%XM_SYS_RAT 00432 XCOP_RAT=>BEM_MODEL(KTO,KTO_PATCH)%XCOP_RAT 00433 XT_WIN1=>BEM_MODEL(KTO,KTO_PATCH)%XT_WIN1 00434 XALB_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XALB_WIN 00435 XABS_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XABS_WIN 00436 XT_SIZE_MAX=>BEM_MODEL(KTO,KTO_PATCH)%XT_SIZE_MAX 00437 XT_SIZE_MIN=>BEM_MODEL(KTO,KTO_PATCH)%XT_SIZE_MIN 00438 XUGG_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XUGG_WIN 00439 LSHAD_DAY=>BEM_MODEL(KTO,KTO_PATCH)%LSHAD_DAY 00440 LNATVENT_NIGHT=>BEM_MODEL(KTO,KTO_PATCH)%LNATVENT_NIGHT 00441 ! 00442 XN_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XN_FLOOR 00443 XGLAZ_O_BLD=>BEM_MODEL(KTO,KTO_PATCH)%XGLAZ_O_BLD 00444 XMASS_O_BLD=>BEM_MODEL(KTO,KTO_PATCH)%XMASS_O_BLD 00445 XFLOOR_HW_RATIO=>BEM_MODEL(KTO,KTO_PATCH)%XFLOOR_HW_RATIO 00446 XF_FLOOR_MASS=>BEM_MODEL(KTO,KTO_PATCH)%XF_FLOOR_MASS 00447 XF_FLOOR_WALL=>BEM_MODEL(KTO,KTO_PATCH)%XF_FLOOR_WALL 00448 XF_FLOOR_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XF_FLOOR_WIN 00449 XF_FLOOR_ROOF=>BEM_MODEL(KTO,KTO_PATCH)%XF_FLOOR_ROOF 00450 XF_WALL_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XF_WALL_FLOOR 00451 XF_WALL_MASS=>BEM_MODEL(KTO,KTO_PATCH)%XF_WALL_MASS 00452 XF_WALL_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XF_WALL_WIN 00453 XF_WIN_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XF_WIN_FLOOR 00454 XF_WIN_MASS=>BEM_MODEL(KTO,KTO_PATCH)%XF_WIN_MASS 00455 XF_WIN_WALL=>BEM_MODEL(KTO,KTO_PATCH)%XF_WIN_WALL 00456 XF_WIN_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XF_WIN_WIN 00457 XF_MASS_FLOOR=>BEM_MODEL(KTO,KTO_PATCH)%XF_MASS_FLOOR 00458 XF_MASS_WALL=>BEM_MODEL(KTO,KTO_PATCH)%XF_MASS_WALL 00459 XF_MASS_WIN=>BEM_MODEL(KTO,KTO_PATCH)%XF_MASS_WIN 00460 ! 00461 IF (LHOOK) CALL DR_HOOK('MODD_BEM_N:BEM_GOTO_MODEL',1,ZHOOK_HANDLE) 00462 ! 00463 END SUBROUTINE BEM_GOTO_MODEL 00464 ! 00465 ! 00466 SUBROUTINE BEM_ALLOC(KMODEL,KPATCH) 00467 INTEGER, INTENT(IN) :: KMODEL 00468 INTEGER, INTENT(IN) :: KPATCH 00469 INTEGER :: J,JP 00470 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00471 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_ALLOC",0,ZHOOK_HANDLE) 00472 ALLOCATE(BEM_MODEL(KMODEL,KPATCH)) 00473 DO J=1,KMODEL 00474 DO JP=1,KPATCH 00475 NULLIFY(BEM_MODEL(J,JP)%XF_WATER_COND) 00476 NULLIFY(BEM_MODEL(J,JP)%XHC_FLOOR) 00477 NULLIFY(BEM_MODEL(J,JP)%XTC_FLOOR) 00478 NULLIFY(BEM_MODEL(J,JP)%XD_FLOOR) 00479 NULLIFY(BEM_MODEL(J,JP)%XTCOOL_TARGET) 00480 NULLIFY(BEM_MODEL(J,JP)%XTHEAT_TARGET) 00481 NULLIFY(BEM_MODEL(J,JP)%XTI_BLD) 00482 NULLIFY(BEM_MODEL(J,JP)%XT_FLOOR) 00483 NULLIFY(BEM_MODEL(J,JP)%XT_MASS) 00484 NULLIFY(BEM_MODEL(J,JP)%XQIN) 00485 NULLIFY(BEM_MODEL(J,JP)%XQIN_FRAD) 00486 NULLIFY(BEM_MODEL(J,JP)%XSHGC) 00487 NULLIFY(BEM_MODEL(J,JP)%XSHGC_SH) 00488 NULLIFY(BEM_MODEL(J,JP)%XU_WIN) 00489 NULLIFY(BEM_MODEL(J,JP)%XTRAN_WIN) 00490 NULLIFY(BEM_MODEL(J,JP)%XGR) 00491 NULLIFY(BEM_MODEL(J,JP)%XFLOOR_HEIGHT) 00492 NULLIFY(BEM_MODEL(J,JP)%XEFF_HEAT) 00493 NULLIFY(BEM_MODEL(J,JP)%XINF) 00494 NULLIFY(BEM_MODEL(J,JP)%XF_WASTE_CAN) 00495 NULLIFY(BEM_MODEL(J,JP)%XAUX_MAX) 00496 NULLIFY(BEM_MODEL(J,JP)%XQIN_FLAT) 00497 NULLIFY(BEM_MODEL(J,JP)%XHR_TARGET) 00498 NULLIFY(BEM_MODEL(J,JP)%XT_WIN2) 00499 NULLIFY(BEM_MODEL(J,JP)%XQI_BLD) 00500 NULLIFY(BEM_MODEL(J,JP)%XV_VENT) 00501 NULLIFY(BEM_MODEL(J,JP)%XCAP_SYS_HEAT) 00502 NULLIFY(BEM_MODEL(J,JP)%XCAP_SYS_RAT) 00503 NULLIFY(BEM_MODEL(J,JP)%XT_ADP) 00504 NULLIFY(BEM_MODEL(J,JP)%XM_SYS_RAT) 00505 NULLIFY(BEM_MODEL(J,JP)%XCOP_RAT) 00506 NULLIFY(BEM_MODEL(J,JP)%XT_WIN1) 00507 NULLIFY(BEM_MODEL(J,JP)%XALB_WIN) 00508 NULLIFY(BEM_MODEL(J,JP)%XABS_WIN) 00509 NULLIFY(BEM_MODEL(J,JP)%XT_SIZE_MAX) 00510 NULLIFY(BEM_MODEL(J,JP)%XT_SIZE_MIN) 00511 NULLIFY(BEM_MODEL(J,JP)%XUGG_WIN) 00512 NULLIFY(BEM_MODEL(J,JP)%LSHAD_DAY) 00513 NULLIFY(BEM_MODEL(J,JP)%LNATVENT_NIGHT) 00514 NULLIFY(BEM_MODEL(J,JP)%LSHADE) 00515 NULLIFY(BEM_MODEL(J,JP)%XSHADE) 00516 NULLIFY(BEM_MODEL(J,JP)%CNATVENT) 00517 NULLIFY(BEM_MODEL(J,JP)%XNATVENT) 00518 NULLIFY(BEM_MODEL(J,JP)%XN_FLOOR) 00519 NULLIFY(BEM_MODEL(J,JP)%XGLAZ_O_BLD) 00520 NULLIFY(BEM_MODEL(J,JP)%XMASS_O_BLD) 00521 NULLIFY(BEM_MODEL(J,JP)%XFLOOR_HW_RATIO) 00522 NULLIFY(BEM_MODEL(J,JP)%XF_FLOOR_MASS) 00523 NULLIFY(BEM_MODEL(J,JP)%XF_FLOOR_WALL) 00524 NULLIFY(BEM_MODEL(J,JP)%XF_FLOOR_WIN) 00525 NULLIFY(BEM_MODEL(J,JP)%XF_FLOOR_ROOF) 00526 NULLIFY(BEM_MODEL(J,JP)%XF_WALL_FLOOR) 00527 NULLIFY(BEM_MODEL(J,JP)%XF_WALL_MASS) 00528 NULLIFY(BEM_MODEL(J,JP)%XF_WALL_WIN) 00529 NULLIFY(BEM_MODEL(J,JP)%XF_WIN_FLOOR) 00530 NULLIFY(BEM_MODEL(J,JP)%XF_WIN_MASS) 00531 NULLIFY(BEM_MODEL(J,JP)%XF_WIN_WALL) 00532 NULLIFY(BEM_MODEL(J,JP)%XF_WIN_WIN) 00533 NULLIFY(BEM_MODEL(J,JP)%XF_MASS_FLOOR) 00534 NULLIFY(BEM_MODEL(J,JP)%XF_MASS_WALL) 00535 NULLIFY(BEM_MODEL(J,JP)%XF_MASS_WIN) 00536 ENDDO 00537 ENDDO 00538 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_ALLOC",1,ZHOOK_HANDLE) 00539 END SUBROUTINE BEM_ALLOC 00540 ! 00541 SUBROUTINE BEM_DEALLO 00542 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00543 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_DEALLO",0,ZHOOK_HANDLE) 00544 IF (ALLOCATED(BEM_MODEL)) DEALLOCATE(BEM_MODEL) 00545 IF (LHOOK) CALL DR_HOOK("MODD_BEM_N:BEM_DEALLO",1,ZHOOK_HANDLE) 00546 END SUBROUTINE BEM_DEALLO 00547 ! 00548 END MODULE MODD_BEM_n
1.8.0