urbanopt-cli 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/LICENSE.md +1 -1
  4. data/Rakefile +1 -1
  5. data/example_files/mappers/Baseline.rb +1 -1
  6. data/example_files/mappers/ClassProject.rb +1 -1
  7. data/example_files/mappers/CreateBar.rb +1 -1
  8. data/example_files/mappers/EvCharging.rb +1 -1
  9. data/example_files/mappers/FlexibleHotWater.rb +1 -1
  10. data/example_files/mappers/Floorspace.rb +1 -1
  11. data/example_files/mappers/HighEfficiency.rb +1 -1
  12. data/example_files/mappers/HighEfficiencyCreateBar.rb +1 -1
  13. data/example_files/mappers/HighEfficiencyFloorspace.rb +1 -1
  14. data/example_files/mappers/PeakHoursMelsShedding.rb +1 -1
  15. data/example_files/mappers/PeakHoursThermostatAdjust.rb +1 -1
  16. data/example_files/mappers/ThermalStorage.rb +1 -1
  17. data/example_files/measures/BuildResidentialModel/measure.xml +3 -3
  18. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +7 -0
  19. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +18 -10
  20. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +15 -0
  21. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +53 -5
  22. data/example_files/resources/hpxml-measures/Changelog.md +39 -28
  23. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +27 -27
  24. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +9 -4
  25. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +5 -4
  26. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  27. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +5 -1
  28. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +28 -10
  29. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +6 -1
  30. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +3 -3
  31. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +2 -1
  32. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +14 -10
  33. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +4 -4
  34. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +64 -0
  35. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +2 -2
  36. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +12 -12
  37. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +36 -110
  38. data/lib/uo_cli/version.rb +2 -2
  39. data/lib/uo_cli.rb +1 -1
  40. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 69e383f8abed971d033f6296a31fbd9d438576db30b80816677d6455b4638ac1
4
- data.tar.gz: f25160da58766204b410dd6f71e59a8cb5530ccbc8bd934fa822e12c75e8d6ad
3
+ metadata.gz: d1403126b59a00ca08656510c8f97147cf88dc7b58be19d63944f99120c27d73
4
+ data.tar.gz: c5502d2e07c64a04908e4939ad83d7c312a790b06e0842dd053809263b05ab06
5
5
  SHA512:
6
- metadata.gz: ea137de61c00c820f19ec8a98b788eac3275333c0406919c801bdd8761cad0f0f71d4b39f2bef354f4c967c6b5d0e33ea0303ae5fb1b629551e40a247aee06c1
7
- data.tar.gz: 988c6ede628ff3945e6bb9dcc8ec6325e768e5e64c4218a79ce51f1a4f3657c710dad153994e69508fb97a2ca03fb2b0505e8387328eb9b4db8b3593891f2d5c
6
+ metadata.gz: 6f4482a92fc524b4d104764f9a654b62a2aeda1c78183c3f96a59e755645ba67b73b27ac667881f8bf436e8ad99f4ff5d1c8b3caaeed1b75a5b14bb9144f9443
7
+ data.tar.gz: 6862733daffd4901ec5ab6dc0f23ad5957c566fb86faa8b10ca8f5b89745bee6b351d5f3a6a9a596f97570a5624d0fa575dfc3e2334603e9253d7198ee3f2986
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## Version 0.9.1
4
+ Date Range: 12/14/22 - 01/05/23:
5
+
6
+ - Updates to support HPXML to 1.5.1 and OpenStudio 3.5.1
7
+ - Updated copyrights for 2023
8
+
3
9
  ## Version 0.9.0
4
10
  Date Range: 07/07/22 - 12/13/22:
5
11
 
data/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # License
2
2
 
3
- URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
3
+ URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
4
4
  contributors. All rights reserved.
5
5
 
6
6
  Redistribution and use in source and binary forms, with or without modification,
data/Rakefile CHANGED
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
 
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -1,5 +1,5 @@
1
1
  # *********************************************************************************
2
- # URBANopt™, Copyright (c) 2019-2022, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2023, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
4
  #
5
5
  # Redistribution and use in source and binary forms, with or without modification,
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>build_residential_model</name>
5
5
  <uid>259dc35f-65e8-47d4-913f-69efede5a267</uid>
6
- <version_id>8bb0bd12-8c25-4c05-9477-e045ca9cde27</version_id>
7
- <version_modified>20221205T204142Z</version_modified>
6
+ <version_id>b3c7ec2e-10f5-45d9-9a10-7527fec4565a</version_id>
7
+ <version_modified>20230105T165234Z</version_modified>
8
8
  <xml_checksum>2C38F48B</xml_checksum>
