├── .coveragerc ├── .flake8 ├── .github └── workflows │ ├── flake8.yml │ ├── release.yml │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── Images │ ├── RunFromCommandLineProcess.jpg │ ├── RunFromCommandLineProcess.odg │ ├── ScreenShotFirstOpen.png │ ├── ScreenshotLog.png │ └── ScreenshotSummary.png ├── Makefile ├── conf.py ├── file_structure.rst ├── index.rst ├── intro.rst ├── make.bat ├── run_cli.rst ├── run_gui.rst └── workflow.rst ├── energyplus_regressions ├── __init__.py ├── __main__.py ├── builds │ ├── __init__.py │ ├── base.py │ ├── install.py │ ├── makefile.py │ └── visualstudio.py ├── configure.py ├── diffs │ ├── __init__.py │ ├── ci_compare_script.py │ ├── math_diff.config │ ├── math_diff.py │ ├── mycsv.py │ ├── table_diff.py │ └── thresh_dict.py ├── energyplus.py ├── ep_platform.py ├── epw_map.py ├── icons │ ├── icon.icns │ ├── icon.ico │ └── icon.png ├── runner.py ├── runtests.py ├── structures.py ├── tests │ ├── __init__.py │ ├── builds │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_install.py │ │ ├── test_makefile.py │ │ └── test_visualstudio.py │ ├── diffs │ │ ├── __init__.py │ │ ├── csv_resources │ │ │ ├── eplusout.csv │ │ │ ├── eplusout_bad_numeric.csv │ │ │ ├── eplusout_big_temp_diffs.csv │ │ │ ├── eplusout_big_watt_diffs.csv │ │ │ ├── eplusout_change_column_order.csv │ │ │ ├── eplusout_change_column_order_diffs.csv │ │ │ ├── eplusout_changed_timestamps.csv │ │ │ ├── eplusout_duplicate_header.csv │ │ │ ├── eplusout_empty_data.csv │ │ │ ├── eplusout_extra_column.csv │ │ │ ├── eplusout_mixed_diffs.csv │ │ │ ├── eplusout_more_data_than_headers.csv │ │ │ ├── eplusout_small_temp_diffs.csv │ │ │ ├── eplusout_small_watt_diffs.csv │ │ │ ├── eplusout_totally_different_headers.csv │ │ │ ├── eplusout_totally_empty.csv │ │ │ ├── eplusout_with_data_holes.csv │ │ │ └── test_math_diff.config │ │ ├── tbl_resources │ │ │ ├── eplustbl.htm │ │ │ ├── eplustbl_blank_column_heading_diff_base.htm │ │ │ ├── eplustbl_blank_column_heading_diff_mod.htm │ │ │ ├── eplustbl_empty_cell.htm │ │ │ ├── eplustbl_empty_table_base.htm │ │ │ ├── eplustbl_empty_table_mod.htm │ │ │ ├── eplustbl_extra_table.htm │ │ │ ├── eplustbl_has_big_numeric_diff.htm │ │ │ ├── eplustbl_has_big_numeric_diff_and_string_diff_base.htm │ │ │ ├── eplustbl_has_big_numeric_diff_and_string_diff_mod.htm │ │ │ ├── eplustbl_has_small_numeric_diff.htm │ │ │ ├── eplustbl_has_string_diff_base.htm │ │ │ ├── eplustbl_has_string_diff_case_only.htm │ │ │ ├── eplustbl_has_string_diff_mod.htm │ │ │ ├── eplustbl_heading_change_base.htm │ │ │ ├── eplustbl_heading_change_mod_with_diff_in_other_column.htm │ │ │ ├── eplustbl_heading_change_mod_with_diff_in_that_column.htm │ │ │ ├── eplustbl_heading_change_mod_with_no_other_diffs.htm │ │ │ ├── eplustbl_missing_a_table.htm │ │ │ ├── eplustbl_missing_table_header_comment.htm │ │ │ ├── eplustbl_nbsp_base.htm │ │ │ ├── eplustbl_nbsp_mod.htm │ │ │ ├── eplustbl_no_diff_different_spaces_base.htm │ │ │ ├── eplustbl_no_diff_different_spaces_mod.htm │ │ │ ├── eplustbl_objname_base.htm │ │ │ ├── eplustbl_objname_mod.htm │ │ │ ├── eplustbl_row_reorder_base.htm │ │ │ ├── eplustbl_row_reorder_mod.htm │ │ │ ├── eplustbl_skips_some_tables_base.htm │ │ │ ├── eplustbl_skips_some_tables_mod.htm │ │ │ ├── eplustbl_table_with_different_length.htm │ │ │ ├── eplustbl_unicode_contents_but_not_utf8_encoded.htm │ │ │ ├── eplustbl_versiondiff_base.htm │ │ │ ├── eplustbl_versiondiff_mod.htm │ │ │ ├── eplustbl_weird_unicode_base.htm │ │ │ ├── eplustbl_weird_unicode_issue_mod.htm │ │ │ ├── eplustbl_with_duplicate_table_name.htm │ │ │ └── test_table_diff.config │ │ ├── test_ci_compare_script.py │ │ ├── test_math_diff.py │ │ ├── test_mycsv.py │ │ ├── test_table_diff.py │ │ └── test_thresh_dict.py │ ├── resources │ │ ├── BadUTF8Marker.idf │ │ ├── README.md │ │ ├── dist │ │ │ ├── basement.exe │ │ │ ├── energyplus.exe │ │ │ ├── epmacro.exe │ │ │ ├── expandobjects.exe │ │ │ ├── parametric.exe │ │ │ ├── readvars.exe │ │ │ └── slab.exe │ │ ├── dummy.Energy+.idd │ │ ├── dummy.basement.idd │ │ ├── dummy.basement.py │ │ ├── dummy.energyplus.py │ │ ├── dummy.epmacro.py │ │ ├── dummy.expandobjects.py │ │ ├── dummy.in.epw │ │ ├── dummy.parametric.py │ │ ├── dummy.readvars.py │ │ ├── dummy.slab.idd │ │ ├── dummy.slab.py │ │ ├── eplusout_base.audit │ │ ├── eplusout_base.err │ │ ├── eplusout_base.glhe │ │ ├── eplusout_hourly_base.json │ │ ├── eplusout_hourly_mod_bad_key.json │ │ ├── eplusout_hourly_mod_big_diff.json │ │ ├── eplusout_hourly_mod_col_mismatch.json │ │ ├── eplusout_hourly_mod_freq_mismatch.json │ │ ├── eplusout_hourly_mod_row_count_mismatch.json │ │ ├── eplusout_hourly_mod_small_diff.json │ │ ├── eplusout_hourly_mod_text_diff_but_json_equal.json │ │ ├── eplusout_hourly_mod_timestamp_mismatch.json │ │ ├── eplusout_mod.audit │ │ ├── eplusout_mod.err │ │ ├── eplusout_mod_bad_key.glhe │ │ ├── eplusout_mod_bad_values.glhe │ │ ├── eplusout_mod_mismatch_object_count.glhe │ │ ├── eplusout_mod_mismatch_object_names.glhe │ │ ├── eplusout_mod_mismatched_counts.glhe │ │ ├── eplusout_mod_text_diff_but_json_equal.glhe │ │ ├── eplusout_perflog_base.csv │ │ ├── eplusout_perflog_mod.csv │ │ ├── eplusout_perflog_same_except_times.csv │ │ ├── eplusout_with_utf8_base.eio │ │ └── eplusout_with_utf8_mod.eio │ ├── test_energyplus.py │ ├── test_epw_map.py │ ├── test_platform.py │ ├── test_runtests.py │ └── test_structures.py └── tk_window.py ├── media ├── activities_search.png ├── add_to_favorites.png └── ep_icon.png ├── requirements.txt └── setup.py /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | source = energyplus_regressions 3 | 4 | [report] 5 | omit = 6 | energyplus_regressions/__main__.py 7 | energyplus_regressions/runner.py 8 | energyplus_regressions/configure.py 9 | energyplus_regressions/tk_window.py 10 | -------------------------------------------------------------------------------- /.flake8: -------------------------------------------------------------------------------- 1 | [flake8] 2 | ignore = 3 | D203, 4 | E402, 5 | E722, 6 | C901 7 | exclude = 8 | .git, 9 | __pycache__, 10 | old, 11 | build, 12 | dist, 13 | venv 14 | max-complexity = 20 15 | max-line-length = 120 16 | -------------------------------------------------------------------------------- /.github/workflows/flake8.yml: -------------------------------------------------------------------------------- 1 | name: Flake8 2 | 3 | on: [push] 4 | 5 | jobs: 6 | flake8: 7 | runs-on: ubuntu-24.04 8 | 9 | steps: 10 | - uses: actions/checkout@v4 11 | 12 | - name: Set up Python 3.12 13 | uses: actions/setup-python@v5 14 | with: 15 | python-version: 3.12 16 | 17 | - name: Install Pip Dependencies 18 | run: pip install flake8 19 | 20 | - name: Run Flake8 21 | run: flake8 energyplus_regressions 22 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: PyPIRelease 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-24.04 11 | 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - uses: actions/setup-python@v5 16 | with: 17 | python-version: 3.12 18 | 19 | - name: Install Pip Dependencies 20 | run: pip install -r requirements.txt 21 | 22 | - name: Install setuptools also 23 | run: pip install setuptools 24 | 25 | - name: Build the Wheel 26 | run: python3 setup.py bdist_wheel sdist 27 | 28 | - name: Deploy on Test PyPi 29 | uses: pypa/gh-action-pypi-publish@37f50c210e3d2f9450da2cd423303d6a14a6e29f # v1.5.1 30 | with: 31 | user: __token__ 32 | password: ${{ secrets.PYPIPW }} 33 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Run Tests 2 | 3 | on: [push] 4 | 5 | defaults: 6 | run: 7 | shell: bash 8 | 9 | jobs: 10 | unit_tests: 11 | strategy: 12 | matrix: 13 | os: [ windows-latest, macos-latest, ubuntu-24.04 ] # macos-12 is not playing well with Tk 14 | runs-on: ${{ matrix.os }} 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: actions/setup-python@v5 18 | with: 19 | python-version: 3.12 20 | - name: Install Pip Dependencies 21 | run: pip install -r requirements.txt 22 | - name: Run Tests 23 | run: coverage run -m pytest && coverage report 24 | - name: Coveralls 25 | run: coveralls --service=github 26 | env: 27 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | *.egg-info 3 | .idea 4 | *.pyc 5 | tex_docs 6 | Pipfile 7 | *.lock 8 | energyplus_regressions/files_to_run.json 9 | energyplus_regressions/files_to_run.txt 10 | docs/_build 11 | venv 12 | .python-version 13 | .coverage 14 | EnergyPlusRegressionTool.egg-info 15 | aa_testSuite_error.txt 16 | htmlcov 17 | energyplus_regressions/tests/diffs/results.json 18 | .DS_Store 19 | results.json 20 | .eggs 21 | build 22 | dist 23 | /energyplus_regressions/tests/resources/epmacro.spec 24 | /energyplus_regressions/tests/resources/expandobjects.spec 25 | /energyplus_regressions/tests/resources/parametric.spec 26 | /energyplus_regressions/tests/resources/readvars.spec 27 | /energyplus_regressions/tests/resources/slab.spec 28 | /energyplus_regressions/tests/resources/energyplus.spec 29 | /energyplus_regressions/tests/resources/basement.spec 30 | deploy 31 | energyplus_regression_runner.spec 32 | cover/ 33 | runner.spec 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018, Alliance for Sustainable Energy, LLC 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * The name of the copyright holder(s), any contributors, the United States 15 | Government, the United States Department of Energy, or any of their employees 16 | may not be used to endorse or promote products derived from this software 17 | without specific prior written permission from the respective party. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, 23 | THE UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR 24 | ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 26 | OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 28 | STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # EnergyPlus Regressions 2 | 3 | [![Documentation Status](https://readthedocs.org/projects/energyplusregressiontool/badge/?version=latest)](https://energyplusregressiontool.readthedocs.io/en/latest/?badge=latest) 4 | [![Run Tests](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/test.yml/badge.svg)](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/test.yml) 5 | [![PyPIRelease](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/release.yml/badge.svg)](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/release.yml) 6 | [![Flake8](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/flake8.yml/badge.svg)](https://github.com/NREL/EnergyPlusRegressionTool/actions/workflows/flake8.yml) 7 | [![Coverage Status](https://coveralls.io/repos/github/NREL/EnergyPlusRegressionTool/badge.svg?branch=master)](https://coveralls.io/github/NREL/EnergyPlusRegressionTool?branch=master) 8 | 9 | ## Overview 10 | 11 | This library provides tools for performing regressions between EnergyPlus builds. 12 | Developers often propose changes to EnergyPlus for: 13 | 14 | - New feature development 15 | - Defect repair 16 | - Refactoring for structure or performance 17 | 18 | When a developer proposes these changes, those code changes must be tested prior to accepting them into the main branch. 19 | A continuous integration system runs the tests and provides results, but there can be a sometimes lengthy delay waiting on those results, depending on how busy the system is at that time. 20 | This set of tools provides a way to run these regressions locally. 21 | 22 | ## Usage 23 | 24 | This tool works on all three major platforms: Windows, Mac, and Ubuntu (LTS). 25 | GitHub Actions test on multiple platforms, and it is regularly used on all three as well. 26 | 27 | To install the tool, simply `pip` install it into your Python environment (either system or virtual environment) 28 | The project page on PyPi is: https://pypi.org/project/energyplus-regressions/. 29 | 30 | - Download using Pip (`pip install energyplus-regressions`). 31 | - Once installed into the Python install, there will be a binary available to run: `energyplus_regression_runner`. 32 | 33 | ## Development 34 | 35 | For setting up a development environment to do _work_ on this tool, the steps are pretty minimal: 36 | - Install Python, if needed 37 | - Clone this repository (`git clone https://github.com/NREL/EnergyPlusRegressionTool`) 38 | - Install dependencies (`pip3 install -r requirements.txt`) 39 | 40 | ## Documentation 41 | 42 | Program documentation, including user guide and typical workflows, are available in the documentation. 43 | This documentation is written using RST with Sphinx, and published on [ReadTheDocs](https://energyplusregressiontool.readthedocs.io/en/latest/). 44 | 45 | ## Testing 46 | 47 | Exhaustive unit tests have been added to the "underneath the hood" code, like the functions that calculate diffs and run builds. 48 | The unit tests are run on [Github Actions](https://github.com/NREL/EnergyPlusRegressionTool/actions). 49 | The GUI code is not unit tested, but tested routinely on all platforms. 50 | -------------------------------------------------------------------------------- /docs/Images/RunFromCommandLineProcess.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/docs/Images/RunFromCommandLineProcess.jpg -------------------------------------------------------------------------------- /docs/Images/RunFromCommandLineProcess.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/docs/Images/RunFromCommandLineProcess.odg -------------------------------------------------------------------------------- /docs/Images/ScreenShotFirstOpen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/docs/Images/ScreenShotFirstOpen.png -------------------------------------------------------------------------------- /docs/Images/ScreenshotLog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/docs/Images/ScreenshotLog.png -------------------------------------------------------------------------------- /docs/Images/ScreenshotSummary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/docs/Images/ScreenshotSummary.png -------------------------------------------------------------------------------- /docs/Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SOURCEDIR = . 8 | BUILDDIR = _build 9 | 10 | # Put it first so that "make" without argument is like "make help". 11 | help: 12 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 13 | 14 | .PHONY: help Makefile 15 | 16 | # Catch-all target: route all unknown targets to Sphinx using the new 17 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 18 | %: Makefile 19 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /docs/file_structure.rst: -------------------------------------------------------------------------------- 1 | File & Directory Structure 2 | ========================== 3 | 4 | The program itself is set up to run directly from its repository, and operate 5 | directly on EnergyPlus build or install folders. There is no extra steps 6 | required to move files around. The build folder is expected to have the 7 | entire set of binaries, including all Fortran tools. So when configuring the 8 | build, make sure to set up ``BUILD_FORTRAN``. If these tools are not 9 | built, the regressions will emit a warning that you can accept, but note that 10 | the program has minimal value if it cannot find and run the Fortran tools. 11 | 12 | Test Directory 13 | -------------- 14 | 15 | This program runs regression testing for 2 different builds or installs of 16 | EnergyPlus. The regression tool will verify that the build 17 | folder looks satisfactory before starting the runs. 18 | 19 | When the test is completed, test results will be contained in a Tests 20 | directory in the base case folder. The folder name will be one of the following: 21 | 22 | Tests 23 | This will be created if the test suite run did not force a specific 24 | run configuration 25 | 26 | Tests-DDOnly 27 | This will be created if the test suite forced all input files to run 28 | sizing periods only 29 | 30 | Tests-Annual 31 | This will be created if the test suite forced all input files to run 32 | annual simulations 33 | -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. EnergyPlusRegressions documentation master file, created by 2 | sphinx-quickstart on Sun Oct 21 08:30:30 2018. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to EnergyPlusRegressions's documentation! 7 | ================================================= 8 | 9 | .. toctree:: 10 | :maxdepth: 2 11 | :caption: Contents: 12 | 13 | intro 14 | file_structure 15 | run_cli 16 | run_gui 17 | workflow 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /docs/intro.rst: -------------------------------------------------------------------------------- 1 | Introduction 2 | ============ 3 | 4 | This file documents the operations required to utilize EnergyPlusRegressions in 5 | doing development and testing. The program consists of a series of 6 | python scripts, that can be utilized in both a command 7 | line/scripted/non-interactive environment, as well as in a graphical 8 | user interface mode. 9 | 10 | The current testing includes regression testing of the example files 11 | that are included in EnergyPlus development. 12 | 13 | History/Credits 14 | --------------- 15 | 16 | This program was based on a test suite used at the National Renewable 17 | Energy Laboratory (NREL) that was developed by Kyle Benne and Jason 18 | Turner, and consisted of both ruby and python scripts, including a job 19 | manager to allow multiple threads to run concurrently. Although this 20 | script was at the heart of the inspiration for creating this current 21 | tool, very little of the original code exists. 22 | 23 | The mathematical comparisons performed on the EnergyPlus output files 24 | (MathDiff and TableDiff) were developed originally by Santosh Philip and 25 | improved by Amir Roth. Modifications were made to improve interaction 26 | with the test suite tool and to support Python 3, but the core of the 27 | mathematical comparisons remains. 28 | 29 | Build Structure 30 | --------------- 31 | 32 | This program operates on EnergyPlus build folders and EnergyPlus install 33 | folders. It relies on the build folders having been set up by CMake, 34 | as it parses the CMakeCache to get access to the base source directory. 35 | For installations, it detects the appropriately installed tools relative 36 | to the install folder root. With the build and source 37 | directories available, the program has everything it needs to run. 38 | 39 | Known issues 40 | ------------ 41 | 42 | Known issues for this tool are found on the 43 | `issue list `_. 44 | -------------------------------------------------------------------------------- /docs/make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=. 11 | set BUILDDIR=_build 12 | 13 | if "%1" == "" goto help 14 | 15 | %SPHINXBUILD% >NUL 2>NUL 16 | if errorlevel 9009 ( 17 | echo. 18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 19 | echo.installed, then set the SPHINXBUILD environment variable to point 20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 21 | echo.may add the Sphinx directory to PATH. 22 | echo. 23 | echo.If you don't have Sphinx installed, grab it from 24 | echo.http://sphinx-doc.org/ 25 | exit /b 1 26 | ) 27 | 28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 29 | goto end 30 | 31 | :help 32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 33 | 34 | :end 35 | popd 36 | -------------------------------------------------------------------------------- /docs/workflow.rst: -------------------------------------------------------------------------------- 1 | Typical Workflow 2 | ================ 3 | 4 | Although every project will be different, some common things can be 5 | identified in regards to using this test suite tool. 6 | 7 | Overview 8 | -------- 9 | 10 | An EnergyPlus project is typically a new feature being implemented or a 11 | bug fix. In either case, once development is completed, testing must be 12 | performed to ensure the new feature is working properly and that the 13 | changes did not break anything. Ensuring that the new feature is working 14 | properly is not a responsibility of this test suite engine at the 15 | moment, and relies on the developer performing verification and/or 16 | validation of the model. 17 | 18 | Design/Development/Prototype 19 | ---------------------------- 20 | 21 | A project will typically start with a design phase, followed by a review 22 | process before code is actually implemented. Code is then developed to 23 | provide the new or improved capability. Once the code is satisfactory 24 | and the results have been verified, regression testing must be 25 | performed. This is the spot where the test suite tool can be of most 26 | assistance, described in the next section. 27 | 28 | Test 29 | ---- 30 | 31 | To perform regression testing with this tool, only a few steps are 32 | required. 33 | 34 | Identify Baseline 35 | ~~~~~~~~~~~~~~~~~ 36 | 37 | For regression testing, a baseline should be identified. This is likely 38 | a snapshot of the develop branch of the development repository. If your code is 39 | out of date develop, it is beneficial to update the 40 | branch so that the regression testing represents the latest development 41 | snapshot versus only your changes. In any case, the key is that the 42 | difference between the baseline and the proposed changes are only the 43 | changes related to this specific task. 44 | 45 | Build Baseline and Proposed 46 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 | 48 | A completed build, with ``BUILD_FORTRAN`` on, is needed for each of 49 | the baseline and proposed versions. Each build folder should have a 50 | Products subdirectory with the binaries and all other needed material. 51 | 52 | Test Suite Options 53 | ~~~~~~~~~~~~~~~~~~ 54 | 55 | With the tool open, configure the test suite options to point to the appropriate build 56 | directories. Then configure which test suite run 57 | configuration should be run. For a first pass, I would recommend doing 58 | design-days only so that time won’t be wasted should an obvious problem 59 | arise. Next verify the file structure. At this point, it would probably 60 | be a good idea to *save the settings, using File->Save*. 61 | 62 | Select IDFs 63 | ~~~~~~~~~~~ 64 | 65 | Configure which idfs are supposed to be run using the selection 66 | and deselection buttons and options. 67 | 68 | Running Suites 69 | ~~~~~~~~~~~~~~ 70 | 71 | If all is well, run the test suite. At this point, the developer must 72 | process the results to determine if changes need to be made and require 73 | a rebuild. If so, the design day tests should be run again. A subset of 74 | the example files may be run at this point just on problem files. Once 75 | these results are satisfactory, a full annual simulation is useful 76 | followed by a check of the composite error files to make sure new error 77 | messages are not present. 78 | -------------------------------------------------------------------------------- /energyplus_regressions/__init__.py: -------------------------------------------------------------------------------- 1 | NAME = 'energyplus_regressions' 2 | VERSION = '2.1.6' 3 | -------------------------------------------------------------------------------- /energyplus_regressions/__main__.py: -------------------------------------------------------------------------------- 1 | from energyplus_regressions.runner import main_gui 2 | 3 | 4 | main_gui() 5 | -------------------------------------------------------------------------------- /energyplus_regressions/builds/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/builds/__init__.py -------------------------------------------------------------------------------- /energyplus_regressions/builds/install.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from energyplus_regressions.builds.base import BaseBuildDirectoryStructure, BuildTree 4 | from energyplus_regressions.ep_platform import exe_extension 5 | 6 | 7 | class EPlusInstallDirectory(BaseBuildDirectoryStructure): 8 | 9 | def set_build_directory(self, build_directory: Path): 10 | """ 11 | This method takes a build directory, and updates any dependent member variables, in this case the source dir. 12 | This method *does* allow an invalid build_directory, as could happen during program initialization 13 | 14 | :param build_directory: 15 | :return: 16 | """ 17 | self.build_directory: Path = build_directory 18 | if not self.build_directory.exists(): 19 | self.source_directory = Path('unknown') 20 | return 21 | # For an E+ install, the source directory is kinda just the root repo 22 | self.source_directory = build_directory 23 | 24 | def get_idf_directory(self) -> Path: 25 | if not self.build_directory: 26 | raise Exception('Build directory has not been set with set_build_directory()') 27 | return self.source_directory / 'ExampleFiles' 28 | 29 | def get_build_tree(self) -> BuildTree: 30 | if not self.build_directory: 31 | raise Exception('Build directory has not been set with set_build_directory()') 32 | this_exe_ext = exe_extension() 33 | b = BuildTree() 34 | b.build_dir = self.build_directory 35 | b.source_dir = self.source_directory 36 | b.energyplus = self.build_directory / ('energyplus' + this_exe_ext) 37 | b.basement = self.build_directory / 'PreProcess' / 'GrndTempCalc' / ('Basement' + this_exe_ext) 38 | b.idd_path = self.build_directory / 'Energy+.idd' 39 | b.slab = self.build_directory / 'PreProcess' / 'GrndTempCalc' / ('Slab' + this_exe_ext) 40 | b.basementidd = self.build_directory / 'PreProcess' / 'GrndTempCalc' / 'BasementGHT.idd' 41 | b.slabidd = self.build_directory / 'PreProcess' / 'GrndTempCalc' / 'SlabGHT.idd' 42 | b.expandobjects = self.build_directory / ('ExpandObjects' + this_exe_ext) 43 | b.epmacro = self.build_directory / ('EPMacro' + this_exe_ext) 44 | b.readvars = self.build_directory / 'PostProcess' / 'ReadVarsESO' 45 | pre = 'ParametricPreprocessor' + this_exe_ext 46 | b.parametric = self.build_directory / 'PreProcess' / 'ParametricPreprocessor' / pre 47 | b.test_files_dir = self.source_directory / 'ExampleFiles' 48 | b.weather_dir = self.source_directory / 'WeatherData' 49 | b.data_sets_dir = self.source_directory / 'DataSets' 50 | return b 51 | -------------------------------------------------------------------------------- /energyplus_regressions/builds/makefile.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | 3 | from energyplus_regressions.builds.base import BaseBuildDirectoryStructure, BuildTree 4 | from energyplus_regressions.ep_platform import exe_extension 5 | 6 | 7 | class CMakeCacheMakeFileBuildDirectory(BaseBuildDirectoryStructure): 8 | 9 | def set_build_directory(self, build_directory: Path): 10 | """ 11 | This method takes a build directory, and updates any dependent member variables, in this case the source dir. 12 | This method *does* allow an invalid build_directory, as could happen during program initialization 13 | 14 | :param build_directory: 15 | :return: 16 | """ 17 | self.build_directory: Path = build_directory 18 | if not self.build_directory.exists(): 19 | self.source_directory = Path("unknown") 20 | return 21 | cmake_cache_file = self.build_directory / 'CMakeCache.txt' 22 | if not cmake_cache_file.exists(): 23 | raise Exception('Could not find cache file in build directory') 24 | with open(cmake_cache_file, 'r') as f_cache: 25 | for this_line in f_cache.readlines(): 26 | if 'CMAKE_HOME_DIRECTORY:INTERNAL=' in this_line: 27 | tokens = this_line.strip().split('=') 28 | self.source_directory = Path(tokens[1]) 29 | break 30 | else: 31 | raise Exception('Could not find source directory spec in the CMakeCache file') 32 | 33 | def get_idf_directory(self) -> Path: 34 | if not self.build_directory: 35 | raise Exception('Build directory has not been set with set_build_directory()') 36 | return self.source_directory / 'testfiles' 37 | 38 | def get_build_tree(self) -> BuildTree: 39 | if not self.build_directory: 40 | raise Exception('Build directory has not been set with set_build_directory()') 41 | this_exe_ext = exe_extension() 42 | b = BuildTree() 43 | b.build_dir = self.build_directory 44 | b.source_dir = self.source_directory 45 | b.energyplus = self.build_directory / 'Products' / ('energyplus' + this_exe_ext) 46 | b.basement = self.build_directory / 'Products' / ('Basement' + this_exe_ext) 47 | b.idd_path = self.build_directory / 'Products' / 'Energy+.idd' 48 | b.slab = self.build_directory / 'Products' / ('Slab' + this_exe_ext) 49 | b.basementidd = self.build_directory / 'Products' / 'BasementGHT.idd' 50 | b.slabidd = self.build_directory / 'Products' / 'SlabGHT.idd' 51 | b.expandobjects = self.build_directory / 'Products' / ('ExpandObjects' + this_exe_ext) 52 | b.epmacro = self.source_directory / 'bin' / 'EPMacro' / 'Linux' / ('EPMacro' + this_exe_ext) 53 | b.readvars = self.build_directory / 'Products' / ('ReadVarsESO' + this_exe_ext) 54 | b.parametric = self.build_directory / 'Products' / ('ParametricPreprocessor' + this_exe_ext) 55 | b.test_files_dir = self.source_directory / 'testfiles' 56 | b.weather_dir = self.source_directory / 'weather' 57 | b.data_sets_dir = self.source_directory / 'datasets' 58 | return b 59 | -------------------------------------------------------------------------------- /energyplus_regressions/builds/visualstudio.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | from typing import Callable 3 | 4 | from energyplus_regressions.builds.base import BaseBuildDirectoryStructure, BuildTree 5 | from energyplus_regressions.structures import ConfigType 6 | 7 | 8 | class CMakeCacheVisualStudioBuildDirectory(BaseBuildDirectoryStructure): 9 | """ 10 | A Visual Studio based build directory class 11 | This tries to use a "Release" folder, but if it does not exist it tries to fall back to a "Debug" folder 12 | """ 13 | 14 | def __init__(self): 15 | super(CMakeCacheVisualStudioBuildDirectory, self).__init__() 16 | self.build_mode: str = ConfigType.RELEASE.value 17 | 18 | def set_build_mode(self, config: ConfigType, error_callback: Callable[[str], None] | None = None) -> None: 19 | build_mode_folder = config.value 20 | desired_build_directory = self.build_directory / 'Products' / build_mode_folder 21 | if desired_build_directory.exists(): 22 | self.build_mode = config.value 23 | else: 24 | if error_callback: 25 | error_callback( 26 | f"Attempted to set build mode as {config.value} but did not detect build dir, use caution! :)" 27 | ) 28 | build_mode_folder = 'Release' 29 | release_folder = self.build_directory / 'Products' / build_mode_folder 30 | release_folder_exists = release_folder.exists() 31 | if release_folder_exists: 32 | self.build_mode = ConfigType.RELEASE.value 33 | else: # Finally, if we can't find release either, just set it to debug and let the user deal with it 34 | self.build_mode = ConfigType.DEBUG.value 35 | 36 | def set_build_directory(self, build_directory: Path) -> None: 37 | """ 38 | This method takes a build directory, and updates any dependent member variables, in this case the source dir. 39 | This method *does* allow an invalid build_directory, as could happen during program initialization 40 | 41 | :param build_directory: 42 | :return: 43 | """ 44 | self.build_directory: Path = build_directory 45 | if not self.build_directory.exists(): 46 | self.source_directory = Path('unknown') 47 | return 48 | cmake_cache_file = self.build_directory / 'CMakeCache.txt' 49 | with open(cmake_cache_file, 'r') as f_cache: 50 | for this_line in f_cache.readlines(): 51 | if 'CMAKE_HOME_DIRECTORY:INTERNAL=' in this_line: 52 | tokens = this_line.strip().split('=') 53 | self.source_directory = Path(tokens[1]) 54 | break 55 | else: 56 | raise Exception('Could not find source directory spec in the CMakeCache file') 57 | 58 | def get_idf_directory(self) -> Path: 59 | if not self.build_directory: 60 | raise Exception('Build directory has not been set with set_build_directory()') 61 | return self.source_directory / 'testfiles' 62 | 63 | def get_build_tree(self) -> BuildTree: 64 | if not self.build_directory: 65 | raise Exception('Build directory has not been set with set_build_directory()') 66 | b = BuildTree() 67 | b.build_dir = self.build_directory 68 | b.source_dir = self.source_directory 69 | b.energyplus = self.build_directory / 'Products' / self.build_mode / 'energyplus.exe' 70 | b.basement = self.build_directory / 'Products' / 'Basement.exe' 71 | b.idd_path = self.build_directory / 'Products' / 'Energy+.idd' 72 | b.slab = self.build_directory / 'Products' / 'Slab.exe' 73 | b.basementidd = self.build_directory / 'Products' / 'BasementGHT.idd' 74 | b.slabidd = self.build_directory / 'Products' / 'SlabGHT.idd' 75 | b.expandobjects = self.build_directory / 'Products' / 'ExpandObjects.exe' 76 | b.epmacro = self.source_directory / 'bin' / 'EPMacro' / 'Linux' / 'EPMacro.exe' 77 | b.readvars = self.build_directory / 'Products' / 'ReadVarsESO.exe' 78 | b.parametric = self.build_directory / 'Products' / 'ParametricPreprocessor.exe' 79 | b.test_files_dir = self.source_directory / 'testfiles' 80 | b.weather_dir = self.source_directory / 'weather' 81 | b.data_sets_dir = self.source_directory / 'datasets' 82 | return b 83 | -------------------------------------------------------------------------------- /energyplus_regressions/configure.py: -------------------------------------------------------------------------------- 1 | from plan_tools.entry_point import EntryPoint 2 | 3 | 4 | def configure_cli() -> None: 5 | source_dir = "energyplus_regressions" 6 | name = "energyplus_regression_runner" 7 | description = "An EnergyPlus test suite utility" 8 | nice_name = "EnergyPlus Regression Tool" 9 | s = EntryPoint(source_dir, name, nice_name, description, name) 10 | s.run() 11 | -------------------------------------------------------------------------------- /energyplus_regressions/diffs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/diffs/__init__.py -------------------------------------------------------------------------------- /energyplus_regressions/diffs/math_diff.config: -------------------------------------------------------------------------------- 1 | # This config file is locked in here so that unit tests can use it 2 | # The actual math_diff config file can be adjusted without concern of breaking unit tests 3 | # 4 | # MathDiff configuration file. Format is: 5 | # ,,= 6 | # , = , 7 | # 8 | # is C, W, kWH, etc. - is unitless, * is wildcard 9 | # is Hourly, Monthly, etc. * is wildcard 10 | # is an absolute threshold value 11 | # is a straight multiplier, not a percent. 12 | # -- if -1 is used, then the diff engine should _ignore_ this threshold and base the diff on just the absolute diff 13 | # Wildcard is * and - is for unitless quantities, e.g., ratios. 14 | # Defaults and overrides work the way you would think for aggregations, 15 | # although you can default either aggregation or both unit and aggregation, not just unit. 16 | # Alphas are case sensitive. 17 | # 18 | # Default thresholds 19 | *, * = 0.001, 0.005 20 | # Temperature specific thresholds (-1 means don't base diffs on relative threshold _at all_, just abs diff) 21 | C, Timestep = 0.2, -1 22 | C, Hourly = 0.2, -1 23 | C, Monthly = 1.0, -1 24 | C, * = 0.2, -1 25 | F, Timestep = 0.2, -1 26 | F, Hourly = 0.2, -1 27 | F, Monthly = 1.0, -1 28 | F, * = 0.2, 100 29 | # Power/energy thresholds 30 | W, * = 0.1, 0.005 31 | J, Hourly = 360, 0.005 32 | J, Daily = 8640, 0.005 33 | J, Monthly = 250000, 0.005 34 | # Hour thresholds (for unmet hours, time-bins, or timestamps of peak values) 35 | hr, TIMESTAMP = 2.0, 0.1 36 | hr, * = 0.5, 0.005 37 | min, TIMESTAMP = 45.0, 0.1 38 | min, * = 10, 0.1 39 | -------------------------------------------------------------------------------- /energyplus_regressions/diffs/mycsv.py: -------------------------------------------------------------------------------- 1 | # Copyright (C) 2009 Santosh Philip 2 | # This file is part of mathdiff. 3 | # 4 | # mathdiff is free software: you can redistribute it and/or modify 5 | # it under the terms of the GNU General Public License as published by 6 | # the Free Software Foundation, either version 3 of the License, or 7 | # (at your option) any later version. 8 | # 9 | # mathdiff is distributed in the hope that it will be useful, 10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | # GNU General Public License for more details. 13 | # 14 | # You should have received a copy of the GNU General Public License 15 | # along with mathdiff. If not, see . 16 | 17 | import csv 18 | import sys 19 | 20 | 21 | class MyCsv(Exception): 22 | pass 23 | 24 | 25 | class BadMatrice(MyCsv): 26 | pass 27 | 28 | 29 | class BadInput(MyCsv): 30 | pass 31 | 32 | 33 | def readcsv(filename): 34 | """read csv file fname into a matrice mat 35 | Also reads a string instead of a file 36 | """ 37 | try: 38 | with open(filename) as f: 39 | reader = csv.reader(f) # if it is a file 40 | data = [] 41 | for line in reader: 42 | # print ("%s : %s" % (filename, line)) 43 | data.append(line) 44 | return data 45 | except: 46 | try: 47 | lines = filename.split('\n') 48 | data = [] 49 | for line in lines: 50 | if line.strip() == '': 51 | break 52 | # print ("%s : %s" % (filename, line)) 53 | data.append(line.strip().split(',')) 54 | return data 55 | except: 56 | raise BadInput('csv source is neither a file nor a file object') 57 | 58 | 59 | def writecsv(mat, outfile=None, mode='w'): 60 | """write the matrice mat into a file fname 61 | """ 62 | if not ismatrice(mat): 63 | raise BadMatrice('The input is not a matrice') 64 | if outfile: 65 | with open(outfile, mode) as f_out: 66 | writer = csv.writer(f_out) 67 | writer.writerows(mat) 68 | else: 69 | out_str = '' 70 | for row in mat: 71 | for i, cell in enumerate(row): 72 | max_col_num = len(row) - 1 73 | if i < max_col_num: 74 | out_str += str(cell) + ',' 75 | else: 76 | out_str += str(cell) + '\n' 77 | return out_str 78 | 79 | 80 | def ismatrice(mat): 81 | """test if the matrice mat is a csv matrice 82 | """ 83 | # test for iterability over rows 84 | try: 85 | iter(mat) 86 | except TypeError: 87 | return False 88 | # test for rows 89 | for row in mat: 90 | if not isinstance(row, list): 91 | return False 92 | # test if cell is float, int or string 93 | for row in mat: 94 | for cell in row: 95 | if type(cell) not in (float, int): 96 | if sys.version_info[0] == 2: 97 | # I would like to just redefine basestring to str on Python 2 but I don't have time right now 98 | if not isinstance(cell, basestring): # noqa: F821 # pragma: no cover 99 | return False 100 | else: # python 3 101 | if not isinstance(cell, str): 102 | return False 103 | return True 104 | 105 | 106 | def transpose2d(mtx): 107 | """Transpose a 2d matrix 108 | [ 109 | [1,2,3], 110 | [4,5,6] 111 | ] 112 | becomes 113 | [ 114 | [1,4], 115 | [2,5], 116 | [3,6] 117 | ] 118 | """ 119 | trmtx = [[] for _ in mtx[0]] 120 | for i in range(len(mtx)): 121 | for j in range(len(mtx[i])): 122 | trmtx[j].append(mtx[i][j]) 123 | return trmtx 124 | 125 | 126 | # from python cookbook 2nd edition page 162 127 | 128 | def getlist(fname): 129 | """Gets a list from a csv file 130 | If the csv file has only one column: 131 | it returns [a,b,c,d,e] 132 | if it has more than one column: 133 | it returns [[a,s],[3,r],[v,g]] 134 | This should work with a text file of one column 135 | """ 136 | mat = readcsv(fname) 137 | onecolumn = True 138 | for row in mat: 139 | if len(row) != 1: 140 | onecolumn = False 141 | break 142 | if onecolumn: 143 | mat = transpose2d(mat)[0] 144 | mat[0] = mat[0].strip() 145 | else: 146 | # trim extraneous whitespace from csv headers 147 | mat[0] = [x.strip() for x in mat[0]] 148 | 149 | return mat 150 | -------------------------------------------------------------------------------- /energyplus_regressions/diffs/thresh_dict.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # encoding: utf-8 3 | 4 | """ 5 | configuration file math_diff.config customizes absolute and relative difference thresholds 6 | for different unit/aggregation pairs, for instance: 7 | C,* = 0.1, 0.005 8 | means that all in fields reported in C (degrees celsius) will be compared with an absolute 9 | difference tolerance of 0.1 degree C and 0.005 (0.5%) relative difference tolerance. 10 | """ 11 | 12 | # Copyright (C) 2013 Amir Roth 13 | # This file is part of mathdiff. 14 | # 15 | # mathdiff is free software: you can redistribute it and/or modify 16 | # it under the terms of the GNU General Public License as published by 17 | # the Free Software Foundation, either version 3 of the License, or 18 | # (at your option) any later version. 19 | # 20 | # mathdiff is distributed in the hope that it will be useful, 21 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 | # GNU General Public License for more details. 24 | # 25 | # You should have received a copy of the GNU General Public License 26 | # along with mathdiff. If not, see . 27 | # VERSION: 1.3 28 | 29 | 30 | __author__ = "Amir Roth (amir dot roth at ee dot doe dot gov)" 31 | __version__ = "1.4" 32 | __copyright__ = "Copyright (c) 2013 Amir Roth" 33 | __license__ = "GNU General Public License Version 3" 34 | 35 | import re 36 | 37 | 38 | # Load threshold dictionary from math_diff.config file 39 | class ThreshDict(object): 40 | 41 | def __init__(self, tdname): 42 | self.thresholds = {} 43 | f = open(tdname, 'r') 44 | while f: 45 | line = f.readline().rstrip('\n') 46 | line = line.strip() 47 | if line == '': 48 | break 49 | # Ignore comment lines 50 | if line[0] == '#': 51 | continue 52 | # noinspection PyBroadException 53 | try: 54 | # Split off end-of-line comments 55 | if line.find('#') > -1: 56 | line = line[:line.find('#')] 57 | 58 | [unit, agg, abs_thresh, rel_thresh] = [x.strip() for x in re.split('[,=]', line) if x != ''] 59 | tag = unit + '|' + agg 60 | 61 | if tag in self.thresholds: 62 | # 'Over-riding existing entry for %s in threshold dictionary math_diff.config' % tag, 63 | pass 64 | 65 | self.thresholds[tag] = (float(abs_thresh), float(rel_thresh)) 66 | except Exception: 67 | # print('Skipping line <%s> because %s' % (line, str(exc)), file=sys.stderr) 68 | pass 69 | 70 | f.close() 71 | 72 | def lookup(self, hstr): 73 | # Lookup a threshold value in the dictionary using a report column 74 | # header string and a differencing type (relative or absolute) 75 | 76 | if hstr == 'Date/Time' or hstr == 'Time': 77 | return 0.0, 0.0 78 | 79 | if hstr == 'Version ID': # allow version number changes to pass without throwing table diffs 80 | return 100.0, 100.0 81 | 82 | # Parse hstr (column header) to extract Unit and Aggregation 83 | 84 | # noinspection PyBroadException 85 | try: 86 | if hstr.find('[]') == -1 and hstr.find('[') > -1: 87 | tokens = [x.strip() for x in re.split(r'[\[\]]', hstr) if x.strip() != ''] 88 | unit = tokens[1] if len(tokens) > 1 else tokens[0] 89 | else: 90 | unit = '*' 91 | if hstr.find('{}') == -1 and hstr.find('{') > -1: 92 | tokens = [x.strip() for x in re.split(r'[{}]', hstr) if x.strip() != ''] 93 | agg = tokens[1] if len(tokens) > 1 else tokens[0] 94 | else: 95 | agg = '*' 96 | 97 | except: # pragma: no cover - I could not figure out how to get an exception 98 | # print >> sys.stderr, 'PROBLEM: cannot figure out unit/aggregation for ' + hstr + ', defaulting to *,*' 99 | unit = '*' 100 | agg = '*' 101 | 102 | tag = unit + '|' + agg 103 | tag_d1 = unit + '|*' 104 | tag_d2 = '*|*' 105 | # Look for matching Quantity and Aggregation 106 | if tag in self.thresholds: 107 | return self.thresholds[tag] 108 | # Then just matching Quantity 109 | elif tag_d1 in self.thresholds: 110 | return self.thresholds[tag_d1] 111 | # Then the global default 112 | elif tag_d2 in self.thresholds: 113 | return self.thresholds[tag_d2] 114 | else: 115 | return 0.0, 0.0 116 | -------------------------------------------------------------------------------- /energyplus_regressions/ep_platform.py: -------------------------------------------------------------------------------- 1 | from enum import auto, Enum 2 | import sys 3 | from typing import Optional 4 | 5 | 6 | class Platforms(Enum): 7 | Linux = auto() 8 | Mac = auto() 9 | Windows = auto() 10 | 11 | 12 | def platform(force_test_string: Optional[str] = None) -> Platforms: 13 | if force_test_string: 14 | platform_string = force_test_string 15 | else: 16 | platform_string = sys.platform # pragma: no cover 17 | 18 | if "linux" in platform_string: 19 | return Platforms.Linux 20 | elif "darwin" in platform_string: 21 | return Platforms.Mac 22 | elif "win" in platform_string: 23 | return Platforms.Windows 24 | else: 25 | raise Exception('Unsupported OS!, Platform string = \"%s\"' % platform_string) 26 | 27 | 28 | def exe_extension(force_test_platform: Optional[Platforms] = None): 29 | if force_test_platform: 30 | this_platform = force_test_platform 31 | else: 32 | this_platform = platform() # pragma: no cover 33 | 34 | _exe_extension = '' 35 | if this_platform == Platforms.Windows: 36 | _exe_extension = '.exe' 37 | return _exe_extension 38 | -------------------------------------------------------------------------------- /energyplus_regressions/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/icons/icon.icns -------------------------------------------------------------------------------- /energyplus_regressions/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/icons/icon.ico -------------------------------------------------------------------------------- /energyplus_regressions/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/icons/icon.png -------------------------------------------------------------------------------- /energyplus_regressions/runner.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | # main entry point into my_app, for either command line operation or gui operation 4 | # if no command line args are given, it is gui operation 5 | # but don't try to import any Tk/Gui stuff unless we are doing GUI operation 6 | 7 | # TODO: Add unit test coverage once we start adding more entry points, remove from omission block in .coveragerc 8 | 9 | from multiprocessing import set_start_method 10 | from platform import system 11 | from sys import argv 12 | 13 | 14 | def main_gui(): 15 | from energyplus_regressions.tk_window import MyApp 16 | app = MyApp() 17 | app.run() 18 | 19 | 20 | if __name__ == "__main__": 21 | if system() == 'Darwin': 22 | set_start_method('forkserver') 23 | if len(argv) == 1: # GUI 24 | main_gui() 25 | else: # Non-GUI operation, execute some command 26 | ... 27 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/__init__.py -------------------------------------------------------------------------------- /energyplus_regressions/tests/builds/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/builds/__init__.py -------------------------------------------------------------------------------- /energyplus_regressions/tests/builds/test_base.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | import tempfile 4 | import unittest 5 | 6 | from energyplus_regressions.builds.base import BaseBuildDirectoryStructure, autodetect_build_dir_type, KnownBuildTypes 7 | 8 | 9 | class TestAutoDetectBuildType(unittest.TestCase): 10 | 11 | def setUp(self): 12 | self.build_dir = Path(tempfile.mkdtemp()) 13 | 14 | def add_cache_file(self, content): 15 | cache_file = self.build_dir / 'CMakeCache.txt' 16 | with cache_file.open('w') as f: 17 | f.write(content) 18 | 19 | def add_subdirectory(self, dir_name): 20 | os.makedirs(os.path.join(self.build_dir, dir_name)) 21 | 22 | def test_empty_dir_is_unknown(self): 23 | self.assertEqual(KnownBuildTypes.Unknown, autodetect_build_dir_type(self.build_dir)) 24 | 25 | def test_detect_install(self): 26 | self.add_subdirectory('ExampleFiles') 27 | self.assertEqual(KnownBuildTypes.Installation, autodetect_build_dir_type(self.build_dir)) 28 | 29 | def test_detect_makefile(self): 30 | self.add_cache_file('CMAKE_GENERATOR:INTERNAL=Unix Makefiles') 31 | self.assertEqual(KnownBuildTypes.Makefile, autodetect_build_dir_type(self.build_dir)) 32 | 33 | def test_detect_visual_studio(self): 34 | self.add_cache_file('CMAKE_GENERATOR:INTERNAL=Visual Studio 2019') 35 | self.assertEqual(KnownBuildTypes.VisualStudio, autodetect_build_dir_type(self.build_dir)) 36 | 37 | def test_detect_ninja(self): 38 | self.add_cache_file('CMAKE_GENERATOR:INTERNAL=Ninja') 39 | self.assertEqual(KnownBuildTypes.Makefile, autodetect_build_dir_type(self.build_dir)) 40 | 41 | 42 | class TestBaseBuildMethods(unittest.TestCase): 43 | 44 | def setUp(self): 45 | self.base_build = BaseBuildDirectoryStructure() 46 | 47 | def test_set_build_directory_abstract(self): 48 | with self.assertRaises(NotImplementedError): 49 | self.base_build.set_build_directory(Path()) 50 | 51 | def test_get_build_tree_abstract(self): 52 | with self.assertRaises(NotImplementedError): 53 | self.base_build.get_build_tree() 54 | 55 | def test_get_idf_directory(self): 56 | with self.assertRaises(NotImplementedError): 57 | self.base_build.get_idf_directory() 58 | 59 | def test_verify_without_setting_build_dir(self): 60 | with self.assertRaises(Exception): 61 | self.base_build.verify() 62 | 63 | def test_get_idfs(self): 64 | temp_idf_dir = Path(tempfile.mkdtemp()) 65 | self.assertSetEqual(set(), self.base_build.get_idfs_in_dir(temp_idf_dir)) 66 | with open(os.path.join(temp_idf_dir, 'file1.idf'), 'w') as f: 67 | f.write('hi') 68 | with open(os.path.join(temp_idf_dir, 'file2.iQQ'), 'w') as f: 69 | f.write('he') 70 | with open(os.path.join(temp_idf_dir, 'file3.idf'), 'w') as f: 71 | f.write('ha') 72 | with open(os.path.join(temp_idf_dir, 'file4.imf'), 'w') as f: 73 | f.write('ha') # macro 74 | with open(os.path.join(temp_idf_dir, '_ExternalInterface-actuator.idf'), 'w') as f: 75 | f.write('ha') # ext interface as FMU 76 | with open(os.path.join(temp_idf_dir, 'HVAC3ZoneGeometry.imf'), 'w') as f: 77 | f.write('ha') # macro resource file 78 | os.makedirs(os.path.join(temp_idf_dir, 'API')) 79 | with open(os.path.join(temp_idf_dir, 'API', 'API_TestFile.idf'), 'w') as f: 80 | f.write('ha') # API called input file that we skip 81 | # TODO: Modify the test to expect relevant IMF files as well and fix the function 82 | self.assertEqual(3, len(self.base_build.get_idfs_in_dir(temp_idf_dir))) 83 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/builds/test_install.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import tempfile 3 | import unittest 4 | 5 | from energyplus_regressions.builds.base import BuildTree 6 | from energyplus_regressions.builds.install import EPlusInstallDirectory 7 | 8 | 9 | class TestEPInstallBuildMethods(unittest.TestCase): 10 | 11 | def setUp(self): 12 | self.build = EPlusInstallDirectory() 13 | self.run_dir = Path(tempfile.mkdtemp()) 14 | 15 | def test_set_build_directory_does_not_exist(self): 16 | self.build.set_build_directory(Path('z')) 17 | self.assertIn('unknown', str(self.build.source_directory)) 18 | 19 | def test_set_build_directory_does_exist(self): 20 | self.build.set_build_directory(self.run_dir) 21 | self.assertEqual(self.run_dir, self.build.source_directory) 22 | 23 | def test_verify_before_setting_build_directory(self): 24 | with self.assertRaises(Exception): 25 | self.build.verify() 26 | 27 | def test_verify_but_nothing_exists(self): 28 | self.build.set_build_directory(self.run_dir) 29 | check = self.build.verify() 30 | self.assertIsInstance(check, list) 31 | self.assertGreaterEqual(len(check), 4) # there should be some errors 32 | 33 | def test_get_build_tree_before_setting_build_directory(self): 34 | with self.assertRaises(Exception): 35 | self.build.get_build_tree() 36 | 37 | def test_get_build_tree(self): 38 | self.build.set_build_directory(self.run_dir) 39 | tree = self.build.get_build_tree() 40 | self.assertIsInstance(tree, BuildTree) 41 | 42 | def test_get_idf_dir_before_setting_build_directory(self): 43 | with self.assertRaises(Exception): 44 | self.build.get_idf_directory() 45 | 46 | def test_get_idf_dir(self): 47 | self.build.set_build_directory(self.run_dir) 48 | idf_dir = self.build.get_idf_directory() 49 | self.assertEqual(self.run_dir / 'ExampleFiles', idf_dir) 50 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/builds/test_makefile.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pathlib import Path 3 | import tempfile 4 | import unittest 5 | 6 | from energyplus_regressions.builds.base import BuildTree 7 | from energyplus_regressions.builds.makefile import CMakeCacheMakeFileBuildDirectory 8 | 9 | 10 | class TestMakefileBuildMethods(unittest.TestCase): 11 | 12 | def setUp(self): 13 | self.build = CMakeCacheMakeFileBuildDirectory() 14 | self.run_dir = Path(tempfile.mkdtemp()) 15 | self.dummy_source_dir = Path('/dummy/source/dir') 16 | 17 | def set_cache_file(self): 18 | with open(os.path.join(self.run_dir, 'CMakeCache.txt'), 'w') as f: 19 | f.write('HEY\n') 20 | f.write('CMAKE_HOME_DIRECTORY:INTERNAL=%s\n' % self.dummy_source_dir) 21 | f.write('HEY AGAIN\n') 22 | 23 | def test_set_build_directory_does_not_exist(self): 24 | self.build.set_build_directory(Path('z')) 25 | self.assertIn('unknown', str(self.build.source_directory)) 26 | 27 | def test_set_build_directory_does_exist_but_no_cache(self): 28 | with self.assertRaises(Exception): 29 | self.build.set_build_directory(self.run_dir) 30 | 31 | def test_set_build_directory_does_exist_but_empty_cache(self): 32 | with open(os.path.join(self.run_dir, 'CMakeCache.txt'), 'w') as f: 33 | f.write('\n') 34 | with self.assertRaises(Exception): 35 | self.build.set_build_directory(self.run_dir) 36 | 37 | def test_set_build_directory_and_has_cache(self): 38 | self.set_cache_file() 39 | self.build.set_build_directory(self.run_dir) 40 | self.assertEqual(self.dummy_source_dir, self.build.source_directory) 41 | 42 | def test_verify_before_setting_build_directory(self): 43 | with self.assertRaises(Exception): 44 | self.build.verify() 45 | 46 | def test_verify_but_nothing_exists(self): 47 | self.set_cache_file() 48 | self.build.set_build_directory(self.run_dir) 49 | check = self.build.verify() 50 | self.assertIsInstance(check, list) 51 | self.assertGreaterEqual(len(check), 4) # there should be some errors 52 | 53 | def test_get_build_tree_before_setting_build_directory(self): 54 | with self.assertRaises(Exception): 55 | self.build.get_build_tree() 56 | 57 | def test_get_build_tree(self): 58 | self.set_cache_file() 59 | self.build.set_build_directory(self.run_dir) 60 | tree = self.build.get_build_tree() 61 | self.assertIsInstance(tree, BuildTree) 62 | 63 | def test_get_idf_dir_before_setting_build_directory(self): 64 | with self.assertRaises(Exception): 65 | self.build.get_idf_directory() 66 | 67 | def test_get_idf_dir(self): 68 | self.set_cache_file() 69 | self.build.set_build_directory(self.run_dir) 70 | idf_dir = self.build.get_idf_directory() 71 | self.assertEqual(self.dummy_source_dir / 'testfiles', idf_dir) 72 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/diffs/__init__.py -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_bad_numeric.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.76450.0 3 | 01/21 02:00:00,20.5999,49227.47950.0 4 | 01/21 03:00:00,20.5999,49824.70480.0 5 | 01/21 04:00:00,20.5999,50339.72300.0 6 | 01/21 05:00:00,20.5999,50787.90430.0 7 | 01/21 06:00:00,20.5999,51220.80220.0 8 | 01/21 07:00:00,20.5999,51594.31630.0 9 | 01/21 08:00:00,20.5999,92827.72790.0 10 | 01/21 09:00:00,20.5999,83743.07730.0 11 | 01/21 10:00:00,20.5999,81058.18110.0 12 | 01/21 11:00:00,20.5999,78987.43000.0 13 | 01/21 12:00:00,20.5999,77362.27870.0 14 | 01/21 13:00:00,20.5999,76066.99400.0 15 | 01/21 14:00:00,20.5999,74923.00170.0 16 | 01/21 15:00:00,20.5999,73972.79390.0 17 | 01/21 16:00:00,20.5999,73148.68060.0 18 | 01/21 17:00:00,20.5999,72468.10000.0 19 | 01/21 18:00:00,20.5999,31805.57580.0 20 | 01/21 19:00:00,20.5999,41006.69260.0 21 | 01/21 20:00:00,20.5999,43051.07830.0 22 | 01/21 21:00:00,20.5999,44624.37680.0 23 | 01/21 22:00:00,20.5999,45894.46180.0 24 | 01/21 23:00:00,20.5999,46968.05140.0 25 | 01/21 24:00:00,20.5999,47805.01140.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_big_temp_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.8999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_big_watt_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,58620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,59824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_change_column_order.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,0.0,48620.7645 3 | 01/21 02:00:00,20.5999,0.0,49227.4795 4 | 01/21 03:00:00,20.5999,0.0,49824.7048 5 | 01/21 04:00:00,20.5999,0.0,50339.7230 6 | 01/21 05:00:00,20.5999,0.0,50787.9043 7 | 01/21 06:00:00,20.5999,0.0,51220.8022 8 | 01/21 07:00:00,20.5999,0.0,51594.3163 9 | 01/21 08:00:00,20.5999,0.0,92827.7279 10 | 01/21 09:00:00,20.5999,0.0,83743.0773 11 | 01/21 10:00:00,20.5999,0.0,81058.1811 12 | 01/21 11:00:00,20.5999,0.0,78987.4300 13 | 01/21 12:00:00,20.5999,0.0,77362.2787 14 | 01/21 13:00:00,20.5999,0.0,76066.9940 15 | 01/21 14:00:00,20.5999,0.0,74923.0017 16 | 01/21 15:00:00,20.5999,0.0,73972.7939 17 | 01/21 16:00:00,20.5999,0.0,73148.6806 18 | 01/21 17:00:00,20.5999,0.0,72468.1000 19 | 01/21 18:00:00,20.5999,0.0,31805.5758 20 | 01/21 19:00:00,20.5999,0.0,41006.6926 21 | 01/21 20:00:00,20.5999,0.0,43051.0783 22 | 01/21 21:00:00,20.5999,0.0,44624.3768 23 | 01/21 22:00:00,20.5999,0.0,45894.4618 24 | 01/21 23:00:00,20.5999,0.0,46968.0514 25 | 01/21 24:00:00,20.5999,0.0,47805.0114 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_change_column_order_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly) 2 | 01/21 01:00:00,22.5999,0.0,48620.7645 3 | 01/21 02:00:00,20.5999,0.0,43227.4795 4 | 01/21 03:00:00,20.5999,0.0,49824.7048 5 | 01/21 04:00:00,20.5199,0.0,50339.7230 6 | 01/21 05:00:00,20.5999,0.0,50787.9043 7 | 01/21 06:00:00,20.5999,0.0,51220.8022 8 | 01/21 07:00:00,20.5999,0.0,51594.3163 9 | 01/21 08:00:00,20.5999,0.0,92827.7279 10 | 01/21 09:00:00,20.5999,0.0,83743.0773 11 | 01/21 10:00:00,20.5999,0.0,81058.1811 12 | 01/21 11:00:00,20.5999,0.0,78987.4300 13 | 01/21 12:00:00,20.5999,0.0,77362.2787 14 | 01/21 13:00:00,20.5999,0.0,76066.9940 15 | 01/21 14:00:00,20.5999,0.0,74923.0017 16 | 01/21 15:00:00,20.5999,0.0,73972.7939 17 | 01/21 16:00:00,20.5999,0.0,73148.6806 18 | 01/21 17:00:00,20.5999,0.0,72468.1000 19 | 01/21 18:00:00,20.5999,0.0,31805.5758 20 | 01/21 19:00:00,20.5999,0.0,41006.6926 21 | 01/21 20:00:00,20.5999,0.0,43051.0783 22 | 01/21 21:00:00,20.5999,0.0,44624.3768 23 | 01/21 22:00:00,20.5999,0.0,45894.4618 24 | 01/21 23:00:00,20.5999,0.0,46968.0514 25 | 01/21 24:00:00,20.5999,0.0,47805.0114 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_changed_timestamps.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0 3 | 01/21 03:00:00,20.5999,49824.7048,0.0 4 | 01/21 04:00:00,20.5999,50339.7230,0.0 5 | 01/21 05:00:00,20.5999,50787.9043,0.0 6 | 01/21 06:00:00,20.5999,51220.8022,0.0 7 | 01/21 07:00:00,20.5999,51594.3163,0.0 8 | 01/21 08:00:00,20.5999,92827.7279,0.0 9 | 01/21 09:00:00,20.5999,83743.0773,0.0 10 | 01/21 10:00:00,20.5999,81058.1811,0.0 11 | 01/21 11:00:00,20.5999,78987.4300,0.0 12 | 01/21 12:00:00,20.5999,77362.2787,0.0 13 | 01/21 13:00:00,20.5999,76066.9940,0.0 14 | 01/21 14:00:00,20.5999,74923.0017,0.0 15 | 01/21 15:00:00,20.5999,73972.7939,0.0 16 | 01/21 16:00:00,20.5999,73148.6806,0.0 17 | 01/21 17:00:00,20.5999,72468.1000,0.0 18 | 01/21 18:00:00,20.5999,31805.5758,0.0 19 | 01/21 19:00:00,20.5999,41006.6926,0.0 20 | 01/21 20:00:00,20.5999,43051.0783,0.0 21 | 01/21 21:00:00,20.5999,44624.3768,0.0 22 | 01/21 22:00:00,20.5999,45894.4618,0.0 23 | 01/21 23:00:00,20.5999,46968.0514,0.0 24 | 01/21 24:00:00,20.5999,47805.0114,0.0 25 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_duplicate_header.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_empty_data.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_extra_column.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly), SUPER NEW DATA [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0,1.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0,1.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0,1.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0,1.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0,1.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0,1.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0,1.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0,1.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0,1.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0,1.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0,1.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0,1.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0,1.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0,1.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0,1.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0,1.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0,1.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0,1.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0,1.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0,1.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0,1.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0,1.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0,1.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0,1.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_mixed_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.6999,48620.7645,0.0 3 | 01/21 02:00:00,20.7999,49227.4795,0.0 4 | 01/21 03:00:00,20.8999,49824.7048,0.0 5 | 01/21 04:00:00,20.9999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50788.9043,0.0 7 | 01/21 06:00:00,20.5999,51270.8022,0.0 8 | 01/21 07:00:00,20.5999,51694.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_more_data_than_headers.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,-99999.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_small_temp_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.6999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_small_watt_diffs.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48622.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49826.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_totally_different_headers.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature DUMB [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate DUMB [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate DUMB [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758,0.0 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_totally_empty.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/diffs/csv_resources/eplusout_totally_empty.csv -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/eplusout_with_data_holes.csv: -------------------------------------------------------------------------------- 1 | Date/Time,Environment:Site Outdoor Air Wetbulb Temperature [C](Hourly),WEST ZONE:Zone Air System Sensible Heating Rate [W](Hourly),WEST ZONE:Zone Air System Sensible Cooling Rate [W](Hourly) 2 | 01/21 01:00:00,20.5999,48620.7645,0.0 3 | 01/21 02:00:00,20.5999,49227.4795,0.0 4 | 01/21 03:00:00,20.5999,49824.7048,0.0 5 | 01/21 04:00:00,20.5999,50339.7230,0.0 6 | 01/21 05:00:00,20.5999,50787.9043,0.0 7 | 01/21 06:00:00,20.5999,51220.8022,0.0 8 | 01/21 07:00:00,20.5999,51594.3163,0.0 9 | 01/21 08:00:00,20.5999,92827.7279,0.0 10 | 01/21 09:00:00,20.5999,83743.0773,0.0 11 | 01/21 10:00:00,20.5999,81058.1811,0.0 12 | 01/21 11:00:00,20.5999,78987.4300,0.0 13 | 01/21 12:00:00,20.5999,77362.2787,0.0 14 | 01/21 13:00:00,20.5999,76066.9940,0.0 15 | 01/21 14:00:00,20.5999,74923.0017,0.0 16 | 01/21 15:00:00,20.5999,73972.7939,0.0 17 | 01/21 16:00:00,20.5999,73148.6806,0.0 18 | 01/21 17:00:00,20.5999,72468.1000,0.0 19 | 01/21 18:00:00,20.5999,31805.5758, 20 | 01/21 19:00:00,20.5999,41006.6926,0.0 21 | 01/21 20:00:00,20.5999,43051.0783,0.0 22 | 01/21 21:00:00,20.5999,44624.3768,0.0 23 | 01/21 22:00:00,20.5999,45894.4618,0.0 24 | 01/21 23:00:00,20.5999,46968.0514,0.0 25 | 01/21 24:00:00,20.5999,47805.0114,0.0 26 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/csv_resources/test_math_diff.config: -------------------------------------------------------------------------------- 1 | # This config file is locked in here so that unit tests can use it 2 | # The actual math_diff config file can be adjusted without concern of breaking unit tests 3 | # 4 | # MathDiff configuration file. Format is: 5 | # ,,= 6 | # , = , 7 | # 8 | # is C, W, kWH, etc. - is unitless, * is wildcard 9 | # is Hourly, Monthly, etc. * is wildcard 10 | # is an absolute threshold value 11 | # is a straight multiplier, not a percent. 12 | # -- if -1 is used, then the diff engine should _ignore_ this threshold and base the diff on just the absolute diff 13 | # Wildcard is * and - is for unitless quantities, e.g., ratios. 14 | # Defaults and overrides work the way you would think for aggregations, 15 | # although you can default either aggregation or both unit and aggregation, not just unit. 16 | # Alphas are case sensitive. 17 | # 18 | # Default thresholds 19 | *, * = 0.001, 0.005 20 | # Temperature specific thresholds (-1 means don't base diffs on relative threshold _at all_, just abs diff) 21 | C, Timestep = 0.2, -1 22 | C, Hourly = 0.2, -1 23 | C, Monthly = 1.0, -1 24 | C, * = 0.2, -1 25 | F, Timestep = 0.2, -1 26 | F, Hourly = 0.2, -1 27 | F, Monthly = 1.0, -1 28 | F, * = 0.2, 100 29 | # Power/energy thresholds 30 | W, * = 0.1, 0.005 31 | J, Hourly = 360, 0.005 32 | J, Daily = 8640, 0.005 33 | J, Monthly = 250000, 0.005 34 | # Hour thresholds (for unmet hours, time-bins, or timestamps of peak values) 35 | hr, TIMESTAMP = 2.0, 0.1 36 | hr, * = 0.5, 0.005 37 | min, TIMESTAMP = 45.0, 0.1 38 | min, * = 10, 0.1 39 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_blank_column_heading_diff_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Table of Contents

