Class: OpenStudio::Model::ZoneHVACComponent
- Inherits:
-
Object
- Object
- OpenStudio::Model::ZoneHVACComponent
- Defined in:
- lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb
Overview
open the class to add methods to apply HVAC efficiency standards
Instance Method Summary collapse
-
#apply_prm_baseline_fan_power(template) ⇒ Bool
Sets the fan power of zone level HVAC equipment (PTACs, PTHPs, Fan Coils, and Unit Heaters) based on the W/cfm specified in the standard.
Instance Method Details
#apply_prm_baseline_fan_power(template) ⇒ Bool
Sets the fan power of zone level HVAC equipment (PTACs, PTHPs, Fan Coils, and Unit Heaters) based on the W/cfm specified in the standard.
9 10 11 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 |
# File 'lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb', line 9 def apply_prm_baseline_fan_power(template) OpenStudio.logFree(OpenStudio::Debug, 'openstudio.model.ZoneHVACComponent', "Setting fan power for #{name}.") # Convert this to the actual class type zone_hvac = if to_ZoneHVACFourPipeFanCoil.is_initialized to_ZoneHVACFourPipeFanCoil.get elsif to_ZoneHVACUnitHeater.is_initialized to_ZoneHVACUnitHeater.get elsif to_ZoneHVACPackagedTerminalAirConditioner.is_initialized to_ZoneHVACPackagedTerminalAirConditioner.get elsif to_ZoneHVACPackagedTerminalHeatPump.is_initialized to_ZoneHVACPackagedTerminalHeatPump.get else nil end # Do nothing for other types of zone HVAC equipment if zone_hvac.nil? return false end # Determine the W/cfm fan_efficacy_w_per_cfm = 0.3 # Convert efficacy to metric # 1 cfm = 0.0004719 m^3/s fan_efficacy_w_per_m3_per_s = fan_efficacy_w_per_cfm / 0.0004719 # Get the fan fan = if zone_hvac.supplyAirFan.to_FanConstantVolume.is_initialized zone_hvac.supplyAirFan.to_FanConstantVolume.get elsif zone_hvac.supplyAirFan.to_FanVariableVolume.is_initialized zone_hvac.supplyAirFan.to_FanVariableVolume.get elsif zone_hvac.supplyAirFan.to_FanOnOff.is_initialized zone_hvac.supplyAirFan.to_FanOnOff.get end # Get the maximum flow rate through the fan max_air_flow_rate = nil if fan.autosizedMaximumFlowRate.is_initialized max_air_flow_rate = fan.autosizedMaximumFlowRate.get elsif fan.maximumFlowRate.is_initialized max_air_flow_rate = fan.maximumFlowRate.get end max_air_flow_rate_cfm = OpenStudio.convert(max_air_flow_rate, 'm^3/s', 'ft^3/min').get # Set the impeller efficiency fan.change_impeller_efficiency(fan.baseline_impeller_efficiency(template)) # Set the motor efficiency, preserving the impeller efficency. # For zone HVAC fans, a bhp lookup of 0.5bhp is always used because # they are assumed to represent a series of small fans in reality. fan.apply_standard_minimum_motor_efficiency(template, fan.brake_horsepower) # Calculate a new pressure rise to hit the target W/cfm fan_tot_eff = fan.fanEfficiency fan_rise_new_pa = fan_efficacy_w_per_m3_per_s * fan_tot_eff fan.setPressureRise(fan_rise_new_pa) # Calculate the newly set efficacy fan_power_new_w = fan_rise_new_pa * max_air_flow_rate / fan_tot_eff fan_efficacy_new_w_per_cfm = fan_power_new_w / max_air_flow_rate_cfm OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.ZoneHVACComponent', "For #{name}: fan efficacy set to #{fan_efficacy_new_w_per_cfm.round(2)} W/cfm.") return true end |