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

Additional boiler capabilities #1069

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions BuildResidentialHPXML/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,11 @@ def arguments(model)
arg.setDefaultValue(1)
args << arg

arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_is_condensing', false)
arg.setDisplayName('Heating System: Is Condensing')
arg.setDescription("Whether the heating system is condensing or not. Only used for a non-electric #{HPXML::HVACTypeBoiler}.")
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_airflow_defect_ratio', false)
arg.setDisplayName('Heating System: Airflow Defect Ratio')
arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}.")
Expand Down Expand Up @@ -1361,6 +1366,15 @@ def arguments(model)
arg.setDescription('Enter a date like "Jun 1 - Oct 31".')
args << arg

hot_water_reset_control_choices = OpenStudio::StringVector.new
hot_water_reset_control_choices << 'none'
hot_water_reset_control_choices << HPXML::HotWaterResetControlSeasonal

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hvac_control_hot_water_reset_control', hot_water_reset_control_choices, false)
arg.setDisplayName('HVAC Control: Hot Water Reset Control')
arg.setDescription('Whether the boiler has seasonal hot water outdoor reset control.')
args << arg

duct_leakage_units_choices = OpenStudio::StringVector.new
duct_leakage_units_choices << HPXML::UnitsCFM25
duct_leakage_units_choices << HPXML::UnitsCFM50
Expand Down Expand Up @@ -4362,6 +4376,12 @@ def self.set_heating_systems(hpxml, runner, args)
heating_efficiency_percent = args[:heating_system_heating_efficiency]
end

if heating_system_type == HPXML::HVACTypeBoiler && heating_system_fuel != HPXML::FuelTypeElectricity
if args[:heating_system_is_condensing].is_initialized
heating_system_is_condensing = args[:heating_system_is_condensing].get
end
end

if args[:heating_system_airflow_defect_ratio].is_initialized
if [HPXML::HVACTypeFurnace].include? heating_system_type
airflow_defect_ratio = args[:heating_system_airflow_defect_ratio].get
Expand All @@ -4387,6 +4407,7 @@ def self.set_heating_systems(hpxml, runner, args)
fraction_heat_load_served: fraction_heat_load_served,
heating_efficiency_afue: heating_efficiency_afue,
heating_efficiency_percent: heating_efficiency_percent,
condensing_system: heating_system_is_condensing,
airflow_defect_ratio: airflow_defect_ratio,
is_shared_system: is_shared_system,
number_of_units_served: number_of_units_served,
Expand Down Expand Up @@ -4801,13 +4822,20 @@ def self.set_hvac_control(hpxml, runner, args)

end

if args[:hvac_control_hot_water_reset_control].is_initialized
if args[:hvac_control_hot_water_reset_control].get != 'none'
hvac_control_hot_water_reset_control = args[:hvac_control_hot_water_reset_control].get
end
end