5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
A
10.40.5300
16 |

17 | 18 | 19 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_blank_column_heading_diff_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

Table of Contents

5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
A
10.40.500
16 |

17 | 18 | 19 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_empty_cell.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_empty_table_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_empty_table_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
Area [m2]
None
90 |

91 | 92 | 93 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_extra_table.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | WHAT IS THIS EXTRA TABLE

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
94 |

95 | Building Area

96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
114 |

115 | 116 | 117 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_big_numeric_diff.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 100.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_big_numeric_diff_and_string_diff_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 18:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]Design Day Name at Sensible Ideal Loads Peak
STRING DIFF Total Site Energy 100.00 0.00 0.00 UNKNOWN
Net Site Energy 0.00 0.00 0.00 UNKNOWN
Total Source Energy 0.00 0.00 0.00 UNKNOWN
Net Source Energy 0.00 0.00 0.00 UNKNOWN
67 |

68 | Site to Source Energy Conversion Factors

69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
83 |

84 | Building Area

85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
103 |

104 | 105 | 106 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_big_numeric_diff_and_string_diff_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 18:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]Design Day Name at Sensible Ideal Loads Peak
STRING DIFF Total Site Energy 100.00 0.00 0.00 TUESDAY
Net Site Energy 20000.00 0.00 0.00 TUESDAY
Total Source Energy 0.00 0.00 0.00 TUESDAY
Net Source Energy 0.00 0.00 0.00 TUESDAY
67 |

