lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb in openstudio-standards-0.1.15 vs lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb in openstudio-standards-0.2.0.rc1
- old
+ new
@@ -1,43 +1,77 @@
-class OpenStudio::Model::AirTerminalSingleDuctVAVReheat
+class Standard
+ # @!group AirTerminalSingleDuctVAVReheat
+
# 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
- # @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 apply_minimum_damper_position(template, zone_min_oa = nil, has_ddc = true)
+ def air_terminal_single_duct_vav_reheat_apply_minimum_damper_position(air_terminal_single_duct_vav_reheat, 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)
+ min_damper_position = air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc)
+ air_terminal_single_duct_vav_reheat.setConstantMinimumAirFlowFraction(min_damper_position)
+ OpenStudio.logFree(OpenStudio::Debug, 'openstudio.standards.AirTerminalSingleDuctVAVReheat', "For #{air_terminal_single_duct_vav_reheat.name}: set minimum damper position to #{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)
+ air_terminal_single_duct_vav_reheat.setFixedMinimumAirFlowRate(zone_min_oa)
end
return true
+ end
+
+ # Specifies the minimum damper position for VAV dampers.
+ # Defaults to 30%
+ #
+ # @param has_ddc [Bool] whether or not there is DDC control of the VAV terminal in question
+ def air_terminal_single_duct_vav_reheat_minimum_damper_position(air_terminal_single_duct_vav_reheat, has_ddc = false)
+ min_damper_position = 0.3
+ return min_damper_position
+ end
+
+ # Sets the capacity of the reheat coil based on the minimum flow fraction,
+ # and the maximum flow rate.
+ def air_terminal_single_duct_vav_reheat_set_heating_cap(air_terminal_single_duct_vav_reheat)
+ flow_rate_fraction = air_terminal_single_duct_vav_reheat.constantMinimumAirFlowFraction
+ if air_terminal_single_duct_vav_reheat.reheatCoil.to_CoilHeatingWater.is_initialized
+ reheat_coil = air_terminal_single_duct_vav_reheat.reheatCoil.to_CoilHeatingWater.get
+ if reheat_coil.autosizedRatedCapacity.to_f < 1.0e-6
+ cap = 1.2 * 1000.0 * air_terminal_single_duct_vav_reheat.constantMinimumAirFlowFraction * air_terminal_single_duct_vav_reheat.autosizedMaximumAirFlowRate.to_f * (18.0 - 13.0)
+ reheat_coil.setPerformanceInputMethod('NominalCapacity')
+ reheat_coil.setRatedCapacity(cap)
+ air_terminal_single_duct_vav_reheat.setMaximumReheatAirTemperature(18.0)
+ end
+ end
+ end
+
+ # Determines whether the terminal has a NaturalGas,
+ # Electricity, or HotWater reheat coil.
+ # @return [String] reheat type. One of NaturalGas,
+ # Electricity, or HotWater.
+ def air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
+ type = nil
+
+ # Get the reheat coil
+ rht_coil = air_terminal_single_duct_vav_reheat.reheatCoil
+ if rht_coil.to_CoilHeatingElectric.is_initialized
+ type = 'Electricity'
+ elsif rht_coil.to_CoilHeatingWater.is_initialized
+ type = 'HotWater'
+ elsif rht_coil.to_CoilHeatingGas.is_initialized
+ type = 'NaturalGas'
+ end
+
+ return type
end
end