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

Defrost Model Improvements #1674

Merged
merged 30 commits into from
May 18, 2024
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0b08c5f
change E+ defrost inputs
yzhou601 Mar 25, 2024
dc68b98
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
yzhou601 Apr 4, 2024
152071e
first cut of defrost EMS and other equipment objects
yzhou601 Apr 4, 2024
1596977
bugfix, default, and more test files
yzhou601 Apr 4, 2024
6330e3c
docs and hvac unit test added.
yzhou601 Apr 4, 2024
94b7513
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
yzhou601 Apr 25, 2024
b35a7b6
unit multiplier bugfix, update q_dot p_dot calculation
yzhou601 Apr 25, 2024
ef48fd2
p_dot_blower and p_dot_odu_fan
yzhou601 Apr 25, 2024
af7ab86
bugfix
yzhou601 Apr 25, 2024
f186290
unit multiplier fix with blower and fan power accounted
yzhou601 Apr 25, 2024
502f687
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
yzhou601 May 1, 2024
bb25da0
updates for ductless systems
yzhou601 May 1, 2024
a4c855c
Latest results.
May 1, 2024
280d3ca
address a few comments
yzhou601 May 6, 2024
b12ba51
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit May 7, 2024
82d5f84
Latest results.
May 7, 2024
cba595e
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
yzhou601 May 8, 2024
a5b0fcc
refactor inputs
yzhou601 May 14, 2024
27b02b3
bugfix and docs
yzhou601 May 14, 2024
9c7249b
Latest results.
May 14, 2024
079f029
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
yzhou601 May 17, 2024
e2710bb
update measures
yzhou601 May 17, 2024
0f7604c
Merge branch 'defrost_improvements' of https://github.com/NREL/OpenSt…
yzhou601 May 17, 2024
f242ee1
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit May 17, 2024
ed22b0e
Misc language suggestions.
shorowit May 17, 2024
7305b3c
Latest results.
May 17, 2024
3da62e2
address comments
yzhou601 May 17, 2024
1953ddf
oops
yzhou601 May 17, 2024
dfadcfb
Fix error.
shorowit May 18, 2024
512a071
Throw error if old TCM input is used.
shorowit May 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions BuildResidentialHPXML/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,19 @@ Affects the transient calculation of indoor air temperatures. If not provided, t

<br/>

**Simulation Control: Defrost Model Type**

Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-simulation-control'>HPXML Simulation Control</a>) is used.

- **Name:** ``simulation_control_defrost_model_type``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `standard`, `advanced`

<br/>

**Site: Type**

The type of site. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used.
Expand Down
15 changes: 15 additions & 0 deletions BuildResidentialHPXML/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument
arg.setDescription("Affects the transient calculation of indoor air temperatures. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-simulation-control'>HPXML Simulation Control</a>) is used.")
args << arg

defrost_model_type_choices = OpenStudio::StringVector.new
defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeStandard
defrost_model_type_choices << HPXML::AdvancedResearchDefrostModelTypeAdvanced
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('simulation_control_defrost_model_type', defrost_model_type_choices, false)
arg.setDisplayName('Simulation Control: Defrost Model Type')
arg.setDescription("Research feature to select the type of defrost model. Use #{HPXML::AdvancedResearchDefrostModelTypeStandard} for default E+ defrost setting. Use #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} for an improved model that better accounts for load and energy use during defrost; using #{HPXML::AdvancedResearchDefrostModelTypeAdvanced} may impact simulation runtime. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-simulation-control'>HPXML Simulation Control</a>) is used.")
args << arg

site_type_choices = OpenStudio::StringVector.new
site_type_choices << HPXML::SiteTypeSuburban
site_type_choices << HPXML::SiteTypeUrban
Expand Down Expand Up @@ -4022,6 +4030,13 @@ def self.set_header(runner, hpxml, args)
hpxml.header.temperature_capacitance_multiplier = args[:simulation_control_temperature_capacitance_multiplier]
end

if not args[:simulation_control_defrost_model_type].nil?
if (not hpxml.header.defrost_model_type.nil?) && (hpxml.header.defrost_model_type != args[:simulation_control_defrost_model_type])
errors << "'Simulation Control: Defrost Model Type' cannot vary across dwelling units."
end
hpxml.header.defrost_model_type = args[:simulation_control_defrost_model_type]
end

