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 all 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
5 changes: 4 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ __New Features__
- Allows optional ground diffusivity input.
- Updates to using G-Functions from the [G-Function Library for Modeling Vertical Bore Ground Heat Exchanger](https://gdr.openei.org/submissions/1325).
- Updated heating/cooling performance curves to reflect newer equipment.
- Adds geothermal loop outputs (number/length of boreholes) to annual results output file.
- Allows optional `Ducts/DuctShape` and `Ducts/DuctFractionRectangular` inputs, which affect duct effective R-value used for modeling.
- Allows optional `HeatingAutosizingFactor`, `CoolingAutosizingFactor`, `BackupHeatingAutosizingFactor` inputs to scale HVAC capacities for autosized equipment.
- Allows optional `HeatingAutosizingLimit`, `CoolingAutosizingLimit`, `BackupHeatingAutosizingLimit` inputs to set maximum HVAC capacities ceiling for autosized equipment.
Expand Down Expand Up @@ -61,7 +62,6 @@ __New Features__
- Adds net energy and net electricity timeseries output columns even when there is no PV or generator.
- Adds more error-checking for inappropriate inputs (e.g., HVAC SHR=0 or clothes washer IMEF=0).
- Allow alternative label energy use (W) input for ceiling fans.
- Adds geothermal loop outputs (number/length of boreholes) to annual results output file.
- Updates to run_simulation.rb script:
- Allows requesting timeseries outputs with different frequencies (e.g., `--hourly enduses --monthly temperatures`).
- **Breaking change**: Deprecates `--add-timeseries-output-variable`; EnergyPlus output variables can now be requested like other timeseries categories (using e.g. `--hourly 'Zone People Occupant Count'`).
Expand All @@ -71,6 +71,9 @@ __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:
- **Breaking change**: Replaces `SimulationControl/TemperatureCapacitanceMultiplier` with `SimulationControl/AdvancedResearchFeatures/TemperatureCapacitanceMultiplier`.
- 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,
@hpxml_header)

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,
@hpxml_header)

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,
@hpxml_header)
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>235ba31f-08b7-42da-9524-674d6b212611</version_id>
<version_modified>2024-05-18T14:58:34Z</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>4D2BAEDD</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>DCEA4986</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>960E3924</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>0370F183</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
9 changes: 7 additions & 2 deletions HPXMLtoOpenStudio/resources/hpxml_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def self.apply(runner, hpxml, hpxml_bldg, eri_version, weather, epw_file: nil, s

add_zones_spaces_if_needed(hpxml, hpxml_bldg, cfa)

apply_header(hpxml.header, epw_file)
apply_header(hpxml.header, epw_file, hpxml_bldg)
apply_building(hpxml_bldg, epw_file)
apply_emissions_scenarios(hpxml.header, has_fuel)
apply_utility_bill_scenarios(runner, hpxml.header, hpxml_bldg, has_fuel)
Expand Down Expand Up @@ -134,7 +134,7 @@ def self.add_zones_spaces_if_needed(hpxml, hpxml_bldg, cfa)
end
end

def self.apply_header(hpxml_header, epw_file)
def self.apply_header(hpxml_header, epw_file, hpxml_bldg)
if hpxml_header.timestep.nil?
hpxml_header.timestep = 60
hpxml_header.timestep_isdefaulted = true
Expand Down 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_bldg.heat_pumps.any? { |hp| [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpRoom, HPXML::HVACTypeHeatPumpPTHP].include? hp.heat_pump_type })
hpxml_header.defrost_model_type = HPXML::AdvancedResearchDefrostModelTypeStandard
hpxml_header.defrost_model_type_isdefaulted = true
end

hpxml_header.unavailable_periods.each do |unavailable_period|
if unavailable_period.begin_hour.nil?
unavailable_period.begin_hour = 0
Expand Down