68 | Site to Source Energy Conversion Factors

69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
83 |

84 | Building Area

85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
103 |

104 | 105 | 106 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_small_numeric_diff.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.36
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_string_diff_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy HELLO 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_string_diff_case_only.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy hello 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_has_string_diff_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy WORLD 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_heading_change_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Fan Energy IndexEnd Use Subcategory
SPACE1-1 SUPPLY FAN 6.21General
SPACE2-1 SUPPLY FAN 6.21General
20 | 21 | 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_heading_change_mod_with_diff_in_other_column.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Fan Energy IndexEnd Use
SPACE1-1 SUPPLY FAN 6.14General
SPACE2-1 SUPPLY FAN 6.21General
20 | 21 | 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_heading_change_mod_with_diff_in_that_column.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Fan Energy IndexEnd Use
SPACE1-1 SUPPLY FAN 6.21NOT GENERAL AT ALL
SPACE2-1 SUPPLY FAN 6.21General
20 | 21 | 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_heading_change_mod_with_no_other_diffs.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Fan Energy IndexEnd Use
SPACE1-1 SUPPLY FAN 6.21General
SPACE2-1 SUPPLY FAN 6.21General
20 | 21 | 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_missing_a_table.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | 80 | 81 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_missing_table_header_comment.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
34 |