if not args[:emissions_scenario_names].nil?
emissions_scenario_names = args[:emissions_scenario_names].split(',').map(&:strip)
emissions_types = args[:emissions_types].split(',').map(&:strip)
Expand Down
26 changes: 22 additions & 4 deletions BuildResidentialHPXML/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>build_residential_hpxml</name>
<uid>a13a8983-2b01-4930-8af2-42030b6e4233</uid>
<version_id>89391782-f408-4b0e-9801-b5f67d0f8241</version_id>
<version_modified>2024-05-15T20:26:57Z</version_modified>
<version_id>d6c720db-f7cf-4aff-b36e-a6e133c6ddc9</version_id>
<version_modified>2024-05-17T22:42:28Z</version_modified>
<xml_checksum>2C38F48B</xml_checksum>
<class_name>BuildResidentialHPXML</class_name>
<display_name>HPXML Builder</display_name>
Expand Down Expand Up @@ -153,6 +153,24 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>simulation_control_defrost_model_type</name>
<display_name>Simulation Control: Defrost Model Type</display_name>
<description>Research feature to select the type of defrost model. Use standard for default E+ defrost setting. Use advanced for an improved model that better accounts for load and energy use during defrost; using advanced may impact simulation runtime. If not provided, the OS-HPXML default (see &lt;a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-simulation-control'&gt;HPXML Simulation Control&lt;/a&gt;) is used.</description>
<type>Choice</type>
<required>false</required>
<model_dependent>false</model_dependent>
<choices>
<choice>
<value>standard</value>
<display_name>standard</display_name>
</choice>
<choice>
<value>advanced</value>
<display_name>advanced</display_name>
</choice>
</choices>
</argument>
<argument>
<name>site_type</name>
<display_name>Site: Type</display_name>
Expand Down Expand Up @@ -7325,7 +7343,7 @@
<filename>README.md</filename>
<filetype>md</filetype>
<usage_type>readme</usage_type>
<checksum>54A95546</checksum>
<checksum>65DD9340</checksum>
</file>
<file>
<filename>README.md.erb</filename>
Expand All @@ -7342,7 +7360,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>8BEED0CA</checksum>
<checksum>4D94208D</checksum>
</file>
<file>
<filename>geometry.rb</filename>
Expand Down
3 changes: 3 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ __New Features__
- Small change to default flow rate for imbalanced mechanical ventilation systems.
- Updated window default interior shade coefficients to be calculated based on SHGC.
- `AverageCeilingHeight` now used in natural ACH/CFM infiltration calculations.
- **Breaking change**: Replaces `SimulationControl/TemperatureCapacitanceMultiplier` with `SimulationControl/AdvancedResearchFeatures/TemperatureCapacitanceMultiplier`.
- **Breaking change**: Replaces `BuildingSummary/Site/extension/GroundConductivity` with `BuildingSummary/Site/Soil/Conductivity`.
- **Breaking change**: Modeling whole SFA/MF buildings is now specified using a `SoftwareInfo/extension/WholeSFAorMFBuildingSimulation=true` element instead of `building-id=ALL` argument.
- **Breaking change**: Skylights attached to roofs of attics (e.g., with shafts or sun tunnels) must include the `Skylight/AttachedToFloor` element.
Expand Down Expand Up @@ -71,6 +72,8 @@ __New Features__
- Other plug load schedules now use Other schedule fractions per ANSI/RESNET/ICC 301-2022 Addendum C.
- TV plug load schedules now use TV schedule fractions from the American Time Use Survey and monthly multipliers from the 2010 Building America Analysis Spreadsheets.
- Ceiling fan schedules now use ceiling fan schedule fractions and monthly multipliers from ANSI/RESNET/ICC 301-2022 Addendum C.
- Advanced research features:
- Allows an optional boolean input `SimulationControl/AdvancedResearchFeatures/DefrostModelType` for heat pump advanced defrost model.

__Bugfixes__
- Fixes error if using AllowIncreasedFixedCapacities=true w/ HP detailed performance data.
Expand Down
9 changes: 6 additions & 3 deletions HPXMLtoOpenStudio/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1629,7 +1629,8 @@ def add_cooling_system(model, runner, weather, spaces, airloop_map)

airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, runner, cooling_system, heating_system, sequential_cool_load_fracs, sequential_heat_load_fracs,
weather.data.AnnualMaxDrybulb, weather.data.AnnualMinDrybulb,
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg)
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg,
spaces[HPXML::LocationConditionedSpace], @hpxml_header)
yzhou601 marked this conversation as resolved.
Show resolved Hide resolved

elsif [HPXML::HVACTypeEvaporativeCooler].include? cooling_system.cooling_system_type

Expand Down Expand Up @@ -1674,7 +1675,8 @@ def add_heating_system(runner, model, weather, spaces, airloop_map)

airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, runner, nil, heating_system, [0], sequential_heat_load_fracs,
weather.data.AnnualMaxDrybulb, weather.data.AnnualMinDrybulb,
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg)
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg,
spaces[HPXML::LocationConditionedSpace], @hpxml_header)
yzhou601 marked this conversation as resolved.
Show resolved Hide resolved

elsif [HPXML::HVACTypeBoiler].include? heating_system.heating_system_type

