diff --git a/.gitignore b/.gitignore index d9c6bb29f2..afecbe2d99 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index 3ad5ef7c10..c7837d7601 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -197,9 +197,22 @@ Presence of nearby buildings, trees, obstructions for infiltration model. If not
+**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 HPXML Site) 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` + +
+ **Site: Ground Conductivity** -Conductivity of the ground soil. If not provided, the OS-HPXML default (see HPXML Site) is used. +Conductivity of the ground soil. If provided, overrides the previous site and moisture type input. - **Name:** ``site_ground_conductivity`` - **Type:** ``Double`` @@ -210,6 +223,19 @@ Conductivity of the ground soil. If not provided, the OS-HPXML default (see +**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`` + +
+ **Site: Zip Code** Zip code of the home address. @@ -2250,6 +2276,136 @@ Heat Pump crankcase heater power consumption in Watts. Applies only to air-to-ai
+**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` + +
+ +**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
HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_borefield_configuration`` +- **Type:** ``Choice`` + +- **Required:** ``false`` + +- **Choices:** `Rectangle`, `Open Rectangle`, `C`, `L`, `U`, `Lopsided U` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_loop_flow`` +- **Type:** ``Double`` + +- **Units:** ``gpm`` + +- **Required:** ``false`` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_boreholes_count`` +- **Type:** ``Integer`` + +- **Units:** ``#`` + +- **Required:** ``false`` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_boreholes_length`` +- **Type:** ``Double`` + +- **Units:** ``ft`` + +- **Required:** ``false`` + +
+ +**Geothermal Loop: Boreholes Spacing** + +Distance between bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_boreholes_spacing`` +- **Type:** ``Double`` + +- **Units:** ``ft`` + +- **Required:** ``false`` + +
+ +**Geothermal Loop: Boreholes Diameter** + +Diameter of bores. Only applies to ground-to-air heat pump type. If not provided, the OS-HPXML default (see HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_boreholes_diameter`` +- **Type:** ``Double`` + +- **Units:** ``in`` + +- **Required:** ``false`` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_grout_type`` +- **Type:** ``Choice`` + +- **Required:** ``false`` + +- **Choices:** `standard`, `thermally enhanced` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_pipe_type`` +- **Type:** ``Choice`` + +- **Required:** ``false`` + +- **Choices:** `standard`, `thermally enhanced` + +
+ +**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 HPXML Geothermal Loops) is used. + +- **Name:** ``geothermal_loop_pipe_diameter`` +- **Type:** ``Choice`` + +- **Required:** ``false`` + +- **Choices:** `3/4" pipe`, `1" pipe`, `1-1/4" pipe` + +
+ **Heating System 2: Type** The type of the second heating system. diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 327a8d2a68..214c046a9c 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -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 HPXML Site) 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 HPXML Site) 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 HPXML Site) 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) + 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.') @@ -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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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 HPXML Geothermal Loops) 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) + 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 HPXML Geothermal Loops) 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 @@ -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) @@ -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 @@ -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) diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 895e9df698..bb655822e3 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 73f05c97-2d2b-4e1e-8709-67b264ec605e - 2023-11-13T20:11:04Z + 7443a9ed-90c2-4a14-9625-dce0ac6c764e + 2023-12-06T20:52:07Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -193,15 +193,106 @@ + + site_soil_and_moisture_type + 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. + Choice + false + false + + + clay, dry + clay, dry + + + clay, mixed + clay, mixed + + + clay, wet + clay, wet + + + gravel, dry + gravel, dry + + + gravel, mixed + gravel, mixed + + + gravel, wet + gravel, wet + + + loam, dry + loam, dry + + + loam, mixed + loam, mixed + + + loam, wet + loam, wet + + + sand, dry + sand, dry + + + sand, mixed + sand, mixed + + + sand, wet + sand, wet + + + silt, dry + silt, dry + + + silt, mixed + silt, mixed + + + silt, wet + silt, wet + + + unknown, dry + unknown, dry + + + unknown, mixed + unknown, mixed + + + unknown, wet + unknown, wet + + + site_ground_conductivity 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. Double Btu/hr-ft-F false false + + site_ground_diffusivity + Site: Ground Diffusivity + Diffusivity of the ground soil. If provided, overrides the previous site and moisture type input. + Double + ft^2/hr + false + false + site_zip_code Site: Zip Code @@ -2787,6 +2878,163 @@ false false + + geothermal_loop_configuration + Geothermal Loop: Configuration + Configuration of the geothermal loop. Only applies to ground-to-air heat pump type. + Choice + true + false + none + + + none + none + + + vertical + vertical + + + + + geothermal_loop_borefield_configuration + 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. + Choice + false + false + + + Rectangle + Rectangle + + + Open Rectangle + Open Rectangle + + + C + C + + + L + L + + + U + U + + + Lopsided U + Lopsided U + + + + + geothermal_loop_loop_flow + 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. + Double + gpm + false + false + + + geothermal_loop_boreholes_count + 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. + Integer + # + false + false + + + geothermal_loop_boreholes_length + 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. + Double + ft + false + false + + + geothermal_loop_boreholes_spacing + 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. + Double + ft + false + false + + + geothermal_loop_boreholes_diameter + 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. + Double + in + false + false + + + geothermal_loop_grout_type + 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. + Choice + false + false + + + standard + standard + + + thermally enhanced + thermally enhanced + + + + + geothermal_loop_pipe_type + 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. + Choice + false + false + + + standard + standard + + + thermally enhanced + thermally enhanced + + + + + geothermal_loop_pipe_diameter + 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. + Choice + in + false + false + + + 3/4" pipe + 3/4" pipe + + + 1" pipe + 1" pipe + + + 1-1/4" pipe + 1-1/4" pipe + + + heating_system_2_type Heating System 2: Type @@ -6751,7 +6999,7 @@ README.md md readme - 92C872C5 + 01DC2190 README.md.erb @@ -6768,7 +7016,7 @@ measure.rb rb script - DEA666BB + 40D6AE5B geometry.rb @@ -6780,7 +7028,7 @@ test_build_residential_hpxml.rb rb test - 5018D51F + A3876964 diff --git a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb index 0769711f2a..29267d6cf7 100644 --- a/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb +++ b/BuildResidentialHPXML/tests/test_build_residential_hpxml.rb @@ -495,6 +495,7 @@ def _set_measure_argument_values(hpxml_file, args) args['heat_pump_backup_fuel'] = HPXML::FuelTypeElectricity args['heat_pump_backup_heating_efficiency'] = 1 args['heat_pump_backup_heating_capacity'] = 36000.0 + args['geothermal_loop_configuration'] = 'none' args['hvac_control_heating_weekday_setpoint'] = 68 args['hvac_control_heating_weekend_setpoint'] = 68 args['hvac_control_cooling_weekday_setpoint'] = 78 diff --git a/Changelog.md b/Changelog.md index c2c5527aa3..8f7a65681d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,6 +1,13 @@ ## OpenStudio-HPXML v1.8.0 __New Features__ +- Replaces `BuildingSummary/Site/extension/GroundConductivity` with `BuildingSummary/Site/Soil/Conductivity`. +- Ground source heat pump enhancements: + - Allows optional detailed inputs related to geothermal loop (`HVACPlant/GeothermalLoop`). + - Allows optional ground diffusivity input. + - Updates to using G-Functions from the [G-Function Library for Modeling Vertical Bore Ground Heat Exchanger](https://gdr.openei.org/submissions/1325). +- BuildResidentialHPXML measure: + - Add soil and moisture type arguments (for determining ground conductivity and diffusivity) and optional geothermal loop arguments for ground source heat pumps. - Adds more error-checking for inappropriate inputs (e.g., HVAC SHR=0 or clothes washer IMEF=0). __Bugfixes__ diff --git a/HPXMLtoOpenStudio/measure.rb b/HPXMLtoOpenStudio/measure.rb index bce7622ccb..7a3a6ea69f 100644 --- a/HPXMLtoOpenStudio/measure.rb +++ b/HPXMLtoOpenStudio/measure.rb @@ -1691,8 +1691,8 @@ def add_heat_pump(runner, model, weather, spaces, airloop_map) airloop_map[sys_id] = HVAC.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, sequential_heat_load_fracs, sequential_cool_load_fracs, - conditioned_zone, @hpxml_bldg.site.ground_conductivity, @hvac_unavailable_periods, - @hpxml_bldg.building_construction.number_of_units) + conditioned_zone, @hpxml_bldg.site.ground_conductivity, @hpxml_bldg.site.ground_diffusivity, + @hvac_unavailable_periods, @hpxml_bldg.building_construction.number_of_units) end diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 46290f40f8..7193c22ae2 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - e9b2608a-c0fd-4db3-811d-5065475dc1c5 - 2023-12-08T01:42:35Z + 779527cf-9f97-4b93-aa6a-c8c2dc92caff + 2023-12-08T21:26:22Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -142,7 +142,7 @@ measure.rb rb script - 78A58FBA + 0EE40834 airflow.rb @@ -160,7 +160,7 @@ constants.rb rb resource - E28C712B + 0A8AFBD2 constructions.rb @@ -222,6 +222,54 @@ resource 63C6A1E2 + + data/g_functions/C_configurations_5m_v1.0.json + json + resource + E97DCCDD + + + data/g_functions/L_configurations_5m_v1.0.json + json + resource + 6B2B3787 + + + data/g_functions/LopU_configurations_5m_v1.0.json + json + resource + B13FA813 + + + data/g_functions/Open_configurations_5m_v1.0.json + json + resource + FF25A024 + + + data/g_functions/README.md + md + resource + 48D1301C + + + data/g_functions/U_configurations_5m_v1.0.json + json + resource + B5BEF270 + + + data/g_functions/rectangle_5m_v1.0.json + json + resource + 25FFB6A8 + + + data/g_functions/util.rb + rb + resource + 2BEF07FA + data/unavailable_periods.csv csv @@ -256,13 +304,13 @@ hpxml.rb rb resource - 969D6722 + 30B5878C hpxml_defaults.rb rb resource - B7B35F9A + D5120072 hpxml_schema/HPXML.xsd @@ -280,7 +328,7 @@ hpxml_schematron/EPvalidator.xml xml resource - 5C7BB8F9 + 5C4B363E hpxml_schematron/iso-schematron.xsd @@ -292,13 +340,13 @@ hvac.rb rb resource - B014F262 + 944F044E hvac_sizing.rb rb resource - 479936B8 + 192E58ED lighting.rb @@ -484,7 +532,7 @@ unit_conversions.rb rb resource - 6D8BA8E5 + 7954C9BD util.rb @@ -544,7 +592,7 @@ test_defaults.rb rb test - C42C6EE4 + F90138B1 test_enclosure.rb @@ -568,13 +616,13 @@ test_hvac.rb rb test - 19EE9DA5 + 50108087 test_hvac_sizing.rb rb test - E2E504ED + 96372EB2 test_lighting.rb @@ -616,7 +664,7 @@ test_validation.rb rb test - 5AD27279 + CA056491 test_water_heater.rb diff --git a/HPXMLtoOpenStudio/resources/constants.rb b/HPXMLtoOpenStudio/resources/constants.rb index 39310eb5f4..80bc06ec05 100644 --- a/HPXMLtoOpenStudio/resources/constants.rb +++ b/HPXMLtoOpenStudio/resources/constants.rb @@ -86,6 +86,12 @@ def self.IECCZones '4A', '4B', '4C', '5A', '5B', '5C', '6A', '6B', '6C', '7', '8'] end + def self.MoistureTypes + return [HPXML::SiteSoilMoistureTypeDry, + HPXML::SiteSoilMoistureTypeMixed, + HPXML::SiteSoilMoistureTypeWet] + end + def self.ObjectNameAirSourceHeatPump return 'air source heat pump' end @@ -386,6 +392,16 @@ def self.ScheduleTypeLimitsTemperature return 'Temperature' end + def self.SoilTypes + return [HPXML::SiteSoilTypeClay, + HPXML::SiteSoilTypeGravel, + HPXML::SiteSoilTypeLoam, + # HPXML::SiteSoilTypeOther, + HPXML::SiteSoilTypeSand, + HPXML::SiteSoilTypeSilt, + HPXML::SiteSoilTypeUnknown] + end + def self.StateCodesMap return { 'AK' => 'Alaska', 'AL' => 'Alabama', diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/C_configurations_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/C_configurations_5m_v1.0.json new file mode 100644 index 0000000000..a97965ca65 --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/C_configurations_5m_v1.0.json @@ -0,0 +1,430 @@ +{ + "3_3": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 10.0, + 10.0 + ], + [ + 0.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835163556833926, + 3.186859876491747, + 3.519434116875382, + 4.021964695453298, + 4.625373168858599, + 5.6312132037030205, + 7.017734131113874, + 8.301128331626508, + 10.117778789699049, + 11.210610651605974, + 11.97658350477523, + 13.028692005585272, + 13.742865870882119, + 15.311494952074165, + 16.61816940081541, + 16.973709806949675, + 17.29235193442953, + 17.602231685890917, + 17.842328567513636, + 18.047436530328454, + 18.223984896573953, + 18.371696735221363, + 18.48184538753946, + 18.607667583380575, + 18.69355241378807, + 18.73567064555173, + 18.803797793376233 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615424, + 1.481384749141307, + 1.8198213217004346, + 2.111467924224727, + 2.4511928330881476, + 2.7884188390440285, + 3.0449438060593743, + 3.3868270121676414, + 3.6139397405790423, + 3.7971850654668233, + 4.09898609446547, + 4.348346130685021, + 5.0915638566345125, + 6.003348584673112, + 6.3086916925566205, + 6.606373821842277, + 6.918310269197572, + 7.176309365099969, + 7.407231942536658, + 7.614477838086075, + 7.793880568509996, + 7.9307745563154795, + 8.090147260210864, + 8.200733499237527, + 8.255609007591945, + 8.345178145421311 + ], + "5._384._0.0875": [ + 3.488828808642262, + 4.016644434684759, + 4.656097350048849, + 5.724643914605981, + 6.959907389349166, + 8.718829385823268, + 10.692998326451791, + 12.268677784338754, + 14.289104442978173, + 15.439317116143103, + 16.228160365480026, + 17.29573152921697, + 18.01381604634192, + 19.58236916077018, + 20.886702784603077, + 21.241361732916197, + 21.559695690469507, + 21.869461495310855, + 22.109738789160478, + 22.315010727642687, + 22.491842188196383, + 22.639906318278136, + 22.7503158438333, + 22.87650847004607, + 22.962608610868013, + 23.00480252216641, + 23.07299590032039 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125447, + 2.162243131656476, + 2.506080868699679, + 2.8001338633225847, + 3.143164725862182, + 3.5104718549266534, + 3.8548454175422537, + 4.451018321828258, + 4.911677689209101, + 5.297016704953428, + 5.926406904662141, + 6.42363687282888, + 7.719212181270854, + 8.980633064022445, + 9.346857075629215, + 9.682185873929486, + 10.014312896496607, + 10.275472721434394, + 10.500494849414343, + 10.695612308471507, + 10.859690701170845, + 10.982362439165625, + 11.12255814267523, + 11.218429945956188, + 11.265557218538143, + 11.341930946657229 + ], + "5._96._0.075": [ + 2.2092619209324713, + 2.5553055502990434, + 2.8518822508487425, + 3.1999858528748244, + 3.522272820624551, + 3.998433491444854, + 4.675890638522394, + 5.397602630870329, + 6.630658201542149, + 7.489891206956371, + 8.13793378006344, + 9.080671485080156, + 9.74838555993002, + 11.273174243711194, + 12.580380605681448, + 12.940043372325281, + 13.262876866410467, + 13.577523541572692, + 13.821599056356833, + 14.030346435181029, + 14.21009292948024, + 14.36049327970005, + 14.472700352633982, + 14.600821880462632, + 14.688349595590939, + 14.731324538344229, + 14.800941414503153 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "3_4": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 10.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 10.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351656362397346, + 3.1870222148932092, + 3.520674363862824, + 4.0264279051145735, + 4.637320591731866, + 5.681918628105053, + 7.195928057608826, + 8.667652969634457, + 10.835407948040462, + 12.17313876658168, + 13.120915089648694, + 14.431210692905513, + 15.324414951512091, + 17.287810340267846, + 18.921004062740323, + 19.36491546608122, + 19.762051084570377, + 20.147743937846332, + 20.44602162176634, + 20.70070964136171, + 20.919651129829095, + 21.102616404070183, + 21.23902136310015, + 21.394731378971578, + 21.50103309397409, + 21.553187409637513, + 21.637628767055283 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961542, + 1.4813847491413072, + 1.8198213217004342, + 2.1114679242247276, + 2.4511928331220942, + 2.788419317683002, + 3.044973112248845, + 3.3874436711912677, + 3.615661212012368, + 3.800050369353508, + 4.104157202838955, + 4.356442100688683, + 5.12205707751613, + 6.104951371039292, + 6.446639974674841, + 6.785677489291673, + 7.14704327959393, + 7.450449873105475, + 7.725362085869953, + 7.974617851085698, + 8.192173659856739, + 8.359201726136602, + 8.554505711034817, + 8.690545155519857, + 8.758244872089577, + 8.869012063214859 + ], + "5._384._0.0875": [ + 3.49036660596901, + 4.021766894917606, + 4.670398135472843, + 5.785876730623253, + 7.138255086355541, + 9.165208843721057, + 11.541605088064465, + 13.48737679446265, + 16.016925846737212, + 17.466322475408763, + 18.46211624061257, + 19.809514025003885, + 20.71551095088742, + 22.689183383189555, + 24.325042046727248, + 24.769175716459035, + 25.16730866035988, + 25.554315529732776, + 25.854096076383122, + 26.110133317947074, + 26.330508557731115, + 26.51489398108105, + 26.652379210936964, + 26.809464413649252, + 26.91666630006337, + 26.96922193140444, + 27.05422647074861 + ], + "5._48._0.075": [ + 1.5268463243731403, + 1.8679037053125447, + 2.1622431316564747, + 2.5060808688610527, + 2.8001342903818083, + 3.1432338679800567, + 3.5114733483441682, + 3.857857357850316, + 4.459751399181277, + 4.9307123214898665, + 5.331458857871278, + 6.002224412369842, + 6.547004846721879, + 8.022439927539539, + 9.52315275020389, + 9.968067991414454, + 10.377948331831623, + 10.785910363406488, + 11.107625004661795, + 11.385384317551141, + 11.626367553184362, + 11.828974735668197, + 11.98043089448376, + 12.153298933490644, + 12.271491966315507, + 12.329622690516775, + 12.42391440421234 + ], + "5._96._0.075": [ + 2.2092718103274045, + 2.5553235626058277, + 2.851913830622353, + 3.2001519267074148, + 3.523359938286808, + 4.002550681065331, + 4.688607687930474, + 5.435519397369628, + 6.769739711868012, + 7.743407290903215, + 8.498819340733247, + 9.625393320231394, + 10.439696691725631, + 12.336240074219331, + 13.984730545681584, + 14.440147371236215, + 14.848759407552242, + 15.246859877582578, + 15.555285881043151, + 15.818798499910438, + 16.04531949178444, + 16.234511881534374, + 16.375485158212747, + 16.536146203601948, + 16.645795872234547, + 16.699618718001776, + 16.78681672438809 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/L_configurations_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/L_configurations_5m_v1.0.json new file mode 100644 index 0000000000..44a1e145dc --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/L_configurations_5m_v1.0.json @@ -0,0 +1,1458 @@ +{ + "2_3": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351565340840654, + 3.186294678741936, + 3.5144109644730803, + 3.995439251104943, + 4.540054979569839, + 5.353103468826478, + 6.338557682853676, + 7.175644263582237, + 8.300018094772028, + 8.95825975403952, + 9.415339886150417, + 10.040686729759392, + 10.464389965358135, + 11.398422195838442, + 12.181295381120544, + 12.394954611632901, + 12.587053316477114, + 12.774322378435347, + 12.9198790390213, + 13.04432381553385, + 13.151666275296192, + 13.24164740649804, + 13.308770317159306, + 13.385528170620196, + 13.437906679454773, + 13.463572869649013, + 13.505022546131494 + ], + "5._24._0.075": [ + 0.874001379397096, + 1.1957934696806856, + 1.481366748888237, + 1.8197853662506764, + 2.1114044341807157, + 2.451070525119184, + 2.7881837559656337, + 3.044463314569365, + 3.3837752049736625, + 3.6052626282529983, + 3.7808850342249296, + 4.062850526656146, + 4.287173959398183, + 4.900757002121434, + 5.559857029797825, + 5.764587946944072, + 5.958448455056103, + 6.1566606616146045, + 6.317427227631378, + 6.4594026896501004, + 6.585572806050645, + 6.694097761730789, + 6.776645767697963, + 6.872735660118553, + 6.939435155205178, + 6.972521380956327, + 7.02653942906457 + ], + "5._384._0.0875": [ + 3.4823994761887773, + 3.9848262284880747, + 4.555179718646517, + 5.404715728587619, + 6.277318639068673, + 7.415941427751029, + 8.623924248681595, + 9.562805804136447, + 10.753149302763997, + 11.428110159901493, + 11.890961006550969, + 12.518785405045108, + 12.941903106666471, + 13.871456847280529, + 14.649379566430458, + 14.861481795023234, + 15.05227676777121, + 15.238263204563578, + 15.382850967157188, + 15.506425265511714, + 15.613023847945573, + 15.70238848204994, + 15.76903100298123, + 15.845242134255502, + 15.89721792111516, + 15.922670854730866, + 15.963754000577815 + ], + "5._48._0.075": [ + 1.5268359332879176, + 1.867883938514738, + 2.1622087383456443, + 2.506015109960689, + 2.8000188522237432, + 3.1427108866736058, + 3.5060986477767258, + 3.838544450552084, + 4.387051823461636, + 4.779681099553516, + 5.087048257250629, + 5.555234983642199, + 5.902478640976778, + 6.746305648050327, + 7.520034677798101, + 7.739757236794212, + 7.939975736139153, + 8.13764341906379, + 8.292951958392333, + 8.426822026199208, + 8.543135382483195, + 8.641236746959452, + 8.714776488918025, + 8.799196310069604, + 8.857085366459035, + 8.885567456031344, + 8.93174626548206 + ], + "5._96._0.075": [ + 2.2092619209324695, + 2.5553055480208147, + 2.8518789626125645, + 3.1996131291742733, + 3.5184210872676602, + 3.976538634666165, + 4.590026741342543, + 5.182023608336045, + 6.081979246107727, + 6.658142816068973, + 7.075882331699295, + 7.666879556882379, + 8.077358544183552, + 9.003240254562144, + 9.793289043391548, + 10.010580720922956, + 10.206299718151746, + 10.397526436776573, + 10.546421057404947, + 10.673923694180173, + 10.784036508256804, + 10.876432045080968, + 10.945427632519772, + 11.02437236750136, + 11.078310702275603, + 11.104773400439738, + 11.147566477076325 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "3_3": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835159810088887, + 3.186553817896705, + 3.516527838262404, + 4.004329837473649, + 4.563116154725879, + 5.422730649791384, + 6.515803491910567, + 7.482956710803077, + 8.821023313877978, + 9.6182191663194, + 10.175664703095364, + 10.941363073004217, + 11.461472146417226, + 12.608257361815083, + 13.568342463717922, + 13.830179312701365, + 14.065319930740815, + 14.294348922588275, + 14.472150360525662, + 14.62411713920069, + 14.755089916843, + 14.86479421584671, + 14.946616058533072, + 15.040137216786091, + 15.103960182529738, + 15.135243749367413, + 15.185795927543893 + ], + "5._24._0.075": [ + 0.8740013793970969, + 1.1957934696806858, + 1.4813667488882372, + 1.819785366250676, + 2.111404434180714, + 2.4510705251726415, + 2.7881845096187328, + 3.044509593245944, + 3.3847903095492087, + 3.6083035325207624, + 3.7863073570514962, + 4.073420909415854, + 4.303528018870766, + 4.946650857734783, + 5.6693569965691, + 5.9013084226992705, + 6.123950179738185, + 6.354536856156806, + 6.543591291544423, + 6.712003311328731, + 6.862701672318173, + 6.993032655361014, + 7.092573856085612, + 7.208783610032469, + 7.289678619678314, + 7.329892641652891, + 7.395672028234926 + ], + "5._384._0.0875": [ + 3.485048260731776, + 3.9951071279520405, + 4.581851301847068, + 5.484808169649971, + 6.455104578968857, + 7.775372616018783, + 9.22199936245641, + 10.365908886904977, + 11.82883492358668, + 12.661581403425886, + 13.23319009931225, + 14.008316381993554, + 14.530522093813575, + 15.675495110327816, + 16.63142732476554, + 16.89179450610136, + 17.125793127388665, + 17.353729855179026, + 17.530765771001807, + 17.682044232641264, + 17.812464911292064, + 17.921742819595384, + 18.003230911309156, + 18.096394037225632, + 18.159940527464432, + 18.191068435625677, + 18.24133759731324 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125445, + 2.162243131656477, + 2.5060808684092084, + 2.800133094426295, + 3.1430374163007104, + 3.5082169030632127, + 3.8450275342479676, + 4.406534046169518, + 4.816288079387438, + 5.143866301845898, + 5.65606519988429, + 6.046495444259167, + 7.030090060237974, + 7.966007100338916, + 8.235929869051896, + 8.483170856797145, + 8.728158996337275, + 8.921112444405356, + 9.087562420507037, + 9.232205464733582, + 9.354129986505788, + 9.445427943510513, + 9.550041570574544, + 9.621668042054347, + 9.656881667288603, + 9.713926996862321 + ], + "5._96._0.075": [ + 2.2092619209324704, + 2.555305549083987, + 2.851880496820393, + 3.199784898670547, + 3.52007441535427, + 3.984136432946034, + 4.613165252686054, + 5.236232350959428, + 6.22360987846198, + 6.880193152459714, + 7.366198391381113, + 8.065015871363219, + 8.556594005322559, + 9.676987132273267, + 10.639766269340903, + 10.905167610733255, + 11.144072739107475, + 11.377399385181416, + 11.558888935284472, + 11.714267141061399, + 11.848328964404903, + 11.960713056407453, + 12.044610223908563, + 12.14053053593925, + 12.206065808619332, + 12.23822816706263, + 12.290272439934673 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "3_4": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351619940963437, + 3.1867265785500734, + 3.517939064186244, + 4.010138551230323, + 4.576291588076084, + 5.455044208906557, + 6.600975167484662, + 7.649772284219236, + 9.14934968837866, + 10.063857164096989, + 10.710146938865867, + 11.604140247325471, + 12.214402814710182, + 13.56347254307444, + 14.693817434625865, + 15.00208648237771, + 15.278653289269412, + 15.547835844558206, + 15.756579124539229, + 15.93494441325526, + 16.088544751837524, + 16.217104047249517, + 16.312972046145962, + 16.42249378959499, + 16.497241448969145, + 16.533890372501336, + 16.593147644087402 + ], + "5._24._0.075": [ + 0.8740059532267962, + 1.1958031759615424, + 1.4813847491413075, + 1.8198213217004346, + 2.1114679242247276, + 2.4511928330626853, + 2.7884184798647675, + 3.0449213397455503, + 3.3862129873393996, + 3.611462070674867, + 3.7914510567110744, + 4.082678848046977, + 4.31684348037127, + 4.9772959513826285, + 5.738584084401636, + 5.989253979063876, + 6.23334177329425, + 6.489858040662278, + 6.703119888040274, + 6.895278018666497, + 7.068988968785528, + 7.220519810348074, + 7.336979263921885, + 7.473656308122835, + 7.569188413539111, + 7.61680335666292, + 7.694850505823601 + ], + "5._384._0.0875": [ + 3.4868221254020995, + 4.001784930550749, + 4.596673773043294, + 5.521665948466438, + 6.540439532142497, + 7.977512581636011, + 9.610904130639307, + 10.9333347273021, + 12.648054089886527, + 13.631008058550055, + 14.307291859475942, + 15.224995190752944, + 15.843459817922156, + 17.19766002629546, + 18.326147574478423, + 18.6332414737864, + 18.908992063919293, + 19.177410310732977, + 19.38569525993438, + 19.56364167675798, + 19.716962108500727, + 19.845358360487722, + 19.941096166408666, + 20.05051971773102, + 20.125166859502414, + 20.161741855562525, + 20.22083721520326 + ], + "5._48._0.075": [ + 1.5268463243731434, + 1.8679037053125458, + 2.1622431316564765, + 2.506080868578651, + 2.800133542870094, + 3.1431104909437595, + 3.5093422402107293, + 3.8488065872303174, + 4.417007137769795, + 4.833524538210346, + 5.168561858065412, + 5.698283073774795, + 6.108422194827479, + 7.16973404414734, + 8.217325109845467, + 8.525494050029078, + 8.809680065211936, + 9.092885964465491, + 9.316854548088468, + 9.510655082390995, + 9.679389102065697, + 9.821789543310542, + 9.928514440070055, + 10.050817206373901, + 10.134608666237124, + 10.175835404712222, + 10.242681818413955 + ], + "5._96._0.075": [ + 2.209261920932471, + 2.555305549792769, + 2.8518815196256133, + 3.1998994120329356, + 3.5211766712637163, + 3.9891348905024158, + 4.626334080989386, + 5.262063095260086, + 6.289867551825011, + 6.992805162264005, + 7.523625491011389, + 8.301141948345355, + 8.857142967903947, + 10.144929297532864, + 11.26645577577747, + 11.577167894037178, + 11.856964508026879, + 12.130317747234228, + 12.342847312936236, + 12.524813135310088, + 12.681713811351326, + 12.813146370843763, + 12.911244963986244, + 13.023325280110544, + 13.09990529951879, + 13.137501383651404, + 13.19837972697988 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "4_4": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835163554103729, + 3.1868499795100256, + 3.5189471871417144, + 4.014291734689392, + 4.585729983426826, + 5.4783782331097886, + 6.664875308975525, + 7.78095954436287, + 9.422622271115944, + 10.444946568635388, + 11.174586733117547, + 12.190679309604377, + 12.887629509317616, + 14.432466371861755, + 15.72804732473775, + 16.081392778821243, + 16.398108012781965, + 16.706154923196785, + 16.94478515960347, + 17.148634374775696, + 17.324044660244187, + 17.470751596521854, + 17.580134119683894, + 17.70503746479188, + 17.790288291349594, + 17.832098064054087, + 17.899737843068284 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615424, + 1.481384749141307, + 1.8198213217004346, + 2.111467924224727, + 2.4511928330881467, + 2.788418838872571, + 3.04494338890382, + 3.3866968888704605, + 3.612910916227809, + 3.7940199256554292, + 4.0874967512700415, + 4.323817801662154, + 4.993223862336138, + 5.776939636452273, + 6.0398329147115115, + 6.298516420435058, + 6.573466422852641, + 6.804579954700581, + 7.014876393828088, + 7.206675627757325, + 7.375307882595491, + 7.505754432240141, + 7.659723925184936, + 7.76791724765261, + 7.822040894389363, + 7.911051827069974 + ], + "5._384._0.0875": [ + 3.4880902775716516, + 4.0065619525134215, + 4.607298279466111, + 5.548353958156116, + 6.604415106939941, + 8.13860019568434, + 9.938536968136697, + 11.427377002248585, + 13.383231984894984, + 14.512099196220316, + 15.29057972183952, + 16.347765426714993, + 17.06050692000972, + 18.619290778574012, + 19.916053673254428, + 20.2686496512593, + 20.584999002677907, + 20.892732872471324, + 21.13131773958098, + 21.335112938000275, + 21.510606445342315, + 21.65749717959913, + 21.767018104919572, + 21.892162864981678, + 21.977544756334243, + 22.019389460008043, + 22.08703090750865 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125447, + 2.162243131656476, + 2.506080868699681, + 2.800133863187092, + 3.1431626871705314, + 3.5101461072512348, + 3.8515072619323156, + 4.424504911378015, + 4.845886343624489, + 5.186331552272661, + 5.729058529452128, + 6.1543553311536385, + 7.279215244517337, + 8.425007491615851, + 8.768101772829569, + 9.08648777576615, + 9.405485053350356, + 9.65874977692766, + 9.87854736747751, + 10.070275097983433, + 10.232270081471812, + 10.353782216544758, + 10.493043905742333, + 10.588509080770054, + 10.635513887026178, + 10.711792810255785 + ], + "5._96._0.075": [ + 2.2092619209324718, + 2.555305550299043, + 2.8518822502007706, + 3.1999812074434986, + 3.5219640505521346, + 3.9927079992711505, + 4.635768436942492, + 5.280652168885683, + 6.338984165530696, + 7.079120833009518, + 7.647405762106008, + 8.493199493397391, + 9.106886336359855, + 10.549497600871693, + 11.821945288975535, + 12.176179524294474, + 12.495306427173027, + 12.807191058501216, + 13.049579738950227, + 13.257119802438721, + 13.435959943893337, + 13.585663292927912, + 13.697375965540715, + 13.824926149001566, + 13.912078874142695, + 13.95487960916011, + 14.02423056578889 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "4_5": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.83516472411039, + 3.1869425304997336, + 3.519703336588499, + 4.017409124634149, + 4.592792127320395, + 5.494435370274548, + 6.702922623181757, + 7.859047111999608, + 9.601273766609378, + 10.709893884541724, + 11.510288742748434, + 12.634631898016757, + 13.410995173686615, + 15.140112325896753, + 16.59431376284061, + 16.991218622233816, + 17.346724733781354, + 17.692319667585423, + 17.959786862066252, + 18.188220856046517, + 18.384643002748486, + 18.54880887859812, + 18.671188673718667, + 18.810869505477182, + 18.906212251366096, + 18.952983693185324, + 19.0286924400906 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615426, + 1.4813847491413072, + 1.8198213217004342, + 2.1114679242247267, + 2.451192833107243, + 2.788419108128426, + 3.044959925775519, + 3.387059821765704, + 3.613997664863135, + 3.7959470723593096, + 4.09111167742486, + 4.329038708345258, + 5.004506770243227, + 5.800396675051319, + 6.069930680934847, + 6.337044137013024, + 6.623399632901891, + 6.866397000242412, + 7.089548465426775, + 7.294940305254195, + 7.477122120182745, + 7.619155348518463, + 7.7880816786592515, + 7.907676077545279, + 7.967812952154061, + 8.067196242249718 + ], + "5._384._0.0875": [ + 3.489041966728529, + 4.0101492446674785, + 4.615228891631927, + 5.566384478985521, + 6.642584303912649, + 8.23605088452842, + 10.158307320185152, + 11.785471693976609, + 13.957916675535065, + 15.2235651708415, + 16.099466100365742, + 17.290954676319654, + 18.09508402875218, + 19.852744524299638, + 21.313164415062523, + 21.70999507573438, + 22.065750787889225, + 22.41159715450544, + 22.679499567017082, + 22.908294539148603, + 23.10520435766242, + 23.269936461997787, + 23.392750503414597, + 23.53304715405481, + 23.628776387136153, + 23.675702827788015, + 23.751593525065417 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125456, + 2.1622431316564765, + 2.5060808687904528, + 2.800134103424843, + 3.1432018343696826, + 3.510749037532128, + 3.8535335425120447, + 4.430128801236172, + 4.854966963284894, + 5.198834780785669, + 5.748826061535993, + 6.182200108369144, + 7.344326849292377, + 8.559766854482477, + 8.930536691975924, + 9.277137603746795, + 9.626775473927715, + 9.905883724809348, + 10.149145007609818, + 10.36200401620384, + 10.542263530840383, + 10.677700598499671, + 10.833061729053647, + 10.939691930072817, + 10.992253400925039, + 11.077649233553439 + ], + "5._96._0.075": [ + 2.2092718103274036, + 2.555323562310494, + 2.851913403930866, + 3.2001005947998324, + 3.522658579337796, + 3.9956263916358847, + 4.643473862001433, + 5.295314181512427, + 6.373564059926124, + 7.138360360544258, + 7.733580791206114, + 8.633729955517238, + 9.297305182392362, + 10.888688183108068, + 12.31939479443607, + 12.720736736508375, + 13.083024543099366, + 13.437593746774013, + 13.71333786799934, + 13.94943383896836, + 14.152804847143246, + 14.322925976753803, + 14.449783003015684, + 14.594457028247186, + 14.693237854773255, + 14.741735431737363, + 14.820299846760408 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "5_5": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 20.0, + 0.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351656341162452, + 3.1870145147626974, + 3.52029148667567, + 4.019835093017707, + 4.5982936958752845, + 5.5069711231041305, + 6.732856648502025, + 7.921843283659013, + 9.751252336543244, + 10.937949457944962, + 11.803810763333674, + 13.030085671186802, + 13.882247595182367, + 15.789154273241033, + 17.397423190906295, + 17.836713667778135, + 18.22992056086585, + 18.611973711107705, + 18.907390194405757, + 19.159639444194557, + 19.37638567560696, + 19.55741533979612, + 19.692344607372505, + 19.846281147124184, + 19.951360171056265, + 20.002920665455477, + 20.086426165369282 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961542, + 1.4813847491413072, + 1.8198213217004342, + 2.1114679242247276, + 2.451192833122094, + 2.788419317549644, + 3.044972787788615, + 3.387342106904055, + 3.6148429816023158, + 3.7974462638003725, + 4.093924920426126, + 4.333103496437159, + 5.013306910761229, + 5.818776402913868, + 6.093626438407932, + 6.367602838347201, + 6.663433786692135, + 6.9165238361402075, + 7.150815194090501, + 7.368218463676161, + 7.562596393540276, + 7.715228084652988, + 7.898056909693774, + 8.028413669395082, + 8.094286262487623, + 8.203659924602803 + ], + "5._384._0.0875": [ + 3.4897825285162716, + 4.012941689162447, + 4.621408914553352, + 5.5804680548945775, + 6.672609120789035, + 8.31509118799391, + 10.344732940730454, + 12.098911719604803, + 14.476641313448162, + 15.87436363801686, + 16.84503143949367, + 18.167681280211, + 19.06128493020748, + 21.01360346286259, + 22.633944058823158, + 23.073950798692806, + 23.46811627235861, + 23.85106778822409, + 24.14746670484337, + 24.40055223560015, + 24.618248421060102, + 24.800280536523264, + 24.935982465719608, + 25.090962451665916, + 25.196720717693957, + 25.24857444671522, + 25.332470394268455 + ], + "5._48._0.075": [ + 1.5268463243731403, + 1.8679037053125447, + 2.1622431316564747, + 2.5060808688610523, + 2.8001342902764255, + 3.143232282208476, + 3.5112180010648584, + 3.8551099766951262, + 4.434508445015713, + 4.862044168289376, + 5.2085862251099835, + 5.76427186474273, + 6.204030023936915, + 7.396608078479404, + 8.67243421921375, + 9.068108653611503, + 9.440488857096849, + 9.818513912853351, + 10.121840924076693, + 10.387285417655814, + 10.620257980195246, + 10.81799007145421, + 10.966794134425063, + 11.137640764253641, + 11.255032830215635, + 11.312961151069707, + 11.407180498632554 + ], + "5._96._0.075": [ + 2.2092718103274045, + 2.5553235626058273, + 2.8519138301183564, + 3.2001483127080967, + 3.5231179843247027, + 3.9977134437346464, + 4.648975320207692, + 5.305585007380778, + 6.39703709911218, + 7.17876659781859, + 7.793226026447637, + 8.733528438854526, + 9.435430088140752, + 11.144967976432001, + 12.706719324002064, + 13.14787586741075, + 13.546721484584156, + 13.937525543460476, + 14.241551222490221, + 14.50196549559448, + 14.72623258973888, + 14.913756060151046, + 15.05357527196797, + 15.212946759671123, + 15.3217707932991, + 15.375217236739509, + 15.461850615114354 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "5_6": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 20.0, + 0.0 + ], + [ + 0.0, + 25.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 20.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351663621213476, + 3.1870721022737705, + 3.520762028072415, + 4.02177670715311, + 4.602700935880571, + 5.5169614281183295, + 6.754855825756175, + 7.9645021066903565, + 9.854195714565249, + 11.10118115502487, + 12.02079017457652, + 13.33501175674585, + 14.255218116370674, + 16.327580693017115, + 18.083344353315496, + 18.56362520769094, + 18.993336351577927, + 19.41072371690533, + 19.73321459372418, + 20.0085375697826, + 20.244956310741, + 20.44229121767626, + 20.589351458110524, + 20.75705585476228, + 20.871539877317286, + 20.927729350399375, + 21.01878029962984 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.1958031759615424, + 1.4813847491413064, + 1.8198213217004344, + 2.111467924224728, + 2.4511928331339767, + 2.78841948508662, + 3.0449830774002087, + 3.387567937533259, + 3.6155192777092866, + 3.7986458056918515, + 4.09617654554866, + 4.336357851959621, + 5.020341466937139, + 5.832650771275151, + 6.110827469116957, + 6.389042492581823, + 6.6908140178252875, + 6.9505065386722915, + 7.19243632727055, + 7.418520650316663, + 7.622186443220001, + 7.783277024147918, + 7.977759934980626, + 8.117592805144756, + 8.188682129256737, + 8.307429486277217 + ], + "5._384._0.0875": [ + 3.4903752045070484, + 4.01517711032482, + 4.6263611033013685, + 5.591651876749553, + 6.694719081848411, + 8.368450742711376, + 10.474682133299819, + 12.330889394576008, + 14.888519563366648, + 16.408157644645936, + 17.468228127586602, + 18.916370704866225, + 19.896420203285626, + 22.037916287175435, + 23.8141271476306, + 24.296236618781442, + 24.727807918401368, + 25.14685682358567, + 25.47093076905325, + 25.747597339655663, + 25.98544714069117, + 26.18423280389328, + 26.332412410977593, + 26.501598750598582, + 26.617061272271563, + 26.67368466152417, + 26.765337023877695 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125436, + 2.1622431316564765, + 2.5060808689175356, + 2.8001344397576915, + 3.1432566404903644, + 3.511593183079418, + 3.856371400128268, + 4.4380157399092885, + 4.867711940849569, + 5.216364717136565, + 5.7762914554758265, + 6.220353271364668, + 7.432151663462933, + 8.749651704331555, + 9.164328082900065, + 9.557213922268762, + 9.958759768536368, + 10.282877875055014, + 10.567908594592975, + 10.81906136060472, + 11.032894679440224, + 11.194197906982616, + 11.379706010195362, + 11.5073980375971, + 11.570501022182581, + 11.673285059619554 + ], + "5._96._0.075": [ + 2.2092718103274036, + 2.555323562842096, + 2.85191417106835, + 3.200186487065689, + 3.5234855192691428, + 3.9993836545154893, + 4.653382627830734, + 5.313797205723791, + 6.4147270512273895, + 7.207138999640167, + 7.833733889835734, + 8.80089588588579, + 9.530363365014855, + 11.333631004403431, + 13.010527458583056, + 13.488289186954031, + 13.92125017587898, + 14.346267385680884, + 14.677219806295792, + 14.960918512159175, + 15.20526897204249, + 15.409558628634645, + 15.561886771503513, + 15.735450711687019, + 15.853988192816459, + 15.912229132312792, + 16.006695343389197 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/LopU_configurations_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/LopU_configurations_5m_v1.0.json new file mode 100644 index 0000000000..569b31f812 --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/LopU_configurations_5m_v1.0.json @@ -0,0 +1,1070 @@ +{ + "3_3": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835161997281606, + 3.1867381215993795, + 3.5185012299806, + 4.018207786059317, + 4.611522668745683, + 5.568874333577036, + 6.836004531526947, + 7.978299130155127, + 9.570415520364628, + 10.520896803633871, + 11.18544985901755, + 12.097405831623279, + 12.716235837830903, + 14.07725035550396, + 15.213319321255456, + 15.522748827071853, + 15.80034181189145, + 16.07050627680383, + 16.280037127094857, + 16.459078496899767, + 16.613289570046533, + 16.742387429210957, + 16.83866562742485, + 16.948678542981284, + 17.023764953816947, + 17.060578709692493, + 17.120096580000425 + ], + "5._24._0.075": [ + 0.8740059532267962, + 1.1958031759615424, + 1.4813847491413075, + 1.8198213217004346, + 2.1114679242247276, + 2.4511928330626858, + 2.7884184800648018, + 3.0449218264187192, + 3.386364280881006, + 3.6126359926321863, + 3.79493625768915, + 4.0942333792300625, + 4.339565387102509, + 5.053252662684951, + 5.894012861764751, + 6.1692141208801, + 6.435226672929396, + 6.712013855754454, + 6.939696560132331, + 7.142722227418524, + 7.324454940554824, + 7.481516452586633, + 7.601263550955875, + 7.740691200095479, + 7.837447432025986, + 7.885451054843903, + 7.963799083051462 + ], + "5._384._0.0875": [ + 3.487676594523292, + 4.012185032955957, + 4.638991756254868, + 5.650757679606887, + 6.777540858363599, + 8.339511000564395, + 10.06403347788277, + 11.430320362694669, + 13.177079418495522, + 14.170574715111272, + 14.85199509982566, + 15.774897364964186, + 16.396068715012934, + 17.75531845133708, + 18.88778916602398, + 19.195974193826814, + 19.472773346818215, + 19.742264669315524, + 19.951442256252957, + 20.130167143011494, + 20.284192158815404, + 20.41320584056457, + 20.50941106115381, + 20.619385591773217, + 20.69441029551412, + 20.731168833205384, + 20.790554342739927 + ], + "5._48._0.075": [ + 1.5268463243731434, + 1.8679037053125458, + 2.1622431316564765, + 2.5060808685786506, + 2.800133543028167, + 3.143112869251154, + 3.5097194414253443, + 3.8524859183350393, + 4.4415995372614185, + 4.887846226044234, + 5.253753432356401, + 5.838743693471681, + 6.29209176602508, + 7.449697318082022, + 8.558482540732482, + 8.878533630401094, + 9.171342722519933, + 9.46119737649092, + 9.689161582709286, + 9.885614939036083, + 10.056085649132992, + 10.19957044968913, + 10.306910365238013, + 10.429725598821319, + 10.513752096461245, + 10.555055713326075, + 10.621974307027209 + ], + "5._96._0.075": [ + 2.209261920932471, + 2.555305549792771, + 2.8518815203815793, + 3.199904830892763, + 3.5215343812829234, + 3.9952719923023134, + 4.66186444813755, + 5.351993135595755, + 6.488295510404913, + 7.259472987067756, + 7.834204841495573, + 8.66345327529774, + 9.24755331352351, + 10.57717049982773, + 11.716213988672793, + 12.029679779226603, + 12.311388397526304, + 12.586192359395307, + 12.799629631929328, + 12.982255958122945, + 13.139662793793335, + 13.271490872531489, + 13.369871810100756, + 13.482278880094826, + 13.55907450090211, + 13.596771446779838, + 13.657804648035198 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "3_4": { + "2": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351635568339573, + 3.1868598735748215, + 3.5194290681832854, + 4.021215776573264, + 4.616239622033629, + 5.580527594948293, + 6.886757925331612, + 8.102402891324095, + 9.848969549339516, + 10.914023333414947, + 11.665845238209974, + 12.70405152754737, + 13.411636254581845, + 14.971285177128056, + 16.273870495274725, + 16.628617526580097, + 16.94656632737682, + 17.255789079639893, + 17.4953605991317, + 17.700017921596878, + 17.8761581852407, + 18.02350888512317, + 18.13338184361064, + 18.258872539998166, + 18.34452835340044, + 18.38653511656617, + 18.454486098620468 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615424, + 1.481384749141307, + 1.8198213217004346, + 2.111467924224727, + 2.4511928330881467, + 2.7884188390440294, + 3.0449438060522946, + 3.3868265705450313, + 3.6139171948981765, + 3.797008023792123, + 4.097421273811351, + 4.343420562160816, + 5.06067735236564, + 5.921512662885295, + 6.2096823959292475, + 6.491585746037957, + 6.788627405753115, + 7.035854456882252, + 7.2585781577537105, + 7.459736933149296, + 7.634937673400807, + 7.7693448917186, + 7.9266638395361575, + 8.036358297073287, + 8.090960297672977, + 8.180339759630305 + ], + "5._384._0.0875": [ + 3.488823180241217, + 4.015491627743904, + 4.644049804566187, + 5.664887785374351, + 6.828078586331115, + 8.495972601782967, + 10.40061790092734, + 11.942248115479982, + 13.937715725979558, + 15.079771443806013, + 15.864687169096046, + 16.928355427067483, + 17.64445063363839, + 19.2094088997771, + 20.510983319015434, + 20.8648924298736, + 21.18250382474677, + 21.491528964823722, + 21.731188221946866, + 21.935920431091155, + 22.11226212755728, + 22.25989607984245, + 22.36997954530051, + 22.495787152267788, + 22.58162318422042, + 22.62368864843897, + 22.691678975213264 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125447, + 2.162243131656476, + 2.506080868699681, + 2.8001338633225847, + 3.1431647257211064, + 3.510469433833876, + 3.854662132773821, + 4.445721725047285, + 4.893415321844213, + 5.262063562931771, + 5.857431077176044, + 6.32570919204886, + 7.552126277602157, + 8.76742460372293, + 9.12457279066319, + 9.453324000199377, + 9.780401879257456, + 10.0385536408539, + 10.261605909086278, + 10.45546077978633, + 10.618775396056128, + 10.741029642541099, + 10.88089904623256, + 10.97663676170107, + 11.023727684922786, + 11.100081773956372 + ], + "5._96._0.075": [ + 2.2092619209324718, + 2.555305550299043, + 2.8518822508487425, + 3.199985852185907, + 3.5222706691873875, + 3.9979722527360244, + 4.666548991876653, + 5.360575959217437, + 6.524154888194886, + 7.335118528132172, + 7.9509318116016505, + 8.854766208963815, + 9.50103701453585, + 10.99371369513925, + 12.287660294371463, + 12.645293059709312, + 12.966761598429807, + 13.280407476715753, + 13.523883308480196, + 13.732208640752027, + 13.911643648215778, + 14.061807567222088, + 14.17384824876507, + 14.301777590719725, + 14.389179865712343, + 14.43209691027277, + 14.501625885881069 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 10.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835164726499315, + 3.1869511904253844, + 3.520129819831777, + 4.024256961679788, + 4.629858717255186, + 5.648051992538193, + 7.08547570178617, + 8.452315749499057, + 10.433448692094192, + 11.644470751378343, + 12.499298574531974, + 13.678710219767217, + 14.481733250158136, + 16.247551183295478, + 17.718230806950928, + 18.118256572514444, + 18.476444828956904, + 18.824545824258124, + 19.093993560187933, + 19.324118207719224, + 19.522063456725174, + 19.68757222773616, + 19.810975387432244, + 19.95188484610551, + 20.048074698996366, + 20.095257762736964, + 20.1716158070638 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615426, + 1.4813847491413072, + 1.8198213217004342, + 2.1114679242247267, + 2.451192833107242, + 2.7884191082784517, + 3.044960290786688, + 3.387173702734947, + 3.614900226285844, + 3.7987419510265603, + 4.101475091242637, + 4.35167815109667, + 5.101635349720609, + 6.040855465868692, + 6.361709221219803, + 6.677622439243028, + 7.011983809339578, + 7.291041171739627, + 7.542739170676823, + 7.770121576039311, + 7.96804797895654, + 8.119729000978506, + 8.29691882694332, + 8.420244452163404, + 8.481574325287443, + 8.581867423562938 + ], + "5._384._0.0875": [ + 3.4896895110389377, + 4.019193933286457, + 4.661230290795835, + 5.745245803570798, + 7.027551856685918, + 8.905955441235022, + 11.070206812379547, + 12.825689606638033, + 15.097220897548903, + 16.39617074503923, + 17.288242105512616, + 18.49574172345241, + 19.307956504952568, + 21.07981946949136, + 22.550776145291668, + 22.950430542179113, + 23.308900480500842, + 23.657522066231788, + 23.927737142188516, + 24.15855023232541, + 24.357290456117752, + 24.52362950007569, + 24.647660988315558, + 24.78939444803149, + 24.886108814198227, + 24.933514220975347, + 25.010161614654855 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125456, + 2.1622431316564765, + 2.506080868790454, + 2.8001341035433973, + 3.1432036182270733, + 3.5110342438515465, + 3.8564813903405875, + 4.454595052029148, + 4.918118600670651, + 5.308384713508876, + 5.953001712399312, + 6.469438265498537, + 7.844046133696996, + 9.218117427371904, + 9.622406933852037, + 9.994178106008798, + 10.36368562414281, + 10.654901329712077, + 10.90623858545078, + 11.124348955728625, + 11.307818890454374, + 11.445018857063635, + 11.601753264010817, + 11.708948220839979, + 11.761663583031304, + 11.84714285442662 + ], + "5._96._0.075": [ + 2.2092718103274045, + 2.5553235623104937, + 2.851913404497863, + 3.200104659902106, + 3.5229289437109417, + 4.000714782099825, + 4.681054276345045, + 5.411125656814106, + 6.685475931250212, + 7.596532845655835, + 8.295465778809493, + 9.328498025684635, + 10.070012324731001, + 11.787302919098854, + 13.274902049366501, + 13.685525901098016, + 14.05421038583564, + 14.413596369121933, + 14.692285876859039, + 14.930479312943792, + 15.135401160272473, + 15.306688528208682, + 15.434358421957747, + 15.579946835626505, + 15.679317300339774, + 15.728085714005035, + 15.80705905351386 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "4_4": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 15.0, + 5.0 + ], + [ + 15.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835165636239734, + 3.187022207622659, + 3.520662700126178, + 4.024811706360364, + 4.618246492085718, + 5.577602357189488, + 6.930593362977536, + 8.27013730911453, + 10.305799407868758, + 11.592006196271335, + 12.513529975375201, + 13.79808800355458, + 14.678979018204332, + 16.62480215658412, + 18.2488264768942, + 18.690716626034398, + 19.085984722477804, + 19.46983352268822, + 19.76659712159539, + 20.019967202996902, + 20.237708518807462, + 20.41961226179577, + 20.555207696500926, + 20.709951202677345, + 20.81558646499876, + 20.867416249016795, + 20.951344739626176 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961542, + 1.4813847491413072, + 1.8198213217004342, + 2.1114679242247276, + 2.451192833122094, + 2.7884193176830028, + 3.0449731122312995, + 3.3874426433772196, + 3.6156114031501847, + 3.7996703668647145, + 4.100882362106419, + 4.346224898925525, + 5.058431311244528, + 5.938205478332148, + 6.2454712872914175, + 6.553322425438452, + 6.885623183027443, + 7.168405190432672, + 7.427814593237117, + 7.66575546132917, + 7.875646469458194, + 8.038201801611946, + 8.229905687023377, + 8.364436565153676, + 8.43170041321568, + 8.542218918216287 + ], + "5._384._0.0875": [ + 3.490341452425285, + 4.019256693703507, + 4.645242475571041, + 5.663015696969794, + 6.870961396281224, + 8.722045952534526, + 10.968017694918828, + 12.850605315815251, + 15.333821659373363, + 16.76783249479386, + 17.755971993298417, + 19.095372128092308, + 19.99702132365333, + 21.961932120277055, + 23.590345099332236, + 24.032380773467327, + 24.428493817447, + 24.813430064076773, + 25.11149023696463, + 25.366028392849262, + 25.58505101682981, + 25.76825577351642, + 25.904849535939963, + 26.06088890444515, + 26.16737568079158, + 26.21958387181005, + 26.304039577016905 + ], + "5._48._0.075": [ + 1.5268463243731403, + 1.8679037053125447, + 2.1622431316564747, + 2.5060808688610523, + 2.800134290381807, + 3.1432338676191445, + 3.51146772321088, + 3.8574550748275773, + 4.448646633722987, + 4.892881358644619, + 5.259328855039348, + 5.860557995824219, + 6.346883434753211, + 7.687273576885126, + 9.101118153759293, + 9.529338705689813, + 9.927289641778144, + 10.326192135238777, + 10.642615140692383, + 10.916900159028845, + 11.15566961322875, + 11.356928805832112, + 11.507619363301462, + 11.67983744328869, + 11.797719211064464, + 11.855743645066019, + 11.949922092002977 + ], + "5._96._0.075": [ + 2.209271810327404, + 2.5553235626058273, + 2.8519138306223555, + 3.2001519249819794, + 3.523354932375397, + 4.001549412014162, + 4.669089316628495, + 5.359101946268944, + 6.552379489671893, + 7.429815477491777, + 8.121820314543074, + 9.173143912712952, + 9.946213029499233, + 11.781039134458084, + 13.403268695619028, + 13.854454372473098, + 14.260003929688882, + 14.655669234316463, + 14.962475413080817, + 15.224731293240202, + 15.450225154706388, + 15.638568709166531, + 15.778910465988814, + 15.938820677805234, + 16.047959625600665, + 16.1015379064994, + 16.188353466015815 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "3_5": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 10.0, + 10.0 + ], + [ + 10.0, + 15.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351663640324904, + 3.1870790324400735, + 3.521106948654561, + 4.027817004712404, + 4.639702914792701, + 5.689701897839143, + 7.230782415357917, + 8.75558382299333, + 11.04534208095427, + 12.480341222531724, + 13.504959222351479, + 14.929271926552433, + 15.90416568507156, + 18.052354448368966, + 19.84102393386483, + 20.327235221316858, + 20.761895731724405, + 21.183796554426188, + 21.50979223532669, + 21.788087698807278, + 22.02717090155069, + 22.22685011514924, + 22.37569660323061, + 22.54554863066446, + 22.66151184676179, + 22.71841874632137, + 22.810598479283108 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.1958031759615424, + 1.4813847491413064, + 1.8198213217004344, + 2.111467924224728, + 2.4511928331339754, + 2.7884194852066426, + 3.0449833694144575, + 3.387659363565028, + 3.6162575473325336, + 3.8010097195037105, + 4.105632061379055, + 4.358290331495015, + 5.126739920153362, + 6.123511711967509, + 6.474167991903697, + 6.824559479788833, + 7.200859154778787, + 7.51918464818536, + 7.8095967640619985, + 8.074594572877569, + 8.307247584849724, + 8.486753152771184, + 8.697580121703579, + 8.845046400408721, + 8.918645101319749, + 9.039379340040094 + ], + "5._384._0.0875": [ + 3.4909018152157616, + 4.023297059681693, + 4.673051152210945, + 5.795451136308289, + 7.172990691082887, + 9.27752412726072, + 11.799413284844766, + 13.898070984778059, + 16.65542163277132, + 18.244596278442476, + 19.338696289586718, + 20.820234685526085, + 21.816848225257285, + 23.98610111341166, + 25.781787275544815, + 26.268999130971455, + 26.705469137801593, + 27.12951686995272, + 27.45775893894551, + 27.738063457318646, + 27.97921715827073, + 28.18090672411815, + 28.331287344632564, + 28.503073216115972, + 28.62031847221074, + 28.677808555516858, + 28.77082914464509 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125436, + 2.1622431316564765, + 2.506080868917536, + 2.800134439852536, + 3.1432580676862703, + 3.511823135144772, + 3.8588654894808214, + 4.4617389401300285, + 4.933850249217447, + 5.336702101199807, + 6.014768882401431, + 6.56981612520555, + 8.094628831272521, + 9.679052963838439, + 10.15497603436222, + 10.595511839800375, + 11.03584132783747, + 11.384157796199728, + 11.685603030677242, + 11.947529059178052, + 12.167948960854657, + 12.332828130807757, + 12.521023741928575, + 12.649751408274382, + 12.713101012338704, + 12.81593200056931 + ], + "5._96._0.075": [ + 2.209271810327403, + 2.5553235628420974, + 2.851914171521948, + 3.200189739673925, + 3.5237033987871773, + 4.0037986560526875, + 4.6909871677691255, + 5.4410229845215765, + 6.794282739628035, + 7.796138722634701, + 8.58200482025275, + 9.766864543211586, + 10.632303268710091, + 12.671167543550263, + 14.462326312183167, + 14.95921757641907, + 15.405288400514571, + 15.840049953956868, + 16.176793719534082, + 16.464510668512997, + 16.71171590552714, + 16.9180654486089, + 17.071794231061588, + 17.24689658823532, + 17.3664028454089, + 17.42507872180411, + 17.52018832485266 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/Open_configurations_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/Open_configurations_5m_v1.0.json new file mode 100644 index 0000000000..ad43563aa4 --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/Open_configurations_5m_v1.0.json @@ -0,0 +1,438 @@ +{ + "3_3": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 10.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 10.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 10.0 + ], + [ + 0.0, + 5.0 + ], + [ + 10.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835172923739841, + 3.1876250174550504, + 3.5266762742768005, + 4.062573520333148, + 4.738748111382591, + 5.899230472048001, + 7.507146569270119, + 8.9887805639096, + 11.075021642471887, + 12.32543119965508, + 13.200153917342963, + 14.399404024928955, + 15.212247066977739, + 16.993642548532073, + 18.474243154489557, + 18.876740616001914, + 19.23725390288878, + 19.587693810843824, + 19.859069812721, + 20.09087299248157, + 20.29033701563567, + 20.457177964830557, + 20.58159140701033, + 20.723695185812733, + 20.820705076731922, + 20.868287158440452, + 20.945276166056832 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615428, + 1.481384749141307, + 1.8198213217004344, + 2.1114679242247276, + 2.451192833240911, + 2.7884209935195257, + 3.0450771439551843, + 3.390053664197883, + 3.625097551783892, + 3.8196810869127296, + 4.149417820293751, + 4.428866511035236, + 5.282147815336435, + 6.337799706735208, + 6.690312410459378, + 7.032962569994954, + 7.390921014351625, + 7.686070670085695, + 7.949525709933702, + 8.185321736488111, + 8.388889855111131, + 8.543870120800028, + 8.723791926328296, + 8.848348061708858, + 8.910079460676386, + 9.01072789478447 + ], + "5._384._0.0875": [ + 3.4982581113162494, + 4.06512999294392, + 4.785673515255317, + 6.020960467502278, + 7.453715465747411, + 9.483922196132019, + 11.7506975693533, + 13.554037356141706, + 15.86079806366571, + 17.171938707660154, + 18.070390961707737, + 19.285131260472827, + 20.10163281612467, + 21.883024774974903, + 23.362625858633812, + 23.764754713612493, + 24.125588044401724, + 24.47662174823886, + 24.748825321642325, + 24.981365139913652, + 25.181653160603197, + 25.349334967787556, + 25.474376941071963, + 25.61728990580349, + 25.714808590647113, + 25.762604415182427, + 25.839868648003 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125456, + 2.1622431316564765, + 2.5060808694258587, + 2.800135785563308, + 3.143483000099373, + 3.5160979647842856, + 3.8785304918502423, + 4.537824916091951, + 5.064126234484706, + 5.509244802949968, + 6.239193858397087, + 6.815376669195569, + 8.308702765105174, + 9.750980846123925, + 10.167929617029431, + 10.548795317119502, + 10.925325370673912, + 11.220831819657937, + 11.475134296835684, + 11.695320633049596, + 11.880235770028115, + 12.018376464420529, + 12.176081131856115, + 12.283867438575376, + 12.33684462305628, + 12.42270852671529 + ], + "5._96._0.075": [ + 2.209271810327403, + 2.5553235649685013, + 2.8519172418862895, + 3.200546314114704, + 3.5278635615329472, + 4.032273186186682, + 4.79017412131366, + 5.622404082991505, + 7.057024475445821, + 8.05589545642321, + 8.808065780110283, + 9.90132526045556, + 10.674795465586877, + 12.439608731439382, + 13.948642344434687, + 14.363137292244204, + 14.734871788170292, + 15.096925834800645, + 15.377580363558257, + 15.617392285020719, + 15.823715932733156, + 15.99620505325167, + 16.12478148541285, + 16.27144867059056, + 16.371559599411892, + 16.420686739244598, + 16.500226266848518 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "3_4": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 15.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 15.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 15.0 + ], + [ + 0.0, + 5.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 10.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351729218286943, + 3.1876180928288775, + 3.526341223983386, + 4.058136460429089, + 4.723796571490863, + 5.882001293379037, + 7.567815808524175, + 9.205719752947793, + 11.614460804331705, + 13.098771059708497, + 14.149353882098195, + 15.600181350480975, + 16.58825991372467, + 18.756586493429555, + 20.557051768448197, + 21.046058035272516, + 21.483301357183464, + 21.907770151968396, + 22.235868704227247, + 22.515989963669288, + 22.75672264695844, + 22.957847700371698, + 23.10779055573236, + 23.278939033725102, + 23.395792268575804, + 23.453132102487334, + 23.545995917606437 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961543, + 1.4813847491413061, + 1.8198213217004344, + 2.1114679242247276, + 2.451192833240912, + 2.788420993399505, + 3.045076851954058, + 3.3899630696528513, + 3.6244032864517, + 3.817675347036345, + 4.143341169059347, + 4.418256200344856, + 5.264549152497985, + 6.356693256737915, + 6.736213899951394, + 7.112488731615569, + 7.513052786788756, + 7.848935347194654, + 8.152826656325287, + 8.427935638442053, + 8.667657995867675, + 8.851421667018652, + 9.0658522449909, + 9.21495699756898, + 9.289092866864353, + 9.410292888034201 + ], + "5._384._0.0875": [ + 3.497752272301184, + 4.0595477291870266, + 4.768845444543897, + 6.007196057413258, + 7.513425415619092, + 9.769991925817497, + 12.411509024560182, + 14.57177014184268, + 17.376797996811998, + 18.982588199275245, + 20.08520024348314, + 21.576027159234805, + 22.577921475336638, + 24.758267440193467, + 26.563604656737198, + 27.053546205918725, + 27.492620943531588, + 27.919325066634627, + 28.24975820116258, + 28.531965805800176, + 28.77482685644166, + 28.97799869425728, + 29.129495282325408, + 29.302584340738044, + 29.4207187630176, + 29.478640641476183, + 29.572343507742822 + ], + "5._48._0.075": [ + 1.5268463243731425, + 1.8679037053125433, + 2.1622431316564765, + 2.5060808694258587, + 2.800135785468466, + 3.143481573173931, + 3.5158727005116153, + 3.8764149732552577, + 4.526419314930771, + 5.0455621857621376, + 5.489893874951987, + 6.235804220342747, + 6.841971449428507, + 8.481510305140135, + 10.143261278172627, + 10.634906554254599, + 11.087087111336059, + 11.536600513615973, + 11.890597962294285, + 12.195943348322809, + 12.46055632510651, + 12.682790353347995, + 12.848807809096153, + 13.038119522790163, + 13.167497525168343, + 13.231124630128225, + 13.334347980818151 + ], + "5._96._0.075": [ + 2.2092718103274014, + 2.5553235649685018, + 2.85191724143269, + 3.200543062810893, + 3.527649841190187, + 4.028832252092129, + 4.775220126986639, + 5.602269774542549, + 7.087170005954368, + 8.170888552088103, + 9.010894137306895, + 10.262154184817643, + 11.165444100361096, + 13.264570272043022, + 15.08392493735126, + 15.585852905533669, + 16.03573112323344, + 16.473712466474904, + 16.812742200533734, + 17.10229784107153, + 17.35105827444125, + 17.558717637610016, + 17.713426144082906, + 17.889685907654112, + 18.00998158617156, + 18.069037944354307, + 18.164745350416073 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/README.md b/HPXMLtoOpenStudio/resources/data/g_functions/README.md new file mode 100644 index 0000000000..471b7bfe53 --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/README.md @@ -0,0 +1,4 @@ +G-Function data obtained from G-Function Library for Modeling Vertical Bore Ground Heat Exchanger (https://gdr.openei.org/submissions/1325) +Specifically, the contents of https://gdr.openei.org/files/1325/g-function_library_1.0.zip + +JSON files generated by running `openstudio tasks.rb download_g_functions` diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/U_configurations_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/U_configurations_5m_v1.0.json new file mode 100644 index 0000000000..3bf70b3f3e --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/U_configurations_5m_v1.0.json @@ -0,0 +1,652 @@ +{ + "3_3": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 10.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351635568339257, + 3.18685987649175, + 3.5194341168753853, + 4.021964695453296, + 4.625373168858598, + 5.631213203703021, + 7.017734131113873, + 8.301128331626503, + 10.117778789699045, + 11.210610651605968, + 11.976583504775217, + 13.028692005585269, + 13.742865870882106, + 15.311494952074163, + 16.618169400815415, + 16.97370980694966, + 17.292351934429536, + 17.602231685890924, + 17.842328567513636, + 18.047436530328493, + 18.223984896573956, + 18.37169673522136, + 18.48184538753949, + 18.60766758338057, + 18.693552413788066, + 18.735670645551725, + 18.803797793376237 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615424, + 1.4813847491413068, + 1.8198213217004349, + 2.1114679242247276, + 2.4511928330881463, + 2.7884188390440285, + 3.0449438060593743, + 3.3868270121676423, + 3.6139397405790454, + 3.7971850654668238, + 4.098986094465467, + 4.3483461306850195, + 5.091563856634515, + 6.003348584673112, + 6.30869169255662, + 6.606373821842283, + 6.918310269197569, + 7.176309365099972, + 7.407231942536657, + 7.614477838086076, + 7.793880568509998, + 7.930774556315486, + 8.090147260210866, + 8.200733499237531, + 8.255609007591945, + 8.345178145421313 + ], + "5._384._0.0875": [ + 3.4888288086422636, + 4.016644434684756, + 4.656097350048851, + 5.724643914605977, + 6.959907389349164, + 8.718829385823275, + 10.692998326451791, + 12.268677784338763, + 14.289104442978177, + 15.439317116143096, + 16.228160365480026, + 17.295731529216958, + 18.01381604634192, + 19.582369160770195, + 20.886702784603084, + 21.241361732916218, + 21.559695690469532, + 21.869461495310855, + 22.109738789160463, + 22.315010727642687, + 22.4918421881964, + 22.639906318278147, + 22.75031584383327, + 22.876508470046037, + 22.962608610867996, + 23.004802522166397, + 23.072995900320393 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125447, + 2.162243131656477, + 2.506080868699679, + 2.800133863322582, + 3.14316472586218, + 3.5104718549266547, + 3.854845417542254, + 4.451018321828257, + 4.9116776892091, + 5.297016704953429, + 5.92640690466214, + 6.423636872828878, + 7.719212181270855, + 8.980633064022445, + 9.346857075629213, + 9.682185873929484, + 10.01431289649661, + 10.275472721434395, + 10.500494849414341, + 10.695612308471505, + 10.859690701170848, + 10.982362439165628, + 11.122558142675226, + 11.218429945956188, + 11.265557218538145, + 11.341930946657234 + ], + "5._96._0.075": [ + 2.2092619209324726, + 2.5553055502990443, + 2.8518822508487456, + 3.199985852874824, + 3.5222728206245484, + 3.9984334914448545, + 4.675890638522396, + 5.39760263087033, + 6.630658201542146, + 7.489891206956369, + 8.137933780063445, + 9.080671485080162, + 9.748385559930018, + 11.273174243711193, + 12.580380605681452, + 12.94004337232528, + 13.262876866410474, + 13.577523541572688, + 13.821599056356835, + 14.03034643518104, + 14.210092929480233, + 14.360493279700068, + 14.472700352633987, + 14.600821880462636, + 14.688349595590935, + 14.731324538344243, + 14.800941414503159 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "3_4": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 10.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 10.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 10.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351656362397346, + 3.187022214893212, + 3.5206743638628253, + 4.026427905114574, + 4.637320591731864, + 5.681918628105052, + 7.195928057608821, + 8.667652969634455, + 10.835407948040471, + 12.173138766581673, + 13.120915089648696, + 14.431210692905506, + 15.32441495151209, + 17.287810340267843, + 18.92100406274033, + 19.36491546608123, + 19.762051084570384, + 20.14774393784635, + 20.446021621766313, + 20.70070964136172, + 20.919651129829102, + 21.10261640407018, + 21.239021363100157, + 21.394731378971578, + 21.501033093974097, + 21.55318740963753, + 21.637628767055283 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.1958031759615426, + 1.4813847491413075, + 1.8198213217004344, + 2.1114679242247276, + 2.4511928331220942, + 2.7884193176830023, + 3.0449731122488464, + 3.387443671191268, + 3.615661212012367, + 3.8000503693535084, + 4.104157202838956, + 4.3564421006886835, + 5.12205707751613, + 6.104951371039292, + 6.44663997467484, + 6.785677489291669, + 7.147043279593926, + 7.450449873105472, + 7.72536208586995, + 7.9746178510857, + 8.192173659856735, + 8.359201726136606, + 8.554505711034814, + 8.690545155519855, + 8.758244872089582, + 8.86901206321486 + ], + "5._384._0.0875": [ + 3.4903666059690193, + 4.021766894917602, + 4.670398135472845, + 5.7858767306232455, + 7.138255086355538, + 9.165208843721064, + 11.541605088064461, + 13.487376794462662, + 16.01692584673723, + 17.46632247540876, + 18.46211624061258, + 19.809514025003864, + 20.715510950887428, + 22.689183383189555, + 24.32504204672725, + 24.76917571645905, + 25.167308660359872, + 25.55431552973275, + 25.85409607638312, + 26.110133317947092, + 26.330508557731093, + 26.514893981081084, + 26.652379210936996, + 26.809464413649263, + 26.916666300063365, + 26.96922193140446, + 27.054226470748603 + ], + "5._48._0.075": [ + 1.526846324373141, + 1.8679037053125445, + 2.1622431316564743, + 2.506080868861053, + 2.8001342903818096, + 3.1432338679800567, + 3.511473348344167, + 3.857857357850316, + 4.459751399181277, + 4.930712321489866, + 5.331458857871278, + 6.002224412369841, + 6.547004846721877, + 8.022439927539539, + 9.523152750203892, + 9.968067991414452, + 10.377948331831622, + 10.785910363406488, + 11.107625004661793, + 11.385384317551138, + 11.626367553184364, + 11.828974735668204, + 11.980430894483764, + 12.15329893349065, + 12.271491966315514, + 12.32962269051676, + 12.423914404212331 + ], + "5._96._0.075": [ + 2.2092718103274023, + 2.5553235626058304, + 2.851913830622354, + 3.2001519267074148, + 3.5233599382868084, + 4.0025506810653315, + 4.688607687930476, + 5.435519397369632, + 6.769739711868008, + 7.7434072909032166, + 8.498819340733252, + 9.62539332023139, + 10.439696691725628, + 12.336240074219319, + 13.984730545681584, + 14.440147371236217, + 14.848759407552247, + 15.246859877582565, + 15.555285881043151, + 15.818798499910445, + 16.045319491784436, + 16.234511881534367, + 16.37548515821274, + 16.536146203601948, + 16.64579587223455, + 16.69961871800177, + 16.78681672438808 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + }, + "4_4": { + "1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 15.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 15.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 15.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351663640324887, + 3.1870790258551014, + 3.5210961279932578, + 4.026258003624487, + 4.620874215132077, + 5.586704760859376, + 6.975975240133478, + 8.385515378636665, + 10.572004132104373, + 11.970612978165319, + 12.977584396047362, + 14.385269064815402, + 15.352257347698204, + 17.488292201888967, + 19.26916115727457, + 19.75338533767014, + 20.18611186851185, + 20.606034675672227, + 20.930371875826708, + 21.20720898473744, + 21.444958809834272, + 21.643459009031766, + 21.791407096906152, + 21.960191851340355, + 22.075419755393312, + 22.131968272416074, + 22.22358119190958 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961543, + 1.4813847491413061, + 1.8198213217004344, + 2.1114679242247276, + 2.4511928331339754, + 2.788419485206642, + 3.044983369398642, + 3.387658420844403, + 3.61621087467806, + 3.800647721718858, + 4.102447078162199, + 4.3482454201841785, + 5.063761085434357, + 5.961844910337476, + 6.281053980373686, + 6.603822067448765, + 6.95537175531292, + 7.256945499031273, + 7.535358466093733, + 7.792070377777192, + 8.019450760285471, + 8.19605530658293, + 8.404727988051604, + 8.551378686479197, + 8.624779509112326, + 8.745473319995293 + ], + "5._384._0.0875": [ + 3.490878423401478, + 4.020865767973589, + 4.648176032065668, + 5.674399499861875, + 6.916132435192409, + 8.869255322450169, + 11.291850797714199, + 13.34706889292032, + 16.074575342864755, + 17.653878358549843, + 18.74281157645554, + 20.218463293681307, + 21.211546808244698, + 23.372625740632863, + 25.160615694186212, + 25.645589407971297, + 26.07990639815786, + 26.50174629776772, + 26.828160051242154, + 27.10687395162787, + 27.34659864893684, + 27.547046683084734, + 27.69649241841502, + 27.867186693474277, + 27.983687149119135, + 28.040815557314513, + 28.133264868112562 + ], + "5._48._0.075": [ + 1.5268463243731425, + 1.8679037053125433, + 2.1622431316564765, + 2.5060808689175333, + 2.8001344398525356, + 3.143258067360416, + 3.511817936616393, + 3.8584823063559384, + 4.450820115805174, + 4.896372927658499, + 5.265314109663766, + 5.875866438354276, + 6.375812833672173, + 7.781652584834328, + 9.298539449880645, + 9.762692744890986, + 10.195323728092962, + 10.629929896539666, + 10.975093504823272, + 11.274487256102537, + 11.535122656382152, + 11.754735236467663, + 11.919110587980263, + 12.106800684140174, + 12.235228520520732, + 12.298450749380303, + 12.401097139217644 + ], + "5._96._0.075": [ + 2.2092718103274023, + 2.555323562842096, + 2.85191417152195, + 3.2001897381139504, + 3.523698775742411, + 4.002837144576757, + 4.67171432905596, + 5.3653840526168555, + 6.583808098627554, + 7.498820819534223, + 8.230410547630026, + 9.35496261489984, + 10.189524424276817, + 12.186066303279896, + 13.960309446498885, + 14.454460899435773, + 14.898355927882445, + 15.331231711411391, + 15.666581859040832, + 15.953119427418569, + 16.199278410806752, + 16.40470718918719, + 16.557725016433995, + 16.731959681699756, + 16.850860777538816, + 16.9092413045836, + 17.00388218199376 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/rectangle_5m_v1.0.json b/HPXMLtoOpenStudio/resources/data/g_functions/rectangle_5m_v1.0.json new file mode 100644 index 0000000000..0c946ad00a --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/rectangle_5m_v1.0.json @@ -0,0 +1,2362 @@ +{ + "1_1": { + "bore_locations": [ + [ + 0.0, + 0.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351073750512206, + 3.1823384107431814, + 3.4793637721846546, + 3.824573927006054, + 4.118647691662306, + 4.458400737085891, + 4.792718667957521, + 5.043858479635356, + 5.358092050434088, + 5.5355352342420865, + 5.657280511508424, + 5.823127767908944, + 5.935296673791435, + 6.184188566144762, + 6.394899237912037, + 6.452659649124039, + 6.504837967338363, + 6.555882962526782, + 6.595740529929901, + 6.629855890066947, + 6.659374458008115, + 6.6841912736839175, + 6.702715960784362, + 6.723940913730224, + 6.738419656523404, + 6.745505802594398, + 6.756923301483297 + ], + "5._24._0.075": [ + 0.8740013793970964, + 1.1957934696806853, + 1.4813667488882374, + 1.819785366250676, + 2.1114044341807157, + 2.4510705243173234, + 2.788172449969529, + 3.043766216479798, + 3.367648957124977, + 3.5529468669966184, + 3.6812317987017793, + 3.8577729942466825, + 3.9783087636126115, + 4.249839434546521, + 4.484896812486125, + 4.550531113648316, + 4.610498478973528, + 4.669925364880608, + 4.7169884176525265, + 4.757794463311071, + 4.79358938564191, + 4.824095583714668, + 4.847141281098875, + 4.873886212327691, + 4.892373493826127, + 4.901508590660965, + 4.916370972434553 + ], + "5._384._0.0875": [ + 3.4377130144496473, + 3.7851129770524614, + 4.081944782750689, + 4.426491052002913, + 4.719576776545431, + 5.05759766005992, + 5.389547166170523, + 5.638545684094339, + 5.949746729555762, + 6.125412791692034, + 6.245932309635744, + 6.410082282013473, + 6.521104827150453, + 6.767431758419025, + 6.975877700758803, + 7.032964876011526, + 7.084510058414974, + 7.134900046460179, + 7.174216611280294, + 7.20784291192623, + 7.236916314764957, + 7.261340556065468, + 7.279558973754362, + 7.300418050625726, + 7.314635170344563, + 7.321589087814549, + 7.332789695599486 + ], + "5._48._0.075": [ + 1.5268359332879171, + 1.8678839385147372, + 2.1622087383456443, + 2.5060151061486278, + 2.800008762930101, + 3.141052950242086, + 3.478569670482136, + 3.733728785210966, + 4.055393091733762, + 4.238198333802362, + 4.3640995014474875, + 4.536313895807349, + 4.653173343629686, + 4.913843730424326, + 5.136271399232289, + 5.197697126476675, + 5.253436138896508, + 5.308256451702502, + 5.35131183428999, + 5.388362735652557, + 5.420602444996999, + 5.447858465927416, + 5.468304707059304, + 5.491852956053471, + 5.508005424847672, + 5.515942866950888, + 5.528784897513571 + ], + "5._96._0.075": [ + 2.209261920932467, + 2.5553055320732176, + 2.8518559449593543, + 3.1970040944822196, + 3.4915091924922974, + 3.832473850523141, + 4.168884219552001, + 4.422257845646842, + 4.74019836732957, + 4.920109053653755, + 5.043677712332421, + 5.212203964230534, + 5.32627049369432, + 5.579703803141708, + 5.794707343360083, + 5.853779385225841, + 5.907214127091892, + 5.959576040253434, + 6.0005363693633, + 6.035655289979041, + 6.066095737331607, + 6.091732022192163, + 6.110898235869238, + 6.13289344537047, + 6.147924068180829, + 6.1552900049824855, + 6.167174340112673 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "1_2": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835140144617679, + 3.1849643917020174, + 3.502165426925441, + 3.9301922546307075, + 4.362516256614647, + 4.930474121911802, + 5.538533506350954, + 6.014628289895621, + 6.622810334317273, + 6.969487915354439, + 7.207956408149328, + 7.5328400096669235, + 7.75247268244368, + 8.238002774495671, + 8.64704570804324, + 8.758946823716846, + 8.859835704138877, + 8.958391369204966, + 9.035204266339816, + 9.100920292313864, + 9.157710284461414, + 9.20539775508919, + 9.240984185845074, + 9.281724082545848, + 9.309518333012262, + 9.323128053749246, + 9.345076672378271 + ], + "5._24._0.075": [ + 0.8740013793970967, + 1.1957934696806858, + 1.4813667488882372, + 1.8197853662506762, + 2.1114044341807157, + 2.451070524851898, + 2.7881799871003565, + 3.044230462293286, + 3.3782486192021772, + 3.5866413599987026, + 3.74411106062757, + 3.9824685850393973, + 4.160322393737606, + 4.602146633625265, + 5.020983171670913, + 5.142411578682097, + 5.254586545541572, + 5.366786238317462, + 5.456237065826286, + 5.534186703990583, + 5.602785747046791, + 5.6613702351166975, + 5.70569649489467, + 5.757148217666041, + 5.792742473532685, + 5.810347556509697, + 5.839015563099657 + ], + "5._384._0.0875": [ + 3.466682955321226, + 3.9075976085194033, + 4.352889851862578, + 4.936605526584581, + 5.471776533129856, + 6.114911758424402, + 6.760965495692346, + 7.250135480426092, + 7.863263609642247, + 8.209452006454356, + 8.446764914353068, + 8.769298847382146, + 8.987050619959732, + 9.468043860391814, + 9.873074716597168, + 9.983788485375486, + 10.083594630400668, + 10.181047397631279, + 10.256969131093063, + 10.321883348146676, + 10.377954447427506, + 10.425017066023733, + 10.460117564935974, + 10.500283849242233, + 10.527666961819111, + 10.541067428758854, + 10.562670309595733 + ], + "5._48._0.075": [ + 1.5268359332879171, + 1.8678839385147372, + 2.162208738345644, + 2.506015108690003, + 2.800015488967817, + 3.142155865119192, + 3.4965449323272013, + 3.799865787506381, + 4.2507898166056, + 4.541446697892453, + 4.753927656129075, + 5.057673450312983, + 5.270631610442865, + 5.758786283451121, + 6.183706938120382, + 6.301893218645891, + 6.4091683251290315, + 6.514727559207145, + 6.597585833820916, + 6.668904620538769, + 6.7309060054309935, + 6.783262307486161, + 6.822521074175333, + 6.867673225089816, + 6.898636895106161, + 6.913858452525283, + 6.93850302308843 + ], + "5._96._0.075": [ + 2.209261920932469, + 2.555305542704949, + 2.8518712893055422, + 3.1987380359893054, + 3.50909251084119, + 3.9222326952815756, + 4.412264545566231, + 4.831434304741051, + 5.400936800325458, + 5.7374752125758075, + 5.972497848894372, + 6.296305409402205, + 6.516924423640519, + 7.008216169558008, + 7.424709235540797, + 7.539067708903202, + 7.6423144310817825, + 7.743353070829632, + 7.822238931842795, + 7.889838497084045, + 7.948346853021645, + 7.997549271904297, + 8.03431587002969, + 8.076458437227618, + 8.105253962886398, + 8.119371531258903, + 8.142168594180948 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "1_3": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351510677223124, + 3.185839705255709, + 3.509771540026878, + 3.966330673031906, + 4.453898436646452, + 5.141063225581686, + 5.935299849182006, + 6.591064822401665, + 7.4573397084792585, + 7.960204506246263, + 8.308428386398862, + 8.784434241747197, + 9.106869195173443, + 9.819004468262776, + 10.417553200063558, + 10.581112939206577, + 10.728355197827176, + 10.872032730663653, + 10.983845567697387, + 11.079470322916373, + 11.162021309221977, + 11.23127300322087, + 11.282940091757375, + 11.342050731061262, + 11.382382337920458, + 11.402138935562201, + 11.434024927322461 + ], + "5._24._0.075": [ + 0.8740013793970963, + 1.1957934696806856, + 1.4813667488882378, + 1.819785366250676, + 2.1114044341807157, + 2.4510705250300893, + 2.788182499477228, + 3.0443852106901215, + 3.381782256847064, + 3.5979049641354917, + 3.7653169707122243, + 4.025976647688318, + 4.226681022892984, + 4.7519775047763355, + 5.289276786959019, + 5.452176058421596, + 5.605172805309302, + 5.760500989302295, + 5.885820943128873, + 5.9960544830599956, + 6.093756080482953, + 6.177649611559798, + 6.241387660406869, + 6.315575367344118, + 6.367049048904869, + 6.3925661935266564, + 6.434203924751947 + ], + "5._384._0.0875": [ + 3.4763066788959396, + 3.949772974187067, + 4.456260341450167, + 5.169408748681231, + 5.871115554030923, + 6.760870364124674, + 7.687802150819135, + 8.402209462252888, + 9.30497492062296, + 9.81638347479816, + 10.167150006594197, + 10.64346476548816, + 10.964771566054742, + 11.672408151280557, + 12.266242640000142, + 12.42833604434291, + 12.574279870681229, + 12.716647611846046, + 12.827426487106704, + 12.92212131446228, + 13.003853316799084, + 13.072405876226359, + 13.123529770395518, + 13.182008691940712, + 13.22188408446242, + 13.241405445087377, + 13.272897556367255 + ], + "5._48._0.075": [ + 1.5268359332879173, + 1.867883938514737, + 2.1622087383456456, + 2.5060151095371266, + 2.8000177309803878, + 3.1425235015701425, + 3.50253927551839, + 3.8221513912839025, + 4.3219203208202615, + 4.662094623549054, + 4.920779665355623, + 5.305197220055999, + 5.584574633595157, + 6.250240097046942, + 6.8508100598561175, + 7.02032416411666, + 7.174704624548563, + 7.3270420254642925, + 7.446781361568329, + 7.54998768102832, + 7.639728763200551, + 7.715491511685074, + 7.772309526957078, + 7.837607291416172, + 7.882394856115053, + 7.904425286274421, + 7.940124399290625 + ], + "5._96._0.075": [ + 2.2092619209324704, + 2.5553055462488583, + 2.8518764040875877, + 3.1993160118959567, + 3.514955741603026, + 3.9527389763946745, + 4.503681602688366, + 5.006861923779691, + 5.738944199243816, + 6.194547647991565, + 6.520747151603693, + 6.97831807732745, + 7.294240982610546, + 8.004586646061995, + 8.61032697321235, + 8.776955960336549, + 8.927246070742218, + 9.074228802677638, + 9.188836957686432, + 9.287022505975273, + 9.37190962826258, + 9.4432139118431, + 9.496477965097244, + 9.557471885031982, + 9.599147261960589, + 9.619587423820962, + 9.652619821039247 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "2_2": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351729237398393, + 3.187625001099388, + 3.526650044183149, + 4.058948328555595, + 4.695595826630846, + 5.645955947827803, + 6.75199902668803, + 7.654056125477437, + 8.8295373343034, + 9.505225082070822, + 9.970821690581543, + 10.604517453302051, + 11.032316935322866, + 11.972865896385606, + 12.759872798830232, + 12.974553793259052, + 13.167610267540615, + 13.355840260878113, + 13.502187407405124, + 13.627318928756589, + 13.735282746334141, + 13.825809741457272, + 13.893347166070974, + 13.970596790045226, + 14.023313509428306, + 14.049144330457892, + 14.090854715886588 + ], + "5._24._0.075": [ + 0.8740013793970963, + 1.1957934696806856, + 1.4813667488882372, + 1.8197853662506762, + 2.1114044341807157, + 2.4510705253864713, + 2.788187524831072, + 3.044696167323624, + 3.389301466509918, + 3.6238334445562486, + 3.8172234620513863, + 4.139359785435122, + 4.401879357678648, + 5.121352318381859, + 5.866280620300906, + 6.090065304640391, + 6.298807049848143, + 6.509232545774595, + 6.6778214753752865, + 6.825248855115401, + 6.955178640279667, + 7.066160722878991, + 7.150130631281159, + 7.247402603037865, + 7.314637831281445, + 7.347899492449007, + 7.402074061153792 + ], + "5._384._0.0875": [ + 3.498202657558257, + 4.059507710829742, + 4.728549908300283, + 5.718298478054254, + 6.695598384635395, + 7.918919559501185, + 9.175209287898596, + 10.134696989496492, + 11.3395882766406, + 12.019506670062515, + 12.48495026821673, + 13.115725677557018, + 13.540591400366639, + 14.474053667337763, + 15.255546352872228, + 15.468670821792806, + 15.660444883601343, + 15.847432011925115, + 15.992846228666961, + 16.117138946341278, + 16.22438283629357, + 16.31430880283502, + 16.381374505740233, + 16.45808138679694, + 16.51039562508549, + 16.536012812409567, + 16.577355525545745 + ], + "5._48._0.075": [ + 1.5268359332879173, + 1.8678839385147374, + 2.1622087383456443, + 2.506015111231376, + 2.800022215479672, + 3.143265912621415, + 3.5156496031342086, + 3.876810167448651, + 4.510598902563926, + 4.97292547403106, + 5.3314780742753, + 5.86690818888861, + 6.254410228495219, + 7.165237276197894, + 7.97067816717318, + 8.195759462193532, + 8.399726151723728, + 8.600223537255848, + 8.757233427901257, + 8.892268671966473, + 9.009391745097531, + 9.108052422862833, + 9.181950800737681, + 9.266735500969588, + 9.324840376214043, + 9.353415812152894, + 9.399728543565555 + ], + "5._96._0.075": [ + 2.209261920932471, + 2.555305553336681, + 2.8518866359196213, + 3.2004882339226746, + 3.5277476508021492, + 4.02978044724101, + 4.745286216946609, + 5.439130433328325, + 6.459200418166225, + 7.08807746324128, + 7.534287055485237, + 8.154677466719678, + 8.57963145524655, + 9.525731186489454, + 10.324498118789299, + 10.543323487480553, + 10.740258694731052, + 10.932543867544993, + 11.082214965494755, + 11.210350854440943, + 11.321010221886622, + 11.413873719757635, + 11.483221068226714, + 11.562584991721117, + 11.616811000251728, + 11.64341307682708, + 11.68642648116794 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "1_5": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 20.0, + 0.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351598062666232, + 3.186539970868435, + 3.5158597860966205, + 3.9954013132700497, + 4.528420506228125, + 5.3215759636561835, + 6.31279536227868, + 7.197643286509492, + 8.449802285616565, + 9.21208449967516, + 9.751349000396456, + 10.498844387141098, + 11.01019344790078, + 12.144898313237372, + 13.099625948047745, + 13.360473668577686, + 13.594785319219229, + 13.823057700360815, + 14.00027547815332, + 14.151752764767862, + 14.282290873883106, + 14.39161564155346, + 14.47315005172904, + 14.566327283043137, + 14.629913935163467, + 14.661082947670087, + 14.7114545821795 + ], + "5._24._0.075": [ + 0.8740013793970968, + 1.195793469680686, + 1.4813667488882376, + 1.8197853662506758, + 2.111404434180715, + 2.451070525172641, + 2.7881845093787754, + 3.0445090095690146, + 3.384609546576235, + 3.60692258803915, + 3.782313721304198, + 4.060991129105417, + 4.280408476405369, + 4.878001605922317, + 5.534874882442655, + 5.745943502422536, + 5.949666959848923, + 6.162379721752643, + 6.338479744874569, + 6.49689031949909, + 6.64004768398907, + 6.76506132893069, + 6.861365674024911, + 6.974792013370061, + 7.054411305581753, + 7.094208003200405, + 7.159645254280049 + ], + "5._384._0.0875": [ + 3.484045428228503, + 3.983803041186735, + 4.5409283279405095, + 5.371119867045962, + 6.250610707585901, + 7.460822088981469, + 8.822064064479669, + 9.923056162452188, + 11.35373942918458, + 12.175784657247368, + 12.742211991048363, + 13.512226599200405, + 14.031877063359648, + 15.172488335257922, + 16.125332896405297, + 16.38489296263954, + 16.618121258210458, + 16.84527448121368, + 17.021659665212646, + 17.17237123947259, + 17.30227791766592, + 17.41110415604465, + 17.492249758034, + 17.585007675061036, + 17.64827611166057, + 17.67926884036746, + 17.72932432908714 + ], + "5._48._0.075": [ + 1.5268463243731423, + 1.8679037053125438, + 2.1622431316564774, + 2.506080868409208, + 2.800133094236608, + 3.1430345625688068, + 3.5077674641030474, + 3.8408116625904216, + 4.381586671332468, + 4.765025811641742, + 5.0664282724592455, + 5.532471379825891, + 5.886390053018073, + 6.785527080084026, + 7.663765491037, + 7.921985185406946, + 8.160457294662926, + 8.39852958441645, + 8.587237147922867, + 8.750825350971988, + 8.893568538257197, + 9.014297504376565, + 9.104922018464343, + 9.208990335965863, + 9.280380743302517, + 9.315523178898712, + 9.372516058367696 + ], + "5._96._0.075": [ + 2.209261920932471, + 2.5553055490839878, + 2.8518804959132367, + 3.199778397146007, + 3.519648020844696, + 3.977249406611028, + 4.578267520113382, + 5.154848731697201, + 6.051483672644926, + 6.64903109207958, + 7.095749573899366, + 7.746739141717749, + 8.21143309928475, + 9.290062728168119, + 10.234593250466354, + 10.497074014542322, + 10.733965995209655, + 10.965795245194869, + 11.1463870323713, + 11.301144547056056, + 11.434763905850694, + 11.546829250128546, + 11.630513785636808, + 11.726204400187711, + 11.791598239536073, + 11.82369792476395, + 11.875650777827616 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "2_3": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ], + [ + 5.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351838500296616, + 3.1885118572313673, + 3.534817814223326, + 4.1030737424674095, + 4.821317420742483, + 5.969919191578708, + 7.41028413925126, + 8.648650678142598, + 10.318019242462421, + 11.295421939311396, + 11.97337743517005, + 12.898811056559623, + 13.524508345420257, + 14.897437624552998, + 16.042123430945267, + 16.35383097791215, + 16.633592896224254, + 16.90595883307184, + 17.117309952985618, + 17.297937101829362, + 17.45358097851654, + 17.58393310527604, + 17.6811611636915, + 17.79229429280022, + 17.868148885395772, + 17.905336255686425, + 17.965445068310917 + ], + "5._24._0.075": [ + 0.8740059532267962, + 1.1958031759615424, + 1.4813847491413075, + 1.8198213217004349, + 2.111467924224728, + 2.4511928334191357, + 2.788423506974107, + 3.0452324610064143, + 3.3937398837242934, + 3.637437610795647, + 3.843546410724326, + 4.197128320327028, + 4.494757418969375, + 5.356757547871304, + 6.322806150411278, + 6.626738081951607, + 6.915404542282874, + 7.21101958981349, + 7.450860982652266, + 7.66246734371669, + 7.850165882224263, + 8.011164200847652, + 8.133224321258036, + 8.274627098240014, + 8.37233003387617, + 8.420668855356707, + 8.49937572606141 + ], + "5._384._0.0875": [ + 3.508669460749622, + 4.111915670923915, + 4.873040032123389, + 6.080558225789574, + 7.357967553781383, + 9.04485058828995, + 10.84277364416776, + 12.241098615273712, + 14.011222366677718, + 15.01309719121016, + 15.699134890832847, + 16.62764066517033, + 17.252332732919882, + 18.619928993318393, + 19.76028670279949, + 20.070751033016197, + 20.34972432420409, + 20.621432400545174, + 20.832432856467467, + 21.012738747514504, + 21.168177723656544, + 21.298415605446706, + 21.395540979639048, + 21.50658808640696, + 21.58234324516048, + 21.619456039757466, + 21.679401052203215 + ], + "5._48._0.075": [ + 1.5268463243731434, + 1.8679037053125456, + 2.162243131656478, + 2.5060808702730704, + 2.8001380280984436, + 3.1438531258067117, + 3.5224600129449035, + 3.9035943923639613, + 4.608135080323152, + 5.1510836559379705, + 5.589462884077594, + 6.27130271990618, + 6.783963554912862, + 8.04316830464235, + 9.202414931053042, + 9.53127928011967, + 9.83044491677738, + 10.125260643940114, + 10.356342764412293, + 10.555043007864295, + 10.727181907122153, + 10.87191268601469, + 10.980113122105404, + 11.103877010708246, + 11.188516611811483, + 11.230104665601413, + 11.297459077760191 + ], + "5._96._0.075": [ + 2.2092619209324718, + 2.555305556880593, + 2.8518917514576345, + 3.201071628572207, + 3.5339683812307245, + 4.066374782143852, + 4.871306856588727, + 5.703345918840731, + 7.011014828442001, + 7.859290682278471, + 8.476335068125367, + 9.349652040268383, + 9.955723894960455, + 11.316721448596432, + 12.4702954875727, + 12.786558094229333, + 13.070633086294775, + 13.347621860741711, + 13.562753164373564, + 13.746815702553597, + 13.905500700816589, + 14.038445223288367, + 14.137675478115584, + 14.251099311683415, + 14.328597138129837, + 14.366636071121864, + 14.428211518355958 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "1_7": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 5.0, + 0.0 + ], + [ + 10.0, + 0.0 + ], + [ + 15.0, + 0.0 + ], + [ + 20.0, + 0.0 + ], + [ + 25.0, + 0.0 + ], + [ + 30.0, + 0.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351635513735327, + 3.1868400887210777, + 3.518469948327196, + 4.007905391760889, + 4.560744629535112, + 5.401449083758796, + 6.486976321316337, + 7.494819690011772, + 8.990031148978208, + 9.939742486515406, + 10.62756995709885, + 11.598631317944045, + 12.272809342815531, + 13.785766062801317, + 15.068231886920891, + 15.419442920350987, + 15.734535049510566, + 16.041230270215344, + 16.27890182163994, + 16.481985532426044, + 16.65674348422391, + 16.802895065437415, + 16.911862557914205, + 17.036270572370665, + 17.12118489782945, + 17.16283345665093, + 17.230222114881137 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615424, + 1.4813847491413068, + 1.8198213217004349, + 2.1114679242247276, + 2.4511928330881467, + 2.788418838701112, + 3.044942971763282, + 3.386567629728472, + 3.6119230278460517, + 3.7911613045797923, + 4.078580049636962, + 4.307163752177449, + 4.941677435556674, + 5.663027618983758, + 5.901361759594423, + 6.135247696883413, + 6.383886230396662, + 6.59370507369637, + 6.785803776503792, + 6.962509782107197, + 7.119485626994295, + 7.242243538718094, + 7.389029028716575, + 7.493643635612574, + 7.5465023506515365, + 7.634332582782971 + ], + "5._384._0.0875": [ + 3.487372589585155, + 3.998469801266941, + 4.5777474410051315, + 5.460776223461212, + 6.425674739213298, + 7.811448320008934, + 9.457393874786662, + 10.851633705797674, + 12.726622455189958, + 13.826818124689655, + 14.591252079696888, + 15.634857218384486, + 16.341099374278958, + 17.89012008611717, + 19.18120760165275, + 19.532466736275204, + 19.84756093006916, + 20.15403736620567, + 20.391581915199563, + 20.59447307028286, + 20.76914405185987, + 20.915308582552065, + 21.024277607388683, + 21.148765882915125, + 21.233696595705158, + 21.275322017056848, + 21.342617449775894 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125447, + 2.162243131656477, + 2.506080868699679, + 2.8001338630516033, + 3.14316064878727, + 3.509825052299018, + 3.848493949538661, + 4.406595353628653, + 4.808512554916006, + 5.128385046179502, + 5.630621991594365, + 6.018944136982413, + 7.036679243449652, + 8.083085612065275, + 8.402118479140187, + 8.701041197701302, + 9.003679581690063, + 9.246361952110863, + 9.458765264812914, + 9.64545370153571, + 9.80423770945946, + 9.923954658858502, + 10.061818993725646, + 10.156722307309312, + 10.203578162091253, + 10.279798091320455 + ], + "5._96._0.075": [ + 2.2092619209324726, + 2.555305550299042, + 2.8518822495528053, + 3.199976563484331, + 3.5216594589333883, + 3.987783469991948, + 4.610630051411952, + 5.219885841408891, + 6.193697119043065, + 6.863688145465759, + 7.37701355174114, + 8.145097648783063, + 8.708507627471517, + 10.06015942648566, + 11.28655314742143, + 11.632954167739143, + 11.94671528792384, + 12.254687309217946, + 12.494851774934968, + 12.700949413835472, + 12.87886828832538, + 13.02799852954206, + 13.13937721517926, + 13.266623199224691, + 13.353625807082219, + 13.396374577666606, + 13.465670536191942 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "2_4": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ], + [ + 5.0, + 10.0 + ], + [ + 5.0, + 15.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835189313206151, + 3.1889552931299114, + 3.538903600312914, + 4.125245273292659, + 4.885340092341224, + 6.143016730599865, + 7.795423613565886, + 9.27950543596083, + 11.353436747367905, + 12.596840822504834, + 13.468067160431177, + 14.664470966131761, + 15.476574467940123, + 17.259801418963622, + 18.744684236603973, + 19.148663438954305, + 19.510655248879416, + 19.862646518364635, + 20.135320763803648, + 20.368260758547958, + 20.56874655291972, + 20.73647327867843, + 20.86155289126196, + 21.004430911305807, + 21.101968292861095, + 21.14980656381263, + 21.2272004431566 + ], + "5._24._0.075": [ + 0.8740059532267965, + 1.1958031759615428, + 1.481384749141307, + 1.8198213217004344, + 2.1114679242247276, + 2.451192833508249, + 2.7884247637014252, + 3.045310119636185, + 3.3955843569013524, + 3.6436674974056684, + 3.855925700780031, + 4.224811171067863, + 4.5397453647967625, + 5.475296090778514, + 6.570578898325478, + 6.92687615541592, + 7.270320655734392, + 7.627303621650882, + 7.920731222490932, + 8.182500131978642, + 8.41680285150039, + 8.619260142203307, + 8.773624250962664, + 8.953159155105311, + 9.077674641056438, + 9.139455677919402, + 9.240304416029538 + ], + "5._384._0.0875": [ + 3.513927363245156, + 4.138323236620862, + 4.946934659382122, + 6.276023786386213, + 7.745123433015339, + 9.775152078177463, + 12.027507501059624, + 13.821671148549264, + 16.122385823361906, + 17.4324968039469, + 18.331112481880304, + 19.547113368196523, + 20.364969660768274, + 22.15086918925759, + 23.635424304237905, + 24.039034587050264, + 24.401264702494476, + 24.753712834574596, + 25.027064089428094, + 25.260592821811322, + 25.461753936083383, + 25.63018173599274, + 25.755780013529776, + 25.899333215570362, + 25.997285001804187, + 26.04529040415504, + 26.122885369700576 + ], + "5._48._0.075": [ + 1.5268463243731418, + 1.8679037053125456, + 2.1622431316564765, + 2.5060808706966746, + 2.800139149366015, + 3.1440381898974845, + 3.5256483410086874, + 3.916608969868303, + 4.6564326435683565, + 5.2408522575199115, + 5.722156280418049, + 6.488021692642983, + 7.078108817637764, + 8.576263856323838, + 10.010562551630642, + 10.425304910732308, + 10.804721194183715, + 11.180326309928033, + 11.475509468067585, + 11.729855694876939, + 11.950339156563452, + 12.135706243920572, + 12.274298805136475, + 12.43266659756452, + 12.540977602810342, + 12.594230671057593, + 12.680561756879944 + ], + "5._96._0.075": [ + 2.209271810327405, + 2.5553235702845147, + 2.851924915529097, + 3.201421474439214, + 3.5371855730616306, + 4.085002516161643, + 4.9363362454780155, + 5.844581988979856, + 7.333675535782044, + 8.340589006658128, + 9.091921499272008, + 10.179343803963988, + 10.948160171270874, + 12.705528852454755, + 14.213545899477472, + 14.628526877105443, + 15.001108095533844, + 15.364261803956104, + 15.645980395169984, + 15.886802623855722, + 16.09410089941256, + 16.267481710205853, + 16.396752054083837, + 16.544255556142314, + 16.644951440401478, + 16.694366889837227, + 16.774367453977067 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "3_3": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ], + [ + 5.0, + 10.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 10.0, + 10.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.835194777381192, + 3.1894025608097913, + 3.5431730221711955, + 4.14995457114244, + 4.9602850236753655, + 6.347578461069761, + 8.219303063204094, + 9.914516638470111, + 12.278861307216795, + 13.689375428116989, + 14.674344858546927, + 16.022611202493785, + 16.935365383865182, + 18.932857449180446, + 20.590866358188737, + 21.041366524348163, + 21.444770448561922, + 21.836821848945775, + 22.14035060837515, + 22.399611200201736, + 22.622676684137772, + 22.809243153220393, + 22.948370714060438, + 23.107281147415655, + 23.21577422790068, + 23.26899392646864, + 23.35511895816213 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.1958031759615426, + 1.4813847491413075, + 1.8198213217004344, + 2.1114679242247276, + 2.4511928335973607, + 2.7884260204953697, + 3.04538794032085, + 3.397478847285279, + 3.65028236953504, + 3.8694446367968838, + 4.256269763172383, + 4.592145183247248, + 5.616342141065902, + 6.8505258017449835, + 7.255864594819363, + 7.646968809849212, + 8.053276846734915, + 8.386585501883108, + 8.683166345880695, + 8.947757383742928, + 9.175550285120444, + 9.348629321286626, + 9.549090750604586, + 9.687603583920982, + 9.75618204850785, + 9.867903170019959 + ], + "5._384._0.0875": [ + 3.519414642750923, + 4.167877970390456, + 5.033726376163877, + 6.505666850113914, + 8.171517377809307, + 10.490884518790367, + 13.057641798784514, + 15.091596800768148, + 17.68751684607798, + 19.161074457078783, + 20.170244304416116, + 21.533887452770426, + 22.450098703200283, + 24.44785294350101, + 26.106290008466924, + 26.556935572090406, + 26.961259778317036, + 27.354567382479086, + 27.659517769608016, + 27.920033833407945, + 28.144407005050972, + 28.332246401451023, + 28.47232450648087, + 28.632424722805496, + 28.741678395827968, + 28.795229262854185, + 28.881805767853283 + ], + "5._48._0.075": [ + 1.526846324373141, + 1.8679037053125445, + 2.1622431316564743, + 2.5060808711202784, + 2.8001402706862746, + 3.144224045078283, + 3.5289604520774644, + 3.9307999739317094, + 4.712428254185614, + 5.347418921621241, + 5.879965415980396, + 6.739706948129181, + 7.408865386614326, + 9.11626514200392, + 10.744546670597042, + 11.212791446300308, + 11.639773033803978, + 12.061220509658641, + 12.391458830061971, + 12.675406212948246, + 12.921007864313719, + 13.127088899769337, + 13.280972380875744, + 13.456545976421273, + 13.576513141553155, + 13.63547462786866, + 13.731049929860575 + ], + "5._96._0.075": [ + 2.2092718103274045, + 2.555323572056519, + 2.851927473662024, + 3.2017149990298575, + 3.5404146600729027, + 4.105317906966819, + 5.011588848511913, + 6.010214756195945, + 7.689683107068938, + 8.83802759134417, + 9.696161835980128, + 10.936159020578424, + 11.810006714617264, + 13.795953525503256, + 15.487658517857962, + 15.951619872839778, + 16.36743918194945, + 16.772210126218116, + 17.08580136939843, + 17.353701914617353, + 17.584116928288115, + 17.77669672785507, + 17.92024261930604, + 18.08396769607562, + 18.195727750777714, + 18.25057695718145, + 18.33939900223481 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "2_5": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 20.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ], + [ + 5.0, + 10.0 + ], + [ + 5.0, + 15.0 + ], + [ + 5.0, + 20.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8351925911221576, + 3.1892213571751724, + 3.541355680931138, + 4.138584767756017, + 4.9241374783226926, + 6.249826317837372, + 8.042260934494504, + 9.703216610321878, + 12.09809062521322, + 13.56908007334359, + 14.612006032564038, + 16.055720129237326, + 17.041446513509268, + 19.21235807125101, + 21.021394579795135, + 21.51348253987512, + 21.953838825026494, + 22.381596137133617, + 22.71246057740695, + 22.995009669704974, + 23.237929131473347, + 23.440952165864083, + 23.592323435875723, + 23.765132002398985, + 23.883117319556238, + 23.9410075258365, + 24.034741663406493 + ], + "5._24._0.075": [ + 0.8740059532267964, + 1.195803175961543, + 1.4813847491413061, + 1.8198213217004344, + 2.1114679242247276, + 2.451192833561717, + 2.788425517737825, + 3.045356714841056, + 3.3966911071229466, + 3.6474066614447547, + 3.8633595181679907, + 4.24146678775765, + 4.566884714356566, + 5.547880470514063, + 6.726814251230247, + 7.118959710629289, + 7.50128704873647, + 7.9035098800175545, + 8.238003360525568, + 8.5395714881233, + 8.812074243127194, + 9.049545264964225, + 9.231894169168777, + 9.445246167913844, + 9.59406803876897, + 9.66821594998837, + 9.789711570773129 + ], + "5._384._0.0875": [ + 3.517089669530491, + 4.154236578069029, + 4.991813562490588, + 6.397124777871605, + 7.993192537890449, + 10.273204407311878, + 12.894363852555866, + 15.03591773423202, + 17.826301894246654, + 19.428894473358316, + 20.531330089142955, + 22.024350568112386, + 23.028917741747733, + 25.218676239030803, + 27.034574164062334, + 27.527694270576607, + 27.969766769490864, + 28.399509205537253, + 28.732408761913508, + 29.016742293317094, + 29.261480255157917, + 29.466255352215995, + 29.61894760132361, + 29.793411897991778, + 29.91247707075819, + 29.970849669315502, + 30.06526432438584 + ], + "5._48._0.075": [ + 1.5268463243731425, + 1.8679037053125433, + 2.1622431316564765, + 2.5060808709508366, + 2.8001398221265577, + 3.1441492286179065, + 3.527561651194066, + 3.9244278621678506, + 4.685625175731641, + 5.295453920390567, + 5.803427043965115, + 6.6229181920128095, + 7.264275168426223, + 8.932368370759292, + 10.58456660789766, + 11.071975122419524, + 11.520931091653425, + 11.96807575491938, + 12.320962857674967, + 12.626044874588079, + 12.890997615805377, + 13.113976808931236, + 13.280824408999106, + 13.471430249883822, + 13.601864227263004, + 13.666054533956704, + 13.770242133670214 + ], + "5._96._0.075": [ + 2.2092718103274054, + 2.555323571347717, + 2.8519264502576633, + 3.20159650900156, + 3.539052908031279, + 4.096048940752249, + 4.975279344723372, + 5.929988032282506, + 7.533985925741476, + 8.64781926922027, + 9.494276092360495, + 10.740984617263898, + 11.637037095800018, + 13.720762587803135, + 15.536368860385512, + 16.03891768592228, + 16.490303967511636, + 16.930398915078918, + 17.271561697172185, + 17.563187144528, + 17.81397563275722, + 18.023509191350684, + 18.179684517471944, + 18.35771990199947, + 18.47926197550023, + 18.538934132395124, + 18.635627554320685 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + }, + "5_8": { + "bore_locations": [ + [ + 0.0, + 0.0 + ], + [ + 0.0, + 5.0 + ], + [ + 0.0, + 10.0 + ], + [ + 0.0, + 15.0 + ], + [ + 0.0, + 20.0 + ], + [ + 0.0, + 25.0 + ], + [ + 0.0, + 30.0 + ], + [ + 0.0, + 35.0 + ], + [ + 5.0, + 0.0 + ], + [ + 5.0, + 5.0 + ], + [ + 5.0, + 10.0 + ], + [ + 5.0, + 15.0 + ], + [ + 5.0, + 20.0 + ], + [ + 5.0, + 25.0 + ], + [ + 5.0, + 30.0 + ], + [ + 5.0, + 35.0 + ], + [ + 10.0, + 0.0 + ], + [ + 10.0, + 5.0 + ], + [ + 10.0, + 10.0 + ], + [ + 10.0, + 15.0 + ], + [ + 10.0, + 20.0 + ], + [ + 10.0, + 25.0 + ], + [ + 10.0, + 30.0 + ], + [ + 10.0, + 35.0 + ], + [ + 15.0, + 0.0 + ], + [ + 15.0, + 5.0 + ], + [ + 15.0, + 10.0 + ], + [ + 15.0, + 15.0 + ], + [ + 15.0, + 20.0 + ], + [ + 15.0, + 25.0 + ], + [ + 15.0, + 30.0 + ], + [ + 15.0, + 35.0 + ], + [ + 20.0, + 0.0 + ], + [ + 20.0, + 5.0 + ], + [ + 20.0, + 10.0 + ], + [ + 20.0, + 15.0 + ], + [ + 20.0, + 20.0 + ], + [ + 20.0, + 25.0 + ], + [ + 20.0, + 30.0 + ], + [ + 20.0, + 35.0 + ] + ], + "g": { + "5._192._0.08": [ + 2.8352171796926875, + 3.1912323955198802, + 3.56049999565259, + 4.249550028573317, + 5.267110970892145, + 7.262622452490169, + 10.513023481366805, + 14.075543864660455, + 20.060281189008855, + 24.197506543401715, + 27.313866241728935, + 31.81556173840786, + 34.99223632333103, + 42.089113929496186, + 47.99705654658159, + 49.595787304114204, + 51.01001516903632, + 52.37090685322932, + 53.408958395159274, + 54.2922718199328, + 55.04440678104219, + 55.66766757792533, + 56.13163963757638, + 56.65910131703204, + 57.01965614833479, + 57.19714145360328, + 57.48668867212045 + ], + "5._24._0.075": [ + 0.874005953226797, + 1.195803175961541, + 1.4813847491413068, + 1.819821321700433, + 2.1114679242247245, + 2.451192833962722, + 2.788431173280784, + 3.045706835618799, + 3.40519536343196, + 3.6770298713540206, + 3.9238359425768987, + 4.382546804128344, + 4.803687731545685, + 6.22550348281308, + 8.26454272545655, + 9.033327122241456, + 9.827594044338952, + 10.712497255272448, + 11.488618159662211, + 12.221409490821387, + 12.910766728530104, + 13.532654737824, + 14.023630504289848, + 14.609443480426677, + 15.025682797415206, + 15.236399684731932, + 15.587059398091673 + ], + "5._384._0.0875": [ + 3.5418723153370695, + 4.2875548225430595, + 5.391829583210791, + 7.553797923045855, + 10.47444288412533, + 15.4552764443417, + 22.26690742381884, + 28.591324881289722, + 37.590797272722426, + 43.03731757173099, + 46.85583270985285, + 52.048524431573, + 55.5484418342339, + 63.06474107299005, + 69.17697562347936, + 70.81987198491822, + 72.28036229442219, + 73.68953892650171, + 74.7703665517925, + 75.6917736235231, + 76.48001038324286, + 77.13605237149497, + 77.62504853785302, + 78.1826382392934, + 78.5637326590175, + 78.75104578471024, + 79.0556567040888 + ], + "5._48._0.075": [ + 1.526846324373144, + 1.8679037053125487, + 2.1622431316564796, + 2.506080872857054, + 2.8001448680440215, + 3.1449852270814374, + 3.5424179084997003, + 3.9880093956834037, + 4.939862149723824, + 5.79197569202499, + 6.564469395710022, + 7.931575415279252, + 9.107719981191298, + 12.583168624254064, + 16.62201014777784, + 17.92759700079677, + 19.16739965914743, + 20.43548697638933, + 21.452461518109263, + 22.34301280497745, + 23.118964178222107, + 23.771011667028986, + 24.258204548647722, + 24.80965662349337, + 25.18613943442992, + 25.37217522339887, + 25.67688529446201 + ], + "5._96._0.075": [ + 2.209271810327418, + 2.555323579321738, + 2.851937961742485, + 3.202916576636184, + 3.5535381677970186, + 4.18717316823856, + 5.319936490017815, + 6.729164937306775, + 9.518352219988081, + 11.768632926224731, + 13.64439883883691, + 16.64917886255251, + 18.983504338698914, + 24.87378358615821, + 30.407113640680546, + 31.984277484052726, + 33.39913505617774, + 34.775837801132, + 35.8321176604548, + 36.73155863532055, + 37.496514530753714, + 38.128583165876954, + 38.5976884009178, + 39.12794358595513, + 39.489739271230974, + 39.6679839630719, + 39.95935698577689 + ] + }, + "logtime": [ + -8.5, + -7.8, + -7.2, + -6.5, + -5.9, + -5.2, + -4.5, + -3.963, + -3.27, + -2.864, + -2.577, + -2.171, + -1.884, + -1.191, + -0.497, + -0.274, + -0.051, + 0.196, + 0.419, + 0.642, + 0.873, + 1.112, + 1.335, + 1.679, + 2.028, + 2.275, + 3.003 + ] + } +} \ No newline at end of file diff --git a/HPXMLtoOpenStudio/resources/data/g_functions/util.rb b/HPXMLtoOpenStudio/resources/data/g_functions/util.rb new file mode 100644 index 0000000000..015204a688 --- /dev/null +++ b/HPXMLtoOpenStudio/resources/data/g_functions/util.rb @@ -0,0 +1,92 @@ +# frozen_string_literal: true + +def process_g_functions(filepath) + # Downselect jsons found at https://gdr.openei.org/files/1325/g-function_library_1.0.zip + require 'json' + require 'zip' + + g_functions_path = File.dirname(filepath) + Dir[File.join(filepath, '*.json')].each do |config_json| + file = File.open(config_json) + config_json = File.basename(config_json) + puts "Processing #{config_json}..." + json = JSON.load(file) + + # It's possible that multiple m_n keys exist for a given config/borehole combo. + # So, we are choosing the "most square" m_n for each config/boreholes combo. + json2 = {} + case config_json + when 'rectangle_5m_v1.0.json' + add_m_n(json, json2, 1, '1_1') + add_m_n(json, json2, 2, '1_2') + add_m_n(json, json2, 3, '1_3') + add_m_n(json, json2, 4, '2_2') + add_m_n(json, json2, 5, '1_5') + add_m_n(json, json2, 6, '2_3') + add_m_n(json, json2, 7, '1_7') + add_m_n(json, json2, 8, '2_4') + add_m_n(json, json2, 9, '3_3') + add_m_n(json, json2, 10, '2_5') + add_m_n(json, json2, 40, '5_8') # test case + when 'L_configurations_5m_v1.0.json' + add_m_n(json, json2, 4, '2_3') + add_m_n(json, json2, 5, '3_3') + add_m_n(json, json2, 6, '3_4') + add_m_n(json, json2, 7, '4_4') + add_m_n(json, json2, 8, '4_5') + add_m_n(json, json2, 9, '5_5') + add_m_n(json, json2, 10, '5_6') + when 'C_configurations_5m_v1.0.json' # has key2 + add_m_n(json, json2, 7, '3_3', '1') + add_m_n(json, json2, 9, '3_4', '1') + when 'LopU_configurations_5m_v1.0.json' + add_m_n(json, json2, 6, '3_3', '1') + add_m_n(json, json2, 7, '3_4', '2') + add_m_n(json, json2, 8, '3_4', '1') + add_m_n(json, json2, 9, '4_4', '1') + add_m_n(json, json2, 10, '3_5', '1') + when 'Open_configurations_5m_v1.0.json' # has key2 + add_m_n(json, json2, 8, '3_3', '1') + add_m_n(json, json2, 10, '3_4', '1') + when 'U_configurations_5m_v1.0.json' # has key2 + add_m_n(json, json2, 7, '3_3', '1') + add_m_n(json, json2, 9, '3_4', '1') + add_m_n(json, json2, 10, '4_4', '1') + when 'zoned_rectangle_5m_v1.0.json' # there are none for which num_boreholes less than or equal to 10 + # add_m_n(json, json2, 17, '5_5', '1_1') + else + fail "Unrecognized config_json: #{config_json}" + end + next if json2.empty? + + configpath = File.join(g_functions_path, File.basename(config_json)) + File.open(configpath, 'w') do |f| + json = JSON.pretty_generate(json2) + f.write(json) + end + end + + FileUtils.rm_rf(filepath) + + num_configs_actual = Dir[File.join(g_functions_path, '*.json')].count + + return num_configs_actual +end + +def add_m_n(json, json2, expected_num_boreholes, m_n, key2 = nil) + if key2.nil? + actual_num_boreholes = json[m_n]['bore_locations'].size + fail "#{expected_num_boreholes} vs #{actual_num_boreholes}" if expected_num_boreholes != actual_num_boreholes + + json2.update({ m_n => json[m_n] }) + else + actual_num_boreholes = json[m_n][key2]['bore_locations'].size + fail "#{expected_num_boreholes} vs #{actual_num_boreholes}" if expected_num_boreholes != actual_num_boreholes + + if !json2[m_n].nil? + json2[m_n].update({ key2 => json[m_n][key2] }) + else + json2.update({ m_n => { key2 => json[m_n][key2] } }) + end + end +end diff --git a/HPXMLtoOpenStudio/resources/hpxml.rb b/HPXMLtoOpenStudio/resources/hpxml.rb index 2ab5f6ac53..bd6eba46d4 100644 --- a/HPXMLtoOpenStudio/resources/hpxml.rb +++ b/HPXMLtoOpenStudio/resources/hpxml.rb @@ -153,6 +153,19 @@ class HPXML < Object FuelTypeWoodPellets = 'wood pellets' FurnitureMassTypeLightWeight = 'light-weight' FurnitureMassTypeHeavyWeight = 'heavy-weight' + GeothermalLoopBorefieldConfigurationRectangle = 'Rectangle' + GeothermalLoopBorefieldConfigurationZonedRectangle = 'Zoned Rectangle' + GeothermalLoopBorefieldConfigurationOpenRectangle = 'Open Rectangle' + GeothermalLoopBorefieldConfigurationC = 'C' + GeothermalLoopBorefieldConfigurationL = 'L' + GeothermalLoopBorefieldConfigurationU = 'U' + GeothermalLoopBorefieldConfigurationLopsidedU = 'Lopsided U' + GeothermalLoopLoopConfigurationDiagonal = 'diagonal' + GeothermalLoopLoopConfigurationHorizontal = 'horizontal' + GeothermalLoopLoopConfigurationOther = 'other' + GeothermalLoopLoopConfigurationVertical = 'vertical' + GeothermalLoopGroutOrPipeTypeStandard = 'standard' + GeothermalLoopGroutOrPipeTypeThermallyEnhanced = 'thermally enhanced' HeaterTypeElectricResistance = 'electric resistance' HeaterTypeGas = 'gas fired' HeaterTypeHeatPump = 'heat pump' @@ -303,6 +316,16 @@ class HPXML < Object SidingTypeSyntheticStucco = 'synthetic stucco' SidingTypeVinyl = 'vinyl siding' SidingTypeWood = 'wood siding' + SiteSoilMoistureTypeDry = 'dry' + SiteSoilMoistureTypeMixed = 'mixed' + SiteSoilMoistureTypeWet = 'wet' + SiteSoilTypeClay = 'clay' + SiteSoilTypeGravel = 'gravel' + SiteSoilTypeLoam = 'loam' + SiteSoilTypeOther = 'other' + SiteSoilTypeSand = 'sand' + SiteSoilTypeSilt = 'silt' + SiteSoilTypeUnknown = 'unknown' SiteTypeUrban = 'urban' SiteTypeSuburban = 'suburban' SiteTypeRural = 'rural' @@ -1051,7 +1074,7 @@ class Building < BaseElement :climate_and_risk_zones, :air_infiltration, :air_infiltration_measurements, :attics, :foundations, :roofs, :rim_joists, :walls, :foundation_walls, :floors, :slabs, :windows, :skylights, :doors, :partition_wall_mass, :furniture_mass, :heating_systems, - :cooling_systems, :heat_pumps, :hvac_plant, :hvac_controls, :hvac_distributions, + :cooling_systems, :heat_pumps, :geothermal_loops, :hvac_plant, :hvac_controls, :hvac_distributions, :ventilation_fans, :water_heating_systems, :hot_water_distributions, :water_fixtures, :water_heating, :solar_thermal_systems, :pv_systems, :inverters, :generators, :batteries, :clothes_washers, :clothes_dryers, :dishwashers, :refrigerators, @@ -1140,6 +1163,7 @@ def to_doc(doc) @heating_systems.to_doc(building) @cooling_systems.to_doc(building) @heat_pumps.to_doc(building) + @geothermal_loops.to_doc(building) @hvac_plant.to_doc(building) @hvac_controls.to_doc(building) @hvac_distributions.to_doc(building) @@ -1213,6 +1237,7 @@ def from_doc(building) @heating_systems = HeatingSystems.new(self, building) @cooling_systems = CoolingSystems.new(self, building) @heat_pumps = HeatPumps.new(self, building) + @geothermal_loops = GeothermalLoops.new(self, building) @hvac_plant = HVACPlant.new(self, building) @hvac_controls = HVACControls.new(self, building) @hvac_distributions = HVACDistributions.new(self, building) @@ -1697,7 +1722,7 @@ def collapse_enclosure_surfaces(surf_types_of_interest = nil) class Site < BaseElement ATTRS = [:site_type, :surroundings, :vertical_surroundings, :shielding_of_home, :orientation_of_front_of_home, :azimuth_of_front_of_home, :fuels, - :ground_conductivity] + :soil_type, :moisture_type, :ground_conductivity, :ground_diffusivity] attr_accessor(*ATTRS) def check_for_errors @@ -1721,7 +1746,16 @@ def to_doc(building) XMLHelper.add_element(fuel_types_available, 'Fuel', fuel, :string) end end - XMLHelper.add_extension(site, 'GroundConductivity', @ground_conductivity, :float, @ground_conductivity_isdefaulted) unless @ground_conductivity.nil? + if (not @soil_type.nil?) || (not @moisture_type.nil?) || (not @ground_conductivity.nil?) || (not @ground_diffusivity.nil?) + soil = XMLHelper.add_element(site, 'Soil') + XMLHelper.add_element(soil, 'SoilType', @soil_type, :string, @soil_type_isdefaulted) unless @soil_type.nil? + XMLHelper.add_element(soil, 'MoistureType', @moisture_type, :string, @moisture_type_isdefaulted) unless @moisture_type.nil? + XMLHelper.add_element(soil, 'Conductivity', @ground_conductivity, :float, @ground_conductivity_isdefaulted) unless @ground_conductivity.nil? + if not @ground_diffusivity.nil? + extension = XMLHelper.create_elements_as_needed(soil, ['extension']) + XMLHelper.add_element(extension, 'Diffusivity', @ground_diffusivity, :float, @ground_diffusivity_isdefaulted) unless @ground_diffusivity.nil? + end + end if site.children.size == 0 bldg_summary = XMLHelper.get_element(doc, '/HPXML/Building/BuildingDetails/BuildingSummary') @@ -1742,7 +1776,10 @@ def from_doc(building) @orientation_of_front_of_home = XMLHelper.get_value(site, 'OrientationOfFrontOfHome', :string) @azimuth_of_front_of_home = XMLHelper.get_value(site, 'AzimuthOfFrontOfHome', :integer) @fuels = XMLHelper.get_values(site, 'FuelTypesAvailable/Fuel', :string) - @ground_conductivity = XMLHelper.get_value(site, 'extension/GroundConductivity', :float) + @soil_type = XMLHelper.get_value(site, 'Soil/SoilType', :string) + @moisture_type = XMLHelper.get_value(site, 'Soil/MoistureType', :string) + @ground_conductivity = XMLHelper.get_value(site, 'Soil/Conductivity', :float) + @ground_diffusivity = XMLHelper.get_value(site, 'Soil/extension/Diffusivity', :float) end end @@ -4377,6 +4414,111 @@ def from_doc(cooling_system) end end + class GeothermalLoops < BaseArrayElement + def add(**kwargs) + self << GeothermalLoop.new(@parent_object, **kwargs) + end + + def from_doc(building) + return if building.nil? + + XMLHelper.get_elements(building, 'BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop').each do |geothermal_loop| + self << GeothermalLoop.new(@parent_object, geothermal_loop) + end + end + end + + class GeothermalLoop < BaseElement + ATTRS = [:id, :loop_configuration, :loop_flow, :bore_config, :num_bore_holes, :bore_spacing, + :bore_length, :bore_diameter, :grout_type, :grout_conductivity, :pipe_type, + :pipe_conductivity, :pipe_diameter, :shank_spacing] + attr_accessor(*ATTRS) + + def heat_pump + list = [] + @parent_object.heat_pumps.each do |heat_pump| + next if heat_pump.geothermal_loop_idref.nil? + next unless heat_pump.geothermal_loop_idref == @id + + list << heat_pump + end + + if list.size == 0 + fail "Geothermal loop '#{@id}' found but no heat pump attached to it." + elsif list.size > 1 + fail "Multiple heat pumps found attached to geothermal loop '#{@id}'." + end + end + + def delete + @parent_object.geothermal_loops.delete(self) + @parent_object.heat_pumps.each do |heat_pump| + next unless heat_pump.geothermal_loop_idref == @id + + heat_pump.geothermal_loop_idref = nil + end + end + + def check_for_errors + errors = [] + begin; heat_pump; rescue StandardError => e; errors << e.message; end + return errors + end + + def to_doc(building) + return if nil? + + hvac_plant = XMLHelper.create_elements_as_needed(building, ['BuildingDetails', 'Systems', 'HVAC', 'HVACPlant']) + geothermal_loop = XMLHelper.add_element(hvac_plant, 'GeothermalLoop') + sys_id = XMLHelper.add_element(geothermal_loop, 'SystemIdentifier') + XMLHelper.add_attribute(sys_id, 'id', @id) + XMLHelper.add_element(geothermal_loop, 'LoopConfiguration', @loop_configuration, :string, @loop_configuration_isdefaulted) unless @loop_configuration.nil? + XMLHelper.add_element(geothermal_loop, 'LoopFlow', @loop_flow, :float, @loop_flow_isdefaulted) unless @loop_flow.nil? + if (not @num_bore_holes.nil?) || (not @bore_spacing.nil?) || (not @bore_length.nil?) || (not @bore_diameter.nil?) + boreholes_or_trenches = XMLHelper.add_element(geothermal_loop, 'BoreholesOrTrenches') + XMLHelper.add_element(boreholes_or_trenches, 'Count', @num_bore_holes, :integer, @num_bore_holes_isdefaulted) unless @num_bore_holes.nil? + XMLHelper.add_element(boreholes_or_trenches, 'Length', @bore_length, :float, @bore_length_isdefaulted) unless @bore_length.nil? + XMLHelper.add_element(boreholes_or_trenches, 'Spacing', @bore_spacing, :float, @bore_spacing_isdefaulted) unless @bore_spacing.nil? + XMLHelper.add_element(boreholes_or_trenches, 'Diameter', @bore_diameter, :float, @bore_diameter_isdefaulted) unless @bore_diameter.nil? + end + if (not @grout_type.nil?) || (not @grout_conductivity.nil?) + grout = XMLHelper.add_element(geothermal_loop, 'Grout') + XMLHelper.add_element(grout, 'Type', @grout_type, :string, @grout_type_isdefaulted) unless @grout_type.nil? + XMLHelper.add_element(grout, 'Conductivity', @grout_conductivity, :float, @grout_conductivity_isdefaulted) unless @grout_conductivity.nil? + end + if (not @pipe_type.nil?) || (not @pipe_conductivity.nil?) || (not @pipe_diameter.nil?) || (not @shank_spacing.nil?) + pipe = XMLHelper.add_element(geothermal_loop, 'Pipe') + XMLHelper.add_element(pipe, 'Type', @pipe_type, :string, @pipe_type_isdefaulted) unless @pipe_type.nil? + XMLHelper.add_element(pipe, 'Conductivity', @pipe_conductivity, :float, @pipe_conductivity_isdefaulted) unless @pipe_conductivity.nil? + XMLHelper.add_element(pipe, 'Diameter', @pipe_diameter, :float, @pipe_diameter_isdefaulted) unless @pipe_diameter.nil? + XMLHelper.add_element(pipe, 'ShankSpacing', @shank_spacing, :float, @shank_spacing_isdefaulted) unless @shank_spacing.nil? + end + if not @bore_config.nil? + extension = XMLHelper.create_elements_as_needed(geothermal_loop, ['extension']) + XMLHelper.add_element(extension, 'BorefieldConfiguration', @bore_config, :string, @bore_config_isdefaulted) unless @bore_config.nil? + end + end + + def from_doc(geothermal_loop) + return if geothermal_loop.nil? + + @id = HPXML::get_id(geothermal_loop) + @loop_configuration = XMLHelper.get_value(geothermal_loop, 'LoopConfiguration', :string) + @loop_flow = XMLHelper.get_value(geothermal_loop, 'LoopFlow', :float) + @num_bore_holes = XMLHelper.get_value(geothermal_loop, 'BoreholesOrTrenches/Count', :integer) + @bore_length = XMLHelper.get_value(geothermal_loop, 'BoreholesOrTrenches/Length', :float) + @bore_spacing = XMLHelper.get_value(geothermal_loop, 'BoreholesOrTrenches/Spacing', :float) + @bore_diameter = XMLHelper.get_value(geothermal_loop, 'BoreholesOrTrenches/Diameter', :float) + @grout_type = XMLHelper.get_value(geothermal_loop, 'Grout/Type', :string) + @grout_conductivity = XMLHelper.get_value(geothermal_loop, 'Grout/Conductivity', :float) + @pipe_type = XMLHelper.get_value(geothermal_loop, 'Pipe/Type', :string) + @pipe_conductivity = XMLHelper.get_value(geothermal_loop, 'Pipe/Conductivity', :float) + @pipe_diameter = XMLHelper.get_value(geothermal_loop, 'Pipe/Diameter', :float) + @shank_spacing = XMLHelper.get_value(geothermal_loop, 'Pipe/ShankSpacing', :float) + @bore_config = XMLHelper.get_value(geothermal_loop, 'extension/BorefieldConfiguration', :string) + end + end + class HeatPumps < BaseArrayElement def add(**kwargs) self << HeatPump.new(@parent_object, **kwargs) @@ -4415,7 +4557,8 @@ def initialize(hpxml_object, *args) :pump_watts_per_ton, :fan_watts_per_cfm, :is_shared_system, :number_of_units_served, :shared_loop_watts, :shared_loop_motor_efficiency, :airflow_defect_ratio, :charge_defect_ratio, :heating_airflow_cfm, :cooling_airflow_cfm, :location, :primary_heating_system, :primary_cooling_system, - :heating_capacity_retention_fraction, :heating_capacity_retention_temp, :crankcase_heater_watts] + :heating_capacity_retention_fraction, :heating_capacity_retention_temp, :crankcase_heater_watts, + :geothermal_loop_idref] attr_accessor(*ATTRS) attr_reader(:cooling_detailed_performance_data) attr_reader(:heating_detailed_performance_data) @@ -4431,6 +4574,17 @@ def distribution_system fail "Attached HVAC distribution system '#{@distribution_system_idref}' not found for HVAC system '#{@id}'." end + def geothermal_loop + return if @geothermal_loop_idref.nil? + + @parent_object.geothermal_loops.each do |geothermal_loop| + next unless geothermal_loop.id == @geothermal_loop_idref + + return geothermal_loop + end + fail "Attached geothermal loop '#{@geothermal_loop_idref}' not found for heat pump '#{@id}'." + end + def is_dual_fuel if backup_system.nil? if @backup_heating_fuel.nil? @@ -4476,6 +4630,7 @@ def delete def check_for_errors errors = [] begin; distribution_system; rescue StandardError => e; errors << e.message; end + begin; geothermal_loop; rescue StandardError => e; errors << e.message; end errors += @cooling_detailed_performance_data.check_for_errors errors += @heating_detailed_performance_data.check_for_errors return errors @@ -4562,6 +4717,10 @@ def to_doc(building) XMLHelper.add_element(annual_efficiency, 'Units', UnitsCOP, :string) XMLHelper.add_element(annual_efficiency, 'Value', @heating_efficiency_cop, :float, @heating_efficiency_cop_isdefaulted) end + if not @geothermal_loop_idref.nil? + attached_to_geothermal_loop = XMLHelper.add_element(heat_pump, 'AttachedToGeothermalLoop') + XMLHelper.add_attribute(attached_to_geothermal_loop, 'idref', @geothermal_loop_idref) + end @cooling_detailed_performance_data.to_doc(heat_pump) @heating_detailed_performance_data.to_doc(heat_pump) XMLHelper.add_extension(heat_pump, 'AirflowDefectRatio', @airflow_defect_ratio, :float, @airflow_defect_ratio_isdefaulted) unless @airflow_defect_ratio.nil? @@ -4625,6 +4784,7 @@ def from_doc(heat_pump) @heating_efficiency_hspf = XMLHelper.get_value(heat_pump, "AnnualHeatingEfficiency[Units='#{UnitsHSPF}']/Value", :float) @heating_efficiency_hspf2 = XMLHelper.get_value(heat_pump, "AnnualHeatingEfficiency[Units='#{UnitsHSPF2}']/Value", :float) @heating_efficiency_cop = XMLHelper.get_value(heat_pump, "AnnualHeatingEfficiency[Units='#{UnitsCOP}']/Value", :float) + @geothermal_loop_idref = HPXML::get_idref(XMLHelper.get_element(heat_pump, 'AttachedToGeothermalLoop')) @cooling_detailed_performance_data.from_doc(heat_pump) @heating_detailed_performance_data.from_doc(heat_pump) @airflow_defect_ratio = XMLHelper.get_value(heat_pump, 'extension/AirflowDefectRatio', :float) diff --git a/HPXMLtoOpenStudio/resources/hpxml_defaults.rb b/HPXMLtoOpenStudio/resources/hpxml_defaults.rb index e6ba315f44..43967951c4 100644 --- a/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +++ b/HPXMLtoOpenStudio/resources/hpxml_defaults.rb @@ -42,7 +42,7 @@ def self.apply(runner, hpxml, hpxml_bldg, eri_version, weather, epw_file: nil, s apply_doors(hpxml_bldg) apply_partition_wall_mass(hpxml_bldg) apply_furniture_mass(hpxml_bldg) - apply_hvac(runner, hpxml_bldg, weather, convert_shared_systems) + apply_hvac(runner, hpxml, hpxml_bldg, weather, convert_shared_systems) apply_hvac_control(hpxml_bldg, schedules_file) apply_hvac_distribution(hpxml_bldg, ncfl, ncfl_ag) apply_hvac_location(hpxml_bldg) @@ -63,7 +63,7 @@ def self.apply(runner, hpxml, hpxml_bldg, eri_version, weather, epw_file: nil, s apply_batteries(hpxml_bldg) # Do HVAC sizing after all other defaults have been applied - apply_hvac_sizing(hpxml_bldg, weather, cfa) + apply_hvac_sizing(runner, hpxml_bldg, weather, cfa) # default detailed performance has to be after sizing to have autosized capacity information apply_detailed_performance_data_for_var_speed_systems(hpxml_bldg) @@ -447,6 +447,80 @@ def self.apply_building(hpxml_bldg, epw_file) hpxml_bldg.time_zone_utc_offset_isdefaulted = true end + if hpxml_bldg.site.soil_type.nil? && hpxml_bldg.site.ground_conductivity.nil? && hpxml_bldg.site.ground_diffusivity.nil? + hpxml_bldg.site.soil_type = HPXML::SiteSoilTypeUnknown + hpxml_bldg.site.soil_type_isdefaulted = true + end + + if hpxml_bldg.site.moisture_type.nil? && hpxml_bldg.site.ground_conductivity.nil? && hpxml_bldg.site.ground_diffusivity.nil? + hpxml_bldg.site.moisture_type = HPXML::SiteSoilMoistureTypeMixed + hpxml_bldg.site.moisture_type_isdefaulted = true + end + + # Conductivity/diffusivity values come from https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4813881 (with the exception of "unknown") + if hpxml_bldg.site.ground_conductivity.nil? && hpxml_bldg.site.ground_diffusivity.nil? + if hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeSand + if hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeDry + hpxml_bldg.site.ground_conductivity = 0.2311 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0097 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeWet + hpxml_bldg.site.ground_conductivity = 1.3865 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0322 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeMixed + hpxml_bldg.site.ground_conductivity = ((0.2311 + 1.3865) / 2.0).round(4) # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = ((0.0097 + 0.0322) / 2.0).round(4) # ft^2/hr + end + hpxml_bldg.site.ground_conductivity_isdefaulted = true + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + elsif hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeSilt || hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeClay + if hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeDry + hpxml_bldg.site.ground_conductivity = 0.2889 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0120 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeWet + hpxml_bldg.site.ground_conductivity = 0.9821 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0194 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeMixed + hpxml_bldg.site.ground_conductivity = ((0.2889 + 0.9821) / 2.0).round(4) # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = ((0.0120 + 0.0194) / 2.0).round(4) # ft^2/hr + end + hpxml_bldg.site.ground_conductivity_isdefaulted = true + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + elsif hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeLoam + hpxml_bldg.site.ground_conductivity = 1.2132 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0353 # ft^2/hr + + hpxml_bldg.site.ground_conductivity_isdefaulted = true + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + elsif hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeGravel + if hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeDry + hpxml_bldg.site.ground_conductivity = 0.2311 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0097 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeWet + hpxml_bldg.site.ground_conductivity = 1.0399 # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = 0.0291 # ft^2/hr + elsif hpxml_bldg.site.moisture_type == HPXML::SiteSoilMoistureTypeMixed + hpxml_bldg.site.ground_conductivity = ((0.2311 + 1.0399) / 2.0).round(4) # Btu/hr-ft-F + hpxml_bldg.site.ground_diffusivity = ((0.0097 + 0.0291) / 2.0).round(4) # ft^2/hr + end + hpxml_bldg.site.ground_conductivity_isdefaulted = true + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + elsif hpxml_bldg.site.soil_type == HPXML::SiteSoilTypeUnknown + hpxml_bldg.site.ground_conductivity = 1.0 + hpxml_bldg.site.ground_diffusivity = 0.0208 + hpxml_bldg.site.ground_conductivity_isdefaulted = true + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + end + end + if hpxml_bldg.site.ground_conductivity.nil? && !hpxml_bldg.site.ground_diffusivity.nil? + # Divide diffusivity by 0.0208 to maintain 1/0.0208 relationship + hpxml_bldg.site.ground_conductivity = hpxml_bldg.site.ground_diffusivity / 0.0208 # Btu/hr-ft-F + hpxml_bldg.site.ground_conductivity_isdefaulted = true + elsif !hpxml_bldg.site.ground_conductivity.nil? && hpxml_bldg.site.ground_diffusivity.nil? + # Multiply conductivity by 0.0208 to maintain 1/0.0208 relationship + hpxml_bldg.site.ground_diffusivity = hpxml_bldg.site.ground_conductivity * 0.0208 # ft^2/hr + hpxml_bldg.site.ground_diffusivity_isdefaulted = true + end + if hpxml_bldg.dst_enabled.nil? hpxml_bldg.dst_enabled = true # Assume DST since it occurs in most US locations hpxml_bldg.dst_enabled_isdefaulted = true @@ -1078,7 +1152,7 @@ def self.apply_furniture_mass(hpxml_bldg) end end - def self.apply_hvac(runner, hpxml_bldg, weather, convert_shared_systems) + def self.apply_hvac(runner, hpxml, hpxml_bldg, weather, convert_shared_systems) if convert_shared_systems HVAC.apply_shared_systems(hpxml_bldg) end @@ -1495,9 +1569,69 @@ def self.apply_hvac(runner, hpxml_bldg, weather, convert_shared_systems) HVAC.set_heat_curves_central_air_source(heat_pump, use_eer_cop) elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type + if heat_pump.geothermal_loop.nil? + if hpxml.buildings.size > 1 + bldg_idx = hpxml.buildings.index(hpxml_bldg) + loop_id = "GeothermalLoop#{hpxml_bldg.geothermal_loops.size + 1}_#{bldg_idx + 1}" + else + loop_id = "GeothermalLoop#{hpxml_bldg.geothermal_loops.size + 1}" + end + hpxml_bldg.geothermal_loops.add(id: loop_id, + loop_configuration: HPXML::GeothermalLoopLoopConfigurationVertical) + heat_pump.geothermal_loop_idref = hpxml_bldg.geothermal_loops[-1].id + end + + if heat_pump.geothermal_loop.pipe_diameter.nil? + heat_pump.geothermal_loop.pipe_diameter = 1.25 # in + heat_pump.geothermal_loop.pipe_diameter_isdefaulted = true + end + HVAC.set_gshp_assumptions(heat_pump, weather) HVAC.set_curves_gshp(heat_pump) + if heat_pump.geothermal_loop.bore_spacing.nil? + heat_pump.geothermal_loop.bore_spacing = 16.4 # ft, distance between bores + heat_pump.geothermal_loop.bore_spacing_isdefaulted = true + end + + if heat_pump.geothermal_loop.bore_diameter.nil? + heat_pump.geothermal_loop.bore_diameter = 5.0 # in + heat_pump.geothermal_loop.bore_diameter_isdefaulted = true + end + + if heat_pump.geothermal_loop.grout_type.nil? && heat_pump.geothermal_loop.grout_conductivity.nil? + heat_pump.geothermal_loop.grout_type = HPXML::GeothermalLoopGroutOrPipeTypeStandard + heat_pump.geothermal_loop.grout_type_isdefaulted = true + end + + if heat_pump.geothermal_loop.grout_conductivity.nil? + if heat_pump.geothermal_loop.grout_type == HPXML::GeothermalLoopGroutOrPipeTypeStandard + heat_pump.geothermal_loop.grout_conductivity = 0.4 # Btu/h-ft-R + elsif heat_pump.geothermal_loop.grout_type == HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced + heat_pump.geothermal_loop.grout_conductivity = 0.8 # Btu/h-ft-R + end + heat_pump.geothermal_loop.grout_conductivity_isdefaulted = true + end + + if heat_pump.geothermal_loop.pipe_type.nil? && heat_pump.geothermal_loop.pipe_conductivity.nil? + heat_pump.geothermal_loop.pipe_type = HPXML::GeothermalLoopGroutOrPipeTypeStandard + heat_pump.geothermal_loop.pipe_type_isdefaulted = true + end + + if heat_pump.geothermal_loop.pipe_conductivity.nil? + if heat_pump.geothermal_loop.pipe_type == HPXML::GeothermalLoopGroutOrPipeTypeStandard + heat_pump.geothermal_loop.pipe_conductivity = 0.23 # Btu/h-ft-R; Pipe thermal conductivity, default to high density polyethylene + elsif heat_pump.geothermal_loop.pipe_type == HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced + heat_pump.geothermal_loop.pipe_conductivity = 0.40 # Btu/h-ft-R; 0.7 W/m-K from https://www.dropbox.com/scl/fi/91yp8e9v34vdh1isvrfvy/GeoPerformX-Spec-Sheet.pdf?rlkey=kw7p01gs46z9lfjs78bo8aujq&dl=0 + end + heat_pump.geothermal_loop.pipe_conductivity_isdefaulted = true + end + + 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_isdefaulted = true + end elsif [HPXML::HVACTypeHeatPumpWaterLoopToAir].include? heat_pump.heat_pump_type HVAC.set_heat_pump_temperatures(heat_pump, runner) @@ -2833,11 +2967,11 @@ def self.apply_fuel_loads(hpxml_bldg, cfa, schedules_file) end end - def self.apply_hvac_sizing(hpxml_bldg, weather, cfa) + def self.apply_hvac_sizing(runner, hpxml_bldg, weather, cfa) hvac_systems = HVAC.get_hpxml_hvac_systems(hpxml_bldg) # Calculate building design loads and equipment capacities/airflows - bldg_design_loads, all_hvac_sizing_values = HVACSizing.calculate(weather, hpxml_bldg, cfa, hvac_systems) + bldg_design_loads, all_hvac_sizing_values = HVACSizing.calculate(runner, weather, hpxml_bldg, cfa, hvac_systems) hvacpl = hpxml_bldg.hvac_plant tol = 10 # Btuh @@ -2952,10 +3086,27 @@ def self.apply_hvac_sizing(hpxml_bldg, weather, cfa) # Heating GSHP loop if htg_sys.is_a? HPXML::HeatPump - htg_sys.additional_properties.GSHP_Loop_flow = hvac_sizing_values.GSHP_Loop_flow - htg_sys.additional_properties.GSHP_Bore_Depth = hvac_sizing_values.GSHP_Bore_Depth - htg_sys.additional_properties.GSHP_Bore_Holes = hvac_sizing_values.GSHP_Bore_Holes htg_sys.additional_properties.GSHP_G_Functions = hvac_sizing_values.GSHP_G_Functions + + geothermal_loop = htg_sys.geothermal_loop + if not geothermal_loop.nil? + if geothermal_loop.loop_flow.nil? + geothermal_loop.loop_flow = hvac_sizing_values.GSHP_Loop_flow + geothermal_loop.loop_flow_isdefaulted = true + end + if geothermal_loop.num_bore_holes.nil? + geothermal_loop.num_bore_holes = hvac_sizing_values.GSHP_Bore_Holes + geothermal_loop.num_bore_holes_isdefaulted = true + end + if geothermal_loop.bore_length.nil? + geothermal_loop.bore_length = hvac_sizing_values.GSHP_Bore_Depth + geothermal_loop.bore_length_isdefaulted = true + end + if geothermal_loop.bore_config.nil? + geothermal_loop.bore_config = hvac_sizing_values.GSHP_Bore_Config + geothermal_loop.bore_config_isdefaulted = true + end + end end end diff --git a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml index e51a5bde63..831020a313 100644 --- a/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +++ b/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml @@ -326,11 +326,26 @@ Expected 0 or 1 element(s) for xpath: SiteType Expected 0 or 1 element(s) for xpath: ShieldingofHome Expected ShieldingofHome to be 'well-shielded' or 'normal' or 'exposed' - Expected 0 or 1 element(s) for xpath: extension/GroundConductivity - Expected extension/GroundConductivity to be greater than 0 + Expected 0 or 1 element(s) for xpath: Soil Expected 0 or 1 element(s) for xpath: extension/Neighbors extension/ShelterCoefficient has been replaced by ShieldingofHome + + extension/GroundConductivity has been replaced by Soil/Conductivity + + + + + [Soil] + + Expected 0 or 1 element(s) for xpath: SoilType + Expected SoilType to be 'sand' or 'silt' or 'clay' or 'loam' or 'gravel' or 'unknown' + Expected 0 or 1 element(s) for xpath: MoistureType + Expected MoistureType to be 'dry' or 'wet' or 'mixed' + Expected 0 or 1 element(s) for xpath: Conductivity + Expected Conductivity to be greater than 0 + Expected 0 or 1 element(s) for xpath: extension/Diffusivity + Expected extension/Diffusivity to be greater than 0 @@ -1222,6 +1237,7 @@ Expected 1 element(s) for xpath: FractionCoolLoadServed Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="EER"]/Value Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="COP"]/Value + Expected 0 or 1 element(s) for xpath: AttachedToGeothermalLoop Expected 0 or 1 element(s) for xpath: extension/PumpPowerWattsPerTon Expected extension/PumpPowerWattsPerTon to be greater than or equal to 0 Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM @@ -1364,6 +1380,34 @@ + + [GeothermalLoop] + + Expected 1 element(s) for xpath: LoopConfiguration + Expected LoopConfiguration to be 'vertical' + Expected 0 or 1 element(s) for xpath: LoopFlow + Expected LoopFlow to be greater than 0 + Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Count + Expected BoreholesOrTrenches/Count to be greater than or equal to 1 + Expected BoreholesOrTrenches/Count to be less than or equal to 10 + Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Length + Expected BoreholesOrTrenches/Length to be greater than or equal to 79 + Expected BoreholesOrTrenches/Length to be less than or equal to 500 + Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Spacing + Expected BoreholesOrTrenches/Spacing to be greater than 0 + Expected 0 or 1 element(s) for xpath: BoreholesOrTrenches/Diameter + Expected BoreholesOrTrenches/Diameter to be greater than 0 + Expected 0 or more element(s) for xpath: Grout/Type | Grout/Conductivity + Expected 0 or more element(s) for xpath: Pipe/Type | Pipe/Conductivity + Expected 0 or 1 element(s) for xpath: Pipe/Diameter + Expected Pipe/Diameter to be 0.75, 1.0, or 1.25 + Expected 0 or 1 element(s) for xpath: Pipe/ShankSpacing + Expected Pipe/ShankSpacing to be greater than 0 + Expected BoreholesOrTrenches/Count when extension/BorefieldConfiguration is not 'Rectangle' + Expected BorefieldConfiguration to be 'Rectangle' or 'Open Rectangle' or 'C' or 'L' or 'U' or 'Lopsided U' + + + [AirflowDefectRatio] diff --git a/HPXMLtoOpenStudio/resources/hvac.rb b/HPXMLtoOpenStudio/resources/hvac.rb index f23109904a..2eb6d16d1b 100644 --- a/HPXMLtoOpenStudio/resources/hvac.rb +++ b/HPXMLtoOpenStudio/resources/hvac.rb @@ -256,8 +256,8 @@ def self.apply_evaporative_cooler(model, cooling_system, sequential_cool_load_fr def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, sequential_heat_load_fracs, sequential_cool_load_fracs, - control_zone, ground_conductivity, hvac_unavailable_periods, - unit_multiplier) + control_zone, ground_conductivity, ground_diffusivity, + hvac_unavailable_periods, unit_multiplier) if unit_multiplier > 1 # FUTURE: Figure out how to allow this. If we allow it, update docs and hpxml_translator_test.rb too. @@ -267,7 +267,9 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, obj_name = Constants.ObjectNameGroundSourceHeatPump + geothermal_loop = heat_pump.geothermal_loop hp_ap = heat_pump.additional_properties + htg_cfm = heat_pump.heating_airflow_cfm clg_cfm = heat_pump.cooling_airflow_cfm htg_cfm_rated = heat_pump.airflow_defect_ratio.nil? ? htg_cfm : (htg_cfm / (1.0 + heat_pump.airflow_defect_ratio)) @@ -279,8 +281,8 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, end # Apply unit multiplier - hp_ap.GSHP_Loop_flow *= unit_multiplier - hp_ap.GSHP_Bore_Holes = hp_ap.GSHP_Bore_Holes.to_i * unit_multiplier + geothermal_loop.loop_flow *= unit_multiplier + geothermal_loop.num_bore_holes *= unit_multiplier # Cooling Coil clg_total_cap_curve = create_curve_quad_linear(model, hp_ap.cool_cap_curve_spec[0], obj_name + ' clg total cap curve') @@ -292,7 +294,7 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, clg_coil.setNominalTimeforCondensateRemovaltoBegin(1000) clg_coil.setRatioofInitialMoistureEvaporationRateandSteadyStateLatentCapacity(1.5) clg_coil.setRatedAirFlowRate(UnitConversions.convert(clg_cfm_rated, 'cfm', 'm^3/s')) - clg_coil.setRatedWaterFlowRate(UnitConversions.convert(hp_ap.GSHP_Loop_flow, 'gal/min', 'm^3/s')) + clg_coil.setRatedWaterFlowRate(UnitConversions.convert(geothermal_loop.loop_flow, 'gal/min', 'm^3/s')) clg_coil.setRatedTotalCoolingCapacity(UnitConversions.convert(heat_pump.cooling_capacity, 'Btu/hr', 'W')) clg_coil.setRatedSensibleCoolingCapacity(UnitConversions.convert(hp_ap.cooling_capacity_sensible, 'Btu/hr', 'W')) clg_coil.additionalProperties.setFeature('HPXML_ID', heat_pump.id) # Used by reporting measure @@ -304,7 +306,7 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, htg_coil.setName(obj_name + ' htg coil') htg_coil.setRatedHeatingCoefficientofPerformance(hp_ap.heat_rated_cops[0]) htg_coil.setRatedAirFlowRate(UnitConversions.convert(htg_cfm_rated, 'cfm', 'm^3/s')) - htg_coil.setRatedWaterFlowRate(UnitConversions.convert(hp_ap.GSHP_Loop_flow, 'gal/min', 'm^3/s')) + htg_coil.setRatedWaterFlowRate(UnitConversions.convert(geothermal_loop.loop_flow, 'gal/min', 'm^3/s')) htg_coil.setRatedHeatingCapacity(UnitConversions.convert(heat_pump.heating_capacity, 'Btu/hr', 'W')) htg_coil.additionalProperties.setFeature('HPXML_ID', heat_pump.id) # Used by reporting measure @@ -321,20 +323,20 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, # Ground Heat Exchanger ground_heat_exch_vert = OpenStudio::Model::GroundHeatExchangerVertical.new(model, xing) ground_heat_exch_vert.setName(obj_name + ' exchanger') - ground_heat_exch_vert.setBoreHoleRadius(UnitConversions.convert(hp_ap.bore_diameter / 2.0, 'in', 'm')) + ground_heat_exch_vert.setBoreHoleRadius(UnitConversions.convert(geothermal_loop.bore_diameter / 2.0, 'in', 'm')) ground_heat_exch_vert.setGroundThermalConductivity(UnitConversions.convert(ground_conductivity, 'Btu/(hr*ft*R)', 'W/(m*K)')) - ground_heat_exch_vert.setGroundThermalHeatCapacity(UnitConversions.convert(ground_conductivity / hp_ap.ground_diffusivity, 'Btu/(ft^3*F)', 'J/(m^3*K)')) + ground_heat_exch_vert.setGroundThermalHeatCapacity(UnitConversions.convert(ground_conductivity / ground_diffusivity, 'Btu/(ft^3*F)', 'J/(m^3*K)')) ground_heat_exch_vert.setGroundTemperature(UnitConversions.convert(weather.data.DeepGroundAnnualTemp, 'F', 'C')) - ground_heat_exch_vert.setGroutThermalConductivity(UnitConversions.convert(hp_ap.grout_conductivity, 'Btu/(hr*ft*R)', 'W/(m*K)')) - ground_heat_exch_vert.setPipeThermalConductivity(UnitConversions.convert(hp_ap.pipe_cond, 'Btu/(hr*ft*R)', 'W/(m*K)')) + ground_heat_exch_vert.setGroutThermalConductivity(UnitConversions.convert(geothermal_loop.grout_conductivity, 'Btu/(hr*ft*R)', 'W/(m*K)')) + ground_heat_exch_vert.setPipeThermalConductivity(UnitConversions.convert(geothermal_loop.pipe_conductivity, 'Btu/(hr*ft*R)', 'W/(m*K)')) ground_heat_exch_vert.setPipeOutDiameter(UnitConversions.convert(hp_ap.pipe_od, 'in', 'm')) - ground_heat_exch_vert.setUTubeDistance(UnitConversions.convert(hp_ap.shank_spacing, 'in', 'm')) + ground_heat_exch_vert.setUTubeDistance(UnitConversions.convert(geothermal_loop.shank_spacing, 'in', 'm')) ground_heat_exch_vert.setPipeThickness(UnitConversions.convert((hp_ap.pipe_od - hp_ap.pipe_id) / 2.0, 'in', 'm')) ground_heat_exch_vert.setMaximumLengthofSimulation(1) - ground_heat_exch_vert.setGFunctionReferenceRatio(0.0005) - ground_heat_exch_vert.setDesignFlowRate(UnitConversions.convert(hp_ap.GSHP_Loop_flow, 'gal/min', 'm^3/s')) - ground_heat_exch_vert.setNumberofBoreHoles(hp_ap.GSHP_Bore_Holes) - ground_heat_exch_vert.setBoreHoleLength(UnitConversions.convert(hp_ap.GSHP_Bore_Depth, 'ft', 'm')) + ground_heat_exch_vert.setDesignFlowRate(UnitConversions.convert(geothermal_loop.loop_flow, 'gal/min', 'm^3/s')) + ground_heat_exch_vert.setNumberofBoreHoles(geothermal_loop.num_bore_holes) + ground_heat_exch_vert.setBoreHoleLength(UnitConversions.convert(geothermal_loop.bore_length, 'ft', 'm')) + ground_heat_exch_vert.setGFunctionReferenceRatio(ground_heat_exch_vert.boreHoleRadius.get / ground_heat_exch_vert.boreHoleLength.get) # ensure this ratio is consistent with rb/H so that g values will be taken as-is ground_heat_exch_vert.removeAllGFunctions for i in 0..(hp_ap.GSHP_G_Functions[0].size - 1) ground_heat_exch_vert.addGFunction(hp_ap.GSHP_G_Functions[0][i], hp_ap.GSHP_G_Functions[1][i]) @@ -360,7 +362,7 @@ def self.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump, plant_loop.addSupplyBranchForComponent(ground_heat_exch_vert) plant_loop.addDemandBranchForComponent(htg_coil) plant_loop.addDemandBranchForComponent(clg_coil) - plant_loop.setMaximumLoopFlowRate(UnitConversions.convert(hp_ap.GSHP_Loop_flow, 'gal/min', 'm^3/s')) + plant_loop.setMaximumLoopFlowRate(UnitConversions.convert(geothermal_loop.loop_flow, 'gal/min', 'm^3/s')) sizing_plant = plant_loop.sizingPlant sizing_plant.setLoopType('Condenser') @@ -2812,33 +2814,32 @@ def self.get_unitary_system_from_air_loop_hvac(air_loop) def self.set_gshp_assumptions(heat_pump, weather) hp_ap = heat_pump.additional_properties + geothermal_loop = heat_pump.geothermal_loop hp_ap.design_chw = [85.0, weather.design.CoolingDrybulb - 15.0, weather.data.DeepGroundAnnualTemp + 10.0].max # Temperature of water entering indoor coil,use 85F as lower bound hp_ap.design_delta_t = 10.0 hp_ap.fluid_type = Constants.FluidPropyleneGlycol - hp_ap.frac_glycol = 0.3 + hp_ap.frac_glycol = 0.2 # This was changed from 0.3 to 0.2 -- more typical based on experts/spec sheets if hp_ap.fluid_type == Constants.FluidWater hp_ap.design_hw = [45.0, weather.design.HeatingDrybulb + 35.0, weather.data.DeepGroundAnnualTemp - 10.0].max # Temperature of fluid entering indoor coil, use 45F as lower bound for water else hp_ap.design_hw = [35.0, weather.design.HeatingDrybulb + 35.0, weather.data.DeepGroundAnnualTemp - 10.0].min # Temperature of fluid entering indoor coil, use 35F as upper bound end - hp_ap.ground_diffusivity = 0.0208 - hp_ap.grout_conductivity = 0.4 # Btu/h-ft-R - hp_ap.bore_diameter = 5.0 # in - hp_ap.pipe_size = 0.75 # in + pipe_diameter = geothermal_loop.pipe_diameter # Pipe nominal size conversion to pipe outside diameter and inside diameter, # only pipe sizes <= 2" are used here with DR11 (dimension ratio), - if hp_ap.pipe_size == 0.75 # 3/4" pipe + if pipe_diameter == 0.75 # 3/4" pipe hp_ap.pipe_od = 1.050 # in hp_ap.pipe_id = 0.859 # in - elsif hp_ap.pipe_size == 1.0 # 1" pipe + elsif pipe_diameter == 1.0 # 1" pipe hp_ap.pipe_od = 1.315 # in hp_ap.pipe_id = 1.076 # in - elsif hp_ap.pipe_size == 1.25 # 1-1/4" pipe + elsif pipe_diameter == 1.25 # 1-1/4" pipe hp_ap.pipe_od = 1.660 # in hp_ap.pipe_id = 1.358 # in + else + fail "Unexpected pipe size: #{pipe_diameter}" end - hp_ap.pipe_cond = 0.23 # Btu/h-ft-R; Pipe thermal conductivity, default to high density polyethylene hp_ap.u_tube_spacing_type = 'b' # Calculate distance between pipes if hp_ap.u_tube_spacing_type == 'as' @@ -2849,9 +2850,8 @@ def self.set_gshp_assumptions(heat_pump, weather) hp_ap.u_tube_spacing = 0.9661 elsif hp_ap.u_tube_spacing_type == 'c' # Both tubes placed against outer edge of borehole - hp_ap.u_tube_spacing = hp_ap.bore_diameter - 2 * hp_ap.pipe_od + hp_ap.u_tube_spacing = geothermal_loop.bore_diameter - 2 * hp_ap.pipe_od end - hp_ap.shank_spacing = hp_ap.u_tube_spacing + hp_ap.pipe_od # Distance from center of pipe to center of pipe end def self.calc_sequential_load_fractions(load_fraction, remaining_fraction, availability_days) diff --git a/HPXMLtoOpenStudio/resources/hvac_sizing.rb b/HPXMLtoOpenStudio/resources/hvac_sizing.rb index 67c0e72e7c..87fa244b52 100644 --- a/HPXMLtoOpenStudio/resources/hvac_sizing.rb +++ b/HPXMLtoOpenStudio/resources/hvac_sizing.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class HVACSizing - def self.calculate(weather, hpxml_bldg, cfa, hvac_systems) + def self.calculate(runner, weather, hpxml_bldg, cfa, hvac_systems) # Calculates heating/cooling design loads, and selects equipment # values (e.g., capacities, airflows) specific to each HVAC system. # Calculations generally follow ACCA Manual J/S. @@ -45,10 +45,10 @@ def self.calculate(weather, hpxml_bldg, cfa, hvac_systems) apply_hvac_loads(hvac_heating, hvac_sizing_values, system_design_loads, ducts_heat_load, ducts_cool_load_sens, ducts_cool_load_lat) apply_hvac_size_limits(hvac_cooling) apply_hvac_heat_pump_logic(hvac_sizing_values, hvac_cooling) - apply_hvac_equipment_adjustments(hvac_sizing_values, weather, hvac_heating, hvac_cooling, hvac_system) + apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, hvac_heating, hvac_cooling, hvac_system) apply_hvac_installation_quality(hvac_sizing_values, hvac_heating, hvac_cooling) apply_hvac_fixed_capacities(hvac_sizing_values, hvac_heating, hvac_cooling) - apply_hvac_ground_loop(hvac_sizing_values, weather, hvac_cooling) + apply_hvac_ground_loop(runner, hvac_sizing_values, weather, hvac_cooling) apply_hvac_finalize_airflows(hvac_sizing_values, hvac_heating, hvac_cooling) all_hvac_sizing_values[hvac_system] = hvac_sizing_values @@ -1324,7 +1324,7 @@ def self.apply_load_ducts(bldg_design_loads, total_ducts_heat_load, total_ducts_ bldg_design_loads.Cool_Tot += total_ducts_cool_load_sens.to_f + total_ducts_cool_load_lat.to_f end - def self.apply_hvac_equipment_adjustments(hvac_sizing_values, weather, hvac_heating, hvac_cooling, hvac_system) + def self.apply_hvac_equipment_adjustments(runner, hvac_sizing_values, weather, hvac_heating, hvac_cooling, hvac_system) ''' Equipment Adjustments ''' @@ -1602,7 +1602,7 @@ def self.apply_hvac_equipment_adjustments(hvac_sizing_values, weather, hvac_heat if hvac_heating.is_a?(HPXML::HeatPump) && (@hpxml_bldg.header.heat_pump_sizing_methodology == HPXML::HeatPumpSizingHERS) hvac_sizing_values.Heat_Capacity = hvac_sizing_values.Heat_Load else - process_heat_pump_adjustment(hvac_sizing_values, weather, hvac_heating, total_cap_curve_value, hvac_system, hvac_heating_speed) + process_heat_pump_adjustment(runner, hvac_sizing_values, weather, hvac_heating, total_cap_curve_value, hvac_system, hvac_heating_speed) end hvac_sizing_values.Heat_Capacity_Supp = hvac_sizing_values.Heat_Load_Supp @@ -1922,96 +1922,138 @@ def self.apply_hvac_fixed_capacities(hvac_sizing_values, hvac_heating, hvac_cool end end - def self.apply_hvac_ground_loop(hvac_sizing_values, weather, hvac_cooling) + def self.apply_hvac_ground_loop(runner, hvac_sizing_values, weather, hvac_cooling) ''' GSHP Ground Loop Sizing Calculations ''' return if @cooling_type != HPXML::HVACTypeHeatPumpGroundToAir - hvac_cooling_ap = hvac_cooling.additional_properties + geothermal_loop = hvac_cooling.geothermal_loop + bore_spacing = geothermal_loop.bore_spacing + bore_diameter = geothermal_loop.bore_diameter - # Autosize ground loop heat exchanger length - bore_spacing = 20.0 # ft, distance between bores - pipe_r_value = gshp_hx_pipe_rvalue(hvac_cooling_ap) - nom_length_heat, nom_length_cool = gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, pipe_r_value) - - bore_length_heat = nom_length_heat * hvac_sizing_values.Heat_Capacity / UnitConversions.convert(1.0, 'ton', 'Btu/hr') - bore_length_cool = nom_length_cool * hvac_sizing_values.Cool_Capacity / UnitConversions.convert(1.0, 'ton', 'Btu/hr') - bore_length = [bore_length_heat, bore_length_cool].max - - loop_flow = [1.0, UnitConversions.convert([hvac_sizing_values.Heat_Capacity, hvac_sizing_values.Cool_Capacity].max, 'Btu/hr', 'ton')].max.floor * 3.0 - - num_bore_holes = [1, (UnitConversions.convert(hvac_sizing_values.Cool_Capacity, 'Btu/hr', 'ton') + 0.5).floor].max - bore_depth = (bore_length / num_bore_holes).floor # ft - min_bore_depth = 0.15 * bore_spacing # 0.15 is the maximum Spacing2DepthRatio defined for the G-function - - for _i in 0..4 - if (bore_depth < min_bore_depth) && (num_bore_holes > 1) - num_bore_holes -= 1 - bore_depth = (bore_length / num_bore_holes).floor - elsif bore_depth > 345 - num_bore_holes += 1 - bore_depth = (bore_length / num_bore_holes).floor - end - end - - bore_depth = (bore_length / num_bore_holes).floor + 5 - - if num_bore_holes == 1 - bore_config = 'single' - elsif num_bore_holes == 2 - bore_config = 'line' - elsif num_bore_holes == 3 - bore_config = 'line' - elsif num_bore_holes == 4 - bore_config = 'rectangle' - elsif num_bore_holes == 5 - bore_config = 'u-config' - elsif num_bore_holes > 5 - bore_config = 'line' - end - - # Test for valid GSHP bore field configurations - valid_configs = { 'single' => [1], - 'line' => [2, 3, 4, 5, 6, 7, 8, 9, 10], - 'l-config' => [3, 4, 5, 6], - 'rectangle' => [2, 4, 6, 8], - 'u-config' => [5, 7, 9], - 'l2-config' => [8], - 'open-rectangle' => [8] } - valid_num_bores = valid_configs[bore_config] - max_valid_configs = { 'line' => 10, 'l-config' => 6 } - unless valid_num_bores.include? num_bore_holes - # Any configuration with a max_valid_configs value can accept any number of bores up to the maximum - if max_valid_configs.keys.include? bore_config - max_num_bore_holes = max_valid_configs[bore_config] - num_bore_holes = max_num_bore_holes - else - # Search for first valid bore field - new_bore_config = nil - valid_configs.keys.each do |bore_config| - next unless valid_configs[bore_config].include? num_bore_holes + loop_flow = geothermal_loop.loop_flow + if loop_flow.nil? + loop_flow = [1.0, UnitConversions.convert([hvac_sizing_values.Heat_Capacity, hvac_sizing_values.Cool_Capacity].max, 'Btu/hr', 'ton')].max.floor * 3.0 + end - new_bore_config = bore_config - break - end - if not new_bore_config.nil? - bore_config = new_bore_config - else - fail 'Could not construct a valid GSHP bore field configuration.' + 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 + # 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 + min_num_boreholes = 1 + max_num_boreholes = 10 + + if num_bore_holes.nil? || bore_depth.nil? + # Autosize ground loop heat exchanger length + hvac_cooling_ap = hvac_cooling.additional_properties + grout_conductivity = geothermal_loop.grout_conductivity + pipe_r_value = gshp_hx_pipe_rvalue(hvac_cooling) + nom_length_heat, nom_length_cool = gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, bore_diameter, grout_conductivity, pipe_r_value) + bore_length_heat = nom_length_heat * hvac_sizing_values.Heat_Capacity / UnitConversions.convert(1.0, 'ton', 'Btu/hr') + bore_length_cool = nom_length_cool * hvac_sizing_values.Cool_Capacity / UnitConversions.convert(1.0, 'ton', 'Btu/hr') + bore_length = [bore_length_heat, bore_length_cool].max + + if num_bore_holes.nil? && bore_depth.nil? + num_bore_holes = [min_num_boreholes, (UnitConversions.convert(hvac_sizing_values.Cool_Capacity, 'Btu/hr', 'ton') + 0.5).floor].max + + # Divide length by number of boreholes for average bore depth + bore_depth = (bore_length / num_bore_holes).floor # ft + + # Adjust number of boreholes and bore depth to get within min/max constraints + for _i in 0..50 + if (bore_depth < min_bore_depth) || (num_bore_holes > max_num_boreholes) + num_bore_holes -= 1 + bore_depth = (bore_length / num_bore_holes).floor + elsif (bore_depth > max_bore_depth) || (num_bore_holes < min_num_boreholes) + num_bore_holes += 1 + bore_depth = (bore_length / num_bore_holes).floor + end + + if ((num_bore_holes == min_num_boreholes) && (bore_depth < min_bore_depth)) || ((num_bore_holes == max_num_boreholes) && (bore_depth > max_bore_depth)) + break # we can't do any better + end end + elsif num_bore_holes.nil? + # Calculate number of boreholes to achieve total autosized length + num_bore_holes = (bore_length / bore_depth).floor + num_bore_holes = [num_bore_holes, max_num_boreholes].min + num_bore_holes = [num_bore_holes, min_num_boreholes].max + elsif bore_depth.nil? + # Calculate bore depth to achieve total autosized length + bore_depth = (bore_length / num_bore_holes).floor # ft end end - spacing_to_depth_ratio = bore_spacing / bore_depth + if bore_depth < min_bore_depth + bore_depth = min_bore_depth + runner.registerWarning("Reached a minimum of #{min_num_boreholes} borehole; setting bore depth to the minimum (#{min_bore_depth} ft).") + end + + if bore_depth > max_bore_depth + bore_depth = max_bore_depth + runner.registerWarning("Reached a maximum of #{max_num_boreholes} boreholes; setting bore depth to the maximum (#{max_bore_depth} ft).") + end + + bore_config = geothermal_loop.bore_config + if bore_config.nil? + bore_config = HPXML::GeothermalLoopBorefieldConfigurationRectangle + end - lntts = [-8.5, -7.8, -7.2, -6.5, -5.9, -5.2, -4.5, -3.963, -3.27, -2.864, -2.577, -2.171, -1.884, -1.191, -0.497, -0.274, -0.051, 0.196, 0.419, 0.642, 0.873, 1.112, 1.335, 1.679, 2.028, 2.275, 3.003] - gfnc_coeff = gshp_gfnc_coeff(bore_config, num_bore_holes, spacing_to_depth_ratio) + valid_configs = valid_bore_configs + g_functions_filename = valid_configs[bore_config] + g_functions_json = get_g_functions_json(g_functions_filename) + valid_num_bores = get_valid_num_bores(g_functions_json) + + unless valid_num_bores.include? num_bore_holes + fail "Number of bore holes (#{num_bore_holes}) with borefield configuration '#{bore_config}' not supported." + end + + lntts, gfnc_coeff = gshp_gfnc_coeff(bore_config, g_functions_json, num_bore_holes, bore_spacing, bore_depth, bore_diameter) hvac_sizing_values.GSHP_Loop_flow = loop_flow hvac_sizing_values.GSHP_Bore_Depth = bore_depth hvac_sizing_values.GSHP_Bore_Holes = num_bore_holes hvac_sizing_values.GSHP_G_Functions = [lntts, gfnc_coeff] + hvac_sizing_values.GSHP_Bore_Config = bore_config + end + + def self.valid_bore_configs + valid_configs = { HPXML::GeothermalLoopBorefieldConfigurationRectangle => 'rectangle_5m_v1.0.json', + HPXML::GeothermalLoopBorefieldConfigurationOpenRectangle => 'Open_configurations_5m_v1.0.json', + HPXML::GeothermalLoopBorefieldConfigurationC => 'C_configurations_5m_v1.0.json', + HPXML::GeothermalLoopBorefieldConfigurationL => 'L_configurations_5m_v1.0.json', + HPXML::GeothermalLoopBorefieldConfigurationU => 'U_configurations_5m_v1.0.json', + HPXML::GeothermalLoopBorefieldConfigurationLopsidedU => 'LopU_configurations_5m_v1.0.json' } + return valid_configs + end + + def self.get_g_functions_json(g_functions_filename) + require 'json' + + g_functions_filepath = File.join(File.dirname(__FILE__), 'data/g_functions', g_functions_filename) + g_functions_json = JSON.parse(File.read(g_functions_filepath), symbolize_names: true) + return g_functions_json + end + + def self.get_valid_num_bores(g_functions_json) + valid_num_bores = [] + g_functions_json.each do |_key_1, values_1| + if values_1.keys.include?(:bore_locations) + valid_num_bores << values_1[:bore_locations].size + else + values_1.each do |_key_2, values_2| + if values_2.keys.include?(:bore_locations) + valid_num_bores << values_2[:bore_locations].size + end + end + end + end + + return valid_num_bores end def self.apply_hvac_finalize_airflows(hvac_sizing_values, hvac_heating, hvac_cooling) @@ -2032,7 +2074,7 @@ def self.apply_hvac_finalize_airflows(hvac_sizing_values, hvac_heating, hvac_coo end end - def self.process_heat_pump_adjustment(hvac_sizing_values, weather, hvac_heating, total_cap_curve_value, hvac_system, hvac_heating_speed) + def self.process_heat_pump_adjustment(runner, hvac_sizing_values, weather, hvac_heating, total_cap_curve_value, hvac_system, hvac_heating_speed) ''' Adjust heat pump sizing ''' @@ -2052,7 +2094,7 @@ def self.process_heat_pump_adjustment(hvac_sizing_values, weather, hvac_heating, # Calculate the heating load at the switchover temperature to limit unutilized capacity temp_heat_design_temp = @hpxml_bldg.header.manualj_heating_design_temp @hpxml_bldg.header.manualj_heating_design_temp = min_compressor_temp - _alternate_bldg_design_loads, alternate_all_hvac_sizing_values = calculate(weather, @hpxml_bldg, @cfa, [hvac_system]) + _alternate_bldg_design_loads, alternate_all_hvac_sizing_values = calculate(runner, weather, @hpxml_bldg, @cfa, [hvac_system]) heating_load = alternate_all_hvac_sizing_values[hvac_system].Heat_Load heating_db = min_compressor_temp @hpxml_bldg.header.manualj_heating_design_temp = temp_heat_design_temp @@ -2715,12 +2757,14 @@ def self.gshp_coil_bf_ft_spec return [1.21005458, -0.00664200, 0.00000000, 0.00348246, 0.00000000, 0.00000000] end - def self.gshp_hx_pipe_rvalue(hvac_cooling_ap) + def self.gshp_hx_pipe_rvalue(hvac_cooling) + hvac_cooling_ap = hvac_cooling.additional_properties + # Thermal Resistance of Pipe - return Math.log(hvac_cooling_ap.pipe_od / hvac_cooling_ap.pipe_id) / 2.0 / Math::PI / hvac_cooling_ap.pipe_cond + return Math.log(hvac_cooling_ap.pipe_od / hvac_cooling_ap.pipe_id) / 2.0 / Math::PI / hvac_cooling.geothermal_loop.pipe_conductivity end - def self.gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, pipe_r_value) + def self.gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, bore_diameter, grout_conductivity, pipe_r_value) if hvac_cooling_ap.u_tube_spacing_type == 'b' beta_0 = 17.4427 beta_1 = -0.6052 @@ -2732,8 +2776,8 @@ def self.gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, pipe_r_v beta_1 = -0.94467 end - r_value_ground = Math.log(bore_spacing / hvac_cooling_ap.bore_diameter * 12.0) / 2.0 / Math::PI / @hpxml_bldg.site.ground_conductivity - r_value_grout = 1.0 / hvac_cooling_ap.grout_conductivity / beta_0 / ((hvac_cooling_ap.bore_diameter / hvac_cooling_ap.pipe_od)**beta_1) + r_value_ground = Math.log(bore_spacing / bore_diameter * 12.0) / 2.0 / Math::PI / @hpxml_bldg.site.ground_conductivity + r_value_grout = 1.0 / grout_conductivity / beta_0 / ((bore_diameter / hvac_cooling_ap.pipe_od)**beta_1) r_value_bore = r_value_grout + pipe_r_value / 2.0 # Note: Convection resistance is negligible when calculated against Glhepro (Jeffrey D. Spitler, 2000) is_southern_hemisphere = (weather.header.Latitude < 0) @@ -2755,325 +2799,88 @@ def self.gshp_hxbore_ft_per_ton(weather, hvac_cooling_ap, bore_spacing, pipe_r_v return nom_length_heat, nom_length_cool end - def self.gshp_gfnc_coeff(bore_config, num_bore_holes, spacing_to_depth_ratio) - # Set GFNC coefficients - gfnc_coeff = nil - if bore_config == 'single' - gfnc_coeff = 2.681, 3.024, 3.320, 3.666, 3.963, 4.306, 4.645, 4.899, 5.222, 5.405, 5.531, 5.704, 5.821, 6.082, 6.304, 6.366, 6.422, 6.477, 6.520, 6.558, 6.591, 6.619, 6.640, 6.665, 6.893, 6.694, 6.715 - elsif bore_config == 'line' - if num_bore_holes == 2 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.681, 3.043, 3.397, 3.9, 4.387, 5.005, 5.644, 6.137, 6.77, 7.131, 7.381, 7.722, 7.953, 8.462, 8.9, 9.022, 9.13, 9.238, 9.323, 9.396, 9.46, 9.515, 9.556, 9.604, 9.636, 9.652, 9.678 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.024, 3.332, 3.734, 4.143, 4.691, 5.29, 5.756, 6.383, 6.741, 6.988, 7.326, 7.557, 8.058, 8.5, 8.622, 8.731, 8.839, 8.923, 8.997, 9.061, 9.115, 9.156, 9.203, 9.236, 9.252, 9.277 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.668, 3.988, 4.416, 4.921, 5.323, 5.925, 6.27, 6.512, 6.844, 7.073, 7.574, 8.015, 8.137, 8.247, 8.354, 8.439, 8.511, 8.575, 8.629, 8.67, 8.718, 8.75, 8.765, 8.791 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.31, 4.672, 4.919, 5.406, 5.711, 5.932, 6.246, 6.465, 6.945, 7.396, 7.52, 7.636, 7.746, 7.831, 7.905, 7.969, 8.024, 8.066, 8.113, 8.146, 8.161, 8.187 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.648, 4.835, 5.232, 5.489, 5.682, 5.964, 6.166, 6.65, 7.087, 7.208, 7.32, 7.433, 7.52, 7.595, 7.661, 7.717, 7.758, 7.806, 7.839, 7.855, 7.88 - end - elsif num_bore_holes == 3 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.682, 3.05, 3.425, 3.992, 4.575, 5.366, 6.24, 6.939, 7.86, 8.39, 8.759, 9.263, 9.605, 10.358, 11.006, 11.185, 11.345, 11.503, 11.628, 11.736, 11.831, 11.911, 11.971, 12.041, 12.089, 12.112, 12.151 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.336, 3.758, 4.21, 4.855, 5.616, 6.243, 7.124, 7.639, 7.999, 8.493, 8.833, 9.568, 10.22, 10.399, 10.56, 10.718, 10.841, 10.949, 11.043, 11.122, 11.182, 11.252, 11.299, 11.322, 11.36 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.67, 3.997, 4.454, 5.029, 5.517, 6.298, 6.768, 7.106, 7.578, 7.907, 8.629, 9.274, 9.452, 9.612, 9.769, 9.893, 9.999, 10.092, 10.171, 10.231, 10.3, 10.347, 10.37, 10.407 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.311, 4.681, 4.942, 5.484, 5.844, 6.116, 6.518, 6.807, 7.453, 8.091, 8.269, 8.435, 8.595, 8.719, 8.826, 8.919, 8.999, 9.06, 9.128, 9.175, 9.198, 9.235 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.649, 4.836, 5.25, 5.53, 5.746, 6.076, 6.321, 6.924, 7.509, 7.678, 7.836, 7.997, 8.121, 8.229, 8.325, 8.405, 8.465, 8.535, 8.582, 8.605, 8.642 - end - elsif num_bore_holes == 4 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.682, 3.054, 3.438, 4.039, 4.676, 5.575, 6.619, 7.487, 8.662, 9.35, 9.832, 10.492, 10.943, 11.935, 12.787, 13.022, 13.232, 13.44, 13.604, 13.745, 13.869, 13.975, 14.054, 14.145, 14.208, 14.238, 14.289 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.339, 3.77, 4.244, 4.941, 5.798, 6.539, 7.622, 8.273, 8.734, 9.373, 9.814, 10.777, 11.63, 11.864, 12.074, 12.282, 12.443, 12.584, 12.706, 12.81, 12.888, 12.979, 13.041, 13.071, 13.12 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.001, 4.474, 5.086, 5.62, 6.514, 7.075, 7.487, 8.075, 8.49, 9.418, 10.253, 10.484, 10.692, 10.897, 11.057, 11.195, 11.316, 11.419, 11.497, 11.587, 11.647, 11.677, 11.726 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.311, 4.686, 4.953, 5.523, 5.913, 6.214, 6.67, 7.005, 7.78, 8.574, 8.798, 9.011, 9.215, 9.373, 9.512, 9.632, 9.735, 9.814, 9.903, 9.963, 9.993, 10.041 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.649, 4.837, 5.259, 5.55, 5.779, 6.133, 6.402, 7.084, 7.777, 7.983, 8.178, 8.379, 8.536, 8.672, 8.795, 8.898, 8.975, 9.064, 9.125, 9.155, 9.203 - end - elsif num_bore_holes == 5 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.056, 3.446, 4.067, 4.737, 5.709, 6.877, 7.879, 9.272, 10.103, 10.69, 11.499, 12.053, 13.278, 14.329, 14.618, 14.878, 15.134, 15.336, 15.51, 15.663, 15.792, 15.89, 16.002, 16.079, 16.117, 16.179 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.34, 3.777, 4.265, 4.993, 5.913, 6.735, 7.974, 8.737, 9.285, 10.054, 10.591, 11.768, 12.815, 13.103, 13.361, 13.616, 13.814, 13.987, 14.137, 14.264, 14.36, 14.471, 14.548, 14.584, 14.645 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.004, 4.485, 5.12, 5.683, 6.653, 7.279, 7.747, 8.427, 8.914, 10.024, 11.035, 11.316, 11.571, 11.82, 12.016, 12.185, 12.332, 12.458, 12.553, 12.663, 12.737, 12.773, 12.833 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.688, 4.96, 5.547, 5.955, 6.274, 6.764, 7.132, 8.002, 8.921, 9.186, 9.439, 9.683, 9.873, 10.041, 10.186, 10.311, 10.406, 10.514, 10.588, 10.624, 10.683 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.837, 5.264, 5.562, 5.798, 6.168, 6.452, 7.186, 7.956, 8.191, 8.415, 8.649, 8.834, 8.995, 9.141, 9.265, 9.357, 9.465, 9.539, 9.575, 9.634 - end - elsif num_bore_holes == 6 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.057, 3.452, 4.086, 4.779, 5.8, 7.06, 8.162, 9.74, 10.701, 11.385, 12.334, 12.987, 14.439, 15.684, 16.027, 16.335, 16.638, 16.877, 17.083, 17.264, 17.417, 17.532, 17.665, 17.756, 17.801, 17.874 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.341, 3.782, 4.278, 5.029, 5.992, 6.87, 8.226, 9.081, 9.704, 10.59, 11.212, 12.596, 13.828, 14.168, 14.473, 14.773, 15.007, 15.211, 15.388, 15.538, 15.652, 15.783, 15.872, 15.916, 15.987 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.005, 4.493, 5.143, 5.726, 6.747, 7.42, 7.93, 8.681, 9.227, 10.5, 11.672, 12.001, 12.299, 12.591, 12.821, 13.019, 13.192, 13.34, 13.452, 13.581, 13.668, 13.71, 13.78 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.69, 4.964, 5.563, 5.983, 6.314, 6.828, 7.218, 8.159, 9.179, 9.479, 9.766, 10.045, 10.265, 10.458, 10.627, 10.773, 10.883, 11.01, 11.096, 11.138, 11.207 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.268, 5.57, 5.811, 6.191, 6.485, 7.256, 8.082, 8.339, 8.586, 8.848, 9.055, 9.238, 9.404, 9.546, 9.653, 9.778, 9.864, 9.907, 9.976 - end - elsif num_bore_holes == 7 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.058, 3.456, 4.1, 4.809, 5.867, 7.195, 8.38, 10.114, 11.189, 11.961, 13.04, 13.786, 15.456, 16.89, 17.286, 17.64, 17.989, 18.264, 18.501, 18.709, 18.886, 19.019, 19.172, 19.276, 19.328, 19.412 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.342, 3.785, 4.288, 5.054, 6.05, 6.969, 8.418, 9.349, 10.036, 11.023, 11.724, 13.296, 14.706, 15.096, 15.446, 15.791, 16.059, 16.293, 16.497, 16.668, 16.799, 16.949, 17.052, 17.102, 17.183 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.007, 4.499, 5.159, 5.756, 6.816, 7.524, 8.066, 8.874, 9.469, 10.881, 12.2, 12.573, 12.912, 13.245, 13.508, 13.734, 13.932, 14.1, 14.228, 14.376, 14.475, 14.524, 14.604 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.691, 4.967, 5.574, 6.003, 6.343, 6.874, 7.28, 8.276, 9.377, 9.706, 10.022, 10.333, 10.578, 10.795, 10.985, 11.15, 11.276, 11.419, 11.518, 11.565, 11.644 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.27, 5.576, 5.821, 6.208, 6.509, 7.307, 8.175, 8.449, 8.715, 8.998, 9.224, 9.426, 9.61, 9.768, 9.887, 10.028, 10.126, 10.174, 10.252 - end - elsif num_bore_holes == 8 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.059, 3.459, 4.11, 4.832, 5.918, 7.3, 8.55, 10.416, 11.59, 12.442, 13.641, 14.475, 16.351, 17.97, 18.417, 18.817, 19.211, 19.522, 19.789, 20.024, 20.223, 20.373, 20.546, 20.664, 20.721, 20.816 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.342, 3.788, 4.295, 5.073, 6.093, 7.045, 8.567, 9.56, 10.301, 11.376, 12.147, 13.892, 15.472, 15.911, 16.304, 16.692, 16.993, 17.257, 17.486, 17.679, 17.826, 17.995, 18.111, 18.167, 18.259 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.008, 4.503, 5.171, 5.779, 6.868, 7.603, 8.17, 9.024, 9.659, 11.187, 12.64, 13.055, 13.432, 13.804, 14.098, 14.351, 14.573, 14.762, 14.905, 15.07, 15.182, 15.237, 15.326 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.692, 4.97, 5.583, 6.018, 6.364, 6.909, 7.327, 8.366, 9.531, 9.883, 10.225, 10.562, 10.83, 11.069, 11.28, 11.463, 11.602, 11.762, 11.872, 11.925, 12.013 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.272, 5.58, 5.828, 6.22, 6.527, 7.345, 8.246, 8.533, 8.814, 9.114, 9.356, 9.573, 9.772, 9.944, 10.076, 10.231, 10.34, 10.393, 10.481 - end - elsif num_bore_holes == 9 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.06, 3.461, 4.118, 4.849, 5.958, 7.383, 8.687, 10.665, 11.927, 12.851, 14.159, 15.075, 17.149, 18.947, 19.443, 19.888, 20.326, 20.672, 20.969, 21.23, 21.452, 21.618, 21.81, 21.941, 22.005, 22.11 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.342, 3.79, 4.301, 5.088, 6.127, 7.105, 8.686, 9.732, 10.519, 11.671, 12.504, 14.408, 16.149, 16.633, 17.069, 17.499, 17.833, 18.125, 18.379, 18.593, 18.756, 18.943, 19.071, 19.133, 19.235 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.008, 4.506, 5.181, 5.797, 6.909, 7.665, 8.253, 9.144, 9.813, 11.441, 13.015, 13.468, 13.881, 14.29, 14.613, 14.892, 15.136, 15.345, 15.503, 15.686, 15.809, 15.87, 15.969 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.693, 4.972, 5.589, 6.03, 6.381, 6.936, 7.364, 8.436, 9.655, 10.027, 10.391, 10.751, 11.04, 11.298, 11.527, 11.726, 11.879, 12.054, 12.175, 12.234, 12.331 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.273, 5.584, 5.833, 6.23, 6.541, 7.375, 8.302, 8.6, 8.892, 9.208, 9.463, 9.692, 9.905, 10.089, 10.231, 10.4, 10.518, 10.576, 10.673 - end - elsif num_bore_holes == 10 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.06, 3.463, 4.125, 4.863, 5.99, 7.45, 8.799, 10.872, 12.211, 13.197, 14.605, 15.598, 17.863, 19.834, 20.379, 20.867, 21.348, 21.728, 22.055, 22.342, 22.585, 22.767, 22.978, 23.122, 23.192, 23.307 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.026, 3.343, 3.792, 4.306, 5.1, 6.154, 7.153, 8.784, 9.873, 10.699, 11.918, 12.805, 14.857, 16.749, 17.278, 17.755, 18.225, 18.591, 18.91, 19.189, 19.423, 19.601, 19.807, 19.947, 20.015, 20.126 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.009, 4.509, 5.189, 5.812, 6.942, 7.716, 8.32, 9.242, 9.939, 11.654, 13.336, 13.824, 14.271, 14.714, 15.065, 15.368, 15.635, 15.863, 16.036, 16.235, 16.37, 16.435, 16.544 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.694, 4.973, 5.595, 6.039, 6.395, 6.958, 7.394, 8.493, 9.757, 10.146, 10.528, 10.909, 11.215, 11.491, 11.736, 11.951, 12.116, 12.306, 12.437, 12.501, 12.607 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.275, 5.587, 5.837, 6.238, 6.552, 7.399, 8.347, 8.654, 8.956, 9.283, 9.549, 9.79, 10.014, 10.209, 10.36, 10.541, 10.669, 10.732, 10.837 - end - end - elsif bore_config == 'l-config' - if num_bore_holes == 3 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.682, 3.052, 3.435, 4.036, 4.668, 5.519, 6.435, 7.155, 8.091, 8.626, 8.997, 9.504, 9.847, 10.605, 11.256, 11.434, 11.596, 11.755, 11.88, 11.988, 12.083, 12.163, 12.224, 12.294, 12.342, 12.365, 12.405 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.337, 3.767, 4.242, 4.937, 5.754, 6.419, 7.33, 7.856, 8.221, 8.721, 9.063, 9.818, 10.463, 10.641, 10.801, 10.959, 11.084, 11.191, 11.285, 11.365, 11.425, 11.495, 11.542, 11.565, 11.603 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.67, 3.999, 4.472, 5.089, 5.615, 6.449, 6.942, 7.292, 7.777, 8.111, 8.847, 9.497, 9.674, 9.836, 9.993, 10.117, 10.224, 10.317, 10.397, 10.457, 10.525, 10.573, 10.595, 10.633 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.311, 4.684, 4.95, 5.525, 5.915, 6.209, 6.64, 6.946, 7.645, 8.289, 8.466, 8.63, 8.787, 8.912, 9.018, 9.112, 9.192, 9.251, 9.32, 9.367, 9.39, 9.427 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.649, 4.836, 5.255, 5.547, 5.777, 6.132, 6.397, 7.069, 7.673, 7.848, 8.005, 8.161, 8.29, 8.397, 8.492, 8.571, 8.631, 8.7, 8.748, 8.771, 8.808 - end - elsif num_bore_holes == 4 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.055, 3.446, 4.075, 4.759, 5.729, 6.841, 7.753, 8.96, 9.659, 10.147, 10.813, 11.266, 12.265, 13.122, 13.356, 13.569, 13.778, 13.942, 14.084, 14.208, 14.314, 14.393, 14.485, 14.548, 14.579, 14.63 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.339, 3.777, 4.27, 5.015, 5.945, 6.739, 7.875, 8.547, 9.018, 9.668, 10.116, 11.107, 11.953, 12.186, 12.395, 12.603, 12.766, 12.906, 13.029, 13.133, 13.212, 13.303, 13.365, 13.395, 13.445 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.003, 4.488, 5.137, 5.713, 6.678, 7.274, 7.707, 8.319, 8.747, 9.698, 10.543, 10.774, 10.984, 11.19, 11.351, 11.49, 11.612, 11.715, 11.793, 11.882, 11.944, 11.974, 12.022 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.311, 4.688, 4.959, 5.558, 5.976, 6.302, 6.794, 7.155, 8.008, 8.819, 9.044, 9.255, 9.456, 9.618, 9.755, 9.877, 9.98, 10.057, 10.146, 10.207, 10.236, 10.285 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.649, 4.837, 5.263, 5.563, 5.804, 6.183, 6.473, 7.243, 7.969, 8.185, 8.382, 8.58, 8.743, 8.88, 9.001, 9.104, 9.181, 9.27, 9.332, 9.361, 9.409 - end - elsif num_bore_holes == 5 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.057, 3.453, 4.097, 4.806, 5.842, 7.083, 8.14, 9.579, 10.427, 11.023, 11.841, 12.399, 13.633, 14.691, 14.98, 15.242, 15.499, 15.701, 15.877, 16.03, 16.159, 16.257, 16.37, 16.448, 16.485, 16.549 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.34, 3.783, 4.285, 5.054, 6.038, 6.915, 8.219, 9.012, 9.576, 10.362, 10.907, 12.121, 13.161, 13.448, 13.705, 13.96, 14.16, 14.332, 14.483, 14.61, 14.707, 14.819, 14.895, 14.932, 14.993 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.005, 4.497, 5.162, 5.76, 6.796, 7.461, 7.954, 8.665, 9.17, 10.31, 11.338, 11.62, 11.877, 12.127, 12.324, 12.494, 12.643, 12.77, 12.865, 12.974, 13.049, 13.085, 13.145 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.69, 4.964, 5.575, 6.006, 6.347, 6.871, 7.263, 8.219, 9.164, 9.432, 9.684, 9.926, 10.121, 10.287, 10.434, 10.56, 10.654, 10.762, 10.836, 10.872, 10.93 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.837, 5.267, 5.573, 5.819, 6.208, 6.51, 7.33, 8.136, 8.384, 8.613, 8.844, 9.037, 9.2, 9.345, 9.468, 9.562, 9.67, 9.744, 9.78, 9.839 - end - elsif num_bore_holes == 6 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.058, 3.457, 4.111, 4.837, 5.916, 7.247, 8.41, 10.042, 11.024, 11.72, 12.681, 13.339, 14.799, 16.054, 16.396, 16.706, 17.011, 17.25, 17.458, 17.639, 17.792, 17.907, 18.041, 18.133, 18.177, 18.253 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.341, 3.786, 4.296, 5.08, 6.099, 7.031, 8.456, 9.346, 9.988, 10.894, 11.528, 12.951, 14.177, 14.516, 14.819, 15.12, 15.357, 15.56, 15.737, 15.888, 16.002, 16.134, 16.223, 16.267, 16.338 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.007, 4.503, 5.178, 5.791, 6.872, 7.583, 8.119, 8.905, 9.472, 10.774, 11.969, 12.3, 12.6, 12.895, 13.126, 13.326, 13.501, 13.649, 13.761, 13.89, 13.977, 14.02, 14.09 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.691, 4.968, 5.586, 6.026, 6.375, 6.919, 7.331, 8.357, 9.407, 9.71, 9.997, 10.275, 10.501, 10.694, 10.865, 11.011, 11.121, 11.247, 11.334, 11.376, 11.445 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.27, 5.579, 5.828, 6.225, 6.535, 7.384, 8.244, 8.515, 8.768, 9.026, 9.244, 9.428, 9.595, 9.737, 9.845, 9.97, 10.057, 10.099, 10.168 - end - end - elsif bore_config == 'l2-config' - if num_bore_holes == 8 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.685, 3.078, 3.547, 4.438, 5.521, 7.194, 9.237, 10.973, 13.311, 14.677, 15.634, 16.942, 17.831, 19.791, 21.462, 21.917, 22.329, 22.734, 23.052, 23.328, 23.568, 23.772, 23.925, 24.102, 24.224, 24.283, 24.384 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.027, 3.354, 3.866, 4.534, 5.682, 7.271, 8.709, 10.845, 12.134, 13.046, 14.308, 15.177, 17.106, 18.741, 19.19, 19.592, 19.989, 20.303, 20.57, 20.805, 21.004, 21.155, 21.328, 21.446, 21.504, 21.598 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.676, 4.034, 4.639, 5.587, 6.514, 8.195, 9.283, 10.09, 11.244, 12.058, 13.88, 15.491, 15.931, 16.328, 16.716, 17.02, 17.282, 17.511, 17.706, 17.852, 18.019, 18.134, 18.19, 18.281 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.315, 4.72, 5.041, 5.874, 6.525, 7.06, 7.904, 8.541, 10.093, 11.598, 12.018, 12.41, 12.784, 13.084, 13.338, 13.562, 13.753, 13.895, 14.058, 14.169, 14.223, 14.312 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.653, 4.842, 5.325, 5.717, 6.058, 6.635, 7.104, 8.419, 9.714, 10.108, 10.471, 10.834, 11.135, 11.387, 11.61, 11.798, 11.94, 12.103, 12.215, 12.268, 12.356 - end - elsif num_bore_holes == 10 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.685, 3.08, 3.556, 4.475, 5.611, 7.422, 9.726, 11.745, 14.538, 16.199, 17.369, 18.975, 20.071, 22.489, 24.551, 25.111, 25.619, 26.118, 26.509, 26.848, 27.143, 27.393, 27.582, 27.8, 27.949, 28.022, 28.146 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.027, 3.356, 3.874, 4.559, 5.758, 7.466, 9.07, 11.535, 13.06, 14.153, 15.679, 16.739, 19.101, 21.106, 21.657, 22.15, 22.637, 23.021, 23.348, 23.635, 23.879, 24.063, 24.275, 24.42, 24.49, 24.605 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.676, 4.037, 4.653, 5.634, 6.61, 8.44, 9.664, 10.589, 11.936, 12.899, 15.086, 17.041, 17.575, 18.058, 18.53, 18.9, 19.218, 19.496, 19.733, 19.91, 20.113, 20.252, 20.32, 20.431 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.315, 4.723, 5.048, 5.904, 6.584, 7.151, 8.062, 8.764, 10.521, 12.281, 12.779, 13.246, 13.694, 14.054, 14.36, 14.629, 14.859, 15.03, 15.226, 15.36, 15.425, 15.531 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.653, 4.842, 5.331, 5.731, 6.083, 6.683, 7.178, 8.6, 10.054, 10.508, 10.929, 11.356, 11.711, 12.009, 12.275, 12.5, 12.671, 12.866, 13, 13.064, 13.17 - end - end - elsif bore_config == 'u-config' - if num_bore_holes == 5 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.057, 3.46, 4.134, 4.902, 6.038, 7.383, 8.503, 9.995, 10.861, 11.467, 12.294, 12.857, 14.098, 15.16, 15.449, 15.712, 15.97, 16.173, 16.349, 16.503, 16.633, 16.731, 16.844, 16.922, 16.96, 17.024 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.341, 3.789, 4.31, 5.136, 6.219, 7.172, 8.56, 9.387, 9.97, 10.774, 11.328, 12.556, 13.601, 13.889, 14.147, 14.403, 14.604, 14.777, 14.927, 15.056, 15.153, 15.265, 15.341, 15.378, 15.439 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.671, 4.007, 4.51, 5.213, 5.864, 6.998, 7.717, 8.244, 8.993, 9.518, 10.69, 11.73, 12.015, 12.273, 12.525, 12.723, 12.893, 13.043, 13.17, 13.265, 13.374, 13.449, 13.486, 13.546 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.692, 4.969, 5.607, 6.072, 6.444, 7.018, 7.446, 8.474, 9.462, 9.737, 9.995, 10.241, 10.438, 10.606, 10.754, 10.88, 10.975, 11.083, 11.157, 11.193, 11.252 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.27, 5.585, 5.843, 6.26, 6.588, 7.486, 8.353, 8.614, 8.854, 9.095, 9.294, 9.46, 9.608, 9.733, 9.828, 9.936, 10.011, 10.047, 10.106 - end - elsif num_bore_holes == 7 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.059, 3.467, 4.164, 4.994, 6.319, 8.011, 9.482, 11.494, 12.679, 13.511, 14.651, 15.427, 17.139, 18.601, 18.999, 19.359, 19.714, 19.992, 20.233, 20.443, 20.621, 20.755, 20.91, 21.017, 21.069, 21.156 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.342, 3.795, 4.329, 5.214, 6.465, 7.635, 9.435, 10.54, 11.327, 12.421, 13.178, 14.861, 16.292, 16.685, 17.038, 17.386, 17.661, 17.896, 18.101, 18.276, 18.408, 18.56, 18.663, 18.714, 18.797 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.009, 4.519, 5.253, 5.965, 7.304, 8.204, 8.882, 9.866, 10.566, 12.145, 13.555, 13.941, 14.29, 14.631, 14.899, 15.129, 15.331, 15.502, 15.631, 15.778, 15.879, 15.928, 16.009 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.694, 4.975, 5.629, 6.127, 6.54, 7.207, 7.723, 9.019, 10.314, 10.68, 11.023, 11.352, 11.617, 11.842, 12.04, 12.209, 12.335, 12.48, 12.579, 12.627, 12.705 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.275, 5.595, 5.861, 6.304, 6.665, 7.709, 8.785, 9.121, 9.434, 9.749, 10.013, 10.233, 10.43, 10.597, 10.723, 10.868, 10.967, 11.015, 11.094 - end - elsif num_bore_holes == 9 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.683, 3.061, 3.47, 4.178, 5.039, 6.472, 8.405, 10.147, 12.609, 14.086, 15.131, 16.568, 17.55, 19.72, 21.571, 22.073, 22.529, 22.976, 23.327, 23.632, 23.896, 24.121, 24.29, 24.485, 24.619, 24.684, 24.795 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.025, 3.343, 3.798, 4.338, 5.248, 6.588, 7.902, 10.018, 11.355, 12.321, 13.679, 14.625, 16.74, 18.541, 19.036, 19.478, 19.916, 20.261, 20.555, 20.812, 21.031, 21.197, 21.387, 21.517, 21.58, 21.683 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.672, 4.01, 4.524, 5.27, 6.01, 7.467, 8.489, 9.281, 10.452, 11.299, 13.241, 14.995, 15.476, 15.912, 16.337, 16.67, 16.957, 17.208, 17.421, 17.581, 17.764, 17.889, 17.95, 18.05 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.312, 4.695, 4.977, 5.639, 6.15, 6.583, 7.298, 7.869, 9.356, 10.902, 11.347, 11.766, 12.169, 12.495, 12.772, 13.017, 13.225, 13.381, 13.559, 13.681, 13.74, 13.837 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.65, 4.838, 5.277, 5.6, 5.87, 6.322, 6.698, 7.823, 9.044, 9.438, 9.809, 10.188, 10.506, 10.774, 11.015, 11.219, 11.374, 11.552, 11.674, 11.733, 11.83 - end - end - elsif bore_config == 'open-rectangle' - if num_bore_holes == 8 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.684, 3.066, 3.497, 4.275, 5.229, 6.767, 8.724, 10.417, 12.723, 14.079, 15.03, 16.332, 17.217, 19.17, 20.835, 21.288, 21.698, 22.101, 22.417, 22.692, 22.931, 23.133, 23.286, 23.462, 23.583, 23.642, 23.742 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.026, 3.347, 3.821, 4.409, 5.418, 6.87, 8.226, 10.299, 11.565, 12.466, 13.716, 14.58, 16.498, 18.125, 18.572, 18.972, 19.368, 19.679, 19.946, 20.179, 20.376, 20.527, 20.699, 20.816, 20.874, 20.967 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.673, 4.018, 4.564, 5.389, 6.21, 7.763, 8.801, 9.582, 10.709, 11.51, 13.311, 14.912, 15.349, 15.744, 16.13, 16.432, 16.693, 16.921, 17.114, 17.259, 17.426, 17.54, 17.595, 17.686 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.313, 4.704, 4.999, 5.725, 6.294, 6.771, 7.543, 8.14, 9.629, 11.105, 11.52, 11.908, 12.28, 12.578, 12.831, 13.054, 13.244, 13.386, 13.548, 13.659, 13.712, 13.8 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.651, 4.839, 5.293, 5.641, 5.938, 6.44, 6.856, 8.062, 9.297, 9.681, 10.036, 10.394, 10.692, 10.941, 11.163, 11.35, 11.492, 11.654, 11.766, 11.819, 11.907 - end - elsif num_bore_holes == 10 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.684, 3.066, 3.494, 4.262, 5.213, 6.81, 8.965, 10.906, 13.643, 15.283, 16.443, 18.038, 19.126, 21.532, 23.581, 24.138, 24.642, 25.137, 25.525, 25.862, 26.155, 26.403, 26.59, 26.806, 26.955, 27.027, 27.149 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.026, 3.346, 3.818, 4.399, 5.4, 6.889, 8.358, 10.713, 12.198, 13.27, 14.776, 15.824, 18.167, 20.158, 20.704, 21.194, 21.677, 22.057, 22.382, 22.666, 22.907, 23.09, 23.3, 23.443, 23.513, 23.627 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.673, 4.018, 4.559, 5.374, 6.193, 7.814, 8.951, 9.831, 11.13, 12.069, 14.219, 16.154, 16.684, 17.164, 17.631, 17.998, 18.314, 18.59, 18.824, 19, 19.201, 19.338, 19.405, 19.515 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.313, 4.703, 4.996, 5.712, 6.275, 6.755, 7.549, 8.183, 9.832, 11.54, 12.029, 12.49, 12.933, 13.29, 13.594, 13.862, 14.09, 14.26, 14.455, 14.588, 14.652, 14.758 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.651, 4.839, 5.292, 5.636, 5.928, 6.425, 6.841, 8.089, 9.44, 9.875, 10.284, 10.7, 11.05, 11.344, 11.608, 11.831, 12.001, 12.196, 12.329, 12.393, 12.499 - end + def self.gshp_gfnc_coeff(bore_config, g_functions_json, num_bore_holes, bore_spacing, bore_depth, bore_diameter) + actuals = { 'b' => UnitConversions.convert(bore_spacing, 'ft', 'm'), + 'h' => UnitConversions.convert(bore_depth, 'ft', 'm'), + 'rb' => UnitConversions.convert(bore_diameter / 2.0, 'in', 'm') } + actuals['b_over_h'] = actuals['b'] / actuals['h'] + + g_library = { 24 => { 'b' => 5, 'd' => 2, 'rb' => 0.075 }, + 48 => { 'b' => 5, 'd' => 2, 'rb' => 0.075 }, + 96 => { 'b' => 5, 'd' => 2, 'rb' => 0.075 }, + 192 => { 'b' => 5, 'd' => 2, 'rb' => 0.08 }, + 384 => { 'b' => 5, 'd' => 2, 'rb' => 0.0875 } } + g_library.each do |h, b_d_rb| + g_library[h]['b_over_h'] = Float(b_d_rb['b']) / h + g_library[h]['rb_over_h'] = Float(b_d_rb['rb']) / h + end + + [[24, 48], [48, 96], [96, 192], [192, 384]].each do |h1, h2| + next unless actuals['h'] >= h1 && actuals['h'] < h2 + + pt1 = g_library[h1] + pt2 = g_library[h2] + + # linear interpolation on "g" values + logtimes = [] + gs = [] + [h1, h2].each do |h| + b_d_rb = g_library[h] + b = b_d_rb['b'] + rb = b_d_rb['rb'] + b_h_rb = "#{b}._#{h}._#{rb}" + + logtime, g = get_g_functions(g_functions_json, bore_config, num_bore_holes, b_h_rb) + logtimes << logtime + gs << g end - elsif bore_config == 'rectangle' - if num_bore_holes == 4 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.684, 3.066, 3.493, 4.223, 5.025, 6.131, 7.338, 8.291, 9.533, 10.244, 10.737, 11.409, 11.865, 12.869, 13.73, 13.965, 14.178, 14.388, 14.553, 14.696, 14.821, 14.927, 15.007, 15.099, 15.162, 15.193, 15.245 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.026, 3.347, 3.818, 4.383, 5.255, 6.314, 7.188, 8.392, 9.087, 9.571, 10.233, 10.686, 11.685, 12.536, 12.77, 12.98, 13.189, 13.353, 13.494, 13.617, 13.721, 13.801, 13.892, 13.955, 13.985, 14.035 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.673, 4.018, 4.555, 5.313, 5.984, 7.069, 7.717, 8.177, 8.817, 9.258, 10.229, 11.083, 11.316, 11.527, 11.733, 11.895, 12.035, 12.157, 12.261, 12.339, 12.429, 12.491, 12.521, 12.57 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.313, 4.703, 4.998, 5.69, 6.18, 6.557, 7.115, 7.514, 8.428, 9.27, 9.501, 9.715, 9.92, 10.083, 10.221, 10.343, 10.447, 10.525, 10.614, 10.675, 10.704, 10.753 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.306, 4.651, 4.839, 5.293, 5.633, 5.913, 6.355, 6.693, 7.559, 8.343, 8.57, 8.776, 8.979, 9.147, 9.286, 9.409, 9.512, 9.59, 9.68, 9.741, 9.771, 9.819 - end - elsif num_bore_holes == 6 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.684, 3.074, 3.526, 4.349, 5.308, 6.719, 8.363, 9.72, 11.52, 12.562, 13.289, 14.282, 14.956, 16.441, 17.711, 18.057, 18.371, 18.679, 18.921, 19.132, 19.315, 19.47, 19.587, 19.722, 19.815, 19.861, 19.937 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.026, 3.351, 3.847, 4.472, 5.499, 6.844, 8.016, 9.702, 10.701, 11.403, 12.369, 13.032, 14.502, 15.749, 16.093, 16.4, 16.705, 16.945, 17.15, 17.329, 17.482, 17.598, 17.731, 17.822, 17.866, 17.938 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.675, 4.028, 4.605, 5.471, 6.283, 7.688, 8.567, 9.207, 10.112, 10.744, 12.149, 13.389, 13.727, 14.033, 14.332, 14.567, 14.769, 14.946, 15.096, 15.21, 15.339, 15.428, 15.471, 15.542 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.314, 4.714, 5.024, 5.798, 6.378, 6.841, 7.553, 8.079, 9.327, 10.512, 10.84, 11.145, 11.437, 11.671, 11.869, 12.044, 12.192, 12.303, 12.431, 12.518, 12.56, 12.629 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.652, 4.841, 5.313, 5.684, 5.999, 6.517, 6.927, 8.034, 9.087, 9.401, 9.688, 9.974, 10.21, 10.408, 10.583, 10.73, 10.841, 10.969, 11.056, 11.098, 11.167 - end - elsif num_bore_holes == 8 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.685, 3.078, 3.543, 4.414, 5.459, 7.06, 9.021, 10.701, 12.991, 14.34, 15.287, 16.586, 17.471, 19.423, 21.091, 21.545, 21.956, 22.36, 22.677, 22.953, 23.192, 23.395, 23.548, 23.725, 23.847, 23.906, 24.006 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.027, 3.354, 3.862, 4.517, 5.627, 7.142, 8.525, 10.589, 11.846, 12.741, 13.986, 14.847, 16.762, 18.391, 18.839, 19.24, 19.637, 19.95, 20.217, 20.45, 20.649, 20.8, 20.973, 21.091, 21.148, 21.242 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.675, 4.033, 4.63, 5.553, 6.444, 8.051, 9.096, 9.874, 10.995, 11.79, 13.583, 15.182, 15.619, 16.016, 16.402, 16.705, 16.967, 17.195, 17.389, 17.535, 17.702, 17.817, 17.873, 17.964 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.315, 4.719, 5.038, 5.852, 6.48, 6.993, 7.799, 8.409, 9.902, 11.371, 11.784, 12.17, 12.541, 12.839, 13.092, 13.315, 13.505, 13.647, 13.81, 13.921, 13.975, 14.063 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.653, 4.842, 5.323, 5.71, 6.042, 6.6, 7.05, 8.306, 9.552, 9.935, 10.288, 10.644, 10.94, 11.188, 11.409, 11.596, 11.738, 11.9, 12.011, 12.065, 12.153 - end - elsif num_bore_holes == 9 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.685, 3.082, 3.561, 4.49, 5.635, 7.436, 9.672, 11.59, 14.193, 15.721, 16.791, 18.256, 19.252, 21.447, 23.318, 23.826, 24.287, 24.74, 25.095, 25.404, 25.672, 25.899, 26.071, 26.269, 26.405, 26.471, 26.583 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.027, 3.357, 3.879, 4.57, 5.781, 7.488, 9.052, 11.408, 12.84, 13.855, 15.263, 16.235, 18.39, 20.216, 20.717, 21.166, 21.61, 21.959, 22.257, 22.519, 22.74, 22.909, 23.102, 23.234, 23.298, 23.403 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.676, 4.039, 4.659, 5.65, 6.633, 8.447, 9.638, 10.525, 11.802, 12.705, 14.731, 16.525, 17.014, 17.456, 17.887, 18.225, 18.516, 18.77, 18.986, 19.148, 19.334, 19.461, 19.523, 19.625 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.316, 4.725, 5.052, 5.917, 6.603, 7.173, 8.08, 8.772, 10.47, 12.131, 12.596, 13.029, 13.443, 13.775, 14.057, 14.304, 14.515, 14.673, 14.852, 14.975, 15.035, 15.132 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.653, 4.842, 5.334, 5.739, 6.094, 6.7, 7.198, 8.611, 10.023, 10.456, 10.855, 11.256, 11.588, 11.866, 12.112, 12.32, 12.477, 12.656, 12.779, 12.839, 12.935 - end - elsif num_bore_holes == 10 - if spacing_to_depth_ratio <= 0.02 - gfnc_coeff = 2.685, 3.08, 3.553, 4.453, 5.552, 7.282, 9.472, 11.405, 14.111, 15.737, 16.888, 18.476, 19.562, 21.966, 24.021, 24.579, 25.086, 25.583, 25.973, 26.311, 26.606, 26.855, 27.043, 27.26, 27.409, 27.482, 27.605 - elsif spacing_to_depth_ratio <= 0.03 - gfnc_coeff = 2.679, 3.027, 3.355, 3.871, 4.545, 5.706, 7.332, 8.863, 11.218, 12.688, 13.749, 15.242, 16.284, 18.618, 20.613, 21.161, 21.652, 22.138, 22.521, 22.847, 23.133, 23.376, 23.56, 23.771, 23.915, 23.985, 24.1 - elsif spacing_to_depth_ratio <= 0.05 - gfnc_coeff = 2.679, 3.023, 3.319, 3.676, 4.036, 4.645, 5.603, 6.543, 8.285, 9.449, 10.332, 11.623, 12.553, 14.682, 16.613, 17.143, 17.624, 18.094, 18.462, 18.78, 19.057, 19.293, 19.47, 19.673, 19.811, 19.879, 19.989 - elsif spacing_to_depth_ratio <= 0.1 - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.962, 4.315, 4.722, 5.045, 5.885, 6.543, 7.086, 7.954, 8.621, 10.291, 11.988, 12.473, 12.931, 13.371, 13.727, 14.03, 14.299, 14.527, 14.698, 14.894, 15.027, 15.092, 15.199 - else - gfnc_coeff = 2.679, 3.023, 3.318, 3.664, 3.961, 4.307, 4.653, 4.842, 5.329, 5.725, 6.069, 6.651, 7.126, 8.478, 9.863, 10.298, 10.704, 11.117, 11.463, 11.755, 12.016, 12.239, 12.407, 12.602, 12.735, 12.8, 12.906 + x = actuals['b_over_h'] + x0 = pt1['b_over_h'] + x1 = pt2['b_over_h'] + g_functions = gs[0].zip(gs[1]).map { |v| MathTools.interp2(x, x0, x1, v[0], v[1]) } + + # linear interpolation on rb/h for correction factor + x = actuals['b_over_h'] + x0 = pt1['b_over_h'] + x1 = pt2['b_over_h'] + f0 = pt1['rb_over_h'] + f1 = pt2['rb_over_h'] + actuals['rb_over_h'] = MathTools.interp2(x, x0, x1, f0, f1) + rb = actuals['rb_over_h'] * actuals['h'] + rb_actual_over_rb = actuals['rb'] / rb + correction_factor = Math.log(rb_actual_over_rb) + g_functions = g_functions.map { |v| v - correction_factor } + + return logtimes[0], g_functions + end + end + + def self.get_g_functions(g_functions_json, bore_config, num_bore_holes, b_h_rb) + g_functions_json.each do |_key_1, values_1| + if [HPXML::GeothermalLoopBorefieldConfigurationRectangle, + HPXML::GeothermalLoopBorefieldConfigurationL].include?(bore_config) + bore_locations = values_1[:bore_locations] + next if bore_locations.size != num_bore_holes + + logtime = values_1[:logtime].map { |v| Float(v) } + g = values_1[:g][b_h_rb.to_sym].map { |v| Float(v) } + + return logtime, g + elsif [HPXML::GeothermalLoopBorefieldConfigurationOpenRectangle, + HPXML::GeothermalLoopBorefieldConfigurationC, + HPXML::GeothermalLoopBorefieldConfigurationLopsidedU, + HPXML::GeothermalLoopBorefieldConfigurationU].include?(bore_config) + values_1.each do |_key_2, values_2| + bore_locations = values_2[:bore_locations] + next if bore_locations.size != num_bore_holes + + logtime = values_2[:logtime].map { |v| Float(v) } + g = values_2[:g][b_h_rb.to_sym].map { |v| Float(v) } + + return logtime, g end end end - return gfnc_coeff end def self.calculate_average_r_value(surfaces) @@ -3257,7 +3064,7 @@ def initialize end attr_accessor(:Cool_Load_Sens, :Cool_Load_Lat, :Cool_Load_Tot, :Cool_Capacity, :Cool_Capacity_Sens, :Cool_Airflow, :Heat_Load, :Heat_Load_Supp, :Heat_Capacity, :Heat_Capacity_Supp, :Heat_Airflow, - :GSHP_Loop_flow, :GSHP_Bore_Holes, :GSHP_Bore_Depth, :GSHP_G_Functions) + :GSHP_Loop_flow, :GSHP_Bore_Holes, :GSHP_Bore_Depth, :GSHP_G_Functions, :GSHP_Bore_Config) end class Numeric diff --git a/HPXMLtoOpenStudio/resources/unit_conversions.rb b/HPXMLtoOpenStudio/resources/unit_conversions.rb index 7c72624a58..6dbe3c7d10 100644 --- a/HPXMLtoOpenStudio/resources/unit_conversions.rb +++ b/HPXMLtoOpenStudio/resources/unit_conversions.rb @@ -133,6 +133,9 @@ class UnitConversions ['btu/(hr*ft*r)', 'w/(m*k)'] => 1.731, ['btu*in/(hr*ft^2*r)', 'w/(m*k)'] => 0.14425, + # Thermal Diffusivity + ['m^2/s', 'ft^2/hr'] => 38750.1, + # Infiltration ['ft^2/(s^2*r)', 'l^2/(s^2*cm^4*k)'] => 0.001672, ['inh2o/mph^2', 'pa*s^2/m^2'] => 1246.0, diff --git a/HPXMLtoOpenStudio/tests/test_defaults.rb b/HPXMLtoOpenStudio/tests/test_defaults.rb index b016ecdfae..af4fc77561 100644 --- a/HPXMLtoOpenStudio/tests/test_defaults.rb +++ b/HPXMLtoOpenStudio/tests/test_defaults.rb @@ -313,17 +313,45 @@ def test_site hpxml_bldg.site.site_type = HPXML::SiteTypeRural hpxml_bldg.site.shielding_of_home = HPXML::ShieldingExposed hpxml_bldg.site.ground_conductivity = 0.8 + hpxml_bldg.site.ground_diffusivity = 0.9 + hpxml_bldg.site.soil_type = HPXML::SiteSoilTypeClay + hpxml_bldg.site.moisture_type = HPXML::SiteSoilMoistureTypeDry XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeRural, HPXML::ShieldingExposed, 0.8) + _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeRural, HPXML::ShieldingExposed, 0.8, 0.9, HPXML::SiteSoilTypeClay, HPXML::SiteSoilMoistureTypeDry) # Test defaults hpxml_bldg.site.site_type = nil hpxml_bldg.site.shielding_of_home = nil hpxml_bldg.site.ground_conductivity = nil + hpxml_bldg.site.ground_diffusivity = nil + hpxml_bldg.site.soil_type = nil + hpxml_bldg.site.moisture_type = nil XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) _default_hpxml, default_hpxml_bldg = _test_measure() - _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 1.0) + _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 1.0, 0.0208, HPXML::SiteSoilTypeUnknown, HPXML::SiteSoilMoistureTypeMixed) + + # Test defaults w/ gravel soil type + hpxml_bldg.site.soil_type = HPXML::SiteSoilTypeGravel + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 0.6355, 0.0194, HPXML::SiteSoilTypeGravel, HPXML::SiteSoilMoistureTypeMixed) + + # Test defaults w/ conductivity but no diffusivity + hpxml_bldg.site.ground_conductivity = 2.0 + hpxml_bldg.site.ground_diffusivity = nil + hpxml_bldg.site.soil_type = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 2.0, 0.0416, nil, nil) + + # Test defaults w/ diffusivity but no conductivity + hpxml_bldg.site.ground_conductivity = nil + hpxml_bldg.site.ground_diffusivity = 0.025 + hpxml_bldg.site.soil_type = nil + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _default_hpxml, default_hpxml_bldg = _test_measure() + _test_default_site_values(default_hpxml_bldg, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal, 1.201923076923077, 0.025, nil, nil) end def test_neighbor_buildings @@ -1697,6 +1725,111 @@ def test_ground_source_heat_pumps _test_default_ground_to_air_heat_pump_values(default_hpxml_bldg.heat_pumps[0], 30.0, 0.375, 0, nil, nil, nil) end + def test_geothermal_loops + # Test inputs not overridden by defaults + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].loop_configuration = HPXML::GeothermalLoopLoopConfigurationVertical + hpxml_bldg.geothermal_loops[0].loop_flow = 1 + hpxml_bldg.geothermal_loops[0].num_bore_holes = 2 + hpxml_bldg.geothermal_loops[0].bore_spacing = 3 + hpxml_bldg.geothermal_loops[0].bore_length = 100 + hpxml_bldg.geothermal_loops[0].bore_diameter = 5 + hpxml_bldg.geothermal_loops[0].grout_type = HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced + hpxml_bldg.geothermal_loops[0].grout_conductivity = 6 + hpxml_bldg.geothermal_loops[0].pipe_type = HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced + hpxml_bldg.geothermal_loops[0].pipe_conductivity = 7 + hpxml_bldg.geothermal_loops[0].pipe_diameter = 1.0 + hpxml_bldg.geothermal_loops[0].shank_spacing = 9 + 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, 1, 2, 3, 100, 5, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 6, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 7, 1.0, 9, HPXML::GeothermalLoopBorefieldConfigurationRectangle) + + # Test defaults + hpxml_bldg.geothermal_loops[0].loop_flow = nil # autosized + hpxml_bldg.geothermal_loops[0].num_bore_holes = nil # autosized + hpxml_bldg.geothermal_loops[0].bore_spacing = nil # 16.4 + hpxml_bldg.geothermal_loops[0].bore_length = nil # autosized + hpxml_bldg.geothermal_loops[0].bore_diameter = nil # 5.0 + hpxml_bldg.geothermal_loops[0].grout_type = nil # standard + hpxml_bldg.geothermal_loops[0].grout_conductivity = nil # 0.4 + 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].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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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.4, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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, 0.8, HPXML::GeothermalLoopGroutOrPipeTypeStandard, 0.23, 1.25, 2.6261, 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, 0.8, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.6261, 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, 0.8, HPXML::GeothermalLoopGroutOrPipeTypeThermallyEnhanced, 0.40, 1.25, 2.6261, HPXML::GeothermalLoopBorefieldConfigurationRectangle) + end + def test_hvac_location # Test inputs not overridden by defaults hpxml, hpxml_bldg = _create_hpxml('base-foundation-unconditioned-basement.xml') @@ -3719,10 +3852,21 @@ def _test_default_building_values(hpxml_bldg, dst_enabled, dst_begin_month, dst_ assert_equal(manualj_num_occupants, hpxml_bldg.header.manualj_num_occupants) end - def _test_default_site_values(hpxml_bldg, site_type, shielding_of_home, ground_conductivity) + def _test_default_site_values(hpxml_bldg, site_type, shielding_of_home, ground_conductivity, ground_diffusivity, soil_type, moisture_type) assert_equal(site_type, hpxml_bldg.site.site_type) assert_equal(shielding_of_home, hpxml_bldg.site.shielding_of_home) assert_equal(ground_conductivity, hpxml_bldg.site.ground_conductivity) + assert_equal(ground_diffusivity, hpxml_bldg.site.ground_diffusivity) + if soil_type.nil? + assert_nil(hpxml_bldg.site.soil_type) + else + assert_equal(soil_type, hpxml_bldg.site.soil_type) + end + if moisture_type.nil? + assert_nil(hpxml_bldg.site.moisture_type) + else + assert_equal(moisture_type, hpxml_bldg.site.moisture_type) + end end def _test_default_neighbor_building_values(hpxml_bldg, azimuths) @@ -4260,6 +4404,38 @@ def _test_default_ground_to_air_heat_pump_values(heat_pump, pump_watts_per_ton, end end + def _test_default_geothermal_loop_values(geothermal_loop, loop_configuration, loop_flow, + num_bore_holes, bore_spacing, bore_length, bore_diameter, + grout_type, grout_conductivity, + pipe_type, pipe_conductivity, pipe_diameter, + shank_spacing, bore_config) + assert_equal(loop_configuration, geothermal_loop.loop_configuration) + if loop_flow.nil? # nil implies an autosized value + assert(geothermal_loop.loop_flow > 0) + else + assert_equal(loop_flow, geothermal_loop.loop_flow) + end + if num_bore_holes.nil? # nil implies an autosized value + assert(geothermal_loop.num_bore_holes > 0) + else + assert_equal(num_bore_holes, geothermal_loop.num_bore_holes) + end + assert_equal(bore_spacing, geothermal_loop.bore_spacing) + if bore_length.nil? # nil implies an autosized value + assert(geothermal_loop.bore_length > 0) + else + assert_equal(bore_length, geothermal_loop.bore_length) + end + assert_equal(bore_diameter, geothermal_loop.bore_diameter) + assert_equal(grout_type, geothermal_loop.grout_type) + assert_equal(grout_conductivity, geothermal_loop.grout_conductivity) + assert_equal(pipe_type, geothermal_loop.pipe_type) + assert_equal(pipe_conductivity, geothermal_loop.pipe_conductivity) + assert_equal(pipe_diameter, geothermal_loop.pipe_diameter) + assert_equal(shank_spacing, geothermal_loop.shank_spacing) + assert_equal(bore_config, geothermal_loop.bore_config) + end + def _test_default_hvac_location_values(hvac_system, location) assert_equal(location, hvac_system.location) end diff --git a/HPXMLtoOpenStudio/tests/test_hvac.rb b/HPXMLtoOpenStudio/tests/test_hvac.rb index 8aceb4e77d..b832fd166e 100644 --- a/HPXMLtoOpenStudio/tests/test_hvac.rb +++ b/HPXMLtoOpenStudio/tests/test_hvac.rb @@ -798,6 +798,38 @@ def test_ground_to_air_heat_pump assert_in_epsilon(31, xing.phaseShiftofTemperatureAmplitude2, 0.01) end + def test_geothermal_loop + args_hash = {} + args_hash['hpxml_path'] = File.absolute_path(File.join(@sample_files_path, 'base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml')) + model, _hpxml, hpxml_bldg = _test_measure(args_hash) + + # Get HPXML values + geothermal_loop = hpxml_bldg.geothermal_loops[0] + bore_radius = UnitConversions.convert(geothermal_loop.bore_diameter / 2.0, 'in', 'm') + grout_conductivity = UnitConversions.convert(0.4, 'Btu/(hr*ft*R)', 'W/(m*K)') + pipe_conductivity = UnitConversions.convert(0.23, 'Btu/(hr*ft*R)', 'W/(m*K)') + shank_spacing = UnitConversions.convert(geothermal_loop.shank_spacing, 'in', 'm') + + # Check ghx + assert(1, model.getGroundHeatExchangerVerticals.size) + ghx = model.getGroundHeatExchangerVerticals[0] + assert_in_epsilon(bore_radius, ghx.boreHoleRadius.get, 0.01) + assert_in_epsilon(grout_conductivity, ghx.groutThermalConductivity.get, 0.01) + assert_in_epsilon(pipe_conductivity, ghx.pipeThermalConductivity.get, 0.01) + assert_in_epsilon(shank_spacing, ghx.uTubeDistance.get, 0.01) + + # Check G-Functions + # Expected values + # 4_4: 1: g: 5._96._0.075 from "LopU_configurations_5m_v1.0.json" + lntts = [-8.5, -7.8, -7.2, -6.5, -5.9, -5.2, -4.5, -3.963, -3.27, -2.864, -2.577, -2.171, -1.884, -1.191, -0.497, -0.274, -0.051, 0.196, 0.419, 0.642, 0.873, 1.112, 1.335, 1.679, 2.028, 2.275, 3.003] + gfnc_coeff = [2.209271810327404, 2.5553235626058273, 2.8519138306223555, 3.2001519249819794, 3.523354932375397, 4.001549412014162, 4.669089316628495, 5.359101946268944, 6.552379489671893, 7.429815477491777, 8.121820314543074, 9.173143912712952, 9.946213029499233, 11.781039134458084, 13.403268695619028, 13.854454372473098, 14.260003929688882, 14.655669234316463, 14.962475413080817, 15.224731293240202, 15.450225154706388, 15.638568709166531, 15.778910465988814, 15.938820677805234, 16.047959625600665, 16.1015379064994, 16.188353466015815] + gFunctions = lntts.zip(gfnc_coeff) + ghx.gFunctions.each_with_index do |gFunction, i| + assert_in_epsilon(gFunction.lnValue, gFunctions[i][0], 0.01) + assert_in_epsilon(gFunction.gValue, gFunctions[i][1], 0.01) + end + end + def test_shared_chiller_baseboard args_hash = {} args_hash['hpxml_path'] = File.absolute_path(File.join(@sample_files_path, 'base-bldgtype-mf-unit-shared-chiller-only-baseboard.xml')) diff --git a/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb b/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb index 48216a34c3..79d816ceef 100644 --- a/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +++ b/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb @@ -468,6 +468,82 @@ def get_unins_slab() assert_in_epsilon(1.04, f_factor, 0.01) end + def test_ground_loop + args_hash = {} + args_hash['hpxml_path'] = File.absolute_path(@tmp_hpxml_path) + + # Base case + hpxml, _hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _model, _test_hpxml, test_hpxml_bldg = _test_measure(args_hash) + assert_equal(3, test_hpxml_bldg.geothermal_loops[0].num_bore_holes) + assert_in_epsilon(688.5 / 3, test_hpxml_bldg.geothermal_loops[0].bore_length, 0.01) + + # Bore depth greater than the max -> increase number of boreholes + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.site.ground_conductivity = 0.2 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _model, _test_hpxml, test_hpxml_bldg = _test_measure(args_hash) + assert_equal(5, test_hpxml_bldg.geothermal_loops[0].num_bore_holes) + assert_in_epsilon(2062.9 / 5, test_hpxml_bldg.geothermal_loops[0].bore_length, 0.01) + + # Bore depth greater than the max -> increase number of boreholes until the max, set depth to the max, and issue warning + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.site.ground_conductivity = 0.07 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _model, _test_hpxml, test_hpxml_bldg = _test_measure(args_hash) + assert_equal(10, test_hpxml_bldg.geothermal_loops[0].num_bore_holes) + assert_in_epsilon(500.0, test_hpxml_bldg.geothermal_loops[0].bore_length, 0.01) + + # Boreholes greater than the max -> decrease the number of boreholes until the max + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.heat_pumps[0].cooling_capacity *= 5 + XMLHelper.write_file(hpxml.to_doc, @tmp_hpxml_path) + _model, _test_hpxml, test_hpxml_bldg = _test_measure(args_hash) + assert_equal(10, test_hpxml_bldg.geothermal_loops[0].num_bore_holes) + assert_in_epsilon(3187.0 / 10, test_hpxml_bldg.geothermal_loops[0].bore_length, 0.01) + end + + def test_g_function_library_linear_interpolation_example + bore_config = HPXML::GeothermalLoopBorefieldConfigurationRectangle + num_bore_holes = 40 + bore_spacing = UnitConversions.convert(7.0, 'm', 'ft') + bore_depth = UnitConversions.convert(150.0, 'm', 'ft') + bore_diameter = UnitConversions.convert(UnitConversions.convert(80.0, 'mm', 'm'), 'm', 'in') * 2 + valid_bore_configs = HVACSizing.valid_bore_configs + g_functions_filename = valid_bore_configs[bore_config] + g_functions_json = HVACSizing.get_g_functions_json(g_functions_filename) + + actual_lntts, actual_gfnc_coeff = HVACSizing.gshp_gfnc_coeff(bore_config, g_functions_json, num_bore_holes, bore_spacing, bore_depth, bore_diameter) + + expected_lntts = [-8.5, -7.8, -7.2, -6.5, -5.9, -5.2, -4.5, -3.963, -3.27, -2.864, -2.577, -2.171, -1.884, -1.191, -0.497, -0.274, -0.051, 0.196, 0.419, 0.642, 0.873, 1.112, 1.335, 1.679, 2.028, 2.275, 3.003] + expected_gfnc_coeff = [2.619, 2.967, 3.279, 3.700, 4.190, 5.107, 6.680, 8.537, 11.991, 14.633, 16.767, 20.083, 22.593, 28.734, 34.345, 35.927, 37.342, 38.715, 39.768, 40.664, 41.426, 42.056, 42.524, 43.054, 43.416, 43.594, 43.885] + + expected_lntts.zip(actual_lntts).each do |v1, v2| + assert_in_epsilon(v1, v2, 0.01) + end + expected_gfnc_coeff.zip(actual_gfnc_coeff).each do |v1, v2| + assert_in_epsilon(v1, v2, 0.01) + end + end + + def test_all_g_function_configs_exist + valid_configs = { HPXML::GeothermalLoopBorefieldConfigurationRectangle => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], + HPXML::GeothermalLoopBorefieldConfigurationOpenRectangle => [8, 10], + HPXML::GeothermalLoopBorefieldConfigurationC => [7, 9], + HPXML::GeothermalLoopBorefieldConfigurationL => [4, 5, 6, 7, 8, 9, 10], + HPXML::GeothermalLoopBorefieldConfigurationU => [7, 9, 10], + HPXML::GeothermalLoopBorefieldConfigurationLopsidedU => [6, 7, 8, 9, 10] } + + valid_configs.each do |bore_config, valid_num_bores| + g_functions_filename = HVACSizing.valid_bore_configs[bore_config] + g_functions_json = HVACSizing.get_g_functions_json(g_functions_filename) + valid_num_bores.each do |num_bore_holes| + HVACSizing.get_g_functions(g_functions_json, bore_config, num_bore_holes, '5._192._0.08') # b_h_rb is arbitrary + end + end + end + def _test_measure(args_hash) # create an instance of the measure measure = HPXMLtoOpenStudio.new diff --git a/HPXMLtoOpenStudio/tests/test_validation.rb b/HPXMLtoOpenStudio/tests/test_validation.rb index 5016130e49..692e3e2446 100644 --- a/HPXMLtoOpenStudio/tests/test_validation.rb +++ b/HPXMLtoOpenStudio/tests/test_validation.rb @@ -116,6 +116,10 @@ def test_schema_schematron_error_messages 'hvac-distribution-return-duct-leakage-missing' => ['Expected 1 element(s) for xpath: DuctLeakageMeasurement[DuctType="return"]/DuctLeakage[(Units="CFM25" or Units="CFM50" or Units="Percent") and TotalOrToOutside="to outside"] [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/AirDistribution[AirDistributionType[text()="regular velocity" or text()="gravity"]], id: "HVACDistribution1"]'], 'hvac-frac-load-served' => ['Expected sum(FractionHeatLoadServed) to be less than or equal to 1 [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]', 'Expected sum(FractionCoolLoadServed) to be less than or equal to 1 [context: /HPXML/Building/BuildingDetails, id: "MyBuilding"]'], + 'hvac-gshp-invalid-bore-config' => ["Expected BorefieldConfiguration to be 'Rectangle' or 'Open Rectangle' or 'C' or 'L' or 'U' or 'Lopsided U' [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop, id: \"GeothermalLoop1\"]"], + 'hvac-gshp-invalid-bore-depth-low' => ['Expected BoreholesOrTrenches/Length to be greater than or equal to 79 [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop, id: "GeothermalLoop1"]'], + 'hvac-gshp-invalid-bore-depth-high' => ['Expected BoreholesOrTrenches/Length to be less than or equal to 500 [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop, id: "GeothermalLoop1"]'], + 'hvac-gshp-autosized-count-not-rectangle' => ["Expected BoreholesOrTrenches/Count when extension/BorefieldConfiguration is not 'Rectangle' [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop, id: \"GeothermalLoop1\"]"], 'hvac-location-heating-system' => ['A location is specified as "basement - unconditioned" but no surfaces were found adjacent to this space type.'], 'hvac-location-cooling-system' => ['A location is specified as "basement - unconditioned" but no surfaces were found adjacent to this space type.'], 'hvac-location-heat-pump' => ['A location is specified as "basement - unconditioned" but no surfaces were found adjacent to this space type.'], @@ -145,7 +149,8 @@ def test_schema_schematron_error_messages 'invalid-foundation-wall-properties' => ['Expected DepthBelowGrade to be less than or equal to Height [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall, id: "FoundationWall1"]', 'Expected DistanceToBottomOfInsulation to be greater than or equal to DistanceToTopOfInsulation [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall/Insulation/Layer[InstallationType="continuous - exterior" or InstallationType="continuous - interior"], id: "FoundationWall1Insulation"]', 'Expected DistanceToBottomOfInsulation to be less than or equal to ../../Height [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall/Insulation/Layer[InstallationType="continuous - exterior" or InstallationType="continuous - interior"], id: "FoundationWall1Insulation"]'], - 'invalid-ground-conductivity' => ['Expected extension/GroundConductivity to be greater than 0'], + 'invalid-ground-conductivity' => ['Expected Conductivity to be greater than 0'], + 'invalid-ground-diffusivity' => ['Expected extension/Diffusivity to be greater than 0'], 'invalid-heat-pump-capacity-retention' => ['Expected Fraction to be less than 1', 'Expected Temperature to be less than or equal to 17'], 'invalid-heat-pump-capacity-retention2' => ['Expected Fraction to be greater than or equal to 0'], @@ -186,6 +191,7 @@ def test_schema_schematron_error_messages 'invalid-number-of-conditioned-floors' => ['Expected NumberofConditionedFloors to be greater than or equal to NumberofConditionedFloorsAboveGrade [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction, id: "MyBuilding"]'], 'invalid-number-of-units-served' => ['Expected NumberofUnitsServed to be greater than 1 [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem[IsSharedSystem="true"], id: "WaterHeatingSystem1"]'], 'invalid-pilot-light-heating-system' => ['Expected 1 element(s) for xpath: ../../HeatingSystemFuel[text()!="electricity"]'], + 'invalid-soil-type' => ["Expected SoilType to be 'sand' or 'silt' or 'clay' or 'loam' or 'gravel' or 'unknown' [context: /HPXML/Building/BuildingDetails/BuildingSummary/Site/Soil, id: \"MyBuilding\"]"], 'invalid-shared-vent-in-unit-flowrate' => ['Expected RatedFlowRate to be greater than extension/InUnitFlowRate [context: /HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan[UsedForWholeBuildingVentilation="true" and IsSharedSystem="true"], id: "VentilationFan1"]'], 'invalid-timestep' => ['Expected Timestep to be 60, 30, 20, 15, 12, 10, 6, 5, 4, 3, 2, or 1'], 'invalid-timezone-utcoffset-low' => ["Element 'UTCOffset': [facet 'minInclusive'] The value '-13.0' is less than the minimum value allowed ('-12')."], @@ -385,6 +391,19 @@ def test_schema_schematron_error_messages hpxml_bldg.cooling_systems[0].primary_system = true hpxml_bldg.heat_pumps[-1].primary_heating_system = false hpxml_bldg.heat_pumps[-1].primary_cooling_system = false + elsif ['hvac-gshp-invalid-bore-config'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].bore_config = 'Invalid' + elsif ['hvac-gshp-invalid-bore-depth-low'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].bore_length = 78 + elsif ['hvac-gshp-invalid-bore-depth-high'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].bore_length = 501 + elsif ['hvac-gshp-autosized-count-not-rectangle'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].num_bore_holes = nil + puts hpxml_bldg.geothermal_loops elsif ['hvac-location-heating-system'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-boiler-oil-only.xml') hpxml_bldg.heating_systems[0].location = HPXML::LocationBasementUnconditioned @@ -460,6 +479,9 @@ def test_schema_schematron_error_messages elsif ['invalid-ground-conductivity'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.site.ground_conductivity = 0.0 + elsif ['invalid-ground-diffusivity'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base.xml') + hpxml_bldg.site.ground_diffusivity = 0.0 elsif ['invalid-heat-pump-capacity-retention'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed.xml') hpxml_bldg.heat_pumps[0].heating_capacity_17F = nil @@ -539,6 +561,9 @@ def test_schema_schematron_error_messages elsif ['invalid-pilot-light-heating-system'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-floor-furnace-propane-only.xml') hpxml_bldg.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity + elsif ['invalid-soil-type'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base.xml') + hpxml_bldg.site.soil_type = HPXML::SiteSoilTypeOther elsif ['invalid-shared-vent-in-unit-flowrate'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-bldgtype-mf-unit-shared-mechvent.xml') hpxml_bldg.ventilation_fans[0].rated_flow_rate = 80 @@ -907,6 +932,7 @@ def test_ruby_error_messages 'emissions-wrong-columns' => ['Emissions File has too few columns. Cannot find column number'], 'emissions-wrong-filename' => ["Emissions File file path 'invalid-wrong-filename.csv' does not exist."], 'emissions-wrong-rows' => ['Emissions File has invalid number of rows'], + 'geothermal-loop-multiple-attached-hps' => ["Multiple heat pumps found attached to geothermal loop 'GeothermalLoop1'."], 'heat-pump-backup-system-load-fraction' => ['Heat pump backup system cannot have a fraction heat load served specified.'], 'hvac-cooling-detailed-performance-incomplete-pair' => ['Cooling detailed performance data for outdoor temperature = 82.0 is incomplete; there must be exactly one minimum and one maximum capacity datapoint.', 'Cooling detailed performance data for outdoor temperature = 81.0 is incomplete; there must be exactly one minimum and one maximum capacity datapoint.'], @@ -918,6 +944,7 @@ def test_ruby_error_messages 'hvac-distribution-multiple-attached-heating' => ["Multiple heating systems found attached to distribution system 'HVACDistribution1'."], 'hvac-dse-multiple-attached-cooling' => ["Multiple cooling systems found attached to distribution system 'HVACDistribution1'."], 'hvac-dse-multiple-attached-heating' => ["Multiple heating systems found attached to distribution system 'HVACDistribution1'."], + 'hvac-gshp-invalid-num-bore-holes' => ["Number of bore holes (5) with borefield configuration 'Lopsided U' not supported."], 'hvac-inconsistent-fan-powers' => ["Fan powers for heating system 'HeatingSystem1' and cooling system 'CoolingSystem1' are attached to a single distribution system and therefore must be the same."], 'hvac-invalid-distribution-system-type' => ["Incorrect HVAC distribution system type for HVAC type: 'Furnace'. Should be one of: ["], 'hvac-shared-boiler-multiple' => ['More than one shared heating system found.'], @@ -947,6 +974,7 @@ def test_ruby_error_messages 'leap-year-TMY' => ['Specified a leap year (2008) but weather data has 8760 hours.'], 'net-area-negative-wall' => ["Calculated a negative net surface area for surface 'Wall1'."], 'net-area-negative-roof' => ["Calculated a negative net surface area for surface 'Roof1'."], + 'orphaned-geothermal-loop' => ["Geothermal loop 'GeothermalLoop1' found but no heat pump attached to it."], 'orphaned-hvac-distribution' => ["Distribution system 'HVACDistribution1' found but no HVAC system attached to it."], 'refrigerators-multiple-primary' => ['More than one refrigerator designated as the primary.'], 'refrigerators-no-primary' => ['Could not find a primary refrigerator.'], @@ -965,6 +993,7 @@ def test_ruby_error_messages 'storm-windows-unexpected-window-ufactor' => ['Unexpected base window U-Factor (0.33) for a storm window.'], 'unattached-cfis' => ["Attached HVAC distribution system 'foobar' not found for ventilation fan 'VentilationFan1'."], 'unattached-door' => ["Attached wall 'foobar' not found for door 'Door1'."], + 'unattached-gshp' => ["Attached geothermal loop 'foobar' not found for heat pump 'HeatPump1'."], 'unattached-hvac-distribution' => ["Attached HVAC distribution system 'foobar' not found for HVAC system 'HeatingSystem1'."], 'unattached-pv-system' => ["Attached inverter 'foobar' not found for pv system 'PVSystem1'."], 'unattached-skylight' => ["Attached roof 'foobar' not found for skylight 'Skylight1'."], @@ -1052,6 +1081,19 @@ def test_ruby_error_messages csv_data = CSV.read(File.join(File.dirname(hpxml.hpxml_path), scenario.elec_schedule_filepath)) File.write(@tmp_csv_path, csv_data[0..-2].map(&:to_csv).join) hpxml.header.emissions_scenarios[1].elec_schedule_filepath = @tmp_csv_path + elsif ['geothermal-loop-multiple-attached-hps'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.heat_pumps[0].fraction_cool_load_served = 0.5 + hpxml_bldg.heat_pumps[0].fraction_heat_load_served = 0.5 + hpxml_bldg.heat_pumps << hpxml_bldg.heat_pumps[0].dup + hpxml_bldg.heat_pumps[1].id = "HeatPump#{hpxml_bldg.heat_pumps.size}" + hpxml_bldg.heat_pumps[0].primary_heating_system = false + hpxml_bldg.heat_pumps[0].primary_cooling_system = false + hpxml_bldg.hvac_distributions.add(id: "HVACDistribution#{hpxml_bldg.hvac_distributions.size + 1}", + distribution_system_type: HPXML::HVACDistributionTypeDSE, + annual_cooling_dse: 1.0, + annual_heating_dse: 1.0) + hpxml_bldg.heat_pumps[1].distribution_system_idref = hpxml_bldg.hvac_distributions[1].id elsif ['heat-pump-backup-system-load-fraction'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml') hpxml_bldg.heating_systems[0].fraction_heat_load_served = 0.5 @@ -1093,6 +1135,16 @@ def test_ruby_error_messages hpxml_bldg.heating_systems << hpxml_bldg.heating_systems[0].dup hpxml_bldg.heating_systems[1].id = "HeatingSystem#{hpxml_bldg.heating_systems.size}" hpxml_bldg.heating_systems[0].primary_system = false + elsif ['hvac-gshp-invalid-bore-depth-autosized'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.site.ground_conductivity = 0.1 + elsif ['hvac-gshp-invalid-num-bore-holes'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.geothermal_loops[0].num_bore_holes = 5 + elsif ['hvac-gshp-invalid-num-bore-holes-autosized'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.heat_pumps[0].cooling_capacity *= 2 + hpxml_bldg.site.ground_conductivity = 0.08 elsif ['hvac-inconsistent-fan-powers'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.cooling_systems[0].fan_watts_per_cfm = 0.55 @@ -1206,6 +1258,9 @@ def test_ruby_error_messages elsif ['net-area-negative-wall'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.windows[0].area = 1000 + elsif ['orphaned-geothermal-loop'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.heat_pumps[0].geothermal_loop_idref = nil elsif ['orphaned-hvac-distribution'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base-hvac-furnace-gas-room-ac.xml') hpxml_bldg.heating_systems[0].delete @@ -1316,6 +1371,10 @@ def test_ruby_error_messages elsif ['unattached-door'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.doors[0].wall_idref = 'foobar' + elsif ['unattached-gshp'].include? error_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml') + hpxml_bldg.heat_pumps[0].geothermal_loop_idref = 'foobar' + hpxml_bldg.geothermal_loops[0].delete elsif ['unattached-hvac-distribution'].include? error_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.heating_systems[0].distribution_system_idref = 'foobar' @@ -1405,6 +1464,7 @@ def test_ruby_warning_messages 'duct-lto-cfm25' => ['Ducts are entirely within conditioned space but there is moderate leakage to the outside. Leakage to the outside is typically zero or near-zero in these situations, consider revising leakage values. Leakage will be modeled as heat lost to the ambient environment.'], 'duct-lto-cfm50' => ['Ducts are entirely within conditioned space but there is moderate leakage to the outside. Leakage to the outside is typically zero or near-zero in these situations, consider revising leakage values. Leakage will be modeled as heat lost to the ambient environment.'], 'duct-lto-percent' => ['Ducts are entirely within conditioned space but there is moderate leakage to the outside. Leakage to the outside is typically zero or near-zero in these situations, consider revising leakage values. Leakage will be modeled as heat lost to the ambient environment.'], + 'hvac-gshp-bore-depth-autosized-high' => ['Reached a maximum of 10 boreholes; setting bore depth to the maximum (500 ft).'], 'hvac-setpoint-adjustments' => ['HVAC setpoints have been automatically adjusted to prevent periods where the heating setpoint is greater than the cooling setpoint.'], 'hvac-setpoint-adjustments-daily-setbacks' => ['HVAC setpoints have been automatically adjusted to prevent periods where the heating setpoint is greater than the cooling setpoint.'], 'hvac-setpoint-adjustments-daily-schedules' => ['HVAC setpoints have been automatically adjusted to prevent periods where the heating setpoint is greater than the cooling setpoint.'], @@ -1522,6 +1582,9 @@ def test_ruby_warning_messages duct.duct_surface_area = nil duct.duct_location = nil end + elsif ['hvac-gshp-bore-depth-autosized-high'].include? warning_case + hpxml, hpxml_bldg = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml') + hpxml_bldg.site.ground_conductivity = 0.07 elsif ['hvac-setpoint-adjustments'].include? warning_case hpxml, hpxml_bldg = _create_hpxml('base.xml') hpxml_bldg.hvac_controls[0].heating_setpoint_temp = 76.0 diff --git a/docs/source/workflow_inputs.rst b/docs/source/workflow_inputs.rst index f5da5db50f..067305dbb8 100644 --- a/docs/source/workflow_inputs.rst +++ b/docs/source/workflow_inputs.rst @@ -441,13 +441,66 @@ Site information is entered in ``/HPXML/Building/BuildingDetails/BuildingSummary ================================ ======== =========== =========== ======== ======== ============================================================ ``SiteType`` string See [#]_ No suburban Terrain type for infiltration model ``ShieldingofHome`` string See [#]_ No normal Presence of nearby buildings, trees, obstructions for infiltration model - ``extension/GroundConductivity`` double Btu/hr-ft-F > 0 No 1.0 Thermal conductivity of the ground soil [#]_ + ``Soil/SoilType`` string See [#]_ No unknown Soil type + ``Soil/MoistureType`` string See [#]_ No mixed Soil moisture type + ``Soil/Conductivity`` double Btu/hr-ft-F > 0 No See [#]_ Soil thermal conductivity + ``Soil/extension/Diffusivity`` double ft2/hr > 0 No See [#]_ Soil thermal diffusivity ``extension/Neighbors`` element No Presence of neighboring buildings for solar shading ================================ ======== =========== =========== ======== ======== ============================================================ .. [#] SiteType choices are "rural", "suburban", or "urban". .. [#] ShieldingofHome choices are "normal", "exposed", or "well-shielded". - .. [#] GroundConductivity used for foundation heat transfer and ground source heat pumps. + .. [#] SoilType choices are "sand", "silt", "clay", "loam", "gravel", or "unknown". + .. [#] MoistureType choices are "dry", "wet", or "mixed". + .. [#] If Conductivity not provided, defaults to Diffusivity / 0.0208 if Diffusivity provided, otherwise defaults based on SoilType and MoistureType: + + \- **unknown, dry/wet/mixed**: 1.0000 + + \- **sand/gravel, dry**: 0.2311 + + \- **sand, wet**: 1.3865 + + \- **sand, mixed**: 0.8088 + + \- **silt/clay, dry**: 0.2889 + + \- **silt/clay, wet**: 0.9821 + + \- **silt/clay, mixed**: 0.6355 + + \- **loam, dry/wet/mixed**: 1.2132 + + \- **gravel, wet**: 1.0399 + + \- **gravel, mixed**: 0.6355 + + .. [#] If Diffusivity not provided, defaults to Conductivity * 0.0208 if Conductivity provided, otherwise defaults based on SoilType and MoistureType: + + \- **unknown, dry/wet/mixed**: 0.0208 + + \- **sand/gravel, dry**: 0.0097 + + \- **sand, wet**: 0.0322 + + \- **sand, mixed**: 0.0210 + + \- **silt/clay, dry**: 0.0120 + + \- **silt/clay, wet**: 0.0194 + + \- **silt/clay, mixed**: 0.0157 + + \- **loam, dry/wet/mixed**: 0.0353 + + \- **gravel, wet**: 0.0291 + + \- **gravel, mixed**: 0.0194 + +.. note:: + + Default Conductivity and Diffusivity values based on SoilType/MoistureType provided by Table 1 of `Ground Thermal Diffusivity Calculation by Direct Soil Temperature Measurement. Application to very Low Enthalpy Geothermal Energy Systems `_ (with the exception of "unknown"). + Conductivity is used for foundation heat transfer and ground source heat pumps. + Diffusivity is used for ground source heat pumps. For each neighboring building defined, additional information is entered in a ``extension/Neighbors/NeighborBuilding``. @@ -2063,6 +2116,7 @@ If a ground-to-air heat pump is specified, additional information is entered in ``AnnualCoolingEfficiency[Units="EER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency ``AnnualHeatingEfficiency[Units="COP"]/Value`` double W/W > 0 Yes Rated heating efficiency ``NumberofUnitsServed`` integer > 0 See [#]_ Number of dwelling units served + ``AttachedToGeothermalLoop`` idref See [#]_ No [#]_ ID of attached geothermal loop ``extension/PumpPowerWattsPerTon`` double W/ton >= 0 No See [#]_ Pump power [#]_ ``extension/SharedLoopWatts`` double W >= 0 See [#]_ Shared pump power [#]_ ``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed @@ -2077,6 +2131,8 @@ If a ground-to-air heat pump is specified, additional information is entered in .. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1. .. [#] NumberofUnitsServed only required if IsSharedSystem is true, in which case it must be > 1. + .. [#] AttachedToGeothermalLoop must reference a ``GeothermalLoop``. + .. [#] If AttachedToGeothermalLoop not provided, the ground-to-air heat pump will be automatically attached to a geothermal loop that is entirely defaulted. .. [#] If PumpPowerWattsPerTon not provided, defaults to 30 W/ton per `ANSI/RESNET/ICC 301-2019 `_ for a closed loop system. .. [#] Pump power is calculated using PumpPowerWattsPerTon and the cooling capacity in tons, unless the system only provides heating, in which case the heating capacity in tons is used instead. Any pump power that is shared by multiple dwelling units should be included in SharedLoopWatts, *not* PumpPowerWattsPerTon, so that shared loop pump power attributed to the dwelling unit is calculated. @@ -2227,6 +2283,78 @@ In addition, the parent object must provide the ``HeatingCapacity`` and the ``Co For heat pumps, :ref:`clg_detailed_perf_data` must also be provided. Note that when detailed cooling performance data is provided, some other inputs (like HSPF and HeatingCapacityRetention) are ignored. +.. _geothermal_loops: + +HPXML Geothermal Loops +********************** + +Each geothermal loop is entered as an ``/HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/GeothermalLoop``. + + ======================================== ================ =========== ================== ======== ============== =============================================== + Element Type Units Constraints Required Default Notes + ======================================== ================ =========== ================== ======== ============== =============================================== + ``SystemIdentifier`` id Yes Unique identifier + ``LoopConfiguration`` string vertical Yes Geothermal loop configuration + ``LoopFlow`` double gal/min > 0 No See [#]_ Water flow rate through the geothermal loop + ``BoreholesOrTrenches/Count`` integer >= 1, <= 10 No [#]_ See [#]_ Number of boreholes + ``BoreholesOrTrenches/Length`` double ft >= 79, <= 500 [#]_ No See [#]_ Length (i.e., average depth) of each borehole + ``BoreholesOrTrenches/Spacing`` double ft > 0 No 16.4 Distance between boreholes + ``BoreholesOrTrenches/Diameter`` double in > 0 No 5.0 Borehole diameter + ``Grout/Type`` or ``Grout/Conductivity`` string or double Btu/hr-ft-F See [#]_ or > 0 No standard Grout type or conductivity [#]_ + ``Pipe/Type`` or ``Pipe/Conductivity`` string or double Btu/hr-ft-F See [#]_ or > 0 No standard Pipe type or conductivity [#]_ + ``Pipe/Diameter`` double in See [#]_ No 1.25 Pipe diameter + ``Pipe/ShankSpacing`` double in > 0 No See [#]_ Center-to-center distance between two branches of a vertical U-tube + ``extension/BorefieldConfiguration`` string See [#]_ No Rectangle Configuration of boreholes + ======================================== ================ =========== ================== ======== ============== =============================================== + + .. [#] LoopFlow autosized by calculating 3 times the maximum of the ground source heat pump's heating/cooling capacity in tons, with a minimum of 3 gal/min. + .. [#] If extension/BorefieldConfiguration provided, and it is not **Rectangle**, a valid BoreholesOrTrenches/Count must also be provided: + + \- **Rectangle**: 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 + + \- **Open Rectangle**: 8 or 10 + + \- **C**: 7 or 9 + + \- **L**: 4, 5, 6, 7, 8, 9, or 10 + + \- **U**: 7, 9, or 10 + + \- **Lopsided U**: 6, 7, 8, 9, or 10 + + .. [#] BoreholesOrTrenches/Count calculated as the required total length of the ground heat exchanger (calculated during sizing) divided by BoreholesOrTrenches/Length if BoreholesOrTrenches/Length is provided, otherwise autosized by assuming 1 for every ton of ground source heat pump cooling capacity (max of 10). + .. [#] 79 ft is the minimum depth in the g-function library. + 500 ft is the maximum realistic depth to be used in residential applications. + .. [#] BoreholesOrTrenches/Length calculated as the required total length of the ground heat exchanger (calculated during sizing) divided by the total number of boreholes. + .. [#] Grout/Type choices are "standard" or "thermally enhanced". + .. [#] If Grout/Conductivity not provided, defaults based on Grout/Type: + + \- **standard**: 0.4 Btu/hr-ft-F + + \- **thermally enhanced**: 0.8 Btu/hr-ft-F + + .. [#] Pipe/Type choices are "standard" or "thermally enhanced". + .. [#] If Pipe/Conductivity not provided, defaults based on Pipe/Type: + + \- **standard**: 0.23 Btu/hr-ft-F + + \- **thermally enhanced**: 0.40 Btu/hr-ft-F + + .. [#] Pipe diameter must be either 0.75, 1.0, or 1.25. + .. [#] ShankSpacing defaults to sum of U-tube spacing (assumed to be 0.9661 in) and pipe outer diameter, where pipe outer diameter is assumed to be: + + \- **0.75 in pipe**: 1.050 in + + \- **1.0 in pipe**: 1.315 in + + \- **1.25 in pipe**: 1.660 in + + .. [#] extension/BorefieldConfiguration choices are "Rectangle", "Open Rectangle", "C", "L", "U", or "Lopsided U". + +.. note:: + + For a given combination of ``extension/BorefieldConfiguration``, ``BoreholesOrTrenches/Count``, ``BoreholesOrTrenches/Spacing``, ``BoreholesOrTrenches/Length``, and ``BoreholesOrTrenches/Diameter`` g-function values are determined using the `G-Function Library `_ (from the Geothermal Data Repository). + .. _hvac_control: HPXML HVAC Control diff --git a/tasks.rb b/tasks.rb index 8eaa184e60..197af92e2b 100644 --- a/tasks.rb +++ b/tasks.rb @@ -1580,33 +1580,9 @@ def apply_hpxml_modification(hpxml_file, hpxml) end end if hpxml_file.include? 'shared-ground-loop' - hpxml_bldg.heating_systems.reverse_each do |heating_system| - heating_system.delete - end - hpxml_bldg.cooling_systems.reverse_each do |cooling_system| - cooling_system.delete - end - hpxml_bldg.heat_pumps.add(id: "HeatPump#{hpxml_bldg.heat_pumps.size + 1}", - distribution_system_idref: hpxml_bldg.hvac_distributions[-1].id, - heat_pump_type: HPXML::HVACTypeHeatPumpGroundToAir, - heat_pump_fuel: HPXML::FuelTypeElectricity, - backup_type: HPXML::HeatPumpBackupTypeIntegrated, - backup_heating_fuel: HPXML::FuelTypeElectricity, - is_shared_system: true, - number_of_units_served: 6, - backup_heating_efficiency_percent: 1.0, - fraction_heat_load_served: 1, - fraction_cool_load_served: 1, - heating_efficiency_cop: 3.6, - cooling_efficiency_eer: 16.6, - heating_capacity: 12000, - cooling_capacity: 12000, - backup_heating_capacity: 12000, - cooling_shr: 0.73, - primary_heating_system: true, - primary_cooling_system: true, - pump_watts_per_ton: 0.0) - + hpxml_bldg.heat_pumps[0].is_shared_system = true + hpxml_bldg.heat_pumps[0].number_of_units_served = 6 + hpxml_bldg.heat_pumps[0].pump_watts_per_ton = 0.0 end if hpxml_file.include? 'eae' hpxml_bldg.heating_systems[0].electric_auxiliary_energy = 500.0 @@ -1960,6 +1936,9 @@ def apply_hpxml_modification(hpxml_file, hpxml) hpxml_bldg.heat_pumps[0].heating_capacity_retention_fraction = nil hpxml_bldg.heat_pumps[0].heating_capacity_retention_temp = nil end + if hpxml_file.include? 'base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml' + hpxml_bldg.geothermal_loops[0].shank_spacing = 2.5 + end # ------------------ # # HPXML WaterHeating # @@ -2500,7 +2479,38 @@ def download_utility_rates exit! end -command_list = [:update_measures, :update_hpxmls, :create_release_zips, :download_utility_rates] +def download_g_functions + require_relative 'HPXMLtoOpenStudio/resources/data/g_functions/util' + + g_functions_dir = File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio/resources/data/g_functions') + FileUtils.mkdir(g_functions_dir) if !File.exist?(g_functions_dir) + filepath = File.join(g_functions_dir, 'g-function_library_1.0') + + if !File.exist?(filepath) # presence of 'g-function_library_1.0' folder will skip re-downloading + require 'tempfile' + tmpfile = Tempfile.new('functions') + + UrlResolver.fetch('https://gdr.openei.org/files/1325/g-function_library_1.0.zip', tmpfile) + + puts 'Extracting g-functions...' + require 'zip' + Zip::File.open(tmpfile.path.to_s) do |zipfile| + zipfile.each do |file| + fpath = File.join(g_functions_dir, file.name) + FileUtils.mkdir_p(File.dirname(fpath)) + zipfile.extract(file, fpath) unless File.exist?(fpath) + end + end + end + + num_configs_actual = process_g_functions(filepath) + + puts "#{num_configs_actual} config files are available in #{g_functions_dir}." + puts 'Completed.' + exit! +end + +command_list = [:update_measures, :update_hpxmls, :create_release_zips, :download_utility_rates, :download_g_functions] def display_usage(command_list) puts "Usage: openstudio #{File.basename(__FILE__)} [COMMAND]\nCommands:\n " + command_list.join("\n ") @@ -2585,6 +2595,10 @@ def display_usage(command_list) download_utility_rates end +if ARGV[0].to_sym == :download_g_functions + download_g_functions +end + if ARGV[0].to_sym == :create_release_zips if ENV['CI'] # CI doesn't have git, so default to everything diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 0aff071792..5d05530ef0 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -105,6 +105,7 @@ "heat_pump_backup_type": "none", "heat_pump_backup_fuel": "electricity", "heat_pump_backup_heating_efficiency": 0, + "geothermal_loop_configuration": "none", "heating_system_2_type": "none", "heating_system_2_fuel": "electricity", "heating_system_2_heating_efficiency": 0, @@ -473,6 +474,7 @@ "heat_pump_backup_type": "none", "heat_pump_backup_fuel": "electricity", "heat_pump_backup_heating_efficiency": 0, + "geothermal_loop_configuration": "none", "heating_system_2_type": "none", "heating_system_2_fuel": "electricity", "heating_system_2_heating_efficiency": 0, @@ -916,7 +918,26 @@ "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml" }, "sample_files/base-bldgtype-mf-unit-shared-ground-loop-ground-to-air-heat-pump.xml": { - "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml" + "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml", + "heating_system_type": "none", + "heating_system_heating_efficiency": 0, + "heating_system_fraction_heat_load_served": 0, + "cooling_system_type": "none", + "cooling_system_cooling_efficiency": 0, + "cooling_system_fraction_cool_load_served": 0, + "heat_pump_type": "ground-to-air", + "heat_pump_heating_efficiency_type": "COP", + "heat_pump_heating_efficiency": 3.6, + "heat_pump_cooling_efficiency_type": "EER", + "heat_pump_cooling_efficiency": 16.6, + "heat_pump_cooling_sensible_heat_fraction": 0.73, + "heat_pump_heating_capacity": 12000, + "heat_pump_cooling_capacity": 12000, + "heat_pump_fraction_heat_load_served": 1, + "heat_pump_fraction_cool_load_served": 1, + "heat_pump_backup_type": "integrated", + "heat_pump_backup_heating_efficiency": 1, + "heat_pump_backup_heating_capacity": 12000 }, "sample_files/base-bldgtype-mf-unit-shared-laundry-room.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit.xml" @@ -1995,6 +2016,21 @@ "heat_pump_backup_heating_efficiency": 1, "heat_pump_backup_heating_capacity": 36000 }, + "sample_files/base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml": { + "parent_hpxml": "sample_files/base-hvac-ground-to-air-heat-pump.xml", + "geothermal_loop_configuration": "vertical", + "geothermal_loop_borefield_configuration": "Lopsided U", + "geothermal_loop_loop_flow": 10.0, + "geothermal_loop_boreholes_count": 9, + "geothermal_loop_boreholes_length": 314.961, + "geothermal_loop_boreholes_spacing": 16.4042, + "geothermal_loop_boreholes_diameter": 5.905512, + "geothermal_loop_grout_type": "standard", + "geothermal_loop_pipe_type": "standard", + "geothermal_loop_pipe_diameter": "1\" pipe", + "site_ground_diffusivity": 0.03, + "site_soil_and_moisture_type": "sand, dry" + }, "sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml": { "parent_hpxml": "sample_files/base-hvac-ground-to-air-heat-pump.xml", "heat_pump_heating_capacity": 0, diff --git a/workflow/sample_files/base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml new file mode 100644 index 0000000000..1e33be697b --- /dev/null +++ b/workflow/sample_files/base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml @@ -0,0 +1,584 @@ + + + + HPXML + tasks.rb + 2000-01-01T00:00:00-07:00 + create + + + + + 60 + + + + Bills + + + + + + + + +
+ CO +
+
+ + proposed workscope + + + + + suburban + stand-alone + no units above or below + 180 + + electricity + natural gas + + + sand + dry + + 0.03 + + + + + single-family detached + 2.0 + 1.0 + 8.0 + 3 + 2 + 2700.0 + 21600.0 + + + + + 2006 + 5B + + + + USA_CO_Denver.Intl.AP.725650_TMY3 + + USA_CO_Denver.Intl.AP.725650_TMY3.epw + + + + + + + + 50.0 + + ACH + 3.0 + + 21600.0 + + + + + + + + false + + + false + + + + + + + + + + + true + + + + + + + + + + + attic - unvented + 1509.3 + asphalt or fiberglass shingles + 0.7 + 0.92 + 6.0 + false + + + 2.3 + + + + + + + outside + basement - conditioned + 115.6 + wood siding + 0.7 + 0.92 + + + 23.0 + + + + + + + outside + conditioned space + + + + 1200.0 + wood siding + 0.7 + 0.92 + + gypsum board + + + + 23.0 + + + + + outside + attic - unvented + gable + + + + 225.0 + wood siding + 0.7 + 0.92 + + + 4.0 + + + + + + + ground + basement - conditioned + 8.0 + 1200.0 + 8.0 + 7.0 + + gypsum board + + + + + continuous - exterior + 8.9 + 0.0 + 8.0 + + + continuous - interior + 0.0 + + + + + + + + attic - unvented + conditioned space + ceiling + + + + 1350.0 + + gypsum board + + + + 39.3 + + + + + + + basement - conditioned + 1350.0 + 4.0 + 150.0 + + + + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + + + + 108.0 + 0 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 90 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 108.0 + 180 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + 72.0 + 270 + 0.33 + 0.45 + + + 0.7 + 0.85 + + 0.67 + + + + + + + + 40.0 + 180 + 4.4 + + + + + + + + + + + + + + ground-to-air + electricity + 36000.0 + 36000.0 + 0.73 + integrated + electricity + + Percent + 1.0 + + 36000.0 + 1.0 + 1.0 + + EER + 16.6 + + + COP + 3.6 + + + + 30.0 + + + + + vertical + 10.0 + + 9 + 314.961 + 16.4042 + 5.905512 + + + standard + + + standard + 1.0 + 2.5 + + + Lopsided U + + + + + + 68.0 + 78.0 + + + + + + regular velocity + + supply + + CFM25 + 75.0 + to outside + + + + return + + CFM25 + 25.0 + to outside + + + + + supply + 4.0 + attic - unvented + 150.0 + + + + return + 0.0 + attic - unvented + 50.0 + + + + + + + + + electricity + storage water heater + conditioned space + 40.0 + 1.0 + 18767.0 + 0.95 + 125.0 + + + + + + 50.0 + + + + 0.0 + + + + + shower head + true + + + + faucet + false + + + + + + + conditioned space + 1.21 + 380.0 + 0.12 + 1.09 + 27.0 + 6.0 + 3.2 + + + + conditioned space + electricity + 3.73 + true + 150.0 + + + + conditioned space + 307.0 + 12 + 0.12 + 1.09 + 22.32 + 4.0 + + + + conditioned space + 650.0 + true + + + + conditioned space + electricity + false + + + + false + + + + + + interior + 0.4 + + + + + + + interior + 0.1 + + + + + + + interior + 0.25 + + + + + + + exterior + 0.4 + + + + + + + exterior + 0.1 + + + + + + + exterior + 0.25 + + + + + + + + + TV other + + kWh/year + 620.0 + + + + + other + + kWh/year + 2457.0 + + + 0.855 + 0.045 + + + + +
+
\ No newline at end of file diff --git a/workflow/sample_files/base-misc-ground-conductivity.xml b/workflow/sample_files/base-misc-ground-conductivity.xml index 644d8525b5..7af25ecd32 100644 --- a/workflow/sample_files/base-misc-ground-conductivity.xml +++ b/workflow/sample_files/base-misc-ground-conductivity.xml @@ -40,9 +40,9 @@ electricity natural gas - - 0.8 - + + 0.8 + single-family detached diff --git a/workflow/tests/base_results/results_sizing.csv b/workflow/tests/base_results/results_sizing.csv index d31a384e93..07947f3b72 100644 --- a/workflow/tests/base_results/results_sizing.csv +++ b/workflow/tests/base_results/results_sizing.csv @@ -95,6 +95,9 @@ denver-hvac-autosize-furnace-x3-dse.xml,23876.0,15265.0,0.0,527.0,635.0 denver-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-ACCA.xml,0.0,24224.0,0.0,0.0,912.0 denver-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-HERS.xml,0.0,18787.0,0.0,0.0,708.0 denver-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-MaxLoad.xml,0.0,24224.0,0.0,0.0,912.0 +denver-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-ACCA.xml,31565.0,31565.0,31565.0,996.0,1189.0 +denver-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-HERS.xml,31565.0,31565.0,31565.0,996.0,1313.0 +denver-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-MaxLoad.xml,38768.0,38768.0,31565.0,1223.0,1612.0 denver-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-ACCA.xml,31147.0,0.0,31147.0,982.0,0.0 denver-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-HERS.xml,31147.0,0.0,31147.0,982.0,0.0 denver-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-MaxLoad.xml,31147.0,0.0,31147.0,982.0,0.0 @@ -276,6 +279,9 @@ houston-hvac-autosize-furnace-x3-dse.xml,14219.0,18120.0,0.0,260.0,753.0 houston-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-ACCA.xml,0.0,32400.0,0.0,0.0,972.0 houston-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-HERS.xml,0.0,25329.0,0.0,0.0,760.0 houston-hvac-autosize-ground-to-air-heat-pump-cooling-only-sizing-methodology-MaxLoad.xml,0.0,32400.0,0.0,0.0,972.0 +houston-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-ACCA.xml,32400.0,32400.0,20288.0,844.0,972.0 +houston-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-HERS.xml,25329.0,25329.0,20288.0,660.0,760.0 +houston-hvac-autosize-ground-to-air-heat-pump-detailed-geothermal-loop-sizing-methodology-MaxLoad.xml,32400.0,32400.0,20288.0,844.0,972.0 houston-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-ACCA.xml,20038.0,0.0,20038.0,522.0,0.0 houston-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-HERS.xml,20038.0,0.0,20038.0,522.0,0.0 houston-hvac-autosize-ground-to-air-heat-pump-heating-only-sizing-methodology-MaxLoad.xml,20038.0,0.0,20038.0,522.0,0.0 diff --git a/workflow/tests/base_results/results_workflow_simulations1.csv b/workflow/tests/base_results/results_workflow_simulations1.csv index a5e7e9a525..0d1ad6e5c2 100644 --- a/workflow/tests/base_results/results_workflow_simulations1.csv +++ b/workflow/tests/base_results/results_workflow_simulations1.csv @@ -42,7 +42,7 @@ base-bldgtype-mf-unit-shared-chiller-only-fan-coil.xml,26.97,26.97,26.97,26.97,0 base-bldgtype-mf-unit-shared-chiller-only-water-loop-heat-pump.xml,31.309,31.309,31.309,31.309,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.758,0.935,9.535,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10.386,9.374,0.584,0.0,0.0,0.0,10.0,1991.4,3070.5,3070.5,0.0,8.161,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.008,-1.068,0.0,0.0,-0.049,-1.148,5.527,0.0,0.0,-0.004,0.0,-0.343,-0.514,-1.338,-0.381,0.0,1.247,7.349,1.24,1354.8,997.6,11171.6,3093.4,0.0,0.0,8994.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7961.0,910.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-cooling-tower-only-water-loop-heat-pump.xml,27.283,27.283,27.283,27.283,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.731,0.935,9.535,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,10.386,9.374,0.584,0.0,0.0,0.0,10.0,1724.1,2162.9,2162.9,0.0,8.161,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.008,-1.068,0.0,0.0,-0.049,-1.148,5.527,0.0,0.0,-0.004,0.0,-0.343,-0.514,-1.338,-0.381,0.0,1.247,7.349,1.24,1354.8,997.6,11171.6,3093.4,0.0,0.0,8994.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7961.0,910.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-generator.xml,40.97,34.146,26.175,19.35,0.629,0.0,14.167,0.0,0.0,0.0,0.0,0.005,0.0,0.0,3.012,0.548,9.527,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.824,0.0,0.629,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.167,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.581,0.0,9.236,9.374,0.576,0.0,0.0,0.0,0.0,1655.4,2001.6,2001.6,3.449,7.707,0.0,-0.016,2.473,0.0,0.0,0.424,3.936,-2.551,0.0,0.0,-0.012,0.0,-0.395,1.279,0.0,0.677,0.0,0.0,-4.566,-0.771,0.0,-0.011,-1.11,0.0,0.0,-0.044,-1.142,5.651,0.0,0.0,-0.007,0.0,-0.385,-0.518,-1.333,-0.392,0.0,0.0,7.4,1.256,1354.8,997.6,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 -base-bldgtype-mf-unit-shared-ground-loop-ground-to-air-heat-pump.xml,28.248,28.248,28.248,28.248,0.0,0.0,0.0,0.0,0.0,0.0,0.154,0.255,0.0,0.0,2.271,2.959,9.527,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.581,0.0,9.235,9.374,0.576,0.0,0.0,0.0,0.0,1717.0,1949.1,1949.1,3.449,7.707,0.0,-0.016,2.483,0.0,0.0,0.426,3.954,-2.567,0.0,0.0,-0.012,0.0,-0.391,1.284,0.0,0.681,0.0,0.0,-4.595,-0.776,0.0,-0.011,-1.1,0.0,0.0,-0.042,-1.124,5.636,0.0,0.0,-0.007,0.0,-0.381,-0.513,-1.333,-0.388,0.0,0.0,7.371,1.25,1354.8,997.6,11171.5,3093.4,0.0,12000.0,12000.0,12000.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 +base-bldgtype-mf-unit-shared-ground-loop-ground-to-air-heat-pump.xml,28.233,28.233,28.233,28.233,0.0,0.0,0.0,0.0,0.0,0.0,0.153,0.254,0.0,0.0,2.256,2.96,9.527,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.581,0.0,9.235,9.374,0.576,0.0,0.0,0.0,0.0,1716.6,1945.8,1945.8,3.449,7.707,0.0,-0.016,2.483,0.0,0.0,0.426,3.954,-2.567,0.0,0.0,-0.012,0.0,-0.391,1.284,0.0,0.681,0.0,0.0,-4.595,-0.776,0.0,-0.011,-1.1,0.0,0.0,-0.042,-1.124,5.636,0.0,0.0,-0.007,0.0,-0.381,-0.513,-1.333,-0.388,0.0,0.0,7.371,1.25,1354.8,997.6,11171.5,3093.4,0.0,12000.0,12000.0,12000.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-laundry-room-multiple-water-heaters.xml,31.695,31.695,16.716,16.716,14.979,0.0,0.0,0.0,0.0,0.0,0.0,0.004,0.0,0.0,3.066,0.563,0.0,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.572,0.0,14.407,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.527,0.0,9.528,9.374,2.261,0.0,0.0,0.0,0.0,1020.3,1539.8,1539.8,3.498,7.734,0.0,-0.017,2.437,0.0,0.0,0.425,3.915,-2.473,0.0,0.0,-0.013,0.0,-0.417,2.025,0.0,0.0,0.0,0.0,-4.705,-0.753,0.0,-0.012,-1.156,0.0,0.0,-0.045,-1.18,5.73,0.0,0.0,-0.007,0.0,-0.407,-0.941,-1.35,0.0,0.0,0.0,7.748,1.273,1354.8,997.6,11171.8,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-laundry-room.xml,29.58,29.58,16.526,16.526,13.054,0.0,0.0,0.0,0.0,0.0,0.0,0.005,0.0,0.0,2.915,0.523,0.0,0.0,0.0,2.026,0.0,0.206,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.742,0.0,12.313,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.685,0.0,8.806,9.374,0.568,0.0,0.0,0.0,0.0,1011.4,1528.4,1528.4,3.655,7.615,0.0,-0.017,2.498,0.0,0.0,0.426,3.976,-2.663,0.0,0.0,-0.014,0.0,-0.395,2.062,0.0,0.0,0.0,0.0,-4.478,-0.8,0.0,-0.012,-1.052,0.0,0.0,-0.036,-1.051,5.54,0.0,0.0,-0.009,0.0,-0.386,-0.862,-1.313,0.0,0.0,0.0,6.883,1.227,1354.8,997.6,11171.7,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,5886.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,1532.0,7051.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,206.0,3320.0,520.0,0.0,-280.0,800.0 base-bldgtype-mf-unit-shared-mechvent-multiple.xml,50.689,50.689,30.64,30.64,20.049,0.0,0.0,0.0,0.0,0.0,0.0,0.057,0.0,0.0,2.791,0.303,9.565,0.0,0.0,2.026,0.0,0.206,3.73,0.946,0.167,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,2.791,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.888,0.0,0.0,0.0,0.0,12.161,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.308,0.0,5.091,9.374,0.615,0.0,0.0,0.0,0.0,1867.2,2259.4,2259.4,7.584,8.979,0.0,-0.017,2.791,0.0,0.0,0.407,4.196,-4.234,0.0,0.0,-0.021,0.0,-0.264,0.076,0.0,12.34,0.0,0.0,-6.693,-1.194,0.0,-0.013,-0.143,0.0,0.0,0.06,0.126,3.968,0.0,0.0,-0.017,0.0,-0.258,-0.006,-0.698,-4.225,0.0,0.0,5.312,0.832,1354.8,997.6,11171.5,3093.4,0.0,12000.0,12000.0,0.0,6.8,91.76,8872.0,0.0,2576.0,0.0,287.0,1490.0,0.0,0.0,0.0,0.0,4518.0,7972.0,0.0,3264.0,0.0,103.0,157.0,0.0,0.0,0.0,0.0,1127.0,3320.0,0.0,0.0,0.0,0.0 @@ -59,7 +59,7 @@ base-bldgtype-sfa-unit.xml,42.239,42.239,29.828,29.828,12.411,0.0,0.0,0.0,0.0,0. base-dhw-combi-tankless-outside.xml,51.079,51.079,21.423,21.423,29.656,0.0,0.0,0.0,0.0,0.0,0.0,0.147,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.363,0.0,10.294,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.322,0.0,0.0,9.177,0.0,0.0,0.0,0.0,0.0,1375.5,1017.3,1375.5,16.511,0.0,0.0,3.746,3.646,0.513,7.505,0.631,10.104,-12.69,0.0,0.0,0.0,8.142,-0.067,4.808,0.0,0.73,0.0,0.0,-8.575,-2.5,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1070.1,777.1,8412.0,1930.3,0.0,36000.0,0.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-dhw-combi-tankless.xml,52.277,52.277,21.432,21.432,30.845,0.0,0.0,0.0,0.0,0.0,0.0,0.156,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.551,0.0,10.294,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,17.37,0.0,0.0,9.177,0.0,0.0,0.0,0.0,0.0,1376.9,1017.3,1376.9,17.068,0.0,0.0,3.743,3.642,0.513,7.499,0.631,10.099,-12.691,0.0,0.0,0.0,8.145,-0.067,5.887,0.0,0.729,0.0,0.0,-8.581,-2.501,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1070.1,777.1,8412.0,1930.3,0.0,36000.0,0.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-2-speed.xml,32.031,32.031,32.031,32.031,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.255,0.74,6.76,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15.208,9.074,0.661,2.903,0.0,0.0,0.0,2067.2,2821.5,2821.5,0.0,19.702,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.093,-0.469,-0.052,2.672,-0.032,-1.448,11.85,0.0,0.0,0.0,-6.916,-0.064,-1.192,-3.046,-0.166,0.0,3.688,8.629,2.036,1354.8,997.6,11181.6,2565.8,0.0,0.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-dhw-desuperheater-gshp.xml,37.468,37.468,37.468,37.468,0.0,0.0,0.0,0.0,0.0,0.0,5.011,0.476,0.0,0.0,3.206,0.962,6.536,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.721,0.0,14.004,9.074,0.613,2.953,0.0,0.0,0.0,3250.5,2391.7,3250.5,21.507,16.492,0.0,3.604,3.642,0.513,7.524,0.63,10.096,-12.683,0.0,0.0,0.0,8.308,-0.064,4.805,0.0,0.729,0.0,3.371,-8.59,-2.499,0.0,-0.01,-0.463,-0.052,2.69,-0.026,-1.403,11.73,0.0,0.0,0.0,-6.345,-0.06,-1.169,-3.129,-0.165,0.0,2.103,8.505,2.01,1354.8,997.6,11184.9,2566.6,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-dhw-desuperheater-gshp.xml,37.42,37.42,37.42,37.42,0.0,0.0,0.0,0.0,0.0,0.0,4.992,0.473,0.0,0.0,3.182,0.96,6.536,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.708,0.0,14.0,9.074,0.613,2.953,0.0,0.0,0.0,3242.0,2353.6,3242.0,21.526,16.446,0.0,3.605,3.642,0.513,7.524,0.63,10.096,-12.683,0.0,0.0,0.0,8.307,-0.064,4.805,0.0,0.729,0.0,3.358,-8.59,-2.499,0.0,-0.01,-0.463,-0.052,2.69,-0.026,-1.403,11.73,0.0,0.0,0.0,-6.345,-0.06,-1.169,-3.129,-0.165,0.0,2.099,8.505,2.01,1354.8,997.6,11185.2,2566.7,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-hpwh.xml,56.35,56.35,29.683,29.683,26.666,0.0,0.0,0.0,0.0,0.0,0.0,0.44,0.0,0.0,4.46,0.854,2.653,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.666,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.972,0.0,14.893,9.085,1.809,3.024,0.0,0.0,0.0,1884.0,3131.6,3131.6,25.892,19.515,0.0,3.522,3.634,0.511,7.504,0.628,10.066,-12.724,0.0,0.0,0.0,8.331,-0.052,4.794,0.0,0.727,0.0,5.64,-5.456,-2.509,0.0,-0.019,-0.422,-0.046,2.83,-0.015,-1.277,11.689,0.0,0.0,0.0,-6.115,-0.048,-1.121,-2.944,-0.156,0.0,3.19,7.659,2.001,1354.7,997.5,11162.8,2561.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-tankless.xml,33.66,33.66,33.66,33.66,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.458,1.184,6.742,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,14.585,9.08,0.0,2.936,0.0,0.0,0.0,1932.8,3243.5,3243.5,0.0,19.108,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.068,-0.464,-0.051,2.687,-0.03,-1.43,11.85,0.0,0.0,0.0,-6.908,-0.064,-1.186,-3.017,-0.165,0.0,3.23,8.361,2.036,1354.8,997.6,11131.9,2554.4,0.0,0.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-var-speed.xml,31.142,31.142,31.142,31.142,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.826,0.295,6.744,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,15.992,9.074,0.661,2.927,0.0,0.0,0.0,2066.9,2630.1,2630.1,0.0,19.354,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.134,-0.469,-0.052,2.673,-0.032,-1.447,11.85,0.0,0.0,0.0,-6.915,-0.064,-1.192,-3.051,-0.166,0.0,4.519,8.636,2.036,1354.8,997.6,11184.2,2566.4,0.0,0.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 @@ -229,9 +229,10 @@ base-hvac-furnace-oil-only.xml,53.489,53.489,30.857,30.857,0.0,22.632,0.0,0.0,0. base-hvac-furnace-propane-only.xml,53.489,53.489,30.857,30.857,0.0,0.0,22.632,0.0,0.0,0.0,0.0,0.588,0.0,0.0,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.632,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.41,0.0,0.0,9.075,0.588,0.0,0.0,0.0,0.0,2123.2,1622.9,2123.2,24.046,0.0,0.0,3.534,3.648,0.513,7.513,0.632,10.111,-12.683,0.0,0.0,0.0,8.147,-0.067,4.809,0.0,0.73,0.0,5.572,-8.905,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-furnace-wood-only.xml,53.489,53.489,30.857,30.857,0.0,0.0,0.0,22.632,0.0,0.0,0.0,0.588,0.0,0.0,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.632,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.41,0.0,0.0,9.075,0.588,0.0,0.0,0.0,0.0,2123.2,1622.9,2123.2,24.046,0.0,0.0,3.534,3.648,0.513,7.513,0.632,10.111,-12.683,0.0,0.0,0.0,8.147,-0.067,4.809,0.0,0.73,0.0,5.572,-8.905,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-furnace-x3-dse.xml,58.355,58.355,36.777,36.777,21.578,0.0,0.0,0.0,0.0,0.0,0.0,0.386,0.0,0.0,5.156,0.942,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.578,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.339,0.0,11.294,9.075,0.614,0.0,0.0,0.0,0.0,2105.4,2603.4,2603.4,16.604,11.921,0.0,3.778,3.677,0.518,7.599,0.636,10.197,-12.796,0.0,0.0,0.0,8.381,-0.067,4.854,0.0,0.737,0.0,0.0,-8.991,-2.523,0.0,0.032,-0.467,-0.052,2.683,-0.027,-1.409,11.744,0.0,0.0,0.0,-6.357,-0.063,-1.172,-3.096,-0.166,0.0,0.0,7.876,2.012,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-hvac-ground-to-air-heat-pump-cooling-only.xml,34.179,34.179,34.179,34.179,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.022,0.82,9.061,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.013,9.075,0.661,0.0,0.0,0.0,0.0,2020.7,2840.3,2840.3,0.0,15.957,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.027,-0.472,-0.052,2.665,-0.032,-1.455,11.85,0.0,0.0,0.0,-6.919,-0.064,-1.194,-3.019,-0.167,0.0,2.081,8.007,2.036,1354.8,997.6,11171.5,2563.5,0.0,0.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-hvac-ground-to-air-heat-pump-heating-only.xml,35.993,35.993,35.993,35.993,0.0,0.0,0.0,0.0,0.0,0.0,4.996,0.729,0.0,0.0,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.793,0.0,0.0,9.075,0.588,0.0,0.0,0.0,0.0,3375.0,1621.9,3375.0,22.277,0.0,0.0,3.592,3.648,0.513,7.511,0.632,10.113,-12.683,0.0,0.0,0.0,8.146,-0.069,4.809,0.0,0.73,0.0,3.908,-8.906,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-hvac-ground-to-air-heat-pump.xml,39.675,39.675,39.675,39.675,0.0,0.0,0.0,0.0,0.0,0.0,4.922,0.468,0.0,0.0,3.077,0.916,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.38,0.0,13.305,9.075,0.614,0.0,0.0,0.0,0.0,3274.6,2737.2,3274.6,21.395,16.112,0.0,3.608,3.644,0.513,7.528,0.631,10.102,-12.683,0.0,0.0,0.0,8.312,-0.065,4.807,0.0,0.729,0.0,3.318,-8.906,-2.499,0.0,-0.007,-0.465,-0.052,2.684,-0.026,-1.407,11.73,0.0,0.0,0.0,-6.35,-0.061,-1.17,-3.104,-0.166,0.0,2.032,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-cooling-only.xml,34.177,34.177,34.177,34.177,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.02,0.82,9.061,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,13.012,9.075,0.661,0.0,0.0,0.0,0.0,2020.7,2815.0,2815.0,0.0,15.921,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.027,-0.472,-0.052,2.665,-0.032,-1.455,11.85,0.0,0.0,0.0,-6.919,-0.064,-1.194,-3.019,-0.167,0.0,2.08,8.007,2.036,1354.8,997.6,11171.5,2563.5,0.0,0.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml,40.301,40.301,40.301,40.301,0.0,0.0,0.0,0.0,0.0,0.0,5.703,0.53,0.0,0.0,2.854,0.921,9.017,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.221,0.0,13.766,9.075,0.615,0.0,0.0,0.0,0.0,3273.8,2729.7,3273.8,22.592,15.972,0.0,3.554,3.603,0.507,7.842,0.622,9.991,-12.705,0.0,0.0,0.0,11.652,-0.065,4.798,0.0,0.727,0.0,3.785,-8.928,-2.504,0.0,0.003,-0.452,-0.05,3.121,-0.022,-1.361,11.708,0.0,0.0,0.0,-6.399,-0.062,-1.155,-3.088,-0.163,0.0,2.043,7.85,2.005,1354.8,997.6,11171.5,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31565.0,7516.0,7508.0,0.0,575.0,7249.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-heating-only.xml,35.98,35.98,35.98,35.98,0.0,0.0,0.0,0.0,0.0,0.0,4.986,0.726,0.0,0.0,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.782,0.0,0.0,9.075,0.588,0.0,0.0,0.0,0.0,3364.0,1621.9,3364.0,22.187,0.0,0.0,3.592,3.648,0.513,7.511,0.632,10.113,-12.683,0.0,0.0,0.0,8.146,-0.069,4.809,0.0,0.73,0.0,3.897,-8.906,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump.xml,39.627,39.627,39.627,39.627,0.0,0.0,0.0,0.0,0.0,0.0,4.903,0.465,0.0,0.0,3.053,0.914,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.367,0.0,13.301,9.075,0.614,0.0,0.0,0.0,0.0,3265.4,2707.6,3265.4,21.413,16.066,0.0,3.608,3.644,0.513,7.528,0.631,10.102,-12.683,0.0,0.0,0.0,8.312,-0.065,4.807,0.0,0.729,0.0,3.305,-8.906,-2.499,0.0,-0.007,-0.465,-0.052,2.684,-0.026,-1.407,11.73,0.0,0.0,0.0,-6.35,-0.061,-1.17,-3.104,-0.166,0.0,2.029,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml,48.624,48.624,48.624,48.624,0.0,0.0,0.0,0.0,0.0,0.0,12.08,0.691,0.618,0.019,4.225,0.698,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.904,0.638,13.847,9.075,0.614,0.0,0.0,0.0,0.0,7101.3,3502.4,7101.3,24.716,17.398,0.0,3.475,3.645,0.513,7.531,0.631,10.105,-12.683,0.0,0.0,0.0,8.318,-0.065,4.807,0.0,0.729,0.0,6.943,-8.906,-2.499,0.0,-0.031,-0.464,-0.052,2.684,-0.026,-1.406,11.73,0.0,0.0,0.0,-6.349,-0.061,-1.17,-3.106,-0.166,0.0,2.592,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml,44.109,44.109,44.109,44.109,0.0,0.0,0.0,0.0,0.0,0.0,9.216,0.568,0.555,0.017,2.885,0.576,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.109,0.573,14.194,9.075,0.614,0.0,0.0,0.0,0.0,7082.4,3118.0,7082.4,24.712,18.774,0.0,3.428,3.646,0.513,7.533,0.631,10.106,-12.683,0.0,0.0,0.0,8.32,-0.065,4.808,0.0,0.729,0.0,8.186,-8.906,-2.499,0.0,-0.045,-0.464,-0.052,2.684,-0.026,-1.406,11.73,0.0,0.0,0.0,-6.349,-0.061,-1.17,-3.106,-0.166,0.0,2.944,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml,45.743,45.743,45.743,45.743,0.0,0.0,0.0,0.0,0.0,0.0,10.976,0.524,0.312,0.01,3.456,0.173,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,26.437,0.321,15.438,9.075,0.614,0.0,0.0,0.0,0.0,7073.3,4237.7,7073.3,24.71,18.727,0.0,3.34,3.648,0.513,7.536,0.631,10.103,-12.695,0.0,0.0,0.0,8.327,-0.061,4.807,0.0,0.729,0.0,10.604,-8.908,-2.5,0.0,-0.101,-0.462,-0.052,2.688,-0.026,-1.408,11.718,0.0,0.0,0.0,-6.341,-0.057,-1.171,-3.111,-0.165,0.0,4.252,7.87,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 @@ -240,7 +241,7 @@ base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml,60.079,60.079,36.64 base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml,58.565,58.565,35.126,35.126,23.439,0.0,0.0,0.0,0.0,0.0,0.0,0.282,0.0,0.0,3.902,0.65,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.439,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.843,0.0,15.757,9.075,0.614,0.0,0.0,0.0,3.0,2098.9,3203.2,3203.2,24.074,18.898,0.0,3.52,3.645,0.513,7.53,0.631,10.099,-12.683,0.0,0.0,0.0,8.314,-0.063,4.806,0.0,0.729,0.0,5.856,-8.903,-2.499,0.0,-0.116,-0.464,-0.052,2.686,-0.026,-1.409,11.73,0.0,0.0,0.0,-6.349,-0.059,-1.172,-3.109,-0.166,0.0,4.538,7.875,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml,57.797,57.797,34.358,34.358,23.439,0.0,0.0,0.0,0.0,0.0,0.0,0.282,0.0,0.0,3.404,0.381,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,23.439,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,21.843,0.0,16.486,9.075,0.614,0.0,0.0,0.0,0.0,2098.9,3154.3,3154.3,24.074,19.166,0.0,3.52,3.645,0.513,7.53,0.631,10.099,-12.683,0.0,0.0,0.0,8.314,-0.063,4.806,0.0,0.729,0.0,5.856,-8.903,-2.499,0.0,-0.157,-0.464,-0.052,2.687,-0.026,-1.408,11.73,0.0,0.0,0.0,-6.348,-0.059,-1.172,-3.116,-0.166,0.0,5.323,7.875,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-furnace-gas-only.xml,54.843,54.843,30.726,30.726,24.117,0.0,0.0,0.0,0.0,0.0,0.0,0.457,0.0,0.0,0.0,0.0,8.992,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.117,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,22.643,0.0,0.0,9.075,0.588,0.0,0.0,0.0,0.0,2091.6,1623.6,2091.6,25.358,0.0,0.0,3.488,3.648,0.513,7.514,0.632,10.112,-12.683,0.0,0.0,0.0,8.148,-0.067,4.809,0.0,0.73,0.0,6.844,-8.905,-2.499,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1354.8,997.6,11171.6,2563.5,0.0,36000.0,0.0,0.0,6.8,91.76,32235.0,8595.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-hvac-install-quality-ground-to-air-heat-pump.xml,41.725,41.725,41.725,41.725,0.0,0.0,0.0,0.0,0.0,0.0,6.367,0.478,0.0,0.0,3.716,0.872,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.361,0.0,13.864,9.075,0.614,0.0,0.0,0.0,0.0,3514.4,2959.7,3514.4,22.464,17.298,0.0,3.575,3.645,0.513,7.529,0.631,10.1,-12.683,0.0,0.0,0.0,8.312,-0.064,4.807,0.0,0.729,0.0,4.326,-8.905,-2.499,0.0,-0.032,-0.464,-0.052,2.684,-0.026,-1.409,11.73,0.0,0.0,0.0,-6.351,-0.06,-1.171,-3.106,-0.166,0.0,2.606,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-install-quality-ground-to-air-heat-pump.xml,41.662,41.662,41.662,41.662,0.0,0.0,0.0,0.0,0.0,0.0,6.348,0.476,0.0,0.0,3.677,0.869,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.35,0.0,13.858,9.075,0.614,0.0,0.0,0.0,0.0,3510.7,2912.2,3510.7,22.49,17.239,0.0,3.575,3.645,0.513,7.529,0.631,10.1,-12.683,0.0,0.0,0.0,8.312,-0.064,4.807,0.0,0.729,0.0,4.315,-8.905,-2.499,0.0,-0.031,-0.464,-0.052,2.684,-0.026,-1.409,11.73,0.0,0.0,0.0,-6.351,-0.06,-1.171,-3.106,-0.166,0.0,2.6,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,31147.0,7507.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,18787.0,5329.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml,33.87,33.87,33.87,33.87,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.336,0.198,9.061,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.742,9.075,0.661,0.0,0.0,0.0,0.0,2070.7,2953.2,2953.2,0.0,14.158,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.018,-0.472,-0.052,2.664,-0.032,-1.455,11.85,0.0,0.0,0.0,-6.92,-0.064,-1.194,-3.021,-0.167,0.0,1.83,8.007,2.036,1354.8,997.6,11171.5,2563.5,0.0,0.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,15306.0,1848.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-mini-split-heat-pump-ducted.xml,41.386,41.386,41.386,41.386,0.0,0.0,0.0,0.0,0.0,0.0,8.076,0.201,0.121,0.005,2.597,0.095,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,19.44,0.126,12.616,9.075,0.614,0.0,0.0,0.0,0.0,4873.7,2791.1,4873.7,19.228,14.111,0.0,3.607,3.644,0.513,7.528,0.631,10.102,-12.683,0.0,0.0,0.0,8.312,-0.065,4.807,0.0,0.73,0.0,3.387,-8.906,-2.499,0.0,0.019,-0.465,-0.052,2.683,-0.026,-1.407,11.73,0.0,0.0,0.0,-6.351,-0.061,-1.17,-3.103,-0.166,0.0,1.346,7.871,2.01,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,36000.0,6.8,91.76,26181.0,2541.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,15306.0,1848.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-air-conditioner-only-ducted.xml,33.207,33.207,33.207,33.207,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.8,0.07,9.061,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,12.473,9.075,0.661,0.0,0.0,0.0,0.0,2070.7,2570.0,2570.0,0.0,13.958,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.005,-0.472,-0.052,2.664,-0.032,-1.456,11.85,0.0,0.0,0.0,-6.92,-0.064,-1.194,-3.019,-0.167,0.0,1.548,8.007,2.036,1354.8,997.6,11171.5,2563.5,0.0,0.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,15306.0,1848.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 @@ -257,7 +258,7 @@ base-hvac-mini-split-heat-pump-ductless-backup-stove.xml,48.473,48.473,36.218,36 base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml,38.968,38.968,38.968,38.968,0.0,0.0,0.0,0.0,0.0,0.0,6.705,0.036,0.0,0.0,1.932,0.003,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.178,0.0,11.293,9.075,0.614,0.0,0.0,0.0,0.0,3979.6,2668.3,3979.6,16.439,11.917,0.0,3.742,3.642,0.513,7.524,0.631,10.099,-12.677,0.0,0.0,0.0,8.302,-0.066,4.807,0.0,0.73,0.0,0.0,-8.905,-2.499,0.0,0.034,-0.465,-0.052,2.683,-0.026,-1.407,11.737,0.0,0.0,0.0,-6.354,-0.062,-1.171,-3.096,-0.166,0.0,0.0,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml,38.212,38.212,38.212,38.212,0.0,0.0,0.0,0.0,0.0,0.0,5.664,0.051,0.0,0.0,2.199,0.006,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.178,0.0,11.294,9.075,0.614,0.0,0.0,0.0,0.0,3660.8,2367.3,3660.8,16.439,11.917,0.0,3.742,3.642,0.513,7.524,0.631,10.099,-12.677,0.0,0.0,0.0,8.302,-0.066,4.807,0.0,0.73,0.0,0.0,-8.905,-2.499,0.0,0.034,-0.465,-0.052,2.683,-0.026,-1.407,11.737,0.0,0.0,0.0,-6.354,-0.062,-1.171,-3.096,-0.166,0.0,0.0,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-heat-pump-ductless.xml,38.212,38.212,38.212,38.212,0.0,0.0,0.0,0.0,0.0,0.0,5.664,0.051,0.0,0.0,2.199,0.006,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.178,0.0,11.294,9.075,0.614,0.0,0.0,0.0,0.0,3660.8,2367.3,3660.8,16.439,11.917,0.0,3.742,3.642,0.513,7.524,0.631,10.099,-12.677,0.0,0.0,0.0,8.302,-0.066,4.807,0.0,0.73,0.0,0.0,-8.905,-2.499,0.0,0.034,-0.465,-0.052,2.683,-0.026,-1.407,11.737,0.0,0.0,0.0,-6.354,-0.062,-1.171,-3.096,-0.166,0.0,0.0,7.873,2.011,1354.8,997.6,11171.6,2563.5,0.0,36000.0,36000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 -base-hvac-multiple.xml,66.196,66.196,52.054,52.054,7.011,3.526,3.605,0.0,0.0,0.0,13.488,0.843,0.215,0.009,6.647,0.561,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.526,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.605,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.07,0.223,19.503,9.075,0.614,0.0,0.0,0.0,15.0,6551.7,4043.8,6551.7,37.974,22.365,0.0,3.429,3.644,0.513,7.527,0.631,10.097,-12.695,0.0,0.0,0.0,8.325,-0.062,5.887,0.0,0.728,0.0,15.097,-8.914,-2.501,0.0,-0.137,-0.456,-0.051,2.714,-0.024,-1.382,11.717,0.0,0.0,0.0,-6.301,-0.058,-1.436,-3.09,-0.164,0.0,8.421,7.863,2.008,1354.8,997.6,11171.6,2563.5,0.0,59200.0,36799.2,10236.0,6.8,91.76,36744.0,13104.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,23818.0,10360.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 +base-hvac-multiple.xml,66.063,66.063,51.94,51.94,7.002,3.521,3.6,0.0,0.0,0.0,13.46,0.838,0.212,0.009,6.571,0.558,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.002,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.521,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.6,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,32.007,0.221,19.494,9.075,0.614,0.0,0.0,0.0,14.0,6440.2,4030.1,6440.2,37.46,22.524,0.0,3.43,3.644,0.513,7.527,0.631,10.097,-12.695,0.0,0.0,0.0,8.325,-0.062,5.887,0.0,0.728,0.0,15.033,-8.914,-2.501,0.0,-0.136,-0.456,-0.051,2.714,-0.024,-1.381,11.717,0.0,0.0,0.0,-6.301,-0.058,-1.436,-3.09,-0.164,0.0,8.412,7.863,2.008,1354.8,997.6,11171.6,2563.5,0.0,59200.0,36799.2,10236.0,6.8,91.76,36744.0,13104.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,23818.0,10360.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-none.xml,19.67,19.67,19.67,19.67,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.539,0.0,0.0,2.647,0.0,0.238,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,4.187,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.497,0.33,0.0,0.0,0.0,0.0,1280.4,1085.1,1280.4,0.0,0.0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1354.8,997.6,8369.8,2062.4,0.0,0.0,0.0,0.0,63.32,89.06,2825.0,0.0,794.0,0.0,61.0,232.0,0.0,0.0,1293.0,229.0,216.0,13002.0,0.0,6223.0,0.0,264.0,451.0,0.0,0.0,0.0,2443.0,301.0,3320.0,1252.0,0.0,452.0,800.0 base-hvac-ptac-with-heating-electricity.xml,50.851,50.851,50.851,50.851,0.0,0.0,0.0,0.0,0.0,0.0,16.19,0.0,0.0,0.0,4.369,0.0,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.177,0.0,11.294,9.075,0.614,0.0,0.0,0.0,0.0,5913.9,2889.3,5913.9,16.439,11.921,0.0,3.741,3.641,0.512,7.524,0.63,10.096,-12.669,0.0,0.0,0.0,8.298,-0.066,4.806,0.0,0.729,0.0,0.0,-8.902,-2.498,0.0,0.032,-0.467,-0.052,2.683,-0.027,-1.409,11.744,0.0,0.0,0.0,-6.357,-0.063,-1.172,-3.096,-0.166,0.0,0.0,7.876,2.012,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 base-hvac-ptac-with-heating-natural-gas.xml,54.899,54.899,34.661,34.661,20.238,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.369,0.0,9.016,0.0,0.0,4.51,0.0,0.334,0.0,0.0,0.0,0.0,2.22,0.0,0.0,0.319,0.365,1.513,1.528,0.0,2.114,8.374,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,20.238,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,16.177,0.0,11.294,9.075,0.614,0.0,0.0,0.0,0.0,2019.7,2889.3,2889.3,16.439,11.921,0.0,3.741,3.641,0.512,7.524,0.63,10.096,-12.669,0.0,0.0,0.0,8.298,-0.066,4.806,0.0,0.729,0.0,0.0,-8.902,-2.498,0.0,0.032,-0.467,-0.052,2.683,-0.027,-1.409,11.744,0.0,0.0,0.0,-6.357,-0.063,-1.172,-3.096,-0.166,0.0,0.0,7.876,2.012,1354.8,997.6,11171.6,2563.5,0.0,36000.0,24000.0,0.0,6.8,91.76,23640.0,0.0,7508.0,0.0,575.0,6840.0,0.0,0.0,1949.0,2171.0,4597.0,13458.0,0.0,7037.0,0.0,207.0,265.0,0.0,0.0,0.0,2010.0,619.0,3320.0,0.0,0.0,0.0,0.0 diff --git a/workflow/tests/base_results/results_workflow_simulations1_bills.csv b/workflow/tests/base_results/results_workflow_simulations1_bills.csv index 1125794d36..25b22f5f82 100644 --- a/workflow/tests/base_results/results_workflow_simulations1_bills.csv +++ b/workflow/tests/base_results/results_workflow_simulations1_bills.csv @@ -42,7 +42,7 @@ base-bldgtype-mf-unit-shared-chiller-only-fan-coil.xml,1133.79,144.0,989.79,0.0, base-bldgtype-mf-unit-shared-chiller-only-water-loop-heat-pump.xml,1293.07,144.0,1149.07,0.0,1293.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-cooling-tower-only-water-loop-heat-pump.xml,1145.29,144.0,1001.29,0.0,1145.29,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-generator.xml,1639.83,144.0,960.62,0.0,1104.62,144.0,6.66,150.66,0.0,0.0,0.0,0.0,384.55,384.55,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-bldgtype-mf-unit-shared-ground-loop-ground-to-air-heat-pump.xml,1180.73,144.0,1036.73,0.0,1180.73,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-bldgtype-mf-unit-shared-ground-loop-ground-to-air-heat-pump.xml,1180.17,144.0,1036.17,0.0,1180.17,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-laundry-room-multiple-water-heaters.xml,1060.16,144.0,613.48,0.0,757.48,144.0,158.68,302.68,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-laundry-room.xml,1032.79,144.0,606.5,0.0,750.5,144.0,138.29,282.29,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-bldgtype-mf-unit-shared-mechvent-multiple.xml,1624.9,144.0,1124.51,0.0,1268.51,144.0,212.39,356.39,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -59,7 +59,7 @@ base-bldgtype-sfa-unit.xml,1514.18,144.0,1094.71,0.0,1238.71,144.0,131.47,275.47 base-dhw-combi-tankless-outside.xml,1388.39,144.0,786.23,0.0,930.23,144.0,314.16,458.16,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-dhw-combi-tankless.xml,1401.33,144.0,786.58,0.0,930.58,144.0,326.75,470.75,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-2-speed.xml,1319.56,144.0,1175.56,0.0,1319.56,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-dhw-desuperheater-gshp.xml,1519.08,144.0,1375.08,0.0,1519.08,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-dhw-desuperheater-gshp.xml,1517.32,144.0,1373.32,0.0,1517.32,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-hpwh.xml,1659.88,144.0,1089.39,0.0,1233.39,144.0,282.49,426.49,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-tankless.xml,1379.35,144.0,1235.35,0.0,1379.35,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-dhw-desuperheater-var-speed.xml,1286.91,144.0,1142.91,0.0,1286.91,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -229,9 +229,10 @@ base-hvac-furnace-oil-only.xml,2068.01,144.0,1132.46,0.0,1276.46,0.0,0.0,0.0,0.0 base-hvac-furnace-propane-only.xml,1890.8,144.0,1132.46,0.0,1276.46,0.0,0.0,0.0,0.0,0.0,0.0,0.0,614.34,614.34,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-furnace-wood-only.xml,1615.94,144.0,1132.46,0.0,1276.46,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,339.48,339.48,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-furnace-x3-dse.xml,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -base-hvac-ground-to-air-heat-pump-cooling-only.xml,1398.38,144.0,1254.38,0.0,1398.38,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-hvac-ground-to-air-heat-pump-heating-only.xml,1464.96,144.0,1320.96,0.0,1464.96,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-hvac-ground-to-air-heat-pump.xml,1600.1,144.0,1456.1,0.0,1600.1,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-cooling-only.xml,1398.3,144.0,1254.3,0.0,1398.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-detailed-geothermal-loop.xml,1623.06,144.0,1479.06,0.0,1623.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump-heating-only.xml,1464.49,144.0,1320.49,0.0,1464.49,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-ground-to-air-heat-pump.xml,1598.32,144.0,1454.32,0.0,1598.32,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml,1928.51,144.0,1784.51,0.0,1928.51,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml,1762.82,144.0,1618.82,0.0,1762.82,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-air-to-air-heat-pump-var-speed-detailed-performance.xml,1822.8,144.0,1678.8,0.0,1822.8,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -240,7 +241,7 @@ base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml,1881.0,144.0,1344.7 base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml,1825.44,144.0,1289.14,0.0,1433.14,144.0,248.3,392.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml,1797.25,144.0,1260.95,0.0,1404.95,144.0,248.3,392.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-furnace-gas-only.xml,1671.13,144.0,1127.65,0.0,1271.65,144.0,255.48,399.48,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-hvac-install-quality-ground-to-air-heat-pump.xml,1675.31,144.0,1531.31,0.0,1675.31,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-install-quality-ground-to-air-heat-pump.xml,1673.02,144.0,1529.02,0.0,1673.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml,1387.05,144.0,1243.05,0.0,1387.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-install-quality-mini-split-heat-pump-ducted.xml,1662.89,144.0,1518.89,0.0,1662.89,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-air-conditioner-only-ducted.xml,1362.71,144.0,1218.71,0.0,1362.71,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 @@ -257,7 +258,7 @@ base-hvac-mini-split-heat-pump-ductless-backup-stove.xml,1901.83,144.0,1329.22,0 base-hvac-mini-split-heat-pump-ductless-detailed-performance.xml,1574.13,144.0,1430.13,0.0,1574.13,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml,1546.39,144.0,1402.39,0.0,1546.39,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-mini-split-heat-pump-ductless.xml,1546.39,144.0,1402.39,0.0,1546.39,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 -base-hvac-multiple.xml,2493.83,144.0,1910.39,0.0,2054.39,144.0,74.27,218.27,0.0,123.32,123.32,0.0,97.85,97.85,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 +base-hvac-multiple.xml,2489.26,144.0,1906.22,0.0,2050.22,144.0,74.18,218.18,0.0,123.15,123.15,0.0,97.71,97.71,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-none.xml,2513.83,144.0,2369.83,0.0,2513.83,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-ptac-with-heating-electricity.xml,2010.26,144.0,1866.26,0.0,2010.26,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 base-hvac-ptac-with-heating-natural-gas.xml,1774.46,144.0,1272.07,0.0,1416.07,144.0,214.39,358.39,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0