Skip to content
118 changes: 61 additions & 57 deletions BuildingSync.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -2143,6 +2143,9 @@
<xs:documentation>ID number of measure.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element ref="auc:MeasureSavingsAnalysis" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="IDref" type="xs:IDREF" use="required"/>
</xs:complexType>
</xs:element>
Expand Down Expand Up @@ -4488,63 +4491,7 @@
<xs:documentation>Long description of measure.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MeasureSavingsAnalysis" minOccurs="0">
<xs:annotation>
<xs:documentation>Energy and cost effectiveness data for an individual measure. In most cases, this data depends on the other measures included in the package, and should be entered at the package level under Scenarios.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MeasureRank" minOccurs="0">
<xs:annotation>
<xs:documentation>Sequence in which the measure was analyzed relative to other measures. Ranking should be 1 if it is analyzed first, 2 if analyzed after Measure 1 is applied, etc. This accounts for interactive effects between measures. Ranking may be 1 for all measures if they are not analyzed as a package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute ref="auc:Source"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="auc:ReferenceCase" minOccurs="0"/>
<xs:element ref="auc:CalculationMethod" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsSiteEnergy" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsSourceEnergy" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsCost" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsByFuels" minOccurs="0"/>
<xs:element ref="auc:SummerPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:WinterPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:AnnualPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:AnnualDemandSavingsCost" minOccurs="0"/>
<xs:element ref="auc:AnnualWaterSavings" minOccurs="0"/>
<xs:element ref="auc:AnnualWaterCostSavings" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsAverageGHGEmissions" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsMarginalGHGEmissions" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsGHGEmissionIntensity" minOccurs="0"/>
<xs:element ref="auc:OMCostAnnualSavings" minOccurs="0"/>
<xs:element name="OtherCostAnnualSavings" minOccurs="0">
<xs:annotation>
<xs:documentation>Annual savings for other non-energy costs, or increased revenue caused by measure implementation. ($)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute ref="auc:Source"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="auc:EquipmentDisposalAndSalvageCosts" minOccurs="0"/>
<xs:element ref="auc:FundingFromIncentives" minOccurs="0"/>
<xs:element ref="auc:FundingFromTaxCredits" minOccurs="0"/>
<xs:element ref="auc:NPVofTaxImplications" minOccurs="0"/>
<xs:element ref="auc:CostEffectivenessScreeningMethod" minOccurs="0"/>
<xs:element ref="auc:SimplePayback" minOccurs="0"/>
<xs:element ref="auc:NetPresentValue" minOccurs="0"/>
<xs:element ref="auc:InternalRateOfReturn" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element ref="auc:MeasureSavingsAnalysis" minOccurs="0"/>
<xs:element ref="auc:MVCost" minOccurs="0"/>
<xs:element name="MVOption" minOccurs="0">
<xs:annotation>
Expand Down Expand Up @@ -16913,4 +16860,61 @@
<xs:documentation>Identifier for the equipment.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MeasureSavingsAnalysis">
<xs:annotation>
<xs:documentation>Energy and cost effectiveness data for an individual measure. In most cases, this data depends on the other measures included in the package, and should be entered at the package level under Scenarios.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MeasureRank" minOccurs="0">
<xs:annotation>
<xs:documentation>Sequence in which the measure was analyzed relative to other measures. Ranking should be 1 if it is analyzed first, 2 if analyzed after Measure 1 is applied, etc. This accounts for interactive effects between measures. Ranking may be 1 for all measures if they are not analyzed as a package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute ref="auc:Source"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="auc:ReferenceCase" minOccurs="0"/>
<xs:element ref="auc:CalculationMethod" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsSiteEnergy" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsSourceEnergy" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsCost" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsByFuels" minOccurs="0"/>
<xs:element ref="auc:SummerPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:WinterPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:AnnualPeakElectricityReduction" minOccurs="0"/>
<xs:element ref="auc:AnnualDemandSavingsCost" minOccurs="0"/>
<xs:element ref="auc:AnnualWaterSavings" minOccurs="0"/>
<xs:element ref="auc:AnnualWaterCostSavings" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsAverageGHGEmissions" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsMarginalGHGEmissions" minOccurs="0"/>
<xs:element ref="auc:AnnualSavingsGHGEmissionIntensity" minOccurs="0"/>
<xs:element ref="auc:OMCostAnnualSavings" minOccurs="0"/>
<xs:element name="OtherCostAnnualSavings" minOccurs="0">
<xs:annotation>
<xs:documentation>Annual savings for other non-energy costs, or increased revenue caused by measure implementation. ($)</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute ref="auc:Source"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element ref="auc:EquipmentDisposalAndSalvageCosts" minOccurs="0"/>
<xs:element ref="auc:FundingFromIncentives" minOccurs="0"/>
<xs:element ref="auc:FundingFromTaxCredits" minOccurs="0"/>
<xs:element ref="auc:NPVofTaxImplications" minOccurs="0"/>
<xs:element ref="auc:CostEffectivenessScreeningMethod" minOccurs="0"/>
<xs:element ref="auc:SimplePayback" minOccurs="0"/>
<xs:element ref="auc:NetPresentValue" minOccurs="0"/>
<xs:element ref="auc:InternalRateOfReturn" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
20 changes: 10 additions & 10 deletions examples/AT_example_AS_conversion_audit_report.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4259,7 +4259,7 @@
<auc:OMCostAnnualSavings>3000.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>500.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>6.0</auc:UsefulLife>
<auc:UsefulLife>6</auc:UsefulLife>
<auc:MeasureTotalFirstCost>10000.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4297,7 +4297,7 @@
<auc:OMCostAnnualSavings>900.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>200.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>10.0</auc:UsefulLife>
<auc:UsefulLife>10</auc:UsefulLife>
<auc:MeasureTotalFirstCost>1800.0</auc:MeasureTotalFirstCost>
<auc:ImplementationStatus>Proposed</auc:ImplementationStatus>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4335,7 +4335,7 @@
<auc:OMCostAnnualSavings>2800.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>1500.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>15.0</auc:UsefulLife>
<auc:UsefulLife>15</auc:UsefulLife>
<auc:MeasureTotalFirstCost>50000.0</auc:MeasureTotalFirstCost>
<auc:ImplementationStatus>Proposed</auc:ImplementationStatus>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4373,7 +4373,7 @@
<auc:OMCostAnnualSavings>1200.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>500.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>10.0</auc:UsefulLife>
<auc:UsefulLife>10</auc:UsefulLife>
<auc:MeasureTotalFirstCost>20000.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4411,7 +4411,7 @@
<auc:OMCostAnnualSavings>1800.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>0.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>12.0</auc:UsefulLife>
<auc:UsefulLife>12</auc:UsefulLife>
<auc:MeasureTotalFirstCost>10000.0</auc:MeasureTotalFirstCost>
<auc:ImplementationStatus>Evaluated</auc:ImplementationStatus>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4449,7 +4449,7 @@
<auc:OMCostAnnualSavings>150.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>100.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>20.0</auc:UsefulLife>
<auc:UsefulLife>20</auc:UsefulLife>
<auc:MeasureTotalFirstCost>400.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4487,7 +4487,7 @@
<auc:OMCostAnnualSavings>200.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>50.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>20.0</auc:UsefulLife>
<auc:UsefulLife>20</auc:UsefulLife>
<auc:MeasureTotalFirstCost>250.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4525,7 +4525,7 @@
<auc:OMCostAnnualSavings>100.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>0.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>20.0</auc:UsefulLife>
<auc:UsefulLife>20</auc:UsefulLife>
<auc:MeasureTotalFirstCost>300.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4563,7 +4563,7 @@
<auc:OMCostAnnualSavings>300.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>1000.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>10.0</auc:UsefulLife>
<auc:UsefulLife>10</auc:UsefulLife>
<auc:MeasureTotalFirstCost>4800.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down Expand Up @@ -4601,7 +4601,7 @@
<auc:OMCostAnnualSavings>150.0</auc:OMCostAnnualSavings>
<auc:FundingFromIncentives>0.0</auc:FundingFromIncentives>
</auc:MeasureSavingsAnalysis>
<auc:UsefulLife>10.0</auc:UsefulLife>
<auc:UsefulLife>10</auc:UsefulLife>
<auc:MeasureTotalFirstCost>1200.0</auc:MeasureTotalFirstCost>
<auc:Recommended>true</auc:Recommended>
<auc:UserDefinedFields>
Expand Down
84 changes: 84 additions & 0 deletions proposals/2022/Add Package-Measure Energy Savings Analyses.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Add Package-Measure Energy Savings Analyses