Expand Down Expand Up @@ -1737,7 +1739,8 @@ def add_heat_pump(runner, model, weather, spaces, airloop_map)

airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, runner, heat_pump, heat_pump, sequential_cool_load_fracs, sequential_heat_load_fracs,
weather.data.AnnualMaxDrybulb, weather.data.AnnualMinDrybulb,
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg)
conditioned_zone, @hvac_unavailable_periods, @schedules_file, @hpxml_bldg,
spaces[HPXML::LocationConditionedSpace], @hpxml_header)
yzhou601 marked this conversation as resolved.
Show resolved Hide resolved
elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type

airloop_map[sys_id] = HVAC.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump,
Expand Down
18 changes: 9 additions & 9 deletions HPXMLtoOpenStudio/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>hpxm_lto_openstudio</name>
<uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
<version_id>f36ca44a-aed9-492e-b937-3a607152cf54</version_id>
<version_modified>2024-05-17T19:57:43Z</version_modified>
<version_id>1177b622-bdc0-4783-8b3d-fda4f85ee78b</version_id>
<version_modified>2024-05-17T22:35:04Z</version_modified>
<xml_checksum>D8922A73</xml_checksum>
<class_name>HPXMLtoOpenStudio</class_name>
<display_name>HPXML to OpenStudio Translator</display_name>
Expand Down Expand Up @@ -183,7 +183,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>59D5267D</checksum>
<checksum>43AEA737</checksum>
</file>
<file>
<filename>airflow.rb</filename>
Expand All @@ -201,7 +201,7 @@
<filename>constants.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>461EDD72</checksum>
<checksum>7B2EC023</checksum>
</file>
<file>
<filename>constructions.rb</filename>
Expand Down Expand Up @@ -345,13 +345,13 @@
<filename>hpxml.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>6812FFA1</checksum>
<checksum>65FDCD3D</checksum>
</file>
<file>
<filename>hpxml_defaults.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>963F5566</checksum>
<checksum>3D14220A</checksum>
</file>
<file>
<filename>hpxml_schema/HPXML.xsd</filename>
Expand All @@ -369,7 +369,7 @@
<filename>hpxml_schematron/EPvalidator.xml</filename>
<filetype>xml</filetype>
<usage_type>resource</usage_type>
<checksum>A438D5D8</checksum>
<checksum>2FE01913</checksum>
</file>
<file>
<filename>hpxml_schematron/iso-schematron.xsd</filename>
Expand All @@ -381,7 +381,7 @@
<filename>hvac.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>5C9FA161</checksum>
<checksum>D2D922D4</checksum>
</file>
<file>
<filename>hvac_sizing.rb</filename>
Expand Down Expand Up @@ -663,7 +663,7 @@
<filename>test_hvac.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>1F2A5548</checksum>
<checksum>8CDA3FA3</checksum>
</file>
<file>
<filename>test_hvac_sizing.rb</filename>
Expand Down
4 changes: 4 additions & 0 deletions HPXMLtoOpenStudio/resources/constants.rb
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,10 @@ def self.ObjectNamePTAC
return 'packaged terminal air conditioner'
end

def self.ObjectNameBackupSuppHeat
return 'back up supp heat'
end

