From f7b2c7b17f9d2ad9289b4ebca4b7321826c8d6f1 Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:08:55 -0600 Subject: [PATCH 001/490] Add Windows GitHub workflow for testing measure gems The workflow runs on push events, executes on Windows runners, and includes steps to check out the repository and verify the presence of build tools (conan, cmake, ninja). --- .github/workflows/windows.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000000..0cee0c5a33 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,27 @@ +name: Test Measure Gems +on: push + +jobs: + test-self-hosted: + runs-on: windows + env: + BRANCH_NAME: ${{ github.ref_name }} + BUILD_NUMBER: ${{ github.run_number }} + DEPLOY_PATH: ${{ github.repository }}/${{ github.ref_name }}/${{ github.run_number }} # Path for S3 deployment + S3_BUCKET: ext-gem-dashboard + + steps: + - name: Checkout Repository + # The repository will be checked out inside the 'nrel/openstudio:3.10.0' container + uses: actions/checkout@v4 # Use v4 for better security and features + with: + submodules: true # Set to true if your repository uses Git submodules + + - name: Test powershell command + # Install required dependencies for AWS actions to work in the OpenStudio container + shell: powershell + run: | + # Update package list + conan --version + cmake --version + ninja --version From 1256a2e1ea6c20c15b493909a3e99f3e9283f28e Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:16:27 -0600 Subject: [PATCH 002/490] Set execution policy to bypass for Windows workflow Add ExecutionPolicy Bypass setting to ensure PowerShell scripts can run properly in the Windows CI workflow environment. --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 0cee0c5a33..221c1e72dc 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -21,6 +21,7 @@ jobs: # Install required dependencies for AWS actions to work in the OpenStudio container shell: powershell run: | + Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force # Update package list conan --version cmake --version From 9a4a1d63e0187fde3900f5753565ebe6fed6a4f1 Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:18:56 -0600 Subject: [PATCH 003/490] fix: Update PowerShell execution in Windows workflow Use pwsh with inline execution policy setting instead of separate command to streamline the workflow and ensure consistent execution policy handling. --- .github/workflows/windows.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 221c1e72dc..26aad318a1 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -19,9 +19,8 @@ jobs: - name: Test powershell command # Install required dependencies for AWS actions to work in the OpenStudio container - shell: powershell + shell: pwsh -Command "Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force; & {0}" run: | - Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force # Update package list conan --version cmake --version From 4ba4e3561fc8276724d7b308b4d5a054e1fc301c Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:21:37 -0600 Subject: [PATCH 004/490] Switch Windows workflow to use cmd shell instead of PowerShell The change replaces the PowerShell execution policy bypass with a simpler cmd shell for running the conan version check in the Windows workflow. --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 26aad318a1..deeb2bc2d4 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -19,7 +19,7 @@ jobs: - name: Test powershell command # Install required dependencies for AWS actions to work in the OpenStudio container - shell: pwsh -Command "Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force; & {0}" + shell: cmd run: | # Update package list conan --version From f2026e79ac7bbc81d8a318013851078c97c0caed Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:23:22 -0600 Subject: [PATCH 005/490] Refactor Windows workflow to use cmd shell for tool version checks --- .github/workflows/windows.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index deeb2bc2d4..e4649fd521 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -17,11 +17,9 @@ jobs: with: submodules: true # Set to true if your repository uses Git submodules - - name: Test powershell command - # Install required dependencies for AWS actions to work in the OpenStudio container + - name: Test cmd command shell: cmd run: | - # Update package list conan --version cmake --version ninja --version From 8e06a8c262478b6865751a18f65df58edf8f95b9 Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:33:25 -0600 Subject: [PATCH 006/490] Add macOS workflow and update Windows workflow name Add new GitHub Actions workflow for macOS self-hosted runners with basic tool version checks. Update Windows workflow name to "Test Self-hosted Runner" for consistency. --- .github/workflows/mac.yml | 25 +++++++++++++++++++++++++ .github/workflows/windows.yml | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/mac.yml diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml new file mode 100644 index 0000000000..831378a65c --- /dev/null +++ b/.github/workflows/mac.yml @@ -0,0 +1,25 @@ +name: Test Self-hosted Runner +on: push + +jobs: + test-self-hosted: + runs-on: macOS + env: + BRANCH_NAME: ${{ github.ref_name }} + BUILD_NUMBER: ${{ github.run_number }} + DEPLOY_PATH: ${{ github.repository }}/${{ github.ref_name }}/${{ github.run_number }} # Path for S3 deployment + S3_BUCKET: ext-gem-dashboard + + steps: + - name: Checkout Repository + # The repository will be checked out inside the 'nrel/openstudio:3.10.0' container + uses: actions/checkout@v4 # Use v4 for better security and features + with: + submodules: true # Set to true if your repository uses Git submodules + + - name: Test cmd command + shell: cmd + run: | + conan --version + cmake --version + ninja --version \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e4649fd521..5ec095c4e4 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -1,4 +1,4 @@ -name: Test Measure Gems +name: Test Self-hosted Runner on: push jobs: From 49f8748e34fc7b970c795a6574fcb5b5a401e85c Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:36:18 -0600 Subject: [PATCH 007/490] Switch from cmd to bash shell in Mac workflow Change the shell type from cmd to bash for the test command step in the macOS CI workflow, which better aligns with the macOS environment. --- .github/workflows/mac.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 831378a65c..58a20a5721 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -17,8 +17,8 @@ jobs: with: submodules: true # Set to true if your repository uses Git submodules - - name: Test cmd command - shell: cmd + - name: Test bash command + shell: bash run: | conan --version cmake --version From b79355eb5e549841216aa31b6e4afbb1879fc311 Mon Sep 17 00:00:00 2001 From: anchapin Date: Tue, 24 Jun 2025 15:55:44 -0600 Subject: [PATCH 008/490] Remove ninja version check from Windows workflow AI: I've generated a concise commit message that describes the change - removing the ninja version check command from the Windows GitHub workflow. The message is in imperative mood, under the character limit, and clearly states what was changed. --- .github/workflows/windows.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 5ec095c4e4..f1621fc048 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,4 +22,3 @@ jobs: run: | conan --version cmake --version - ninja --version From cd60a53632422cc744abfc8e0737ff266c002f02 Mon Sep 17 00:00:00 2001 From: tijcolem Date: Wed, 25 Jun 2025 14:22:25 -0600 Subject: [PATCH 009/490] testing out linux incremental build --- .github/workflows/incremental-build.yml | 99 +++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 .github/workflows/incremental-build.yml diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml new file mode 100644 index 0000000000..2ba03920c3 --- /dev/null +++ b/.github/workflows/incremental-build.yml @@ -0,0 +1,99 @@ +name: Build and Test (Ubuntu 22.04) + +on: + pull_request: + push: + +jobs: + build: + if: contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') + runs-on: Linux + + env: + CONAN_USER_HOME: /home/runner/.conan2 + AWS_REGION: us-west-2 + CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 + OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + BRANCH_NAME: ${{ github.ref_name }} + + container: # Define the Docker container for the job. All subsequent steps run inside it. + image: kuangwenyi/openstudio-cmake-tools:jammy + options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally + volumes: + - ${{env.CONAN_HOST_VOLUME}}:${{env.CONAN_DOCKER_VOLUME}} + - ${{env.OPENSTUDIO_HOST_VOLUME}}:${{env.OPENSTUDIO_DOCKER_VOLUME}} + + steps: + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Enviroment display + run: | + pip install conan + + - name: Cmake Setup + run: | + # Set up git and fetch PR head, then detect conan profile and install dependencies + echo $PWD + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} + git config --global --add safe.directory "${linux_source}" && \ + git config user.email "cicommercialbuilding@gmail.com" && \ + git config user.name "ci-commercialbuildings" && \ + git fetch origin && \ + git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ + git checkout origin/pr/${{env.BRANCH_NAME}} && \ + conan profile detect && \ + conan install . --output-folder=../${build_folder} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + +# # - name: Install dependencies and configure with CMake +# # run: | +# # echo $PWD +# # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} +# # mkdir -p OS-build-release-v2 +# # cd OS-build-release-v2 +# # conan install ../OpenStudio --output-folder=. --build=missing \ +# # -c tools.cmake.cmaketoolchain:generator=Ninja \ +# # -s compiler.cppstd=20 -s build_type=Release +# # source ./conanbuild.sh +# cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ +# -DCMAKE_BUILD_TYPE=Release \ +# -DBUILD_TESTING=ON -DCPACK_BINARY_DEB=ON -DCPACK_BINARY_TGZ=ON \ +# -DBUILD_PYTHON_BINDINGS=ON -DBUILD_CLI=ON -DPYTHON_VERSION=3.12.2 \ +# ../OpenStudio + +# - name: Build with Ninja +# run: | +# cd OS-build-release-v2 +# source ./conanbuild.sh +# ninja -j 2 package + + # - name: Run CTests with retries + # run: | + # cd OS-build-release-v2 + # ctest -j 2 -T test --no-compress-output --output-on-failure || \ + # ctest -T test -j 2 --rerun-failed --no-compress-output --output-on-failure || \ + # ctest -T test -j 2 --rerun-failed --no-compress-output -VV + + # - name: Upload build artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: ubuntu-2204-artifacts + # path: | + # OS-build-release-v2/*.deb + # OS-build-release-v2/_CPack_Packages/Linux/TGZ/*.tar.gz + + # - name: Upload to S3 + # if: github.event_name == 'pull_request' + # env: + # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + # run: | + # sudo apt-get install -y awscli + # cd OS-build-release-v2 + # BRANCH=${{ github.head_ref }} + # aws s3 cp *.deb s3://openstudio-ci-builds/$BRANCH/ --acl public-read + # aws s3 cp _CPack_Packages/Linux/TGZ/*.tar.gz s3://openstudio-ci-builds/$BRANCH/ --acl public-read From 44e7a5254912e98bea4701af984533cfc05ff6d2 Mon Sep 17 00:00:00 2001 From: tijcolem Date: Wed, 25 Jun 2025 14:25:56 -0600 Subject: [PATCH 010/490] formatting --- .github/workflows/incremental-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 2ba03920c3..1d13f31c1d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -22,8 +22,8 @@ jobs: image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: - - ${{env.CONAN_HOST_VOLUME}}:${{env.CONAN_DOCKER_VOLUME}} - - ${{env.OPENSTUDIO_HOST_VOLUME}}:${{env.OPENSTUDIO_DOCKER_VOLUME}} + - ${{ env.CONAN_HOST_VOLUME }}:${{ env.CONAN_DOCKER_VOLUME }} + - ${{ env.OPENSTUDIO_HOST_VOLUME }}:${{ env.OPENSTUDIO_DOCKER_VOLUME }} steps: - name: Setup Python From 9b98c4387fab58656caa009b52e447785d0aa71c Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 14:45:21 -0600 Subject: [PATCH 011/490] Fix Docker volume paths and command formatting in incremental build workflow Quote Docker volume paths to handle special characters and fix git safe.directory path. Also improve formatting of git commands and use explicit build folder name instead of variable. --- .github/workflows/incremental-build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1d13f31c1d..f54ae92492 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -22,8 +22,8 @@ jobs: image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: - - ${{ env.CONAN_HOST_VOLUME }}:${{ env.CONAN_DOCKER_VOLUME }} - - ${{ env.OPENSTUDIO_HOST_VOLUME }}:${{ env.OPENSTUDIO_DOCKER_VOLUME }} + - "${{ env.CONAN_HOST_VOLUME }}:${{ env.CONAN_DOCKER_VOLUME }}" + - "${{ env.OPENSTUDIO_HOST_VOLUME }}:${{ env.OPENSTUDIO_DOCKER_VOLUME }}" steps: - name: Setup Python @@ -40,14 +40,14 @@ jobs: # Set up git and fetch PR head, then detect conan profile and install dependencies echo $PWD cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} - git config --global --add safe.directory "${linux_source}" && \ + git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}" && \ git config user.email "cicommercialbuilding@gmail.com" && \ git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{env.BRANCH_NAME}} && \ + git checkout origin/pr/${{ env.BRANCH_NAME }} && \ conan profile detect && \ - conan install . --output-folder=../${build_folder} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + conan install . --output-folder=../OS-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release # # - name: Install dependencies and configure with CMake # # run: | From 39455036b42e35ff6200bd03555e274f9270f6a1 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 14:50:43 -0600 Subject: [PATCH 012/490] fix: update volume mounting in incremental build workflow Comment out unused environment variables and directly specify volume paths in the container configuration for better clarity and maintainability. --- .github/workflows/incremental-build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index f54ae92492..00186b69bd 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -12,18 +12,18 @@ jobs: env: CONAN_USER_HOME: /home/runner/.conan2 AWS_REGION: us-west-2 - CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 - OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + # CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + # CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + # OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 + # OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio BRANCH_NAME: ${{ github.ref_name }} - + container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: - - "${{ env.CONAN_HOST_VOLUME }}:${{ env.CONAN_DOCKER_VOLUME }}" - - "${{ env.OPENSTUDIO_HOST_VOLUME }}:${{ env.OPENSTUDIO_DOCKER_VOLUME }}" + - "/srv/data/jenkins/docker-volumes/conan-data:/home/ubuntu/conan-data" + - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" steps: - name: Setup Python From fb57ba42a9412a3727f8cf289a8061199f362ae8 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 14:59:54 -0600 Subject: [PATCH 013/490] added pwd and ls commands --- .github/workflows/incremental-build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 00186b69bd..e84b4a880b 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -12,10 +12,10 @@ jobs: env: CONAN_USER_HOME: /home/runner/.conan2 AWS_REGION: us-west-2 - # CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - # CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - # OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 - # OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 + OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio BRANCH_NAME: ${{ github.ref_name }} container: # Define the Docker container for the job. All subsequent steps run inside it. @@ -40,6 +40,7 @@ jobs: # Set up git and fetch PR head, then detect conan profile and install dependencies echo $PWD cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} + echo $PWD && ls -la git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}" && \ git config user.email "cicommercialbuilding@gmail.com" && \ git config user.name "ci-commercialbuildings" && \ From 435a2b2c340b17600c9061aeb068f5efa68ef97b Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:07:33 -0600 Subject: [PATCH 014/490] Update Docker volume paths and build output directory Update container paths to use consistent environment variables and change the Conan build output directory from OS-build-release to OS-build-release-v2. Add OPENSTUDIO_SOURCE_VOLUME variable for better path management. --- .github/workflows/incremental-build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index e84b4a880b..bad8b1a357 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -13,9 +13,10 @@ jobs: CONAN_USER_HOME: /home/runner/.conan2 AWS_REGION: us-west-2 CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - CONAN_DOCKER_VOLUME: /srv/data/jenkins/docker-volumes/conan-data + CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + OPENSTUDIO_SOURCE_VOLUME: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/OpenStudio BRANCH_NAME: ${{ github.ref_name }} container: # Define the Docker container for the job. All subsequent steps run inside it. @@ -39,16 +40,16 @@ jobs: run: | # Set up git and fetch PR head, then detect conan profile and install dependencies echo $PWD - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} + cd ${{ env.OPENSTUDIO_SOURCE_VOLUME }} echo $PWD && ls -la - git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}" && \ + git config --global --add safe.directory "${{ env.OPENSTUDIO_SOURCE_VOLUME }}" && \ git config user.email "cicommercialbuilding@gmail.com" && \ git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ git checkout origin/pr/${{ env.BRANCH_NAME }} && \ conan profile detect && \ - conan install . --output-folder=../OS-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release # # - name: Install dependencies and configure with CMake # # run: | From 6f5cadf1c064065c12cbb63b763aa003814e88cf Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:10:01 -0600 Subject: [PATCH 015/490] Fix OpenStudio source volume path in incremental build workflow Simplify the Docker volume configuration by directly specifying the full path to the OpenStudio source volume instead of using a derived environment variable. --- .github/workflows/incremental-build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index bad8b1a357..8fd64ea951 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -15,8 +15,7 @@ jobs: CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 - OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio - OPENSTUDIO_SOURCE_VOLUME: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/OpenStudio + OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio BRANCH_NAME: ${{ github.ref_name }} container: # Define the Docker container for the job. All subsequent steps run inside it. From 70dee16b4e9b9b425f745a48adca1b1ba7c715ce Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:23:21 -0600 Subject: [PATCH 016/490] remove jenkinsfiles --- Jenkinsfile_develop_code_coverage | 11 ----------- Jenkinsfile_develop_osx | 10 ---------- Jenkinsfile_develop_ubuntu_2204 | 11 ----------- Jenkinsfile_develop_ubuntu_2404 | 11 ----------- Jenkinsfile_develop_windows | 10 ---------- 5 files changed, 53 deletions(-) delete mode 100644 Jenkinsfile_develop_code_coverage delete mode 100644 Jenkinsfile_develop_osx delete mode 100644 Jenkinsfile_develop_ubuntu_2204 delete mode 100644 Jenkinsfile_develop_ubuntu_2404 delete mode 100644 Jenkinsfile_develop_windows diff --git a/Jenkinsfile_develop_code_coverage b/Jenkinsfile_develop_code_coverage deleted file mode 100644 index f9a8a06e09..0000000000 --- a/Jenkinsfile_develop_code_coverage +++ /dev/null @@ -1,11 +0,0 @@ - -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_incremental_code_coverage() - -} diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx deleted file mode 100644 index d7d18e8711..0000000000 --- a/Jenkinsfile_develop_osx +++ /dev/null @@ -1,10 +0,0 @@ -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_incremental_develop_osx() - -} diff --git a/Jenkinsfile_develop_ubuntu_2204 b/Jenkinsfile_develop_ubuntu_2204 deleted file mode 100644 index 25b53af792..0000000000 --- a/Jenkinsfile_develop_ubuntu_2204 +++ /dev/null @@ -1,11 +0,0 @@ - -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_incremental_develop_ubuntu_2204() - -} diff --git a/Jenkinsfile_develop_ubuntu_2404 b/Jenkinsfile_develop_ubuntu_2404 deleted file mode 100644 index 97371474db..0000000000 --- a/Jenkinsfile_develop_ubuntu_2404 +++ /dev/null @@ -1,11 +0,0 @@ - -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_incremental_develop_ubuntu_2404() - -} diff --git a/Jenkinsfile_develop_windows b/Jenkinsfile_develop_windows deleted file mode 100644 index cb285700d5..0000000000 --- a/Jenkinsfile_develop_windows +++ /dev/null @@ -1,10 +0,0 @@ -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_incremental_develop_windows() - -} From eb47f52f881825415896d8e1dc04d85bba4ddf53 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:28:35 -0600 Subject: [PATCH 017/490] Add debug output for branch name in incremental build workflow Print the BRANCH_NAME environment variable to help with troubleshooting the GitHub Actions workflow execution context. --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 8fd64ea951..f768042e8c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -39,6 +39,7 @@ jobs: run: | # Set up git and fetch PR head, then detect conan profile and install dependencies echo $PWD + echo ${{ env.BRANCH_NAME }} cd ${{ env.OPENSTUDIO_SOURCE_VOLUME }} echo $PWD && ls -la git config --global --add safe.directory "${{ env.OPENSTUDIO_SOURCE_VOLUME }}" && \ From e9e523005748571a39f4c18bab86aee71d5d137c Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:31:15 -0600 Subject: [PATCH 018/490] fix: Use head_ref for PR builds in incremental workflow Update branch name variable to properly handle pull request builds by using github.head_ref when available, falling back to github.ref_name for direct branch builds. --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index f768042e8c..59902151ee 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,7 @@ jobs: CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio - BRANCH_NAME: ${{ github.ref_name }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy From 223ad26c3c7adf2704e95ce0962ebb0d837cea58 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:35:44 -0600 Subject: [PATCH 019/490] Update PR number extraction in incremental build workflow Replace BRANCH_NAME with PR_NUMBER environment variable and improve extraction logic to handle both pull request numbers and branch name formats. --- .github/workflows/incremental-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 59902151ee..eaf479678d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,7 @@ jobs: CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio - BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + PR_NUMBER: ${{ github.event.pull_request.number || split(github.ref_name, '/')[0] }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -39,7 +39,7 @@ jobs: run: | # Set up git and fetch PR head, then detect conan profile and install dependencies echo $PWD - echo ${{ env.BRANCH_NAME }} + echo ${{ env.PR_NUMBER }} cd ${{ env.OPENSTUDIO_SOURCE_VOLUME }} echo $PWD && ls -la git config --global --add safe.directory "${{ env.OPENSTUDIO_SOURCE_VOLUME }}" && \ @@ -47,7 +47,7 @@ jobs: git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{ env.BRANCH_NAME }} && \ + git checkout origin/pr/${{ env.PR_NUMBER }} && \ conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From e7f9700e750755d024e273e2abe7ec146d671910 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:37:29 -0600 Subject: [PATCH 020/490] Update PR_NUMBER environment variable in incremental build workflow Use github.ref instead of the previous complex expression for better reference handling in the CI pipeline. --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index eaf479678d..451f728014 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,7 @@ jobs: CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio - PR_NUMBER: ${{ github.event.pull_request.number || split(github.ref_name, '/')[0] }} + PR_NUMBER: ${{ github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy From 0391dc491b0e76d516a1983ba072cfc1f15e76a2 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:39:14 -0600 Subject: [PATCH 021/490] Fix PR number extraction in incremental build workflow Update the PR_NUMBER environment variable to correctly extract the pull request number from GitHub event context, falling back to github.ref when not available. --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 451f728014..285fc8be7d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,7 @@ jobs: CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio - PR_NUMBER: ${{ github.ref }} + PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy From c0cb20baafbcaf998852a34ff6245977565dddd4 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:43:48 -0600 Subject: [PATCH 022/490] Remove Conan environment variables and update volume mount path Updates the incremental build workflow by removing unnecessary Conan-related environment variables and fixing the volume mount path to use /home/root instead of /home/ubuntu/conan-data. --- .github/workflows/incremental-build.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 285fc8be7d..51a8bc1d8d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -10,10 +10,6 @@ jobs: runs-on: Linux env: - CONAN_USER_HOME: /home/runner/.conan2 - AWS_REGION: us-west-2 - CONAN_HOST_VOLUME: /srv/data/jenkins/docker-volumes/conan-data - CONAN_DOCKER_VOLUME: /home/conan-data OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} @@ -22,7 +18,7 @@ jobs: image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: - - "/srv/data/jenkins/docker-volumes/conan-data:/home/ubuntu/conan-data" + - "/srv/data/jenkins/docker-volumes/conan-data:/home/root" - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" steps: From 1f2c9533318c910d985742f9384a1c51067e4f62 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:45:15 -0600 Subject: [PATCH 023/490] Remove unnecessary pip install conan step from incremental build workflow --- .github/workflows/incremental-build.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 51a8bc1d8d..634c5cdac6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -26,10 +26,6 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.12' - - - name: Enviroment display - run: | - pip install conan - name: Cmake Setup run: | From 1ac5d3d9e251fad2a09841c7dfebb583a5e7337b Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:48:02 -0600 Subject: [PATCH 024/490] Add whoami command to debug CI environment in incremental build workflow --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 634c5cdac6..47881d565d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -40,6 +40,7 @@ jobs: git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ git checkout origin/pr/${{ env.PR_NUMBER }} && \ + echo whoami conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 2be29ee219b688411a9bcb4e4fe63932e34b30bd Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:48:51 -0600 Subject: [PATCH 025/490] fix: remove echo from whoami command in incremental build workflow --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 47881d565d..97340e900c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -40,7 +40,7 @@ jobs: git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ git checkout origin/pr/${{ env.PR_NUMBER }} && \ - echo whoami + whoami conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 37eb69049ccdc998bfdab7d1fb9adcbb27923c3b Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:50:53 -0600 Subject: [PATCH 026/490] Add disk space and home directory checks to CI workflow Add diagnostic commands to display available disk space and list home directory contents in the incremental build workflow, helping to troubleshoot CI environment issues. --- .github/workflows/incremental-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 97340e900c..e038965eb1 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -41,6 +41,8 @@ jobs: git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ git checkout origin/pr/${{ env.PR_NUMBER }} && \ whoami + df -h + ls -la /github/home conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From efae7f87f1e398b609df7bc8c99b27bb98a25b8a Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 15:53:56 -0600 Subject: [PATCH 027/490] Add debug commands to incremental build workflow Add ls command to check /home/root directory and tail command to prevent workflow from exiting prematurely during troubleshooting. --- .github/workflows/incremental-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index e038965eb1..406fde6082 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -43,6 +43,8 @@ jobs: whoami df -h ls -la /github/home + ls -la /home/root + tail -f /dev/null conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 0dab21eb4c97e2ff393a75fea4109f499da737c2 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:00:34 -0600 Subject: [PATCH 028/490] Update Conan cache volume mapping in incremental build workflow Map the Conan 2 cache directory correctly to preserve cache between builds --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 406fde6082..2cf541fe43 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -18,7 +18,7 @@ jobs: image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: - - "/srv/data/jenkins/docker-volumes/conan-data:/home/root" + - "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" steps: From ece9fd086b7a1c504f7281a8c88b92fd3110a6d0 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:04:54 -0600 Subject: [PATCH 029/490] Remove debug tail command from incremental build workflow The workflow no longer needs the `tail -f /dev/null` command that was likely used for debugging purposes. --- .github/workflows/incremental-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 2cf541fe43..7baad3cc47 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,7 +44,6 @@ jobs: df -h ls -la /github/home ls -la /home/root - tail -f /dev/null conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 6cf90ccb76e5682394b3adfa5761db3e6ab7df76 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:06:10 -0600 Subject: [PATCH 030/490] Comment out conan profile detect in incremental build workflow The change disables the automatic profile detection step in the Conan package manager configuration, while preserving the rest of the installation process. --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 7baad3cc47..c959e75872 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,7 +44,7 @@ jobs: df -h ls -la /github/home ls -la /home/root - conan profile detect && \ + # conan profile detect && \ conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release # # - name: Install dependencies and configure with CMake From 66744f026a44310b0c332314f077f1817d08432f Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:38:58 -0600 Subject: [PATCH 031/490] Update incremental build workflow with improved Docker volume structure Refactor GitHub workflow by introducing environment variables for Docker volumes and paths. Enable CMake configuration step with detailed build options for OpenStudio. Fix directory structure references for better maintainability. --- .github/workflows/incremental-build.yml | 54 ++++++++++++------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index c959e75872..28330df609 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -11,7 +11,9 @@ jobs: env: OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 - OPENSTUDIO_SOURCE_VOLUME: /home/ubuntu/OpenStudio/OpenStudio + OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + OPENSTUDIO_SOURCE_NAME: OpenStudio + OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. @@ -30,38 +32,36 @@ jobs: - name: Cmake Setup run: | # Set up git and fetch PR head, then detect conan profile and install dependencies - echo $PWD - echo ${{ env.PR_NUMBER }} - cd ${{ env.OPENSTUDIO_SOURCE_VOLUME }} - echo $PWD && ls -la - git config --global --add safe.directory "${{ env.OPENSTUDIO_SOURCE_VOLUME }}" && \ + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} + git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ git config user.email "cicommercialbuilding@gmail.com" && \ git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ git checkout origin/pr/${{ env.PR_NUMBER }} && \ - whoami - df -h - ls -la /github/home - ls -la /home/root - # conan profile detect && \ - conan install . --output-folder=../OS-build-release-v2 --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release -# # - name: Install dependencies and configure with CMake -# # run: | -# # echo $PWD -# # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }} -# # mkdir -p OS-build-release-v2 -# # cd OS-build-release-v2 -# # conan install ../OpenStudio --output-folder=. --build=missing \ -# # -c tools.cmake.cmaketoolchain:generator=Ninja \ -# # -s compiler.cppstd=20 -s build_type=Release -# # source ./conanbuild.sh -# cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ -# -DCMAKE_BUILD_TYPE=Release \ -# -DBUILD_TESTING=ON -DCPACK_BINARY_DEB=ON -DCPACK_BINARY_TGZ=ON \ -# -DBUILD_PYTHON_BINDINGS=ON -DBUILD_CLI=ON -DPYTHON_VERSION=3.12.2 \ -# ../OpenStudio + - name: Install dependencies and configure with CMake + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + source ./conanbuild.sh + cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ + -DCPACK_BINARY_TGZ:BOOL=ON \ + -DCPACK_BINARY_IFW:BOOL=OFF \ + -DCPACK_BINARY_NSIS:BOOL=OFF \ + -DCPACK_BINARY_RPM:BOOL=OFF \ + -DCPACK_BINARY_STGZ:BOOL=OFF \ + -DCPACK_BINARY_TBZ2:BOOL=OFF \ + -DCPACK_BINARY_TXZ:BOOL=OFF \ + -DCPACK_BINARY_TZ:BOOL=OFF \ + -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + -DPYTHON_VERSION:STRING=3.12.2 \ + -DBUILD_RUBY_BINDINGS:BOOL=ON \ + -DBUILD_CLI:BOOL=ON \ + ../${{ OPENSTUDIO_SOURCE_NAME }} # - name: Build with Ninja # run: | From 04e455846faad8d715b77a6fe6b7b47b76d7d074 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:40:54 -0600 Subject: [PATCH 032/490] Fix environment variable reference in incremental build workflow Correct the reference to OPENSTUDIO_SOURCE_NAME by adding the 'env.' prefix to properly access the environment variable in the CMake configuration step. --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 28330df609..8a8efeaeb6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -61,7 +61,7 @@ jobs: -DPYTHON_VERSION:STRING=3.12.2 \ -DBUILD_RUBY_BINDINGS:BOOL=ON \ -DBUILD_CLI:BOOL=ON \ - ../${{ OPENSTUDIO_SOURCE_NAME }} + ../${{ env.OPENSTUDIO_SOURCE_NAME }} # - name: Build with Ninja # run: | From 4cd0efbbda1d0e2a394a4b1fc09622b03c69bf8a Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:44:49 -0600 Subject: [PATCH 033/490] Fix indentation in CMake configuration command Corrects the indentation of the CMake command in the incremental build workflow, improving readability while maintaining the same functionality. --- .github/workflows/incremental-build.yml | 34 ++++++++++++------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 8a8efeaeb6..65765ce9d2 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -45,23 +45,23 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} source ./conanbuild.sh - cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake - -DCMAKE_BUILD_TYPE:STRING=Release \ - -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ - -DCPACK_BINARY_TGZ:BOOL=ON \ - -DCPACK_BINARY_IFW:BOOL=OFF \ - -DCPACK_BINARY_NSIS:BOOL=OFF \ - -DCPACK_BINARY_RPM:BOOL=OFF \ - -DCPACK_BINARY_STGZ:BOOL=OFF \ - -DCPACK_BINARY_TBZ2:BOOL=OFF \ - -DCPACK_BINARY_TXZ:BOOL=OFF \ - -DCPACK_BINARY_TZ:BOOL=OFF \ - -DBUILD_PYTHON_BINDINGS:BOOL=ON \ - -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ - -DPYTHON_VERSION:STRING=3.12.2 \ - -DBUILD_RUBY_BINDINGS:BOOL=ON \ - -DBUILD_CLI:BOOL=ON \ - ../${{ env.OPENSTUDIO_SOURCE_NAME }} + cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ + -DCPACK_BINARY_TGZ:BOOL=ON \ + -DCPACK_BINARY_IFW:BOOL=OFF \ + -DCPACK_BINARY_NSIS:BOOL=OFF \ + -DCPACK_BINARY_RPM:BOOL=OFF \ + -DCPACK_BINARY_STGZ:BOOL=OFF \ + -DCPACK_BINARY_TBZ2:BOOL=OFF \ + -DCPACK_BINARY_TXZ:BOOL=OFF \ + -DCPACK_BINARY_TZ:BOOL=OFF \ + -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + -DPYTHON_VERSION:STRING=3.12.2 \ + -DBUILD_RUBY_BINDINGS:BOOL=ON \ + -DBUILD_CLI:BOOL=ON \ + ../${{ env.OPENSTUDIO_SOURCE_NAME }} # - name: Build with Ninja # run: | From d825b84a98523a37e173c72bfa3763fe18dedf6a Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:47:56 -0600 Subject: [PATCH 034/490] Comment out Python setup step in incremental build workflow The change removes the Python setup step from the GitHub Actions workflow by commenting it out, as it may not be necessary for the incremental build process. --- .github/workflows/incremental-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 65765ce9d2..702818b892 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -24,10 +24,10 @@ jobs: - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" steps: - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.12' + # - name: Setup Python + # uses: actions/setup-python@v5 + # with: + # python-version: '3.12' - name: Cmake Setup run: | From a368077ec18bd121aeb29b443d64fb89e2272812 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:49:37 -0600 Subject: [PATCH 035/490] Add debugging pause in incremental build workflow Add tail -f /dev/null command to pause execution in the GitHub workflow, allowing for debugging and investigation of the build environment before proceeding with the build process. --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 702818b892..c211437754 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,6 +44,7 @@ jobs: - name: Install dependencies and configure with CMake run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + tail -f /dev/null source ./conanbuild.sh cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE:STRING=Release \ From 55ab4321a7d52d8273440d8080e7991701668726 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:54:15 -0600 Subject: [PATCH 036/490] Fix CMake command formatting in incremental build workflow Improve readability of the CMake command by breaking it into multiple lines with proper line continuation using backslashes. --- .github/workflows/incremental-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index c211437754..75c60cb5fd 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -46,7 +46,8 @@ jobs: cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} tail -f /dev/null source ./conanbuild.sh - cmake -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake + cmake -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ -DCMAKE_BUILD_TYPE:STRING=Release \ -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ -DCPACK_BINARY_TGZ:BOOL=ON \ From f9f7288721b7417a2227cc630dd801bd4a93ca9d Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:54:57 -0600 Subject: [PATCH 037/490] Remove debug tail command from incremental build workflow The change removes an unnecessary `tail -f /dev/null` command from the GitHub Actions workflow that was likely used for debugging purposes. --- .github/workflows/incremental-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 75c60cb5fd..1f8be8d22c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,7 +44,6 @@ jobs: - name: Install dependencies and configure with CMake run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - tail -f /dev/null source ./conanbuild.sh cmake -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ From e9d33e60163f9b602dd75b3ce36fd8d9fabb371c Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:57:36 -0600 Subject: [PATCH 038/490] Add printenv command to incremental build workflow for debugging --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1f8be8d22c..ef2c4d9faa 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -45,6 +45,7 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} source ./conanbuild.sh + printenv cmake -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ -DCMAKE_BUILD_TYPE:STRING=Release \ From 313c7999c3f796868e54edc9fe82c6beab13fe37 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:58:43 -0600 Subject: [PATCH 039/490] Comment out cmake configuration in incremental build workflow The change temporarily disables the cmake configuration step in the GitHub Actions incremental build workflow by commenting out the entire cmake command and its parameters. --- .github/workflows/incremental-build.yml | 36 ++++++++++++------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index ef2c4d9faa..5508db8544 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -46,24 +46,24 @@ jobs: cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} source ./conanbuild.sh printenv - cmake -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ - -DCMAKE_BUILD_TYPE:STRING=Release \ - -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ - -DCPACK_BINARY_TGZ:BOOL=ON \ - -DCPACK_BINARY_IFW:BOOL=OFF \ - -DCPACK_BINARY_NSIS:BOOL=OFF \ - -DCPACK_BINARY_RPM:BOOL=OFF \ - -DCPACK_BINARY_STGZ:BOOL=OFF \ - -DCPACK_BINARY_TBZ2:BOOL=OFF \ - -DCPACK_BINARY_TXZ:BOOL=OFF \ - -DCPACK_BINARY_TZ:BOOL=OFF \ - -DBUILD_PYTHON_BINDINGS:BOOL=ON \ - -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ - -DPYTHON_VERSION:STRING=3.12.2 \ - -DBUILD_RUBY_BINDINGS:BOOL=ON \ - -DBUILD_CLI:BOOL=ON \ - ../${{ env.OPENSTUDIO_SOURCE_NAME }} + # cmake -G Ninja \ + # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ + # -DCMAKE_BUILD_TYPE:STRING=Release \ + # -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ + # -DCPACK_BINARY_TGZ:BOOL=ON \ + # -DCPACK_BINARY_IFW:BOOL=OFF \ + # -DCPACK_BINARY_NSIS:BOOL=OFF \ + # -DCPACK_BINARY_RPM:BOOL=OFF \ + # -DCPACK_BINARY_STGZ:BOOL=OFF \ + # -DCPACK_BINARY_TBZ2:BOOL=OFF \ + # -DCPACK_BINARY_TXZ:BOOL=OFF \ + # -DCPACK_BINARY_TZ:BOOL=OFF \ + # -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + # -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + # -DPYTHON_VERSION:STRING=3.12.2 \ + # -DBUILD_RUBY_BINDINGS:BOOL=ON \ + # -DBUILD_CLI:BOOL=ON \ + # ../${{ env.OPENSTUDIO_SOURCE_NAME }} # - name: Build with Ninja # run: | From 4c73b47e6b1494873532325279fd55c8dfcbda64 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 16:59:52 -0600 Subject: [PATCH 040/490] Comment out conanbuild.sh sourcing in incremental build workflow The change temporarily disables the sourcing of conanbuild.sh in the GitHub Actions workflow, adding an ls command to inspect directory contents instead. This appears to be a debugging change to troubleshoot build issues. --- .github/workflows/incremental-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 5508db8544..cdce0f3064 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,7 +44,8 @@ jobs: - name: Install dependencies and configure with CMake run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - source ./conanbuild.sh + ls -la + # source ./conanbuild.sh printenv # cmake -G Ninja \ # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ From 4a17bd52f60977c2adb3bee3b11b5b22829d79ab Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 17:01:14 -0600 Subject: [PATCH 041/490] fix: source conanbuild.sh in incremental build workflow Uncomment the sourcing of conanbuild.sh script and add a command to display its contents for debugging purposes in the CI workflow. --- .github/workflows/incremental-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index cdce0f3064..e7dd3fea10 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -45,7 +45,8 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} ls -la - # source ./conanbuild.sh + cat ./conanbuild.sh + . ./conanbuild.sh printenv # cmake -G Ninja \ # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ From bc9976f4e0c12feb559558964dea4f1c9f1e945b Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 17:02:27 -0600 Subject: [PATCH 042/490] Uncomment CMake configuration in incremental build workflow Remove debug commands and enable the previously commented CMake configuration step in the GitHub Actions workflow. --- .github/workflows/incremental-build.yml | 39 ++++++++++++------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index e7dd3fea10..f520f76c91 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -44,28 +44,25 @@ jobs: - name: Install dependencies and configure with CMake run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ls -la - cat ./conanbuild.sh . ./conanbuild.sh - printenv - # cmake -G Ninja \ - # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ - # -DCMAKE_BUILD_TYPE:STRING=Release \ - # -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ - # -DCPACK_BINARY_TGZ:BOOL=ON \ - # -DCPACK_BINARY_IFW:BOOL=OFF \ - # -DCPACK_BINARY_NSIS:BOOL=OFF \ - # -DCPACK_BINARY_RPM:BOOL=OFF \ - # -DCPACK_BINARY_STGZ:BOOL=OFF \ - # -DCPACK_BINARY_TBZ2:BOOL=OFF \ - # -DCPACK_BINARY_TXZ:BOOL=OFF \ - # -DCPACK_BINARY_TZ:BOOL=OFF \ - # -DBUILD_PYTHON_BINDINGS:BOOL=ON \ - # -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ - # -DPYTHON_VERSION:STRING=3.12.2 \ - # -DBUILD_RUBY_BINDINGS:BOOL=ON \ - # -DBUILD_CLI:BOOL=ON \ - # ../${{ env.OPENSTUDIO_SOURCE_NAME }} + cmake -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ + -DCPACK_BINARY_TGZ:BOOL=ON \ + -DCPACK_BINARY_IFW:BOOL=OFF \ + -DCPACK_BINARY_NSIS:BOOL=OFF \ + -DCPACK_BINARY_RPM:BOOL=OFF \ + -DCPACK_BINARY_STGZ:BOOL=OFF \ + -DCPACK_BINARY_TBZ2:BOOL=OFF \ + -DCPACK_BINARY_TXZ:BOOL=OFF \ + -DCPACK_BINARY_TZ:BOOL=OFF \ + -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + -DPYTHON_VERSION:STRING=3.12.2 \ + -DBUILD_RUBY_BINDINGS:BOOL=ON \ + -DBUILD_CLI:BOOL=ON \ + ../${{ env.OPENSTUDIO_SOURCE_NAME }} # - name: Build with Ninja # run: | From f7f622bb12dd893aa0b4f1862526ab3921177313 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 17:10:14 -0600 Subject: [PATCH 043/490] Uncomment and update Ninja build step in incremental workflow Enable the previously commented out Ninja build step and improve it by using dynamic CPU core allocation and proper environment variable references for build directories. --- .github/workflows/incremental-build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index f520f76c91..1dff15e68c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -64,11 +64,11 @@ jobs: -DBUILD_CLI:BOOL=ON \ ../${{ env.OPENSTUDIO_SOURCE_NAME }} -# - name: Build with Ninja -# run: | -# cd OS-build-release-v2 -# source ./conanbuild.sh -# ninja -j 2 package + - name: Build with Ninja + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + source ./conanbuild.sh + ninja -j $(( $(nproc) - 1 )) package # - name: Run CTests with retries # run: | From 4f01c15ec77183630c4d1cd3067e442402803897 Mon Sep 17 00:00:00 2001 From: anchapin Date: Wed, 25 Jun 2025 17:12:14 -0600 Subject: [PATCH 044/490] fix: use dot operator instead of source in build script --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1dff15e68c..3f5b155985 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -67,7 +67,7 @@ jobs: - name: Build with Ninja run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - source ./conanbuild.sh + . ./conanbuild.sh ninja -j $(( $(nproc) - 1 )) package # - name: Run CTests with retries From 5b8668115bd339c44f15d2a5dcfaec99d288e26b Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 08:41:13 -0600 Subject: [PATCH 045/490] Using 80% of the cores instead of max-1 since last time it crashed --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 3f5b155985..e6d35eeeac 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -68,7 +68,7 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} . ./conanbuild.sh - ninja -j $(( $(nproc) - 1 )) package + ninja -j $(( ($(nproc) * 80 + 50) / 100 )) package # - name: Run CTests with retries # run: | From 460450244dfcf6aa04f20f4a33de5978c37f70b9 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 08:55:20 -0600 Subject: [PATCH 046/490] fix: use MAX_SAFE_THREADS variable for Ninja and CTest parallelism --- .github/workflows/incremental-build.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index e6d35eeeac..42e6bf9122 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -15,6 +15,7 @@ jobs: OPENSTUDIO_SOURCE_NAME: OpenStudio OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} + MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -68,14 +69,14 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} . ./conanbuild.sh - ninja -j $(( ($(nproc) * 80 + 50) / 100 )) package + ninja -j ${{ env.MAX_SAFE_THREADS }} package - # - name: Run CTests with retries - # run: | - # cd OS-build-release-v2 - # ctest -j 2 -T test --no-compress-output --output-on-failure || \ - # ctest -T test -j 2 --rerun-failed --no-compress-output --output-on-failure || \ - # ctest -T test -j 2 --rerun-failed --no-compress-output -VV + - name: Run CTests with retries + run: | + cd OS-build-release-v2 + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV # - name: Upload build artifacts # uses: actions/upload-artifact@v4 From 6e7e02e391aec795fe77c4e8e8cf0a88d440e0fa Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 09:00:49 -0600 Subject: [PATCH 047/490] fix: update CTest directory path to use environment variables --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 42e6bf9122..4e2052cc4c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -73,7 +73,7 @@ jobs: - name: Run CTests with retries run: | - cd OS-build-release-v2 + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV From 724bd01066f9d3c1745823c76acc8489478ca94d Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 09:17:51 -0600 Subject: [PATCH 048/490] fix: update CTest command and enable artifact upload in incremental build workflow --- .github/workflows/incremental-build.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 4e2052cc4c..6c86bb0666 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -77,14 +77,15 @@ jobs: ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV + continue-on-error: true - # - name: Upload build artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: ubuntu-2204-artifacts - # path: | - # OS-build-release-v2/*.deb - # OS-build-release-v2/_CPack_Packages/Linux/TGZ/*.tar.gz + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: ubuntu-2204-artifacts + path: | + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz # - name: Upload to S3 # if: github.event_name == 'pull_request' From b894aaeb65fe602a616aa2d167ee3e0490adf811 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 13:36:07 -0600 Subject: [PATCH 049/490] fix: update CTest directory path and enhance test result handling in incremental build workflow --- .github/workflows/incremental-build.yml | 40 +++++++++++++------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 6c86bb0666..a8cc8b8eec 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,6 +16,7 @@ jobs: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) + CTEST_DIR: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -25,10 +26,10 @@ jobs: - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" steps: - # - name: Setup Python - # uses: actions/setup-python@v5 - # with: - # python-version: '3.12' + - name: Cleanup ctest directory + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + rm -rf ${{ env.CTEST_DIR }} - name: Cmake Setup run: | @@ -74,11 +75,22 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV + tail -f /dev/null & + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } continue-on-error: true + - name: Run CTest and Generate JUnit XML + run: | + cd build + ctest --output-junit ctest-results.xml --test-dir . # Or adjust path based on your project + if: always() # Ensure this step runs even if tests fail + - name: Publish Test Results + uses: test-summary/action@v2 # Or choose a different test reporting action + with: + paths: "build/ctest-results.xml" # Path to the generated JUnit XML file + if: always() # Ensure this step runs even if tests fail - name: Upload build artifacts uses: actions/upload-artifact@v4 with: @@ -86,15 +98,5 @@ jobs: path: | ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz - - # - name: Upload to S3 - # if: github.event_name == 'pull_request' - # env: - # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - # run: | - # sudo apt-get install -y awscli - # cd OS-build-release-v2 - # BRANCH=${{ github.head_ref }} - # aws s3 cp *.deb s3://openstudio-ci-builds/$BRANCH/ --acl public-read - # aws s3 cp _CPack_Packages/Linux/TGZ/*.tar.gz s3://openstudio-ci-builds/$BRANCH/ --acl public-read + env: + NODE_TLS_REJECT_UNAUTHORIZED: '0' From 04692675eabbe804ca5f3f1b144cff0098c2d8f9 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 13:38:51 -0600 Subject: [PATCH 050/490] fix: update CTest results directory variable and cleanup step --- .github/workflows/incremental-build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index a8cc8b8eec..774703ab81 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,7 @@ jobs: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) - CTEST_DIR: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing + CTEST_RESULTS: Testing container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -29,7 +29,7 @@ jobs: - name: Cleanup ctest directory run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - rm -rf ${{ env.CTEST_DIR }} + rm -rf ${{ env.CTEST_RESULTS }} - name: Cmake Setup run: | @@ -76,9 +76,9 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} tail -f /dev/null & - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${ env.CTEST_DIR } + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } continue-on-error: true - name: Run CTest and Generate JUnit XML run: | From d149a52bf40783439e5bd54e85cd249d8c45881b Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 13:47:21 -0600 Subject: [PATCH 051/490] fix: streamline CTest execution and remove redundant steps in incremental build workflow --- .github/workflows/incremental-build.yml | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 774703ab81..00eb79ee94 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -75,22 +75,17 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - tail -f /dev/null & ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } + if: always() continue-on-error: true - - name: Run CTest and Generate JUnit XML - run: | - cd build - ctest --output-junit ctest-results.xml --test-dir . # Or adjust path based on your project - if: always() # Ensure this step runs even if tests fail - name: Publish Test Results uses: test-summary/action@v2 # Or choose a different test reporting action with: paths: "build/ctest-results.xml" # Path to the generated JUnit XML file - if: always() # Ensure this step runs even if tests fail + - name: Upload build artifacts uses: actions/upload-artifact@v4 with: From 12413ae223a4510ca1376e62800d6ef07c8cb482 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 13:56:17 -0600 Subject: [PATCH 052/490] fix: correct CMake options and improve CTest execution flow in incremental build workflow --- .github/workflows/incremental-build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 00eb79ee94..f8363dbf21 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -50,7 +50,8 @@ jobs: cmake -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ -DCMAKE_BUILD_TYPE:STRING=Release \ - -DBUILD_TESTING:BOOL=ON-DCPACK_BINARY_DEB:BOOL=ON \ + -DBUILD_TESTING:BOOL=ON \ + -DCPACK_BINARY_DEB:BOOL=ON \ -DCPACK_BINARY_TGZ:BOOL=ON \ -DCPACK_BINARY_IFW:BOOL=OFF \ -DCPACK_BINARY_NSIS:BOOL=OFF \ @@ -75,9 +76,9 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${ env.CTEST_RESULTS } + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} if: always() continue-on-error: true From 7defb8ea1f659174d348350978ce128db8a6e53e Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:06:46 -0600 Subject: [PATCH 053/490] fix: update CTest results handling and cleanup process in incremental build workflow --- .github/workflows/incremental-build.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index f8363dbf21..6ccb4d6565 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,7 +16,6 @@ jobs: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) - CTEST_RESULTS: Testing container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -29,7 +28,7 @@ jobs: - name: Cleanup ctest directory run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - rm -rf ${{ env.CTEST_RESULTS }} + rm -rf Testing - name: Cmake Setup run: | @@ -76,16 +75,15 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit ctest-results.xml --test-dir ${{ env.CTEST_RESULTS }} - if: always() + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV continue-on-error: true - name: Publish Test Results uses: test-summary/action@v2 # Or choose a different test reporting action with: - paths: "build/ctest-results.xml" # Path to the generated JUnit XML file + paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/**/*.xml" # Path to the generated JUnit XML file - name: Upload build artifacts uses: actions/upload-artifact@v4 From dbdafa10c1e171eb18ec73ed015d17e9df9dde49 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:22:17 -0600 Subject: [PATCH 054/490] fix: update CTest execution to include JUnit output and modify test result publishing --- .github/workflows/incremental-build.yml | 106 ++++++++++++------------ 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 6ccb4d6565..892ddaaa3b 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -30,67 +30,67 @@ jobs: cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} rm -rf Testing - - name: Cmake Setup - run: | - # Set up git and fetch PR head, then detect conan profile and install dependencies - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} - git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ - git config user.email "cicommercialbuilding@gmail.com" && \ - git config user.name "ci-commercialbuildings" && \ - git fetch origin && \ - git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{ env.PR_NUMBER }} && \ - conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + # - name: Cmake Setup + # run: | + # # Set up git and fetch PR head, then detect conan profile and install dependencies + # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} + # git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ + # git config user.email "cicommercialbuilding@gmail.com" && \ + # git config user.name "ci-commercialbuildings" && \ + # git fetch origin && \ + # git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ + # git checkout origin/pr/${{ env.PR_NUMBER }} && \ + # conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - - name: Install dependencies and configure with CMake - run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - . ./conanbuild.sh - cmake -G Ninja \ - -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ - -DCMAKE_BUILD_TYPE:STRING=Release \ - -DBUILD_TESTING:BOOL=ON \ - -DCPACK_BINARY_DEB:BOOL=ON \ - -DCPACK_BINARY_TGZ:BOOL=ON \ - -DCPACK_BINARY_IFW:BOOL=OFF \ - -DCPACK_BINARY_NSIS:BOOL=OFF \ - -DCPACK_BINARY_RPM:BOOL=OFF \ - -DCPACK_BINARY_STGZ:BOOL=OFF \ - -DCPACK_BINARY_TBZ2:BOOL=OFF \ - -DCPACK_BINARY_TXZ:BOOL=OFF \ - -DCPACK_BINARY_TZ:BOOL=OFF \ - -DBUILD_PYTHON_BINDINGS:BOOL=ON \ - -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ - -DPYTHON_VERSION:STRING=3.12.2 \ - -DBUILD_RUBY_BINDINGS:BOOL=ON \ - -DBUILD_CLI:BOOL=ON \ - ../${{ env.OPENSTUDIO_SOURCE_NAME }} + # - name: Install dependencies and configure with CMake + # run: | + # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + # . ./conanbuild.sh + # cmake -G Ninja \ + # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ + # -DCMAKE_BUILD_TYPE:STRING=Release \ + # -DBUILD_TESTING:BOOL=ON \ + # -DCPACK_BINARY_DEB:BOOL=ON \ + # -DCPACK_BINARY_TGZ:BOOL=ON \ + # -DCPACK_BINARY_IFW:BOOL=OFF \ + # -DCPACK_BINARY_NSIS:BOOL=OFF \ + # -DCPACK_BINARY_RPM:BOOL=OFF \ + # -DCPACK_BINARY_STGZ:BOOL=OFF \ + # -DCPACK_BINARY_TBZ2:BOOL=OFF \ + # -DCPACK_BINARY_TXZ:BOOL=OFF \ + # -DCPACK_BINARY_TZ:BOOL=OFF \ + # -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + # -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + # -DPYTHON_VERSION:STRING=3.12.2 \ + # -DBUILD_RUBY_BINDINGS:BOOL=ON \ + # -DBUILD_CLI:BOOL=ON \ + # ../${{ env.OPENSTUDIO_SOURCE_NAME }} - - name: Build with Ninja - run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - . ./conanbuild.sh - ninja -j ${{ env.MAX_SAFE_THREADS }} package + # - name: Build with Ninja + # run: | + # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + # . ./conanbuild.sh + # ninja -j ${{ env.MAX_SAFE_THREADS }} package - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml continue-on-error: true - name: Publish Test Results - uses: test-summary/action@v2 # Or choose a different test reporting action + uses: EnricoMi/publish-unit-test-result-action/composite@v2 # Or choose a different test reporting action with: - paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/**/*.xml" # Path to the generated JUnit XML file + paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/ctest-results.xml" # Path to the generated JUnit XML file - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: ubuntu-2204-artifacts - path: | - ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb - ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz - env: - NODE_TLS_REJECT_UNAUTHORIZED: '0' + # - name: Upload build artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: ubuntu-2204-artifacts + # path: | + # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb + # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz + # env: + # NODE_TLS_REJECT_UNAUTHORIZED: '0' From 21f7798c0dd3334eabe475bf53fab47fb5bb475e Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:30:30 -0600 Subject: [PATCH 055/490] fix: update CTest execution commands and modify test result publishing in incremental build workflow; remove macOS and Windows workflow files --- .github/workflows/incremental-build.yml | 13 ++++++++----- .github/workflows/mac.yml | 25 ------------------------- .github/workflows/windows.yml | 24 ------------------------ 3 files changed, 8 insertions(+), 54 deletions(-) delete mode 100644 .github/workflows/mac.yml delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 892ddaaa3b..bb6a67bc1c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -75,15 +75,18 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV + # ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + # ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + # ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/composite@v2 # Or choose a different test reporting action + uses: EnricoMi/publish-unit-test-result-action/linux@2 with: - paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/ctest-results.xml" # Path to the generated JUnit XML file + files: Testing/**/*.xml # - name: Upload build artifacts # uses: actions/upload-artifact@v4 diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml deleted file mode 100644 index 58a20a5721..0000000000 --- a/.github/workflows/mac.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Test Self-hosted Runner -on: push - -jobs: - test-self-hosted: - runs-on: macOS - env: - BRANCH_NAME: ${{ github.ref_name }} - BUILD_NUMBER: ${{ github.run_number }} - DEPLOY_PATH: ${{ github.repository }}/${{ github.ref_name }}/${{ github.run_number }} # Path for S3 deployment - S3_BUCKET: ext-gem-dashboard - - steps: - - name: Checkout Repository - # The repository will be checked out inside the 'nrel/openstudio:3.10.0' container - uses: actions/checkout@v4 # Use v4 for better security and features - with: - submodules: true # Set to true if your repository uses Git submodules - - - name: Test bash command - shell: bash - run: | - conan --version - cmake --version - ninja --version \ No newline at end of file diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index f1621fc048..0000000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Test Self-hosted Runner -on: push - -jobs: - test-self-hosted: - runs-on: windows - env: - BRANCH_NAME: ${{ github.ref_name }} - BUILD_NUMBER: ${{ github.run_number }} - DEPLOY_PATH: ${{ github.repository }}/${{ github.ref_name }}/${{ github.run_number }} # Path for S3 deployment - S3_BUCKET: ext-gem-dashboard - - steps: - - name: Checkout Repository - # The repository will be checked out inside the 'nrel/openstudio:3.10.0' container - uses: actions/checkout@v4 # Use v4 for better security and features - with: - submodules: true # Set to true if your repository uses Git submodules - - - name: Test cmd command - shell: cmd - run: | - conan --version - cmake --version From d78b2dd470d51b132c9e365d7a6c09b026a8dd53 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:33:43 -0600 Subject: [PATCH 056/490] fix: update test result publishing action to use version v2 in incremental build workflow --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index bb6a67bc1c..1092228d29 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -84,7 +84,7 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/linux@2 + uses: EnricoMi/publish-unit-test-result-action/linux@v2 with: files: Testing/**/*.xml From 4deee6120be1000173601dcd3ea02d05e5eb297a Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:37:12 -0600 Subject: [PATCH 057/490] fix: update test result publishing action to use version v2 --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1092228d29..b99c7413d6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -84,7 +84,7 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/linux@v2 + uses: EnricoMi/publish-unit-test-result-action@v2 with: files: Testing/**/*.xml From 3cdecd3ffa42642a96bef76c660193462725d9eb Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:38:02 -0600 Subject: [PATCH 058/490] fix: update test result publishing action to use composite version v2 --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b99c7413d6..b4e0b32180 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -84,7 +84,7 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 + uses: EnricoMi/publish-unit-test-result-action/composite@v2 with: files: Testing/**/*.xml From 5ceb7bc3270ad286162feb726fc59b7d23048f93 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:40:26 -0600 Subject: [PATCH 059/490] fix: enhance CTest execution to include JUnit output and update test result publishing action --- .github/workflows/incremental-build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b4e0b32180..b6da5a71de 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -75,18 +75,18 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV - # ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - # ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - # ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/composite@v2 + uses: EnricoMi/publish-unit-test-result-action@v2 + if: (!cancelled()) with: files: Testing/**/*.xml + check_name: "CTest Results" + comment_title: "CTest Results" # - name: Upload build artifacts # uses: actions/upload-artifact@v4 From 91c349d7e21cbf48631a57ed608581e55a4b8bab Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:42:05 -0600 Subject: [PATCH 060/490] fix: update permissions in incremental build workflow and specify action version for test results publishing --- .github/workflows/incremental-build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b6da5a71de..81f61f83b1 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -9,6 +9,12 @@ jobs: if: contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') runs-on: Linux + permissions: + contents: read + issues: read + checks: write + pull-requests: write + env: OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio @@ -81,7 +87,7 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@v2 + uses: EnricoMi/publish-unit-test-result-action/linux@v2 if: (!cancelled()) with: files: Testing/**/*.xml From ee9901482e853e2cd99048e8e10c4596314c3ae8 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:44:52 -0600 Subject: [PATCH 061/490] fix: update test results publishing action to use mikepenz/action-junit-report and enhance report options --- .github/workflows/incremental-build.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 81f61f83b1..b23083ec0f 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -87,12 +87,16 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action/linux@v2 + uses: mikepenz/action-junit-report@v4 if: (!cancelled()) with: - files: Testing/**/*.xml - check_name: "CTest Results" - comment_title: "CTest Results" + report_paths: Testing/**/*.xml + check_name: CTest Results + fail_on_failure: false + require_tests: false + annotate_only: false + detailed_summary: true + include_passed: true # - name: Upload build artifacts # uses: actions/upload-artifact@v4 From 71bc96f14bf1fe31cc5ffccf714f85762f860869 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 14:46:15 -0600 Subject: [PATCH 062/490] fix: update test results publishing action to use dorny/test-reporter and enhance report options --- .github/workflows/incremental-build.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b23083ec0f..8e9d14af01 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -87,16 +87,15 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: mikepenz/action-junit-report@v4 + uses: dorny/test-reporter@v1 if: (!cancelled()) with: - report_paths: Testing/**/*.xml - check_name: CTest Results - fail_on_failure: false - require_tests: false - annotate_only: false - detailed_summary: true - include_passed: true + name: CTest Results + path: Testing/**/*.xml + reporter: java-junit + fail-on-error: false + only-summary: false + max-annotations: 50 # - name: Upload build artifacts # uses: actions/upload-artifact@v4 From 76a30d623ae7117218ac16923d5ed8c2043217ae Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:00:39 -0600 Subject: [PATCH 063/490] fix: enable CMake setup step and update test results path in incremental build workflow --- .github/workflows/incremental-build.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 8e9d14af01..dde836f7e6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -36,17 +36,17 @@ jobs: cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} rm -rf Testing - # - name: Cmake Setup - # run: | - # # Set up git and fetch PR head, then detect conan profile and install dependencies - # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} - # git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ - # git config user.email "cicommercialbuilding@gmail.com" && \ - # git config user.name "ci-commercialbuildings" && \ - # git fetch origin && \ - # git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - # git checkout origin/pr/${{ env.PR_NUMBER }} && \ - # conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + - name: Cmake Setup + run: | + # Set up git and fetch PR head, then detect conan profile and install dependencies + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} + git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ + git config user.email "cicommercialbuilding@gmail.com" && \ + git config user.name "ci-commercialbuildings" && \ + git fetch origin && \ + git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ + git checkout origin/pr/${{ env.PR_NUMBER }} && \ + conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release # - name: Install dependencies and configure with CMake # run: | @@ -91,7 +91,7 @@ jobs: if: (!cancelled()) with: name: CTest Results - path: Testing/**/*.xml + path: Testing/ctest-results.xml reporter: java-junit fail-on-error: false only-summary: false From 7db95a1df637fb2760d439c655dbd044583562d3 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:08:26 -0600 Subject: [PATCH 064/490] fix: update test results publishing action to use mikepenz/action-junit-report and enhance report options --- .github/workflows/incremental-build.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index dde836f7e6..2a96ae41f6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -87,15 +87,16 @@ jobs: continue-on-error: true - name: Publish Test Results - uses: dorny/test-reporter@v1 + uses: mikepenz/action-junit-report@v4 if: (!cancelled()) with: - name: CTest Results - path: Testing/ctest-results.xml - reporter: java-junit - fail-on-error: false - only-summary: false - max-annotations: 50 + report_paths: Testing/ctest-results.xml + check_name: CTest Results + fail_on_failure: false + require_tests: false + annotate_only: false + detailed_summary: true + include_passed: true # - name: Upload build artifacts # uses: actions/upload-artifact@v4 From 5ffcc90ad4e66bfd508ece77b6b6addbdf1055a2 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:15:46 -0600 Subject: [PATCH 065/490] fix: update CTest command to improve output handling and adjust report paths for test results --- .github/workflows/incremental-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 2a96ae41f6..721f3fd879 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -81,16 +81,16 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/ctest-results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/ctest-results.xml + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit continue-on-error: true - name: Publish Test Results uses: mikepenz/action-junit-report@v4 if: (!cancelled()) with: - report_paths: Testing/ctest-results.xml + report_paths: Testing/**/*.xml check_name: CTest Results fail_on_failure: false require_tests: false From 8763daab0414e495d5abe783c3350ca599485684 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:18:31 -0600 Subject: [PATCH 066/490] fix: enhance CTest execution by creating separate directories for test results and improving output handling --- .github/workflows/incremental-build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 721f3fd879..3fcb5b2f9e 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -81,9 +81,10 @@ jobs: - name: Run CTests with retries run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit + mkdir -p Testing/run1 Testing/run2 Testing/run3 + ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml || \ + ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml continue-on-error: true - name: Publish Test Results From 455e3dd559e542492825f7b0b8102442c784463f Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:27:59 -0600 Subject: [PATCH 067/490] fix: enhance CTest execution by adding debugging steps and organizing test results into separate directories --- .github/workflows/incremental-build.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 3fcb5b2f9e..266f81199d 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -82,11 +82,24 @@ jobs: run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} mkdir -p Testing/run1 Testing/run2 Testing/run3 - ctest -j ${{ env.MAX_SAFE_THREADS }} -T test --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml || \ - ctest -T test -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml + ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml || \ + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml continue-on-error: true + - name: Debug - List Testing directory contents + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + echo "Contents of Testing directory:" + find Testing -name "*.xml" -type f 2>/dev/null || echo "No XML files found" + ls -la Testing/ 2>/dev/null || echo "Testing directory not found" + if [ -d Testing ]; then + echo "Testing subdirectories:" + find Testing -type d + echo "All files in Testing:" + find Testing -type f + fi + - name: Publish Test Results uses: mikepenz/action-junit-report@v4 if: (!cancelled()) From 4763af3a62b1469ba8648fefb65ba33a9b6e5ee6 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 15:44:52 -0600 Subject: [PATCH 068/490] fix: update incremental build workflow to correct volume paths and enhance artifact upload process --- .github/workflows/incremental-build.yml | 117 +++++++++++------------- 1 file changed, 53 insertions(+), 64 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 266f81199d..7a3ed3dca2 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,8 +16,7 @@ jobs: pull-requests: write env: - OPENSTUDIO_HOST_VOLUME: /srv/data/jenkins/docker-volumes/ubuntu-2204 - OPENSTUDIO_DOCKER_VOLUME: /home/ubuntu/OpenStudio + OPENSTUDIO_DOCKER_VOLUME: /github/home/OpenStudio OPENSTUDIO_SOURCE_NAME: OpenStudio OPENSTUDIO_BUILD_NAME: OS-build-release-v2 PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} @@ -26,9 +25,9 @@ jobs: container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally - volumes: + volumes: # envs don't work in volume definition for containers - "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache - - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/home/ubuntu/OpenStudio" + - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/OpenStudio" steps: - name: Cleanup ctest directory @@ -48,35 +47,35 @@ jobs: git checkout origin/pr/${{ env.PR_NUMBER }} && \ conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - # - name: Install dependencies and configure with CMake - # run: | - # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - # . ./conanbuild.sh - # cmake -G Ninja \ - # -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ - # -DCMAKE_BUILD_TYPE:STRING=Release \ - # -DBUILD_TESTING:BOOL=ON \ - # -DCPACK_BINARY_DEB:BOOL=ON \ - # -DCPACK_BINARY_TGZ:BOOL=ON \ - # -DCPACK_BINARY_IFW:BOOL=OFF \ - # -DCPACK_BINARY_NSIS:BOOL=OFF \ - # -DCPACK_BINARY_RPM:BOOL=OFF \ - # -DCPACK_BINARY_STGZ:BOOL=OFF \ - # -DCPACK_BINARY_TBZ2:BOOL=OFF \ - # -DCPACK_BINARY_TXZ:BOOL=OFF \ - # -DCPACK_BINARY_TZ:BOOL=OFF \ - # -DBUILD_PYTHON_BINDINGS:BOOL=ON \ - # -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ - # -DPYTHON_VERSION:STRING=3.12.2 \ - # -DBUILD_RUBY_BINDINGS:BOOL=ON \ - # -DBUILD_CLI:BOOL=ON \ - # ../${{ env.OPENSTUDIO_SOURCE_NAME }} + - name: Install dependencies and configure with CMake + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + . ./conanbuild.sh + cmake -G Ninja \ + -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ + -DCMAKE_BUILD_TYPE:STRING=Release \ + -DBUILD_TESTING:BOOL=ON \ + -DCPACK_BINARY_DEB:BOOL=ON \ + -DCPACK_BINARY_TGZ:BOOL=ON \ + -DCPACK_BINARY_IFW:BOOL=OFF \ + -DCPACK_BINARY_NSIS:BOOL=OFF \ + -DCPACK_BINARY_RPM:BOOL=OFF \ + -DCPACK_BINARY_STGZ:BOOL=OFF \ + -DCPACK_BINARY_TBZ2:BOOL=OFF \ + -DCPACK_BINARY_TXZ:BOOL=OFF \ + -DCPACK_BINARY_TZ:BOOL=OFF \ + -DBUILD_PYTHON_BINDINGS:BOOL=ON \ + -DBUILD_PYTHON_PIP_PACKAGE:BOOL=OFF \ + -DPYTHON_VERSION:STRING=3.12.2 \ + -DBUILD_RUBY_BINDINGS:BOOL=ON \ + -DBUILD_CLI:BOOL=ON \ + ../${{ env.OPENSTUDIO_SOURCE_NAME }} - # - name: Build with Ninja - # run: | - # cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - # . ./conanbuild.sh - # ninja -j ${{ env.MAX_SAFE_THREADS }} package + - name: Build with Ninja + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} + . ./conanbuild.sh + ninja -j ${{ env.MAX_SAFE_THREADS }} package - name: Run CTests with retries run: | @@ -87,37 +86,27 @@ jobs: ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml continue-on-error: true - - name: Debug - List Testing directory contents - run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - echo "Contents of Testing directory:" - find Testing -name "*.xml" -type f 2>/dev/null || echo "No XML files found" - ls -la Testing/ 2>/dev/null || echo "Testing directory not found" - if [ -d Testing ]; then - echo "Testing subdirectories:" - find Testing -type d - echo "All files in Testing:" - find Testing -type f - fi + # Tried to publish test results EnricoMipublish-unit-test-result-action and dorny/test-reporter@v1 and nothing worked + # mikepenz/action-junit-report@v4 also doesn't work. TODO: either fix this or make a custom solution if this functionality is needed + # - name: Publish Test Results + # uses: mikepenz/action-junit-report@v4 + # if: (!cancelled()) + # with: + # report_paths: Testing/**/*.xml + # check_name: CTest Results + # fail_on_failure: false + # require_tests: false + # annotate_only: false + # detailed_summary: true + # include_passed: true - - name: Publish Test Results - uses: mikepenz/action-junit-report@v4 - if: (!cancelled()) + - name: Upload build artifacts + uses: actions/upload-artifact@v4 with: - report_paths: Testing/**/*.xml - check_name: CTest Results - fail_on_failure: false - require_tests: false - annotate_only: false - detailed_summary: true - include_passed: true - - # - name: Upload build artifacts - # uses: actions/upload-artifact@v4 - # with: - # name: ubuntu-2204-artifacts - # path: | - # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb - # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz - # env: - # NODE_TLS_REJECT_UNAUTHORIZED: '0' + name: ubuntu-2204-artifacts + path: | + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/**/*.xml + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz + env: + NODE_TLS_REJECT_UNAUTHORIZED: '0' From f9f7e774927afb402754848d973c55e1c5fe6859 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 16:22:42 -0600 Subject: [PATCH 069/490] fix: update test results publishing action to correctly reference result paths and enhance report options --- .github/workflows/incremental-build.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 7a3ed3dca2..d0fd84353a 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -88,24 +88,24 @@ jobs: # Tried to publish test results EnricoMipublish-unit-test-result-action and dorny/test-reporter@v1 and nothing worked # mikepenz/action-junit-report@v4 also doesn't work. TODO: either fix this or make a custom solution if this functionality is needed - # - name: Publish Test Results - # uses: mikepenz/action-junit-report@v4 - # if: (!cancelled()) - # with: - # report_paths: Testing/**/*.xml - # check_name: CTest Results - # fail_on_failure: false - # require_tests: false - # annotate_only: false - # detailed_summary: true - # include_passed: true + - name: Publish Test Results + uses: mikepenz/action-junit-report@v4 + if: (!cancelled()) + with: + report_paths: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml + check_name: CTest Results + fail_on_failure: false + require_tests: false + annotate_only: false + detailed_summary: true + include_passed: true - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: ubuntu-2204-artifacts path: | - ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/**/*.xml + # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz env: From 2734fb38598288a4ed27584fe1d4d50302e1fb52 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 16:39:10 -0600 Subject: [PATCH 070/490] fix: update test results publishing step to use test-summary action for improved reporting --- .github/workflows/incremental-build.yml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index d0fd84353a..902010896e 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -86,19 +86,11 @@ jobs: ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml continue-on-error: true - # Tried to publish test results EnricoMipublish-unit-test-result-action and dorny/test-reporter@v1 and nothing worked - # mikepenz/action-junit-report@v4 also doesn't work. TODO: either fix this or make a custom solution if this functionality is needed - - name: Publish Test Results - uses: mikepenz/action-junit-report@v4 - if: (!cancelled()) + - name: Test Summary + uses: test-summary/action@v2 with: - report_paths: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml - check_name: CTest Results - fail_on_failure: false - require_tests: false - annotate_only: false - detailed_summary: true - include_passed: true + paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file + if: always() # Ensure this step runs even if tests fail - name: Upload build artifacts uses: actions/upload-artifact@v4 From e3d30108559638b2fa843029c18c79bd8b8a8438 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:17:30 -0600 Subject: [PATCH 071/490] fix: update incremental build workflow to improve job conditions and streamline dependency installation --- .github/workflows/incremental-build.yml | 70 ++++++++++++------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 902010896e..80844e16f5 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -6,8 +6,8 @@ on: jobs: build: - if: contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') - runs-on: Linux + if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') + runs-on: ubuntu-22.04 permissions: contents: read @@ -16,40 +16,37 @@ jobs: pull-requests: write env: - OPENSTUDIO_DOCKER_VOLUME: /github/home/OpenStudio - OPENSTUDIO_SOURCE_NAME: OpenStudio OPENSTUDIO_BUILD_NAME: OS-build-release-v2 - PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally - volumes: # envs don't work in volume definition for containers - - "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache - - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/OpenStudio" + + defaults: + run: + working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} steps: - - name: Cleanup ctest directory - run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} - rm -rf Testing - - - name: Cmake Setup + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Fetch all history for all branches and tags + + - name: Cache Conan packages + uses: actions/cache@v4 + with: + path: /github/home/.conan2 + key: ${{ runner.os }}-conan-${{ hashFiles('**/conanfile.py') }} + restore-keys: | + ${{ runner.os }}-conan- + + - name: Install dependencies run: | - # Set up git and fetch PR head, then detect conan profile and install dependencies - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} - git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ - git config user.email "cicommercialbuilding@gmail.com" && \ - git config user.name "ci-commercialbuildings" && \ - git fetch origin && \ - git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{ env.PR_NUMBER }} && \ - conan install . --output-folder=../${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - - name: Install dependencies and configure with CMake + - name: Configure with CMake run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} . ./conanbuild.sh cmake -G Ninja \ -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake \ @@ -69,17 +66,15 @@ jobs: -DPYTHON_VERSION:STRING=3.12.2 \ -DBUILD_RUBY_BINDINGS:BOOL=ON \ -DBUILD_CLI:BOOL=ON \ - ../${{ env.OPENSTUDIO_SOURCE_NAME }} + .. - name: Build with Ninja run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} . ./conanbuild.sh ninja -j ${{ env.MAX_SAFE_THREADS }} package - name: Run CTests with retries run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }} mkdir -p Testing/run1 Testing/run2 Testing/run3 ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml || \ @@ -89,16 +84,21 @@ jobs: - name: Test Summary uses: test-summary/action@v2 with: - paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file - if: always() # Ensure this step runs even if tests fail + paths: "${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file + output: "${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md" + if: always() + + - name: Upload test summary + uses: actions/upload-artifact@v4 + with: + name: test-summary + path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md + if: always() - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: ubuntu-2204-artifacts path: | - # ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml - ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb - ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz - env: - NODE_TLS_REJECT_UNAUTHORIZED: '0' + ${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb + ${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz From 6a4e9d3d4b41b8f6cd7de386cf3cff9f1af30e5d Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:22:51 -0600 Subject: [PATCH 072/490] fix: streamline incremental build workflow by removing defaults and ensuring correct working directories for steps --- .github/workflows/incremental-build.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 80844e16f5..1baec423c2 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -23,10 +23,6 @@ jobs: image: kuangwenyi/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally - defaults: - run: - working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} - steps: - name: Checkout repository uses: actions/checkout@v4 @@ -41,11 +37,15 @@ jobs: restore-keys: | ${{ runner.os }}-conan- + - name: Create build directory + run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} + - name: Install dependencies run: | conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - name: Configure with CMake + working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | . ./conanbuild.sh cmake -G Ninja \ @@ -69,11 +69,13 @@ jobs: .. - name: Build with Ninja + working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | . ./conanbuild.sh ninja -j ${{ env.MAX_SAFE_THREADS }} package - name: Run CTests with retries + working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | mkdir -p Testing/run1 Testing/run2 Testing/run3 ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ From 4adc7e4c578e51ac940cf70f6d48108eeaaa31a8 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:26:42 -0600 Subject: [PATCH 073/490] fix: add conan profile detection step before installing dependencies --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1baec423c2..713f98fb24 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -42,6 +42,7 @@ jobs: - name: Install dependencies run: | + conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - name: Configure with CMake From 7b3b17bb61bce36417a33718fc690adb87e3aee5 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:32:47 -0600 Subject: [PATCH 074/490] fix: add conan remote configuration before installing dependencies --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 713f98fb24..01ce67cad9 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -42,6 +42,7 @@ jobs: - name: Install dependencies run: | + conan remote add conancenter https://center.conan.io conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From a8dda8e8d5eb0f1577f0491945cf9de57aca2ecf Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:38:12 -0600 Subject: [PATCH 075/490] fix: enforce conan remote addition with --force flag for dependency installation --- .github/workflows/incremental-build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 01ce67cad9..3650b5ab68 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -3,6 +3,8 @@ name: Build and Test (Ubuntu 22.04) on: pull_request: push: + branches: + - main jobs: build: @@ -42,7 +44,7 @@ jobs: - name: Install dependencies run: | - conan remote add conancenter https://center.conan.io + conan remote add conancenter https://center.conan.io --force conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 285fdf55235307d7efe5ff00b8dd7340c4ec161d Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 17:41:06 -0600 Subject: [PATCH 076/490] fix: enhance incremental build workflow by adding ccache installation and default compiler setup --- .github/workflows/incremental-build.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 3650b5ab68..35e7aeb0ed 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -20,6 +20,7 @@ jobs: env: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) + CMAKE_CXX_COMPILER_LAUNCHER: ccache container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -31,6 +32,26 @@ jobs: with: fetch-depth: 0 # Fetch all history for all branches and tags + - name: Clean workspace + run: git clean -fdx + + - name: Install ccache + run: apt-get update && apt-get install -y ccache + + - name: Set default compiler + run: | + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 + sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 + sudo update-alternatives --set gcc /usr/bin/gcc-11 + + - name: Cache ccache + uses: actions/cache@v4 + with: + path: /root/.ccache + key: ${{ runner.os }}-ccache-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-ccache- + - name: Cache Conan packages uses: actions/cache@v4 with: @@ -45,6 +66,7 @@ jobs: - name: Install dependencies run: | conan remote add conancenter https://center.conan.io --force + conan remote add bincrafters https://bincrafters.jfrog.io/artifactory/api/conan/public-conan --force conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 253d7f9c5bdef6e90937fc7d9dfcc9008a2c2b76 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:09:29 -0600 Subject: [PATCH 077/490] fix: enhance incremental build workflow with improved error handling for CTests and cache build directory --- .github/workflows/incremental-build.yml | 58 ++++++++++++++++++++++--- .gitignore | 1 + 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 35e7aeb0ed..08fe72c388 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -21,6 +21,7 @@ jobs: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) CMAKE_CXX_COMPILER_LAUNCHER: ccache + MAKEFLAGS: "-j$(( ($(nproc) * 80 + 50) / 100 ))" container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy @@ -60,6 +61,15 @@ jobs: restore-keys: | ${{ runner.os }}-conan- + - name: Cache build directory + uses: actions/cache@v4 + with: + path: ${{ env.OPENSTUDIO_BUILD_NAME }} + key: ${{ runner.os }}-build-${{ github.head_ref || github.ref_name }}-${{ hashFiles('**/*.cpp', '**/*.hpp', '**/CMakeLists.txt', 'src/**/*', 'conanfile.py') }} + restore-keys: | + ${{ runner.os }}-build-${{ github.head_ref || github.ref_name }}- + ${{ runner.os }}-build- + - name: Create build directory run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} @@ -100,13 +110,45 @@ jobs: . ./conanbuild.sh ninja -j ${{ env.MAX_SAFE_THREADS }} package - - name: Run CTests with retries + - name: Run CTests with enhanced error handling working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | - mkdir -p Testing/run1 Testing/run2 Testing/run3 - ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml || \ - ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml || \ - ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml + set +e # Don't exit on first failure + mkdir -p Testing/run{1,2,3} + + echo "Starting first test run..." + ctest -j ${{ env.MAX_SAFE_THREADS }} --no-compress-output --output-on-failure --output-junit Testing/run1/results.xml + RESULT1=$? + + if [ $RESULT1 -ne 0 ]; then + echo "First test run failed (exit code: $RESULT1), retrying failed tests..." + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output --output-on-failure --output-junit Testing/run2/results.xml + RESULT2=$? + + if [ $RESULT2 -ne 0 ]; then + echo "Second test run failed (exit code: $RESULT2), final attempt with verbose output..." + ctest -j ${{ env.MAX_SAFE_THREADS }} --rerun-failed --no-compress-output -VV --output-junit Testing/run3/results.xml + RESULT3=$? + else + RESULT3=0 + fi + else + echo "First test run passed" + RESULT2=0 + RESULT3=0 + fi + + # Report results + echo "Test run results: Run1=$RESULT1, Run2=$RESULT2, Run3=$RESULT3" + + # Set job status based on results + if [ $RESULT1 -eq 0 ] || [ $RESULT2 -eq 0 ] || [ $RESULT3 -eq 0 ]; then + echo "Tests passed (some may have required retries)" + exit 0 + else + echo "All test attempts failed" + exit 1 + fi continue-on-error: true - name: Test Summary @@ -123,10 +165,12 @@ jobs: path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md if: always() - - name: Upload build artifacts + - name: Upload build artifacts with metadata uses: actions/upload-artifact@v4 with: - name: ubuntu-2204-artifacts + name: ubuntu-2204-${{ github.head_ref || github.ref_name }}-${{ github.sha }} path: | ${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb ${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz + retention-days: 30 + if: always() diff --git a/.gitignore b/.gitignore index a1ea0bbe9d..d340235513 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ junit.xml .cppcheck*/ CMakeUserPresets.json +.env \ No newline at end of file From 741fb3c64e8e9b3a85136fa25957f023295aa127 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:15:22 -0600 Subject: [PATCH 078/490] fix: add safe directory configuration to clean workspace step --- .github/workflows/incremental-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 08fe72c388..9b7581ab55 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -34,7 +34,10 @@ jobs: fetch-depth: 0 # Fetch all history for all branches and tags - name: Clean workspace - run: git clean -fdx + run: | + # make safe repository + git config --global --add safe.directory /__w/OpenStudio/OpenStudio + git clean -fdx - name: Install ccache run: apt-get update && apt-get install -y ccache From 92bf723ce88085ba64b0833c1733673df4fa5bb8 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:19:11 -0600 Subject: [PATCH 079/490] fix: resolve Kitware GPG key issue for ccache installation --- .github/workflows/incremental-build.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 9b7581ab55..e743336fa6 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -40,7 +40,11 @@ jobs: git clean -fdx - name: Install ccache - run: apt-get update && apt-get install -y ccache + run: | + # Fix Kitware GPG key issue + wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null + echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null + apt-get update && apt-get install -y ccache - name: Set default compiler run: | From 1f7ebea23069bd0737de5714dd1419f281a886cd Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:22:03 -0600 Subject: [PATCH 080/490] fix: update default compiler setup to remove sudo for update-alternatives --- .github/workflows/incremental-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index e743336fa6..97c909a468 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -48,9 +48,9 @@ jobs: - name: Set default compiler run: | - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 - sudo update-alternatives --set gcc /usr/bin/gcc-11 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 + update-alternatives --set gcc /usr/bin/gcc-11 - name: Cache ccache uses: actions/cache@v4 From 1e114f4968b0abf3aeb358b3553c7e5e74cc378a Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:24:17 -0600 Subject: [PATCH 081/490] fix: remove outdated gcc-9 setup from default compiler configuration --- .github/workflows/incremental-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 97c909a468..cc18c5f4e8 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -49,7 +49,6 @@ jobs: - name: Set default compiler run: | update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 --slave /usr/bin/g++ g++ /usr/bin/g++-11 - update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 update-alternatives --set gcc /usr/bin/gcc-11 - name: Cache ccache From a1c0c33f99ab465e609244fda68c3188f3677cca Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:26:53 -0600 Subject: [PATCH 082/490] fix: remove outdated bincrafters remote from dependency installation --- .github/workflows/incremental-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index cc18c5f4e8..1bed46b71c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -82,7 +82,6 @@ jobs: - name: Install dependencies run: | conan remote add conancenter https://center.conan.io --force - conan remote add bincrafters https://bincrafters.jfrog.io/artifactory/api/conan/public-conan --force conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From fd258d6039f914c161a3f36dade7875c47be524d Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 18:29:26 -0600 Subject: [PATCH 083/490] fix: add NREL v2 remote for Conan dependency installation --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1bed46b71c..83f7f8ac65 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -82,6 +82,7 @@ jobs: - name: Install dependencies run: | conan remote add conancenter https://center.conan.io --force + conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From c55942c2c28163671c940c138e3b2289d0697a15 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 22:00:43 -0600 Subject: [PATCH 084/490] fix: enhance Conan profile detection in incremental build workflow --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 83f7f8ac65..3ea8485a35 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -83,7 +83,7 @@ jobs: run: | conan remote add conancenter https://center.conan.io --force conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force - conan profile detect + conan profile show default >/dev/null 2>&1 || conan profile detect conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - name: Configure with CMake From af0508cd520beb2230b5802e5cdf0065352a1d38 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 22:05:01 -0600 Subject: [PATCH 085/490] fix: improve Conan profile detection in incremental build workflow --- .github/workflows/incremental-build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 3ea8485a35..53b188726c 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -83,7 +83,9 @@ jobs: run: | conan remote add conancenter https://center.conan.io --force conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force - conan profile show default >/dev/null 2>&1 || conan profile detect + if ! conan profile show default >/dev/null 2>&1; then + conan profile detect + fi conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - name: Configure with CMake From 6258f139765b24f5ac85680d6e3a92834f9e6044 Mon Sep 17 00:00:00 2001 From: anchapin Date: Thu, 26 Jun 2025 22:11:36 -0600 Subject: [PATCH 086/490] fix: update Conan profile detection to check for profile file existence --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 53b188726c..4aab10acbc 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -83,7 +83,7 @@ jobs: run: | conan remote add conancenter https://center.conan.io --force conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force - if ! conan profile show default >/dev/null 2>&1; then + if [ ! -f "/github/home/.conan2/profiles/default" ]; then conan profile detect fi conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release From 43f1adc31c7ce33b27b896599bf9013e744b4f4d Mon Sep 17 00:00:00 2001 From: Alex Chapin Date: Thu, 26 Jun 2025 23:55:12 -0600 Subject: [PATCH 087/490] Update incremental-build.yml --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 4aab10acbc..c52abdef80 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -9,7 +9,7 @@ on: jobs: build: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') - runs-on: ubuntu-22.04 + runs-on: Linux permissions: contents: read From 64aae633c8c7e3045c81d3c9741f0409ee557671 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 07:01:54 -0600 Subject: [PATCH 088/490] fix: add SSL verification option to Conan install command --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index c52abdef80..a709350bbd 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -86,7 +86,7 @@ jobs: if [ ! -f "/github/home/.conan2/profiles/default" ]; then conan profile detect fi - conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release --verify ssl=no - name: Configure with CMake working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} From 4aff9963f05d8243fd71866f33d152853b53be95 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 07:07:13 -0600 Subject: [PATCH 089/490] fix: update ccache installation and Conan remote configuration for SSL verification --- .github/workflows/incremental-build.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index a709350bbd..ebb156232a 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -42,7 +42,7 @@ jobs: - name: Install ccache run: | # Fix Kitware GPG key issue - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null + wget --no-check-certificate -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu jammy main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null apt-get update && apt-get install -y ccache @@ -82,11 +82,13 @@ jobs: - name: Install dependencies run: | conan remote add conancenter https://center.conan.io --force + conan remote update conancenter --insecure conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force + conan remote update nrel-v2 --insecure if [ ! -f "/github/home/.conan2/profiles/default" ]; then conan profile detect fi - conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release --verify ssl=no + conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release - name: Configure with CMake working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} From f1784ac1592de660111a5f98631a10bca3e54b4a Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 07:55:01 -0600 Subject: [PATCH 090/490] fix: set NODE_TLS_REJECT_UNAUTHORIZED to 0 for secure connections --- .github/workflows/incremental-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index ebb156232a..27b1d104c4 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -22,6 +22,7 @@ jobs: MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) CMAKE_CXX_COMPILER_LAUNCHER: ccache MAKEFLAGS: "-j$(( ($(nproc) * 80 + 50) / 100 ))" + NODE_TLS_REJECT_UNAUTHORIZED: 0 container: # Define the Docker container for the job. All subsequent steps run inside it. image: kuangwenyi/openstudio-cmake-tools:jammy From 005bf6c9e7723d76e23bc2153c979bd6f4ae8f2c Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 08:03:59 -0600 Subject: [PATCH 091/490] fix: enhance ccache configuration and update build cache management --- .github/workflows/incremental-build.yml | 30 +++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 27b1d104c4..b3907561b7 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -60,6 +60,13 @@ jobs: restore-keys: | ${{ runner.os }}-ccache- + - name: Configure ccache + run: | + ccache --max-size=2G + ccache --set-config=compression=true + ccache --set-config=compression_level=1 + ccache --show-stats + - name: Cache Conan packages uses: actions/cache@v4 with: @@ -71,11 +78,16 @@ jobs: - name: Cache build directory uses: actions/cache@v4 with: - path: ${{ env.OPENSTUDIO_BUILD_NAME }} - key: ${{ runner.os }}-build-${{ github.head_ref || github.ref_name }}-${{ hashFiles('**/*.cpp', '**/*.hpp', '**/CMakeLists.txt', 'src/**/*', 'conanfile.py') }} + path: | + ${{ env.OPENSTUDIO_BUILD_NAME }}/CMakeCache.txt + ${{ env.OPENSTUDIO_BUILD_NAME }}/cmake_install.cmake + ${{ env.OPENSTUDIO_BUILD_NAME }}/build.ninja + ${{ env.OPENSTUDIO_BUILD_NAME }}/conan_toolchain.cmake + ${{ env.OPENSTUDIO_BUILD_NAME }}/conanbuild.sh + ${{ env.OPENSTUDIO_BUILD_NAME }}/.ninja_* + key: ${{ runner.os }}-build-config-${{ hashFiles('CMakeLists.txt', 'conanfile.py', 'src/**/CMakeLists.txt', 'CMake/**/*') }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-build-${{ github.head_ref || github.ref_name }}- - ${{ runner.os }}-build- + ${{ runner.os }}-build-config-${{ hashFiles('CMakeLists.txt', 'conanfile.py', 'src/**/CMakeLists.txt', 'CMake/**/*') }}- - name: Create build directory run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} @@ -115,6 +127,16 @@ jobs: -DBUILD_CLI:BOOL=ON \ .. + - name: Verify build state + working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} + run: | + if [ -f "build.ninja" ]; then + echo "Ninja build file found - checking what needs to be built" + ninja -n -j 1 package | head -20 || true + else + echo "No build.ninja found - full reconfiguration will be needed" + fi + - name: Build with Ninja working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | From cee6ab2fbfb1cdc9b9e3fde15d14c75b89b4c9ae Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 08:12:32 -0600 Subject: [PATCH 092/490] fix: adjust MAX_SAFE_THREADS and MAKEFLAGS for improved build performance --- .github/workflows/incremental-build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b3907561b7..4e971b3eb5 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -19,9 +19,9 @@ jobs: env: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 - MAX_SAFE_THREADS: $(( ($(nproc) * 80 + 50) / 100 )) + MAX_SAFE_THREADS: $(( ($(nproc) * 90 + 50) / 100 )) CMAKE_CXX_COMPILER_LAUNCHER: ccache - MAKEFLAGS: "-j$(( ($(nproc) * 80 + 50) / 100 ))" + MAKEFLAGS: "-j$(( ($(nproc) * 90 + 50) / 100 ))" NODE_TLS_REJECT_UNAUTHORIZED: 0 container: # Define the Docker container for the job. All subsequent steps run inside it. @@ -75,6 +75,9 @@ jobs: restore-keys: | ${{ runner.os }}-conan- + - name: Create build directory + run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} + - name: Cache build directory uses: actions/cache@v4 with: @@ -89,9 +92,6 @@ jobs: restore-keys: | ${{ runner.os }}-build-config-${{ hashFiles('CMakeLists.txt', 'conanfile.py', 'src/**/CMakeLists.txt', 'CMake/**/*') }}- - - name: Create build directory - run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} - - name: Install dependencies run: | conan remote add conancenter https://center.conan.io --force From ac184c39f7fec48a49740e94cbc9efdb668ff482 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 08:55:25 -0600 Subject: [PATCH 093/490] feat: add test results dashboard generation and publishing to PR --- .github/workflows/incremental-build.yml | 159 ++++++++++++++++++++++++ 1 file changed, 159 insertions(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 4e971b3eb5..1355be3579 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -16,6 +16,7 @@ jobs: issues: read checks: write pull-requests: write + actions: read env: OPENSTUDIO_BUILD_NAME: OS-build-release-v2 @@ -198,6 +199,164 @@ jobs: path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md if: always() + - name: Generate test results dashboard + if: always() + run: | + mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard + + # Create comprehensive test dashboard + cat > ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md << 'EOF' + # 🧪 Test Results Dashboard + + ## Summary + + EOF + + # Process JUnit XML files and extract test information + python3 << 'PYTHON_EOF' + import xml.etree.ElementTree as ET + import os + import glob + from datetime import datetime + + build_dir = "${{ env.OPENSTUDIO_BUILD_NAME }}" + dashboard_file = f"{build_dir}/Testing/dashboard/test-dashboard.md" + + # Find all JUnit XML files + xml_files = glob.glob(f"{build_dir}/Testing/run*/results.xml") + + total_tests = 0 + total_failures = 0 + total_errors = 0 + total_skipped = 0 + failed_tests = [] + + # Parse XML files + for xml_file in xml_files: + if os.path.exists(xml_file): + try: + tree = ET.parse(xml_file) + root = tree.getroot() + + # Handle different JUnit XML formats + if root.tag == 'testsuites': + testsuites = root.findall('testsuite') + else: + testsuites = [root] + + for testsuite in testsuites: + suite_name = testsuite.get('name', 'Unknown') + tests = int(testsuite.get('tests', 0)) + failures = int(testsuite.get('failures', 0)) + errors = int(testsuite.get('errors', 0)) + skipped = int(testsuite.get('skipped', 0)) + + total_tests += tests + total_failures += failures + total_errors += errors + total_skipped += skipped + + # Get failed test details + for testcase in testsuite.findall('testcase'): + test_name = testcase.get('name', 'Unknown') + classname = testcase.get('classname', suite_name) + + failure = testcase.find('failure') + error = testcase.find('error') + + if failure is not None or error is not None: + failure_info = failure if failure is not None else error + message = failure_info.get('message', 'No message') + details = failure_info.text or 'No details available' + + failed_tests.append({ + 'suite': suite_name, + 'class': classname, + 'name': test_name, + 'message': message, + 'details': details, + 'run': os.path.basename(os.path.dirname(xml_file)) + }) + except Exception as e: + print(f"Error parsing {xml_file}: {e}") + + # Generate dashboard content + with open(dashboard_file, 'a') as f: + # Summary section + success_rate = ((total_tests - total_failures - total_errors) / total_tests * 100) if total_tests > 0 else 0 + + f.write(f"| Metric | Value |\n") + f.write(f"|--------|-------|\n") + f.write(f"| **Total Tests** | {total_tests} |\n") + f.write(f"| **Passed** | {total_tests - total_failures - total_errors} |\n") + f.write(f"| **Failed** | {total_failures} |\n") + f.write(f"| **Errors** | {total_errors} |\n") + f.write(f"| **Skipped** | {total_skipped} |\n") + f.write(f"| **Success Rate** | {success_rate:.1f}% |\n") + f.write(f"| **Generated** | {datetime.now().strftime('%Y-%m-%d %H:%M:%S UTC')} |\n\n") + + if success_rate >= 100: + f.write("## ✅ All Tests Passed!\n\n") + elif success_rate >= 95: + f.write("## ⚠️ Minor Issues Detected\n\n") + else: + f.write("## ❌ Significant Test Failures\n\n") + + # Failed tests section + if failed_tests: + f.write(f"## 🔍 Failed Tests ({len(failed_tests)} failures)\n\n") + + # Group by test suite + suites = {} + for test in failed_tests: + suite = test['suite'] + if suite not in suites: + suites[suite] = [] + suites[suite].append(test) + + for suite_name, suite_tests in suites.items(): + f.write(f"### {suite_name} ({len(suite_tests)} failures)\n\n") + + for test in suite_tests: + f.write(f"
\n") + f.write(f"{test['class']}.{test['name']} ({test['run']})\n\n") + f.write(f"**Error Message:**\n") + f.write(f"```\n{test['message']}\n```\n\n") + f.write(f"**Full Details:**\n") + f.write(f"```\n{test['details']}\n```\n\n") + f.write(f"
\n\n") + + # Test run information + f.write("## 📊 Test Run Information\n\n") + f.write("| Run | XML File | Status |\n") + f.write("|-----|----------|--------|\n") + for i, xml_file in enumerate(xml_files, 1): + status = "✅ Found" if os.path.exists(xml_file) else "❌ Missing" + run_name = os.path.basename(os.path.dirname(xml_file)) + f.write(f"| {run_name} | `{os.path.basename(xml_file)}` | {status} |\n") + + if not xml_files: + f.write("| - | No XML files found | ❌ Missing |\n") + + print(f"Dashboard generated with {total_tests} tests, {total_failures + total_errors} failures") + PYTHON_EOF + + - name: Publish test results to PR + if: always() && github.event_name == 'pull_request' + uses: marocchino/sticky-pull-request-comment@v2 + with: + header: test-results + path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md + + - name: Upload comprehensive test results + uses: actions/upload-artifact@v4 + with: + name: test-results-dashboard + path: | + ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/ + ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/ + if: always() + - name: Upload build artifacts with metadata uses: actions/upload-artifact@v4 with: From 0b57c7834d3ff85ca64a8c9f17aa12bfb8cd6a0d Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 10:25:28 -0600 Subject: [PATCH 094/490] fix: update build environment and Docker image for consistency --- .github/workflows/incremental-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 1355be3579..67780fada9 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -9,7 +9,7 @@ on: jobs: build: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') - runs-on: Linux + runs-on: linux-openstudio-2 permissions: contents: read @@ -26,7 +26,7 @@ jobs: NODE_TLS_REJECT_UNAUTHORIZED: 0 container: # Define the Docker container for the job. All subsequent steps run inside it. - image: kuangwenyi/openstudio-cmake-tools:jammy + image: nrel/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally steps: From d91770838d5b6c597a654ca143a1a5a0c5218a4c Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 11:06:53 -0600 Subject: [PATCH 095/490] feat: add Jenkins pipeline files for incremental code coverage on multiple platforms --- Jenkinsfile_develop_code_coverage | 11 +++++++++++ Jenkinsfile_develop_osx | 10 ++++++++++ Jenkinsfile_develop_ubuntu_2404 | 11 +++++++++++ Jenkinsfile_develop_windows | 10 ++++++++++ 4 files changed, 42 insertions(+) create mode 100644 Jenkinsfile_develop_code_coverage create mode 100644 Jenkinsfile_develop_osx create mode 100644 Jenkinsfile_develop_ubuntu_2404 create mode 100644 Jenkinsfile_develop_windows diff --git a/Jenkinsfile_develop_code_coverage b/Jenkinsfile_develop_code_coverage new file mode 100644 index 0000000000..f9a8a06e09 --- /dev/null +++ b/Jenkinsfile_develop_code_coverage @@ -0,0 +1,11 @@ + +//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs + +@Library('cbci_shared_libs') _ + +// Build for PR to develop branch only. +if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { + + openstudio_incremental_code_coverage() + +} diff --git a/Jenkinsfile_develop_osx b/Jenkinsfile_develop_osx new file mode 100644 index 0000000000..d7d18e8711 --- /dev/null +++ b/Jenkinsfile_develop_osx @@ -0,0 +1,10 @@ +//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs + +@Library('cbci_shared_libs') _ + +// Build for PR to develop branch only. +if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { + + openstudio_incremental_develop_osx() + +} diff --git a/Jenkinsfile_develop_ubuntu_2404 b/Jenkinsfile_develop_ubuntu_2404 new file mode 100644 index 0000000000..97371474db --- /dev/null +++ b/Jenkinsfile_develop_ubuntu_2404 @@ -0,0 +1,11 @@ + +//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs + +@Library('cbci_shared_libs') _ + +// Build for PR to develop branch only. +if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { + + openstudio_incremental_develop_ubuntu_2404() + +} diff --git a/Jenkinsfile_develop_windows b/Jenkinsfile_develop_windows new file mode 100644 index 0000000000..cb285700d5 --- /dev/null +++ b/Jenkinsfile_develop_windows @@ -0,0 +1,10 @@ +//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs + +@Library('cbci_shared_libs') _ + +// Build for PR to develop branch only. +if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { + + openstudio_incremental_develop_windows() + +} From 3742789ca4e6352b563aa0c1111f38800018c200 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 11:40:12 -0600 Subject: [PATCH 096/490] fix: update incremental build workflow comments for clarity and context --- .github/workflows/incremental-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 67780fada9..6bfcedd60f 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -1,3 +1,4 @@ +# refer to workflow version from thursday june 26 at around 4 pm MT to copy back in required items name: Build and Test (Ubuntu 22.04) on: @@ -28,6 +29,7 @@ jobs: container: # Define the Docker container for the job. All subsequent steps run inside it. image: nrel/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally + # add volume mounts back in steps: - name: Checkout repository @@ -104,6 +106,7 @@ jobs: fi conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release + # wrap cmake with ccache using a flag or environment variable - name: Configure with CMake working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} run: | From 03a6947d37f219f8007dfbc216f9e510170d58ac Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 15:28:03 -0600 Subject: [PATCH 097/490] fix: update incremental build workflow to improve directory handling and environment variable usage --- .github/workflows/incremental-build.yml | 62 ++++++++++++------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 6bfcedd60f..32eef2f6f7 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -1,4 +1,3 @@ -# refer to workflow version from thursday june 26 at around 4 pm MT to copy back in required items name: Build and Test (Ubuntu 22.04) on: @@ -20,16 +19,22 @@ jobs: actions: read env: - OPENSTUDIO_BUILD_NAME: OS-build-release-v2 MAX_SAFE_THREADS: $(( ($(nproc) * 90 + 50) / 100 )) CMAKE_CXX_COMPILER_LAUNCHER: ccache MAKEFLAGS: "-j$(( ($(nproc) * 90 + 50) / 100 ))" NODE_TLS_REJECT_UNAUTHORIZED: 0 + DOCKER_ROOT: /github/home + OPENSTUDIO_DOCKER_VOLUME: /github/home/OpenStudio + OPENSTUDIO_SOURCE_NAME: OpenStudio + OPENSTUDIO_BUILD_NAME: OS-build-release-v2 + PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: nrel/openstudio-cmake-tools:jammy options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally - # add volume mounts back in + volumes: # envs don't work in volume definition for containers + - "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache + - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/OpenStudio" steps: - name: Checkout repository @@ -39,8 +44,9 @@ jobs: - name: Clean workspace run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} # make safe repository - git config --global --add safe.directory /__w/OpenStudio/OpenStudio + git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" git clean -fdx - name: Install ccache @@ -58,7 +64,7 @@ jobs: - name: Cache ccache uses: actions/cache@v4 with: - path: /root/.ccache + path: ${{ env.DOCKER_ROOT }}/.ccache key: ${{ runner.os }}-ccache-${{ github.sha }} restore-keys: | ${{ runner.os }}-ccache- @@ -70,45 +76,37 @@ jobs: ccache --set-config=compression_level=1 ccache --show-stats - - name: Cache Conan packages - uses: actions/cache@v4 - with: - path: /github/home/.conan2 - key: ${{ runner.os }}-conan-${{ hashFiles('**/conanfile.py') }} - restore-keys: | - ${{ runner.os }}-conan- - - name: Create build directory - run: mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} + run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} + mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} - - name: Cache build directory - uses: actions/cache@v4 - with: - path: | - ${{ env.OPENSTUDIO_BUILD_NAME }}/CMakeCache.txt - ${{ env.OPENSTUDIO_BUILD_NAME }}/cmake_install.cmake - ${{ env.OPENSTUDIO_BUILD_NAME }}/build.ninja - ${{ env.OPENSTUDIO_BUILD_NAME }}/conan_toolchain.cmake - ${{ env.OPENSTUDIO_BUILD_NAME }}/conanbuild.sh - ${{ env.OPENSTUDIO_BUILD_NAME }}/.ninja_* - key: ${{ runner.os }}-build-config-${{ hashFiles('CMakeLists.txt', 'conanfile.py', 'src/**/CMakeLists.txt', 'CMake/**/*') }}-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-build-config-${{ hashFiles('CMakeLists.txt', 'conanfile.py', 'src/**/CMakeLists.txt', 'CMake/**/*') }}- + - name: Git Setup + run: | + # Set up git and fetch PR head, then detect conan profile and install dependencies + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} + git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" && \ + git config user.email "cicommercialbuilding@gmail.com" && \ + git config user.name "ci-commercialbuildings" && \ + git fetch origin && \ + git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ + git checkout origin/pr/${{ env.PR_NUMBER }} && \ - name: Install dependencies run: | + cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} conan remote add conancenter https://center.conan.io --force conan remote update conancenter --insecure conan remote add nrel-v2 https://conan.openstudio.net/artifactory/api/conan/conan-v2 --force conan remote update nrel-v2 --insecure - if [ ! -f "/github/home/.conan2/profiles/default" ]; then + if [ ! -f "${{ env.DOCKER_ROOT }}/.conan2/profiles/default" ]; then conan profile detect fi conan install . --output-folder=${{ env.OPENSTUDIO_BUILD_NAME }} --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release # wrap cmake with ccache using a flag or environment variable - name: Configure with CMake - working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} + working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }} run: | . ./conanbuild.sh cmake -G Ninja \ @@ -132,7 +130,7 @@ jobs: .. - name: Verify build state - working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} + working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }} run: | if [ -f "build.ninja" ]; then echo "Ninja build file found - checking what needs to be built" @@ -142,13 +140,13 @@ jobs: fi - name: Build with Ninja - working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} + working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }} run: | . ./conanbuild.sh ninja -j ${{ env.MAX_SAFE_THREADS }} package - name: Run CTests with enhanced error handling - working-directory: ${{ env.OPENSTUDIO_BUILD_NAME }} + working-directory: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }} run: | set +e # Don't exit on first failure mkdir -p Testing/run{1,2,3} From 83cf6ee0572d934f44ace334f7a324b1bd3e3be0 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 15:33:17 -0600 Subject: [PATCH 098/490] fix: update Docker volume and build name for consistency in incremental build workflow --- .github/workflows/incremental-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 32eef2f6f7..ef06ad1fce 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -24,9 +24,9 @@ jobs: MAKEFLAGS: "-j$(( ($(nproc) * 90 + 50) / 100 ))" NODE_TLS_REJECT_UNAUTHORIZED: 0 DOCKER_ROOT: /github/home - OPENSTUDIO_DOCKER_VOLUME: /github/home/OpenStudio + OPENSTUDIO_DOCKER_VOLUME: /github/home/Ubuntu OPENSTUDIO_SOURCE_NAME: OpenStudio - OPENSTUDIO_BUILD_NAME: OS-build-release-v2 + OPENSTUDIO_BUILD_NAME: OS-build PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. @@ -34,7 +34,7 @@ jobs: options: -u root -e "LANG=en_US.UTF-8" # These options are passed to the 'docker run' command internally volumes: # envs don't work in volume definition for containers - "/srv/data/jenkins/docker-volumes/conan-data/.conan2:/github/home/.conan2" # Conan cache - - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/OpenStudio" + - "/srv/data/jenkins/docker-volumes/ubuntu-2204:/github/home/Ubuntu" steps: - name: Checkout repository From 5f6b5aa732979b7802bc9acdd19dfe7d9246a2a3 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 15:36:13 -0600 Subject: [PATCH 099/490] fix: remove unnecessary backslash in git checkout command for clarity --- .github/workflows/incremental-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index ef06ad1fce..b04159c997 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -90,7 +90,7 @@ jobs: git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{ env.PR_NUMBER }} && \ + git checkout origin/pr/${{ env.PR_NUMBER }} - name: Install dependencies run: | From e79dfe7db4b229fc3901ed64ce057d7b3578f78c Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 16:16:04 -0600 Subject: [PATCH 100/490] fix: update paths in test summary and dashboard generation for consistency with Docker volume structure --- .github/workflows/incremental-build.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index b04159c997..6820b781da 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -189,24 +189,24 @@ jobs: - name: Test Summary uses: test-summary/action@v2 with: - paths: "${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file - output: "${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md" + paths: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/results.xml" # Path to your JUnit output file + output: "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md" if: always() - name: Upload test summary uses: actions/upload-artifact@v4 with: name: test-summary - path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md + path: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/test-summary.md if: always() - name: Generate test results dashboard if: always() run: | - mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard + mkdir -p ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard # Create comprehensive test dashboard - cat > ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md << 'EOF' + cat > ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md << 'EOF' # 🧪 Test Results Dashboard ## Summary @@ -220,7 +220,7 @@ jobs: import glob from datetime import datetime - build_dir = "${{ env.OPENSTUDIO_BUILD_NAME }}" + build_dir = "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}" dashboard_file = f"{build_dir}/Testing/dashboard/test-dashboard.md" # Find all JUnit XML files @@ -347,15 +347,15 @@ jobs: uses: marocchino/sticky-pull-request-comment@v2 with: header: test-results - path: ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md + path: ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/test-dashboard.md - name: Upload comprehensive test results uses: actions/upload-artifact@v4 with: name: test-results-dashboard path: | - ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/ - ${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/ + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/dashboard/ + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/Testing/run*/ if: always() - name: Upload build artifacts with metadata @@ -363,7 +363,7 @@ jobs: with: name: ubuntu-2204-${{ github.head_ref || github.ref_name }}-${{ github.sha }} path: | - ${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb - ${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/*.deb + ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}/${{ env.OPENSTUDIO_BUILD_NAME }}/_CPack_Packages/Linux/TGZ/*.tar.gz retention-days: 30 if: always() From 1a36776ba08334a81dabb54a4455fe93b332342c Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 16:21:45 -0600 Subject: [PATCH 101/490] fix: enhance incremental build workflow with concurrency settings and workspace preparation --- .github/workflows/incremental-build.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index 6820b781da..da0cc55ab4 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -6,6 +6,10 @@ on: branches: - main +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + jobs: build: if: github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'Pull Request - Ready for CI') @@ -42,12 +46,11 @@ jobs: with: fetch-depth: 0 # Fetch all history for all branches and tags - - name: Clean workspace + - name: Prepare workspace run: | cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} # make safe repository git config --global --add safe.directory "${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }}" - git clean -fdx - name: Install ccache run: | @@ -76,11 +79,6 @@ jobs: ccache --set-config=compression_level=1 ccache --show-stats - - name: Create build directory - run: | - cd ${{ env.OPENSTUDIO_DOCKER_VOLUME }}/${{ env.OPENSTUDIO_SOURCE_NAME }} - mkdir -p ${{ env.OPENSTUDIO_BUILD_NAME }} - - name: Git Setup run: | # Set up git and fetch PR head, then detect conan profile and install dependencies From 630c072eb068b290858bbe24c18ac39de6e9b669 Mon Sep 17 00:00:00 2001 From: anchapin Date: Fri, 27 Jun 2025 16:51:51 -0600 Subject: [PATCH 102/490] fix: update pull request number handling in incremental build workflow for consistency --- .github/workflows/incremental-build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/incremental-build.yml b/.github/workflows/incremental-build.yml index da0cc55ab4..971f78b494 100644 --- a/.github/workflows/incremental-build.yml +++ b/.github/workflows/incremental-build.yml @@ -31,7 +31,6 @@ jobs: OPENSTUDIO_DOCKER_VOLUME: /github/home/Ubuntu OPENSTUDIO_SOURCE_NAME: OpenStudio OPENSTUDIO_BUILD_NAME: OS-build - PR_NUMBER: ${{ github.event.pull_request.number || github.ref }} container: # Define the Docker container for the job. All subsequent steps run inside it. image: nrel/openstudio-cmake-tools:jammy @@ -88,7 +87,7 @@ jobs: git config user.name "ci-commercialbuildings" && \ git fetch origin && \ git fetch origin +refs/pull/*/head:refs/remotes/origin/pr/* && \ - git checkout origin/pr/${{ env.PR_NUMBER }} + git checkout origin/pr/${{ github.event.pull_request.number || github.ref }} - name: Install dependencies run: | From 98e89c272aeb3dcc88f7f07c8c09d03a4d56a3b6 Mon Sep 17 00:00:00 2001 From: Joe Robertson Date: Fri, 18 Jul 2025 13:30:43 -0700 Subject: [PATCH 103/490] Bump to 3.10.1 and add default VT. --- CMakeLists.txt | 2 +- resources/model/OpenStudio.idd | 4 +- src/osversion/VersionTranslator.cpp | 5 +- .../idd/versions/3_10_0/OpenStudio.idd | 40943 ++++++++++++++++ 4 files changed, 40949 insertions(+), 5 deletions(-) create mode 100644 src/utilities/idd/versions/3_10_0/OpenStudio.idd diff --git a/CMakeLists.txt b/CMakeLists.txt index fc0e4e9c7c..f07388857c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ if(CCACHE_PROGRAM) endif() # Project macro can only take digits in the version, it splits these out to specific variables -project(OpenStudio VERSION 3.10.0) +project(OpenStudio VERSION 3.10.1) include(CMake/compiler_flags.cmake) diff --git a/resources/model/OpenStudio.idd b/resources/model/OpenStudio.idd index 363b72b9d2..d20de0c2b3 100644 --- a/resources/model/OpenStudio.idd +++ b/resources/model/OpenStudio.idd @@ -1,4 +1,4 @@ -!IDD_Version 3.10.0 +!IDD_Version 3.10.1 ! ***************************************************************************** ! This file is the Input Data Dictionary (IDD) for OpenStudio Model. ! @@ -40,7 +40,7 @@ OS:Version, \required-field A2, \field Version Identifier \type alpha - \default 3.10.0 + \default 3.10.1 A3; \field Prerelease Identifier \type alpha diff --git a/src/osversion/VersionTranslator.cpp b/src/osversion/VersionTranslator.cpp index 76bb4f48e7..bfc4818f65 100644 --- a/src/osversion/VersionTranslator.cpp +++ b/src/osversion/VersionTranslator.cpp @@ -146,7 +146,7 @@ namespace osversion { m_updateMethods[VersionString("3.8.0")] = &VersionTranslator::update_3_7_0_to_3_8_0; m_updateMethods[VersionString("3.9.0")] = &VersionTranslator::update_3_8_0_to_3_9_0; m_updateMethods[VersionString("3.10.0")] = &VersionTranslator::update_3_9_0_to_3_10_0; - // m_updateMethods[VersionString("3.10.0")] = &VersionTranslator::defaultUpdate; + m_updateMethods[VersionString("3.10.1")] = &VersionTranslator::defaultUpdate; // List of previous versions that may be updated to this one. // - To increment the translator, add an entry for the version just released (branched for @@ -184,8 +184,9 @@ namespace osversion { VersionString("2.9.1"), VersionString("3.0.0"), VersionString("3.0.1"), VersionString("3.1.0"), VersionString("3.2.0"), VersionString("3.2.1"), VersionString("3.3.0"), VersionString("3.4.0"), VersionString("3.5.0"), VersionString("3.5.1"), VersionString("3.6.0"), VersionString("3.6.1"), VersionString("3.7.0"), VersionString("3.8.0"), VersionString("3.9.0"), + VersionString("3.10.0"), // Note: do **not** include the **current** version in m_startVersions, stop at the previous release - //VersionString("3.10.0"), + //VersionString("3.10.1"), }; } diff --git a/src/utilities/idd/versions/3_10_0/OpenStudio.idd b/src/utilities/idd/versions/3_10_0/OpenStudio.idd new file mode 100644 index 0000000000..363b72b9d2 --- /dev/null +++ b/src/utilities/idd/versions/3_10_0/OpenStudio.idd @@ -0,0 +1,40943 @@ +!IDD_Version 3.10.0 +! ***************************************************************************** +! This file is the Input Data Dictionary (IDD) for OpenStudio Model. +! +! Please see the EnergyPlus IDD Header for data formatting information. In +! addition to the syntax listed there, we add the following syntax items: +! +! Field-level comments: +! +! \type handle The field holds the UUID of the IDF object. This is used in lieu of names +! to keep track of references. It also enables \object-list AllObjects, which +! can point to any object. +! +! \type url The field references a file on at some location. The reference +! may be a relative file path (in which case a set of search locations +! are used to find the file at run time), or it may be an +! absolute path to a local file. +! +! Object-level comments: +! +! \url-object Use if the object includes one or more fields of url type. +! +! Grouping comments: +! +! The groups in the OpenStudio IDD represent high level groupings of similar objects. +! ModelEditor displays un-parented objects in their corresponding group, where each group +! is collapsible. +! +! ************************************************************************** + +\group OpenStudio Core + +OS:Version, + \unique-object + \required-object + \format singleLine + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Version Identifier + \type alpha + \default 3.10.0 + A3; \field Prerelease Identifier + \type alpha + +OS:ComponentData, + \memo Defines the meta-data and contents of a Component, that is, a + \memo subset of an OpenStudio Model. + \extensible:1 + \min-fields 7 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note This should be the name of the Component as listed in the + \note Component Library. + \type alpha + \required-field + \reference ComponentNames + A3, \field UUID + \note This is a UUID that follows the Component throughout its life, + \note both in Models and in the Component Library. + \type alpha + \required-field + A4, \field Version UUID + \note This UUID should be changed whenever the Component is modified. + \type alpha + \required-field + A5, \field Creation Timestamp + \note Unix timestamp from January 1, 1970 00:00 GMT, in seconds. + \type integer + A6, \field Version Timestamp + \note Unix timestamp from January 1, 1970 00:00 GMT, in seconds. + \type integer + A7; \field Name of Object + \note The first object listed should be the primary object, which + \note indicates the overall Component type. + \type object-list + \required-field + \begin-extensible + \object-list AllObjects + +\group OpenStudio Simulation + +OS:ConvergenceLimits, + \unique-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + N1, \field Minimum System Timestep + \note 0 sets the minimum to the zone timestep (ref: Timestep) + \note 1 is normal (ratchet down to 1 minute) + \note setting greater than zone timestep (in minutes) will effectively set to zone timestep + \type integer + \units minutes + \minimum 0 + \maximum 60 + N2, \field Maximum HVAC Iterations + \type integer + \minimum 1 + \default 20 + N3, \field Minimum Plant Iterations + \note Controls the minimum number of plant system solver iterations within a single HVAC iteration + \note Larger values will increase runtime but might improve solution accuracy for complicated plant systems + \note Complex plants include: several interconnected loops, heat recovery, thermal load following generators, etc. + \type integer + \minimum 1 + \default 2 + N4; \field Maximum Plant Iterations + \note Controls the maximum number of plant system solver iterations within a single HVAC iteration + \note Smaller values might decrease runtime but could decrease solution accuracy for complicated plant systems + \type integer + \minimum 2 + \default 8 + +OS:ProgramControl, + \memo used to support various efforts in time reduction for simulation including threading + A1, \field Handle + \type handle + \required-field + N1; \field Number of Threads Allowed + \type integer + \minimum 0 + \note This is currently used only in the Interior Radiant Exchange module -- view factors on # surfaces + \note if value is 0, then maximum number allowed will be used. + +OS:HeatBalanceAlgorithm, + \memo Determines which Heat Balance Algorithm will be used ie. + \memo CTF (Conduction Transfer Functions), + \memo EMPD (Effective Moisture Penetration Depth with Conduction Transfer Functions). + \memo Advanced/Research Usage: CondFD (Conduction Finite Difference) + \memo Advanced/Research Usage: ConductionFiniteDifferenceSimplified + \memo Advanced/Research Usage: HAMT (Combined Heat And Moisture Finite Element) + \unique-object + \format singleLine + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Algorithm + \type choice + \default ConductionTransferFunction + \key ConductionTransferFunction + \key MoisturePenetrationDepthConductionTransferFunction + \key ConductionFiniteDifference + \key CombinedHeatAndMoistureFiniteElement + N1, \field Surface Temperature Upper Limit + \type real + \units C + \minimum 200 + \default 200.0 + N2, \field Minimum Surface Convection Heat Transfer Coefficient Value + \type real + \units W/m2-K + \minimum> 0 + \default 0.1 + N3; \field Maximum Surface Convection Heat Transfer Coefficient Value + \type real + \units W/m2-K + \minimum 1 + \default 1000 + +OS:RunPeriod, + \unique-object + \min-fields 12 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note descriptive name (used in reporting mainly) + \note if blank, weather file title is used. if not blank, must be unique + \note EnergyPlus Start Year field is captured in OS:YearDescription object + \type alpha + \required-field + \reference RunPeriods + \reference RunPeriodsAndDesignDays + N1, \field Begin Month + \type integer + \required-field + \minimum 1 + \maximum 12 + N2, \field Begin Day of Month + \type integer + \required-field + \minimum 1 + \maximum 31 + N3, \field End Month + \type integer + \required-field + \minimum 1 + \maximum 12 + N4, \field End Day of Month + \type integer + \required-field + \minimum 1 + \maximum 31 + A3, \field Use Weather File Holidays and Special Days + \note If yes or blank, use holidays as specified on Weatherfile. + \note If no, do not use the holidays specified on the Weatherfile. + \note Note: You can still specify holidays/special days using the RunPeriodControl:SpecialDays object(s). + \type choice + \default Yes + \key Yes + \key No + A4, \field Use Weather File Daylight Saving Period + \note If yes or blank, use daylight saving period as specified on Weatherfile. + \note If no, do not use the daylight saving period as specified on the Weatherfile. + \type choice + \default Yes + \key Yes + \key No + A5, \field Apply Weekend Holiday Rule + \note if yes and single day holiday falls on weekend, "holiday" occurs on following Monday + \type choice + \default No + \key Yes + \key No + A6, \field Use Weather File Rain Indicators + \type choice + \default Yes + \key Yes + \key No + A7, \field Use Weather File Snow Indicators + \type choice + \default Yes + \key Yes + \key No + N5; \field Number of Times Runperiod to be Repeated + \type integer + \minimum 1 + \default 1 + +OS:RunPeriodControl:DaylightSavingTime, + \memo This object sets up the daylight saving time period for any RunPeriod. + \memo Ignores any daylight saving time period on the weather file and uses this definition. + \memo These are not used with SizingPeriod:DesignDay objects. + \memo Use with SizingPeriod:WeatherFileDays object can be controlled in that object. + \unique-object + \min-fields 3 + A1, \field Handle + \type handle + \required-field + A2, \field Start Date + \type alpha + \required-field + A3; \field End Date + \note Dates can be several formats: + \note / (month/day) + \note + \note + \note in in + \note can be January, February, March, April, May, June, July, August, September, October, November, December + \note Months can be the first 3 letters of the month + \note can be Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday + \note can be 1 or 1st, 2 or 2nd, etc. up to 5(?) + \type alpha + \required-field + +OS:RunPeriodControl:SpecialDays, + \memo This object sets up holidays/special days to be used during weather file + \memo run periods. (These are not used with SizingPeriod:* objects.) + \memo Depending on the value in the run period, days on the weather file may also + \memo be used. However, the weather file specification will take precedence over + \memo any specification shown here. (No error message on duplicate days or overlapping + \memo days). + \min-fields 5 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + A3, \field Start Date + \note Dates can be several formats: + \note / (month/day) + \note + \note + \note in in + \note can be January, February, March, April, May, June, July, August, September, October, November, December + \note Months can be the first 3 letters of the month + \note can be Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday + \note can be 1 or 1st, 2 or 2nd, etc. up to 5(?) + \type alpha + \required-field + N1, \field Duration + \type real + \units days + \minimum 1 + \maximum 366 + \default 1 + A4; \field Special Day Type + \note Special Day Type selects the schedules appropriate for each day so labeled + \type choice + \default Holiday + \key Holiday + \key SummerDesignDay + \key WinterDesignDay + \key CustomDay1 + \key CustomDay2 + +OS:ShadowCalculation, + \unique-object + \min-fields 2 + \memo This object is used to control details of the solar, shading, and daylighting models + \extensible:1 + A1, \field Handle + \type handle + \required-field + A2 , \field Shading Calculation Method + \note Select between CPU-based polygon clipping method, the GPU-based pixel counting method, + \note or importing from external shading data. + \note If PixelCounting is selected and GPU hardware (or GPU emulation) is not available, a warning will be + \note displayed and EnergyPlus will revert to PolygonClipping. + \note If Scheduled is chosen, the Sunlit Fraction Schedule Name is required + \note in SurfaceProperty:LocalEnvironment. + \note If Imported is chosen, the Schedule:File:Shading object is required. + \type choice + \key PolygonClipping + \key PixelCounting + \key Scheduled + \key Imported + \required-field + \note the default value is PolygonClipping + A3 , \field Shading Calculation Update Frequency Method + \note choose calculation frequency method. note that Timestep is only needed for certain cases + \note and can increase execution time significantly. + \type choice + \key Periodic + \key Timestep + \default Periodic + N1 , \field Shading Calculation Update Frequency + \type integer + \minimum 1 + \default 20 + \note enter number of days + \note this field is only used if the previous field is set to Periodic + \note warning issued if >31 + N2 , \field Maximum Figures in Shadow Overlap Calculations + \note Number of allowable figures in shadow overlap in PolygonClipping calculations + \type integer + \minimum 200 + \default 15000 + A4 , \field Polygon Clipping Algorithm + \note Advanced Feature. Internal default is SutherlandHodgman + \note Refer to InputOutput Reference and Engineering Reference for more information + \type choice + \key ConvexWeilerAtherton + \key SutherlandHodgman + \key SlaterBarskyandSutherlandHodgman + \default SutherlandHodgman + N3 , \field Pixel Counting Resolution + \note Number of pixels in both dimensions of the surface rendering + \type integer + \required-field + \note the default is 512 + A5 , \field Sky Diffuse Modeling Algorithm + \note Advanced Feature. Internal default is SimpleSkyDiffuseModeling + \note If you have shading elements that change transmittance over the + \note year, you may wish to choose the detailed method. + \note Refer to InputOutput Reference and Engineering Reference for more information + \type choice + \key SimpleSkyDiffuseModeling + \key DetailedSkyDiffuseModeling + \default SimpleSkyDiffuseModeling + A6 , \field Output External Shading Calculation Results + \type choice + \key Yes + \key No + \required-field + \note the default is No + \note If Yes is chosen, the calculated external shading fraction results will be saved to an external CSV file with surface names as the column headers. + A6 , \field Disable Self-Shading Within Shading Zone Groups + \note If Yes, self-shading will be disabled from all exterior surfaces in a given Shading Zone Group to surfaces within + \note the same Shading Zone Group. + \note If both Disable Self-Shading Within Shading Zone Groups and Disable Self-Shading From Shading Zone Groups to Other Zones = Yes, + \note then all self-shading from exterior surfaces will be disabled. + \note If only one of these fields = Yes, then at least one Shading Zone Group must be specified, or this field will be ignored. + \note Shading from Shading:* surfaces, overhangs, fins, and reveals will not be disabled. + \type choice + \key Yes + \key No + \required-field + \note the default is No + A8 , \field Disable Self-Shading From Shading Zone Groups to Other Zones + \note If Yes, self-shading will be disabled from all exterior surfaces in a given Shading Zone Group to all other zones in the model. + \note If both Disable Self-Shading Within Shading Zone Groups and Disable Self-Shading From Shading Zone Groups to Other Zones = Yes, + \note then all self-shading from exterior surfaces will be disabled. + \note If only one of these fields = Yes, then at least one Shading Zone Group must be specified, or this field will be ignored. + \note Shading from Shading:* surfaces, overhangs, fins, and reveals will not be disabled. + \type choice + \key Yes + \key No + \required-field + \note the default is No + A9 ; \field Shading Zone Group + \note Specifies a group of zones which are controlled by the Disable Self-Shading fields. + \type object-list + \object-list ModelObjectLists + \begin-extensible + +OS:SimulationControl, + \memo Note that the following 3 fields are related to the Sizing:Zone, Sizing:System, + \memo and Sizing:Plant objects. Having these fields set to Yes but no corresponding + \memo Sizing object will not cause the sizing to be done. However, having any of these + \memo fields set to No, the corresponding Sizing object is ignored. + \memo Note also, if you want to do system sizing, you must also do zone sizing in the same + \memo run or an error will result. + \unique-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Do Zone Sizing Calculation + \note If Yes, Zone sizing is accomplished from corresponding Sizing:Zone objects + \note and autosize fields. + \type choice + \default No + \key Yes + \key No + A3, \field Do System Sizing Calculation + \note If Yes, System sizing is accomplished from corresponding Sizing:System objects + \note and autosize fields. + \note If Yes, Zone sizing (previous field) must also be Yes. + \type choice + \default No + \key Yes + \key No + A4, \field Do Plant Sizing Calculation + \note If Yes, Plant sizing is accomplished from corresponding Sizing:Plant objects + \note and autosize fields. + \type choice + \default No + \key Yes + \key No + A5, \field Run Simulation for Sizing Periods + \note If Yes, SizingPeriod objects are executed and results from those may be displayed.. + \type choice + \default Yes + \key Yes + \key No + A6, \field Run Simulation for Weather File Run Periods + \note If Yes, RunPeriod objects are executed and results from those may be displayed.. + \type choice + \default Yes + \key Yes + \key No + N1, \field Loads Convergence Tolerance Value + \note Loads Convergence Tolerance Value is a fraction of load + \type real + \minimum> 0 + \maximum 0.5 + \default .04 + \units W + N2, \field Temperature Convergence Tolerance Value + \type real + \units deltaC + \minimum> 0 + \maximum 0.5 + \default .4 + A7, \field Solar Distribution + \note MinimalShadowing | FullExterior | FullInteriorAndExterior | FullExteriorWithReflections | FullInteriorAndExteriorWithReflections + \type choice + \default FullExterior + \key MinimalShadowing + \key FullExterior + \key FullInteriorAndExterior + \key FullExteriorWithReflections + \key FullInteriorAndExteriorWithReflections + N3, \field Maximum Number of Warmup Days + \note EnergyPlus will only use as many warmup days as needed to reach convergence tolerance. + \note This field's value should NOT be set less than 25. + \type integer + \minimum> 0 + \default 25 + N5, \field Minimum Number of Warmup Days + \note The minimum number of warmup days that produce enough temperature and flux history + \note to start EnergyPlus simulation for all reference buildings was suggested to be 6. + \note When this field is greater than the maximum warmup days defined previous field + \note the maximum number of warmup days will be reset to the minimum value entered here. + \note Warmup days will be set to be the value you entered when it is less than the default 1. + \type integer + \minimum> 0 + \default 1 + A8, \field Do HVAC Sizing Simulation for Sizing Periods + \note If Yes, SizingPeriod:* objects are executed additional times for advanced sizing. + \note Currently limited to use with coincident plant sizing, see Sizing:Plant object + \type choice + \key Yes + \key No + \default No + N6; \field Maximum Number of HVAC Sizing Simulation Passes + \note the entire set of SizingPeriod:* objects may be repeated to fine tune size results + \note this input sets a limit on the number of passes that the sizing algorithms can repeat the set + \type integer + \minimum 1 + \default 1 + +OS:PerformancePrecisionTradeoffs, + \unique-object + \memo This object enables users to choose certain options that speed up EnergyPlus simulation, + \memo but may lead to small decreases in accuracy of results. + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2, \field Use Coil Direct Solutions + \note If Yes, an analytical or empirical solution will be used to replace iterations in + \note the coil performance calculations. + \type choice + \key Yes + \key No + \default No + A3, \field Zone Radiant Exchange Algorithm + \note Determines which algorithm will be used to solve long wave radiant exchange among surfaces within a zone. + \type choice + \key ScriptF + \key CarrollMRT + \default ScriptF + A4, \field Override Mode + \note The increasing mode number roughly correspond with increased speed. A description of each mode + \note are shown in the documentation. When Advanced is selected the N1 field value is used. + \type choice + \key Normal + \key Mode01 + \key Mode02 + \key Mode03 + \key Mode04 + \key Mode05 + \key Mode06 + \key Mode07 + \key Mode08 + \key Advanced + \default Normal + N1, \field MaxZoneTempDiff + \note Maximum zone temperature change before HVAC timestep is shortened. + \note Only used when Override Mode is set to Advanced + \type real + \minimum 0.1 + \maximum 3.0 + \default 0.3 + N2, \field MaxAllowedDelTemp + \note Maximum surface temperature change before HVAC timestep is shortened. + \note Only used when Override Mode is set to Advanced + \type real + \minimum 0.002 + \maximum 0.1 + \default 0.002 + A5; \field Use Representative Surfaces for Calculations + \note Automatically group surfaces with similar characteristics and perform relevant calculations only once for each group. + \type choice + \key Yes + \key No + \default No + +OS:Sizing:Parameters, + \unique-object + \min-fields 2 + A1, \field Handle + \type handle + \required-field + N1, \field Heating Sizing Factor + \type real + \minimum> 0 + \default 1.0 + N2, \field Cooling Sizing Factor + \type real + \minimum> 0 + \default 1.0 + N3; \field Timesteps in Averaging Window + \note blank => set the timesteps in averaging window to + \note Number of Timesteps per Hour resulting in a 1 hour averaging window + \note default is number of timesteps for 1 hour averaging window + \type integer + \minimum 1 + +OS:SurfaceConvectionAlgorithm:Inside, + \memo Default indoor surface heat transfer convection algorithm to be used for all zones + \unique-object + \format singleLine + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2; \field Algorithm + \note Simple = constant value natural convection (ASHRAE) + \note TARP = variable natural convection based on temperature difference (ASHRAE, Walton) + \note CeilingDiffuser = ACH-based forced and mixed convection correlations + \note for ceiling diffuser configuration with simple natural convection limit + \note AdaptiveConvectionAlgorithm = dynamic selection of convection models based on conditions + \note ASTMC1340 = mixed convection correlations based on heat flow direction, + \note surface tilt angle, surface characteristic length, and air speed past the surface. + \type choice + \default TARP + \key Simple + \key TARP + \key CeilingDiffuser + \key AdaptiveConvectionAlgorithm + \key ASTMC1340 + +OS:SurfaceConvectionAlgorithm:Outside, + \memo Default outside surface heat transfer convection algorithm to be used for all zones + \unique-object + \format singleLine + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2; \field Algorithm + \note SimpleCombined = Combined radiation and convection coefficient using simple ASHRAE model + \note TARP = correlation from models developed by ASHRAE, Walton, and Sparrow et. al. + \note MoWiTT = correlation from measurements by Klems and Yazdanian for smooth surfaces + \note DOE-2 = correlation from measurements by Klems and Yazdanian for rough surfaces + \note AdaptiveConvectionAlgorithm = dynamic selection of correlations based on conditions + \type choice + \default DOE-2 + \key SimpleCombined + \key TARP + \key MoWiTT + \key DOE-2 + \key AdaptiveConvectionAlgorithm + +OS:Timestep, + \unique-object + \format singleLine + \min-fields 2 + A1, \field Handle + \type handle + \required-field + N1; \field Number of Timesteps per Hour + \note Number in hour: normal validity 4 to 60: 6 suggested + \note Must be evenly divisible into 60 + \note Allowable values include 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and 60 + \note Normal 6 is mimimum as lower values may cause inaccuracies + \note A minimum value of 20 is suggested for both ConductionFiniteDifference + \note and CombinedHeatAndMoistureFiniteElement surface heat balance alogorithms + \note A minimum of 12 is suggested for simulations involving a Vegetated Roof (Material:RoofVegetation). + \type integer + \minimum 1 + \maximum 60 + \default 6 + +OS:YearDescription, + \unique-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Calendar Year + \type integer + A3, \field Day of Week for Start Day + \note Not used if calendar year is given + \note =|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday]; + \type choice + \default UseWeatherFile + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + \key UseWeatherFile + A4; \field Is Leap Year + \note Not used if calendar year is given + \type choice + \default No + \key Yes + \key No + +OS:ZoneAirContaminantBalance, + \memo Determines which contaminant concentration will be simulates. + \unique-object + \format singleLine + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Carbon Dioxide Concentration + \note If Yes, CO2 simulation will be performed. + \type choice + \default No + \key Yes + \key No + A3; \field Outdoor Carbon Dioxide Schedule Name + \note Schedule values should be in parts per million (ppm) + \type object-list + \object-list ScheduleNames + +OS:ZoneAirHeatBalanceAlgorithm, + \memo Controls the zone/space air heat balance. + \unique-object + \format singleLine + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Algorithm + \note Determines which algorithm will be used to solve the air heat balance + \type choice + \default ThirdOrderBackwardDifference + \key ThirdOrderBackwardDifference + \key AnalyticalSolution + \key EulerMethod + A3, \field Do Space Heat Balance for Sizing + \note If yes, space heat balance will be calculated and reported during sizing. + \type choice + \key No + \key Yes + \default No + A4; \field Do Space Heat Balance for Simulation + \note If yes, space heat balance will be calculated and reported during simulation. + \type choice + \key No + \key Yes + \default No + +OS:ZoneAirMassFlowConservation, + \memo Enforces the zone air mass flow balance by adjusting zone mixing object flow rates. + \memo The infiltration object mass flow rate may also be adjusted or may add infiltration + \memo air flow to the base infiltration air flow for source zones only. + \unique-object + A1, \field Handle + \type handle + \required-field + A2, \field Adjust Zone Mixing and Return For Air Mass Flow Balance + \type choice + \key AdjustMixingOnly + \key AdjustReturnOnly + \key AdjustMixingThenReturn + \key AdjustReturnThenMixing + \key None + \default None + A3, \field Infiltration Balancing Method + \type choice + \key AddInfiltrationFlow + \key AdjustInfiltrationFlow + \key None + \default AddInfiltrationFlow + A4; \field Infiltration Balancing Zones + \type choice + \key MixingSourceZonesOnly + \key AllZones + \default MixingSourceZonesOnly + +OS:ZoneCapacitanceMultiplier:ResearchSpecial, + \memo Multiplier altering the relative capacitance of the air compared to an empty zone + \unique-object + \format singleLine + \min-fields 4 + A1, \field Handle + \type handle + \required-field + N1, \field Temperature Capacity Multiplier + \note Used to alter the capacitance of zone air with respect to heat or temperature + \type real + \minimum> 0 + \default 1.0 + N2, \field Humidity Capacity Multiplier + \note Used to alter the capacitance of zone air with respect to moisture or humidity ratio + \type real + \minimum> 0 + \default 1.0 + N3; \field Carbon Dioxide Capacity Multiplier + \note Used to alter the capacitance of zone air with respect to zone air contaminant concentration + \type real + \minimum> 0 + \default 1.0 + +OS:RadianceParameters, + \memo Radiance simulation parameters + \unique-object + A1, \field Handle + \type handle + \required-field + N1, \field Accumulated Rays per Record + \note accumulated rays per record, -c option to rcontrib + \note The -c option tells rcontrib how many rays to accumulate for each + \note record. The default value is 1, meaning a full record will be produced + \note for each input ray. For values greater than 1, contributions will be + \note averaged together over the given number of input rays. + \type integer + \minimum 1 + \default 1 + N2, \field Direct Threshold + \note direct sampling threshold, -dt option to rtrace/rpict. Sets the direct threshold to frac. + \note Shadow testing will stop when the potential contribution of at least the next and at most + \note all remaining light source samples is less than this fraction of the accumulated value. + \note The remaining light source contributions are approximated statistically. A value of zero + \note means that all light source samples will be tested for shadow. + \type real + \minimum 0.0 + \default 0.0 + N3, \field Direct Certainty + \note direct certainty, -dc option to rtrace/rpict. + \note Sets the direct certainty to frac. A value of one guarantees that the absolute + \note accuracy of the direct calculation will be equal to or better than that given + \note in the -dt specification. A value of zero only insures that all shadow lines + \note resulting in a contrast change greater than the -dt specification will be calculated. + \type real + \minimum 0.0 + \default 1.0 + N4, \field Direct Jitter + \note direct jitter, -dj option to rtrace/rpict. + \note Sets the direct certainty to frac. A value of one guarantees that the absolute + \note accuracy of the direct calculation will be equal to or better than that given + \note in the -dt specification. A value of zero only insures that all shadow lines + \note resulting in a contrast change greater than the -dt specification will be calculated. + \type real + \minimum 0.0 + \default 1.0 + N5, \field Direct Pretest + \note direct jitter, -dp option to rtrace/rpict. + \note Set the secondary source presampling density to D. This is the number of + \note samples per steradian that will be used to determine ahead of time whether + \note or not it is worth following shadow rays through all the reflections and/or + \note transmissions associated with a secondary source path. A value of 0 means that + \note the full secondary source path will always be tested for shadows if it is tested at all. + \type real + \minimum 0.0 + \default 1.0 + N6, \field Ambient Bounces VMX + \note ambient bounces, -ab option to rtrace/rpict. + \note Set the number of ambient bounces to N. This is the maximum number of diffuse + \note bounces computed by the indirect calculation. A value of zero implies no indirect calculation. + \note This is for view matrix (VMX) calculations with rcontrib. + \type integer + \minimum 0 + \default 6 + N7, \field Ambient Bounces DMX + \note ambient bounces, -ab option to rtrace/rpict. + \note Set the number of ambient bounces to N. This is the maximum number of diffuse + \note bounces computed by the indirect calculation. A value of zero implies no indirect calculation. + \note This is for daylight matrix (DMX) calculations with rcontrib, and classic renderings with rpict. + \type integer + \minimum 0 + \default 2 + N8, \field Ambient Divisions VMX + \note ambient bounces, -ad option to rtrace/rpict. + \note Set the number of ambient divisions to N. The error in the Monte Carlo + \note calculation of indirect illuminance will be inversely proportional to the + \note square root of this number. A value of zero implies no indirect calculation. + \note This is for view matrix (VMX) calculations with rcontrib. + \type integer + \minimum 0 + \default 4050 + N9, \field Ambient Divisions DMX + \note ambient bounces, -ad option to rtrace/rpict. + \note Set the number of ambient divisions to N. The error in the Monte Carlo + \note calculation of indirect illuminance will be inversely proportional to the + \note square root of this number. A value of zero implies no indirect calculation. + \note This is for daylight matrix (DMX) calculations with rcontrib, and classic renderings with rpict. + \type integer + \minimum 0 + \default 512 + N10, \field Ambient Supersamples + \note ambient supersamples, -as option to rtrace/rpict. + \note Set the number of ambient divisions to N. The error in the Monte Carlo + \note calculation of indirect illuminance will be inversely proportional to the + \note square root of this number. A value of zero implies no indirect calculation. + \type integer + \minimum 0 + \default 256 + N11, \field Limit Weight VMX + \note limit weight, -lw option to rtrace/rpict. + \note Limit the weight of each ray to a minimum of frac. During ray-tracing, a + \note record is kept of the estimated contribution (weight) a ray would have in + \note the image. If this weight is less than the specified minimum and the -lr + \note setting (above) is positive, the ray is not traced. Otherwise, Russian + \note roulette is used to continue rays with a probability equal to the ray weight + \note divided by the given frac. (Ideally, this value is the -ad value^-1 for VMX calcs) + \type real + \minimum 0.0 + \default 0.001 + N12, \field Limit Weight DMX + \note limit weight, -lw option to rtrace/rpict. + \note Limit the weight of each ray to a minimum of frac. During ray-tracing, a + \note record is kept of the estimated contribution (weight) a ray would have in + \note the image. If this weight is less than the specified minimum and the -lr + \note setting (above) is positive, the ray is not traced. Otherwise, Russian + \note roulette is used to continue rays with a probability equal to the ray weight + \note divided by the given frac. + \type real + \default 0.001 + N13, \field Klems Sampling Density + \note number of rays per outgoing Klems direction, -c option to rcontrib. + \note Sets the Klems sampling density for daylight matrix calculations. + \type integer + \default 500 + A2; \field Sky Discretization Resolution + \note number of rays per outgoing Klems direction, -m:n option to rcontrib. + \note Sets sky discretization resolution for daylight coefficient calculations. + \type choice + \default 146 + \key 146 + \key 578 + \key 2306 + +\group OpenStudio Site + +OS:ClimateZones, + \unique-object + \extensible:4 + A1, \field Handle + \type handle + \required-field + A2, \field Climate Zone Institution Name + \type alpha + \begin-extensible + \default ASHRAE + A3, \field Climate Zone Document Name + \type alpha + \default ANSI/ASHRAE Standard 169 + N1, \field Climate Zone Document Year + \type integer + \minimum 0 + \default 2006 + A5; \field Climate Zone Value + \type alpha + \required-field + +OS:Site, + \unique-object + \min-fields 7 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + N1, \field Latitude + \note + is North, - is South, degree minutes represented in decimal (i.e. 30 minutes is .5) + \type real + \units deg + \minimum -90 + \maximum 90 + \default 0.0 + N2, \field Longitude + \note - is West, + is East, degree minutes represented in decimal (i.e. 30 minutes is .5) + \type real + \units deg + \minimum -180 + \maximum 180 + \default 0.0 + N3, \field Time Zone + \note basic these limits on the WorldTimeZone Map (2003) + \note Time relative to GMT. Decimal hours. + \type real + \units hr + \minimum -12 + \maximum 14 + \default 0.0 + N4, \field Elevation + \type real + \units m + \minimum -300 + \maximum< 8900 + \default 0.0 + A3, \field Terrain + \note Country=FlatOpenCountry | Suburbs=CountryTownsSuburbs | City=CityCenter | Ocean=body of water (5km) | Urban=Urban-Industrial-Forest + \type choice + \default Suburbs + \key Country + \key Suburbs + \key City + \key Ocean + \key Urban + A4; \field Keep Site Location Information + \type choice + \key Yes + \key No + \default No + +OS:Site:GroundTemperature:BuildingSurface, + \memo These temperatures are specifically for those surfaces that have the outside environment + \memo of "Ground". Documentation about what values these should be is located in the + \memo Auxiliary programs document (Ground Heat Transfer) as well as the InputOutput Reference. + \memo CAUTION - Do not use the "undisturbed" ground temperatures from the weather data. + \memo These values are too extreme for the soil under a conditioned building. + \memo For best results, use the Slab or Basement program to calculate custom monthly + \memo average ground temperatures (see Auxiliary Programs). For typical commercial + \memo buildings in the USA, a reasonable default value is 2C less than the average indoor space temperature. + \unique-object + \format singleLine + \min-fields 13 + A1, \field Handle + \type handle + \required-field + N1, \field January Ground Temperature + \type real + \units C + \default 18 + N2, \field February Ground Temperature + \type real + \units C + \default 18 + N3, \field March Ground Temperature + \type real + \units C + \default 18 + N4, \field April Ground Temperature + \type real + \units C + \default 18 + N5, \field May Ground Temperature + \type real + \units C + \default 18 + N6, \field June Ground Temperature + \type real + \units C + \default 18 + N7, \field July Ground Temperature + \type real + \units C + \default 18 + N8, \field August Ground Temperature + \type real + \units C + \default 18 + N9, \field September Ground Temperature + \type real + \units C + \default 18 + N10, \field October Ground Temperature + \type real + \units C + \default 18 + N11, \field November Ground Temperature + \type real + \units C + \default 18 + N12; \field December Ground Temperature + \type real + \units C + \default 18 + +OS:Site:GroundTemperature:FCfactorMethod, + \memo These temperatures are specifically for underground walls and ground floors + \memo defined with the C-factor and F-factor methods, and should be close to the + \memo monthly average outdoor air temperature delayed by 3 months for the location. + \unique-object + \min-fields 13 + \format singleLine + A1, \field Handle + \type handle + \required-field + N1 , \field January Ground Temperature + \units C + \type real + \default 13 + N2 , \field February Ground Temperature + \units C + \type real + \default 13 + N3 , \field March Ground Temperature + \units C + \type real + \default 13 + N4 , \field April Ground Temperature + \units C + \type real + \default 13 + N5 , \field May Ground Temperature + \units C + \type real + \default 13 + N6 , \field June Ground Temperature + \units C + \type real + \default 13 + N7 , \field July Ground Temperature + \units C + \type real + \default 13 + N8 , \field August Ground Temperature + \units C + \type real + \default 13 + N9 , \field September Ground Temperature + \units C + \type real + \default 13 + N10, \field October Ground Temperature + \units C + \type real + \default 13 + N11, \field November Ground Temperature + \units C + \type real + \default 13 + N12; \field December Ground Temperature + \units C + \type real + \default 13 + +OS:Site:GroundTemperature:Shallow, + \memo These temperatures are specifically for the Surface Ground Heat Exchanger and + \memo should probably be close to the average outdoor air temperature for the location. + \memo They are not used in other models. + \unique-object + \min-fields 13 + \format singleLine + A1, \field Handle + \type handle + \required-field + N1 , \field January Surface Ground Temperature + \units C + \type real + \default 13 + N2 , \field February Surface Ground Temperature + \units C + \type real + \default 13 + N3 , \field March Surface Ground Temperature + \units C + \type real + \default 13 + N4 , \field April Surface Ground Temperature + \units C + \type real + \default 13 + N5 , \field May Surface Ground Temperature + \units C + \type real + \default 13 + N6 , \field June Surface Ground Temperature + \units C + \type real + \default 13 + N7 , \field July Surface Ground Temperature + \units C + \type real + \default 13 + N8 , \field August Surface Ground Temperature + \units C + \type real + \default 13 + N9 , \field September Surface Ground Temperature + \units C + \type real + \default 13 + N10, \field October Surface Ground Temperature + \units C + \type real + \default 13 + N11, \field November Surface Ground Temperature + \units C + \type real + \default 13 + N12; \field December Surface Ground Temperature + \units C + \type real + \default 13 + +OS:Site:GroundTemperature:Deep, + \memo These temperatures are specifically for the ground heat exchangers that would use + \memo "deep" (3-4 m depth) ground temperatures for their heat source. + \memo They are not used in other models. + \unique-object + \min-fields 13 + \format singleLine + A1, \field Handle + \type handle + \required-field + N1 , \field January Deep Ground Temperature + \units C + \type real + \default 16 + N2 , \field February Deep Ground Temperature + \units C + \type real + \default 16 + N3 , \field March Deep Ground Temperature + \units C + \type real + \default 16 + N4 , \field April Deep Ground Temperature + \units C + \type real + \default 16 + N5 , \field May Deep Ground Temperature + \units C + \type real + \default 16 + N6 , \field June Deep Ground Temperature + \units C + \type real + \default 16 + N7 , \field July Deep Ground Temperature + \units C + \type real + \default 16 + N8 , \field August Deep Ground Temperature + \units C + \type real + \default 16 + N9 , \field September Deep Ground Temperature + \units C + \type real + \default 16 + N10, \field October Deep Ground Temperature + \units C + \type real + \default 16 + N11, \field November Deep Ground Temperature + \units C + \type real + \default 16 + N12; \field December Deep Ground Temperature + \units C + \type real + \default 16 + +OS:Site:GroundTemperature:Undisturbed:KusudaAchenbach, + \memo Undisturbed ground temperature object using the + \memo Kusuda-Achenbach 1965 correlation. + \min-fields 8 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \reference UndisturbedGroundTempModels + N1, \field Soil Thermal Conductivity + \required-field + \type real + \units W/m-K + \minimum> 0.0 + N2, \field Soil Density + \required-field + \type real + \units kg/m3 + \minimum> 0.0 + N3, \field Soil Specific Heat + \required-field + \type real + \units J/kg-K + \minimum> 0.0 + N4, \field Average Soil Surface Temperature + \type real + \units C + \note Annual average surface temperature + \note If left blank the Site:GroundTemperature:Shallow object must be included in the input + \note The soil temperature, amplitude, and phase shift must all be included or omitted together + N5, \field Average Amplitude of Surface Temperature + \type real + \units deltaC + \minimum 0 + \note Annual average surface temperature variation from average. + \note If left blank the Site:GroundTemperature:Shallow object must be included in the input + \note The soil temperature, amplitude, and phase shift must all be included or omitted together + N6; \field Phase Shift of Minimum Surface Temperature + \type real + \units days + \minimum 0 + \maximum< 365 + \note The phase shift of minimum surface temperature, or the day + \note of the year when the minimum surface temperature occurs. + \note If left blank the Site:GroundTemperature:Shallow object must be included in the input + \note The soil temperature, amplitude, and phase shift must all be included or omitted together + +OS:Site:GroundTemperature:Undisturbed:Xing, + \memo Undisturbed ground temperature object using the + \memo Xing 2014 2 harmonic parameter model. + \min-fields 10 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \reference UndisturbedGroundTempModels + N1, \field Soil Thermal Conductivity + \required-field + \type real + \units W/m-K + \minimum> 0.0 + N2, \field Soil Density + \required-field + \type real + \units kg/m3 + \minimum> 0.0 + N3, \field Soil Specific Heat + \required-field + \type real + \units J/kg-K + \minimum> 0.0 + N4, \field Average Soil Surface Temperature + \required-field + \type real + \units C + N5, \field Soil Surface Temperature Amplitude 1 + \required-field + \type real + \units deltaC + N6, \field Soil Surface Temperature Amplitude 2 + \required-field + \type real + \units deltaC + N7, \field Phase Shift of Temperature Amplitude 1 + \required-field + \type real + \units days + \maximum< 365 + N8; \field Phase Shift of Temperature Amplitude 2 + \required-field + \type real + \units days + \maximum< 365 + +OS:Site:GroundReflectance, + \unique-object + \min-fields 13 + \format singleLine + A1, \field Handle + \type handle + \required-field + N1 , \field January Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N2 , \field February Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N3 , \field March Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N4 , \field April Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N5 , \field May Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N6 , \field June Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N7 , \field July Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N8 , \field August Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N9 , \field September Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N10 , \field October Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N11 , \field November Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + N12 ; \field December Ground Reflectance + \default 0.2 + \type real + \minimum 0.0 + \maximum 1.0 + \units dimensionless + +OS:Site:WaterMainsTemperature, + \unique-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Calculation Method + \type choice + \required-field + \key Schedule + \key Correlation + \key CorrelationFromWeatherFile + \note If calculation method is CorrelationFromWeatherFile, the two numeric input + \note fields are ignored. Instead, EnergyPlus calculates them from weather file. + A3, \field Temperature Schedule Name + \type object-list + \object-list ScheduleNames + N1, \field Annual Average Outdoor Air Temperature + \type real + \units C + N2; \field Maximum Difference In Monthly Average Outdoor Air Temperatures + \type real + \units deltaC + \minimum 0 + +OS:SizingPeriod:DesignDay, + \min-fields 20 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference DesignDays + \reference RunPeriodsAndDesignDays + N1, \field Maximum Dry-Bulb Temperature + \note This field is required when field "Dry-Bulb Temperature Range Modifier Type" + \note is not "TemperatureProfileSchedule". + \type real + \units C + \minimum -90 + \maximum 70 + \default 23.0 + N2, \field Daily Dry-Bulb Temperature Range + \note Must still produce appropriate maximum dry bulb (within range) + \note This field is not needed if Dry-Bulb Temperature Range Modifier Type + \note is "delta". + \type real + \units deltaC + \minimum 0 + \default 0.0 + N3, \field Barometric Pressure + \note This field's value is also checked against the calculated "standard barometric pressure" + \note for the location. If out of range (>10%), then is replaced by standard value. + \type real + \units Pa + \ip-units inHg + \minimum 31000 + \maximum 120000 + \default 31000.0 + N4, \field Wind Speed + \type real + \units m/s + \ip-units miles/hr + \minimum 0 + \maximum 40 + \default 0.0 + N5, \field Wind Direction + \note North=0.0 East=90.0 + \note 0 and 360 are the same direction. + \type real + \units deg + \minimum 0 + \maximum 360 + \default 0.0 + N6, \field Sky Clearness + \note Only used if Sky Model Indicator = ASHRAEClearSky + \note 0.0 is totally unclear, 1.0 is totally clear + \type real + \minimum 0 + \maximum 1.2 + \default 0.0 + A3, \field Rain Indicator + \note Yes is raining (all day), No is not raining + \type choice + \key Yes + \key No + \default No + A4, \field Snow Indicator + \type choice + \key Yes + \key No + \default No + \note Yes is Snow on Ground, No is no Snow on Grou + N7, \field Day of Month + \note must be valid for Month field + \type integer + \minimum 1 + \maximum 31 + \default 1 + N8, \field Month + \type integer + \minimum 1 + \maximum 12 + \default 1 + A5, \field Day Type + \note Day Type selects the schedules appropriate for this design day + \type choice + \default SummerDesignDay + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + \key Holiday + \key SummerDesignDay + \key WinterDesignDay + \key CustomDay1 + \key CustomDay2 + A6, \field Daylight Saving Time Indicator + \note Yes -- use schedules modified for Daylight Saving Time Schedules. + \note No - do not use schedules modified for Daylight Saving Time Schedules + \type choice + \key Yes + \key No + \default No + A7, \field Humidity Condition Type + \note values/schedules indicated here and in subsequent fields create the humidity + \note values in the 24 hour design day conditions profile. + \type choice + \default WetBulb + \key WetBulb + \key DewPoint + \key HumidityRatio + \key Enthalpy + \key RelativeHumiditySchedule + \key WetBulbProfileMultiplierSchedule + \key WetBulbProfileDifferenceSchedule + \key WetBulbProfileDefaultMultipliers + A8, \field Humidity Condition Day Schedule Name + \note Only used when Humidity Condition Type is "RelativeHumiditySchedule", + \note "WetBulbProfileMultiplierSchedule", or "WetBulbProfileDifferenceSchedule" + \note For type "RelativeHumiditySchedule", the hour/time interval values should specify + \note relative humidity (percent) from 0.0 to 100.0. + \note For type "WetBulbProfileMultiplierSchedule" the hour/time interval values should specify + \note the fraction (0-1) of the wet-bulb temperature range to be subtracted from the + \note maximum wet-bulb temperature for each timestep in the day (units = Fraction) + \note For type "WetBulbProfileDifferenceSchedule" the values should specify a number to be subtracted + \note from the maximum wet-bulb temperature for each timestep in the day. (units = deltaC) + \type object-list + \object-list DayScheduleNames + N9, \field Wetbulb or DewPoint at Maximum Dry-Bulb + \note Wetbulb or dewpoint temperature coincident with the maximum temperature. + \note Required only if field Humidity Condition Type is "Wetbulb", "Dewpoint", + \note "WetBulbProfileMultiplierSchedule", "WetBulbProfileDifferenceSchedule", + \note or "WetBulbProfileDefaultMultipliers" + \type real + \units C + N10, \field Humidity Ratio at Maximum Dry-Bulb + \note Humidity ratio coincident with the maximum temperature (constant humidity ratio throughout day). + \note Required only if field Humidity Condition Type is "HumidityRatio". + \type real + \units kgWater/kgDryAir + N11, \field Enthalpy at Maximum Dry-Bulb + \note Enthalpy coincident with the maximum temperature. + \note Required only if field Humidity Condition Type is "Enthalpy". + \type real + \units J/kg + A9, \field Dry-Bulb Temperature Range Modifier Type + \note Type of modifier to the dry-bulb temperature calculated for the timestep + \type choice + \default DefaultMultipliers + \key MultiplierSchedule + \key DifferenceSchedule + \key TemperatureProfileSchedule + \key DefaultMultipliers + A10, \field Dry-Bulb Temperature Range Modifier Day Schedule Name + \note Only used when previous field is "MultiplierSchedule", "DifferenceSchedule" or + \note "TemperatureProfileSchedule". + \note For type "MultiplierSchedule" the hour/time interval values should specify + \note the fraction (0-1) of the dry-bulb temperature range to be subtracted + \note from the maximum dry-bulb temperature for each timestep in the day + \note For type "DifferenceSchedule" the values should specify a number to be subtracted + \note from the maximum dry-bulb temperature for each timestep in the day. + \note Note that numbers in the difference schedule cannot be negative as that + \note would result in a higher maximum than the maximum previously specified. + \note For type "TemperatureProfileSchedule" the values should specify the actual dry-bulb + \note temperature for each timestep in the day. + \type object-list + \object-list DayScheduleNames + A11, \field Solar Model Indicator + \type choice + \default ASHRAEClearSky + \key ASHRAEClearSky + \key ZhangHuang + \key Schedule + \key ASHRAETau + \key ASHRAETau2017 + A12, \field Beam Solar Day Schedule Name + \note if Solar Model Indicator = Schedule, then beam schedule name (for day) + \type object-list + \object-list DayScheduleNames + A13, \field Diffuse Solar Day Schedule Name + \note if Solar Model Indicator = Schedule, then diffuse schedule name (for day) + \type object-list + \object-list DayScheduleNames + N12, \field ASHRAE Clear Sky Optical Depth for Beam Irradiance + \units dimensionless + \note Required if Solar Model Indicator = ASHRAETau or ASHRAETau2017 + \note ASHRAETau2017 solar model can be used with 2013 and 2017 HOF matching taub + \minimum 0 + \maximum 1.2 + \default 0 + N13, \field ASHRAE Clear Sky Optical Depth for Diffuse Irradiance + \units dimensionless + \note required if solar model indicator = ashraetau or ashraetau2017 + \note ashraetau2017 solar model can be used with 2013 and 2017 hof matching taud + \minimum 0 + \maximum 3 + \default 0 + N14, \field Daily Wet-Bulb Temperature Range + \note Required only if Humidity Indicating Type = "WetbulbProfileMultiplierSchedule" or "WetBulbProfileDefaultMultipliers" + \type real + \units deltaC + N15, \field Maximum Number Warmup Days + \note If used this design day will be run with a custom limit on the maximum number of days that are repeated for warmup. + \note Limiting the number of warmup days can improve run time. + \type integer + A14; \field Begin Environment Reset Mode + \note If used this can control if you want the thermal history to be reset at the beginning of the design day. + \note When using a series of similar design days, this field can be used to retain warmup state from the previous design day. + \type choice + \key FullResetAtBeginEnvironment + \key SuppressAllBeginEnvironmentResets + \default FullResetAtBeginEnvironment + +OS:SizingPeriod:WeatherFileConditionType, + \memo Use a weather file period for design sizing calculations. + \memo EPW weather files are created with typical and extreme periods + \memo created heuristically from the weather file data. For more + \memo details on these periods, see AuxiliaryPrograms document. + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note user supplied name for reporting + \type alpha + \required-field + \reference DesignDays + \reference RunPeriodsAndDesignDays + A3, \field Period Selection + \note Following is a list of all possible types of Extreme and Typical periods that + \note might be identified in the Weather File. Not all possible types are available + \note for all weather files. + \type choice + \required-field + \retaincase + \key SummerExtreme + \key SummerTypical + \key WinterExtreme + \key WinterTypical + \key AutumnTypical + \key SpringTypical + \key WetSeason + \key DrySeason + \key NoDrySeason + \key NoWetSeason + \key TropicalHot + \key TropicalCold + \key NoDrySeasonMax + \key NoDrySeasonMin + \key NoWetSeasonMax + \key NoWetSeasonMin + A4, \field Day of Week for Start Day + \note =[|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|SummerDesignDay|WinterDesignDay| + \note |CustomDay1|CustomDay2]; + \note if you use SummerDesignDay or WinterDesignDay or the CustomDays then this will apply + \note to the whole period; other days (i.e., Monday) will signify a start day and + \note normal sequence ofsubsequent days + \type choice + \default Monday + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + \key SummerDesignDay + \key WinterDesignDay + \key CustomDay1 + \key CustomDay2 + A5, \field Use Weather File Daylight Saving Period + \note If yes or blank, use daylight saving period as specified on Weatherfile. + \note If no, do not use the daylight saving period as specified on the Weatherfile. + \type choice + \default Yes + \key Yes + \key No + A6; \field Use Weather File Rain and Snow Indicators + \type choice + \default Yes + \key Yes + \key No + +OS:SizingPeriod:WeatherFileDays, + \memo Use a weather file period for design sizing calculations. + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note user supplied name for reporting + \type alpha + \required-field + \reference DesignDays + \reference RunPeriodsAndDesignDays + N1, \field Begin Month + \type integer + \required-field + \minimum 1 + \maximum 12 + N2, \field Begin Day of Month + \type integer + \required-field + \minimum 1 + \maximum 31 + N3, \field End Month + \type integer + \required-field + \minimum 1 + \maximum 12 + N4, \field End Day of Month + \type integer + \required-field + \minimum 1 + \maximum 31 + A3, \field Day of Week for Start Day + \note =[|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|SummerDesignDay|WinterDesignDay| + \note |CustomDay1|CustomDay2]; + \note if you use SummerDesignDay or WinterDesignDay or the CustomDays then this will apply + \note to the whole period; other days (i.e., Monday) will signify a start day and + \note normal sequence ofsubsequent days + \type choice + \default Monday + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + \key SummerDesignDay + \key WinterDesignDay + \key CustomDay1 + \key CustomDay2 + A4, \field Use Weather File Daylight Saving Period + \note If yes or blank, use daylight saving period as specified on Weatherfile. + \note If no, do not use the daylight saving period as specified on the Weatherfile. + \type choice + \default Yes + \key Yes + \key No + A5; \field Use Weather File Rain and Snow Indicators + \type choice + \default Yes + \key Yes + \key No + +OS:WeatherFile, + \unique-object + \url-object + \min-fields 12 + \memo OS:WeatherFile object uniquely identifies a weather file for lookup in a database + A1, \field Handle + \type handle + \required-field + A2, \field City + \type alpha + \required-field + A3, \field State Province Region + \type alpha + \required-field + A4, \field Country + \type alpha + \required-field + A5, \field Data Source + \type alpha + \required-field + A6, \field WMO Number + \type alpha + \required-field + N1, \field Latitude + \note + is North, - is South, degree minutes represented in decimal (i.e. 30 minutes is .5) + \type real + \required-field + \units deg + \minimum -90 + \maximum 90 + N2, \field Longitude + \note - is West, + is East, degree minutes represented in decimal (i.e. 30 minutes is .5) + \type real + \required-field + \units deg + \minimum -180 + \maximum 180 + N3, \field Time Zone + \note Time relative to GMT. Decimal hours. + \note basic these limits on the WorldTimeZone Map (2003) + \type real + \required-field + \units hr + \minimum -12 + \maximum 14 + N4, \field Elevation + \type real + \units m + \minimum -300 + \maximum< 8900 + \default 0.0 + A7, \field Url + \retaincase + \type url + A8, \field Checksum + \type alpha + A9, \field Start Date Actual Year + \type integer + A10; \field Start Day of Week + \type choice + \key Sunday + \key Monday + \key Tuesday + \key Wednesday + \key Thursday + \key Friday + \key Saturday + +OS:WeatherProperty:SkyTemperature, + \memo This object is used to override internal sky temperature calculations. + \memo NOTE: not actually used in OpenStudio Model API + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note blank in this field will apply to all run periods (that is, all objects= + \note SizingPeriod:WeatherFileDays, SizingPeriod:WeatherFileConditionType or RunPeriod + \note otherwise, this name must match one of the environment object names. + \type object-list + \object-list RunPeriodsAndDesignDays + A3, \field Calculation Type + \note The field indicates that the sky temperature will be imported from external schedules or calculated by alternative methods other than default. + \type choice + \required-field + \key ClarkAllen + \key Brunt + \key Idso + \key BerdahlMartin + \key ScheduleValue + \key DifferenceScheduleDryBulbValue + \key DifferenceScheduleDewPointValue + A4, \field Schedule Name + \note if name matches a SizingPeriod:DesignDay, put in a day schedule of this name + \note if name is for a SizingPeriod:WeatherFileDays, SizingPeriod:WeatherFileConditionType or + \note RunPeriod, put in a full year schedule that covers the appropriate days. + \note Required if Calculation Type is ScheduleValue, DifferenceScheduleDryBulbValue or DifferenceScheduleDewPointValue. + \type object-list + \required-field + \object-list ScheduleAndDayScheduleNames + A5; \field Use Weather File Horizontal IR + \note If yes or blank, use Horizontal IR values from weather file when present, otherwise use the specified sky model. + \note If no, always use the specified sky model and ignore the horizontal IR values from the weather file. + \note For Calculation Type = ScheduleValue, DifferenceScheduleDryBulbValue or DifferenceScheduleDewPointValue, this field is ignored and the scheduled values are used. + \type choice + \required-field + \key Yes + \key No + +\group OpenStudio Resources + +OS:AdditionalProperties, + \min-fields 2 + \extensible:3 + A1, \field Handle + \type handle + \required-field + A2, \field Object Name + \type object-list + \required-field + \object-list AllObjects + A3, \field Feature Name + \type alpha + \begin-extensible + \required-field + A4, \field Feature Data Type + \type choice + \key String + \key Double + \key Boolean + \key Integer + \required-field + A5; \field Feature Value + \type alpha + \required-field + +OS:BuildingStory, + \min-fields 7 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference BuildingStoryNames + \reference SpaceAndSpaceGroupNames + N1, \field Nominal Z Coordinate + \type real + \units m + N2, \field Nominal Floor to Floor Height + \type real + \units m + \minimum> 0 + A3, \field Default Construction Set Name + \type object-list + \object-list DefaultConstructionSetNames + A4, \field Default Schedule Set Name + \type object-list + \object-list DefaultScheduleSetNames + A5, \field Group Rendering Name + \type object-list + \object-list GroupRenderingNames + N3; \field Nominal Floor to Ceiling Height + \type real + \units m + \minimum> 0 + +OS:BuildingUnit, + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \reference BuildingUnitNames + \required-field + A3, \field Rendering Color + \type object-list + \object-list GroupRenderingNames + A4; \field Building Unit Type + \type choice + \key Residential + \key NonResidential + \default Residential + +OS:DefaultConstructionSet, + \min-fields 12 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference DefaultConstructionSetNames + A3, \field Default Exterior Surface Constructions Name + \type object-list + \object-list DefaultSurfaceConstructionsNames + A4, \field Default Interior Surface Constructions Name + \type object-list + \object-list DefaultSurfaceConstructionsNames + A5, \field Default Ground Contact Surface Constructions Name + \type object-list + \object-list DefaultSurfaceConstructionsNames + A6, \field Default Exterior SubSurface Constructions Name + \type object-list + \object-list DefaultSubSurfaceConstructionsNames + A7, \field Default Interior SubSurface Constructions Name + \type object-list + \object-list DefaultSubSurfaceConstructionsNames + A8, \field Interior Partition Construction Name + \type object-list + \object-list ConstructionNames + A9, \field Space Shading Construction Name + \type object-list + \object-list ConstructionNames + A10, \field Building Shading Construction Name + \type object-list + \object-list ConstructionNames + A11, \field Site Shading Construction Name + \type object-list + \object-list ConstructionNames + A12; \field Adiabatic Surface Construction Name + \type object-list + \object-list ConstructionNames + +OS:DefaultScheduleSet, + \min-fields 12 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference DefaultScheduleSetNames + A3, \field Hours of Operation Schedule Name + \type object-list + \object-list ScheduleNames + A4, \field Number of People Schedule Name + \type object-list + \object-list ScheduleNames + A5, \field People Activity Level Schedule Name + \type object-list + \object-list ScheduleNames + A6, \field Lighting Schedule Name + \type object-list + \object-list ScheduleNames + A7, \field Electric Equipment Schedule Name + \type object-list + \object-list ScheduleNames + A8, \field Gas Equipment Schedule Name + \type object-list + \object-list ScheduleNames + A9, \field Hot Water Equipment Schedule Name + \type object-list + \object-list ScheduleNames + A10, \field Infiltration Schedule Name + \type object-list + \object-list ScheduleNames + A11, \field Steam Equipment Schedule Name + \type object-list + \object-list ScheduleNames + A12; \field Other Equipment Schedule Name + \type object-list + \object-list ScheduleNames + +OS:DefaultSubSurfaceConstructions, + \min-fields 10 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference DefaultSubSurfaceConstructionsNames + A3, \field Fixed Window Construction Name + \type object-list + \object-list ConstructionNames + A4, \field Operable Window Construction Name + \type object-list + \object-list ConstructionNames + A5, \field Door Construction Name + \type object-list + \object-list ConstructionNames + A6, \field Glass Door Construction Name + \type object-list + \object-list ConstructionNames + A7, \field Overhead Door Construction Name + \type object-list + \object-list ConstructionNames + A8, \field Skylight Construction Name + \type object-list + \object-list ConstructionNames + A9, \field Tubular Daylight Dome Construction Name + \type object-list + \object-list ConstructionNames + A10; \field Tubular Daylight Diffuser Construction Name + \type object-list + \object-list ConstructionNames + +OS:DefaultSurfaceConstructions, + \min-fields 5 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference DefaultSurfaceConstructionsNames + A3, \field Floor Construction Name + \type object-list + \object-list ConstructionNames + A4, \field Wall Construction Name + \type object-list + \object-list ConstructionNames + A5; \field Roof Ceiling Construction Name + \type object-list + \object-list ConstructionNames + +OS:Rendering:Color, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference AllRenderingNames + \reference SurfaceRenderingNames + \reference GroupRenderingNames + N1, \field Rendering Red Value + \type integer + \required-field + \minimum 0 + \maximum 255 + N2, \field Rendering Green Value + \type integer + \required-field + \minimum 0 + \maximum 255 + N3, \field Rendering Blue Value + \type integer + \required-field + \minimum 0 + \maximum 255 + N4; \field Rendering Alpha Value + \type integer + \minimum 0 + \maximum 255 + \default 255 + +OS:SpaceType, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference SpaceTypeNames + \reference SpaceAndSpaceTypeNames + \reference SpaceAndSpaceGroupNames + A3, \field Default Construction Set Name + \type object-list + \object-list DefaultConstructionSetNames + A4, \field Default Schedule Set Name + \type object-list + \object-list DefaultScheduleSetNames + A5, \field Group Rendering Name + \type object-list + \object-list GroupRenderingNames + A6, \field Design Specification Outdoor Air Object Name + \type object-list + \object-list DesignSpecificationOutdoorAirNames + A7, \field Standards Template + \type alpha + \note This is a freeform field used to identify the energy standard template for standards. + \note Standards applied to this model will use this field to determine correct levels for lighting, occupancy, etc. + \note More information can be found at https://github.com/NREL/openstudio-standards. + A8, \field Standards Building Type + \type alpha + \note This is a freeform field used to identify the building type for standards. + \note Standards applied to this model will use this field to determine correct levels for lighting, occupancy, etc. + \note More information can be found at https://github.com/NREL/openstudio-standards. + A9; \field Standards Space Type + \type alpha + \note This is a freeform field used to identify the space type for standards. + \note Standards applied to this model will use this field to determine correct levels for lighting, occupancy, etc. + \note More information can be found at https://github.com/NREL/openstudio-standards. + +OS:ModelObjectList, + \min-fields 1 + \extensible:1 Just duplicate last field and comments (changing numbering, please) + A1, \field Handle + \type Handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ModelObjectLists + A3; \field Model Object 1 + \begin-extensible + \type object-list + \object-list AllObjects + +\group OpenStudio Materials + +OS:Material, + \memo Regular materials described with full set of thermal properties + \min-fields 7 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference MaterialWithPropertyNames + A3, \field Roughness + \type choice + \required-field + \key VeryRough + \key Rough + \key MediumRough + \key MediumSmooth + \key Smooth + \key VerySmooth + N1, \field Thickness + \type real + \required-field + \units m + \ip-units in + \minimum> 0 + N2, \field Conductivity + \type real + \required-field + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + N3, \field Density + \type real + \required-field + \units kg/m3 + \minimum> 0 + N4, \field Specific Heat + \type real + \required-field + \units J/kg-K + \ip-units Btu/lb-R + \minimum 100 + N5, \field Thermal Absorptance + \type real + \minimum> 0 + \maximum 0.99999 + \default .9 + N6, \field Solar Absorptance + \type real + \minimum 0 + \maximum 1 + \default .7 + N7; \field Visible Absorptance + \type real + \minimum 0 + \maximum 1 + \default .7 + +OS:Material:AirGap, + \memo Air Space in Opaque Construction + \min-fields 3 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + N1; \field Thermal Resistance + \type real + \units m2-K/W + \minimum> 0 + +OS:Material:InfraredTransparent, + \memo Special infrared transparent material. Similar to a Material:Nomass with low thermal resistance. + \memo High absorptance in both wavelengths. + \memo Area will be doubled internally to make internal radiant exchange accurate. + \memo Should be only material in single layer surface construction. + \memo All thermal properties are set internally. User needs only to supply name. + \memo Cannot be used with ConductionFiniteDifference solution algorithms + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2; \field Name + \type alpha + \required-field + \reference MaterialNames + +OS:Material:NoMass, + \memo Regular materials properties described whose principal description is R (Thermal Resistance) + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference MaterialWithPropertyNames + A3, \field Roughness + \type choice + \required-field + \key VeryRough + \key Rough + \key MediumRough + \key MediumSmooth + \key Smooth + \key VerySmooth + N1, \field Thermal Resistance + \type real + \required-field + \units m2-K/W + \minimum 0.001 + N2, \field Thermal Absorptance + \type real + \minimum> 0 + \maximum 0.99999 + \default .9 + N3, \field Solar Absorptance + \type real + \minimum 0 + \maximum 1 + \default .7 + N4; \field Visible Absorptance + \type real + \minimum 0 + \maximum 1 + \default .7 + +OS:Material:RoofVegetation, + \memo EcoRoof model, plant layer plus soil layer + \memo Implemented by Portland State University + \memo (Sailor et al., January, 2007) + \memo only one material must be referenced per simulation though the same EcoRoof material could be + \memo used in multiple constructions. New moisture redistribution scheme (2010) requires higher + \memo number of timesteps per hour (minimum 12 recommended). + \min-fields 19 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + N1, \field Height of Plants + \note The ecoroof module is designed for short plants and shrubs. + \type real + \units m + \minimum> 0.005 + \maximum 1 + \default .2 + N2, \field Leaf Area Index + \note Entire surface is assumed covered, so decrease LAI accordingly. + \type real + \units dimensionless + \minimum> 0.001 + \maximum 5 + \default 1.0 + N3, \field Leaf Reflectivity + \note Leaf reflectivity (albedo) is typically 0.18-0.25 + \type real + \units dimensionless + \minimum 0.05 + \maximum 0.5 + \default 0.22 + N4, \field Leaf Emissivity + \type real + \minimum 0.8 + \maximum 1 + \default 0.95 + N5, \field Minimum Stomatal Resistance + \note This depends upon plant type + \type real + \units s/m + \minimum 50 + \maximum 300 + \default 180.0 + A3, \field Soil Layer Name + \type alpha + \default Green Roof Soil + A4, \field Roughness + \type choice + \default MediumRough + \key VeryRough + \key MediumRough + \key Rough + \key Smooth + \key MediumSmooth + \key VerySmooth + N6, \field Thickness + \note thickness of the soil layer of the EcoRoof + \note Soil depths of 0.15m (6in) and 0.30m (12in) are common. + \type real + \units m + \ip-units in + \minimum> 0.05 + \maximum 0.7 + \default 0.1 + N7, \field Conductivity of Dry Soil + \note Thermal conductivity of dry soil. + \note Typical ecoroof soils range from 0.3 to 0.5 + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum 0.2 + \maximum 1.5 + \default 0.35 + N8, \field Density of Dry Soil + \note Density of dry soil (the code modifies this as the soil becomes moist) + \note Typical ecoroof soils range from 400 to 1000 (dry to wet) + \type real + \units kg/m3 + \minimum 300 + \maximum 2000 + \default 1100.0 + N9, \field Specific Heat of Dry Soil + \note Specific heat of dry soil + \type real + \units J/kg-K + \ip-units Btu/lb-R + \minimum> 500 + \maximum 2000 + \default 1200.0 + N10, \field Thermal Absorptance + \note Soil emissivity is typically in range of 0.90 to 0.98 + \type real + \minimum> 0.8 + \maximum 1 + \default .9 + N11, \field Solar Absorptance + \note Solar absorptance of dry soil (1-albedo) is typically 0.60 to 0.85 + \note corresponding to a dry albedo of 0.15 to 0.40 + \type real + \minimum 0.4 + \maximum 0.9 + \default .70 + N12, \field Visible Absorptance + \type real + \minimum> 0.5 + \maximum 1 + \default .75 + N13, \field Saturation Volumetric Moisture Content of the Soil Layer + \note Maximum moisture content is typically less than 0.5 + \type real + \minimum> 0.1 + \maximum 0.5 + \default 0.3 + N14, \field Residual Volumetric Moisture Content of the Soil Layer + \type real + \minimum 0.01 + \maximum 0.1 + \default 0.01 + N15, \field Initial Volumetric Moisture Content of the Soil Layer + \type real + \minimum> 0.05 + \maximum 0.5 + \default 0.1 + A5; \field Moisture Diffusion Calculation Method + \note Advanced calculation requires increased number of timesteps (recommended >20). + \type choice + \default Advanced + \key Simple + \key Advanced + +OS:WindowMaterial:Blind, + \memo Window blind thermal properties + \min-fields 30 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference WindowShadesScreensAndBlinds + A3, \field Slat Orientation + \type choice + \default Horizontal + \key Horizontal + \key Vertical + N1, \field Slat Width + \type real + \default 0.025 + \units m + \ip-units in + \minimum> 0 + \maximum 1 + N2, \field Slat Separation + \note Distance between adjacent slat faces + \type real + \default 0.01875 + \units m + \ip-units in + \minimum> 0 + \maximum 1 + N3, \field Slat Thickness + \note Distance between top and bottom surfaces of slat + \note Slat is assumed to be rectangular in cross section and flat + \type real + \units m + \ip-units in + \minimum> 0 + \maximum 0.1 + \default 0.001 + N4, \field Slat Angle + \note If WindowProperty:ShadingControl for the window that incorporates this blind + \note has Type of Slat Angle Control for Blinds = FixedSlatAngle, + \note then this is the fixed value of the slat angle; + \note If WindowProperty:ShadingControl for the window that incorporates this blind + \note has Type of Slat Angle Control for Blinds = BlockBeamSolar, + \note then this is the slat angle when slat angle control + \note is not in effect (e.g., when there is no beam solar on the blind); + \note Not used if WindowProperty:ShadingControl for the window that incorporates this blind + \note has Type of Slat Angle Control for Blinds = ScheduledSlatAngle. + \type real + \units deg + \minimum 0 + \maximum 180 + \default 45 + N5, \field Slat Conductivity + \note default is for aluminum + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + \default 221.0 + N6, \field Slat Beam Solar Transmittance + \type real + \minimum 0 + \maximum< 1 + \default 0.0 + N7, \field Front Side Slat Beam Solar Reflectance + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N8, \field Back Side Slat Beam Solar Reflectance + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N9, \field Slat Diffuse Solar Transmittance + \note Must equal "Slat beam solar transmittance" + \type real + \minimum 0 + \maximum< 1 + \default 0.0 + N10, \field Front Side Slat Diffuse Solar Reflectance + \note Must equal "Front Side Slat Beam Solar Reflectance" + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N11, \field Back Side Slat Diffuse Solar Reflectance + \note Must equal "Back Side Slat Beam Solar Reflectance" + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N12, \field Slat Beam Visible Transmittance + \note Required for detailed daylighting calculation + \type real + \default 0.0 + \minimum 0 + \maximum< 1 + N13, \field Front Side Slat Beam Visible Reflectance + \note Required for detailed daylighting calculation + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N14, \field Back Side Slat Beam Visible Reflectance + \note Required for detailed daylighting calculation + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N15, \field Slat Diffuse Visible Transmittance + \note Used only for detailed daylighting calculation + \note Must equal "Slat Beam Visible Transmittance" + \type real + \minimum 0 + \maximum< 1 + \default 0.0 + N16, \field Front Side Slat Diffuse Visible Reflectance + \note Required for detailed daylighting calculation + \note Must equal "Front Side Slat Beam Visible Reflectance" + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N17, \field Back Side Slat Diffuse Visible Reflectance + \note Required for detailed daylighting calculation + \note Must equal "Back Side Slat Beam Visible Reflectance" + \type real + \default 0.5 + \minimum 0 + \maximum< 1 + N18, \field Slat Infrared Hemispherical Transmittance + \type real + \minimum 0 + \maximum< 1 + \default 0.0 + N19, \field Front Side Slat Infrared Hemispherical Emissivity + \type real + \minimum 0 + \maximum< 1 + \default 0.9 + N20, \field Back Side Slat Infrared Hemispherical Emissivity + \type real + \minimum 0 + \maximum< 1 + \default 0.9 + N21, \field Blind to Glass Distance + \type real + \units m + \ip-units in + \minimum 0.01 + \maximum 1 + \default 0.050 + N22, \field Blind Top Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.5 + N23, \field Blind Bottom Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.5 + N24, \field Blind Left Side Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.5 + N25, \field Blind Right Side Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.5 + N26, \field Minimum Slat Angle + \note Used only if WindowProperty:ShadingControl for the window that incorporates + \note this blind varies the slat angle (i.e., WindowProperty:ShadingControl with + \note Type of Slat Angle Control for Blinds = ScheduledSlatAngle + \note or BlockBeamSolar) + \type real + \units deg + \minimum 0 + \maximum 180 + \default 0 + N27; \field Maximum Slat Angle + \note Used only if WindowProperty:ShadingControl for the window that incorporates + \note this blind varies the slat angle (i.e., WindowProperty:ShadingControl with + \note Type of Slat Angle Control for Blinds = ScheduledSlatAngle + \note or BlockBeamSolar) + \type real + \units deg + \minimum 0 + \maximum 180 + \default 180 + +OS:WindowMaterial:DaylightRedirectionDevice, + \memo This object is not in EnergyPlus, this represents a film or louver which redirects daylighting. + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference WindowShadesScreensAndBlinds + A3; \field Daylight Redirection Device Type + \type choice + \default Louver + \key Louver + \key Film + +OS:WindowMaterial:Gas, + \memo Gas material properties that are used in Windows or Glass Doors + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + A3, \field Gas Type + \type choice + \required-field + \key Air + \key Argon + \key Krypton + \key Xenon + \key Custom + N1, \field Thickness + \type real + \required-field + \units m + \ip-units in + \minimum> 0 + N2, \field Conductivity Coefficient A + \note Used only if Gas Type = Custom + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + N3, \field Conductivity Coefficient B + \note Used only if Gas Type = Custom + \type real + \units W/m-K2 + \ip-units Btu-in/hr-ft2-R2 + N4, \field Conductivity Coefficient C + \note Used only if Gas Type = Custom + \type real + \units W/m-K3 + \ip-units Btu-in/hr-ft2-R3 + N5, \field Viscosity Coefficient A + \note Used only if Gas Type = Custom + \type real + \units g/m-s + \minimum> 0 + N6, \field Viscosity Coefficient B + \note Used only if Gas Type = Custom + \type real + \units g/m-s-K + N7, \field Viscosity Coefficient C + \note Used only if Gas Type = Custom + \type real + \units g/m-s-K2 + N8, \field Specific Heat Coefficient A + \note Used only if Gas Type = Custom + \type real + \units J/kg-K + \ip-units Btu/lb-R + \minimum> 0 + N9, \field Specific Heat Coefficient B + \note Used only if Gas Type = Custom + \type real + \units J/kg-K2 + \ip-units Btu/lb-R2 + N10, \field Specific Heat Coefficient C + \note Used only if Gas Type = Custom + \type real + \units J/kg-K3 + \ip-units Btu/lb-R3 + N11, \field Molecular Weight + \note Used only if Gas Type = Custom + \type real + \minimum 20 + \maximum 200 + N12; \field Specific Heat Ratio + \type real + \note Used only if Gas Type = Custom + \minimum >1.0 + +OS:WindowMaterial:GasMixture, + \memo Gas mixtures that are used in Windows or Glass Doors + \min-fields 8 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + N1, \field Thickness + \type real + \required-field + \units m + \minimum> 0 + N2, \field Number of Gases in Mixture + \type integer + \required-field + \minimum 1 + \maximum 4 + A3, \field Gas 1 Type + \type choice + \required-field + \key Air + \key Argon + \key Krypton + \key Xenon + N3, \field Gas 1 Fraction + \type real + \required-field + \minimum> 0 + \maximum 1 + A4, \field Gas 2 Type + \type choice + \required-field + \key Air + \key Argon + \key Krypton + \key Xenon + N4, \field Gas 2 Fraction + \type real + \required-field + \minimum> 0 + \maximum 1 + A5, \field Gas 3 Type + \type choice + \key Air + \key Argon + \key Krypton + \key Xenon + N5, \field Gas 3 Fraction + \type real + \minimum> 0 + \maximum 1 + A6, \field Gas 4 Type + \type choice + \key Air + \key Argon + \key Krypton + \key Xenon + N6; \field Gas 4 Fraction + \type real + \minimum> 0 + \maximum 1 + +OS:WindowMaterial:Glazing, + \memo Glass material properties for Windows or Glass Doors + \memo Transmittance/Reflectance input method. + \min-fields 15 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference GlazingMaterialNames + A3, \field Optical Data Type + \type choice + \required-field + \key SpectralAverage + \key Spectral + A4, \field Window Glass Spectral Data Set Name + \note Used only when Optical Data Type = Spectral + \type object-list + \object-list SpectralDataSets + N1, \field Thickness + \type real + \required-field + \units m + \ip-units in + \minimum> 0 + N2, \field Solar Transmittance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \type real + \minimum 0 + \maximum 1 + N3, \field Front Side Solar Reflectance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \note Front Side is side closest to outdoor air + \type real + \minimum 0 + \maximum 1 + N4, \field Back Side Solar Reflectance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \note Back Side is side closest to zone air + \type real + \minimum 0 + \maximum 1 + N5, \field Visible Transmittance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \type real + \minimum 0 + \maximum 1 + N6, \field Front Side Visible Reflectance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \type real + \minimum 0 + \maximum 1 + N7, \field Back Side Visible Reflectance at Normal Incidence + \note Used only when Optical Data Type = SpectralAverage + \type real + \minimum 0 + \maximum 1 + N8, \field Infrared Transmittance at Normal Incidence + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N9, \field Front Side Infrared Hemispherical Emissivity + \type real + \minimum> 0 + \maximum< 1 + \default 0.84 + N10, \field Back Side Infrared Hemispherical Emissivity + \type real + \minimum> 0 + \maximum< 1 + \default 0.84 + N11, \field Conductivity + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + \default 0.9 + N12, \field Dirt Correction Factor for Solar and Visible Transmittance + \type real + \minimum> 0 + \maximum 1 + \default 1.0 + A5; \field Solar Diffusing + \type choice + \default No + \key No + \key Yes + +OS:WindowMaterial:GlazingGroup:Thermochromic, + \memo thermochromic glass at different temperatures + \extensible:2 + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference GlazingMaterialNames + N1, \field Optical Data Temperature + \type real + \required-field + \begin-extensible + \units C + \ip-units F + A3; \field Window Material Glazing Name + \type object-list + \required-field + \object-list GlazingMaterialNames + +OS:WindowMaterial:Glazing:RefractionExtinctionMethod, + \memo Glass material properties for Windows or Glass Doors + \memo Index of Refraction/Extinction Coefficient input method + \memo Not to be used for coated glass + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference GlazingMaterialNames + N1, \field Thickness + \type real + \required-field + \units m + \ip-units in + \minimum> 0 + N2, \field Solar Index of Refraction + \type real + \required-field + \minimum> 1 + N3, \field Solar Extinction Coefficient + \type real + \required-field + \units 1/m + \minimum> 0 + N4, \field Visible Index of Refraction + \type real + \required-field + \minimum> 1 + N5, \field Visible Extinction Coefficient + \type real + \required-field + \units 1/m + \minimum> 0 + N6, \field Infrared Transmittance at Normal Incidence + \type real + \minimum 0 + \maximum< 1 + \default 0.0 + N7, \field Infrared Hemispherical Emissivity + \note Emissivity of front and back side assumed equal + \type real + \minimum> 0 + \maximum< 1 + \default 0.84 + N8, \field Conductivity + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + \default 0.9 + N9, \field Dirt Correction Factor for Solar and Visible Transmittance + \type real + \minimum> 0 + \maximum 1 + \default 1.0 + A3; \field Solar Diffusing + \type choice + \default No + \key No + \key Yes + +OS:WindowMaterial:Screen, + \memo Window screen physical properties. Can only be located on the exterior side of a window construction. + \min-fields 10 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \note Enter a unique name for this window screen material. + \type alpha + \required-field + \reference MaterialNames + \reference WindowShadesScreensAndBlinds + A3, \field Reflected Beam Transmittance Accounting Method + \note Select the method used to account for the beam solar reflected off the material surface. + \type choice + \default ModelAsDiffuse + \key DoNotModel + \key ModelAsDirectBeam + \key ModelAsDiffuse + N1, \field Diffuse Solar Reflectance + \note Diffuse reflectance of the screen material over the entire solar radiation spectrum. + \note Assumed to be the same for both sides of the screen. + \type real + \default 0.08 + \units dimensionless + \minimum 0 + \maximum< 1 + N2, \field Diffuse Visible Reflectance + \note Diffuse visible reflectance of the screen material averaged over the solar spectrum + \note and weighted by the response of the human eye. + \note Assumed to be the same for both sides of the screen. + \type real + \default 0.08 + \units dimensionless + \minimum 0 + \maximum< 1 + N3, \field Thermal Hemispherical Emissivity + \note Long-wave emissivity of the screen material. + \note Assumed to be the same for both sides of the screen. + \type real + \units dimensionless + \minimum> 0 + \maximum< 1 + \default 0.9 + N4, \field Conductivity + \note Thermal conductivity of the screen material. + \note Default is for aluminum. + \type real + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + \default 221.0 + N5, \field Screen Material Spacing + \note Spacing assumed to be the same in both directions. + \type real + \default 0.00157 + \units m + \ip-units in + \minimum> 0 + N6, \field Screen Material Diameter + \note Diameter assumed to be the same in both directions. + \type real + \default 0.000381 + \units m + \ip-units in + \minimum> 0 + N7, \field Screen to Glass Distance + \note Distance from the window screen to the adjacent glass surface. + \type real + \units m + \ip-units in + \minimum 0.001 + \maximum 1 + \default 0.025 + N8, \field Top Opening Multiplier + \note Effective area for air flow at the top of the screen divided by the perpendicular + \note area between the glass and the top of the screen. + \type real + \units dimensionless + \minimum 0 + \maximum 1 + \default 0.0 + N9, \field Bottom Opening Multiplier + \note Effective area for air flow at the bottom of the screen divided by the perpendicular + \note area between the glass and the bottom of the screen. + \type real + \units dimensionless + \minimum 0 + \maximum 1 + \default 0.0 + N10, \field Left Side Opening Multiplier + \note Effective area for air flow at the left side of the screen divided by the perpendicular + \note area between the glass and the left side of the screen. + \type real + \units dimensionless + \minimum 0 + \maximum 1 + \default 0.0 + N11, \field Right Side Opening Multiplier + \note Effective area for air flow at the right side of the screen divided by the perpendicular + \note area between the glass and the right side of the screen. + \type real + \units dimensionless + \minimum 0 + \maximum 1 + \default 0.0 + N12; \field Angle of Resolution for Screen Transmittance Output Map + \note Select the resolution of azimuth and altitude angles for the screen transmittance map. + \note A value of 0 means no transmittance map will be generated. + \note Valid values for this field are 0, 1, 2, 3 and 5. + \type choice + \units deg + \default 0 + \key 0 + \key 1 + \key 2 + \key 3 + \key 5 + +OS:WindowMaterial:Shade, + \memo Window shade thermal properties + \min-fields 16 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference WindowShadesScreensAndBlinds + N1, \field Solar Transmittance + \note Assumed independent of incidence angle + \type real + \default 0.4 + \units dimensionless + \minimum 0 + \maximum< 1 + N2, \field Solar Reflectance + \note Assumed same for both sides + \note Assumed independent of incidence angle + \type real + \default 0.5 + \units dimensionless + \minimum 0 + \maximum< 1 + N3, \field Visible Transmittance + \note Assumed independent of incidence angle + \type real + \default 0.4 + \units dimensionless + \minimum 0 + \maximum< 1 + N4, \field Visible Reflectance + \note Assumed same for both sides + \note Assumed independent of incidence angle + \type real + \default 0.5 + \units dimensionless + \minimum 0 + \maximum< 1 + N5, \field Thermal Hemispherical Emissivity + \type real + \default 0.9 + \units dimensionless + \minimum> 0 + \maximum< 1 + N6, \field Thermal Transmittance + \type real + \default 0.0 + \units dimensionless + \minimum 0 + \maximum< 1 + N7, \field Thickness + \type real + \default 0.005 + \units m + \ip-units in + \minimum> 0 + N8, \field Conductivity + \type real + \default 0.1 + \units W/m-K + \ip-units Btu-in/hr-ft2-R + \minimum> 0 + N9, \field Shade to Glass Distance + \type real + \units m + \ip-units in + \minimum 0.001 + \maximum 1 + \default 0.050 + N10, \field Top Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N11, \field Bottom Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N12, \field Left-Side Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N13, \field Right-Side Opening Multiplier + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N14; \field Airflow Permeability + \type real + \units dimensionless + \minimum 0 + \maximum 0.8 + \default 0.0 + +OS:WindowMaterial:SimpleGlazingSystem, + \memo Alternate method of describing windows + \memo This window material object is used to define an entire glazing system + \memo using simple performance parameters. + \min-fields 4 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference MaterialNames + \reference GlazingMaterialNames + N1, \field U-Factor + \note Enter U-Factor including film coefficients + \type real + \required-field + \units W/m2-K + \minimum> 0 + N2, \field Solar Heat Gain Coefficient + \note SHGC at Normal Incidence + \type real + \required-field + \minimum> 0 + \maximum< 1 + N3; \field Visible Transmittance + \note VT at Normal Incidence + \note optional + \type real + \minimum> 0 + \maximum< 1 + +OS:StandardsInformation:Material, + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2, \field Material Name + \type object-list + \required-field + \object-list MaterialNames + A3, \field Material Standard + \note This is a freeform field used to identify the standard which specifies this material. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A4, \field Material Standard Source + \note This is a freeform field used to identify the table or section in the standard which specifies this material. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A5, \field Standards Category + \note This is a freeform field used to identify the category of this material, e.g. 'Plastering Materials' 'Composite', or 'Roofing'. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A6, \field Standards Identifier + \note This is a freeform field used to identify the id of this material within a standard. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A7, \field Composite Framing Material + \note This is a freeform field used to identify the framing material for a composite layer. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A8, \field Composite Framing Configuration + \note This is a freeform field used to identify the framing configuration for a composite layer. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A9, \field Composite Framing Depth + \note This is a freeform field used to identify the framing depth for a composite layer. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A10, \field Composite Framing Size + \note This is a freeform field used to identify the framing size for a composite layer. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + A11; \field Composite Cavity Insulation + \note This is a freeform field used to identify the cavity insulation for a composite layer. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + +OS:MaterialProperty:GlazingSpectralData, + \memo Name is followed by up to 800 sets of normal-incidence measured values of + \memo [wavelength, transmittance, front reflectance, back reflectance] for wavelengths + \memo covering the solar spectrum (from about 0.25 to 2.5 microns) + \format Spectral + \extensible:4 + \min-fields 1 + \max-fields 3201 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \reference SpectralDataSets + N1, \field Wavelength + \begin-extensible + \type real + \units micron + N2, \field Transmittance + N3, \field Front Reflectance + N4; \field Back Reflectance + +OS:MaterialProperty:MoisturePenetrationDepth:Settings, + \memo Additional properties for moisture using EMPD procedure + \memo HeatBalanceAlgorithm choice=MoisturePenetrationDepthConductionTransferFunction only + \memo Has no effect with other HeatBalanceAlgorithm solution algorithms + \min-fields 11 + A1, \field Handle + \type handle + \required-field + A2, \field Material Name + \required-field + \type object-list + \object-list MaterialWithPropertyNames + \note Material Name that the moisture properties will be added to. + \note Additional material properties required to perform the EMPD model. + \note Effective Mean Penetration Depth (EMPD) + N1, \field Water Vapor Diffusion Resistance Factor + \required-field + \units dimensionless + \minimum 0.0 + \type real + \note Ratio of water vapor permeability of stagnant air to water vapor + \note permeability of material + N2, \field Moisture Equation Coefficient a + \required-field + \units dimensionless + \type real + N3, \field Moisture Equation Coefficient b + \required-field + \units dimensionless + \type real + N4, \field Moisture Equation Coefficient c + \required-field + \units dimensionless + \type real + N5, \field Moisture Equation Coefficient d + \required-field + \units dimensionless + \type real + N6, \field Surface Layer Penetration Depth + \units m + \ip-units in + \type real + \minimum> 0 + \autocalculatable + \default autocalculate + N7, \field Deep Layer Penetration Depth + \units m + \ip-units in + \type real + \minimum 0 + \autocalculatable + \default autocalculate + N8, \field Coating Layer Thickness + \required-field + \type real + \units m + \ip-units in + \minimum 0 + N9; \field Coating Layer Water Vapor Diffusion Resistance Factor + \required-field + \type real + \units dimensionless + \minimum 0 + \note The coating's resistance to water vapor diffusion relative to the + \note resistance to water vapor diffusion in stagnant air + \note (see Water Vapor Diffusion Resistance Factor above). + +OS:MaterialProperty:PhaseChange, + \memo Additional properties for temperature dependent thermal conductivity + \memo and enthalpy for Phase Change Materials (PCM) + \memo HeatBalanceAlgorithm = CondFD(ConductionFiniteDifference) solution algorithm only. + \memo Constructions with this should use the detailed CondFD process. + \memo Has no effect with other HeatBalanceAlgorithm solution algorithms + \extensible:2 + \max-fields 35 + A1, \field Handle + \type handle + \required-field + A2, \field Material Name + \required-field + \type object-list + \object-list MaterialWithPropertyNames + \note Regular Material Name to which the additional properties will be added. + \note this the material name for the basic material properties. + N1, \field Temperature Coefficient for Thermal Conductivity + \note The base temperature is 20C. + \note This is the thermal conductivity change per degree excursion from 20C. + \note This variable conductivity function is overridden by the VariableThermalConductivity object, if present. + \units W/m-K2 + \type real + \default 0.0 + N2, \field Temperature + \required-field + \note for Temperature-enthalpy function + \units C + \type real + \begin-extensible + N3; \field Enthalpy + \required-field + \note for Temperature-enthalpy function corresponding to temperature 1 + \units J/kg + +OS:MaterialProperty:PhaseChangeHysteresis, + \memo Additional properties for temperature dependent thermal conductivity + \memo and enthalpy for Phase Change Materials (PCM) with separate melting and freezing curves. + \memo HeatBalanceAlgorithm = CondFD (ConductionFiniteDifference) solution algorithm only. + \memo Constructions with this should use the detailed CondFD process. + \memo Has no effect with other HeatBalanceAlgorithm solution algorithms. + A1, \field Handle + \type handle + \required-field + A2, \field Material Name + \required-field + \type object-list + \object-list MaterialWithPropertyNames + \note Regular Material Name to which the additional properties will be added. + \note this the material name for the basic material properties. + N1, \field Latent Heat during the Entire Phase Change Process + \note The total latent heat absorbed or rejected during the transition from solid to liquid, or back + \required-field + \units J/kg + \type real + \minimum> 0 + N2, \field Liquid State Thermal Conductivity + \note The thermal conductivity used by this material when the material is fully liquid + \required-field + \units W/m-K + \type real + \minimum> 0 + N3, \field Liquid State Density + \note The density used by this material when the material is fully liquid + \required-field + \units kg/m3 + \type real + \minimum> 0 + N4, \field Liquid State Specific Heat + \note The constant specific heat used for the fully melted (liquid) state + \required-field + \units J/kg-K + \type real + \minimum> 0 + N5, \field High Temperature Difference of Melting Curve + \note The total melting range of the material is the sum of low and high temperature difference of melting curve. + \required-field + \units deltaC + \type real + \minimum> 0 + N6, \field Peak Melting Temperature + \note The temperature at which the melting curve peaks + \required-field + \units C + \type real + \minimum> 0 + N7, \field Low Temperature Difference of Melting Curve + \note The total melting range of the material is the sum of low and high temperature difference of melting curve. + \required-field + \units deltaC + \type real + \minimum> 0 + N8, \field Solid State Thermal Conductivity + \note The thermal conductivity used by this material when the material is fully solid + \required-field + \units W/m-K + \type real + \minimum> 0 + N9, \field Solid State Density + \note The density used by this material when the material is fully solid + \required-field + \units kg/m3 + \type real + \minimum> 0 + N10, \field Solid State Specific Heat + \note The constant specific heat used for the fully frozen (crystallized) state + \required-field + \units J/kg-K + \type real + \minimum> 0 + N11, \field High Temperature Difference of Freezing Curve + \note The total freezing range of the material is the sum of low and high temperature difference of freezing curve. + \required-field + \units deltaC + \type real + \minimum> 0 + N12, \field Peak Freezing Temperature + \note The temperature at which the freezing curve peaks + \required-field + \units C + \type real + \minimum> 0 + N13; \field Low Temperature Difference of Freezing Curve + \note The total freezing range of the material is the sum of low and high temperature difference of freezing curve. + \required-field + \units deltaC + \type real + \minimum> 0 + +\group OpenStudio Constructions + +OS:Construction, + \memo Start with outside layer and work your way to the inside layer + \memo Up to 10 layers total, 8 for windows + \memo Enter the material name for each layer + \extensible:1 + \min-fields 4 + \max-fields 13 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ConstructionNames + A3, \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + A4; \field Layer + \type object-list + \required-field + \begin-extensible + \object-list MaterialNames + +OS:Construction:CfactorUndergroundWall, + \memo Alternate method of describing underground wall constructions + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ConstructionNames + N1, \field C-Factor + \note Enter C-Factor without film coefficients or soil + \type real + \required-field + \units W/m2-K + \minimum> 0 + N2, \field Height + \note Enter height of the underground wall + \type real + \required-field + \units m + \minimum> 0 + A3; \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + +OS:Construction:FfactorGroundFloor, + \memo Alternate method of describing slab-on-grade or underground floor constructions + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ConstructionNames + N1, \field F-Factor + \type real + \required-field + \units W/m-K + \ip-units Btu/h-ft-F + \minimum> 0 + N2, \field Area + \note Enter area of the floor + \type real + \required-field + \units m2 + \minimum> 0 + N3, \field PerimeterExposed + \note Enter exposed perimeter of the floor + \type real + \required-field + \units m + \minimum 0 + A3; \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + +OS:Construction:InternalSource, + \memo Start with outside layer and work your way to the inside Layer + \memo Up to 10 layers total + \memo Enter the material name for each layer + \extensible:1 + \min-fields 9 + \max-fields 18 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ConstructionNames + N1, \field Source Present After Layer Number + \note refers to the list of materials which follows + \type integer + \default 1 + \minimum 1 + \maximum 10 + N2, \field Temperature Calculation Requested After Layer Number + \note refers to the list of materials which follows + \type integer + \default 1 + \minimum 1 + \maximum 10 + N3, \field Dimensions for the CTF Calculation + \note 1 = 1-dimensional calculation, 2 = 2-dimensional calculation + \type integer + \default 1 + \minimum 1 + \maximum 2 + N4, \field Tube Spacing + \note uniform spacing between tubes or resistance wires in direction + \note perpendicular to main intended direction of heat transfer + \type real + \default 0.154 + \units m + \minimum 0.01 + \maximum 1.0 + N5 , \field Two-Dimensional Temperature Calculation Position + \minimum 0.0 + \maximum 1.0 + \default 0.0 + \units dimensionless + \note used in conjunction with field Temperature Calculation Requested After Layer Number + \note this field is the location perpendicular to the main direction of heat transfer + \note 0.0 means in line with the tubing, 1.0 means at the midpoint between two adjacent pipes + \note this field is ignored for 1-D calculations + A3, \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + A4; \field Layer + \type object-list + \required-field + \begin-extensible + \object-list MaterialNames + +OS:Construction:AirBoundary, + \memo Indicates an open boundary between two zones. It may be used for base surfaces and fenestration surfaces. + \memo When this construction type is used, the Outside Boundary Condition of the surface + \memo (or the base surface of a fenestration surface) must be either Surface or Zone. + \memo A base surface with OS:Construction:AirBoundary cannot hold any fenestration surfaces. + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \type alpha + \reference ConstructionNames + A3, \field Air Exchange Method + \note This field controls how air exchange is modeled across this boundary. + \type choice + \key None + \key SimpleMixing + \default None + N1, \field Simple Mixing Air Changes per Hour + \note If the Air Exchange Method is SimpleMixing then this field specifies the air changes per hour + \note using the volume of the smaller zone as the basis. + \note If an AirflowNetwork simulation is active this field is ignored. + \units 1/hr + \type real + \minimum 0 + \default 0.5 + A4, \field Simple Mixing Schedule Name + \note If the Air Exchange Method is SimpleMixing then this field specifies the air exchange schedule. + \note If this field is blank, the schedule is always 1.0. + \note If an AirflowNetwork simulation is active this field is ignored. + \type object-list + \object-list ScheduleNames + A5; \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + +OS:Construction:WindowDataFile, + \memo Initiates search of the Window5 data file for a window called Name. + \url-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ConstructionNames + A3, \field Url + \retaincase + \retaincase + \type url + A4; \field Surface Rendering Name + \type object-list + \object-list SurfaceRenderingNames + +OS:StandardsInformation:Construction, + \min-fields 2 + A1, \field Handle + \type handle + \required-field + A2, \field Construction Name + \type object-list + \required-field + \object-list ConstructionNames + A3, \field Intended Surface Type + \type choice + \key AtticFloor + \key AtticWall + \key AtticRoof + \key DemisingFloor + \key DemisingWall + \key DemisingRoof + \key ExteriorFloor + \key ExteriorWall + \key ExteriorRoof + \key ExteriorWindow + \key ExteriorDoor + \key GlassDoor + \key GroundContactFloor + \key GroundContactWall + \key GroundContactRoof + \key InteriorFloor + \key InteriorWall + \key InteriorCeiling + \key InteriorPartition + \key InteriorWindow + \key InteriorDoor + \key OverheadDoor + \key Skylight + \key TubularDaylightDome + \key TubularDaylightDiffuser + A4, \field Standards Construction Type + \note This is a freeform field used to identify the construction type for standards. + \note Standards applied to this model will use this field to determine correct constructions. + \note More information can be found at https://github.com/NREL/openstudio-standards. + \type alpha + N1, \field Perturbable Layer + \note If the construction is layered, this is the index (starting at 0) + \note of the layer whose thickness can be adjusted to meet a u-factor + \note requirement. + \type integer + A5, \field Perturbable Layer Type + \type choice + \default Not Applicable + \key Not Applicable + \key Insulation + \key Other + A6, \field Other Perturbable Layer Type + \type alpha + A7, \field Construction Standard + \note This is a freeform field used to identify the standard which specifies this construction. + \type alpha + A8, \field Construction Standard Source + \note This is a freeform field used to identify the table or section of the standard which specifies this construction. + \type alpha + A9, \field Fenestration Type + \note Specific type of fenestration that this construction represents. + \type choice + \key Fixed Window + \key Operable Window + \key Curtain Wall + \key Glazed Door + \key Glass Skylight with Curb + \key Plastic Skylight with Curb + \key Glass Skylight without Curb + \key Plastic Skylight without Curb + \key Swinging Door + \key Non-Swinging Door + A10,\field Fenestration Assembly Context + \note Where is this fenestration assembled. + \type choice + \key Manufactured + \key Field Fabricated + \key Site Built + A11,\field Fenestration Number of Panes + \note Number of panes for this fenestration construction. + \note BCL taxonomy term 'Construction Assembly.Fenestration.Window.Number of Panes' + \type choice + \key Single Pane + \key Double Pane + \key Triple Pane + \key Quadruple Pane + \key Glass Block + A12,\field Fenestration Frame Type + \note Type of framing for this fenestration construction. + \type choice + \key Metal Framing + \key Metal Framing with Thermal Break + \key Non-Metal Framing + A13,\field Fenestration Divider Type + \note Type of divider for this fenestration construction. + \type choice + \key True Divided Lite + \key Between Panes < 7/16" + \key Between Panes >= 7/16" + A14,\field Fenestration Tint + \note Tint of this fenestration construction. + \note BCL taxonomy term 'Construction Assembly.Fenestration.Window.Tint' + \type choice + \key Clear + \key Bronze + \key Grey + \key Green + \key Blue + \key Tinted + A15,\field Fenestration Gas Fill + \note Type of gas used between panes of this fenestration construction. + \note BCL taxonomy term 'Construction Assembly.Fenestration.Window.Gas Fill' + \type choice + \key Air + \key Argon + \key Krypton + A16;\field Fenestration Low Emissivity Coating + \note Does this fenestration construction include a low-e coating. + \type choice + \key True + \key False + +\group OpenStudio Space Load Definitions + +OS:InternalMass:Definition, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference InternalMassDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Construction Name + \note Leave blank to match with default construction + \type object-list + \object-list ConstructionNames + A4, \field Design Level Calculation Method + \note Choices: SurfaceArea => Surface Area -- simply enter surface area + \note SurfaceArea/Area => Surface Area per Space Floor Area -- enter the number to apply. Value * Floor Area = Surface Area + \note SurfaceArea/Person => Surface Area per Person -- enter the number to apply. Value * Occupants = Surface Area + \type choice + \required-field + \key SurfaceArea + \key SurfaceArea/Area + \key SurfaceArea/Person + N1, \field Surface Area + \type real + \units m2 + \ip-units ft2 + \minimum 0 + N2, \field Surface Area per Space Floor Area + \type real + \units dimensionless + \ip-units dimensionless + \minimum 0 + N3; \field Surface Area per Person + \type real + \units m2/person + \ip-units ft2/person + \minimum 0 + +OS:People:Definition, + \extensible:1 + \min-fields 1 + \max-fields 16 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference PeopleDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Number of People Calculation Method + \note The entered calculation method is used to create the maximum number of people + \note for this set of attributes (i.e. sensible fraction, schedule, etc) + \note Choices: People -- simply enter number of occupants. + \note People per Space Floor Area -- enter the number to apply. Value * Floor Area = Number of people + \note Space Floor Area per Person -- enter the number to apply. Floor Area / Value = Number of people + \type choice + \required-field + \key People + \key People/Area + \key Area/Person + N1, \field Number of People + \type real + \units people + \minimum 0 + N2, \field People per Space Floor Area + \type real + \units person/m2 + \minimum 0 + N3, \field Space Floor Area per Person + \type real + \units m2/person + \minimum 0 + N4, \field Fraction Radiant + \type real + \required-field + \minimum 0 + \maximum 1 + N5, \field Sensible Heat Fraction + \note if input, overrides program calculated sensible/latent split + \type real + \autocalculatable + \minimum 0 + \maximum 1 + \default autocalculate + N6, \field Carbon Dioxide Generation Rate + \note CO2 generation rate per unit of activity level. + \note The default value is obtained from ASHRAE Std 62.1 at 0.0084 cfm/met/person over + \note the general adult population. + \type real + \units m3/s-W + \minimum 0 + \maximum 3.82e-07 + \default 3.82E-8 + A4, \field Enable ASHRAE 55 Comfort Warnings + \type choice + \default No + \key Yes + \key No + A5, \field Mean Radiant Temperature Calculation Type + \note optional (only required for thermal comfort runs) + \type choice + \default EnclosureAveraged + \key EnclosureAveraged + \key SurfaceWeighted + \key AngleFactor + A6; \field Thermal Comfort Model Type + \note optional (only needed for people thermal comfort results reporting) + \type choice + \begin-extensible + \key Fanger + \key Pierce + \key KSU + \key AdaptiveASH55 + \key AdaptiveCEN15251 + \key CoolingEffectASH55 + \key AnkleDraftASH55 + +OS:Lights:Definition, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference LightsDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of lights + \note for this set of attributes + \note Choices: LightingLevel => Lighting Level -- simply enter watts of lights + \note Watts/Area => Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Lights + \note Watts/Person => Watts per Person -- enter the number to apply. Value * Occupants = Lights + \type choice + \required-field + \key LightingLevel + \key Watts/Area + \key Watts/Person + N1, \field Lighting Level + \type real + \units W + \ip-units W + \minimum 0 + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \ip-units W/ft2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/person + \ip-units W/person + \minimum 0 + N4, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Visible + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6, \field Return Air Fraction + \note Used only for sizing calculation if return-air-fraction + \note coefficients are specified. + \type real + \minimum 0 + \maximum 1 + \default 0.0 + A4, \field Return Air Fraction Calculated from Plenum Temperature + \type choice + \default No + \key Yes + \key No + N7, \field Return Air Fraction Function of Plenum Temperature Coefficient 1 + \note Used only if Return Air Fraction Is Calculated from Plenum Temperature = Yes + \note Equation is Return Air Fraction = Coefficient#1 - Coefficient#2 X PlenumTemp(degC) + \type real + \minimum 0 + \default 0.0 + N8; \field Return Air Fraction Function of Plenum Temperature Coefficient 2 + \note Used only if Return Air Fraction Is Calculated from Plenum Temperature = Yes + \note Equation is Return Air Fraction = Coefficient#1 - Coefficient#2 X PlenumTemp(degC) + \type real + \units 1/K + \minimum 0 + \default 0.0 + +OS:Luminaire:Definition, + \url-object + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference LuminaireDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field IES File Path + \retaincase + \retaincase + \type url + N1, \field Lighting Power + \type real + \units W + \ip-units W + \minimum 0 + \default 0 + N2, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0 + N3, \field Fraction Visible + \type real + \minimum 0 + \maximum 1 + \default 0 + N4, \field Return Air Fraction + \note Used only for sizing calculation if return-air-fraction + \note coefficients are specified. + \type real + \minimum 0 + \maximum 1 + \default 0 + A4, \field Return Air Fraction Calculated from Plenum Temperature + \type choice + \default No + \key Yes + \key No + N5, \field Return Air Fraction Function of Plenum Temperature Coefficient 1 + \note Used only if Return Air Fraction Is Calculated from Plenum Temperature = Yes + \note Equation is Return Air Fraction = Coefficient#1 - Coefficient#2 X PlenumTemp(degC) + \type real + \minimum 0 + \default 0.0 + N6; \field Return Air Fraction Function of Plenum Temperature Coefficient 2 + \note Used only if Return Air Fraction Is Calculated from Plenum Temperature = Yes + \note Equation is Return Air Fraction = Coefficient#1 - Coefficient#2 X PlenumTemp(degC) + \type real + \units 1/K + \minimum 0 + \default 0.0 + +OS:ElectricEquipment:Definition, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ElectricEquipmentDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of electric equipment + \note for this set of attributes + \note Choices: EquipmentLevel => Equipment Level -- simply enter watts of equipment + \note Watts/Area => Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Equipment Level + \note Watts/Person => Watts per Person -- enter the number to apply. Value * Occupants = Equipment Level + \type choice + \required-field + \key EquipmentLevel + \key Watts/Area + \key Watts/Person + N1, \field Design Level + \type real + \units W + \ip-units W + \minimum 0 + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \ip-units W/ft2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/person + \ip-units W/person + \minimum 0 + N4, \field Fraction Latent + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6; \field Fraction Lost + \type real + \minimum 0 + \maximum 1 + \default 0.0 + +OS:ElectricEquipment:ITE:AirCooled:Definition, + \memo This object describes air-cooled electric information technology equipment (ITE) which has + \memo variable power consumption as a function of loading and temperature. + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2 , \field Name + \required-field + \type alpha + \reference ElectricEquipmentITEAirCooledDefinitionNames + \reference SpaceComponentDefinitionNames + A3 , \field Air Flow Calculation Method + \note The specified method is used to calculate the IT inlet temperature and zone return + \note air temperature. If FlowFromSystem is chosen, the zone is assumed to be well-mixed. + \note If FlowControlWithApproachTemperatures is chosen, Supply and Return approach temperature + \note should be defined to indicate the temperature difference due to the air distribution. When + \note FlowControlWithApproachTemperatures is chosen, the inputs of Air Inlet Connection Type, Design Recirculation Fraction + \note and Recirculation Function of Loading and Supply Temperature Curve Name are ignored. For multiple + \note ITE objects defined for one zone, the same calculation method should apply. + \note The FlowControlWithApproachTemperatures only applies to ITE zones with single duct VAV terminal unit. + \note Other return air heat gains from window or lights are not allowed when FlowControlWithApproachTemperatures is chosen. + \type choice + \key FlowFromSystem + \key FlowControlWithApproachTemperatures + \default FlowFromSystem + A4 , \field Design Power Input Calculation Method + \note The entered calculation method is used to specify the design power input + \note Watts/Unit => Watts per Unit -- Design Power = Watts per Unit * Number of Units + \note Watts/Area => Watts per Space Floor Area -- Design Power = Watts per Space Floor Area * Floor Area + \type choice + \key Watts/Unit + \key Watts/Area + \default Watts/Unit + N1 , \field Watts per Unit + \type real + \units W + \ip-units W + \minimum 0 + N2 , \field Watts per Space Floor Area + \type real + \units W/m2 + \ip-units W/ft2 + \minimum 0 + A5 , \field CPU Power Input Function of Loading and Air Temperature Curve Name + \note The name of a two-variable curve or table lookup object which modifies the CPU power + \note input as a function of CPU loading (x) and air inlet node temperature (y). + \note This curve (table) should equal 1.0 at design conditions (CPU loading = 1.0 and + \note Design Entering Air Temperature). + \note A default curve named “Data Center Servers Power fLoadTemp” is assigned. + \type object-list + \required-field + \object-list BivariateFunctions + N3 , \field Design Fan Power Input Fraction + \note The fraction of the total power input at design conditions which is for the cooling fan(s) + \type real + \minimum 0.0 + \maximum 1.0 + \default 0.0 + N4, \field Design Fan Air Flow Rate per Power Input + \note The cooling fan air flow rate per total electric power input at design conditions + \type real + \required-field + \units m3/s-W + \ip-units (ft3/min)/(Btu/h) + \minimum 0.0 + A6 , \field Air Flow Function of Loading and Air Temperature Curve Name + \note The name of a two-variable curve or table lookup object which modifies the cooling + \note air flow rate as a function of CPU loading (x) and air inlet node temperature (y). + \note This curve (table) should equal 1.0 at design conditions (CPU loading = 1.0 and + \note Design Entering Air Temperature). + \note A default curve named “Data Center Servers Power fLoadTemp” is assigned. + \type object-list + \required-field + \object-list BivariateFunctions + A7 , \field Fan Power Input Function of Flow Curve Name + \note The name of a single-variable curve or table lookup object which modifies the cooling + \note fan power as a function of flow fraction (x). + \note This curve (table) should equal 1.0 at a flow fraction of 1.0. + \note A default curve named “ECM FanPower fFlow” is assigned. + \type object-list + \required-field + \object-list UnivariateFunctions + N5, \field Design Entering Air Temperature + \note The entering air temperature at design conditions. + \type real + \units C + \ip-units F + \default 15.0 + A8, \field Environmental Class + \note Specifies the allowable operating conditions for the air inlet conditions. + \note Used for reporting time outside allowable conditions. + \type choice + \key None + \key A1 + \key A2 + \key A3 + \key A4 + \key B + \key C + \key H1 + \default None + A9, \field Air Inlet Connection Type + \note Specifies the type of connection between the zone and the ITE air inlet node. + \note AdjustedSupply = ITE inlet temperature will be the current Supply Air Node temperature + \note adjusted by the current recirculation fraction. + \note All heat output is added to the zone air heat balance as a convective gain. + \note ZoneAirNode = ITE air inlet condition is the average zone condition. + \note All heat output is added to the zone air heat balance as a convective gain. + \note RoomAirModel = ITE air inlet and outlet are connected to room air model nodes. + \note This field is only used when Air Flow Calculation Method is FlowFromSystem. + \type choice + \key AdjustedSupply + \key ZoneAirNode + \default AdjustedSupply + N6, \field Design Recirculation Fraction + \note The recirculation fraction for this equipment at design conditions. This field is used only + \note if the Air Node Connection Type = AdjustedSupply. The default is 0.0 (no recirculation). + \note This field is only used when Air Flow Calculation Method is FlowFromSystem. + \type real + \minimum 0.0 + \maximum 0.5 + \default 0.0 + A10, \field Recirculation Function of Loading and Supply Temperature Curve Name + \note The name of a two-variable curve or table lookup object which modifies the recirculation + \note fraction as a function of CPU loading (x) and supply air node temperature (y). + \note This curve (table) should equal 1.0 at design conditions (CPU loading = 1.0 and + \note Design Entering Air Temperature).This field is used only if the + \note Air Node Connection Type = AdjustedSupply. If this curve is left blank, then the curve + \note is assumed to always equal 1.0. + \note This field is only used when Air Flow Calculation Method is FlowFromSystem. + \type object-list + \object-list BivariateFunctions + N7 , \field Design Electric Power Supply Efficiency + \note The efficiency of the power supply system serving this ITE + \type real + \minimum> 0.0 + \maximum 1.0 + \default 1.0 + A11, \field Electric Power Supply Efficiency Function of Part Load Ratio Curve Name + \note The name of a single-variable curve or table lookup object which modifies the electric + \note power supply efficiency as a function of part-load ratio (x). + \note This curve (table) should equal 1.0 at full load (PLR = 1.0). + \note If this curve is left blank, then the curve is assumed to always equal 1.0. + \type object-list + \object-list UnivariateFunctions + N8 , \field Fraction of Electric Power Supply Losses to Zone + \note Fraction of the electric power supply losses which are a heat gain to the zone + \note If this field is <1.0, the remainder of the losses are assumed to be lost to the outdoors. + \type real + \minimum 0.0 + \maximum 1.0 + \default 1.0 + N9, \field Supply Temperature Difference + \note The difference of the IT inlet temperature from the AHU supply air temperature. + \note Either Supply Temperature Difference or Supply Temperature Difference Schedule is required if Air Flow Calculation Method is set to FlowControlWithApproachTemperatures. + \note This field is ignored when Air Flow Calculation Method is FlowFromSystem. + \type real + \units deltaC + \ip-units F + \default 5.0 + A12, \field Supply Temperature Difference Schedule + \note The difference schedule of the IT inlet temperature from the AHU supply air temperature. + \note Either Supply Temperature Difference or Supply Temperature Difference Schedule is required if Air Flow Calculation Method is set to FlowControlWithApproachTemperatures. + \note This field is ignored when Air Flow Calculation Method is FlowFromSystem. + \type object-list + \object-list ScheduleNames + N10, \field Return Temperature Difference + \note The difference of the the actual AHU return air temperature to the IT equipment outlet temperature. + \note Either Return Temperature Difference or Return Temperature Difference Schedule is required if Air Flow Calculation Method is set to FlowControlWithApproachTemperatures. + \note This field is ignored when Air Flow Calculation Method is FlowFromSystem. + \type real + \units deltaC + \ip-units F + \default 2.0 + A13; \field Return Temperature Difference Schedule + \note The difference schedule of the actual AHU return air temperature to the IT equipment outlet temperature. + \note Either Return Temperature Difference or Return Temperature Difference Schedule is required if Air Flow Calculation Method is set to FlowControlWithApproachTemperatures. + \note This field is ignored when Air Flow Calculation Method is FlowFromSystem. + \type object-list + \object-list ScheduleNames + + +OS:GasEquipment:Definition, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference GasEquipmentDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of gas equipment + \note for this set of attributes + \note Choices: EquipmentLevel => Equipment Level -- simply enter watts of equipment + \note Watts/Area => Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Equipment Level + \note Watts/Person => Watts per Person -- enter the number to apply. Value * Occupants = Equipment Level + \type choice + \required-field + \key EquipmentLevel + \key Watts/Area + \key Watts/Person + N1, \field Design Level + \type real + \units W + \ip-units Btu/h + \minimum 0 + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/Person + \minimum 0 + N4, \field Fraction Latent + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6, \field Fraction Lost + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N7; \field Carbon Dioxide Generation Rate + \note CO2 generation rate per unit of power input + \note The default value assumes the equipment is fully vented. + \note For unvented equipment, a suggested value is 3.45E-8 m3/s-W. This value is + \note converted from a natural gas CO2 emission rate of 117 lbs CO2 per million Btu. + \note The maximum value assumes to be 10 times of the recommended value. + \type real + \units m3/s-W + \minimum 0 + \maximum 4e-07 + \default 0.0 + +OS:HotWaterEquipment:Definition, + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference HotWaterEquipmentDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of hot water equipment + \note for this set of attributes + \note Choices: Equipment Level -- simply enter watts of equipment + \note Watts/Area - Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Equipment Level + \note Watts/Person - Watts per Person -- enter the number to apply. Value * Occupants = Equipment Level + \type choice + \required-field + \key EquipmentLevel + \key Watts/Area + \key Watts/Person + N1, \field Design Level + \type real + \units W + \ip-units Btu/h + \minimum 0 + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/Person + \minimum 0 + N4, \field Fraction Latent + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6; \field Fraction Lost + \type real + \minimum 0 + \maximum 1 + \default 0.0 + +OS:SteamEquipment:Definition, + \memo Sets internal gains for steam equipment in the space. + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference SteamEquipmentDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of steam equipment + \note for this set of attributes + \note Choices: Equipment Level -- simply enter watts of equipment + \note Watts/Area - Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Equipment Level + \note Watts/Person - Watts per Person -- enter the number to apply. Value * Occupants = Equipment Level + \type choice + \default EquipmentLevel + \key EquipmentLevel + \key Watts/Area + \key Watts/Person + N1, \field Design Level + \type real + \units W + \ip-units Btu/h + \minimum 0 + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/Person + \minimum 0 + N4, \field Fraction Latent + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6; \field Fraction Lost + \type real + \minimum 0 + \maximum 1 + \default 0.0 + +OS:OtherEquipment:Definition, + \memo Sets internal gains or losses for "other" equipment in the space. + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference OtherEquipmentDefinitionNames + \reference SpaceComponentDefinitionNames + A3, \field Design Level Calculation Method + \note The entered calculation method is used to create the maximum amount of other equipment. + \note to set a loss, use a negative value in the following fields. + \note for this set of attributes + \note Choices: Equipment Level -- simply enter watts of equipment + \note Watts/Area - Watts per Space Floor Area -- enter the number to apply. Value * Floor Area = Equipment Level + \note Watts/Person - Watts per Person -- enter the number to apply. Value * Occupants = Equipment Level + \type choice + \default EquipmentLevel + \key EquipmentLevel + \key Watts/Area + \key Watts/Person + N1, \field Design Level + \type real + \units W + \ip-units W + N2, \field Watts per Space Floor Area + \type real + \units W/m2 + \minimum 0 + N3, \field Watts per Person + \type real + \units W/Person + \minimum 0 + N4, \field Fraction Latent + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N5, \field Fraction Radiant + \type real + \minimum 0 + \maximum 1 + \default 0.0 + N6; \field Fraction Lost + \type real + \minimum 0 + \maximum 1 + \default 0.0 + +\group OpenStudio Exterior Equipment Definitions + +OS:Exterior:Lights:Definition, + \memo only used for Meter type reporting, does not affect building loads + \min-fields 1 + A1, \field Handle + \type handle + \required-field + A2, \field Name + \type alpha + \required-field + \reference ExteriorLightsDefinitionNames + \reference ExteriorEquipmentDefinitionNames + N1; \field Design Level + \type real + \required-field + \units W + \ip-units W + \minimum 0 + +OS:Exterior:FuelEquipment:Definition, + \memo only used for Meter type reporting, does not affect building loads + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \type alpha + \reference ExteriorFuelEquipmentDefinitionNames + \reference ExteriorEquipmentDefinitionNames + N1; \field Design Level + \required-field + \units W + \type real + \minimum 0 + \ip-units W + +OS:Exterior:WaterEquipment:Definition, + \memo only used for Meter type reporting, does not affect building loads + A1, \field Handle + \type handle + \required-field + A2, \field Name + \required-field + \type alpha + \reference ExteriorWaterEquipmentDefinitionNames + \reference ExteriorEquipmentDefinitionNames + N1; \field Design Level + \required-field + \units m3/s + \ip-units gal/min + \type real + \minimum 0 + +\group OpenStudio Schedules + +OS:Schedule:Compact, + \memo Irregular object. Does not follow the usual definition for fields. Fields A3... are: + \memo Through: Date + \memo For: Applicable days (ref: Schedule:Week:Compact) + \memo Interpolate: Yes/No (ref: Schedule:Day:Interval) -- optional, if not used will be "No" + \memo Until: