Schema Version: 0.0.24
Mandatory Rule: No
Rule ID: 19-39
Rule Description: For baseline systems serving only laboratory spaces that are prohibited from recirculating return air by code or accreditation standards, the baseline system shall be modeled as 100% outdoor air. Rule only applies when baseline outdoor air CFM is modeled as greater than proposed design outdoor air CFM.
Rule Assertion: Options are UNDETERMINED/NOT_APPLICABLE
Appendix G Section: G3.1.2.5 Exception 4
90.1 Section Reference: None
Data Lookup: None
Evaluation Context: Each HeatingVentilatingAirConditioningSystem
Applicability Checks:
- Applies to lab spaces only.
- Applies when baseline outdoor air CFM is modeled as greater than proposed design outdoor air CFM.
Function Calls:
- get_dict_of_zones_and_terminal_units_served_by_hvac_sys()
- match_data_element()
- get_component_by_id()
- get_min_oa_flow_sch_zone()
- aggregate_min_OA_schedule_across_zones()
- Create dictionary of hvac systems and associated zones and terminal units for the baseline:
dict_of_zones_and_terminal_units_served_by_hvac_sys_b = 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:
-
Reset hvac_system_serves_only_labs boolean variable to true:
hvac_system_serves_only_labs = true
-
Reset all_lighting_space_types_defined boolean variable to true:
all_lighting_space_types_defined = true
-
Reset are_any_lighting_space_types_defined boolean variable to true:
are_any_lighting_space_types_defined = false
-
Get list of zones served by the hvac system:
zones_list_hvac_sys_b = dict_of_zones_and_terminal_units_served_by_hvac_sys_b[hvac.id]["zone_list"]
-
For each zone associated with the HVAC system:
for zone in zones_list_hvac_sys_b:
-
For each space associated with the zone, check if any spaces are NOT labs or if any lighting space types are not defined:
for space in zone.spaces:
- Check if the lighting space type is defined:
if space.lighting_space_type != Null:
- Set are_any_lighting_space_types_defined = true:
are_any_lighting_space_types_defined = true
- Check if the lighting space type is NOT a lab:
if space.lighting_space_type not in [LABORATORY_EXCEPT_IN_OR_AS_A_CLASSROOM]: hvac_system_serves_only_labs = false
- Set are_any_lighting_space_types_defined = true:
- Check if the lighting space type is defined:
-
Add each zone's OA CFM schedule to the list of zone OA CFM schedules for the baseline:
zone_OA_flow_list_of_schedules_b[counter] = get_min_oa_flow_sch_zone(B_RMI, zone.id)
-
Get the analogous zone object from the proposed RMD (if this is not strictly the correct syntax please advise Weili):
zone_p = get_component_by_id(P_RMI,match_data_element(P_RMI,Zone,zone.id))
-
Add each zone's OA CFM schedule to the list of zone OA CFM schedules for the proposed:
zone_OA_flow_list_of_schedules_p[counter] = get_min_oa_flow_sch_zone(P_RMI, zone_p.id)
-
Add to counter:
counter = counter + 1
-
Create aggregated OA CFM schedule for the baseline for the zones served by the hvac system:
aggregated_min_OA_schedule_across_zones_b = aggregate_min_OA_schedule_across_zones(zone_OA_flow_list_of_schedules_b)
-
Create aggregated OA CFM schedule for the proposed for the zones served by the baseline hvac system:
aggregated_min_OA_schedule_across_zones_p = aggregate_min_OA_schedule_across_zones(zone_OA_flow_list_of_schedules_p)
-
Sum OA CFM across baseline schedule to get the total for comparison purposes in the rule assertions:
modeled_baseline_total_zone_min_OA_flow = sum(aggregated_min_OA_schedule_across_zones_b)
-
Sum OA CFM across proposed schedule to get the total for comparison purposes in the rule assertions:
modeled_proposed_total_zone_min_OA_flow = sum(aggregated_min_OA_schedule_across_zones_p)
-
-
Rule Assertion:
-
Case 1: If all space types are defined and are all lab spaces and the modeled baseline OA cfm is greater than the proposed then UNDETERMINED:
if hvac_system_serves_only_labs == true and modeled_baseline_total_zone_min_OA_flow > modeled_proposed_total_zone_min_OA_flow and all_lighting_space_types_defined== true: outcome = "UNDETERMINED" and raise_message "Baseline hvac system <insert hvac.id> serves only lab spaces and the modeled baseline outdoor air flow was modeled as greater than the proposed outdoor air flow. Conduct a manual check that these spaces meet G3.1.2.5 Exception 4 and that they are prohibited from recirculating return air by code or accreditation standards and confirm that the hvac system was modeled as a 100% outdoor air system."
-
Case 2: Else if some space types are defined and are all lab spaces and the modeled baseline OA cfm is greater than the proposed then UNDETERMINED::
elif hvac_system_serves_only_labs == true and modeled_baseline_total_zone_min_OA_flow > modeled_proposed_total_zone_min_OA_flow and are_any_lighting_space_types_defined == true: outcome = "UNDETERMINED" and raise_message "Baseline hvac system <insert hvac.id> serves some lab spaces (not all space types were defined in the RMD so all space types associated with this hvac system could not be checked) and the modeled baseline outdoor air flow was modeled as greater than the proposed outdoor air flow. Conduct a manual check that these spaces meet G3.1.2.5 Exception 4 and that they are prohibited from recirculating return air by code or accreditation standards and, if so, confirm that the hvac system was modeled as a 100% outdoor air system."
-
Case 3: Else if space types were not defined and modeled baseline OA cfm is greater than the proposed UNDETERMINED:
elif modeled_baseline_total_zone_min_OA_flow > modeled_proposed_total_zone_min_OA_flow and are_any_lighting_space_types_defined == false: outcome = "UNDETERMINED" and raise_message "No space types were defined in the RMD for baseline system <insert hvac.id> and the modeled baseline outdoor air flow was modeled as greater than the proposed outdoor air flow. Conduct a manual check to determine if these spaces meet G3.1.2.5 Exception 4 and that they are prohibited from recirculating return air by code or accreditation standards and, if so, confirm that the hvac system was modeled as a 100% outdoor air system. If this exception does not apply then outcome is fail unless another exception to G3.1.2.5 applies."
-
Case 4: Else if space types are not all lab: NOT_APPLICABLE:
elif hvac_system_serves_only_labs == false or modeled_baseline_total_zone_min_OA_flow <= modeled_proposed_total_zone_min_OA_flow : outcome = "NOT_APPLICABLE"
-
Notes/Questions:
- Updated the Rule ID from 19-39 to 19-35 on 04/20/2023