|
SURFEX v7.3
General documentation of Surfex
|
00001 !##################################################################### 00002 SUBROUTINE BEM_MORPHO(PBLD, PWALL_O_HOR, PBLD_HEIGHT, PFLOOR_HEIGHT, & 00003 PGR, PN_FLOOR, PWALL_O_BLD, PGLAZ_O_BLD, PMASS_O_BLD, & 00004 PFLOOR_HW_RATIO, & 00005 PF_FLOOR_MASS, PF_FLOOR_WALL, PF_FLOOR_WIN, & 00006 PF_FLOOR_ROOF, PF_WALL_FLOOR, PF_WALL_MASS, & 00007 PF_WALL_WIN, PF_WIN_FLOOR, PF_WIN_MASS, PF_WIN_WALL, & 00008 PF_MASS_FLOOR, PF_MASS_WALL, PF_MASS_WIN, PF_WASTE_CAN, & 00009 PF_WIN_WIN) 00010 !##################################################################### 00011 ! 00012 !!**** *BEM_MORPHO 00013 !! 00014 !! PURPOSE 00015 !! ------- 00016 !! compute morphometric parameter of the building for BEM 00017 !! 00018 !!** METHOD 00019 !! ------ 00020 !! 00021 !! EXTERNAL 00022 !! -------- 00023 !! 00024 !! 00025 !! IMPLICIT ARGUMENTS 00026 !! ------------------ 00027 !! 00028 !! REFERENCE 00029 !! --------- 00030 !! 00031 !! 00032 !! AUTHOR 00033 !! ------ 00034 !! G. Pigeon *Meteo France* 00035 !! 00036 !! MODIFICATIONS 00037 !! ------------- 00038 !! Original 10/2011 00039 !------------------------------------------------------------------------------- 00040 ! 00041 !* 0. DECLARATIONS 00042 ! ------------ 00043 ! 00044 ! 00045 !* 0.1 Declarations of arguments 00046 ! ------------------------- 00047 ! 00048 REAL, DIMENSION(:), INTENT(IN) :: PBLD ! Urban horizontal building density 00049 REAL, DIMENSION(:), INTENT(IN) :: PWALL_O_HOR ! Wall to horizontal surface ratio 00050 REAL, DIMENSION(:), INTENT(IN) :: PBLD_HEIGHT ! Average building height [m] 00051 REAL, DIMENSION(:), INTENT(INOUT)::PFLOOR_HEIGHT ! Building floor height [m] 00052 REAL, DIMENSION(:), INTENT(IN) :: PGR ! Glazing ratio 00053 REAL, DIMENSION(:), INTENT(OUT) :: PN_FLOOR ! number of floor levels 00054 REAL, DIMENSION(:), INTENT(OUT) :: PWALL_O_BLD ! wall surface per ground building surface [m²(wall)/m²(bld)] 00055 REAL, DIMENSION(:), INTENT(OUT) :: PGLAZ_O_BLD ! glazing surface per ground building surface [m²(glazing)/m²(bld)] 00056 REAL, DIMENSION(:), INTENT(OUT) :: PMASS_O_BLD ! thermal mass surface per ground building surface [m²(mass)/m²(bld)] 00057 REAL, DIMENSION(:), INTENT(OUT) :: PFLOOR_HW_RATIO !Height to width ratio of the floor levels 00058 REAL, DIMENSION(:), INTENT(OUT) :: PF_FLOOR_MASS !view factor from floor to mass (how much floor seen by mass) 00059 REAL, DIMENSION(:), INTENT(OUT) :: PF_FLOOR_WALL 00060 REAL, DIMENSION(:), INTENT(OUT) :: PF_FLOOR_WIN 00061 REAL, DIMENSION(:), INTENT(OUT) :: PF_FLOOR_ROOF 00062 REAL, DIMENSION(:), INTENT(OUT) :: PF_WALL_FLOOR 00063 REAL, DIMENSION(:), INTENT(OUT) :: PF_WALL_MASS 00064 REAL, DIMENSION(:), INTENT(OUT) :: PF_WALL_WIN 00065 REAL, DIMENSION(:), INTENT(OUT) :: PF_WIN_FLOOR 00066 REAL, DIMENSION(:), INTENT(OUT) :: PF_WIN_MASS 00067 REAL, DIMENSION(:), INTENT(OUT) :: PF_WIN_WALL 00068 REAL, DIMENSION(:), INTENT(OUT) :: PF_WIN_WIN 00069 REAL, DIMENSION(:), INTENT(OUT) :: PF_MASS_FLOOR 00070 REAL, DIMENSION(:), INTENT(OUT) :: PF_MASS_WALL 00071 REAL, DIMENSION(:), INTENT(OUT) :: PF_MASS_WIN 00072 REAL, DIMENSION(:), INTENT(INOUT)::PF_WASTE_CAN !fraction of waste heat released into the canyon 00073 ! 00074 !* 0.2 Declarations of local variables 00075 ! 00076 REAL, DIMENSION(SIZE(PBLD)):: ZF_AUX2 ! Auxiliar view factor 00077 ! 00078 !------------------------------------------------------------------------------ 00079 ! 00080 !* 1. Verify floor height 00081 ! ------------------- 00082 ! 00083 DO JJ=1,SIZE(PBLD) 00084 IF (PFLOOR_HEIGHT(JJ) < 2.5) THEN 00085 ! WRITE(ILUOUT,*) 'WARNING: PFLOOR_HEIGHT low ',PFLOOR_HEIGHT(JJ),' grid mesh number ',JJ 00086 PFLOOR_HEIGHT(JJ) = 2.5 00087 ENDIF 00088 IF (PFLOOR_HEIGHT(JJ) > PBLD_HEIGHT(JJ)) THEN 00089 ! WRITE(ILUOUT,*) 'WARNING: PFLOOR_HEIGHT higher than PBLD_HEIGHT ',PFLOOR_HEIGHT(JJ),' grid mesh number ',JJ, & 00090 ! 'set to PBLD_HEIGHT' 00091 PFLOOR_HEIGHT(JJ) = PBLD_HEIGHT(JJ) 00092 ENDIF 00093 ! 00094 !* 1. Verify location of HVAC release for very extended buildings 00095 ! ----------------------------------------------------------- 00096 ! 00097 IF (PBLD(JJ) > 0.9999 .AND. PF_WASTE_CAN(JJ) > 0.) THEN 00098 ! WRITE(ILUOUT,*) 'WARNING: PF_WASTE_CAN cannot be higher than 0. while PBLD is 0.9999',PF_WASTE_CAN(JJ), & 00099 ! ' grid mesh number ',JJ,' set to 0.' 00100 PF_WASTE_CAN(JJ) = 0. 00101 ENDIF 00102 END DO 00103 ! 00104 !* 1. floor number, relative surf. and view factors caculation 00105 ! -------------------------------------------------------- 00106 ! 00107 PN_FLOOR(:) = FLOAT(NINT(PBLD_HEIGHT(:) / PFLOOR_HEIGHT(:) )) 00108 PWALL_O_BLD(:) = PWALL_O_HOR(:) * (1. - PGR(:)) / PBLD(:) ! [m2(wall)/m2(bld)] 00109 PGLAZ_O_BLD(:) = PWALL_O_HOR(:) * PGR(:) / PBLD(:) ! [m2(win)/m2(bld)] 00110 00111 WHERE(PN_FLOOR > 1.5) 00112 !* more than 1 floor level -> the floor and the roof don't see each other 00113 ! 00114 ! ROOF 00115 ! |---------------------| 00116 ! | | 00117 ! | | 00118 ! | MASS | 00119 ! |---------------------| 00120 ! |---------------------| 00121 ! | MASS | 00122 ! | | 00123 ! | | 00124 ! | FLOOR | 00125 ! |---------------------| 00126 ! 00127 PMASS_O_BLD(:) = 2 * (PN_FLOOR(:) - 1.) ! [m2(mass)/m2(bld)] 00128 PFLOOR_HW_RATIO(:) = PWALL_O_HOR(:) / PN_FLOOR(:) / PBLD(:) / 2. 00129 ! 00130 PF_FLOOR_MASS(:) = (PFLOOR_HW_RATIO(:)**2 + 1.)**0.5 - PFLOOR_HW_RATIO(:) 00131 PF_FLOOR_WALL(:) = (1. - PF_FLOOR_MASS(:)) * (1. - PGR(:)) 00132 PF_FLOOR_WIN (:) = (1. - PF_FLOOR_MASS(:)) * PGR(:) 00133 PF_FLOOR_ROOF(:) = 0. ! no rad interaction between floor and roof 00134 ! 00135 ZF_AUX2 (:) = (1. - PF_FLOOR_MASS(:)) / PFLOOR_HW_RATIO(:) 00136 ! 00137 PF_WALL_FLOOR(:) = ZF_AUX2(:) / ( 2.*PN_FLOOR(:) ) 00138 PF_WALL_MASS (:) = PF_WALL_FLOOR(:) * (2.*PN_FLOOR(:)-2.) 00139 PF_WALL_WIN (:) = (1. - ZF_AUX2(:)) * PGR(:) 00140 ! 00141 PF_WIN_FLOOR(:) = PF_WALL_FLOOR(:) 00142 PF_WIN_MASS (:) = PF_WALL_MASS (:) 00143 PF_WIN_WALL (:) = (1. - PF_WIN_FLOOR(:) * 2. - PF_WIN_MASS(:) ) * (1. - PGR(:)) 00144 PF_WIN_WIN (:) = (1. - PF_WIN_FLOOR(:) * 2. - PF_WIN_MASS(:) ) * PGR(:) 00145 ! 00146 PF_MASS_FLOOR(:) = PF_FLOOR_MASS(:) / PMASS_O_BLD(:) 00147 PF_MASS_WALL (:) = PWALL_O_BLD(:) * PF_WALL_MASS(:) / PMASS_O_BLD(:) 00148 PF_MASS_WIN (:) = PGLAZ_O_BLD (:) * PF_WIN_MASS(:) / PMASS_O_BLD(:) 00149 ELSE WHERE 00150 !* 1 floor level -> no mass view factors ; roof and floor see each other 00151 ! 00152 ! ROOF 00153 ! |---------------------| 00154 ! | | 00155 ! | | 00156 ! | FLOOR | 00157 ! |---------------------| 00158 ! 00159 PMASS_O_BLD(:) = 0. 00160 PFLOOR_HW_RATIO(:) = PWALL_O_HOR(:) / PBLD(:) / 2. 00161 ! 00162 PF_FLOOR_ROOF(:) = (PFLOOR_HW_RATIO(:)**2 + 1.)**0.5 - PFLOOR_HW_RATIO(:) 00163 PF_FLOOR_MASS(:) = 0. 00164 PF_FLOOR_WALL(:) = (1. - PF_FLOOR_ROOF(:)) * (1. - PGR(:)) 00165 PF_FLOOR_WIN (:) = (1. - PF_FLOOR_ROOF(:)) * PGR(:) 00166 ! 00167 ZF_AUX2 (:) = (1. - PF_FLOOR_ROOF(:)) / PFLOOR_HW_RATIO(:) 00168 ! 00169 PF_WALL_FLOOR(:) = ZF_AUX2(:) / 2. 00170 PF_WALL_MASS (:) = 0. 00171 PF_WALL_WIN (:) = (1. - ZF_AUX2(:)) * PGR(:) 00172 ! 00173 PF_WIN_FLOOR(:) = PF_WALL_FLOOR(:) 00174 PF_WIN_MASS (:) = 0. 00175 PF_WIN_WALL (:) = (1. - PF_WIN_FLOOR(:) * 2. - PF_WIN_MASS(:) ) * (1. - PGR(:)) 00176 PF_WIN_WIN (:) = (1. - PF_WIN_FLOOR(:) * 2. - PF_WIN_MASS(:) ) * PGR(:) 00177 ! 00178 PF_MASS_FLOOR(:) = 0. 00179 PF_MASS_WALL (:) = 0. 00180 PF_MASS_WIN (:) = 0. 00181 END WHERE 00182 ! 00183 END SUBROUTINE BEM_MORPHO 00184 !-------------------------------------------------------------------------------
1.8.0