9
9
  <class_name>BuildResidentialModel</class_name>
10
10
  <display_name>Build Residential Model</display_name>
@@ -6597,7 +6597,7 @@
6597
6597
  <filename>measure.rb</filename>
6598
6598
  <filetype>rb</filetype>
6599
6599
  <usage_type>script</usage_type>
6600
- <checksum>079A37C9</checksum>
6600
+ <checksum>A1FFBF5C</checksum>
6601
6601
  </file>
6602
6602
  </files>
6603
6603
  </measure>
@@ -51,6 +51,11 @@ class BuildResidentialScheduleFile < OpenStudio::Measure::ModelMeasure
51
51
  arg.setDefaultValue('smooth')
52
52
  args << arg
53
53
 
54
+ arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_column_names', false)
55
+ arg.setDisplayName('Schedules: Column Names')
56
+ arg.setDescription("A comma-separated list of the column names to generate. If not provided, defaults to all columns. Possible column names are: #{SchedulesFile.OccupancyColumnNames.join(', ')}.")
57
+ args << arg
58
+
54
59
  arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_vacancy_period', false)
55
60
  arg.setDisplayName('Schedules: Vacancy Period')
56
61
  arg.setDescription('Specifies the vacancy period. Enter a date like "Dec 15 - Jan 15".')
@@ -161,6 +166,7 @@ class BuildResidentialScheduleFile < OpenStudio::Measure::ModelMeasure
161
166
  info_msgs << "RandomSeed=#{args[:random_seed]}" if args[:schedules_random_seed].is_initialized
162
167
  info_msgs << "GeometryNumOccupants=#{args[:geometry_num_occupants]}"
163
168
  info_msgs << "VacancyPeriod=#{args[:schedules_vacancy_period].get}" if args[:schedules_vacancy_period].is_initialized
169
+ info_msgs << "ColumnNames=#{args[:column_names]}" if args[:schedules_column_names].is_initialized
164
170
 
165
171
  runner.registerInfo("Created #{args[:schedules_type]} schedule with #{info_msgs.join(', ')}")
166
172
 
@@ -188,6 +194,7 @@ class BuildResidentialScheduleFile < OpenStudio::Measure::ModelMeasure
188
194
  args[:state] = hpxml.header.state_code if !hpxml.header.state_code.nil?
189
195
 
190
196
  args[:random_seed] = args[:schedules_random_seed].get if args[:schedules_random_seed].is_initialized
197
+ args[:column_names] = args[:schedules_column_names].get.split(',').map(&:strip) if args[:schedules_column_names].is_initialized
191
198
 
192
199
  if hpxml.building_occupancy.number_of_residents.nil?
193
200
  args[:geometry_num_occupants] = Geometry.get_occupancy_default_num(hpxml.building_construction.number_of_bedrooms)
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>build_residential_schedule_file</name>
5
5
  <uid>f770b2db-1a9f-4e99-99a7-7f3161a594b1</uid>
6
- <version_id>b9ab9559-30d8-4b1c-9757-8c911f80e937</version_id>
7
- <version_modified>20221031T233528Z</version_modified>
6
+ <version_id>3a88a262-1431-4bb9-a577-cd235aed6b1e</version_id>
7
+ <version_modified>20221201T013247Z</version_modified>
8
8
  <xml_checksum>03F02484</xml_checksum>
9
9
  <class_name>BuildResidentialScheduleFile</class_name>
10
10
  <display_name>Schedule File Builder</display_name>
@@ -38,6 +38,14 @@
38
38
  </choice>
39
39
  </choices>
40
40
  </argument>
41
+ <argument>
42
+ <name>schedules_column_names</name>
43
+ <display_name>Schedules: Column Names</display_name>
44
+ <description>A comma-separated list of the column names to generate. If not provided, defaults to all columns. Possible column names are: occupants, lighting_interior, lighting_exterior, lighting_garage, lighting_exterior_holiday, cooking_range, refrigerator, extra_refrigerator, freezer, dishwasher, clothes_washer, clothes_dryer, ceiling_fan, plug_loads_other, plug_loads_tv, plug_loads_vehicle, plug_loads_well_pump, fuel_loads_grill, fuel_loads_lighting, fuel_loads_fireplace, pool_pump, pool_heater, hot_tub_pump, hot_tub_heater, hot_water_dishwasher, hot_water_clothes_washer, hot_water_fixtures.</description>
45
+ <type>String</type>
46
+ <required>false</required>
47
+ <model_dependent>false</model_dependent>
48
+ </argument>
41
49
  <argument>