35 | Site to Source Energy Conversion Factors

36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
50 |

51 | Building Area

52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
70 |

71 | 72 | 73 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_no_diff_different_spaces_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_no_diff_different_spaces_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | 100 | 101 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_skips_some_tables_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | Input Fields

100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 |
Count
IDF Objects 3836
Defaulted Fields 3292
Fields with Defaults 15207
Autosized Fields 991
Autosizable Fields 1241
Autocalculated Fields 1456
Autocalculatable Fields 2969
134 |

135 |
136 | 137 | 138 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_skips_some_tables_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
98 |

99 | Input Fields

100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 |
Count
IDF Objects 3836
Defaulted Fields 3292
Fields with Defaults 15207
Autosized Fields 992
Autosizable Fields 1242
Autocalculated Fields 1456
Autocalculatable Fields 2969
134 |

135 |
136 | 137 | 138 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_table_with_different_length.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 | Building Area

80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
94 |

95 | 96 | 97 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_unicode_contents_but_not_utf8_encoded.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/diffs/tbl_resources/eplustbl_unicode_contents_but_not_utf8_encoded.htm -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_versiondiff_base.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 |
80 |

Table of Contents

81 | 82 |

Report: Initialization Summary

83 |

For: Entire Facility

84 |

Timestamp: 2021-10-05 85 | 16:53:24

