Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Geothermal loop & soil properties #1391

Merged
merged 273 commits into from
Dec 11, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
273 commits
Select commit Hold shift + click to select a range
7725cac
Updates for shank spacing.
joseph-robertson May 30, 2023
1e190b2
Sample files for testing individual loop arguments.
joseph-robertson May 30, 2023
65af241
Update the docs.
joseph-robertson May 30, 2023
c7271cc
Add loop before anything else in defaults resource.
joseph-robertson May 31, 2023
e67bba0
Updates to epvalidator.
joseph-robertson May 31, 2023
c0fcdbc
Updates to docs.
joseph-robertson May 31, 2023
9564143
Latest results.
May 31, 2023
3a3c7d1
Typos in epvalidator.
joseph-robertson May 31, 2023
2a3a6ab
Updates for vertical and grout type.
joseph-robertson Jun 1, 2023
4db5f0c
Add a defaults test for geothermal loops.
joseph-robertson Jun 2, 2023
9e6f27e
Typo in docs. [ci skip]
joseph-robertson Jun 2, 2023
10c048f
Add units for diffusivity in build measure.
joseph-robertson Jun 2, 2023
fbe83f1
Minor typo in docs. [ci skip]
joseph-robertson Jun 8, 2023
71da38a
Add borefield config arg to build measure.
joseph-robertson Jun 12, 2023
bc908f5
Update translator resources for borefield config arg.
joseph-robertson Jun 12, 2023
b96bb57
Add borefield config sample hpxml file.
joseph-robertson Jun 12, 2023
2096f44
Update defaults test and other minor edits.
joseph-robertson Jun 12, 2023
2517f8c
Another hpxml constants update.
joseph-robertson Jun 13, 2023
fdc4e41
Latest results.
Jun 13, 2023
149c957
Add new task for downloading gfunction zip.
joseph-robertson Jun 15, 2023
c3e42e3
Add g_functions util for processing contents.
joseph-robertson Jun 15, 2023
38c6b01
Add example processed gfunction json files.
joseph-robertson Jun 15, 2023
16892a6
Update gitignore for full gfunction zip just in case.
joseph-robertson Jun 15, 2023
2c86475
Default bore spacing to 5 m.
joseph-robertson Jun 16, 2023
6b4177c
Make the leap to using g function library.
joseph-robertson Jun 16, 2023
6764c36
Update the docs.
joseph-robertson Jun 16, 2023
85e64fb
Update defaults test and epvalidator.
joseph-robertson Jun 16, 2023
f66afd1
Updates to the build measure.
joseph-robertson Jun 16, 2023
6633d9b
Finish the map for g function json file names.
joseph-robertson Jun 16, 2023
f0879e7
Latest results.
Jun 16, 2023
4fc1bd7
Try allowing variable spacing, depth, diameter by using linear interp…
joseph-robertson Jun 20, 2023
cad89b2
Update the docs for constraints on borehole length.
joseph-robertson Jun 20, 2023
3ed3a1b
Latest results.
Jun 20, 2023
95bc5ca
Defaults test needs valid bore length.
joseph-robertson Jun 21, 2023
ea7dd6d
Merge branch 'g_function_library' of github.com:NREL/OpenStudio-HPXML…
joseph-robertson Jun 21, 2023
5b4cdc5
Use already existing interp2 method.
joseph-robertson Jun 22, 2023
2c564df
Merge branch 'master' into g_function_library
joseph-robertson Jun 22, 2023
2d162b3
Add a validation test for invalid bore holes with a configuration.
joseph-robertson Jun 27, 2023
3a3e17d
New geothermal loop sample file with all fields defined.
joseph-robertson Jun 27, 2023
ab99f47
Stub an hvac test for checking geothermal loop and gfunction values.
joseph-robertson Jun 27, 2023
ea5f542
Merge branch 'master' into geothermal_loop
joseph-robertson Jun 27, 2023
dae2ad0
Merge branch 'geothermal_loop' into g_function_library
joseph-robertson Jun 27, 2023
ee5e46f
Latest results.
Jun 27, 2023
840119c
Latest results.
Jun 27, 2023
5c96a44
Update g_function downselect to include more configurations.
joseph-robertson Jun 29, 2023
9361048
Update hvac tests for checking against direct lookup and interpolatio…
joseph-robertson Jun 29, 2023
91b4ab8
Merge branch 'master' into geothermal_loop
joseph-robertson Jun 29, 2023
1794659
Merge branch 'geothermal_loop' into g_function_library
joseph-robertson Jun 29, 2023
c50f167
Latest results.
Jun 30, 2023
067ac61
Update g function method with optional n_x_m arg we can use for testing.
joseph-robertson Jul 11, 2023
32d5b98
Test for bore depth outside of valid range.
joseph-robertson Jul 11, 2023
04dff85
Latest results.
Jul 11, 2023
bacc0e9
try 1
prsh5175 Jul 13, 2023
95fdc88
Latest results.
Jul 13, 2023
d431413
Merge branch 'master' into geothermal_loop
joseph-robertson Jul 14, 2023
4f5bb0e
Merge branch 'geothermal_loop' into g_function_library
joseph-robertson Jul 14, 2023
234c8a3
Latest results.
Jul 14, 2023
59e7479
Latest results.
Jul 14, 2023
69f37d3
Further downselecting JSONs.
prsh5175 Jul 19, 2023
210e020
Merge branch 'master' into geothermal_loop
joseph-robertson Jul 25, 2023
4a68777
Merge branch 'geothermal_loop' into g_function_library
joseph-robertson Jul 25, 2023
2822a2c
Latest results.
Jul 25, 2023
5b71f14
try2
prsh5175 Jul 25, 2023
42a8038
Merge branch 'g_function_library' of https://github.com/NREL/OpenStud…
prsh5175 Jul 25, 2023
e29ed39
Latest results.
Jul 25, 2023
495a079
Refactor the download_g_functions method.
joseph-robertson Jul 25, 2023
1a4af66
Update the linear interpolation test.
joseph-robertson Jul 25, 2023
57dabfe
Merge branch 'geothermal_loop' into g_function_library
joseph-robertson Jul 25, 2023
60a1517
temporary commit for debugging
prsh5175 Jul 27, 2023
8ab56cd
Add key2 for C, Open, U.
joseph-robertson Jul 27, 2023
495c2ca
Zoned rectangle has no valid m_n.
joseph-robertson Jul 27, 2023
08f9569
Allow C config with 7 or 9 boreholes.
joseph-robertson Jul 27, 2023
b9ab339
Update a comment. [ci skip]
joseph-robertson Jul 27, 2023
41c6634
Latest results.
Jul 27, 2023
73cac55
Update test and avoid overwriting json keys.
joseph-robertson Jul 27, 2023
7e42335
Consolidate borehole and filename maps, and write new test.
joseph-robertson Jul 27, 2023
f6187d0
Merge branch 'g_function_library' of github.com:NREL/OpenStudio-HPXML…
joseph-robertson Jul 27, 2023
6e5f944
Update the changelog. [ci skip]
joseph-robertson Jul 27, 2023
b6222b9
Minor update in epvalidator. [ci skip]
joseph-robertson Jul 27, 2023
29c5dc1
Merge pull request #1412 from NREL/g_function_library
joseph-robertson Jul 27, 2023
0cde439
Merge branch 'master' into geothermal_loop
joseph-robertson Jul 27, 2023
9372edb
Latest results.
Jul 27, 2023
546c95e
Merge branch 'master' into geothermal_loop
joseph-robertson Aug 1, 2023
806ba6a
Update the frac_glycol assumed value to 0.2.
joseph-robertson Aug 1, 2023
15f9bb0
Update the changelog. [ci skip]
joseph-robertson Aug 1, 2023
ce6cefa
Update depth max in hvac_sizing.
joseph-robertson Aug 3, 2023
ae8266b
Update the docs.
joseph-robertson Aug 3, 2023
16061f2
Remove trench kw from build measure arguments.
joseph-robertson Aug 3, 2023
35ef1e4
Update comment in util rb.
joseph-robertson Aug 3, 2023
ee7020c
Update tests and sample files.
joseph-robertson Aug 3, 2023
2de40bb
Latest results.
Aug 3, 2023
3e60c22
Add test for invalid borefield config.
joseph-robertson Aug 8, 2023
02c3a89
Reorganize new geothermal loop sample files.
joseph-robertson Aug 8, 2023
8c0fcf2
Latest results.
Aug 8, 2023
25bc871
Add build arguments for soil and moisture type.
joseph-robertson Aug 8, 2023
2987491
Update defaulting to use soil and moisture type.
joseph-robertson Aug 8, 2023
fd1c8e2
Update sample files for combos of soil and moisture types.
joseph-robertson Aug 8, 2023
7353f72
Update the docs.
joseph-robertson Aug 8, 2023
7dff923
Latest results.
Aug 8, 2023
0d37c63
Fix footnotes in docs.
joseph-robertson Aug 9, 2023
9a1d22e
Merge branch 'master' into geothermal_loop
joseph-robertson Aug 10, 2023
9f9485c
Update build measure for additional soil types.
joseph-robertson Aug 10, 2023
4884771
Update defaults based on a more comprehensive source.
joseph-robertson Aug 10, 2023
da0c3b0
Update the docs and sample files.
joseph-robertson Aug 10, 2023
c4430fa
Merge branch 'geothermal_loop' into soil-moisture-types
joseph-robertson Aug 10, 2023
da27f7f
Try wet clay sample file instead.
joseph-robertson Aug 10, 2023
4550f9c
Latest results.
Aug 10, 2023
2622420
Update argument descriptions in build measure.
joseph-robertson Aug 10, 2023
12639ff
Add tests for defaults.
joseph-robertson Aug 10, 2023
4993972
Updates for active length adjustments.
joseph-robertson Aug 10, 2023
225de1f
Generate whole set of soil/moisture sample files for testing.
joseph-robertson Aug 10, 2023
8fbb35c
Latest results.
Aug 11, 2023
c05e69e
Merge branch 'master' into geothermal_loop
joseph-robertson Aug 16, 2023
ec9ee2d
Merge branch 'geothermal_loop' into soil-moisture-types
joseph-robertson Aug 16, 2023
907dfec
Allow mixed moisture type in build measure.
joseph-robertson Aug 17, 2023
94e68c4
Update defaults for mixed moisture type.
joseph-robertson Aug 17, 2023
dbc369f
Update the docs.
joseph-robertson Aug 17, 2023
0682f2d
Fix site defaults test.
joseph-robertson Aug 17, 2023
9afc678
Latest results.
Aug 17, 2023
9fae5e1
Update epvalidator and add error message test.
joseph-robertson Aug 17, 2023
ffaeee8
Reduce the number of new sample files.
joseph-robertson Aug 17, 2023
8be8ca4
Latest results.
Aug 17, 2023
13e84e0
Update the changelog. [ci skip]
joseph-robertson Aug 17, 2023
15dfc75
Merge pull request #1458 from NREL/soil-moisture-types
joseph-robertson Aug 17, 2023
09ecc1b
Merge branch 'master' into geothermal_loop
joseph-robertson Aug 21, 2023
3cc3b0f
Add sample files for a range of gshp sizes.
joseph-robertson Aug 21, 2023
9aac13c
Merge branch 'gshp-sample-files' into geothermal_loop
joseph-robertson Aug 21, 2023
b97b603
Refine conductivity and diffusivity defaults.
joseph-robertson Aug 21, 2023
04c71ce
Skip unmet hours check for 1ton.
joseph-robertson Aug 21, 2023
dc14dd5
Update new sample files.
joseph-robertson Aug 21, 2023
279a9de
Latest results.
Aug 21, 2023
b63a4ba
Merge branch 'gshp-sample-files' into geothermal_loop
joseph-robertson Aug 21, 2023
bb238b7
Latest results.
Aug 21, 2023
c8ebfc1
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Aug 24, 2023
600f955
Latest results.
Aug 25, 2023
ff35611
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Aug 25, 2023
cd5eb1a
Set g function ref ratio as radius over length.
joseph-robertson Sep 11, 2023
b55a59c
Move borefield config arg to the top.
joseph-robertson Sep 12, 2023
6cee7f5
Add a readme for g_functions files.
joseph-robertson Sep 12, 2023
9319b0d
Simplify soil type constants.
joseph-robertson Sep 12, 2023
42ef6ac
Delete loop idref on heat pump.
joseph-robertson Sep 12, 2023
b5af308
Simplify code in hpxml defaults.
joseph-robertson Sep 12, 2023
d80694e
Use grout and pipe type in build measure.
joseph-robertson Sep 12, 2023
eb233f1
Change pipe_size to pipe_diameter.
joseph-robertson Sep 12, 2023
1982a5d
Move geothermal loop line in epvalidator.
joseph-robertson Sep 12, 2023
a092aa5
Deprecate old ground conductivity field.
joseph-robertson Sep 12, 2023
37e937c
Remove extra line in epvalidator.
joseph-robertson Sep 12, 2023
6b5f7b7
Check that geothermal loop is connected to heat pump.
joseph-robertson Sep 12, 2023
d092b14
Add comment where default values come from.
joseph-robertson Sep 12, 2023
d309d85
Misc cleanup around unit conversions, comments.
joseph-robertson Sep 12, 2023
614b0e9
Update docs and remove temporary sample files.
joseph-robertson Sep 12, 2023
d8c1150
Rename some sample files and regenerate.
joseph-robertson Sep 12, 2023
0ad85a9
Update bore config argument to default to none.
joseph-robertson Sep 12, 2023
8b61136
Combine grout and pipe type choices into one.
joseph-robertson Sep 13, 2023
9ca09f6
Revert geothermal loop default and fix tests.
joseph-robertson Sep 13, 2023
aca6d09
Update the docs.
joseph-robertson Sep 13, 2023
35d3f03
Latest results.
Sep 13, 2023
e220b45
Add new loop config argument, update docs and tests.
joseph-robertson Sep 13, 2023
339aa35
Updates for soil and moisture type arguments, docs, etc.
joseph-robertson Sep 13, 2023
1c822ef
Update min and max error, test, and docs.
joseph-robertson Sep 20, 2023
7a57f41
Refactor methods around g function jsons, etc.
joseph-robertson Sep 20, 2023
6304889
Missed a size method.
joseph-robertson Sep 21, 2023
244e086
Merge pull request #1481 from NREL/geothermal_loop2
joseph-robertson Sep 21, 2023
c096685
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Sep 21, 2023
17388c9
Latest results.
Sep 22, 2023
cf142ef
Add min/max bore depths to epvalidator.
joseph-robertson Sep 25, 2023
33d166c
Add more validation tests.
joseph-robertson Sep 25, 2023
a1a011c
Check boreholes between 1 and 10 in epvalidator.
joseph-robertson Sep 27, 2023
1af2523
Pass runner through hpxml_defaults to hvac_sizing.
joseph-robertson Sep 27, 2023
0f81e69
Prevent bore autosizing from leading to errors.
joseph-robertson Sep 27, 2023
17dea00
Update hvac_sizing and validation tests.
joseph-robertson Sep 27, 2023
d99b85c
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Oct 9, 2023
c2da058
Regenerate sample files.
joseph-robertson Oct 10, 2023
e95bc7b
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Oct 10, 2023
4356113
Remove shank spacing from build measure.
joseph-robertson Oct 17, 2023
f92b988
Latest results.
Oct 18, 2023
f2cb78b
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Oct 18, 2023
2e2f406
Add shank spacing back into sample file.
joseph-robertson Oct 18, 2023
9f05cd4
Latest results.
Oct 18, 2023
abe4907
Update sizing test after pulling ground temp changes in.
joseph-robertson Oct 18, 2023
1857230
Merge branch 'geothermal_loop' of github.com:NREL/OpenStudio-HPXML in…
joseph-robertson Oct 18, 2023
76cf5f3
Latest results.
Oct 18, 2023
a5479a8
Merge branch 'ground_temperatures' into geothermal_loop
joseph-robertson Oct 23, 2023
8e0cad7
Update sizing test after pulling ground temp changes in.
joseph-robertson Oct 23, 2023
d37d8ae
Latest results.
Oct 24, 2023
36d9f8e
Merge branch 'master' into geothermal_loop
joseph-robertson Oct 24, 2023
b003c80
Latest results.
Oct 24, 2023
cde4675
Merge branch 'master' into geothermal_loop
joseph-robertson Oct 31, 2023
bf03e55
Latest results.
Oct 31, 2023
35a675f
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Nov 1, 2023
9e0ff5a
Update new test.
shorowit Nov 1, 2023
7c753de
Update a few more new tests.
shorowit Nov 1, 2023
818aaca
Found it.
shorowit Nov 1, 2023
3eeec58
Latest results.
Nov 2, 2023
6578416
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 3, 2023
afb8897
Merge branch 'ground_temperatures2' into geothermal_loop
joseph-robertson Nov 3, 2023
eddd67c
Merge branch 'ground_temperatures2' into geothermal_loop
joseph-robertson Nov 3, 2023
b9fc628
Update tests after ground temps merge.
joseph-robertson Nov 3, 2023
30dcc2a
Latest results.
Nov 3, 2023
47b8ad5
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 4, 2023
774cfe8
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 6, 2023
76d79cc
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 8, 2023
ef916b4
Latest results.
Nov 8, 2023
2eb1f7b
Minor updates to sample files, changelog, and EPvalidator.xml.
shorowit Nov 8, 2023
949dab7
Update measure.xml
shorowit Nov 8, 2023
deb2f33
Move some inputs from tasks.rb to workflow/hpxml_inputs.json. [ci skip]
shorowit Nov 8, 2023
b400b55
Latest results.
Nov 8, 2023
6774db2
Comment on why frac_glycol was changed.
joseph-robertson Nov 8, 2023
0df5e8b
Remove line in epvalidator.
joseph-robertson Nov 8, 2023
9372b98
Simplify conductivity and diffisivity defaulting.
joseph-robertson Nov 8, 2023
ab3de91
Update the docs.
joseph-robertson Nov 8, 2023
60986f3
Add defaults test for thermally enhanced pipe type.
joseph-robertson Nov 8, 2023
d46e043
Add new validation test for unattached gshp.
joseph-robertson Nov 8, 2023
aedc681
Move some new gshp related methods from hvac to hvacsizing.
joseph-robertson Nov 8, 2023
94b2e6f
Forgot to save file.
joseph-robertson Nov 8, 2023
7f2ddf7
Fix new validation test.
joseph-robertson Nov 9, 2023
dac12db
More default tests around loop flow, num bore holes, bore length.
joseph-robertson Nov 9, 2023
dd67d3b
Fix test after moving a method.
joseph-robertson Nov 9, 2023
70379b3
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 13, 2023
c0a51e0
Some cleanup and refactoring.
joseph-robertson Nov 13, 2023
067d8e7
Update some autosize TODOs in docs.
joseph-robertson Nov 13, 2023
45666a9
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 13, 2023
a9afb26
Allow boreholes count default when rectangle config provided.
joseph-robertson Nov 13, 2023
d164a0f
Update documentation on "auto" option for BoreholesOrTrenches/Length
jmaguire1 Nov 13, 2023
70de9a7
Latest results.
Nov 13, 2023
0c18e95
Few more updates in docs.
joseph-robertson Nov 13, 2023
d0c1d55
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 14, 2023
90ec46a
Move g_functions directory under the data directory.
joseph-robertson Nov 14, 2023
df577b8
Remove old ground conductivity lines in epvalidator.
joseph-robertson Nov 14, 2023
202a041
Latest results.
Nov 14, 2023
54e1dd0
Update conductivity/diffusivity defaulting to preserve 1.0/0.0208 rel…
joseph-robertson Nov 14, 2023
04f499d
Merge branch 'geothermal_loop' of github.com:NREL/OpenStudio-HPXML in…
joseph-robertson Nov 14, 2023
a97d11b
Latest results.
Nov 14, 2023
d9d8e74
Fix typo in docs. [ci skip]
joseph-robertson Nov 14, 2023
c15a7be
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 21, 2023
f53e307
Change default pipe diameter from 3/4in to 1-1/4in.
joseph-robertson Nov 21, 2023
aac78ef
Update sizing tests since pipe diameter affects bore length.
joseph-robertson Nov 21, 2023
7161daa
Latest results.
Nov 21, 2023
d825962
Merge branch 'master' into geothermal_loop
joseph-robertson Nov 28, 2023
87f4819
Merge branch 'master' into geothermal_loop
joseph-robertson Dec 6, 2023
2670d42
Reference valid configs in build measure.
joseph-robertson Dec 6, 2023
73471ed
Merge branch 'master' into geothermal_loop
joseph-robertson Dec 6, 2023
c4b735e
Merge branch 'master' of https://github.com/NREL/OpenStudio-HPXML int…
shorowit Dec 8, 2023
2d75719
Minor cleanup. Prevent multiple GSHPs from being connected to a geoth…
shorowit Dec 8, 2023
12331d4
Fix CI error
shorowit Dec 8, 2023
3b48612
Latest results.
Dec 8, 2023
bee1672
Improve handling for when bore depth or # bores (but not both) are de…
shorowit Dec 8, 2023
1bb05dd
Merge branch 'geothermal_loop' of https://github.com/NREL/OpenStudio-…
shorowit Dec 8, 2023
1f78126
Move Changelog items to v1.8 [ci skip]
shorowit Dec 8, 2023
7347e1e
Latest results.
Dec 8, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -1015,3 +1015,4 @@
/ReportUtilityBills/resources/detailed_rates/*.json
!/ReportUtilityBills/resources/detailed_rates/Sample*.json
/ReportUtilityBills/tests/results_bills.csv
/HPXMLtoOpenStudio/resources/data/g_functions/g-function_library_1.0
158 changes: 157 additions & 1 deletion BuildResidentialHPXML/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,9 +197,22 @@ Presence of nearby buildings, trees, obstructions for infiltration model. If not

<br/>

**Site: Soil and Moisture Type**

Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used.

- **Name:** ``site_soil_and_moisture_type``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `clay, dry`, `clay, mixed`, `clay, wet`, `gravel, dry`, `gravel, mixed`, `gravel, wet`, `loam, dry`, `loam, mixed`, `loam, wet`, `sand, dry`, `sand, mixed`, `sand, wet`, `silt, dry`, `silt, mixed`, `silt, wet`, `unknown, dry`, `unknown, mixed`, `unknown, wet`

<br/>

**Site: Ground Conductivity**

Conductivity of the ground soil. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-site'>HPXML Site</a>) is used.
Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.

- **Name:** ``site_ground_conductivity``
- **Type:** ``Double``
Expand All @@ -210,6 +223,19 @@ Conductivity of the ground soil. If not provided, the OS-HPXML default (see <a h

<br/>

**Site: Ground Diffusivity**

Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.

- **Name:** ``site_ground_diffusivity``
- **Type:** ``Double``

- **Units:** ``ft^2/hr``

- **Required:** ``false``

<br/>

**Site: Zip Code**

Zip code of the home address.
Expand Down Expand Up @@ -2250,6 +2276,136 @@ Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-ai

<br/>

**Geothermal Loop: Configuration**

Configuration of the geothermal loop. Only applies to ground-to-air heat pump type.

- **Name:** ``geothermal_loop_configuration``
- **Type:** ``Choice``

- **Required:** ``true``

- **Choices:** `none`, `vertical`

<br/>

**Geothermal Loop: Borefield Configuration**

Borefield configuration of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_borefield_configuration``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `Rectangle`, `Open Rectangle`, `C`, `L`, `U`, `Lopsided U`

<br/>

**Geothermal Loop: Loop Flow**

Water flow rate through the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_loop_flow``
- **Type:** ``Double``

- **Units:** ``gpm``

- **Required:** ``false``

<br/>

**Geothermal Loop: Boreholes Count**

Number of boreholes. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_boreholes_count``
- **Type:** ``Integer``

- **Units:** ``#``

- **Required:** ``false``

<br/>

**Geothermal Loop: Boreholes Length**

Average length of each borehole (vertical). Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML autosized default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_boreholes_length``
- **Type:** ``Double``

- **Units:** ``ft``

- **Required:** ``false``

<br/>

**Geothermal Loop: Boreholes Spacing**

Distance between bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_boreholes_spacing``
- **Type:** ``Double``

- **Units:** ``ft``

- **Required:** ``false``

<br/>

**Geothermal Loop: Boreholes Diameter**

Diameter of bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_boreholes_diameter``
- **Type:** ``Double``

- **Units:** ``in``

- **Required:** ``false``

<br/>

**Geothermal Loop: Grout Type**

Grout type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_grout_type``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `standard`, `thermally enhanced`

<br/>

**Geothermal Loop: Pipe Type**

Pipe type of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_pipe_type``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `standard`, `thermally enhanced`

<br/>

**Geothermal Loop: Pipe Diameter**

Pipe diameter of the geothermal loop. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.7.0/workflow_inputs.html#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.

- **Name:** ``geothermal_loop_pipe_diameter``
- **Type:** ``Choice``

- **Required:** ``false``

- **Choices:** `3/4" pipe`, `1" pipe`, `1-1/4" pipe`

<br/>

**Heating System 2: Type**

The type of the second heating system.
Expand Down
172 changes: 171 additions & 1 deletion BuildResidentialHPXML/measure.rb
Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,30 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument
arg.setDescription("Presence of nearby buildings, trees, obstructions for infiltration model. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-site'>HPXML Site</a>) is used.")
args << arg

site_soil_and_moisture_type_choices = OpenStudio::StringVector.new
Constants.SoilTypes.each do |soil_type|
Constants.MoistureTypes.each do |moisture_type|
site_soil_and_moisture_type_choices << "#{soil_type}, #{moisture_type}"
end
end

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('site_soil_and_moisture_type', site_soil_and_moisture_type_choices, false)
arg.setDisplayName('Site: Soil and Moisture Type')
arg.setDescription("Type of soil and moisture. This is used to inform ground conductivity and diffusivity. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-site'>HPXML Site</a>) is used.")
args << arg

arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_ground_conductivity', false)
arg.setDisplayName('Site: Ground Conductivity')
arg.setDescription("Conductivity of the ground soil. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-site'>HPXML Site</a>) is used.")
arg.setDescription('Conductivity of the ground soil. If provided, overrides the previous site and moisture type input.')
arg.setUnits('Btu/hr-ft-F')
args << arg

arg = OpenStudio::Measure::OSArgument.makeDoubleArgument('site_ground_diffusivity', false)
shorowit marked this conversation as resolved.
Show resolved Hide resolved
arg.setDisplayName('Site: Ground Diffusivity')
arg.setDescription('Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input.')
arg.setUnits('ft^2/hr')
args << arg

arg = OpenStudio::Measure::OSArgument.makeStringArgument('site_zip_code', false)
arg.setDisplayName('Site: Zip Code')
arg.setDescription('Zip code of the home address.')
Expand Down Expand Up @@ -1359,6 +1377,85 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument
arg.setUnits('W')
args << arg

geothermal_loop_configuration_choices = OpenStudio::StringVector.new
geothermal_loop_configuration_choices << 'none'
# geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationDiagonal
# geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationHorizontal
# geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationOther
geothermal_loop_configuration_choices << HPXML::GeothermalLoopLoopConfigurationVertical

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_configuration', geothermal_loop_configuration_choices, true)
arg.setDisplayName('Geothermal Loop: Configuration')
arg.setDescription("Configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type.")
arg.setDefaultValue('none')
args << arg

geothermal_loop_borefield_configuration_choices = OpenStudio::StringVector.new
valid_bore_configs = HVACSizing.valid_bore_configs
valid_bore_configs.keys.each do |valid_bore_config|
geothermal_loop_borefield_configuration_choices << valid_bore_config
end

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_borefield_configuration', geothermal_loop_borefield_configuration_choices, false)
arg.setDisplayName('Geothermal Loop: Borefield Configuration')
arg.setDescription("Borefield configuration of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_loop_flow', false)
arg.setDisplayName('Geothermal Loop: Loop Flow')
arg.setDescription("Water flow rate through the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('gpm')
args << arg

arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geothermal_loop_boreholes_count', false)
arg.setDisplayName('Geothermal Loop: Boreholes Count')
arg.setDescription("Number of boreholes. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('#')
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_length', false)
arg.setDisplayName('Geothermal Loop: Boreholes Length')
arg.setDescription("Average length of each borehole (vertical). Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML autosized default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('ft')
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_spacing', false)
arg.setDisplayName('Geothermal Loop: Boreholes Spacing')
arg.setDescription("Distance between bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('ft')
args << arg

arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geothermal_loop_boreholes_diameter', false)
arg.setDisplayName('Geothermal Loop: Boreholes Diameter')
arg.setDescription("Diameter of bores. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('in')
args << arg

geothermal_loop_grout_or_pipe_type_choices = OpenStudio::StringVector.new
geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeStandard
geothermal_loop_grout_or_pipe_type_choices << HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_grout_type', geothermal_loop_grout_or_pipe_type_choices, false)
arg.setDisplayName('Geothermal Loop: Grout Type')
arg.setDescription("Grout type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
args << arg

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_pipe_type', geothermal_loop_grout_or_pipe_type_choices, false)
arg.setDisplayName('Geothermal Loop: Pipe Type')
arg.setDescription("Pipe type of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
args << arg

geothermal_loop_pipe_diameter_choices = OpenStudio::StringVector.new
geothermal_loop_pipe_diameter_choices << '3/4" pipe'
geothermal_loop_pipe_diameter_choices << '1" pipe'
geothermal_loop_pipe_diameter_choices << '1-1/4" pipe'

arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geothermal_loop_pipe_diameter', geothermal_loop_pipe_diameter_choices, false)
joseph-robertson marked this conversation as resolved.
Show resolved Hide resolved
arg.setDisplayName('Geothermal Loop: Pipe Diameter')
arg.setDescription("Pipe diameter of the geothermal loop. Only applies to #{HPXML::HVACTypeHeatPumpGroundToAir} heat pump type. If not provided, the OS-HPXML default (see <a href='#{docs_base_url}#hpxml-geothermal-loops'>HPXML Geothermal Loops</a>) is used.")
arg.setUnits('in')
args << arg

heating_system_2_type_choices = OpenStudio::StringVector.new
heating_system_2_type_choices << 'none'
heating_system_2_type_choices << HPXML::HVACTypeFurnace
Expand Down Expand Up @@ -3424,6 +3521,7 @@ def self.create(runner, model, args, epw_path, hpxml_path, existing_hpxml_path)
set_heating_systems(hpxml_bldg, args)
set_cooling_systems(hpxml_bldg, args)
set_heat_pumps(hpxml_bldg, args)
set_geothermal_loop(hpxml_bldg, args)
set_secondary_heating_systems(hpxml_bldg, args)
set_hvac_distribution(hpxml_bldg, args)
set_hvac_control(hpxml, hpxml_bldg, args, epw_file, weather)
Expand Down Expand Up @@ -4019,6 +4117,16 @@ def self.set_site(hpxml_bldg, args)
hpxml_bldg.site.ground_conductivity = args[:site_ground_conductivity].get
end

if args[:site_ground_diffusivity].is_initialized
hpxml_bldg.site.ground_diffusivity = args[:site_ground_diffusivity].get
end

if args[:site_soil_and_moisture_type].is_initialized
soil_type, moisture_type = args[:site_soil_and_moisture_type].get.split(', ')
hpxml_bldg.site.soil_type = soil_type
hpxml_bldg.site.moisture_type = moisture_type
end

if args[:site_type].is_initialized
hpxml_bldg.site.site_type = args[:site_type].get
end
Expand Down Expand Up @@ -5117,6 +5225,68 @@ def self.set_heat_pumps(hpxml_bldg, args)
primary_cooling_system: primary_cooling_system)
end

def self.set_geothermal_loop(hpxml_bldg, args)
loop_configuration = args[:geothermal_loop_configuration]

return if loop_configuration == 'none'

if args[:geothermal_loop_borefield_configuration].is_initialized
bore_config = args[:geothermal_loop_borefield_configuration].get
end

if args[:geothermal_loop_loop_flow].is_initialized
loop_flow = args[:geothermal_loop_loop_flow].get
end

if args[:geothermal_loop_boreholes_count].is_initialized
num_bore_holes = args[:geothermal_loop_boreholes_count].get
end

if args[:geothermal_loop_boreholes_length].is_initialized
bore_length = args[:geothermal_loop_boreholes_length].get
end

if args[:geothermal_loop_boreholes_spacing].is_initialized
bore_spacing = args[:geothermal_loop_boreholes_spacing].get
end

if args[:geothermal_loop_boreholes_diameter].is_initialized
bore_diameter = args[:geothermal_loop_boreholes_diameter].get
end

if args[:geothermal_loop_grout_type].is_initialized
grout_type = args[:geothermal_loop_grout_type].get
end

if args[:geothermal_loop_pipe_type].is_initialized
pipe_type = args[:geothermal_loop_pipe_type].get
end

if args[:geothermal_loop_pipe_diameter].is_initialized
pipe_diameter = args[:geothermal_loop_pipe_diameter].get
if pipe_diameter == '3/4" pipe'
pipe_diameter = 0.75
elsif pipe_diameter == '1" pipe'
pipe_diameter = 1.0
elsif pipe_diameter == '1-1/4" pipe'
pipe_diameter = 1.25
end
end

hpxml_bldg.geothermal_loops.add(id: "GeothermalLoop#{hpxml_bldg.geothermal_loops.size + 1}",
loop_configuration: loop_configuration,
loop_flow: loop_flow,
bore_config: bore_config,
num_bore_holes: num_bore_holes,
bore_length: bore_length,
bore_spacing: bore_spacing,
bore_diameter: bore_diameter,
grout_type: grout_type,
pipe_type: pipe_type,
pipe_diameter: pipe_diameter)
hpxml_bldg.heat_pumps[-1].geothermal_loop_idref = hpxml_bldg.geothermal_loops[-1].id
end

def self.set_secondary_heating_systems(hpxml_bldg, args)
heating_system_type = args[:heating_system_2_type]
heating_system_is_heatpump_backup = (args[:heat_pump_type] != 'none' && args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeSeparate)
Expand Down
Loading