## Overview

Currently, BuildingSync XML schema supports the exchange of (standalone) package- and measure-level energy savings analysis data, but it does not support the exchange of (contextual) package-measure-level energy savings analysis data.

This proposal is to add elements to the schema to support the exchange of package-measure-level energy savings analysis data.

## Justification

The term "package-level" refers to data that are intrinsic to the package of measures.
For a given `<auc:PackageOfMeasures>` element, package-level energy savings analysis data are exchanged using the `<auc:AnalysisSavingsByFuel>` child element.

The interpretation of package-level energy savings analysis data is that said data applies to the package of measures as a whole (i.e., the net savings for all measures of said package).

The term "measure-level" refers to data that are intrinsic to the measure.
For a given `<auc:Measure>` element, measure-level energy savings analysis data are exchanged using the `<auc:MeasureSavingsAnalysis>` child element, which includes a `<auc:AnalysisSavingsByFuel>` child element.

The interpretation of measure-level energy savings analysis data is that said data applies to the measure as a whole (i.e., not in the context of any specific package of measures).

### Example

Suppose that we have 2 arbitrary measures, #1 and #2.
Implementation of the first measure (as a whole) would cost $100 and would provide electricity savings only.
Implementation of the second measure (as a whole) would cost $200 and would provide natural gas savings only.