86 | Version

87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
Version ID
19.6
97 | Building Area

98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
116 |

117 | 118 | 119 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_versiondiff_mod.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bldg DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB ** 5 | 2018-11-20 6 | 17:26:37 7 | - EnergyPlus 8 | 9 | 10 | 11 |

Table of Contents

12 | 13 |

Program Version:EnergyPlus, Version 9.0.1-a7c9cc14ce, YMD=2018.11.20 17:26

14 |

Tabular Output Report in Format: HTML

15 |

Building: Bldg

16 |

Environment: DENVER CENTENNIAL ANN CLG 1% CONDNS DB=>MWB **

17 |

Simulation Timestamp: 2018-11-20 18 | 17:26:37

19 |
20 |

Table of Contents

21 | 22 |

Report: Annual Building Utility Performance Summary

23 |

For: Entire Facility

24 |

Timestamp: 2018-11-20 25 | 17:26:37

26 | Values gathered over 0.00 hours

27 | WARNING: THE REPORT DOES NOT REPRESENT A FULL ANNUAL SIMULATION.

28 |

29 | Site and Source Energy

30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |
Total Energy [GJ]Energy Per Total Building Area [MJ/m2]Energy Per Conditioned Building Area [MJ/m2]
Total Site Energy 0.00 0.00 0.00
Net Site Energy 0.00 0.00 0.00
Total Source Energy 0.00 0.00 0.00
Net Source Energy 0.00 0.00 0.00
62 |

