SURFEX v7.3
General documentation of Surfex
 All Classes Files Functions Variables Typedefs
/home/dasprezs/EXPORT_v7_3/src/SURFEX/init_bemn.F90
Go to the documentation of this file.
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