Schema Version: 0.0.23
Mandatory Rule: True
Rule ID: 19-17
Rule Description: For baseline system 1 and 2, the total fan electrical power (Pfan) for supply, return, exhaust, and relief shall be = airflows × 0.3, where, airflows = the baseline system maximum design supply fan airflow rate, airflow.
Rule Assertion: Options are Pass/Fail/NOT_APPLICABLE
Appendix G Section: G3.1.2.9
90.1 Section Reference: None
Data Lookup: None
Evaluation Context: Each HeatingVentilatingAirConditioningSystem
Applicability Checks:
- Applies to baseline HVAC system types 1 and 2.
Function Calls:
- get_baseline_system_types()
- get_dict_of_zones_and_terminal_units_served_by_hvac_sys()
- get_fan_object_electric_power()
Applicability Check 1
- Create a list of the target system types:
target_system_types = [HVAC_SYS.SYS_1, HVAC_SYS.SYS_2]
- Create dictionary of baseline system types:
baseline_system_types_dict = get_baseline_system_types(B_RMI)
- Check if B-RMR is modeled with at least one applicable air-side system, if yes then carry on, if no then NOT_APPLICABLE for the project:
if any(baseline_system_type_compare(system_type, target_sys_type, false) for system_type in baseline_hvac_system_dict.keys() for target_system_type in target_system_types):
- Create dictionary of hvac systems, zones, and terminal units:
dict_of_zones_and_terminal_units_served_by_hvac_sys = get_dict_of_zones_and_terminal_units_served_by_hvac_sys(B_RMI)
- For each hvac system in the B_RMI:
for hvac in B_RMI...HeatingVentilatingAirConditioningSystem:
-
Get the baseline system type:
sys_type = list(baseline_system_types_dict.keys())[list(baseline_system_types_dict.values()).index(hvac.id)])
-
Check if system type is of an applicable system type, if yes then carry on, if no then NOT_APPLICABLE for the hvac system:
if any(baseline_system_type_compare(sys_type, target_sys_type, false) for target_system_type in target_system_types):
- Get the list of zones associated with the hvac system:
zone_list = dict_of_zones_and_terminal_units_served_by_hvac_sys[hvac.id]["ZONE_LIST"]
- Reset supply airflow to zero:
supply_airflow_b = 0
- Reset total_fan_power to zero:
total_fan_power = 0
- Reset fan_power_airflow to zero:
fan_power_airflow = 0
- Get the fan system object:
fan_sys_b = hvac.fan_system
- Get list of supply fan fan objects:
fan_sys_supply_list = list(fan_sys_b.supply_fans)
- Get list of return fan fan objects:
fan_sys_return_list = list(fan_sys_b.return_fans)
- Get list of relief fan fan objects:
fan_sys_relief_list = list(fan_sys_b.relief_fans)
- Get list of exhaust fan fan objects:
fan_sys_exhaust_list = list(fan_sys_b.exhaust_fans)
Below cycles through all fans associated with the HVAC system and sums the total fan kW.
-
Cycle through the list of supply fans:
for fan_b in fan_sys_supply_list:
- Get the supply airflow and add to cumulative supply airflow as the logic cycles through the supply fans:
supply_airflow_b = supply_airflow_b + fan_b.design_airflow
- Get the fan power:
fan_elec_power = get_fan_object_electric_power(B_RMI,fan_b)
- Add to the total power:
total_fan_power = total_fan_power + fan_elec_power
- Get the supply airflow and add to cumulative supply airflow as the logic cycles through the supply fans:
-
Cycle through the list of return fans:
for fan_b in fan_sys_return_list:
- Get the fan power:
fan_elec_power = get_fan_object_electric_power(B_RMI,fan_b)
- Add to the total power:
total_fan_power = total_fan_power + fan_elec_power
- Get the fan power:
-
Cycle through the list of relief fans:
for fan_b in fan_sys_relief_list:
- Get the fan power:
fan_elec_power = get_fan_object_electric_power(B_RMI,fan_b)
- Add to the total power:
total_fan_power = total_fan_power + fan_elec_power
- Get the fan power:
-
Cycle through the list of exhaust fans:
for fan_b in fan_sys_exhaust_list:
- Get the fan power:
fan_elec_power = get_fan_object_electric_power(B_RMI,fan_b)
- Add to the total power:
total_fan_power = total_fan_power + fan_elec_power
- Get the fan power:
-
Cycle through each zone associated with the HVAC system to get the exhaust fan power:
for zone_b in zone_list:
- Create a zone object from the zone id (not sure how the RCT will do this):
zone_b_obj = zone_b
- Check if there are any exhaust fan objects associated with the zone:
if zone_b_obj.zonal_exhaust_fan != Null:
- Get the fan power:
fan_elec_power = get_fan_object_electric_power(B_RMI,zone_b_obj.zonal_exhaust_fan)
- Add to the total power:
total_fan_power = total_fan_power + fan_elec_power
- Get the fan power:
- Create a zone object from the zone id (not sure how the RCT will do this):
-
Calculate W/airflow:
fan_power_airflow = total_fan_power/supply_airflow_b
-
Rule Assertion:
-
Case 1: If fan_power_airflow equals 0.3:
if fan_power_airflow <= 0.3: outcome = "PASS"
-
Case 2: Else, fail:
Else: outcome = "Fail"
- Get the list of zones associated with the hvac system:
-
- Create dictionary of hvac systems, zones, and terminal units:
Notes/Questions:
- Is the design_pressure_rise the same as total static pressure?
- I don't need case 1 but I put it here just so the RCT could see the "perfect" result.
- Note if there are multiple fan_system.supply_fans this RDS sums the airflow as if they were in parallel as opposed to series.
- Updated the Rule ID from 19-18 to 19-17 on 04/17/2023