Schema Version: 0.0.10 Mandatory Rule: True
Rule ID: 22-25
Rule Description: For chilled-water systems served by chiller(s) and does not serve baseline System-11, the baseline building constant-volume primary pump power shall be modeled as 9 W/gpm.
Rule Assertion: B-RMR = expected value
Appendix G Section: Section 22 CHW&CW Loop
90.1 Section Reference: Section G3.1.3.10 Chilled-water pumps (Systems 7, 8, 11, 12, and 13)
Data Lookup: None
Evaluation Context: Building
Applicability Checks:
- B-RMR is modeled with at least one air-side system that is Type-7, 8, 12, 13, 7b, 8b, 12b.
- B-RMR is not modeled with any system that is Type-11.1, 11.2 or 11.1b.
- Primary and secondary CHW loops are modeled correctly in B-RMR.
Function Calls:
- get_baseline_system_types()
- get_primary_secondary_loops()
- get_component_by_id()
Applicability Checks:
-
Check 1&2: Get B-RMR system types:
baseline_hvac_system_dict = get_baseline_system_types(B-RMR)
-
Check if B-RMR is modeled with at least one air-side system that is Type-7, 8, 12, 13, 7b, 8b, 12b, i.e. with air-side system served by chiller(s):
if any(sys_type in baseline_hvac_system_dict.keys() for sys_type in ["SYS-7", "SYS-8", "SYS-12", "SYS-13", "SYS-7B", "SYS-8B", "SYS-12B", "SYS-13B"]):
-
Check if B-RMR is modeled with any air-side system that is Type-11.1, 11.2 or 11.1b, rule is not applicable to B-RMR:
if any(sys_type in baseline_hvac_system_dict.keys() for sys_type in ["SYS-11.1", "SYS-11.2", "SYS-11B"]): RULE_NOT_APPLICABLE
-
Else, continue to the next applicability check:
else: NEXT_APPLICABILITY_CHECK
-
-
-
Check 3: Get primary and secondary loops for B-RMR:
primary_secondary_loop_dictionary = get_primary_secondary_loops(B_RMR, "COOLING")
-
Check if primary and secondary loops are modeled correctly, continue to rule logic:
if primary_secondary_loop_dictionary["PRIMARY"] AND primary_secondary_loop_dictionary["SECONDARY"]: CHECK_RULE_LOGIC
-
Else, rule is not applicable to B-RMR:
else: RULE_NOT_APPLICABLE
-
-
For each pump in B_RMR:
for pump_b in B_RMR.RulesetModelInstance.pumps:
- Save loop served by pump and pump to a dictionary:
loop_pump_dictionary[pump_b.loop_or_piping].append(pump)
- Save loop served by pump and pump to a dictionary:
-
For each primary CHW loop:
for loop_b_id in primary_secondary_loop_dictionary["PRIMARY"]:
Rule Assertion - Component:
-
Case 1: If primary loop pump power is modeled as 9W/gpm:
if get_component_by_id(loop_id_b).pump_power_per_flow_rate == 9: PASS
-
Case 2: Else:
else: FAIL
-
Notes:
- Updated the Rule ID from 22-26 to 22-25 on 7/26/2022