Description
Allowing both an ServiceWaterHeatingUse
and References in the BuildingSegment.service_water_heating_uses
and Space.service_water_heating_uses
adds a layer of complexity without signficiant benefit.
We would like to suggest some limitations to the [{Object}, Reference] approach with regards to service water heating uses
First, some background
In order to evaluate many of the rules, we need to evaluate the amount of energy required to heat each ServiceWaterHeatingUse. In order to do this calculation there are some conventions that have been established regarding the applicability and meaning of the service water heating uses when those service water heating uses are assigned at the building segment level. These convetions for ServiceWaterHeatingUses
assigned at the Building Segment level are:
-
A
ServiceWaterHeatingUse
that has one of the following unit types:[POWER_PER_PERSON, POWER_PER_AREA, VOLUME_PER_PERSON, VOLUME PER AREA]
AND has not been explicitly referenced by any spaces is assumed to apply to each space in the building segment. -
A
ServiceWaterHeatingUse
that is referenced by one or more spaces will be applied only to those spaces. -
A
ServiceWaterHeatingUse
with units POWER, VOLUME, or OTHER will be applied only once to the entire building segment.
This function (get_energy_required_to_heat_swh_use
) is used by 3 other functions, is directly used by one rule and is either directly or indirectly used in all section 11 rules.
Under the old structure, the function only needs a ServiceWaterHeatingUse
and an RMD as inputs in order to complete the calculation. All of the work of figuring out which spaces to apply the ServiceWaterHeatingUse
is done in a single function.
With the current [{Object}, Reference] structure, it is impossible for get_energy_required_to_heat_swh_use
to know which building segment or spaces that reference the ServiceWaterHeatingUse are intended. The only way to remedy this without modifying the schema is to externalize and duplicate a lot of the work that is currently cleanly encapsulated in get_energy_required_to_heat_swh_use
. This is an achievable development task, but it leaves a lot of room for future errors and misinterpretation both on the development side and from UI developper and end-user perspective.
We suggest the following changes:
BuildingSegment.service_water_heating_uses
- allow onlyServiceWaterHeatingUse
, and not References.- Update the description for
BuildingSegment.service_water_heating_uses
to include the following text from Test swap to pipenv #1, Update schema #2, & Thermal blocks is missing a name/ID #3, above. Space.service_water_heating_uses
- allow[{ServiceWaterHeatingUse}, Reference]
, but with the following restrictions
- References must refer to a ServiceWaterHeatingUse at the
BuildingSegment
level and thatBuildingSegment
must be theBuildingSegment
to which this space belongs ServiceWaterHeatingUses
stored at the space level may only be used for this space and may not be referenced by other spaces.
These changes would vastly improve quality, efficiency and accuracy.
Thanks.