Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 3.37 KB

Rule11-14.md

File metadata and controls

47 lines (40 loc) · 3.37 KB

Service_Water_Heating - Rule 11-14

Schema Version: 0.0.37
Mandatory Rule: TRUE
Rule ID: 11-14
Rule Description: Where recirculation pumps are used to ensure prompt availability of service water-heating at the end use, the energy consumption of such pumps shall be calculated explicitly.
Rule Assertion: UNDETERMINED / NOT_APPLICABLE Appendix G Section Reference: Table G3.1 #11, baseline column, (f)

Evaluation Context: ServiceWaterHeatingDistributionSystem
Data Lookup:
Function Call:

  • get_SWH_uses_associated_with_each_building_segment
  • get_swh_components_associated_with_each_swh_distribution_system
  • get_component_by_id

Applicability Checks:

  • All service water heating distribution systems with water uses are applicable

  • get a dictionary all of the components associated with the swh distribution system in the building: swh_comps_dict = get_swh_components_associated_with_each_swh_distribution_system(B_RMD)

  • look at each service water heating distribution system in the baseline model: for swh_dist_sys in B_RMD.service_water_heating_distribution_systems:

    • look at the uses associated with this distribution system: for swh_use_id in swh_comps_dict[swh_dist_sys.id]["USES"]:
      • get the swh_use using get_component_by_ID: swh_use = get_component_by_ID(P_RMD, swh_use_id)
      • check to see if the use has SWH loads: if swh_use.use > 0:
        • the rule is applicable: CONTINUE TO RULE LOGIC

    Rule Logic:

    • for a hard pass, we're looking for all of the loops to recirculate, and have pumps with power > 0
    • an undetermined result would be if there is not recirculation (perhaps there should be recirculation), or if only some of the loops meet the criteria for a pass
    • a fail would be if the loops recirculate but don't have pumps or pump power
    • create a dictionary to keep track of the piping, and pumps attached to the distribution system: piping_info = {}
    • look at each piping connected to the distribution system: for piping_id in in swh_comps_dict[swh_dist_sys.id]["PIPING"]:
      • get the piping: piping = get_component_by_id(B_RMD,ServiceWaterPiping)
      • create a dictionary to store data about this piping: piping_info[piping_id] = {}
      • add the recirculation loop information to the dictionary: piping_info[piping_id]["IS_RECIRC"] = piping.is_recirculation_loop
      • if the piping is a recirculation loop, get the attached pump: if(piping.is_recirculation_loop):
        • need to look at each pump to see if it's connected: for pump_id in swh_comps_dict[swh_dist_sys.id]["PUMP"]:
          • get the pump: pump = get_component_by_id(B_RMD,PUMP)
          • if the pump loop_or_piping matches the current piping, add the pump to the piping dictionary: piping_info[piping_id]["PUMP_POWER"] = pump.design_electric_power
    • GO TO RULE LOGIC

    Rule Logic:

    • Case1: all piping are recirculating and pump power is > 0, PASS: if all(entry.get("IS_RECIRC") and entry.get("PUMP_POWER", 0) > 0 for entry in piping_info.values()): PASS
    • Case2: there is at least one piping that has recirculation, but no pump power, FAIL: elif any(entry.get("IS_RECIRC") and entry.get("PUMP_POWER", 0) == 0 for entry in hash.values()): FAIL
    • Case3: All others, UNDETERMINED: UNDETERMINED

Back