Skip to content

Commit 0a7a186

Browse files
authored
Merge pull request #806 from NatLabRockies/latest-os-hpxml
Latest OS-HPXML
2 parents b7e0dc3 + ed0013e commit 0a7a186

246 files changed

Lines changed: 4941 additions & 78 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎Changelog.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ __New Features__
88
- Compressor lockout temperatures for Rated Home defaults and Reference Home updated from 0F (single/two stage) and -20F (variable speed) to 5F and -10F, respectively.
99
- Dual-fuel heat pumps now have the HP sized using the greater of the heating design temperature and 25F.
1010
- Pan heaters no longer operate when the outdoor temperature is below the compressor lockout temperature.
11+
- Utility bill scenarios can now be defined for the Rated/Reference Homes; see [the documentation](https://openstudio-eri.readthedocs.io/en/latest/workflow_inputs.html#hpxml-utility-bill-scenarios) for more information.
1112
- The `Battery/NominalCapacity` input is no longer used.
1213
- Output updates:
1314
- **Breaking change**: Annual peak load outputs for heating and cooling now use units of Btu/h instead of kBtu/h for consistency with other outputs.

‎docs/source/workflow_inputs.rst‎

Lines changed: 120 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,125 @@ The OpenStudio-ERI calculation(s) to be performed are entered in ``/HPXML/Softwa
8383
For example, it does not check that the home meets all ENERGY STAR and DOE Efficient New Homes Mandatory Requirements.
8484
It is the software tool's responsibility to perform these additional steps.
8585

86+
.. _hpxml_utility_bill_scenarios:
87+
88+
HPXML Utility Bill Scenarios
89+
****************************
90+
91+
One or more utility bill scenarios can be entered as an ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario``.
92+
If not entered, utility bills will not be calculated.
93+
94+
================================ ======== ===== =========== ======== ======== ========================================================
95+
Element Type Units Constraints Required Default Notes
96+
================================ ======== ===== =========== ======== ======== ========================================================
97+
``Name`` string Yes Name of the scenario (which shows up in the output file)
98+
``UtilityRate`` element No Utility rate(s) for a given fuel type; multiple are allowed
99+
``PVCompensation`` element No PV compensation information
100+
================================ ======== ===== =========== ======== ======== ========================================================
101+
102+
See :ref:`bill_outputs` for a description of how the calculated utility bills appear in the output files.
103+
104+
.. _electricity_rates:
105+
106+
Electricity Rates
107+
~~~~~~~~~~~~~~~~~
108+
109+
For each scenario, electricity rates can be optionally entered as an ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario/UtilityRate``.
110+
Electricity rates can be entered using Simple inputs or Detailed inputs.
111+
112+
**Simple**
113+
114+
For simple utility rate structures, inputs can be entered using a fixed charge and a marginal rate.
115+
116+
================================ ======== ======= =========== ======== ======== ====================
117+
Element Type Units Constraints Required Default Notes
118+
================================ ======== ======= =========== ======== ======== ====================
119+
``FuelType`` string electricity Yes Fuel type
120+
``FixedCharge`` double $/month >= 0 No 12.0 Monthly fixed charge
121+
``MarginalRate`` double $/kWh >= 0 No See [#]_ Marginal flat rate
122+
================================ ======== ======= =========== ======== ======== ====================
123+
124+
.. [#] If MarginalRate not provided, it defaults to state-level value based on EIA SEDS data, available at ``hpxml-measures/ReportUtilityBills/resources/simple_rates/pr_all_update.csv``.
125+
126+
**Detailed**
127+
128+
For detailed utility rate structures, inputs can be entered using a tariff JSON file.
129+
130+
================================ ======== ======= =========== ======== ======== =============================
131+
Element Type Units Constraints Required Default Notes
132+
================================ ======== ======= =========== ======== ======== =============================
133+
``FuelType`` string electricity Yes Fuel type
134+
``TariffFilePath`` string Yes Path to tariff JSON file [#]_
135+
================================ ======== ======= =========== ======== ======== =============================
136+
137+
.. [#] TariffFilePath must point to a JSON file with utility rate structure information.
138+
Tariff files can describe flat, tiered, time-of-use, tiered time-of-use, or real-time pricing rates.
139+
Sources of tariff files include `OpenEI's U.S. Utility Rate Database (URDB) <https://openei.org/wiki/Utility_Rate_Database>`_;
140+
a large set of residential OpenEI URDB rates for U.S. utilities are included at ``hpxml-measures/ReportUtilityBills/resources/detailed_rates/openei_rates.zip``.
141+
Additional sample tariff files can be found in ``hpxml-measures/ReportUtilityBills/resources/detailed_rates``.
142+
Tariff files are formatted based on `OpenEI API version 7 <https://openei.org/services/doc/rest/util_rates/?version=7#response-fields>`_.
143+
144+
Fuel Rates
145+
~~~~~~~~~~
146+
147+
For each scenario, fuel rates can be optionally entered as an ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario/UtilityRate``.
148+
149+
================================ ======== ======== =========== ======== ======== ====================
150+
Element Type Units Constraints Required Default Notes
151+
================================ ======== ======== =========== ======== ======== ====================
152+
``FuelType`` string See [#]_ Yes Fuel type
153+
``FixedCharge`` double $/month >= 0 No See [#]_ Monthly fixed charge
154+
``MarginalRate`` double See [#]_ >= 0 No See [#]_ Marginal flat rate
155+
================================ ======== ======== =========== ======== ======== ====================
156+
157+
.. [#] FuelType choices are "natural gas", "propane", "fuel oil", "coal", "wood", and "wood pellets".
158+
.. [#] FixedCharge defaults to $12/month for natural gas and $0/month for other fuels.
159+
.. [#] MarginalRate units are $/therm for natural gas, $/gallon for propane and fuel oil, and $/kBtu for other fuels.
160+
.. [#] If MarginalRate not provided, it defaults to state-level value based on EIA SEDS data, available at ``hpxml-measures/ReportUtilityBills/resources/simple_rates/pr_all_update.csv``.
161+
162+
PV Compensation
163+
~~~~~~~~~~~~~~~
164+
165+
For each scenario, PV compensation information can be optionally entered in ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario/PVCompensation``.
166+
167+
============================================================= ======== ======= =========== ======== ============== ==============================
168+
Element Type Units Constraints Required Default Notes
169+
============================================================= ======== ======= =========== ======== ============== ==============================
170+
``CompensationType[NetMetering | FeedInTariff]`` element No NetMetering PV compensation type
171+
``MonthlyGridConnectionFee[Units="$/kW" or Units="$"]/Value`` double No 0 PV monthly grid connection fee
172+
============================================================= ======== ======= =========== ======== ============== ==============================
173+
174+
**Net-Metering**
175+
176+
If the PV compensation type is net-metering, additional information can be entered in ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario/PVCompensation/CompensationType/NetMetering``.
177+
178+
================================ ======== ======= =========== ======== ============== =============================================================
179+
Element Type Units Constraints Required Default Notes
180+
================================ ======== ======= =========== ======== ============== =============================================================
181+
``AnnualExcessSellbackRateType`` string See [#]_ No User-Specified Net metering annual excess sellback rate type [#]_
182+
``AnnualExcessSellbackRate`` double $/kWh >= 0 No [#]_ 0.03 User-specified net metering annual excess sellback rate [#]_
183+
================================ ======== ======= =========== ======== ============== =============================================================
184+
185+
.. [#] AnnualExcessSellbackRateType choices are "User-Specified" and "Retail Electricity Cost".
186+
.. [#] When annual PV production exceeds the annual building electricity consumption, this rate, which is often significantly below the retail rate, determines the value of the excess electricity sold back to the utility.
187+
This may happen to offset gas consumption, for example.
188+
.. [#] AnnualExcessSellbackRate is only used when AnnualExcessSellbackRateType="User-Specified".
189+
.. [#] Since modeled electricity consumption will not change from one year to the next, "indefinite rollover" of annual excess generation credit is best approximated by setting "User-Specified" and entering a rate of zero.
190+
191+
**Feed-in Tariff**
192+
193+
If the PV compensation type is feed-in tariff, additional information can be entered in ``/HPXML/SoftwareInfo/extension/UtilityBillScenarios/UtilityBillScenario/PVCompensation/CompensationType/FeedInTariff``.
194+
195+
============================ ======== ======= =========== ======== ============== ========================
196+
Element Type Units Constraints Required Default Notes
197+
============================ ======== ======= =========== ======== ============== ========================
198+
``FeedInTariffRate`` double $/kWh >= 0 No 0.12 Feed-in tariff rate [#]_
199+
============================ ======== ======= =========== ======== ============== ========================
200+
201+
.. [#] FeedInTariffRate applies to full (not excess) PV production.
202+
Some utilities/regions may have a feed-in tariff policy where compensation occurs for *excess* PV production (i.e., PV-generated electricity sent to the grid that is not immediately consumed by the building), rather than *full* PV production.
203+
OpenStudio-ERI is currently unable to calculate utility bills for such a feed-in tariff policy.
204+
86205
HPXML Building Site
87206
-------------------
88207

@@ -167,7 +286,7 @@ Weather information is entered in ``/HPXML/Building/BuildingDetails/ClimateandRi
167286

168287
.. [#] If EPWFilePath not provided, defaults based on the U.S. TMY3 weather station closest to the zip code centroid.
169288
The mapping can be found at ``hpxml-measures/HPXMLtoOpenStudio/resources/data/zipcode_weather_stations.csv``.
170-
.. [#] A full set of U.S. TMY3 weather files can be `downloaded here <https://data.nrel.gov/system/files/128/tmy3s-cache-csv.zip>`_.
289+
.. [#] The full set of U.S. TMY3 weather files can be `downloaded here <https://data.nlr.gov/system/files/128/1774980365-USA-TMY3-EPW.zip>`_.
171290
172291
HPXML Climate Zones
173292
-------------------

‎docs/source/workflow_outputs.rst‎

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Upon completing an OpenStudio-ERI run, a variety of summary output files and sim
1313
- :ref:`home_timeseries_outputs_csv`
1414
- :ref:`home_configurations_hpxml`
1515
- :ref:`home_energyplus_files`
16+
- :ref:`bill_outputs`
1617
- :ref:`hers_diagnostic_output`
1718

1819
Output directories will reflect the requested :ref:`hpxml_calculations`:
@@ -344,8 +345,8 @@ So the sum of all end uses for a given fuel (e.g., sum of all "End Use: Natural
344345
End Use: Wood Pellets: Lighting (MBtu) Not used by OS-ERI
345346
End Use: Wood Pellets: Fireplace (MBtu) Not used by OS-ERI
346347
End Use: Wood Pellets: Generator (MBtu) Positive value for any fuel consumed
347-
End Use: Coal: Heating (MBtu) Excludes heat pump backup
348-
End Use: Coal: Heating Heat Pump Backup (MBtu)
348+
End Use: Coal: Heating (MBtu) Not used by OS-ERI
349+
End Use: Coal: Heating Heat Pump Backup (MBtu) Not used by OS-ERI
349350
End Use: Coal: Hot Water (MBtu) Not used by OS-ERI
350351
End Use: Coal: Clothes Dryer (MBtu) Not used by OS-ERI
351352
End Use: Coal: Range/Oven (MBtu) Not used by OS-ERI
@@ -701,6 +702,55 @@ In addition, raw EnergyPlus simulation input/output files are available for each
701702
The EnergyPlus input/output files are made available for inspection, but the outputs for certain situations can be misleading if one does not know how the model was created.
702703
If there are additional outputs of interest that are not available in the annual/timeseries output files, please send us a request.
703704

705+
.. _bill_outputs:
706+
707+
Home Utility Bills (CSV)
708+
------------------------
709+
710+
OpenStudio-ERI can optionally generate annual/monthly utility bill output files (e.g., ``RatedHome_AnnualBills.csv`` and ``RatedHome_MonthlyBills.csv`` for the Rated Home).
711+
712+
**Note**: These output files are only available when utility bill scenarios are specified.
713+
When no utility bill scenarios are specified, utility bill output files are not generated.
714+
See :ref:`hpxml_utility_bill_scenarios` for more information about specifying utility bill scenarios.
715+
716+
Annual Bills by Fuel Use
717+
~~~~~~~~~~~~~~~~~~~~~~~~
718+
719+
Annual results for each utility bill scenario defined in the HPXML file are listed as shown below.
720+
721+
================================================= ====================
722+
Type Notes
723+
================================================= ====================
724+
<ScenarioName>: Total (USD) Scenario annual total charges.
725+
<ScenarioName>: Electricity: Fixed (USD) Scenario annual fixed charges for electricity.
726+
<ScenarioName>: Electricity: Energy (USD) Scenario annual energy charges for electricity.
727+
<ScenarioName>: Electricity: PV Credit (USD) Scenario annual production credit (negative value) for PV.
728+
<ScenarioName>: Electricity: Total (USD) Scenario annual total charges for electricity.
729+
<ScenarioName>: Natural Gas: Fixed (USD) Scenario annual fixed charges for natural gas.
730+
<ScenarioName>: Natural Gas: Energy (USD) Scenario annual energy charges for natural gas.
731+
<ScenarioName>: Natural Gas: Total (USD) Scenario annual total charges for natural gas.
732+
<ScenarioName>: Fuel Oil: Fixed (USD) Scenario annual fixed charges for fuel oil.
733+
<ScenarioName>: Fuel Oil: Energy (USD) Scenario annual energy charges for fuel oil.
734+
<ScenarioName>: Fuel Oil: Total (USD) Scenario annual total charges for fuel oil.
735+
<ScenarioName>: Propane: Fixed (USD) Scenario annual fixed charges for propane.
736+
<ScenarioName>: Propane: Energy (USD) Scenario annual energy charges for propane.
737+
<ScenarioName>: Propane: Total (USD) Scenario annual total charges for propane.
738+
<ScenarioName>: Wood Cord: Fixed (USD) Scenario annual fixed charges for wood cord.
739+
<ScenarioName>: Wood Cord: Energy (USD) Scenario annual energy charges for wood cord.
740+
<ScenarioName>: Wood Cord: Total (USD) Scenario annual total charges for wood cord.
741+
<ScenarioName>: Wood Pellets: Fixed (USD) Scenario annual fixed charges for wood pellets.
742+
<ScenarioName>: Wood Pellets: Energy (USD) Scenario annual energy charges for wood pellets.
743+
<ScenarioName>: Wood Pellets: Total (USD) Scenario annual total charges for wood pellets.
744+
<ScenarioName>: Coal: Fixed (USD) Not used by OS-ERI
745+
<ScenarioName>: Coal: Energy (USD) Not used by OS-ERI
746+
<ScenarioName>: Coal: Total (USD) Not used by OS-ERI
747+
================================================= ====================
748+
749+
Monthly Bills by Fuel Use
750+
~~~~~~~~~~~~~~~~~~~~~~~~~
751+
752+
Monthly results for each utility bill scenario defined in the HPXML file are listed as rows corresponding to Month, and columns corresponding to Type.
753+
704754
.. _hers_diagnostic_output:
705755

706756
HERS Diagnostic Output

‎hpxml-measures/BuildResidentialHPXML/measure.rb‎

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2278,25 +2278,21 @@ def set_attics(hpxml_bldg, args)
22782278
'walls' => { 'surfaces' => hpxml_bldg.walls, 'ids' => [] },
22792279
'floors' => { 'surfaces' => hpxml_bldg.floors, 'ids' => [] } }
22802280

2281-
attic_locations = [HPXML::LocationAtticUnconditioned, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented]
2282-
surf_ids.values.each do |surf_hash|
2281+
attic_locations = [HPXML::LocationAtticUnconditioned,
2282+
HPXML::LocationAtticUnvented,
2283+
HPXML::LocationAtticVented]
2284+
2285+
surf_ids.each do |surf_type, surf_hash|
22832286
surf_hash['surfaces'].each do |surface|
2284-
next if (not attic_locations.include? surface.interior_adjacent_to) &&
2285-
(not attic_locations.include? surface.exterior_adjacent_to)
2287+
next unless (attic_locations.include? surface.interior_adjacent_to) ||
2288+
(attic_locations.include? surface.exterior_adjacent_to) ||
2289+
(surf_type == 'roofs' && [surface.interior_adjacent_to, surface.exterior_adjacent_to].include?(HPXML::LocationConditionedSpace)) ||
2290+
(surf_type == 'floors' && surface.exterior_adjacent_to == HPXML::LocationOtherHousingUnit && surface.floor_or_ceiling == HPXML::FloorOrCeilingCeiling)
22862291

22872292
surf_hash['ids'] << surface.id
22882293
end
22892294
end
22902295

2291-
# Add attached roofs for cathedral ceiling
2292-
conditioned_space = HPXML::LocationConditionedSpace
2293-
surf_ids['roofs']['surfaces'].each do |surface|
2294-
next if (conditioned_space != surface.interior_adjacent_to) &&
2295-
(conditioned_space != surface.exterior_adjacent_to)
2296-
2297-
surf_ids['roofs']['ids'] << surface.id
2298-
end
2299-
23002296
hpxml_bldg.attics.add(id: "Attic#{hpxml_bldg.attics.size + 1}",
23012297
attic_type: args[:geometry_attic_type_attic_type],
23022298
attached_to_roof_idrefs: surf_ids['roofs']['ids'],
@@ -2327,7 +2323,8 @@ def set_foundations(hpxml_bldg, args)
23272323
next unless (foundation_locations.include? surface.interior_adjacent_to) ||
23282324
(foundation_locations.include? surface.exterior_adjacent_to) ||
23292325
(surf_type == 'slabs' && surface.interior_adjacent_to == HPXML::LocationConditionedSpace) ||
2330-
(surf_type == 'floors' && [HPXML::LocationOutside, HPXML::LocationManufacturedHomeUnderBelly].include?(surface.exterior_adjacent_to))
2326+
(surf_type == 'floors' && [HPXML::LocationOutside, HPXML::LocationManufacturedHomeUnderBelly].include?(surface.exterior_adjacent_to)) ||
2327+
(surf_type == 'floors' && surface.exterior_adjacent_to == HPXML::LocationOtherHousingUnit && surface.floor_or_ceiling == HPXML::FloorOrCeilingFloor)
23312328

23322329
surf_hash['ids'] << surface.id
23332330
end

0 commit comments

Comments
 (0)