lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb in openstudio-standards-0.1.9 vs lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb in openstudio-standards-0.1.10
- old
+ new
@@ -42,11 +42,11 @@
# @todo nightcycle control
# @todo night fan shutoff
def apply_standard_controls(template, climate_zone)
# Energy Recovery Ventilation
if energy_recovery_ventilator_required?(template, climate_zone)
- apply_energy_recovery_ventilator
+ apply_energy_recovery_ventilator(template)
end
# Economizers
apply_economizer_limits(template, climate_zone)
apply_economizer_integration(template, climate_zone)
@@ -1785,11 +1785,11 @@
# Will be a rotary-type HX
#
# @param (see #economizer_required?)
# @return [Bool] Returns true if required, false if not.
# @todo Add exception logic for systems serving parking garage, warehouse, or multifamily
- def apply_energy_recovery_ventilator
+ def apply_energy_recovery_ventilator(template)
# Get the oa system
oa_system = nil
if airLoopHVACOutdoorAirSystem.is_initialized
oa_system = airLoopHVACOutdoorAirSystem.get
else
@@ -1798,18 +1798,29 @@
end
# Create an ERV
erv = OpenStudio::Model::HeatExchangerAirToAirSensibleAndLatent.new(model)
erv.setName("#{name} ERV")
- erv.setSensibleEffectivenessat100HeatingAirFlow(0.7)
- erv.setLatentEffectivenessat100HeatingAirFlow(0.6)
- erv.setSensibleEffectivenessat75HeatingAirFlow(0.7)
- erv.setLatentEffectivenessat75HeatingAirFlow(0.6)
- erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
- erv.setLatentEffectivenessat100CoolingAirFlow(0.6)
- erv.setSensibleEffectivenessat75CoolingAirFlow(0.75)
- erv.setLatentEffectivenessat75CoolingAirFlow(0.6)
+ if template == 'NECB 2011'
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.5)
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.5)
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.5)
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.5)
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.5)
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.5)
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.5)
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.5)
+ else
+ erv.setSensibleEffectivenessat100HeatingAirFlow(0.7)
+ erv.setLatentEffectivenessat100HeatingAirFlow(0.6)
+ erv.setSensibleEffectivenessat75HeatingAirFlow(0.7)
+ erv.setLatentEffectivenessat75HeatingAirFlow(0.6)
+ erv.setSensibleEffectivenessat100CoolingAirFlow(0.75)
+ erv.setLatentEffectivenessat100CoolingAirFlow(0.6)
+ erv.setSensibleEffectivenessat75CoolingAirFlow(0.75)
+ erv.setLatentEffectivenessat75CoolingAirFlow(0.6)
+ end
erv.setSupplyAirOutletTemperatureControl(true)
erv.setHeatExchangerType('Rotary')
erv.setFrostControlType('ExhaustOnly')
erv.setEconomizerLockout(true)
erv.setThresholdTemperature(-23.3) # -10F
@@ -2597,12 +2608,12 @@
# @return [Bool] Returns true if successful, false if not
# @todo see if this impacts the sizing run.
def apply_vav_damper_action(template)
damper_action = nil
case template
- when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004', 'NECB 2011'
+ when 'DOE Ref Pre-1980', 'DOE Ref 1980-2004', '90.1-2004'
damper_action = 'Single Maximum'
- when '90.1-2007', '90.1-2010', '90.1-2013'
+ when '90.1-2007', '90.1-2010', '90.1-2013', 'NECB 2011'
damper_action = 'Dual Maximum'
end
# Interpret this as an EnergyPlus input
damper_action_eplus = nil