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

Adds geothermal loop outputs to annual results file #1689

Merged
merged 8 commits into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ __New Features__
- Adds net energy and net electricity timeseries output columns even when there is no PV or generator.
- Adds more error-checking for inappropriate inputs (e.g., HVAC SHR=0 or clothes washer IMEF=0).
- Allow alternative label energy use (W) input for ceiling fans.
- Adds geothermal loop outputs (number/length of boreholes) to annual results output file.
- Updates to run_simulation.rb script:
- Allows requesting timeseries outputs with different frequencies (e.g., `--hourly enduses --monthly temperatures`).
- **Breaking change**: Deprecates `--add-timeseries-output-variable`; EnergyPlus output variables can now be requested like other timeseries categories (using e.g. `--hourly 'Zone People Occupant Count'`).
Expand Down
18 changes: 9 additions & 9 deletions HPXMLtoOpenStudio/measure.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<schema_version>3.1</schema_version>
<name>hpxm_lto_openstudio</name>
<uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
<version_id>7086b88c-b7d3-4fc4-8393-29101b48af5d</version_id>
<version_modified>2024-05-15T22:24:12Z</version_modified>
<version_id>508bdb29-fdfd-46d3-b1e5-bafb8f6bf404</version_id>
<version_modified>2024-05-15T23:06:44Z</version_modified>
<xml_checksum>D8922A73</xml_checksum>
<class_name>HPXMLtoOpenStudio</class_name>
<display_name>HPXML to OpenStudio Translator</display_name>
Expand Down Expand Up @@ -351,7 +351,7 @@
<filename>hpxml_defaults.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>9F32F9F2</checksum>
<checksum>2E5372C7</checksum>
</file>
<file>
<filename>hpxml_schema/HPXML.xsd</filename>
Expand All @@ -369,7 +369,7 @@
<filename>hpxml_schematron/EPvalidator.xml</filename>
<filetype>xml</filetype>
<usage_type>resource</usage_type>
<checksum>0FB30EBB</checksum>
<checksum>A438D5D8</checksum>
</file>
<file>
<filename>hpxml_schematron/iso-schematron.xsd</filename>
Expand All @@ -387,7 +387,7 @@
<filename>hvac_sizing.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>9E0396A8</checksum>
<checksum>9E1BADFB</checksum>
</file>
<file>
<filename>lighting.rb</filename>
Expand Down Expand Up @@ -429,7 +429,7 @@
<filename>output.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>2988F957</checksum>
<checksum>4E4BE5F9</checksum>
</file>
<file>
<filename>psychrometrics.rb</filename>
Expand Down Expand Up @@ -591,7 +591,7 @@
<filename>utility_bills.rb</filename>
<filetype>rb</filetype>
<usage_type>resource</usage_type>
<checksum>07DB4C49</checksum>
<checksum>410C185C</checksum>
</file>
<file>
<filename>version.rb</filename>
Expand Down Expand Up @@ -639,7 +639,7 @@
<filename>test_defaults.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>49BBCD85</checksum>
<checksum>0A047ABC</checksum>
</file>
<file>
<filename>test_enclosure.rb</filename>
Expand Down Expand Up @@ -711,7 +711,7 @@
<filename>test_validation.rb</filename>
<filetype>rb</filetype>
<usage_type>test</usage_type>
<checksum>DEBA714A</checksum>
<checksum>9B89B7B7</checksum>
</file>
<file>
<filename>test_water_heater.rb</filename>
Expand Down
2 changes: 1 addition & 1 deletion HPXMLtoOpenStudio/resources/hpxml_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1858,7 +1858,7 @@ def self.apply_hvac(runner, hpxml, hpxml_bldg, weather, convert_shared_systems)

