diff --git a/.github/workflows/release_linux.yml b/.github/workflows/release_linux.yml
index 6469fade466..44379bb47a6 100644
--- a/.github/workflows/release_linux.yml
+++ b/.github/workflows/release_linux.yml
@@ -1,4 +1,4 @@
-name: Releases
+name: Linux Releases
on:
push:
@@ -127,16 +127,10 @@ jobs:
# fail-fast: Default is true, switch to false to allow one platform to fail and still run others
fail-fast: false
matrix:
- name: [20, 22, 24]
include:
- - name: 20
- os: ubuntu-20.04
- test_key: ubuntu2004
- - name: 22
- os: ubuntu-22.04
+ - os: ubuntu-22.04
test_key: ubuntu2204
- - name: 24
- os: ubuntu-24.04
+ - os: ubuntu-24.04
test_key: ubuntu2404
steps:
diff --git a/.github/workflows/release_mac.yml b/.github/workflows/release_mac.yml
index 9556e5e893c..7c5a916714b 100644
--- a/.github/workflows/release_mac.yml
+++ b/.github/workflows/release_mac.yml
@@ -1,4 +1,4 @@
-name: Releases
+name: Mac Releases
on:
push:
@@ -137,7 +137,7 @@ jobs:
echo "Installing gcc@13 for gfortran support of -static-libquadmath"
brew list gcc@13 || brew install gcc@13
which gfortran-13 || echo "FC=$(brew --prefix gcc@13)/bin/gfortran-13" >> $GITHUB_ENV
- brew install ninja
+ brew install ninja tcl-tk
- name: Create Build Directory
run: cmake -E make_directory ./build/
diff --git a/.github/workflows/release_windows.yml b/.github/workflows/release_windows.yml
index 5885ca60967..33611323900 100644
--- a/.github/workflows/release_windows.yml
+++ b/.github/workflows/release_windows.yml
@@ -1,4 +1,4 @@
-name: Releases
+name: Windows Releases
on:
push:
diff --git a/.github/workflows/test_develop_commits.yml b/.github/workflows/test_develop_commits.yml
index 849f171c4e5..cdbffe34ff8 100644
--- a/.github/workflows/test_develop_commits.yml
+++ b/.github/workflows/test_develop_commits.yml
@@ -2,7 +2,7 @@ name: Develop Branch Testing
on:
push:
- branches: [ develop ] # run this on all commits to the develop branch
+ branches: [ develop, fixPythonEngineBuild ] # run this on all commits to the develop branch
defaults:
run:
@@ -58,13 +58,13 @@ jobs:
# nproc: 4
# pretty: "Standard Build on Windows VS 2022"
# alternate: false
-# - os: ubuntu-24.04
-# arch: x86_64
-# python-arch: x64
-# generator: "Unix Makefiles"
-# nproc: 4
-# pretty: "Alternate Build on Ubuntu 24.04"
-# alternate: true
+ - os: ubuntu-24.04
+ arch: x86_64
+ python-arch: x64
+ generator: "Unix Makefiles"
+ nproc: 4
+ pretty: "Alternate Build on Ubuntu 24.04"
+ alternate: true
steps:
diff --git a/.github/workflows/test_pull_requests.yml b/.github/workflows/test_pull_requests.yml
index 1a3fc03c513..21ba7cc371a 100644
--- a/.github/workflows/test_pull_requests.yml
+++ b/.github/workflows/test_pull_requests.yml
@@ -58,6 +58,7 @@ jobs:
if: runner.os == 'macOS'
run: |
brew update
+ brew install tcl-tk
brew reinstall gcc@13
echo "FC=$(brew --prefix gcc@13)/bin/gfortran-13" >> $GITHUB_ENV
echo MACOSX_DEPLOYMENT_TARGET=${{ matrix.macos_dev_target }} >> $GITHUB_ENV
diff --git a/bin/EP-Compare/GraphHints.csv b/bin/EP-Compare/GraphHints.csv
deleted file mode 100644
index 0e4843c2075..00000000000
--- a/bin/EP-Compare/GraphHints.csv
+++ /dev/null
@@ -1,80 +0,0 @@
-EP-COMPARE,GRAPH DETAILS DATA - DO NOT MODIFY,isBarForEveryValue,isStackedBarForEachColumn,isStackedBarForEachRow,is100StackedBarForEachEachColumn,is100StackedBarForEachEachRow,isSideBySideForEachColumn,isSideBySideForEachRow,isSideBySideForTotals,isMonthlyLineForEachColumn,numBottomRowsToExclude,numTopRowsToExclude,numRightColumnsToExclude,numLeftColumnsToExclude,isUnusualTable,isVariableRowCount,isMultipleInstancePerFile,Last Column
-Report,Subtable,Show simple bar graphs for every individual value in table ,Stacked bar of values from each column,Stacked bar of values from each row,100% stacked bar of values from each column,100% stacked bar of values from each row,Side-by-side bar of values from each column,Side-by-side bar of values from each row,Side-by-side bar of each value in total section across instance of report in file,Monthly line graph for values from each column,Number of bottom rows to exclude (when using multiple values),"Number of top rows to exclude (not including label, when using multiple values)",Number of columns at right to exclude (when using multiple values),"Number of columns at left to exclude (not including label, when using multiple values)",Unusual table (Special rules),Variable Row Count,Multiple Instances Per File,Last Column
-Annual Building Utility Performance Summary,Site and Source Energy,x,,,,,x,x,,,,,,,,,,L
-Annual Building Utility Performance Summary,Source to Site Energy Conversion Factors,x,,,,,x,,,,,,,,,,,L
-Annual Building Utility Performance Summary,Building Area,x,,,,,x,,,,,1,,,,,,L
-Annual Building Utility Performance Summary,End Uses,,x,x,x,x,x,x,,,2,,1,,,,,L
-Annual Building Utility Performance Summary,End Uses By Subcategory,,x,x,x,x,x,x,,,,,1,,,,,L
-Annual Building Utility Performance Summary,Utility Use Per Conditioned Floor Area,x,x,x,x,x,x,x,,,1,,1,,,,,L
-Annual Building Utility Performance Summary,Utility Use Per Total Floor Area,x,x,x,x,x,x,x,,,1,,1,,,,,L
-Annual Building Utility Performance Summary,Electric Loads Satisfied,x,,,,,,,,,,,,,x,,,L
-Annual Building Utility Performance Summary,On-Site Thermal Sources,x,,,,,x,x,,,1,,,,,,,L
-Annual Building Utility Performance Summary,Water Source Summary,x,,,,,,,,,,,,,x,,,L
-Annual Building Utility Performance Summary,Comfort and Setpoint Not Met Summary,x,,,,,x,,,,,,,,,,,L
-Input Verification and Results Summary,General,x,,,,,,,,,,,,,,,,L
-Input Verification and Results Summary,Window-Wall Ratio,x,,,,,x,x,,,1,,,1,,,,L
-Input Verification and Results Summary,Skylight-Roof Ratio,x,,,,,x,,,,1,,,,,,,L
-Input Verification and Results Summary,Zone Summary,,x,,x,,x,x,,,3,,,,,x,,L
-Demand End Use Components Summary,End Uses,,x,x,x,x,x,x,,,2,1,1,,,,,L
-Demand End Use Components Summary,End Uses By Subcategory,,x,x,x,x,x,x,,,,,1,,,,,L
-Climatic Data Summary,SizingPeriod:DesignDay,x,,,,,,,,,,,,,,x,,L
-Climatic Data Summary,Weather Statistics File,x,,,,,,,,,,,,,,x,,L
-Envelope Summary,Opaque Exterior,,,,,,x,,,,,,,,,x,,L
-Envelope Summary,Fenestration,,,,,,x,,,,3,,,,,x,,L
-Shading Summary,Sunlit Fraction,,,,,,x,x,,,,,,,,x,,L
-Shading Summary,Window Control,,,,,,x,,,,,,,,,x,,L
-Lighting Summary,Interior Lighting,,,,,,x,,,,1,,,,,x,,L
-Lighting Summary,Daylighting,,,,,,x,,,,,,,,,x,,L
-Lighting Summary,Exterior Lighting,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Central Plant,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Cooling Coils,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Heating Coils,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Fans,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Pumps,,,,,,x,,,,,,,,,x,,L
-Equipment Summary,Service Water Heating,,,,,,x,,,,,,,,,x,,L
-HVAC Sizing Summary,Zone Cooling,,,,,,x,,,,,,,,,x,,L
-HVAC Sizing Summary,Zone Heating,,,,,,x,,,,,,,,,x,,L
-HVAC Sizing Summary,System Design Air Flow Rates,,,,,,x,x,,,,,,,,x,,L
-System Summary,Economizer,,,,,,x,,,,,,,,,x,,L
-System Summary,Demand Controlled Ventilation using Controller:MechanicalVentilation,,,,,,x,,,,,,,,,x,,L
-System Summary,Time Not Comfortable Based on Simple ASHRAE 55-2004,,,,,,x,x,,,1,,,,,x,,L
-System Summary,Time Setpoint Not Met,,,,,,x,x,,,1,,,,,x,,L
-Outdoor Air Summary,Average Outdoor Air During Occupied Hours,,,,,,x,,,,,,,,,x,,L
-Outdoor Air Summary,Minimum Outdoor Air During Occupied Hours,,,,,,x,,,,,,,,,x,,L
-Object Count Summary,Surfaces by Class,x,,,,,x,x,,,,,,,,,,L
-Object Count Summary,HVAC,x,,,,,x,,,,,,,,,,,L
-Object Count Summary,Input Fields,x,,,,,x,,,,,,,,,,,L
-Component Sizing Summary,AirTerminal:SingleDuct:VAV:Reheat,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,Coil:Heating:Gas,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,Branch,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,AirLoopHVAC,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,Controller:OutdoorAir,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,Coil:Cooling:DX:TwoSpeed,,,,,,x,,,,,,,,,x,,L
-Component Sizing Summary,Fan:VariableVolume,,,,,,x,,,,,,,,,x,,L
-Zone Cooling Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Zone Heating Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Zone Electric Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Space Gains Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Peak Space Gains Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Space Gain Components At Cooling Peak Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Energy Consumption Electricity Natural Gas Monthly,,,,,,,,,x,x,4,,,,,,x,L
-End Use EnergyC onsumption Electricity Monthly,,,,,,,,,x,x,4,,,,,,x,L
-End Use Energy Consumption Natural Gas Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Peak Energy End Use Electricity Part 1 Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Peak Energy End Use Electricity Part 2 Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Electric Components Of Peak Demand Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Peak Energy End Use Natural Gas Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Setpoints Not Met With Temperatures Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Comfort Report Simple 55 Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Occupant Comfort Data Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-DX Report Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Window Report Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Window Energy Report Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Window Zone Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Window Energy Zone Summary Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Fan Report Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Zone Temperature Oscillation Report Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Air Loop System Energy And Water Use Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Air Loop System Component Loads Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Air Loop System Component Energy Use Monthly,,,,,,,,,x,x,4,,,,,,x,L
-Mechanical Ventilation Loads Monthly,,,,,,,,,x,x,4,,,,,,x,L
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare b/bin/EP-Compare/Run-Linux/EP-Compare
deleted file mode 100644
index e00ec783bfe..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHInterfaces5001.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHInterfaces5001.so
deleted file mode 100644
index c4e26806436..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHInterfaces5001.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectArray5001.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectArray5001.so
deleted file mode 100644
index 392ac3bd6e9..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectArray5001.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectCollection5001.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectCollection5001.so
deleted file mode 100644
index f82f7809c99..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectCollection5001.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHTreeView4301.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHTreeView4301.so
deleted file mode 100644
index 3ec9abe2c87..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHTreeView4301.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/libMBSChartDirector5Plugin16042.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/libMBSChartDirector5Plugin16042.so
deleted file mode 100644
index 0364d7c866c..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/libMBSChartDirector5Plugin16042.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Linux/EP-Compare Libs/libRBAppearancePak.so b/bin/EP-Compare/Run-Linux/EP-Compare Libs/libRBAppearancePak.so
deleted file mode 100644
index cdd24153eeb..00000000000
Binary files a/bin/EP-Compare/Run-Linux/EP-Compare Libs/libRBAppearancePak.so and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_0.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_0.dylib
deleted file mode 100644
index 4ba438adf7b..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_0.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_1.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_1.dylib
deleted file mode 100644
index 88d89f8411e..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_1.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_5.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_5.dylib
deleted file mode 100644
index 935667db645..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_5.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/MBS REALbasic ChartDirector Plugin.rbx_0.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/MBS REALbasic ChartDirector Plugin.rbx_0.dylib
deleted file mode 100644
index 40f2b861792..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/MBS REALbasic ChartDirector Plugin.rbx_0.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/RBAppearancePak.rbx_0.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/RBAppearancePak.rbx_0.dylib
deleted file mode 100644
index 37f676124ca..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/RBAppearancePak.rbx_0.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/TreeView.rbx_0.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/TreeView.rbx_0.dylib
deleted file mode 100644
index 983d02ad7c9..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Frameworks/TreeView.rbx_0.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Info.plist b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Info.plist
deleted file mode 100644
index a784b1a25b1..00000000000
--- a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Info.plist
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- BuildMachineOSBuild
- 10K549
- CFBundleDevelopmentRegion
- English
- CFBundleExecutable
- EP-Launch Lite
- CFBundleIconFile
- EnergyPlus
- CFBundleIdentifier
- ${MACOSX_BUNDLE_GUI_IDENTIFIER}
- CFBundleName
- EP-Launch Lite
- CFBundlePackageType
- APPL
- CFBundleSignature
- NREL
- DTCompiler
-
- DTPlatformBuild
- 10M2518
- DTPlatformVersion
- PG
- DTSDKBuild
- 10M2518
- DTSDKName
- macosx10.6
- DTXcode
- 0400
- DTXcodeBuild
- 10M2518
- NSAppleScriptEnabled
-
- NSMainNibFile
- MainMenu
- NSPrincipalClass
- NSApplication
-
-
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/EP-Compare b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/EP-Compare
deleted file mode 100755
index e983220c79b..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/EP-Compare and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/rbframework.dylib b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/rbframework.dylib
deleted file mode 100644
index aedcf589dec..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/MacOS/rbframework.dylib and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/PkgInfo b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/PkgInfo
deleted file mode 100644
index 6cc636d33de..00000000000
--- a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/PkgInfo
+++ /dev/null
@@ -1 +0,0 @@
-APPLNREL
\ No newline at end of file
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/131.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/131.png
deleted file mode 100644
index 858fde16104..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/131.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/19.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/19.png
deleted file mode 100644
index e5145d05235..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/19.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/24.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/24.png
deleted file mode 100644
index b0033cf64a7..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/24.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/34.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/34.png
deleted file mode 100644
index 63f3b0465fa..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/34.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/36.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/36.png
deleted file mode 100644
index c6e17fdd56c..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/36.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/40.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/40.png
deleted file mode 100644
index 1035906078c..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/40.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/41.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/41.png
deleted file mode 100644
index 622e1d8b278..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/41.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/65.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/65.png
deleted file mode 100644
index 863bec13216..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/65.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/81.png b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/81.png
deleted file mode 100644
index d9018259a3d..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/81.png and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EP-Compare.icns b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EP-Compare.icns
deleted file mode 100644
index 3b7cc1cd01f..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EP-Compare.icns and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EnergyPlus.icns b/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EnergyPlus.icns
deleted file mode 100644
index 92b933cf89c..00000000000
Binary files a/bin/EP-Compare/Run-Mac/EP-Compare.app/Contents/Resources/EnergyPlus.icns and /dev/null differ
diff --git a/bin/EP-Compare/Run-Mac/codesign.sh b/bin/EP-Compare/Run-Mac/codesign.sh
deleted file mode 100755
index f6a7ca64746..00000000000
--- a/bin/EP-Compare/Run-Mac/codesign.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/bin/bash
-
-APP_NAME=EP-Compare
-IDENTIFIER="org.nrel.EnergyPlus.$APP_NAME"
-
-function ep_codesign() {
- codesign -vvvv -s "Developer ID Application: National Renewable Energy Laboratory (K7JYVQJL7R)" \
- --force --timestamp \
- --prefix "$IDENTIFIER." \
- --options runtime \
- --entitlements entitlements.xml "$1"
-}
-
-function ep_notarize() {
- xcrun notarytool submit --keychain-profile "EnergyPlus" --wait "$1"
-}
-
-ep_codesign "EP-Compare.app/Contents/Frameworks/RBAppearancePak.rbx_0.dylib"
-ep_codesign "EP-Compare.app/Contents/Frameworks/TreeView.rbx_0.dylib"
-ep_codesign "EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_5.dylib"
-ep_codesign "EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_1.dylib"
-ep_codesign "EP-Compare.app/Contents/Frameworks/#CoreClasses.rbx_0.dylib"
-ep_codesign "EP-Compare.app/Contents/Frameworks/MBS REALbasic ChartDirector Plugin.rbx_0.dylib"
-
-ep_codesign "EP-Compare.app/Contents/MacOS/rbframework.dylib"
-ep_codesign "EP-Compare.app/Contents/MacOS/EP-Compare"
-
-codesign -vvvv -s "Developer ID Application: National Renewable Energy Laboratory (K7JYVQJL7R)" \
- --force --timestamp \
- --identifier "$IDENTIFIER" \
- --options runtime \
- --entitlements entitlements.xml \
- $APP_NAME.app
-
-zip -r ./$APP_NAME.zip ./$APP_NAME.app
-ep_notarize ./$APP_NAME.zip
-xcrun stapler staple ./$APP_NAME.app
-
-xcrun stapler validate ./$APP_NAME.app
-spctl -vvvv --assess ./$APP_NAME.app
-rm -Rf ./$APP_NAME.zip
diff --git a/bin/EP-Compare/Run-Mac/entitlements.xml b/bin/EP-Compare/Run-Mac/entitlements.xml
deleted file mode 100644
index 6bc22e913b5..00000000000
--- a/bin/EP-Compare/Run-Mac/entitlements.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- com.apple.security.cs.allow-jit
-
- com.apple.security.cs.allow-unsigned-executable-memory
-
- com.apple.security.cs.allow-dyld-environment-variables
-
- com.apple.security.cs.disable-library-validation
-
-
-
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/Appearance Pak.dll b/bin/EP-Compare/Run-Win/EP-Compare Libs/Appearance Pak.dll
deleted file mode 100644
index 6367ccbef5c..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/Appearance Pak.dll and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHInterfaces5001.dll b/bin/EP-Compare/Run-Win/EP-Compare Libs/EHInterfaces5001.dll
deleted file mode 100644
index 70457ff416c..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHInterfaces5001.dll and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectArray5001.dll b/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectArray5001.dll
deleted file mode 100644
index 2a50b2f63c1..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectArray5001.dll and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectCollection5001.dll b/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectCollection5001.dll
deleted file mode 100644
index 7dd27bd0124..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectCollection5001.dll and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHTreeView4301.DLL b/bin/EP-Compare/Run-Win/EP-Compare Libs/EHTreeView4301.DLL
deleted file mode 100644
index 0085d278bdb..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/EHTreeView4301.DLL and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare Libs/MBSChartDirector5Plugin16042.dll b/bin/EP-Compare/Run-Win/EP-Compare Libs/MBSChartDirector5Plugin16042.dll
deleted file mode 100644
index e7ff50f78c7..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare Libs/MBSChartDirector5Plugin16042.dll and /dev/null differ
diff --git a/bin/EP-Compare/Run-Win/EP-Compare.exe b/bin/EP-Compare/Run-Win/EP-Compare.exe
deleted file mode 100644
index 3537b85bd1a..00000000000
Binary files a/bin/EP-Compare/Run-Win/EP-Compare.exe and /dev/null differ
diff --git a/bin/EP-Compare/readme.txt b/bin/EP-Compare/readme.txt
new file mode 100644
index 00000000000..95db72511bc
--- /dev/null
+++ b/bin/EP-Compare/readme.txt
@@ -0,0 +1,9 @@
+The EP-Compare program is no longer included in the EnergyPlus distribution. It appeared to be seldom used and had not been updated in many years.
+
+Please install EnergyPlus 24.1 or earlier if you would like a copy. It should work just as well with later distributions.
+
+If you would like to see further development of EP-Compare, please contact the original author:
+
+Jason Glazer
+jglazer@gard.com
+
diff --git a/cmake/CMakeCPackOptions.cmake.in b/cmake/CMakeCPackOptions.cmake.in
index 9bf27274b9f..2289979c6d8 100644
--- a/cmake/CMakeCPackOptions.cmake.in
+++ b/cmake/CMakeCPackOptions.cmake.in
@@ -18,8 +18,6 @@ if(CPACK_GENERATOR MATCHES "NSIS")
set(CPACK_NSIS_MENU_LINKS
"Documentation/index.html"
"EnergyPlus Documentation"
- "PostProcess/EP-Compare/EP-Compare.exe"
- "EP-Compare"
"PreProcess/EPDraw/EPDrawGUI.exe"
"EPDrawGUI"
"EP-Launch.exe"
diff --git a/cmake/CPack.STGZ_Header.sh.in b/cmake/CPack.STGZ_Header.sh.in
index 39768573415..157fc60135e 100644
--- a/cmake/CPack.STGZ_Header.sh.in
+++ b/cmake/CPack.STGZ_Header.sh.in
@@ -118,7 +118,6 @@ if [ ! "$link_directory" = "n" ]; then
ln -sf "${install_directory}/energyplus" "${link_directory}/energyplus" 2> /dev/null > /dev/null || link_err
ln -sf "${install_directory}/Energy+.idd" "${link_directory}" 2> /dev/null > /dev/null || link_err
ln -sf "${install_directory}/Energy+.schema.epJSON" "${link_directory}" 2> /dev/null > /dev/null || link_err
- ln -sf "${install_directory}/PostProcess/EP-Compare/EP-Compare" "${link_directory}" 2> /dev/null > /dev/null || link_err
ln -sf "${install_directory}/EPMacro" "${link_directory}" 2> /dev/null > /dev/null || link_err
ln -sf "${install_directory}/ExpandObjects" "${link_directory}" 2> /dev/null > /dev/null || link_err
ln -sf "${install_directory}/PostProcess/HVAC-Diagram" "${link_directory}" 2> /dev/null > /dev/null || link_err
@@ -141,7 +140,6 @@ if [ ! "$link_directory" = "n" ]; then
rm -f "${link_directory}/energyplus"
rm -f "${link_directory}/Energy+.idd"
rm -f "${link_directory}/Energy+.schema.epJSON"
- rm -f "${link_directory}/EP-Compare"
rm -f "${link_directory}/EPMacro"
rm -f "${link_directory}/ExpandObjects"
rm -f "${link_directory}/HVAC-Diagram"
diff --git a/cmake/Install.cmake b/cmake/Install.cmake
index e63f1659f52..4315762e629 100644
--- a/cmake/Install.cmake
+++ b/cmake/Install.cmake
@@ -418,20 +418,7 @@ if(WIN32)
install(FILES "${PROJECT_SOURCE_DIR}/bin/WeatherConverter/TimeZoneCodes.txt" DESTINATION "PreProcess/WeatherConverter/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/WeatherConverter/WBANLocations.csv" DESTINATION "PreProcess/WeatherConverter/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/WeatherConverter/Weather.exe" DESTINATION "PreProcess/WeatherConverter/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/Appearance Pak.dll"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/EHInterfaces5001.dll"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectArray5001.dll"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/EHObjectCollection5001.dll"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/EHTreeView4301.DLL"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare Libs/MBSChartDirector5Plugin16042.dll"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Win/EP-Compare.exe" DESTINATION "PostProcess/EP-Compare/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/GraphHints.csv" DESTINATION "PostProcess/EP-Compare/")
+ install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/readme.txt" DESTINATION "PostProcess/EP-Compare/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/EPDraw/Run-Win/EPDrawGUI Libs/Appearance Pak.dll" DESTINATION "PreProcess/EPDraw/EPDrawGUI Libs/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/EPDraw/Run-Win/EPDrawGUI Libs/Shell.dll" DESTINATION "PreProcess/EPDraw/EPDrawGUI Libs/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/EPDraw/Run-Win/EPDrawGUI.exe" DESTINATION "PreProcess/EPDraw/")
@@ -512,8 +499,7 @@ if(APPLE)
install(DIRECTORY "${PROJECT_SOURCE_DIR}/bin/EP-Launch-Lite/EP-Launch-Lite.app" DESTINATION "PreProcess")
install(DIRECTORY "${PROJECT_SOURCE_DIR}/bin/IDFVersionUpdater/Run-Mac/IDFVersionUpdater.app" DESTINATION "PreProcess/IDFVersionUpdater")
- install(DIRECTORY "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Mac/EP-Compare.app" DESTINATION "PostProcess/EP-Compare")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/GraphHints.csv" DESTINATION "PostProcess/EP-Compare/")
+ install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/readme.txt" DESTINATION "PostProcess/EP-Compare/")
install(PROGRAMS "${PROJECT_SOURCE_DIR}/bin/EPMacro/Mac/EPMacro" DESTINATION "./")
configure_file(scripts/runenergyplus.in "${PROJECT_BINARY_DIR}/scripts/runenergyplus" @ONLY)
@@ -549,21 +535,7 @@ elseif(UNIX)
set(CPACK_IFW_TARGET_DIRECTORY
"/usr/local/${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}-${CPACK_PACKAGE_VERSION_MINOR}-${CPACK_PACKAGE_VERSION_PATCH}")
- install(PROGRAMS "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare" DESTINATION "PostProcess/EP-Compare/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/GraphHints.csv" DESTINATION "PostProcess/EP-Compare/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHInterfaces5001.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectArray5001.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHObjectCollection5001.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/EHTreeView4301.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/libMBSChartDirector5Plugin16042.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
- install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/Run-Linux/EP-Compare Libs/libRBAppearancePak.so"
- DESTINATION "PostProcess/EP-Compare/EP-Compare Libs/")
-
+ install(FILES "${PROJECT_SOURCE_DIR}/bin/EP-Compare/readme.txt" DESTINATION "PostProcess/EP-Compare/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/IDFVersionUpdater/Run-Linux/IDFVersionUpdater Libs/libRBAppearancePak64.so"
DESTINATION "PreProcess/IDFVersionUpdater/IDFVersionUpdater Libs/")
install(FILES "${PROJECT_SOURCE_DIR}/bin/IDFVersionUpdater/Run-Linux/IDFVersionUpdater Libs/libRBCrypto64.so"
@@ -710,7 +682,6 @@ if(APPLE)
# "EPMacro"
# "PreProcess/EP-Launch-Lite.app"
# "PreProcess/IDFVersionUpdater/IDFVersionUpdater.app"
- # "PostProcess/EP-Compare/EP-Compare.app"
)
# Codesign inner binaries and libraries, in the CPack staging area for the EnergyPlus project, component Unspecified
diff --git a/cmake/PythonCopyStandardLib.py b/cmake/PythonCopyStandardLib.py
index 1e4becce5bb..7cc0f7a9723 100644
--- a/cmake/PythonCopyStandardLib.py
+++ b/cmake/PythonCopyStandardLib.py
@@ -61,7 +61,7 @@
# this script must be called with two args:
# 1 - the path to the EnergyPlus executable in the install-tree, which is used to determine where to copy the library
# since this is in the install-tree, you'll need to use a cmake generator expression
-# 2 - name of the folder to create to store the copied in python standard library, usually python_standard_library
+# 2 - name of the folder to create to store the copied in python standard library, usually python_lib
import ctypes
import os
import platform
@@ -85,6 +85,8 @@
ctypes_package_dir = os.path.dirname(ctypes_import_file)
standard_lib_dir = os.path.dirname(ctypes_package_dir)
+print(f"PYTHON: Analyzing standard library directory at {standard_lib_dir}")
+
if os.path.exists(target_dir):
# Let's check the library files to see if the ABI matches
# Otherwise if you build with say python 3.8 initially, and then switch to
@@ -117,6 +119,12 @@ def find_libs(dir_path):
dll_dir = os.path.join(python_root_dir, 'DLLs')
shutil.copytree(dll_dir, target_dir, dirs_exist_ok=True)
+# And also on Windows, we now need the grab the Tcl/Tk folder that contains config, scripts, and blobs
+if platform.system() == 'Windows':
+ python_root_dir = os.path.dirname(standard_lib_dir)
+ tcl_dir = os.path.join(python_root_dir, 'tcl')
+ shutil.copytree(tcl_dir, target_dir, dirs_exist_ok=True)
+
# then I'm going to try to clean up any __pycache__ folders in the target dir to reduce installer size
for root, dirs, _ in os.walk(target_dir):
for this_dir in dirs:
diff --git a/cmake/PythonFixUpTclTk.py b/cmake/PythonFixUpTclTk.py
new file mode 100644
index 00000000000..dac83009c72
--- /dev/null
+++ b/cmake/PythonFixUpTclTk.py
@@ -0,0 +1,134 @@
+# EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University
+# of Illinois, The Regents of the University of California, through Lawrence
+# Berkeley National Laboratory (subject to receipt of any required approvals
+# from the U.S. Dept. of Energy), Oak Ridge National Laboratory, managed by UT-
+# Battelle, Alliance for Sustainable Energy, LLC, and other contributors. All
+# rights reserved.
+#
+# NOTICE: This Software was developed under funding from the U.S. Department of
+# Energy and the U.S. Government consequently retains certain rights. As such,
+# the U.S. Government has been granted for itself and others acting on its
+# behalf a paid-up, nonexclusive, irrevocable, worldwide license in the
+# Software to reproduce, distribute copies to the public, prepare derivative
+# works, and perform publicly and display publicly, and to permit others to do
+# so.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# (1) Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# (2) Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# (3) Neither the name of the University of California, Lawrence Berkeley
+# National Laboratory, the University of Illinois, U.S. Dept. of Energy nor
+# the names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in
+# stand-alone form without changes from the version obtained under this
+# License, or (ii) Licensee makes a reference solely to the software
+# portion of its product, Licensee must refer to the software as
+# "EnergyPlus version X" software, where "X" is the version number Licensee
+# obtained under this License and may not use a different name for the
+# software. Except as specifically required in this Section (4), Licensee
+# shall not use in a company name, a product name, in advertising,
+# publicity, or other promotional activities any name, trade name,
+# trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or
+# confusingly similar designation, without the U.S. Department of Energy's
+# prior written consent.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+
+import platform
+import re
+import shutil
+import subprocess
+import sys
+from pathlib import Path
+import os
+import stat
+
+
+def locate_tk_so(python_dir: Path) -> Path:
+ print(f"Searching for _tkinter so in {python_dir}")
+ sos = list(python_dir.glob("lib-dynload/_tkinter*.so"))
+ assert len(sos) == 1, "Unable to locate _tkinter so"
+ return sos[0]
+
+
+LINKED_RE = re.compile(
+ r"(?P.*) \(compatibility version (?P\d+\.\d+\.\d+), "
+ r"current version (?P\d+\.\d+\.\d+)(?:, \w+)?\)"
+)
+
+LINKED_RE_ARM64 = re.compile(r"(?P.*) \(architecture arm64\)")
+
+
+def get_linked_libraries(p: Path):
+ linked_libs = []
+ lines = subprocess.check_output(["otool", "-L", str(p)], encoding="utf-8", universal_newlines=True).splitlines()
+ if "is not an object file" in lines[0]:
+ return None
+ lines = [x.strip() for x in lines[1:]]
+
+ for line in lines:
+ if 'compatibility version' in line and (m := LINKED_RE.match(line)):
+ linked_libs.append(m.groupdict())
+ elif 'architecture arm64' in line and (m := LINKED_RE_ARM64.match(line)):
+ linked_libs.append(m.groupdict()) # it will only have a libname key, I think that's fine
+ else:
+ raise ValueError(f"For {p}, cannot parse line: '{line}'")
+ return linked_libs
+
+
+if __name__ == "__main__":
+
+ if platform.system() != "Darwin":
+ sys.exit(0)
+
+ print("PYTHON: Copying and fixing up Tcl/Tk")
+
+ if len(sys.argv) == 2:
+ python_dir = Path(sys.argv[1])
+ else:
+ print("Must call " + sys.argv[0] + "with one command line argument: the path to the python_lib directory")
+ sys.exit(1)
+
+ assert python_dir.is_dir()
+ lib_dynload_dir = python_dir / "lib-dynload"
+
+ tk_so = locate_tk_so(python_dir)
+ tcl_tk_sos = [Path(t["libname"]) for t in get_linked_libraries(tk_so) if "libt" in t["libname"]]
+
+ for tcl_tk_so in tcl_tk_sos:
+ new_tcl_tk_so = lib_dynload_dir / tcl_tk_so.name
+ if str(tcl_tk_so).startswith('@loader_path'):
+ assert new_tcl_tk_so.is_file(), f"{new_tcl_tk_so} missing when the tkinter so is already adjusted. Wipe the dir"
+ print("Already fixed up the libtcl and libtk, nothing to do here")
+ continue
+ shutil.copy(tcl_tk_so, new_tcl_tk_so)
+ # during testing, the brew installed tcl and tk libraries were installed without write permission
+ # the workaround was to manually chmod u+w those files in the brew install folder
+ # instead let's just fix them up once we copy them here
+ current_perms = os.stat(str(new_tcl_tk_so)).st_mode
+ os.chmod(str(new_tcl_tk_so), current_perms | stat.S_IWUSR)
+ # now that it can definitely be written, we can run install_name_tool on it
+ lines = subprocess.check_output(
+ ["install_name_tool", "-change", str(tcl_tk_so), f"@loader_path/{new_tcl_tk_so.name}", str(tk_so)]
+ )
+ # Change the id that's the first line of the otool -L in this case and it's confusing
+ lines = subprocess.check_output(["install_name_tool", "-id", str(new_tcl_tk_so.name), str(new_tcl_tk_so)])
diff --git a/cmake/install_codesign_script.cmake b/cmake/install_codesign_script.cmake
index 78a671a90f4..10db6b51a11 100644
--- a/cmake/install_codesign_script.cmake
+++ b/cmake/install_codesign_script.cmake
@@ -20,7 +20,7 @@ Pre-conditions:
This script will codesign the ``FILES_TO_SIGN``, as well as the globbed copied Python .so and the root dylibs (such as ``libintl8.dylib``)
-* ``python_standard_lib/lib-dynload/*.so``
+* ``python_lib/lib-dynload/*.so``
* ``lib*.dylib``
To do so, it uses the `CodeSigning`_ functions :cmake:command:`codesign_files_macos`
@@ -113,11 +113,11 @@ foreach(path ${_all_root_dylibs})
endif()
endforeach()
-file(GLOB PYTHON_SOS "${CMAKE_INSTALL_PREFIX}/python_standard_lib/lib-dynload/*.so")
+file(GLOB PYTHON_SOS "${CMAKE_INSTALL_PREFIX}/python_lib/lib-dynload/*.so" "${CMAKE_INSTALL_PREFIX}/python_lib/lib-dynload/*.dylib")
print_relative_paths(PREFIX "FULL_PATHS=" ABSOLUTE_PATHS ${FULL_PATHS})
print_relative_paths(PREFIX "ROOT_DYLIBS=" ABSOLUTE_PATHS ${ROOT_DYLIBS})
-print_relative_paths(PREFIX "PYTHON_SOS, in ${CMAKE_INSTALL_PREFIX}/python_standard_lib/lib-dynload/=" ABSOLUTE_PATHS ${PYTHON_SOS} NAME_ONLY)
+print_relative_paths(PREFIX "PYTHON_SOS, in ${CMAKE_INSTALL_PREFIX}/python_lib/lib-dynload/=" ABSOLUTE_PATHS ${PYTHON_SOS} NAME_ONLY)
include(${CMAKE_CURRENT_LIST_DIR}/CodeSigning.cmake)
codesign_files_macos(
diff --git a/cmake/qtifw/install_operations.qs b/cmake/qtifw/install_operations.qs
index 73480101a5d..34179b85abd 100644
--- a/cmake/qtifw/install_operations.qs
+++ b/cmake/qtifw/install_operations.qs
@@ -15,7 +15,6 @@ function Component()
component.addOperation("Execute", "chmod", "+x", "@TargetDir@/PreProcess/IDFVersionUpdater/IDFVersionUpdater.app/Contents/MacOS/IDFVersionUpdater");
component.addOperation("Execute", "chmod", "+x", "@TargetDir@/PreProcess/EP-Launch-Lite.app/Contents/MacOS/EP-Launch-Lite");
component.addOperation("Execute", "chmod", "+x", "@TargetDir@/PreProcess/EP-Launch-Lite.app/Contents/MacOS/python");
- component.addOperation("Execute", "chmod", "+x", "@TargetDir@/PostProcess/EP-Compare/EP-Compare.app/Contents/MacOS/EP-Compare");
// Not sure necessary so not doing it yet
// component.addOperation("Execute", "chmod", "-R", "a+w", "@TargetDir@");
diff --git a/cmake/qtifw/install_unix_createsymlinks.qs b/cmake/qtifw/install_unix_createsymlinks.qs
index 1bfa437177f..6a48337de76 100644
--- a/cmake/qtifw/install_unix_createsymlinks.qs
+++ b/cmake/qtifw/install_unix_createsymlinks.qs
@@ -52,9 +52,6 @@ function Component()
component.addElevatedOperation("Execute", "ln", "-sf", "@TargetDir@/energyplus", linktarget + "/EnergyPlus",
"UNDOEXECUTE", "rm", linktarget + "/EnergyPlus")
- component.addElevatedOperation("Execute", "ln", "-sf", "@TargetDir@/PostProcess/EP-Compare/EP-Compare", linktarget,
- "UNDOEXECUTE", "rm", linktarget + "/EP-Compare");
-
component.addElevatedOperation("Execute", "ln", "-sf", "@TargetDir@/PreProcess/IDFVersionUpdater/IDFVersionUpdater", linktarget,
"UNDOEXECUTE", "rm", linktarget + "/IDFVersionUpdater");
@@ -62,9 +59,8 @@ function Component()
"UNDOEXECUTE", "rm", linktarget + "/parser");
}
- // TODO: we should perhaps create symlinks to EP-Compare,
+ // TODO: we should perhaps create symlinks to
// IDFVersionUpdater and and FMUparser on mac too, eg:
- // "@TargetDir@/PostProcess/EP-Compare/EP-Compare.app/Contents/MacOS/EP-Compare"
// man page:
linktarget = "/usr/local/share/man/man1";
diff --git a/cmake/qtifw/install_win_createstartmenu.qs b/cmake/qtifw/install_win_createstartmenu.qs
index 532ae27931a..819fc3c01a3 100644
--- a/cmake/qtifw/install_win_createstartmenu.qs
+++ b/cmake/qtifw/install_win_createstartmenu.qs
@@ -46,7 +46,6 @@ function Component()
console.log("Target directory for Start Menu Shortcuts: " + target_dir);
component.addOperation("CreateShortcut", "@TargetDir@/Documentation/index.html", target_dir + "/EnergyPlus Documentation.lnk");
- component.addOperation("CreateShortcut", "@TargetDir@/PostProcess/EP-Compare/EP-Compare.exe", target_dir + "/EP-Compare.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/PreProcess/EPDraw/EPDrawGUI.exe", target_dir + "/EPDrawGUI.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/EP-Launch.exe", target_dir + "/EP-Launch.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/ExampleFiles/ExampleFiles.html", target_dir + "/Example Files Summary.lnk");
diff --git a/doc/auxiliary-programs/CMakeLists.txt b/doc/auxiliary-programs/CMakeLists.txt
index c0873c235a7..b033a710283 100644
--- a/doc/auxiliary-programs/CMakeLists.txt
+++ b/doc/auxiliary-programs/CMakeLists.txt
@@ -183,8 +183,6 @@ set(INCLUDED_IMAGES
${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image118.png
${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image119.png
${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image120.png
- ${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image121.png
- ${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image122.png
- ${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image123.png)
+ ${PROJECT_SOURCE_DIR}/auxiliary-programs/media/image121.png)
create_doc_target("auxiliary-programs" "AuxiliaryPrograms")
diff --git a/doc/auxiliary-programs/media/image122.png b/doc/auxiliary-programs/media/image122.png
deleted file mode 100644
index ef86050fa67..00000000000
Binary files a/doc/auxiliary-programs/media/image122.png and /dev/null differ
diff --git a/doc/auxiliary-programs/media/image123.png b/doc/auxiliary-programs/media/image123.png
deleted file mode 100644
index b096972f72c..00000000000
Binary files a/doc/auxiliary-programs/media/image123.png and /dev/null differ
diff --git a/doc/auxiliary-programs/src/auxiliary-energyplus-programs.tex b/doc/auxiliary-programs/src/auxiliary-energyplus-programs.tex
index 9f2709448b7..3013004c6e5 100644
--- a/doc/auxiliary-programs/src/auxiliary-energyplus-programs.tex
+++ b/doc/auxiliary-programs/src/auxiliary-energyplus-programs.tex
@@ -44,4 +44,3 @@ \chapter{Auxiliary Programs Introduction}\label{auxiliary-programs-introduction}
\textbf{Technical Details of Running EnergyPlus} - this section gives full instructions on both EP-Launch and the IDF-Editor as well as some more details on running EnergyPlus manually.
-\textbf{EP-Compare} - A utility to graphically compare tabular results from multiple simulation files.
diff --git a/doc/auxiliary-programs/src/manipulating-output-files/ep-compare.tex b/doc/auxiliary-programs/src/manipulating-output-files/ep-compare.tex
index 2403e672a56..8bc64083085 100644
--- a/doc/auxiliary-programs/src/manipulating-output-files/ep-compare.tex
+++ b/doc/auxiliary-programs/src/manipulating-output-files/ep-compare.tex
@@ -1,25 +1,4 @@
\section{EP-Compare}\label{ep-compare}
-The EP-Compare program is intended to be used to compare the tabular results of several simulations including the ABUPS summary report. To generate tabular reports in EnergyPlus use the Output:Table:SummaryReports object and make sure the OutputControl:Table:Style includes HTML output. EP-Compare displays bar graphs and monthly line graphs for most of the tabular reports. It can be used in Windows, Linux and Macintosh systems. The main screen is shown below:
+The EP-Compare program is no longer included in the EnergyPlus distribution. Please see the readme.txt file in the EP-Compare folder within the PostProcess folder for more information.
-\begin{figure}[hbtp] % fig 56
-\centering
-\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/image122.png}
-\caption{EP-Compare Main Screen \protect \label{fig:ep-compare-main-screen}}
-\end{figure}
-
-The main screen shows both the graph being displayed at the bottom and allows the user to select a graph from a list at the top. The list of graphs is based on each table name and subtable name and then has a list of graphs supported including stacked bars, simple bar, 100\% stacked bars, side-by-side bars, and monthly line graphs. The program window can be resized.
-
-The first time the program is started no graphs are shown because no files have been selected. To select files use the ``Manage Files'' button. This brings up the Manage Files dialog box shown below:
-
-\begin{figure}[hbtp] % fig 57
-\centering
-\includegraphics[width=0.9\textwidth, height=0.9\textheight, keepaspectratio=true]{media/image123.png}
-\caption{EP-Compare Dialog box \protect \label{fig:ep-compare-dialog-box}}
-\end{figure}
-
-This dialog lets you add and remove files from the list of files. The files selected should be HTML or HTM files that are produced by EnergyPlus when using the Output:Table:SummaryReports object with OutputControl:Table:Style set to produce HTML files. It is best to compare files that have similar reports otherwise missing values will be shown as zeros.The dialog also provides a button to add entire directories of files but that adding too many files makes the graphs difficult to understand. To change the order that files appear in the graph, the files can be dragged up and down the list of files in the Manage Files dialog. The dialog box window can be resized to view longer files names if necessary.
-
-When EP-Compare is started again, the files last selected are shown in the graph if they are still available.
-
-The Copy button allows the current graph (as it is sized in the window) to be copied to another application such as Microsoft Word or PowerPoint. To paste a copied image to those programs use the Paste Special option and select one of the bitmap formats.
diff --git a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-003/indoor-living-wall.tex b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-003/indoor-living-wall.tex
index 19ca6d020a7..ef0d5101918 100644
--- a/doc/engineering-reference/src/simulation-models-encyclopedic-reference-003/indoor-living-wall.tex
+++ b/doc/engineering-reference/src/simulation-models-encyclopedic-reference-003/indoor-living-wall.tex
@@ -9,7 +9,7 @@ \subsection{Energy Balance of Indoor Living Wall}\label{energy-balance-of-indoor
Plant energy balance equation:
\begin{equation}
-Q_{lw-net}+Q_{sw}+h_{ip} \cdot A_ip \cdot (T_z - T_p )-\lambda \cdot A_ip \cdot ET+Q_{cond}=0
+Q_{lw-net}+Q_{sw}+h_{ip} \cdot A_ip \cdot (T_z - T_p )+Q_{cond}=0
\end{equation}
where:
@@ -27,11 +27,7 @@ \subsection{Energy Balance of Indoor Living Wall}\label{energy-balance-of-indoor
\item
\(T_p\) is the plant surface temperature (\si{\celsius})
\item
- \(A_ip\) is the plant surface area (\si{\area})
-\item
- \(\lambda\) is the latent heat of vaporization (\si{\specificEnthalpy})
-\item
- \(ET\) is the evapotranspiration rate (\si{\evapotranspirationRate}).
+ \(A_ip\) is the plant surface area (\si{\area}).
\end{itemize}
Indoor air heat balance connects with indoor living walls through convective heat transfer, which has the opposite sign of the term in surface heat balance. Convective portion of heat gain from LED lights also contributes to zone air heat balance equation.
@@ -53,7 +49,7 @@ \subsection{Energy Balance of Indoor Living Wall}\label{energy-balance-of-indoor
\item
$V_z$ is zone air volume (\si{\volume})
\item
- \(\dot Q_i\) is the convective heat from internal loads (\si{\watt})
+ \(\dot Q_i\) is the convective heat from internal loads including sensible heat gain from living walls (\si{\watt})
\item
\({{h_i}} {A_i}\left( {{T_{si}} - {T_z}} \right)\) is the convective heat transfer from surfaces to zone air (\si{\watt})
\item
diff --git a/doc/getting-started/src/getting-started-with-energyplus.tex b/doc/getting-started/src/getting-started-with-energyplus.tex
index 018320cab64..52c42c28f36 100644
--- a/doc/getting-started/src/getting-started-with-energyplus.tex
+++ b/doc/getting-started/src/getting-started-with-energyplus.tex
@@ -34,7 +34,6 @@ \chapter{Getting Started with EnergyPlus}\label{getting-started-with-energyplus}
| +-- IDFVersionUpdater Graphical tool for updating old EnergyPlus files to the latest version
+-- PostProcess
| +-- ReadVarsEso The simple post processor exe.
-| +-- EPCompare A graphical tool for comparing two EnergyPlus output sets
+-- ExampleFiles Sample input, output, results files shipped with the program.
+-- WeatherData Sample weather files shipped with the program.
\end{lstlisting}
diff --git a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex
index 526a1be444f..bf62f8cd5fa 100644
--- a/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex
+++ b/doc/input-output-reference/src/overview/group-internal-gains-people-lights-other.tex
@@ -2452,7 +2452,7 @@ \subsubsection{Outputs}\label{outputs-indoorlivingwall}
\paragraph{Indoor Living Wall Sensible Heat Gain Rate {[}W{]}}\label{indoor-living-wall-sensible-heat-gain-rate-w}
-This output is the sensible heat gain rate from indoor living walls in W and determined by surface heat balance. Positive sign represents heat loss from plants or heat gain to indoor space; negative sign represents heat gain to plants or heat loss from indoor space.
+This output is the sensible heat gain rate from indoor living walls in W and determined by surface heat balance. Positive sign represents heat gain of spaces; negative sign represents heat loss of spaces.
\paragraph{Indoor Living Wall Latent Heat Gain Rate {[}W{]}}\label{indoor-living-wall-latent-heat-gain-rate-w}
diff --git a/release/Deprecation.in.html b/release/Deprecation.in.html
index 2e00906c45b..aea0c5bbdeb 100644
--- a/release/Deprecation.in.html
+++ b/release/Deprecation.in.html
@@ -134,6 +134,15 @@ Geometry Transformation
this capability are now considered potentially deprecated.
+ EP-Launch (Classic)
+
+ The EP-Launch tool that has been packaged with EnergyPlus for decades is tabbed for potential removal in a
+ future release. A new Python-based cross-platform version of EP-Launch has been developed, tested, and
+ released, but not included in the EnergyPlus installation, thus limiting adoption. With 24.2, we are packaging
+ that new tool with EnergyPlus installations, and will await feedback from users. Based on this, the classic
+ EP-Launch tool will be placed on the deprecation path.
+
+
Level 2 Deprecation Status
32-bit Windows Builds
@@ -171,6 +180,13 @@ Outdated Mac Builds
Mac 10.15 builds will not be provided after the release of 23.2.
+ EP-Compare
+
+ The EP-Compare utility has been removed from the EnergyPlus install package. The program had issues which
+ had not been reported, hinting that it was not being used. The code and binaries have been archived at
+ https://github.com/JasonGlazer/ep-compare .
+
+
diff --git a/release/readme.in.html b/release/readme.in.html
index b86d7adc888..eff1f6fe1b5 100644
--- a/release/readme.in.html
+++ b/release/readme.in.html
@@ -1,5 +1,5 @@
-
+
@@ -35,7 +35,8 @@
-
EnergyPlus
+
+ EnergyPlus
Version @CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@.@CMAKE_VERSION_PATCH@
@CMAKE_PROJECTED_RELEASE_DATE@
@@ -90,12 +91,41 @@
Using EnergyPlus
* Python Ecosystem *
- While EnergyPlus will continue to provide users with current workflows and installation methods, we are pushing
- toward a more flexible EnergyPlus that behaves like a standard Python library. An upcoming version will allow
- users to pip install energyplus, which will bring down the EnergyPlus native libraries plus the Python API
- bindings, ready to be used by the user's desired Python environment. This should make setting up EnergyPlus
- much easier for many use cases!
+ The EnergyPlus-Python connections continue to grow. The Python-focused deployment via PyPi is still coming,
+ but will remain on the test server on PyPi for now.
+ Once official releases are ready, they will be on the
+ main PyPi page, so check there if interested.
+ The pip install energyplus
experience will bring EnergyPlus native libraries plus the Python API
+ bindings, ready to be used by the user's desired Python environment. This should make setting up EnergyPlus
+ much easier for many Python-facing use cases!
+
+ In addition to the Pip Install work coming along, we are also working to improve our Python integration for
+ traditional EnergyPlus use cases. As of 24.2, when a user downloads the install package onto their machine,
+ they will get the new cross-platform Python-based EP-Launch. The classic EP-Launch is still packaged for now,
+ but will likely be deprecated in favor of the Python tools soon. There are two ways to launch this new
+ EP-Launch:
+
+
+ For Windows , there is a batch file right inside the EnergyPlus install folder called
+ EPLaunchPython
that will launch the EP-Launch application:
+
+ Just double click it! It will open a terminal window before launching the Python app, but
+ you can ignore that for now. Once we get some testing feedback, we'll include it as a proper shortcut
+ on the Start Menu and other locations.
+
+
+ On all platforms, you can launch the new EP-Launch right from the command line using a new auxiliary
+ command class. Simply launch a terminal, and execute a single command. On Windows, it would be
+ C:\Path\To\EnergyPlusV24-2-0\energyplus.exe auxiliary eplaunch
. On POSIX-y systems, it would
+ be /path/to/energyplus auxiliary eplaunch
. Give it a try and let us know how it goes. As
+ always, we appreciate issue reports on our
+ GitHub repository .
+
+
+
What’s going on in V@CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@?
@@ -158,23 +188,21 @@
No, they are different
aria-expanded="false"
aria-controls="collapseCompatible">
Is version @CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@ backward compatible?
- Can I run v@PREV_VERSION_MAJOR@.@PREV_VERSION_MINOR@ file in v@CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@?
+ Can I run v@PREV_VERSION_MAJOR@.@PREV_VERSION_MINOR@ file in
+ v@CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@?
Some objects require transition
There have been changes in the following objects which require conversion. Either read and follow
- the Rules document or use the IDFVersionUpdater utility. The “Rules” document contains information
+ the "Rules" document or use the IDFVersionUpdater utility. The “Rules” document contains information
on exact object changes that you can do by hand. The updater program is described more fully in the
Auxiliary Programs document.
- AirLoopHVAC:UnitarySystem
- ComfortViewFactorAngles
- HeatExchanger:AirToAir:SensibleAndLatent
- People
- ZoneHVAC:PackagedTerminalAirConditioner
- ZoneHVAC:PackagedTerminalHeatPump
- ZoneHVAC:WaterToAirHeatPump
+ HeatPump:PlantLoop:EIR:Cooling
+ HeatPump:PlantLoop:EIR:Heating
+ OutputControl:Files
+ ZoneHVAC:TerminalUnit:VariableRefrigerantFlow
@@ -215,7 +243,7 @@
Documentation
href="https://energyplus.net/documentation">online. For
new users of EnergyPlus, a
guide called the EnergyPlus Essentials was developed and is available with the installed pdf documentation.
Big Ladder Software is also hosting html versions of the
- EnergyPlus Documentation
online .
+ EnergyPlus Documentation
online .
There are some other documents of interest available on the EnergyPlus web site including:
@@ -246,31 +274,32 @@
New Features
Description
- 10081
- API Enhancements
+ 10311
+ NewFeature: Additional ASHRAE Metrics for E+ 24-1
- 10277
- Enhancement for Heat Exchanger for Variable-Speed Heat Recovery Ventilation
+ 10372
+ Add Reports to Support createRMD - ruleset model description
- 10363
- Add E+ API demo to the install
+ 10379
+ Air-To-Water Heat Pump with Heat Recovery
- 10385
- Indoor living wall module
+ 10415
+ Chiller economizing using thermosiphon or fluid heat exchanger free cooling
-
-
Runtime Performance Enhancing Developments
-
- PR #
- Description
+ 10511
+ Variable flow condenser plant control
- 10231
- SetupOutputVariable wrapper to use enum type parameters (endUseCategory, ReportingFrequency, and eResouceType)
+ 10658
+ A couple API Endpoints
+
+
+ 10716
+ Initial Python App Packaging
Targeted Refactoring Efforts
@@ -280,24 +309,20 @@
Targeted Refactoring Efforts
Description
- 10281
- Initial WeatherManager refactor
-
-
- 10289
- First (and only?) Pollution module refactor
+ 10323
+ Reformat eplusout.dbg file for easier excel viewing
- 10347
- OutputProcessor Refactor
+ 10474
+ Fans Refactor
- 10351
- DaylightingManager Refactor -- Part 2
+ 10720
+ Material Refactor
- 10404
- Heat Pump Plant Loop EIR refactoring
+ Many PRs
+ Addressing CppCheck warnings and suggestions across our codebase
@@ -316,18 +341,18 @@
Targeted Refactoring Efforts
Platforms
- We test and develop on Windows 10 and 11, and currently produce 32 and 64 bit builds on Windows. The 32-bit
- build is likely to be removed at some point soon. For Linux, we provide packages for
- Ubuntu 20.04 and 22.04. This release also includes an Ubuntu 18.04 build, but moving forward we will be
- eliminating that. On Mac, we are releasing an installer for OSX 10.15, 11, and 12, but the 10.15 will be
+ We test and develop on Windows 10 and 11, and currently produce 32 and 64 bit builds on Windows. The 32-bit
+ build is likely to be removed at some point soon. For Linux, we provide packages for
+ Ubuntu 20.04 and 22.04. This release also includes an Ubuntu 18.04 build, but moving forward we will be
+ eliminating that. On Mac, we are releasing an installer for OSX 10.15, 11, and 12, but the 10.15 will be
eliminated soon.
- Windows 10 and 11
+ Windows 11
- Linux (Ubuntu 18.04, 20.04, 22.04) 64 bit versions
+ Linux (Ubuntu 22.04 and 24.04) 64 bit versions
- Mac OSX 10.15, 11, and 12 64 bit versions
+ Mac OSX 12 x64 and 13 arm64
EnergyPlus V@CMAKE_VERSION_MAJOR@.@CMAKE_VERSION_MINOR@ has been tested on all of these platforms
@@ -412,7 +437,8 @@ Additional steps you may want to consider:
University of California through Ernest Orlando Lawrence Berkeley National Laboratory, Oak Ridge National
Laboratory, managed by
UT-Battelle, Alliance for Sustainable Energy, LLC, and other contributors. All rights reserved.
- Other Notices and Acknowledgments are found in the Other Notices and Acknowledgments are found in the
+ Acknowledgments
document.
diff --git a/scripts/dev/build_regression_summary.py b/scripts/dev/build_regression_summary.py
index 641a228fa3a..2228284517a 100644
--- a/scripts/dev/build_regression_summary.py
+++ b/scripts/dev/build_regression_summary.py
@@ -54,7 +54,8 @@
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
-from sys import argv
+from os import path
+from sys import argv, exit
summary_input_md_file = argv[1]
summary_output_js_file = argv[2]
@@ -63,6 +64,12 @@
github_run_id = argv[5]
artifact_url = argv[6]
+if not path.exists(summary_input_md_file):
+ print("Regression script shows failure exit code, but could not find summary file.")
+ print("This generally indicates that the regression script had an unhandled failure.")
+ print("Check the 'Run Regressions' GitHub Action step above for more helpful information")
+ exit(1)
+
with open(summary_input_md_file) as md:
md_contents = md.read()
diff --git a/scripts/dev/create_shortcut.ps1 b/scripts/dev/create_shortcut.ps1
new file mode 100644
index 00000000000..eefe9b38f61
--- /dev/null
+++ b/scripts/dev/create_shortcut.ps1
@@ -0,0 +1,11 @@
+param (
+ [string]$TargetPath,
+ [string]$ShortcutPath,
+ [string]$Arguments
+)
+
+$WScriptShell = New-Object -ComObject WScript.Shell
+$Shortcut = $WScriptShell.CreateShortcut($ShortcutPath)
+$Shortcut.TargetPath = $TargetPath
+$Shortcut.Arguments = $Arguments
+$Shortcut.Save()
diff --git a/scripts/dev/gha_regressions.py b/scripts/dev/gha_regressions.py
index b3de9964190..46c8db4c34d 100644
--- a/scripts/dev/gha_regressions.py
+++ b/scripts/dev/gha_regressions.py
@@ -71,6 +71,7 @@ class RegressionManager:
def __init__(self):
self.root_index_files_no_diff = []
self.root_index_files_diffs = []
+ self.root_index_files_failed = []
self.diffs_by_idf = defaultdict(list)
self.diffs_by_type = defaultdict(list)
self.summary_results = {}
@@ -243,6 +244,11 @@ def bundle_root_index_html(self, header_info: list[str]) -> str:
diff_content = ""
for d in self.root_index_files_diffs:
diff_content += f"""{d} \n"""
+ num_failed = len(self.root_index_files_failed)
+ nfs = 's' if num_failed == 0 or num_failed > 1 else ''
+ failed_content = ""
+ for nf in self.root_index_files_failed:
+ failed_content += f"""{nf} \n"""
# set up diff type listing
diff_type_keys = sorted(self.diffs_by_type.keys())
@@ -370,6 +376,24 @@ def bundle_root_index_html(self, header_info: list[str]) -> str:
+
+
+
Summary by Diff Type
@@ -446,37 +470,42 @@ def check_all_regressions(self, base_testfiles: Path, mod_testfiles: Path, bundl
modified = mod_testfiles / baseline.name
if not modified.exists():
continue # TODO: Should we warn that it is missing?
- entry, diffs = self.single_file_regressions(baseline, modified)
- if diffs:
- self.root_index_files_diffs.append(baseline.name)
+ try:
+ entry, diffs = self.single_file_regressions(baseline, modified)
+ if diffs:
+ self.root_index_files_diffs.append(baseline.name)
+ any_diffs = True
+ potential_diff_files = baseline.glob("*.*.*") # TODO: Could try to get this from the regression tool
+ target_dir_for_this_file_diffs = bundle_root / baseline.name
+ if potential_diff_files:
+ if target_dir_for_this_file_diffs.exists():
+ rmtree(target_dir_for_this_file_diffs)
+ target_dir_for_this_file_diffs.mkdir()
+ index_contents_this_file = ""
+ for potential_diff_file in potential_diff_files:
+ copy(potential_diff_file, target_dir_for_this_file_diffs)
+ diff_file_with_html = target_dir_for_this_file_diffs / (potential_diff_file.name + '.html')
+ if potential_diff_file.name.endswith('.htm'):
+ # already a html file, just upload the raw contents but renamed as ...htm.html
+ copy(potential_diff_file, diff_file_with_html)
+ else:
+ # it's not an HTML file, wrap it inside an HTML wrapper in a temp file and send it
+ contents = potential_diff_file.read_text()
+ wrapped_contents = self.single_diff_html(contents)
+ diff_file_with_html.write_text(wrapped_contents)
+ index_contents_this_file += self.regression_row_in_single_test_case_html(potential_diff_file.name)
+ index_file = target_dir_for_this_file_diffs / 'index.html'
+ index_this_file = self.single_test_case_html(index_contents_this_file)
+ index_file.write_text(index_this_file)
+ else:
+ self.root_index_files_no_diff.append(baseline.name)
+ so_far = ' Diffs! ' if any_diffs else 'No diffs'
+ if entry_num % 40 == 0:
+ print(f"On file #{entry_num}/{len(entries)} ({baseline.name}), Diff status so far: {so_far}")
+ except Exception as e:
any_diffs = True
- potential_diff_files = baseline.glob("*.*.*") # TODO: Could try to get this from the regression tool
- target_dir_for_this_file_diffs = bundle_root / baseline.name
- if potential_diff_files:
- if target_dir_for_this_file_diffs.exists():
- rmtree(target_dir_for_this_file_diffs)
- target_dir_for_this_file_diffs.mkdir()
- index_contents_this_file = ""
- for potential_diff_file in potential_diff_files:
- copy(potential_diff_file, target_dir_for_this_file_diffs)
- diff_file_with_html = target_dir_for_this_file_diffs / (potential_diff_file.name + '.html')
- if potential_diff_file.name.endswith('.htm'):
- # already a html file, just upload the raw contents but renamed as ...htm.html
- copy(potential_diff_file, diff_file_with_html)
- else:
- # it's not an HTML file, wrap it inside an HTML wrapper in a temp file and send it
- contents = potential_diff_file.read_text()
- wrapped_contents = self.single_diff_html(contents)
- diff_file_with_html.write_text(wrapped_contents)
- index_contents_this_file += self.regression_row_in_single_test_case_html(potential_diff_file.name)
- index_file = target_dir_for_this_file_diffs / 'index.html'
- index_this_file = self.single_test_case_html(index_contents_this_file)
- index_file.write_text(index_this_file)
- else:
- self.root_index_files_no_diff.append(baseline.name)
- so_far = ' Diffs! ' if any_diffs else 'No diffs'
- if entry_num % 40 == 0:
- print(f"On file #{entry_num}/{len(entries)} ({baseline.name}), Diff status so far: {so_far}")
+ print(f"Regression run *failed* trying to process file: {baseline.name}; reason: {e}")
+ self.root_index_files_failed.append(baseline.name)
meta_data = [
f"Regression time stamp in UTC: {datetime.now(UTC)}",
f"Regression time stamp in Central Time: {datetime.now(ZoneInfo('America/Chicago'))}",
diff --git a/scripts/dev/verify_signature.py b/scripts/dev/verify_signature.py
index 4edde9aa175..c264ba028ce 100644
--- a/scripts/dev/verify_signature.py
+++ b/scripts/dev/verify_signature.py
@@ -73,7 +73,6 @@ class Generator(Enum):
BUNDLED_APPS = [
"PreProcess/EP-Launch-Lite.app",
"PreProcess/IDFVersionUpdater/IDFVersionUpdater.app",
- "PostProcess/EP-Compare/EP-Compare.app",
]
diff --git a/src/EnergyPlus/BaseboardRadiator.cc b/src/EnergyPlus/BaseboardRadiator.cc
index 62ee9c5446a..95075a1901a 100644
--- a/src/EnergyPlus/BaseboardRadiator.cc
+++ b/src/EnergyPlus/BaseboardRadiator.cc
@@ -418,6 +418,8 @@ namespace BaseboardRadiator {
thisBaseboard.ZonePtr = DataZoneEquipment::GetZoneEquipControlledZoneNum(
state, DataZoneEquipment::ZoneEquipType::BaseboardConvectiveWater, thisBaseboard.EquipID);
+
+ thisBaseboard.checkForZoneSizing(state); // check if any autosizing is being done
}
if (ErrorsFound) {
@@ -623,8 +625,6 @@ namespace BaseboardRadiator {
state.dataSize->DataScalableCapSizingON = false;
if (state.dataSize->CurZoneEqNum > 0) {
- auto &zoneEqSizing = state.dataSize->ZoneEqSizing(state.dataSize->CurZoneEqNum);
- auto const &finalZoneSizing = state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum);
bool FlowAutoSize = false; // Indicator to autosizing water volume flow
if (this->WaterVolFlowRateMax == DataSizing::AutoSize) {
@@ -636,7 +636,8 @@ namespace BaseboardRadiator {
state, cCMO_BBRadiator_Water, this->EquipID, "User-Specified Maximum Water Flow Rate [m3/s]", this->WaterVolFlowRateMax);
}
} else {
- CheckZoneSizing(state, cCMO_BBRadiator_Water, this->EquipID);
+ auto &zoneEqSizing = state.dataSize->ZoneEqSizing(state.dataSize->CurZoneEqNum);
+ auto const &finalZoneSizing = state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum);
std::string_view const CompType = cCMO_BBRadiator_Water;
std::string_view const CompName = this->EquipID;
state.dataSize->DataFracOfAutosizedHeatingCapacity = 1.0;
@@ -651,7 +652,6 @@ namespace BaseboardRadiator {
if (CapSizingMethod == DataSizing::HeatingDesignCapacity) {
if (this->ScaledHeatingCapacity == DataSizing::AutoSize) {
- CheckZoneSizing(state, CompType, CompName);
zoneEqSizing.DesHeatingLoad = finalZoneSizing.NonAirSysDesHeatLoad;
} else {
zoneEqSizing.DesHeatingLoad = this->ScaledHeatingCapacity;
@@ -665,7 +665,6 @@ namespace BaseboardRadiator {
TempSize = zoneEqSizing.DesHeatingLoad;
state.dataSize->DataScalableCapSizingON = true;
} else if (CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity) {
- CheckZoneSizing(state, CompType, CompName);
zoneEqSizing.HeatingCapacity = true;
state.dataSize->DataFracOfAutosizedHeatingCapacity = this->ScaledHeatingCapacity;
zoneEqSizing.DesHeatingLoad = finalZoneSizing.NonAirSysDesHeatLoad;
@@ -749,6 +748,8 @@ namespace BaseboardRadiator {
state, cCMO_BBRadiator_Water, this->EquipID, "User-Specified U-Factor Times Area Value [W/K]", this->UA);
}
} else {
+ auto &zoneEqSizing = state.dataSize->ZoneEqSizing(state.dataSize->CurZoneEqNum);
+ auto const &finalZoneSizing = state.dataSize->FinalZoneSizing(state.dataSize->CurZoneEqNum);
this->WaterInletTemp = state.dataSize->PlantSizData(PltSizHeatNum).ExitTemp;
this->AirInletTemp = finalZoneSizing.ZoneTempAtHeatPeak;
this->AirInletHumRat = finalZoneSizing.ZoneHumRatAtHeatPeak;
@@ -772,7 +773,6 @@ namespace BaseboardRadiator {
CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity) {
if (CapSizingMethod == DataSizing::HeatingDesignCapacity) {
if (this->ScaledHeatingCapacity == DataSizing::AutoSize) {
- CheckZoneSizing(state, CompType, CompName);
zoneEqSizing.DesHeatingLoad = finalZoneSizing.NonAirSysDesHeatLoad;
} else {
zoneEqSizing.DesHeatingLoad = this->ScaledHeatingCapacity;
@@ -786,7 +786,6 @@ namespace BaseboardRadiator {
TempSize = zoneEqSizing.DesHeatingLoad;
state.dataSize->DataScalableCapSizingON = true;
} else if (CapSizingMethod == DataSizing::FractionOfAutosizedHeatingCapacity) {
- CheckZoneSizing(state, CompType, CompName);
zoneEqSizing.HeatingCapacity = true;
state.dataSize->DataFracOfAutosizedHeatingCapacity = this->ScaledHeatingCapacity;
zoneEqSizing.DesHeatingLoad = finalZoneSizing.NonAirSysDesHeatLoad;
@@ -941,6 +940,20 @@ namespace BaseboardRadiator {
}
}
+ void BaseboardParams::checkForZoneSizing(EnergyPlusData &state)
+ {
+ // If any sizing is requested, check that zone sizing has been done
+ // Condition 1: Is UA autosized)?
+ // Condition 2: Is max flow rate autosized?
+ // Condition 3: Is HeatingDesignCapacity used and autosized)
+ // Condition 4: Is FractionOfAutosizedHeatingCapacity used and heating capacity is autosized
+ if ((this->UA == DataSizing::AutoSize) || (this->WaterVolFlowRateMax == DataSizing::AutoSize) ||
+ ((this->HeatingCapMethod == DataSizing::HeatingDesignCapacity) && (this->ScaledHeatingCapacity == DataSizing::AutoSize)) ||
+ ((this->HeatingCapMethod == DataSizing::FractionOfAutosizedHeatingCapacity) && (this->ScaledHeatingCapacity == DataSizing::AutoSize))) {
+ CheckZoneSizing(state, cCMO_BBRadiator_Water, this->EquipID);
+ }
+ }
+
void SimHWConvective(EnergyPlusData &state, int &BaseboardNum, Real64 &LoadMet)
{
// SUBROUTINE INFORMATION:
diff --git a/src/EnergyPlus/BaseboardRadiator.hh b/src/EnergyPlus/BaseboardRadiator.hh
index a21a326e044..7dc8a51adb3 100644
--- a/src/EnergyPlus/BaseboardRadiator.hh
+++ b/src/EnergyPlus/BaseboardRadiator.hh
@@ -107,6 +107,8 @@ namespace BaseboardRadiator {
void InitBaseboard(EnergyPlusData &state, int baseboardNum);
void SizeBaseboard(EnergyPlusData &state, int baseboardNum);
+
+ void checkForZoneSizing(EnergyPlusData &state);
};
void SimBaseboard(
diff --git a/src/EnergyPlus/CMakeLists.txt b/src/EnergyPlus/CMakeLists.txt
index 56f664ba014..106b42a5abd 100644
--- a/src/EnergyPlus/CMakeLists.txt
+++ b/src/EnergyPlus/CMakeLists.txt
@@ -523,6 +523,8 @@ set(SRC
Pumps.hh
PurchasedAirManager.cc
PurchasedAirManager.hh
+ PythonEngine.cc
+ PythonEngine.hh
RefrigeratedCase.cc
RefrigeratedCase.hh
ReportCoilSelection.cc
@@ -967,7 +969,11 @@ if(LINK_WITH_PYTHON)
add_custom_command(
TARGET energyplusapi
POST_BUILD # TODO: I don't think we want to quote the generator expression
- COMMAND ${Python_EXECUTABLE} "${PROJECT_SOURCE_DIR}/cmake/PythonCopyStandardLib.py" "$" "python_standard_lib")
+ COMMAND ${Python_EXECUTABLE} "${PROJECT_SOURCE_DIR}/cmake/PythonCopyStandardLib.py" "$" "python_lib"
+ COMMAND ${CMAKE_COMMAND} -E env --unset=PIP_REQUIRE_VIRTUALENV
+ ${Python_EXECUTABLE} -m pip install --target="$/python_lib" --upgrade energyplus-launch==3.7.2
+ COMMAND ${Python_EXECUTABLE} "${PROJECT_SOURCE_DIR}/cmake/PythonFixUpTclTk.py" "$/python_lib"
+ )
endif()
if(BUILD_PACKAGE)
@@ -975,7 +981,13 @@ if(BUILD_PACKAGE)
if(LINK_WITH_PYTHON)
# we'll want to grab the standard lib for python plugins
# TODO: I don't think we want to quote the generator expression
- install(DIRECTORY "$/python_standard_lib/" DESTINATION "./python_standard_lib")
+ install(DIRECTORY "$/python_lib/" DESTINATION "./python_lib")
+ if(WIN32)
+ # on Windows, with Build Package, and also Link With Python, we can also drop in shortcuts to the new auxiliary CLI
+ # NOTE: The install command COMPONENTS should line up so that they are run at the same packaging step
+ install(CODE "execute_process(COMMAND powershell.exe -ExecutionPolicy Bypass -File ${PROJECT_SOURCE_DIR}/scripts/dev/create_shortcut.ps1 -TargetPath \"$\" -ShortcutPath \"$/EPLaunchPython.lnk\" -Arguments \"auxiliary eplaunch\")" COMPONENT Auxiliary)
+ install(FILES $/EPLaunchPython.lnk DESTINATION "./" COMPONENT Auxiliary)
+ endif()
endif()
# we'll want to always provide the C API headers
install(FILES ${API_HEADERS} DESTINATION "./include/EnergyPlus/api")
diff --git a/src/EnergyPlus/CommandLineInterface.cc b/src/EnergyPlus/CommandLineInterface.cc
index 87a0f00abd0..4ad89e369ac 100644
--- a/src/EnergyPlus/CommandLineInterface.cc
+++ b/src/EnergyPlus/CommandLineInterface.cc
@@ -61,6 +61,10 @@
#include
#include
+#if LINK_WITH_PYTHON
+#include
+#endif
+
namespace EnergyPlus {
namespace CommandLineInterface {
@@ -230,6 +234,56 @@ Built on Platform: {}
// bool debugCLI = false;
app.add_flag("--debug-cli", debugCLI, "Print the result of the CLI assignments to the console and exit")->group(""); // Empty group to hide it
+#if LINK_WITH_PYTHON
+ auto *auxiliaryToolsSubcommand = app.add_subcommand("auxiliary", "Run Auxiliary Python Tools");
+ auxiliaryToolsSubcommand->require_subcommand(); // should default to requiring 1 or more additional args?
+
+ std::vector python_fwd_args;
+ auto *epLaunchSubCommand = auxiliaryToolsSubcommand->add_subcommand("eplaunch", "EnergyPlus Launch");
+ epLaunchSubCommand->add_option("args", python_fwd_args, "Extra Arguments forwarded to EnergyPlus Launch")->option_text("ARG ...");
+ epLaunchSubCommand->positionals_at_end(true);
+ epLaunchSubCommand->footer("You can pass extra arguments after the eplaunch keyword, they will be forwarded to EnergyPlus Launch.");
+
+ epLaunchSubCommand->callback([&state, &python_fwd_args] {
+ EnergyPlus::Python::PythonEngine engine(state);
+ // There's probably better to be done, like instantiating the pythonEngine with the argc/argv then calling PyRun_SimpleFile but whatever
+ std::string cmd = R"python(import sys
+sys.argv.clear()
+sys.argv.append("energyplus")
+)python";
+ for (const auto &arg : python_fwd_args) {
+ cmd += fmt::format("sys.argv.append(\"{}\")\n", arg);
+ }
+
+ fs::path programDir = FileSystem::getParentDirectoryPath(FileSystem::getAbsolutePath(FileSystem::getProgramPath()));
+ fs::path const pathToPythonPackages = programDir / "python_lib";
+ std::string sPathToPythonPackages = std::string(pathToPythonPackages.string());
+ std::replace(sPathToPythonPackages.begin(), sPathToPythonPackages.end(), '\\', '/');
+ cmd += fmt::format("sys.path.insert(0, \"{}\")\n", sPathToPythonPackages);
+
+ std::string tclConfigDir = "";
+ for (auto &p : std::filesystem::directory_iterator(pathToPythonPackages)) {
+ if (p.is_directory()) {
+ std::string dirName = p.path().filename().string();
+ if (dirName.find("tcl", 0) == 0 && dirName.find(".", 0) > 0) {
+ tclConfigDir = dirName;
+ break;
+ }
+ }
+ }
+ cmd += "from os import environ\n";
+ cmd += fmt::format("environ[\'TCL_LIBRARY\'] = \"{}/{}\"\n", sPathToPythonPackages, tclConfigDir);
+
+ cmd += R"python(
+from eplaunch.tk_runner import main_gui
+main_gui()
+)python";
+ // std::cout << "Trying to execute this python snippet: " << std::endl << cmd << std::endl;
+ engine.exec(cmd);
+ exit(0);
+ });
+#endif
+
app.footer("Example: energyplus -w weather.epw -r input.idf");
const bool eplusRunningViaAPI = state.dataGlobal->eplusRunningViaAPI;
@@ -695,33 +749,16 @@ state.dataStrGlobals->inputFilePath='{:g}',
// Duplicate the kind of reading the Windows "GetINISetting" would
// do.
- // REFERENCES:
- // na
-
// Using/Aliasing
using namespace EnergyPlus;
using namespace DataStringGlobals;
- // Locals
- // SUBROUTINE ARGUMENT DEFINITIONS:
-
- // SUBROUTINE PARAMETER DEFINITIONS:
-
- // INTERFACE BLOCK SPECIFICATIONS
- // na
-
- // DERIVED TYPE DEFINITIONS
- // na
-
- // SUBROUTINE LOCAL VARIABLE DECLARATIONS:
-
std::string Param;
std::string::size_type ILB;
std::string::size_type IRB;
std::string::size_type IEQ;
std::string::size_type IPAR;
std::string::size_type IPOS;
- std::string::size_type ILEN;
// Formats
@@ -731,7 +768,6 @@ state.dataStrGlobals->inputFilePath='{:g}',
Param = KindofParameter;
strip(Param);
- ILEN = len(Param);
inputFile.rewind();
bool Found = false;
bool NewHeading = false;
diff --git a/src/EnergyPlus/DXCoils.cc b/src/EnergyPlus/DXCoils.cc
index c77543a6427..dc78db35aa7 100644
--- a/src/EnergyPlus/DXCoils.cc
+++ b/src/EnergyPlus/DXCoils.cc
@@ -231,7 +231,7 @@ void SimDXCoil(EnergyPlusData &state,
CalcDXHeatingCoil(state, DXCoilNum, PartLoadRatio, fanOp, AirFlowRatio, MaxCap);
} break;
case HVAC::CoilVRF_FluidTCtrl_Cooling: {
- CalcVRFCoolingCoil_FluidTCtrl(state, DXCoilNum, HVAC::CompressorOp::On, FirstHVACIteration, PartLoadRatio, fanOp, CompCycRatio, _, _);
+ CalcVRFCoolingCoil_FluidTCtrl(state, DXCoilNum, HVAC::CompressorOp::On, FirstHVACIteration, PartLoadRatio, fanOp, CompCycRatio, _, _, MaxCap);
} break;
case HVAC::CoilVRF_FluidTCtrl_Heating: {
CalcVRFHeatingCoil_FluidTCtrl(state, compressorOp, DXCoilNum, PartLoadRatio, fanOp, _, MaxCap);
@@ -6873,7 +6873,8 @@ void InitDXCoil(EnergyPlusData &state, int const DXCoilNum) // number of the cur
} else if (thisDXCoil.DXCoilType_Num == HVAC::CoilVRF_Cooling) {
CalcVRFCoolingCoil(state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, _);
} else if (thisDXCoil.DXCoilType_Num == HVAC::CoilVRF_FluidTCtrl_Cooling) {
- CalcVRFCoolingCoil_FluidTCtrl(state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _);
+ CalcVRFCoolingCoil_FluidTCtrl(
+ state, DXCoilNum, HVAC::CompressorOp::On, false, 1.0, HVAC::FanOp::Cycling, 1.0, _, _, Constant::MaxCap);
}
// coil outlets
@@ -16424,7 +16425,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
HVAC::FanOp const fanOp, // Allows parent object to control fan operation
Real64 const CompCycRatio, // cycling ratio of VRF condenser
ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types
- ObjexxFCL::Optional OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow
+ ObjexxFCL::Optional OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow
+ Real64 MaxCoolCap // maximum allowed cooling capacity
)
{
// SUBROUTINE INFORMATION:
@@ -16649,7 +16651,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
ShowFatalError(state, format("{} \"{}\" - Rated total cooling capacity is zero or less.", thisDXCoil.DXCoilType, thisDXCoil.Name));
}
- TotCap = thisDXCoil.RatedTotCap(Mode);
+ TotCap = min(MaxCoolCap, thisDXCoil.RatedTotCap(Mode));
+
QCoilReq = -PartLoadRatio * TotCap;
if (PartLoadRatio == 0.0) {
AirMassFlowMin = state.dataHVACVarRefFlow->OACompOffMassFlow;
@@ -16818,10 +16821,8 @@ void CalcVRFCoolingCoil_FluidTCtrl(EnergyPlusData &state,
}
}
- // Coil total cooling
- Real64 AirMassFlowRate = thisDXCoil.InletAirMassFlowRate;
// Coil total/sensible/latent cooling rates
- CalcComponentSensibleLatentOutput(AirMassFlowRate,
+ CalcComponentSensibleLatentOutput(AirMassFlow * PartLoadRatio,
InletAirDryBulbTemp,
InletAirHumRat,
OutletAirTemp,
@@ -17252,8 +17253,7 @@ void ControlVRFIUCoil(EnergyPlusData &state,
MaxSH = 15;
MaxSC = 20;
Garate = state.dataDXCoils->DXCoil(CoilIndex).RatedAirMassFlowRate(1);
- // why always limit the minimum fan speed ratio to 0.65?
- FanSpdRatioMin = min(max(OAMassFlow / Garate, 0.65), 1.0); // ensure that coil flow rate is higher than OA flow rate
+ FanSpdRatioMin = min(OAMassFlow / Garate, 1.0); // ensure that coil flow rate is higher than OA flow rate
if (QCoil == 0) {
// No Heating or Cooling
diff --git a/src/EnergyPlus/DXCoils.hh b/src/EnergyPlus/DXCoils.hh
index af96c667b24..e79a70ca309 100644
--- a/src/EnergyPlus/DXCoils.hh
+++ b/src/EnergyPlus/DXCoils.hh
@@ -541,7 +541,7 @@ namespace DXCoils {
ObjexxFCL::Optional PartLoadRatio = _, // part load ratio (for single speed cycling unit)
ObjexxFCL::Optional OnOffAFR = _, // ratio of compressor on airflow to compressor off airflow
ObjexxFCL::Optional CoilCoolingHeatingPLRRatio = _, // used for cycling fan RH control
- ObjexxFCL::Optional MaxCap = _, // maximum cooling capacity of VRF terminal units
+ ObjexxFCL::Optional MaxCap = Constant::MaxCap, // maximum cooling capacity of VRF terminal units
ObjexxFCL::Optional CompCyclingRatio = _ // cycling ratio of VRF condenser connected to this TU
);
@@ -878,7 +878,8 @@ namespace DXCoils {
HVAC::FanOp const fanOp, // Allows parent object to control fan operation
Real64 const CompCycRatio, // cycling ratio of VRF condenser
ObjexxFCL::Optional_int_const PerfMode, // Performance mode for MultiMode DX coil; Always 1 for other coil types
- ObjexxFCL::Optional OnOffAirFlowRatio // ratio of compressor on airflow to compressor off airflow
+ ObjexxFCL::Optional OnOffAirFlowRatio, // ratio of compressor on airflow to compressor off airflow
+ Real64 MaxCoolCap = Constant::MaxCap // maximum allowed cooling capacity
);
void
diff --git a/src/EnergyPlus/DataGlobalConstants.hh b/src/EnergyPlus/DataGlobalConstants.hh
index 7ddb061d90f..3c7ff92e8fb 100644
--- a/src/EnergyPlus/DataGlobalConstants.hh
+++ b/src/EnergyPlus/DataGlobalConstants.hh
@@ -619,6 +619,8 @@ namespace Constant {
Real64 constexpr UniversalGasConst = 8314.462175; // Universal Gas Constant (J/mol*K)
Real64 constexpr convertJtoGJ = 1.0E-9; // Conversion factor for J to GJ
+ Real64 constexpr MaxCap(1.0e+20); // limit of zone terminal unit capacity
+
} // namespace Constant
} // namespace EnergyPlus
diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc
index 77decd6eef1..80b40eaaddd 100644
--- a/src/EnergyPlus/HVACVariableRefrigerantFlow.cc
+++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.cc
@@ -1479,8 +1479,8 @@ void GetVRFInputData(EnergyPlusData &state, bool &ErrorsFound)
state.dataHVACVarRefFlow->MaxHeatingCapacity.allocate(state.dataHVACVarRefFlow->NumVRFCond);
state.dataHVACVarRefFlow->CoolCombinationRatio.allocate(state.dataHVACVarRefFlow->NumVRFCond);
state.dataHVACVarRefFlow->HeatCombinationRatio.allocate(state.dataHVACVarRefFlow->NumVRFCond);
- state.dataHVACVarRefFlow->MaxCoolingCapacity = MaxCap;
- state.dataHVACVarRefFlow->MaxHeatingCapacity = MaxCap;
+ state.dataHVACVarRefFlow->MaxCoolingCapacity = Constant::MaxCap;
+ state.dataHVACVarRefFlow->MaxHeatingCapacity = Constant::MaxCap;
state.dataHVACVarRefFlow->CoolCombinationRatio = 1.0;
state.dataHVACVarRefFlow->HeatCombinationRatio = 1.0;
}
@@ -6589,8 +6589,8 @@ void InitVRF(EnergyPlusData &state, int const VRFTUNum, int const ZoneNum, bool
// terminal unit will be limited to 3-tons (see SimVRFCondenser where this variable is calculated).
if (CurrentEndTime > state.dataHVACVarRefFlow->CurrentEndTimeLast || TimeStepSysLast > state.dataHVACGlobal->TimeStepSys ||
(FirstHVACIteration && state.dataHVACVarRefFlow->MyBeginTimeStepFlag(VRFCond))) {
- state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = MaxCap;
- state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = MaxCap;
+ state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap;
+ state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = Constant::MaxCap;
state.dataHVACVarRefFlow->MyBeginTimeStepFlag(VRFCond) = false;
}
@@ -9601,8 +9601,10 @@ void VRFTerminalUnitEquipment::CalcVRF(EnergyPlusData &state,
}
}
// calculate sensible load met using delta enthalpy
+ Real64 TotalOutput = AirMassFlow * (Psychrometrics::PsyHFnTdbW(TempOut, SpecHumOut) -
+ Psychrometrics::PsyHFnTdbW(TempIn, SpecHumIn)); // total addition/removal rate, {W};
LoadMet = AirMassFlow * PsyDeltaHSenFnTdb2W2Tdb1W1(TempOut, SpecHumOut, TempIn, SpecHumIn); // sensible {W}
- LatentLoadMet = AirMassFlow * (SpecHumOut - SpecHumIn); // latent {kgWater/s}
+ LatentLoadMet = TotalOutput - LoadMet;
if (present(LatOutputProvided)) {
// CR9155 Remove specific humidity calculations
LatOutputProvided = LatentLoadMet;
@@ -9748,10 +9750,7 @@ void ReportVRFTerminalUnit(EnergyPlusData &state, int const VRFTUNum) // index t
TempOut = state.dataLoopNodes->Node(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).VRFTUOutletNodeNum).Temp;
TempIn = state.dataLoopNodes->Node(state.dataHVACVarRefFlow->VRFTU(VRFTUNum).VRFTUInletNodeNum).Temp;
}
- // latent heat vaporization/condensation used in moist air psychrometrics
- Real64 const H2OHtOfVap = PsyHgAirFnWTdb(0.0, TempOut);
- // convert latent in kg/s to watts
- TotalConditioning = SensibleConditioning + (LatentConditioning * H2OHtOfVap);
+ TotalConditioning = SensibleConditioning + LatentConditioning;
if (TotalConditioning <= 0.0) {
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingRate = std::abs(TotalConditioning);
@@ -9768,11 +9767,11 @@ void ReportVRFTerminalUnit(EnergyPlusData &state, int const VRFTUNum) // index t
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).SensibleHeatingRate = SensibleConditioning;
}
if (LatentConditioning <= 0.0) {
- state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = std::abs(LatentConditioning) * H2OHtOfVap;
+ state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = std::abs(LatentConditioning);
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = 0.0;
} else {
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentCoolingRate = 0.0;
- state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = LatentConditioning * H2OHtOfVap;
+ state.dataHVACVarRefFlow->VRFTU(VRFTUNum).LatentHeatingRate = LatentConditioning;
}
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingEnergy = state.dataHVACVarRefFlow->VRFTU(VRFTUNum).TotalCoolingRate * ReportingConstant;
state.dataHVACVarRefFlow->VRFTU(VRFTUNum).SensibleCoolingEnergy =
@@ -10571,7 +10570,7 @@ void LimitCoilCapacity(int const NumTUInList, // Number of terminal un
// sort TU capacity from lowest to highest
for (TempTUIndex = 1; TempTUIndex <= NumTUInList; ++TempTUIndex) {
- MinOutput = MaxCap;
+ MinOutput = Constant::MaxCap;
for (NumTU = 1; NumTU <= NumTUInList; ++NumTU) {
if (Temp2(NumTU) < MinOutput) {
MinOutput = Temp2(NumTU);
@@ -10579,7 +10578,7 @@ void LimitCoilCapacity(int const NumTUInList, // Number of terminal un
MinOutputIndex = NumTU;
}
}
- Temp2(MinOutputIndex) = MaxCap;
+ Temp2(MinOutputIndex) = Constant::MaxCap;
}
// find limit of "terminal unit" capacity so that sum of all TU's does not exceed condenser capacity
@@ -11367,9 +11366,6 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state, c
if (Q_c_TU_PL > CompEvaporatingCAPSpdMax) {
// Required load is beyond the max system capacity
- Q_c_TU_PL = CompEvaporatingCAPSpdMax;
- TU_CoolingLoad = CompEvaporatingCAPSpdMax;
- this->TUCoolingLoad = TU_CoolingLoad;
RefTSat = this->refrig->getSatTemperature(state, max(min(Pevap, RefPHigh), RefPLow), RoutineName);
h_IU_evap_out =
this->refrig->getSupHeatEnthalpy(state, max(RefTSat, this->IUEvaporatingTemp + 3), max(min(Pevap, RefPHigh), RefPLow), RoutineName);
@@ -11503,7 +11499,7 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state, c
this->HeatingCapacity = 0.0; // Include the piping loss
this->PipingCorrectionHeating = 1.0; // 1 means no piping loss
- state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = 0.0;
+ state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = Constant::MaxCap;
this->OUCondHeatRate = Q_h_OU;
this->OUEvapHeatRate = 0;
@@ -11720,8 +11716,8 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state, c
this->HeatingCapacity; // for report, maximum condensing capacity the system can provide
this->CoolingCapacity = 0.0; // Include the piping loss
- this->PipingCorrectionCooling = 0.0;
- state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = 0.0; // for report
+ this->PipingCorrectionCooling = 1.0;
+ state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; // for report
this->OUCondHeatRate = 0;
this->OUEvapHeatRate = Q_c_OU;
@@ -11957,13 +11953,13 @@ void VRFCondenserEquipment::CalcVRFCondenser_FluidTCtrl(EnergyPlusData &state, c
this->OUFanPower = 0.0;
this->VRFCondCyclingRatio = 0.0;
- this->HeatingCapacity = 0.0; // Include the piping loss
- this->PipingCorrectionHeating = 1.0; // 1 means no piping loss
- state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = MaxCap; // default value is MaxCap = 1e+20, not 0
+ this->HeatingCapacity = 0.0; // Include the piping loss
+ this->PipingCorrectionHeating = 1.0; // 1 means no piping loss
+ state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) = Constant::MaxCap; // yujie: default value is MaxCap = 1e+20, not 0
this->CoolingCapacity = 0.0; // Include the piping loss
this->PipingCorrectionCooling = 1.0;
- state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = MaxCap; // for report
+ state.dataHVACVarRefFlow->MaxCoolingCapacity(VRFCond) = Constant::MaxCap; // for report
this->CondensingTemp = state.dataEnvrn->OutDryBulbTemp;
this->EvaporatingTemp = state.dataEnvrn->OutDryBulbTemp;
@@ -12718,7 +12714,7 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state,
state.dataHVACVarRefFlow->CompOffMassFlow = state.dataHVACVarRefFlow->OACompOffMassFlow;
} else {
// identify the air flow rate corresponding to the coil load
- if (this->HeatingCoilPresent && state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) < MaxCap) {
+ if (this->HeatingCoilPresent && state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond) < Constant::MaxCap) {
// Only fix heating only mode for now
state.dataHVACVarRefFlow->CompOnMassFlow = CalVRFTUAirFlowRate_FluidTCtrl(
state, VRFTUNum, PartLoadRatio, FirstHVACIteration, state.dataHVACVarRefFlow->MaxHeatingCapacity(VRFCond));
@@ -12867,8 +12863,10 @@ void VRFTerminalUnitEquipment::CalcVRF_FluidTCtrl(EnergyPlusData &state,
}
}
// calculate sensible load met using delta enthalpy
+ Real64 TotalOutput = AirMassFlow * (Psychrometrics::PsyHFnTdbW(TempOut, SpecHumOut) -
+ Psychrometrics::PsyHFnTdbW(TempIn, SpecHumIn)); // total addition/removal rate, {W};
LoadMet = AirMassFlow * PsyDeltaHSenFnTdb2W2Tdb1W1(TempOut, SpecHumOut, TempIn, SpecHumIn); // sensible {W}
- LatentLoadMet = AirMassFlow * (SpecHumOut - SpecHumIn); // latent {kgWater/s}
+ LatentLoadMet = TotalOutput - LoadMet;
if (present(LatOutputProvided)) {
LatOutputProvided = LatentLoadMet;
}
diff --git a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh
index f2e1f1a2fa3..18069ff01e3 100644
--- a/src/EnergyPlus/HVACVariableRefrigerantFlow.hh
+++ b/src/EnergyPlus/HVACVariableRefrigerantFlow.hh
@@ -107,8 +107,6 @@ namespace HVACVariableRefrigerantFlow {
Num
};
- constexpr Real64 MaxCap(1.0e+20); // limit of zone terminal unit capacity
-
// VRF Algorithm Type
enum class AlgorithmType
{
diff --git a/src/EnergyPlus/IndoorGreen.cc b/src/EnergyPlus/IndoorGreen.cc
index 19d73bd4366..a8aa8536a33 100644
--- a/src/EnergyPlus/IndoorGreen.cc
+++ b/src/EnergyPlus/IndoorGreen.cc
@@ -365,6 +365,7 @@ namespace IndoorGreen {
DataHeatBalance::IntGainType::IndoorGreen,
&ig.SensibleRate,
nullptr,
+ nullptr,
&ig.LatentRate,
nullptr,
nullptr,
@@ -377,14 +378,13 @@ namespace IndoorGreen {
OutputProcessor::TimeStepType::Zone,
OutputProcessor::StoreType::Average,
ig.Name);
- SetupOutputVariable(
- state,
- "Indoor Living Wall Sensible Heat Gain Rate",
- Constant::Units::W,
- state.dataHeatBalSurf->SurfQConvInRep(ig.SurfPtr), // positive sign: heat loss from plants; negative sign: heat gain to plants
- OutputProcessor::TimeStepType::Zone,
- OutputProcessor::StoreType::Average,
- ig.Name);
+ SetupOutputVariable(state,
+ "Indoor Living Wall Sensible Heat Gain Rate",
+ Constant::Units::W,
+ ig.SensibleRate,
+ OutputProcessor::TimeStepType::Zone,
+ OutputProcessor::StoreType::Average,
+ ig.Name);
SetupOutputVariable(state,
"Indoor Living Wall Latent Heat Gain Rate",
Constant::Units::W,
@@ -430,7 +430,7 @@ namespace IndoorGreen {
SetupOutputVariable(state,
"Indoor Living Wall LED Sensible Heat Gain Rate",
Constant::Units::W,
- ig.SensibleRate,
+ ig.SensibleRateLED,
OutputProcessor::TimeStepType::Zone,
OutputProcessor::StoreType::Average,
ig.Name);
@@ -464,6 +464,7 @@ namespace IndoorGreen {
// Set the reporting variables to zero at each timestep.
for (auto &ig : state.dataIndoorGreen->indoorGreens) {
ig.SensibleRate = 0.0;
+ ig.SensibleRateLED = 0.0;
ig.LatentRate = 0.0;
ig.ZCO2 = 400;
ig.ZPPFD = 0;
@@ -581,13 +582,12 @@ namespace IndoorGreen {
ZoneNewHum = ZoneSatHum;
}
HMid = Psychrometrics::PsyHFnTdbW(ZoneNewTemp, ZonePreHum);
- ig.SensibleRate = (1 - ig.LEDRadFraction) * ig.LEDActualEleP; // convective heat gain from LED lights when LED is on; heat convection from
- // plants was considered and counted from plant surface heat balance.
ig.LatentRate = ZoneAirVol * rhoair * (HCons - HMid) / Timestep; // unit W
+ ig.SensibleRateLED = (1 - ig.LEDRadFraction) * ig.LEDActualEleP; // convective heat gain from LED lights when LED is on;
+ ig.SensibleRate = -1.0 * ig.LatentRate + ig.SensibleRateLED;
state.dataHeatBalSurf->SurfQAdditionalHeatSourceInside(ig.SurfPtr) =
- -1.0 * ig.LambdaET +
ig.LEDRadFraction * 0.9 * ig.LEDActualEleP /
- state.dataSurface->Surface(ig.SurfPtr).Area; // assume the energy from radiation for photosynthesis is only 10%.
+ state.dataSurface->Surface(ig.SurfPtr).Area; // assume the energy from radiation for photosynthesis is only 10%.
}
}
diff --git a/src/EnergyPlus/IndoorGreen.hh b/src/EnergyPlus/IndoorGreen.hh
index 2ab4f914d42..58e664bff8c 100644
--- a/src/EnergyPlus/IndoorGreen.hh
+++ b/src/EnergyPlus/IndoorGreen.hh
@@ -94,7 +94,8 @@ namespace IndoorGreen {
Real64 ZCO2 = 400;
Real64 ZVPD = 0.0; // vapor pressure deficit (pa)
Real64 ZPPFD = 0; // PPFD
- Real64 SensibleRate = 0.0; // w
+ Real64 SensibleRate = 0.0; // w, living wall
+ Real64 SensibleRateLED = 0.0; // w, lED
Real64 LatentRate = 0.0; // w
Real64 ETRate = 0.0; // kg/(m2s)
Real64 LambdaET = 0.0; // J/(kg m2)
diff --git a/src/EnergyPlus/InputProcessing/IdfParser.cc b/src/EnergyPlus/InputProcessing/IdfParser.cc
index 23f3da8994d..f6a3869db05 100644
--- a/src/EnergyPlus/InputProcessing/IdfParser.cc
+++ b/src/EnergyPlus/InputProcessing/IdfParser.cc
@@ -659,14 +659,13 @@ std::string IdfParser::parse_string(std::string_view idf, size_t &index)
eat_whitespace(idf, index);
std::string str;
- char c;
while (true) {
if (index == idf_size) {
break;
}
- c = idf[index];
+ char c = idf[index];
increment_both_index(index, index_into_cur_line);
if (c == ',' || c == ';' || c == '!') {
decrement_both_index(index, index_into_cur_line);
diff --git a/src/EnergyPlus/InputProcessing/InputProcessor.cc b/src/EnergyPlus/InputProcessing/InputProcessor.cc
index e3f84d37aad..b66d70f7d01 100644
--- a/src/EnergyPlus/InputProcessing/InputProcessor.cc
+++ b/src/EnergyPlus/InputProcessing/InputProcessor.cc
@@ -1064,9 +1064,9 @@ void InputProcessor::getObjectItem(EnergyPlusData &state,
NumericFieldNames);
}
- size_t extensible_count = 0;
auto const legacy_idd_extensibles_iter = legacy_idd.find("extensibles");
if (legacy_idd_extensibles_iter != legacy_idd.end()) {
+ size_t extensible_count = 0;
auto const epJSON_extensions_array_itr = obj_val.find(extension_key);
if (epJSON_extensions_array_itr != obj_val.end()) {
auto const &legacy_idd_extensibles = legacy_idd_extensibles_iter.value();
@@ -1738,21 +1738,18 @@ void InputProcessor::preProcessorCheck(EnergyPlusData &state, bool &PreP_Fatal)
// A11, \field message line 9
// A12; \field message line 10
- int NumAlphas; // Used to retrieve names from IDF
- int NumNumbers; // Used to retrieve rNumericArgs from IDF
- int IOStat; // Could be used in the Get Routines, not currently checked
- int NumParams; // Total Number of Parameters in 'Output:PreprocessorMessage' Object
- int NumPrePM; // Number of Preprocessor Message objects in IDF
- int CountP;
- int CountM;
- std::string Multiples;
-
state.dataIPShortCut->cCurrentModuleObject = "Output:PreprocessorMessage";
- NumPrePM = getNumObjectsFound(state, state.dataIPShortCut->cCurrentModuleObject);
+ int NumPrePM = getNumObjectsFound(state, state.dataIPShortCut->cCurrentModuleObject);
if (NumPrePM > 0) {
+ int NumAlphas; // Used to retrieve names from IDF
+ int NumNumbers; // Used to retrieve rNumericArgs from IDF
+ int IOStat; // Could be used in the Get Routines, not currently checked
+ int NumParams; // Total Number of Parameters in 'Output:PreprocessorMessage' Object
+ std::string Multiples;
+
getObjectDefMaxArgs(state, state.dataIPShortCut->cCurrentModuleObject, NumParams, NumAlphas, NumNumbers);
state.dataIPShortCut->cAlphaArgs({1, NumAlphas}) = BlankString;
- for (CountP = 1; CountP <= NumPrePM; ++CountP) {
+ for (int CountP = 1; CountP <= NumPrePM; ++CountP) {
getObjectItem(state,
state.dataIPShortCut->cCurrentModuleObject,
CountP,
@@ -1797,7 +1794,7 @@ void InputProcessor::preProcessorCheck(EnergyPlusData &state, bool &PreP_Fatal)
"\" has the following " + state.dataIPShortCut->cAlphaArgs(2) + " condition" + Multiples + ':');
}
}
- CountM = 3;
+ int CountM = 3;
if (CountM > NumAlphas) {
ShowContinueError(state,
state.dataIPShortCut->cCurrentModuleObject + " was blank. Check " + state.dataIPShortCut->cAlphaArgs(1) +
diff --git a/src/EnergyPlus/InternalHeatGains.cc b/src/EnergyPlus/InternalHeatGains.cc
index b7c816e8803..d6d7315043e 100644
--- a/src/EnergyPlus/InternalHeatGains.cc
+++ b/src/EnergyPlus/InternalHeatGains.cc
@@ -204,16 +204,14 @@ namespace InternalHeatGains {
int IOStat;
// Variables for reporting nominal internal gains
- Real64 LightTot; // Total Lights for calculating lights per square meter
- Real64 ElecTot; // Total Electric Load for calculating electric per square meter
- Real64 GasTot; // Total Gas load for calculating gas per square meter
- Real64 OthTot; // Total Other load for calculating other load per square meter
- Real64 HWETot; // Total Hot Water Equipment for calculating HWE per square meter
- Real64 StmTot; // Total Steam for calculating Steam per square meter
- std::string BBHeatInd; // Yes if BBHeat in zone, no if not.
+ Real64 LightTot; // Total Lights for calculating lights per square meter
+ Real64 ElecTot; // Total Electric Load for calculating electric per square meter
+ Real64 GasTot; // Total Gas load for calculating gas per square meter
+ Real64 OthTot; // Total Other load for calculating other load per square meter
+ Real64 HWETot; // Total Hot Water Equipment for calculating HWE per square meter
+ Real64 StmTot; // Total Steam for calculating Steam per square meter
Real64 SchMin;
Real64 SchMax;
- std::string liteName;
// Formats
static constexpr std::string_view Format_720(" Zone Internal Gains Nominal, {},{:.2R},{:.1R},");
@@ -367,8 +365,6 @@ namespace InternalHeatGains {
format("Schedule=\"{}\". Minimum is [{:.1R}]. Values must be >= 0.0.", IHGAlphas(3), SchMin));
ErrorsFound = true;
}
- }
- if (Item1 == 1) {
if (SchMax < 0.0) {
ShowSevereError(state,
format("{}{}=\"{}\", {}, maximum is < 0.0",
@@ -595,8 +591,6 @@ namespace InternalHeatGains {
format("Schedule=\"{}\". Minimum is [{:.1R}]. Values must be >= 0.0.", IHGAlphas(5), SchMin));
ErrorsFound = true;
}
- }
- if (Item1 == 1) {
if (SchMax < 0.0) {
ShowSevereError(state,
format("{}{}=\"{}\", {} maximum is < 0.0",
@@ -1096,35 +1090,35 @@ namespace InternalHeatGains {
}
}
- for (int peopleNum = 1; peopleNum <= state.dataHeatBal->TotPeople; ++peopleNum) {
+ for (int peopleNum2 = 1; peopleNum2 <= state.dataHeatBal->TotPeople; ++peopleNum2) {
if (state.dataGlobal->AnyEnergyManagementSystemInModel) {
SetupEMSActuator(state,
"People",
- state.dataHeatBal->People(peopleNum).Name,
+ state.dataHeatBal->People(peopleNum2).Name,
"Number of People",
"[each]",
- state.dataHeatBal->People(peopleNum).EMSPeopleOn,
- state.dataHeatBal->People(peopleNum).EMSNumberOfPeople);
+ state.dataHeatBal->People(peopleNum2).EMSPeopleOn,
+ state.dataHeatBal->People(peopleNum2).EMSNumberOfPeople);
SetupEMSInternalVariable(state,
"People Count Design Level",
- state.dataHeatBal->People(peopleNum).Name,
+ state.dataHeatBal->People(peopleNum2).Name,
"[each]",
- state.dataHeatBal->People(peopleNum).NumberOfPeople);
+ state.dataHeatBal->People(peopleNum2).NumberOfPeople);
}
// setup internal gains
if (!ErrorsFound) {
SetupSpaceInternalGain(state,
- state.dataHeatBal->People(peopleNum).spaceIndex,
+ state.dataHeatBal->People(peopleNum2).spaceIndex,
1.0,
- state.dataHeatBal->People(peopleNum).Name,
+ state.dataHeatBal->People(peopleNum2).Name,
DataHeatBalance::IntGainType::People,
- &state.dataHeatBal->People(peopleNum).ConGainRate,
+ &state.dataHeatBal->People(peopleNum2).ConGainRate,
nullptr,
- &state.dataHeatBal->People(peopleNum).RadGainRate,
- &state.dataHeatBal->People(peopleNum).LatGainRate,
+ &state.dataHeatBal->People(peopleNum2).RadGainRate,
+ &state.dataHeatBal->People(peopleNum2).LatGainRate,
nullptr,
- &state.dataHeatBal->People(peopleNum).CO2GainRate);
+ &state.dataHeatBal->People(peopleNum2).CO2GainRate);
}
}
@@ -1264,8 +1258,6 @@ namespace InternalHeatGains {
format("Schedule=\"{}\". Minimum is [{:.1R}]. Values must be >= 0.0.", IHGAlphas(3), SchMin));
ErrorsFound = true;
}
- }
- if (Item1 == 1) {
if (SchMax < 0.0) {
ShowSevereError(state,
format("{}{}=\"{}\", {}, maximum is < 0.0",
@@ -1530,39 +1522,39 @@ namespace InternalHeatGains {
}
}
if (state.dataGlobal->AnyEnergyManagementSystemInModel) {
- for (int lightsNum = 1; lightsNum <= state.dataHeatBal->TotLights; ++lightsNum) {
+ for (int lightsNum2 = 1; lightsNum2 <= state.dataHeatBal->TotLights; ++lightsNum2) {
SetupEMSActuator(state,
"Lights",
- state.dataHeatBal->Lights(lightsNum).Name,
+ state.dataHeatBal->Lights(lightsNum2).Name,
"Electricity Rate",
"[W]",
- state.dataHeatBal->Lights(lightsNum).EMSLightsOn,
- state.dataHeatBal->Lights(lightsNum).EMSLightingPower);
+ state.dataHeatBal->Lights(lightsNum2).EMSLightsOn,
+ state.dataHeatBal->Lights(lightsNum2).EMSLightingPower);
SetupEMSInternalVariable(state,
"Lighting Power Design Level",
- state.dataHeatBal->Lights(lightsNum).Name,
+ state.dataHeatBal->Lights(lightsNum2).Name,
"[W]",
- state.dataHeatBal->Lights(lightsNum).DesignLevel);
+ state.dataHeatBal->Lights(lightsNum2).DesignLevel);
} // EMS
}
- for (int lightsNum = 1; lightsNum <= state.dataHeatBal->TotLights; ++lightsNum) {
- int spaceNum = state.dataHeatBal->Lights(lightsNum).spaceIndex;
- int zoneNum = state.dataHeatBal->Lights(lightsNum).ZonePtr;
+ for (int lightsNum2 = 1; lightsNum2 <= state.dataHeatBal->TotLights; ++lightsNum2) {
+ int spaceNum = state.dataHeatBal->Lights(lightsNum2).spaceIndex;
+ int zoneNum = state.dataHeatBal->Lights(lightsNum2).ZonePtr;
// setup internal gains
int returnNodeNum = 0;
- if ((state.dataHeatBal->Lights(lightsNum).ZoneReturnNum > 0) &&
- (state.dataHeatBal->Lights(lightsNum).ZoneReturnNum <= state.dataZoneEquip->ZoneEquipConfig(zoneNum).NumReturnNodes)) {
- returnNodeNum = state.dataZoneEquip->ZoneEquipConfig(zoneNum).ReturnNode(state.dataHeatBal->Lights(lightsNum).ZoneReturnNum);
+ if ((state.dataHeatBal->Lights(lightsNum2).ZoneReturnNum > 0) &&
+ (state.dataHeatBal->Lights(lightsNum2).ZoneReturnNum <= state.dataZoneEquip->ZoneEquipConfig(zoneNum).NumReturnNodes)) {
+ returnNodeNum = state.dataZoneEquip->ZoneEquipConfig(zoneNum).ReturnNode(state.dataHeatBal->Lights(lightsNum2).ZoneReturnNum);
}
if (!ErrorsFound) {
SetupSpaceInternalGain(state,
- state.dataHeatBal->Lights(lightsNum).spaceIndex,
+ state.dataHeatBal->Lights(lightsNum2).spaceIndex,
1.0,
- state.dataHeatBal->Lights(lightsNum).Name,
+ state.dataHeatBal->Lights(lightsNum2).Name,
DataHeatBalance::IntGainType::Lights,
- &state.dataHeatBal->Lights(lightsNum).ConGainRate,
- &state.dataHeatBal->Lights(lightsNum).RetAirGainRate,
- &state.dataHeatBal->Lights(lightsNum).RadGainRate,
+ &state.dataHeatBal->Lights(lightsNum2).ConGainRate,
+ &state.dataHeatBal->Lights(lightsNum2).RetAirGainRate,
+ &state.dataHeatBal->Lights(lightsNum2).RadGainRate,
nullptr,
nullptr,
nullptr,
@@ -1570,30 +1562,34 @@ namespace InternalHeatGains {
returnNodeNum);
}
- if (state.dataHeatBal->Lights(lightsNum).FractionReturnAir > 0)
- state.dataHeatBal->Zone(state.dataHeatBal->Lights(lightsNum).ZonePtr).HasLtsRetAirGain = true;
+ if (state.dataHeatBal->Lights(lightsNum2).FractionReturnAir > 0)
+ state.dataHeatBal->Zone(state.dataHeatBal->Lights(lightsNum2).ZonePtr).HasLtsRetAirGain = true;
// send values to predefined lighting summary report
- liteName = state.dataHeatBal->Lights(lightsNum).Name;
+ std::string liteName = state.dataHeatBal->Lights(lightsNum2).Name;
Real64 mult = state.dataHeatBal->Zone(zoneNum).Multiplier * state.dataHeatBal->Zone(zoneNum).ListMultiplier;
Real64 spaceArea = state.dataHeatBal->space(spaceNum).FloorArea;
state.dataInternalHeatGains->sumArea += spaceArea * mult;
- state.dataInternalHeatGains->sumPower += state.dataHeatBal->Lights(lightsNum).DesignLevel * mult;
+ state.dataInternalHeatGains->sumPower += state.dataHeatBal->Lights(lightsNum2).DesignLevel * mult;
PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtZone, liteName, state.dataHeatBal->Zone(zoneNum).Name);
PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtSpace, liteName, state.dataHeatBal->space(spaceNum).Name);
PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtSpaceType, liteName, state.dataHeatBal->space(spaceNum).spaceType);
if (spaceArea > 0.0) {
PreDefTableEntry(
- state, state.dataOutRptPredefined->pdchInLtDens, liteName, state.dataHeatBal->Lights(lightsNum).DesignLevel / spaceArea, 4);
+ state, state.dataOutRptPredefined->pdchInLtDens, liteName, state.dataHeatBal->Lights(lightsNum2).DesignLevel / spaceArea, 4);
} else {
PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtDens, liteName, DataPrecisionGlobals::constant_zero, 4);
}
PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtArea, liteName, spaceArea * mult);
- PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtPower, liteName, state.dataHeatBal->Lights(lightsNum).DesignLevel * mult);
- PreDefTableEntry(state, state.dataOutRptPredefined->pdchInLtEndUse, liteName, state.dataHeatBal->Lights(lightsNum).EndUseSubcategory);
PreDefTableEntry(
- state, state.dataOutRptPredefined->pdchInLtSchd, liteName, GetScheduleName(state, state.dataHeatBal->Lights(lightsNum).SchedPtr));
+ state, state.dataOutRptPredefined->pdchInLtPower, liteName, state.dataHeatBal->Lights(lightsNum2).DesignLevel * mult);
PreDefTableEntry(
- state, state.dataOutRptPredefined->pdchInLtRetAir, liteName, state.dataHeatBal->Lights(lightsNum).FractionReturnAir, 4);
+ state, state.dataOutRptPredefined->pdchInLtEndUse, liteName, state.dataHeatBal->Lights(lightsNum2).EndUseSubcategory);
+ PreDefTableEntry(state,
+ state.dataOutRptPredefined->pdchInLtSchd,
+ liteName,
+ GetScheduleName(state, state.dataHeatBal->Lights(lightsNum2).SchedPtr));
+ PreDefTableEntry(
+ state, state.dataOutRptPredefined->pdchInLtRetAir, liteName, state.dataHeatBal->Lights(lightsNum2).FractionReturnAir, 4);
} // Item1 - Number of Lights instances
if (CheckSharedExhaustFlag) {
DataZoneEquipment::CheckSharedExhaust(state);
@@ -1947,8 +1943,6 @@ namespace InternalHeatGains {
format("Schedule=\"{}\". Minimum is [{:.1R}]. Values must be >= 0.0.", IHGAlphas(3), SchMin));
ErrorsFound = true;
}
- }
- if (Item1 == 1) {
if (SchMax < 0.0) {
ShowSevereError(state,
format("{}{}=\"{}\", {}, maximum is < 0.0",
@@ -3659,7 +3653,7 @@ namespace InternalHeatGains {
OthTot = 0.0;
HWETot = 0.0;
StmTot = 0.0;
- BBHeatInd = "No";
+ std::string BBHeatInd = "No"; // Yes if BBHeat in zone, no if not.
for (int Loop1 = 1; Loop1 <= state.dataHeatBal->TotLights; ++Loop1) {
if (state.dataHeatBal->Lights(Loop1).ZonePtr != Loop) continue;
LightTot += state.dataHeatBal->Lights(Loop1).DesignLevel;
@@ -4367,11 +4361,11 @@ namespace InternalHeatGains {
// inputObjects is allocated here and filled with data for further input processing.
constexpr std::string_view routineName = "setupIHGZonesAndSpaces: ";
- bool localErrFlag = false;
auto &ip = state.dataInputProcessing->inputProcessor;
auto const instances = ip->epJSON.find(objectType);
if (instances != ip->epJSON.end()) {
+ bool localErrFlag = false;
auto const &objectSchemaProps = ip->getObjectSchemaProps(state, objectType);
auto &instancesValue = instances.value();
numInputObjects = int(instancesValue.size());
@@ -4438,9 +4432,9 @@ namespace InternalHeatGains {
int numSpaces = 0;
for (int const listZoneIdx : state.dataHeatBal->ZoneList(zoneListNum).Zone) {
numSpaces += state.dataHeatBal->Zone(listZoneIdx).numSpaces;
- for (int const spaceNum : state.dataHeatBal->Zone(listZoneIdx).spaceIndexes) {
- inputObjects(objNum).spaceNums.emplace_back(spaceNum);
- inputObjects(objNum).names.emplace_back(state.dataHeatBal->space(spaceNum).Name + ' ' + inputObjects(objNum).Name);
+ for (int const spaceNum2 : state.dataHeatBal->Zone(listZoneIdx).spaceIndexes) {
+ inputObjects(objNum).spaceNums.emplace_back(spaceNum2);
+ inputObjects(objNum).names.emplace_back(state.dataHeatBal->space(spaceNum2).Name + ' ' + inputObjects(objNum).Name);
}
}
numGainInstances += numSpaces;
@@ -4463,9 +4457,9 @@ namespace InternalHeatGains {
inputObjects(objNum).numOfSpaces = numSpaces;
inputObjects(objNum).spaceListActive = true;
inputObjects(objNum).spaceOrSpaceListPtr = spaceListNum;
- for (int const spaceNum : state.dataHeatBal->spaceList(spaceListNum).spaces) {
- inputObjects(objNum).spaceNums.emplace_back(spaceNum);
- inputObjects(objNum).names.emplace_back(state.dataHeatBal->space(spaceNum).Name + ' ' + inputObjects(objNum).Name);
+ for (int const spaceNum2 : state.dataHeatBal->spaceList(spaceListNum).spaces) {
+ inputObjects(objNum).spaceNums.emplace_back(spaceNum2);
+ inputObjects(objNum).names.emplace_back(state.dataHeatBal->space(spaceNum2).Name + ' ' + inputObjects(objNum).Name);
}
}
continue;
@@ -7539,7 +7533,7 @@ namespace InternalHeatGains {
auto &thisPeople = state.dataHeatBal->People(Loop);
int NZ = state.dataHeatBal->People(Loop).ZonePtr;
int spaceNum = thisPeople.spaceIndex;
- auto &thisSpaceHB = state.dataZoneTempPredictorCorrector->spaceHeatBalance(spaceNum);
+ auto const &thisSpaceHB = state.dataZoneTempPredictorCorrector->spaceHeatBalance(spaceNum);
NumberOccupants = thisPeople.NumberOfPeople * GetCurrentScheduleValue(state, thisPeople.NumberOfPeoplePtr);
if (thisPeople.EMSPeopleOn) NumberOccupants = thisPeople.EMSNumberOfPeople;
@@ -7848,12 +7842,12 @@ namespace InternalHeatGains {
}
for (int zoneNum = 1; zoneNum <= state.dataGlobal->NumOfZones; ++zoneNum) { // Loop through all surfaces...
for (int spaceNum : state.dataHeatBal->Zone(zoneNum).spaceIndexes) {
- auto &thisSpace = state.dataHeatBal->space(spaceNum);
+ auto const &thisSpace = state.dataHeatBal->space(spaceNum);
int const firstSurf = thisSpace.HTSurfaceFirst;
int const lastSurf = thisSpace.HTSurfaceLast;
if (firstSurf <= 0) continue;
for (int SurfNum = firstSurf; SurfNum <= lastSurf; ++SurfNum) {
- auto &thisEnclosure = state.dataViewFactor->EnclRadInfo(state.dataSurface->Surface(SurfNum).RadEnclIndex);
+ auto const &thisEnclosure = state.dataViewFactor->EnclRadInfo(state.dataSurface->Surface(SurfNum).RadEnclIndex);
if (!state.dataGlobal->doLoadComponentPulseNow) {
state.dataHeatBal->SurfQdotRadIntGainsInPerArea(SurfNum) =
@@ -7940,9 +7934,6 @@ namespace InternalHeatGains {
99.0, 80.0, 80.0, 85.0, 90.0, 80.0, 80.0, 80.0}; // Maximum relative humidity [%]
static constexpr std::string_view RoutineName("CalcZoneITEq");
- int Loop;
- int NZ;
- int SupplyNodeNum; // Supply air node number (if zero, then not specified)
Real64 OperSchedFrac; // Operating schedule fraction
Real64 CPULoadSchedFrac; // CPU loading schedule fraction
ITEInletConnection AirConnection; // Air connection type
@@ -7972,7 +7963,7 @@ namespace InternalHeatGains {
// Zero out time step variables
// Object report variables
- for (Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
+ for (int Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
for (int i = 0; i < (int)PERptVars::Num; ++i) {
state.dataHeatBal->ZoneITEq(Loop).PowerRpt[i] = 0.0;
@@ -8003,7 +7994,7 @@ namespace InternalHeatGains {
} // ZoneITEq init loop
// Zone total report variables
- for (Loop = 1; Loop <= state.dataGlobal->NumOfZones; ++Loop) {
+ for (int Loop = 1; Loop <= state.dataGlobal->NumOfZones; ++Loop) {
for (int i = 0; i < (int)PERptVars::Num; ++i) {
state.dataHeatBal->ZoneRpt(Loop).PowerRpt[i] = 0.0;
@@ -8052,9 +8043,9 @@ namespace InternalHeatGains {
state.dataHeatBal->spaceRpt(spaceNum).SumToutMinusTSup = 0.0;
} // Space init spaceNum
- for (Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
+ for (int Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
// Get schedules
- NZ = state.dataHeatBal->ZoneITEq(Loop).ZonePtr;
+ int NZ = state.dataHeatBal->ZoneITEq(Loop).ZonePtr;
auto &thisZoneHB = state.dataZoneTempPredictorCorrector->zoneHeatBalance(NZ);
int spaceNum = state.dataHeatBal->ZoneITEq(Loop).spaceIndex;
OperSchedFrac = GetCurrentScheduleValue(state, state.dataHeatBal->ZoneITEq(Loop).OperSchedPtr);
@@ -8063,7 +8054,7 @@ namespace InternalHeatGains {
// Determine inlet air temperature and humidity
AirConnection = state.dataHeatBal->ZoneITEq(Loop).AirConnectionType;
RecircFrac = 0.0;
- SupplyNodeNum = state.dataHeatBal->ZoneITEq(Loop).SupplyAirNodeNum;
+ int SupplyNodeNum = state.dataHeatBal->ZoneITEq(Loop).SupplyAirNodeNum;
if (state.dataHeatBal->ZoneITEq(Loop).FlowControlWithApproachTemps) {
TSupply = state.dataLoopNodes->Node(SupplyNodeNum).Temp;
WSupply = state.dataLoopNodes->Node(SupplyNodeNum).HumRat;
@@ -8299,7 +8290,7 @@ namespace InternalHeatGains {
} // ZoneITEq calc loop
// Zone and space-level sensible heat index
- for (Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
+ for (int Loop = 1; Loop <= state.dataHeatBal->TotITEquip; ++Loop) {
int ZN = state.dataHeatBal->ZoneITEq(Loop).ZonePtr;
int spaceNum = state.dataHeatBal->ZoneITEq(Loop).spaceIndex;
if (state.dataHeatBal->ZoneRpt(ZN).SumToutMinusTSup != 0.0) {
diff --git a/src/EnergyPlus/Material.cc b/src/EnergyPlus/Material.cc
index 812ec2f07d9..a57f813c2b7 100644
--- a/src/EnergyPlus/Material.cc
+++ b/src/EnergyPlus/Material.cc
@@ -86,7 +86,7 @@ constexpr std::array ecoRoofCalcM
int GetMaterialNum(EnergyPlusData &state, std::string const &matName)
{
- auto &s_mat = state.dataMaterial;
+ auto const &s_mat = state.dataMaterial;
auto found = s_mat->materialMap.find(Util::makeUPPER(matName));
return (found != s_mat->materialMap.end()) ? found->second : 0;
}
@@ -1216,7 +1216,7 @@ void GetMaterialData(EnergyPlusData &state, bool &ErrorsFound) // set to true if
matGas->ROnly = true;
for (NumGas = 0; NumGas < NumGases; ++NumGas) {
- GasType gasType = matGas->gases[NumGas].type;
+ gasType = matGas->gases[NumGas].type;
if (gasType != GasType::Custom) {
matGas->gasFracts[NumGas] = s_ipsc->rNumericArgs(3 + NumGas);
matGas->gases[NumGas] = gases[(int)gasType];
diff --git a/src/EnergyPlus/MoistureBalanceEMPDManager.cc b/src/EnergyPlus/MoistureBalanceEMPDManager.cc
index 92a145ce920..f3cc5f01728 100644
--- a/src/EnergyPlus/MoistureBalanceEMPDManager.cc
+++ b/src/EnergyPlus/MoistureBalanceEMPDManager.cc
@@ -249,9 +249,9 @@ void GetMoistureBalanceEMPDInput(EnergyPlusData &state)
auto const &constr = state.dataConstruction->Construct(surf.Construction);
auto const *mat = dynamic_cast(s_mat->materials(constr.LayerPoint(constr.TotLayers)));
- assert(mat != nullptr);
+ // assert(mat != nullptr);
- if (mat->mu > 0.0 && surf.Zone > 0) {
+ if (mat && mat->mu > 0.0 && surf.Zone > 0) {
EMPDzone(surf.Zone) = true;
} else {
++state.dataMoistureBalEMPD->ErrCount;
diff --git a/src/EnergyPlus/OutputProcessor.cc b/src/EnergyPlus/OutputProcessor.cc
index 926a1d947b1..455ab0c4c3c 100644
--- a/src/EnergyPlus/OutputProcessor.cc
+++ b/src/EnergyPlus/OutputProcessor.cc
@@ -803,7 +803,7 @@ namespace OutputProcessor {
// Has to be a summed variable
if (srcDDVar->storeType != StoreType::Sum) {
- ShowWarningCustomMessage(state,
+ ShowWarningCustomMessage(state, // Is clang-format formatting things like this? This is gross.
eoh,
format(R"(Meter:Custom="{}", variable not summed variable {}="{}".)",
ipsc->cAlphaArgs(1),
@@ -867,8 +867,7 @@ namespace OutputProcessor {
ipsc->cAlphaFieldNames(fldIndex + 1),
ipsc->cAlphaArgs(fldIndex + 1)));
ShowContinueError(state, "...will not be shown with the Meter results.");
- foundBadSrc = true;
- break;
+ // Not setting the foundBadSrc flag here.
}
} // for (fldIndex)
diff --git a/src/EnergyPlus/PluginManager.cc b/src/EnergyPlus/PluginManager.cc
index ba34e2740f5..74b8addda9a 100644
--- a/src/EnergyPlus/PluginManager.cc
+++ b/src/EnergyPlus/PluginManager.cc
@@ -58,6 +58,19 @@
#include
#if LINK_WITH_PYTHON
+
+#ifdef _DEBUG
+// We don't want to try to import a debug build of Python here
+// so if we are building a Debug build of the C++ code, we need
+// to undefine _DEBUG during the #include command for Python.h.
+// Otherwise it will fail
+#undef _DEBUG
+#include
+#define _DEBUG
+#else
+#include
+#endif
+
#include
template <> struct fmt::formatter
{
@@ -467,7 +480,7 @@ PluginManager::PluginManager(EnergyPlusData &state) : eplusRunningViaPythonAPI(s
} else {
programDir = FileSystem::getParentDirectoryPath(FileSystem::getAbsolutePath(FileSystem::getProgramPath()));
}
- fs::path const pathToPythonPackages = programDir / "python_standard_lib";
+ fs::path const pathToPythonPackages = programDir / "python_lib";
initPython(state, pathToPythonPackages);
@@ -478,7 +491,7 @@ PluginManager::PluginManager(EnergyPlusData &state) : eplusRunningViaPythonAPI(s
PyRun_SimpleString("import sys"); // allows us to report sys.path later
// we also need to set an extra import path to find some dynamic library loading stuff, again make it relative to the binary
- addToPythonPath(state, programDir / "python_standard_lib/lib-dynload", false);
+ addToPythonPath(state, programDir / "python_lib/lib-dynload", false);
// now for additional paths:
// we'll always want to add the program executable directory to PATH so that Python can find the installed pyenergyplus package
diff --git a/src/EnergyPlus/PluginManager.hh b/src/EnergyPlus/PluginManager.hh
index 4f20bf54afc..50fa4cc396c 100644
--- a/src/EnergyPlus/PluginManager.hh
+++ b/src/EnergyPlus/PluginManager.hh
@@ -60,16 +60,9 @@
#include
#if LINK_WITH_PYTHON
-#ifdef _DEBUG
-// We don't want to try to import a debug build of Python here
-// so if we are building a Debug build of the C++ code, we need
-// to undefine _DEBUG during the #include command for Python.h.
-// Otherwise it will fail
-#undef _DEBUG
-#include
-#define _DEBUG
-#else
-#include
+#ifndef PyObject_HEAD
+struct _object;
+using PyObject = _object;
#endif
#endif
@@ -175,6 +168,7 @@ namespace PluginManagement {
#endif
};
+ // TODO: Make this use PythonEngine so we don't duplicate code
class PluginManager
{
public:
diff --git a/src/EnergyPlus/PythonEngine.cc b/src/EnergyPlus/PythonEngine.cc
new file mode 100644
index 00000000000..a01f7177820
--- /dev/null
+++ b/src/EnergyPlus/PythonEngine.cc
@@ -0,0 +1,381 @@
+// EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University of Illinois,
+// The Regents of the University of California, through Lawrence Berkeley National Laboratory
+// (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
+// National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
+// contributors. All rights reserved.
+//
+// NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
+// U.S. Government consequently retains certain rights. As such, the U.S. Government has been
+// granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
+// worldwide license in the Software to reproduce, distribute copies to the public, prepare
+// derivative works, and perform publicly and display publicly, and to permit others to do so.
+//
+// Redistribution and use in source and binary forms, with or without modification, are permitted
+// provided that the following conditions are met:
+//
+// (1) Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// (2) Redistributions in binary form must reproduce the above copyright notice, this list of
+// conditions and the following disclaimer in the documentation and/or other materials
+// provided with the distribution.
+//
+// (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
+// the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific prior
+// written permission.
+//
+// (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
+// without changes from the version obtained under this License, or (ii) Licensee makes a
+// reference solely to the software portion of its product, Licensee must refer to the
+// software as "EnergyPlus version X" software, where "X" is the version number Licensee
+// obtained under this License and may not use a different name for the software. Except as
+// specifically required in this Section (4), Licensee shall not use in a company name, a
+// product name, in advertising, publicity, or other promotional activities any name, trade
+// name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
+// similar designation, without the U.S. Department of Energy's prior written consent.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#include
+#include
+#include
+#include
+
+#if LINK_WITH_PYTHON
+#ifdef _DEBUG
+// We don't want to try to import a debug build of Python here
+// so if we are building a Debug build of the C++ code, we need
+// to undefine _DEBUG during the #include command for Python.h.
+// Otherwise it will fail
+#undef _DEBUG
+#include
+#define _DEBUG
+#else
+#include
+#endif
+
+#include
+namespace fmt {
+template <> struct formatter
+{
+ // parse is inherited from formatter.
+ constexpr auto parse(format_parse_context &ctx) -> format_parse_context::iterator
+ {
+ return ctx.begin();
+ }
+
+ auto format(const PyStatus &status, format_context &ctx) const -> format_context::iterator
+ {
+ if (PyStatus_Exception(status) == 0) {
+ return ctx.out();
+ }
+ if (PyStatus_IsExit(status) != 0) {
+ return fmt::format_to(ctx.out(), "Exited with code {}", status.exitcode);
+ }
+ if (PyStatus_IsError(status) != 0) {
+ auto it = ctx.out();
+ it = fmt::format_to(it, "Fatal Python error: ");
+ if (status.func) {
+ it = fmt::format_to(it, "{}: ", status.func);
+ }
+ it = fmt::format_to(it, "{}", status.err_msg);
+ return it;
+ }
+ return ctx.out();
+ }
+};
+} // namespace fmt
+
+#endif
+
+namespace EnergyPlus {
+
+namespace Python {
+
+#if LINK_WITH_PYTHON
+
+ void reportPythonError([[maybe_unused]] EnergyPlusData &state)
+ {
+ PyObject *exc_type = nullptr;
+ PyObject *exc_value = nullptr;
+ PyObject *exc_tb = nullptr;
+ PyErr_Fetch(&exc_type, &exc_value, &exc_tb);
+ // Normalizing the exception is needed. Without it, our custom EnergyPlusException go through just fine
+ // but any ctypes built-in exception for eg will have wrong types
+ PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb);
+ PyObject *str_exc_value = PyObject_Repr(exc_value); // Now a unicode object
+ PyObject *pyStr2 = PyUnicode_AsEncodedString(str_exc_value, "utf-8", "Error ~");
+ Py_DECREF(str_exc_value);
+ char *strExcValue = PyBytes_AsString(pyStr2); // NOLINT(hicpp-signed-bitwise)
+ Py_DECREF(pyStr2);
+ EnergyPlus::ShowContinueError(state, "Python error description follows: ");
+ EnergyPlus::ShowContinueError(state, strExcValue);
+
+ // See if we can get a full traceback.
+ // Calls into python, and does the same as capturing the exception in `e`
+ // then `print(traceback.format_exception(e.type, e.value, e.tb))`
+ PyObject *pModuleName = PyUnicode_DecodeFSDefault("traceback");
+ PyObject *pyth_module = PyImport_Import(pModuleName);
+ Py_DECREF(pModuleName);
+
+ if (pyth_module == nullptr) {
+ EnergyPlus::ShowContinueError(state, "Cannot find 'traceback' module in reportPythonError(), this is weird");
+ return;
+ }
+
+ PyObject *pyth_func = PyObject_GetAttrString(pyth_module, "format_exception");
+ Py_DECREF(pyth_module); // PyImport_Import returns a new reference, decrement it
+
+ if (pyth_func || PyCallable_Check(pyth_func)) {
+
+ PyObject *pyth_val = PyObject_CallFunction(pyth_func, "OOO", exc_type, exc_value, exc_tb);
+
+ // traceback.format_exception returns a list, so iterate on that
+ if (!pyth_val || !PyList_Check(pyth_val)) { // NOLINT(hicpp-signed-bitwise)
+ EnergyPlus::ShowContinueError(state, "In reportPythonError(), traceback.format_exception did not return a list.");
+ return;
+ }
+
+ Py_ssize_t numVals = PyList_Size(pyth_val);
+ if (numVals == 0) {
+ EnergyPlus::ShowContinueError(state, "No traceback available");
+ return;
+ }
+
+ EnergyPlus::ShowContinueError(state, "Python traceback follows: ");
+
+ EnergyPlus::ShowContinueError(state, "```");
+
+ for (Py_ssize_t itemNum = 0; itemNum < numVals; itemNum++) {
+ PyObject *item = PyList_GetItem(pyth_val, itemNum);
+ if (PyUnicode_Check(item)) { // NOLINT(hicpp-signed-bitwise) -- something inside Python code causes warning
+ std::string traceback_line = PyUnicode_AsUTF8(item);
+ if (!traceback_line.empty() && traceback_line[traceback_line.length() - 1] == '\n') {
+ traceback_line.erase(traceback_line.length() - 1);
+ }
+ EnergyPlus::ShowContinueError(state, format(" >>> {}", traceback_line));
+ }
+ // PyList_GetItem returns a borrowed reference, do not decrement
+ }
+
+ EnergyPlus::ShowContinueError(state, "```");
+
+ // PyList_Size returns a borrowed reference, do not decrement
+ Py_DECREF(pyth_val); // PyObject_CallFunction returns new reference, decrement
+ }
+ Py_DECREF(pyth_func); // PyObject_GetAttrString returns a new reference, decrement it
+ }
+
+ void addToPythonPath(EnergyPlusData &state, const fs::path &includePath, bool userDefinedPath)
+ {
+ if (includePath.empty()) {
+ return;
+ }
+
+ // We use generic_string / generic_wstring here, which will always use a forward slash as directory separator even on windows
+ // This doesn't handle the (very strange, IMHO) case were on unix you have backlashes (which are VALID filenames on Unix!)
+ // Could use FileSystem::makeNativePath first to convert the backslashes to forward slashes on Unix
+ PyObject *unicodeIncludePath = nullptr;
+ if constexpr (std::is_same_v) {
+ const std::wstring ws = includePath.generic_wstring();
+ unicodeIncludePath = PyUnicode_FromWideChar(ws.c_str(), static_cast(ws.size())); // New reference
+ } else {
+ const std::string s = includePath.generic_string();
+ unicodeIncludePath = PyUnicode_FromString(s.c_str()); // New reference
+ }
+ if (unicodeIncludePath == nullptr) {
+ EnergyPlus::ShowFatalError(
+ state, format("ERROR converting the path \"{}\" for addition to the sys.path in Python", includePath.generic_string()));
+ }
+
+ PyObject *sysPath = PySys_GetObject("path"); // Borrowed reference
+ int const ret = PyList_Insert(sysPath, 0, unicodeIncludePath);
+ Py_DECREF(unicodeIncludePath);
+
+ if (ret != 0) {
+ if (PyErr_Occurred()) {
+ reportPythonError(state);
+ }
+ EnergyPlus::ShowFatalError(state, format("ERROR adding \"{}\" to the sys.path in Python", includePath.generic_string()));
+ }
+
+ if (userDefinedPath) {
+ EnergyPlus::ShowMessage(state, format("Successfully added path \"{}\" to the sys.path in Python", includePath.generic_string()));
+ }
+
+ // PyRun_SimpleString)("print(' EPS : ' + str(sys.path))");
+ }
+
+ void initPython(EnergyPlusData &state, fs::path const &pathToPythonPackages)
+ {
+ PyStatus status;
+
+ // first pre-config Python so that it can speak UTF-8
+ PyPreConfig preConfig;
+ // This is the other related line that caused Decent CI to start having trouble. I'm putting it back to
+ // PyPreConfig_InitPythonConfig, even though I think it should be isolated. Will deal with this after IO freeze.
+ PyPreConfig_InitPythonConfig(&preConfig);
+ // PyPreConfig_InitIsolatedConfig(&preConfig);
+ preConfig.utf8_mode = 1;
+ status = Py_PreInitialize(&preConfig);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state, fmt::format("Could not pre-initialize Python to speak UTF-8... {}", status));
+ }
+
+ PyConfig config;
+ PyConfig_InitIsolatedConfig(&config);
+ config.isolated = 1;
+
+ status = PyConfig_SetBytesString(&config, &config.program_name, PluginManagement::programName);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state, fmt::format("Could not initialize program_name on PyConfig... {}", status));
+ }
+
+ status = PyConfig_Read(&config);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state, fmt::format("Could not read back the PyConfig... {}", status));
+ }
+
+ if constexpr (std::is_same_v) {
+ // PyConfig_SetString copies the wide character string str into *config_str.
+ std::wstring const ws = pathToPythonPackages.generic_wstring();
+ const wchar_t *wcharPath = ws.c_str();
+
+ status = PyConfig_SetString(&config, &config.home, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state, fmt::format("Could not set home to {} on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+ status = PyConfig_SetString(&config, &config.base_prefix, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state,
+ fmt::format("Could not set base_prefix to {} on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+ config.module_search_paths_set = 1;
+ status = PyWideStringList_Append(&config.module_search_paths, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(
+ state, fmt::format("Could not add {} to module_search_paths on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+
+ } else {
+ // PyConfig_SetBytesString takes a `const char * str` and decodes str using Py_DecodeLocale() and set the result into *config_str
+ // But we want to avoid doing it three times, so we PyDecodeLocale manually
+ // Py_DecodeLocale can be called because Python has been PreInitialized.
+ wchar_t *wcharPath = Py_DecodeLocale(pathToPythonPackages.generic_string().c_str(), nullptr); // This allocates!
+
+ status = PyConfig_SetString(&config, &config.home, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state, fmt::format("Could not set home to {} on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+ status = PyConfig_SetString(&config, &config.base_prefix, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(state,
+ fmt::format("Could not set base_prefix to {} on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+ config.module_search_paths_set = 1;
+ status = PyWideStringList_Append(&config.module_search_paths, wcharPath);
+ if (PyStatus_Exception(status) != 0) {
+ ShowFatalError(
+ state, fmt::format("Could not add {} to module_search_paths on PyConfig... {}", pathToPythonPackages.generic_string(), status));
+ }
+
+ PyMem_RawFree(wcharPath);
+ }
+
+ // This was Py_InitializeFromConfig(&config), but was giving a seg fault when running inside
+ // another Python instance, for example as part of an API run. Per the example here:
+ // https://docs.python.org/3/c-api/init_config.html#preinitialize-python-with-pypreconfig
+ // It looks like we don't need to initialize from config again, it should be all set up with
+ // the init calls above, so just initialize and move on.
+ // UPDATE: This worked happily for me on Linux, and also when I build locally on Windows, but not on Decent CI
+ // I suspect a difference in behavior for Python versions. I'm going to temporarily revert this back to initialize
+ // with config and get IO freeze going, then get back to solving it.
+ // Py_Initialize();
+ Py_InitializeFromConfig(&config);
+ }
+
+ PythonEngine::PythonEngine(EnergyPlusData &state) : eplusRunningViaPythonAPI(state.dataPluginManager->eplusRunningViaPythonAPI)
+ {
+ // we'll need the program directory for a few things so get it once here at the top and sanitize it
+ fs::path programDir;
+ if (state.dataGlobal->installRootOverride) {
+ programDir = state.dataStrGlobals->exeDirectoryPath;
+ } else {
+ programDir = FileSystem::getParentDirectoryPath(FileSystem::getAbsolutePath(FileSystem::getProgramPath()));
+ }
+ fs::path const pathToPythonPackages = programDir / "python_lib";
+
+ initPython(state, pathToPythonPackages);
+
+ // we also need to set an extra import path to find some dynamic library loading stuff, again make it relative to the binary
+ addToPythonPath(state, programDir / "python_lib/lib-dynload", false);
+
+ // now for additional paths:
+ // we'll always want to add the program executable directory to PATH so that Python can find the installed pyenergyplus package
+ // we will then optionally add the current working directory to allow Python to find scripts in the current directory
+ // we will then optionally add the directory of the running IDF to allow Python to find scripts kept next to the IDF
+ // we will then optionally add any additional paths the user specifies on the search paths object
+
+ // so add the executable directory here
+ addToPythonPath(state, programDir, false);
+
+ PyObject *m = PyImport_AddModule("__main__");
+ if (m == nullptr) {
+ throw std::runtime_error("Unable to add module __main__ for python script execution");
+ }
+ m_globalDict = PyModule_GetDict(m);
+ }
+
+ void PythonEngine::exec(std::string_view sv)
+ {
+ std::string command{sv};
+
+ PyObject *v = PyRun_String(command.c_str(), Py_file_input, m_globalDict, m_globalDict);
+ // PyObject* v = PyRun_SimpleString(command.c_str());
+ if (v == nullptr) {
+ PyErr_Print();
+ throw std::runtime_error("Error executing Python code");
+ }
+
+ Py_DECREF(v);
+ }
+
+ PythonEngine::~PythonEngine()
+ {
+ if (!this->eplusRunningViaPythonAPI) {
+ bool alreadyInitialized = (Py_IsInitialized() != 0);
+ if (alreadyInitialized) {
+ if (Py_FinalizeEx() < 0) {
+ exit(120);
+ }
+ }
+ }
+ }
+
+#else // NOT LINK_WITH_PYTHON
+ PythonEngine::PythonEngine(EnergyPlus::EnergyPlusData &state)
+ {
+ ShowFatalError(state, "EnergyPlus is not linked with python");
+ }
+
+ PythonEngine::~PythonEngine()
+ {
+ }
+
+ void PythonEngine::exec(std::string_view sv)
+ {
+ }
+
+#endif // LINK_WITH_PYTHON
+
+} // namespace Python
+} // namespace EnergyPlus
diff --git a/src/EnergyPlus/PythonEngine.hh b/src/EnergyPlus/PythonEngine.hh
new file mode 100644
index 00000000000..41c4dd26cea
--- /dev/null
+++ b/src/EnergyPlus/PythonEngine.hh
@@ -0,0 +1,86 @@
+// EnergyPlus, Copyright (c) 1996-2024, The Board of Trustees of the University of Illinois,
+// The Regents of the University of California, through Lawrence Berkeley National Laboratory
+// (subject to receipt of any required approvals from the U.S. Dept. of Energy), Oak Ridge
+// National Laboratory, managed by UT-Battelle, Alliance for Sustainable Energy, LLC, and other
+// contributors. All rights reserved.
+//
+// NOTICE: This Software was developed under funding from the U.S. Department of Energy and the
+// U.S. Government consequently retains certain rights. As such, the U.S. Government has been
+// granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable,
+// worldwide license in the Software to reproduce, distribute copies to the public, prepare
+// derivative works, and perform publicly and display publicly, and to permit others to do so.
+//
+// Redistribution and use in source and binary forms, with or without modification, are permitted
+// provided that the following conditions are met:
+//
+// (1) Redistributions of source code must retain the above copyright notice, this list of
+// conditions and the following disclaimer.
+//
+// (2) Redistributions in binary form must reproduce the above copyright notice, this list of
+// conditions and the following disclaimer in the documentation and/or other materials
+// provided with the distribution.
+//
+// (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory,
+// the University of Illinois, U.S. Dept. of Energy nor the names of its contributors may be
+// used to endorse or promote products derived from this software without specific prior
+// written permission.
+//
+// (4) Use of EnergyPlus(TM) Name. If Licensee (i) distributes the software in stand-alone form
+// without changes from the version obtained under this License, or (ii) Licensee makes a
+// reference solely to the software portion of its product, Licensee must refer to the
+// software as "EnergyPlus version X" software, where "X" is the version number Licensee
+// obtained under this License and may not use a different name for the software. Except as
+// specifically required in this Section (4), Licensee shall not use in a company name, a
+// product name, in advertising, publicity, or other promotional activities any name, trade
+// name, trademark, logo, or other designation of "EnergyPlus", "E+", "e+" or confusingly
+// similar designation, without the U.S. Department of Energy's prior written consent.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef EPLUS_PYTHON_ENGINE_HH
+#define EPLUS_PYTHON_ENGINE_HH
+
+#include
+
+#if LINK_WITH_PYTHON
+#ifndef PyObject_HEAD
+struct _object;
+using PyObject = _object;
+#endif
+#endif
+
+namespace EnergyPlus {
+
+namespace Python {
+
+ class PythonEngine
+ {
+ public:
+ explicit PythonEngine(EnergyPlus::EnergyPlusData &state);
+ PythonEngine(const PythonEngine &) = delete;
+ PythonEngine(PythonEngine &&) = delete;
+ PythonEngine &operator=(const PythonEngine &) = delete;
+ PythonEngine &operator=(PythonEngine &&) = delete;
+ ~PythonEngine();
+
+ void exec(std::string_view sv);
+
+ bool eplusRunningViaPythonAPI = false;
+
+ private:
+#if LINK_WITH_PYTHON
+ PyObject *m_globalDict;
+#endif
+ };
+} // namespace Python
+} // namespace EnergyPlus
+
+#endif // EPLUS_PYTHON_ENGINE_HH
diff --git a/src/EnergyPlus/SurfaceGeometry.cc b/src/EnergyPlus/SurfaceGeometry.cc
index 51eb490b07a..2de47e03eb3 100644
--- a/src/EnergyPlus/SurfaceGeometry.cc
+++ b/src/EnergyPlus/SurfaceGeometry.cc
@@ -11455,7 +11455,7 @@ namespace SurfaceGeometry {
for (int blockNum = 0; blockNum < numBlocks; blockNum++) {
Kiva::InputBlock block;
if (!s_ipsc->lAlphaFieldBlanks(alpF)) {
- int index = Util::FindItemInPtrList(s_ipsc->cAlphaArgs(alpF), s_mat->materials);
+ int index = Material::GetMaterialNum(state, s_ipsc->cAlphaArgs(alpF));
if (index == 0) {
ErrorsFound = true;
ShowSevereError(state,
diff --git a/src/EnergyPlus/UtilityRoutines.hh b/src/EnergyPlus/UtilityRoutines.hh
index e6bd1877768..564417c5cfe 100644
--- a/src/EnergyPlus/UtilityRoutines.hh
+++ b/src/EnergyPlus/UtilityRoutines.hh
@@ -374,23 +374,6 @@ namespace Util {
return 0; // Not found
}
- template ::value>::type>
- // Container needs and operator[i] and elements need Name
- inline int FindItemInPtrList(std::string_view const String, Container const &ListOfItems, int const NumItems)
- {
- for (typename Container::size_type i = 0, e = NumItems; i < e; ++i) {
- if (String == ListOfItems[i]->Name) return int(i + 1); // 1-based return index
- }
- return 0; // Not found
- }
-
- template ::value>::type>
- // Container needs and operator[i] and elements need Name
- inline int FindItemInPtrList(std::string_view const String, Container const &ListOfItems)
- {
- return Util::FindItemInPtrList(String, ListOfItems, ListOfItems.isize());
- }
-
template ::value>::type>
// Container needs isize() and operator[i] and elements need Name
inline int FindItemInList(std::string_view const String, Container const &ListOfItems)
diff --git a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90 b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90
index 8064da795de..b6e6892dd86 100644
--- a/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90
+++ b/src/Transition/CreateNewIDFUsingRulesV24_2_0.f90
@@ -394,8 +394,10 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile
OldFanVO(NumOldFanVO)%coeff5 = TRIM(IDFRecords(Num)%Numbers(12)) !- Coefficient5 x**4
OldFanVO(NumOldFanVO)%inletAirNodeName = TRIM(IDFRecords(Num)%Alphas(4))
OldFanVO(NumOldFanVO)%outletAirNodeName = TRIM(IDFRecords(Num)%Alphas(5))
- IF (lEN(IDFRecords(Num)%Alphas) .eq. 6) THEN
+ IF (SIZE(IDFRecords(Num)%Alphas) .eq. 6) THEN
OldFanVO(NumOldFanVO)%endUseSubCat = TRIM(IDFRecords(Num)%Alphas(6))
+ ELSE
+ OldFanVO(NumOldFanVO)%endUseSubCat = ''
ENDIF
IF (FindItemInList(TRIM(IDFRecords(Num)%Alphas(1)), vavFanNameToDelete, NumVRFTU) /= 0) THEN
DeleteThisRecord(Num) = .TRUE.
@@ -583,9 +585,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile
CASE('ZONEHVAC:TERMINALUNIT:VARIABLEREFRIGERANTFLOW')
isVariableVolume = .FALSE.
CALL GetNewObjectDefInIDD(ObjectName, NwNumArgs, NwAorN, NwReqFld, NwObjMinFlds, NwFldNames, NwFldDefaults, NwFldUnits)
- nodiff = .false.
OutArgs(1:13) = InArgs(1:13)
IF (SameString(InArgs(14), 'FAN:VARIABLEVOLUME')) THEN
+ nodiff = .false.
isVariableVolume = .TRUE.
OutArgs(14) = 'Fan:SystemModel'
OutArgs(15) = TRIM(InArgs(15))
@@ -594,9 +596,9 @@ SUBROUTINE CreateNewIDFUsingRules(EndOfFile,DiffOnly,InLfn,AskForInput,InputFile
OutArgs(14:15) = InArgs(14:15)
ENDIF
OutArgs(16:CurArgs) = InArgs(16:CurArgs)
- CALL WriteOutIDFLines(DifLfn, 'ZoneHVAC:TerminalUnit:VariableRefrigerantFlow', CurArgs, OutArgs, NwFldNames, NwFldUnits)
IF (isVariableVolume) THEN
+ CALL WriteOutIDFLines(DifLfn, 'ZoneHVAC:TerminalUnit:VariableRefrigerantFlow', CurArgs, OutArgs, NwFldNames, NwFldUnits)
! create fan system model object
ObjectName = 'Fan:SystemModel'
DO Num3 = 1, NumFanVariableVolume
diff --git a/testfiles/CMakeLists.txt b/testfiles/CMakeLists.txt
index 0f07fc71c17..2b5a88dc5e9 100644
--- a/testfiles/CMakeLists.txt
+++ b/testfiles/CMakeLists.txt
@@ -679,13 +679,13 @@ add_simulation_test(IDF_FILE VSHeatPumpWaterHeater.idf EPW_FILE USA_FL_Miami.Int
add_simulation_test(IDF_FILE VSHeatPumpWaterToAirEquationFit.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VSWaterHeaterHeatPumpStratifiedTank.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VaryingLocationAndOrientation.idf EPW_FILE USA_CO_Golden-NREL.724666_TMY3.epw)
-add_simulation_test(IDF_FILE US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf EPW_FILE USA_NY_New.York-John.F.Kennedy.Intl.AP.744860_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_5Zone_wAirloop.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_HR_5Zone.idf EPW_FILE USA_FL_Miami.Intl.AP.722020_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_FluidTCtrl_wSuppHeater_5Zone.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VariableRefrigerantFlow_wSuppHeater_5Zone.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
+add_simulation_test(IDF_FILE US+SF+CZ4A+hp+crawlspace+IECC_2006_VRF.idf EPW_FILE USA_NY_New.York-John.F.Kennedy.Intl.AP.744860_TMY3.epw)
add_simulation_test(IDF_FILE VentilatedSlab.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VentilatedSlab_SeriesSlabs.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
add_simulation_test(IDF_FILE VentilationSimpleTest.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw)
@@ -763,6 +763,9 @@ add_simulation_test(IDF_FILE WCE_Interior_VB_-45_deg.idf EPW_FILE USA_IL_Chicago
add_simulation_test(IDF_FILE _5ZoneAirCooled_annual.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw ANNUAL_SIMULATION)
add_simulation_test(IDF_FILE _5ZoneAirCooled_LeapYear_annual.idf EPW_FILE MadeUpLeapYear.epw ANNUAL_SIMULATION)
add_simulation_test(IDF_FILE UnitarySystem_MultiSpeedDX_EconoStaging.idf EPW_FILE USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw ANNUAL_SIMULATION)
+add_simulation_test(IDF_FILE _ResidentialBase.idf EPW_FILE USA_CO_Denver-Aurora-Buckley.AFB.724695_TMY3.epw ANNUAL_SIMULATION)
+add_simulation_test(IDF_FILE _ResidentialBaseboardHardSize.idf EPW_FILE USA_CO_Denver-Aurora-Buckley.AFB.724695_TMY3.epw)
+
# ASHRAE 90.1-2019 DOE commercial prototype models
add_simulation_test(IDF_FILE ASHRAE901_ApartmentHighRise_STD2019_Denver.idf EPW_FILE USA_CO_Denver-Aurora-Buckley.AFB.724695_TMY3.epw)
diff --git a/testfiles/HVACStandAloneERV_Economizer.idf b/testfiles/HVACStandAloneERV_Economizer.idf
index 212b4a046cc..5ac8399d7b3 100644
--- a/testfiles/HVACStandAloneERV_Economizer.idf
+++ b/testfiles/HVACStandAloneERV_Economizer.idf
@@ -112,7 +112,7 @@
!- =========== ALL OBJECTS IN CLASS: SIMULATIONCONTROL ===========
SimulationControl,
- No, !- Do Zone Sizing Calculation
+ Yes, !- Do Zone Sizing Calculation
No, !- Do System Sizing Calculation
No, !- Do Plant Sizing Calculation
Yes, !- Run Simulation for Sizing Periods
@@ -1373,6 +1373,116 @@
0.0013, !- Maximum Water Flow Rate {m3/s}
0.001; !- Convergence Tolerance
+!- =========== ALL OBJECTS IN CLASS: SIZING:ZONE AND DESIGNSPECIFICATION:OUTDOORAIR ===========
+
+ Sizing:Zone,
+ WEST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 1, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 1, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ EAST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 2, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 2, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ NORTH ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 3, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 3, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
!- =========== ALL OBJECTS IN CLASS: ZONEHVAC:EQUIPMENTLIST ===========
ZoneHVAC:EquipmentList,
diff --git a/testfiles/VAVSingleDuctReheatBaseboard.idf b/testfiles/VAVSingleDuctReheatBaseboard.idf
index 12ac99aa40e..5ea81bae7a5 100644
--- a/testfiles/VAVSingleDuctReheatBaseboard.idf
+++ b/testfiles/VAVSingleDuctReheatBaseboard.idf
@@ -125,7 +125,7 @@
HeatBalanceAlgorithm,ConductionTransferFunction;
SimulationControl,
- No, !- Do Zone Sizing Calculation
+ Yes, !- Do Zone Sizing Calculation
No, !- Do System Sizing Calculation
No, !- Do Plant Sizing Calculation
Yes, !- Run Simulation for Sizing Periods
@@ -2019,6 +2019,114 @@
0.0013, !- Maximum Water Flow Rate {m3/s}
0.001; !- Convergence Tolerance
+ Sizing:Zone,
+ WEST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 1, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 1, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ EAST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 2, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 2, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ NORTH ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 3, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 3, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
ZoneControl:Thermostat,
Zone 1 Thermostat, !- Name
West Zone, !- Zone or ZoneList Name
diff --git a/testfiles/WindACRHControl.idf b/testfiles/WindACRHControl.idf
index 047f7618486..a569fc2a641 100644
--- a/testfiles/WindACRHControl.idf
+++ b/testfiles/WindACRHControl.idf
@@ -122,7 +122,7 @@
HeatBalanceAlgorithm,ConductionTransferFunction;
SimulationControl,
- No, !- Do Zone Sizing Calculation
+ Yes, !- Do Zone Sizing Calculation
No, !- Do System Sizing Calculation
No, !- Do Plant Sizing Calculation
Yes, !- Run Simulation for Sizing Periods
@@ -1731,6 +1731,114 @@
0.0013, !- Maximum Water Flow Rate {m3/s}
0.001; !- Convergence Tolerance
+ Sizing:Zone,
+ WEST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 1, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 1, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ EAST ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 2, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 2, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
+ Sizing:Zone,
+ NORTH ZONE, !- Zone or ZoneList Name
+ SupplyAirTemperature, !- Zone Cooling Design Supply Air Temperature Input Method
+ 14., !- Zone Cooling Design Supply Air Temperature {C}
+ , !- Zone Cooling Design Supply Air Temperature Difference {deltaC}
+ SupplyAirTemperature, !- Zone Heating Design Supply Air Temperature Input Method
+ 50., !- Zone Heating Design Supply Air Temperature {C}
+ , !- Zone Heating Design Supply Air Temperature Difference {deltaC}
+ 0.009, !- Zone Cooling Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ 0.004, !- Zone Heating Design Supply Air Humidity Ratio {kgWater/kgDryAir}
+ SZ DSOA Zone 3, !- Design Specification Outdoor Air Object Name
+ 0.0, !- Zone Heating Sizing Factor
+ 0.0, !- Zone Cooling Sizing Factor
+ DesignDayWithLimit, !- Cooling Design Air Flow Method
+ , !- Cooling Design Air Flow Rate {m3/s}
+ , !- Cooling Minimum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Cooling Minimum Air Flow {m3/s}
+ , !- Cooling Minimum Air Flow Fraction
+ DesignDay, !- Heating Design Air Flow Method
+ , !- Heating Design Air Flow Rate {m3/s}
+ , !- Heating Maximum Air Flow per Zone Floor Area {m3/s-m2}
+ , !- Heating Maximum Air Flow {m3/s}
+ , !- Heating Maximum Air Flow Fraction
+ , !- Design Specification Zone Air Distribution Object Name
+ No, !- Account for Dedicated Outdoor Air System
+ NeutralSupplyAir, !- Dedicated Outdoor Air System Control Strategy
+ autosize, !- Dedicated Outdoor Air Low Setpoint Temperature for Design {C}
+ autosize; !- Dedicated Outdoor Air High Setpoint Temperature for Design {C}
+
+ DesignSpecification:OutdoorAir,
+ SZ DSOA Zone 3, !- Name
+ sum, !- Outdoor Air Method
+ 0.00236, !- Outdoor Air Flow per Person {m3/s-person}
+ 0.000305, !- Outdoor Air Flow per Zone Floor Area {m3/s-m2}
+ 0.0; !- Outdoor Air Flow per Zone {m3/s}
+
ZoneControl:Humidistat,
Zone 1 Humidistat, !- Name
West Zone, !- Zone Name
diff --git a/testfiles/_ResidentialBase.idf b/testfiles/_ResidentialBase.idf
new file mode 100644
index 00000000000..99fcfa907e0
--- /dev/null
+++ b/testfiles/_ResidentialBase.idf
@@ -0,0 +1,8100 @@
+! File produced by OpenStudio-HPXML from base.xml sample file.
+!
+! Description: Residential single-family detached model with unvented attic
+! and conditioned basement, located in Denver CO.
+! Geometry: "Exploded" surfaces (not detailed 3D geometry). Single zone for
+! all conditioned space.
+! HVAC: Hardsized central AC/furnace and EMS duct model.
+! DHW: Electric, conventional storage water heater.
+! Misc: Appliances, lighting, plug loads.
+!
+!- =========== ALL OBJECTS IN CLASS: VERSION ===========
+
+ Version,24.2;
+
+!- =========== ALL OBJECTS IN CLASS: SIMULATIONCONTROL ===========
+
+ SimulationControl,
+ No, !- Do Zone Sizing Calculation
+ No, !- Do System Sizing Calculation
+ No, !- Do Plant Sizing Calculation
+ No, !- Run Simulation for Sizing Periods
+ Yes, !- Run Simulation for Weather File Run Periods
+ , !- Do HVAC Sizing Simulation for Sizing Periods
+ ; !- Maximum Number of HVAC Sizing Simulation Passes
+
+!- =========== ALL OBJECTS IN CLASS: PERFORMANCEPRECISIONTRADEOFFS ===========
+
+ PerformancePrecisionTradeoffs,
+ No, !- Use Coil Direct Solutions
+ CarrollMRT, !- Zone Radiant Exchange Algorithm
+ , !- Override Mode
+ , !- MaxZoneTempDiff
+ , !- MaxAllowedDelTemp
+ No; !- Use Representative Surfaces for Calculations
+
+!- =========== ALL OBJECTS IN CLASS: BUILDING ===========
+
+ Building,
+ Building 1, !- Name
+ , !- North Axis {deg}
+ Suburbs, !- Terrain
+ , !- Loads Convergence Tolerance Value {W}
+ , !- Temperature Convergence Tolerance Value {deltaC}
+ , !- Solar Distribution
+ , !- Maximum Number of Warmup Days
+ ; !- Minimum Number of Warmup Days
+
+!- =========== ALL OBJECTS IN CLASS: SHADOWCALCULATION ===========
+
+ ShadowCalculation,
+ PolygonClipping, !- Shading Calculation Method
+ Periodic, !- Shading Calculation Update Frequency Method
+ 20, !- Shading Calculation Update Frequency
+ 200, !- Maximum Figures in Shadow Overlap Calculations
+ SutherlandHodgman, !- Polygon Clipping Algorithm
+ 512, !- Pixel Counting Resolution
+ SimpleSkyDiffuseModeling,!- Sky Diffuse Modeling Algorithm
+ No, !- Output External Shading Calculation Results
+ No, !- Disable Self-Shading Within Shading Zone Groups
+ No; !- Disable Self-Shading From Shading Zone Groups to Other Zones
+
+!- =========== ALL OBJECTS IN CLASS: SURFACECONVECTIONALGORITHM:INSIDE ===========
+
+ SurfaceConvectionAlgorithm:Inside,TARP;
+
+!- =========== ALL OBJECTS IN CLASS: SURFACECONVECTIONALGORITHM:OUTSIDE ===========
+
+ SurfaceConvectionAlgorithm:Outside,DOE-2;
+
+!- =========== ALL OBJECTS IN CLASS: ZONECAPACITANCEMULTIPLIER:RESEARCHSPECIAL ===========
+
+ ZoneCapacitanceMultiplier:ResearchSpecial,
+ Zone Capacitance Multiplier Research Special, !- Name
+ , !- Zone or ZoneList Name
+ 7, !- Temperature Capacity Multiplier
+ 15, !- Humidity Capacity Multiplier
+ , !- Carbon Dioxide Capacity Multiplier
+ ; !- Generic Contaminant Capacity Multiplier
+
+!- =========== ALL OBJECTS IN CLASS: TIMESTEP ===========
+
+ Timestep,1;
+
+!- =========== ALL OBJECTS IN CLASS: CONVERGENCELIMITS ===========
+
+ ConvergenceLimits,
+ 0; !- Minimum System Timestep {minutes}
+
+!- =========== ALL OBJECTS IN CLASS: SITE:LOCATION ===========
+
+ Site:Location,
+ Denver Intl Ap_CO, !- Name
+ 39.83, !- Latitude {deg}
+ -104.65, !- Longitude {deg}
+ -7, !- Time Zone {hr}
+ 1650; !- Elevation {m}
+
+!- =========== ALL OBJECTS IN CLASS: RUNPERIOD ===========
+
+ RunPeriod,
+ Run Period 1, !- Name
+ 1, !- Begin Month
+ 1, !- Begin Day of Month
+ 2007, !- Begin Year
+ 12, !- End Month
+ 31, !- End Day of Month
+ 2007, !- End Year
+ Monday, !- Day of Week for Start Day
+ No, !- Use Weather File Holidays and Special Days
+ No, !- Use Weather File Daylight Saving Period
+ No, !- Apply Weekend Holiday Rule
+ Yes, !- Use Weather File Rain Indicators
+ Yes; !- Use Weather File Snow Indicators
+
+!- =========== ALL OBJECTS IN CLASS: RUNPERIODCONTROL:DAYLIGHTSAVINGTIME ===========
+
+ RunPeriodControl:DaylightSavingTime,
+ Mar 12, !- Start Date
+ Nov 5; !- End Date
+
+!- =========== ALL OBJECTS IN CLASS: SITE:GROUNDTEMPERATURE:SHALLOW ===========
+
+ Site:GroundTemperature:Shallow,6.71281269969534,4.94206058328811,4.80025240351135,5.64056476180588,9.01395062150227,12.3716218187986,15.2825432986395,17.1265404634639,17.2831981509722,15.7834163910108,12.9467251179508,9.69205359695236;
+
+!- =========== ALL OBJECTS IN CLASS: SITE:WATERMAINSTEMPERATURE ===========
+
+ Site:WaterMainsTemperature,
+ Schedule, !- Calculation Method
+ mains temperature schedule; !- Temperature Schedule Name
+
+!- =========== ALL OBJECTS IN CLASS: SCHEDULETYPELIMITS ===========
+
+ ScheduleTypeLimits,
+ Fractional, !- Name
+ 0, !- Lower Limit Value
+ 1, !- Upper Limit Value
+ Continuous; !- Numeric Type
+
+ ScheduleTypeLimits,
+ conditioned space Thermostat Schedule Type Limits, !- Name
+ 0, !- Lower Limit Value
+ 4, !- Upper Limit Value
+ DISCRETE; !- Numeric Type
+
+ ScheduleTypeLimits,
+ Temperature, !- Name
+ , !- Lower Limit Value
+ , !- Upper Limit Value
+ Continuous, !- Numeric Type
+ temperature; !- Unit Type
+
+ ScheduleTypeLimits,
+ ActivityLevel, !- Name
+ 0, !- Lower Limit Value
+ , !- Upper Limit Value
+ Continuous, !- Numeric Type
+ activitylevel; !- Unit Type
+
+ ScheduleTypeLimits,
+ Fractional 1, !- Name
+ 0, !- Lower Limit Value
+ 1, !- Upper Limit Value
+ Continuous; !- Numeric Type
+
+ ScheduleTypeLimits,
+ OnOff, !- Name
+ 0, !- Lower Limit Value
+ 1, !- Upper Limit Value
+ Discrete, !- Numeric Type
+ availability; !- Unit Type
+
+ ScheduleTypeLimits,
+ OnOff 1, !- Name
+ 0, !- Lower Limit Value
+ 1, !- Upper Limit Value
+ Discrete, !- Numeric Type
+ availability; !- Unit Type
+
+!- =========== ALL OBJECTS IN CLASS: SCHEDULE:DAY:INTERVAL ===========
+
+ Schedule:Day:Interval,
+ trans schedule winter=0.85 summer=0.7 allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0.85; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ trans schedule winter=0.85 summer=0.7 allday121, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0.7; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ trans schedule winter=0.85 summer=0.7 allday305, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0.85; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ trans schedule winter=0.85 summer=0.7 default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.108181818181818, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0901515151515151, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0991666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.162272727272727, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.270454545454545, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.342575757575758, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.369621212121212, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.351590909090909, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.333560606060606, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.324545454545455, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.315530303030303, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.333560606060606, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.369621212121212, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.450757575757576, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.585984848484848, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.77530303030303, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.955606060606061, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.991666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.71219696969697, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.360606060606061, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.162272727272727; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday2, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.100909090909091, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0840909090909091, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0925, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.151363636363636, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.252272727272727, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.319545454545455, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.344772727272727, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.327954545454545, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.311136363636364, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.302727272727273, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.294318181818182, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.311136363636364, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.344772727272727, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.420454545454545, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.546590909090909, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.723181818181818, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.891363636363636, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.925, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.664318181818182, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.336363636363636, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.151363636363636; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday3, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0927272727272727, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0772727272727273, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.085, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.139090909090909, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.231818181818182, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.293636363636364, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.316818181818182, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.301363636363636, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.285909090909091, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.278181818181818, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.270454545454545, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.285909090909091, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.316818181818182, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.386363636363636, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.502272727272727, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.664545454545454, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.819090909090909, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.85, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.610454545454545, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.309090909090909, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.139090909090909; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday4, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0845454545454545, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0704545454545455, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0775, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.126818181818182, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.211363636363636, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.267727272727273, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.288863636363636, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.274772727272727, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.260681818181818, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.253636363636364, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.246590909090909, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.260681818181818, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.288863636363636, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.352272727272727, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.457954545454545, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.605909090909091, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.746818181818182, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.775, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.556590909090909, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.281818181818182, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.126818181818182; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday5, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0763636363636364, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0636363636363636, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.07, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.114545454545455, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.190909090909091, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.241818181818182, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.260909090909091, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.248181818181818, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.235454545454545, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.229090909090909, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.222727272727273, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.235454545454545, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.260909090909091, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.318181818181818, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.413636363636364, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.547272727272727, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.674545454545454, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.7, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.502727272727273, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.254545454545455, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.114545454545455; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday6, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0727272727272727, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0606060606060606, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0666666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.109090909090909, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.181818181818182, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.23030303030303, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.248484848484849, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.236363636363636, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.224242424242424, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.218181818181818, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.212121212121212, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.224242424242424, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.248484848484849, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.303030303030303, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.393939393939394, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.521212121212121, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.642424242424242, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.666666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.478787878787879, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.242424242424242, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.109090909090909; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday7, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0745454545454545, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0621212121212121, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0683333333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.111818181818182, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.186363636363636, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.236060606060606, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.25469696969697, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.242272727272727, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.229848484848485, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.223636363636364, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.217424242424242, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.229848484848485, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.25469696969697, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.310606060606061, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.403787878787879, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.534242424242424, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.658484848484848, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.683333333333333, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.490757575757576, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.248484848484848, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.111818181818182; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday8, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.08, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0666666666666667, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0733333333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.12, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.2, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.253333333333333, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.273333333333333, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.26, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.246666666666667, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.24, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.233333333333333, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.246666666666667, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.273333333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.333333333333333, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.433333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.573333333333333, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.706666666666667, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.733333333333333, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.526666666666667, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.266666666666667, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.12; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday9, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0890909090909091, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0742424242424242, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0816666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.133636363636364, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.222727272727273, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.282121212121212, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.304393939393939, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.289545454545454, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.27469696969697, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.267272727272727, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.259848484848485, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.27469696969697, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.304393939393939, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.371212121212121, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.482575757575758, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.638484848484848, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.786969696969697, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.816666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.586515151515152, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.296969696969697, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.133636363636364; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday10, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.0972727272727273, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0810606060606061, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0891666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.145909090909091, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.243181818181818, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.308030303030303, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.332348484848485, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.316136363636364, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.299924242424242, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.291818181818182, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.283712121212121, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.299924242424242, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.332348484848485, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.40530303030303, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.526893939393939, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.697121212121212, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.859242424242424, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.891666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.640378787878788, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.324242424242424, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.145909090909091; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday11, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.105454545454545, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0878787878787879, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.0966666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.158181818181818, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.263636363636364, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.333939393939394, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.36030303030303, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.342727272727273, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.325151515151515, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.316363636363636, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.307575757575758, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.325151515151515, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.36030303030303, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.439393939393939, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.571212121212121, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.755757575757576, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.931515151515151, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.966666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.694242424242424, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.351515151515151, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.158181818181818; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule allday12, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.109090909090909, !- Value Until Time 1
+ 04:00, !- Time 2
+ 0.0909090909090909, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.1, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.163636363636364, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.272727272727273, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.345454545454545, !- Value Until Time 6
+ 10:00, !- Time 7
+ 0.372727272727273, !- Value Until Time 7
+ 11:00, !- Time 8
+ 0.354545454545455, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.336363636363636, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.327272727272727, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.318181818181818, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.336363636363636, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.372727272727273, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.454545454545455, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.590909090909091, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.781818181818182, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.963636363636363, !- Value Until Time 17
+ 21:00, !- Time 18
+ 1, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.718181818181818, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.363636363636364, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.163636363636364; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ interior lighting schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ occupants schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 05:00, !- Time 1
+ 0.426829268292683, !- Value Until Time 1
+ 06:00, !- Time 2
+ 0.719512195121951, !- Value Until Time 2
+ 07:00, !- Time 3
+ 1, !- Value Until Time 3
+ 08:00, !- Time 4
+ 0.670731707317073, !- Value Until Time 4
+ 09:00, !- Time 5
+ 0.329268292682927, !- Value Until Time 5
+ 14:00, !- Time 6
+ 0.170731707317073, !- Value Until Time 6
+ 15:00, !- Time 7
+ 0.231707317073171, !- Value Until Time 7
+ 16:00, !- Time 8
+ 0.329268292682927, !- Value Until Time 8
+ 17:00, !- Time 9
+ 0.5, !- Value Until Time 9
+ 18:00, !- Time 10
+ 0.670731707317073, !- Value Until Time 10
+ 19:00, !- Time 11
+ 0.829268292682927, !- Value Until Time 11
+ 21:00, !- Time 12
+ 1, !- Value Until Time 12
+ 22:00, !- Time 13
+ 0.853658536585366, !- Value Until Time 13
+ 23:00, !- Time 14
+ 0.646341463414634, !- Value Until Time 14
+ 24:00, !- Time 15
+ 0.426829268292683; !- Value Until Time 15
+
+ Schedule:Day:Interval,
+ occupants schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ clothes dryer schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.123456790123457, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.0740740740740741, !- Value Until Time 2
+ 03:00, !- Time 3
+ 0.0493827160493827, !- Value Until Time 3
+ 04:00, !- Time 4
+ 0.0246913580246914, !- Value Until Time 4
+ 05:00, !- Time 5
+ 0.0493827160493827, !- Value Until Time 5
+ 06:00, !- Time 6
+ 0.0740740740740741, !- Value Until Time 6
+ 07:00, !- Time 7
+ 0.197530864197531, !- Value Until Time 7
+ 08:00, !- Time 8
+ 0.395061728395062, !- Value Until Time 8
+ 09:00, !- Time 9
+ 0.592592592592593, !- Value Until Time 9
+ 10:00, !- Time 10
+ 0.839506172839506, !- Value Until Time 10
+ 11:00, !- Time 11
+ 0.962962962962963, !- Value Until Time 11
+ 12:00, !- Time 12
+ 1, !- Value Until Time 12
+ 13:00, !- Time 13
+ 0.91358024691358, !- Value Until Time 13
+ 14:00, !- Time 14
+ 0.827160493827161, !- Value Until Time 14
+ 15:00, !- Time 15
+ 0.716049382716049, !- Value Until Time 15
+ 16:00, !- Time 16
+ 0.753086419753086, !- Value Until Time 16
+ 17:00, !- Time 17
+ 0.679012345679012, !- Value Until Time 17
+ 18:00, !- Time 18
+ 0.666666666666667, !- Value Until Time 18
+ 20:00, !- Time 19
+ 0.62962962962963, !- Value Until Time 19
+ 21:00, !- Time 20
+ 0.641975308641975, !- Value Until Time 20
+ 22:00, !- Time 21
+ 0.666666666666667, !- Value Until Time 21
+ 23:00, !- Time 22
+ 0.54320987654321, !- Value Until Time 22
+ 24:00, !- Time 23
+ 0.296296296296296; !- Value Until Time 23
+
+ Schedule:Day:Interval,
+ clothes dryer schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ clothes washer schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.104651162790698, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.0813953488372093, !- Value Until Time 2
+ 04:00, !- Time 3
+ 0.0465116279069768, !- Value Until Time 3
+ 05:00, !- Time 4
+ 0.0813953488372093, !- Value Until Time 4
+ 06:00, !- Time 5
+ 0.127906976744186, !- Value Until Time 5
+ 07:00, !- Time 6
+ 0.255813953488372, !- Value Until Time 6
+ 08:00, !- Time 7
+ 0.569767441860465, !- Value Until Time 7
+ 09:00, !- Time 8
+ 0.848837209302326, !- Value Until Time 8
+ 10:00, !- Time 9
+ 1, !- Value Until Time 9
+ 11:00, !- Time 10
+ 0.976744186046512, !- Value Until Time 10
+ 12:00, !- Time 11
+ 0.872093023255814, !- Value Until Time 11
+ 13:00, !- Time 12
+ 0.779069767441861, !- Value Until Time 12
+ 14:00, !- Time 13
+ 0.697674418604651, !- Value Until Time 13
+ 15:00, !- Time 14
+ 0.569767441860465, !- Value Until Time 14
+ 16:00, !- Time 15
+ 0.593023255813954, !- Value Until Time 15
+ 17:00, !- Time 16
+ 0.581395348837209, !- Value Until Time 16
+ 21:00, !- Time 17
+ 0.569767441860465, !- Value Until Time 17
+ 22:00, !- Time 18
+ 0.546511627906977, !- Value Until Time 18
+ 23:00, !- Time 19
+ 0.372093023255814, !- Value Until Time 19
+ 24:00, !- Time 20
+ 0.197674418604651; !- Value Until Time 20
+
+ Schedule:Day:Interval,
+ clothes washer schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooking range schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 05:00, !- Time 1
+ 0.0597014925373134, !- Value Until Time 1
+ 06:00, !- Time 2
+ 0.111940298507463, !- Value Until Time 2
+ 07:00, !- Time 3
+ 0.171641791044776, !- Value Until Time 3
+ 08:00, !- Time 4
+ 0.291044776119403, !- Value Until Time 4
+ 11:00, !- Time 5
+ 0.343283582089552, !- Value Until Time 5
+ 12:00, !- Time 6
+ 0.402985074626866, !- Value Until Time 6
+ 13:00, !- Time 7
+ 0.462686567164179, !- Value Until Time 7
+ 14:00, !- Time 8
+ 0.343283582089552, !- Value Until Time 8
+ 15:00, !- Time 9
+ 0.291044776119403, !- Value Until Time 9
+ 16:00, !- Time 10
+ 0.402985074626866, !- Value Until Time 10
+ 17:00, !- Time 11
+ 0.567164179104478, !- Value Until Time 11
+ 18:00, !- Time 12
+ 1, !- Value Until Time 12
+ 19:00, !- Time 13
+ 0.850746268656716, !- Value Until Time 13
+ 20:00, !- Time 14
+ 0.432835820895522, !- Value Until Time 14
+ 21:00, !- Time 15
+ 0.291044776119403, !- Value Until Time 15
+ 22:00, !- Time 16
+ 0.23134328358209, !- Value Until Time 16
+ 23:00, !- Time 17
+ 0.171641791044776, !- Value Until Time 17
+ 24:00, !- Time 18
+ 0.111940298507463; !- Value Until Time 18
+
+ Schedule:Day:Interval,
+ cooking range schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ dishwasher schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.135135135135135, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.0630630630630631, !- Value Until Time 2
+ 03:00, !- Time 3
+ 0.045045045045045, !- Value Until Time 3
+ 05:00, !- Time 4
+ 0.027027027027027, !- Value Until Time 4
+ 06:00, !- Time 5
+ 0.0900900900900901, !- Value Until Time 5
+ 07:00, !- Time 6
+ 0.18018018018018, !- Value Until Time 6
+ 08:00, !- Time 7
+ 0.279279279279279, !- Value Until Time 7
+ 09:00, !- Time 8
+ 0.522522522522523, !- Value Until Time 8
+ 10:00, !- Time 9
+ 0.585585585585586, !- Value Until Time 9
+ 11:00, !- Time 10
+ 0.504504504504504, !- Value Until Time 10
+ 12:00, !- Time 11
+ 0.432432432432432, !- Value Until Time 11
+ 13:00, !- Time 12
+ 0.378378378378378, !- Value Until Time 12
+ 14:00, !- Time 13
+ 0.414414414414414, !- Value Until Time 13
+ 15:00, !- Time 14
+ 0.324324324324324, !- Value Until Time 14
+ 17:00, !- Time 15
+ 0.342342342342342, !- Value Until Time 15
+ 18:00, !- Time 16
+ 0.441441441441441, !- Value Until Time 16
+ 19:00, !- Time 17
+ 0.783783783783784, !- Value Until Time 17
+ 20:00, !- Time 18
+ 1, !- Value Until Time 18
+ 21:00, !- Time 19
+ 0.810810810810811, !- Value Until Time 19
+ 22:00, !- Time 20
+ 0.603603603603604, !- Value Until Time 20
+ 23:00, !- Time 21
+ 0.396396396396396, !- Value Until Time 21
+ 24:00, !- Time 22
+ 0.279279279279279; !- Value Until Time 22
+
+ Schedule:Day:Interval,
+ dishwasher schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ misc plug loads schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 06:00, !- Time 1
+ 0.705882352941177, !- Value Until Time 1
+ 07:00, !- Time 2
+ 0.745098039215686, !- Value Until Time 2
+ 08:00, !- Time 3
+ 0.803921568627451, !- Value Until Time 3
+ 15:00, !- Time 4
+ 0.823529411764706, !- Value Until Time 4
+ 16:00, !- Time 5
+ 0.862745098039216, !- Value Until Time 5
+ 17:00, !- Time 6
+ 0.92156862745098, !- Value Until Time 6
+ 18:00, !- Time 7
+ 0.980392156862745, !- Value Until Time 7
+ 19:00, !- Time 8
+ 1, !- Value Until Time 8
+ 20:00, !- Time 9
+ 0.980392156862745, !- Value Until Time 9
+ 21:00, !- Time 10
+ 0.941176470588235, !- Value Until Time 10
+ 22:00, !- Time 11
+ 0.862745098039216, !- Value Until Time 11
+ 23:00, !- Time 12
+ 0.784313725490196, !- Value Until Time 12
+ 24:00, !- Time 13
+ 0.725490196078431; !- Value Until Time 13
+
+ Schedule:Day:Interval,
+ misc plug loads schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ misc tv schedule allday1,!- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.106060606060606, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.053030303030303, !- Value Until Time 2
+ 03:00, !- Time 3
+ 0.0303030303030303, !- Value Until Time 3
+ 04:00, !- Time 4
+ 0.0227272727272727, !- Value Until Time 4
+ 05:00, !- Time 5
+ 0.0303030303030303, !- Value Until Time 5
+ 06:00, !- Time 6
+ 0.0454545454545455, !- Value Until Time 6
+ 07:00, !- Time 7
+ 0.0757575757575758, !- Value Until Time 7
+ 08:00, !- Time 8
+ 0.113636363636364, !- Value Until Time 8
+ 09:00, !- Time 9
+ 0.151515151515152, !- Value Until Time 9
+ 10:00, !- Time 10
+ 0.189393939393939, !- Value Until Time 10
+ 11:00, !- Time 11
+ 0.212121212121212, !- Value Until Time 11
+ 12:00, !- Time 12
+ 0.234848484848485, !- Value Until Time 12
+ 13:00, !- Time 13
+ 0.25, !- Value Until Time 13
+ 14:00, !- Time 14
+ 0.287878787878788, !- Value Until Time 14
+ 15:00, !- Time 15
+ 0.318181818181818, !- Value Until Time 15
+ 16:00, !- Time 16
+ 0.348484848484848, !- Value Until Time 16
+ 17:00, !- Time 17
+ 0.409090909090909, !- Value Until Time 17
+ 18:00, !- Time 18
+ 0.46969696969697, !- Value Until Time 18
+ 19:00, !- Time 19
+ 0.606060606060606, !- Value Until Time 19
+ 20:00, !- Time 20
+ 0.833333333333333, !- Value Until Time 20
+ 21:00, !- Time 21
+ 1, !- Value Until Time 21
+ 22:00, !- Time 22
+ 0.946969696969697, !- Value Until Time 22
+ 23:00, !- Time 23
+ 0.583333333333333, !- Value Until Time 23
+ 24:00, !- Time 24
+ 0.257575757575758; !- Value Until Time 24
+
+ Schedule:Day:Interval,
+ misc tv schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ general water use schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.315068493150685, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.287671232876712, !- Value Until Time 2
+ 04:00, !- Time 3
+ 0.342465753424658, !- Value Until Time 3
+ 05:00, !- Time 4
+ 0.36986301369863, !- Value Until Time 4
+ 06:00, !- Time 5
+ 0.520547945205479, !- Value Until Time 5
+ 07:00, !- Time 6
+ 0.602739726027397, !- Value Until Time 6
+ 08:00, !- Time 7
+ 0.534246575342466, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.506849315068493, !- Value Until Time 8
+ 11:00, !- Time 9
+ 0.465753424657534, !- Value Until Time 9
+ 14:00, !- Time 10
+ 0.479452054794521, !- Value Until Time 10
+ 15:00, !- Time 11
+ 0.534246575342466, !- Value Until Time 11
+ 16:00, !- Time 12
+ 0.589041095890411, !- Value Until Time 12
+ 17:00, !- Time 13
+ 0.698630136986301, !- Value Until Time 13
+ 18:00, !- Time 14
+ 0.876712328767123, !- Value Until Time 14
+ 19:00, !- Time 15
+ 0.89041095890411, !- Value Until Time 15
+ 20:00, !- Time 16
+ 0.986301369863014, !- Value Until Time 16
+ 21:00, !- Time 17
+ 1, !- Value Until Time 17
+ 22:00, !- Time 18
+ 0.863013698630137, !- Value Until Time 18
+ 23:00, !- Time 19
+ 0.616438356164384, !- Value Until Time 19
+ 24:00, !- Time 20
+ 0.465753424657534; !- Value Until Time 20
+
+ Schedule:Day:Interval,
+ general water use schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ heating setpoint allday1,!- Name
+ Temperature, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 20; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ heating setpoint default day, !- Name
+ Temperature, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling setpoint allday1,!- Name
+ Temperature, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 25.5555555555556; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling setpoint default day, !- Name
+ Temperature, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ clothes dryer exhaust 0 schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.123456790123457, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.0740740740740741, !- Value Until Time 2
+ 03:00, !- Time 3
+ 0.0493827160493827, !- Value Until Time 3
+ 04:00, !- Time 4
+ 0.0246913580246914, !- Value Until Time 4
+ 05:00, !- Time 5
+ 0.0493827160493827, !- Value Until Time 5
+ 06:00, !- Time 6
+ 0.0740740740740741, !- Value Until Time 6
+ 07:00, !- Time 7
+ 0.197530864197531, !- Value Until Time 7
+ 08:00, !- Time 8
+ 0.395061728395062, !- Value Until Time 8
+ 09:00, !- Time 9
+ 0.592592592592593, !- Value Until Time 9
+ 10:00, !- Time 10
+ 0.839506172839506, !- Value Until Time 10
+ 11:00, !- Time 11
+ 0.962962962962963, !- Value Until Time 11
+ 12:00, !- Time 12
+ 1, !- Value Until Time 12
+ 13:00, !- Time 13
+ 0.91358024691358, !- Value Until Time 13
+ 14:00, !- Time 14
+ 0.827160493827161, !- Value Until Time 14
+ 15:00, !- Time 15
+ 0.716049382716049, !- Value Until Time 15
+ 16:00, !- Time 16
+ 0.753086419753086, !- Value Until Time 16
+ 17:00, !- Time 17
+ 0.679012345679012, !- Value Until Time 17
+ 18:00, !- Time 18
+ 0.666666666666667, !- Value Until Time 18
+ 20:00, !- Time 19
+ 0.62962962962963, !- Value Until Time 19
+ 21:00, !- Time 20
+ 0.641975308641975, !- Value Until Time 20
+ 22:00, !- Time 21
+ 0.666666666666667, !- Value Until Time 21
+ 23:00, !- Time 22
+ 0.54320987654321, !- Value Until Time 22
+ 24:00, !- Time 23
+ 0.296296296296296; !- Value Until Time 23
+
+ Schedule:Day:Interval,
+ clothes dryer exhaust 0 schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling season schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling season schedule allday11, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling season schedule allday5, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 1; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ cooling season schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ dhw fixtures schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.13953488372093, !- Value Until Time 1
+ 02:00, !- Time 2
+ 0.0697674418604651, !- Value Until Time 2
+ 03:00, !- Time 3
+ 0.0465116279069768, !- Value Until Time 3
+ 04:00, !- Time 4
+ 0.0581395348837209, !- Value Until Time 4
+ 05:00, !- Time 5
+ 0.116279069767442, !- Value Until Time 5
+ 06:00, !- Time 6
+ 0.395348837209302, !- Value Until Time 6
+ 07:00, !- Time 7
+ 0.906976744186047, !- Value Until Time 7
+ 08:00, !- Time 8
+ 1, !- Value Until Time 8
+ 09:00, !- Time 9
+ 0.930232558139535, !- Value Until Time 9
+ 10:00, !- Time 10
+ 0.779069767441861, !- Value Until Time 10
+ 11:00, !- Time 11
+ 0.651162790697674, !- Value Until Time 11
+ 12:00, !- Time 12
+ 0.546511627906977, !- Value Until Time 12
+ 13:00, !- Time 13
+ 0.465116279069767, !- Value Until Time 13
+ 14:00, !- Time 14
+ 0.406976744186047, !- Value Until Time 14
+ 15:00, !- Time 15
+ 0.383720930232558, !- Value Until Time 15
+ 16:00, !- Time 16
+ 0.36046511627907, !- Value Until Time 16
+ 17:00, !- Time 17
+ 0.441860465116279, !- Value Until Time 17
+ 18:00, !- Time 18
+ 0.593023255813954, !- Value Until Time 18
+ 20:00, !- Time 19
+ 0.697674418604651, !- Value Until Time 19
+ 21:00, !- Time 20
+ 0.63953488372093, !- Value Until Time 20
+ 22:00, !- Time 21
+ 0.558139534883721, !- Value Until Time 21
+ 23:00, !- Time 22
+ 0.441860465116279, !- Value Until Time 22
+ 24:00, !- Time 23
+ 0.302325581395349; !- Value Until Time 23
+
+ Schedule:Day:Interval,
+ dhw fixtures schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday1, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.566666666666667, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.524166666666667, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.495833333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.5525, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.623333333333333, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.580833333333333, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.439166666666667, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.354166666666667, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.34, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.354166666666667, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.396666666666667, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.425, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.495833333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.623333333333333, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.793333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.906666666666667, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.963333333333333, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.991666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.920833333333333, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.793333333333333, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.665833333333333; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday10, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.50952380952381, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.471309523809524, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.445833333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.496785714285714, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.56047619047619, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.522261904761905, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.394880952380952, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.318452380952381, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.305714285714286, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.318452380952381, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.356666666666667, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.382142857142857, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.445833333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.56047619047619, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.713333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.815238095238095, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.866190476190476, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.891666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.82797619047619, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.713333333333333, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.598690476190476; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday11, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.552380952380952, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.510952380952381, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.483333333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.538571428571428, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.607619047619048, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.566190476190476, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.428095238095238, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.345238095238095, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.331428571428571, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.345238095238095, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.386666666666667, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.414285714285714, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.483333333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.607619047619048, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.773333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.883809523809524, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.939047619047619, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.966666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.897619047619048, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.773333333333333, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.649047619047619; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday12, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.571428571428571, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.528571428571428, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.5, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.557142857142857, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.628571428571428, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.585714285714286, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.442857142857143, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.357142857142857, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.342857142857143, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.357142857142857, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.4, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.428571428571428, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.5, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.628571428571428, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.8, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.914285714285714, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.971428571428571, !- Value Until Time 17
+ 21:00, !- Time 18
+ 1, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.928571428571428, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.8, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.671428571428571; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday2, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.528571428571429, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.488928571428571, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.4625, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.515357142857143, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.581428571428571, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.541785714285714, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.409642857142857, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.330357142857143, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.317142857142857, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.330357142857143, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.37, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.396428571428571, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.4625, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.581428571428571, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.74, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.845714285714286, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.898571428571429, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.925, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.858928571428571, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.74, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.621071428571429; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday3, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.485714285714286, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.449285714285714, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.425, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.473571428571429, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.534285714285714, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.497857142857143, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.376428571428571, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.303571428571429, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.291428571428571, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.303571428571429, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.34, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.364285714285714, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.425, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.534285714285714, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.68, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.777142857142857, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.825714285714286, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.85, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.789285714285714, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.68, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.570714285714286; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday4, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.442857142857143, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.409642857142857, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.3875, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.431785714285714, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.487142857142857, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.453928571428571, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.343214285714286, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.276785714285714, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.265714285714286, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.276785714285714, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.31, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.332142857142857, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.3875, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.487142857142857, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.62, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.708571428571429, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.752857142857143, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.775, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.719642857142857, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.62, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.520357142857143; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday5, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.4, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.37, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.35, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.39, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.44, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.41, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.31, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.25, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.24, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.25, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.28, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.3, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.35, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.44, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.56, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.64, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.68, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.7, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.65, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.56, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.47; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday6, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.380952380952381, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.352380952380952, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.333333333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.371428571428571, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.419047619047619, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.39047619047619, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.295238095238095, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.238095238095238, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.228571428571429, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.238095238095238, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.266666666666667, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.285714285714286, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.333333333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.419047619047619, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.533333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.609523809523809, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.647619047619048, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.666666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.619047619047619, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.533333333333333, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.447619047619048; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday7, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.39047619047619, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.361190476190476, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.341666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.380714285714286, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.429523809523809, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.400238095238095, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.302619047619048, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.244047619047619, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.234285714285714, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.244047619047619, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.273333333333333, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.292857142857143, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.341666666666667, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.429523809523809, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.546666666666667, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.624761904761905, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.663809523809524, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.683333333333333, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.634523809523809, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.546666666666667, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.458809523809524; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday8, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.419047619047619, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.387619047619048, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.366666666666667, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.408571428571429, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.460952380952381, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.42952380952381, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.324761904761905, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.261904761904762, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.251428571428571, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.261904761904762, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.293333333333333, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.314285714285714, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.366666666666667, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.460952380952381, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.586666666666667, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.67047619047619, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.712380952380952, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.733333333333333, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.680952380952381, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.586666666666667, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.492380952380952; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule allday9, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 01:00, !- Time 1
+ 0.466666666666667, !- Value Until Time 1
+ 03:00, !- Time 2
+ 0.431666666666667, !- Value Until Time 2
+ 05:00, !- Time 3
+ 0.408333333333333, !- Value Until Time 3
+ 06:00, !- Time 4
+ 0.455, !- Value Until Time 4
+ 07:00, !- Time 5
+ 0.513333333333333, !- Value Until Time 5
+ 08:00, !- Time 6
+ 0.478333333333333, !- Value Until Time 6
+ 09:00, !- Time 7
+ 0.361666666666667, !- Value Until Time 7
+ 10:00, !- Time 8
+ 0.291666666666667, !- Value Until Time 8
+ 12:00, !- Time 9
+ 0.28, !- Value Until Time 9
+ 13:00, !- Time 10
+ 0.291666666666667, !- Value Until Time 10
+ 14:00, !- Time 11
+ 0.326666666666667, !- Value Until Time 11
+ 15:00, !- Time 12
+ 0.35, !- Value Until Time 12
+ 16:00, !- Time 13
+ 0.408333333333333, !- Value Until Time 13
+ 17:00, !- Time 14
+ 0.513333333333333, !- Value Until Time 14
+ 18:00, !- Time 15
+ 0.653333333333333, !- Value Until Time 15
+ 19:00, !- Time 16
+ 0.746666666666667, !- Value Until Time 16
+ 20:00, !- Time 17
+ 0.793333333333333, !- Value Until Time 17
+ 21:00, !- Time 18
+ 0.816666666666667, !- Value Until Time 18
+ 22:00, !- Time 19
+ 0.758333333333333, !- Value Until Time 19
+ 23:00, !- Time 20
+ 0.653333333333333, !- Value Until Time 20
+ 24:00, !- Time 21
+ 0.548333333333333; !- Value Until Time 21
+
+ Schedule:Day:Interval,
+ exterior lighting schedule default day, !- Name
+ Fractional, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ natural vent schedule avail day, !- Name
+ OnOff, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 1; !- Value Until Time 1
+
+ Schedule:Day:Interval,
+ natural vent schedule default day, !- Name
+ OnOff, !- Schedule Type Limits Name
+ No, !- Interpolate to Timestep
+ 24:00, !- Time 1
+ 0; !- Value Until Time 1
+
+!- =========== ALL OBJECTS IN CLASS: SCHEDULE:WEEK:DAILY ===========
+
+ Schedule:Week:Daily,
+ trans schedule winter=0.85 summer=0.7 Week Rule - Jan1-Apr28, !- Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Sunday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Monday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Tuesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Wednesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Thursday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Friday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Saturday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- Holiday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- SummerDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- WinterDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- CustomDay1 Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ trans schedule winter=0.85 summer=0.7 Week Rule - Apr29-May5, !- Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Sunday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday1, !- Monday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Tuesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Wednesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Thursday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Friday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Saturday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- Holiday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- SummerDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- WinterDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- CustomDay1 Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ trans schedule winter=0.85 summer=0.7 Week Rule - May6-Oct27, !- Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Sunday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Monday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Tuesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Wednesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Thursday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Friday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Saturday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- Holiday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- SummerDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- WinterDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- CustomDay1 Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ trans schedule winter=0.85 summer=0.7 Week Rule - Oct28-Nov3, !- Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Sunday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Monday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Tuesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday121, !- Wednesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Thursday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Friday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Saturday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- Holiday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- SummerDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- WinterDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- CustomDay1 Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ trans schedule winter=0.85 summer=0.7 Week Rule - Nov4-Dec31, !- Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Sunday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Monday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Tuesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Wednesday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Thursday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Friday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 allday305, !- Saturday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- Holiday Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- SummerDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- WinterDesignDay Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day, !- CustomDay1 Schedule:Day Name
+ trans schedule winter=0.85 summer=0.7 default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Jan1-Jan27, !- Name
+ interior lighting schedule allday1, !- Sunday Schedule:Day Name
+ interior lighting schedule allday1, !- Monday Schedule:Day Name
+ interior lighting schedule allday1, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday1, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday1, !- Thursday Schedule:Day Name
+ interior lighting schedule allday1, !- Friday Schedule:Day Name
+ interior lighting schedule allday1, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Jan28-Feb3, !- Name
+ interior lighting schedule allday1, !- Sunday Schedule:Day Name
+ interior lighting schedule allday1, !- Monday Schedule:Day Name
+ interior lighting schedule allday1, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday1, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday2, !- Thursday Schedule:Day Name
+ interior lighting schedule allday2, !- Friday Schedule:Day Name
+ interior lighting schedule allday2, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Feb4-Feb24, !- Name
+ interior lighting schedule allday2, !- Sunday Schedule:Day Name
+ interior lighting schedule allday2, !- Monday Schedule:Day Name
+ interior lighting schedule allday2, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday2, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday2, !- Thursday Schedule:Day Name
+ interior lighting schedule allday2, !- Friday Schedule:Day Name
+ interior lighting schedule allday2, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Feb25-Mar3, !- Name
+ interior lighting schedule allday2, !- Sunday Schedule:Day Name
+ interior lighting schedule allday2, !- Monday Schedule:Day Name
+ interior lighting schedule allday2, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday2, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday3, !- Thursday Schedule:Day Name
+ interior lighting schedule allday3, !- Friday Schedule:Day Name
+ interior lighting schedule allday3, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Mar4-Mar31, !- Name
+ interior lighting schedule allday3, !- Sunday Schedule:Day Name
+ interior lighting schedule allday3, !- Monday Schedule:Day Name
+ interior lighting schedule allday3, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday3, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday3, !- Thursday Schedule:Day Name
+ interior lighting schedule allday3, !- Friday Schedule:Day Name
+ interior lighting schedule allday3, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Apr1-Apr28, !- Name
+ interior lighting schedule allday4, !- Sunday Schedule:Day Name
+ interior lighting schedule allday4, !- Monday Schedule:Day Name
+ interior lighting schedule allday4, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday4, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday4, !- Thursday Schedule:Day Name
+ interior lighting schedule allday4, !- Friday Schedule:Day Name
+ interior lighting schedule allday4, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Apr29-May5, !- Name
+ interior lighting schedule allday4, !- Sunday Schedule:Day Name
+ interior lighting schedule allday4, !- Monday Schedule:Day Name
+ interior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday5, !- Thursday Schedule:Day Name
+ interior lighting schedule allday5, !- Friday Schedule:Day Name
+ interior lighting schedule allday5, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - May6-May26, !- Name
+ interior lighting schedule allday5, !- Sunday Schedule:Day Name
+ interior lighting schedule allday5, !- Monday Schedule:Day Name
+ interior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday5, !- Thursday Schedule:Day Name
+ interior lighting schedule allday5, !- Friday Schedule:Day Name
+ interior lighting schedule allday5, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - May27-Jun2, !- Name
+ interior lighting schedule allday5, !- Sunday Schedule:Day Name
+ interior lighting schedule allday5, !- Monday Schedule:Day Name
+ interior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday5, !- Thursday Schedule:Day Name
+ interior lighting schedule allday6, !- Friday Schedule:Day Name
+ interior lighting schedule allday6, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Jun3-Jun30, !- Name
+ interior lighting schedule allday6, !- Sunday Schedule:Day Name
+ interior lighting schedule allday6, !- Monday Schedule:Day Name
+ interior lighting schedule allday6, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday6, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday6, !- Thursday Schedule:Day Name
+ interior lighting schedule allday6, !- Friday Schedule:Day Name
+ interior lighting schedule allday6, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Jul1-Jul28, !- Name
+ interior lighting schedule allday7, !- Sunday Schedule:Day Name
+ interior lighting schedule allday7, !- Monday Schedule:Day Name
+ interior lighting schedule allday7, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday7, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday7, !- Thursday Schedule:Day Name
+ interior lighting schedule allday7, !- Friday Schedule:Day Name
+ interior lighting schedule allday7, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Jul29-Aug4, !- Name
+ interior lighting schedule allday7, !- Sunday Schedule:Day Name
+ interior lighting schedule allday7, !- Monday Schedule:Day Name
+ interior lighting schedule allday7, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday8, !- Thursday Schedule:Day Name
+ interior lighting schedule allday8, !- Friday Schedule:Day Name
+ interior lighting schedule allday8, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Aug5-Aug25, !- Name
+ interior lighting schedule allday8, !- Sunday Schedule:Day Name
+ interior lighting schedule allday8, !- Monday Schedule:Day Name
+ interior lighting schedule allday8, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday8, !- Thursday Schedule:Day Name
+ interior lighting schedule allday8, !- Friday Schedule:Day Name
+ interior lighting schedule allday8, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Aug26-Sep1, !- Name
+ interior lighting schedule allday8, !- Sunday Schedule:Day Name
+ interior lighting schedule allday8, !- Monday Schedule:Day Name
+ interior lighting schedule allday8, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday8, !- Thursday Schedule:Day Name
+ interior lighting schedule allday8, !- Friday Schedule:Day Name
+ interior lighting schedule allday9, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Sep2-Sep29, !- Name
+ interior lighting schedule allday9, !- Sunday Schedule:Day Name
+ interior lighting schedule allday9, !- Monday Schedule:Day Name
+ interior lighting schedule allday9, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday9, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday9, !- Thursday Schedule:Day Name
+ interior lighting schedule allday9, !- Friday Schedule:Day Name
+ interior lighting schedule allday9, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Sep30-Oct6, !- Name
+ interior lighting schedule allday9, !- Sunday Schedule:Day Name
+ interior lighting schedule allday10, !- Monday Schedule:Day Name
+ interior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday10, !- Thursday Schedule:Day Name
+ interior lighting schedule allday10, !- Friday Schedule:Day Name
+ interior lighting schedule allday10, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Oct7-Oct27, !- Name
+ interior lighting schedule allday10, !- Sunday Schedule:Day Name
+ interior lighting schedule allday10, !- Monday Schedule:Day Name
+ interior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday10, !- Thursday Schedule:Day Name
+ interior lighting schedule allday10, !- Friday Schedule:Day Name
+ interior lighting schedule allday10, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Oct28-Nov3, !- Name
+ interior lighting schedule allday10, !- Sunday Schedule:Day Name
+ interior lighting schedule allday10, !- Monday Schedule:Day Name
+ interior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday11, !- Thursday Schedule:Day Name
+ interior lighting schedule allday11, !- Friday Schedule:Day Name
+ interior lighting schedule allday11, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Nov4-Nov24, !- Name
+ interior lighting schedule allday11, !- Sunday Schedule:Day Name
+ interior lighting schedule allday11, !- Monday Schedule:Day Name
+ interior lighting schedule allday11, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday11, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday11, !- Thursday Schedule:Day Name
+ interior lighting schedule allday11, !- Friday Schedule:Day Name
+ interior lighting schedule allday11, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Nov25-Dec1, !- Name
+ interior lighting schedule allday11, !- Sunday Schedule:Day Name
+ interior lighting schedule allday11, !- Monday Schedule:Day Name
+ interior lighting schedule allday11, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday11, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday11, !- Thursday Schedule:Day Name
+ interior lighting schedule allday11, !- Friday Schedule:Day Name
+ interior lighting schedule allday12, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ interior lighting schedule Week Rule - Dec2-Dec31, !- Name
+ interior lighting schedule allday12, !- Sunday Schedule:Day Name
+ interior lighting schedule allday12, !- Monday Schedule:Day Name
+ interior lighting schedule allday12, !- Tuesday Schedule:Day Name
+ interior lighting schedule allday12, !- Wednesday Schedule:Day Name
+ interior lighting schedule allday12, !- Thursday Schedule:Day Name
+ interior lighting schedule allday12, !- Friday Schedule:Day Name
+ interior lighting schedule allday12, !- Saturday Schedule:Day Name
+ interior lighting schedule default day, !- Holiday Schedule:Day Name
+ interior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ interior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ interior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ occupants schedule Week Rule - Jan1-Dec31, !- Name
+ occupants schedule allday1, !- Sunday Schedule:Day Name
+ occupants schedule allday1, !- Monday Schedule:Day Name
+ occupants schedule allday1, !- Tuesday Schedule:Day Name
+ occupants schedule allday1, !- Wednesday Schedule:Day Name
+ occupants schedule allday1, !- Thursday Schedule:Day Name
+ occupants schedule allday1, !- Friday Schedule:Day Name
+ occupants schedule allday1, !- Saturday Schedule:Day Name
+ occupants schedule default day, !- Holiday Schedule:Day Name
+ occupants schedule default day, !- SummerDesignDay Schedule:Day Name
+ occupants schedule default day, !- WinterDesignDay Schedule:Day Name
+ occupants schedule default day, !- CustomDay1 Schedule:Day Name
+ occupants schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ clothes dryer schedule Week Rule - Jan1-Dec31, !- Name
+ clothes dryer schedule allday1, !- Sunday Schedule:Day Name
+ clothes dryer schedule allday1, !- Monday Schedule:Day Name
+ clothes dryer schedule allday1, !- Tuesday Schedule:Day Name
+ clothes dryer schedule allday1, !- Wednesday Schedule:Day Name
+ clothes dryer schedule allday1, !- Thursday Schedule:Day Name
+ clothes dryer schedule allday1, !- Friday Schedule:Day Name
+ clothes dryer schedule allday1, !- Saturday Schedule:Day Name
+ clothes dryer schedule default day, !- Holiday Schedule:Day Name
+ clothes dryer schedule default day, !- SummerDesignDay Schedule:Day Name
+ clothes dryer schedule default day, !- WinterDesignDay Schedule:Day Name
+ clothes dryer schedule default day, !- CustomDay1 Schedule:Day Name
+ clothes dryer schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ clothes washer schedule Week Rule - Jan1-Dec31, !- Name
+ clothes washer schedule allday1, !- Sunday Schedule:Day Name
+ clothes washer schedule allday1, !- Monday Schedule:Day Name
+ clothes washer schedule allday1, !- Tuesday Schedule:Day Name
+ clothes washer schedule allday1, !- Wednesday Schedule:Day Name
+ clothes washer schedule allday1, !- Thursday Schedule:Day Name
+ clothes washer schedule allday1, !- Friday Schedule:Day Name
+ clothes washer schedule allday1, !- Saturday Schedule:Day Name
+ clothes washer schedule default day, !- Holiday Schedule:Day Name
+ clothes washer schedule default day, !- SummerDesignDay Schedule:Day Name
+ clothes washer schedule default day, !- WinterDesignDay Schedule:Day Name
+ clothes washer schedule default day, !- CustomDay1 Schedule:Day Name
+ clothes washer schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooking range schedule Week Rule - Jan1-Dec31, !- Name
+ cooking range schedule allday1, !- Sunday Schedule:Day Name
+ cooking range schedule allday1, !- Monday Schedule:Day Name
+ cooking range schedule allday1, !- Tuesday Schedule:Day Name
+ cooking range schedule allday1, !- Wednesday Schedule:Day Name
+ cooking range schedule allday1, !- Thursday Schedule:Day Name
+ cooking range schedule allday1, !- Friday Schedule:Day Name
+ cooking range schedule allday1, !- Saturday Schedule:Day Name
+ cooking range schedule default day, !- Holiday Schedule:Day Name
+ cooking range schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooking range schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooking range schedule default day, !- CustomDay1 Schedule:Day Name
+ cooking range schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ dishwasher schedule Week Rule - Jan1-Dec31, !- Name
+ dishwasher schedule allday1, !- Sunday Schedule:Day Name
+ dishwasher schedule allday1, !- Monday Schedule:Day Name
+ dishwasher schedule allday1, !- Tuesday Schedule:Day Name
+ dishwasher schedule allday1, !- Wednesday Schedule:Day Name
+ dishwasher schedule allday1, !- Thursday Schedule:Day Name
+ dishwasher schedule allday1, !- Friday Schedule:Day Name
+ dishwasher schedule allday1, !- Saturday Schedule:Day Name
+ dishwasher schedule default day, !- Holiday Schedule:Day Name
+ dishwasher schedule default day, !- SummerDesignDay Schedule:Day Name
+ dishwasher schedule default day, !- WinterDesignDay Schedule:Day Name
+ dishwasher schedule default day, !- CustomDay1 Schedule:Day Name
+ dishwasher schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ misc plug loads schedule Week Rule - Jan1-Dec31, !- Name
+ misc plug loads schedule allday1, !- Sunday Schedule:Day Name
+ misc plug loads schedule allday1, !- Monday Schedule:Day Name
+ misc plug loads schedule allday1, !- Tuesday Schedule:Day Name
+ misc plug loads schedule allday1, !- Wednesday Schedule:Day Name
+ misc plug loads schedule allday1, !- Thursday Schedule:Day Name
+ misc plug loads schedule allday1, !- Friday Schedule:Day Name
+ misc plug loads schedule allday1, !- Saturday Schedule:Day Name
+ misc plug loads schedule default day, !- Holiday Schedule:Day Name
+ misc plug loads schedule default day, !- SummerDesignDay Schedule:Day Name
+ misc plug loads schedule default day, !- WinterDesignDay Schedule:Day Name
+ misc plug loads schedule default day, !- CustomDay1 Schedule:Day Name
+ misc plug loads schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ misc tv schedule Week Rule - Jan1-Dec31, !- Name
+ misc tv schedule allday1,!- Sunday Schedule:Day Name
+ misc tv schedule allday1,!- Monday Schedule:Day Name
+ misc tv schedule allday1,!- Tuesday Schedule:Day Name
+ misc tv schedule allday1,!- Wednesday Schedule:Day Name
+ misc tv schedule allday1,!- Thursday Schedule:Day Name
+ misc tv schedule allday1,!- Friday Schedule:Day Name
+ misc tv schedule allday1,!- Saturday Schedule:Day Name
+ misc tv schedule default day, !- Holiday Schedule:Day Name
+ misc tv schedule default day, !- SummerDesignDay Schedule:Day Name
+ misc tv schedule default day, !- WinterDesignDay Schedule:Day Name
+ misc tv schedule default day, !- CustomDay1 Schedule:Day Name
+ misc tv schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ general water use schedule Week Rule - Jan1-Dec31, !- Name
+ general water use schedule allday1, !- Sunday Schedule:Day Name
+ general water use schedule allday1, !- Monday Schedule:Day Name
+ general water use schedule allday1, !- Tuesday Schedule:Day Name
+ general water use schedule allday1, !- Wednesday Schedule:Day Name
+ general water use schedule allday1, !- Thursday Schedule:Day Name
+ general water use schedule allday1, !- Friday Schedule:Day Name
+ general water use schedule allday1, !- Saturday Schedule:Day Name
+ general water use schedule default day, !- Holiday Schedule:Day Name
+ general water use schedule default day, !- SummerDesignDay Schedule:Day Name
+ general water use schedule default day, !- WinterDesignDay Schedule:Day Name
+ general water use schedule default day, !- CustomDay1 Schedule:Day Name
+ general water use schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ heating setpoint Week Rule - Jan1-Dec31, !- Name
+ heating setpoint allday1,!- Sunday Schedule:Day Name
+ heating setpoint allday1,!- Monday Schedule:Day Name
+ heating setpoint allday1,!- Tuesday Schedule:Day Name
+ heating setpoint allday1,!- Wednesday Schedule:Day Name
+ heating setpoint allday1,!- Thursday Schedule:Day Name
+ heating setpoint allday1,!- Friday Schedule:Day Name
+ heating setpoint allday1,!- Saturday Schedule:Day Name
+ heating setpoint default day, !- Holiday Schedule:Day Name
+ heating setpoint default day, !- SummerDesignDay Schedule:Day Name
+ heating setpoint default day, !- WinterDesignDay Schedule:Day Name
+ heating setpoint default day, !- CustomDay1 Schedule:Day Name
+ heating setpoint default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling setpoint Week Rule - Jan1-Dec31, !- Name
+ cooling setpoint allday1,!- Sunday Schedule:Day Name
+ cooling setpoint allday1,!- Monday Schedule:Day Name
+ cooling setpoint allday1,!- Tuesday Schedule:Day Name
+ cooling setpoint allday1,!- Wednesday Schedule:Day Name
+ cooling setpoint allday1,!- Thursday Schedule:Day Name
+ cooling setpoint allday1,!- Friday Schedule:Day Name
+ cooling setpoint allday1,!- Saturday Schedule:Day Name
+ cooling setpoint default day, !- Holiday Schedule:Day Name
+ cooling setpoint default day, !- SummerDesignDay Schedule:Day Name
+ cooling setpoint default day, !- WinterDesignDay Schedule:Day Name
+ cooling setpoint default day, !- CustomDay1 Schedule:Day Name
+ cooling setpoint default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ clothes dryer exhaust 0 schedule Week Rule - Jan1-Dec31, !- Name
+ clothes dryer exhaust 0 schedule allday1, !- Sunday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Monday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Tuesday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Wednesday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Thursday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Friday Schedule:Day Name
+ clothes dryer exhaust 0 schedule allday1, !- Saturday Schedule:Day Name
+ clothes dryer exhaust 0 schedule default day, !- Holiday Schedule:Day Name
+ clothes dryer exhaust 0 schedule default day, !- SummerDesignDay Schedule:Day Name
+ clothes dryer exhaust 0 schedule default day, !- WinterDesignDay Schedule:Day Name
+ clothes dryer exhaust 0 schedule default day, !- CustomDay1 Schedule:Day Name
+ clothes dryer exhaust 0 schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling season schedule Week Rule - Jan1-Apr28, !- Name
+ cooling season schedule allday1, !- Sunday Schedule:Day Name
+ cooling season schedule allday1, !- Monday Schedule:Day Name
+ cooling season schedule allday1, !- Tuesday Schedule:Day Name
+ cooling season schedule allday1, !- Wednesday Schedule:Day Name
+ cooling season schedule allday1, !- Thursday Schedule:Day Name
+ cooling season schedule allday1, !- Friday Schedule:Day Name
+ cooling season schedule allday1, !- Saturday Schedule:Day Name
+ cooling season schedule default day, !- Holiday Schedule:Day Name
+ cooling season schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooling season schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooling season schedule default day, !- CustomDay1 Schedule:Day Name
+ cooling season schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling season schedule Week Rule - Apr29-May5, !- Name
+ cooling season schedule allday1, !- Sunday Schedule:Day Name
+ cooling season schedule allday1, !- Monday Schedule:Day Name
+ cooling season schedule allday5, !- Tuesday Schedule:Day Name
+ cooling season schedule allday5, !- Wednesday Schedule:Day Name
+ cooling season schedule allday5, !- Thursday Schedule:Day Name
+ cooling season schedule allday5, !- Friday Schedule:Day Name
+ cooling season schedule allday5, !- Saturday Schedule:Day Name
+ cooling season schedule default day, !- Holiday Schedule:Day Name
+ cooling season schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooling season schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooling season schedule default day, !- CustomDay1 Schedule:Day Name
+ cooling season schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling season schedule Week Rule - May6-Oct27, !- Name
+ cooling season schedule allday5, !- Sunday Schedule:Day Name
+ cooling season schedule allday5, !- Monday Schedule:Day Name
+ cooling season schedule allday5, !- Tuesday Schedule:Day Name
+ cooling season schedule allday5, !- Wednesday Schedule:Day Name
+ cooling season schedule allday5, !- Thursday Schedule:Day Name
+ cooling season schedule allday5, !- Friday Schedule:Day Name
+ cooling season schedule allday5, !- Saturday Schedule:Day Name
+ cooling season schedule default day, !- Holiday Schedule:Day Name
+ cooling season schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooling season schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooling season schedule default day, !- CustomDay1 Schedule:Day Name
+ cooling season schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling season schedule Week Rule - Oct28-Nov3, !- Name
+ cooling season schedule allday5, !- Sunday Schedule:Day Name
+ cooling season schedule allday5, !- Monday Schedule:Day Name
+ cooling season schedule allday5, !- Tuesday Schedule:Day Name
+ cooling season schedule allday5, !- Wednesday Schedule:Day Name
+ cooling season schedule allday11, !- Thursday Schedule:Day Name
+ cooling season schedule allday11, !- Friday Schedule:Day Name
+ cooling season schedule allday11, !- Saturday Schedule:Day Name
+ cooling season schedule default day, !- Holiday Schedule:Day Name
+ cooling season schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooling season schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooling season schedule default day, !- CustomDay1 Schedule:Day Name
+ cooling season schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ cooling season schedule Week Rule - Nov4-Dec31, !- Name
+ cooling season schedule allday11, !- Sunday Schedule:Day Name
+ cooling season schedule allday11, !- Monday Schedule:Day Name
+ cooling season schedule allday11, !- Tuesday Schedule:Day Name
+ cooling season schedule allday11, !- Wednesday Schedule:Day Name
+ cooling season schedule allday11, !- Thursday Schedule:Day Name
+ cooling season schedule allday11, !- Friday Schedule:Day Name
+ cooling season schedule allday11, !- Saturday Schedule:Day Name
+ cooling season schedule default day, !- Holiday Schedule:Day Name
+ cooling season schedule default day, !- SummerDesignDay Schedule:Day Name
+ cooling season schedule default day, !- WinterDesignDay Schedule:Day Name
+ cooling season schedule default day, !- CustomDay1 Schedule:Day Name
+ cooling season schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ dhw fixtures schedule Week Rule - Jan1-Dec31, !- Name
+ dhw fixtures schedule allday1, !- Sunday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Monday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Tuesday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Wednesday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Thursday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Friday Schedule:Day Name
+ dhw fixtures schedule allday1, !- Saturday Schedule:Day Name
+ dhw fixtures schedule default day, !- Holiday Schedule:Day Name
+ dhw fixtures schedule default day, !- SummerDesignDay Schedule:Day Name
+ dhw fixtures schedule default day, !- WinterDesignDay Schedule:Day Name
+ dhw fixtures schedule default day, !- CustomDay1 Schedule:Day Name
+ dhw fixtures schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Jan1-Jan27, !- Name
+ exterior lighting schedule allday1, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday1, !- Monday Schedule:Day Name
+ exterior lighting schedule allday1, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday1, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday1, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday1, !- Friday Schedule:Day Name
+ exterior lighting schedule allday1, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Jan28-Feb3, !- Name
+ exterior lighting schedule allday1, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday1, !- Monday Schedule:Day Name
+ exterior lighting schedule allday1, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday1, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday2, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday2, !- Friday Schedule:Day Name
+ exterior lighting schedule allday2, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Feb4-Feb24, !- Name
+ exterior lighting schedule allday2, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday2, !- Monday Schedule:Day Name
+ exterior lighting schedule allday2, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday2, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday2, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday2, !- Friday Schedule:Day Name
+ exterior lighting schedule allday2, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Feb25-Mar3, !- Name
+ exterior lighting schedule allday2, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday2, !- Monday Schedule:Day Name
+ exterior lighting schedule allday2, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday2, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday3, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday3, !- Friday Schedule:Day Name
+ exterior lighting schedule allday3, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Mar4-Mar31, !- Name
+ exterior lighting schedule allday3, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday3, !- Monday Schedule:Day Name
+ exterior lighting schedule allday3, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday3, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday3, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday3, !- Friday Schedule:Day Name
+ exterior lighting schedule allday3, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Apr1-Apr28, !- Name
+ exterior lighting schedule allday4, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday4, !- Monday Schedule:Day Name
+ exterior lighting schedule allday4, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday4, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday4, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday4, !- Friday Schedule:Day Name
+ exterior lighting schedule allday4, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Apr29-May5, !- Name
+ exterior lighting schedule allday4, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday4, !- Monday Schedule:Day Name
+ exterior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday5, !- Friday Schedule:Day Name
+ exterior lighting schedule allday5, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - May6-May26, !- Name
+ exterior lighting schedule allday5, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday5, !- Monday Schedule:Day Name
+ exterior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday5, !- Friday Schedule:Day Name
+ exterior lighting schedule allday5, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - May27-Jun2, !- Name
+ exterior lighting schedule allday5, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday5, !- Monday Schedule:Day Name
+ exterior lighting schedule allday5, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday5, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday6, !- Friday Schedule:Day Name
+ exterior lighting schedule allday6, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Jun3-Jun30, !- Name
+ exterior lighting schedule allday6, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday6, !- Monday Schedule:Day Name
+ exterior lighting schedule allday6, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday6, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday6, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday6, !- Friday Schedule:Day Name
+ exterior lighting schedule allday6, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Jul1-Jul28, !- Name
+ exterior lighting schedule allday7, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday7, !- Monday Schedule:Day Name
+ exterior lighting schedule allday7, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday7, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday7, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday7, !- Friday Schedule:Day Name
+ exterior lighting schedule allday7, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Jul29-Aug4, !- Name
+ exterior lighting schedule allday7, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday7, !- Monday Schedule:Day Name
+ exterior lighting schedule allday7, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday8, !- Friday Schedule:Day Name
+ exterior lighting schedule allday8, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Aug5-Aug25, !- Name
+ exterior lighting schedule allday8, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday8, !- Monday Schedule:Day Name
+ exterior lighting schedule allday8, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday8, !- Friday Schedule:Day Name
+ exterior lighting schedule allday8, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Aug26-Sep1, !- Name
+ exterior lighting schedule allday8, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday8, !- Monday Schedule:Day Name
+ exterior lighting schedule allday8, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday8, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday8, !- Friday Schedule:Day Name
+ exterior lighting schedule allday9, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Sep2-Sep29, !- Name
+ exterior lighting schedule allday9, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday9, !- Monday Schedule:Day Name
+ exterior lighting schedule allday9, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday9, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday9, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday9, !- Friday Schedule:Day Name
+ exterior lighting schedule allday9, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Sep30-Oct6, !- Name
+ exterior lighting schedule allday9, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday10, !- Monday Schedule:Day Name
+ exterior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday10, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday10, !- Friday Schedule:Day Name
+ exterior lighting schedule allday10, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Oct7-Oct27, !- Name
+ exterior lighting schedule allday10, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday10, !- Monday Schedule:Day Name
+ exterior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday10, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday10, !- Friday Schedule:Day Name
+ exterior lighting schedule allday10, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Oct28-Nov3, !- Name
+ exterior lighting schedule allday10, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday10, !- Monday Schedule:Day Name
+ exterior lighting schedule allday10, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday10, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday11, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday11, !- Friday Schedule:Day Name
+ exterior lighting schedule allday11, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Nov4-Nov24, !- Name
+ exterior lighting schedule allday11, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday11, !- Monday Schedule:Day Name
+ exterior lighting schedule allday11, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday11, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday11, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday11, !- Friday Schedule:Day Name
+ exterior lighting schedule allday11, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Nov25-Dec1, !- Name
+ exterior lighting schedule allday11, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday11, !- Monday Schedule:Day Name
+ exterior lighting schedule allday11, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday11, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday11, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday11, !- Friday Schedule:Day Name
+ exterior lighting schedule allday12, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ exterior lighting schedule Week Rule - Dec2-Dec31, !- Name
+ exterior lighting schedule allday12, !- Sunday Schedule:Day Name
+ exterior lighting schedule allday12, !- Monday Schedule:Day Name
+ exterior lighting schedule allday12, !- Tuesday Schedule:Day Name
+ exterior lighting schedule allday12, !- Wednesday Schedule:Day Name
+ exterior lighting schedule allday12, !- Thursday Schedule:Day Name
+ exterior lighting schedule allday12, !- Friday Schedule:Day Name
+ exterior lighting schedule allday12, !- Saturday Schedule:Day Name
+ exterior lighting schedule default day, !- Holiday Schedule:Day Name
+ exterior lighting schedule default day, !- SummerDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- WinterDesignDay Schedule:Day Name
+ exterior lighting schedule default day, !- CustomDay1 Schedule:Day Name
+ exterior lighting schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ natural vent schedule Week Rule - Jan1-Jan6, !- Name
+ natural vent schedule avail day, !- Sunday Schedule:Day Name
+ natural vent schedule avail day, !- Monday Schedule:Day Name
+ natural vent schedule default day, !- Tuesday Schedule:Day Name
+ natural vent schedule avail day, !- Wednesday Schedule:Day Name
+ natural vent schedule default day, !- Thursday Schedule:Day Name
+ natural vent schedule avail day, !- Friday Schedule:Day Name
+ natural vent schedule default day, !- Saturday Schedule:Day Name
+ natural vent schedule default day, !- Holiday Schedule:Day Name
+ natural vent schedule default day, !- SummerDesignDay Schedule:Day Name
+ natural vent schedule default day, !- WinterDesignDay Schedule:Day Name
+ natural vent schedule default day, !- CustomDay1 Schedule:Day Name
+ natural vent schedule default day; !- CustomDay2 Schedule:Day Name
+
+ Schedule:Week:Daily,
+ natural vent schedule Week Rule - Jan7-Dec31, !- Name
+ natural vent schedule default day, !- Sunday Schedule:Day Name
+ natural vent schedule avail day, !- Monday Schedule:Day Name
+ natural vent schedule default day, !- Tuesday Schedule:Day Name
+ natural vent schedule avail day, !- Wednesday Schedule:Day Name
+ natural vent schedule default day, !- Thursday Schedule:Day Name
+ natural vent schedule avail day, !- Friday Schedule:Day Name
+ natural vent schedule default day, !- Saturday Schedule:Day Name
+ natural vent schedule default day, !- Holiday Schedule:Day Name
+ natural vent schedule default day, !- SummerDesignDay Schedule:Day Name
+ natural vent schedule default day, !- WinterDesignDay Schedule:Day Name
+ natural vent schedule default day, !- CustomDay1 Schedule:Day Name
+ natural vent schedule default day; !- CustomDay2 Schedule:Day Name
+
+!- =========== ALL OBJECTS IN CLASS: SCHEDULE:YEAR ===========
+
+ Schedule:Year,
+ trans schedule winter=0.85 summer=0.7, !- Name
+ Fractional, !- Schedule Type Limits Name
+ trans schedule winter=0.85 summer=0.7 Week Rule - Jan1-Apr28, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 4, !- End Month 1
+ 28, !- End Day 1
+ trans schedule winter=0.85 summer=0.7 Week Rule - Apr29-May5, !- Schedule:Week Name 2
+ 4, !- Start Month 2
+ 29, !- Start Day 2
+ 5, !- End Month 2
+ 5, !- End Day 2
+ trans schedule winter=0.85 summer=0.7 Week Rule - May6-Oct27, !- Schedule:Week Name 3
+ 5, !- Start Month 3
+ 6, !- Start Day 3
+ 10, !- End Month 3
+ 27, !- End Day 3
+ trans schedule winter=0.85 summer=0.7 Week Rule - Oct28-Nov3, !- Schedule:Week Name 4
+ 10, !- Start Month 4
+ 28, !- Start Day 4
+ 11, !- End Month 4
+ 3, !- End Day 4
+ trans schedule winter=0.85 summer=0.7 Week Rule - Nov4-Dec31, !- Schedule:Week Name 5
+ 11, !- Start Month 5
+ 4, !- Start Day 5
+ 12, !- End Month 5
+ 31; !- End Day 5
+
+ Schedule:Year,
+ interior lighting schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ interior lighting schedule Week Rule - Jan1-Jan27, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 1, !- End Month 1
+ 27, !- End Day 1
+ interior lighting schedule Week Rule - Jan28-Feb3, !- Schedule:Week Name 2
+ 1, !- Start Month 2
+ 28, !- Start Day 2
+ 2, !- End Month 2
+ 3, !- End Day 2
+ interior lighting schedule Week Rule - Feb4-Feb24, !- Schedule:Week Name 3
+ 2, !- Start Month 3
+ 4, !- Start Day 3
+ 2, !- End Month 3
+ 24, !- End Day 3
+ interior lighting schedule Week Rule - Feb25-Mar3, !- Schedule:Week Name 4
+ 2, !- Start Month 4
+ 25, !- Start Day 4
+ 3, !- End Month 4
+ 3, !- End Day 4
+ interior lighting schedule Week Rule - Mar4-Mar31, !- Schedule:Week Name 5
+ 3, !- Start Month 5
+ 4, !- Start Day 5
+ 3, !- End Month 5
+ 31, !- End Day 5
+ interior lighting schedule Week Rule - Apr1-Apr28, !- Schedule:Week Name 6
+ 4, !- Start Month 6
+ 1, !- Start Day 6
+ 4, !- End Month 6
+ 28, !- End Day 6
+ interior lighting schedule Week Rule - Apr29-May5, !- Schedule:Week Name 7
+ 4, !- Start Month 7
+ 29, !- Start Day 7
+ 5, !- End Month 7
+ 5, !- End Day 7
+ interior lighting schedule Week Rule - May6-May26, !- Schedule:Week Name 8
+ 5, !- Start Month 8
+ 6, !- Start Day 8
+ 5, !- End Month 8
+ 26, !- End Day 8
+ interior lighting schedule Week Rule - May27-Jun2, !- Schedule:Week Name 9
+ 5, !- Start Month 9
+ 27, !- Start Day 9
+ 6, !- End Month 9
+ 2, !- End Day 9
+ interior lighting schedule Week Rule - Jun3-Jun30, !- Schedule:Week Name 10
+ 6, !- Start Month 10
+ 3, !- Start Day 10
+ 6, !- End Month 10
+ 30, !- End Day 10
+ interior lighting schedule Week Rule - Jul1-Jul28, !- Schedule:Week Name 11
+ 7, !- Start Month 11
+ 1, !- Start Day 11
+ 7, !- End Month 11
+ 28, !- End Day 11
+ interior lighting schedule Week Rule - Jul29-Aug4, !- Schedule:Week Name 12
+ 7, !- Start Month 12
+ 29, !- Start Day 12
+ 8, !- End Month 12
+ 4, !- End Day 12
+ interior lighting schedule Week Rule - Aug5-Aug25, !- Schedule:Week Name 13
+ 8, !- Start Month 13
+ 5, !- Start Day 13
+ 8, !- End Month 13
+ 25, !- End Day 13
+ interior lighting schedule Week Rule - Aug26-Sep1, !- Schedule:Week Name 14
+ 8, !- Start Month 14
+ 26, !- Start Day 14
+ 9, !- End Month 14
+ 1, !- End Day 14
+ interior lighting schedule Week Rule - Sep2-Sep29, !- Schedule:Week Name 15
+ 9, !- Start Month 15
+ 2, !- Start Day 15
+ 9, !- End Month 15
+ 29, !- End Day 15
+ interior lighting schedule Week Rule - Sep30-Oct6, !- Schedule:Week Name 16
+ 9, !- Start Month 16
+ 30, !- Start Day 16
+ 10, !- End Month 16
+ 6, !- End Day 16
+ interior lighting schedule Week Rule - Oct7-Oct27, !- Schedule:Week Name 17
+ 10, !- Start Month 17
+ 7, !- Start Day 17
+ 10, !- End Month 17
+ 27, !- End Day 17
+ interior lighting schedule Week Rule - Oct28-Nov3, !- Schedule:Week Name 18
+ 10, !- Start Month 18
+ 28, !- Start Day 18
+ 11, !- End Month 18
+ 3, !- End Day 18
+ interior lighting schedule Week Rule - Nov4-Nov24, !- Schedule:Week Name 19
+ 11, !- Start Month 19
+ 4, !- Start Day 19
+ 11, !- End Month 19
+ 24, !- End Day 19
+ interior lighting schedule Week Rule - Nov25-Dec1, !- Schedule:Week Name 20
+ 11, !- Start Month 20
+ 25, !- Start Day 20
+ 12, !- End Month 20
+ 1, !- End Day 20
+ interior lighting schedule Week Rule - Dec2-Dec31, !- Schedule:Week Name 21
+ 12, !- Start Month 21
+ 2, !- Start Day 21
+ 12, !- End Month 21
+ 31; !- End Day 21
+
+ Schedule:Year,
+ occupants schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ occupants schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ clothes dryer schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ clothes dryer schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ clothes washer schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ clothes washer schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ cooking range schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ cooking range schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ dishwasher schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ dishwasher schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ misc plug loads schedule,!- Name
+ Fractional, !- Schedule Type Limits Name
+ misc plug loads schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ misc tv schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ misc tv schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ general water use schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ general water use schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ heating setpoint, !- Name
+ Temperature, !- Schedule Type Limits Name
+ heating setpoint Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ cooling setpoint, !- Name
+ Temperature, !- Schedule Type Limits Name
+ cooling setpoint Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ clothes dryer exhaust 0 schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ clothes dryer exhaust 0 schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ cooling season schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ cooling season schedule Week Rule - Jan1-Apr28, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 4, !- End Month 1
+ 28, !- End Day 1
+ cooling season schedule Week Rule - Apr29-May5, !- Schedule:Week Name 2
+ 4, !- Start Month 2
+ 29, !- Start Day 2
+ 5, !- End Month 2
+ 5, !- End Day 2
+ cooling season schedule Week Rule - May6-Oct27, !- Schedule:Week Name 3
+ 5, !- Start Month 3
+ 6, !- Start Day 3
+ 10, !- End Month 3
+ 27, !- End Day 3
+ cooling season schedule Week Rule - Oct28-Nov3, !- Schedule:Week Name 4
+ 10, !- Start Month 4
+ 28, !- Start Day 4
+ 11, !- End Month 4
+ 3, !- End Day 4
+ cooling season schedule Week Rule - Nov4-Dec31, !- Schedule:Week Name 5
+ 11, !- Start Month 5
+ 4, !- Start Day 5
+ 12, !- End Month 5
+ 31; !- End Day 5
+
+ Schedule:Year,
+ dhw fixtures schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ dhw fixtures schedule Week Rule - Jan1-Dec31, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 12, !- End Month 1
+ 31; !- End Day 1
+
+ Schedule:Year,
+ exterior lighting schedule, !- Name
+ Fractional, !- Schedule Type Limits Name
+ exterior lighting schedule Week Rule - Jan1-Jan27, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 1, !- End Month 1
+ 27, !- End Day 1
+ exterior lighting schedule Week Rule - Jan28-Feb3, !- Schedule:Week Name 2
+ 1, !- Start Month 2
+ 28, !- Start Day 2
+ 2, !- End Month 2
+ 3, !- End Day 2
+ exterior lighting schedule Week Rule - Feb4-Feb24, !- Schedule:Week Name 3
+ 2, !- Start Month 3
+ 4, !- Start Day 3
+ 2, !- End Month 3
+ 24, !- End Day 3
+ exterior lighting schedule Week Rule - Feb25-Mar3, !- Schedule:Week Name 4
+ 2, !- Start Month 4
+ 25, !- Start Day 4
+ 3, !- End Month 4
+ 3, !- End Day 4
+ exterior lighting schedule Week Rule - Mar4-Mar31, !- Schedule:Week Name 5
+ 3, !- Start Month 5
+ 4, !- Start Day 5
+ 3, !- End Month 5
+ 31, !- End Day 5
+ exterior lighting schedule Week Rule - Apr1-Apr28, !- Schedule:Week Name 6
+ 4, !- Start Month 6
+ 1, !- Start Day 6
+ 4, !- End Month 6
+ 28, !- End Day 6
+ exterior lighting schedule Week Rule - Apr29-May5, !- Schedule:Week Name 7
+ 4, !- Start Month 7
+ 29, !- Start Day 7
+ 5, !- End Month 7
+ 5, !- End Day 7
+ exterior lighting schedule Week Rule - May6-May26, !- Schedule:Week Name 8
+ 5, !- Start Month 8
+ 6, !- Start Day 8
+ 5, !- End Month 8
+ 26, !- End Day 8
+ exterior lighting schedule Week Rule - May27-Jun2, !- Schedule:Week Name 9
+ 5, !- Start Month 9
+ 27, !- Start Day 9
+ 6, !- End Month 9
+ 2, !- End Day 9
+ exterior lighting schedule Week Rule - Jun3-Jun30, !- Schedule:Week Name 10
+ 6, !- Start Month 10
+ 3, !- Start Day 10
+ 6, !- End Month 10
+ 30, !- End Day 10
+ exterior lighting schedule Week Rule - Jul1-Jul28, !- Schedule:Week Name 11
+ 7, !- Start Month 11
+ 1, !- Start Day 11
+ 7, !- End Month 11
+ 28, !- End Day 11
+ exterior lighting schedule Week Rule - Jul29-Aug4, !- Schedule:Week Name 12
+ 7, !- Start Month 12
+ 29, !- Start Day 12
+ 8, !- End Month 12
+ 4, !- End Day 12
+ exterior lighting schedule Week Rule - Aug5-Aug25, !- Schedule:Week Name 13
+ 8, !- Start Month 13
+ 5, !- Start Day 13
+ 8, !- End Month 13
+ 25, !- End Day 13
+ exterior lighting schedule Week Rule - Aug26-Sep1, !- Schedule:Week Name 14
+ 8, !- Start Month 14
+ 26, !- Start Day 14
+ 9, !- End Month 14
+ 1, !- End Day 14
+ exterior lighting schedule Week Rule - Sep2-Sep29, !- Schedule:Week Name 15
+ 9, !- Start Month 15
+ 2, !- Start Day 15
+ 9, !- End Month 15
+ 29, !- End Day 15
+ exterior lighting schedule Week Rule - Sep30-Oct6, !- Schedule:Week Name 16
+ 9, !- Start Month 16
+ 30, !- Start Day 16
+ 10, !- End Month 16
+ 6, !- End Day 16
+ exterior lighting schedule Week Rule - Oct7-Oct27, !- Schedule:Week Name 17
+ 10, !- Start Month 17
+ 7, !- Start Day 17
+ 10, !- End Month 17
+ 27, !- End Day 17
+ exterior lighting schedule Week Rule - Oct28-Nov3, !- Schedule:Week Name 18
+ 10, !- Start Month 18
+ 28, !- Start Day 18
+ 11, !- End Month 18
+ 3, !- End Day 18
+ exterior lighting schedule Week Rule - Nov4-Nov24, !- Schedule:Week Name 19
+ 11, !- Start Month 19
+ 4, !- Start Day 19
+ 11, !- End Month 19
+ 24, !- End Day 19
+ exterior lighting schedule Week Rule - Nov25-Dec1, !- Schedule:Week Name 20
+ 11, !- Start Month 20
+ 25, !- Start Day 20
+ 12, !- End Month 20
+ 1, !- End Day 20
+ exterior lighting schedule Week Rule - Dec2-Dec31, !- Schedule:Week Name 21
+ 12, !- Start Month 21
+ 2, !- Start Day 21
+ 12, !- End Month 21
+ 31; !- End Day 21
+
+ Schedule:Year,
+ natural vent schedule, !- Name
+ OnOff, !- Schedule Type Limits Name
+ natural vent schedule Week Rule - Jan1-Jan6, !- Schedule:Week Name 1
+ 1, !- Start Month 1
+ 1, !- Start Day 1
+ 1, !- End Month 1
+ 6, !- End Day 1
+ natural vent schedule Week Rule - Jan7-Dec31, !- Schedule:Week Name 2
+ 1, !- Start Month 2
+ 7, !- Start Day 2
+ 12, !- End Month 2
+ 31; !- End Day 2
+
+!- =========== ALL OBJECTS IN CLASS: SCHEDULE:COMPACT ===========
+
+ Schedule:Compact,
+ conditioned space Thermostat Schedule, !- Name
+ conditioned space Thermostat Schedule Type Limits, !- Schedule Type Limits Name
+ Through: 12/31, !- Field 1
+ For: AllDays, !- Field 2
+ Until: 24:00,4; !- Field 3
+
+ Schedule:Compact,
+ mains temperature schedule, !- Name
+ Temperature, !- Schedule Type Limits Name
+ Through: 01/01, !- Field 1
+ For: AllDays, !- Field 2
+ Until: 24:00,10.0422222222222, !- Field 3
+ Through: 01/02, !- Field 5
+ For: AllDays, !- Field 6
+ Until: 24:00,9.98111111111111, !- Field 7
+ Through: 01/03, !- Field 9
+ For: AllDays, !- Field 10
+ Until: 24:00,9.92111111111111, !- Field 11
+ Through: 01/04, !- Field 13
+ For: AllDays, !- Field 14
+ Until: 24:00,9.86222222222222, !- Field 15
+ Through: 01/05, !- Field 17
+ For: AllDays, !- Field 18
+ Until: 24:00,9.80444444444445, !- Field 19
+ Through: 01/06, !- Field 21
+ For: AllDays, !- Field 22
+ Until: 24:00,9.74833333333333, !- Field 23
+ Through: 01/07, !- Field 25
+ For: AllDays, !- Field 26
+ Until: 24:00,9.69333333333333, !- Field 27
+ Through: 01/08, !- Field 29
+ For: AllDays, !- Field 30
+ Until: 24:00,9.63944444444444, !- Field 31
+ Through: 01/09, !- Field 33
+ For: AllDays, !- Field 34
+ Until: 24:00,9.58722222222222, !- Field 35
+ Through: 01/10, !- Field 37
+ For: AllDays, !- Field 38
+ Until: 24:00,9.53666666666667, !- Field 39
+ Through: 01/11, !- Field 41
+ For: AllDays, !- Field 42
+ Until: 24:00,9.48722222222222, !- Field 43
+ Through: 01/12, !- Field 45
+ For: AllDays, !- Field 46
+ Until: 24:00,9.43888888888889, !- Field 47
+ Through: 01/13, !- Field 49
+ For: AllDays, !- Field 50
+ Until: 24:00,9.39222222222222, !- Field 51
+ Through: 01/14, !- Field 53
+ For: AllDays, !- Field 54
+ Until: 24:00,9.34722222222222, !- Field 55
+ Through: 01/15, !- Field 57
+ For: AllDays, !- Field 58
+ Until: 24:00,9.30333333333333, !- Field 59
+ Through: 01/16, !- Field 61
+ For: AllDays, !- Field 62
+ Until: 24:00,9.26111111111111, !- Field 63
+ Through: 01/17, !- Field 65
+ For: AllDays, !- Field 66
+ Until: 24:00,9.22, !- Field 67
+ Through: 01/18, !- Field 69
+ For: AllDays, !- Field 70
+ Until: 24:00,9.18055555555556, !- Field 71
+ Through: 01/19, !- Field 73
+ For: AllDays, !- Field 74
+ Until: 24:00,9.14277777777778, !- Field 75
+ Through: 01/20, !- Field 77
+ For: AllDays, !- Field 78
+ Until: 24:00,9.10611111111111, !- Field 79
+ Through: 01/21, !- Field 81
+ For: AllDays, !- Field 82
+ Until: 24:00,9.07111111111111, !- Field 83
+ Through: 01/22, !- Field 85
+ For: AllDays, !- Field 86
+ Until: 24:00,9.03777777777778, !- Field 87
+ Through: 01/23, !- Field 89
+ For: AllDays, !- Field 90
+ Until: 24:00,9.00611111111111, !- Field 91
+ Through: 01/24, !- Field 93
+ For: AllDays, !- Field 94
+ Until: 24:00,8.97555555555556, !- Field 95
+ Through: 01/25, !- Field 97
+ For: AllDays, !- Field 98
+ Until: 24:00,8.94722222222222, !- Field 99
+ Through: 01/26, !- Field 101
+ For: AllDays, !- Field 102
+ Until: 24:00,8.92, !- Field 103
+ Through: 01/27, !- Field 105
+ For: AllDays, !- Field 106
+ Until: 24:00,8.89388888888889, !- Field 107
+ Through: 01/28, !- Field 109
+ For: AllDays, !- Field 110
+ Until: 24:00,8.87, !- Field 111
+ Through: 01/29, !- Field 113
+ For: AllDays, !- Field 114
+ Until: 24:00,8.84777777777778, !- Field 115
+ Through: 01/30, !- Field 117
+ For: AllDays, !- Field 118
+ Until: 24:00,8.82666666666667, !- Field 119
+ Through: 01/31, !- Field 121
+ For: AllDays, !- Field 122
+ Until: 24:00,8.80722222222222, !- Field 123
+ Through: 02/01, !- Field 125
+ For: AllDays, !- Field 126
+ Until: 24:00,8.78944444444444, !- Field 127
+ Through: 02/02, !- Field 129
+ For: AllDays, !- Field 130
+ Until: 24:00,8.77333333333333, !- Field 131
+ Through: 02/03, !- Field 133
+ For: AllDays, !- Field 134
+ Until: 24:00,8.75888888888889, !- Field 135
+ Through: 02/04, !- Field 137
+ For: AllDays, !- Field 138
+ Until: 24:00,8.74611111111111, !- Field 139
+ Through: 02/05, !- Field 141
+ For: AllDays, !- Field 142
+ Until: 24:00,8.735, !- Field 143
+ Through: 02/06, !- Field 145
+ For: AllDays, !- Field 146
+ Until: 24:00,8.725, !- Field 147
+ Through: 02/07, !- Field 149
+ For: AllDays, !- Field 150
+ Until: 24:00,8.71722222222222, !-
+ Through: 02/08, !-
+ For: AllDays, !-
+ Until: 24:00,8.71055555555556, !-
+ Through: 02/09, !-
+ For: AllDays, !-
+ Until: 24:00,8.70611111111111, !-
+ Through: 02/10, !-
+ For: AllDays, !-
+ Until: 24:00,8.70277777777778, !-
+ Through: 02/11, !-
+ For: AllDays, !-
+ Until: 24:00,8.70111111111111, !-
+ Through: 02/12, !-
+ For: AllDays, !-
+ Until: 24:00,8.70166666666666, !-
+ Through: 02/13, !-
+ For: AllDays, !-
+ Until: 24:00,8.70333333333333, !-
+ Through: 02/14, !-
+ For: AllDays, !-
+ Until: 24:00,8.70666666666667, !-
+ Through: 02/15, !-
+ For: AllDays, !-
+ Until: 24:00,8.71166666666666, !-
+ Through: 02/16, !-
+ For: AllDays, !-
+ Until: 24:00,8.71833333333333, !-
+ Through: 02/17, !-
+ For: AllDays, !-
+ Until: 24:00,8.72666666666666, !-
+ Through: 02/18, !-
+ For: AllDays, !-
+ Until: 24:00,8.73666666666667, !-
+ Through: 02/19, !-
+ For: AllDays, !-
+ Until: 24:00,8.74777777777778, !-
+ Through: 02/20, !-
+ For: AllDays, !-
+ Until: 24:00,8.76111111111111, !-
+ Through: 02/21, !-
+ For: AllDays, !-
+ Until: 24:00,8.77611111111111, !-
+ Through: 02/22, !-
+ For: AllDays, !-
+ Until: 24:00,8.79222222222222, !-
+ Through: 02/23, !-
+ For: AllDays, !-
+ Until: 24:00,8.81, !-
+ Through: 02/24, !-
+ For: AllDays, !-
+ Until: 24:00,8.82944444444444, !-
+ Through: 02/25, !-
+ For: AllDays, !-
+ Until: 24:00,8.85111111111111, !-
+ Through: 02/26, !-
+ For: AllDays, !-
+ Until: 24:00,8.87333333333333, !-
+ Through: 02/27, !-
+ For: AllDays, !-
+ Until: 24:00,8.89777777777778, !-
+ Through: 02/28, !-
+ For: AllDays, !-
+ Until: 24:00,8.92388888888889, !-
+ Through: 03/01, !-
+ For: AllDays, !-
+ Until: 24:00,8.95111111111111, !-
+ Through: 03/02, !-
+ For: AllDays, !-
+ Until: 24:00,8.98, !-
+ Through: 03/03, !-
+ For: AllDays, !-
+ Until: 24:00,9.01055555555556, !-
+ Through: 03/04, !-
+ For: AllDays, !-
+ Until: 24:00,9.04277777777778, !-
+ Through: 03/05, !-
+ For: AllDays, !-
+ Until: 24:00,9.07666666666667, !-
+ Through: 03/06, !-
+ For: AllDays, !-
+ Until: 24:00,9.11166666666667, !-
+ Through: 03/07, !-
+ For: AllDays, !-
+ Until: 24:00,9.14833333333333, !-
+ Through: 03/08, !-
+ For: AllDays, !-
+ Until: 24:00,9.18666666666667, !-
+ Through: 03/09, !-
+ For: AllDays, !-
+ Until: 24:00,9.22611111111111, !-
+ Through: 03/10, !-
+ For: AllDays, !-
+ Until: 24:00,9.26722222222222, !-
+ Through: 03/11, !-
+ For: AllDays, !-
+ Until: 24:00,9.31, !-
+ Through: 03/12, !-
+ For: AllDays, !-
+ Until: 24:00,9.35388888888889, !-
+ Through: 03/13, !-
+ For: AllDays, !-
+ Until: 24:00,9.39944444444444, !-
+ Through: 03/14, !-
+ For: AllDays, !-
+ Until: 24:00,9.44611111111111, !-
+ Through: 03/15, !-
+ For: AllDays, !-
+ Until: 24:00,9.49444444444445, !-
+ Through: 03/16, !-
+ For: AllDays, !-
+ Until: 24:00,9.54444444444444, !-
+ Through: 03/17, !-
+ For: AllDays, !-
+ Until: 24:00,9.595, !-
+ Through: 03/18, !-
+ For: AllDays, !-
+ Until: 24:00,9.64777777777778, !-
+ Through: 03/19, !-
+ For: AllDays, !-
+ Until: 24:00,9.70166666666667, !-
+ Through: 03/20, !-
+ For: AllDays, !-
+ Until: 24:00,9.75666666666667, !-
+ Through: 03/21, !-
+ For: AllDays, !-
+ Until: 24:00,9.81333333333333, !-
+ Through: 03/22, !-
+ For: AllDays, !-
+ Until: 24:00,9.87111111111111, !-
+ Through: 03/23, !-
+ For: AllDays, !-
+ Until: 24:00,9.93, !-
+ Through: 03/24, !-
+ For: AllDays, !-
+ Until: 24:00,9.99, !-
+ Through: 03/25, !-
+ For: AllDays, !-
+ Until: 24:00,10.0516666666667, !-
+ Through: 03/26, !-
+ For: AllDays, !-
+ Until: 24:00,10.1144444444444, !-
+ Through: 03/27, !-
+ For: AllDays, !-
+ Until: 24:00,10.1783333333333, !-
+ Through: 03/28, !-
+ For: AllDays, !-
+ Until: 24:00,10.2438888888889, !-
+ Through: 03/29, !-
+ For: AllDays, !-
+ Until: 24:00,10.31, !-
+ Through: 03/30, !-
+ For: AllDays, !-
+ Until: 24:00,10.3777777777778, !-
+ Through: 03/31, !-
+ For: AllDays, !-
+ Until: 24:00,10.4461111111111, !-
+ Through: 04/01, !-
+ For: AllDays, !-
+ Until: 24:00,10.5161111111111, !-
+ Through: 04/02, !-
+ For: AllDays, !-
+ Until: 24:00,10.5866666666667, !-
+ Through: 04/03, !-
+ For: AllDays, !-
+ Until: 24:00,10.6588888888889, !-
+ Through: 04/04, !-
+ For: AllDays, !-
+ Until: 24:00,10.7316666666667, !-
+ Through: 04/05, !-
+ For: AllDays, !-
+ Until: 24:00,10.8055555555556, !-
+ Through: 04/06, !-
+ For: AllDays, !-
+ Until: 24:00,10.8811111111111, !-
+ Through: 04/07, !-
+ For: AllDays, !-
+ Until: 24:00,10.9566666666667, !-
+ Through: 04/08, !-
+ For: AllDays, !-
+ Until: 24:00,11.0338888888889, !-
+ Through: 04/09, !-
+ For: AllDays, !-
+ Until: 24:00,11.1116666666667, !-
+ Through: 04/10, !-
+ For: AllDays, !-
+ Until: 24:00,11.1905555555556, !-
+ Through: 04/11, !-
+ For: AllDays, !-
+ Until: 24:00,11.27, !-
+ Through: 04/12, !-
+ For: AllDays, !-
+ Until: 24:00,11.3511111111111, !-
+ Through: 04/13, !-
+ For: AllDays, !-
+ Until: 24:00,11.4322222222222, !-
+ Through: 04/14, !-
+ For: AllDays, !-
+ Until: 24:00,11.5144444444444, !-
+ Through: 04/15, !-
+ For: AllDays, !-