42
50
  <name>schedules_vacancy_period</name>
43
51
  <display_name>Schedules: Vacancy Period</display_name>
@@ -890,11 +898,17 @@
890
898
  <usage_type>resource</usage_type>
891
899
  <checksum>127D96AC</checksum>
892
900
  </file>
901
+ <file>
902
+ <filename>schedules.rb</filename>
903
+ <filetype>rb</filetype>
904
+ <usage_type>resource</usage_type>
905
+ <checksum>AC348B70</checksum>
906
+ </file>
893
907
  <file>
894
908
  <filename>build_residential_schedule_file_test.rb</filename>
895
909
  <filetype>rb</filetype>
896
910
  <usage_type>test</usage_type>
897
- <checksum>41CA164F</checksum>
911
+ <checksum>10DD8842</checksum>
898
912
  </file>
899
913
  <file>
900
914
  <version>
@@ -905,13 +919,7 @@
905
919
  <filename>measure.rb</filename>
906
920
  <filetype>rb</filetype>
907
921
  <usage_type>script</usage_type>
908
- <checksum>8FF07C66</checksum>
909
- </file>
910
- <file>
911
- <filename>schedules.rb</filename>
912
- <filetype>rb</filetype>
913
- <usage_type>resource</usage_type>
914
- <checksum>F2E6EBB8</checksum>
922
+ <checksum>3D8ADC7F</checksum>
915
923
  </file>
916
924
  </files>
917
925
  </measure>
