-
Notifications
You must be signed in to change notification settings - Fork 392
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
364 changed files
with
32,006 additions
and
32,488 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
name: epJSON dependency | ||
|
||
on: | ||
push | ||
|
||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
BUILD_TYPE: Release | ||
|
||
jobs: | ||
release: | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
# fail-fast: Default is true, switch to false to allow one platform to fail and still run others | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, windows-latest, macos-latest] | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up Python 3.8 | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.8' | ||
|
||
- name: Setup | ||
shell: bash | ||
run: | | ||
cmake -E make_directory ./build/ | ||
if [ "$RUNNER_OS" == "Windows" ]; then | ||
echo "Setting CMAKE_GENERATOR options equivalent to ='-G \"Visual Studio 17 2022\" -A x64'" | ||
echo CMAKE_GENERATOR='Visual Studio 17 2022' >> $GITHUB_ENV | ||
echo CMAKE_GENERATOR_PLATFORM=x64 >> $GITHUB_ENV | ||
choco install ninja | ||
fi; | ||
- name: Configure CMake | ||
working-directory: ./build | ||
run: | | ||
cmake ../ | ||
- name: Test epjson | ||
shell: python | ||
run: | | ||
from pathlib import Path | ||
import subprocess | ||
EP_ROOT = Path(".").resolve() | ||
EP_BUILD_DIR = Path('./build').resolve() | ||
EXPECTED_MSGS = ["Generating the epJSON schema!", "Generating the **embedded** epJSON schema"] | ||
def build(): | ||
lines = subprocess.check_output( | ||
[ | ||
"cmake", | ||
"--build", | ||
str(EP_BUILD_DIR), | ||
"--config", | ||
"Release", | ||
"--target", | ||
"embedded_epjson_source", | ||
], | ||
encoding="utf-8", | ||
stderr=subprocess.STDOUT, | ||
).splitlines() | ||
return lines | ||
IDD_IN = EP_ROOT / "idd/Energy+.idd.in" | ||
assert IDD_IN.exists() | ||
def ensure_target_built(lines, msg): | ||
breakpoint | ||
lines = [x.strip() for x in lines if "epJSON schema" in x] | ||
errors = [] | ||
for expected_msg in EXPECTED_MSGS: | ||
n = lines.count(expected_msg) | ||
if n != 1: | ||
errors.append(f"Expected 1 occurrence of '{expected_msg}', got {n}") | ||
assert not errors, "\n -" + "\n -".join(errors) | ||
# Build: first time: we get both | ||
lines = build() | ||
ensure_target_built(lines, "Failed on first build") | ||
# Insert a fake IDD change, we should also get both | ||
with open(IDD_IN, "r") as f: | ||
lines = f.read().splitlines() | ||
ori_lines = lines.copy() | ||
for i, line in enumerate(lines): | ||
if line.startswith(r"\group"): | ||
lines.insert(i + 1, "") | ||
lines.insert(i + 2, "FakeObject,") | ||
lines.insert(i + 3, r" A1; \field Name") | ||
break | ||
with open(IDD_IN, "w") as f: | ||
f.write("\n".join(lines) + "\n") | ||
lines = build() | ||
ensure_target_built(lines, "Failed after IDD change") | ||
with open(IDD_IN, "w") as f: | ||
f.write("\n".join(ori_lines) + "\n") | ||
lines = build() | ||
ensure_target_built(lines, "Failed after IDD change revert") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
|
||
Enhancement of Evaporative Cooler in EnergyPlus | ||
================ | ||
|
||
**Yujie Xu, Tianzhen Hong** | ||
|
||
**Lawrence Berkeley National Laboratory*** | ||
|
||
- Original Date: Apr 7, 2023 | ||
- Modified Date: Apr 11, 2023 | ||
|
||
## Justification for Feature Update | ||
|
||
As global climate change continues, the frequency, duration and intensity of heatwaves could increase. As an affordable and energy efficient cooling option [1], evaporative cooling could become more prevalent in the future, especially in hot and dry climates. As a result, it is crucial to provide accurate and more user-friendly simulation support for prototyping new evaporative coolers and their applications. With this motivation, this EnergyPlus feature is proposed to provide an additional relative humidity-driven control option. | ||
|
||
![zoneEvapCoolerDiagram](zoneEvapCoolerDiagram.png) | ||
<p style="text-align: center;"> Figure 1. Conceptual diagram of a direct evaporative cooler [source](https://basc.pnnl.gov/resource-guides/evaporative-cooling-systems#edit-group-description) (left), an example of a zone-level direct evaporative cooler[source](https://www.nytimes.com/wirecutter/blog/do-swamp-coolers-work/) (right).</p> | ||
|
||
The enhancement was motivated by discussions with the CBE research group at UC Berkeley: Hui Zhang, Roberto Rugani, and Maria Andre. | ||
|
||
## Overview ## | ||
|
||
The introduction of excessive moisture is one of the potential issues of direct evaporative coolers. A humidity control could become useful in preventing the evaporative cooler from raising indoor humidity to an uncomfortable level. Currently, the direct evaporative cooler can be controlled with the sensor node temperature using AvailabilityManagers (*AvailabilityManager:LowTemperatureTurnOff* or *AvailabilityManager:HighTemperatureTurnOn*). This feature proposes to add a relative humidity (RH) control to shut down the evaporative cooler when the indoor relative humidity is too high. | ||
|
||
We plan to enhance the zone level evaporative cooler object, *ZoneHVAC:EvaporativeCoolerUnit*. This is a compound object that combines a fan and one | ||
Each evaporative cooler in this object can be a direct or indirect. This feature will add some additional fields to this zone-level object, allowing user to specify a relative-humidity threshold above which the unit will be turned off. | ||
|
||
## Approach | ||
|
||
To enable a high-relative-humidity-cutoff control, a field will be added to the *ZoneHVAC:EvaporativeCoolerUnit* object. See Section IDD object change for details. | ||
|
||
## Testing/Validation/Data Source(s) | ||
|
||
This feature will be tested and demonstrated with a test file derived from StripMallZoneEvapCooler.idf. Manual check of the time-step EnergyPlus simulation results will be conducted to confirm the added feature is working correctly. | ||
|
||
## IDD Object changes | ||
|
||
A field (N4) will be added to the ZoneHVAC:EvaporativeCoolerUnit | ||
|
||
ZoneHVAC:EvaporativeCoolerUnit, | ||
\memo Zone evaporative cooler. Forced-convection cooling-only unit with supply fan, | ||
\memo 100% outdoor air supply. Optional relief exhaust node | ||
\min-fields 15 | ||
A1 , \field Name | ||
\required-field | ||
\reference ZoneEquipmentNames | ||
A2 , \field Availability Schedule Name | ||
\note Availability schedule name for this system. Schedule value > 0 means the system is available. | ||
\note If this field is blank, the system is always available. | ||
\type object-list | ||
\object-list ScheduleNames | ||
A3, \field Availability Manager List Name | ||
\note Enter the name of an AvailabilityManagerAssignmentList object. | ||
\type object-list | ||
\object-list SystemAvailabilityManagerLists | ||
A4 , \field Outdoor Air Inlet Node Name | ||
\required-field | ||
\type node | ||
\note this is an outdoor air node | ||
A5 , \field Cooler Outlet Node Name | ||
\required-field | ||
\type node | ||
\note this is a zone inlet node | ||
A6 , \field Zone Relief Air Node Name | ||
\type node | ||
\note this is a zone exhaust node, optional if flow is being balanced elsewhere | ||
A7 , \field Supply Air Fan Object Type | ||
\required-field | ||
\type choice | ||
\key Fan:SystemModel | ||
\key Fan:ComponentModel | ||
\key Fan:ConstantVolume | ||
\key Fan:OnOff | ||
\key Fan:VariableVolume | ||
A8 , \field Supply Air Fan Name | ||
\required-field | ||
\type object-list | ||
\object-list Fans | ||
N1 , \field Design Supply Air Flow Rate | ||
\required-field | ||
\units m3/s | ||
\minimum> 0 | ||
\autosizable | ||
A9 , \field Fan Placement | ||
\required-field | ||
\type choice | ||
\key BlowThrough | ||
\key DrawThrough | ||
A10, \field Cooler Unit Control Method | ||
\required-field | ||
\type choice | ||
\key ZoneTemperatureDeadbandOnOffCycling | ||
\key ZoneCoolingLoadOnOffCycling | ||
\key ZoneCoolingLoadVariableSpeedFan | ||
N2 , \field Throttling Range Temperature Difference | ||
\note used for ZoneTemperatureDeadbandOnOffCycling hystersis range for thermostatic control | ||
\type real | ||
\units deltaC | ||
\default 1.0 | ||
\minimum> 0.0 | ||
N3 , \field Cooling Load Control Threshold Heat Transfer Rate | ||
\type real | ||
\units W | ||
\default 100.0 | ||
\note Sign convention is that positive values indicate a cooling load | ||
\minimum> 0.0 | ||
A11, \field First Evaporative Cooler Object Type | ||
\required-field | ||
\type choice | ||
\key EvaporativeCooler:Direct:CelDekPad | ||
\key EvaporativeCooler:Direct:ResearchSpecial | ||
\key EvaporativeCooler:Indirect:CelDekPad | ||
\key EvaporativeCooler:Indirect:WetCoil | ||
\key EvaporativeCooler:Indirect:ResearchSpecial | ||
A12, \field First Evaporative Cooler Object Name | ||
\required-field | ||
\type object-list | ||
\object-list EvapCoolerNames | ||
A13, \field Second Evaporative Cooler Object Type | ||
\note optional, used for direct/indirect configurations | ||
\note second cooler must be immediately downstream of first cooler, if present | ||
\type choice | ||
\key EvaporativeCooler:Direct:CelDekPad | ||
\key EvaporativeCooler:Direct:ResearchSpecial | ||
\key EvaporativeCooler:Indirect:CelDekPad | ||
\key EvaporativeCooler:Indirect:WetCoil | ||
\key EvaporativeCooler:Indirect:ResearchSpecial | ||
A14, \field Second Evaporative Cooler Name | ||
\note optional, used for direct/indirect configurations | ||
\type object-list | ||
\object-list EvapCoolerNames | ||
A15, \field Design Specification ZoneHVAC Sizing Object Name | ||
\note Enter the name of a DesignSpecificationZoneHVACSizing object. | ||
\type object-list | ||
\object-list DesignSpecificationZoneHVACSizingName | ||
N4; \field Shut Off Relative Humidity | ||
\note Zone relative humidity above which the evap cooler is shut off. | ||
\type real | ||
\minimum 0.00 | ||
\maximum 100.00 | ||
\units percent | ||
|
||
## Proposed additions to Meters: | ||
|
||
N/A | ||
|
||
## Proposed Report Variables: | ||
|
||
N/A | ||
|
||
## References | ||
|
||
[1] https://www.energy.gov/energysaver/evaporative-coolers <br> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
ad36c45
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9966-wshp-cycling (Myoldmopar) - Win64-Windows-10-VisualStudio-16: OK (2664 of 2664 tests passed, 0 test warnings)
ad36c45
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9966-wshp-cycling (Myoldmopar) - x86_64-Linux-Ubuntu-22.04-gcc-11.3: OK (3409 of 3478 tests passed, 7 test warnings)
Messages:\n
Failures:\n
regression Test Summary
ad36c45
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9966-wshp-cycling (Myoldmopar) - x86_64-MacOS-10.17-clang-13.0.0: OK (3369 of 3437 tests passed, 7 test warnings)
Messages:\n
Failures:\n
regression Test Summary
ad36c45
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9966-wshp-cycling (Myoldmopar) - x86_64-Linux-Ubuntu-22.04-gcc-11.3-UnitTestsCoverage-Debug: OK (1891 of 1891 tests passed, 0 test warnings)
ad36c45
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
9966-wshp-cycling (Myoldmopar) - x86_64-Linux-Ubuntu-22.04-gcc-11.3-IntegrationCoverage-Debug: OK (776 of 776 tests passed, 0 test warnings)