63 | Site to Source Energy Conversion Factors

64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 |
Site=>Source Conversion Factor
Electricity 3.167
Natural Gas 1.084
78 |

79 |
80 |

Table of Contents

81 | 82 |

Report: Initialization Summary

83 |

For: Entire Facility

84 |

Timestamp: 2021-10-05 85 | 16:53:24

86 | Version

87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 |
Version ID
122.1
97 | Building Area

98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 |
Area [m2]
Total Building Area 232.26
Net Conditioned Building Area 232.26
Unconditioned Building Area 0.00
116 |

117 | 118 | 119 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/eplustbl_with_duplicate_table_name.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |

5 | DX Cooling Coil AHRI 2023 Standard Rating Information

6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
EER2 {Btu/W-h}SEER2 User {Btu/W-h}SEER2 Standard {Btu/W-h}IEER 2022 {Btu/W-h}
9.119.689.429.6
8.569.338.778.7
27 |

28 | DX Cooling Coil AHRI 2023 Standard Rating Information

29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 |
EER2 {Btu/W-h}SEER2 {Btu/W-h}SEER2 Standard {Btu/W-h}IEER {Btu/W-h}
9.119.689.429.6
8.569.338.778.7
50 | 51 | 52 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/tbl_resources/test_table_diff.config: -------------------------------------------------------------------------------- 1 | # This config file is locked in here so that unit tests can use it 2 | # The actual math_diff config file can be adjusted without concern of breaking unit tests 3 | # 4 | # MathDiff configuration file. Format is: 5 | # ,,= 6 | # , = , 7 | # 8 | # is C, W, kWH, etc. - is unitless, * is wildcard 9 | # is Hourly, Monthly, etc. * is wildcard 10 | # is an absolute threshold value 11 | # is a straight multiplier, not a percent. 12 | # -- if -1 is used, then the diff engine should _ignore_ this threshold and base the diff on just the absolute diff 13 | # Wildcard is * and - is for unitless quantities, e.g., ratios. 14 | # Defaults and overrides work the way you would think for aggregations, 15 | # although you can default either aggregation or both unit and aggregation, not just unit. 16 | # Alphas are case sensitive. 17 | # 18 | # Default thresholds 19 | *, * = 0.001, 0.005 20 | # Temperature specific thresholds (-1 means don't base diffs on relative threshold _at all_, just abs diff) 21 | C, Timestep = 0.2, -1 22 | C, Hourly = 0.2, -1 23 | C, Monthly = 1.0, -1 24 | C, * = 0.2, -1 25 | F, Timestep = 0.2, -1 26 | F, Hourly = 0.2, -1 27 | F, Monthly = 1.0, -1 28 | F, * = 0.2, 100 29 | # Power/energy thresholds 30 | W, * = 0.1, 0.005 31 | J, Hourly = 360, 0.005 32 | J, Daily = 8640, 0.005 33 | J, Monthly = 250000, 0.005 34 | # Hour thresholds (for unmet hours, time-bins, or timestamps of peak values) 35 | hr, TIMESTAMP = 2.0, 0.1 36 | hr, * = 0.5, 0.005 37 | min, TIMESTAMP = 45.0, 0.1 38 | min, * = 10, 0.1 39 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/diffs/test_thresh_dict.py: -------------------------------------------------------------------------------- 1 | import tempfile 2 | import unittest 3 | 4 | from energyplus_regressions.diffs.thresh_dict import ThreshDict 5 | 6 | 7 | class TestThreshDict(unittest.TestCase): 8 | 9 | def setUp(self): 10 | self.typical_thresholds = """#comment line 11 | C, Timestep = 0.2, 100 # comments ok here 12 | C, Hourly = 0.2, 100 13 | C, Monthly = 1.0, 100 14 | C, * = 0.25, 100 15 | F, Timestep = 0.2, 100 16 | F, Hourly = 0.2, 100 17 | F, Monthly = 1.0, 100 18 | F, * = 0.2, 100 19 | W, * = 0.1, 0.005 20 | J, Hourly = 360, 0.005 21 | J, Daily = 8640, 0.005 22 | J, Monthly = 250000, 0.005 23 | hr, TIMESTAMP = 2.0, 0.1 24 | hr, * = 0.5, 0.005 25 | min, TIMESTAMP = 45.0, 0.1 26 | min, * = 10, 0.1 27 | min, * = 10, 0.1 # duplicated line 28 | invalid line 29 | """ 30 | 31 | def test_construction(self): 32 | thresh_file = tempfile.mkstemp(suffix='.config')[1] 33 | with open(thresh_file, 'w') as f_thresh: 34 | f_thresh.write(self.typical_thresholds) 35 | t = ThreshDict(thresh_file) 36 | self.assertEqual(16, len(t.thresholds)) 37 | 38 | def test_lookup(self): 39 | thresh_file = tempfile.mkstemp(suffix='.config')[1] 40 | with open(thresh_file, 'w') as f_thresh: 41 | f_thresh.write(self.typical_thresholds) 42 | t = ThreshDict(thresh_file) 43 | 44 | # looking up thresholds for the date/time should return zero leniency 45 | self.assertTupleEqual((0.0, 0.0), t.lookup('Date/Time')) 46 | 47 | # make sure the values are similar to the above definition 48 | # TODO: The ThreshDict seems to want the aggregation in curly braces...I'll play along right now, 49 | # but I don't think that mathdiff or tablediff are converting the E+ report headers to curly, 50 | # in which case the aggregation is ignored 51 | 52 | # here is what I think mathdiff is passing, and seeing on the way back 53 | # they all get whatever is in the * aggregation level 54 | self.assertTupleEqual((0.25, 100.0), t.lookup('My Variable Name [C](Hourly)')) 55 | self.assertTupleEqual((0.25, 100.0), t.lookup('My Variable Name [C](Monthly)')) 56 | self.assertTupleEqual((0.25, 100.0), t.lookup('My Variable Name [C](Annual)')) 57 | 58 | # here is what I think threshdict is expecting to get, and will give the right values back 59 | self.assertTupleEqual((0.2, 100.0), t.lookup('My Variable Name [C]{Hourly}')) 60 | self.assertTupleEqual((1.0, 100.0), t.lookup('My Variable Name [C]{Monthly}')) 61 | self.assertTupleEqual((0.25, 100.0), t.lookup('My Variable Name [C]{Annual}')) 62 | 63 | # check some other variations using this assumed curly brace form 64 | self.assertTupleEqual((0.0, 0.0), t.lookup('My Variable Name {Hourly}')) 65 | self.assertTupleEqual((8640, 0.005), t.lookup('My Variable Name [J]{Daily}')) 66 | 67 | # check some that don't exist in the list - first call it, and it will use the natural default 68 | self.assertTupleEqual((0.0, 0.0), t.lookup('My Variable Name [Q]{Daily}')) 69 | # then add a global default to the list of thresholds and retry - it will use the user-defined default 70 | t.thresholds['*|*'] = (2, 2) 71 | self.assertTupleEqual((2, 2), t.lookup('My Variable Name [Q]{Daily}')) 72 | 73 | # check an invalid line 74 | # self.assertTupleEqual((0.0, 0.0), t.lookup('My Variable Name ][{Daily}')) 75 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/BadUTF8Marker.idf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/BadUTF8Marker.idf -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/README.md: -------------------------------------------------------------------------------- 1 | This folder contains a bunch of resources for running tests. 2 | These are extremely lightweight executable scripts that mimic the actual E+ toolchain. 3 | There are also other files in here such as example weather files and E+ run files. 4 | 5 | The windows versions of these are prebuilt using pyinstaller and placed in the `dist/` directory 6 | To rebuild them, ensure you have pyinstaller on Windows, change dir into the `energyplus_regressions/tests/resources` directory, and run: 7 | 8 | ``` 9 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n basement dummy.basement.py 10 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n energyplus dummy.energyplus.py 11 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n epmacro dummy.epmacro.py 12 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n expandobjects dummy.expandobjects.py 13 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n parametric dummy.parametric.py 14 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n readvars dummy.readvars.py 15 | PYTHONPATH=. ../../../venv/Scripts/pyinstaller.exe --onefile --log-level=WARN -n slab dummy.slab.py 16 | ``` 17 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/basement.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/basement.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/energyplus.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/energyplus.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/epmacro.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/epmacro.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/expandobjects.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/expandobjects.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/parametric.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/parametric.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/readvars.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/readvars.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dist/slab.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dist/slab.exe -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.Energy+.idd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dummy.Energy+.idd -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.basement.idd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dummy.basement.idd -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.basement.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.epmacro.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import shutil 4 | 5 | shutil.copy('in.imf', 'out.idf') 6 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.expandobjects.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | file_contents = open('in.idf').read().upper() 4 | 5 | if 'HVACTEMPLATE' in file_contents: 6 | open('expanded.idf', 'w').write('HI') 7 | open('BasementGHTIn.idf', 'w').write('HI') 8 | open('GHTIn.idf', 'w').write('HI') 9 | open('EPObjects.TXT', 'w').write('HI') 10 | open('RunINPUT.TXT', 'w').write('HI') 11 | open('RunDEBUGOUT.TXT', 'w').write('HI') 12 | open('EPObjects.TXT', 'w').write('HI') 13 | open('BasementGHTIn.idf', 'w').write('HI') 14 | open('MonthlyResults.csv', 'w').write('HI') 15 | open('BasementGHT.idd', 'w').write('HI') 16 | open('SLABINP.TXT', 'w').write('HI') 17 | open('GHTIn.idf', 'w').write('HI') 18 | open('SLABSurfaceTemps.TXT', 'w').write('HI') 19 | open('SLABSplit Surface Temps.TXT', 'w').write('HI') 20 | open('SlabGHT.idd', 'w').write('HI') 21 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.in.epw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dummy.in.epw -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.parametric.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import shutil 4 | 5 | file_contents = open('in.idf').read().upper() 6 | 7 | if 'PARAMETRIC:' in file_contents: 8 | shutil.copy('in.idf', 'in-01.idf') 9 | shutil.copy('in.idf', 'in-02.idf') 10 | shutil.copy('in.idf', 'in-03.idf') 11 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.readvars.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | """ 4 | So we are going to ReadVarsESO in a silly way 5 | 1) We are going to make it expect an eplusout.eso only - not managing rvi or mvi files 6 | 2) We expect this file to be JSON, and have one key: output 7 | The value of this key should be "base", "smalldiffs", or "bigdiffs" 8 | Based on this key, the value will write slightly different csv files 9 | { 10 | "output": "base" / "smalldiffs" / "bigdiffs" 11 | } 12 | } 13 | """ 14 | 15 | import json 16 | import sys 17 | 18 | with open('eplusout.eso') as f_idf: 19 | idf_body = f_idf.read() 20 | # noinspection PyBroadException 21 | try: 22 | output_mode = json.loads(idf_body)['output'] 23 | except: 24 | sys.exit(0) 25 | 26 | base_output = """Date/Time,Variable 1 [C](Hourly),Variable 2 [W](Hourly),Variable 3 [W](Hourly) 27 | 01/21 01:00:00,20.5,40000.0,1.0 28 | 01/21 02:00:00,20.5,40000.0,2.0 29 | 01/21 03:00:00,20.5,40000.0,3.0 30 | 01/21 04:00:00,20.5,40000.0,4.0""" 31 | small_output = """Date/Time,Variable 1 [C](Hourly),Variable 2 [W](Hourly),Variable 3 [W](Hourly) 32 | 01/21 01:00:00,20.5,40005.0,1.0 33 | 01/21 02:00:00,20.5,40000.0,2.0 34 | 01/21 03:00:00,20.5,40000.0,3.0 35 | 01/21 04:00:00,20.5,40000.0,4.0""" 36 | big_output = """Date/Time,Variable 1 [C](Hourly),Variable 2 [W](Hourly),Variable 3 [W](Hourly) 37 | 01/21 01:00:00,20.5,50000.0,1.0 38 | 01/21 02:00:00,20.5,40000.0,2.0 39 | 01/21 03:00:00,20.5,40000.0,3.0 40 | 01/21 04:00:00,20.5,40000.0,4.0""" 41 | 42 | f_csv = open('eplusout.csv', 'w') 43 | f_mtr = open('eplusmtr.csv', 'w') 44 | f_zsz = open('epluszsz.csv', 'w') 45 | f_ssz = open('eplusssz.csv', 'w') 46 | if output_mode == 'base': 47 | written = True 48 | f_csv.write(base_output) 49 | f_mtr.write(base_output) 50 | f_zsz.write(base_output) 51 | f_ssz.write(base_output) 52 | elif output_mode == 'smalldiffs': 53 | written = True 54 | f_csv.write(small_output) 55 | f_mtr.write(small_output) 56 | f_zsz.write(small_output) 57 | f_ssz.write(small_output) 58 | elif output_mode == 'bigdiffs': 59 | written = True 60 | f_csv.write(big_output) 61 | f_mtr.write(big_output) 62 | f_zsz.write(big_output) 63 | f_ssz.write(big_output) 64 | else: 65 | written = False 66 | 67 | f_csv.close() 68 | f_mtr.close() 69 | f_zsz.close() 70 | f_ssz.close() 71 | 72 | if written: 73 | sys.exit(0) 74 | else: 75 | sys.exit(1) 76 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.slab.idd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/energyplus_regressions/tests/resources/dummy.slab.idd -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/dummy.slab.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_base.audit: -------------------------------------------------------------------------------- 1 | Processing Schedule Input -- Start 2 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 3 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 4 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 5 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 6 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 7 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 8 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 9 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 10 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 11 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 12 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 13 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 14 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 15 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 16 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 17 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 18 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 19 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 20 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 21 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 22 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_baseline/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 23 | found (IDF Directory)=/Users/commbldg/ci/clone_baseline/testfiles/HybridModel_Measurements_with_HVAC.csv 24 | Processing Schedule Input -- Complete 25 | MonthlyInputCount= 63 26 | sizeMonthlyInput= 75 -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_base.err: -------------------------------------------------------------------------------- 1 | Program Version,EnergyPlus, Version 9.3.0-a7b2149091, YMD=2020.02.17 10:53, 2 | ************* PythonPlugin: Class AverageZoneTemps imported from: /base/build/PythonPluginCustomOutputVariable.py 3 | ************* Beginning Zone Sizing Calculations 4 | ************* Beginning System Sizing Calculations 5 | ************* Beginning Plant Sizing Calculations 6 | ************* Testing Individual Branch Integrity 7 | ************* All Branches passed integrity testing 8 | ************* Testing Individual Supply Air Path Integrity 9 | ************* All Supply Air Paths passed integrity testing 10 | ************* Testing Individual Return Air Path Integrity 11 | ************* All Return Air Paths passed integrity testing 12 | ************* No node connection errors were found. 13 | ************* Beginning Simulation 14 | ************* Simulation Error Summary ************* 15 | ************* EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors. 16 | ************* EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors. 17 | ************* EnergyPlus Completed Successfully-- 0 Warning; 0 Severe Errors; Elapsed Time=00hr 00min 0.64sec 18 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_base.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Length": 100.0, 24 | "BH Top Depth": 1.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869 42 | ], 43 | "LNTTS": [ 44 | -14.614018254182046, 45 | -13.9208710736221, 46 | -3.5 47 | ], 48 | "time": [ 49 | 500.0, 50 | 20350709.87637131, 51 | 33552648.247020558 52 | ] 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_base.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_bad_key.json: -------------------------------------------------------------------------------- 1 | { 2 | "ColUMNs": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_big_diff.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 99999 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_col_mismatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "DIFFERENT VARIABLE NAME HERE" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_freq_mismatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "ANNUAL", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_row_count_mismatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | }, 20 | { 21 | "12/21 02:00:00": [ 22 | 0.0, 23 | 0.0 24 | ] 25 | } 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_small_diff.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0000001 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_text_diff_but_json_equal.json: -------------------------------------------------------------------------------- 1 | { 2 | "ReportFrequency": "Hourly", 3 | "Cols": [ 4 | { 5 | "Units": "", 6 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 7 | }, 8 | { 9 | "Units": "J", 10 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 11 | } 12 | ], 13 | "Rows": [ 14 | { 15 | "12/21 01:00:00": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_hourly_mod_timestamp_mismatch.json: -------------------------------------------------------------------------------- 1 | { 2 | "Cols": [ 3 | { 4 | "Units": "", 5 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Fan Speed Ratio" 6 | }, 7 | { 8 | "Units": "J", 9 | "Variable": "SMSTORE8 ZONE EVAP UNIT:Zone Evaporative Cooler Unit Latent Cooling Energy" 10 | } 11 | ], 12 | "ReportFrequency": "Hourly", 13 | "Rows": [ 14 | { 15 | "DIFFERENT_TIME": [ 16 | 0.0, 17 | 0.0 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod.audit: -------------------------------------------------------------------------------- 1 | Processing Schedule Input -- Start 2 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 3 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 4 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 5 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 6 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 7 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 8 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 9 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 10 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 11 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 12 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 13 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 14 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 15 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 16 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 17 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 18 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 19 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 20 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 21 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 22 | not found (Current Working Directory)"=/Users/commbldg/ci/clone_branch/build/testfiles/HybridModel_4Zone_Solve_PeopleCount_with_HVAC/HybridModel_Measurements_with_HVAC.csv 23 | found (IDF Directory)=/Users/commbldg/ci/clone_branch/testfiles/HybridModel_Measurements_with_HVAC.csv 24 | Processing Schedule Input -- Complete 25 | MonthlyInputCount= 63 26 | sizeMonthlyInput= 75 -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod.err: -------------------------------------------------------------------------------- 1 | Program Version,EnergyPlus, Version 9.3.0-a7b2149091, YMD=2020.02.17 10:57, 2 | ************* PythonPlugin: Class AverageZoneTemps imported from: /mod/build/PythonPluginCustomOutputVariable.py 3 | ************* Beginning Zone Sizing Calculations 4 | ************* Beginning System Sizing Calculations 5 | ************* Beginning Plant Sizing Calculations 6 | ************* Testing Individual Branch Integrity 7 | ************* All Branches passed integrity testing 8 | ************* Testing Individual Supply Air Path Integrity 9 | ************* All Supply Air Paths passed integrity testing 10 | ************* Testing Individual Return Air Path Integrity 11 | ************* All Return Air Paths passed integrity testing 12 | ************* No node connection errors were found. 13 | ************* Beginning Simulation 14 | ************* Simulation Error Summary ************* 15 | ************* EnergyPlus Warmup Error Summary. During Warmup: 0 Warning; 0 Severe Errors. 16 | ************* EnergyPlus Sizing Error Summary. During Sizing: 0 Warning; 0 Severe Errors. 17 | ************* EnergyPlus Completed Successfully-- 0 Warning; 1 Severe Errors; Elapsed Time=00hr 00min 0.61sec 18 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_bad_key.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "NOT A GOOD KEY Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Length": 100.0, 24 | "BH Top Depth": 1.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869 42 | ], 43 | "LNTTS": [ 44 | -14.614018254182046, 45 | -13.9208710736221, 46 | -3.5 47 | ], 48 | "time": [ 49 | 500.0, 50 | 20350709.87637131, 51 | 33552648.247020558 52 | ] 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_bad_values.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 9999.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": -9999999 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Top Depth": 1.0, 24 | "Flow Rate": 0.00100944, 25 | "Grout k": 120000000000000, 26 | "Grout rhoCp": 3900000.0, 27 | "Max Simulation Years": 1.0, 28 | "Pipe Diameter": 0.03341, 29 | "Pipe Thickness": 0.002984, 30 | "Pipe k": 0.3895, 31 | "Pipe rhoCP": 1770000.0, 32 | "Soil k": 2.5, 33 | "Soil rhoCp": 2500000.0, 34 | "U-tube Dist": 0.04913 35 | }, 36 | "Response Factors": { 37 | "GFNC": [ 38 | -3.825046277704238, 39 | 1600, 40 | 6.495588983283869 41 | ], 42 | "LNTTS": [ 43 | -14.614018254182046, 44 | 67664, 45 | -3.5 46 | ], 47 | "time": [ 48 | 500.0, 49 | 1212, 50 | 33552648.247020558 51 | ] 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_mismatch_object_count.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Length": 100.0, 24 | "BH Top Depth": 1.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869 42 | ], 43 | "LNTTS": [ 44 | -14.614018254182046, 45 | -13.9208710736221, 46 | -3.5 47 | ], 48 | "time": [ 49 | 500.0, 50 | 20350709.87637131, 51 | 33552648.247020558 52 | ] 53 | } 54 | }, 55 | "GHLE 2": { 56 | "Phys Data": { 57 | "BH Data": { 58 | "BH 1": { 59 | "X-Location": 0.0, 60 | "Y-Location": 0.0 61 | }, 62 | "BH 2": { 63 | "X-Location": 0.0, 64 | "Y-Location": 5.0 65 | }, 66 | "BH 3": { 67 | "X-Location": 5.0, 68 | "Y-Location": 0.0 69 | }, 70 | "BH 4": { 71 | "X-Location": 5.0, 72 | "Y-Location": 5.0 73 | } 74 | }, 75 | "BH Diameter": 0.114, 76 | "BH Length": 100.0, 77 | "BH Top Depth": 1.0, 78 | "Flow Rate": 0.00100944, 79 | "Grout k": 0.7443, 80 | "Grout rhoCp": 3900000.0, 81 | "Max Simulation Years": 1.0, 82 | "Pipe Diameter": 0.03341, 83 | "Pipe Thickness": 0.002984, 84 | "Pipe k": 0.3895, 85 | "Pipe rhoCP": 1770000.0, 86 | "Soil k": 2.5, 87 | "Soil rhoCp": 2500000.0, 88 | "U-tube Dist": 0.04913 89 | }, 90 | "Response Factors": { 91 | "GFNC": [ 92 | -3.825046277704238, 93 | 5.760381200418051, 94 | 6.495588983283869 95 | ], 96 | "LNTTS": [ 97 | -14.614018254182046, 98 | -13.9208710736221, 99 | -3.5 100 | ], 101 | "time": [ 102 | 500.0, 103 | 20350709.87637131, 104 | 33552648.247020558 105 | ] 106 | } 107 | } 108 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_mismatch_object_names.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "DIFFERENT GLHE NAME HERE": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Length": 100.0, 24 | "BH Top Depth": 1.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869 42 | ], 43 | "LNTTS": [ 44 | -14.614018254182046, 45 | -13.9208710736221, 46 | -3.5 47 | ], 48 | "time": [ 49 | 500.0, 50 | 20350709.87637131, 51 | 33552648.247020558 52 | ] 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_mismatched_counts.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Length": 100.0, 24 | "BH Top Depth": 1.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869, 42 | 999999999999999999999999 43 | ], 44 | "LNTTS": [ 45 | -14.614018254182046, 46 | -13.9208710736221, 47 | -3.5, 48 | 999999999999999999999999 49 | ], 50 | "time": [ 51 | 500.0, 52 | 20350709.87637131, 53 | 33552648.247020558, 54 | 999999999999999999999999 55 | ] 56 | } 57 | } 58 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_mod_text_diff_but_json_equal.glhe: -------------------------------------------------------------------------------- 1 | { 2 | "GHLE 1": { 3 | "Phys Data": { 4 | "BH Data": { 5 | "BH 1": { 6 | "X-Location": 0.0, 7 | "Y-Location": 0.0 8 | }, 9 | "BH 2": { 10 | "X-Location": 0.0, 11 | "Y-Location": 5.0 12 | }, 13 | "BH 3": { 14 | "X-Location": 5.0, 15 | "Y-Location": 0.0 16 | }, 17 | "BH 4": { 18 | "X-Location": 5.0, 19 | "Y-Location": 5.0 20 | } 21 | }, 22 | "BH Diameter": 0.114, 23 | "BH Top Depth": 1.0, 24 | "BH Length": 100.0, 25 | "Flow Rate": 0.00100944, 26 | "Grout k": 0.7443, 27 | "Grout rhoCp": 3900000.0, 28 | "Max Simulation Years": 1.0, 29 | "Pipe Diameter": 0.03341, 30 | "Pipe Thickness": 0.002984, 31 | "Pipe k": 0.3895, 32 | "Pipe rhoCP": 1770000.0, 33 | "Soil k": 2.5, 34 | "Soil rhoCp": 2500000.0, 35 | "U-tube Dist": 0.04913 36 | }, 37 | "Response Factors": { 38 | "GFNC": [ 39 | -3.825046277704238, 40 | 5.760381200418051, 41 | 6.495588983283869 42 | ], 43 | "LNTTS": [ 44 | -14.614018254182046, 45 | -13.9208710736221, 46 | -3.5 47 | ], 48 | "time": [ 49 | 500.0, 50 | 20350709.87637131, 51 | 33552648.247020558 52 | ] 53 | } 54 | } 55 | } -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_perflog_base.csv: -------------------------------------------------------------------------------- 1 | Program, Version, TimeStamp,Use Coil Direct Solution,Zone Radiant Exchange Algorithm,Override Mode,Number of Timesteps per Hour,Minimum Number of Warmup Days,SuppressAllBeginEnvironmentResets,Minimum System Timestep,MaxZoneTempDiff,MaxAllowedDelTemp,Electricity ABUPS Total [J],Natural Gas ABUPS Total [J],Gasoline ABUPS Total [J],Diesel ABUPS Total [J],Coal ABUPS Total [J],Fuel Oil No 1 ABUPS Total [J],Fuel Oil No 2 ABUPS Total [J],Propane ABUPS Total [J],Other Fuel 1 ABUPS Total [J],Other Fuel 2 ABUPS Total [J],District Cooling ABUPS Total [J],District Heating Water ABUPS Total [J],District Heating Steam ABUPS Total [J],Water ABUPS Total [m3],Values Gathered Over [hours],Facility Any Zone Oscillating Temperatures Time [hours],Facility Any Zone Oscillating Temperatures During Occupancy Time [hours],Facility Any Zone Oscillating Temperatures in Deadband Time [hours],Run Time [seconds],Run Time [string],Number of Warnings,Number of Severe, 2 | EnergyPlus, Version 23.2.0-491eb8a3fa, YMD=2023.08.29 13:21,False,CarrollMRT,Normal,6,1,False,2.0,0.30,2.0000E-003,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.00,16.32,7.58,0.00,3.25,00hr 00min 3.25sec,5,0, 3 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_perflog_mod.csv: -------------------------------------------------------------------------------- 1 | Program, Version, TimeStamp,Use Coil Direct Solution,Zone Radiant Exchange Algorithm,Override Mode,Number of Timesteps per Hour,Minimum Number of Warmup Days,SuppressAllBeginEnvironmentResets,Minimum System Timestep,MaxZoneTempDiff,MaxAllowedDelTemp,Electricity ABUPS Total [J],Natural Gas ABUPS Total [J],Gasoline ABUPS Total [J],Diesel ABUPS Total [J],Coal ABUPS Total [J],Fuel Oil No 1 ABUPS Total [J],Fuel Oil No 2 ABUPS Total [J],Propane ABUPS Total [J],Other Fuel 1 ABUPS Total [J],Other Fuel 2 ABUPS Total [J],District Cooling ABUPS Total [J],District Heating Water ABUPS Total [J],District Heating Steam ABUPS Total [J],Water ABUPS Total [m3],Values Gathered Over [hours],Facility Any Zone Oscillating Temperatures Time [hours],Facility Any Zone Oscillating Temperatures During Occupancy Time [hours],Facility Any Zone Oscillating Temperatures in Deadband Time [hours],Run Time [seconds],Run Time [string],Number of Warnings,Number of Severe, 2 | EnergyPlus, Version 23.2.0-491eb8a3fa, YMD=2023.08.29 13:21,False,CarrollMRT,Normal,6,1,False,3.0,0.30,2.0000E-003,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.00,16.32,7.58,0.00,3.25,00hr 00min 3.25sec,5,0, 3 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_perflog_same_except_times.csv: -------------------------------------------------------------------------------- 1 | Program, Version, TimeStamp,Use Coil Direct Solution,Zone Radiant Exchange Algorithm,Override Mode,Number of Timesteps per Hour,Minimum Number of Warmup Days,SuppressAllBeginEnvironmentResets,Minimum System Timestep,MaxZoneTempDiff,MaxAllowedDelTemp,Electricity ABUPS Total [J],Natural Gas ABUPS Total [J],Gasoline ABUPS Total [J],Diesel ABUPS Total [J],Coal ABUPS Total [J],Fuel Oil No 1 ABUPS Total [J],Fuel Oil No 2 ABUPS Total [J],Propane ABUPS Total [J],Other Fuel 1 ABUPS Total [J],Other Fuel 2 ABUPS Total [J],District Cooling ABUPS Total [J],District Heating Water ABUPS Total [J],District Heating Steam ABUPS Total [J],Water ABUPS Total [m3],Values Gathered Over [hours],Facility Any Zone Oscillating Temperatures Time [hours],Facility Any Zone Oscillating Temperatures During Occupancy Time [hours],Facility Any Zone Oscillating Temperatures in Deadband Time [hours],Run Time [seconds],Run Time [string],Number of Warnings,Number of Severe, 2 | EnergyPlus, Version 23.2.0-491eb8a3fa, YMD=2023.08.29 13:21,False,CarrollMRT,Normal,6,1,False,2.0,0.30,2.0000E-003,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.000,0.00,16.32,7.58,0.00,3.75,00hr 00min 3.75sec,5,0, 3 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_with_utf8_base.eio: -------------------------------------------------------------------------------- 1 | Program Version,EnergyPlus, Version 9.0.1-ae4c2ce0d2, YMD=2018.12.12 09:13 2 | ! ,Zone Name,North Axis {deg},Origin X-Coordinate {m},Origin Y-Coordinate {m},Origin Z-Coordinate {m},Centroid X-Coordinate {m},Centroid Y-Coordinate {m},Centroid Z-Coordinate {m},Type,Zone Multiplier,Zone List Multiplier,Minimum X {m},Maximum X {m},Minimum Y {m},Maximum Y {m},Minimum Z {m},Maximum Z {m},Ceiling Height {m},Volume {m3},Zone Inside Convection Algorithm {Simple-Detailed-CeilingDiffuser-TrombeWall},Zone Outside Convection Algorithm {Simple-Detailed-Tarp-MoWitt-DOE-2-BLAST}, Floor Area {m2},Exterior Gross Wall Area {m2},Exterior Net Wall Area {m2},Exterior Window Area {m2}, Number of Surfaces, Number of SubSurfaces, Number of Shading SubSurfaces, Part of Total Building Area 3 | Zone Information, 试验,0.0,0.00,0.00,0.00,7.62,7.62,2.29,1,1,1,0.00,15.24,0.00,15.24,0.00,4.57,4.57,1061.88,TARP,DOE-2,232.26,278.71,278.71,0.00,6,0,0,Yes 4 | End of Data 5 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/resources/eplusout_with_utf8_mod.eio: -------------------------------------------------------------------------------- 1 | Program Version,EnergyPlus, Version 9.0.1-modversion, YMD=2018.12.12 09:13 2 | ! ,Zone Name,North Axis {deg},Origin X-Coordinate {m},Origin Y-Coordinate {m},Origin Z-Coordinate {m},Centroid X-Coordinate {m},Centroid Y-Coordinate {m},Centroid Z-Coordinate {m},Type,Zone Multiplier,Zone List Multiplier,Minimum X {m},Maximum X {m},Minimum Y {m},Maximum Y {m},Minimum Z {m},Maximum Z {m},Ceiling Height {m},Volume {m3},Zone Inside Convection Algorithm {Simple-Detailed-CeilingDiffuser-TrombeWall},Zone Outside Convection Algorithm {Simple-Detailed-Tarp-MoWitt-DOE-2-BLAST}, Floor Area {m2},Exterior Gross Wall Area {m2},Exterior Net Wall Area {m2},Exterior Window Area {m2}, Number of Surfaces, Number of SubSurfaces, Number of Shading SubSurfaces, Part of Total Building Area 3 | Zone Information, 试验,2.0,0.00,0.00,0.00,7.62,7.62,2.29,1,1,1,0.00,15.24,0.00,15.24,0.00,4.57,4.57,1061.88,TARP,DOE-2,232.26,278.71,278.71,0.00,6,0,0,Yes 4 | End of Data 5 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/test_epw_map.py: -------------------------------------------------------------------------------- 1 | from pathlib import Path 2 | import tempfile 3 | import unittest 4 | 5 | from energyplus_regressions.epw_map import get_epw_for_idf 6 | 7 | 8 | class TestGetEPW(unittest.TestCase): 9 | 10 | def setUp(self) -> None: 11 | self.repo_source_dir = Path(tempfile.mkdtemp()) 12 | 13 | def add_test_files_dir(self, content_to_add_to_cmake_lists=None): 14 | test_files_dir = self.repo_source_dir / 'testfiles' 15 | test_files_dir.mkdir(parents=True) 16 | if content_to_add_to_cmake_lists: 17 | cmake_lists = test_files_dir / 'CMakeLists.txt' 18 | with cmake_lists.open('w') as f: 19 | f.write(content_to_add_to_cmake_lists) 20 | 21 | def test_repo_dir_does_not_exist(self): 22 | fake_dir = self.repo_source_dir / 'not_there' 23 | epw = get_epw_for_idf(fake_dir, "DoesntMatter.idf") 24 | self.assertIsNone(epw) 25 | 26 | def test_install_style_lookup_in_map(self): 27 | epw = get_epw_for_idf(self.repo_source_dir, "ZoneWSHP_wDOAS.idf") 28 | self.assertIsInstance(epw, str) 29 | 30 | def test_install_style_lookup_not_in_map(self): 31 | epw = get_epw_for_idf(self.repo_source_dir, "NOT_ZoneWSHP_wDOAS.idf") 32 | self.assertIsNone(epw) 33 | 34 | def test_build_folder_but_no_cmake_lists(self): 35 | self.add_test_files_dir() 36 | epw = get_epw_for_idf(self.repo_source_dir, "DoesntMatterAgain.idf") 37 | self.assertIsNone(epw) 38 | 39 | def test_find_idf_in_cmake_lists(self): 40 | content = """ 41 | # Four lines here, one plain comment, one comment with the filename in it, one real line, one real line with suffix 42 | # ADD_SIMULATION_TEST(IDF_FILE HELLO.idf EPW_FILE WORLD.epw) 43 | ADD_SIMULATION_TEST(IDF_FILE FOO.idf EPW_FILE BAR.epw) 44 | ADD_SIMULATION_TEST(IDF_FILE BLAH.idf EPW_FILE OK.epw ANNUAL_SIMULATION) 45 | """ 46 | self.add_test_files_dir(content_to_add_to_cmake_lists=content) 47 | epw = get_epw_for_idf(self.repo_source_dir, "FOO.idf") 48 | self.assertEqual(epw, "BAR.epw") 49 | epw = get_epw_for_idf(self.repo_source_dir, "NOT_HOSPITAL.idf") 50 | self.assertIsNone(epw) 51 | epw = get_epw_for_idf(self.repo_source_dir, "BLAH.idf") 52 | self.assertEqual(epw, "OK.epw") 53 | -------------------------------------------------------------------------------- /energyplus_regressions/tests/test_platform.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | from energyplus_regressions.ep_platform import platform, exe_extension, Platforms 4 | 5 | 6 | class TestCrossPlatform(unittest.TestCase): 7 | 8 | def test_supported_platforms(self): 9 | self.assertEqual(Platforms.Linux, platform(force_test_string='linux2')) 10 | self.assertEqual(Platforms.Windows, platform(force_test_string='win32')) 11 | self.assertEqual(Platforms.Mac, platform(force_test_string='darwin')) 12 | 13 | def test_unsupported_platform(self): 14 | with self.assertRaises(Exception): 15 | platform('riscos') 16 | 17 | 18 | class TestExeExtension(unittest.TestCase): 19 | 20 | def test_non_windows(self): 21 | self.assertEqual('', exe_extension(force_test_platform=Platforms.Linux)) 22 | self.assertEqual('', exe_extension(force_test_platform=Platforms.Mac)) 23 | 24 | def test_windows(self): 25 | self.assertEqual('.exe', exe_extension(force_test_platform=Platforms.Windows)) 26 | -------------------------------------------------------------------------------- /media/activities_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/media/activities_search.png -------------------------------------------------------------------------------- /media/add_to_favorites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/media/add_to_favorites.png -------------------------------------------------------------------------------- /media/ep_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/NREL/EnergyPlusRegressionTool/c7ff180d7a25c593b27e5b207b6bc9800cff2dae/media/ep_icon.png -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # the core dependencies actually needed 2 | pypubsub 3 | beautifulsoup4==4.12.3 4 | 5 | # for running tests 6 | coverage 7 | coveralls 8 | flake8 9 | pytest 10 | 11 | # on windows, if you need to rebuild the unit test resource exes, just install pyinstaller and follow the directions in energyplus_regressions/tests/resources/README.md 12 | # pyinstaller; platform_system == "Windows" 13 | 14 | # to generate documentation 15 | sphinx 16 | docutils # pinning this because it breaks at 0.18 17 | 18 | # for packaging 19 | wheel 20 | 21 | # for polishing up the Pip install 22 | PLAN-Tools>=0.5 23 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | import codecs 2 | import os 3 | from platform import system 4 | from setuptools import setup 5 | 6 | from energyplus_regressions import NAME, VERSION 7 | 8 | this_dir = os.path.abspath(os.path.dirname(__file__)) 9 | with codecs.open(os.path.join(this_dir, 'README.md'), encoding='utf-8') as i_file: 10 | long_description = i_file.read() 11 | 12 | 13 | install_requires = ['PyPubSub', 'beautifulsoup4==4.12.3', 'PLAN-Tools>=0.5'] 14 | if system() == 'Windows': 15 | install_requires.append('pypiwin32') 16 | 17 | setup( 18 | name=NAME, 19 | version=VERSION, 20 | packages=['energyplus_regressions', 'energyplus_regressions.builds', 'energyplus_regressions.diffs'], 21 | include_package_data=True, 22 | package_data={ 23 | 'energyplus_regressions': ['diffs/math_diff.config', 'icons/icon.png', 'icons/icon.ico', 'icons/icon.icns'] 24 | }, 25 | url='https://github.com/NREL/EnergyPlusRegressionTool', 26 | license='ModifiedBSD', 27 | author='Edwin Lee, for NREL, for United States Department of Energy', 28 | description='A Python 3 library for evaluating regressions between EnergyPlus builds.', 29 | long_description=long_description, 30 | long_description_content_type='text/markdown', 31 | install_requires=install_requires, 32 | entry_points={ 33 | 'gui_scripts': [ 34 | 'energyplus_regression_runner=energyplus_regressions.runner:main_gui', 35 | ], 36 | 'console_scripts': [ 37 | 'energyplus_regression_configure=energyplus_regressions.configure:configure_cli', 38 | ], 39 | }, 40 | python_requires='>=3.9', 41 | classifiers=[ 42 | 'Development Status :: 4 - Beta', 43 | 'Intended Audience :: Science/Research', 44 | 'Intended Audience :: Developers', 45 | 'Natural Language :: English', 46 | 'Operating System :: OS Independent', 47 | 'Programming Language :: Python :: 3 :: Only', 48 | 'Topic :: Scientific/Engineering', 49 | 'Topic :: Scientific/Engineering :: Physics', 50 | 'Topic :: Utilities', 51 | ], 52 | platforms=[ 53 | 'Linux (Tested on Ubuntu)', 'MacOSX', 'Windows' 54 | ], 55 | keywords=[ 56 | 'energyplus_launch', 'ep_launch', 57 | 'EnergyPlus', 'eplus', 'Energy+', 58 | 'Building Simulation', 'Whole Building Energy Simulation', 59 | 'Heat Transfer', 'HVAC', 'Modeling', 60 | ] 61 | ) 62 | --------------------------------------------------------------------------------