hpxml.hvac_controls.add(id: "HVACControl#{hpxml.hvac_controls.size + 1}",
heating_setpoint_temp: heating_setpoint_temp,
cooling_setpoint_temp: cooling_setpoint_temp,
weekday_heating_setpoints: weekday_heating_setpoints,
weekend_heating_setpoints: weekend_heating_setpoints,
weekday_cooling_setpoints: weekday_cooling_setpoints,
weekend_cooling_setpoints: weekend_cooling_setpoints,
hot_water_reset_control: hvac_control_hot_water_reset_control,
ceiling_fan_cooling_setpoint_temp_offset: ceiling_fan_cooling_setpoint_temp_offset,
seasons_heating_begin_month: seasons_heating_begin_month,
seasons_heating_begin_day: seasons_heating_begin_day,
Expand Down
42 changes: 39 additions & 3 deletions BuildResidentialHPXML/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.0</schema_version>
<name>build_residential_hpxml</name>
<uid>a13a8983-2b01-4930-8af2-42030b6e4233</uid>
<version_id>e73136e8-b2ff-4ec5-9153-b36607ff9d05</version_id>
<version_modified>20220509T163201Z</version_modified>
<version_id>0c07ad74-1436-4be6-9911-09d2b867b0a5</version_id>
<version_modified>20220510T233211Z</version_modified>
<xml_checksum>2C38F48B</xml_checksum>
<class_name>BuildResidentialHPXML</class_name>
<display_name>HPXML Builder</display_name>
Expand Down Expand Up @@ -2046,6 +2046,24 @@
<model_dependent>false</model_dependent>
<default_value>1</default_value>
</argument>
<argument>
<name>heating_system_is_condensing</name>
<display_name>Heating System: Is Condensing</display_name>
<description>Whether the heating system is condensing or not. Only used for a non-electric Boiler.</description>
<type>Boolean</type>
<required>false</required>
<model_dependent>false</model_dependent>
<choices>
<choice>
<value>true</value>
<display_name>true</display_name>
</choice>
<choice>
<value>false</value>
<display_name>false</display_name>
</choice>
</choices>
</argument>
<argument>
<name>heating_system_airflow_defect_ratio</name>
<display_name>Heating System: Airflow Defect Ratio</display_name>
Expand Down Expand Up @@ -2676,6 +2694,24 @@
<required>false</required>
<model_dependent>false</model_dependent>
</argument>
<argument>
<name>hvac_control_hot_water_reset_control</name>
<display_name>HVAC Control: Hot Water Reset Control</display_name>
<description>Whether the boiler has seasonal hot water outdoor reset control.</description>
<type>Choice</type>
<required>false</required>
<model_dependent>false</model_dependent>
<choices>
<choice>
<value>none</value>
<display_name>none</display_name>
</choice>
<choice>
<value>seasonal</value>
<display_name>seasonal</display_name>
</choice>
</choices>
</argument>
<argument>
<name>ducts_leakage_units</name>
<display_name>Ducts: Leakage Units</display_name>
Expand Down Expand Up @@ -6168,7 +6204,7 @@
<filename>measure.rb</filename>
<filetype>rb</filetype>
<usage_type>script</usage_type>
<checksum>F68F8FFD</checksum>
<checksum>5E619674</checksum>
</file>
</files>
</measure>
5 changes: 4 additions & 1 deletion Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ __New Features__
- Allows the separate backup system to be a central system (e.g., central furnace w/ ducts). Previously only non-central system types were allowed.
- Heat pumps with switchover temperatures are now autosized by taking into account the switchover temperature, if higher than the heating design temperature.
- Allows `BackupHeatingLockoutTemperature` as an optional input to control integrated backup heating availability during, e.g., a thermostat heating setback recovery event; defaults to 40F.
- New boiler capabilities:
- Allows optionally specifying whether a boiler is condensing; defaults based on AFUE and fuel type.
- Allows defining an outdoor reset control for a boiler.
- Updates combi boiler model to be simpler, faster, and more robust by using separate space/water heating plant loops and boilers.
- Allows calculating one or more emissions scenarios (e.g., high renewable penetration vs business as usual) for different emissions types (e.g., CO2e).
- Updates HVAC fans to use fan power law (cubic relationship between fan speed and power).
- Allows specifying a `StormWindow` element for windows/skylights; U-factors and SHGCs are automatically adjusted.
Expand All @@ -23,7 +27,6 @@ __New Features__
- The `WaterFixturesUsageMultiplier` input now also applies to general water use internal gains and recirculation pump energy (for some control types).
- Relaxes requirement for `ConditionedFloorAreaServed` for air distribution systems; now only needed if duct surface areas not provided.
- **Breaking change**: Each `VentilationFan` must have one (and only one) `UsedFor...` element set to true.
- Updates combi boiler model to be simpler, faster, and more robust by using separate space/water heating plant loops and boilers.
- Switches from EnergyPlus SQL output to MessagePack output for faster performance and reduced file sizes when requesting timeseries outputs.
- Allows MessagePack annual/timeseries output files to be generated instead of CSV/JSON.
- Switches from ScriptF to CarrollMRT radiant exchange algorithm.
Expand Down
2 changes: 1 addition & 1 deletion HPXMLtoOpenStudio/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1507,7 +1507,7 @@ def self.add_heating_system(runner, model, spaces, airloop_map)

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

airloop_map[sys_id] = HVAC.apply_boiler(model, runner, heating_system,
airloop_map[sys_id] = HVAC.apply_boiler(model, runner, heating_system, @hpxml.hvac_controls[0],
sequential_heat_load_fracs, living_zone)

elsif [HPXML::HVACTypeElectricResistance].include? heating_system.heating_system_type
Expand Down
Loading