Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update HVAC models per RESNET HVAC addendum #1879

Draft
wants to merge 16 commits into
base: master
Choose a base branch
from
Draft

Conversation

yzhou601
Copy link
Collaborator

@yzhou601 yzhou601 commented Nov 9, 2024

Pull Request Description

closes #1871

Checklist

Not all may apply:

  • Schematron validator (EPvalidator.xml) has been updated
  • Sample files have been added/updated (openstudio tasks.rb update_hpxmls)
  • Tests have been added/updated (e.g., HPXMLtoOpenStudio/tests/test*.rb and/or workflow/tests/test*.rb)
  • Documentation has been updated
  • Changelog has been updated
  • openstudio tasks.rb update_measures has been run
  • No unexpected changes to simulation results of sample files

@yzhou601 yzhou601 self-assigned this Nov 12, 2024

if (not heating_system.attached_cooling_system.nil?) && (not heating_system.attached_cooling_system.compressor_type.nil?)
# Based on RESNET DX Modeling Appendix
heating_system.fan_model_type = (heating_system.attached_cooling_system.compressor_type == HPXML::HVACCompressorTypeSingleStage) ? HPXML::HVACFanModelTypePSC : HPXML::HVACFanModelTypeBPM
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For attached heating and cooling systems, grab the cooling compressor type first to default, otherwise follow the previous HEScore assumption (based on efficiency)

cooling_system.fan_model_type = (cooling_system.compressor_type == HPXML::HVACCompressorTypeSingleStage) ? HPXML::HVACFanModelTypePSC : HPXML::HVACFanModelTypeBPM
cooling_system.fan_model_type_isdefaulted = true
elsif [HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
cooling_system.fan_model_type = HPXML::HVACFanModelTypeBPM
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Always assume BPM for minisplit, as they're variable speed systems?

heat_pump.fan_model_type = (heat_pump.compressor_type == HPXML::HVACCompressorTypeSingleStage) ? HPXML::HVACFanModelTypePSC : HPXML::HVACFanModelTypeBPM
heat_pump.fan_model_type_isdefaulted = true
elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
if heat_pump.heating_efficiency_cop > 8.75 / 3.2 # HEScore assumption
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is kept the same as previous assumptions, need to discuss when we have two speed/var speed GSHP capabilities. Not sure for that case should it follow the RESNET assumption dependent on speed number or should it be something else (out of RESNET scope).

fan_power = max_fan_power * (fan_ratio**index)
else
# psc fan
fan_power = max_fan_power * fan_ratio * (0.3 * fan_ratio + 0.7)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Different fan power equations

@@ -4489,21 +4511,19 @@ def self.calc_ceer_from_eer(cooling_system)
def self.set_fan_power_rated(hvac_system, use_eer_cop)
hvac_ap = hvac_system.additional_properties

# Based on RESNET DX Modeling Appendix
psc_ducted_watts_per_cfm = 0.414 # W/cfm, PSC fan
psc_ductless_watts_per_cfm = 0.414 # W/cfm, PSC fan
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So far as I can tell, psc_ductless_watts_per_cfm is not used for any case. Ductless minisplit is always var speed and defaulted to bpm fans. Room AC and PTHPs are outside the scope.

@@ -5076,7 +5096,7 @@ def self.calculate_heat_pump_defrost_load_power_watts(heat_pump, unit_multiplier
end
# cooling capacity and airflow are already with unit multiplier, calculate the capacity w/o multiplier
nominal_cooling_capacity = heat_pump.cooling_capacity / unit_multiplier
defrost_power_fraction = (max_heating_airflow / design_airflow)**3
defrost_power_fraction = calculate_fan_power_from_curve(1.0, max_heating_airflow / design_airflow, heat_pump)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should call the calculate_fan_power_from_curve in the first place, so I captured it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

Update HP models per RESNET HVAC addendum
1 participant