diff --git a/BuildResidentialHPXML/README.md b/BuildResidentialHPXML/README.md index dca9f0d101..ae54157782 100644 --- a/BuildResidentialHPXML/README.md +++ b/BuildResidentialHPXML/README.md @@ -3806,7 +3806,7 @@ The type of the hot water distribution system. **Hot Water Distribution: Standard Piping Length** -If the distribution system is Standard, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used. +If the distribution system is Standard or Recirculation (Shared), the length of the piping. If not provided, the OS-HPXML default (see Standard or Recirculation (Shared)) is used. - **Name:** ``hot_water_distribution_standard_piping_length`` - **Type:** ``Double`` @@ -3858,7 +3858,7 @@ If the distribution system is Recirculation, the length of the recirculation bra **Hot Water Distribution: Recirculation Pump Power** -If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used. +If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit) or Recirculation (Shared)) is used. - **Name:** ``hot_water_distribution_recirc_pump_power`` - **Type:** ``Double`` @@ -3869,6 +3869,19 @@ If the distribution system is Recirculation, the recirculation pump power. If no
+**Hot Water Distribution: Recirculation Number of Bedrooms Served** + +If the distribution system is Recirculation, number of bedrooms served by the recirculation system. Only needed if single-family attached or apartment unit and it is a shared recirculation system serving multiple dwelling units. Used to apportion recirculation pump power to the unit. + +- **Name:** ``hot_water_distribution_recirc_num_bedrooms_served`` +- **Type:** ``Integer`` + +- **Units:** ``#`` + +- **Required:** ``false`` + +
+ **Hot Water Distribution: Pipe Insulation Nominal R-Value** Nominal R-value of the pipe insulation. If not provided, the OS-HPXML default (see HPXML Hot Water Distribution) is used. diff --git a/BuildResidentialHPXML/measure.rb b/BuildResidentialHPXML/measure.rb index 8898160b7f..0f7e883cfa 100644 --- a/BuildResidentialHPXML/measure.rb +++ b/BuildResidentialHPXML/measure.rb @@ -2268,7 +2268,7 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_standard_piping_length', false) arg.setDisplayName('Hot Water Distribution: Standard Piping Length') arg.setUnits('ft') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeStandard}, the length of the piping. If not provided, the OS-HPXML default (see Standard) is used.") + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeStandard} or #{HPXML::DHWDistTypeRecirc} (Shared), the length of the piping. If not provided, the OS-HPXML default (see Standard or Recirculation (Shared)) is used.") args << arg recirculation_control_type_choices = OpenStudio::StringVector.new @@ -2299,7 +2299,13 @@ def arguments(model) # rubocop:disable Lint/UnusedMethodArgument arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_recirc_pump_power', false) arg.setDisplayName('Hot Water Distribution: Recirculation Pump Power') arg.setUnits('W') - arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit)) is used.") + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the recirculation pump power. If not provided, the OS-HPXML default (see Recirculation (In-Unit) or Recirculation (Shared)) is used.") + args << arg + + arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('hot_water_distribution_recirc_num_bedrooms_served', false) + arg.setDisplayName('Hot Water Distribution: Recirculation Number of Bedrooms Served') + arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, number of bedrooms served by the recirculation system. Only needed if #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment} and it is a shared recirculation system serving multiple dwelling units. Used to apportion recirculation pump power to the unit.") + arg.setUnits('#') args << arg arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('hot_water_distribution_pipe_r', false) @@ -6552,17 +6558,29 @@ def self.set_hot_water_distribution(hpxml_bldg, args) dwhr_efficiency = args[:dwhr_efficiency] end - if args[:hot_water_distribution_system_type] == HPXML::DHWDistTypeStandard + system_type = args[:hot_water_distribution_system_type] + if system_type == HPXML::DHWDistTypeStandard standard_piping_length = args[:hot_water_distribution_standard_piping_length] + elsif system_type == HPXML::DHWDistTypeRecirc + if ([HPXML::ResidentialTypeSFA, HPXML::ResidentialTypeApartment].include? args[:geometry_unit_type]) && (args[:hot_water_distribution_recirc_num_bedrooms_served].to_f > args[:geometry_unit_num_bedrooms]) + system_type = HPXML::DHWDistTypeStandard + standard_piping_length = args[:hot_water_distribution_standard_piping_length] + has_shared_recirculation = true + shared_recirculation_number_of_bedrooms_served = args[:hot_water_distribution_recirc_num_bedrooms_served] + shared_recirculation_control_type = args[:hot_water_distribution_recirc_control_type] + shared_recirculation_pump_power = args[:hot_water_distribution_recirc_pump_power] + else + recirculation_control_type = args[:hot_water_distribution_recirc_control_type] + recirculation_piping_length = args[:hot_water_distribution_recirc_piping_length] + recirculation_branch_piping_length = args[:hot_water_distribution_recirc_branch_piping_length] + recirculation_pump_power = args[:hot_water_distribution_recirc_pump_power] + end else - recirculation_control_type = args[:hot_water_distribution_recirc_control_type] - recirculation_piping_length = args[:hot_water_distribution_recirc_piping_length] - recirculation_branch_piping_length = args[:hot_water_distribution_recirc_branch_piping_length] - recirculation_pump_power = args[:hot_water_distribution_recirc_pump_power] + fail 'Unexpected hot water distribution system type.' end hpxml_bldg.hot_water_distributions.add(id: "HotWaterDistribution#{hpxml_bldg.hot_water_distributions.size + 1}", - system_type: args[:hot_water_distribution_system_type], + system_type: system_type, standard_piping_length: standard_piping_length, recirculation_control_type: recirculation_control_type, recirculation_piping_length: recirculation_piping_length, @@ -6571,7 +6589,11 @@ def self.set_hot_water_distribution(hpxml_bldg, args) pipe_r_value: args[:hot_water_distribution_pipe_r], dwhr_facilities_connected: dwhr_facilities_connected, dwhr_equal_flow: dwhr_equal_flow, - dwhr_efficiency: dwhr_efficiency) + dwhr_efficiency: dwhr_efficiency, + has_shared_recirculation: has_shared_recirculation, + shared_recirculation_number_of_bedrooms_served: shared_recirculation_number_of_bedrooms_served, + shared_recirculation_pump_power: shared_recirculation_pump_power, + shared_recirculation_control_type: shared_recirculation_control_type) end # Set the water fixtures properties, including: diff --git a/BuildResidentialHPXML/measure.xml b/BuildResidentialHPXML/measure.xml index 55f931ca7b..b0319d2925 100644 --- a/BuildResidentialHPXML/measure.xml +++ b/BuildResidentialHPXML/measure.xml @@ -3,8 +3,8 @@ 3.1 build_residential_hpxml a13a8983-2b01-4930-8af2-42030b6e4233 - 1cf787b3-6890-4f06-a3b0-38e992fa387b - 2024-07-03T22:55:11Z + 81b606f5-3522-4b9b-ba02-f97e2c7c3834 + 2024-07-08T15:47:50Z 2C38F48B BuildResidentialHPXML HPXML Builder @@ -4657,7 +4657,7 @@ hot_water_distribution_standard_piping_length Hot Water Distribution: Standard Piping Length - If the distribution system is Standard, the length of the piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#standard'>Standard</a>) is used. + If the distribution system is Standard or Recirculation (Shared), the length of the piping. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#standard'>Standard</a> or <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-shared'>Recirculation (Shared)</a>) is used. Double ft false @@ -4715,12 +4715,21 @@ hot_water_distribution_recirc_pump_power Hot Water Distribution: Recirculation Pump Power - If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a>) is used. + If the distribution system is Recirculation, the recirculation pump power. If not provided, the OS-HPXML default (see <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-in-unit'>Recirculation (In-Unit)</a> or <a href='https://openstudio-hpxml.readthedocs.io/en/v1.8.1/workflow_inputs.html#recirculation-shared'>Recirculation (Shared)</a>) is used. Double W false false + + hot_water_distribution_recirc_num_bedrooms_served + Hot Water Distribution: Recirculation Number of Bedrooms Served + If the distribution system is Recirculation, number of bedrooms served by the recirculation system. Only needed if single-family attached or apartment unit and it is a shared recirculation system serving multiple dwelling units. Used to apportion recirculation pump power to the unit. + Integer + # + false + false + hot_water_distribution_pipe_r Hot Water Distribution: Pipe Insulation Nominal R-Value @@ -7361,7 +7370,7 @@ README.md md readme - 38C93847 + A729C48B README.md.erb @@ -7378,7 +7387,7 @@ measure.rb rb script - EA194ADD + E1BF8309 geometry.rb diff --git a/Changelog.md b/Changelog.md index f41dcde26c..8adca08035 100644 --- a/Changelog.md +++ b/Changelog.md @@ -90,6 +90,7 @@ __New Features__ - Add soil and moisture type arguments (for determining ground conductivity and diffusivity) and optional geothermal loop arguments for ground source heat pumps. - The "Geometry: Building Number of Units" input is now written to the HPXML `NumberofUnitsInBuilding` element. - Adds a blower fan efficiency input for specifying fan power W/cfm at maximum speed. + - Allows specifying number of bedrooms served by the recirculation system which is used for apportioning recirculation pump power. - BuildResidentialScheduleFile measure: - Allows appending columns to an existing CSV file rather than overwriting. - Other plug load schedules now use Other schedule fractions per ANSI/RESNET/ICC 301-2022 Addendum C. diff --git a/HPXMLtoOpenStudio/measure.xml b/HPXMLtoOpenStudio/measure.xml index 9f0e82e72d..ad218606ff 100644 --- a/HPXMLtoOpenStudio/measure.xml +++ b/HPXMLtoOpenStudio/measure.xml @@ -3,8 +3,8 @@ 3.1 hpxm_lto_openstudio b1543b30-9465-45ff-ba04-1d1f85e763bc - 657677c3-58a6-4357-bfe1-fcd7f6b039eb - 2024-07-06T05:17:52Z + 06ff6e91-3d2e-4cc1-86a9-db930b3f21f3 + 2024-07-08T15:47:52Z D8922A73 HPXMLtoOpenStudio HPXML to OpenStudio Translator @@ -623,24 +623,6 @@ resource E12E2D75 - - in.schedules.csv - csv - test - 2B9C5C95 - - - results_annual.csv - csv - test - 3C4C7BF6 - - - results_design_load_details.csv - csv - test - 0892DD62 - test_airflow.rb rb diff --git a/tasks.rb b/tasks.rb index f9fa1868bc..7f64fe644f 100644 --- a/tasks.rb +++ b/tasks.rb @@ -1955,16 +1955,6 @@ def apply_hpxml_modification_sample_files(hpxml_path, hpxml) hpxml_bldg.water_heating.water_fixtures_weekday_fractions = '0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.087, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.039, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026' hpxml_bldg.water_heating.water_fixtures_weekend_fractions = '0.012, 0.006, 0.004, 0.005, 0.010, 0.034, 0.078, 0.087, 0.080, 0.067, 0.056, 0.047, 0.040, 0.035, 0.033, 0.031, 0.039, 0.051, 0.060, 0.060, 0.055, 0.048, 0.038, 0.026' hpxml_bldg.water_heating.water_fixtures_monthly_multipliers = '1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0' - elsif ['base-bldgtype-mf-unit-shared-water-heater-recirc.xml', - 'base-bldgtype-mf-unit-shared-water-heater-recirc-beds-0.xml', - 'base-bldgtype-mf-unit-shared-water-heater-recirc-scheduled.xml'].include? hpxml_file - hpxml_bldg.hot_water_distributions[0].has_shared_recirculation = true - hpxml_bldg.hot_water_distributions[0].shared_recirculation_number_of_bedrooms_served = 18 - hpxml_bldg.hot_water_distributions[0].shared_recirculation_pump_power = 220 - hpxml_bldg.hot_water_distributions[0].shared_recirculation_control_type = HPXML::DHWRecircControlTypeTimer - if hpxml_file == 'base-bldgtype-mf-unit-shared-water-heater-recirc-beds-0.xml' - hpxml_bldg.hot_water_distributions[0].shared_recirculation_number_of_bedrooms_served = 6 - end elsif ['base-bldgtype-mf-unit-shared-laundry-room.xml', 'base-bldgtype-mf-unit-shared-laundry-room-multiple-water-heaters.xml'].include? hpxml_file hpxml_bldg.water_heating_systems.reverse_each do |water_heating_system| diff --git a/workflow/hpxml_inputs.json b/workflow/hpxml_inputs.json index 1358265b64..1310467e7c 100644 --- a/workflow/hpxml_inputs.json +++ b/workflow/hpxml_inputs.json @@ -1266,15 +1266,27 @@ "water_heater_num_bedrooms_served": 18 }, "sample_files/base-bldgtype-mf-unit-shared-water-heater-recirc.xml": { - "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-water-heater.xml" + "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-water-heater.xml", + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "timer", + "hot_water_distribution_recirc_pump_power": 220.0, + "hot_water_distribution_recirc_num_bedrooms_served": 18 }, "sample_files/base-bldgtype-mf-unit-shared-water-heater-recirc-beds-0.xml": { "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-water-heater.xml", "geometry_unit_num_bedrooms": 0, - "water_heater_num_bedrooms_served": 6 + "water_heater_num_bedrooms_served": 6, + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "timer", + "hot_water_distribution_recirc_pump_power": 220.0, + "hot_water_distribution_recirc_num_bedrooms_served": 6 }, "sample_files/base-bldgtype-mf-unit-shared-water-heater-recirc-scheduled.xml": { - "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-water-heater-recirc.xml" + "parent_hpxml": "sample_files/base-bldgtype-mf-unit-shared-water-heater-recirc.xml", + "hot_water_distribution_system_type": "Recirculation", + "hot_water_distribution_recirc_control_type": "timer", + "hot_water_distribution_recirc_pump_power": 220.0, + "hot_water_distribution_recirc_num_bedrooms_served": 18 }, "sample_files/base-dhw-combi-tankless.xml": { "parent_hpxml": "sample_files/base-dhw-indirect.xml",