From f17790daa13ab136c9ebbfc1c23323f63c9d72b9 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Fri, 26 Apr 2024 13:45:14 -0700 Subject: [PATCH 1/9] Update docs. --- docs/source/Acknowledgment.rst | 3 + docs/source/Code Documentation.rst | 5 + docs/source/Contributing.rst | 22 +++ docs/source/License.rst | 18 ++ docs/source/Quickstart Guide.rst | 266 +++++++++++++++++++++++++++++ docs/source/Statement of Need.rst | 6 + docs/source/conf.py | 4 +- docs/source/index.rst | 11 +- 8 files changed, 332 insertions(+), 3 deletions(-) create mode 100644 docs/source/Acknowledgment.rst create mode 100644 docs/source/Contributing.rst create mode 100644 docs/source/License.rst create mode 100644 docs/source/Quickstart Guide.rst create mode 100644 docs/source/Statement of Need.rst diff --git a/docs/source/Acknowledgment.rst b/docs/source/Acknowledgment.rst new file mode 100644 index 00000000..92906ca0 --- /dev/null +++ b/docs/source/Acknowledgment.rst @@ -0,0 +1,3 @@ +Acknowledgement +================ +**ConStrain** was developed at the Pacific Northwest National Laboratory, and was funded under contract with the U.S. Department of Energy (DOE). It is actively being developed as an open-source project. \ No newline at end of file diff --git a/docs/source/Code Documentation.rst b/docs/source/Code Documentation.rst index c7ae4713..c13075f6 100644 --- a/docs/source/Code Documentation.rst +++ b/docs/source/Code Documentation.rst @@ -1,6 +1,11 @@ Code Documentation =================== +.. automodule:: api.brick_compliance + :members: + :inherited-members: + :undoc-members: + :show-inheritance: .. automodule:: api.data_processing :members: :inherited-members: diff --git a/docs/source/Contributing.rst b/docs/source/Contributing.rst new file mode 100644 index 00000000..f04987dd --- /dev/null +++ b/docs/source/Contributing.rst @@ -0,0 +1,22 @@ +Contributing +============== +Contributions are welcome and greatly appreciated. + +Issues +------- +Users of **ConStrain** are welcome to open issues to: + 1. Ask for help + 2. Report issues with the current code base + 3. Request new features to be implemented + +Pull requests +-------------- +Pull requests should be submitted through forks and tagged with appropriate available labels. The title and description of the pull request should be legible and clearly describe the proposed changes. + + 1. Bug fixes, improvements, and new features + + Bug fixes, improvements and new features should be tied to one or multiple issues. Please open an issue(s) prior to opening a pull request and documenting the proposed change(s) to **ConStrain**. The development team is open to reviewing any proposed changes as long as the changes are explained in detail (using the code review feature of GitHub), and backed with sufficient research. Each pull request addressing bug fixes or improvements needs to include one or more unit tests. + + 2. Data + + **ConStrain** uses a data-driven approach meaning that the more data it has access to, the better and the more relevant the curves generated by **ConStrain** will be. The development team welcomes contributions aiming to add data to **ConStrain**'s libraries. New data should be submitted through a pull request. The pull request should include the data in a format that can be used by **ConStrain** (For example, **ConStrain** currently uses performance curves, so no data tables should be submitted). To be included in **ConStrain**, the data should be publicly available, sharable, and accurate (and a reference should be provided for the team's review). diff --git a/docs/source/License.rst b/docs/source/License.rst new file mode 100644 index 00000000..eeecc0c6 --- /dev/null +++ b/docs/source/License.rst @@ -0,0 +1,18 @@ +License +======== + +This material was prepared as an account of work sponsored by an agency of the United States Government. Neither the United States Government nor the United States Department of Energy, nor Battelle, nor any of their employees, nor any jurisdiction or organization that has cooperated in the development of these materials, makes any warranty, express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness or any information, apparatus, product, software, or process disclosed, or represents that its use would not infringe privately owned rights. + +Reference herein to any specific commercial product, process, or service by tradename, trademark, manufacturer, or otherwise does not necessarily constitute or imply its endorsement, recommendation, or favoring by the United States Governmentor any agency thereof, or Battelle Memorial Institute. The views and opinions of authors expressed herein do not necessarily state or reflect those of the United States Government or any agency thereof. + +PACIFIC NORTHWEST NATIONAL LABORATORY operated by BATTELLE for the UNITED STATES DEPARTMENT OF ENERGY under Contract DE-AC05-76RL01830 + +Control Strainer (ConStrain): A Data-driven Control Verification Framework (formally known as ANIMATE) Copyright (c) 2021, Battelle Memorial Institute All rights reserved. + +1. Battelle Memorial Institute (hereinafter Battelle) hereby grants permission to any person or entity lawfully obtaining a copy of this software and associated documentation files (hereinafter “the Software”) to redistribute and use the Software in source and binary forms, with or without modification. Such person or entity may use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and may permit others to do so, subject to the following conditions: + + - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. + - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + - Other than as used herein, neither the name Battelle Memorial Institute or Battelle may be used in any form whatsoever without the express written consent of Battelle. + +2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BATTELLE OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/docs/source/Quickstart Guide.rst b/docs/source/Quickstart Guide.rst new file mode 100644 index 00000000..0af1de00 --- /dev/null +++ b/docs/source/Quickstart Guide.rst @@ -0,0 +1,266 @@ +Quickstart Guide +================= + +.. role:: python(code) + :language: python +.. role:: json(code) + :language: JSON +.. role:: bash(code) + :language: bash + +This guide provides a quick overview of how to get started with **ConStrain**. Verifications of building system control related timeseries using **ConStrain** can either be done by using **ConStrain** as a Python library or by using a **ConStrain** workflow. + +Installing **ConStrain** +------------------------- +**ConStrain** can be installed from PyPI by running the following command. + +.. sourcecode:: bash + + pip install constrain + +Using **ConStrain** as a library +--------------------------------- + +First, let's import the package. + +.. sourcecode:: python + + import constrain as cs + +**ConStrain** includes an :python:`Examples` module which contains sample data and examples of verifications. Information about eac example can be obtained by running the following command. A dictionary is returned which shows information about each example. + +.. sourcecode:: python + + # Load examples + examples = cs.Examples() + + # Get the data + data = examples.info + +Let's proceed with :python:`example_1` which according to its description aims to: + + *Perform verification of ASHRAE Guideline 36-2021 sequence of operation on a dataset generated through the simulation of an AHU in Modelica. The verifications include the following: supply temperature reset, outdoor air damper psition for relief damper/fan, and return air damper psition for relief damper/fan*. + +.. sourcecode:: python + + # Get the data + data = examples.data("example_1") + + # Loading the verification cases + cases = cs.api.VerificationCase(json_case_path=examples.verifications("example_1")) + +Here, :python:`data` is a :python:`pandas.DataFrame` which contains the timeseries for the verification, and :python:`cases` is a **ConStrain** :meth:`api.verification_case.VerificationCase` that contains all the information needed to perform a verification. To see the case information in a readable format (dictionary), run :python:`cases.case_suite`. Outside of examples, data for verifications can be directly loaded as :python:`pandas.DataFrame` and pre-processed using the functions in :meth:`api.data_processing` of **ConStrain**. + +Next, we want to validate :python:`cases` by calling :meth:`api.verification_case.VerificationCase.validate` to make sure that the verification structure is correct. + +.. sourcecode:: python + + cases.validate() + +Then, we'll want to instantiate a verification and configure it, and run the verifications. + +.. sourcecode:: python + + verif = cs.api.Verification(verifications=cases) + verif.configure(output_path = "./", + lib_items_path = examples.library(), + plot_option = "all-expand", + fig_size = (10, 5), + num_threads = 1, + preprocessed_data = data) + verif.run() + +Finally, we can create summary report. A summary report for all verification will be created which will show the status of each verification + +.. sourcecode:: python + + reporting = cs.api.Reporting(verification_json= "./*_md.json", + result_md_name = "report_summary.md", + report_format = "markdown") + + reporting.report_multiple_cases() + +Using **ConStrain** workflows +------------------------------ + +A workflow is a group of instructions that define an end-to-end verification, from data parsing and manipulation to running the verfication(s) and reporting the results. Workflows are defined using the JSON file format so once they have been established they can be re-used easily without making significant modifications. Workflows rely on **ConStrain**'s APIs. + +Below is shown a valid workflow. Let's look at its structure. + +- :json:`"workflow_name"`: Name of the workflow +- :json:`"meta"`: Metadata about the workflow +- :json:`"imports"`: Python package import needed to run the workflow +- :json:`"states"`: Sequential steps to follow to perform the verification; :json:`"states"` can either be :json:`"MethodCall"` which represent a method call to one of **ConStrain**'s APIs or a :json:`"Choice"` which can be used to help define alternative steps in a workflow based on the result (referred to as payloads in a workflow). + +.. sourcecode:: JSON + + { + "workflow_name": "G36 Demo workflow", + "meta": { + "author": "ConStrain Team", + "date": "06/29/2023", + "version": "1.0", + "description": "Demo workflow to showcase G36 verification item development" + }, + "imports": [ + "numpy as np", + "pandas as pd" + ], + "states": { + "load data": { + "Type": "MethodCall", + "MethodCall": "DataProcessing", + "Parameters": { + "data_path": "./demo/G36_demo/data/G36_Modelica_Jan.csv", + "data_source": "EnergyPlus" + }, + "Payloads": { + "data_processing_obj": "$", + "data": "$.data" + }, + "Start": "True", + "Next": "load verification cases" + }, + "load verification cases": { + "Type": "MethodCall", + "MethodCall": "VerificationCase", + "Parameters": { + "json_case_path": "./demo/G36_demo/data/G36_library_verification_cases.json" + }, + "Payloads": { + "verification_case_obj": "$", + "original_case_keys": "$.case_suite.keys()" + }, + "Next": "check original case length" + }, + "check original case length": { + "Type": "Choice", + "Choices": [ + { + "Value": "len(Payloads['original_case_keys']) == 3", + "Equals": "True", + "Next": "validate cases" + } + ], + "Default": "Report Error in workflow" + }, + "validate cases": { + "Type": "Choice", + "Choices": [ + { + "Value": "Payloads['verification_case_obj'].validate()", + "Equals": "True", + "Next": "setup verification" + } + ], + "Default": "Report Error in workflow" + }, + "setup verification": { + "Type": "MethodCall", + "MethodCall": "Verification", + "Parameters": { + "verifications": "Payloads['verification_case_obj']" + }, + "Payloads": { + "verification_obj": "$" + }, + "Next": "configure verification runner" + }, + "configure verification runner": { + "Type": "MethodCall", + "MethodCall": "Payloads['verification_obj'].configure", + "Parameters": { + "output_path": "./demo/G36_demo", + "lib_items_path": "./schema/library.json", + "plot_option": "+x None", + "fig_size": "+x (6, 5)", + "num_threads": 1, + "preprocessed_data": "Payloads['data']" + }, + "Payloads": {}, + "Next": "run verification" + }, + "run verification": { + "Type": "MethodCall", + "MethodCall": "Payloads['verification_obj'].run", + "Parameters": {}, + "Payloads": { + "verification_return": "$" + }, + "Next": "check results" + }, + "check results": { + "Type": "MethodCall", + "MethodCall": "glob.glob", + "Parameters": [ + "./demo/G36_demo/*_md.json" + ], + "Payloads": { + "length_of_mdjson": "len($)" + }, + "Next": "check number of result files" + }, + "check number of result files": { + "Type": "Choice", + "Choices": [ + { + "Value": "Payloads['length_of_mdjson']", + "Equals": "3", + "Next": "reporting_object_instantiation" + } + ], + "Default": "Report Error in workflow" + }, + "reporting_object_instantiation": { + "Type": "MethodCall", + "MethodCall": "Reporting", + "Parameters": { + "verification_json": "./demo/G36_demo/*_md.json", + "result_md_name": "report_summary.md", + "report_format": "markdown" + }, + "Payloads": { + "reporting_obj": "$" + }, + "Next": "report_cases" + }, + "report_cases": { + "Type": "MethodCall", + "MethodCall": "Payloads['reporting_obj'].report_multiple_cases", + "Parameters": {}, + "Payloads": {}, + "Next": "Success" + }, + "Success": { + "Type": "MethodCall", + "MethodCall": "print", + "Parameters": [ + "Congratulations! the demo workflow is executed with expected results and no error!" + ], + "End": "True" + }, + "Report Error in workflow": { + "Type": "MethodCall", + "MethodCall": "logging.error", + "Parameters": [ + "Something is wrong in the workflow execution" + ], + "End": "True" + } + } + } + +Running a workflow can be done as follows. + +.. sourcecode:: python + + import constrain as cs + + workflow_file = "./demo/G36_demo/G36_demo_workflow.json" + workflow = cs.Workflow(workflow=workflow_file) + workflow.run_workflow(verbose=True) + +Using **ConStrain**'s graphical user interface (GUI) +----------------------------------------------------- + +Workflow can be pretty complex and difficult to fully visualise from JSON files. **ConStrain** includes a GUI to help user create, edit, and picture workflows. If **ConStrain** has been installed, the GUI can be run by just running :bash:`constrain` in a command prompt or terminal. diff --git a/docs/source/Statement of Need.rst b/docs/source/Statement of Need.rst new file mode 100644 index 00000000..4ecadbde --- /dev/null +++ b/docs/source/Statement of Need.rst @@ -0,0 +1,6 @@ +Statement of Need +================== + +Advances in building control have shown significant potential for improving building energy performance and decarbonization. Studies show that designs utilizing optimized controls that are properly tuned could reduce commercial building energy consumption. Driven by the significant control-related energy-saving potential, commercial building energy codes (such as ASHRAE Standard 90.1) have progressed with many control-related addenda. + +However, one of the challenges to realizing those savings is the correct implementation of such advanced control strategies and regularly verifying their actual operational performance. A field study found that only 50% of systems observed have their control system correctly configured to meet the energy codes requirement, and control-related compliance verification is typically not included in the commissioning scope. Current control verification is often conducted manually, which is time-consuming, ad-hoc, incomplete, and error-prone. \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 91af83b8..155b0f5b 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -25,9 +25,9 @@ author = "Pacific Northwest National Laboratory" # The short X.Y version -version = "0.1.0" +version = "0.4.0" # The full version, including alpha/beta/rc tags -release = "0.1.0" +release = "0.4.0" # -- General configuration --------------------------------------------------- diff --git a/docs/source/index.rst b/docs/source/index.rst index 87aacf6c..ee9c5272 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -3,7 +3,16 @@ Documentation for ConStrain **Version**: |release| +**ConStrain** is a data-driven knowledge-integrated framework that automatically verifies that controls function as intended. **ConStrain** is designed around three key features: building control knowledge integration, analytics, and automation. The framework includes three major components: a control verification algorithm library (rule-based, procedure-based, and AI-based), an automated preparation process and verification case generation, a standardized performance evaluation and reporting process. + +Applications of **ConStrain** include verifications of the implementation of control-related building energy code requirements (e.g., ASHRAE Standard 90.1) and sequences of operation (e.g., ASHRAE Guideline 36) using either data generated from building energy simulations and/or actual building monitoring system trend data. + .. toctree:: :maxdepth: 1 - Code Documentation \ No newline at end of file + Statement of Need + Quickstart Guide + Code Documentation + Contributing + License + Acknowledgment \ No newline at end of file From c106a7551064c68ca30f280adcf334dfe6cd4793 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Fri, 26 Apr 2024 14:04:28 -0700 Subject: [PATCH 2/9] Fix indentation warning, --- constrain/api/workflow.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/constrain/api/workflow.py b/constrain/api/workflow.py index a16fc339..c22c3ffb 100644 --- a/constrain/api/workflow.py +++ b/constrain/api/workflow.py @@ -113,11 +113,7 @@ def import_package(self) -> None: """Import third party packages based on the "imports" element values of the workflow json. E.g.: { ... - "imports": [ - "numpy as np", - "pandas as pd", - "datetime" - ], + "imports": ["numpy as np","pandas as pd","datetime"], ... } """ From 805dc67936580fc88dd163a017e23105aac81aae Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Fri, 26 Apr 2024 14:07:48 -0700 Subject: [PATCH 3/9] Address other build warning. --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 155b0f5b..d248f031 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -214,7 +214,7 @@ # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {"https://docs.python.org/": None} +intersphinx_mapping = {'': ('https://docs.python.org/', None)} # -- Options for todo extension ---------------------------------------------- From 10d5c9fc9753049885e26ee11f822c1b55327a40 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Fri, 26 Apr 2024 14:09:26 -0700 Subject: [PATCH 4/9] Black formatting. --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index d248f031..4afd7dc5 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -214,7 +214,7 @@ # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'': ('https://docs.python.org/', None)} +intersphinx_mapping = {"": ("https://docs.python.org/", None)} # -- Options for todo extension ---------------------------------------------- From d16b13600b8a7e70bad3ea760e3c4dad8dd6f858 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Fri, 10 May 2024 16:14:20 -0700 Subject: [PATCH 5/9] Add autogenerated documention for verifications. --- constrain/api/verification_library.py | 8 +- .../AppendixGHVACSystemFanOperation.rst | 26 +++++ docs/source/AutomaticOADamperControl.rst | 31 ++++++ docs/source/AutomaticShutdown.rst | 27 +++++ docs/source/CHWReset.rst | 37 +++++++ docs/source/DemandControlVentilation.rst | 30 +++++ docs/source/ERVRatio.rst | 33 ++++++ docs/source/ERVTemperatureControl.rst | 37 +++++++ docs/source/EconomizerHighLimitA.rst | 34 ++++++ docs/source/EconomizerHighLimitB.rst | 34 ++++++ docs/source/EconomizerHighLimitC.rst | 36 ++++++ docs/source/EconomizerHighLimitD.rst | 36 ++++++ .../ExteriorLightingControlDaylightOff.rst | 26 +++++ ...ghtingControlOccupancySensingReduction.rst | 25 +++++ docs/source/FanStaticPressureResetControl.rst | 30 +++++ ...gOnlyTerminalBoxCoolingAirflowSetpoint.rst | 61 ++++++++++ ...OnlyTerminalBoxDeadbandAirflowSetpoint.rst | 51 +++++++++ ...gOnlyTerminalBoxHeatingAirflowSetpoint.rst | 62 +++++++++++ docs/source/G36FreezeProtectionStage1.rst | 45 ++++++++ docs/source/G36FreezeProtectionStage2.rst | 38 +++++++ docs/source/G36FreezeProtectionStage3.rst | 72 ++++++++++++ docs/source/G36MinOAwEconomizer.rst | 45 ++++++++ docs/source/G36MinOAwoEconomizer.rst | 61 ++++++++++ ...rAirDamperPositionForReliefDamperOrFan.rst | 104 ++++++++++++++++++ ...perPositionForReturnFanAirflowTracking.rst | 41 +++++++ ...tionForReturnFanDirectBuildingPressure.rst | 41 +++++++ docs/source/G36OutputChangeRateLimit.rst | 34 ++++++ ...eheatTerminalBoxCoolingAirflowSetpoint.rst | 71 ++++++++++++ ...heatTerminalBoxDeadbandAirflowSetpoint.rst | 59 ++++++++++ ...eheatTerminalBoxHeatingAirflowSetpoint.rst | 88 +++++++++++++++ ...ReheatTerminalBoxHeatingCoilLowerBound.rst | 43 ++++++++ ...36ReheatTerminalBoxHeatingCoilTracking.rst | 53 +++++++++ ...perPositionForReturnFanAirflowTracking.rst | 68 ++++++++++++ docs/source/G36ReliefDamperStatus.rst | 42 +++++++ ...nAirDamperPositionForReliefDamperOrFan.rst | 83 ++++++++++++++ ...perPositionForReturnFanAirflowTracking.rst | 32 ++++++ ...tionForReturnFanDirectBuildingPressure.rst | 67 +++++++++++ docs/source/G36SimultaneousHeatingCooling.rst | 36 ++++++ .../G36SupplyAirTemperatureSetpoint.rst | 87 +++++++++++++++ docs/source/G36SupplyFanStatus.rst | 51 +++++++++ .../G36TerminalBoxCoolingMinimumAirflow.rst | 57 ++++++++++ .../G36TerminalBoxVAVDamperTracking.rst | 50 +++++++++ docs/source/GuestRoomControlTemp.rst | 31 ++++++ docs/source/GuestRoomControlVent.rst | 35 ++++++ docs/source/HWReset.rst | 37 +++++++ .../HeatPumpSupplementalHeatLockout.rst | 32 ++++++ .../HeatRejectionFanVariableFlowControl.rst | 30 +++++ ...tRejectionFanVariableFlowControlsCells.rst | 32 ++++++ docs/source/IntegratedEconomizerControl.rst | 33 ++++++ ...nteriorLightingControlAutomaticFullOff.rst | 26 +++++ .../LocalLoopSaturationDirectActingMax.rst | 26 +++++ .../LocalLoopSaturationDirectActingMin.rst | 26 +++++ .../LocalLoopSaturationReverseActingMax.rst | 26 +++++ .../LocalLoopSaturationReverseActingMin.rst | 26 +++++ docs/source/LocalLoopSetPointTracking.rst | 24 ++++ docs/source/LocalLoopUnmetHours.rst | 24 ++++ ...mOccupiedStandbyVentilationZoneControl.rst | 25 +++++ docs/source/NightCycleOperation.rst | 31 ++++++ .../ServiceWaterHeatingSystemControl.rst | 27 +++++ docs/source/SupplyAirTempReset.rst | 32 ++++++ .../VAVStaticPressureSensorLocation.rst | 28 +++++ docs/source/VentilationFanControl.rst | 29 +++++ docs/source/Verifications.rst | 75 +++++++++++++ docs/source/WLHPLoopHeatRejectionControl.rst | 30 +++++ docs/source/ZoneCoolingResetDepth.rst | 27 +++++ docs/source/ZoneCoolingSetpointMaximum.rst | 27 +++++ docs/source/ZoneHeatSetpointMinimum.rst | 31 ++++++ docs/source/ZoneHeatingResetDepth.rst | 27 +++++ docs/source/ZoneTempControl.rst | 32 ++++++ docs/source/conf.py | 4 + docs/source/generate_verification_docs.py | 59 ++++++++++ docs/source/index.rst | 1 + schema/library.json | 38 +++---- ...01_Hospital_STD2004_Atlanta_Batch0_md.json | 2 +- ...01_Hospital_STD2019_Atlanta_Batch0_md.json | 2 +- tests/api/test_verification_library.py | 2 +- 76 files changed, 2903 insertions(+), 26 deletions(-) create mode 100644 docs/source/AppendixGHVACSystemFanOperation.rst create mode 100644 docs/source/AutomaticOADamperControl.rst create mode 100644 docs/source/AutomaticShutdown.rst create mode 100644 docs/source/CHWReset.rst create mode 100644 docs/source/DemandControlVentilation.rst create mode 100644 docs/source/ERVRatio.rst create mode 100644 docs/source/ERVTemperatureControl.rst create mode 100644 docs/source/EconomizerHighLimitA.rst create mode 100644 docs/source/EconomizerHighLimitB.rst create mode 100644 docs/source/EconomizerHighLimitC.rst create mode 100644 docs/source/EconomizerHighLimitD.rst create mode 100644 docs/source/ExteriorLightingControlDaylightOff.rst create mode 100644 docs/source/ExteriorLightingControlOccupancySensingReduction.rst create mode 100644 docs/source/FanStaticPressureResetControl.rst create mode 100644 docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst create mode 100644 docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst create mode 100644 docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst create mode 100644 docs/source/G36FreezeProtectionStage1.rst create mode 100644 docs/source/G36FreezeProtectionStage2.rst create mode 100644 docs/source/G36FreezeProtectionStage3.rst create mode 100644 docs/source/G36MinOAwEconomizer.rst create mode 100644 docs/source/G36MinOAwoEconomizer.rst create mode 100644 docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst create mode 100644 docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst create mode 100644 docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst create mode 100644 docs/source/G36OutputChangeRateLimit.rst create mode 100644 docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst create mode 100644 docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst create mode 100644 docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst create mode 100644 docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst create mode 100644 docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst create mode 100644 docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst create mode 100644 docs/source/G36ReliefDamperStatus.rst create mode 100644 docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst create mode 100644 docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst create mode 100644 docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst create mode 100644 docs/source/G36SimultaneousHeatingCooling.rst create mode 100644 docs/source/G36SupplyAirTemperatureSetpoint.rst create mode 100644 docs/source/G36SupplyFanStatus.rst create mode 100644 docs/source/G36TerminalBoxCoolingMinimumAirflow.rst create mode 100644 docs/source/G36TerminalBoxVAVDamperTracking.rst create mode 100644 docs/source/GuestRoomControlTemp.rst create mode 100644 docs/source/GuestRoomControlVent.rst create mode 100644 docs/source/HWReset.rst create mode 100644 docs/source/HeatPumpSupplementalHeatLockout.rst create mode 100644 docs/source/HeatRejectionFanVariableFlowControl.rst create mode 100644 docs/source/HeatRejectionFanVariableFlowControlsCells.rst create mode 100644 docs/source/IntegratedEconomizerControl.rst create mode 100644 docs/source/InteriorLightingControlAutomaticFullOff.rst create mode 100644 docs/source/LocalLoopSaturationDirectActingMax.rst create mode 100644 docs/source/LocalLoopSaturationDirectActingMin.rst create mode 100644 docs/source/LocalLoopSaturationReverseActingMax.rst create mode 100644 docs/source/LocalLoopSaturationReverseActingMin.rst create mode 100644 docs/source/LocalLoopSetPointTracking.rst create mode 100644 docs/source/LocalLoopUnmetHours.rst create mode 100644 docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst create mode 100644 docs/source/NightCycleOperation.rst create mode 100644 docs/source/ServiceWaterHeatingSystemControl.rst create mode 100644 docs/source/SupplyAirTempReset.rst create mode 100644 docs/source/VAVStaticPressureSensorLocation.rst create mode 100644 docs/source/VentilationFanControl.rst create mode 100644 docs/source/Verifications.rst create mode 100644 docs/source/WLHPLoopHeatRejectionControl.rst create mode 100644 docs/source/ZoneCoolingResetDepth.rst create mode 100644 docs/source/ZoneCoolingSetpointMaximum.rst create mode 100644 docs/source/ZoneHeatSetpointMinimum.rst create mode 100644 docs/source/ZoneHeatingResetDepth.rst create mode 100644 docs/source/ZoneTempControl.rst create mode 100644 docs/source/generate_verification_docs.py diff --git a/constrain/api/verification_library.py b/constrain/api/verification_library.py index 8de63142..5ef2d3e3 100644 --- a/constrain/api/verification_library.py +++ b/constrain/api/verification_library.py @@ -13,7 +13,7 @@ library_schema = { "library_item_id": (int, str, float), "description_brief": str, - "description_detail": str, + "description_detailed": str, "description_index": list, "description_datapoints": dict, "description_assertions": list, @@ -144,8 +144,8 @@ def validate_library(self, items: List[str] = None) -> Dict: # verify the library.json file for lib_key in library_schema.keys(): - # check if lib keys exist. "description_detail" key is optional - if lib_key not in ["description_detail"] and not self.lib_items[ + # check if lib keys exist. "description_detailed" key is optional + if lib_key not in ["description_detailed"] and not self.lib_items[ item ].get(lib_key): logging.error( @@ -169,7 +169,7 @@ def validate_library(self, items: List[str] = None) -> Dict: ) except KeyError: - # if `description_detail` key doesn't exist, output a warning. + # if `description_detailed` key doesn't exist, output a warning. validity_info[item][lib_key] = None logging.warning(f"{lib_key} doesn't exist.") diff --git a/docs/source/AppendixGHVACSystemFanOperation.rst b/docs/source/AppendixGHVACSystemFanOperation.rst new file mode 100644 index 00000000..6137300b --- /dev/null +++ b/docs/source/AppendixGHVACSystemFanOperation.rst @@ -0,0 +1,26 @@ +AppendixGHVACSystemFanOperation +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify hvac system fan operation as per ashrae 90.1 appendix g rules + +Datapoints Description +------------------------------------------------------------------------------- + * o: Number of occupants + * fan_runtime_fraction: Fan runtime fraction (fraction of time the fan ran for the reported period) + * m_oa: System outdoor air flow rate + * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space + +Assertions Description +------------------------------------------------------------------------------- + * If the system never provides outdoor air the verification is untested. The verification fails if the system fan is not continuously running during an occupied period, it passes if it does. The verification fails if the system is always operating continuously during occupied periods, it passes otherwise. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/AutomaticOADamperControl.rst b/docs/source/AutomaticOADamperControl.rst new file mode 100644 index 00000000..0c753bc6 --- /dev/null +++ b/docs/source/AutomaticOADamperControl.rst @@ -0,0 +1,31 @@ +AutomaticOADamperControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Hvac system shall be turned on and off everyday + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.4.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * o: Number of occupants + * m_oa: Air terminal outdoor air volume flow rate + * eco_onoff: Air system outdoor air economizer status + * tol_o: Tolerance for the number of occupants + * tol_m_oa: Tolerance for the air terminal air volume flow rate + +Assertions Description +------------------------------------------------------------------------------- + * if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/AutomaticShutdown.rst b/docs/source/AutomaticShutdown.rst new file mode 100644 index 00000000..65db9bbf --- /dev/null +++ b/docs/source/AutomaticShutdown.rst @@ -0,0 +1,27 @@ +AutomaticShutdown +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Off hour automatic temperature setback and system shutoff + +Index Description +------------------------------------------------------------------------------- + * None + +Datapoints Description +------------------------------------------------------------------------------- + * hvac_set: HVAC Operation Schedule + +Assertions Description +------------------------------------------------------------------------------- + * if minimum start_time != maximum start_time and minimum end_time != maximum end_time then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/CHWReset.rst b/docs/source/CHWReset.rst new file mode 100644 index 00000000..2bb19926 --- /dev/null +++ b/docs/source/CHWReset.rst @@ -0,0 +1,37 @@ +CHWReset +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Chilled water supply water temperature reset + +Detailed Description +------------------------------------------------------------------------------- +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) + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.4.4 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * 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_set: Chilled water maximum temp setpoint + * T_chw_min_set: Chilled water minimum temp setpoint + +Assertions Description +------------------------------------------------------------------------------- + * When m_chw > 0, T_chw <= T_chw_max_set and T_chw >= T_chw_min_set; When m_chw <= 0 , always pass + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/DemandControlVentilation.rst b/docs/source/DemandControlVentilation.rst new file mode 100644 index 00000000..a4d82551 --- /dev/null +++ b/docs/source/DemandControlVentilation.rst @@ -0,0 +1,30 @@ +DemandControlVentilation +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Demand control ventilation verification for high-occupancy areas + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.8 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * v_oa: Zone Air Terminal Outdoor Air Volume Flow Rate + * s_ahu: status of HVAC system operation + * s_eco: Air System Outdoor Air Economizer Status + * no_of_occ: People Occupant Count + +Assertions Description +------------------------------------------------------------------------------- + * i) If v_oa is constant over time, NO DCV presents. ii) If v_oa has two clusters, DCV with hbinary control presents. iii) v_oa is linearly correlated to o_ahu, DCV with occupant-counting based control presents + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ERVRatio.rst b/docs/source/ERVRatio.rst new file mode 100644 index 00000000..04fc0980 --- /dev/null +++ b/docs/source/ERVRatio.rst @@ -0,0 +1,33 @@ +ERVRatio +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Erv ratio of at least 50% + +Detailed Description +------------------------------------------------------------------------------- +Energy recovery systems required by this section shall result in an enthalpy recovery ratio of at least 50%. a 50% enthalpy recovery ratio shall mean a change in the enthalpy of the outdoor air supply equal to 50% of the difference between the outdoor air and entering exhaust air enthalpies at design conditions. + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.6.1 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * oa_enth: OA enthalpy + * ret_enth: Return air enthalpy + * oa_enth_ERV: OA enthalpy after ERV + +Assertions Description +------------------------------------------------------------------------------- + * (oa_enth_ERV - oa_enth)/(ret_enth - oa_enth) > = 50% happens at least once in winter design day + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ERVTemperatureControl.rst b/docs/source/ERVTemperatureControl.rst new file mode 100644 index 00000000..ce6f44f5 --- /dev/null +++ b/docs/source/ERVTemperatureControl.rst @@ -0,0 +1,37 @@ +ERVTemperatureControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Tspr tool software development + +Index Description +------------------------------------------------------------------------------- + * None + +Datapoints Description +------------------------------------------------------------------------------- + * MIN_OA_FLOW: Minimum outdoor air flow rate + * OA_FLOW: Outdoor air flow rate + * NOM_FLOW: Heat exchanger's norminal flow rate + * HX_DSN_EFF_HTG: Heat exchanger heating effectiveness at the nominal air flow rate + * HX_DSN_EFF_HTG_75_PCT: Heat exchanger heating effectiveness at 75% of the nominal air flow rate + * HX_DSN_EFF_CLG: Heat exchanger cooling effectiveness at the nominal air flow rate + * HX_DSN_EFF_CLG_75_PCT: Heat exchanger cooling effectiveness at 75% of the nominal air flow rate + * T_OA: Outdoor air dry-bulb temperature + * T_SO: Supply air temperature + * T_SO_SP: Supply air temperature setpoint + * T_EI: Zone air temperature + +Assertions Description +------------------------------------------------------------------------------- + * Check that the ERV is bypassed during economizer operation; During non-economizer operation, if the outdoor air flow rate, 1) if T_SO > T_SO_SP the ERV is not operating correctly if T_OA < T_EI and the ERV is running, T_OA > T_EI and the ERV is NOT running and the operating sensible efficiency of the ERV is NOT close to the operating design value, 2) if T_SO < T_SO_SP the ERV is NOT running and the operating sensible efficiency of the ERV is NOT close to the operating design value + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/EconomizerHighLimitA.rst b/docs/source/EconomizerHighLimitA.rst new file mode 100644 index 00000000..81d3f774 --- /dev/null +++ b/docs/source/EconomizerHighLimitA.rst @@ -0,0 +1,34 @@ +EconomizerHighLimitA +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Fixed dry bulb economizer high limit + +Detailed Description +------------------------------------------------------------------------------- +Economizer needs to be off when high-limit condition was satisfied. y_e_hl =f($climate zone, $toa, $tra, $hoa, $hra) + +Index Description +------------------------------------------------------------------------------- + * Table 6.5.1.1.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_oa_db: OA dry bulb temperature + * oa_threshold: OA dry bulb threshold + * oa_min_flow: OA minimum airflow setpoint + * oa_flow: OA airflow + +Assertions Description +------------------------------------------------------------------------------- + * (oa_flow > oa_min_flow) AND (T_oa_db > oa_threshold) + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Fail + diff --git a/docs/source/EconomizerHighLimitB.rst b/docs/source/EconomizerHighLimitB.rst new file mode 100644 index 00000000..847ff906 --- /dev/null +++ b/docs/source/EconomizerHighLimitB.rst @@ -0,0 +1,34 @@ +EconomizerHighLimitB +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Differential dry bulb economizer high limit + +Detailed Description +------------------------------------------------------------------------------- +Check the 90.1-2016 table + +Index Description +------------------------------------------------------------------------------- + * Table 6.5.1.1.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_oa_db: OA dry bulb temperature + * ret_a_temp: Retuan air temperature + * oa_min_flow: OA minimum airflow setpoint + * oa_flow: OA airflow + +Assertions Description +------------------------------------------------------------------------------- + * (oa_flow > oa_min_flow) AND (ret_a_temp < T_oa_db) + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Fail + diff --git a/docs/source/EconomizerHighLimitC.rst b/docs/source/EconomizerHighLimitC.rst new file mode 100644 index 00000000..3cb06437 --- /dev/null +++ b/docs/source/EconomizerHighLimitC.rst @@ -0,0 +1,36 @@ +EconomizerHighLimitC +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Fixed enthalpy + fixed dry bulb economizer high limit + +Detailed Description +------------------------------------------------------------------------------- +N/a + +Index Description +------------------------------------------------------------------------------- + * Table 6.5.1.1.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_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 + * oa_enth_threshold: OA enthalpy threshold + +Assertions Description +------------------------------------------------------------------------------- + * (oa_flow > oa_min_flow) AND ((T_oa_db > oa_threshold) OR (oa_enth > oa_enth_threshold)) + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Fail + diff --git a/docs/source/EconomizerHighLimitD.rst b/docs/source/EconomizerHighLimitD.rst new file mode 100644 index 00000000..023c6afa --- /dev/null +++ b/docs/source/EconomizerHighLimitD.rst @@ -0,0 +1,36 @@ +EconomizerHighLimitD +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Differential enthalpy + fixed dry bulb economizer high limit (case study) + +Detailed Description +------------------------------------------------------------------------------- +N/a + +Index Description +------------------------------------------------------------------------------- + * Table 6.5.1.1.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_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 + +Assertions Description +------------------------------------------------------------------------------- + * oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (T_oa_db > oa_threshold)) + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Fail + diff --git a/docs/source/ExteriorLightingControlDaylightOff.rst b/docs/source/ExteriorLightingControlDaylightOff.rst new file mode 100644 index 00000000..0e9104fc --- /dev/null +++ b/docs/source/ExteriorLightingControlDaylightOff.rst @@ -0,0 +1,26 @@ +ExteriorLightingControlDaylightOff +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Exterior lighting control occupancy sensing reduction + +Datapoints Description +------------------------------------------------------------------------------- + * is_sun_up: Flag that indicates if the sun has risen + * daylight_sensed: Amount of daylight sensed by a sensor, this should be expressed in the same unit as the setpoint + * daylight_setpoint: Daylight setpoint, or thresholds, used to determine if the exterior lighting system should be turned off + * total_lighting_power: Reported total lighting power (not the design total lighting power) + +Assertions Description +------------------------------------------------------------------------------- + * The algorithm verifies that the exterior lighting is off when the sun has risen, or when there is a sufficient amount of daylight. If the exterior lighting system is not off during these situation, the verification fails, otherwise it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ExteriorLightingControlOccupancySensingReduction.rst b/docs/source/ExteriorLightingControlOccupancySensingReduction.rst new file mode 100644 index 00000000..9835cafb --- /dev/null +++ b/docs/source/ExteriorLightingControlOccupancySensingReduction.rst @@ -0,0 +1,25 @@ +ExteriorLightingControlOccupancySensingReduction +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Exterior lighting control occupancy sensing reduction + +Datapoints Description +------------------------------------------------------------------------------- + * o: Number of occupants + * total_lighting_power: Reported total lighting power (not the design total lighting power) + * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space + +Assertions Description +------------------------------------------------------------------------------- + * The algorithm verifies that the exterior lighting is controlled based on occupancy. It fails if the maximum reported total lighting power is greater than 1500 W and if the total mnaximum lighting power is not reduced by half when occupancy has not been detected for 15 mins. Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/FanStaticPressureResetControl.rst b/docs/source/FanStaticPressureResetControl.rst new file mode 100644 index 00000000..518c1c52 --- /dev/null +++ b/docs/source/FanStaticPressureResetControl.rst @@ -0,0 +1,30 @@ +FanStaticPressureResetControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +The set point is reset lower until one zone damper is nearly wide open + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.3.2.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * p_set: Static pressure setpoint + * d_VAV_x: VAV Damper x Position (includes all VAV dampers served by the system under test + * tol: Tolerance for VAV box damper position openings + * p_set_min: : Minimum static pressure setpoint threshold + +Assertions Description +------------------------------------------------------------------------------- + * if d_VAV(n) (n=1,2,...,N) < 0.9 and p_set(t) > p_set(t-1), then fail else pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst new file mode 100644 index 00000000..b0725467 --- /dev/null +++ b/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst @@ -0,0 +1,61 @@ +G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Cooling only terminal box airflow control when the zone state is cooling following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.5.5.1 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_cool_max: Maximum cooling airflow setpoint + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * switch operation_mode + + * case 'occupied' + + * cooling_maximum = v_cool_max + + * minimum = v_min + + * case 'cooldown', 'setup' + + * cooling_maximum = v_cool_max + + * minimum = 0 + + * case 'warmup', 'setback', 'unoccupied' + + * cooling_maximum = 0 + + * minimum = 0 + + * + + * if minimum <= v_spt <= cooling_maximum + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst new file mode 100644 index 00000000..1796e49b --- /dev/null +++ b/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst @@ -0,0 +1,51 @@ +G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Cooling only terminal box airflow control when the zone state is deadband following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.5.5.2 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + * v_spt_tol: Airflow setpoint tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * switch operation_mode + + * case 'occupied' + + * minimum = v_min + + * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' + + * minimum = 0 + + * + + * if abs(v_spt - minimum) <= v_spt_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst new file mode 100644 index 00000000..57632407 --- /dev/null +++ b/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst @@ -0,0 +1,62 @@ +G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Cooling only terminal box airflow control when the zone state is heating following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.5.5.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_cool_max: Zone maximum cooling airflow setpoint + * v_heat_max: Zone maximum heating airflow setpoint + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * switch operation_mode + + * case 'occupied' + + * heating_maximum = v_heat_max + + * minimum = v_min + + * case 'cooldown', 'setup', 'unoccupied' + + * heating_maximum = 0 + + * minimum = 0 + + * case 'warmup', 'setback' + + * heating_maximum = v_cool_max + + * minimum = 0 + + * + + * if minimum <= v_spt <= heating_maximum + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36FreezeProtectionStage1.rst b/docs/source/G36FreezeProtectionStage1.rst new file mode 100644 index 00000000..0a75bf30 --- /dev/null +++ b/docs/source/G36FreezeProtectionStage1.rst @@ -0,0 +1,45 @@ +G36FreezeProtectionStage1 +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 freeze protection stage 1 requirements + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.12.1. in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * supply_air_temp: supply air temperature + * outdoor_damper_command: outdoor air damper + * outdoor_damper_minimum: outdoor air damper minimum position + +Assertions Description +------------------------------------------------------------------------------- + * if supply_air_temp < 4.4 (continuously 5 minutes) and outdoor_damper_command > outdoor_damper_minimum: + + * fail + + * elif outdoor_damper_command > outdoor_damper_minimum and not (supply_air_temp > 7 (continuously 5 minutes)): + + * fail + + * else: + + * pass + + * + + * if never (supply_air_temp < 4.4 (continuously 5 minutes)): + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36FreezeProtectionStage2.rst b/docs/source/G36FreezeProtectionStage2.rst new file mode 100644 index 00000000..b1443ab6 --- /dev/null +++ b/docs/source/G36FreezeProtectionStage2.rst @@ -0,0 +1,38 @@ +G36FreezeProtectionStage2 +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 freeze protection stage 2 requirements + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.12.2. in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * supply_air_temp: supply air temperature + * outdoor_damper_command: outdoor air damper + +Assertions Description +------------------------------------------------------------------------------- + * if supply_air_temp < 3.3 (continuously 5 minutes) and outdoor_damper_command > 0 (ever in the following hour): + + * fail + + * else: + + * pass + + * if never (supply_air_temp < 3.3 (continuously 5 minutes)): + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36FreezeProtectionStage3.rst b/docs/source/G36FreezeProtectionStage3.rst new file mode 100644 index 00000000..390b3000 --- /dev/null +++ b/docs/source/G36FreezeProtectionStage3.rst @@ -0,0 +1,72 @@ +G36FreezeProtectionStage3 +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 freeze protection stage 3 (highest) requirements + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.12.3. in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * freeze_stat: (optional, set to False if system does not have it) binary freeze-stat + * supply_air_temp: supply air temperature + * outdoor_damper_command: outdoor air damper + * supply_fan_status: supply fan status (speed): [1, 0] (can be replaced by binary or numeric variables) + * return_fan_status: (optional, set to False if system does not have it) return fan status (speed) + * relief_fan_status: (optional, set to False if system does not have it) relief fan status (speed) + * cooling_coil_command: cooling coil command + * heating_coil_command: heating coil command + +Assertions Description +------------------------------------------------------------------------------- + * if supply_air_temp < 3.3 (continuously 15 minutes) or + + * supply_air_temp < 1 (continuously 5 minutes) or + + * freeze_stat == True + + * if not ( + + * outdoor_damper_command == 0 and + + * supply_fan_status == 'off' and + + * return_fan_status == 'off' and + + * relief_fan_status == 'off' and + + * cooling_coil_command == 100 and + + * heating_coil_command > 0 + + * ): + + * fail + + * else: + + * pass + + * if never ( + + * supply_air_temp < 3.3 (continuously 15 minutes) or + + * supply_air_temp < 1 (continuously 5 minutes) or + + * freeze_stat == True + + * ): + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36MinOAwEconomizer.rst b/docs/source/G36MinOAwEconomizer.rst new file mode 100644 index 00000000..8cd2c99e --- /dev/null +++ b/docs/source/G36MinOAwEconomizer.rst @@ -0,0 +1,45 @@ +G36MinOAwEconomizer +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 minimum outdoor air control when economizer is active + +Index Description +------------------------------------------------------------------------------- + * Section 5.16 in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * outdoor_air_temp: outdoor air temperature + * economizer_high_limit_sp: economizer lockout high limit set point + * outdoor_damper_command: outdoor air damper command + * min_oa_p: minimum outdoor air damper position set point + * min_oa_sp: minimum outdoor air flow rate setpoint + * outdoor_air_flow: outdoor air flow rate + * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] + +Assertions Description +------------------------------------------------------------------------------- + * if not economizer_lockout(outdoor_air_temp, economizer_high_limit_sp) and sys_mode == 'occupied': + + * if oudoor_damper_command >= MinOA-P and outdoor_air_flow >= MinOAsp: + + * pass + + * else: + + * fail + + * else: + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36MinOAwoEconomizer.rst b/docs/source/G36MinOAwoEconomizer.rst new file mode 100644 index 00000000..9c2ccf99 --- /dev/null +++ b/docs/source/G36MinOAwoEconomizer.rst @@ -0,0 +1,61 @@ +G36MinOAwoEconomizer +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 minimum outdoor air control when economizer is in lockout + +Index Description +------------------------------------------------------------------------------- + * Section 5.16 in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * outdoor_air_temp: outdoor air temperature + * economizer_high_limit_sp: economizer lockout high limit set point + * outdoor_damper_command: outdoor air damper command + * return_damper_command: return air damper command + * outdoor_air_flow: outdoor air flow rate + * min_oa_sp: minimum outdoor air flow rate setpoint + * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] + +Assertions Description +------------------------------------------------------------------------------- + * if economizer_lockout(outdoor_air_temp, economizer_high_limit_sp) and sys_mode == 'occupied': + + * if outdoor_air_flow < MinOAsp (continuously (e.g. fall below the sp for a consecutive 1 hr)): + + * if outdoor_damper_command == 100 and return_damper_command == 0: + + * pass + + * else: + + * fail + + * elif outdoor_air_flow > MinOAsp (continuously): + + * if outdoor_damper_command == 0 and return_damper_command == 100: + + * pass + + * else: + + * fail + + * else: + + * pass (essentially untested yet) + + * else: + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst b/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst new file mode 100644 index 00000000..6a40413b --- /dev/null +++ b/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst @@ -0,0 +1,104 @@ +G36OutdoorAirDamperPositionForReliefDamperOrFan +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with relief damper/fan + +Detailed Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * heating_output: AHU heating coil output + * cooling_output: AHU cooling coil output + * economizer_high_limit_reached: Economizer high limit flag + * oa_p: Outdoor air damper position + * min_oa_p: Minimum outdoor air damper position + * max_oa_p: Maximum outdoor air damper position + * oa_p_tol: Outdoor air damper position tolerance + * ra_p_tol: Return air damper position tolerance + * ra_p: Return air damper position + * max_ra_p: Maximum return air damper position + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if heating_output > 0 + + * if abs(oa_p - min_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + + * else if cooling_output > 0 + + * if economizer_high_limit_reached + + * if abs(oa_p - min_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + + * else + + * if abs(oa_p - max_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + + * end + + * else if ra_p < max_ra_p + + * if abs(oa_p - max_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + + * else if abs(ra_p - max_ra_p) < ra_p_tol + + * if min_oa_p < oa_p < max_oa_p + + * pass + + * else + + * fail + + * end + + * end + diff --git a/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst new file mode 100644 index 00000000..848dc3c1 --- /dev/null +++ b/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst @@ -0,0 +1,41 @@ +G36OutdoorAirDamperPositionForReturnFanAirflowTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking + +Detailed Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * oa_p: Outdoor air damper position + * max_oa_p: Maximum outdoor air damper position + * oa_p_tol: Outdoor air damper position tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if abs(oa_p - max_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst b/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst new file mode 100644 index 00000000..4dcc5a23 --- /dev/null +++ b/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst @@ -0,0 +1,41 @@ +G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with direct building pressure control + +Detailed Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * oa_p: Outdoor air damper position + * max_oa_p: Maximum outdoor air damper position + * oa_p_tol: Outdoor air damper position tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if abs(oa_p - max_oa_p) < oa_p_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36OutputChangeRateLimit.rst b/docs/source/G36OutputChangeRateLimit.rst new file mode 100644 index 00000000..f881c93e --- /dev/null +++ b/docs/source/G36OutputChangeRateLimit.rst @@ -0,0 +1,34 @@ +G36OutputChangeRateLimit +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 requirement of controller command change rate limit + +Index Description +------------------------------------------------------------------------------- + * Section 5.1.9 in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * command: control command to be verified with command range being (0-100) + * max_rate_of_change_per_min: control loop output maximum rate of change, default to 25. + +Assertions Description +------------------------------------------------------------------------------- + * if abs(command(current_t) - command(prev_t)) > max_rage_of_change_per_min and (current_t - prev_t <= 1 minute): + + * fail + + * else: + + * pass + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst new file mode 100644 index 00000000..f646c48e --- /dev/null +++ b/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst @@ -0,0 +1,71 @@ +G36ReheatTerminalBoxCoolingAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box with reheat when the zone state is cooling following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.6.5.1 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_cool_max: Maximum cooling airflow setpoint + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + * heating_coil_command: Heating coil command + * heating_coil_command_tol: Heating coil command saturation tolerance + * dat: Discharge air temperature + * dat_min_spt: Minimum discharge air temperature setpoint + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if dat > dat_min_spt and heating_coil_command > heating_coil_command_tol + + * fail + + * else + + * switch operation_mode + + * case 'occupied' + + * cooling_maximum = v_cool_max + + * minimum = v_min + + * case 'cooldown', 'setup' + + * cooling_maximum = v_cool_max + + * minimum = 0 + + * case 'warmup', 'setback', 'unoccupied' + + * cooling_maximum = 0 + + * minimum = 0 + + * + + * if cooling_minimum <= v_spt <= cooling_maximum + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst new file mode 100644 index 00000000..fdea68ec --- /dev/null +++ b/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst @@ -0,0 +1,59 @@ +G36ReheatTerminalBoxDeadbandAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box with reheat when the zone state is deadband following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.6.5.2 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + * v_spt_tol: Airflow setpoint tolerance + * heating_coil_command: Heating coil command + * heating_coil_command_tol: Heating coil command saturation tolerance + * dat: Discharge air temperature + * dat_min_spt: Minimum discharge air temperature setpoint + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if dat > dat_min_spt and heating_coil_command > heating_coil_command_tol + + * fail + + * else + + * switch operation_mode + + * case 'occupied' + + * minimum = v_min + + * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' + + * minimum = 0 + + * if abs(v_spt - minimum) <= v_spt_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst new file mode 100644 index 00000000..2ec8bfa0 --- /dev/null +++ b/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst @@ -0,0 +1,88 @@ +G36ReheatTerminalBoxHeatingAirflowSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box with reheat when the zone state is heating following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.6.5.3 (a, b) in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_cool_max: Zone maximum cooling airflow setpoint + * v_heat_max: Zone maximum heating airflow setpoint + * v_heat_min: Zone minimum heating airflow setpoint + * v_min: Occupied zone minimum airflow setpoint + * v_spt: Active airflow setpoint + * v_spt_tol: Airflow setpoint tolerance + * heating_loop_output: Zone heating loop signal (from 0 to 100) + * room_temp: Room temperature + * space_temp_spt: Space temperature setpoint + * ahu_sat_spt: AHU supply air temperature setpoint + * dat: Discharge air temperature + * dat_spt: Discharge air temperature setpoint + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * switch operation_mode + + * case 'occupied' + + * heating_maximum = max(v_heat_min, v_min) + + * heating_minimum = max(v_heat_min, v_min) + + * case 'cooldown' + + * heating_maximum = v_heat_max + + * heating_minimum = v_heat_min + + * case 'setup', 'unoccupied' + + * heating_maximum = 0 + + * heating_minimum = 0 + + * case 'warmup', 'setback' + + * heating_maximum = v_heat_max + + * heating_minimum = v_cool_max + + * + + * if 0 < heating_loop_output <= 50: + + * if abs(v_spt - heating_minimum) <= tolerance and ahu_sat_spt <= dat_spt <= 11 + space_temp_spt: + + * pass + + * else: + + * fail + + * if 50 < heating_loop_output <= 100: + + * if dat > room_temp + 3 and heating_minimum <= v_spt <= heating_maximum: + + * pass + + * else: + + * untested + + * end + diff --git a/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst b/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst new file mode 100644 index 00000000..54342df2 --- /dev/null +++ b/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst @@ -0,0 +1,43 @@ +G36ReheatTerminalBoxHeatingCoilLowerBound +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box with reheat heating coil needs to keep discharge air temp no lower than 10c when occupied following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.6.5.4 in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * heating_coil_command: Heating coil command + * dat: Discharge air temperature + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if operation_mode != 'occupied': + + * untested + + * if operation_mode == 'occupied': + + * if dat < 10 and heating_coil_command < 99: + + * fail + + * else: + + * pass + + * end + diff --git a/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst b/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst new file mode 100644 index 00000000..c7f8e1ac --- /dev/null +++ b/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst @@ -0,0 +1,53 @@ +G36ReheatTerminalBoxHeatingCoilTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box with reheat heating coil tracking discharge temperature at setpoint following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.6.5.3 c in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * heating_coil_command: Heating coil command + * dat: Discharge air temperature + * dat_spt: Discharge air temperature setpoint + * dat_tracking_tol: Temperature tracking tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * only check the following if operation_mode is heating + + * if abs(dat_spt - dat) >= dat_tracking_tol (less than 1hr): + + * pass + + * elif abs(dat_spt - dat) < dat_tracking_tol: + + * pass + + * if dat - dat_spt >= dat_tracking_tol (continously) and heating_coil_command <= 1: + + * pass + + * elif dat_spt - dat >= dat_tracking_tol (continuously) and vav_damper_command >= 99: + + * pass + + * else: + + * fail + + * end + diff --git a/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst new file mode 100644 index 00000000..b7c4a447 --- /dev/null +++ b/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst @@ -0,0 +1,68 @@ +G36ReliefAirDamperPositionForReturnFanAirflowTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking + +Detailed Description +------------------------------------------------------------------------------- +Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * heating_output: AHU heating coil output + * cooling_output: AHU cooling coil output + * max_rea_p: Maximum return air damper position + * rea_p_tol: Return air damper position tolerance + * rea_p: Return air damper position + * ra_p: Relief air damper position + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if heating_output > 0 + + * if abs(rea_p - 0) < rea_p_tol + + * pass + + * else + + * fail + + * end + + * else if cooling_output > 0 + + * if abs(rea_p - max_rea_p) < rea_p_tol + + * pass + + * else + + * fail + + * end + + * else if abs(rea_p - (1 - ra_p) * max_rea_p) < rea_p_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36ReliefDamperStatus.rst b/docs/source/G36ReliefDamperStatus.rst new file mode 100644 index 00000000..2b96544a --- /dev/null +++ b/docs/source/G36ReliefDamperStatus.rst @@ -0,0 +1,42 @@ +G36ReliefDamperStatus +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 relief dampers shall be enabled when the associated supply fan is proven on, and disabled otherwise. + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.8.1 in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * relief_damper_command: relief damper opening (0-100) + * supply_fan_status: supply fan status (speed) [1, 0] (can be replaced by binary or numeric variables) + +Assertions Description +------------------------------------------------------------------------------- + * if relief_damper_command > 0 and supply_fan_status == 'on': + + * pass + + * elif supply_fan_status == 'off' and relief_damper_command == 0: + + * pass + + * else: + + * fail + + * if not ['on', 'off'] in supply_fan_status: + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst b/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst new file mode 100644 index 00000000..bb14eefe --- /dev/null +++ b/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst @@ -0,0 +1,83 @@ +G36ReturnAirDamperPositionForReliefDamperOrFan +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows guideline 36 recommendations for systems with relief damper/fan + +Detailed Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * max_ra_p: Maximum return air damper position + * ra_p_tol: Return air damper position tolerance + * ra_p: Return air damper position + * oa_p: Outdoor air damper position + * max_oa_p: Maximum outdoor air damper position + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if heating_output > 0 + + * if abs(ra_p - max_ra_p) < ra_p_tol + + * pass + + * else + + * fail + + * end + + * else if cooling_output > 0 + + * if abs(ra_p - 0) < ra_p_tol + + * pass + + * else + + * fail + + * end + + * else if oa_p < max_oa_p + + * if abs(ra_p - max_ra_p) < ra_p_tol + + * pass + + * else + + * fail + + * end + + * else if abs(oa - max_oa_p) < oa_p_tol + + * if ra_p < max_ra_p + + * pass + + * else + + * fail + + * end + + * end + diff --git a/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst new file mode 100644 index 00000000..99d13444 --- /dev/null +++ b/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst @@ -0,0 +1,32 @@ +G36ReturnAirDamperPositionForReturnFanAirflowTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking + +Detailed Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * heating_output: AHU heating coil output + * cooling_output: AHU cooling coil output + * max_ra_p: Maximum return air damper position + * ra_p_tol: Return air damper position tolerance + * ra_p: Return air damper position + * rea_p: Relief air damper position + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst b/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst new file mode 100644 index 00000000..0b946859 --- /dev/null +++ b/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst @@ -0,0 +1,67 @@ +G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows guideline 36 recommendations for systems with return fan with direct building pressure control + +Detailed Description +------------------------------------------------------------------------------- +Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * heating_output: AHU heating coil output + * cooling_output: AHU cooling coil output + * max_ra_p: Maximum return air damper position + * ra_p_tol: Return air damper position tolerance + * ra_p: Return air damper position + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if heating_output > 0 + + * if abs(ra_p - max_ra_p) < ra_p_tol + + * pass + + * else + + * fail + + * end + + * else if cooling_output > 0 + + * if abs(ra_p - 0) < ra_p_tol + + * pass + + * else + + * fail + + * end + + * else if abs(ra_p - (1 - rea_p) * max_ra_p) < ra_p_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36SimultaneousHeatingCooling.rst b/docs/source/G36SimultaneousHeatingCooling.rst new file mode 100644 index 00000000..8c9dbd49 --- /dev/null +++ b/docs/source/G36SimultaneousHeatingCooling.rst @@ -0,0 +1,36 @@ +G36SimultaneousHeatingCooling +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verifiy that both the heating and cooling coil are not operating at the same time + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.3 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * heating_output: AHU heating coil output + * cooling_output: AHU cooling coil output + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if heating_output > 0 and cooling_output > 0 + + * fail + + * else + + * pass + + * end + diff --git a/docs/source/G36SupplyAirTemperatureSetpoint.rst b/docs/source/G36SupplyAirTemperatureSetpoint.rst new file mode 100644 index 00000000..430849a9 --- /dev/null +++ b/docs/source/G36SupplyAirTemperatureSetpoint.rst @@ -0,0 +1,87 @@ +G36SupplyAirTemperatureSetpoint +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Supply air temperature operation following the guideline 36 recommendations + +Detailed Description +------------------------------------------------------------------------------- +Verify that the supply air temperature setpoint of a system follows the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.2.2 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * oa_t: Outdoor air temperature + * t_max: Maximum supply air temperature setpoint based on requests + * sa_t_sp_ac: Actual supply air temperature setpoint + * oa_t_min: Minimum outdoor air temperature for linear SAT reset + * oa_t_max: Maximum outdoor air temperature for linear SAT reset + * min_clg_sa_t_sp: Minimum cooling supply air temperature setpoint + * max_clg_sa_t_sp: Maximum cooling supply air temperature setpoint + * sa_sp_tol: supply air temperature tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if t_max > max_clg_sa_t_sp + + * fail + + * end + + * + + * switch operation_mode + + * case 'cooldown' + + * sa_t_sp = min_clg_sa_t_sp + + * case 'warmup', 'setback + + * sa_t_sp = 35 # 95 F + + * case 'occupied', 'setup' + + * if oa_t <= oa_t_min + + * sa_t_sp = t_max + + * else if oa_t >= oa_t_max + + * sa_t_sp = min_clg_sa_t_sp + + * else + + * sa_t_sp = (oa_t - oa_t_min) * (t_max - min_clg_sa_t_sp) / (oa_t_min - oa_t_max) + t_max + + * # linear interpolation + + * end + + * end + + * + + * if abs(sa_t_sp - sa_t_s_ac) < sa_sp_tol + + * pass + + * else + + * fail + + * end + diff --git a/docs/source/G36SupplyFanStatus.rst b/docs/source/G36SupplyFanStatus.rst new file mode 100644 index 00000000..8800bcbb --- /dev/null +++ b/docs/source/G36SupplyFanStatus.rst @@ -0,0 +1,51 @@ +G36SupplyFanStatus +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +G36 supply fan on/off requirements + +Index Description +------------------------------------------------------------------------------- + * Section 5.16.1.1. in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] + * has_reheat_box_on_perimeter_zones: binary flag of If there are any VAV-reheat boxes on perimeter zones. + * supply_fan_status: supply fan status (speed) [1, 0] (can be replaced by binary or numeric variables) + +Assertions Description +------------------------------------------------------------------------------- + * if has_reheat_box_on_perimeter_zones == True: + + * if sys_mode != 'unoccupied' and supply_fan_status == 'off': + + * fail + + * + + * else: + + * if sys_mode in ['occupied', 'setup', 'cooldown'] and supply_fan_staus == 'off': + + * fail + + * + + * if ['occupied', 'unoccupied'] in sys_mode: + + * pass + + * else: + + * untested + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst b/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst new file mode 100644 index 00000000..bfa5caca --- /dev/null +++ b/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst @@ -0,0 +1,57 @@ +G36TerminalBoxCoolingMinimumAirflow +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box in cooling mode needs maintain minimum airflow when supply air temperature is high following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.5.5.1.a in Guideline 36-2021 + + * Section 5.6.5.1.a in Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * operation_mode: System operation mode + * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) + * v_min: Occupied zone minimum airflow setpoint + * ahu_sat_spt: AHU supply air temperature setpoint + * v_spt: Active airflow setpoint + * v_spt_tol: Airflow setpoint tolerance + * room_temp: Room temperature + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if ahu_sat_spt <= room_temp: + + * untested + + * else: + + * switch operation_mode + + * case 'occupied' + + * minimum = v_min + + * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' + + * minimum = 0 + + * if v_spt - v_spt_tol > minimum: + + * fail + + * else: + + * pass + diff --git a/docs/source/G36TerminalBoxVAVDamperTracking.rst b/docs/source/G36TerminalBoxVAVDamperTracking.rst new file mode 100644 index 00000000..3f6014e0 --- /dev/null +++ b/docs/source/G36TerminalBoxVAVDamperTracking.rst @@ -0,0 +1,50 @@ +G36TerminalBoxVAVDamperTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Terminal box airflow control with vav damper following the guideline 36 recommendations + +Index Description +------------------------------------------------------------------------------- + * Section 5.5.5.4 in ASHRAE Guideline 36-2021 + +Datapoints Description +------------------------------------------------------------------------------- + * vav_damper_command: Terminal box VAV damper command + * v: Terminal box discharge airflow rate + * v_spt: Active airflow setpoint + * v_tracking_tol: Airflow tracking tolerance + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + +Assertions Description +------------------------------------------------------------------------------- + * if abs(v_spt - v) >= v_tracking_tol (less than 1hr): + + * pass + + * elif abs(v_spt - v) < v_tracking_tol: + + * pass + + * if v - v_spt >= v_tracking_tol (continously) and vav_damper_command <= 1: + + * pass + + * elif v_spt - v >= v_tracking_tol (continuously) and vav_damper_command >= 99: + + * pass + + * else: + + * fail + + * end + diff --git a/docs/source/GuestRoomControlTemp.rst b/docs/source/GuestRoomControlTemp.rst new file mode 100644 index 00000000..c84826ee --- /dev/null +++ b/docs/source/GuestRoomControlTemp.rst @@ -0,0 +1,31 @@ +GuestRoomControlTemp +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify whether there is guest room temperature control during operation hours + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.3.5 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_z_hea_set: Zone Thermostat Heating Setpoint Temperature + * T_z_coo_set: Zone Thermostat Cooling Setpoint Temperature + * O_sch: Occupant Schedule + * tol_occ: Tolerence for Occupant Schedule + * tol_temp: Tolerance for Temperature + +Assertions Description +------------------------------------------------------------------------------- + * Check the two different temperature control logics when the room is/isn't rented out + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/GuestRoomControlVent.rst b/docs/source/GuestRoomControlVent.rst new file mode 100644 index 00000000..b3ab370e --- /dev/null +++ b/docs/source/GuestRoomControlVent.rst @@ -0,0 +1,35 @@ +GuestRoomControlVent +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Verify whether there is guest room outdoor airflow control during operation hours + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.3.5.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * damper_sch: Damper Schdule + * m_oa_fraction: Air System Outdoor Air Flow Fraction + * O_sch: Occupant schedule + * m_oa_heat_design: Design Heating Air Flow Rate + * m_oa_cool_design: Design Cooling Air Flow Rate + * volume: Zone Volume + * v_outdoor_per_zone: Outdoor Air Flow per Zone Floor Area + * tol_occ: Tolerence for occupant Schedule + * tol_oa_flow: Tolerance for Outdoor Airflow + +Assertions Description +------------------------------------------------------------------------------- + * Check the two different airflow control logics when the room is/isn't rented out + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/HWReset.rst b/docs/source/HWReset.rst new file mode 100644 index 00000000..4452bb44 --- /dev/null +++ b/docs/source/HWReset.rst @@ -0,0 +1,37 @@ +HWReset +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Hot water supply water temperature reset + +Detailed Description +------------------------------------------------------------------------------- +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) + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.4.4 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * 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_set: Hot water maximum temp setpoint + * T_hw_min_set: Hot water minimum temp setpoint + +Assertions Description +------------------------------------------------------------------------------- + * When m_hw > 0, T_hw <= T_hw_max_set and T_hw >= T_hw_min_set; When m_hw < 0, always pass + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/HeatPumpSupplementalHeatLockout.rst b/docs/source/HeatPumpSupplementalHeatLockout.rst new file mode 100644 index 00000000..e2d6dc64 --- /dev/null +++ b/docs/source/HeatPumpSupplementalHeatLockout.rst @@ -0,0 +1,32 @@ +HeatPumpSupplementalHeatLockout +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Supplemental heating coil should be off when the heat pump can meet the load by itself + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.5 Heat Pump Auxiliary Heat Control and 6.3.2.h Criteria in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * C_ref: Heating Coil Reference Capacity + * L_op: Heating Coil Runtime Fraction + * C_t_mod: Heating Coil Heating Rate + * P_supp_ht: Heating Coil Gas Rate + * C_ff_mod: Heating Capacity Function of Flow Fraction Curve + * L_defrost: Defrost load on the heating coil + +Assertions Description +------------------------------------------------------------------------------- + * If C_ref * C_t_mod >= L_op and P_supp_ht == 0 then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/HeatRejectionFanVariableFlowControl.rst b/docs/source/HeatRejectionFanVariableFlowControl.rst new file mode 100644 index 00000000..5d6efad8 --- /dev/null +++ b/docs/source/HeatRejectionFanVariableFlowControl.rst @@ -0,0 +1,30 @@ +HeatRejectionFanVariableFlowControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +The cooling tower fan power is 30% of the design value at 50% flow + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.5.2.1 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * ct_P_fan: Cooling Tower Fan Power + * ct_P_fan_dsgn: Cooling Tower Design Fan Power + * ct_m_fan_ratio: Cooling Tower Air Flow Rate Ratio + * ct_m_fan_dsgn: Cooling Tower Design Air Flow + +Assertions Description +------------------------------------------------------------------------------- + * 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 + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/HeatRejectionFanVariableFlowControlsCells.rst b/docs/source/HeatRejectionFanVariableFlowControlsCells.rst new file mode 100644 index 00000000..a96a5636 --- /dev/null +++ b/docs/source/HeatRejectionFanVariableFlowControlsCells.rst @@ -0,0 +1,32 @@ +HeatRejectionFanVariableFlowControlsCells +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Heat rejection fan variable flow controls cells + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.5.2.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * ct_op_cells: Number of operating cooling tower cells + * ct_cells: Number of cooling tower cells + * ct_m: Cooling tower mass flow rate + * ct_m_des: Cooling tower design mass flow rate + * min_flow_frac_per_cell: Minimum flow fraction per cooling tower cell + * ct_P_fan: Cooling tower fan power + +Assertions Description +------------------------------------------------------------------------------- + * if the number of operating cooling tower cells is equal to the maximum number of cooling tower cells then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/IntegratedEconomizerControl.rst b/docs/source/IntegratedEconomizerControl.rst new file mode 100644 index 00000000..1d8995ea --- /dev/null +++ b/docs/source/IntegratedEconomizerControl.rst @@ -0,0 +1,33 @@ +IntegratedEconomizerControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Economizer shall be integrated with mechanical cooling + +Detailed Description +------------------------------------------------------------------------------- +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) + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.1.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * oa_min_flow: OA minimum airflow setpoint + * oa_flow: OA airflow + * ccoil_out: Cooling coil transfer + +Assertions Description +------------------------------------------------------------------------------- + * ((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Fail + diff --git a/docs/source/InteriorLightingControlAutomaticFullOff.rst b/docs/source/InteriorLightingControlAutomaticFullOff.rst new file mode 100644 index 00000000..a3c4e175 --- /dev/null +++ b/docs/source/InteriorLightingControlAutomaticFullOff.rst @@ -0,0 +1,26 @@ +InteriorLightingControlAutomaticFullOff +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Interior lighting control automatic full off + +Datapoints Description +------------------------------------------------------------------------------- + * o: Number of occupants + * total_lighting_power: Reported total lighting power (not the design total lighting power) + * lighted_floor_area: Area lit by the device/system considered + * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space + +Assertions Description +------------------------------------------------------------------------------- + * The algorithm verifies that the device/system doesn't serves more than 5,000 ft2 and that if it doesn't, if occupants are not present for at least 20 minutes, the lighting power of the device/system should be less or equal to 0.02 W/ft2, otherwise, the verification fails. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopSaturationDirectActingMax.rst b/docs/source/LocalLoopSaturationDirectActingMax.rst new file mode 100644 index 00000000..ded8c272 --- /dev/null +++ b/docs/source/LocalLoopSaturationDirectActingMax.rst @@ -0,0 +1,26 @@ +LocalLoopSaturationDirectActingMax +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - direct acting loop actuator maximum saturation + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + * cmd: control command + * cmd_max: control command range maximum value + +Assertions Description +------------------------------------------------------------------------------- + * If the sensed data values are consistently above its set point, and after a default of 1 hour, the control command is still not saturated to maximum, then the verification fails; Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopSaturationDirectActingMin.rst b/docs/source/LocalLoopSaturationDirectActingMin.rst new file mode 100644 index 00000000..63241493 --- /dev/null +++ b/docs/source/LocalLoopSaturationDirectActingMin.rst @@ -0,0 +1,26 @@ +LocalLoopSaturationDirectActingMin +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - direct acting loop actuator minimum saturation + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + * cmd: control command + * cmd_min: control command range minimum value + +Assertions Description +------------------------------------------------------------------------------- + * If the sensed data values are consistently below its set point, and after a default of 1 hour, the control command is still not saturated to minimum, then the verification fails; Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopSaturationReverseActingMax.rst b/docs/source/LocalLoopSaturationReverseActingMax.rst new file mode 100644 index 00000000..ec9ae9e7 --- /dev/null +++ b/docs/source/LocalLoopSaturationReverseActingMax.rst @@ -0,0 +1,26 @@ +LocalLoopSaturationReverseActingMax +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - reverse acting loop actuator maximum saturation + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + * cmd: control command + * cmd_max: control command range maximum value + +Assertions Description +------------------------------------------------------------------------------- + * If the sensed data values are consistently below its set point, and after a default of 1 hour, the control command is still not saturated to maximum, then the verification fails; Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopSaturationReverseActingMin.rst b/docs/source/LocalLoopSaturationReverseActingMin.rst new file mode 100644 index 00000000..6aaff293 --- /dev/null +++ b/docs/source/LocalLoopSaturationReverseActingMin.rst @@ -0,0 +1,26 @@ +LocalLoopSaturationReverseActingMin +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - reverse acting loop actuator minimum saturation + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + * cmd: control command + * cmd_min: control command range minimum value + +Assertions Description +------------------------------------------------------------------------------- + * If the sensed data values are consistently above its set point, and after a default of 1 hour, the control command is still not saturated to minimum, then the verification fails; Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopSetPointTracking.rst b/docs/source/LocalLoopSetPointTracking.rst new file mode 100644 index 00000000..97785fa9 --- /dev/null +++ b/docs/source/LocalLoopSetPointTracking.rst @@ -0,0 +1,24 @@ +LocalLoopSetPointTracking +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - set point tracking + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + +Assertions Description +------------------------------------------------------------------------------- + * With a threshold of 5% of abs(set_point) (if the set point is 0, then the threshold is default to be 0.01), if the number of samples of which the error is larger than this threshold is beyond 5% of number of all samples, then this verification fails; Otherwise, it passes. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/LocalLoopUnmetHours.rst b/docs/source/LocalLoopUnmetHours.rst new file mode 100644 index 00000000..d661c29b --- /dev/null +++ b/docs/source/LocalLoopUnmetHours.rst @@ -0,0 +1,24 @@ +LocalLoopUnmetHours +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Local loop performance verification - set point unmet hours + +Datapoints Description +------------------------------------------------------------------------------- + * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point + * set_point: set point value + +Assertions Description +------------------------------------------------------------------------------- + * Instead of checking the number of samples among the whole data set for which the set points are not met, this verification checks the total accumulated time that the set points are not met within a threshold of 5% of abs(set_point) (if the set point is 0, then the threshold is default to be 0.01). + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst b/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst new file mode 100644 index 00000000..6d655710 --- /dev/null +++ b/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst @@ -0,0 +1,25 @@ +MZSystemOccupiedStandbyVentilationZoneControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Multizone system zone standby model ventilation control + +Datapoints Description +------------------------------------------------------------------------------- + * zone_is_standby_mode: Flag indicating that the zone targeted by the verification is in occupied standby mode + * m_oa_requested_by_system: System outdoor air setpoint + * m_oa_zone_requirement: Outdoor air required by the targeted zone + +Assertions Description +------------------------------------------------------------------------------- + * If the targted zone is in standby mode and if the difference between the outdoor air setpoint and the last reported outdoor air setpoint when the zone was not in standby mode is greater than the outdoor air required for the zone the verification passes, it otherwise fails. + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/NightCycleOperation.rst b/docs/source/NightCycleOperation.rst new file mode 100644 index 00000000..3f07ead5 --- /dev/null +++ b/docs/source/NightCycleOperation.rst @@ -0,0 +1,31 @@ +NightCycleOperation +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Tspr tool software development + +Index Description +------------------------------------------------------------------------------- + * None + +Datapoints Description +------------------------------------------------------------------------------- + * T_zone: Zone Air Temperature + * HVAC_operation_sch: HVAC Operation Schedule + * T_heat_set: Zone Thermostat Heating Setpoint Temperature + * T_cool_set: Zone Thermostat Cooling Setpoint Temperature + * Fan_elec_rate: Fan Electricity Rate + +Assertions Description +------------------------------------------------------------------------------- + * 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 + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ServiceWaterHeatingSystemControl.rst b/docs/source/ServiceWaterHeatingSystemControl.rst new file mode 100644 index 00000000..4c6de6ae --- /dev/null +++ b/docs/source/ServiceWaterHeatingSystemControl.rst @@ -0,0 +1,27 @@ +ServiceWaterHeatingSystemControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Service water heating system control + +Index Description +------------------------------------------------------------------------------- + * Section 7.4.4.3 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_wh_inlet: Water temperature on demand side from the water heater + +Assertions Description +------------------------------------------------------------------------------- + * if maximum(T_wh_inlet) < 43.33 °C Then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/SupplyAirTempReset.rst b/docs/source/SupplyAirTempReset.rst new file mode 100644 index 00000000..257b1e62 --- /dev/null +++ b/docs/source/SupplyAirTempReset.rst @@ -0,0 +1,32 @@ +SupplyAirTempReset +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Cooling supply air temperature reset scale (25%) + +Detailed Description +------------------------------------------------------------------------------- +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. + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.3.5 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_sa_set: AHU supply air temperature setpoint + * T_z_coo: Design zone cooling air temperature + +Assertions Description +------------------------------------------------------------------------------- + * Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25 + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/VAVStaticPressureSensorLocation.rst b/docs/source/VAVStaticPressureSensorLocation.rst new file mode 100644 index 00000000..a302e73c --- /dev/null +++ b/docs/source/VAVStaticPressureSensorLocation.rst @@ -0,0 +1,28 @@ +VAVStaticPressureSensorLocation +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Vav static pressure sensor location requirement + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.3.2.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * p_fan_set: Static pressure setpoint + * tol_P_fan: Tolerance for VAV box static pressure sensor + +Assertions Description +------------------------------------------------------------------------------- + * if static pressure setpoint is no greater than 1.2 in of water (298.608 Pa) then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/VentilationFanControl.rst b/docs/source/VentilationFanControl.rst new file mode 100644 index 00000000..e2ec5d2c --- /dev/null +++ b/docs/source/VentilationFanControl.rst @@ -0,0 +1,29 @@ +VentilationFanControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Ventilation fan control + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.4.4 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * no_of_occ: People Occupant Count + * Q_load: Zone Predicted Sensible Load to Setpoint Heat Transfer Rate + * P_fan: Fan Electric Power + +Assertions Description +------------------------------------------------------------------------------- + * if Q_load = 0 and no_of_occ = 0 and P_fan != 0 then fail else pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/Verifications.rst b/docs/source/Verifications.rst new file mode 100644 index 00000000..cf8d0dfd --- /dev/null +++ b/docs/source/Verifications.rst @@ -0,0 +1,75 @@ +Verifications +=============== + +Listed below are all the verification currently implemented in ConStrain. + +.. toctree:: + :maxdepth: 1 + + SupplyAirTempReset + EconomizerHighLimitA + EconomizerHighLimitB + EconomizerHighLimitC + EconomizerHighLimitD + IntegratedEconomizerControl + ERVRatio + ZoneTempControl + HWReset + CHWReset + ZoneHeatSetpointMinimum + ZoneCoolingSetpointMaximum + ZoneHeatingResetDepth + ZoneCoolingResetDepth + NightCycleOperation + ERVTemperatureControl + AutomaticOADamperControl + FanStaticPressureResetControl + HeatRejectionFanVariableFlowControlsCells + ServiceWaterHeatingSystemControl + VAVStaticPressureSensorLocation + VentilationFanControl + WLHPLoopHeatRejectionControl + AutomaticShutdown + HeatPumpSupplementalHeatLockout + HeatRejectionFanVariableFlowControl + DemandControlVentilation + GuestRoomControlTemp + GuestRoomControlVent + G36SupplyAirTemperatureSetpoint + G36SimultaneousHeatingCooling + G36ReturnAirDamperPositionForReliefDamperOrFan + G36OutdoorAirDamperPositionForReliefDamperOrFan + G36ReturnAirDamperPositionForReturnFanAirflowTracking + G36OutdoorAirDamperPositionForReturnFanAirflowTracking + G36ReliefAirDamperPositionForReturnFanAirflowTracking + G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure + G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure + G36FreezeProtectionStage1 + G36FreezeProtectionStage2 + G36FreezeProtectionStage3 + G36MinOAwEconomizer + G36MinOAwoEconomizer + G36OutputChangeRateLimit + G36ReliefDamperStatus + G36SupplyFanStatus + LocalLoopSetPointTracking + LocalLoopUnmetHours + LocalLoopSaturationDirectActingMax + LocalLoopSaturationDirectActingMin + LocalLoopSaturationReverseActingMax + LocalLoopSaturationReverseActingMin + MZSystemOccupiedStandbyVentilationZoneControl + AppendixGHVACSystemFanOperation + InteriorLightingControlAutomaticFullOff + ExteriorLightingControlDaylightOff + ExteriorLightingControlOccupancySensingReduction + G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint + G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint + G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint + G36TerminalBoxVAVDamperTracking + G36TerminalBoxCoolingMinimumAirflow + G36ReheatTerminalBoxCoolingAirflowSetpoint + G36ReheatTerminalBoxDeadbandAirflowSetpoint + G36ReheatTerminalBoxHeatingAirflowSetpoint + G36ReheatTerminalBoxHeatingCoilTracking + G36ReheatTerminalBoxHeatingCoilLowerBound diff --git a/docs/source/WLHPLoopHeatRejectionControl.rst b/docs/source/WLHPLoopHeatRejectionControl.rst new file mode 100644 index 00000000..93db702b --- /dev/null +++ b/docs/source/WLHPLoopHeatRejectionControl.rst @@ -0,0 +1,30 @@ +WLHPLoopHeatRejectionControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Water-loop heat pump heat rejection control + +Index Description +------------------------------------------------------------------------------- + * Section 6.5.2.2.3 (a) in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_max_heating_loop: maximum temperature of heating loop + * T_min_cooling_loop: minimum temperature of cooling loop + * m_pump: Pump Mass Flow Rate + * tol: Tolerance for water-loop temperature difference + +Assertions Description +------------------------------------------------------------------------------- + * If the temperature difference between the maximum heating loop and minimum heating loop when the pump runs is greater than 11.11 °C, then pass else fail + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ZoneCoolingResetDepth.rst b/docs/source/ZoneCoolingResetDepth.rst new file mode 100644 index 00000000..3e25551c --- /dev/null +++ b/docs/source/ZoneCoolingResetDepth.rst @@ -0,0 +1,27 @@ +ZoneCoolingResetDepth +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +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 5f above the occupied cooling set point or to prevent high space humidity levels. (case study) + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.3.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_cool_set: Zone Thermostat Cooling Setpoint Temperature + +Assertions Description +------------------------------------------------------------------------------- + * if max(T_cool_set) - min(T_cool_set) >= 5F, then pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ZoneCoolingSetpointMaximum.rst b/docs/source/ZoneCoolingSetpointMaximum.rst new file mode 100644 index 00000000..39521c99 --- /dev/null +++ b/docs/source/ZoneCoolingSetpointMaximum.rst @@ -0,0 +1,27 @@ +ZoneCoolingSetpointMaximum +==================================================================== + +Brief Description +------------------------------------------------------------------------------- + cooling systems located in climate zones 1b, 2b, and 3b shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures below a cooling setpoint adjustable up to 90f or higher or to prevent high space humidity levels. (case study) + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.2.2 in 90.1-2004 + +Datapoints Description +------------------------------------------------------------------------------- + * T_cool_set: Zone Thermostat Cooling Setpoint Temperature + +Assertions Description +------------------------------------------------------------------------------- + * if max(T_cool_set) >= 90F, then pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ZoneHeatSetpointMinimum.rst b/docs/source/ZoneHeatSetpointMinimum.rst new file mode 100644 index 00000000..e801ba01 --- /dev/null +++ b/docs/source/ZoneHeatSetpointMinimum.rst @@ -0,0 +1,31 @@ +ZoneHeatSetpointMinimum +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Zone heating setpoint reset temperature minimum value check + +Detailed Description +------------------------------------------------------------------------------- +Heating systems located in climate zones 2-8 shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures above a heating setpoint adjustable down to 55f or lower. (case study) + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.2.2 in 90.1-2004 + +Datapoints Description +------------------------------------------------------------------------------- + * T_heat_set: Zone Thermostat Heating Setpoint Temperature + +Assertions Description +------------------------------------------------------------------------------- + * if min(T_heat_set) <= 55°F, then pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ZoneHeatingResetDepth.rst b/docs/source/ZoneHeatingResetDepth.rst new file mode 100644 index 00000000..7aed5195 --- /dev/null +++ b/docs/source/ZoneHeatingResetDepth.rst @@ -0,0 +1,27 @@ +ZoneHeatingResetDepth +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +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 10f below (will be 60f) the occupied heating set point. (case study) + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.3.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_heat_set: Zone Thermostat Heating Setpoint Temperature + +Assertions Description +------------------------------------------------------------------------------- + * if max(T_heat_set) - min(T_heat_set) >= 10F, then pass + +Type Verification Description +------------------------------------------------------------------------------- +Procedure-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/ZoneTempControl.rst b/docs/source/ZoneTempControl.rst new file mode 100644 index 00000000..6f79bafb --- /dev/null +++ b/docs/source/ZoneTempControl.rst @@ -0,0 +1,32 @@ +ZoneTempControl +==================================================================== + +Brief Description +------------------------------------------------------------------------------- +Zone temperature setpoint deadband >= 5f (2.77c) + +Detailed Description +------------------------------------------------------------------------------- +Where used to control both heating and cooling, zone thermostatic controls shall be capable of and configured to provide a temperature range or dead band of at least 5f within which the supply of heating and cooling energy to the zone is shut off or reduced to a minimum. (case study for zone temperature reset, not for this one) + +Index Description +------------------------------------------------------------------------------- + * Section 6.4.3.1.2 in 90.1-2016 + +Datapoints Description +------------------------------------------------------------------------------- + * T_set_cool: Zone cooling temperature setpoint + * T_set_heat: Zone heating temperature setpoint + +Assertions Description +------------------------------------------------------------------------------- + * T_set_cool - T_set_heat > 5F (2.77C) + +Type Verification Description +------------------------------------------------------------------------------- +Rule-based + +Assertions Type +------------------------------------------------------------------------------- +Pass + diff --git a/docs/source/conf.py b/docs/source/conf.py index 4afd7dc5..1a6abc1b 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -17,6 +17,10 @@ sys.path.insert(0, os.path.abspath("../../constrain")) import api +sys.path.append(os.getcwd()) +import generate_verification_docs + +generate_verification_docs.generate_verification_docs() # -- Project information ----------------------------------------------------- diff --git a/docs/source/generate_verification_docs.py b/docs/source/generate_verification_docs.py new file mode 100644 index 00000000..0bce8360 --- /dev/null +++ b/docs/source/generate_verification_docs.py @@ -0,0 +1,59 @@ +""" +This scripts auto-generate the documentationfor verifications included in the library +""" + +import json + +LIBRARY_PATH = "../../schema/library.json" + + +def upper_case_all_words(words): + upper_case_words = [] + for word in words: + upper_case_words.append(f"{word[0].upper()}{word[1:]}") + return upper_case_words + + +def generate_verification_docs(): + lib = json.load(open(LIBRARY_PATH, "r")) + main_doc_page = open("./Verifications.rst", "w") + main_doc_page.write("Verifications\n===============\n\n") + main_doc_page.write( + "Listed below are all the verification currently implemented in ConStrain.\n\n" + ) + main_doc_page.write(".. toctree::\n") + main_doc_page.write(" :maxdepth: 1\n\n") + for verification, verification_info in lib.items(): + main_doc_page.write(f" {verification}\n") + verification_documentation = open(f"./{verification}.rst", "w") + verification_documentation.write(f"{verification}\n") + verification_documentation.write( + "====================================================================\n\n" + ) + for k in verification_info.keys(): + # skip IDs + if "id" not in k: + subtitle_words = k.split("_") + # inverse description + if "description" in subtitle_words: + subtitle_words.reverse() + verification_documentation.write( + f"{' '.join(upper_case_all_words(subtitle_words))}\n" + ) + verification_documentation.write( + "-------------------------------------------------------------------------------\n" + ) + content = verification_info[k] + if isinstance(content, list): + for i in range(len(content)): + verification_documentation.write(f" * {content[i]}\n\n") + elif isinstance(content, dict): + for k, v in content.items(): + verification_documentation.write(f" * {k}: {content[k]}\n") + verification_documentation.write("\n") + else: + verification_documentation.write(f"{content.capitalize()}\n\n") + + +if __name__ == "__main__": + generate_verification_docs() diff --git a/docs/source/index.rst b/docs/source/index.rst index ee9c5272..833977b2 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -12,6 +12,7 @@ Applications of **ConStrain** include verifications of the implementation of con Statement of Need Quickstart Guide + Verifications Code Documentation Contributing License diff --git a/schema/library.json b/schema/library.json index 6496359f..cc8af507 100644 --- a/schema/library.json +++ b/schema/library.json @@ -2,7 +2,7 @@ "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_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.", "description_index": [ "Section 6.5.3.5 in 90.1-2016" ], @@ -19,7 +19,7 @@ "EconomizerHighLimitA": { "library_item_id": 2, "description_brief": "Fixed dry bulb economizer high limit", - "description_detail": "Economizer needs to be OFF when High-Limit Condition was satisfied. Y_e_HL =f($Climate Zone, $Toa, $Tra, $hoa, $hra)", + "description_detailed": "Economizer needs to be OFF when High-Limit Condition was satisfied. Y_e_HL =f($Climate Zone, $Toa, $Tra, $hoa, $hra)", "description_index": [ "Table 6.5.1.1.3 in 90.1-2016" ], @@ -38,7 +38,7 @@ "EconomizerHighLimitB": { "library_item_id": 3, "description_brief": "Differential dry bulb economizer high limit", - "description_detail": "Check the 90.1-2016 table", + "description_detailed": "Check the 90.1-2016 table", "description_index": [ "Table 6.5.1.1.3 in 90.1-2016" ], @@ -57,7 +57,7 @@ "EconomizerHighLimitC": { "library_item_id": 4, "description_brief": "Fixed enthalpy + fixed dry bulb economizer high limit", - "description_detail": "N/A", + "description_detailed": "N/A", "description_index": [ "Table 6.5.1.1.3 in 90.1-2016" ], @@ -78,7 +78,7 @@ "EconomizerHighLimitD": { "library_item_id": 5, "description_brief": "Differential enthalpy + fixed dry bulb economizer high limit (case study)", - "description_detail": "N/A", + "description_detailed": "N/A", "description_index": [ "Table 6.5.1.1.3 in 90.1-2016" ], @@ -99,7 +99,7 @@ "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_detailed": "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" ], @@ -117,7 +117,7 @@ "ERVRatio": { "library_item_id": 7, "description_brief": "ERV ratio of at least 50%", - "description_detail": "Energy recovery systems required by this section shall result in an enthalpy recovery ratio of at least 50%. A 50% enthalpy recovery ratio shall mean a change in the enthalpy of the outdoor air supply equal to 50% of the difference between the outdoor air and entering exhaust air enthalpies at design conditions.", + "description_detailed": "Energy recovery systems required by this section shall result in an enthalpy recovery ratio of at least 50%. A 50% enthalpy recovery ratio shall mean a change in the enthalpy of the outdoor air supply equal to 50% of the difference between the outdoor air and entering exhaust air enthalpies at design conditions.", "description_index": [ "Section 6.5.6.1 in 90.1-2016" ], @@ -135,7 +135,7 @@ "ZoneTempControl": { "library_item_id": 8, "description_brief": "Zone temperature setpoint deadband >= 5F (2.77C)", - "description_detail": "Where used to control both heating and cooling, zone thermostatic controls shall be capable of and configured to provide a temperature range or dead band of at least 5°F within which the supply of heating and cooling energy to the zone is shut off or reduced to a minimum. (case study for zone temperature reset, not for this one)", + "description_detailed": "Where used to control both heating and cooling, zone thermostatic controls shall be capable of and configured to provide a temperature range or dead band of at least 5°F within which the supply of heating and cooling energy to the zone is shut off or reduced to a minimum. (case study for zone temperature reset, not for this one)", "description_index": [ "Section 6.4.3.1.2 in 90.1-2016" ], @@ -152,7 +152,7 @@ "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_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)", "description_index": [ "Section 6.5.4.4 in 90.1-2016" ], @@ -174,7 +174,7 @@ "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_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)", "description_index": [ "Section 6.5.4.4 in 90.1-2016" ], @@ -196,7 +196,7 @@ "ZoneHeatSetpointMinimum": { "library_item_id": 11, "description_brief": "Zone heating setpoint reset temperature minimum value check", - "description_detail": "Heating systems located in climate zones 2-8 shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures above a heating setpoint adjustable down to 55°F or lower. (case study)", + "description_detailed": "Heating systems located in climate zones 2-8 shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures above a heating setpoint adjustable down to 55°F or lower. (case study)", "description_index": [ "Section 6.4.3.2.2 in 90.1-2004" ], @@ -537,7 +537,7 @@ "G36SupplyAirTemperatureSetpoint": { "library_item_id": 30, "description_brief": "Supply air temperature operation following the Guideline 36 recommendations", - "description_detail": "Verify that the supply air temperature setpoint of a system follows the Guideline 36 recommendations", + "description_detailed": "Verify that the supply air temperature setpoint of a system follows the Guideline 36 recommendations", "description_index": [ "Section 5.16.2.2 in ASHRAE Guideline 36-2021" ], @@ -605,7 +605,7 @@ "G36ReturnAirDamperPositionForReliefDamperOrFan": { "library_item_id": 32, "description_brief": "Verify that the return air damper operation follows Guideline 36 recommendations for systems with relief damper/fan", - "description_detail": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -649,7 +649,7 @@ "G36OutdoorAirDamperPositionForReliefDamperOrFan": { "library_item_id": 33, "description_brief": "Verify that the outdoor air damper operation follows Guideline 36 recommendations for systems with relief damper/fan", - "description_detail": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -706,7 +706,7 @@ "G36ReturnAirDamperPositionForReturnFanAirflowTracking": { "library_item_id": 34, "description_brief": "Verify that the return air damper operation follows Guideline 36 recommendations for systems with return fan with airflow tracking", - "description_detail": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -724,7 +724,7 @@ "G36OutdoorAirDamperPositionForReturnFanAirflowTracking": { "library_item_id": 35, "description_brief": "Verify that the outdoor air damper operation follows Guideline 36 recommendations for systems with return fan with airflow tracking", - "description_detail": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -746,7 +746,7 @@ "G36ReliefAirDamperPositionForReturnFanAirflowTracking": { "library_item_id": 36, "description_brief": "Verify that the outdoor air damper operation follows Guideline 36 recommendations for systems with return fan with airflow tracking", - "description_detail": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -783,7 +783,7 @@ "G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure": { "library_item_id": 37, "description_brief": "Verify that the return air damper operation follows Guideline 36 recommendations for systems with return fan with direct building pressure control", - "description_detail": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the return air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], @@ -819,7 +819,7 @@ "G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure": { "library_item_id": 38, "description_brief": "Verify that the outdoor air damper operation follows Guideline 36 recommendations for systems with return fan with direct building pressure control", - "description_detail": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", + "description_detailed": "Verify that the outdoor air damper operation follows the Guideline 36 recommendations for supply air temperature setpoint operations", "description_index": [ "Section 5.16.2.3 in ASHRAE Guideline 36-2021" ], 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 ec660626..b87aa3cc 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_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.\",\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_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.\",\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_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)\",\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_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)\",\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 \"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 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 990adac5..b188aa9e 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_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.\",\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_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.\",\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_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)\",\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_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)\",\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 \"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 diff --git a/tests/api/test_verification_library.py b/tests/api/test_verification_library.py index fe24e725..54c4e7bd 100644 --- a/tests/api/test_verification_library.py +++ b/tests/api/test_verification_library.py @@ -65,7 +65,7 @@ def test_validate_library(self): [ "library_item_id", "description_brief", - "description_detail", + "description_detailed", "description_index", "description_datapoints", "description_assertions", From 9d3d4398ed97fac15ead3ee85c6f48e258e151d0 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Mon, 13 May 2024 09:53:57 -0700 Subject: [PATCH 6/9] Expand quick start guide to include more guidance. --- .gitignore | 9 +++ .../source/Expand Exisiting Verifications.rst | 4 ++ docs/source/Quickstart Guide.rst | 66 ++++++++++++++++++- docs/source/index.rst | 1 + 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 docs/source/Expand Exisiting Verifications.rst diff --git a/.gitignore b/.gitignore index 204a3074..be323709 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,12 @@ temp test_cases/verif_mtd_pp/idfs/ *.sbatch dist/ +*.html +*.js +.buildinfo +.nojekyll +*.inv +docs/_modules +docs/_sources +docs/_static +docs/.doctrees diff --git a/docs/source/Expand Exisiting Verifications.rst b/docs/source/Expand Exisiting Verifications.rst new file mode 100644 index 00000000..2a52e427 --- /dev/null +++ b/docs/source/Expand Exisiting Verifications.rst @@ -0,0 +1,4 @@ +Expand Exisiting Verifications +=============================== + +1. \ No newline at end of file diff --git a/docs/source/Quickstart Guide.rst b/docs/source/Quickstart Guide.rst index 0af1de00..bad5fdc8 100644 --- a/docs/source/Quickstart Guide.rst +++ b/docs/source/Quickstart Guide.rst @@ -18,7 +18,66 @@ Installing **ConStrain** pip install constrain -Using **ConStrain** as a library +Running Verifications using **ConStrain** +------------------------------------------------------ + +**ConStrain** can + 1. Identify if the desired verification is already part of the default library. **ConStrain**'s default verifications are documented :doc:`here <../Verifications>`. + 2. Create a JSON file that contains all the information needed by ConStrain to run the verification as detailed below or as defined on this schema (TBD). + 3. Run the verification either using **ConStrain** as a :ref:`library ` or using a **ConStrain** :ref:`workflow `. + +.. sourcecode:: JSON + + { + "cases": [ + { + "no": 1, + "run_simulation": false, + "simulation_IO": { + "idf": "modelica_dataset_set", + "idd": "./resources/Energy+V9_0_1.idd", + "weather": "./weather/USA_GA_Atlanta-Hartsfield.Jackson.Intl.AP.722190_TMY3.epw", + "output": "./demo/G36_demo/data/G36_Modelica_Jan.csv", + "ep_path": "C:\\EnergyPlusV9-0-1\\energyplus.exe" + }, + "expected_result": "pass", + "datapoints_source": { + "dev_settings": { + "heating_output": "heating_output", + "cooling_output": "cooling_output", + "ra_p": "ra_p", + "max_ra_p": "max_ra_p", + "oa_p": "oa_p", + "max_oa_p": "max_oa_p" + }, + "parameters": { + "ra_p_tol": 0.01, + "oa_p_tol": 0.01 + } + }, + "verification_class": "G36ReturnAirDamperPositionForReliefDamperOrFan" + } + ] + } + +- :json:`"no"`: 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:`"expected_result"`: Expected result from the verification +- :json:`"verification_class"`: Name of the verification to carry out +- :json:`"datapoints_source"`: Dictionary that contains information on the data points used for the verification; They can be of a 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 + +.. sourcecode:: JSON + "idf_output_variables": { + "T_sa_set": { + "subject": "VAV_1 Supply Equipment Outlet Node", + "variable": "System Node Setpoint Temperature", + "frequency": "detailed" + } + } + +.. _library: +Using **ConStrain** as a Python Library --------------------------------- First, let's import the package. @@ -80,7 +139,8 @@ Finally, we can create summary report. A summary report for all verification wil reporting.report_multiple_cases() -Using **ConStrain** workflows +.. _workflow: +Using **ConStrain**'s' Workflows ------------------------------ A workflow is a group of instructions that define an end-to-end verification, from data parsing and manipulation to running the verfication(s) and reporting the results. Workflows are defined using the JSON file format so once they have been established they can be re-used easily without making significant modifications. Workflows rely on **ConStrain**'s APIs. @@ -260,7 +320,7 @@ Running a workflow can be done as follows. workflow = cs.Workflow(workflow=workflow_file) workflow.run_workflow(verbose=True) -Using **ConStrain**'s graphical user interface (GUI) +Using **ConStrain**'s Graphical User Interface (GUI) ----------------------------------------------------- Workflow can be pretty complex and difficult to fully visualise from JSON files. **ConStrain** includes a GUI to help user create, edit, and picture workflows. If **ConStrain** has been installed, the GUI can be run by just running :bash:`constrain` in a command prompt or terminal. diff --git a/docs/source/index.rst b/docs/source/index.rst index 833977b2..6984959d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -13,6 +13,7 @@ Applications of **ConStrain** include verifications of the implementation of con Statement of Need Quickstart Guide Verifications + Expand Exisiting Verifications Code Documentation Contributing License From 0e8b817eaebcd3de5fe33ffb1f006e8829908b34 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Mon, 13 May 2024 10:12:36 -0700 Subject: [PATCH 7/9] Fix typos and provide clarifications. --- docs/source/Quickstart Guide.rst | 34 +++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/docs/source/Quickstart Guide.rst b/docs/source/Quickstart Guide.rst index bad5fdc8..88998bd2 100644 --- a/docs/source/Quickstart Guide.rst +++ b/docs/source/Quickstart Guide.rst @@ -21,8 +21,9 @@ Installing **ConStrain** Running Verifications using **ConStrain** ------------------------------------------------------ -**ConStrain** can - 1. Identify if the desired verification is already part of the default library. **ConStrain**'s default verifications are documented :doc:`here <../Verifications>`. +**ConStrain** relies on verification case files to perform verifications. These are JSON files that contain all the necessary information about data points, reference to verification logics, and simulation parameters when applicable. A verification case file can be built as follows: + + 1. Identify if the desired verification is already part of the default library. **ConStrain**'s default verifications are documented :doc:`here <../Verifications>`. If not, consider expanding the default verifications, help is provided :doc:`here <../Expand Exisiting Verifications>`. 2. Create a JSON file that contains all the information needed by ConStrain to run the verification as detailed below or as defined on this schema (TBD). 3. Run the verification either using **ConStrain** as a :ref:`library ` or using a **ConStrain** :ref:`workflow `. @@ -63,11 +64,12 @@ Running Verifications using **ConStrain** - :json:`"no"`: 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:`"expected_result"`: Expected result from the verification -- :json:`"verification_class"`: Name of the verification to carry out -- :json:`"datapoints_source"`: Dictionary that contains information on the data points used for the verification; They can be of a 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 +- :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 .. sourcecode:: JSON + "idf_output_variables": { "T_sa_set": { "subject": "VAV_1 Supply Equipment Outlet Node", @@ -77,8 +79,9 @@ Running Verifications using **ConStrain** } .. _library: + Using **ConStrain** as a Python Library ---------------------------------- +---------------------------------------- First, let's import the package. @@ -86,7 +89,7 @@ First, let's import the package. import constrain as cs -**ConStrain** includes an :python:`Examples` module which contains sample data and examples of verifications. Information about eac example can be obtained by running the following command. A dictionary is returned which shows information about each example. +**ConStrain** includes an :python:`Examples` module which contains sample data and examples of verifications. Information about each example can be obtained by running the following command. A dictionary is returned which shows information about each example. .. sourcecode:: python @@ -140,17 +143,13 @@ Finally, we can create summary report. A summary report for all verification wil reporting.report_multiple_cases() .. _workflow: + Using **ConStrain**'s' Workflows ------------------------------- +---------------------------------- A workflow is a group of instructions that define an end-to-end verification, from data parsing and manipulation to running the verfication(s) and reporting the results. Workflows are defined using the JSON file format so once they have been established they can be re-used easily without making significant modifications. Workflows rely on **ConStrain**'s APIs. -Below is shown a valid workflow. Let's look at its structure. - -- :json:`"workflow_name"`: Name of the workflow -- :json:`"meta"`: Metadata about the workflow -- :json:`"imports"`: Python package import needed to run the workflow -- :json:`"states"`: Sequential steps to follow to perform the verification; :json:`"states"` can either be :json:`"MethodCall"` which represent a method call to one of **ConStrain**'s APIs or a :json:`"Choice"` which can be used to help define alternative steps in a workflow based on the result (referred to as payloads in a workflow). +Below is shown a valid workflow. .. sourcecode:: JSON @@ -310,6 +309,13 @@ Below is shown a valid workflow. Let's look at its structure. } } +Where: + +- :json:`"workflow_name"`: Name of the workflow +- :json:`"meta"`: Metadata about the workflow +- :json:`"imports"`: Python package import needed to run the workflow +- :json:`"states"`: Sequential steps to follow to perform the verification; :json:`"states"` can either be :json:`"MethodCall"` which represent a method call to one of **ConStrain**'s APIs or a :json:`"Choice"` which can be used to help define alternative steps in a workflow based on the result (referred to as payloads in a workflow). + Running a workflow can be done as follows. .. sourcecode:: python From 382e903a4bb2203d8e94f2581aa5de21d140cec5 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Mon, 13 May 2024 10:50:39 -0700 Subject: [PATCH 8/9] Add guidance on how to expand exisiting verifications. --- docs/source/Code Documentation.rst | 5 +++++ .../source/Expand Exisiting Verifications.rst | 21 ++++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/source/Code Documentation.rst b/docs/source/Code Documentation.rst index c13075f6..99de85f2 100644 --- a/docs/source/Code Documentation.rst +++ b/docs/source/Code Documentation.rst @@ -1,6 +1,11 @@ Code Documentation =================== +.. automodule:: checklib + :members: + :inherited-members: + :undoc-members: + :show-inheritance: .. automodule:: api.brick_compliance :members: :inherited-members: diff --git a/docs/source/Expand Exisiting Verifications.rst b/docs/source/Expand Exisiting Verifications.rst index 2a52e427..ac83a2f6 100644 --- a/docs/source/Expand Exisiting Verifications.rst +++ b/docs/source/Expand Exisiting Verifications.rst @@ -1,4 +1,23 @@ Expand Exisiting Verifications =============================== -1. \ No newline at end of file +.. role:: python(code) + :language: python + +1. A new verification logic file should be added to the `contrain/library` folder which already includes several verification logic + - At a minimum (for rule-based verification) the logic should be wrapped into a :python:`verify()` function as shown below where :python:`df` is a :python:`pandas.DataFrame` that contains the data needed for the verification + - For more complicated verifications (e.g., procedure-based) the functions in the :meth:`checklib.CheckLibBase` class can be overloaded + +.. sourcecode:: python + + from constrain.checklib import RuleCheckBase + + + class NewVerificationLogicClassName(RuleCheckBase): + points = ["point_1", "point_2"] + + def verify(self): + self.result = (self.df["point_1"] > self.df["point_2"]) + +2. The new verification class name should be added to the list of class already listed in the `__init__.py` file located in that same directory +3. A library file that includes all the information needed by the verification logic should be created or appended if it already exists \ No newline at end of file From 7e3e2701f027146a58f8306515906208848cfba9 Mon Sep 17 00:00:00 2001 From: "Lerond, Jeremy" Date: Wed, 15 May 2024 15:28:07 -0700 Subject: [PATCH 9/9] Remove autogenerated rst files. --- .../AppendixGHVACSystemFanOperation.rst | 26 ----- docs/source/AutomaticOADamperControl.rst | 31 ------ docs/source/AutomaticShutdown.rst | 27 ----- docs/source/CHWReset.rst | 37 ------- docs/source/DemandControlVentilation.rst | 30 ----- docs/source/ERVRatio.rst | 33 ------ docs/source/ERVTemperatureControl.rst | 37 ------- docs/source/EconomizerHighLimitA.rst | 34 ------ docs/source/EconomizerHighLimitB.rst | 34 ------ docs/source/EconomizerHighLimitC.rst | 36 ------ docs/source/EconomizerHighLimitD.rst | 36 ------ .../ExteriorLightingControlDaylightOff.rst | 26 ----- ...ghtingControlOccupancySensingReduction.rst | 25 ----- docs/source/FanStaticPressureResetControl.rst | 30 ----- ...gOnlyTerminalBoxCoolingAirflowSetpoint.rst | 61 ---------- ...OnlyTerminalBoxDeadbandAirflowSetpoint.rst | 51 --------- ...gOnlyTerminalBoxHeatingAirflowSetpoint.rst | 62 ----------- docs/source/G36FreezeProtectionStage1.rst | 45 -------- docs/source/G36FreezeProtectionStage2.rst | 38 ------- docs/source/G36FreezeProtectionStage3.rst | 72 ------------ docs/source/G36MinOAwEconomizer.rst | 45 -------- docs/source/G36MinOAwoEconomizer.rst | 61 ---------- ...rAirDamperPositionForReliefDamperOrFan.rst | 104 ------------------ ...perPositionForReturnFanAirflowTracking.rst | 41 ------- ...tionForReturnFanDirectBuildingPressure.rst | 41 ------- docs/source/G36OutputChangeRateLimit.rst | 34 ------ ...eheatTerminalBoxCoolingAirflowSetpoint.rst | 71 ------------ ...heatTerminalBoxDeadbandAirflowSetpoint.rst | 59 ---------- ...eheatTerminalBoxHeatingAirflowSetpoint.rst | 88 --------------- ...ReheatTerminalBoxHeatingCoilLowerBound.rst | 43 -------- ...36ReheatTerminalBoxHeatingCoilTracking.rst | 53 --------- ...perPositionForReturnFanAirflowTracking.rst | 68 ------------ docs/source/G36ReliefDamperStatus.rst | 42 ------- ...nAirDamperPositionForReliefDamperOrFan.rst | 83 -------------- ...perPositionForReturnFanAirflowTracking.rst | 32 ------ ...tionForReturnFanDirectBuildingPressure.rst | 67 ----------- docs/source/G36SimultaneousHeatingCooling.rst | 36 ------ .../G36SupplyAirTemperatureSetpoint.rst | 87 --------------- docs/source/G36SupplyFanStatus.rst | 51 --------- .../G36TerminalBoxCoolingMinimumAirflow.rst | 57 ---------- .../G36TerminalBoxVAVDamperTracking.rst | 50 --------- docs/source/GuestRoomControlTemp.rst | 31 ------ docs/source/GuestRoomControlVent.rst | 35 ------ docs/source/HWReset.rst | 37 ------- .../HeatPumpSupplementalHeatLockout.rst | 32 ------ .../HeatRejectionFanVariableFlowControl.rst | 30 ----- ...tRejectionFanVariableFlowControlsCells.rst | 32 ------ docs/source/IntegratedEconomizerControl.rst | 33 ------ ...nteriorLightingControlAutomaticFullOff.rst | 26 ----- .../LocalLoopSaturationDirectActingMax.rst | 26 ----- .../LocalLoopSaturationDirectActingMin.rst | 26 ----- .../LocalLoopSaturationReverseActingMax.rst | 26 ----- .../LocalLoopSaturationReverseActingMin.rst | 26 ----- docs/source/LocalLoopSetPointTracking.rst | 24 ---- docs/source/LocalLoopUnmetHours.rst | 24 ---- ...mOccupiedStandbyVentilationZoneControl.rst | 25 ----- docs/source/NightCycleOperation.rst | 31 ------ .../ServiceWaterHeatingSystemControl.rst | 27 ----- docs/source/SupplyAirTempReset.rst | 32 ------ .../VAVStaticPressureSensorLocation.rst | 28 ----- docs/source/VentilationFanControl.rst | 29 ----- docs/source/Verifications.rst | 75 ------------- docs/source/WLHPLoopHeatRejectionControl.rst | 30 ----- docs/source/ZoneCoolingResetDepth.rst | 27 ----- docs/source/ZoneCoolingSetpointMaximum.rst | 27 ----- docs/source/ZoneHeatSetpointMinimum.rst | 31 ------ docs/source/ZoneHeatingResetDepth.rst | 27 ----- docs/source/ZoneTempControl.rst | 32 ------ 68 files changed, 2813 deletions(-) delete mode 100644 docs/source/AppendixGHVACSystemFanOperation.rst delete mode 100644 docs/source/AutomaticOADamperControl.rst delete mode 100644 docs/source/AutomaticShutdown.rst delete mode 100644 docs/source/CHWReset.rst delete mode 100644 docs/source/DemandControlVentilation.rst delete mode 100644 docs/source/ERVRatio.rst delete mode 100644 docs/source/ERVTemperatureControl.rst delete mode 100644 docs/source/EconomizerHighLimitA.rst delete mode 100644 docs/source/EconomizerHighLimitB.rst delete mode 100644 docs/source/EconomizerHighLimitC.rst delete mode 100644 docs/source/EconomizerHighLimitD.rst delete mode 100644 docs/source/ExteriorLightingControlDaylightOff.rst delete mode 100644 docs/source/ExteriorLightingControlOccupancySensingReduction.rst delete mode 100644 docs/source/FanStaticPressureResetControl.rst delete mode 100644 docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst delete mode 100644 docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst delete mode 100644 docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst delete mode 100644 docs/source/G36FreezeProtectionStage1.rst delete mode 100644 docs/source/G36FreezeProtectionStage2.rst delete mode 100644 docs/source/G36FreezeProtectionStage3.rst delete mode 100644 docs/source/G36MinOAwEconomizer.rst delete mode 100644 docs/source/G36MinOAwoEconomizer.rst delete mode 100644 docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst delete mode 100644 docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst delete mode 100644 docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst delete mode 100644 docs/source/G36OutputChangeRateLimit.rst delete mode 100644 docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst delete mode 100644 docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst delete mode 100644 docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst delete mode 100644 docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst delete mode 100644 docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst delete mode 100644 docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst delete mode 100644 docs/source/G36ReliefDamperStatus.rst delete mode 100644 docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst delete mode 100644 docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst delete mode 100644 docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst delete mode 100644 docs/source/G36SimultaneousHeatingCooling.rst delete mode 100644 docs/source/G36SupplyAirTemperatureSetpoint.rst delete mode 100644 docs/source/G36SupplyFanStatus.rst delete mode 100644 docs/source/G36TerminalBoxCoolingMinimumAirflow.rst delete mode 100644 docs/source/G36TerminalBoxVAVDamperTracking.rst delete mode 100644 docs/source/GuestRoomControlTemp.rst delete mode 100644 docs/source/GuestRoomControlVent.rst delete mode 100644 docs/source/HWReset.rst delete mode 100644 docs/source/HeatPumpSupplementalHeatLockout.rst delete mode 100644 docs/source/HeatRejectionFanVariableFlowControl.rst delete mode 100644 docs/source/HeatRejectionFanVariableFlowControlsCells.rst delete mode 100644 docs/source/IntegratedEconomizerControl.rst delete mode 100644 docs/source/InteriorLightingControlAutomaticFullOff.rst delete mode 100644 docs/source/LocalLoopSaturationDirectActingMax.rst delete mode 100644 docs/source/LocalLoopSaturationDirectActingMin.rst delete mode 100644 docs/source/LocalLoopSaturationReverseActingMax.rst delete mode 100644 docs/source/LocalLoopSaturationReverseActingMin.rst delete mode 100644 docs/source/LocalLoopSetPointTracking.rst delete mode 100644 docs/source/LocalLoopUnmetHours.rst delete mode 100644 docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst delete mode 100644 docs/source/NightCycleOperation.rst delete mode 100644 docs/source/ServiceWaterHeatingSystemControl.rst delete mode 100644 docs/source/SupplyAirTempReset.rst delete mode 100644 docs/source/VAVStaticPressureSensorLocation.rst delete mode 100644 docs/source/VentilationFanControl.rst delete mode 100644 docs/source/Verifications.rst delete mode 100644 docs/source/WLHPLoopHeatRejectionControl.rst delete mode 100644 docs/source/ZoneCoolingResetDepth.rst delete mode 100644 docs/source/ZoneCoolingSetpointMaximum.rst delete mode 100644 docs/source/ZoneHeatSetpointMinimum.rst delete mode 100644 docs/source/ZoneHeatingResetDepth.rst delete mode 100644 docs/source/ZoneTempControl.rst diff --git a/docs/source/AppendixGHVACSystemFanOperation.rst b/docs/source/AppendixGHVACSystemFanOperation.rst deleted file mode 100644 index 6137300b..00000000 --- a/docs/source/AppendixGHVACSystemFanOperation.rst +++ /dev/null @@ -1,26 +0,0 @@ -AppendixGHVACSystemFanOperation -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify hvac system fan operation as per ashrae 90.1 appendix g rules - -Datapoints Description -------------------------------------------------------------------------------- - * o: Number of occupants - * fan_runtime_fraction: Fan runtime fraction (fraction of time the fan ran for the reported period) - * m_oa: System outdoor air flow rate - * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space - -Assertions Description -------------------------------------------------------------------------------- - * If the system never provides outdoor air the verification is untested. The verification fails if the system fan is not continuously running during an occupied period, it passes if it does. The verification fails if the system is always operating continuously during occupied periods, it passes otherwise. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/AutomaticOADamperControl.rst b/docs/source/AutomaticOADamperControl.rst deleted file mode 100644 index 0c753bc6..00000000 --- a/docs/source/AutomaticOADamperControl.rst +++ /dev/null @@ -1,31 +0,0 @@ -AutomaticOADamperControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Hvac system shall be turned on and off everyday - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.4.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * o: Number of occupants - * m_oa: Air terminal outdoor air volume flow rate - * eco_onoff: Air system outdoor air economizer status - * tol_o: Tolerance for the number of occupants - * tol_m_oa: Tolerance for the air terminal air volume flow rate - -Assertions Description -------------------------------------------------------------------------------- - * if no_of_occ <= 0 + tol and m_ea + m_oa > 0 and eco_onoff = 0, then false else pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/AutomaticShutdown.rst b/docs/source/AutomaticShutdown.rst deleted file mode 100644 index 65db9bbf..00000000 --- a/docs/source/AutomaticShutdown.rst +++ /dev/null @@ -1,27 +0,0 @@ -AutomaticShutdown -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Off hour automatic temperature setback and system shutoff - -Index Description -------------------------------------------------------------------------------- - * None - -Datapoints Description -------------------------------------------------------------------------------- - * hvac_set: HVAC Operation Schedule - -Assertions Description -------------------------------------------------------------------------------- - * if minimum start_time != maximum start_time and minimum end_time != maximum end_time then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/CHWReset.rst b/docs/source/CHWReset.rst deleted file mode 100644 index 2bb19926..00000000 --- a/docs/source/CHWReset.rst +++ /dev/null @@ -1,37 +0,0 @@ -CHWReset -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Chilled water supply water temperature reset - -Detailed Description -------------------------------------------------------------------------------- -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) - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.4.4 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * 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_set: Chilled water maximum temp setpoint - * T_chw_min_set: Chilled water minimum temp setpoint - -Assertions Description -------------------------------------------------------------------------------- - * When m_chw > 0, T_chw <= T_chw_max_set and T_chw >= T_chw_min_set; When m_chw <= 0 , always pass - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/DemandControlVentilation.rst b/docs/source/DemandControlVentilation.rst deleted file mode 100644 index a4d82551..00000000 --- a/docs/source/DemandControlVentilation.rst +++ /dev/null @@ -1,30 +0,0 @@ -DemandControlVentilation -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Demand control ventilation verification for high-occupancy areas - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.8 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * v_oa: Zone Air Terminal Outdoor Air Volume Flow Rate - * s_ahu: status of HVAC system operation - * s_eco: Air System Outdoor Air Economizer Status - * no_of_occ: People Occupant Count - -Assertions Description -------------------------------------------------------------------------------- - * i) If v_oa is constant over time, NO DCV presents. ii) If v_oa has two clusters, DCV with hbinary control presents. iii) v_oa is linearly correlated to o_ahu, DCV with occupant-counting based control presents - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ERVRatio.rst b/docs/source/ERVRatio.rst deleted file mode 100644 index 04fc0980..00000000 --- a/docs/source/ERVRatio.rst +++ /dev/null @@ -1,33 +0,0 @@ -ERVRatio -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Erv ratio of at least 50% - -Detailed Description -------------------------------------------------------------------------------- -Energy recovery systems required by this section shall result in an enthalpy recovery ratio of at least 50%. a 50% enthalpy recovery ratio shall mean a change in the enthalpy of the outdoor air supply equal to 50% of the difference between the outdoor air and entering exhaust air enthalpies at design conditions. - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.6.1 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * oa_enth: OA enthalpy - * ret_enth: Return air enthalpy - * oa_enth_ERV: OA enthalpy after ERV - -Assertions Description -------------------------------------------------------------------------------- - * (oa_enth_ERV - oa_enth)/(ret_enth - oa_enth) > = 50% happens at least once in winter design day - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ERVTemperatureControl.rst b/docs/source/ERVTemperatureControl.rst deleted file mode 100644 index ce6f44f5..00000000 --- a/docs/source/ERVTemperatureControl.rst +++ /dev/null @@ -1,37 +0,0 @@ -ERVTemperatureControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Tspr tool software development - -Index Description -------------------------------------------------------------------------------- - * None - -Datapoints Description -------------------------------------------------------------------------------- - * MIN_OA_FLOW: Minimum outdoor air flow rate - * OA_FLOW: Outdoor air flow rate - * NOM_FLOW: Heat exchanger's norminal flow rate - * HX_DSN_EFF_HTG: Heat exchanger heating effectiveness at the nominal air flow rate - * HX_DSN_EFF_HTG_75_PCT: Heat exchanger heating effectiveness at 75% of the nominal air flow rate - * HX_DSN_EFF_CLG: Heat exchanger cooling effectiveness at the nominal air flow rate - * HX_DSN_EFF_CLG_75_PCT: Heat exchanger cooling effectiveness at 75% of the nominal air flow rate - * T_OA: Outdoor air dry-bulb temperature - * T_SO: Supply air temperature - * T_SO_SP: Supply air temperature setpoint - * T_EI: Zone air temperature - -Assertions Description -------------------------------------------------------------------------------- - * Check that the ERV is bypassed during economizer operation; During non-economizer operation, if the outdoor air flow rate, 1) if T_SO > T_SO_SP the ERV is not operating correctly if T_OA < T_EI and the ERV is running, T_OA > T_EI and the ERV is NOT running and the operating sensible efficiency of the ERV is NOT close to the operating design value, 2) if T_SO < T_SO_SP the ERV is NOT running and the operating sensible efficiency of the ERV is NOT close to the operating design value - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/EconomizerHighLimitA.rst b/docs/source/EconomizerHighLimitA.rst deleted file mode 100644 index 81d3f774..00000000 --- a/docs/source/EconomizerHighLimitA.rst +++ /dev/null @@ -1,34 +0,0 @@ -EconomizerHighLimitA -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Fixed dry bulb economizer high limit - -Detailed Description -------------------------------------------------------------------------------- -Economizer needs to be off when high-limit condition was satisfied. y_e_hl =f($climate zone, $toa, $tra, $hoa, $hra) - -Index Description -------------------------------------------------------------------------------- - * Table 6.5.1.1.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_oa_db: OA dry bulb temperature - * oa_threshold: OA dry bulb threshold - * oa_min_flow: OA minimum airflow setpoint - * oa_flow: OA airflow - -Assertions Description -------------------------------------------------------------------------------- - * (oa_flow > oa_min_flow) AND (T_oa_db > oa_threshold) - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Fail - diff --git a/docs/source/EconomizerHighLimitB.rst b/docs/source/EconomizerHighLimitB.rst deleted file mode 100644 index 847ff906..00000000 --- a/docs/source/EconomizerHighLimitB.rst +++ /dev/null @@ -1,34 +0,0 @@ -EconomizerHighLimitB -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Differential dry bulb economizer high limit - -Detailed Description -------------------------------------------------------------------------------- -Check the 90.1-2016 table - -Index Description -------------------------------------------------------------------------------- - * Table 6.5.1.1.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_oa_db: OA dry bulb temperature - * ret_a_temp: Retuan air temperature - * oa_min_flow: OA minimum airflow setpoint - * oa_flow: OA airflow - -Assertions Description -------------------------------------------------------------------------------- - * (oa_flow > oa_min_flow) AND (ret_a_temp < T_oa_db) - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Fail - diff --git a/docs/source/EconomizerHighLimitC.rst b/docs/source/EconomizerHighLimitC.rst deleted file mode 100644 index 3cb06437..00000000 --- a/docs/source/EconomizerHighLimitC.rst +++ /dev/null @@ -1,36 +0,0 @@ -EconomizerHighLimitC -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Fixed enthalpy + fixed dry bulb economizer high limit - -Detailed Description -------------------------------------------------------------------------------- -N/a - -Index Description -------------------------------------------------------------------------------- - * Table 6.5.1.1.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_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 - * oa_enth_threshold: OA enthalpy threshold - -Assertions Description -------------------------------------------------------------------------------- - * (oa_flow > oa_min_flow) AND ((T_oa_db > oa_threshold) OR (oa_enth > oa_enth_threshold)) - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Fail - diff --git a/docs/source/EconomizerHighLimitD.rst b/docs/source/EconomizerHighLimitD.rst deleted file mode 100644 index 023c6afa..00000000 --- a/docs/source/EconomizerHighLimitD.rst +++ /dev/null @@ -1,36 +0,0 @@ -EconomizerHighLimitD -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Differential enthalpy + fixed dry bulb economizer high limit (case study) - -Detailed Description -------------------------------------------------------------------------------- -N/a - -Index Description -------------------------------------------------------------------------------- - * Table 6.5.1.1.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_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 - -Assertions Description -------------------------------------------------------------------------------- - * oa_flow > oa_min_flow) AND ((ret_a_enth < oa_enth) OR (T_oa_db > oa_threshold)) - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Fail - diff --git a/docs/source/ExteriorLightingControlDaylightOff.rst b/docs/source/ExteriorLightingControlDaylightOff.rst deleted file mode 100644 index 0e9104fc..00000000 --- a/docs/source/ExteriorLightingControlDaylightOff.rst +++ /dev/null @@ -1,26 +0,0 @@ -ExteriorLightingControlDaylightOff -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Exterior lighting control occupancy sensing reduction - -Datapoints Description -------------------------------------------------------------------------------- - * is_sun_up: Flag that indicates if the sun has risen - * daylight_sensed: Amount of daylight sensed by a sensor, this should be expressed in the same unit as the setpoint - * daylight_setpoint: Daylight setpoint, or thresholds, used to determine if the exterior lighting system should be turned off - * total_lighting_power: Reported total lighting power (not the design total lighting power) - -Assertions Description -------------------------------------------------------------------------------- - * The algorithm verifies that the exterior lighting is off when the sun has risen, or when there is a sufficient amount of daylight. If the exterior lighting system is not off during these situation, the verification fails, otherwise it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ExteriorLightingControlOccupancySensingReduction.rst b/docs/source/ExteriorLightingControlOccupancySensingReduction.rst deleted file mode 100644 index 9835cafb..00000000 --- a/docs/source/ExteriorLightingControlOccupancySensingReduction.rst +++ /dev/null @@ -1,25 +0,0 @@ -ExteriorLightingControlOccupancySensingReduction -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Exterior lighting control occupancy sensing reduction - -Datapoints Description -------------------------------------------------------------------------------- - * o: Number of occupants - * total_lighting_power: Reported total lighting power (not the design total lighting power) - * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space - -Assertions Description -------------------------------------------------------------------------------- - * The algorithm verifies that the exterior lighting is controlled based on occupancy. It fails if the maximum reported total lighting power is greater than 1500 W and if the total mnaximum lighting power is not reduced by half when occupancy has not been detected for 15 mins. Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/FanStaticPressureResetControl.rst b/docs/source/FanStaticPressureResetControl.rst deleted file mode 100644 index 518c1c52..00000000 --- a/docs/source/FanStaticPressureResetControl.rst +++ /dev/null @@ -1,30 +0,0 @@ -FanStaticPressureResetControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -The set point is reset lower until one zone damper is nearly wide open - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.3.2.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * p_set: Static pressure setpoint - * d_VAV_x: VAV Damper x Position (includes all VAV dampers served by the system under test - * tol: Tolerance for VAV box damper position openings - * p_set_min: : Minimum static pressure setpoint threshold - -Assertions Description -------------------------------------------------------------------------------- - * if d_VAV(n) (n=1,2,...,N) < 0.9 and p_set(t) > p_set(t-1), then fail else pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst deleted file mode 100644 index b0725467..00000000 --- a/docs/source/G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint.rst +++ /dev/null @@ -1,61 +0,0 @@ -G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Cooling only terminal box airflow control when the zone state is cooling following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.5.5.1 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_cool_max: Maximum cooling airflow setpoint - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * switch operation_mode - - * case 'occupied' - - * cooling_maximum = v_cool_max - - * minimum = v_min - - * case 'cooldown', 'setup' - - * cooling_maximum = v_cool_max - - * minimum = 0 - - * case 'warmup', 'setback', 'unoccupied' - - * cooling_maximum = 0 - - * minimum = 0 - - * - - * if minimum <= v_spt <= cooling_maximum - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst deleted file mode 100644 index 1796e49b..00000000 --- a/docs/source/G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint.rst +++ /dev/null @@ -1,51 +0,0 @@ -G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Cooling only terminal box airflow control when the zone state is deadband following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.5.5.2 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - * v_spt_tol: Airflow setpoint tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * switch operation_mode - - * case 'occupied' - - * minimum = v_min - - * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' - - * minimum = 0 - - * - - * if abs(v_spt - minimum) <= v_spt_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst b/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst deleted file mode 100644 index 57632407..00000000 --- a/docs/source/G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint.rst +++ /dev/null @@ -1,62 +0,0 @@ -G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Cooling only terminal box airflow control when the zone state is heating following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.5.5.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_cool_max: Zone maximum cooling airflow setpoint - * v_heat_max: Zone maximum heating airflow setpoint - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * switch operation_mode - - * case 'occupied' - - * heating_maximum = v_heat_max - - * minimum = v_min - - * case 'cooldown', 'setup', 'unoccupied' - - * heating_maximum = 0 - - * minimum = 0 - - * case 'warmup', 'setback' - - * heating_maximum = v_cool_max - - * minimum = 0 - - * - - * if minimum <= v_spt <= heating_maximum - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36FreezeProtectionStage1.rst b/docs/source/G36FreezeProtectionStage1.rst deleted file mode 100644 index 0a75bf30..00000000 --- a/docs/source/G36FreezeProtectionStage1.rst +++ /dev/null @@ -1,45 +0,0 @@ -G36FreezeProtectionStage1 -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 freeze protection stage 1 requirements - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.12.1. in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * supply_air_temp: supply air temperature - * outdoor_damper_command: outdoor air damper - * outdoor_damper_minimum: outdoor air damper minimum position - -Assertions Description -------------------------------------------------------------------------------- - * if supply_air_temp < 4.4 (continuously 5 minutes) and outdoor_damper_command > outdoor_damper_minimum: - - * fail - - * elif outdoor_damper_command > outdoor_damper_minimum and not (supply_air_temp > 7 (continuously 5 minutes)): - - * fail - - * else: - - * pass - - * - - * if never (supply_air_temp < 4.4 (continuously 5 minutes)): - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36FreezeProtectionStage2.rst b/docs/source/G36FreezeProtectionStage2.rst deleted file mode 100644 index b1443ab6..00000000 --- a/docs/source/G36FreezeProtectionStage2.rst +++ /dev/null @@ -1,38 +0,0 @@ -G36FreezeProtectionStage2 -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 freeze protection stage 2 requirements - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.12.2. in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * supply_air_temp: supply air temperature - * outdoor_damper_command: outdoor air damper - -Assertions Description -------------------------------------------------------------------------------- - * if supply_air_temp < 3.3 (continuously 5 minutes) and outdoor_damper_command > 0 (ever in the following hour): - - * fail - - * else: - - * pass - - * if never (supply_air_temp < 3.3 (continuously 5 minutes)): - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36FreezeProtectionStage3.rst b/docs/source/G36FreezeProtectionStage3.rst deleted file mode 100644 index 390b3000..00000000 --- a/docs/source/G36FreezeProtectionStage3.rst +++ /dev/null @@ -1,72 +0,0 @@ -G36FreezeProtectionStage3 -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 freeze protection stage 3 (highest) requirements - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.12.3. in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * freeze_stat: (optional, set to False if system does not have it) binary freeze-stat - * supply_air_temp: supply air temperature - * outdoor_damper_command: outdoor air damper - * supply_fan_status: supply fan status (speed): [1, 0] (can be replaced by binary or numeric variables) - * return_fan_status: (optional, set to False if system does not have it) return fan status (speed) - * relief_fan_status: (optional, set to False if system does not have it) relief fan status (speed) - * cooling_coil_command: cooling coil command - * heating_coil_command: heating coil command - -Assertions Description -------------------------------------------------------------------------------- - * if supply_air_temp < 3.3 (continuously 15 minutes) or - - * supply_air_temp < 1 (continuously 5 minutes) or - - * freeze_stat == True - - * if not ( - - * outdoor_damper_command == 0 and - - * supply_fan_status == 'off' and - - * return_fan_status == 'off' and - - * relief_fan_status == 'off' and - - * cooling_coil_command == 100 and - - * heating_coil_command > 0 - - * ): - - * fail - - * else: - - * pass - - * if never ( - - * supply_air_temp < 3.3 (continuously 15 minutes) or - - * supply_air_temp < 1 (continuously 5 minutes) or - - * freeze_stat == True - - * ): - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36MinOAwEconomizer.rst b/docs/source/G36MinOAwEconomizer.rst deleted file mode 100644 index 8cd2c99e..00000000 --- a/docs/source/G36MinOAwEconomizer.rst +++ /dev/null @@ -1,45 +0,0 @@ -G36MinOAwEconomizer -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 minimum outdoor air control when economizer is active - -Index Description -------------------------------------------------------------------------------- - * Section 5.16 in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * outdoor_air_temp: outdoor air temperature - * economizer_high_limit_sp: economizer lockout high limit set point - * outdoor_damper_command: outdoor air damper command - * min_oa_p: minimum outdoor air damper position set point - * min_oa_sp: minimum outdoor air flow rate setpoint - * outdoor_air_flow: outdoor air flow rate - * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] - -Assertions Description -------------------------------------------------------------------------------- - * if not economizer_lockout(outdoor_air_temp, economizer_high_limit_sp) and sys_mode == 'occupied': - - * if oudoor_damper_command >= MinOA-P and outdoor_air_flow >= MinOAsp: - - * pass - - * else: - - * fail - - * else: - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36MinOAwoEconomizer.rst b/docs/source/G36MinOAwoEconomizer.rst deleted file mode 100644 index 9c2ccf99..00000000 --- a/docs/source/G36MinOAwoEconomizer.rst +++ /dev/null @@ -1,61 +0,0 @@ -G36MinOAwoEconomizer -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 minimum outdoor air control when economizer is in lockout - -Index Description -------------------------------------------------------------------------------- - * Section 5.16 in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * outdoor_air_temp: outdoor air temperature - * economizer_high_limit_sp: economizer lockout high limit set point - * outdoor_damper_command: outdoor air damper command - * return_damper_command: return air damper command - * outdoor_air_flow: outdoor air flow rate - * min_oa_sp: minimum outdoor air flow rate setpoint - * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] - -Assertions Description -------------------------------------------------------------------------------- - * if economizer_lockout(outdoor_air_temp, economizer_high_limit_sp) and sys_mode == 'occupied': - - * if outdoor_air_flow < MinOAsp (continuously (e.g. fall below the sp for a consecutive 1 hr)): - - * if outdoor_damper_command == 100 and return_damper_command == 0: - - * pass - - * else: - - * fail - - * elif outdoor_air_flow > MinOAsp (continuously): - - * if outdoor_damper_command == 0 and return_damper_command == 100: - - * pass - - * else: - - * fail - - * else: - - * pass (essentially untested yet) - - * else: - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst b/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst deleted file mode 100644 index 6a40413b..00000000 --- a/docs/source/G36OutdoorAirDamperPositionForReliefDamperOrFan.rst +++ /dev/null @@ -1,104 +0,0 @@ -G36OutdoorAirDamperPositionForReliefDamperOrFan -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with relief damper/fan - -Detailed Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * heating_output: AHU heating coil output - * cooling_output: AHU cooling coil output - * economizer_high_limit_reached: Economizer high limit flag - * oa_p: Outdoor air damper position - * min_oa_p: Minimum outdoor air damper position - * max_oa_p: Maximum outdoor air damper position - * oa_p_tol: Outdoor air damper position tolerance - * ra_p_tol: Return air damper position tolerance - * ra_p: Return air damper position - * max_ra_p: Maximum return air damper position - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if heating_output > 0 - - * if abs(oa_p - min_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - - * else if cooling_output > 0 - - * if economizer_high_limit_reached - - * if abs(oa_p - min_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - - * else - - * if abs(oa_p - max_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - - * end - - * else if ra_p < max_ra_p - - * if abs(oa_p - max_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - - * else if abs(ra_p - max_ra_p) < ra_p_tol - - * if min_oa_p < oa_p < max_oa_p - - * pass - - * else - - * fail - - * end - - * end - diff --git a/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst deleted file mode 100644 index 848dc3c1..00000000 --- a/docs/source/G36OutdoorAirDamperPositionForReturnFanAirflowTracking.rst +++ /dev/null @@ -1,41 +0,0 @@ -G36OutdoorAirDamperPositionForReturnFanAirflowTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking - -Detailed Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * oa_p: Outdoor air damper position - * max_oa_p: Maximum outdoor air damper position - * oa_p_tol: Outdoor air damper position tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if abs(oa_p - max_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst b/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst deleted file mode 100644 index 4dcc5a23..00000000 --- a/docs/source/G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure.rst +++ /dev/null @@ -1,41 +0,0 @@ -G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with direct building pressure control - -Detailed Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * oa_p: Outdoor air damper position - * max_oa_p: Maximum outdoor air damper position - * oa_p_tol: Outdoor air damper position tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if abs(oa_p - max_oa_p) < oa_p_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36OutputChangeRateLimit.rst b/docs/source/G36OutputChangeRateLimit.rst deleted file mode 100644 index f881c93e..00000000 --- a/docs/source/G36OutputChangeRateLimit.rst +++ /dev/null @@ -1,34 +0,0 @@ -G36OutputChangeRateLimit -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 requirement of controller command change rate limit - -Index Description -------------------------------------------------------------------------------- - * Section 5.1.9 in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * command: control command to be verified with command range being (0-100) - * max_rate_of_change_per_min: control loop output maximum rate of change, default to 25. - -Assertions Description -------------------------------------------------------------------------------- - * if abs(command(current_t) - command(prev_t)) > max_rage_of_change_per_min and (current_t - prev_t <= 1 minute): - - * fail - - * else: - - * pass - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst deleted file mode 100644 index f646c48e..00000000 --- a/docs/source/G36ReheatTerminalBoxCoolingAirflowSetpoint.rst +++ /dev/null @@ -1,71 +0,0 @@ -G36ReheatTerminalBoxCoolingAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box with reheat when the zone state is cooling following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.6.5.1 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_cool_max: Maximum cooling airflow setpoint - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - * heating_coil_command: Heating coil command - * heating_coil_command_tol: Heating coil command saturation tolerance - * dat: Discharge air temperature - * dat_min_spt: Minimum discharge air temperature setpoint - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if dat > dat_min_spt and heating_coil_command > heating_coil_command_tol - - * fail - - * else - - * switch operation_mode - - * case 'occupied' - - * cooling_maximum = v_cool_max - - * minimum = v_min - - * case 'cooldown', 'setup' - - * cooling_maximum = v_cool_max - - * minimum = 0 - - * case 'warmup', 'setback', 'unoccupied' - - * cooling_maximum = 0 - - * minimum = 0 - - * - - * if cooling_minimum <= v_spt <= cooling_maximum - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst deleted file mode 100644 index fdea68ec..00000000 --- a/docs/source/G36ReheatTerminalBoxDeadbandAirflowSetpoint.rst +++ /dev/null @@ -1,59 +0,0 @@ -G36ReheatTerminalBoxDeadbandAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box with reheat when the zone state is deadband following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.6.5.2 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - * v_spt_tol: Airflow setpoint tolerance - * heating_coil_command: Heating coil command - * heating_coil_command_tol: Heating coil command saturation tolerance - * dat: Discharge air temperature - * dat_min_spt: Minimum discharge air temperature setpoint - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if dat > dat_min_spt and heating_coil_command > heating_coil_command_tol - - * fail - - * else - - * switch operation_mode - - * case 'occupied' - - * minimum = v_min - - * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' - - * minimum = 0 - - * if abs(v_spt - minimum) <= v_spt_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst b/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst deleted file mode 100644 index 2ec8bfa0..00000000 --- a/docs/source/G36ReheatTerminalBoxHeatingAirflowSetpoint.rst +++ /dev/null @@ -1,88 +0,0 @@ -G36ReheatTerminalBoxHeatingAirflowSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box with reheat when the zone state is heating following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.6.5.3 (a, b) in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_cool_max: Zone maximum cooling airflow setpoint - * v_heat_max: Zone maximum heating airflow setpoint - * v_heat_min: Zone minimum heating airflow setpoint - * v_min: Occupied zone minimum airflow setpoint - * v_spt: Active airflow setpoint - * v_spt_tol: Airflow setpoint tolerance - * heating_loop_output: Zone heating loop signal (from 0 to 100) - * room_temp: Room temperature - * space_temp_spt: Space temperature setpoint - * ahu_sat_spt: AHU supply air temperature setpoint - * dat: Discharge air temperature - * dat_spt: Discharge air temperature setpoint - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * switch operation_mode - - * case 'occupied' - - * heating_maximum = max(v_heat_min, v_min) - - * heating_minimum = max(v_heat_min, v_min) - - * case 'cooldown' - - * heating_maximum = v_heat_max - - * heating_minimum = v_heat_min - - * case 'setup', 'unoccupied' - - * heating_maximum = 0 - - * heating_minimum = 0 - - * case 'warmup', 'setback' - - * heating_maximum = v_heat_max - - * heating_minimum = v_cool_max - - * - - * if 0 < heating_loop_output <= 50: - - * if abs(v_spt - heating_minimum) <= tolerance and ahu_sat_spt <= dat_spt <= 11 + space_temp_spt: - - * pass - - * else: - - * fail - - * if 50 < heating_loop_output <= 100: - - * if dat > room_temp + 3 and heating_minimum <= v_spt <= heating_maximum: - - * pass - - * else: - - * untested - - * end - diff --git a/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst b/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst deleted file mode 100644 index 54342df2..00000000 --- a/docs/source/G36ReheatTerminalBoxHeatingCoilLowerBound.rst +++ /dev/null @@ -1,43 +0,0 @@ -G36ReheatTerminalBoxHeatingCoilLowerBound -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box with reheat heating coil needs to keep discharge air temp no lower than 10c when occupied following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.6.5.4 in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * heating_coil_command: Heating coil command - * dat: Discharge air temperature - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if operation_mode != 'occupied': - - * untested - - * if operation_mode == 'occupied': - - * if dat < 10 and heating_coil_command < 99: - - * fail - - * else: - - * pass - - * end - diff --git a/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst b/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst deleted file mode 100644 index c7f8e1ac..00000000 --- a/docs/source/G36ReheatTerminalBoxHeatingCoilTracking.rst +++ /dev/null @@ -1,53 +0,0 @@ -G36ReheatTerminalBoxHeatingCoilTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box with reheat heating coil tracking discharge temperature at setpoint following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.6.5.3 c in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * heating_coil_command: Heating coil command - * dat: Discharge air temperature - * dat_spt: Discharge air temperature setpoint - * dat_tracking_tol: Temperature tracking tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * only check the following if operation_mode is heating - - * if abs(dat_spt - dat) >= dat_tracking_tol (less than 1hr): - - * pass - - * elif abs(dat_spt - dat) < dat_tracking_tol: - - * pass - - * if dat - dat_spt >= dat_tracking_tol (continously) and heating_coil_command <= 1: - - * pass - - * elif dat_spt - dat >= dat_tracking_tol (continuously) and vav_damper_command >= 99: - - * pass - - * else: - - * fail - - * end - diff --git a/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst deleted file mode 100644 index b7c4a447..00000000 --- a/docs/source/G36ReliefAirDamperPositionForReturnFanAirflowTracking.rst +++ /dev/null @@ -1,68 +0,0 @@ -G36ReliefAirDamperPositionForReturnFanAirflowTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking - -Detailed Description -------------------------------------------------------------------------------- -Verify that the outdoor air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * heating_output: AHU heating coil output - * cooling_output: AHU cooling coil output - * max_rea_p: Maximum return air damper position - * rea_p_tol: Return air damper position tolerance - * rea_p: Return air damper position - * ra_p: Relief air damper position - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if heating_output > 0 - - * if abs(rea_p - 0) < rea_p_tol - - * pass - - * else - - * fail - - * end - - * else if cooling_output > 0 - - * if abs(rea_p - max_rea_p) < rea_p_tol - - * pass - - * else - - * fail - - * end - - * else if abs(rea_p - (1 - ra_p) * max_rea_p) < rea_p_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36ReliefDamperStatus.rst b/docs/source/G36ReliefDamperStatus.rst deleted file mode 100644 index 2b96544a..00000000 --- a/docs/source/G36ReliefDamperStatus.rst +++ /dev/null @@ -1,42 +0,0 @@ -G36ReliefDamperStatus -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 relief dampers shall be enabled when the associated supply fan is proven on, and disabled otherwise. - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.8.1 in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * relief_damper_command: relief damper opening (0-100) - * supply_fan_status: supply fan status (speed) [1, 0] (can be replaced by binary or numeric variables) - -Assertions Description -------------------------------------------------------------------------------- - * if relief_damper_command > 0 and supply_fan_status == 'on': - - * pass - - * elif supply_fan_status == 'off' and relief_damper_command == 0: - - * pass - - * else: - - * fail - - * if not ['on', 'off'] in supply_fan_status: - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst b/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst deleted file mode 100644 index bb14eefe..00000000 --- a/docs/source/G36ReturnAirDamperPositionForReliefDamperOrFan.rst +++ /dev/null @@ -1,83 +0,0 @@ -G36ReturnAirDamperPositionForReliefDamperOrFan -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows guideline 36 recommendations for systems with relief damper/fan - -Detailed Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * max_ra_p: Maximum return air damper position - * ra_p_tol: Return air damper position tolerance - * ra_p: Return air damper position - * oa_p: Outdoor air damper position - * max_oa_p: Maximum outdoor air damper position - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if heating_output > 0 - - * if abs(ra_p - max_ra_p) < ra_p_tol - - * pass - - * else - - * fail - - * end - - * else if cooling_output > 0 - - * if abs(ra_p - 0) < ra_p_tol - - * pass - - * else - - * fail - - * end - - * else if oa_p < max_oa_p - - * if abs(ra_p - max_ra_p) < ra_p_tol - - * pass - - * else - - * fail - - * end - - * else if abs(oa - max_oa_p) < oa_p_tol - - * if ra_p < max_ra_p - - * pass - - * else - - * fail - - * end - - * end - diff --git a/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst b/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst deleted file mode 100644 index 99d13444..00000000 --- a/docs/source/G36ReturnAirDamperPositionForReturnFanAirflowTracking.rst +++ /dev/null @@ -1,32 +0,0 @@ -G36ReturnAirDamperPositionForReturnFanAirflowTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows guideline 36 recommendations for systems with return fan with airflow tracking - -Detailed Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * heating_output: AHU heating coil output - * cooling_output: AHU cooling coil output - * max_ra_p: Maximum return air damper position - * ra_p_tol: Return air damper position tolerance - * ra_p: Return air damper position - * rea_p: Relief air damper position - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst b/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst deleted file mode 100644 index 0b946859..00000000 --- a/docs/source/G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure.rst +++ /dev/null @@ -1,67 +0,0 @@ -G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows guideline 36 recommendations for systems with return fan with direct building pressure control - -Detailed Description -------------------------------------------------------------------------------- -Verify that the return air damper operation follows the guideline 36 recommendations for supply air temperature setpoint operations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * heating_output: AHU heating coil output - * cooling_output: AHU cooling coil output - * max_ra_p: Maximum return air damper position - * ra_p_tol: Return air damper position tolerance - * ra_p: Return air damper position - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if heating_output > 0 - - * if abs(ra_p - max_ra_p) < ra_p_tol - - * pass - - * else - - * fail - - * end - - * else if cooling_output > 0 - - * if abs(ra_p - 0) < ra_p_tol - - * pass - - * else - - * fail - - * end - - * else if abs(ra_p - (1 - rea_p) * max_ra_p) < ra_p_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36SimultaneousHeatingCooling.rst b/docs/source/G36SimultaneousHeatingCooling.rst deleted file mode 100644 index 8c9dbd49..00000000 --- a/docs/source/G36SimultaneousHeatingCooling.rst +++ /dev/null @@ -1,36 +0,0 @@ -G36SimultaneousHeatingCooling -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verifiy that both the heating and cooling coil are not operating at the same time - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.3 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * heating_output: AHU heating coil output - * cooling_output: AHU cooling coil output - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if heating_output > 0 and cooling_output > 0 - - * fail - - * else - - * pass - - * end - diff --git a/docs/source/G36SupplyAirTemperatureSetpoint.rst b/docs/source/G36SupplyAirTemperatureSetpoint.rst deleted file mode 100644 index 430849a9..00000000 --- a/docs/source/G36SupplyAirTemperatureSetpoint.rst +++ /dev/null @@ -1,87 +0,0 @@ -G36SupplyAirTemperatureSetpoint -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Supply air temperature operation following the guideline 36 recommendations - -Detailed Description -------------------------------------------------------------------------------- -Verify that the supply air temperature setpoint of a system follows the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.2.2 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * oa_t: Outdoor air temperature - * t_max: Maximum supply air temperature setpoint based on requests - * sa_t_sp_ac: Actual supply air temperature setpoint - * oa_t_min: Minimum outdoor air temperature for linear SAT reset - * oa_t_max: Maximum outdoor air temperature for linear SAT reset - * min_clg_sa_t_sp: Minimum cooling supply air temperature setpoint - * max_clg_sa_t_sp: Maximum cooling supply air temperature setpoint - * sa_sp_tol: supply air temperature tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if t_max > max_clg_sa_t_sp - - * fail - - * end - - * - - * switch operation_mode - - * case 'cooldown' - - * sa_t_sp = min_clg_sa_t_sp - - * case 'warmup', 'setback - - * sa_t_sp = 35 # 95 F - - * case 'occupied', 'setup' - - * if oa_t <= oa_t_min - - * sa_t_sp = t_max - - * else if oa_t >= oa_t_max - - * sa_t_sp = min_clg_sa_t_sp - - * else - - * sa_t_sp = (oa_t - oa_t_min) * (t_max - min_clg_sa_t_sp) / (oa_t_min - oa_t_max) + t_max - - * # linear interpolation - - * end - - * end - - * - - * if abs(sa_t_sp - sa_t_s_ac) < sa_sp_tol - - * pass - - * else - - * fail - - * end - diff --git a/docs/source/G36SupplyFanStatus.rst b/docs/source/G36SupplyFanStatus.rst deleted file mode 100644 index 8800bcbb..00000000 --- a/docs/source/G36SupplyFanStatus.rst +++ /dev/null @@ -1,51 +0,0 @@ -G36SupplyFanStatus -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -G36 supply fan on/off requirements - -Index Description -------------------------------------------------------------------------------- - * Section 5.16.1.1. in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * sys_mode: AHU system mode mode, enumeration of ['occupied', 'unoccupied', 'cooldown', 'warmup', 'setback', 'setup'] - * has_reheat_box_on_perimeter_zones: binary flag of If there are any VAV-reheat boxes on perimeter zones. - * supply_fan_status: supply fan status (speed) [1, 0] (can be replaced by binary or numeric variables) - -Assertions Description -------------------------------------------------------------------------------- - * if has_reheat_box_on_perimeter_zones == True: - - * if sys_mode != 'unoccupied' and supply_fan_status == 'off': - - * fail - - * - - * else: - - * if sys_mode in ['occupied', 'setup', 'cooldown'] and supply_fan_staus == 'off': - - * fail - - * - - * if ['occupied', 'unoccupied'] in sys_mode: - - * pass - - * else: - - * untested - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst b/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst deleted file mode 100644 index bfa5caca..00000000 --- a/docs/source/G36TerminalBoxCoolingMinimumAirflow.rst +++ /dev/null @@ -1,57 +0,0 @@ -G36TerminalBoxCoolingMinimumAirflow -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box in cooling mode needs maintain minimum airflow when supply air temperature is high following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.5.5.1.a in Guideline 36-2021 - - * Section 5.6.5.1.a in Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * operation_mode: System operation mode - * zone_state: Zone state (heating, cooling, or deadband (not in either heating or cooling)) - * v_min: Occupied zone minimum airflow setpoint - * ahu_sat_spt: AHU supply air temperature setpoint - * v_spt: Active airflow setpoint - * v_spt_tol: Airflow setpoint tolerance - * room_temp: Room temperature - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if ahu_sat_spt <= room_temp: - - * untested - - * else: - - * switch operation_mode - - * case 'occupied' - - * minimum = v_min - - * case 'cooldown', 'setup', 'warmup', 'setback', 'unoccupied' - - * minimum = 0 - - * if v_spt - v_spt_tol > minimum: - - * fail - - * else: - - * pass - diff --git a/docs/source/G36TerminalBoxVAVDamperTracking.rst b/docs/source/G36TerminalBoxVAVDamperTracking.rst deleted file mode 100644 index 3f6014e0..00000000 --- a/docs/source/G36TerminalBoxVAVDamperTracking.rst +++ /dev/null @@ -1,50 +0,0 @@ -G36TerminalBoxVAVDamperTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Terminal box airflow control with vav damper following the guideline 36 recommendations - -Index Description -------------------------------------------------------------------------------- - * Section 5.5.5.4 in ASHRAE Guideline 36-2021 - -Datapoints Description -------------------------------------------------------------------------------- - * vav_damper_command: Terminal box VAV damper command - * v: Terminal box discharge airflow rate - * v_spt: Active airflow setpoint - * v_tracking_tol: Airflow tracking tolerance - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - -Assertions Description -------------------------------------------------------------------------------- - * if abs(v_spt - v) >= v_tracking_tol (less than 1hr): - - * pass - - * elif abs(v_spt - v) < v_tracking_tol: - - * pass - - * if v - v_spt >= v_tracking_tol (continously) and vav_damper_command <= 1: - - * pass - - * elif v_spt - v >= v_tracking_tol (continuously) and vav_damper_command >= 99: - - * pass - - * else: - - * fail - - * end - diff --git a/docs/source/GuestRoomControlTemp.rst b/docs/source/GuestRoomControlTemp.rst deleted file mode 100644 index c84826ee..00000000 --- a/docs/source/GuestRoomControlTemp.rst +++ /dev/null @@ -1,31 +0,0 @@ -GuestRoomControlTemp -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify whether there is guest room temperature control during operation hours - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.3.5 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_z_hea_set: Zone Thermostat Heating Setpoint Temperature - * T_z_coo_set: Zone Thermostat Cooling Setpoint Temperature - * O_sch: Occupant Schedule - * tol_occ: Tolerence for Occupant Schedule - * tol_temp: Tolerance for Temperature - -Assertions Description -------------------------------------------------------------------------------- - * Check the two different temperature control logics when the room is/isn't rented out - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/GuestRoomControlVent.rst b/docs/source/GuestRoomControlVent.rst deleted file mode 100644 index b3ab370e..00000000 --- a/docs/source/GuestRoomControlVent.rst +++ /dev/null @@ -1,35 +0,0 @@ -GuestRoomControlVent -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Verify whether there is guest room outdoor airflow control during operation hours - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.3.5.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * damper_sch: Damper Schdule - * m_oa_fraction: Air System Outdoor Air Flow Fraction - * O_sch: Occupant schedule - * m_oa_heat_design: Design Heating Air Flow Rate - * m_oa_cool_design: Design Cooling Air Flow Rate - * volume: Zone Volume - * v_outdoor_per_zone: Outdoor Air Flow per Zone Floor Area - * tol_occ: Tolerence for occupant Schedule - * tol_oa_flow: Tolerance for Outdoor Airflow - -Assertions Description -------------------------------------------------------------------------------- - * Check the two different airflow control logics when the room is/isn't rented out - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/HWReset.rst b/docs/source/HWReset.rst deleted file mode 100644 index 4452bb44..00000000 --- a/docs/source/HWReset.rst +++ /dev/null @@ -1,37 +0,0 @@ -HWReset -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Hot water supply water temperature reset - -Detailed Description -------------------------------------------------------------------------------- -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) - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.4.4 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * 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_set: Hot water maximum temp setpoint - * T_hw_min_set: Hot water minimum temp setpoint - -Assertions Description -------------------------------------------------------------------------------- - * When m_hw > 0, T_hw <= T_hw_max_set and T_hw >= T_hw_min_set; When m_hw < 0, always pass - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/HeatPumpSupplementalHeatLockout.rst b/docs/source/HeatPumpSupplementalHeatLockout.rst deleted file mode 100644 index e2d6dc64..00000000 --- a/docs/source/HeatPumpSupplementalHeatLockout.rst +++ /dev/null @@ -1,32 +0,0 @@ -HeatPumpSupplementalHeatLockout -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Supplemental heating coil should be off when the heat pump can meet the load by itself - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.5 Heat Pump Auxiliary Heat Control and 6.3.2.h Criteria in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * C_ref: Heating Coil Reference Capacity - * L_op: Heating Coil Runtime Fraction - * C_t_mod: Heating Coil Heating Rate - * P_supp_ht: Heating Coil Gas Rate - * C_ff_mod: Heating Capacity Function of Flow Fraction Curve - * L_defrost: Defrost load on the heating coil - -Assertions Description -------------------------------------------------------------------------------- - * If C_ref * C_t_mod >= L_op and P_supp_ht == 0 then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/HeatRejectionFanVariableFlowControl.rst b/docs/source/HeatRejectionFanVariableFlowControl.rst deleted file mode 100644 index 5d6efad8..00000000 --- a/docs/source/HeatRejectionFanVariableFlowControl.rst +++ /dev/null @@ -1,30 +0,0 @@ -HeatRejectionFanVariableFlowControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -The cooling tower fan power is 30% of the design value at 50% flow - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.5.2.1 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * ct_P_fan: Cooling Tower Fan Power - * ct_P_fan_dsgn: Cooling Tower Design Fan Power - * ct_m_fan_ratio: Cooling Tower Air Flow Rate Ratio - * ct_m_fan_dsgn: Cooling Tower Design Air Flow - -Assertions Description -------------------------------------------------------------------------------- - * 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 - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/HeatRejectionFanVariableFlowControlsCells.rst b/docs/source/HeatRejectionFanVariableFlowControlsCells.rst deleted file mode 100644 index a96a5636..00000000 --- a/docs/source/HeatRejectionFanVariableFlowControlsCells.rst +++ /dev/null @@ -1,32 +0,0 @@ -HeatRejectionFanVariableFlowControlsCells -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Heat rejection fan variable flow controls cells - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.5.2.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * ct_op_cells: Number of operating cooling tower cells - * ct_cells: Number of cooling tower cells - * ct_m: Cooling tower mass flow rate - * ct_m_des: Cooling tower design mass flow rate - * min_flow_frac_per_cell: Minimum flow fraction per cooling tower cell - * ct_P_fan: Cooling tower fan power - -Assertions Description -------------------------------------------------------------------------------- - * if the number of operating cooling tower cells is equal to the maximum number of cooling tower cells then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/IntegratedEconomizerControl.rst b/docs/source/IntegratedEconomizerControl.rst deleted file mode 100644 index 1d8995ea..00000000 --- a/docs/source/IntegratedEconomizerControl.rst +++ /dev/null @@ -1,33 +0,0 @@ -IntegratedEconomizerControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Economizer shall be integrated with mechanical cooling - -Detailed Description -------------------------------------------------------------------------------- -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) - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.1.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * oa_min_flow: OA minimum airflow setpoint - * oa_flow: OA airflow - * ccoil_out: Cooling coil transfer - -Assertions Description -------------------------------------------------------------------------------- - * ((oa_flow > oa_min_flow) AND (ccoil_out > 0)) never happens - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Fail - diff --git a/docs/source/InteriorLightingControlAutomaticFullOff.rst b/docs/source/InteriorLightingControlAutomaticFullOff.rst deleted file mode 100644 index a3c4e175..00000000 --- a/docs/source/InteriorLightingControlAutomaticFullOff.rst +++ /dev/null @@ -1,26 +0,0 @@ -InteriorLightingControlAutomaticFullOff -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Interior lighting control automatic full off - -Datapoints Description -------------------------------------------------------------------------------- - * o: Number of occupants - * total_lighting_power: Reported total lighting power (not the design total lighting power) - * lighted_floor_area: Area lit by the device/system considered - * tol_o: Tolerance or threshold for the number of occupants below which the system is serving an unoccupied space - -Assertions Description -------------------------------------------------------------------------------- - * The algorithm verifies that the device/system doesn't serves more than 5,000 ft2 and that if it doesn't, if occupants are not present for at least 20 minutes, the lighting power of the device/system should be less or equal to 0.02 W/ft2, otherwise, the verification fails. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopSaturationDirectActingMax.rst b/docs/source/LocalLoopSaturationDirectActingMax.rst deleted file mode 100644 index ded8c272..00000000 --- a/docs/source/LocalLoopSaturationDirectActingMax.rst +++ /dev/null @@ -1,26 +0,0 @@ -LocalLoopSaturationDirectActingMax -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - direct acting loop actuator maximum saturation - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - * cmd: control command - * cmd_max: control command range maximum value - -Assertions Description -------------------------------------------------------------------------------- - * If the sensed data values are consistently above its set point, and after a default of 1 hour, the control command is still not saturated to maximum, then the verification fails; Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopSaturationDirectActingMin.rst b/docs/source/LocalLoopSaturationDirectActingMin.rst deleted file mode 100644 index 63241493..00000000 --- a/docs/source/LocalLoopSaturationDirectActingMin.rst +++ /dev/null @@ -1,26 +0,0 @@ -LocalLoopSaturationDirectActingMin -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - direct acting loop actuator minimum saturation - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - * cmd: control command - * cmd_min: control command range minimum value - -Assertions Description -------------------------------------------------------------------------------- - * If the sensed data values are consistently below its set point, and after a default of 1 hour, the control command is still not saturated to minimum, then the verification fails; Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopSaturationReverseActingMax.rst b/docs/source/LocalLoopSaturationReverseActingMax.rst deleted file mode 100644 index ec9ae9e7..00000000 --- a/docs/source/LocalLoopSaturationReverseActingMax.rst +++ /dev/null @@ -1,26 +0,0 @@ -LocalLoopSaturationReverseActingMax -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - reverse acting loop actuator maximum saturation - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - * cmd: control command - * cmd_max: control command range maximum value - -Assertions Description -------------------------------------------------------------------------------- - * If the sensed data values are consistently below its set point, and after a default of 1 hour, the control command is still not saturated to maximum, then the verification fails; Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopSaturationReverseActingMin.rst b/docs/source/LocalLoopSaturationReverseActingMin.rst deleted file mode 100644 index 6aaff293..00000000 --- a/docs/source/LocalLoopSaturationReverseActingMin.rst +++ /dev/null @@ -1,26 +0,0 @@ -LocalLoopSaturationReverseActingMin -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - reverse acting loop actuator minimum saturation - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - * cmd: control command - * cmd_min: control command range minimum value - -Assertions Description -------------------------------------------------------------------------------- - * If the sensed data values are consistently above its set point, and after a default of 1 hour, the control command is still not saturated to minimum, then the verification fails; Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopSetPointTracking.rst b/docs/source/LocalLoopSetPointTracking.rst deleted file mode 100644 index 97785fa9..00000000 --- a/docs/source/LocalLoopSetPointTracking.rst +++ /dev/null @@ -1,24 +0,0 @@ -LocalLoopSetPointTracking -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - set point tracking - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - -Assertions Description -------------------------------------------------------------------------------- - * With a threshold of 5% of abs(set_point) (if the set point is 0, then the threshold is default to be 0.01), if the number of samples of which the error is larger than this threshold is beyond 5% of number of all samples, then this verification fails; Otherwise, it passes. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/LocalLoopUnmetHours.rst b/docs/source/LocalLoopUnmetHours.rst deleted file mode 100644 index d661c29b..00000000 --- a/docs/source/LocalLoopUnmetHours.rst +++ /dev/null @@ -1,24 +0,0 @@ -LocalLoopUnmetHours -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Local loop performance verification - set point unmet hours - -Datapoints Description -------------------------------------------------------------------------------- - * feedback_sensor: feedback sensor reading of the subject to be controlled towards a set point - * set_point: set point value - -Assertions Description -------------------------------------------------------------------------------- - * Instead of checking the number of samples among the whole data set for which the set points are not met, this verification checks the total accumulated time that the set points are not met within a threshold of 5% of abs(set_point) (if the set point is 0, then the threshold is default to be 0.01). - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst b/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst deleted file mode 100644 index 6d655710..00000000 --- a/docs/source/MZSystemOccupiedStandbyVentilationZoneControl.rst +++ /dev/null @@ -1,25 +0,0 @@ -MZSystemOccupiedStandbyVentilationZoneControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Multizone system zone standby model ventilation control - -Datapoints Description -------------------------------------------------------------------------------- - * zone_is_standby_mode: Flag indicating that the zone targeted by the verification is in occupied standby mode - * m_oa_requested_by_system: System outdoor air setpoint - * m_oa_zone_requirement: Outdoor air required by the targeted zone - -Assertions Description -------------------------------------------------------------------------------- - * If the targted zone is in standby mode and if the difference between the outdoor air setpoint and the last reported outdoor air setpoint when the zone was not in standby mode is greater than the outdoor air required for the zone the verification passes, it otherwise fails. - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/NightCycleOperation.rst b/docs/source/NightCycleOperation.rst deleted file mode 100644 index 3f07ead5..00000000 --- a/docs/source/NightCycleOperation.rst +++ /dev/null @@ -1,31 +0,0 @@ -NightCycleOperation -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Tspr tool software development - -Index Description -------------------------------------------------------------------------------- - * None - -Datapoints Description -------------------------------------------------------------------------------- - * T_zone: Zone Air Temperature - * HVAC_operation_sch: HVAC Operation Schedule - * T_heat_set: Zone Thermostat Heating Setpoint Temperature - * T_cool_set: Zone Thermostat Cooling Setpoint Temperature - * Fan_elec_rate: Fan Electricity Rate - -Assertions Description -------------------------------------------------------------------------------- - * 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 - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ServiceWaterHeatingSystemControl.rst b/docs/source/ServiceWaterHeatingSystemControl.rst deleted file mode 100644 index 4c6de6ae..00000000 --- a/docs/source/ServiceWaterHeatingSystemControl.rst +++ /dev/null @@ -1,27 +0,0 @@ -ServiceWaterHeatingSystemControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Service water heating system control - -Index Description -------------------------------------------------------------------------------- - * Section 7.4.4.3 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_wh_inlet: Water temperature on demand side from the water heater - -Assertions Description -------------------------------------------------------------------------------- - * if maximum(T_wh_inlet) < 43.33 °C Then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/SupplyAirTempReset.rst b/docs/source/SupplyAirTempReset.rst deleted file mode 100644 index 257b1e62..00000000 --- a/docs/source/SupplyAirTempReset.rst +++ /dev/null @@ -1,32 +0,0 @@ -SupplyAirTempReset -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Cooling supply air temperature reset scale (25%) - -Detailed Description -------------------------------------------------------------------------------- -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. - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.3.5 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_sa_set: AHU supply air temperature setpoint - * T_z_coo: Design zone cooling air temperature - -Assertions Description -------------------------------------------------------------------------------- - * Max(T_sa_set) - Min(T_sa_set) >= (T_z_coo - Min(T_sa_set)) * 0.25 - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/VAVStaticPressureSensorLocation.rst b/docs/source/VAVStaticPressureSensorLocation.rst deleted file mode 100644 index a302e73c..00000000 --- a/docs/source/VAVStaticPressureSensorLocation.rst +++ /dev/null @@ -1,28 +0,0 @@ -VAVStaticPressureSensorLocation -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Vav static pressure sensor location requirement - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.3.2.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * p_fan_set: Static pressure setpoint - * tol_P_fan: Tolerance for VAV box static pressure sensor - -Assertions Description -------------------------------------------------------------------------------- - * if static pressure setpoint is no greater than 1.2 in of water (298.608 Pa) then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/VentilationFanControl.rst b/docs/source/VentilationFanControl.rst deleted file mode 100644 index e2ec5d2c..00000000 --- a/docs/source/VentilationFanControl.rst +++ /dev/null @@ -1,29 +0,0 @@ -VentilationFanControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Ventilation fan control - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.4.4 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * no_of_occ: People Occupant Count - * Q_load: Zone Predicted Sensible Load to Setpoint Heat Transfer Rate - * P_fan: Fan Electric Power - -Assertions Description -------------------------------------------------------------------------------- - * if Q_load = 0 and no_of_occ = 0 and P_fan != 0 then fail else pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/Verifications.rst b/docs/source/Verifications.rst deleted file mode 100644 index cf8d0dfd..00000000 --- a/docs/source/Verifications.rst +++ /dev/null @@ -1,75 +0,0 @@ -Verifications -=============== - -Listed below are all the verification currently implemented in ConStrain. - -.. toctree:: - :maxdepth: 1 - - SupplyAirTempReset - EconomizerHighLimitA - EconomizerHighLimitB - EconomizerHighLimitC - EconomizerHighLimitD - IntegratedEconomizerControl - ERVRatio - ZoneTempControl - HWReset - CHWReset - ZoneHeatSetpointMinimum - ZoneCoolingSetpointMaximum - ZoneHeatingResetDepth - ZoneCoolingResetDepth - NightCycleOperation - ERVTemperatureControl - AutomaticOADamperControl - FanStaticPressureResetControl - HeatRejectionFanVariableFlowControlsCells - ServiceWaterHeatingSystemControl - VAVStaticPressureSensorLocation - VentilationFanControl - WLHPLoopHeatRejectionControl - AutomaticShutdown - HeatPumpSupplementalHeatLockout - HeatRejectionFanVariableFlowControl - DemandControlVentilation - GuestRoomControlTemp - GuestRoomControlVent - G36SupplyAirTemperatureSetpoint - G36SimultaneousHeatingCooling - G36ReturnAirDamperPositionForReliefDamperOrFan - G36OutdoorAirDamperPositionForReliefDamperOrFan - G36ReturnAirDamperPositionForReturnFanAirflowTracking - G36OutdoorAirDamperPositionForReturnFanAirflowTracking - G36ReliefAirDamperPositionForReturnFanAirflowTracking - G36ReturnAirDamperPositionForReturnFanDirectBuildingPressure - G36OutdoorAirDamperPositionForReturnFanDirectBuildingPressure - G36FreezeProtectionStage1 - G36FreezeProtectionStage2 - G36FreezeProtectionStage3 - G36MinOAwEconomizer - G36MinOAwoEconomizer - G36OutputChangeRateLimit - G36ReliefDamperStatus - G36SupplyFanStatus - LocalLoopSetPointTracking - LocalLoopUnmetHours - LocalLoopSaturationDirectActingMax - LocalLoopSaturationDirectActingMin - LocalLoopSaturationReverseActingMax - LocalLoopSaturationReverseActingMin - MZSystemOccupiedStandbyVentilationZoneControl - AppendixGHVACSystemFanOperation - InteriorLightingControlAutomaticFullOff - ExteriorLightingControlDaylightOff - ExteriorLightingControlOccupancySensingReduction - G36CoolingOnlyTerminalBoxCoolingAirflowSetpoint - G36CoolingOnlyTerminalBoxDeadbandAirflowSetpoint - G36CoolingOnlyTerminalBoxHeatingAirflowSetpoint - G36TerminalBoxVAVDamperTracking - G36TerminalBoxCoolingMinimumAirflow - G36ReheatTerminalBoxCoolingAirflowSetpoint - G36ReheatTerminalBoxDeadbandAirflowSetpoint - G36ReheatTerminalBoxHeatingAirflowSetpoint - G36ReheatTerminalBoxHeatingCoilTracking - G36ReheatTerminalBoxHeatingCoilLowerBound diff --git a/docs/source/WLHPLoopHeatRejectionControl.rst b/docs/source/WLHPLoopHeatRejectionControl.rst deleted file mode 100644 index 93db702b..00000000 --- a/docs/source/WLHPLoopHeatRejectionControl.rst +++ /dev/null @@ -1,30 +0,0 @@ -WLHPLoopHeatRejectionControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Water-loop heat pump heat rejection control - -Index Description -------------------------------------------------------------------------------- - * Section 6.5.2.2.3 (a) in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_max_heating_loop: maximum temperature of heating loop - * T_min_cooling_loop: minimum temperature of cooling loop - * m_pump: Pump Mass Flow Rate - * tol: Tolerance for water-loop temperature difference - -Assertions Description -------------------------------------------------------------------------------- - * If the temperature difference between the maximum heating loop and minimum heating loop when the pump runs is greater than 11.11 °C, then pass else fail - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ZoneCoolingResetDepth.rst b/docs/source/ZoneCoolingResetDepth.rst deleted file mode 100644 index 3e25551c..00000000 --- a/docs/source/ZoneCoolingResetDepth.rst +++ /dev/null @@ -1,27 +0,0 @@ -ZoneCoolingResetDepth -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -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 5f above the occupied cooling set point or to prevent high space humidity levels. (case study) - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.3.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_cool_set: Zone Thermostat Cooling Setpoint Temperature - -Assertions Description -------------------------------------------------------------------------------- - * if max(T_cool_set) - min(T_cool_set) >= 5F, then pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ZoneCoolingSetpointMaximum.rst b/docs/source/ZoneCoolingSetpointMaximum.rst deleted file mode 100644 index 39521c99..00000000 --- a/docs/source/ZoneCoolingSetpointMaximum.rst +++ /dev/null @@ -1,27 +0,0 @@ -ZoneCoolingSetpointMaximum -==================================================================== - -Brief Description -------------------------------------------------------------------------------- - cooling systems located in climate zones 1b, 2b, and 3b shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures below a cooling setpoint adjustable up to 90f or higher or to prevent high space humidity levels. (case study) - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.2.2 in 90.1-2004 - -Datapoints Description -------------------------------------------------------------------------------- - * T_cool_set: Zone Thermostat Cooling Setpoint Temperature - -Assertions Description -------------------------------------------------------------------------------- - * if max(T_cool_set) >= 90F, then pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ZoneHeatSetpointMinimum.rst b/docs/source/ZoneHeatSetpointMinimum.rst deleted file mode 100644 index e801ba01..00000000 --- a/docs/source/ZoneHeatSetpointMinimum.rst +++ /dev/null @@ -1,31 +0,0 @@ -ZoneHeatSetpointMinimum -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Zone heating setpoint reset temperature minimum value check - -Detailed Description -------------------------------------------------------------------------------- -Heating systems located in climate zones 2-8 shall be equipped with controls that have the capability to automatically restart and temporarily operate the system as required to maintain zone temperatures above a heating setpoint adjustable down to 55f or lower. (case study) - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.2.2 in 90.1-2004 - -Datapoints Description -------------------------------------------------------------------------------- - * T_heat_set: Zone Thermostat Heating Setpoint Temperature - -Assertions Description -------------------------------------------------------------------------------- - * if min(T_heat_set) <= 55°F, then pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ZoneHeatingResetDepth.rst b/docs/source/ZoneHeatingResetDepth.rst deleted file mode 100644 index 7aed5195..00000000 --- a/docs/source/ZoneHeatingResetDepth.rst +++ /dev/null @@ -1,27 +0,0 @@ -ZoneHeatingResetDepth -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -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 10f below (will be 60f) the occupied heating set point. (case study) - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.3.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_heat_set: Zone Thermostat Heating Setpoint Temperature - -Assertions Description -------------------------------------------------------------------------------- - * if max(T_heat_set) - min(T_heat_set) >= 10F, then pass - -Type Verification Description -------------------------------------------------------------------------------- -Procedure-based - -Assertions Type -------------------------------------------------------------------------------- -Pass - diff --git a/docs/source/ZoneTempControl.rst b/docs/source/ZoneTempControl.rst deleted file mode 100644 index 6f79bafb..00000000 --- a/docs/source/ZoneTempControl.rst +++ /dev/null @@ -1,32 +0,0 @@ -ZoneTempControl -==================================================================== - -Brief Description -------------------------------------------------------------------------------- -Zone temperature setpoint deadband >= 5f (2.77c) - -Detailed Description -------------------------------------------------------------------------------- -Where used to control both heating and cooling, zone thermostatic controls shall be capable of and configured to provide a temperature range or dead band of at least 5f within which the supply of heating and cooling energy to the zone is shut off or reduced to a minimum. (case study for zone temperature reset, not for this one) - -Index Description -------------------------------------------------------------------------------- - * Section 6.4.3.1.2 in 90.1-2016 - -Datapoints Description -------------------------------------------------------------------------------- - * T_set_cool: Zone cooling temperature setpoint - * T_set_heat: Zone heating temperature setpoint - -Assertions Description -------------------------------------------------------------------------------- - * T_set_cool - T_set_heat > 5F (2.77C) - -Type Verification Description -------------------------------------------------------------------------------- -Rule-based - -Assertions Type -------------------------------------------------------------------------------- -Pass -