urbanopt-cli 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/LICENSE.md +1 -1
- data/Rakefile +1 -1
- data/example_files/mappers/Baseline.rb +1 -1
- data/example_files/mappers/ClassProject.rb +1 -1
- data/example_files/mappers/CreateBar.rb +1 -1
- data/example_files/mappers/EvCharging.rb +1 -1
- data/example_files/mappers/FlexibleHotWater.rb +1 -1
- data/example_files/mappers/Floorspace.rb +1 -1
- data/example_files/mappers/HighEfficiency.rb +1 -1
- data/example_files/mappers/HighEfficiencyCreateBar.rb +1 -1
- data/example_files/mappers/HighEfficiencyFloorspace.rb +1 -1
- data/example_files/mappers/PeakHoursMelsShedding.rb +1 -1
- data/example_files/mappers/PeakHoursThermostatAdjust.rb +1 -1
- data/example_files/mappers/ThermalStorage.rb +1 -1
- data/example_files/measures/BuildResidentialModel/measure.xml +3 -3
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +7 -0
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +18 -10
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +15 -0
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +53 -5
- data/example_files/resources/hpxml-measures/Changelog.md +39 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +27 -27
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +9 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +5 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +5 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +28 -10
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +6 -1
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +3 -3
- data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +2 -1
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +14 -10
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +4 -4
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +64 -0
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +2 -2
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +12 -12
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +36 -110
- data/lib/uo_cli/version.rb +2 -2
- data/lib/uo_cli.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1403126b59a00ca08656510c8f97147cf88dc7b58be19d63944f99120c27d73
|
4
|
+
data.tar.gz: c5502d2e07c64a04908e4939ad83d7c312a790b06e0842dd053809263b05ab06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f4482a92fc524b4d104764f9a654b62a2aeda1c78183c3f96a59e755645ba67b73b27ac667881f8bf436e8ad99f4ff5d1c8b3caaeed1b75a5b14bb9144f9443
|
7
|
+
data.tar.gz: 6862733daffd4901ec5ab6dc0f23ad5957c566fb86faa8b10ca8f5b89745bee6b351d5f3a6a9a596f97570a5624d0fa575dfc3e2334603e9253d7198ee3f2986
|
data/CHANGELOG.md
CHANGED
data/LICENSE.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# License
|
2
2
|
|
3
|
-
URBANopt™, Copyright (c) 2019-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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>
|
7
|
-
<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>
|
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>
|
7
|
-
<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>
|
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>
|
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>
|
data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
9
|
-
- **Breaking
|
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
|
12
|
-
- **Breaking
|
13
|
-
- **Breaking
|
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
|
16
|
-
- **Breaking
|
17
|
-
- **Breaking
|
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
|
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
|
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
|
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
|
347
|
+
- **[Breaking change]** "other" and "TV other" plug loads now required
|
337
348
|
- Lighting
|
338
349
|
- Allows lighting schedules and holiday lighting
|
339
|
-
- **[Breaking
|
340
|
-
- **[Breaking
|
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
|
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
|
368
|
-
- **[Breaking
|
369
|
-
- **[Breaking
|
370
|
-
- **[Breaking
|
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
|
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
|
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
|
404
|
-
- **[Breaking
|
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
|
413
|
-
- **[Breaking
|
414
|
-
- **[Breaking
|
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
|
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>
|
7
|
-
<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>
|
589
|
+
<checksum>80B2ED97</checksum>
|
590
590
|
</file>
|
591
591
|
</files>
|
592
592
|
</measure>
|