if heat_pump.geothermal_loop.shank_spacing.nil?
hp_ap = heat_pump.additional_properties
heat_pump.geothermal_loop.shank_spacing = hp_ap.u_tube_spacing + hp_ap.pipe_od # Distance from center of pipe to center of pipe
heat_pump.geothermal_loop.shank_spacing = (hp_ap.u_tube_spacing + hp_ap.pipe_od).round(2) # Distance from center of pipe to center of pipe
heat_pump.geothermal_loop.shank_spacing_isdefaulted = true
end
elsif [HPXML::HVACTypeHeatPumpWaterLoopToAir].include? heat_pump.heat_pump_type
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1607,7 +1607,7 @@
<sch:assert role='ERROR' test='number(h:BoreholesOrTrenches/h:Count) &gt;= 1 or not(h:BoreholesOrTrenches/h:Count)'>Expected BoreholesOrTrenches/Count to be greater than or equal to 1</sch:assert>
<sch:assert role='ERROR' test='number(h:BoreholesOrTrenches/h:Count) &lt;= 10 or not(h:BoreholesOrTrenches/h:Count)'>Expected BoreholesOrTrenches/Count to be less than or equal to 10</sch:assert>
<sch:assert role='ERROR' test='count(h:BoreholesOrTrenches/h:Length) &lt;= 1'>Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Length</sch:assert>
<sch:assert role='ERROR' test='number(h:BoreholesOrTrenches/h:Length) &gt;= 79 or not(h:BoreholesOrTrenches/h:Length)'>Expected BoreholesOrTrenches/Length to be greater than or equal to 79</sch:assert>
<sch:assert role='ERROR' test='number(h:BoreholesOrTrenches/h:Length) &gt;= 80 or not(h:BoreholesOrTrenches/h:Length)'>Expected BoreholesOrTrenches/Length to be greater than or equal to 80</sch:assert>
<sch:assert role='ERROR' test='number(h:BoreholesOrTrenches/h:Length) &lt;= 500 or not(h:BoreholesOrTrenches/h:Length)'>Expected BoreholesOrTrenches/Length to be less than or equal to 500</sch:assert>
<sch:assert role='ERROR' test='count(h:BoreholesOrTrenches/h:Spacing) &lt;= 1'>Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Spacing</sch:assert>
<sch:assert role='ERROR' test='count(h:BoreholesOrTrenches/h:Diameter) &lt;= 1'>Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Diameter</sch:assert>
Expand Down
2 changes: 1 addition & 1 deletion HPXMLtoOpenStudio/resources/hvac_sizing.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2357,7 +2357,7 @@ def self.apply_hvac_ground_loop(mj, runner, hvac_sizings, weather, hvac_cooling)
num_bore_holes = geothermal_loop.num_bore_holes
bore_depth = geothermal_loop.bore_length

min_bore_depth = UnitConversions.convert(24.0, 'm', 'ft').round # based on g-function library
min_bore_depth = 80 # ft; based on g-function library
# In NY the following is the depth that requires a mining permit, which has been a barrier for Dandelion Energy with installing GSHPs.
# Sounds like people are pushing ever deeper but for now we can apply this limit and add a note about where it came from.
max_bore_depth = 500 # ft
Expand Down
21 changes: 11 additions & 10 deletions HPXMLtoOpenStudio/resources/output.rb
Original file line number Diff line number Diff line change
Expand Up @@ -194,16 +194,9 @@ def self.append_sizing_results(hpxml_bldgs, results_out)
line_break = nil

# Summary HVAC capacities
htg_cap, clg_cap, hp_backup_cap = 0.0, 0.0, 0.0
hpxml_bldgs.each do |hpxml_bldg|
capacities = Outputs.get_total_hvac_capacities(hpxml_bldg)
htg_cap += capacities[0]
clg_cap += capacities[1]
hp_backup_cap += capacities[2]
end
results_out << ['HVAC Capacity: Heating (Btu/h)', htg_cap.round(1)]
results_out << ['HVAC Capacity: Cooling (Btu/h)', clg_cap.round(1)]
results_out << ['HVAC Capacity: Heat Pump Backup (Btu/h)', hp_backup_cap.round(1)]
results_out << ['HVAC Capacity: Heating (Btu/h)', hpxml_bldgs.map { |hpxml_bldg| Outputs.get_total_hvac_capacities(hpxml_bldg)[0] }.sum(0.0).round(1)]
results_out << ['HVAC Capacity: Cooling (Btu/h)', hpxml_bldgs.map { |hpxml_bldg| Outputs.get_total_hvac_capacities(hpxml_bldg)[1] }.sum(0.0).round(1)]
results_out << ['HVAC Capacity: Heat Pump Backup (Btu/h)', hpxml_bldgs.map { |hpxml_bldg| Outputs.get_total_hvac_capacities(hpxml_bldg)[2] }.sum(0.0).round(1)]

# HVAC design temperatures
results_out << [line_break]
Expand Down Expand Up @@ -316,6 +309,14 @@ def self.append_sizing_results(hpxml_bldgs, results_out)
end
end

# Geothermal loop
results_out << [line_break]
geothermal_loops = hpxml_bldgs.map { |hpxml_bldg| hpxml_bldg.geothermal_loops }.flatten
num_boreholes = geothermal_loops.map { |loop| loop.num_bore_holes }.sum(0)
total_length = geothermal_loops.map { |loop| loop.bore_length * loop.num_bore_holes }.sum(0.0)
results_out << ['HVAC Geothermal Loop: Borehole/Trench Count', num_boreholes]
results_out << ['HVAC Geothermal Loop: Borehole/Trench Length (ft)', (total_length / [num_boreholes, 1].max).round(1)] # [num_boreholes, 1].max to prevent divide by zero

return results_out
end

