Module: OpenstudioStandards::Infiltration
- Defined in:
- lib/openstudio-standards/infiltration/infiltration.rb
Overview
The Infiltration module provides methods create, modify, and get information about model infiltration
Calculations collapse
-
.adjust_infiltration_to_new_pressure(infiltration_rate, initial_pressure: 75.0, final_pressure: 4.0, infiltration_coefficient: 0.65) ⇒ Double
Convert an infiltration rate at a given pressure to another pressure (typically lower) Method from Gowri, Krishnan, Winiarski, David W, and Jarnagin, Ronald E.
-
.adjust_infiltration_to_prototype_building_conditions(infiltration_rate, initial_pressure: 75.0) ⇒ Double
Convert the infiltration rate to the pressures and conditions assumed in the PNNL prototype buildings Details described in Gowri, Krishnan, Winiarski, David W, and Jarnagin, Ronald E.
Surface collapse
-
.surface_component_infiltration_rate(surface, type: 'baseline') ⇒ Double
Determine the component infiltration rate for a surface Details described in Table 5.7 of Thornton, Brian A, Rosenberg, Michael I, Richman, Eric E, Wang, Weimin, Xie, YuLong, Zhang, Jian, Cho, Heejin, Mendon, Vrushali V, Athalye, Rahul A, and Liu, Bing.
SubSurface collapse
-
.sub_surface_component_infiltration_rate(sub_surface, type: 'baseline') ⇒ Double
Determine the component infiltration rate for a sub surface Details described in Table 5.7 of Thornton, Brian A, Rosenberg, Michael I, Richman, Eric E, Wang, Weimin, Xie, YuLong, Zhang, Jian, Cho, Heejin, Mendon, Vrushali V, Athalye, Rahul A, and Liu, Bing.
Class Method Details
.adjust_infiltration_to_new_pressure(infiltration_rate, initial_pressure: 75.0, final_pressure: 4.0, infiltration_coefficient: 0.65) ⇒ Double
Convert an infiltration rate at a given pressure to another pressure (typically lower) Method from Gowri, Krishnan, Winiarski, David W, and Jarnagin, Ronald E. Infiltration modeling guidelines for commercial building energy analysis. United States: N. p., 2009. Web. doi:10.2172/968203.
14 15 16 17 18 19 20 21 |
# File 'lib/openstudio-standards/infiltration/infiltration.rb', line 14 def self.adjust_infiltration_to_new_pressure(infiltration_rate, initial_pressure: 75.0, final_pressure: 4.0, infiltration_coefficient: 0.65) adjusted_infiltration_rate = infiltration_rate * (final_pressure / initial_pressure)**infiltration_coefficient return adjusted_infiltration_rate end |
.adjust_infiltration_to_prototype_building_conditions(infiltration_rate, initial_pressure: 75.0) ⇒ Double
Convert the infiltration rate to the pressures and conditions assumed in the PNNL prototype buildings Details described in Gowri, Krishnan, Winiarski, David W, and Jarnagin, Ronald E. Infiltration modeling guidelines for commercial building energy analysis. United States: N. p., 2009. Web. doi:10.2172/968203.
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/openstudio-standards/infiltration/infiltration.rb', line 29 def self.adjust_infiltration_to_prototype_building_conditions(infiltration_rate, initial_pressure: 75.0) alpha = 0.22 # terrain adjustment factor for an urban environment, unitless uh = 4.47 # wind speed, m/s rho = 1.18 # air density, kg/m^3 cs = 0.1617 # positive surface pressure coefficient, unitless n = 0.65 # infiltration coefficient, unitless # Calculate the typical pressure - same for all building types final_pressure_pa = 0.5 * cs * rho * uh**2 adjusted_infiltration_rate = (1.0 + alpha) * infiltration_rate * (final_pressure_pa / initial_pressure)**n return adjusted_infiltration_rate end |
.sub_surface_component_infiltration_rate(sub_surface, type: 'baseline') ⇒ Double
Determine the component infiltration rate for a sub surface Details described in Table 5.7 of Thornton, Brian A, Rosenberg, Michael I, Richman, Eric E, Wang, Weimin, Xie, YuLong, Zhang, Jian, Cho, Heejin, Mendon, Vrushali V, Athalye, Rahul A, and Liu, Bing. Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010. United States: N. p., 2011. Web. doi:10.2172/1015277.
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/openstudio-standards/infiltration/infiltration.rb', line 124 def self.sub_surface_component_infiltration_rate(sub_surface, type: 'baseline') # Define the envelope component infiltration rates component_infil_rates_cfm_per_ft2 = { 'baseline' => { 'opaque_door' => 0.40, 'loading_dock_door' => 0.40, 'swinging_or_revolving_glass_door' => 1.0, 'vestibule' => 1.0, 'sliding_glass_door' => 0.40, 'window' => 0.40, 'skylight' => 0.40 }, 'advanced' => { 'opaque_door' => 0.20, 'loading_dock_door' => 0.20, 'swinging_or_revolving_glass_door' => 1.0, 'vestibule' => 1.0, 'sliding_glass_door' => 0.20, 'window' => 0.20, 'skylight' => 0.20 } } # Skip non-outdoor surfaces unless sub_surface.outsideBoundaryCondition == 'Outdoors' return 0.0 end # Per area infiltration rate for this sub surface case sub_surface.subSurfaceType when 'Door' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['opaque_door'] when 'OverheadDoor' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['loading_dock_door'] when 'GlassDoor' OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Infiltration', "Assuming swinging_or_revolving_glass_door for #{sub_surface.name} for component infiltration rate.") infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['swinging_or_revolving_glass_door'] when 'FixedWindow', 'OperableWindow' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['window'] when 'Skylight', 'TubularDaylightDome', 'TubularDaylightDiffuser' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['skylight'] else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Infiltration', "Could not determine infiltration sub surface type for #{sub_surface.name}, defaulting to 0 component infiltration rate.") return 0.0 end # Area of the sub surface area_m2 = sub_surface.netArea area_ft2 = OpenStudio.convert(area_m2, 'm^2', 'ft^2').get # Rate for this sub surface comp_infil_rate_cfm = area_ft2 * infil_rate_cfm_per_ft2 comp_infil_rate_m3_per_s = OpenStudio.convert(comp_infil_rate_cfm, 'cfm', 'm^3/s').get return comp_infil_rate_m3_per_s end |
.surface_component_infiltration_rate(surface, type: 'baseline') ⇒ Double
Determine the component infiltration rate for a surface Details described in Table 5.7 of Thornton, Brian A, Rosenberg, Michael I, Richman, Eric E, Wang, Weimin, Xie, YuLong, Zhang, Jian, Cho, Heejin, Mendon, Vrushali V, Athalye, Rahul A, and Liu, Bing. Achieving the 30% Goal: Energy and Cost Savings Analysis of ASHRAE Standard 90.1-2010. United States: N. p., 2011. Web. doi:10.2172/1015277.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/openstudio-standards/infiltration/infiltration.rb', line 53 def self.surface_component_infiltration_rate(surface, type: 'baseline') # Define the envelope component infiltration rates component_infil_rates_cfm_per_ft2 = { 'baseline' => { 'roof' => 0.12, 'exterior_wall' => 0.12, 'below_grade_wall' => 0.12, 'floor_over_unconditioned' => 0.12, 'slab_on_grade' => 0.12 }, 'advanced' => { 'roof' => 0.04, 'exterior_wall' => 0.04, 'below_grade_wall' => 0.04, 'floor_over_unconditioned' => 0.04, 'slab_on_grade' => 0.04 } } # Skip non-outdoor surfaces boundary_condition = surface.outsideBoundaryCondition unless boundary_condition == 'Outdoors' || boundary_condition == 'Ground' return 0.0 end # Per area infiltration rate for this surface surface_type = surface.surfaceType infil_rate_cfm_per_ft2 = nil case boundary_condition when 'Outdoors' case surface_type when 'RoofCeiling' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['roof'] when 'Wall' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['exterior_wall'] when 'Floor' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['floor_over_unconditioned'] end when 'Ground' case surface_type when 'Wall' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['below_grade_wall'] when 'Floor' infil_rate_cfm_per_ft2 = component_infil_rates_cfm_per_ft2[type]['slab_on_grade'] end else OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.Infiltration', "Could not determine infiltration surface type for #{surface.name}, defaulting to 0 component infiltration rate.") return 0.0 end # Area of the surface area_m2 = surface.netArea area_ft2 = OpenStudio.convert(area_m2, 'm^2', 'ft^2').get # Rate for this surface comp_infil_rate_cfm = area_ft2 * infil_rate_cfm_per_ft2 comp_infil_rate_m3_per_s = OpenStudio.convert(comp_infil_rate_cfm, 'cfm', 'm^3/s').get return comp_infil_rate_m3_per_s end |