Class: OpenStudio::Model::AirTerminalSingleDuctVAVReheat
- Inherits:
-
Object
- Object
- OpenStudio::Model::AirTerminalSingleDuctVAVReheat
- Defined in:
- lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb,
lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb,
lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb,
lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVReheat.rb
Overview
open the class to add methods to return sizing values
Instance Method Summary collapse
-
#apply_initial_prototype_damper_position(building_type, template, zone_oa_per_area) ⇒ Bool
Set the initial minimum damper position based on OA rate of the space and the template.
-
#apply_minimum_damper_position(template, zone_min_oa = nil, has_ddc = true) ⇒ Bool
Set the minimum damper position based on OA rate of the space and the template.
-
#applySizingValues ⇒ Object
Takes the values calculated by the EnergyPlus sizing routines and puts them into this object model in place of the autosized fields.
-
#autosize ⇒ Object
Sets all auto-sizeable fields to autosize.
-
#autosizedMaximumAirFlowRate ⇒ Object
returns the autosized maximum air flow rate as an optional double.
-
#autosizedMaximumFlowFractionDuringReheat ⇒ Object
returns the autosized maximum flow fraction during reheat as an optional double.
-
#autosizedMaximumFlowPerZoneFloorAreaDuringReheat ⇒ Object
returns the autosized maximum flow per zone floor area during reheat as an optional double.
-
#autosizedMaximumHotWaterOrSteamFlowRate ⇒ Object
returns the autosized rated power consumption as an optional double.
Instance Method Details
#apply_initial_prototype_damper_position(building_type, template, zone_oa_per_area) ⇒ Bool
remove exception where older vintages don’t have minimum positions adjusted.
Set the initial minimum damper position based on OA rate of the space and the template. Zones with low OA per area get lower initial guesses. Final position will be adjusted upward as necessary by Standards.AirLoopHVAC.apply_minimum_vav_damper_positions
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 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 |
# File 'lib/openstudio-standards/prototypes/Prototype.AirTerminalSingleDuctVAVReheat.rb', line 12 def apply_initial_prototype_damper_position(building_type, template, zone_oa_per_area) # Minimum damper position is based on prototype # assumptions, which are not clearly documented. min_damper_position = nil vav_name = name.get case template when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004' min_damper_position = if building_type == 'Outpatient' && vav_name.include?('Floor 1') 1 elsif building_type == 'Hospital' && vav_name.include?('PatRoom') 1 elsif building_type == 'Hospital' && vav_name.include?('OR') 1 elsif building_type == 'Hospital' && vav_name.include?('ICU') 1 elsif building_type == 'Hospital' && vav_name.include?('Lab') 1 elsif building_type == 'Hospital' && vav_name.include?('ER') 1 elsif building_type == 'Hospital' && vav_name.include?('Kitchen') 1 elsif building_type == 'Hospital' && vav_name.include?('NurseStn') 0.3 else 0.3 end when '90.1-2004', '90.1-2007' min_damper_position = 0.3 when '90.1-2010', '90.1-2013' min_damper_position = 0.2 end # TODO: remove the template conditional; doesn't make sense # Determine whether or not to use the high minimum guess. # Cutoff was determined by correlating apparent minimum guesses # to OA rates in prototypes since not well documented in papers. if zone_oa_per_area > 0.001 # 0.001 m^3/s*m^2 = .196 cfm/ft2 case template when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004' setConstantMinimumAirFlowFraction(min_damper_position) else # High OA zones if building_type == 'Outpatient' setConstantMinimumAirFlowFraction(1) elsif building_type == 'Hospital' case template when '90.1-2010', '90.1-2013' if vav_name.include? 'PatRoom' setConstantMinimumAirFlowFraction(0.5) else setConstantMinimumAirFlowFraction(1) end when '90.1-2004', '90.1-2007' setConstantMinimumAirFlowFraction(1) end else setConstantMinimumAirFlowFraction(0.7) end end else # Low OA zones setConstantMinimumAirFlowFraction(min_damper_position) end return true end |
#apply_minimum_damper_position(template, zone_min_oa = nil, has_ddc = true) ⇒ Bool
remove exception where older vintages don’t have minimum positions adjusted.
Set the minimum damper position based on OA rate of the space and the template. Zones with low OA per area get lower initial guesses. Final position will be adjusted upward as necessary by Standards.AirLoopHVAC.adjust_minimum_vav_damper_positions If supplied, this will be set as a minimum limit in addition to the minimum damper position. EnergyPlus will use the larger of the two values during sizing. which impacts the minimum damper position requirement.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb', line 16 def apply_minimum_damper_position(template, zone_min_oa = nil, has_ddc = true) # Minimum damper position min_damper_position = nil case template when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004' min_damper_position = 0.3 when '90.1-2007' min_damper_position = 0.3 when '90.1-2010', '90.1-2013' min_damper_position = if has_ddc 0.2 else 0.3 end end setConstantMinimumAirFlowFraction(min_damper_position) # Minimum OA flow rate # If specified, will also add this limit # and the larger of the two will be used # for sizing. unless zone_min_oa.nil? setFixedMinimumAirFlowRate(zone_min_oa) end return true end |
#applySizingValues ⇒ Object
Takes the values calculated by the EnergyPlus sizing routines and puts them into this object model in place of the autosized fields. Must have previously completed a run with sql output for this to work.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 13 def applySizingValues rated_flow_rate = self.autosizedMaximumAirFlowRate if rated_flow_rate.is_initialized self.setMaximumAirFlowRate(rated_flow_rate.get) end maximum_hot_water_or_steam_flow_rate = self.autosizedMaximumHotWaterOrSteamFlowRate if maximum_hot_water_or_steam_flow_rate.is_initialized self.setMaximumHotWaterOrSteamFlowRate(maximum_hot_water_or_steam_flow_rate.get) end maximum_flow_per_zone_floor_area_during_reheat = self.autosizedMaximumFlowPerZoneFloorAreaDuringReheat if maximum_flow_per_zone_floor_area_during_reheat.is_initialized self.setMaximumFlowPerZoneFloorAreaDuringReheat(maximum_flow_per_zone_floor_area_during_reheat.get) end maximum_flow_fraction_during_reheat = self.autosizedMaximumFlowFractionDuringReheat if maximum_flow_fraction_during_reheat.is_initialized self.setMaximumFlowFractionDuringReheat(maximum_flow_fraction_during_reheat.get) end end |
#autosize ⇒ Object
Sets all auto-sizeable fields to autosize
6 7 8 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 6 def autosize OpenStudio::logFree(OpenStudio::Warn, "openstudio.sizing.AirTerminalSingleDuctVAVReheat", ".autosize not yet implemented for #{self.iddObject.type.valueDescription}.") end |
#autosizedMaximumAirFlowRate ⇒ Object
returns the autosized maximum air flow rate as an optional double
38 39 40 41 42 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 38 def autosizedMaximumAirFlowRate return self.model.getAutosizedValue(self, 'Design Size Maximum Air Flow Rate', 'm3/s') end |
#autosizedMaximumFlowFractionDuringReheat ⇒ Object
returns the autosized maximum flow fraction during reheat as an optional double
59 60 61 62 63 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 59 def autosizedMaximumFlowFractionDuringReheat return self.model.getAutosizedValue(self, 'Design Size Maximum Flow Fraction during Reheat', '') end |
#autosizedMaximumFlowPerZoneFloorAreaDuringReheat ⇒ Object
returns the autosized maximum flow per zone floor area during reheat as an optional double
52 53 54 55 56 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 52 def autosizedMaximumFlowPerZoneFloorAreaDuringReheat return self.model.getAutosizedValue(self, 'Design Size Maximum Flow per Zone Floor Area during Reheat', 'm3/s-m2') end |
#autosizedMaximumHotWaterOrSteamFlowRate ⇒ Object
returns the autosized rated power consumption as an optional double
45 46 47 48 49 |
# File 'lib/openstudio-standards/hvac_sizing/Siz.AirTermSnglDuctVAVNoReheat.rb', line 45 def autosizedMaximumHotWaterOrSteamFlowRate return self.model.getAutosizedValue(self, 'Design Size Maximum Reheat Water Flow Rate', 'm3/s') end |