Schema Version: 0.0.23
Mandatory Rule: False
Rule ID: 4-16
Rule Description: Where no heating and/or cooling system is to be installed, and a heating or cooling system is being simulated only to meet the requirements described in this table, heating and/or cooling system fans shall not be simulated as running continuously during occupied hours but shall be cycled ON and OFF to meet heating and cooling loads during all hours in the B_RMD.
Rule Assertion: B-RMD = expected value
Appendix G Section: Section G3.1-4 Schedules excluding exception #1.
Appendix G Section Reference: None
Data Lookup: None
Evaluation Context: Evaluate each HeatingVentilatingAirConditioningSystem data group
Applicability Checks:
- Applicable if no heating and/or cooling system is to be installed, and a heating or cooling system is being simulated only to meet the requirements described in Section G3.1-10 HVAC Systems proposed column c and d.
Function Call:
- get_proposed_hvac_modeled_with_virtual_heating()
- get_proposed_hvac_modeled_with_virtual_cooling()
- get_hvac_zone_list_w_area()
- match_data_element()
- get_list_hvac_systems_associated_with_zone()
Manual Check: None
Rule Logic:
Applicability Check 1:
- Call function to get list of proposed HVAC systems in which virtual cooling being modeled in the proposed per G3.1-10 d :
HVAC_systems_virtual_cooling_list_p = get_proposed_hvac_modeled_with_virtual_cooling(U_RMD,P_RMD)
- Call function to get list of proposed HVAC systems in which virtual heating being modeled in the proposed per G3.1-10 c:
HVAC_systems_virtual_heating_list_p = get_proposed_hvac_modeled_with_virtual_heating(U_RMD,P_RMD)
- Combine list of hvac systems with virtual heating and/or cooling:
HVAC_systems_virtual_list_p = HVAC_systems_virtual_cooling_list_p + HVAC_systems_virtual_heating_list_p
- Eliminate duplicate HVAC systems:
HVAC_systems_virtual_list_p = list(set(HVAC_systems_virtual_list_p))
Create a list of the zones served by the HVAC systems in which virtual heating and/or cooling has been modeled in the proposed RMD - Get dictionary with list of zones associated with each HVAC system:
dict_hvac_sys_zones_served_p = get_hvac_zone_list_w_area(P_RMD)
- Loop through the HVAC systems with virtual heating and/or cooling and add to list of zones with virtual heating and/or cooling:
For hvac_p in HVAC_systems_virtual_list_p:
- Get list of zones associated with the hvac system and add to list of zones with virtual heating and/or cooling:
zones_virtual_heating_cooling_list = zones_virtual_heating_cooling_list.append(list(dict_hvac_sys_zones_served_p[hvac_p.id]["Zone_List"].values()))
- Get list of zones associated with the hvac system and add to list of zones with virtual heating and/or cooling:
- Eliminate duplicate zones from the list:
zones_virtual_heating_cooling_list = list(set(zones_virtual_heating_cooling_list))
- Loop through each zone in the zones_virtual_heating_cooling_list and obtain the hvac system serving the zone in the B_RMD and add to the list of HVAC systems applicable to this check:
For zone_p in zones_virtual_heating_cooling_list:
- Get analogous zone in the B_RMD:
zone_b = match_data_element(B_RMD, Zone,zone_p.id)
- Get list of hvac systems serving the zone and add to list of applicable hvac systems:
applicable_hvac_with_virtual_heating_cooling = applicable_hvac_with_virtual_heating_cooling.append(get_list_hvac_systems_associated_with_zone(B_RMD, zone_b.id))
- Get analogous zone in the B_RMD:
- Eliminate duplicates in list of hvac systems:
applicable_hvac_with_virtual_heating_cooling = list(set(applicable_hvac_with_virtual_heating_cooling))
- For each HeatingVentilationAirconditioningSystem in the B_RMD check if this check is applicable:
for each hvac_b in B_RMD..HeatingVentilatingAirConditioningSystem:
-
Check if hvac_b is in the list of applicable systems, if it is found then set applicability flag to true:
if hvac_b in applicable_hvac_with_virtual_heating_cooling: rule_applicability_flag = TRUE
-
If rule_applicability_flag = TRUE for hvac_b:
if rule_applicability_flag == TRUE:
- Get operation during occupied periods:
operation_during_occupied_b = hvac_b.fan_systems[0].operation_during_occupied
Rule Assertion:
- Case 1: For each applicable hvac system:
outcome == "UNDETERMINED" and raise_message "Check that heating or cooling system that is only being simulated in the P_RMD to meet the requirements described in Section G3.1-10 HVAC Systems proposed column c and d are modeled in the B_RMD to be cycled ON and OFF to meet heating and cooling loads during occupied hours. For " & hvac_b.id & "the fan is operating as " & operation_during_occupied_b & " during occupied hours."
- Get operation during occupied periods:
-