Expand Down
3 changes: 3 additions & 0 deletions HPXMLtoOpenStudio/resources/utility_bills.rb
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ def self.get_rates_from_eia_data(runner, state_code, fuel_type, fixed_charge, ma
marginal_rate = marginal_rates[header].sum / marginal_rates[header].size
end

marginal_rate = marginal_rate.round(4) unless marginal_rate.nil?
average_rate = average_rate.round(4) unless average_rate.nil?

return marginal_rate, average_rate
end

Expand Down
26 changes: 13 additions & 13 deletions HPXMLtoOpenStudio/tests/test_defaults.rb
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ def test_utility_bills
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
default_hpxml, _default_hpxml_bldg = _test_measure()
default_hpxml.header.utility_bill_scenarios.each do |scenario|
_test_default_bills_values(scenario, 12, 12, nil, nil, nil, nil, nil, 0.12522695139911635, 1.059331185615199, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
_test_default_bills_values(scenario, 12, 12, nil, nil, nil, nil, nil, 0.1252, 1.0593, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
end

# Test defaults w/ electricity JSON file
Expand All @@ -216,7 +216,7 @@ def test_utility_bills
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
default_hpxml, _default_hpxml_bldg = _test_measure()
default_hpxml.header.utility_bill_scenarios.each do |scenario|
_test_default_bills_values(scenario, nil, 12, nil, nil, nil, nil, nil, nil, 1.059331185615199, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
_test_default_bills_values(scenario, nil, 12, nil, nil, nil, nil, nil, nil, 1.0593, nil, nil, nil, nil, nil, HPXML::PVCompensationTypeNetMetering, HPXML::PVAnnualExcessSellbackRateTypeUserSpecified, 0.03, nil, nil, 0)
end
end

Expand Down Expand Up @@ -1993,78 +1993,78 @@ def test_geothermal_loops
hpxml_bldg.geothermal_loops[0].pipe_type = nil # standard
hpxml_bldg.geothermal_loops[0].pipe_conductivity = nil # 0.23
hpxml_bldg.geothermal_loops[0].pipe_diameter = nil # 1.25
hpxml_bldg.geothermal_loops[0].shank_spacing = nil # 2.6261
hpxml_bldg.geothermal_loops[0].shank_spacing = nil # 2.63
hpxml_bldg.geothermal_loops[0].bore_config = nil # rectangle
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified loop flow
hpxml_bldg.geothermal_loops[0].loop_flow = 1
hpxml_bldg.geothermal_loops[0].num_bore_holes = nil
hpxml_bldg.geothermal_loops[0].bore_length = nil
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 1, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 1, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified num bore holes
hpxml_bldg.geothermal_loops[0].loop_flow = nil
hpxml_bldg.geothermal_loops[0].num_bore_holes = 2
hpxml_bldg.geothermal_loops[0].bore_length = nil
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, 2, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, 2, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified bore length
hpxml_bldg.geothermal_loops[0].loop_flow = nil
hpxml_bldg.geothermal_loops[0].num_bore_holes = nil
hpxml_bldg.geothermal_loops[0].bore_length = 300
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, 300, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, 300, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified loop flow, num bore holes
hpxml_bldg.geothermal_loops[0].loop_flow = 2
hpxml_bldg.geothermal_loops[0].num_bore_holes = 3
hpxml_bldg.geothermal_loops[0].bore_length = nil
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 2, 3, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 2, 3, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified num bore holes, bore length
hpxml_bldg.geothermal_loops[0].loop_flow = nil
hpxml_bldg.geothermal_loops[0].num_bore_holes = 4
hpxml_bldg.geothermal_loops[0].bore_length = 400
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, 4, 16.4, 400, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, 4, 16.4, 400, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified loop flow, bore length
hpxml_bldg.geothermal_loops[0].loop_flow = 5
hpxml_bldg.geothermal_loops[0].num_bore_holes = nil
hpxml_bldg.geothermal_loops[0].bore_length = 450
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 5, nil, 16.4, 450, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, 5, nil, 16.4, 450, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.75, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ thermally enhanced grout type
hpxml_bldg.geothermal_loops[0].grout_type = HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ thermally enhanced pipe type
hpxml_bldg.geothermal_loops[0].pipe_type = HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)

# Test defaults w/ specified rectangle bore config
hpxml_bldg.geothermal_loops[0].num_bore_holes = nil
hpxml_bldg.geothermal_loops[0].bore_config = HPXML::GeothermalLoopBorefieldConfigurationRectangle
XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path)
_default_hpxml, default_hpxml_bldg = _test_measure()
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
_test_default_geothermal_loop_values(default_hpxml_bldg.geothermal_loops[0], HPXML::GeothermalLoopLoopConfigurationVertical, nil, nil, 16.4, nil, 5.0, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 1.2, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.63, HPXML::GeothermalLoopBorefieldConfigurationRectangle)
end

def test_hvac_location
Expand Down