Skip to content

Latest commit

 

History

History
70 lines (58 loc) · 6.95 KB

Rule11-15.md

File metadata and controls

70 lines (58 loc) · 6.95 KB

ServiceWaterHeating - Rule 11-15

Schema Version: 0.0.37
Mandatory Rule: True
Rule ID: 11-15

Rule Description: "Service water loads and use shall be the same for both the proposed design and baseline building design.
Exceptions:
(1) Energy Efficiency Measures approved by the Authority Having Jurisdiction are used in the proposed model (2) SWH energy consumption can be demonstrated to be reduced by reducing the required temperature of service mixed water, by increasing the temperature, or by increasing the temperature of the entering makeup water. "

Rule Assertion: Options are PASS/FAIL/NOT_APPLICABLE/UNDETERMINED
Appendix G Section Reference: Table G3.1 #11, baseline column, (g)

Evaluation Context: Each SWH use
Data Lookup:
Function Call:

  • get_SWH_uses_associated_with_each_building_segment
  • get_component_by_id

Applicability Checks:

  • create a list of swh use ids that need to be checked - we'll create the list from both the proposed and baseline models: swh_use_ids = []

  • look at each building in the B_RMD: for building in B_RMD:

    • look at each building segment in the building: for building_segment in building.building_segments:
    • get the service water heating uses in the building segment service_water_heating_use_ids = get_SWH_uses_associated_with_each_building_segment(P_RMD, building_segment.id)
    • look at each service water heating use id: for swh_use_id in service_water_heating_use_ids:
      • append the swh_use_id to the list of swh use ids: swh_use_ids.append(swh_use_id)
  • look at each building in the P_RMD: for building in P_RMD:

    • look at each building segment in the building: for building_segment in building.building_segments:
    • get the service water heating uses in the building segment service_water_heating_use_ids = get_SWH_uses_associated_with_each_building_segment(P_RMD, building_segment.id)
    • look at each service water heating use id: for swh_use_id in service_water_heating_use_ids:
      • append the swh_use_id to the list of swh use ids if it's not already in the list: if !swh_use_id.in sw_use_ids: swh_use_ids.append(swh_use_id)
  • if there are no swh_use_ids in the list, the rule is not applicable: if len(swh_use_ids) == 0: NOT_APPLICABLE; CONTINUE TO RULE ASSERTION

  • look at each swh_use_id in the swh_use_ids list. Each of these is applicable (not sure how this works, when an ID is applicable instead of an object): for swh_use_id in swh_use_ids: CONTINUE TO RULE LOGIC

    Rule Logic:

    • get the proposed swh use: swh_use_p = get_component_by_id(swh_use_id, P_RMD)
    • get the baseline swh use: swh_use_b = get_component_by_id(swh_use_id, B_RMD)
    • get the proposed distribution system that serves the swh use: swh_dist_sys_p = swh_use_p.served_by_distribution_system
    • get the baseline distribution system that serves the swh use: swh_dist_sys_b = swh_use_b.served_by_distribution_system
    • create a value to track the rule status: rule_status = "PASS"
    • create a variable to track any notes: rule_note = ""
    • if swh_use_b is null: if swh_use_b == nil:
      • set the rule status to FAIL and provide note: rule_status = "FAIL"; rule_note = swh_use_id + " exists in the Proposed model, but not in the baseline.
      • continue to rule assertion: CONTINUE TO RULE ASSERTION
    • if swh_use_P is null: if swh_use_P == nil:
      • set the rule status to FAIL and provide note: rule_status = "FAIL"; rule_note = swh_use_id + " exists in the Baseline model, but not in the proposed.
      • continue to rule assertion: CONTINUE TO RULE ASSERTION
    • check that the use matches by checking that the use, use_units, use_multiplier_schedule, and temperature_at_fixture all match (ARE THERE OTHERS THAT NEED TO MATCH TOO?)
    • check use_units, if not equal, set to fail and add a note indicating that the use units are different: if swh_use_p.use_units != swh_use_b.use_units: rule_status = "FAIL"; rule_note += "Service water heating use units are inconsistent between proposed and baseline models. "
    • check use_multiplier_schedule, if not equal set to fail and append a note indicating that the use_multiplier_schedules don't match: if swh_use_p.use_multiplier_schedule != swh_use_b.use_multiplier_schedule: rule_status = "FAIL"; rule_note += " Service Water Heating Use schedules do not match. "
    • check temperature_at_fixture, if not equal set to fail and append a note indicating that the temperature_at_fixture doesn't match: if swh_use_p.temperature_at_fixture != swh_use_b.temperature_at_fixture: rule_status = "FAIL"; rule_note += " The temperature at fixture is not the same between Proposed and Baseline.
    • check the ServiceWaterHeatingDistributionSystem.entering_water_mains_temperature_schedule, if not equal set to fail and append a note indicating that the entering_water_mains_temperature_schedules don't match: if swh_dist_sys_p.entering_water_mains_temperature_schedule != swh_dist_sys_b.entering_water_mains_temperature_schedule: rule_status = "FAIL"; rule_note += " Service Water Heating Distribution System entering main water temperature schedules do not match.
    • check the ServiceWaterHeatingDistributionSystem.design_supply_water_temperature, if not equal set to fail and append a note indicating that the design_supply_water_temperatures don't match: if swh_dist_sys_p.design_supply_water_temperature != swh_dist_sys_b.design_supply_water_temperature: rule_status = "FAIL"; rule_note += " Service Water Heating Distribution System design water supply temperatures do not match.
    • now, if the rule_status is still "PASS", we'll check if the use is equal or not between proposed and baseline: if rule_status == "PASS":
      • check whether the proposed use is less than the baseline, this will result in UNDETERMINED as an ECM could reduce swh use due to low-flow fixtures. Change rule_status and append note: if swh_use_p.use < swh_use_b.use: rule_status = "UNDETERMINED"; rule_note = "Proposed Service Water Heating Use is less than the baseline. Manually verify that reduction is due to an ECM that reduces service water heating use, such as low-flow fixtures. "
      • otherwise, if the proposed use is greater than the baseline, the result is fail. Provide a note: if swh_use_p.use > swh_use_b.use: rule_status = "FAIL"; rule_note += "Proposed Service Water Heating Use is greater than the baseline. "

    Rule Assertion - Zone:

    • Case1: rule_status is PASS: if rule_status == "PASS": PASS.
    • Case2: rule_status is UNDETERMINED, UNDETERMINED & return rule_note: elsif rule_status == "UNDETERMINED": UNDETERMINED; rule_note
    • Case3: rule_status is FAIL, FAIL & return rule_note: elsif rule_status == "FAIL": FAIL; rule_note

Notes:

  1. comparison is done expecting each element (use, use_units, schedule) to match individually instead of calculating yearly total. This means that systems using POWER type use_units can be evaluated

Back