SURFEX v7.3
General documentation of Surfex
|
00001 ! ############################################################# 00002 SUBROUTINE INIT_BEM_n(KLUOUT) 00003 ! ############################################################# 00004 ! 00005 !!**** *INIT_BEM_n* - routine to initialize Building Energy Model 00006 !! 00007 !! PURPOSE 00008 !! ------- 00009 !! 00010 !!** METHOD 00011 !! ------ 00012 !! 00013 !! EXTERNAL 00014 !! -------- 00015 !! 00016 !! 00017 !! IMPLICIT ARGUMENTS 00018 !! ------------------ 00019 !! 00020 !! REFERENCE 00021 !! --------- 00022 !! 00023 !! 00024 !! AUTHOR 00025 !! ------ 00026 !! G. Pigeon *Meteo France* 00027 !! 00028 !! MODIFICATIONS 00029 !! ------------- 00030 !! Original 04/2012 00031 !------------------------------------------------------------------------------- 00032 ! 00033 !* 0. DECLARATIONS 00034 ! ------------ 00035 ! 00036 USE MODD_TEB_n, ONLY: XCOVER, XBLD, XBLD_HEIGHT, XWALL_O_HOR, XWALL_O_BLD, CBEM 00037 USE MODD_BEM_n, ONLY: NFLOOR_LAYER, XHC_FLOOR, XTC_FLOOR, XD_FLOOR, & 00038 XTCOOL_TARGET, XTHEAT_TARGET, XF_WASTE_CAN, XEFF_HEAT, & 00039 XQIN, XQIN_FRAD, XSHGC, XSHGC_SH, XU_WIN, XGR, & 00040 XFLOOR_HEIGHT, XINF, XQIN_FLAT, XHR_TARGET, XV_VENT, & 00041 XCAP_SYS_HEAT, XAUX_MAX, XCAP_SYS_RAT, XT_ADP, & 00042 XM_SYS_RAT, XCOP_RAT, XT_SIZE_MAX, XT_SIZE_MIN, & 00043 CCOOL_COIL, CHEAT_COIL, XF_WATER_COND, LSHAD_DAY, & 00044 LNATVENT_NIGHT, LSHADE, XSHADE, CNATVENT, XNATVENT, & 00045 LAUTOSIZE, XT_WIN1, XALB_WIN, XABS_WIN, XUGG_WIN, & 00046 XN_FLOOR, XGLAZ_O_BLD, XMASS_O_BLD, XFLOOR_HW_RATIO, & 00047 XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN, & 00048 XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS, & 00049 XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL, & 00050 XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, XTRAN_WIN, & 00051 XF_WIN_WIN 00052 ! 00053 ! 00054 USE MODI_CONVERT_PATCH_TEB 00055 USE MODI_WINDOW_DATA 00056 USE MODI_HVAC_AUTOSIZE 00057 USE MODI_BEM_MORPHO 00058 USE MODI_STORES_HVAC_AUTOSIZE 00059 ! 00060 USE MODI_ABOR1_SFX 00061 ! 00062 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00063 USE PARKIND1 ,ONLY : JPRB 00064 ! 00065 IMPLICIT NONE 00066 ! 00067 !* 0.1 Declarations of arguments 00068 ! ------------------------- 00069 ! 00070 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing 00071 ! 00072 !* 0.2 Declarations of local variables 00073 ! ------------------------------- 00074 ! 00075 INTEGER :: JJ ! counter 00076 INTEGER :: ILU ! sizes of TEB arrays 00077 ! 00078 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00079 !------------------------------------------------------------------------------- 00080 ! 00081 ! Initialisation for IO 00082 ! 00083 00084 IF (LHOOK) CALL DR_HOOK('INIT_BEM_N',0,ZHOOK_HANDLE) 00085 ! 00086 ! 00087 !* 3. Physiographic data fields from land cover: 00088 ! ----------------------------------------- 00089 ! 00090 ILU = SIZE(XCOVER,1) 00091 IF (CBEM=='DEF') ILU=0 00092 ! 00093 ALLOCATE(XHC_FLOOR (ILU,NFLOOR_LAYER)) 00094 ALLOCATE(XTC_FLOOR (ILU,NFLOOR_LAYER)) 00095 ALLOCATE(XD_FLOOR (ILU,NFLOOR_LAYER)) 00096 ! 00097 ALLOCATE(XTCOOL_TARGET(ILU)) 00098 ALLOCATE(XTHEAT_TARGET(ILU)) 00099 ALLOCATE(XEFF_HEAT (ILU)) 00100 ALLOCATE(XSHGC (ILU)) 00101 ALLOCATE(XQIN (ILU)) 00102 ALLOCATE(XQIN_FRAD (ILU)) 00103 ALLOCATE(XSHGC_SH (ILU)) 00104 ALLOCATE(XU_WIN (ILU)) 00105 ALLOCATE(XTRAN_WIN (ILU)) 00106 ALLOCATE(XFLOOR_HEIGHT(ILU)) 00107 ALLOCATE(XINF (ILU)) 00108 ! 00109 ALLOCATE(XQIN_FLAT (ILU)) 00110 ALLOCATE(XHR_TARGET (ILU)) 00111 ALLOCATE(XV_VENT (ILU)) 00112 ALLOCATE(XCAP_SYS_HEAT(ILU)) 00113 ALLOCATE(XCAP_SYS_RAT (ILU)) 00114 ALLOCATE(XT_ADP (ILU)) 00115 ALLOCATE(XM_SYS_RAT (ILU)) 00116 ALLOCATE(XCOP_RAT (ILU)) 00117 ALLOCATE(XT_SIZE_MAX (ILU)) 00118 ALLOCATE(XT_SIZE_MIN (ILU)) 00119 ALLOCATE(XF_WATER_COND(ILU)) 00120 ALLOCATE(CNATVENT (ILU)) 00121 ALLOCATE(XNATVENT (ILU)) 00122 ! 00123 ALLOCATE(XABS_WIN (ILU)) 00124 ALLOCATE(XUGG_WIN (ILU)) 00125 ALLOCATE(LSHADE (ILU)) 00126 ALLOCATE(XSHADE (ILU)) 00127 ALLOCATE(LSHAD_DAY(ILU)) 00128 ALLOCATE(LNATVENT_NIGHT(ILU)) 00129 ALLOCATE(XAUX_MAX (ILU)) 00130 ALLOCATE(XN_FLOOR(ILU)) 00131 ALLOCATE(XGLAZ_O_BLD(ILU)) 00132 ALLOCATE(XMASS_O_BLD(ILU)) 00133 ALLOCATE(XFLOOR_HW_RATIO(ILU)) 00134 ALLOCATE(XF_FLOOR_MASS(ILU)) 00135 ALLOCATE(XF_FLOOR_WALL(ILU)) 00136 ALLOCATE(XF_FLOOR_WIN(ILU)) 00137 ALLOCATE(XF_FLOOR_ROOF(ILU)) 00138 ALLOCATE(XF_WALL_FLOOR(ILU)) 00139 ALLOCATE(XF_WALL_MASS(ILU)) 00140 ALLOCATE(XF_WALL_WIN(ILU)) 00141 ALLOCATE(XF_WIN_FLOOR(ILU)) 00142 ALLOCATE(XF_WIN_MASS(ILU)) 00143 ALLOCATE(XF_WIN_WALL(ILU)) 00144 ALLOCATE(XF_WIN_WIN(ILU)) 00145 ALLOCATE(XF_MASS_FLOOR(ILU)) 00146 ALLOCATE(XF_MASS_WALL(ILU)) 00147 ALLOCATE(XF_MASS_WIN(ILU)) 00148 00149 SELECT CASE(CBEM) 00150 !---------- 00151 CASE("DEF") 00152 !----------- 00153 !parameters that needs to be 0 for calculation 00154 XGR (:) = 0. 00155 XF_WASTE_CAN(:) = 0. 00156 !---------- 00157 CASE("BEM") 00158 !---------- 00159 00160 XAUX_MAX(:) = 5. 00161 CALL CONVERT_PATCH_TEB(XCOVER,0., & 00162 PHC_FLOOR=XHC_FLOOR, PTC_FLOOR=XTC_FLOOR, PD_FLOOR=XD_FLOOR, & 00163 PTCOOL_TARGET=XTCOOL_TARGET, PTHEAT_TARGET=XTHEAT_TARGET, & 00164 PF_WASTE_CAN=XF_WASTE_CAN, PEFF_HEAT=XEFF_HEAT, PQIN=XQIN, & 00165 PQIN_FRAD=XQIN_FRAD, PSHGC=XSHGC, PU_WIN=XU_WIN, PGR=XGR, & 00166 PSHGC_SH=XSHGC_SH, PFLOOR_HEIGHT=XFLOOR_HEIGHT, PINF=XINF, & 00167 PF_WATER_COND=XF_WATER_COND, PQIN_FLAT=XQIN_FLAT, & 00168 PHR_TARGET=XHR_TARGET, PV_VENT=XV_VENT, & 00169 PCAP_SYS_HEAT=XCAP_SYS_HEAT, PCAP_SYS_RAT=XCAP_SYS_RAT, & 00170 PT_ADP=XT_ADP, PM_SYS_RAT=XM_SYS_RAT, PCOP_RAT=XCOP_RAT, & 00171 PT_SIZE_MAX=XT_SIZE_MAX, PT_SIZE_MIN=XT_SIZE_MIN, & 00172 PSHADE=XSHADE, PNATVENT=XNATVENT) 00173 ! 00174 ! 00175 ! *. indoor relative surf. and view factors 00176 ! -------------------------------------- 00177 ! 00178 CALL BEM_MORPHO(XBLD, XWALL_O_HOR, XBLD_HEIGHT, XFLOOR_HEIGHT, XGR, & 00179 XN_FLOOR, XWALL_O_BLD, XGLAZ_O_BLD, XMASS_O_BLD, & 00180 XFLOOR_HW_RATIO, XF_FLOOR_MASS, XF_FLOOR_WALL, XF_FLOOR_WIN,& 00181 XF_FLOOR_ROOF, XF_WALL_FLOOR, XF_WALL_MASS, & 00182 XF_WALL_WIN, XF_WIN_FLOOR, XF_WIN_MASS, XF_WIN_WALL, & 00183 XF_MASS_FLOOR, XF_MASS_WALL, XF_MASS_WIN, XF_WASTE_CAN, & 00184 XF_WIN_WIN ) 00185 ! 00186 ! *. Window optical and thermal data 00187 ! ------------------------------- 00188 ! 00189 CALL WINDOW_DATA(ILU) 00190 DO JJ=1,SIZE(XSHADE) 00191 IF (XSHADE(JJ) >= 0.0 .AND. XSHADE(JJ) < 0.5) THEN 00192 LSHADE(JJ) = .FALSE. 00193 ELSEIF (XSHADE(JJ) >= 0.5 .AND. XSHADE(JJ) <= 1.0) THEN 00194 LSHADE(JJ) = .TRUE. 00195 ELSE 00196 PRINT*,'ERROR INTRODUCING SHADE' 00197 ENDIF 00198 ENDDO 00199 LSHAD_DAY(:) = .FALSE. 00200 ! 00201 ! *. Nocturnal surventilation 00202 ! ------------------------ 00203 DO JJ=1,SIZE(XNATVENT) 00204 IF (XNATVENT(JJ) >= 0.0 .AND. XNATVENT(JJ) < 0.5) THEN 00205 CNATVENT(JJ) = 'NONE' 00206 ELSEIF (XNATVENT(JJ) >= 0.5 .AND. XNATVENT(JJ) < 1.5) THEN 00207 CNATVENT(JJ) = 'MANU' 00208 ELSEIF (XNATVENT(JJ) >= 1.5 .AND. XNATVENT(JJ) <= 2.) THEN 00209 CNATVENT(JJ) = 'AUTO' 00210 ELSE 00211 PRINT*,'ERROR INTRODUCING NATVENT' 00212 ENDIF 00213 ENDDO 00214 00215 LNATVENT_NIGHT(:) = .FALSE. 00216 ! 00217 END SELECT 00218 ! 00219 !------------------------------------------------------------------------------- 00220 ! 00221 !* 8. Building HVAC automatic sizing: 00222 ! ------------------------------- 00223 IF (CBEM=='BEM' .AND. LAUTOSIZE) THEN 00224 CALL HVAC_AUTOSIZE(ILU,KLUOUT) 00225 !* stores the real systems characteristics in physiographic data 00226 ! for further use 00227 CALL STORES_HVAC_AUTOSIZE 00228 ENDIF 00229 ! 00230 !------------------------------------------------------------------------------- 00231 ! 00232 ! 00233 IF (LHOOK) CALL DR_HOOK('INIT_BEM_N',1,ZHOOK_HANDLE) 00234 ! 00235 ! 00236 END SUBROUTINE INIT_BEM_n