diff --git a/constrain/api/brick_compliance.py b/constrain/api/brick_compliance.py index 7454da05..99a5f91e 100644 --- a/constrain/api/brick_compliance.py +++ b/constrain/api/brick_compliance.py @@ -17,9 +17,9 @@ HVAC_ZONE_NAME_PARSE_RE = r"\?(\w+) a brick:HVAC_Zone \." CASE_KEY_NAMES = [ - "no", + "verification_case_id", "run_simulation", - "simulation_IO", + "verification_properties", "idf", "idd", "weather", @@ -100,9 +100,9 @@ def __init__( self.idx = 1 self.verification_case_dict = { - "no": None, + "verification_case_id": None, "run_simulation": None, - "simulation_IO": { + "verification_properties": { "idf": "", "idd": "", "weather": "", @@ -264,7 +264,7 @@ def query_verification_case_datapoints( whether the queried datapoint is changed to E+ style variable name or not default_verification_case_values: dict - default key values. ("no", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. + default key values. ("verification_case_id", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. Returns: self.queried_datapoint_all_dict: dict @@ -339,7 +339,7 @@ def query_with_customized_statement( whether to convert the queried datapoints' name to EnergyPlus style variable name. default_verification_case_values: dict - default key values. ("no", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. + default key values. ("verification_case_id", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. Returns: queried result in the verification case format. `str` message from the `query_statement`'s quality check result. @@ -467,7 +467,7 @@ def _convert_to_verification_case_format_helper( ): verification_case_dict_copy = copy.deepcopy(self.verification_case_dict) - verification_case_dict_copy["no"] = self.idx + verification_case_dict_copy["verification_case_id"] = self.idx self.idx += 1 verification_case_dict_copy["verification_class"] = verification_case_name @@ -537,8 +537,10 @@ def _convert_to_verification_case_format_helper( "output", "ep_path", ): - verification_case_dict_copy["simulation_IO"][key_name] = ( - default_verification_case_values["simulation_IO"][key_name] + verification_case_dict_copy["verification_properties"][key_name] = ( + default_verification_case_values["verification_properties"][ + key_name + ] ) verification_case_dict_copy["expected_result"] = ( diff --git a/constrain/api/verification.py b/constrain/api/verification.py index e2c9878e..fcbc7f64 100644 --- a/constrain/api/verification.py +++ b/constrain/api/verification.py @@ -221,7 +221,7 @@ def run_single_verification(self, case: dict = None) -> None: # TODO: JXL to make this compatible with reporting API, save md json instead of md files directly. # Output case summary - cases_file = f"{self.output_path}/{case['no']}_md.json" + cases_file = f"{self.output_path}/{case['verification_case_id']}_md.json" with open(cases_file, "w") as fw: json.dump(results, fw) diff --git a/constrain/api/verification_case.py b/constrain/api/verification_case.py index c4daff8d..d5dad832 100644 --- a/constrain/api/verification_case.py +++ b/constrain/api/verification_case.py @@ -152,7 +152,7 @@ def _update_key_helper( elif isinstance(value, list): for idx, case in enumerate(casees): if key in [ - "no", + "verification_case_id", "run_simulation", "expected_result", "datapoints_source", @@ -160,7 +160,7 @@ def _update_key_helper( ]: case[key] = value[idx] elif key in ["idf", "idd", "weather", "output", "ep_path"]: - case["simulation_IO"][key] = value[idx] + case["verification_properties"][key] = value[idx] elif key in ["subject", "variable", "frequency"]: case["datapoints_source"]["idf_output_variables"][ @@ -218,7 +218,7 @@ def _update_key_helper( def validate_verification_case_structure( case: Dict = None, verbose: bool = False ) -> bool: - """Validate verification case structure (e.g., check whether `run_simulation`, `simulation_IO`, etc. exist or not). Check if required key / values pairs exist in the case. check if datatype of values are appropriate, e.g. file path is str. + """Validate verification case structure (e.g., check whether `run_simulation`, `verification_properties`, etc. exist or not). Check if required key / values pairs exist in the case. check if datatype of values are appropriate, e.g. file path is str. Args: case (Dict): case information that will be validated. @@ -290,9 +290,9 @@ def _validate_case_structure_helper(schema, instance, verbose) -> Union[bool]: return None case_schema = { - "no": int, + "verification_case_id": int, "run_simulation": bool, - "simulation_IO": { + "verification_properties": { "output": str, # all other are optional when data is already there. }, "expected_result": str, diff --git a/constrain/checklib.py b/constrain/checklib.py index be8424fa..480c73d2 100644 --- a/constrain/checklib.py +++ b/constrain/checklib.py @@ -78,10 +78,8 @@ def add_md( ): outcome_bool, outcome_dict = self.get_checks - img_folder = f"{img_folder}/VerificationCase{item_dict['no']}" - relative_path_to_img_in_md = ( - f"{relative_path_to_img_in_md}/VerificationCase{item_dict['no']}" - ) + img_folder = f"{img_folder}/VerificationCase{item_dict['verification_case_id']}" + relative_path_to_img_in_md = f"{relative_path_to_img_in_md}/VerificationCase{item_dict['verification_case_id']}" if not os.path.exists(img_folder): os.makedirs(img_folder) @@ -106,7 +104,7 @@ def add_md( """ md_content = f""" -## Results for Verification Case ID {item_dict['no']} +## Results for Verification Case ID {item_dict['verification_case_id']} ### Pass/Fail check result {str(outcome_dict)} @@ -128,7 +126,7 @@ def add_md( return { "md_content": md_content, "outcome_notes": outcome_dict, - "model_file": item_dict["simulation_IO"]["idf"] + "model_file": item_dict["verification_properties"]["idf"] .split("/")[-1] .split("\\")[-1] .replace(".idf", ""), diff --git a/constrain/demo/G36_demo/data/G36_library_verification_cases.json b/constrain/demo/G36_demo/data/G36_library_verification_cases.json index 65d320e4..0dcd57e9 100644 --- a/constrain/demo/G36_demo/data/G36_library_verification_cases.json +++ b/constrain/demo/G36_demo/data/G36_library_verification_cases.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "modelica_dataset_set", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -25,9 +25,9 @@ "verification_class": "G36ReturnAirDamperPositionForReliefDamperOrFan" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "modelica_dataset_set", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -50,9 +50,9 @@ "verification_class": "G36OutdoorAirDamperPositionForReliefDamperOrFan" }, { - "no": 3, + "verification_case_id": 3, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "modelica_dataset_set", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/constrain/demo/api_demo/demo_verification_cases.json b/constrain/demo/api_demo/demo_verification_cases.json index c85cfdba..6e42476c 100644 --- a/constrain/demo/api_demo/demo_verification_cases.json +++ b/constrain/demo/api_demo/demo_verification_cases.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "./test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -26,9 +26,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "./test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -51,9 +51,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 3, + "verification_case_id": 3, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "./test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/constrain/demo/brick_demo/brick_workflow.json b/constrain/demo/brick_demo/brick_workflow.json index f27928ca..9e9e80f8 100644 --- a/constrain/demo/brick_demo/brick_workflow.json +++ b/constrain/demo/brick_demo/brick_workflow.json @@ -25,7 +25,7 @@ "Parameters": { "verification_item_lib_name": "ZoneTempControl", "energyplus_naming_assembly": false, - "default_verification_case_values": "{'run_simulation': False, 'simulation_IO': {'idf': 'EnergyPlus_data', 'idd': './resources/Energy+V9_0_1.idd', 'weather': './weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': './demo/brick_demo/brick_dataset/data_file.csv', 'ep_path': 'C:\\\\\\\\EnergyPlusV9-0-1\\\\\\\\energyplus.exe'}, 'expected_result': 'pass', 'parameters': {}}"}, + "default_verification_case_values": "{'run_simulation': False, 'verification_properties': {'idf': 'EnergyPlus_data', 'idd': './resources/Energy+V9_0_1.idd', 'weather': './weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': './demo/brick_demo/brick_dataset/data_file.csv', 'ep_path': 'C:\\\\\\\\EnergyPlusV9-0-1\\\\\\\\energyplus.exe'}, 'expected_result': 'pass', 'parameters': {}}"}, "Payloads": {"query_result": "$"}, "Next": "instantiate verification case" }, diff --git a/constrain/demo/library_item_demo/LibraryShowCases.ipynb b/constrain/demo/library_item_demo/LibraryShowCases.ipynb index 8e16a6d9..16ef3fd4 100644 --- a/constrain/demo/library_item_demo/LibraryShowCases.ipynb +++ b/constrain/demo/library_item_demo/LibraryShowCases.ipynb @@ -80,9 +80,9 @@ { "data": { "text/plain": [ - "{'no': 1,\n", + "{'verification_case_id': 1,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_Seattle.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_Seattle.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'oa_flow': 'PSZ-AC:1_OAINLET NODE:System Node Standard Density Volume Flow Rate [m3/s](Each Call)',\n", " 'ccoil_out': 'PSZ-AC:1:Air System Cooling Coil Total Cooling Energy [J](Each Call)'},\n", " 'parameters': {'oa_min_flow': 0.23157}},\n", @@ -175,9 +175,9 @@ { "data": { "text/plain": [ - "{'no': 5,\n", + "{'verification_case_id': 5,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_OfficeLarge_STD2019_Seattle.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_OfficeLarge_STD2019_Seattle.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'T_sa_set': 'VAV_BOT WITH REHEAT SUPPLY EQUIPMENT OUTLET NODE:System Node Setpoint Temperature [C](Each Call)'},\n", " 'parameters': {'T_z_coo': 24.0}},\n", " 'verification_class': 'SupplyAirTempReset',\n", @@ -281,9 +281,9 @@ { "data": { "text/plain": [ - "{'no': 14,\n", + "{'verification_case_id': 14,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_OfficeLarge_STD2004_Seattle.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_OfficeLarge_STD2004_Seattle.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'T_sa_set': 'VAV_BOT WITH REHEAT SUPPLY EQUIPMENT OUTLET NODE:System Node Setpoint Temperature [C](Each Call)'},\n", " 'parameters': {'T_z_coo': 24.0}},\n", " 'verification_class': 'SupplyAirTempReset',\n", @@ -385,9 +385,9 @@ { "data": { "text/plain": [ - "{'no': 6,\n", + "{'verification_case_id': 6,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_a.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_a.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'oa_flow': 'PSZ-AC:1_OAInlet Node:System Node Standard Density Volume Flow Rate [m3/s](TimeStep)',\n", " 'oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)'},\n", " 'parameters': {'oa_min_flow': 0.23157, 'oa_threshold': 25.0}},\n", @@ -479,9 +479,9 @@ { "data": { "text/plain": [ - "{'no': 7,\n", + "{'verification_case_id': 7,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_b.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_b.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'oa_flow': 'PSZ-AC:1_OAInlet Node:System Node Standard Density Volume Flow Rate [m3/s](TimeStep)',\n", " 'oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)',\n", " 'ret_a_temp': 'PSZ-AC:1 Supply Equipment Inlet Node:System Node Temperature [C](TimeStep)'},\n", @@ -573,9 +573,9 @@ { "data": { "text/plain": [ - "{'no': 8,\n", + "{'verification_case_id': 8,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_c.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_c.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'oa_flow': 'PSZ-AC:1_OAInlet Node:System Node Standard Density Volume Flow Rate [m3/s](TimeStep)',\n", " 'oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)',\n", " 'oa_enth': 'Environment:Site Outdoor Air Enthalpy [J/kg](TimeStep)'},\n", @@ -674,9 +674,9 @@ { "data": { "text/plain": [ - "{'no': 9,\n", + "{'verification_case_id': 9,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_d.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_d.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'oa_flow': 'PSZ-AC:1_OAInlet Node:System Node Standard Density Volume Flow Rate [m3/s](TimeStep)',\n", " 'oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)',\n", " 'ret_a_enth': 'PSZ-AC:1 SUPPLY EQUIPMENT INLET NODE:System Node Enthalpy [J/kg](TimeStep)',\n", @@ -774,9 +774,9 @@ { "data": { "text/plain": [ - "{'no': 10,\n", + "{'verification_case_id': 10,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_zonetempctrl.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_RetailStandalone_STD2019_NewYork_zonetempctrl.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'T_z_set_cool': 'CORE_RETAIL:Zone Thermostat Cooling Setpoint Temperature [C](Each Call)',\n", " 'T_z_set_heat': 'CORE_RETAIL:Zone Thermostat Heating Setpoint Temperature [C](Each Call)'}},\n", " 'verification_class': 'ZoneTempControl',\n", @@ -864,9 +864,9 @@ { "data": { "text/plain": [ - "{'no': 11,\n", + "{'verification_case_id': 11,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_Hospital_STD2019_Atlanta.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_Hospital_STD2019_Atlanta.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'T_oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)',\n", " 'T_hw': 'HeatSys1 Supply Outlet Node:System Node Temperature [C](TimeStep)',\n", " 'm_hw': 'HeatSys1 Supply Outlet Node:System Node Mass Flow Rate [kg/s](TimeStep)'},\n", @@ -967,9 +967,9 @@ { "data": { "text/plain": [ - "{'no': 12,\n", + "{'verification_case_id': 12,\n", " 'run_simulation': False,\n", - " 'simulation_IO': {'output': 'ASHRAE901_Hospital_STD2019_Atlanta.csv'},\n", + " 'verification_properties': {'output': 'ASHRAE901_Hospital_STD2019_Atlanta.csv'},\n", " 'datapoints_source': {'idf_output_variables': {'T_oa_db': 'Environment:Site Outdoor Air Drybulb Temperature [C](TimeStep)',\n", " 'T_chw': 'CoolSys1 Supply Outlet Node:System Node Temperature [C](TimeStep)',\n", " 'm_chw': 'CoolSys1 Supply Outlet Node:System Node Mass Flow Rate [kg/s](TimeStep)'},\n", @@ -1070,9 +1070,9 @@ { "data": { "text/plain": [ - "{'no': 13,\n", + "{'verification_case_id': 13,\n", " 'run_simulation': True,\n", - " 'simulation_IO': {'idf': '../resources/ASHRAE901_RetailStandalone_STD2019_Seattle.idf',\n", + " 'verification_properties': {'idf': '../resources/ASHRAE901_RetailStandalone_STD2019_Seattle.idf',\n", " 'idd': '../resources/Energy+V9_0_1.idd',\n", " 'weather': '../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw',\n", " 'output': 'eplusout.csv'},\n", diff --git a/constrain/demo/library_item_demo/library_verification_cases.json b/constrain/demo/library_item_demo/library_verification_cases.json index fd1d4f33..f792306e 100644 --- a/constrain/demo/library_item_demo/library_verification_cases.json +++ b/constrain/demo/library_item_demo/library_verification_cases.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_Seattle.csv" }, "datapoints_source": { @@ -18,9 +18,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_Seattle.csv" }, "datapoints_source": { @@ -35,9 +35,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 3, + "verification_case_id": 3, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_Seattle.csv" }, "datapoints_source": { @@ -52,9 +52,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 4, + "verification_case_id": 4, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_Seattle.csv" }, "datapoints_source": { @@ -69,9 +69,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 5, + "verification_case_id": 5, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_OfficeLarge_STD2019_Seattle.csv" }, "datapoints_source": { @@ -85,9 +85,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 6, + "verification_case_id": 6, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_NewYork_a.csv" }, "datapoints_source": { @@ -103,9 +103,9 @@ "verification_class": "EconomizerHighLimitA" }, { - "no": 7, + "verification_case_id": 7, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_NewYork_b.csv" }, "datapoints_source": { @@ -121,9 +121,9 @@ "verification_class": "EconomizerHighLimitB" }, { - "no": 8, + "verification_case_id": 8, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_NewYork_c.csv" }, "datapoints_source": { @@ -141,9 +141,9 @@ "verification_class": "EconomizerHighLimitC" }, { - "no": 9, + "verification_case_id": 9, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_NewYork_d.csv" }, "datapoints_source": { @@ -161,9 +161,9 @@ "verification_class": "EconomizerHighLimitD" }, { - "no": 10, + "verification_case_id": 10, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_RetailStandalone_STD2019_NewYork_zonetempctrl.csv" }, "datapoints_source": { @@ -175,9 +175,9 @@ "verification_class": "ZoneTempControl" }, { - "no": 11, + "verification_case_id": 11, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_Hospital_STD2019_Atlanta.csv" }, "datapoints_source": { @@ -196,9 +196,9 @@ "verification_class": "HWReset" }, { - "no": 12, + "verification_case_id": 12, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_Hospital_STD2019_Atlanta.csv" }, "datapoints_source": { @@ -217,9 +217,9 @@ "verification_class": "CHWReset" }, { - "no": 13, + "verification_case_id": 13, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../resources/ASHRAE901_RetailStandalone_STD2019_Seattle.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -251,9 +251,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 14, + "verification_case_id": 14, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "output": "ASHRAE901_OfficeLarge_STD2004_Seattle.csv" }, "datapoints_source": { diff --git a/constrain/demo/verification_approach_demo/option1/optionsdemo.ipynb b/constrain/demo/verification_approach_demo/option1/optionsdemo.ipynb index abfb495a..646e6ebd 100644 --- a/constrain/demo/verification_approach_demo/option1/optionsdemo.ipynb +++ b/constrain/demo/verification_approach_demo/option1/optionsdemo.ipynb @@ -76,7 +76,7 @@ "\n", "```json\n", "{\n", - " \"no\": 1,\n", + " \"verification_case_id\": 1,\n", " \"verification_type\": \"compliance\",\n", " \"description_brief\": \"Economizer Integration: Non-Integrated Economizer Operation\",\n", " \"description_detail\": \"Economizer systems shall be integrated with the mechanical cooling system and be capable of providing partial cooling even when additional mechanical cooling is required to meet the remainder of the cooling load.\",\n", diff --git a/constrain/demo/verification_approach_demo/option2/optionsdemo2.ipynb b/constrain/demo/verification_approach_demo/option2/optionsdemo2.ipynb index 16ef8d20..7fe51843 100644 --- a/constrain/demo/verification_approach_demo/option2/optionsdemo2.ipynb +++ b/constrain/demo/verification_approach_demo/option2/optionsdemo2.ipynb @@ -65,7 +65,7 @@ "\n", "```json\n", " {\n", - " \"no\": 1,\n", + " \"verification_case_id\": 1,\n", " \"verification_type\": \"compliance\",\n", " \"description_brief\": \"Continuous dimming (daylighting control)\",\n", " \"description_detail\": \"The photocontrol shall reduce electric lighting power in response to available daylight using continuous dimming to 20% or less and off.\",\n", diff --git a/constrain/libcases.py b/constrain/libcases.py index ee93af2c..cb3ee3a7 100644 --- a/constrain/libcases.py +++ b/constrain/libcases.py @@ -48,18 +48,20 @@ def run_libcase( run_path = None if need_injection or run_sim: - original_idf_path = item.item["simulation_IO"]["idf"].strip() + original_idf_path = item.item["verification_properties"]["idf"].strip() if need_injection: - idd_path = item.item["simulation_IO"]["idd"].strip() + idd_path = item.item["verification_properties"]["idd"].strip() if ".idf" in original_idf_path.lower(): run_path = f"{original_idf_path[:-4]}" elif ".epjson" in original_idf_path.lower(): run_path = f"{original_idf_path[:-7]}" else: run_path = original_idf_path - instrumented_idf_path = f"{original_idf_path.split('.idf')[0]}_injected_VerificationNo{item_dict['no']}.idf" - run_path = f"{run_path}_injected_VerificationNo{item_dict['no']}" + instrumented_idf_path = f"{original_idf_path.split('.idf')[0]}_injected_VerificationNo{item_dict['verification_case_id']}.idf" + run_path = ( + f"{run_path}_injected_VerificationNo{item_dict['verification_case_id']}" + ) inject_idf( iddpath=idd_path, idfpath_in=original_idf_path, @@ -71,12 +73,12 @@ def run_libcase( run_idf_path = original_idf_path if run_sim: - weather_path = item.item["simulation_IO"]["weather"].strip() - if "ep_path" in list(item.item["simulation_IO"].keys()): + weather_path = item.item["verification_properties"]["weather"].strip() + if "ep_path" in list(item.item["verification_properties"].keys()): run_simulation( idfpath=run_idf_path, weatherpath=weather_path, - ep_path=item.item["simulation_IO"]["ep_path"], + ep_path=item.item["verification_properties"]["ep_path"], ) else: run_simulation(idfpath=run_idf_path, weatherpath=weather_path) @@ -98,7 +100,7 @@ def run_libcase( else: df = DateTimeEP( item.read_points_values( - csv_path=f"{instrumented_idf_path.replace('.idf', '')}/{item.item['simulation_IO']['output']}" + csv_path=f"{instrumented_idf_path.replace('.idf', '')}/{item.item['verification_properties']['output']}" ) ).transform() verification_class = item.item["verification_class"] @@ -130,14 +132,14 @@ def run_libcase( ) # verification is executed by CheckLibBase constructor if time_series_file_name is not None: - csv_path = f"{output_path}/{time_series_file_name}_{item_dict['no']}.csv" + csv_path = f"{output_path}/{time_series_file_name}_{item_dict['verification_case_id']}.csv" verification_obj.save_data(csv_path) if produce_outputs: md_content = verification_obj.add_md( None, output_path, "./", item_dict, plot_option, fig_size ) - return {int(item_dict["no"]): md_content} + return {int(item_dict["verification_case_id"]): md_content} else: outcome = verification_obj.get_checks verification_obj.plot(plot_option) diff --git a/constrain/run_sim_for_cases.py b/constrain/run_sim_for_cases.py index b5a370d7..cd721616 100644 --- a/constrain/run_sim_for_cases.py +++ b/constrain/run_sim_for_cases.py @@ -28,9 +28,9 @@ def run_sim_for_cases( item = items[0] if need_injection and run_sim: - original_idf_path = item.item["simulation_IO"]["idf"].strip() - idd_path = item.item["simulation_IO"]["idd"].strip() - wth_file = item.item["simulation_IO"]["weather"].strip() + original_idf_path = item.item["verification_properties"]["idf"].strip() + idd_path = item.item["verification_properties"]["idd"].strip() + wth_file = item.item["verification_properties"]["weather"].strip() # run_path = f"{original_idf_path.split('.idf')[0]}" if ".idf" in original_idf_path.lower(): run_path = f"{original_idf_path[:-4]}" @@ -58,13 +58,13 @@ def run_sim_for_cases( run_idf_path = original_idf_path if run_sim: - weather_path = item.item["simulation_IO"]["weather"].strip() + weather_path = item.item["verification_properties"]["weather"].strip() # TODO: the following code block is temperarily commented out for PIC run. Need to be wrapped as an option for local run. - # if "ep_path" in list(item.item["simulation_IO"].keys()): + # if "ep_path" in list(item.item["verification_properties"].keys()): # run_simulation( # idfpath=run_idf_path, # weatherpath=weather_path, - # ep_path=item.item["simulation_IO"]["ep_path"], + # ep_path=item.item["verification_properties"]["ep_path"], # ) # else: # run_simulation(idfpath=run_idf_path, weatherpath=weather_path) diff --git a/constrain/run_verification_case.py b/constrain/run_verification_case.py index 6c2553d9..788b5370 100644 --- a/constrain/run_verification_case.py +++ b/constrain/run_verification_case.py @@ -10,8 +10,8 @@ def run_verification_case(item_dict, run_path_postfix=""): item = build_an_item(item_dict) run_sim = item.item["run_simulation"] if run_sim: - original_idf_path = item.item["simulation_IO"]["idf"].strip() - idd_path = item.item["simulation_IO"]["idd"].strip() + original_idf_path = item.item["verification_properties"]["idf"].strip() + idd_path = item.item["verification_properties"]["idd"].strip() if ".idf" in original_idf_path.lower(): run_path = f"{original_idf_path[:-4]}" elif ".epjson" in original_idf_path.lower(): @@ -30,7 +30,7 @@ def run_verification_case(item_dict, run_path_postfix=""): run_path = "" df = item.read_points_values( - csv_path=f"../resources/{item.item['simulation_IO']['output']}" + csv_path=f"../resources/{item.item['verification_properties']['output']}" ) verification_class = item.item["verification_class"] @@ -42,7 +42,7 @@ def run_verification_case(item_dict, run_path_postfix=""): ) verification_obj = cls(df, parameters, f"{run_path}") md_content = verification_obj.add_md(None, "../results/imgs", "./imgs", item_dict) - return {int(item_dict["no"]): md_content} + return {int(item_dict["verification_case_id"]): md_content} def main(): diff --git a/constrain/schema/new_library_verification_cases.json b/constrain/schema/new_library_verification_cases.json index f56439ef..d3b271b5 100644 --- a/constrain/schema/new_library_verification_cases.json +++ b/constrain/schema/new_library_verification_cases.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -26,9 +26,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case2.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -51,9 +51,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 3, + "verification_case_id": 3, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case3.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -76,9 +76,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 4, + "verification_case_id": 4, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case4.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -101,9 +101,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 5, + "verification_case_id": 5, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case5.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -139,9 +139,9 @@ "verification_class": "EconomizerHighLimitD" }, { - "no": 6, + "verification_case_id": 6, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case6.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -177,9 +177,9 @@ "verification_class": "EconomizerHighLimitD" }, { - "no": 7, + "verification_case_id": 7, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Seattle_Case7.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -207,9 +207,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 8, + "verification_case_id": 8, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Buffalo_Case8.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_NY_Buffalo.Niagara.Intl.AP.725280_TMY3.epw", @@ -237,9 +237,9 @@ "verification_class": "IntegratedEconomizerControl" }, { - "no": 9, + "verification_case_id": 9, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case9.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -275,9 +275,9 @@ "verification_class": "HWReset" }, { - "no": 10, + "verification_case_id": 10, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case10.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -313,9 +313,9 @@ "verification_class": "HWReset" }, { - "no": 11, + "verification_case_id": 11, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case11.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -351,9 +351,9 @@ "verification_class": "CHWReset" }, { - "no": 12, + "verification_case_id": 12, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case12.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -389,9 +389,9 @@ "verification_class": "CHWReset" }, { - "no": 13, + "verification_case_id": 13, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_AK_Anchorage-JB.Elmendorf-Richardson.702720_TMY3.epw", @@ -432,9 +432,9 @@ "verification_class": "NightCycleOperation" }, { - "no": 14, + "verification_case_id": 14, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeMedium_STD2019_Atlanta_case14.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -465,9 +465,9 @@ "verification_class": "AutomaticOADamperControl" }, { - "no": 15, + "verification_case_id": 15, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "", "idd": "", "weather": "", @@ -513,9 +513,9 @@ "verification_class": "FanStaticPressureResetControl" }, { - "no": 16, + "verification_case_id": 16, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case16.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -550,9 +550,9 @@ "verification_class": "HeatRejectionFanVariableFlowControlsCells" }, { - "no": 17, + "verification_case_id": 17, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_SchoolSecondary_STD2016_Atlanta_case17.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -573,9 +573,9 @@ "verification_class": "ServiceWaterHeatingSystemControl" }, { - "no": 18, + "verification_case_id": 18, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "", "idd": "", "weather": "", @@ -595,9 +595,9 @@ "verification_class": "VAVStaticPressureSensorLocation" }, { - "no": 19, + "verification_case_id": 19, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle_case19.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -628,9 +628,9 @@ "verification_class": "VentilationFanControl" }, { - "no": 20, + "verification_case_id": 20, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_ApartmentHighRise_STD2019_Atlanta_case20.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -661,9 +661,9 @@ "verification_class": "WLHPLoopHeatRejectionControl" }, { - "no": 21, + "verification_case_id": 21, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -684,9 +684,9 @@ "verification_class": "AutomaticShutdown" }, { - "no": 22, + "verification_case_id": 22, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2016_Seattle.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -729,9 +729,9 @@ "verification_class": "HeatPumpSupplementalHeatLockout" }, { - "no": 23, + "verification_case_id": 23, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -760,9 +760,9 @@ "verification_class": "HeatRejectionFanVariableFlowControl" }, { - "no": 24, + "verification_case_id": 24, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_HotelLarge_STD2016_Seattle.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -792,9 +792,9 @@ "verification_class": "GuestRoomControlVent" }, { - "no": 25, + "verification_case_id": 25, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_HotelLarge_STD2019_Atlanta.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -824,9 +824,9 @@ "verification_class": "GuestRoomControlTemp" }, { - "no": 27, + "verification_case_id": 27, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeMedium_STD2019_Atlanta_ventilation_revised_dcv_no_vent_opt_no_econ_V900.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/constrain/schema/verification_cases.schema.json b/constrain/schema/verification_cases.schema.json index ec566a39..4d9e7be1 100644 --- a/constrain/schema/verification_cases.schema.json +++ b/constrain/schema/verification_cases.schema.json @@ -7,14 +7,14 @@ "items": { "type": "object", "properties": { - "no": { + "verification_case_id": { "type": "integer", "minimum": 1 }, "run_simulation": { "type": "boolean" }, - "simulation_IO": { + "verification_properties": { "type": "object", "properties": { "idf": { @@ -130,9 +130,9 @@ } ], "required": [ - "no", + "verification_case_id", "run_simulation", - "simulation_IO", + "verification_properties", "expected_result", "datapoints_source", "verification_class" @@ -150,7 +150,7 @@ }, "then": { "properties": { - "simulation_IO": { + "verification_properties": { "required": [ "idd", "weather", diff --git a/constrain/verification_cases_split.py b/constrain/verification_cases_split.py index fe2ed99e..ba593c36 100644 --- a/constrain/verification_cases_split.py +++ b/constrain/verification_cases_split.py @@ -19,7 +19,7 @@ for item in items: idf_path = None if item["run_simulation"]: - idf_path = item["simulation_IO"]["idf"] + idf_path = item["verification_properties"]["idf"] if idf_path not in unique_idfs_to_items: unique_idfs_to_items[idf_path] = [] unique_idfs_to_items[idf_path].append(item) diff --git a/design/api_design.md b/design/api_design.md index f8c2e5a8..83403bab 100644 --- a/design/api_design.md +++ b/design/api_design.md @@ -392,7 +392,7 @@ iii) third element in the returned list. - [x] `static validate_verification_case_structure(`_case: dict, verbose: bool=False_`)` - Validate verification case structure (e.g., check whether `run_simulation`, `simulation_IO`, etc. exist or not). Check if required key / values pairs exist in the case. check if datatype of values are appropriate, e.g. file path is str. + Validate verification case structure (e.g., check whether `run_simulation`, `verification_properties`, etc. exist or not). Check if required key / values pairs exist in the case. check if datatype of values are appropriate, e.g. file path is str. -**parameters**: @@ -402,7 +402,7 @@ iii) third element in the returned list. @@ -455,9 +455,9 @@ import animate as an # create verification items in suite SAT_case = { "id": "example_id", - "no": 1, + "verification_case_id": 1, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -543,9 +543,9 @@ import animate as an # create verification items in suite cases = [{ - "no": 1, + "verification_case_id": 1, "run_simulation": True, - "simulation_IO": { + "verification_properties": { "idf": "./test_cases/doe_prototype_cases/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -581,9 +581,9 @@ cases = [{ "verification_class": "AutomaticOADamperControl" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": True, - "simulation_IO": { + "verification_properties": { "idf": "./test_cases/doe_prototype_cases/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/design/brick_compliance_doc.md b/design/brick_compliance_doc.md index 288da108..8783ab25 100644 --- a/design/brick_compliance_doc.md +++ b/design/brick_compliance_doc.md @@ -28,7 +28,7 @@ Query datapoints required for given verification item lib. - **Parameters** - **verification_item_lib_name**: `str` or `list` of `str` verification item library to be quried. If only one verification item library is quried, one `str` argument type is paased. If multiple verification item libraries are queried, `list` of `str` argument type is passed. - **energyplus_naming_assembly**: `bool` (default: False) whether to convert the queried datapoints' name to EnergyPlus style variable name. - - **default_verification_case_values**: `dict` that has default key values. ("no", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. + - **default_verification_case_values**: `dict` that has default key values. ("verification_case_id", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. - **Returns**: `list` of `dict`(s), queried results in verification case format. The return dict only includes `datapoints_source` and `verification_class` keys. - `query_with_customized_statement(`_custom_query_statement: str_`, `_energyplus_naming_assembly:bool = False_`, `_*verification_item_lib_name: str_`, `_default_verification_case_values: dict = None_`)` @@ -37,6 +37,6 @@ Query datapoints with a customized query statement. When implemented, the qualit - **custom_query_statement**: `str` query statement written from users. - **verification_item_lib_name**: `str` verification library item of the `query_statement`. - **energyplus_naming_assembly**: `bool` (default: True) whether to convert the queried datapoints' name to EnergyPlus style variable name. - - **default_verification_case_values**: `dict` that has default key values. ("no", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. + - **default_verification_case_values**: `dict` that has default key values. ("verification_case_id", "run_simulation", "idf", "idd", "weather", "output", "ep_path", "expected_result", "parameters",) keys must exist. - **Returns**: `list` of `dict` of queried result in the verification case format. `str` message from the `query_statement`'s quality check result. \ No newline at end of file diff --git a/docs/source/Quickstart Guide.rst b/docs/source/Quickstart Guide.rst index 95a43d87..34b3cf1d 100644 --- a/docs/source/Quickstart Guide.rst +++ b/docs/source/Quickstart Guide.rst @@ -32,9 +32,9 @@ Running Verifications using **ConStrain** { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": false, - "simulation_IO": { + "verification_properties": { "idf": "modelica_dataset_set", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -57,9 +57,9 @@ Running Verifications using **ConStrain** ] } -- :json:`"no"`: A verification case JSON file can contain multiple cases, this corresponds to the ID of a case +- :json:`"verification_case_id"`: A verification case JSON file can contain multiple cases, this corresponds to the ID of a case - :json:`"run_simulation"`: Is a flag (:json:`true` or :json:`false`) that indicates if an EnergyPlus simulation should be performed -- :json:`"simulation_IO"`: Is a dictionary that contains information about what reference files should be used for the simulation if a simulation is not required the :json:`"output"` is still required, it corresponds to the file that **ConStrain** will use to run verifications +- :json:`"verification_properties"`: Is a dictionary that contains information about what reference files should be used for the simulation if a simulation is not required the :json:`"output"` is still required, it corresponds to the file that **ConStrain** will use to run verifications - :json:`"expected_result"`: Expected result from the verification, either :json:`"pass"` or :json:`"fail"` - :json:`"verification_class"`: Name of the verification from the library to carry out - :json:`"datapoints_source"`: Dictionary that contains information on the data points used for the verification; They can be of different types: :json:`"parameters"` (constant values), :json:`"dev_settings"` (mapping of the expected datapoint for the verification to column headers in the data), or :json:`"idf_output_variables"` (for EnergyPlus-based simulations); The latter should be defined also as a dictionary where each variable is expressed through a :json:`"subject"` (EnergyPlus output variable name), :json:`"variable"` (EnergyPlus output variable type), and :json:`"frequency"` (EnergyPlus output variable reporting frequency), see an example below diff --git a/test_cases/doe_prototype_cases/DOEPrototypeCases.ipynb b/test_cases/doe_prototype_cases/DOEPrototypeCases.ipynb index d1c8abcd..b8c7c013 100644 --- a/test_cases/doe_prototype_cases/DOEPrototypeCases.ipynb +++ b/test_cases/doe_prototype_cases/DOEPrototypeCases.ipynb @@ -81,7 +81,7 @@ "text": [ "This is a SupplyAirTempReset verification, and should PASS\n", "\n", - "{'no': 1, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_1 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 1, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_1 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -189,7 +189,7 @@ "text": [ "This is a SupplyAirTempReset verification, and should FAIL\n", "\n", - "{'no': 2, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case2.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_1 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 2, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case2.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_1 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -309,7 +309,7 @@ "text": [ "This is a SupplyAirTempReset verification, and should PASS\n", "\n", - "{'no': 3, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case3.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_2 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 3, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case3.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_2 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -415,7 +415,7 @@ "text": [ "This is a SupplyAirTempReset verification, and should FAIL\n", "\n", - "{'no': 4, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case4.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_2 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 4, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case4.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_sa_set': {'subject': 'VAV_2 Supply Equipment Outlet Node', 'variable': 'System Node Setpoint Temperature', 'frequency': 'detailed'}}, 'parameters': {'T_z_coo': 24.0}}, 'verification_class': 'SupplyAirTempReset', 'library_item_id': 1, 'description_brief': 'Cooling supply air temperature reset scale (25%)', 'description_detail': 'Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.', 'description_index': ['Section 6.5.3.5 in 90.1-2016'], 'description_datapoints': {'T_sa_set': 'AHU supply air temperature setpoint', 'T_z_coo': 'Design zone cooling air temperature'}, 'description_assertions': ['Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -535,7 +535,7 @@ "text": [ "This is a EconomizerHighLimitD verification, and should PASS\n", "\n", - "{'no': 5, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case5.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'VAV_1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'TimeStep'}, 'oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'ret_a_enth': {'subject': 'VAV_1 Supply Equipment Inlet Node', 'variable': 'System Node Enthalpy', 'frequency': 'TimeStep'}, 'oa_enth': {'subject': 'Environment', 'variable': 'Site Outdoor Air Enthalpy', 'frequency': 'TimeStep'}}, 'parameters': {'oa_threshold': 999, 'oa_min_flow': 4.3265}}, 'verification_class': 'EconomizerHighLimitD', 'library_item_id': 5, 'description_brief': 'Differential enthalpy + fixed dry bulb economizer high limit (case study)', 'description_detail': 'N/A', 'description_index': ['Table 6.5.1.1.3 in 90.1-2016'], 'description_datapoints': {'oa_db': 'OA dry bulb temperature', 'oa_threshold': 'OA dry bulb threshold', 'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'oa_enth': 'OA enthalpy', 'ret_a_enth': 'Return air enthalpy'}, 'description_assertions': ['oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (oa_db > oa_threshold))'], 'description_verification_type': 'rule-based', 'assertions_type': 'fail'}\n" + "{'verification_case_id': 5, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case5.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'VAV_1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'TimeStep'}, 'oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'ret_a_enth': {'subject': 'VAV_1 Supply Equipment Inlet Node', 'variable': 'System Node Enthalpy', 'frequency': 'TimeStep'}, 'oa_enth': {'subject': 'Environment', 'variable': 'Site Outdoor Air Enthalpy', 'frequency': 'TimeStep'}}, 'parameters': {'oa_threshold': 999, 'oa_min_flow': 4.3265}}, 'verification_class': 'EconomizerHighLimitD', 'library_item_id': 5, 'description_brief': 'Differential enthalpy + fixed dry bulb economizer high limit (case study)', 'description_detail': 'N/A', 'description_index': ['Table 6.5.1.1.3 in 90.1-2016'], 'description_datapoints': {'oa_db': 'OA dry bulb temperature', 'oa_threshold': 'OA dry bulb threshold', 'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'oa_enth': 'OA enthalpy', 'ret_a_enth': 'Return air enthalpy'}, 'description_assertions': ['oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (oa_db > oa_threshold))'], 'description_verification_type': 'rule-based', 'assertions_type': 'fail'}\n" ] } ], @@ -630,7 +630,7 @@ "text": [ "This is a EconomizerHighLimitD verification, and should FAIL\n", "\n", - "{'no': 6, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case6.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'VAV_1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'TimeStep'}, 'oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'ret_a_enth': {'subject': 'VAV_1 Supply Equipment Inlet Node', 'variable': 'System Node Enthalpy', 'frequency': 'TimeStep'}, 'oa_enth': {'subject': 'Environment', 'variable': 'Site Outdoor Air Enthalpy', 'frequency': 'TimeStep'}}, 'parameters': {'oa_threshold': 999, 'oa_min_flow': 2.9741}}, 'verification_class': 'EconomizerHighLimitD', 'library_item_id': 5, 'description_brief': 'Differential enthalpy + fixed dry bulb economizer high limit (case study)', 'description_detail': 'N/A', 'description_index': ['Table 6.5.1.1.3 in 90.1-2016'], 'description_datapoints': {'oa_db': 'OA dry bulb temperature', 'oa_threshold': 'OA dry bulb threshold', 'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'oa_enth': 'OA enthalpy', 'ret_a_enth': 'Return air enthalpy'}, 'description_assertions': ['oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (oa_db > oa_threshold))'], 'description_verification_type': 'rule-based', 'assertions_type': 'fail'}\n" + "{'verification_case_id': 6, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case6.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'VAV_1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'TimeStep'}, 'oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'ret_a_enth': {'subject': 'VAV_1 Supply Equipment Inlet Node', 'variable': 'System Node Enthalpy', 'frequency': 'TimeStep'}, 'oa_enth': {'subject': 'Environment', 'variable': 'Site Outdoor Air Enthalpy', 'frequency': 'TimeStep'}}, 'parameters': {'oa_threshold': 999, 'oa_min_flow': 2.9741}}, 'verification_class': 'EconomizerHighLimitD', 'library_item_id': 5, 'description_brief': 'Differential enthalpy + fixed dry bulb economizer high limit (case study)', 'description_detail': 'N/A', 'description_index': ['Table 6.5.1.1.3 in 90.1-2016'], 'description_datapoints': {'oa_db': 'OA dry bulb temperature', 'oa_threshold': 'OA dry bulb threshold', 'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'oa_enth': 'OA enthalpy', 'ret_a_enth': 'Return air enthalpy'}, 'description_assertions': ['oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (oa_db > oa_threshold))'], 'description_verification_type': 'rule-based', 'assertions_type': 'fail'}\n" ] } ], @@ -725,7 +725,7 @@ "text": [ "This is a IntegratedEconomizerControl verification, and should PASS\n", "\n", - "{'no': 7, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Seattle_Case7.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'PSZ-AC:1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'detailed'}, 'ccoil_out': {'subject': 'PSZ-AC:1', 'variable': 'Air System Cooling Coil Total Cooling Energy', 'frequency': 'detailed'}}, 'parameters': {'oa_min_flow': 0.28946}}, 'verification_class': 'IntegratedEconomizerControl', 'library_item_id': 6, 'description_brief': 'Economizer shall be integrated with mechanical cooling', 'description_detail': 'Economizer systems shall be integrated with the mechanical cooling system and be capable of and configured to provide partial cooling even when additional mechanical cooling is required to meet the remainder of the cooling load. Controls shall not false load the mechanical cooling systems by limiting or disabling the economizer or by any other means, such as hot-gas bypass, except at the lowest stage of mechanical cooling. (case study, add non-integrated economizer (check each seprate on, but not both on)', 'description_index': ['Section 6.5.1.3 in 90.1-2016'], 'description_datapoints': {'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'ccoil_out': 'Cooling coil transfer'}, 'description_assertions': ['((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens'], 'description_verification_type': 'procedure-based', 'assertions_type': 'fail'}\n" + "{'verification_case_id': 7, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Seattle_Case7.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'PSZ-AC:1_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'detailed'}, 'ccoil_out': {'subject': 'PSZ-AC:1', 'variable': 'Air System Cooling Coil Total Cooling Energy', 'frequency': 'detailed'}}, 'parameters': {'oa_min_flow': 0.28946}}, 'verification_class': 'IntegratedEconomizerControl', 'library_item_id': 6, 'description_brief': 'Economizer shall be integrated with mechanical cooling', 'description_detail': 'Economizer systems shall be integrated with the mechanical cooling system and be capable of and configured to provide partial cooling even when additional mechanical cooling is required to meet the remainder of the cooling load. Controls shall not false load the mechanical cooling systems by limiting or disabling the economizer or by any other means, such as hot-gas bypass, except at the lowest stage of mechanical cooling. (case study, add non-integrated economizer (check each seprate on, but not both on)', 'description_index': ['Section 6.5.1.3 in 90.1-2016'], 'description_datapoints': {'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'ccoil_out': 'Cooling coil transfer'}, 'description_assertions': ['((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens'], 'description_verification_type': 'procedure-based', 'assertions_type': 'fail'}\n" ] } ], @@ -818,7 +818,7 @@ "text": [ "This is a IntegratedEconomizerControl verification, and should FAIL\n", "\n", - "{'no': 8, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Buffalo_Case8.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_NY_Buffalo.Niagara.Intl.AP.725280_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'PSZ-AC:2_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'detailed'}, 'ccoil_out': {'subject': 'PSZ-AC:2', 'variable': 'Air System Cooling Coil Total Cooling Energy', 'frequency': 'detailed'}}, 'parameters': {'oa_min_flow': 2.439}}, 'verification_class': 'IntegratedEconomizerControl', 'library_item_id': 6, 'description_brief': 'Economizer shall be integrated with mechanical cooling', 'description_detail': 'Economizer systems shall be integrated with the mechanical cooling system and be capable of and configured to provide partial cooling even when additional mechanical cooling is required to meet the remainder of the cooling load. Controls shall not false load the mechanical cooling systems by limiting or disabling the economizer or by any other means, such as hot-gas bypass, except at the lowest stage of mechanical cooling. (case study, add non-integrated economizer (check each seprate on, but not both on)', 'description_index': ['Section 6.5.1.3 in 90.1-2016'], 'description_datapoints': {'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'ccoil_out': 'Cooling coil transfer'}, 'description_assertions': ['((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens'], 'description_verification_type': 'procedure-based', 'assertions_type': 'fail'}\n" + "{'verification_case_id': 8, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_RetailStandalone_STD2004_Buffalo_Case8.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_NY_Buffalo.Niagara.Intl.AP.725280_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'oa_flow': {'subject': 'PSZ-AC:2_OAInlet Node', 'variable': 'System Node Standard Density Volume Flow Rate', 'frequency': 'detailed'}, 'ccoil_out': {'subject': 'PSZ-AC:2', 'variable': 'Air System Cooling Coil Total Cooling Energy', 'frequency': 'detailed'}}, 'parameters': {'oa_min_flow': 2.439}}, 'verification_class': 'IntegratedEconomizerControl', 'library_item_id': 6, 'description_brief': 'Economizer shall be integrated with mechanical cooling', 'description_detail': 'Economizer systems shall be integrated with the mechanical cooling system and be capable of and configured to provide partial cooling even when additional mechanical cooling is required to meet the remainder of the cooling load. Controls shall not false load the mechanical cooling systems by limiting or disabling the economizer or by any other means, such as hot-gas bypass, except at the lowest stage of mechanical cooling. (case study, add non-integrated economizer (check each seprate on, but not both on)', 'description_index': ['Section 6.5.1.3 in 90.1-2016'], 'description_datapoints': {'oa_min_flow': 'OA minimum airflow setpoint', 'oa_flow': 'OA airflow', 'ccoil_out': 'Cooling coil transfer'}, 'description_assertions': ['((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens'], 'description_verification_type': 'procedure-based', 'assertions_type': 'fail'}\n" ] } ], @@ -911,7 +911,7 @@ "text": [ "This is a HWReset verification, and should PASS\n", "\n", - "{'no': 9, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case9.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 10, 'T_oa_min': -6.7, 'T_hw_max_st': 60.0, 'T_hw_min_st': 48.89}}, 'verification_class': 'HWReset', 'library_item_id': 9, 'description_brief': 'Hot water supply water temperature reset', 'description_detail': 'Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_hw': 'Hot water temp observed from the system node', 'm_hw': 'Hot water flow rate', 'T_hw_max_st': 'Hot water maximum temp setpoint', 'T_hw_min_st': 'Hot water minimum temp setpoint'}, 'description_assertions': ['When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 9, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case9.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 10, 'T_oa_min': -6.7, 'T_hw_max_st': 60.0, 'T_hw_min_st': 48.89}}, 'verification_class': 'HWReset', 'library_item_id': 9, 'description_brief': 'Hot water supply water temperature reset', 'description_detail': 'Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_hw': 'Hot water temp observed from the system node', 'm_hw': 'Hot water flow rate', 'T_hw_max_st': 'Hot water maximum temp setpoint', 'T_hw_min_st': 'Hot water minimum temp setpoint'}, 'description_assertions': ['When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -1019,7 +1019,7 @@ "text": [ "This is a HWReset verification, and should FAIL\n", "\n", - "{'no': 10, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case10.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 10, 'T_oa_min': -6.7, 'T_hw_max_st': 60.0, 'T_hw_min_st': 48.89}}, 'verification_class': 'HWReset', 'library_item_id': 9, 'description_brief': 'Hot water supply water temperature reset', 'description_detail': 'Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_hw': 'Hot water temp observed from the system node', 'm_hw': 'Hot water flow rate', 'T_hw_max_st': 'Hot water maximum temp setpoint', 'T_hw_min_st': 'Hot water minimum temp setpoint'}, 'description_assertions': ['When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 10, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case10.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_hw': {'subject': 'HeatSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 10, 'T_oa_min': -6.7, 'T_hw_max_st': 60.0, 'T_hw_min_st': 48.89}}, 'verification_class': 'HWReset', 'library_item_id': 9, 'description_brief': 'Hot water supply water temperature reset', 'description_detail': 'Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_hw': 'Hot water temp observed from the system node', 'm_hw': 'Hot water flow rate', 'T_hw_max_st': 'Hot water maximum temp setpoint', 'T_hw_min_st': 'Hot water minimum temp setpoint'}, 'description_assertions': ['When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -1127,7 +1127,7 @@ "text": [ "This is a CHWReset verification, and should PASS\n", "\n", - "{'no': 11, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case11.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 21.11, 'T_oa_min': 12.78, 'T_chw_max_st': 8.89, 'T_chw_min_st': 6.7}}, 'verification_class': 'CHWReset', 'library_item_id': 10, 'description_brief': 'Chilled water supply water temperature reset', 'description_detail': 'Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_chw': 'Chilled water temp observed from the system node', 'm_chw': 'Chilled water flow rate', 'T_chw_max_st': 'Chilled water maximum temp setpoint', 'T_chw_min_st': 'Chilled water minimum temp setpoint'}, 'description_assertions': ['When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 11, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case11.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'pass', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 21.11, 'T_oa_min': 12.78, 'T_chw_max_st': 8.89, 'T_chw_min_st': 6.7}}, 'verification_class': 'CHWReset', 'library_item_id': 10, 'description_brief': 'Chilled water supply water temperature reset', 'description_detail': 'Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_chw': 'Chilled water temp observed from the system node', 'm_chw': 'Chilled water flow rate', 'T_chw_max_st': 'Chilled water maximum temp setpoint', 'T_chw_min_st': 'Chilled water minimum temp setpoint'}, 'description_assertions': ['When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], @@ -1235,7 +1235,7 @@ "text": [ "This is a CHWReset verification, and should FAIL\n", "\n", - "{'no': 12, 'run_simulation': True, 'simulation_IO': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case12.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 21.11, 'T_oa_min': 12.78, 'T_chw_max_st': 8.89, 'T_chw_min_st': 6.7}}, 'verification_class': 'CHWReset', 'library_item_id': 10, 'description_brief': 'Chilled water supply water temperature reset', 'description_detail': 'Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_chw': 'Chilled water temp observed from the system node', 'm_chw': 'Chilled water flow rate', 'T_chw_max_st': 'Chilled water maximum temp setpoint', 'T_chw_min_st': 'Chilled water minimum temp setpoint'}, 'description_assertions': ['When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" + "{'verification_case_id': 12, 'run_simulation': True, 'verification_properties': {'idf': '../resources/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case12.idf', 'idd': '../resources/Energy+V9_0_1.idd', 'weather': '../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw', 'output': 'eplusout.csv'}, 'expected_result': 'fail', 'datapoints_source': {'idf_output_variables': {'T_oa_db': {'subject': 'Environment', 'variable': 'Site Outdoor Air Drybulb Temperature', 'frequency': 'TimeStep'}, 'T_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Temperature', 'frequency': 'TimeStep'}, 'm_chw': {'subject': 'CoolSys1 Supply Outlet Node', 'variable': 'System Node Mass Flow Rate', 'frequency': 'TimeStep'}}, 'parameters': {'T_oa_max': 21.11, 'T_oa_min': 12.78, 'T_chw_max_st': 8.89, 'T_chw_min_st': 6.7}}, 'verification_class': 'CHWReset', 'library_item_id': 10, 'description_brief': 'Chilled water supply water temperature reset', 'description_detail': 'Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)', 'description_index': ['Section 6.5.4.4 in 90.1-2016'], 'description_datapoints': {'T_oa_db': 'OA dry-bulb temperature', 'T_oa_max': 'OA dry-bulb upper threshold', 'T_oa_min': 'OA dry-bulb lower threshold', 'T_chw': 'Chilled water temp observed from the system node', 'm_chw': 'Chilled water flow rate', 'T_chw_max_st': 'Chilled water maximum temp setpoint', 'T_chw_min_st': 'Chilled water minimum temp setpoint'}, 'description_assertions': ['When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass'], 'description_verification_type': 'rule-based', 'assertions_type': 'pass'}\n" ] } ], diff --git a/test_cases/tspr_cases/tspr_cases.ipynb b/test_cases/tspr_cases/tspr_cases.ipynb index 4e212b68..079c4aa2 100644 --- a/test_cases/tspr_cases/tspr_cases.ipynb +++ b/test_cases/tspr_cases/tspr_cases.ipynb @@ -73,7 +73,7 @@ "for idf in glob.glob(\"../test_cases/tspr_cases/sat_reset/*.idf\"):\n", " if not \"injected\" in idf:\n", " sat_case = {}\n", - " sat_case[\"no\"] = str(case_counter)\n", + " sat_case[\"verification_case_id\"] = str(case_counter)\n", "\n", " idf_json = json.load(open(idf.replace(\".idf\", \".epJSON\")))\n", "\n", @@ -94,7 +94,7 @@ " tz_coo = d[\"value_until_time\"]\n", " # Define simulation IO\n", " sat_case[\"run_simulation\"] = True\n", - " sat_case[\"simulation_IO\"] = {\n", + " sat_case[\"verification_properties\"] = {\n", " \"idf\": \"../test_cases/tspr_cases/sat_reset/{}\".format(idf.split(\"\\\\\")[-1]),\n", " \"idd\": \"../resources/Energy+V9_2_0.idd\",\n", " \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n", @@ -137,7 +137,7 @@ "for idf in glob.glob(\"../test_cases/tspr_cases/chw_reset/*.idf\"):\n", " if not \"injected\" in idf:\n", " chw_case = {}\n", - " chw_case[\"no\"] = str(case_counter)\n", + " chw_case[\"verification_case_id\"] = str(case_counter)\n", "\n", " idf_json = json.load(open(idf.replace(\".idf\", \".epJSON\")))\n", "\n", @@ -160,7 +160,7 @@ " t_chw_min_st = v[\"setpoint_at_outdoor_high_temperature\"]\n", " # Define simulation IO\n", " chw_case[\"run_simulation\"] = True\n", - " chw_case[\"simulation_IO\"] = {\n", + " chw_case[\"verification_properties\"] = {\n", " \"idf\": \"../test_cases/tspr_cases/chw_reset/{}\".format(idf.split(\"\\\\\")[-1]),\n", " \"idd\": \"../resources/Energy+V9_2_0.idd\",\n", " \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n", diff --git a/test_cases/tspr_cases/tspr_verification_cases.json b/test_cases/tspr_cases/tspr_verification_cases.json index 2214d29c..8bab490c 100644 --- a/test_cases/tspr_cases/tspr_verification_cases.json +++ b/test_cases/tspr_cases/tspr_verification_cases.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": "0", + "verification_case_id": "0", "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/tspr_cases/sat_reset/sat_reset.idf", "idd": "../resources/Energy+V9_2_0.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -26,9 +26,9 @@ } }, { - "no": "1", + "verification_case_id": "1", "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/tspr_cases/sat_reset/sat_reset2.idf", "idd": "../resources/Energy+V9_2_0.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -51,9 +51,9 @@ } }, { - "no": "2", + "verification_case_id": "2", "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/tspr_cases/chw_reset/chw_reset.idf", "idd": "../resources/Energy+V9_2_0.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", diff --git a/test_cases/verif_mtd_pp/create_test_cases.py b/test_cases/verif_mtd_pp/create_test_cases.py index 29273c3b..04c09235 100644 --- a/test_cases/verif_mtd_pp/create_test_cases.py +++ b/test_cases/verif_mtd_pp/create_test_cases.py @@ -42,11 +42,11 @@ def chwreset(idf, idf_f, id, cases): t_chw_min_st = 6.7 chw_case = {} - chw_case["no"] = str(id) + chw_case["verification_case_id"] = str(id) # Define simulation IO chw_case["run_simulation"] = True - chw_case["simulation_IO"] = { + chw_case["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -108,11 +108,11 @@ def hwreset(idf, idf_f, id, cases): t_hw_min_st = 79.4 hw_case = {} - hw_case["no"] = str(id) + hw_case["verification_case_id"] = str(id) # Define simulation IO hw_case["run_simulation"] = True - hw_case["simulation_IO"] = { + hw_case["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -197,14 +197,14 @@ def sat_reset(idf, idf_f, id, cases): tz_coo = airloop_tz_coo[1] sat_case = {} - sat_case["no"] = str(id) + sat_case["verification_case_id"] = str(id) airloop = idf.getobject("AIRLOOPHVAC", airloop) sat_node = airloop.Supply_Side_Outlet_Node_Names # Define simulation IO sat_case["run_simulation"] = True - sat_case["simulation_IO"] = { + sat_case["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format( idf_f.split("/")[-1] ), @@ -238,11 +238,11 @@ def zone_temp_ctrl(idf, idf_f, id, cases): ) for zone in idf.idfobjects["ZONE"]: zone_temp_ctrl = {} - zone_temp_ctrl["no"] = str(id) + zone_temp_ctrl["verification_case_id"] = str(id) # Define simulation IO zone_temp_ctrl["run_simulation"] = True - zone_temp_ctrl["simulation_IO"] = { + zone_temp_ctrl["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -278,11 +278,11 @@ def zone_temp_ctrl_depth_htg(idf, idf_f, id, cases): ) for zone in idf.idfobjects["ZONE"]: zone_temp_ctrl_depth_htg = {} - zone_temp_ctrl_depth_htg["no"] = str(id) + zone_temp_ctrl_depth_htg["verification_case_id"] = str(id) # Define simulation IO zone_temp_ctrl_depth_htg["run_simulation"] = True - zone_temp_ctrl_depth_htg["simulation_IO"] = { + zone_temp_ctrl_depth_htg["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -313,11 +313,11 @@ def zone_temp_ctrl_depth_clg(idf, idf_f, id, cases): ) for zone in idf.idfobjects["ZONE"]: zone_temp_ctrl_depth_clg = {} - zone_temp_ctrl_depth_clg["no"] = str(id) + zone_temp_ctrl_depth_clg["verification_case_id"] = str(id) # Define simulation IO zone_temp_ctrl_depth_clg["run_simulation"] = True - zone_temp_ctrl_depth_clg["simulation_IO"] = { + zone_temp_ctrl_depth_clg["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -348,11 +348,11 @@ def zone_temp_ctrl_min(idf, idf_f, id, cases): ) for zone in idf.idfobjects["ZONE"]: zone_temp_ctrl_min = {} - zone_temp_ctrl_min["no"] = str(id) + zone_temp_ctrl_min["verification_case_id"] = str(id) # Define simulation IO zone_temp_ctrl_min["run_simulation"] = True - zone_temp_ctrl_min["simulation_IO"] = { + zone_temp_ctrl_min["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -383,11 +383,11 @@ def zone_temp_ctrl_max(idf, idf_f, id, cases): ) for zone in idf.idfobjects["ZONE"]: zone_temp_ctrl_max = {} - zone_temp_ctrl_max["no"] = str(id) + zone_temp_ctrl_max["verification_case_id"] = str(id) # Define simulation IO zone_temp_ctrl_max["run_simulation"] = True - zone_temp_ctrl_max["simulation_IO"] = { + zone_temp_ctrl_max["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format(idf_f.split("/")[-1]), "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -507,11 +507,11 @@ def integrated_econ(idf, idf_f, id, cases): oa_node = oa_ctrl.Actuator_Node_Name integrated_econ = {} - integrated_econ["no"] = str(id) + integrated_econ["verification_case_id"] = str(id) # Define simulation IO integrated_econ["run_simulation"] = True - integrated_econ["simulation_IO"] = { + integrated_econ["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format( idf_f.split("/")[-1] ), @@ -635,11 +635,11 @@ def diff_enthalpy_econ(idf, idf_f, id, cases): ret_node = oa_ctrl.Return_Air_Node_Name diff_enthalpy_econ = {} - diff_enthalpy_econ["no"] = str(id) + diff_enthalpy_econ["verification_case_id"] = str(id) # Define simulation IO diff_enthalpy_econ["run_simulation"] = True - diff_enthalpy_econ["simulation_IO"] = { + diff_enthalpy_econ["verification_properties"] = { "idf": "../test_cases/verif_mtd_pp/idfs/{}".format( idf_f.split("/")[-1] ), diff --git a/tests/api/data/custom_lib_aio/custom_lib_all.py b/tests/api/data/custom_lib_aio/custom_lib_all.py index 18dfe3ca..878e1de0 100644 --- a/tests/api/data/custom_lib_aio/custom_lib_all.py +++ b/tests/api/data/custom_lib_aio/custom_lib_all.py @@ -65,10 +65,8 @@ def add_md( ): outcome_bool, outcome_dict = self.get_checks - img_folder = f"{img_folder}/VerificationCase{item_dict['no']}" - relative_path_to_img_in_md = ( - f"{relative_path_to_img_in_md}/VerificationCase{item_dict['no']}" - ) + img_folder = f"{img_folder}/VerificationCase{item_dict['verification_case_id']}" + relative_path_to_img_in_md = f"{relative_path_to_img_in_md}/VerificationCase{item_dict['verification_case_id']}" if not os.path.exists(img_folder): os.makedirs(img_folder) @@ -93,7 +91,7 @@ def add_md( """ md_content = f""" -## Results for Verification Case ID {item_dict['no']} +## Results for Verification Case ID {item_dict['verification_case_id']} ### Pass/Fail check result {str(outcome_dict)} @@ -115,7 +113,7 @@ def add_md( return { "md_content": md_content, "outcome_notes": outcome_dict, - "model_file": item_dict["simulation_IO"]["idf"] + "model_file": item_dict["verification_properties"]["idf"] .split("/")[-1] .split("\\")[-1] .replace(".idf", ""), diff --git a/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2004_Atlanta_Batch0_md.json b/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2004_Atlanta_Batch0_md.json index b87aa3cc..fca153b3 100644 --- a/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2004_Atlanta_Batch0_md.json +++ b/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2004_Atlanta_Batch0_md.json @@ -1 +1 @@ -{"2": {"md_content": "\n## Results for Verification Case ID 2\n\n### Pass/Fail check result\n{'Sample #': 52978, 'Pass #': 0, 'Fail #': 52978, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 1.0, 'Failure Severity': 0.28, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.28, 'Max Actual Control1': 0.0, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase2\\All_plot_aio.png](./imgs/VerificationCase2\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase2\\All_plot_obo.png](./imgs/VerificationCase2\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase2\\Day_plot_aio.png](./imgs/VerificationCase2\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase2\\Day_plot_obo.png](./imgs/VerificationCase2\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 2,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_1 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52978, "Pass #": 0, "Fail #": 52978, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 1.0, "Failure Severity": 0.28, "Priority Ranking": 4, "Calculated Priority Ranking": 0.28, "Max Actual Control1": 0.0, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "SupplyAirTempReset"}, "4": {"md_content": "\n## Results for Verification Case ID 4\n\n### Pass/Fail check result\n{'Sample #': 52978, 'Pass #': 0, 'Fail #': 52978, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 1.0, 'Failure Severity': 0.28, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.28, 'Max Actual Control1': 0.0, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase4\\All_plot_aio.png](./imgs/VerificationCase4\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase4\\All_plot_obo.png](./imgs/VerificationCase4\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase4\\Day_plot_aio.png](./imgs/VerificationCase4\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase4\\Day_plot_obo.png](./imgs/VerificationCase4\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 4,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_2 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52978, "Pass #": 0, "Fail #": 52978, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 1.0, "Failure Severity": 0.28, "Priority Ranking": 4, "Calculated Priority Ranking": 0.28, "Max Actual Control1": 0.0, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "SupplyAirTempReset"}, "8": {"md_content": "\n## Results for Verification Case ID 8\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 152, 'Fail #': 52408, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.997, 'Failure Severity': 3.301, 'Priority Ranking': 9, 'Calculated Priority Ranking': 3.291, 'Max Actual Control1': 82.0, 'Max Control Setpoint1': 60.0, 'Max Actual Control2': 82.0, 'Max Control Setpoint2': 48.89}\n\n### Result visualization\n\n![../results/imgs/VerificationCase8\\All_plot_aio.png](./imgs/VerificationCase8\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase8\\All_plot_obo.png](./imgs/VerificationCase8\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase8\\Day_plot_aio.png](./imgs/VerificationCase8\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase8\\Day_plot_obo.png](./imgs/VerificationCase8\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 8,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 10,\n \"T_oa_min\": -6.7,\n \"T_hw_max_st\": 60.0,\n \"T_hw_min_st\": 48.89\n }\n },\n \"verification_class\": \"HWReset\",\n \"library_item_id\": 9,\n \"description_brief\": \"Hot water supply water temperature reset\",\n \"description_detailed\": \"Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_hw\": \"Hot water temp observed from the system node\",\n \"m_hw\": \"Hot water flow rate\",\n \"T_hw_max_st\": \"Hot water maximum temp setpoint\",\n \"T_hw_min_st\": \"Hot water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 152, "Fail #": 52408, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.997, "Failure Severity": 3.301, "Priority Ranking": 9, "Calculated Priority Ranking": 3.291, "Max Actual Control1": 82.0, "Max Control Setpoint1": 60.0, "Max Actual Control2": 82.0, "Max Control Setpoint2": 48.89}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "HWReset"}, "10": {"md_content": "\n## Results for Verification Case ID 10\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16040, 'Fail #': 36520, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.695, 'Failure Severity': 0.11, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.076, 'Max Actual Control1': 9.709, 'Max Control Setpoint1': 8.89, 'Max Actual Control2': 9.709, 'Max Control Setpoint2': 6.7}\n\n### Result visualization\n\n![../results/imgs/VerificationCase10\\All_plot_aio.png](./imgs/VerificationCase10\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase10\\All_plot_obo.png](./imgs/VerificationCase10\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase10\\Day_plot_aio.png](./imgs/VerificationCase10\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase10\\Day_plot_obo.png](./imgs/VerificationCase10\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 10,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 21.11,\n \"T_oa_min\": 12.78,\n \"T_chw_max_st\": 8.89,\n \"T_chw_min_st\": 6.7\n }\n },\n \"verification_class\": \"CHWReset\",\n \"library_item_id\": 10,\n \"description_brief\": \"Chilled water supply water temperature reset\",\n \"description_detailed\": \"Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_chw\": \"Chilled water temp observed from the system node\",\n \"m_chw\": \"Chilled water flow rate\",\n \"T_chw_max_st\": \"Chilled water maximum temp setpoint\",\n \"T_chw_min_st\": \"Chilled water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16040, "Fail #": 36520, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.695, "Failure Severity": 0.11, "Priority Ranking": 9, "Calculated Priority Ranking": 0.076, "Max Actual Control1": 9.709, "Max Control Setpoint1": 8.89, "Max Actual Control2": 9.709, "Max Control Setpoint2": 6.7}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "CHWReset"}} \ No newline at end of file +{"2": {"md_content": "\n## Results for Verification Case ID 2\n\n### Pass/Fail check result\n{'Sample #': 52978, 'Pass #': 0, 'Fail #': 52978, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 1.0, 'Failure Severity': 0.28, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.28, 'Max Actual Control1': 0.0, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase2\\All_plot_aio.png](./imgs/VerificationCase2\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase2\\All_plot_obo.png](./imgs/VerificationCase2\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase2\\Day_plot_aio.png](./imgs/VerificationCase2\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase2\\Day_plot_obo.png](./imgs/VerificationCase2\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 2,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_1 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52978, "Pass #": 0, "Fail #": 52978, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 1.0, "Failure Severity": 0.28, "Priority Ranking": 4, "Calculated Priority Ranking": 0.28, "Max Actual Control1": 0.0, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "SupplyAirTempReset"}, "4": {"md_content": "\n## Results for Verification Case ID 4\n\n### Pass/Fail check result\n{'Sample #': 52978, 'Pass #': 0, 'Fail #': 52978, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 1.0, 'Failure Severity': 0.28, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.28, 'Max Actual Control1': 0.0, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase4\\All_plot_aio.png](./imgs/VerificationCase4\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase4\\All_plot_obo.png](./imgs/VerificationCase4\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase4\\Day_plot_aio.png](./imgs/VerificationCase4\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase4\\Day_plot_obo.png](./imgs/VerificationCase4\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 4,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_2 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52978, "Pass #": 0, "Fail #": 52978, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 1.0, "Failure Severity": 0.28, "Priority Ranking": 4, "Calculated Priority Ranking": 0.28, "Max Actual Control1": 0.0, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "SupplyAirTempReset"}, "8": {"md_content": "\n## Results for Verification Case ID 8\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 152, 'Fail #': 52408, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.997, 'Failure Severity': 3.301, 'Priority Ranking': 9, 'Calculated Priority Ranking': 3.291, 'Max Actual Control1': 82.0, 'Max Control Setpoint1': 60.0, 'Max Actual Control2': 82.0, 'Max Control Setpoint2': 48.89}\n\n### Result visualization\n\n![../results/imgs/VerificationCase8\\All_plot_aio.png](./imgs/VerificationCase8\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase8\\All_plot_obo.png](./imgs/VerificationCase8\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase8\\Day_plot_aio.png](./imgs/VerificationCase8\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase8\\Day_plot_obo.png](./imgs/VerificationCase8\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 8,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 10,\n \"T_oa_min\": -6.7,\n \"T_hw_max_st\": 60.0,\n \"T_hw_min_st\": 48.89\n }\n },\n \"verification_class\": \"HWReset\",\n \"library_item_id\": 9,\n \"description_brief\": \"Hot water supply water temperature reset\",\n \"description_detailed\": \"Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_hw\": \"Hot water temp observed from the system node\",\n \"m_hw\": \"Hot water flow rate\",\n \"T_hw_max_st\": \"Hot water maximum temp setpoint\",\n \"T_hw_min_st\": \"Hot water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 152, "Fail #": 52408, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.997, "Failure Severity": 3.301, "Priority Ranking": 9, "Calculated Priority Ranking": 3.291, "Max Actual Control1": 82.0, "Max Control Setpoint1": 60.0, "Max Actual Control2": 82.0, "Max Control Setpoint2": 48.89}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "HWReset"}, "10": {"md_content": "\n## Results for Verification Case ID 10\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16040, 'Fail #': 36520, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.695, 'Failure Severity': 0.11, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.076, 'Max Actual Control1': 9.709, 'Max Control Setpoint1': 8.89, 'Max Actual Control2': 9.709, 'Max Control Setpoint2': 6.7}\n\n### Result visualization\n\n![../results/imgs/VerificationCase10\\All_plot_aio.png](./imgs/VerificationCase10\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase10\\All_plot_obo.png](./imgs/VerificationCase10\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase10\\Day_plot_aio.png](./imgs/VerificationCase10\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase10\\Day_plot_obo.png](./imgs/VerificationCase10\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 10,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"fail\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 21.11,\n \"T_oa_min\": 12.78,\n \"T_chw_max_st\": 8.89,\n \"T_chw_min_st\": 6.7\n }\n },\n \"verification_class\": \"CHWReset\",\n \"library_item_id\": 10,\n \"description_brief\": \"Chilled water supply water temperature reset\",\n \"description_detailed\": \"Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_chw\": \"Chilled water temp observed from the system node\",\n \"m_chw\": \"Chilled water flow rate\",\n \"T_chw_max_st\": \"Chilled water maximum temp setpoint\",\n \"T_chw_min_st\": \"Chilled water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16040, "Fail #": 36520, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.695, "Failure Severity": 0.11, "Priority Ranking": 9, "Calculated Priority Ranking": 0.076, "Max Actual Control1": 9.709, "Max Control Setpoint1": 8.89, "Max Actual Control2": 9.709, "Max Control Setpoint2": 6.7}, "model_file": "ASHRAE901_Hospital_STD2004_Atlanta", "verification_class": "CHWReset"}} \ No newline at end of file diff --git a/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2019_Atlanta_Batch0_md.json b/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2019_Atlanta_Batch0_md.json index b188aa9e..09c65ad2 100644 --- a/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2019_Atlanta_Batch0_md.json +++ b/tests/api/data/reporting_data/ASHRAE901_Hospital_STD2019_Atlanta_Batch0_md.json @@ -1 +1 @@ -{"1": {"md_content": "\n## Results for Verification Case ID 1\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 2.8, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase1\\All_plot_aio.png](./imgs/VerificationCase1\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase1\\All_plot_obo.png](./imgs/VerificationCase1\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase1\\Day_plot_aio.png](./imgs/VerificationCase1\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase1\\Day_plot_obo.png](./imgs/VerificationCase1\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 1,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_1 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 4, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 2.8, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "SupplyAirTempReset"}, "3": {"md_content": "\n## Results for Verification Case ID 3\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 2.8, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase3\\All_plot_aio.png](./imgs/VerificationCase3\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase3\\All_plot_obo.png](./imgs/VerificationCase3\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase3\\Day_plot_aio.png](./imgs/VerificationCase3\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase3\\Day_plot_obo.png](./imgs/VerificationCase3\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 3,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_2 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 4, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 2.8, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "SupplyAirTempReset"}, "7": {"md_content": "\n## Results for Verification Case ID 7\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 52560, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 60.0, 'Max Control Setpoint1': 60.0, 'Max Actual Control2': 60.0, 'Max Control Setpoint2': 48.89}\n\n### Result visualization\n\n![../results/imgs/VerificationCase7\\All_plot_aio.png](./imgs/VerificationCase7\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase7\\All_plot_obo.png](./imgs/VerificationCase7\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase7\\Day_plot_aio.png](./imgs/VerificationCase7\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase7\\Day_plot_obo.png](./imgs/VerificationCase7\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 7,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 10,\n \"T_oa_min\": -6.7,\n \"T_hw_max_st\": 60.0,\n \"T_hw_min_st\": 48.89\n }\n },\n \"verification_class\": \"HWReset\",\n \"library_item_id\": 9,\n \"description_brief\": \"Hot water supply water temperature reset\",\n \"description_detailed\": \"Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_hw\": \"Hot water temp observed from the system node\",\n \"m_hw\": \"Hot water flow rate\",\n \"T_hw_max_st\": \"Hot water maximum temp setpoint\",\n \"T_hw_min_st\": \"Hot water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 52560, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 9, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 60.0, "Max Control Setpoint1": 60.0, "Max Actual Control2": 60.0, "Max Control Setpoint2": 48.89}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HWReset"}, "9": {"md_content": "\n## Results for Verification Case ID 9\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 40157, 'Fail #': 12403, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.236, 'Failure Severity': 0.044, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.01, 'Max Actual Control1': 11.182, 'Max Control Setpoint1': 8.89, 'Max Actual Control2': 11.182, 'Max Control Setpoint2': 6.7}\n\n### Result visualization\n\n![../results/imgs/VerificationCase9\\All_plot_aio.png](./imgs/VerificationCase9\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase9\\All_plot_obo.png](./imgs/VerificationCase9\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase9\\Day_plot_aio.png](./imgs/VerificationCase9\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase9\\Day_plot_obo.png](./imgs/VerificationCase9\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 9,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 21.11,\n \"T_oa_min\": 12.78,\n \"T_chw_max_st\": 8.89,\n \"T_chw_min_st\": 6.7\n }\n },\n \"verification_class\": \"CHWReset\",\n \"library_item_id\": 10,\n \"description_brief\": \"Chilled water supply water temperature reset\",\n \"description_detailed\": \"Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_chw\": \"Chilled water temp observed from the system node\",\n \"m_chw\": \"Chilled water flow rate\",\n \"T_chw_max_st\": \"Chilled water maximum temp setpoint\",\n \"T_chw_min_st\": \"Chilled water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 40157, "Fail #": 12403, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.236, "Failure Severity": 0.044, "Priority Ranking": 9, "Calculated Priority Ranking": 0.01, "Max Actual Control1": 11.182, "Max Control Setpoint1": 8.89, "Max Actual Control2": 11.182, "Max Control Setpoint2": 6.7}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "CHWReset"}, "14": {"md_content": "\n## Results for Verification Case ID 14\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 10, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 4.0, 'Max Control Setpoint1': 4.0}\n\n### Result visualization\n\n![../results/imgs/VerificationCase14\\All_plot_aio.png](./imgs/VerificationCase14\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase14\\All_plot_obo.png](./imgs/VerificationCase14\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase14\\Day_plot_aio.png](./imgs/VerificationCase14\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase14\\Day_plot_obo.png](./imgs/VerificationCase14\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 14,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"ct_op_cells\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Operating Cells Count\",\n \"frequency\": \"detailed\"\n },\n \"m\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Mass Flow Rate\",\n \"frequency\": \"detailed\"\n },\n \"P_fan_ct\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Fan Electric Power\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"ct_cells\": 4,\n \"m_des\": 0.0375568,\n \"min_flow_frac_per_cell\": 0.05\n }\n },\n \"verification_class\": \"HeatRejectionFanVariableFlowControlsCells\",\n \"library_item_id\": 19,\n \"description_brief\": \"Heat rejection fan variable flow controls cells\",\n \"description_index\": [\n \"Section 6.5.5.2.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"ct_op_cells\": \"Number of operating cooling tower cells\",\n \"ct_cells\": \"Number of cooling tower cells\",\n \"m\": \"Cooling tower mass flow rate\",\n \"m_des\": \"Cooling tower design mass flow rate\",\n \"min_flow_frac_per_cell\": \"Minimum flow fraction per cooling tower cell\",\n \"P_fan_ct\": \"Cooling tower fan power\"\n },\n \"description_assertions\": [\n \"if the number of operating cooling tower cells is equal to the maximum number of cooling tower cells then pass else fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 10, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 4.0, "Max Control Setpoint1": 4.0}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HeatRejectionFanVariableFlowControlsCells"}, "21": {"md_content": "\n## Results for Verification Case ID 21\n\n### Pass/Fail check result\n{'Sample #': 1, 'Pass #': 17832, 'Fail #': 0, 'Verification Passed?': True, 'Failure Ratio': 0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0}\n\n### Result visualization\n\n\n### Verification case definition\n```\n{\n \"no\": 21,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"P_ct_fan\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Fan Electric Power\",\n \"frequency\": \"Detailed\"\n },\n \"m_ct_fan_ratio\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Air Flow Rate Ratio\",\n \"frequency\": \"Detailed\"\n }\n },\n \"parameters\": {\n \"m_ct_fan_dsgn\": 36.47,\n \"P_ct_fan_dsgn\": 13359.2\n }\n },\n \"verification_class\": \"HeatRejectionFanVariableFlowControl\",\n \"library_item_id\": 26,\n \"description_brief\": \"The cooling tower fan power is 30% of the design value at 50% flow\",\n \"description_index\": [\n \"Section 6.5.5.2.1 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"P_ct_fan\": \"Cooling Tower Fan Power\",\n \"P_ct_fan_dsgn\": \"Cooling Tower Design Fan Power\",\n \"m_ct_fan\": \"Cooling Tower Air Flow\",\n \"m_ct_fan_dsgn\": \"Cooling Tower Design Air Flow\"\n },\n \"description_assertions\": [\n \"Verify that at 5% flow, the cooling tower fan power is 30% of the design value. Since simulation results might not include that exact point, we use a regression based approach to determining if the code requirement is met\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 1, "Pass #": 17832, "Fail #": 0, "Verification Passed?": true, "Failure Ratio": 0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HeatRejectionFanVariableFlowControl"}} \ No newline at end of file +{"1": {"md_content": "\n## Results for Verification Case ID 1\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 2.8, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase1\\All_plot_aio.png](./imgs/VerificationCase1\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase1\\All_plot_obo.png](./imgs/VerificationCase1\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase1\\Day_plot_aio.png](./imgs/VerificationCase1\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase1\\Day_plot_obo.png](./imgs/VerificationCase1\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 1,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_1 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 4, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 2.8, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "SupplyAirTempReset"}, "3": {"md_content": "\n## Results for Verification Case ID 3\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 4, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 2.8, 'Max Control Setpoint1': 2.8}\n\n### Result visualization\n\n![../results/imgs/VerificationCase3\\All_plot_aio.png](./imgs/VerificationCase3\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase3\\All_plot_obo.png](./imgs/VerificationCase3\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase3\\Day_plot_aio.png](./imgs/VerificationCase3\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase3\\Day_plot_obo.png](./imgs/VerificationCase3\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 3,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_sa_set\": {\n \"subject\": \"VAV_2 Supply Equipment Outlet Node\",\n \"variable\": \"System Node Setpoint Temperature\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"T_z_coo\": 24.0\n }\n },\n \"verification_class\": \"SupplyAirTempReset\",\n \"library_item_id\": 1,\n \"description_brief\": \"Cooling supply air temperature reset scale (25%)\",\n \"description_detailed\": \"Multiple zone HVAC systems must include controls that automatically reset the supply air temperature in response to representative building loads, or to outdoor air temperature. The controls shall reset the supply air temperature at least 25% of the difference between the design supply air temperature and the design room air temperature. Controls that adjust the reset based on zone humidity are allowed. Zones that are expected to experience relatively constant loads, such as electronic equipment rooms, shall be designed for the fully reset supply temperature.\",\n \"description_index\": [\n \"Section 6.5.3.5 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_sa_set\": \"AHU supply air temperature setpoint\",\n \"T_z_coo\": \"Design zone cooling air temperature\"\n },\n \"description_assertions\": [\n \"Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 4, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 2.8, "Max Control Setpoint1": 2.8}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "SupplyAirTempReset"}, "7": {"md_content": "\n## Results for Verification Case ID 7\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 52560, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 60.0, 'Max Control Setpoint1': 60.0, 'Max Actual Control2': 60.0, 'Max Control Setpoint2': 48.89}\n\n### Result visualization\n\n![../results/imgs/VerificationCase7\\All_plot_aio.png](./imgs/VerificationCase7\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase7\\All_plot_obo.png](./imgs/VerificationCase7\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase7\\Day_plot_aio.png](./imgs/VerificationCase7\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase7\\Day_plot_obo.png](./imgs/VerificationCase7\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 7,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_hw\": {\n \"subject\": \"HeatSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 10,\n \"T_oa_min\": -6.7,\n \"T_hw_max_st\": 60.0,\n \"T_hw_min_st\": 48.89\n }\n },\n \"verification_class\": \"HWReset\",\n \"library_item_id\": 9,\n \"description_brief\": \"Hot water supply water temperature reset\",\n \"description_detailed\": \"Hot-water systems with a design capacity exceeding 300,000 Btu/h supplying heated water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_hw\": \"Hot water temp observed from the system node\",\n \"m_hw\": \"Hot water flow rate\",\n \"T_hw_max_st\": \"Hot water maximum temp setpoint\",\n \"T_hw_min_st\": \"Hot water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_hw > 0, T_hw <= T_hw_max_st and T_hw >= T_hw_min_st; When m_hw < 0, always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 52560, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 9, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 60.0, "Max Control Setpoint1": 60.0, "Max Actual Control2": 60.0, "Max Control Setpoint2": 48.89}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HWReset"}, "9": {"md_content": "\n## Results for Verification Case ID 9\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 40157, 'Fail #': 12403, 'Untest #': 0, 'Verification Passed?': False, 'Failure Ratio': 0.236, 'Failure Severity': 0.044, 'Priority Ranking': 9, 'Calculated Priority Ranking': 0.01, 'Max Actual Control1': 11.182, 'Max Control Setpoint1': 8.89, 'Max Actual Control2': 11.182, 'Max Control Setpoint2': 6.7}\n\n### Result visualization\n\n![../results/imgs/VerificationCase9\\All_plot_aio.png](./imgs/VerificationCase9\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase9\\All_plot_obo.png](./imgs/VerificationCase9\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase9\\Day_plot_aio.png](./imgs/VerificationCase9\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase9\\Day_plot_obo.png](./imgs/VerificationCase9\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 9,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_oa_db\": {\n \"subject\": \"Environment\",\n \"variable\": \"Site Outdoor Air Drybulb Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"T_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"m_chw\": {\n \"subject\": \"CoolSys1 Supply Outlet Node\",\n \"variable\": \"System Node Mass Flow Rate\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"T_oa_max\": 21.11,\n \"T_oa_min\": 12.78,\n \"T_chw_max_st\": 8.89,\n \"T_chw_min_st\": 6.7\n }\n },\n \"verification_class\": \"CHWReset\",\n \"library_item_id\": 10,\n \"description_brief\": \"Chilled water supply water temperature reset\",\n \"description_detailed\": \"Chilled-water systems with a design capacity exceeding 300,000 Btu/h supplying chilled water to comfort conditioning systems shall include controls that automatically reset supply water temperatures by representative building loads (including return water temperature) or by outdoor air temperature. Where DDC is used to control valves, the set point shall be reset based on valve positions until one valve is nearly wide open or setpoint limits of the system equipment or application have been reached. (case study)\",\n \"description_index\": [\n \"Section 6.5.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_oa_db\": \"OA dry-bulb temperature\",\n \"T_oa_max\": \"OA dry-bulb upper threshold\",\n \"T_oa_min\": \"OA dry-bulb lower threshold\",\n \"T_chw\": \"Chilled water temp observed from the system node\",\n \"m_chw\": \"Chilled water flow rate\",\n \"T_chw_max_st\": \"Chilled water maximum temp setpoint\",\n \"T_chw_min_st\": \"Chilled water minimum temp setpoint\"\n },\n \"description_assertions\": [\n \"When m_chw > 0, T_chw <= T_chw_max_st and T_chw >= T_chw_min_st; When m_chw <= 0 , always pass\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 40157, "Fail #": 12403, "Untest #": 0, "Verification Passed?": false, "Failure Ratio": 0.236, "Failure Severity": 0.044, "Priority Ranking": 9, "Calculated Priority Ranking": 0.01, "Max Actual Control1": 11.182, "Max Control Setpoint1": 8.89, "Max Actual Control2": 11.182, "Max Control Setpoint2": 6.7}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "CHWReset"}, "14": {"md_content": "\n## Results for Verification Case ID 14\n\n### Pass/Fail check result\n{'Sample #': 53573, 'Pass #': 53573, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 10, 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 4.0, 'Max Control Setpoint1': 4.0}\n\n### Result visualization\n\n![../results/imgs/VerificationCase14\\All_plot_aio.png](./imgs/VerificationCase14\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase14\\All_plot_obo.png](./imgs/VerificationCase14\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase14\\Day_plot_aio.png](./imgs/VerificationCase14\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase14\\Day_plot_obo.png](./imgs/VerificationCase14\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 14,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"ct_op_cells\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Operating Cells Count\",\n \"frequency\": \"detailed\"\n },\n \"m\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Mass Flow Rate\",\n \"frequency\": \"detailed\"\n },\n \"P_fan_ct\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Fan Electric Power\",\n \"frequency\": \"detailed\"\n }\n },\n \"parameters\": {\n \"ct_cells\": 4,\n \"m_des\": 0.0375568,\n \"min_flow_frac_per_cell\": 0.05\n }\n },\n \"verification_class\": \"HeatRejectionFanVariableFlowControlsCells\",\n \"library_item_id\": 19,\n \"description_brief\": \"Heat rejection fan variable flow controls cells\",\n \"description_index\": [\n \"Section 6.5.5.2.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"ct_op_cells\": \"Number of operating cooling tower cells\",\n \"ct_cells\": \"Number of cooling tower cells\",\n \"m\": \"Cooling tower mass flow rate\",\n \"m_des\": \"Cooling tower design mass flow rate\",\n \"min_flow_frac_per_cell\": \"Minimum flow fraction per cooling tower cell\",\n \"P_fan_ct\": \"Cooling tower fan power\"\n },\n \"description_assertions\": [\n \"if the number of operating cooling tower cells is equal to the maximum number of cooling tower cells then pass else fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 53573, "Pass #": 53573, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": 10, "Calculated Priority Ranking": 0.0, "Max Actual Control1": 4.0, "Max Control Setpoint1": 4.0}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HeatRejectionFanVariableFlowControlsCells"}, "21": {"md_content": "\n## Results for Verification Case ID 21\n\n### Pass/Fail check result\n{'Sample #': 1, 'Pass #': 17832, 'Fail #': 0, 'Verification Passed?': True, 'Failure Ratio': 0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0}\n\n### Result visualization\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 21,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"P_ct_fan\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Fan Electric Power\",\n \"frequency\": \"Detailed\"\n },\n \"m_ct_fan_ratio\": {\n \"subject\": \"TOWERWATERSYS COOLTOWER 2\",\n \"variable\": \"Cooling Tower Air Flow Rate Ratio\",\n \"frequency\": \"Detailed\"\n }\n },\n \"parameters\": {\n \"m_ct_fan_dsgn\": 36.47,\n \"P_ct_fan_dsgn\": 13359.2\n }\n },\n \"verification_class\": \"HeatRejectionFanVariableFlowControl\",\n \"library_item_id\": 26,\n \"description_brief\": \"The cooling tower fan power is 30% of the design value at 50% flow\",\n \"description_index\": [\n \"Section 6.5.5.2.1 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"P_ct_fan\": \"Cooling Tower Fan Power\",\n \"P_ct_fan_dsgn\": \"Cooling Tower Design Fan Power\",\n \"m_ct_fan\": \"Cooling Tower Air Flow\",\n \"m_ct_fan_dsgn\": \"Cooling Tower Design Air Flow\"\n },\n \"description_assertions\": [\n \"Verify that at 5% flow, the cooling tower fan power is 30% of the design value. Since simulation results might not include that exact point, we use a regression based approach to determining if the code requirement is met\"\n ],\n \"description_verification_type\": \"rule-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 1, "Pass #": 17832, "Fail #": 0, "Verification Passed?": true, "Failure Ratio": 0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0}, "model_file": "ASHRAE901_Hospital_STD2019_Atlanta", "verification_class": "HeatRejectionFanVariableFlowControl"}} \ No newline at end of file diff --git a/tests/api/data/reporting_data/ASHRAE901_OfficeSmall_STD2019_Seattle_Batch0_md.json b/tests/api/data/reporting_data/ASHRAE901_OfficeSmall_STD2019_Seattle_Batch0_md.json index 0b24b4d6..faae8e92 100644 --- a/tests/api/data/reporting_data/ASHRAE901_OfficeSmall_STD2019_Seattle_Batch0_md.json +++ b/tests/api/data/reporting_data/ASHRAE901_OfficeSmall_STD2019_Seattle_Batch0_md.json @@ -1 +1 @@ -{"11": {"md_content": "\n## Results for Verification Case ID 11\n\n### Pass/Fail check result\n{'Sample #': 8760, \"night cycle 'on' observed #\": 145, \"night cycle 'off' observed #\": 5205, 'night cycle NA observed #': 3276, 'Fail #': 134, 'Pass #': 145, 'Verification Passed?': False, 'Failure Ratio': 0.48, 'Failure Severity': 0.023, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.011, 'Max Actual Control1': 21, 'Max Control Setpoint1': 27, 'Max Actual Contro2': 27, 'Max Control Setpoint2': 29}\n\n### Result visualization\n\n![../results/imgs/VerificationCase11\\All_plot_aio.png](./imgs/VerificationCase11\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase11\\All_plot_obo.png](./imgs/VerificationCase11\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase11\\Day_plot_aio.png](./imgs/VerificationCase11\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase11\\Day_plot_obo.png](./imgs/VerificationCase11\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 11,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_AK_Anchorage-JB.Elmendorf-Richardson.702720_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_zone\": {\n \"subject\": \"PERIMETER_ZN_1\",\n \"variable\": \"Zone Air Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"HVAC_operation_sch\": {\n \"subject\": \"HVACOperationSchd\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"T_heat_set\": {\n \"subject\": \"HTGSETP_SCH_NO_OPTIMUM\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"T_cool_set\": {\n \"subject\": \"CLGSETP_SCH_NO_OPTIMUM\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"Fan_elec_rate\": {\n \"subject\": \"PSZ-AC:2 FAN\",\n \"variable\": \"Fan Electric Power\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"NightCycleOperation\",\n \"library_item_id\": 15,\n \"description_brief\": \"TSPR tool software development\",\n \"description_index\": [\n null\n ],\n \"description_datapoints\": {\n \"T_zone\": \"Zone Air Temperature\",\n \"HVAC_operation_sch\": \"HVAC Operation Schedule\",\n \"T_heat_set\": \"Zone Thermostat Heating Setpoint Temperature\",\n \"T_cool_set\": \"Zone Thermostat Cooling Setpoint Temperature\",\n \"Fan_elec_rate\": \"Fan Electricity Rate\"\n },\n \"description_assertions\": [\n \"if T_heat_set <= T_zone <= T_cool_set and Fan_elec_rate ==0 then x1=0 else x1=1, if (T_zone > T_cool_set and Fan_elec_rate >= 0) and (T_zone < T_heat_set and Fan_elec_rate>0) then x2=0 else x=1, if x1 and x2=0, then pass, elseif x1=0 and x2=1 then fail, elseif x1=1 and x2=0 then fail, elseif x1=1 and x2=1 then fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "night cycle 'on' observed #": 145, "night cycle 'off' observed #": 5205, "night cycle NA observed #": 3276, "Fail #": 134, "Pass #": 145, "Verification Passed?": false, "Failure Ratio": 0.48, "Failure Severity": 0.023, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.011, "Max Actual Control1": 21, "Max Control Setpoint1": 27, "Max Actual Contro2": 27, "Max Control Setpoint2": 29}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "NightCycleOperation"}, "17": {"md_content": "\n## Results for Verification Case ID 17\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 306.181, 'Max Control Setpoint1': 0.0}\n\n### Result visualization\n\n![../results/imgs/VerificationCase17\\All_plot_aio.png](./imgs/VerificationCase17\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase17\\All_plot_obo.png](./imgs/VerificationCase17\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase17\\Day_plot_aio.png](./imgs/VerificationCase17\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase17\\Day_plot_obo.png](./imgs/VerificationCase17\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 17,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"no_of_occ\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"People Occupant Count\",\n \"frequency\": \"Timestep\"\n },\n \"Q_load\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Predicted Sensible Load to Setpoint Heat Transfer Rate\",\n \"frequency\": \"Timestep\"\n },\n \"P_fan\": {\n \"subject\": \"PSZ-AC:1 Fan\",\n \"variable\": \"Fan Electric Power\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"VentilationFanControl\",\n \"library_item_id\": 22,\n \"description_brief\": \"Ventilation fan control\",\n \"description_index\": [\n \"Section 6.4.3.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"People Occupant Count\",\n \"Q_load\": \"Zone Predicted Sensible Load to Setpoint Heat Transfer Rate\",\n \"P_fan\": \"Fan Electric Power\"\n },\n \"description_assertions\": [\n \"if Q_load = 0 and no_of_occ = 0 and P_fan != 0 then fail else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 306.181, "Max Control Setpoint1": 0.0}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "VentilationFanControl"}, "19": {"md_content": "\n## Results for Verification Case ID 19\n\n### Pass/Fail check result\n{'Sample #': 1, 'Pass #': 504, 'Fail #': 0, 'Verification Passed?': True, 'Failure Ratio': 0, 'Failure Severity': 'N/A', 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 'N/A'}\n\n### Result visualization\n\n![../results/imgs/VerificationCase19\\All_plot_aio.png](./imgs/VerificationCase19\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase19\\All_plot_obo.png](./imgs/VerificationCase19\\All_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 19,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"hvac_set\": {\n \"subject\": \"HVACOPERATIONSCHD\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"AutomaticShutdown\",\n \"library_item_id\": 24,\n \"description_brief\": \"Off Hour Automatic Temperature Setback and System Shutoff\",\n \"description_index\": [\n null\n ],\n \"description_datapoints\": {\n \"hvac_set\": \"HVAC Operation Schedule\"\n },\n \"description_assertions\": [\n \"if minimum start_time != maximum start_time and minimum end_time != maximum end_time then pass else fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 1, "Pass #": 504, "Fail #": 0, "Verification Passed?": true, "Failure Ratio": 0, "Failure Severity": "N/A", "Priority Ranking": "N/A", "Calculated Priority Ranking": "N/A"}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "AutomaticShutdown"}, "23": {"md_content": "\n## Results for Verification Case ID 23\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Verification Passed?': True, 'max(T_heat_set)': 21.11000000000001, 'min(T_heat_set)': 15.559999999999988, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 6, 'Max Control Setpoint1': 6}\n\n### Result visualization\n\n![../results/imgs/VerificationCase23\\All_plot_aio.png](./imgs/VerificationCase23\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase23\\All_plot_obo.png](./imgs/VerificationCase23\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase23\\Day_plot_aio.png](./imgs/VerificationCase23\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase23\\Day_plot_obo.png](./imgs/VerificationCase23\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 23,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_heat_set\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Thermostat Heating Setpoint Temperature\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"ZoneHeatingResetDepth\",\n \"library_item_id\": 13,\n \"description_brief\": \"Heating systems shall be equipped with controls capable of and configured to automatically restart and temporarily operate the system as required to maintain zone temperatures above an adjustable heating set point at least 10\\u00c2\\u00b0F below (will be 60\\u00c2\\u00b0F) the occupied heating set point. (case study)\",\n \"description_index\": [\n \"Section 6.4.3.3.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_heat_set\": \"Zone Thermostat Heating Setpoint Temperature\"\n },\n \"description_assertions\": [\n \"if max(T_heat_set) - min(T_heat_set) >= 10F, then pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Verification Passed?": true, "max(T_heat_set)": 21.11000000000001, "min(T_heat_set)": 15.559999999999988, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 6, "Max Control Setpoint1": 6}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "ZoneHeatingResetDepth"}, "24": {"md_content": "\n## Results for Verification Case ID 24\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Verification Passed?': True, 'max(T_cool_set)': 29.440000000000023, 'min(T_cool_set)': 23.889999999999997, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 5.55, 'Max Control Setpoint1': 2.77}\n\n### Result visualization\n\n![../results/imgs/VerificationCase24\\All_plot_aio.png](./imgs/VerificationCase24\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase24\\All_plot_obo.png](./imgs/VerificationCase24\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase24\\Day_plot_aio.png](./imgs/VerificationCase24\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase24\\Day_plot_obo.png](./imgs/VerificationCase24\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 24,\n \"run_simulation\": true,\n \"simulation_IO\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_cool_set\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Thermostat Cooling Setpoint Temperature\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"ZoneCoolingResetDepth\",\n \"library_item_id\": 14,\n \"description_brief\": \"Cooling systems shall be equipped with controls capable of and configured to automatically restart and temporarily operate the mechanical cooling system as required to maintain zone temperatures below an adjustable cooling set point at least 5\\u00c2\\u00b0F above the occupied cooling set point or to prevent high space humidity levels. (case study)\",\n \"description_index\": [\n \"Section 6.4.3.3.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_cool_set\": \"Zone Thermostat Cooling Setpoint Temperature\"\n },\n \"description_assertions\": [\n \"if max(T_cool_set) - min(T_cool_set) >= 5F, then pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Verification Passed?": true, "max(T_cool_set)": 29.440000000000023, "min(T_cool_set)": 23.889999999999997, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 5.55, "Max Control Setpoint1": 2.77}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "ZoneCoolingResetDepth"}} \ No newline at end of file +{"11": {"md_content": "\n## Results for Verification Case ID 11\n\n### Pass/Fail check result\n{'Sample #': 8760, \"night cycle 'on' observed #\": 145, \"night cycle 'off' observed #\": 5205, 'night cycle NA observed #': 3276, 'Fail #': 134, 'Pass #': 145, 'Verification Passed?': False, 'Failure Ratio': 0.48, 'Failure Severity': 0.023, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.011, 'Max Actual Control1': 21, 'Max Control Setpoint1': 27, 'Max Actual Contro2': 27, 'Max Control Setpoint2': 29}\n\n### Result visualization\n\n![../results/imgs/VerificationCase11\\All_plot_aio.png](./imgs/VerificationCase11\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase11\\All_plot_obo.png](./imgs/VerificationCase11\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase11\\Day_plot_aio.png](./imgs/VerificationCase11\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase11\\Day_plot_obo.png](./imgs/VerificationCase11\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 11,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_AK_Anchorage-JB.Elmendorf-Richardson.702720_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_zone\": {\n \"subject\": \"PERIMETER_ZN_1\",\n \"variable\": \"Zone Air Temperature\",\n \"frequency\": \"TimeStep\"\n },\n \"HVAC_operation_sch\": {\n \"subject\": \"HVACOperationSchd\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"T_heat_set\": {\n \"subject\": \"HTGSETP_SCH_NO_OPTIMUM\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"T_cool_set\": {\n \"subject\": \"CLGSETP_SCH_NO_OPTIMUM\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"Fan_elec_rate\": {\n \"subject\": \"PSZ-AC:2 FAN\",\n \"variable\": \"Fan Electric Power\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"NightCycleOperation\",\n \"library_item_id\": 15,\n \"description_brief\": \"TSPR tool software development\",\n \"description_index\": [\n null\n ],\n \"description_datapoints\": {\n \"T_zone\": \"Zone Air Temperature\",\n \"HVAC_operation_sch\": \"HVAC Operation Schedule\",\n \"T_heat_set\": \"Zone Thermostat Heating Setpoint Temperature\",\n \"T_cool_set\": \"Zone Thermostat Cooling Setpoint Temperature\",\n \"Fan_elec_rate\": \"Fan Electricity Rate\"\n },\n \"description_assertions\": [\n \"if T_heat_set <= T_zone <= T_cool_set and Fan_elec_rate ==0 then x1=0 else x1=1, if (T_zone > T_cool_set and Fan_elec_rate >= 0) and (T_zone < T_heat_set and Fan_elec_rate>0) then x2=0 else x=1, if x1 and x2=0, then pass, elseif x1=0 and x2=1 then fail, elseif x1=1 and x2=0 then fail, elseif x1=1 and x2=1 then fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "night cycle 'on' observed #": 145, "night cycle 'off' observed #": 5205, "night cycle NA observed #": 3276, "Fail #": 134, "Pass #": 145, "Verification Passed?": false, "Failure Ratio": 0.48, "Failure Severity": 0.023, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.011, "Max Actual Control1": 21, "Max Control Setpoint1": 27, "Max Actual Contro2": 27, "Max Control Setpoint2": 29}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "NightCycleOperation"}, "17": {"md_content": "\n## Results for Verification Case ID 17\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Untest #': 0, 'Verification Passed?': True, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 306.181, 'Max Control Setpoint1': 0.0}\n\n### Result visualization\n\n![../results/imgs/VerificationCase17\\All_plot_aio.png](./imgs/VerificationCase17\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase17\\All_plot_obo.png](./imgs/VerificationCase17\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase17\\Day_plot_aio.png](./imgs/VerificationCase17\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase17\\Day_plot_obo.png](./imgs/VerificationCase17\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 17,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"no_of_occ\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"People Occupant Count\",\n \"frequency\": \"Timestep\"\n },\n \"Q_load\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Predicted Sensible Load to Setpoint Heat Transfer Rate\",\n \"frequency\": \"Timestep\"\n },\n \"P_fan\": {\n \"subject\": \"PSZ-AC:1 Fan\",\n \"variable\": \"Fan Electric Power\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"VentilationFanControl\",\n \"library_item_id\": 22,\n \"description_brief\": \"Ventilation fan control\",\n \"description_index\": [\n \"Section 6.4.3.4.4 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"People Occupant Count\",\n \"Q_load\": \"Zone Predicted Sensible Load to Setpoint Heat Transfer Rate\",\n \"P_fan\": \"Fan Electric Power\"\n },\n \"description_assertions\": [\n \"if Q_load = 0 and no_of_occ = 0 and P_fan != 0 then fail else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Untest #": 0, "Verification Passed?": true, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 306.181, "Max Control Setpoint1": 0.0}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "VentilationFanControl"}, "19": {"md_content": "\n## Results for Verification Case ID 19\n\n### Pass/Fail check result\n{'Sample #': 1, 'Pass #': 504, 'Fail #': 0, 'Verification Passed?': True, 'Failure Ratio': 0, 'Failure Severity': 'N/A', 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 'N/A'}\n\n### Result visualization\n\n![../results/imgs/VerificationCase19\\All_plot_aio.png](./imgs/VerificationCase19\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase19\\All_plot_obo.png](./imgs/VerificationCase19\\All_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 19,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"hvac_set\": {\n \"subject\": \"HVACOPERATIONSCHD\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"AutomaticShutdown\",\n \"library_item_id\": 24,\n \"description_brief\": \"Off Hour Automatic Temperature Setback and System Shutoff\",\n \"description_index\": [\n null\n ],\n \"description_datapoints\": {\n \"hvac_set\": \"HVAC Operation Schedule\"\n },\n \"description_assertions\": [\n \"if minimum start_time != maximum start_time and minimum end_time != maximum end_time then pass else fail\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 1, "Pass #": 504, "Fail #": 0, "Verification Passed?": true, "Failure Ratio": 0, "Failure Severity": "N/A", "Priority Ranking": "N/A", "Calculated Priority Ranking": "N/A"}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "AutomaticShutdown"}, "23": {"md_content": "\n## Results for Verification Case ID 23\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Verification Passed?': True, 'max(T_heat_set)': 21.11000000000001, 'min(T_heat_set)': 15.559999999999988, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 6, 'Max Control Setpoint1': 6}\n\n### Result visualization\n\n![../results/imgs/VerificationCase23\\All_plot_aio.png](./imgs/VerificationCase23\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase23\\All_plot_obo.png](./imgs/VerificationCase23\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase23\\Day_plot_aio.png](./imgs/VerificationCase23\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase23\\Day_plot_obo.png](./imgs/VerificationCase23\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 23,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_heat_set\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Thermostat Heating Setpoint Temperature\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"ZoneHeatingResetDepth\",\n \"library_item_id\": 13,\n \"description_brief\": \"Heating systems shall be equipped with controls capable of and configured to automatically restart and temporarily operate the system as required to maintain zone temperatures above an adjustable heating set point at least 10\\u00c2\\u00b0F below (will be 60\\u00c2\\u00b0F) the occupied heating set point. (case study)\",\n \"description_index\": [\n \"Section 6.4.3.3.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_heat_set\": \"Zone Thermostat Heating Setpoint Temperature\"\n },\n \"description_assertions\": [\n \"if max(T_heat_set) - min(T_heat_set) >= 10F, then pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Verification Passed?": true, "max(T_heat_set)": 21.11000000000001, "min(T_heat_set)": 15.559999999999988, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 6, "Max Control Setpoint1": 6}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "ZoneHeatingResetDepth"}, "24": {"md_content": "\n## Results for Verification Case ID 24\n\n### Pass/Fail check result\n{'Sample #': 8760, 'Pass #': 8760, 'Fail #': 0, 'Verification Passed?': True, 'max(T_cool_set)': 29.440000000000023, 'min(T_cool_set)': 23.889999999999997, 'Failure Ratio': 0.0, 'Failure Severity': 0.0, 'Priority Ranking': 'N/A', 'Calculated Priority Ranking': 0.0, 'Max Actual Control1': 5.55, 'Max Control Setpoint1': 2.77}\n\n### Result visualization\n\n![../results/imgs/VerificationCase24\\All_plot_aio.png](./imgs/VerificationCase24\\All_plot_aio.png)\n\n![../results/imgs/VerificationCase24\\All_plot_obo.png](./imgs/VerificationCase24\\All_plot_obo.png)\n\n![../results/imgs/VerificationCase24\\Day_plot_aio.png](./imgs/VerificationCase24\\Day_plot_aio.png)\n\n![../results/imgs/VerificationCase24\\Day_plot_obo.png](./imgs/VerificationCase24\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 24,\n \"run_simulation\": true,\n \"verification_properties\": {\n \"idf\": \"../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle.idf\",\n \"idd\": \"../resources/Energy+V9_0_1.idd\",\n \"weather\": \"../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"T_cool_set\": {\n \"subject\": \"Core_ZN\",\n \"variable\": \"Zone Thermostat Cooling Setpoint Temperature\",\n \"frequency\": \"Timestep\"\n }\n },\n \"parameters\": {}\n },\n \"verification_class\": \"ZoneCoolingResetDepth\",\n \"library_item_id\": 14,\n \"description_brief\": \"Cooling systems shall be equipped with controls capable of and configured to automatically restart and temporarily operate the mechanical cooling system as required to maintain zone temperatures below an adjustable cooling set point at least 5\\u00c2\\u00b0F above the occupied cooling set point or to prevent high space humidity levels. (case study)\",\n \"description_index\": [\n \"Section 6.4.3.3.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"T_cool_set\": \"Zone Thermostat Cooling Setpoint Temperature\"\n },\n \"description_assertions\": [\n \"if max(T_cool_set) - min(T_cool_set) >= 5F, then pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 8760, "Pass #": 8760, "Fail #": 0, "Verification Passed?": true, "max(T_cool_set)": 29.440000000000023, "min(T_cool_set)": 23.889999999999997, "Failure Ratio": 0.0, "Failure Severity": 0.0, "Priority Ranking": "N/A", "Calculated Priority Ranking": 0.0, "Max Actual Control1": 5.55, "Max Control Setpoint1": 2.77}, "model_file": "ASHRAE901_OfficeSmall_STD2019_Seattle", "verification_class": "ZoneCoolingResetDepth"}} \ No newline at end of file diff --git a/tests/api/data/verification_case_unit_test/verification_case_unit_test.json b/tests/api/data/verification_case_unit_test/verification_case_unit_test.json index d58dcbf8..d1b31da4 100644 --- a/tests/api/data/verification_case_unit_test/verification_case_unit_test.json +++ b/tests/api/data/verification_case_unit_test/verification_case_unit_test.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -26,9 +26,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case1.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/tests/api/data/verification_case_unit_test/verification_case_unit_test2.json b/tests/api/data/verification_case_unit_test/verification_case_unit_test2.json index 3b2114b1..70c88044 100644 --- a/tests/api/data/verification_case_unit_test/verification_case_unit_test2.json +++ b/tests/api/data/verification_case_unit_test/verification_case_unit_test2.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 19, + "verification_case_id": 19, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_OfficeSmall_STD2019_Seattle_case19.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_WA_Seattle-Tacoma.Intl.AP.727930_TMY3.epw", @@ -34,9 +34,9 @@ "verification_class": "VentilationFanControl" }, { - "no": 20, + "verification_case_id": 20, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_ApartmentHighRise_STD2019_Atlanta_case20.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/tests/api/data/verification_output/1_md.json b/tests/api/data/verification_output/1_md.json index fa9dbc50..fa53fdd0 100644 --- a/tests/api/data/verification_output/1_md.json +++ b/tests/api/data/verification_output/1_md.json @@ -1 +1 @@ -{"1": {"md_content": "\n## Results for Verification Case ID 1\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16902, 'Fail #': 0, 'Untested #': 0, 'Verification Passed?': True}\n\n### Result visualization\n\n![./tests/api/VerificationCase1\\All_plot_aio.png](.//VerificationCase1\\All_plot_aio.png)\n\n![./tests/api/VerificationCase1\\All_plot_obo.png](.//VerificationCase1\\All_plot_obo.png)\n\n![./tests/api/VerificationCase1\\Day_plot_aio.png](.//VerificationCase1\\Day_plot_aio.png)\n\n![./tests/api/VerificationCase1\\Day_plot_obo.png](.//VerificationCase1\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 1,\n \"run_simulation\": false,\n \"simulation_IO\": {\n \"idf\": \"./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf\",\n \"idd\": \"./resources/Energy+V9_0_1.idd\",\n \"weather\": \"./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"o\": {\n \"subject\": \"BLDG_OCC_SCH_WO_SB\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"m_oa\": {\n \"subject\": \"CORE_BOTTOM VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"m_ea\": {\n \"subject\": \"CORE_MID VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"eco_onoff\": {\n \"subject\": \"PACU_VAV_BOT\",\n \"variable\": \"Air System Outdoor Air Economizer Status\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"tol_o\": 0.03,\n \"tol_m_ea\": 50,\n \"tol_m_oa\": 50\n }\n },\n \"verification_class\": \"AutomaticOADamperControl\",\n \"case_id_in_suite\": \"cbd8796c-cf9e-11ed-8cba-ac74b154c918\",\n \"library_item_id\": 17,\n \"description_brief\": \"HVAC system shall be turned on and off everyday\",\n \"description_index\": [\n \"Section 6.4.3.4.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"Number of occupants\",\n \"m_oa\": \"Air terminal outdoor air volume flow rate\",\n \"eco_onoff\": \"Air System Outdoor Air Economizer Status\",\n \"tol\": \"Tolerance for the num of occupants\"\n },\n \"description_assertions\": [\n \"if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16902, "Fail #": 0, "Untested #": 0, "Verification Passed?": true}, "model_file": "ASHRAE901_OfficeMedium_STD2019_Atlanta", "verification_class": "AutomaticOADamperControl"}} \ No newline at end of file +{"1": {"md_content": "\n## Results for Verification Case ID 1\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16902, 'Fail #': 0, 'Untested #': 0, 'Verification Passed?': True}\n\n### Result visualization\n\n![./tests/api/VerificationCase1\\All_plot_aio.png](.//VerificationCase1\\All_plot_aio.png)\n\n![./tests/api/VerificationCase1\\All_plot_obo.png](.//VerificationCase1\\All_plot_obo.png)\n\n![./tests/api/VerificationCase1\\Day_plot_aio.png](.//VerificationCase1\\Day_plot_aio.png)\n\n![./tests/api/VerificationCase1\\Day_plot_obo.png](.//VerificationCase1\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 1,\n \"run_simulation\": false,\n \"verification_properties\": {\n \"idf\": \"./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf\",\n \"idd\": \"./resources/Energy+V9_0_1.idd\",\n \"weather\": \"./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"o\": {\n \"subject\": \"BLDG_OCC_SCH_WO_SB\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"m_oa\": {\n \"subject\": \"CORE_BOTTOM VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"m_ea\": {\n \"subject\": \"CORE_MID VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"eco_onoff\": {\n \"subject\": \"PACU_VAV_BOT\",\n \"variable\": \"Air System Outdoor Air Economizer Status\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"tol_o\": 0.03,\n \"tol_m_ea\": 50,\n \"tol_m_oa\": 50\n }\n },\n \"verification_class\": \"AutomaticOADamperControl\",\n \"case_id_in_suite\": \"cbd8796c-cf9e-11ed-8cba-ac74b154c918\",\n \"library_item_id\": 17,\n \"description_brief\": \"HVAC system shall be turned on and off everyday\",\n \"description_index\": [\n \"Section 6.4.3.4.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"Number of occupants\",\n \"m_oa\": \"Air terminal outdoor air volume flow rate\",\n \"eco_onoff\": \"Air System Outdoor Air Economizer Status\",\n \"tol\": \"Tolerance for the num of occupants\"\n },\n \"description_assertions\": [\n \"if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16902, "Fail #": 0, "Untested #": 0, "Verification Passed?": true}, "model_file": "ASHRAE901_OfficeMedium_STD2019_Atlanta", "verification_class": "AutomaticOADamperControl"}} \ No newline at end of file diff --git a/tests/api/data/verification_output/2_md.json b/tests/api/data/verification_output/2_md.json index b525ebd7..d4c14787 100644 --- a/tests/api/data/verification_output/2_md.json +++ b/tests/api/data/verification_output/2_md.json @@ -1 +1 @@ -{"2": {"md_content": "\n## Results for Verification Case ID 2\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16902, 'Fail #': 0, 'Untested #': 0, 'Verification Passed?': True}\n\n### Result visualization\n\n![./tests/api/VerificationCase2\\All_plot_aio.png](.//VerificationCase2\\All_plot_aio.png)\n\n![./tests/api/VerificationCase2\\All_plot_obo.png](.//VerificationCase2\\All_plot_obo.png)\n\n![./tests/api/VerificationCase2\\Day_plot_aio.png](.//VerificationCase2\\Day_plot_aio.png)\n\n![./tests/api/VerificationCase2\\Day_plot_obo.png](.//VerificationCase2\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"no\": 2,\n \"run_simulation\": false,\n \"simulation_IO\": {\n \"idf\": \"./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf\",\n \"idd\": \"./resources/Energy+V9_0_1.idd\",\n \"weather\": \"./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"o\": {\n \"subject\": \"BLDG_OCC_SCH_WO_SB\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"m_oa\": {\n \"subject\": \"CORE_MID VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"m_ea\": {\n \"subject\": \"CORE_TOP VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"eco_onoff\": {\n \"subject\": \"PACU_VAV_MID\",\n \"variable\": \"Air System Outdoor Air Economizer Status\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"tol_o\": 0.03,\n \"tol_m_ea\": 50,\n \"tol_m_oa\": 50\n }\n },\n \"verification_class\": \"AutomaticOADamperControl\",\n \"case_id_in_suite\": \"bba56b9f-cf9e-11ed-9a1c-ac74b154c918\",\n \"library_item_id\": 17,\n \"description_brief\": \"HVAC system shall be turned on and off everyday\",\n \"description_index\": [\n \"Section 6.4.3.4.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"Number of occupants\",\n \"m_oa\": \"Air terminal outdoor air volume flow rate\",\n \"eco_onoff\": \"Air System Outdoor Air Economizer Status\",\n \"tol\": \"Tolerance for the num of occupants\"\n },\n \"description_assertions\": [\n \"if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16902, "Fail #": 0, "Untested #":0, "Verification Passed?": true}, "model_file": "ASHRAE901_OfficeMedium_STD2019_Atlanta", "verification_class": "AutomaticOADamperControl"}} \ No newline at end of file +{"2": {"md_content": "\n## Results for Verification Case ID 2\n\n### Pass/Fail check result\n{'Sample #': 52560, 'Pass #': 16902, 'Fail #': 0, 'Untested #': 0, 'Verification Passed?': True}\n\n### Result visualization\n\n![./tests/api/VerificationCase2\\All_plot_aio.png](.//VerificationCase2\\All_plot_aio.png)\n\n![./tests/api/VerificationCase2\\All_plot_obo.png](.//VerificationCase2\\All_plot_obo.png)\n\n![./tests/api/VerificationCase2\\Day_plot_aio.png](.//VerificationCase2\\Day_plot_aio.png)\n\n![./tests/api/VerificationCase2\\Day_plot_obo.png](.//VerificationCase2\\Day_plot_obo.png)\n\n\n### Verification case definition\n```\n{\n \"verification_case_id\": 2,\n \"run_simulation\": false,\n \"verification_properties\": {\n \"idf\": \"./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf\",\n \"idd\": \"./resources/Energy+V9_0_1.idd\",\n \"weather\": \"./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw\",\n \"output\": \"eplusout.csv\",\n \"ep_path\": \"C:\\\\EnergyPlusV9-0-1\\\\energyplus.exe\"\n },\n \"expected_result\": \"pass\",\n \"datapoints_source\": {\n \"idf_output_variables\": {\n \"o\": {\n \"subject\": \"BLDG_OCC_SCH_WO_SB\",\n \"variable\": \"Schedule Value\",\n \"frequency\": \"TimeStep\"\n },\n \"m_oa\": {\n \"subject\": \"CORE_MID VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"m_ea\": {\n \"subject\": \"CORE_TOP VAV BOX COMPONENT\",\n \"variable\": \"Zone Air Terminal Outdoor Air Volume Flow Rate\",\n \"frequency\": \"TimeStep\"\n },\n \"eco_onoff\": {\n \"subject\": \"PACU_VAV_MID\",\n \"variable\": \"Air System Outdoor Air Economizer Status\",\n \"frequency\": \"TimeStep\"\n }\n },\n \"parameters\": {\n \"tol_o\": 0.03,\n \"tol_m_ea\": 50,\n \"tol_m_oa\": 50\n }\n },\n \"verification_class\": \"AutomaticOADamperControl\",\n \"case_id_in_suite\": \"bba56b9f-cf9e-11ed-9a1c-ac74b154c918\",\n \"library_item_id\": 17,\n \"description_brief\": \"HVAC system shall be turned on and off everyday\",\n \"description_index\": [\n \"Section 6.4.3.4.2 in 90.1-2016\"\n ],\n \"description_datapoints\": {\n \"no_of_occ\": \"Number of occupants\",\n \"m_oa\": \"Air terminal outdoor air volume flow rate\",\n \"eco_onoff\": \"Air System Outdoor Air Economizer Status\",\n \"tol\": \"Tolerance for the num of occupants\"\n },\n \"description_assertions\": [\n \"if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass\"\n ],\n \"description_verification_type\": \"procedure-based\",\n \"assertions_type\": \"pass\"\n}\n```\n\n---\n\n", "outcome_notes": {"Sample #": 52560, "Pass #": 16902, "Fail #": 0, "Untested #":0, "Verification Passed?": true}, "model_file": "ASHRAE901_OfficeMedium_STD2019_Atlanta", "verification_class": "AutomaticOADamperControl"}} \ No newline at end of file diff --git a/tests/api/result/from_test_save_case_suite_to_json_correct_json_path.json b/tests/api/result/from_test_save_case_suite_to_json_correct_json_path.json index a45f7c6f..b990ae51 100644 --- a/tests/api/result/from_test_save_case_suite_to_json_correct_json_path.json +++ b/tests/api/result/from_test_save_case_suite_to_json_correct_json_path.json @@ -1,9 +1,9 @@ { "cases": [ { - "no": 1, + "verification_case_id": 1, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -26,9 +26,9 @@ "verification_class": "SupplyAirTempReset" }, { - "no": 2, + "verification_case_id": 2, "run_simulation": true, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2004_Atlanta_Case2.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/tests/api/test_verification.py b/tests/api/test_verification.py index 05b0df0a..22f51987 100644 --- a/tests/api/test_verification.py +++ b/tests/api/test_verification.py @@ -13,9 +13,9 @@ class TestVerification(unittest.TestCase): cases = [ { - "no": 1, + "verification_case_id": 1, "run_simulation": False, - "simulation_IO": { + "verification_properties": { "idf": "./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -55,9 +55,9 @@ class TestVerification(unittest.TestCase): "verification_class": "AutomaticOADamperControl", }, { - "no": 2, + "verification_case_id": 2, "run_simulation": False, - "simulation_IO": { + "verification_properties": { "idf": "./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -100,9 +100,9 @@ class TestVerification(unittest.TestCase): custom_cases = [ { - "no": 1, + "verification_case_id": 1, "run_simulation": False, - "simulation_IO": { + "verification_properties": { "idf": "./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -142,9 +142,9 @@ class TestVerification(unittest.TestCase): "verification_class": "UserProvidedVerificationItem1", }, { - "no": 2, + "verification_case_id": 2, "run_simulation": False, - "simulation_IO": { + "verification_properties": { "idf": "./tests/api/data/ASHRAE901_OfficeMedium_STD2019_Atlanta.idf", "idd": "./resources/Energy+V9_0_1.idd", "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", diff --git a/tests/api/test_verification_case.py b/tests/api/test_verification_case.py index 9740e621..421fa86d 100644 --- a/tests/api/test_verification_case.py +++ b/tests/api/test_verification_case.py @@ -9,9 +9,9 @@ class TestVerificationCase(unittest.TestCase): case = { - "no": 1, + "verification_case_id": 1, "run_simulation": True, - "simulation_IO": { + "verification_properties": { "idf": "../test_cases/doe_prototype_cases/ASHRAE901_Hospital_STD2019_Atlanta_Case1.idf", "idd": "../resources/Energy+V9_0_1.idd", "weather": "../weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -37,9 +37,9 @@ class TestVerificationCase(unittest.TestCase): ) example_base_case = { - "no": 1, + "verification_case_id": 1, "run_simulation": True, - "simulation_IO": { + "verification_properties": { "idf": "../testing.idf", "idd": "../Energy+V9_0_1.idd", "weather": "./USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", @@ -65,7 +65,7 @@ class TestVerificationCase(unittest.TestCase): "verification_class": "Testing", } update_key_value = { - "simulation_IO": { + "verification_properties": { "idf": ["Testing_file1.idf", "Testing_file2.idf"], }, "datapoints_source": { @@ -357,7 +357,7 @@ def test_validate_verification_case_structure_wrong_leaf_value(self): def test_validate_verification_case_structure_missing_leaf_key(self): with self.assertLogs() as logobs: case_missing_subject = copy.deepcopy(self.case) - del case_missing_subject["simulation_IO"][ + del case_missing_subject["verification_properties"][ "output" ] # intentionally missed subject key validation_result = VerificationCase.validate_verification_case_structure(