@@ -8,6 +8,7 @@ class ScheduleGenerator
8
8
  def initialize(runner:,
9
9
  epw_file:,
10
10
  state:,
11
+ column_names: nil,
11
12
  random_seed: nil,
12
13
  minutes_per_step:,
13
14
  steps_in_day:,
@@ -21,6 +22,7 @@ class ScheduleGenerator
21
22
  @runner = runner
22
23
  @epw_file = epw_file
23
24
  @state = state
25
+ @column_names = column_names
24
26
  @random_seed = random_seed
25
27
  @minutes_per_step = minutes_per_step
26
28
  @steps_in_day = steps_in_day
@@ -60,6 +62,16 @@ class ScheduleGenerator
60
62
  def create(args:)
61
63
  initialize_schedules
62
64
 
65
+ if @column_names.nil?
66
+ @column_names = SchedulesFile.ColumnNames
67
+ end
68
+
69
+ invalid_columns = (@column_names - SchedulesFile.ColumnNames)
70
+ invalid_columns.each do |invalid_column|
71
+ @runner.registerError("Invalid column name specified: '#{invalid_column}'.")
72
+ end
73
+ return false unless invalid_columns.empty?
74
+
63
75
  success = create_average_schedules
64
76
  return false if not success
65
77
 
@@ -963,6 +975,9 @@ class ScheduleGenerator
963
975
  end
964
976
 
965
977
  def export(schedules_path:)
978
+ (SchedulesFile.ColumnNames - @column_names).each do |col_to_remove|
979
+ @schedules.delete(col_to_remove)
980
+ end
966
981
  CSV.open(schedules_path, 'w') do |csv|
967
982
  csv << @schedules.keys
968
983
  rows = @schedules.values.transpose
@@ -180,6 +180,51 @@ class BuildResidentialScheduleFileTest < Minitest::Test
180
180
  assert(!sf.schedules.keys.include?(SchedulesFile::ColumnVacancy))
181
181
  end
182
182
 
183
+ def test_stochastic_subset_of_columns
184
+ hpxml = _create_hpxml('base.xml')
185
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
186
+
187
+ columns = [SchedulesFile::ColumnCookingRange,
188
+ SchedulesFile::ColumnDishwasher,
189
+ SchedulesFile::ColumnHotWaterDishwasher,
190
+ SchedulesFile::ColumnClothesWasher,
191
+ SchedulesFile::ColumnHotWaterClothesWasher,
192
+ SchedulesFile::ColumnClothesDryer,
193
+ SchedulesFile::ColumnHotWaterFixtures]
194
+
195
+ @args_hash['schedules_type'] = 'stochastic'
196
+ @args_hash['output_csv_path'] = File.absolute_path(File.join(@tmp_output_path, 'occupancy-stochastic.csv'))
197
+ @args_hash['schedules_column_names'] = columns.join(', ')
198
+ model, hpxml, result = _test_measure()
199
+
200
+ info_msgs = result.info.map { |x| x.logMessage }
201
+ assert(info_msgs.any? { |info_msg| info_msg.include?('ColumnNames') })
202
+
203
+ sf = SchedulesFile.new(model: model, schedules_paths: hpxml.header.schedules_filepaths)
204
+ sf.validate_schedules(year: 2007)
205
+
206
+ columns.each do |column|
207
+ assert(sf.schedules.keys.include?(column))
208
+ end
209
+ (SchedulesFile.ColumnNames - columns).each do |column|
210
+ assert(!sf.schedules.keys.include?(column))
211
+ end
212
+ end
213
+
214
+ def test_stochastic_subset_of_columns_invalid_name
215
+ hpxml = _create_hpxml('base.xml')
216
+ XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
217
+
218
+ @args_hash['schedules_type'] = 'stochastic'
219
+ @args_hash['output_csv_path'] = File.absolute_path(File.join(@tmp_output_path, 'occupancy-stochastic.csv'))
220
+ @args_hash['schedules_column_names'] = "foobar, #{SchedulesFile::ColumnCookingRange}, foobar2"
221
+ _model, _hpxml, result = _test_measure(expect_fail: true)
222
+
223
+ error_msgs = result.errors.map { |x| x.logMessage }
224
+ assert(error_msgs.any? { |error_msg| error_msg.include?("Invalid column name specified: 'foobar'.") })
225
+ assert(error_msgs.any? { |error_msg| error_msg.include?("Invalid column name specified: 'foobar2'.") })
226
+ end
227
+
183
228
  def test_stochastic_vacancy
184
229
  hpxml = _create_hpxml('base.xml')
185
230
  XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
@@ -508,7 +553,7 @@ class BuildResidentialScheduleFileTest < Minitest::Test
508
553
  end
509
554
  end
510
555
 
511
- def _test_measure()
556
+ def _test_measure(expect_fail: false)
512
557
  # create an instance of the measure
513
558
  measure = BuildResidentialScheduleFile.new
514
559
 
@@ -532,11 +577,14 @@ class BuildResidentialScheduleFileTest < Minitest::Test
532
577
  measure.run(model, runner, argument_map)
533
578
  result = runner.result
534
579
 
535
- # show the output
536
- show_output(result) unless result.value.valueName == 'Success'
537
-
538
580
  # assert that it ran correctly
539
- assert_equal('Success', result.value.valueName)
581
+ if expect_fail
582
+ show_output(result) unless result.value.valueName == 'Fail'
583
+ assert_equal('Fail', result.value.valueName)
584
+ else
585
+ show_output(result) unless result.value.valueName == 'Success'
586
+ assert_equal('Success', result.value.valueName)
587
+ end
540
588
 
541
589
  hpxml = HPXML.new(hpxml_path: @tmp_hpxml_path)
542
590
 
@@ -1,20 +1,31 @@
1
+ ## OpenStudio-HPXML v1.5.1
2
+
3
+ __New Features__
4
+ - When `Battery/Location` not provided, now defaults to garage if present, otherwise outside.
5
+ - BuildResidentialScheduleFile measure:
6
+ - Allows requesting a subset of end uses (columns) to be generated.
7
+
8
+ __Bugfixes__
9
+ - Fixes total/net electricity timeseries outputs to include battery charging/discharging energy.
10
+ - Fixes error when a non-electric water heater has jacket insulation and the UEF metric is used.
11
+
1
12
  ## OpenStudio-HPXML v1.5.0
2
13
 
3
14
  __New Features__
4
15
  - Updates to OpenStudio 3.5.0/EnergyPlus 22.2.
5
16
  - Updates to newer proposed HPXML v4.0:
6
- - **Breaking Change**: Replaces `FrameFloors/FrameFloor` with `Floors/Floor`.
17
+ - **Breaking change**: Replaces `FrameFloors/FrameFloor` with `Floors/Floor`.
7
18
  - **Breaking change**: `Floor/FloorType` (WoodFrame, StructuralInsulatedPanel, SteelFrame, or SolidConcrete) is a required input.
8
- - **Breaking Change**: All `Ducts` must now have a `SystemIdentifier`.
9
- - **Breaking Change**: Replaces `WallType/StructurallyInsulatedPanel` with `WallType/StructuralInsulatedPanel`.
19
+ - **Breaking change**: All `Ducts` must now have a `SystemIdentifier`.
20
+ - **Breaking change**: Replaces `WallType/StructurallyInsulatedPanel` with `WallType/StructuralInsulatedPanel`.
10
21
  - **Breaking change**: Replaces `SoftwareInfo/extension/SimulationControl/DaylightSaving/Enabled` with `Building/Site/TimeZone/DSTObserved`.
11
- - **Breaking Change**: Replaces `StandbyLoss` with `StandbyLoss[Units="F/hr"]/Value` for an indirect water heater.
12
- - **Breaking Change**: Replaces `BranchPipingLoopLength` with `BranchPipingLength` for a hot water recirculation system.
13
- - **Breaking Change**: Replaces `Floor/extension/OtherSpaceAboveOrBelow` with `Floor/FloorOrCeiling`.
22
+ - **Breaking change**: Replaces `StandbyLoss` with `StandbyLoss[Units="F/hr"]/Value` for an indirect water heater.
23
+ - **Breaking change**: Replaces `BranchPipingLoopLength` with `BranchPipingLength` for a hot water recirculation system.
24
+ - **Breaking change**: Replaces `Floor/extension/OtherSpaceAboveOrBelow` with `Floor/FloorOrCeiling`.
14
25
  - **Breaking change**: For PTAC with heating, replaces `HeatingSystem` of type PackagedTerminalAirConditionerHeating with `CoolingSystem/IntegratedHeating*` elements.
15
- - **Breaking Change**: Now performs full HPXML XSD schema validation (previously just limited checks); yields runtime speed improvements.
16
- - **Breaking Change**: HVAC/DHW equipment efficiencies can no longer be defaulted (e.g., based on age of equipment); they are now required.
17
- - **Breaking Change**: Deprecates ReportHPXMLOutput measure; HVAC autosized capacities & design loads moved to `results_annual.csv`.
26
+ - **Breaking change**: Now performs full HPXML XSD schema validation (previously just limited checks); yields runtime speed improvements.
27
+ - **Breaking change**: HVAC/DHW equipment efficiencies can no longer be defaulted (e.g., based on age of equipment); they are now required.
28
+ - **Breaking change**: Deprecates ReportHPXMLOutput measure; HVAC autosized capacities & design loads moved to `results_annual.csv`.
18
29
  - **Breaking change**: BuildResidentialHPXML measure: Replaces arguments using 'auto' for defaults with optional arguments of the appropriate data type.
19
30
  - Utility bill calculations:
20
31
  - **Breaking change**: Removes utility rate and PV related arguments from the ReportUtilityBills measure in lieu of HPXML file inputs.
@@ -305,7 +316,7 @@ __Bugfixes__
305
316
 
306
317
  __New Features__
307
318
  - New [Schematron](http://schematron.com) validation (EPvalidator.xml) replaces custom ruby validation (EPvalidator.rb)
308
- - **[Breaking Change]** `BuildingConstruction/ResidentialFacilityType` ("single-family detached", "single-family attached", "apartment unit", or "manufactured home") is a required input
319
+ - **[Breaking change]** `BuildingConstruction/ResidentialFacilityType` ("single-family detached", "single-family attached", "apartment unit", or "manufactured home") is a required input
309
320
  - Ability to model shared systems for Attached/Multifamily dwelling units
310
321
  - Shared HVAC systems (cooling towers, chillers, central boilers, water loop heat pumps, fan coils, ground source heat pumps on shared hydronic circulation loops)
311
322
  - Shared water heaters serving either A) multiple dwelling units' service hot water or B) a shared laundry/equipment room, as well as hot water recirculation systems
@@ -313,7 +324,7 @@ __New Features__
313
324
  - Shared hot water recirculation systems
314
325
  - Shared ventilation systems (optionally with preconditioning equipment and recirculation)
315
326
  - Shared PV systems
316
- - **[Breaking Change]** Appliances located in MF spaces (i.e., "other") must now be specified in more detail (i.e., "other heated space", "other non-freezing space", "other multifamily buffer space", or "other housing unit")
327
+ - **[Breaking change]** Appliances located in MF spaces (i.e., "other") must now be specified in more detail (i.e., "other heated space", "other non-freezing space", "other multifamily buffer space", or "other housing unit")
317
328
  - Enclosure
318
329
  - New optional inputs: `Roof/RoofType`, `Wall/Siding`, and `RimJoist/Siding`
319
330
  - New optional inputs: `Skylight/InteriorShading/SummerShadingCoefficient` and `Skylight/InteriorShading/SummerShadingCoefficient`
@@ -321,7 +332,7 @@ __New Features__
321
332
  - New optional input to specify presence of flue/chimney, which results in increased infiltration
322
333
  - Allows adobe wall type
323
334
  - Allows `AirInfiltrationMeasurement/HousePressure` to be any value (previously required to be 50 Pa)
324
- - **[Breaking Change]** `Roof/RadiantBarrierGrade` input now required when there is a radiant barrier
335
+ - **[Breaking change]** `Roof/RadiantBarrierGrade` input now required when there is a radiant barrier
325
336
  - HVAC
326
337
  - Adds optional high-level HVAC autosizing controls
327
338
  - `AllowIncreasedFixedCapacities`: Describes how HVAC equipment with fixed capacities are handled. If true, the maximum of the user-specified fixed capacity and the heating/cooling design load will be used to reduce potential for unmet loads. Defaults to false.
@@ -333,11 +344,11 @@ __New Features__
333
344
  - Appliances & Plug Loads
334
345
  - Allows _multiple_ `Refrigerator` and `Freezer`
335
346
  - Allows `Pool`, `HotTub`, `PlugLoad` of type "electric vehicle charging" and "well pump", and `FuelLoad` of type "grill", "lighting", and "fireplace"
336
- - **[Breaking Change]** "other" and "TV other" plug loads now required
347
+ - **[Breaking change]** "other" and "TV other" plug loads now required
337
348
  - Lighting
338
349
  - Allows lighting schedules and holiday lighting
339
- - **[Breaking Change]** For hydronic distributions, `HydronicDistributionType` is now required
340
- - **[Breaking Change]** For DSE distributions, `AnnualHeatingDistributionSystemEfficiency` and `AnnualCoolingDistributionSystemEfficiency` are both always required
350
+ - **[Breaking change]** For hydronic distributions, `HydronicDistributionType` is now required
351
+ - **[Breaking change]** For DSE distributions, `AnnualHeatingDistributionSystemEfficiency` and `AnnualCoolingDistributionSystemEfficiency` are both always required
341
352
  - Allows more HPXML fuel types to be used for HVAC, water heating, appliances, etc.
342
353
  - New inputs to define Daylight Saving period; defaults to enabled
343
354
  - Adds more reporting of warnings/errors to run.log
@@ -353,7 +364,7 @@ __Bugfixes__
353
364
  __New Features__
354
365
  - Dwelling units of single-family attached/multifamily buildings:
355
366
  - Adds new generic space types "other heated space", "other multifamily buffer space", and "other non-freezing space" for surface `ExteriorAdjacentTo` elements. "other housing unit", i.e. adiabatic surfaces, was already supported.
356
- - **[Breaking Change]** For `FrameFloors`, replaces "other housing unit above" and "other housing unit below" enumerations with "other housing unit". All four "other ..." spaces must have an `extension/OtherSpaceAboveOrBelow` property set to either "above" or "below".
367
+ - **[Breaking change]** For `FrameFloors`, replaces "other housing unit above" and "other housing unit below" enumerations with "other housing unit". All four "other ..." spaces must have an `extension/OtherSpaceAboveOrBelow` property set to either "above" or "below".
357
368
  - Allows ducts and water heaters to be located in all "other ..." spaces.
358
369
  - Allows all appliances to be located in "other", in which internal gains are neglected.
359
370
  - Allows `Fireplace` and `FloorFurnace` for heating system types.
@@ -364,15 +375,15 @@ __New Features__
364
375
  - Allows user-specified `Refrigerator` and `CookingRange` schedules to be provided.
365
376
  - HVAC capacity elements are no longer required; if not provided, ACCA Manual J autosizing calculations will be used (-1 can continue to be used for capacity elements but is discouraged).
366
377
  - Duct locations/areas can be defaulted by specifying supply/return `Duct` elements without `DuctSurfaceArea` and `DuctLocation`. `HVACDistribution/DistributionSystemType/AirDistribution/NumberofReturnRegisters` can be optionally provided to inform the default duct area calculations.
367
- - **[Breaking Change]** Lighting inputs now use `LightingType[LightEmittingDiode | CompactFluorescent | FluorescentTube]` instead of `ThirdPartyCertification="ERI Tier I" or ThirdPartyCertification="ERI Tier II"`.
368
- - **[Breaking Change]** `HVACDistribution/ConditionedFloorAreaServed` is now required for air distribution systems.
369
- - **[Breaking Change]** Infiltration and attic ventilation specified using natural air changes per hour now uses `ACHnatural` instead of `extension/ConstantACHnatural`.
370
- - **[Breaking Change]** The optional `PerformanceAdjustment` input for instantaneous water heaters is now treated as a performance multiplier (e.g., 0.92) instead of derate (e.g., 0.08).
378
+ - **[Breaking change]** Lighting inputs now use `LightingType[LightEmittingDiode | CompactFluorescent | FluorescentTube]` instead of `ThirdPartyCertification="ERI Tier I" or ThirdPartyCertification="ERI Tier II"`.
379
+ - **[Breaking change]** `HVACDistribution/ConditionedFloorAreaServed` is now required for air distribution systems.
380
+ - **[Breaking change]** Infiltration and attic ventilation specified using natural air changes per hour now uses `ACHnatural` instead of `extension/ConstantACHnatural`.
381
+ - **[Breaking change]** The optional `PerformanceAdjustment` input for instantaneous water heaters is now treated as a performance multiplier (e.g., 0.92) instead of derate (e.g., 0.08).
371
382
  - Adds ASHRAE 140 Class II test files.
372
383
  - SimulationOutputReport reporting measure:
373
384
  - New optional timeseries outputs: airflows (e.g., infiltration, mechanical ventilation, natural ventilation, whole house fan) and weather (e.g., temperatures, wind speed, solar).
374
385
  - Timeseries frequency can now be set to 'none' as an alternative to setting all include_timeseries_foo variables to false.
375
- - **[Breaking Change]** Renames "Wood" to "Wood Cord" to better distinguish from "Wood Pellets".
386
+ - **[Breaking change]** Renames "Wood" to "Wood Cord" to better distinguish from "Wood Pellets".
376
387
  - Modeling improvements:
377
388
  - Improved calculation for infiltration height
378
389
  - Infiltration & mechanical ventilation now combined using ASHRAE 62.2 Normative Appendix C.
@@ -398,10 +409,10 @@ __Bugfixes__
398
409
  ## OpenStudio-HPXML v0.9.0 Beta
399
410
 
400
411
  __New Features__
401
- - **[Breaking Change]** Updates to OpenStudio v3.0.0 and EnergyPlus 9.3
412
+ - **[Breaking change]** Updates to OpenStudio v3.0.0 and EnergyPlus 9.3
402
413
  - Numerous HPXML inputs are now optional with built-in defaulting, particularly for water heating, appliances, and PV. Set the `debug` argument to true to output a in.xml HPXML file with defaults applied for inspection. See the documentation for defaulting equations/assumptions/references.
403
- - **[Breaking Change]** If clothes washer efficiency inputs are provided, `LabelUsage` is now required.
404
- - **[Breaking Change]** If dishwasher efficiency inputs are provided, `LabelElectricRate`, `LabelGasRate`, `LabelAnnualGasCost`, and `LabelUsage` are now required.
414
+ - **[Breaking change]** If clothes washer efficiency inputs are provided, `LabelUsage` is now required.
415
+ - **[Breaking change]** If dishwasher efficiency inputs are provided, `LabelElectricRate`, `LabelGasRate`, `LabelAnnualGasCost`, and `LabelUsage` are now required.
405
416
  - Adds optional specification of simulation controls including timestep and begin/end dates.
406
417
  - Adds optional `extension/UsageMultiplier` inputs for appliances, plug loads, lighting, and water fixtures. Can be used to, e.g., reflect high/low usage occupants.
407
418
  - Adds ability to model a dehumidifier.
@@ -409,9 +420,9 @@ __New Features__
409
420
  - Improved desuperheater model; desuperheater can now be connected to heat pump water heaters.
410
421
  - Updated clothes washer/dryer and dishwasher models per ANSI/RESNET/ICC 301-2019 Addendum A.
411
422
  - Solar thermal systems modeled with `SolarFraction` can now be connected to combi water heating systems.
412
- - **[Breaking Change]** Replaces optional `epw_output_path` and `osm_output_path` arguments with a single optional `output_dir` argument; adds an optional `debug` argument.
413
- - **[Breaking Change]** Replaces optional `BuildingConstruction/extension/FractionofOperableWindowArea` with optional `Window/FractionOperable`.
414
- - **[Breaking Change]** Replaces optional `extension/EPWFileName` with optional `extension/EPWFilePath` to allow absolute paths to be provided as an alternative to just the file name.
423
+ - **[Breaking change]** Replaces optional `epw_output_path` and `osm_output_path` arguments with a single optional `output_dir` argument; adds an optional `debug` argument.
424
+ - **[Breaking change]** Replaces optional `BuildingConstruction/extension/FractionofOperableWindowArea` with optional `Window/FractionOperable`.
425
+ - **[Breaking change]** Replaces optional `extension/EPWFileName` with optional `extension/EPWFilePath` to allow absolute paths to be provided as an alternative to just the file name.
415
426
  - Replaces REXML xml library with Oga for better runtime performance.
416
427
  - Additional error-checking.
417
428
  - SimulationOutputReport reporting measure:
@@ -429,7 +440,7 @@ __Bugfixes__
429
440
 
430
441
  ## OpenStudio-HPXML v0.8.0 Beta
431
442
 
432
- __Breaking Changes__
443
+ __Breaking changes__
433
444
  - Weather cache files are now in .csv instead of .cache format.
434
445
  - `extension/StandbyLoss` changed to `StandbyLoss` for indirect water heaters.
435
446
  - `Site/extension/DisableNaturalVentilation` changed to `BuildingConstruction/extension/FractionofOperableWindowArea` for more granularity.
@@ -3,8 +3,8 @@
3
3
  <schema_version>3.0</schema_version>
4
4
  <name>hpxm_lto_openstudio</name>
5
5
  <uid>b1543b30-9465-45ff-ba04-1d1f85e763bc</uid>
6
- <version_id>d77a64fb-783a-45a5-b534-b5d6ddd86d9d</version_id>
7
- <version_modified>20221118T212839Z</version_modified>
6
+ <version_id>6600e0c5-d9b6-465e-ac84-30da41fdfe12</version_id>
7
+ <version_modified>20221206T195230Z</version_modified>
8
8
  <xml_checksum>D8922A73</xml_checksum>
9
9
  <class_name>HPXMLtoOpenStudio</class_name>
10
10
  <display_name>HPXML to OpenStudio Translator</display_name>
@@ -493,30 +493,12 @@
493
493
  <usage_type>test</usage_type>
494
494
  <checksum>E6B6B63E</checksum>
495
495
  </file>
496
- <file>
497
- <filename>test_defaults.rb</filename>
498
- <filetype>rb</filetype>
499
- <usage_type>test</usage_type>
500
- <checksum>5874DE81</checksum>
501
- </file>
502
496
  <file>
503
497
  <filename>hpxml_schematron/EPvalidator.xml</filename>
504
498
  <filetype>xml</filetype>
505
499
  <usage_type>resource</usage_type>
506
500
  <checksum>436D6528</checksum>
507
501
  </file>
508
- <file>
509
- <filename>hpxml_defaults.rb</filename>
510
- <filetype>rb</filetype>
511
- <usage_type>resource</usage_type>
512
- <checksum>E748CE9A</checksum>
513
- </file>
514
- <file>
515
- <filename>battery.rb</filename>
516
- <filetype>rb</filetype>
517
- <usage_type>resource</usage_type>
518
- <checksum>6E92DEE7</checksum>
519
- </file>
520
502
  <file>
521
503
  <version>
522
504
  <software_program>OpenStudio</software_program>
@@ -546,12 +528,6 @@
546
528
  <usage_type>test</usage_type>
547
529
  <checksum>FA4D31E7</checksum>
548
530
  </file>
549
- <file>
550
- <filename>waterheater.rb</filename>
551
- <filetype>rb</filetype>
552
- <usage_type>resource</usage_type>
553
- <checksum>FB833E88</checksum>
554
- </file>
555
531
  <file>
556
532
  <filename>hotwater_appliances.rb</filename>
557
533
  <filetype>rb</filetype>
@@ -582,11 +558,35 @@
582
558
  <usage_type>resource</usage_type>
583
559
  <checksum>398A7B89</checksum>
584
560
  </file>
561
+ <file>
562
+ <filename>hpxml_defaults.rb</filename>
563
+ <filetype>rb</filetype>
564
+ <usage_type>resource</usage_type>
565
+ <checksum>CB7BDE02</checksum>
566
+ </file>
567
+ <file>
568
+ <filename>test_defaults.rb</filename>
569
+ <filetype>rb</filetype>
570
+ <usage_type>test</usage_type>
571
+ <checksum>6CA2E731</checksum>
572
+ </file>
573
+ <file>
574
+ <filename>battery.rb</filename>
575
+ <filetype>rb</filetype>
576
+ <usage_type>resource</usage_type>
577
+ <checksum>E188E460</checksum>
578
+ </file>
579
+ <file>
580
+ <filename>waterheater.rb</filename>
581
+ <filetype>rb</filetype>
582
+ <usage_type>resource</usage_type>
583
+ <checksum>170774C2</checksum>
584
+ </file>
585
585
  <file>
586
586
  <filename>version.rb</filename>
587
587
  <filetype>rb</filetype>
588
588
  <usage_type>resource</usage_type>
589
- <checksum>A558D830</checksum>
589
+ <checksum>80B2ED97</checksum>
590
590
  </file>
591
591
  </files>
592
592
  </measure>