From 933d36827af0262599bf2fa97f868db01dbd4343 Mon Sep 17 00:00:00 2001 From: yunjoonjung Date: Mon, 2 Oct 2023 15:24:39 -0700 Subject: [PATCH 1/4] finish development --- docs/section22/Rule22-12.md | 18 +-- .../ashrae9012019/section22/__init__.py | 1 + .../section22/section22rule12.py | 106 ++++++++++++++++++ 3 files changed, 116 insertions(+), 9 deletions(-) create mode 100644 rct229/rulesets/ashrae9012019/section22/section22rule12.py diff --git a/docs/section22/Rule22-12.md b/docs/section22/Rule22-12.md index fbbc2312fd..d4835a20b1 100644 --- a/docs/section22/Rule22-12.md +++ b/docs/section22/Rule22-12.md @@ -7,7 +7,7 @@ **Rule Description:** The heat rejection system shall be a single loop, modeled with a single cooling tower **Rule Assertion:** B-RMR = expected value **Appendix G Section:** Section 22 CHW&CW Loop -**90.1 Section Reference:** G3.1.3.11 +**90.1 Section Reference:** G3.1.3.11 **Data Lookup:** None **Evaluation Context:** Each Heat Rejection Loop **Applicability Checks:** @@ -21,29 +21,29 @@ **Applicability Checks:** -- The function get_heat_rejection_loops_connected_to_baseline_systems() returns a list of loops that are connected to Type 7,8,12,13,7b,8b,12b. Get the list of applicable heat rejection loops: `heat_rejection_loop_ids = get_heat_rejection_loops_connected_to_baseline_systems(B_RMI)` +- The function get_heat_rejection_loops_connected_to_baseline_systems() returns a list of loops that are connected to Type 7,8,12,13,7b,8b,12b. Get the list of applicable heat rejection loops: `heat_rejection_loop_ids_b = get_heat_rejection_loops_connected_to_baseline_systems(B_RMI)` -- if there is one or more loops on this list, the rule is applicable: `if len(heat_rejection_loop_ids) > 0:` +- if there is one or more loops on this list, the rule is applicable: `if len(heat_rejection_loop_ids_b) > 0:` - continue to rule logic - otherwise, rule not applicable: `ELSE: NOT_APPLICABLE` ## Rule Logic: -- create a variable to count the number of heat rejections: `number_of_baseline_heat_rejections = 0` +- create a variable to count the number of heat rejections: `number_of_baseline_heat_rejections_b = 0` - we are looking for one heat rejection connected to one condensing loop. There might be heat rejections for process loads that are not applicable for this rule, so look at each heat_rejection: `for heat_rejection in B_RMI.heat_rejections:` - - check if the heat rejection is connected to one of the fluid loops in heat_rejection_loop_ids, this tells us that it is not a process load cooling tower: `if heat_rejection.loop.id in heat_rejection_loop_ids:` + - check if the heat rejection is connected to one of the fluid loops in heat_rejection_loop_ids_b, this tells us that it is not a process load cooling tower: `if heat_rejection.loop.id in heat_rejection_loop_ids_b:` - - increment the number_of_baseline_heat_rejections: `number_of_baseline_heat_rejections += 1` + - increment the number_of_baseline_heat_rejections_b: `number_of_baseline_heat_rejections_b += 1` **Rule Assertion:** -- Case 1: If there is exactly one heat rejection, AND there is exactly one heat rejection loop, PASS: `if number_of_baseline_heat_rejections == 1 AND len(heat_rejection_loop_ids) == 1 : PASS` +- Case 1: If there is exactly one heat rejection, AND there is exactly one heat rejection loop, PASS: `if number_of_baseline_heat_rejections_b == 1 AND len(heat_rejection_loop_ids_b) == 1 : PASS` -- Case 2: Elsif there is exactly one heat rejection, but there is more than one fluid loop, fail and include note: `elsif number_of_baseline_heat_rejections == 1 AND len(heat_rejection_loop_ids) > 1: FAIL; note = "there is more than one condenser loop for this building. There should only be one condenser loop attached to all chillers in the baseline chiller plant"` +- Case 2: Elsif there is exactly one heat rejection, but there is more than one fluid loop, fail and include note: `elsif number_of_baseline_heat_rejections_b == 1 AND len(heat_rejection_loop_ids_b) > 1: FAIL; note = "There is more than one condenser loop for this building. There should only be one condenser loop attached to all chillers in the baseline chiller plant"` -- Case 3: Elsif there is exactly one heat rejection loop, but more than one heat rejection, fail and include note: `elsif number_of_baseline_heat_rejections > 1 AND len(heat_rejection_loop_ids) == 1: FAIL; note = "there is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop"` +- Case 3: Elsif there is exactly one heat rejection loop, but more than one heat rejection, fail and include note: `elsif number_of_baseline_heat_rejections_b > 1 AND len(heat_rejection_loop_ids_b) == 1: FAIL; note = "There is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop"` - Case 4: Else fail and note: `Else: FAIL; note = "There is more than one cooling tower on this loop and there is more than one condenser loop for the chiller plant. For the baseline chiller plant, there should be only one condenser loop with only one cooling tower."` diff --git a/rct229/rulesets/ashrae9012019/section22/__init__.py b/rct229/rulesets/ashrae9012019/section22/__init__.py index 9c7368f3a5..122684a7ef 100644 --- a/rct229/rulesets/ashrae9012019/section22/__init__.py +++ b/rct229/rulesets/ashrae9012019/section22/__init__.py @@ -13,6 +13,7 @@ "section22rule9", "section22rule10", "section22rule11", + "section22rule12", "section22rule14", "section22rule16", "section22rule19", diff --git a/rct229/rulesets/ashrae9012019/section22/section22rule12.py b/rct229/rulesets/ashrae9012019/section22/section22rule12.py new file mode 100644 index 0000000000..eb0d40f238 --- /dev/null +++ b/rct229/rulesets/ashrae9012019/section22/section22rule12.py @@ -0,0 +1,106 @@ +from rct229.rule_engine.rule_base import RuleDefinitionBase +from rct229.rule_engine.rule_list_indexed_base import RuleDefinitionListIndexedBase +from rct229.rule_engine.user_baseline_proposed_vals import UserBaselineProposedVals +from rct229.rulesets.ashrae9012019.ruleset_functions.get_heat_rejection_loops_connected_to_baseline_systems import ( + get_heat_rejection_loops_connected_to_baseline_systems, +) +from rct229.utils.assertions import getattr_ +from rct229.utils.jsonpath_utils import find_all + + +class Section22Rule12(RuleDefinitionListIndexedBase): + """Rule 12 of ASHRAE 90.1-2019 Appendix G Section 22 (Chilled water loop)""" + + def __init__(self): + super(Section22Rule12, self).__init__( + rmrs_used=UserBaselineProposedVals(False, True, False), + each_rule=Section22Rule12.HeatRejectionRule(), + index_rmr="baseline", + id="22-12", + description="he heat rejection system shall be a single loop, modeled with a single cooling tower.", + ruleset_section_title="HVAC - Chiller", + standard_section="Section 22 CHW&CW Loop", + is_primary_rule=True, + rmr_context="ruleset_model_descriptions/0", + list_path="$.heat_rejections[*]", + ) + + def is_applicable(self, context, data=None): + rmd_b = context.baseline + heat_rejection_loop_ids_b = ( + get_heat_rejection_loops_connected_to_baseline_systems(rmd_b) + ) + + return heat_rejection_loop_ids_b + + def create_data(self, context, data): + rmd_b = context.baseline + heat_rejection_loop_ids_b = ( + get_heat_rejection_loops_connected_to_baseline_systems(rmd_b) + ) + + number_of_baseline_heat_rejections_b = sum( + [ + 1 + for heat_rejection_b in find_all( + "$.buildings[*.].heat_rejections[*]", rmd_b + ) + if getattr_("$.loop", "loop", heat_rejection_b) + in heat_rejection_loop_ids_b + ] + ) + + return { + "heat_rejection_loop_ids_b": heat_rejection_loop_ids_b, + "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b, + } + + class HeatRejectionRule(RuleDefinitionBase): + def __init__(self): + super(Section22Rule12.HeatRejectionRule, self).__init__( + rmrs_used=UserBaselineProposedVals(False, True, False), + ) + + def get_calc_vals(self, context, data=None): + number_of_baseline_heat_rejections_b = data[ + "number_of_baseline_heat_rejections_b" + ] + return { + "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b + } + + def rule_check(self, context, calc_vals=None, data=None): + heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] + number_of_baseline_heat_rejections_b = calc_vals[ + "number_of_baseline_heat_rejections_b" + ] + + return ( + number_of_baseline_heat_rejections_b == 1 + and len(heat_rejection_loop_ids_b) == 1 + ) + + def get_fail_msg(self, context, calc_vals=None, data=None): + heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] + number_of_baseline_heat_rejections_b = calc_vals[ + "number_of_baseline_heat_rejections_b" + ] + len_heat_rejection_loop_ids_b = len(heat_rejection_loop_ids_b) + + if ( + number_of_baseline_heat_rejections_b == 1 + and len_heat_rejection_loop_ids_b > 1 + ): + FAIL_MSG = "There is more than one condenser loop for this building. There should only be one condenser loop attached to all chillers in the baseline chiller plant." + elif ( + number_of_baseline_heat_rejections_b > 1 + and len_heat_rejection_loop_ids_b == 1 + ): + FAIL_MSG = "There is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop." + else: + FAIL_MSG = ( + "There is more than one cooling tower on this loop and there is more than one condenser loop for the chiller plant. " + "For the baseline chiller plant, there should be only one condenser loop with only one cooling tower." + ) + + return FAIL_MSG From bba33dffa075289ba38c62d0da827f48c5077512 Mon Sep 17 00:00:00 2001 From: "Gonzalez, Juan" Date: Fri, 6 Oct 2023 09:13:09 -0400 Subject: [PATCH 2/4] Updated chiller master JSON with heat rejection TCDs for Section 22 rules12,13, 15,17,18 --- .../ashrae9012019/chiller_tcd_master.json | 3022 +++++++++++++++-- 1 file changed, 2833 insertions(+), 189 deletions(-) diff --git a/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/chiller_tcd_master.json b/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/chiller_tcd_master.json index 811aaa2b15..9f1c1d8a17 100644 --- a/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/chiller_tcd_master.json +++ b/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/chiller_tcd_master.json @@ -7630,16 +7630,16 @@ } } }, - "rule-22-14-a": { + "Unnamed: 69": { "Section": 22, - "Rule": 14, + "Rule": 12, "Test": "a", - "test_description": "Baseline building has two zones. HVAC is system type 7 and is correctly modeled with the design temperature rise range of 10 F. Expected result: PASS", + "test_description": "Baseline building utilizes HVAC system type 7 and correctly has exactly 1 heat rejection and 1 heat rejection loop.", "expected_rule_outcome": "pass", "standard": { - "rule_id": "22-14", + "rule_id": "22-12", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -7734,7 +7734,8 @@ "chillers": [ { "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" } ], "pumps": [ @@ -7767,17 +7768,17 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1" - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "range": 5.555555555555555 + "loop": "Condenser Loop 1" } ] } @@ -7785,16 +7786,16 @@ } } }, - "rule-22-14-b": { + "Unnamed: 70": { "Section": 22, - "Rule": 14, + "Rule": 12, "Test": "b", - "test_description": "Baseline building has two zones. HVAC is system type 7 and is incorrectly modeled with the design temperature rise range of 15 F. Expected result: FAIL", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 1 heat rejection and 2 heat rejection loops.", "expected_rule_outcome": "fail", "standard": { - "rule_id": "22-14", + "rule_id": "22-12", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -7889,7 +7890,13 @@ "chillers": [ { "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + }, + { + "id": "Chiller 2", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 2" } ], "pumps": [ @@ -7922,17 +7929,21 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1" - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + }, + { + "id": "Condenser Loop 2", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "range": 8.333333333333334 + "loop": "Condenser Loop 1" } ] } @@ -7940,16 +7951,16 @@ } } }, - "rule-22-14-c": { + "Unnamed: 71": { "Section": 22, - "Rule": 14, + "Rule": 12, "Test": "c", - "test_description": "Baseline building has two zones. HVAC is system type 7b and is correctly modeled with the design temperature rise range of 10 F. Expected result: PASS", - "expected_rule_outcome": "pass", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 2 heat rejections and 1 heat rejection loop.", + "expected_rule_outcome": "fail", "standard": { - "rule_id": "22-14", + "rule_id": "22-12", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -7981,7 +7992,7 @@ "type": "VARIABLE_AIR_VOLUME", "served_by_heating_ventilating_air_conditioning_system": "System 7", "heating_source": "HOT_WATER", - "heating_from_loop": "Purchased HW Loop 1" + "heating_from_loop": "Boiler Loop 1" } ] }, @@ -7996,7 +8007,7 @@ "type": "VARIABLE_AIR_VOLUME", "served_by_heating_ventilating_air_conditioning_system": "System 7", "heating_source": "HOT_WATER", - "heating_from_loop": "Purchased HW Loop 1" + "heating_from_loop": "Boiler Loop 1" } ] } @@ -8012,7 +8023,7 @@ "preheat_system": { "id": "Preheat Coil 1", "type": "FLUID_LOOP", - "hot_water_loop": "Purchased HW Loop 1" + "hot_water_loop": "Boiler Loop 1" }, "fan_system": { "id": "VAV Fan System 1", @@ -8034,23 +8045,24 @@ ] } ], - "chillers": [ + "boilers": [ { - "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" } ], - "external_fluid_sources": [ + "chillers": [ { - "id": "Purchased HW 1", - "loop": "Purchased HW Loop 1", - "type": "HOT_WATER" + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" } ], "pumps": [ { - "id": "HW Pump 1", - "loop_or_piping": "Purchased HW Loop 1", + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", "speed_control": "FIXED_SPEED" }, { @@ -8066,7 +8078,7 @@ ], "fluid_loops": [ { - "id": "Purchased HW Loop 1", + "id": "Boiler Loop 1", "type": "HEATING" }, { @@ -8077,17 +8089,21 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1" - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "range": 5.555555555555555 + "loop": "Condenser Loop 1" + }, + { + "id": "Heat Rejection 2", + "loop": "Condenser Loop 1" } ] } @@ -8095,16 +8111,16 @@ } } }, - "rule-22-14-d": { + "Unnamed: 72": { "Section": 22, - "Rule": 14, + "Rule": 12, "Test": "d", - "test_description": "Baseline building has two zones. HVAC is system type 7b and is incorrectly modeled with the design temperature rise range of 15 F. Expected result: FAIL", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 2 heat rejections and 2 heat rejection loops.", "expected_rule_outcome": "fail", "standard": { - "rule_id": "22-14", + "rule_id": "22-12", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8136,7 +8152,7 @@ "type": "VARIABLE_AIR_VOLUME", "served_by_heating_ventilating_air_conditioning_system": "System 7", "heating_source": "HOT_WATER", - "heating_from_loop": "Purchased HW Loop 1" + "heating_from_loop": "Boiler Loop 1" } ] }, @@ -8151,7 +8167,7 @@ "type": "VARIABLE_AIR_VOLUME", "served_by_heating_ventilating_air_conditioning_system": "System 7", "heating_source": "HOT_WATER", - "heating_from_loop": "Purchased HW Loop 1" + "heating_from_loop": "Boiler Loop 1" } ] } @@ -8167,7 +8183,7 @@ "preheat_system": { "id": "Preheat Coil 1", "type": "FLUID_LOOP", - "hot_water_loop": "Purchased HW Loop 1" + "hot_water_loop": "Boiler Loop 1" }, "fan_system": { "id": "VAV Fan System 1", @@ -8189,23 +8205,29 @@ ] } ], - "chillers": [ + "boilers": [ { - "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" } ], - "external_fluid_sources": [ + "chillers": [ { - "id": "Purchased HW 1", - "loop": "Purchased HW Loop 1", - "type": "HOT_WATER" + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + }, + { + "id": "Chiller 2", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 2" } ], "pumps": [ { - "id": "HW Pump 1", - "loop_or_piping": "Purchased HW Loop 1", + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", "speed_control": "FIXED_SPEED" }, { @@ -8221,7 +8243,7 @@ ], "fluid_loops": [ { - "id": "Purchased HW Loop 1", + "id": "Boiler Loop 1", "type": "HEATING" }, { @@ -8232,17 +8254,25 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1" - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + }, + { + "id": "Condenser Loop 2", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "range": 8.333333333333334 + "loop": "Condenser Loop 1" + }, + { + "id": "Heat Rejection 2", + "loop": "Condenser Loop 1" } ] } @@ -8250,16 +8280,16 @@ } } }, - "rule-22-14-e": { + "Unnamed: 73": { "Section": 22, - "Rule": 14, + "Rule": 12, "Test": "e", - "test_description": "Baseline building has one zone. HVAC is system type 11a and does not have a chiller. Expected result: Not Applicable", + "test_description": "Baseline building utilizes System 7 but does not have a heat rejection loop", "expected_rule_outcome": "not_applicable", "standard": { - "rule_id": "22-14", + "rule_id": "22-12", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8289,22 +8319,40 @@ "id": "VAV Air Terminal 1", "is_supply_ducted": true, "type": "VARIABLE_AIR_VOLUME", - "served_by_heating_ventilating_air_conditioning_system": "System 11" + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" } ] } ], "heating_ventilating_air_conditioning_systems": [ { - "id": "System 11", + "id": "System 7", "cooling_system": { "id": "CHW Coil 1", "type": "FLUID_LOOP", - "chilled_water_loop": "Chiller Loop 1" + "chilled_water_loop": "Secondary CHW Loop 1" }, - "heating_system": { - "id": "Heating Coil 1", - "type": "ELECTRIC_RESISTANCE" + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" }, "fan_system": { "id": "VAV Fan System 1", @@ -8326,24 +8374,50 @@ ] } ], - "external_fluid_sources": [ + "boilers": [ { - "id": "Purchased CW 1", - "loop": "Chilled Water Loop 1", - "type": "CHILLED_WATER" + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" } ], "pumps": [ { - "id": "CHW Pump 1", - "loop_or_piping": "Chilled Water Loop 1", + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" } ], "fluid_loops": [ { - "id": "Chilled Water Loop 1", - "type": "COOLING" + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] } ] } @@ -8351,16 +8425,16 @@ } } }, - "rule-22-16-a": { + "Unnamed: 74": { "Section": 22, - "Rule": 16, + "Rule": 13, "Test": "a", - "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection is correctly modeled with the wet-bulb and approach temperatures. Expected result: PASS", + "test_description": "Baseline's System 7 cooling tower utilizes an axial fan type", "expected_rule_outcome": "pass", "standard": { - "rule_id": "22-16", + "rule_id": "22-13", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat rejection loop shall be an axial-fan open circuit cooling tower.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8455,7 +8529,8 @@ "chillers": [ { "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" } ], "pumps": [ @@ -8488,19 +8563,19 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 15.5555555555556 - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 12.777777777777828, - "approach": 2.7777777777777777 + "loop": "Condenser Loop 1", + "type": "OPEN_CIRCUIT_COOLING_TOWER", + "fan_type": "AXIAL" } ] } @@ -8508,16 +8583,16 @@ } } }, - "rule-22-16-b": { + "Unnamed: 75": { "Section": 22, - "Rule": 16, + "Rule": 13, "Test": "b", - "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection is modeled with the incorrect wet-bulb and approach temperatures. Expected result: FAIL", + "test_description": "Baseline's System 7 cooling tower does not utilize an axial fan type", "expected_rule_outcome": "fail", "standard": { - "rule_id": "22-16", + "rule_id": "22-13", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat rejection loop shall be an axial-fan open circuit cooling tower.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8612,7 +8687,8 @@ "chillers": [ { "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" } ], "pumps": [ @@ -8645,19 +8721,19 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 15.5555555555556 - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 12.777777777777828, - "approach": 5.555555555555555 + "loop": "Condenser Loop 1", + "type": "OPEN_CIRCUIT_COOLING_TOWER", + "fan_type": "CENTRIFUGAL" } ] } @@ -8665,16 +8741,16 @@ } } }, - "rule-22-16-c": { + "Unnamed: 76": { "Section": 22, - "Rule": 16, + "Rule": 13, "Test": "c", - "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection design_wetbulb_temperature < 55. Expected result: Not Applicable", + "test_description": "Baseline's System 7 cooling tower is not connected to a valid condensing loop", "expected_rule_outcome": "not_applicable", "standard": { - "rule_id": "22-16", + "rule_id": "22-13", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat rejection loop shall be an axial-fan open circuit cooling tower.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8769,7 +8845,8 @@ "chillers": [ { "id": "Chiller 1", - "cooling_loop": "Chiller Loop 1" + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" } ], "pumps": [ @@ -8802,19 +8879,19 @@ "id": "Secondary CHW Loop 1", "type": "COOLING" } - ], - "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 15.5555555555556 - } - } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + } ], "heat_rejections": [ { "id": "Heat Rejection 1", - "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 12.222222222222285, - "approach": 5.555555555555555 + "loop": "Unknown Condenser Loop 1", + "type": "OPEN_CIRCUIT_COOLING_TOWER", + "fan_type": "AXIAL" } ] } @@ -8822,16 +8899,16 @@ } } }, - "rule-22-16-d": { + "rule-22-14-a": { "Section": 22, - "Rule": 16, - "Test": "d", - "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection is correctly modeled with the wet-bulb and approach temperatures. Expected result: PASS", + "Rule": 14, + "Test": "a", + "test_description": "Baseline building has two zones. HVAC is system type 7 and is correctly modeled with the design temperature rise range of 10 F. Expected result: PASS", "expected_rule_outcome": "pass", "standard": { - "rule_id": "22-16", + "rule_id": "22-14", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -8861,21 +8938,38 @@ "id": "VAV Air Terminal 1", "is_supply_ducted": true, "type": "VARIABLE_AIR_VOLUME", - "served_by_heating_ventilating_air_conditioning_system": "System 11" + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" } ] } ], "heating_ventilating_air_conditioning_systems": [ { - "id": "System 11", + "id": "System 7", "cooling_system": { "id": "CHW Coil 1", "type": "FLUID_LOOP", "chilled_water_loop": "Secondary CHW Loop 1" }, - "heating_system": { - "id": "Boiler Coil 1", + "preheat_system": { + "id": "Preheat Coil 1", "type": "FLUID_LOOP", "hot_water_loop": "Boiler Loop 1" }, @@ -8944,8 +9038,7 @@ } ], "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 35.00000000000006 + "id": "CCDC 1" } } ], @@ -8953,8 +9046,7 @@ { "id": "Heat Rejection 1", "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 32.222222222222285, - "approach": 2.7777777777777777 + "range": 5.555555555555555 } ] } @@ -8962,16 +9054,16 @@ } } }, - "rule-22-16-e": { + "rule-22-14-b": { "Section": 22, - "Rule": 16, - "Test": "e", - "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection is modeled with the incorrect wet-bulb and approach temperatures. Expected result: FAIL", + "Rule": 14, + "Test": "b", + "test_description": "Baseline building has two zones. HVAC is system type 7 and is incorrectly modeled with the design temperature rise range of 15 F. Expected result: FAIL", "expected_rule_outcome": "fail", "standard": { - "rule_id": "22-16", + "rule_id": "22-14", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -9001,21 +9093,38 @@ "id": "VAV Air Terminal 1", "is_supply_ducted": true, "type": "VARIABLE_AIR_VOLUME", - "served_by_heating_ventilating_air_conditioning_system": "System 11" + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" } ] } ], "heating_ventilating_air_conditioning_systems": [ { - "id": "System 11", + "id": "System 7", "cooling_system": { "id": "CHW Coil 1", "type": "FLUID_LOOP", "chilled_water_loop": "Secondary CHW Loop 1" }, - "heating_system": { - "id": "Boiler Coil 1", + "preheat_system": { + "id": "Preheat Coil 1", "type": "FLUID_LOOP", "hot_water_loop": "Boiler Loop 1" }, @@ -9084,8 +9193,7 @@ } ], "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 35.00000000000006 + "id": "CCDC 1" } } ], @@ -9093,8 +9201,7 @@ { "id": "Heat Rejection 1", "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 32.222222222222285, - "approach": 5.555555555555555 + "range": 8.333333333333334 } ] } @@ -9102,16 +9209,16 @@ } } }, - "rule-22-16-f": { + "rule-22-14-c": { "Section": 22, - "Rule": 16, - "Test": "f", - "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection design_wetbulb_temperature > 95. Expected result: Not Applicable", - "expected_rule_outcome": "not_applicable", + "Rule": 14, + "Test": "c", + "test_description": "Baseline building has two zones. HVAC is system type 7b and is correctly modeled with the design temperature rise range of 10 F. Expected result: PASS", + "expected_rule_outcome": "pass", "standard": { - "rule_id": "22-16", + "rule_id": "22-14", "ruleset_reference": "G3.1.3.11", - "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", "applicable_rmr": "Baseline RMR", "rule_assertion": "=", "comparison_value": "Expected Value", @@ -9141,23 +9248,40 @@ "id": "VAV Air Terminal 1", "is_supply_ducted": true, "type": "VARIABLE_AIR_VOLUME", - "served_by_heating_ventilating_air_conditioning_system": "System 11" + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Purchased HW Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Purchased HW Loop 1" } ] } ], "heating_ventilating_air_conditioning_systems": [ { - "id": "System 11", + "id": "System 7", "cooling_system": { "id": "CHW Coil 1", "type": "FLUID_LOOP", "chilled_water_loop": "Secondary CHW Loop 1" }, - "heating_system": { - "id": "Boiler Coil 1", + "preheat_system": { + "id": "Preheat Coil 1", "type": "FLUID_LOOP", - "hot_water_loop": "Boiler Loop 1" + "hot_water_loop": "Purchased HW Loop 1" }, "fan_system": { "id": "VAV Fan System 1", @@ -9179,23 +9303,23 @@ ] } ], - "boilers": [ - { - "id": "Boiler 1", - "loop": "Boiler Loop 1", - "energy_source_type": "NATURAL_GAS" - } - ], "chillers": [ { "id": "Chiller 1", "cooling_loop": "Chiller Loop 1" } ], + "external_fluid_sources": [ + { + "id": "Purchased HW 1", + "loop": "Purchased HW Loop 1", + "type": "HOT_WATER" + } + ], "pumps": [ { - "id": "Boiler Pump 1", - "loop_or_piping": "Boiler Loop 1", + "id": "HW Pump 1", + "loop_or_piping": "Purchased HW Loop 1", "speed_control": "FIXED_SPEED" }, { @@ -9211,7 +9335,7 @@ ], "fluid_loops": [ { - "id": "Boiler Loop 1", + "id": "Purchased HW Loop 1", "type": "HEATING" }, { @@ -9224,8 +9348,7 @@ } ], "cooling_or_condensing_design_and_control": { - "id": "CCDC 1", - "design_supply_temperature": 15.5555555555556 + "id": "CCDC 1" } } ], @@ -9233,8 +9356,2529 @@ { "id": "Heat Rejection 1", "loop": "Chiller Loop 1", - "design_wetbulb_temperature": 35.5555555555556, - "approach": 5.555555555555555 + "range": 5.555555555555555 + } + ] + } + ] + } + } + }, + "rule-22-14-d": { + "Section": 22, + "Rule": 14, + "Test": "d", + "test_description": "Baseline building has two zones. HVAC is system type 7b and is incorrectly modeled with the design temperature rise range of 15 F. Expected result: FAIL", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-14", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Purchased HW Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Purchased HW Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Purchased HW Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "external_fluid_sources": [ + { + "id": "Purchased HW 1", + "loop": "Purchased HW Loop 1", + "type": "HOT_WATER" + } + ], + "pumps": [ + { + "id": "HW Pump 1", + "loop_or_piping": "Purchased HW Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Purchased HW Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1" + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "range": 8.333333333333334 + } + ] + } + ] + } + } + }, + "rule-22-14-e": { + "Section": 22, + "Rule": 14, + "Test": "e", + "test_description": "Baseline building has one zone. HVAC is system type 11a and does not have a chiller. Expected result: Not Applicable", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-14", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat-rejection device shall have a design temperature rise of 10\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 11" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 11", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Chiller Loop 1" + }, + "heating_system": { + "id": "Heating Coil 1", + "type": "ELECTRIC_RESISTANCE" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "external_fluid_sources": [ + { + "id": "Purchased CW 1", + "loop": "Chilled Water Loop 1", + "type": "CHILLED_WATER" + } + ], + "pumps": [ + { + "id": "CHW Pump 1", + "loop_or_piping": "Chilled Water Loop 1", + "speed_control": "FIXED_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Chilled Water Loop 1", + "type": "COOLING" + } + ] + } + ] + } + } + }, + "Unnamed: 82": { + "Section": 22, + "Rule": 15, + "Test": "a", + "test_description": "Approach temperature on System 7's heat rejection component correctly follows 25.72- (0.24 * design wet bulb temperature) delta Fahrenheit for design wetbulb temperatures between 55 F and 90 F", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-15", + "ruleset_reference": "G3.1.3.11", + "rule_description": "Heat Rejection Device Approach calaculated correctly (T/F), Approach = 25.72-(0.24*WB)", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "range": 6.28888888888889, + "design_wetbulb_temperature": 15.5555555555556 + } + ] + } + ] + } + } + }, + "Unnamed: 83": { + "Section": 22, + "Rule": 15, + "Test": "b", + "test_description": "Approach temperature on System 7's heat rejection component did not correctly follow 25.72- (0.24 * design wet bulb temperature) delta Fahrenheit for design wetbulb temperatures between 55 F and 90 F", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-15", + "ruleset_reference": "G3.1.3.11", + "rule_description": "Heat Rejection Device Approach calaculated correctly (T/F), Approach = 25.72-(0.24*WB)", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "range": 8.333333333333334, + "design_wetbulb_temperature": 15.5555555555556 + } + ] + } + ] + } + } + }, + "Unnamed: 84": { + "Section": 22, + "Rule": 15, + "Test": "c", + "test_description": "Approach temperature on System 7's heat rejection component does not fall between 55 F and 90 F. Not applicable.", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-15", + "ruleset_reference": "G3.1.3.11", + "rule_description": "Heat Rejection Device Approach calaculated correctly (T/F), Approach = 25.72-(0.24*WB)", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "range": 7.622222222222222, + "design_wetbulb_temperature": 10.000000000000057 + } + ] + } + ] + } + } + }, + "rule-22-16-a": { + "Section": 22, + "Rule": 16, + "Test": "a", + "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection is correctly modeled with the wet-bulb and approach temperatures. Expected result: PASS", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 15.5555555555556 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 12.777777777777828, + "approach": 2.7777777777777777 + } + ] + } + ] + } + } + }, + "rule-22-16-b": { + "Section": 22, + "Rule": 16, + "Test": "b", + "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection is modeled with the incorrect wet-bulb and approach temperatures. Expected result: FAIL", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 15.5555555555556 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 12.777777777777828, + "approach": 5.555555555555555 + } + ] + } + ] + } + } + }, + "rule-22-16-c": { + "Section": 22, + "Rule": 16, + "Test": "c", + "test_description": "Baseline building has two zones. HVAC is system type 7 and the HeatRejection design_wetbulb_temperature < 55. Expected result: Not Applicable", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 15.5555555555556 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 12.222222222222285, + "approach": 5.555555555555555 + } + ] + } + ] + } + } + }, + "rule-22-16-d": { + "Section": 22, + "Rule": 16, + "Test": "d", + "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection is correctly modeled with the wet-bulb and approach temperatures. Expected result: PASS", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 11" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 11", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "heating_system": { + "id": "Boiler Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 35.00000000000006 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 32.222222222222285, + "approach": 2.7777777777777777 + } + ] + } + ] + } + } + }, + "rule-22-16-e": { + "Section": 22, + "Rule": 16, + "Test": "e", + "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection is modeled with the incorrect wet-bulb and approach temperatures. Expected result: FAIL", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 11" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 11", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "heating_system": { + "id": "Boiler Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 35.00000000000006 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 32.222222222222285, + "approach": 5.555555555555555 + } + ] + } + ] + } + } + }, + "rule-22-16-f": { + "Section": 22, + "Rule": 16, + "Test": "f", + "test_description": "Baseline building has two zones. HVAC is system type 11.2 and the HeatRejection design_wetbulb_temperature > 95. Expected result: Not Applicable", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-16", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline condenser-water design supply temperature shall be calculated using the cooling tower approach to the 0.4% evaporation design wet-bulb temperature, valid for wet-bulbs from 55\u00b0F to 90\u00b0F.", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 11" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 11", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "heating_system": { + "id": "Boiler Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ], + "cooling_or_condensing_design_and_control": { + "id": "CCDC 1", + "design_supply_temperature": 15.5555555555556 + } + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "design_wetbulb_temperature": 35.5555555555556, + "approach": 5.555555555555555 + } + ] + } + ] + } + } + }, + "Unnamed: 91": { + "Section": 22, + "Rule": 17, + "Test": "a", + "test_description": "The project includes a cooling tower. We calculated the cooling tower efficiency to be 40 gpm/hp, which is greater than the required efficiency of 38.2 gpm / hp, resulting in a more stringent baseline. This results in an undetermined value.", + "expected_rule_outcome": "undetermined", + "standard": { + "rule_id": "22-17", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall have an efficiency of 38.2 gpm/hp", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "fan_shaft_power": 14914.0, + "rated_water_flowrate": 50.46666666666668 + } + ] + } + ] + } + } + }, + "Unnamed: 92": { + "Section": 22, + "Rule": 17, + "Test": "b", + "test_description": "The project includes a cooling tower. We calculated the cooling tower efficiency to be 38.2 gpm/hp, which is exactly equal to the required efficiency of 38.2 gpm / hp. ", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-17", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall have an efficiency of 38.2 gpm/hp", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "fan_shaft_power": 14914.0, + "rated_water_flowrate": 48.19566666666668 + } + ] + } + ] + } + } + }, + "Unnamed: 93": { + "Section": 22, + "Rule": 17, + "Test": "c", + "test_description": "The project includes a cooling tower. We calculated the cooling tower efficiency to be 20 gpm/hp, which is less than the required efficiency of 38.2 gpm / hp. This results in an undetermined value.", + "expected_rule_outcome": "undetermined", + "standard": { + "rule_id": "22-17", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall have an efficiency of 38.2 gpm/hp", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "fan_shaft_power": 14914.0, + "rated_water_flowrate": 25.23333333333334 + } + ] + } + ] + } + } + }, + "Unnamed: 94": { + "Section": 22, + "Rule": 18, + "Test": "a", + "test_description": "Baseline's System 7 cooling tower correctly utilizes variable speed fan control. ", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-18", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall be modeled with variable speed fan control", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "fan_speed_control": "VARIABLE_SPEED" + } + ] + } + ] + } + } + }, + "Unnamed: 95": { + "Section": 22, + "Rule": 18, + "Test": "b", + "test_description": "Baseline's System 7 cooling tower incorrectly utilizes constant speed fan control. ", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-18", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall be modeled with variable speed fan control", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Chiller Loop 1", + "fan_speed_control": "CONSTANT" + } + ] + } + ] + } + } + }, + "Unnamed: 96": { + "Section": 22, + "Rule": 18, + "Test": "c", + "test_description": "Baseline building utilizes System 7 but does not have a heat rejection loop", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-18", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The baseline heat rejection device shall be modeled with variable speed fan control", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] } ] } From d0067b97c202b2dd640e25f0261a3df5e40c647b Mon Sep 17 00:00:00 2001 From: yunjoonjung Date: Fri, 6 Oct 2023 13:07:53 -0700 Subject: [PATCH 3/4] test with TCD --- .../section22/section22rule12.py | 10 +- .../ashrae9012019/section22/rule_22_12.json | 797 ++++++++++++++++++ 2 files changed, 802 insertions(+), 5 deletions(-) create mode 100644 rct229/ruletest_engine/ruletest_jsons/ashrae9012019/section22/rule_22_12.json diff --git a/rct229/rulesets/ashrae9012019/section22/section22rule12.py b/rct229/rulesets/ashrae9012019/section22/section22rule12.py index eb0d40f238..cfd0abd0f2 100644 --- a/rct229/rulesets/ashrae9012019/section22/section22rule12.py +++ b/rct229/rulesets/ashrae9012019/section22/section22rule12.py @@ -42,10 +42,8 @@ def create_data(self, context, data): number_of_baseline_heat_rejections_b = sum( [ 1 - for heat_rejection_b in find_all( - "$.buildings[*.].heat_rejections[*]", rmd_b - ) - if getattr_("$.loop", "loop", heat_rejection_b) + for heat_rejection_b in find_all("$.heat_rejections[*]", rmd_b) + if getattr_(heat_rejection_b, "heat_rejections", "loop") in heat_rejection_loop_ids_b ] ) @@ -62,11 +60,13 @@ def __init__(self): ) def get_calc_vals(self, context, data=None): + heat_rejection_loop_ids_b = data["heat_rejection_loop_ids_b"] number_of_baseline_heat_rejections_b = data[ "number_of_baseline_heat_rejections_b" ] return { - "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b + "heat_rejection_loop_ids_b": heat_rejection_loop_ids_b, + "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b, } def rule_check(self, context, calc_vals=None, data=None): diff --git a/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/section22/rule_22_12.json b/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/section22/rule_22_12.json new file mode 100644 index 0000000000..5be73c54ca --- /dev/null +++ b/rct229/ruletest_engine/ruletest_jsons/ashrae9012019/section22/rule_22_12.json @@ -0,0 +1,797 @@ +{ + "rule-22-12-a": { + "Section": 22, + "Rule": 12, + "Test": "a", + "test_description": "Baseline building utilizes HVAC system type 7 and correctly has exactly 1 heat rejection and 1 heat rejection loop.", + "expected_rule_outcome": "pass", + "standard": { + "rule_id": "22-12", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Condenser Loop 1" + } + ] + } + ] + } + } + }, + "rule-22-12-b": { + "Section": 22, + "Rule": 12, + "Test": "b", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 1 heat rejection and 2 heat rejection loops.", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-12", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + }, + { + "id": "Chiller 2", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 2" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + }, + { + "id": "Condenser Loop 2", + "type": "CONDENSER" + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Condenser Loop 1" + } + ] + } + ] + } + } + }, + "rule-22-12-c": { + "Section": 22, + "Rule": 12, + "Test": "c", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 2 heat rejections and 1 heat rejection loop.", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-12", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Condenser Loop 1" + }, + { + "id": "Heat Rejection 2", + "loop": "Condenser Loop 1" + } + ] + } + ] + } + } + }, + "rule-22-12-d": { + "Section": 22, + "Rule": 12, + "Test": "d", + "test_description": "Baseline building utilizes HVAC system type 7 and incorrectly has 2 heat rejections and 2 heat rejection loops.", + "expected_rule_outcome": "fail", + "standard": { + "rule_id": "22-12", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 1" + }, + { + "id": "Chiller 2", + "cooling_loop": "Chiller Loop 1", + "condensing_loop": "Condenser Loop 2" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + }, + { + "id": "Condenser Loop 1", + "type": "CONDENSER" + }, + { + "id": "Condenser Loop 2", + "type": "CONDENSER" + } + ], + "heat_rejections": [ + { + "id": "Heat Rejection 1", + "loop": "Condenser Loop 1" + }, + { + "id": "Heat Rejection 2", + "loop": "Condenser Loop 1" + } + ] + } + ] + } + } + }, + "rule-22-12-e": { + "Section": 22, + "Rule": 12, + "Test": "e", + "test_description": "Baseline building utilizes System 7 but does not have a heat rejection loop", + "expected_rule_outcome": "not_applicable", + "standard": { + "rule_id": "22-12", + "ruleset_reference": "G3.1.3.11", + "rule_description": "The heat rejection system shall be a single loop, modeled with a single cooling tower", + "applicable_rmr": "Baseline RMR", + "rule_assertion": "=", + "comparison_value": "Expected Value", + "primary_rule": "Yes", + "schema_version": "0.0.29" + }, + "rmr_transformations": { + "baseline": { + "id": "ASHRAE229 1", + "ruleset_model_descriptions": [ + { + "id": "RMD 1", + "buildings": [ + { + "id": "Building 1", + "building_open_schedule": "Required Building Schedule 1", + "building_segments": [ + { + "id": "Building Segment 1", + "zones": [ + { + "id": "Thermal Zone 1", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 1", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + }, + { + "id": "Thermal Zone 2", + "thermostat_cooling_setpoint_schedule": "Required Cooling Schedule 1", + "thermostat_heating_setpoint_schedule": "Required Heating Schedule 1", + "terminals": [ + { + "id": "VAV Air Terminal 2", + "is_supply_ducted": true, + "type": "VARIABLE_AIR_VOLUME", + "served_by_heating_ventilating_air_conditioning_system": "System 7", + "heating_source": "HOT_WATER", + "heating_from_loop": "Boiler Loop 1" + } + ] + } + ], + "heating_ventilating_air_conditioning_systems": [ + { + "id": "System 7", + "cooling_system": { + "id": "CHW Coil 1", + "type": "FLUID_LOOP", + "chilled_water_loop": "Secondary CHW Loop 1" + }, + "preheat_system": { + "id": "Preheat Coil 1", + "type": "FLUID_LOOP", + "hot_water_loop": "Boiler Loop 1" + }, + "fan_system": { + "id": "VAV Fan System 1", + "fan_control": "VARIABLE_SPEED_DRIVE", + "supply_fans": [ + { + "id": "Supply Fan 1" + } + ], + "return_fans": [ + { + "id": "Return Fan 1" + } + ] + } + } + ] + } + ] + } + ], + "boilers": [ + { + "id": "Boiler 1", + "loop": "Boiler Loop 1", + "energy_source_type": "NATURAL_GAS" + } + ], + "chillers": [ + { + "id": "Chiller 1", + "cooling_loop": "Chiller Loop 1" + } + ], + "pumps": [ + { + "id": "Boiler Pump 1", + "loop_or_piping": "Boiler Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Chiller Pump 1", + "loop_or_piping": "Chiller Loop 1", + "speed_control": "FIXED_SPEED" + }, + { + "id": "Secondary CHW Pump", + "loop_or_piping": "Secondary CHW Loop 1", + "speed_control": "VARIABLE_SPEED" + } + ], + "fluid_loops": [ + { + "id": "Boiler Loop 1", + "type": "HEATING" + }, + { + "id": "Chiller Loop 1", + "type": "COOLING", + "child_loops": [ + { + "id": "Secondary CHW Loop 1", + "type": "COOLING" + } + ] + } + ] + } + ] + } + } + } +} \ No newline at end of file From 89886610142c9be88e9e5805eaef541ca7002df0 Mon Sep 17 00:00:00 2001 From: yunjoonjung Date: Wed, 11 Oct 2023 09:11:35 -0700 Subject: [PATCH 4/4] Address PR comments --- docs/section22/Rule22-12.md | 2 +- .../section22/section22rule12.py | 90 ++++++++----------- rct229/ruletest_engine/run_ruletests.py | 2 +- 3 files changed, 37 insertions(+), 57 deletions(-) diff --git a/docs/section22/Rule22-12.md b/docs/section22/Rule22-12.md index d4835a20b1..8fb0ce24a3 100644 --- a/docs/section22/Rule22-12.md +++ b/docs/section22/Rule22-12.md @@ -41,7 +41,7 @@ **Rule Assertion:** - Case 1: If there is exactly one heat rejection, AND there is exactly one heat rejection loop, PASS: `if number_of_baseline_heat_rejections_b == 1 AND len(heat_rejection_loop_ids_b) == 1 : PASS` -- Case 2: Elsif there is exactly one heat rejection, but there is more than one fluid loop, fail and include note: `elsif number_of_baseline_heat_rejections_b == 1 AND len(heat_rejection_loop_ids_b) > 1: FAIL; note = "There is more than one condenser loop for this building. There should only be one condenser loop attached to all chillers in the baseline chiller plant"` +- Case 2: Elsif there is exactly one heat rejection, but there is more than one fluid loop, fail and include note: `elsif number_of_baseline_heat_rejections_b == 1 AND len(heat_rejection_loop_ids_b) > 1: FAIL; note = "There is more than one condenser loop for this project. There should only be one condenser loop attached to all chillers in the baseline chiller plant"` - Case 3: Elsif there is exactly one heat rejection loop, but more than one heat rejection, fail and include note: `elsif number_of_baseline_heat_rejections_b > 1 AND len(heat_rejection_loop_ids_b) == 1: FAIL; note = "There is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop"` diff --git a/rct229/rulesets/ashrae9012019/section22/section22rule12.py b/rct229/rulesets/ashrae9012019/section22/section22rule12.py index cfd0abd0f2..21b3f7bb28 100644 --- a/rct229/rulesets/ashrae9012019/section22/section22rule12.py +++ b/rct229/rulesets/ashrae9012019/section22/section22rule12.py @@ -1,5 +1,4 @@ from rct229.rule_engine.rule_base import RuleDefinitionBase -from rct229.rule_engine.rule_list_indexed_base import RuleDefinitionListIndexedBase from rct229.rule_engine.user_baseline_proposed_vals import UserBaselineProposedVals from rct229.rulesets.ashrae9012019.ruleset_functions.get_heat_rejection_loops_connected_to_baseline_systems import ( get_heat_rejection_loops_connected_to_baseline_systems, @@ -8,21 +7,18 @@ from rct229.utils.jsonpath_utils import find_all -class Section22Rule12(RuleDefinitionListIndexedBase): +class Section22Rule12(RuleDefinitionBase): """Rule 12 of ASHRAE 90.1-2019 Appendix G Section 22 (Chilled water loop)""" def __init__(self): super(Section22Rule12, self).__init__( rmrs_used=UserBaselineProposedVals(False, True, False), - each_rule=Section22Rule12.HeatRejectionRule(), - index_rmr="baseline", id="22-12", - description="he heat rejection system shall be a single loop, modeled with a single cooling tower.", + description="The heat rejection system shall be a single loop, modeled with a single cooling tower.", ruleset_section_title="HVAC - Chiller", standard_section="Section 22 CHW&CW Loop", is_primary_rule=True, rmr_context="ruleset_model_descriptions/0", - list_path="$.heat_rejections[*]", ) def is_applicable(self, context, data=None): @@ -33,15 +29,15 @@ def is_applicable(self, context, data=None): return heat_rejection_loop_ids_b - def create_data(self, context, data): + def get_calc_vals(self, context, data=None): rmd_b = context.baseline heat_rejection_loop_ids_b = ( get_heat_rejection_loops_connected_to_baseline_systems(rmd_b) ) - number_of_baseline_heat_rejections_b = sum( + number_of_baseline_heat_rejections_b = len( [ - 1 + heat_rejection_b for heat_rejection_b in find_all("$.heat_rejections[*]", rmd_b) if getattr_(heat_rejection_b, "heat_rejections", "loop") in heat_rejection_loop_ids_b @@ -53,54 +49,38 @@ def create_data(self, context, data): "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b, } - class HeatRejectionRule(RuleDefinitionBase): - def __init__(self): - super(Section22Rule12.HeatRejectionRule, self).__init__( - rmrs_used=UserBaselineProposedVals(False, True, False), - ) + def rule_check(self, context, calc_vals=None, data=None): + heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] + number_of_baseline_heat_rejections_b = calc_vals[ + "number_of_baseline_heat_rejections_b" + ] - def get_calc_vals(self, context, data=None): - heat_rejection_loop_ids_b = data["heat_rejection_loop_ids_b"] - number_of_baseline_heat_rejections_b = data[ - "number_of_baseline_heat_rejections_b" - ] - return { - "heat_rejection_loop_ids_b": heat_rejection_loop_ids_b, - "number_of_baseline_heat_rejections_b": number_of_baseline_heat_rejections_b, - } + return ( + number_of_baseline_heat_rejections_b == 1 + and len(heat_rejection_loop_ids_b) == 1 + ) - def rule_check(self, context, calc_vals=None, data=None): - heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] - number_of_baseline_heat_rejections_b = calc_vals[ - "number_of_baseline_heat_rejections_b" - ] + def get_fail_msg(self, context, calc_vals=None, data=None): + heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] + number_of_baseline_heat_rejections_b = calc_vals[ + "number_of_baseline_heat_rejections_b" + ] + len_heat_rejection_loop_ids_b = len(heat_rejection_loop_ids_b) - return ( - number_of_baseline_heat_rejections_b == 1 - and len(heat_rejection_loop_ids_b) == 1 + if ( + number_of_baseline_heat_rejections_b == 1 + and len_heat_rejection_loop_ids_b > 1 + ): + FAIL_MSG = "There is more than one condenser loop for this project. There should only be one condenser loop attached to all chillers in the baseline chiller plant." + elif ( + number_of_baseline_heat_rejections_b > 1 + and len_heat_rejection_loop_ids_b == 1 + ): + FAIL_MSG = "There is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop." + else: + FAIL_MSG = ( + "There is more than one cooling tower on this loop and there is more than one condenser loop for the chiller plant. " + "For the baseline chiller plant, there should be only one condenser loop with only one cooling tower." ) - def get_fail_msg(self, context, calc_vals=None, data=None): - heat_rejection_loop_ids_b = calc_vals["heat_rejection_loop_ids_b"] - number_of_baseline_heat_rejections_b = calc_vals[ - "number_of_baseline_heat_rejections_b" - ] - len_heat_rejection_loop_ids_b = len(heat_rejection_loop_ids_b) - - if ( - number_of_baseline_heat_rejections_b == 1 - and len_heat_rejection_loop_ids_b > 1 - ): - FAIL_MSG = "There is more than one condenser loop for this building. There should only be one condenser loop attached to all chillers in the baseline chiller plant." - elif ( - number_of_baseline_heat_rejections_b > 1 - and len_heat_rejection_loop_ids_b == 1 - ): - FAIL_MSG = "There is more than one cooling tower for the baseline chiller plant. There should only be one cooling tower attached to the condenser loop." - else: - FAIL_MSG = ( - "There is more than one cooling tower on this loop and there is more than one condenser loop for the chiller plant. " - "For the baseline chiller plant, there should be only one condenser loop with only one cooling tower." - ) - - return FAIL_MSG + return FAIL_MSG diff --git a/rct229/ruletest_engine/run_ruletests.py b/rct229/ruletest_engine/run_ruletests.py index da94a45b7d..2f5ce508ee 100644 --- a/rct229/ruletest_engine/run_ruletests.py +++ b/rct229/ruletest_engine/run_ruletests.py @@ -194,7 +194,7 @@ def run_test_one_jsontest(test_json): # run_airside_tests() # run_hvac_general_tests() -# run_test_one_jsontest("ashrae9012019/section5/rule_5_3.json") +run_test_one_jsontest("ashrae9012019/section22/rule_22_12.json") # run_ashrae9012019_tests() # output_dir = os.path.dirname(__file__) # generate_ashrae9012019_software_test_report(['tester'])