def self.ObjectNameMiscGrill
return 'misc grill'
end
Expand Down
16 changes: 12 additions & 4 deletions HPXMLtoOpenStudio/resources/hpxml.rb
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ class HPXML < Object
# FUTURE: Move some of these to within child classes (e.g., HPXML::Attic class)
AddressTypeMailing = 'mailing'
AddressTypeStreet = 'street'
AdvancedResearchDefrostModelTypeStandard = 'standard'
AdvancedResearchDefrostModelTypeAdvanced = 'advanced'
AirTypeFanCoil = 'fan coil'
AirTypeGravity = 'gravity'
AirTypeHighVelocity = 'high velocity'
Expand Down Expand Up @@ -775,7 +777,8 @@ def initialize(hpxml_object, *args, **kwargs)
:software_program_version, :apply_ashrae140_assumptions, :temperature_capacitance_multiplier, :timestep,
:sim_begin_month, :sim_begin_day, :sim_end_month, :sim_end_day, :sim_calendar_year,
:eri_calculation_version, :co2index_calculation_version, :energystar_calculation_version,
:iecc_eri_calculation_version, :zerh_calculation_version, :whole_sfa_or_mf_building_sim]
:iecc_eri_calculation_version, :zerh_calculation_version, :whole_sfa_or_mf_building_sim,
:defrost_model_type]
attr_accessor(*ATTRS)
attr_reader(:emissions_scenarios)
attr_reader(:utility_bill_scenarios)
Expand Down Expand Up @@ -835,7 +838,7 @@ def to_doc(doc)
calculation = XMLHelper.add_element(extension, element_name)
XMLHelper.add_element(calculation, 'Version', calculation_version, :string)
end
if (not @timestep.nil?) || (not @sim_begin_month.nil?) || (not @sim_begin_day.nil?) || (not @sim_end_month.nil?) || (not @sim_end_day.nil?) || (not @temperature_capacitance_multiplier.nil?)
if (not @timestep.nil?) || (not @sim_begin_month.nil?) || (not @sim_begin_day.nil?) || (not @sim_end_month.nil?) || (not @sim_end_day.nil?) || (not @temperature_capacitance_multiplier.nil?) || (not @defrost_model_type.nil?)
extension = XMLHelper.create_elements_as_needed(software_info, ['extension'])
simulation_control = XMLHelper.add_element(extension, 'SimulationControl')
XMLHelper.add_element(simulation_control, 'Timestep', @timestep, :integer, @timestep_isdefaulted) unless @timestep.nil?
Expand All @@ -844,7 +847,11 @@ def to_doc(doc)
XMLHelper.add_element(simulation_control, 'EndMonth', @sim_end_month, :integer, @sim_end_month_isdefaulted) unless @sim_end_month.nil?
XMLHelper.add_element(simulation_control, 'EndDayOfMonth', @sim_end_day, :integer, @sim_end_day_isdefaulted) unless @sim_end_day.nil?
XMLHelper.add_element(simulation_control, 'CalendarYear', @sim_calendar_year, :integer, @sim_calendar_year_isdefaulted) unless @sim_calendar_year.nil?
XMLHelper.add_element(simulation_control, 'TemperatureCapacitanceMultiplier', @temperature_capacitance_multiplier, :float, @temperature_capacitance_multiplier_isdefaulted) unless @temperature_capacitance_multiplier.nil?
if (not @defrost_model_type.nil?) || (not @temperature_capacitance_multiplier.nil?)
advanced_research_features = XMLHelper.create_elements_as_needed(simulation_control, ['AdvancedResearchFeatures'])
XMLHelper.add_element(advanced_research_features, 'TemperatureCapacitanceMultiplier', @temperature_capacitance_multiplier, :float, @temperature_capacitance_multiplier_isdefaulted) unless @temperature_capacitance_multiplier.nil?
XMLHelper.add_element(advanced_research_features, 'DefrostModelType', @defrost_model_type, :string, @defrost_model_type_isdefaulted) unless @defrost_model_type.nil?
end
end
@emissions_scenarios.to_doc(software_info)
@utility_bill_scenarios.to_doc(software_info)
Expand All @@ -871,7 +878,8 @@ def from_doc(hpxml)
@sim_end_month = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/EndMonth', :integer)
@sim_end_day = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/EndDayOfMonth', :integer)
@sim_calendar_year = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/CalendarYear', :integer)
@temperature_capacitance_multiplier = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/TemperatureCapacitanceMultiplier', :float)
@temperature_capacitance_multiplier = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/TemperatureCapacitanceMultiplier', :float)
@defrost_model_type = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/AdvancedResearchFeatures/DefrostModelType', :string)
@apply_ashrae140_assumptions = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ApplyASHRAE140Assumptions', :boolean)
@whole_sfa_or_mf_building_sim = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/WholeSFAorMFBuildingSimulation', :boolean)
@emissions_scenarios.from_doc(XMLHelper.get_element(hpxml, 'SoftwareInfo'))
Expand Down
12 changes: 12 additions & 0 deletions HPXMLtoOpenStudio/resources/hpxml_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,11 @@ def self.apply_header(hpxml_header, epw_file)
hpxml_header.temperature_capacitance_multiplier_isdefaulted = true
end

if hpxml_header.defrost_model_type.nil?
hpxml_header.defrost_model_type = HPXML::AdvancedResearchDefrostModelTypeStandard
hpxml_header.defrost_model_type_isdefaulted = true
end
yzhou601 marked this conversation as resolved.
Show resolved Hide resolved

hpxml_header.unavailable_periods.each do |unavailable_period|
if unavailable_period.begin_hour.nil?
unavailable_period.begin_hour = 0
Expand Down Expand Up @@ -1508,6 +1513,13 @@ def self.apply_hvac(runner, hpxml, hpxml_bldg, weather, convert_shared_systems)
heat_pump.backup_heating_lockout_temp_isdefaulted = true
end

# Default advanced defrost
hpxml_bldg.heat_pumps.each do |heat_pump|
next unless [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpRoom, HPXML::HVACTypeHeatPumpPTHP].include? heat_pump.heat_pump_type

heat_pump.backup_heating_lockout_temp_isdefaulted = true
end
yzhou601 marked this conversation as resolved.
Show resolved Hide resolved

# Default electric resistance distribution
hpxml_bldg.heating_systems.each do |heating_system|
next unless heating_system.heating_system_type == HPXML::HVACTypeElectricResistance
Expand Down