lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb in openstudio-standards-0.1.4 vs lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb in openstudio-standards-0.1.5

- old
+ new

@@ -1,50 +1,43 @@ class OpenStudio::Model::AirTerminalSingleDuctVAVReheat - # Set the minimum damper position based on OA - # rate of the space and the building vintage. - # Zones with low OA per area get lower initial guesses. + # 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 - # @param building_vintage [String] the building vintage - # @param zone_oa_per_area [Double] the zone outdoor air per area, m^3/s - # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal + # @param template [String] the template + # @param zone_min_oa [Double] the zone outdoor air flow rate, in m^3/s. + # 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. + # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal, + # which impacts the minimum damper position requirement. # @return [Bool] returns true if successful, false if not # @todo remove exception where older vintages don't have minimum positions adjusted. - def set_minimum_damper_position(building_vintage, zone_oa_per_area, has_ddc = true) - - # Minimum damper position is based on prototype - # assumptions, which are not clearly documented. + def apply_minimum_damper_position(template, zone_min_oa = nil, has_ddc = true) + # Minimum damper position min_damper_position = nil - case building_vintage + 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' - if has_ddc - min_damper_position = 0.2 - else - min_damper_position = 0.3 - end + min_damper_position = if has_ddc + 0.2 + else + 0.3 + end 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 - # High OA zones - self.setConstantMinimumAirFlowFraction(0.7) - else - # Low OA zones - self.setConstantMinimumAirFlowFraction(min_damper_position) + 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 - end