| Measure ID | Cost ($) | Electricity Savings (kWh/yr) | Natural Gas Savings (therms/yr) |
| - | - | - | - |
| #1 | 100 | 50 | 0 |
| #2 | 200 | 0 | 100 |
| **Total:** | 300 | 50 | 100 |

Suppose that we have 1 arbitrary package, #1, that includes measures #1 and #2.
When purchased together, the vendor offers a $25 discount on measure #1.
Moreover, when implemented with measure #2, measure #1 also provides an additional electricity saving of 25 kWh per year.

Hence, at the package-level, we have the following data:

| Package ID | Measure IDs | Cost ($) | Electricity Savings (kWh/yr) | Natural Gas Savings (therms/yr) |
| - | - | - | - | - |
| #1 | #1, #2 | 275 | 75 | 100 |

The above table conveys both the discount and the additional electricity savings, but it does not attribute the discount or the additional electricity savings to a specific measure (or measures).

The data are different when the measure is considered standalone or in the context of a specific package, and hence, at the package-measure-level, we have the following data:

| Measure ID | Package ID | Cost ($) | Electricity Savings (kWh/yr) | Natural Gas Savings (therms/yr) |
| - | - | - | - | - |
| #1 | #1 | <span style="color:red;background-color:yellow;">75</span> | <span style="color:red;background-color:yellow;">75</span> | 0 |
| #2 | #1 | 200 | 0 | 100 |
| | **Total:** | <span style="color:red;background-color:yellow;">275</span> | <span style="color:red;background-color:yellow;">75</span> | 100 |

## Implementation

BuildingSync XML schema supports the many-to-many association of packages and measures using the `<auc:MeasureID>` element.

This proposal is to promote the `<auc:MeasureSavingsAnalysis>` element to the top-level (instead of its definition being inlined) and then to add the `<auc:MeasureSavingsAnalysis>` element as a child element of the `<auc:MeasureID>` element.

```xml
<xs:element name="MeasureIDs" minOccurs="0">
<xs:annotation>
<xs:documentation>ID numbers for measures included in the package. Multiple items may be selected.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="MeasureID" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>ID number of measure.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="IDref" type="xs:IDREF" use="required"/>
<xs:sequence>
<xs:element ref="auc:MeasureSavingsAnalysis" minOccurs="0"/>
<!-- Question for reviewers: other elements? -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
```

**Question for reviewers:**
Are there other elements that would make sense to assert on the relationship (e.g., `<auc:MVCost>`, `<auc:MVOption>`, `<auc:UsefulLife>`, etc.)?