urbanopt-cli 0.9.0 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/nightly_build.yml +60 -0
- data/CHANGELOG.md +12 -0
- data/CMakeLists.txt +8 -8
- data/FindOpenStudioSDK.cmake +10 -10
- data/LICENSE.md +1 -1
- data/README.md +25 -23
- data/Rakefile +1 -1
- data/example_files/Gemfile +2 -0
- data/example_files/mappers/Baseline.rb +155 -155
- data/example_files/mappers/ClassProject.rb +4 -4
- 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.rb +3 -3
- data/example_files/measures/BuildResidentialModel/measure.xml +3 -3
- data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
- 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 +62 -67
- data/uo_cli.gemspec +3 -1
- metadata +32 -3
- data/requirements.txt +0 -2
@@ -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>
|
@@ -127,7 +127,7 @@ class Battery
|
|
127
127
|
# Apply round trip efficiency as EMS program b/c E+ input is not hooked up.
|
128
128
|
# Replace this when the first item in https://github.com/NREL/EnergyPlus/issues/9176 is fixed.
|
129
129
|
charge_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Electric Storage Charge Energy')
|
130
|
-
charge_sensor.setName('
|
130
|
+
charge_sensor.setName('battery_charge')
|
131
131
|
charge_sensor.setKeyName(elcs.name.to_s)
|
132
132
|
|
133
133
|
loss_adj_object_def = OpenStudio::Model::OtherEquipmentDefinition.new(model)
|
@@ -149,7 +149,7 @@ class Battery
|
|
149
149
|
|
150
150
|
battery_losses_program = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
151
151
|
battery_losses_program.setName('battery_losses')
|
152
|
-
battery_losses_program.addLine("Set losses = -1 *
|
152
|
+
battery_losses_program.addLine("Set losses = -1 * #{charge_sensor.name} * (1 - #{battery.round_trip_efficiency})")
|
153
153
|
battery_losses_program.addLine("Set #{battery_adj_actuator.name} = -1 * losses / ( 3600 * SystemTimeStep )")
|
154
154
|
|
155
155
|
battery_losses_pcm = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
|
@@ -165,8 +165,13 @@ class Battery
|
|
165
165
|
battery_losses_output_var.setUnits('J')
|
166
166
|
end
|
167
167
|
|
168
|
-
def self.get_battery_default_values()
|
169
|
-
|
168
|
+
def self.get_battery_default_values(has_garage = false)
|
169
|
+
if has_garage
|
170
|
+
location = HPXML::LocationGarage
|
171
|
+
else
|
172
|
+
location = HPXML::LocationOutside
|
173
|
+
end
|
174
|
+
return { location: location,
|
170
175
|
lifetime_model: HPXML::BatteryLifetimeModelNone,
|
171
176
|
nominal_capacity_kwh: 10.0,
|
172
177
|
nominal_voltage: 50.0,
|
@@ -1124,7 +1124,7 @@ class HPXMLDefaults
|
|
1124
1124
|
if heat_pump.compressor_type == HPXML::HVACCompressorTypeSingleStage
|
1125
1125
|
heat_pump.cooling_shr = 0.73
|
1126
1126
|
elsif heat_pump.compressor_type == HPXML::HVACCompressorTypeTwoStage
|
1127
|
-
heat_pump.cooling_shr = 0.
|
1127
|
+
heat_pump.cooling_shr = 0.73
|
1128
1128
|
elsif heat_pump.compressor_type == HPXML::HVACCompressorTypeVariableSpeed
|
1129
1129
|
heat_pump.cooling_shr = 0.78
|
1130
1130
|
end
|
@@ -1133,9 +1133,10 @@ class HPXMLDefaults
|
|
1133
1133
|
heat_pump.cooling_shr = 0.73
|
1134
1134
|
heat_pump.cooling_shr_isdefaulted = true
|
1135
1135
|
elsif heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
|
1136
|
-
heat_pump.cooling_shr = 0.
|
1136
|
+
heat_pump.cooling_shr = 0.73
|
1137
1137
|
heat_pump.cooling_shr_isdefaulted = true
|
1138
|
-
elsif heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpPTHP
|
1138
|
+
elsif heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpPTHP ||
|
1139
|
+
heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpRoom
|
1139
1140
|
heat_pump.cooling_shr = 0.65
|
1140
1141
|
heat_pump.cooling_shr_isdefaulted = true
|
1141
1142
|
end
|
@@ -1819,7 +1820,7 @@ class HPXMLDefaults
|
|
1819
1820
|
end
|
1820
1821
|
|
1821
1822
|
def self.apply_batteries(hpxml)
|
1822
|
-
default_values = Battery.get_battery_default_values()
|
1823
|
+
default_values = Battery.get_battery_default_values(hpxml.has_location(HPXML::LocationGarage))
|
1823
1824
|
hpxml.batteries.each do |battery|
|
1824
1825
|
if battery.location.nil?
|
1825
1826
|
battery.location = default_values[:location]
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Version
|
4
|
-
OS_HPXML_Version = '1.5.
|
5
|
-
OS_Version = '3.5
|
4
|
+
OS_HPXML_Version = '1.5.1' # Version of the OS-HPXML workflow
|
5
|
+
OS_Version = '3.5' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
|
6
6
|
HPXML_Version = '4.0' # HPXML schemaVersion
|
7
7
|
|
8
8
|
def self.check_openstudio_version
|
@@ -1531,7 +1531,11 @@ class Waterheater
|
|
1531
1531
|
if water_heating_system.fuel_type.nil? # indirect water heater, etc. Assume 2 inch skin insulation
|
1532
1532
|
skin_insulation_t = 2.0 # inch
|
1533
1533
|
elsif water_heating_system.fuel_type != HPXML::FuelTypeElectricity
|
1534
|
-
|
1534
|
+
ef = water_heating_system.energy_factor
|
1535
|
+
if ef.nil?
|
1536
|
+
ef = calc_ef_from_uef(water_heating_system)
|
1537
|
+
end
|
1538
|
+
if ef < 0.7
|
1535
1539
|
skin_insulation_t = 1.0 # inch
|
1536
1540
|
else
|
1537
1541
|
skin_insulation_t = 2.0 # inch
|
@@ -2332,7 +2332,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2332
2332
|
hpxml.batteries[0].round_trip_efficiency = 0.9
|
2333
2333
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2334
2334
|
hpxml_default = _test_measure()
|
2335
|
-
_test_default_battery_values(hpxml_default, 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned,
|
2335
|
+
_test_default_battery_values(hpxml_default, 45.0, nil, 34.0, nil, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
|
2336
2336
|
|
2337
2337
|
# Test w/ Ah instead of kWh
|
2338
2338
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2341,7 +2341,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2341
2341
|
hpxml.batteries[0].usable_capacity_ah = 876.0
|
2342
2342
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2343
2343
|
hpxml_default = _test_measure()
|
2344
|
-
_test_default_battery_values(hpxml_default, nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned,
|
2344
|
+
_test_default_battery_values(hpxml_default, nil, 987.0, nil, 876.0, 1234.0, HPXML::LocationBasementConditioned, nil, 0.9)
|
2345
2345
|
|
2346
2346
|
# Test defaults
|
2347
2347
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2354,7 +2354,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2354
2354
|
hpxml.batteries[0].round_trip_efficiency = nil
|
2355
2355
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2356
2356
|
hpxml_default = _test_measure()
|
2357
|
-
_test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside,
|
2357
|
+
_test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationOutside, nil, 0.925)
|
2358
2358
|
|
2359
2359
|
# Test defaults w/ nominal kWh
|
2360
2360
|
hpxml.batteries[0].nominal_capacity_kwh = 14.0
|
@@ -2364,7 +2364,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2364
2364
|
hpxml.batteries[0].rated_power_output = nil
|
2365
2365
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2366
2366
|
hpxml_default = _test_measure()
|
2367
|
-
_test_default_battery_values(hpxml_default, 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside,
|
2367
|
+
_test_default_battery_values(hpxml_default, 14.0, nil, 12.6, nil, 7000.0, HPXML::LocationOutside, nil, 0.925)
|
2368
2368
|
|
2369
2369
|
# Test defaults w/ usable kWh
|
2370
2370
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2374,7 +2374,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2374
2374
|
hpxml.batteries[0].rated_power_output = nil
|
2375
2375
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2376
2376
|
hpxml_default = _test_measure()
|
2377
|
-
_test_default_battery_values(hpxml_default, 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside,
|
2377
|
+
_test_default_battery_values(hpxml_default, 13.33, nil, 12.0, nil, 6665.0, HPXML::LocationOutside, nil, 0.925)
|
2378
2378
|
|
2379
2379
|
# Test defaults w/ nominal Ah
|
2380
2380
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2384,7 +2384,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2384
2384
|
hpxml.batteries[0].rated_power_output = nil
|
2385
2385
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2386
2386
|
hpxml_default = _test_measure()
|
2387
|
-
_test_default_battery_values(hpxml_default, nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside,
|
2387
|
+
_test_default_battery_values(hpxml_default, nil, 280.0, nil, 252.0, 7000.0, HPXML::LocationOutside, nil, 0.925)
|
2388
2388
|
|
2389
2389
|
# Test defaults w/ usable Ah
|
2390
2390
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2394,7 +2394,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2394
2394
|
hpxml.batteries[0].rated_power_output = nil
|
2395
2395
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2396
2396
|
hpxml_default = _test_measure()
|
2397
|
-
_test_default_battery_values(hpxml_default, nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside,
|
2397
|
+
_test_default_battery_values(hpxml_default, nil, 266.67, nil, 240.0, 6667.0, HPXML::LocationOutside, nil, 0.925)
|
2398
2398
|
|
2399
2399
|
# Test defaults w/ rated power output
|
2400
2400
|
hpxml.batteries[0].nominal_capacity_kwh = nil
|
@@ -2404,7 +2404,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
2404
2404
|
hpxml.batteries[0].rated_power_output = 10000.0
|
2405
2405
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2406
2406
|
hpxml_default = _test_measure()
|
2407
|
-
_test_default_battery_values(hpxml_default, 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside,
|
2407
|
+
_test_default_battery_values(hpxml_default, 20.0, nil, 18.0, nil, 10000.0, HPXML::LocationOutside, nil, 0.925)
|
2408
|
+
|
2409
|
+
# Test defaults w/ garage
|
2410
|
+
hpxml = _create_hpxml('base-pv-battery-garage.xml')
|
2411
|
+
hpxml.batteries[0].nominal_capacity_kwh = nil
|
2412
|
+
hpxml.batteries[0].nominal_capacity_ah = nil
|
2413
|
+
hpxml.batteries[0].usable_capacity_kwh = nil
|
2414
|
+
hpxml.batteries[0].usable_capacity_ah = nil
|
2415
|
+
hpxml.batteries[0].rated_power_output = nil
|
2416
|
+
hpxml.batteries[0].location = nil
|
2417
|
+
hpxml.batteries[0].lifetime_model = nil
|
2418
|
+
hpxml.batteries[0].round_trip_efficiency = nil
|
2419
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
2420
|
+
hpxml_default = _test_measure()
|
2421
|
+
_test_default_battery_values(hpxml_default, 10.0, nil, 9.0, nil, 5000.0, HPXML::LocationGarage, nil, 0.925)
|
2408
2422
|
end
|
2409
2423
|
|
2410
2424
|
def test_generators
|
@@ -3971,7 +3985,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
3971
3985
|
end
|
3972
3986
|
|
3973
3987
|
def _test_default_battery_values(hpxml, nominal_capacity_kwh, nominal_capacity_ah, usable_capacity_kwh, usable_capacity_ah,
|
3974
|
-
rated_power_output, location,
|
3988
|
+
rated_power_output, location, lifetime_model, round_trip_efficiency)
|
3975
3989
|
if nominal_capacity_kwh.nil?
|
3976
3990
|
assert_nil(hpxml.batteries[0].nominal_capacity_kwh)
|
3977
3991
|
else
|
@@ -3994,7 +4008,11 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
3994
4008
|
end
|
3995
4009
|
assert_equal(rated_power_output, hpxml.batteries[0].rated_power_output)
|
3996
4010
|
assert_equal(location, hpxml.batteries[0].location)
|
3997
|
-
|
4011
|
+
if lifetime_model.nil?
|
4012
|
+
assert_nil(hpxml.batteries[0].lifetime_model)
|
4013
|
+
else
|
4014
|
+
assert_equal(lifetime_model, hpxml.batteries[0].lifetime_model)
|
4015
|
+
end
|
3998
4016
|
assert_equal(round_trip_efficiency, hpxml.batteries[0].round_trip_efficiency)
|
3999
4017
|
end
|
4000
4018
|
|
@@ -313,6 +313,9 @@ class ReportSimulationOutput < OpenStudio::Measure::ReportingMeasure
|
|
313
313
|
end
|
314
314
|
if has_electricity_storage
|
315
315
|
result << OpenStudio::IdfObject.load('Output:Meter,ElectricStorage:ElectricityProduced,runperiod;').get # Used for error checking
|
316
|
+
if include_timeseries_fuel_consumptions
|
317
|
+
result << OpenStudio::IdfObject.load("Output:Meter,ElectricStorage:ElectricityProduced,#{timeseries_frequency};").get
|
318
|
+
end
|
316
319
|
end
|
317
320
|
|
318
321
|
# End Use/Hot Water Use/Ideal Load outputs
|
@@ -640,12 +643,14 @@ class ReportSimulationOutput < OpenStudio::Measure::ReportingMeasure
|
|
640
643
|
end
|
641
644
|
|
642
645
|
# Fuel Uses
|
643
|
-
@fuels.each do |
|
646
|
+
@fuels.each do |fuel_type, fuel|
|
644
647
|
fuel.annual_output = get_report_meter_data_annual(fuel.meters)
|
648
|
+
fuel.annual_output -= get_report_meter_data_annual(['ElectricStorage:ElectricityProduced']) if fuel_type == FT::Elec # We add Electric Storage onto the annual Electricity fuel meter
|
645
649
|
|
646
650
|
next unless include_timeseries_fuel_consumptions
|
647
651
|
|
648
652
|
fuel.timeseries_output = get_report_meter_data_timeseries(fuel.meters, UnitConversions.convert(1.0, 'J', fuel.timeseries_units), 0, timeseries_frequency)
|
653
|
+
fuel.timeseries_output = fuel.timeseries_output.zip(get_report_meter_data_timeseries(['ElectricStorage:ElectricityProduced'], UnitConversions.convert(1.0, 'J', fuel.timeseries_units), 0, timeseries_frequency)).map { |x, y| x - y } if fuel_type == FT::Elec # We add Electric Storage onto the timeseries Electricity fuel meter
|
649
654
|
end
|
650
655
|
|
651
656
|
# Peak Electricity Consumption
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<schema_version>3.0</schema_version>
|
4
4
|
<name>report_simulation_output</name>
|
5
5
|
<uid>df9d170c-c21a-4130-866d-0d46b06073fd</uid>
|
6
|
-
<version_id>
|
7
|
-
<version_modified>
|
6
|
+
<version_id>ed4b8b52-6f8a-45b2-a02d-533a60f74d62</version_id>
|
7
|
+
<version_modified>20221206T185448Z</version_modified>
|
8
8
|
<xml_checksum>9BF1E6AC</xml_checksum>
|
9
9
|
<class_name>ReportSimulationOutput</class_name>
|
10
10
|
<display_name>HPXML Simulation Output Report</display_name>
|
@@ -1540,7 +1540,7 @@
|
|
1540
1540
|
<filename>measure.rb</filename>
|
1541
1541
|
<filetype>rb</filetype>
|
1542
1542
|
<usage_type>script</usage_type>
|
1543
|
-
<checksum>
|
1543
|
+
<checksum>F4893CF9</checksum>
|
1544
1544
|
</file>
|
1545
1545
|
</files>
|
1546
1546
|
</measure>
|
@@ -55,7 +55,8 @@ A template OSW that simply runs the HPXMLtoOpenStudio, ReportSimulationOutput, a
|
|
55
55
|
|
56
56
|
| Another example:
|
57
57
|
| ``openstudio run -w workflow/template-run-hpxml-with-stochastic-occupancy.osw``
|
58
|
-
|
|
58
|
+
| ``openstudio run -w workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw``
|
59
|
+
| This workflow automatically generates and uses a CSV file with stochastic occupancy schedules (either with all possible columns or a user-specified subset of columns) before running the EnergyPlus simulation.
|
59
60
|
|
60
61
|
| And another example:
|
61
62
|
| ``openstudio run -w workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw``
|
@@ -186,6 +186,7 @@ The column names available in the schedule CSV files are:
|
|
186
186
|
=============================== ===== ============================================================================== ===================
|
187
187
|
|
188
188
|
Columns with units of `frac` must be normalized to MAX=1; that is, these schedules only define *when* energy is used, not *how much* energy is used.
|
189
|
+
In other words, the amount of energy or hot water used in each simulation timestep is essentially the schedule value divided by the sum of all schedule values in the column, multiplied by the annual energy or hot water use.
|
189
190
|
Example schedule CSV files are provided in the ``HPXMLtoOpenStudio/resources/schedule_files`` directory.
|
190
191
|
|
191
192
|
The schedule file must have a full year of data even if the simulation is not an entire year.
|
@@ -1344,7 +1345,7 @@ If a central air conditioner is specified, additional information is entered in
|
|
1344
1345
|
``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system
|
1345
1346
|
``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh or # > 0 Yes Rated efficiency [#]_
|
1346
1347
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1347
|
-
``SensibleHeatFraction`` double frac 0 - 1 No
|
1348
|
+
``SensibleHeatFraction`` double frac 0 - 1 No See [#]_ Sensible heat fraction
|
1348
1349
|
``CompressorType`` string See [#]_ No See [#]_ Type of compressor
|
1349
1350
|
``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed [#]_
|
1350
1351
|
``extension/AirflowDefectRatio`` double frac -0.9 - 9 No 0.0 Deviation between design/installed airflows [#]_
|
@@ -1353,6 +1354,7 @@ If a central air conditioner is specified, additional information is entered in
|
|
1353
1354
|
|
1354
1355
|
.. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE.
|
1355
1356
|
.. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 (assumed to be a split system).
|
1357
|
+
.. [#] If not provided, defaults to 0.73 for single/two stage and 0.78 for variable speed.
|
1356
1358
|
.. [#] CompressorType choices are "single stage", "two stage", or "variable speed".
|
1357
1359
|
.. [#] If CompressorType not provided, defaults to "single stage" if SEER <= 15, else "two stage" if SEER <= 21, else "variable speed".
|
1358
1360
|
.. [#] If FanPowerWattsPerCFM not provided, defaults to using attached furnace W/cfm if available, else 0.5 W/cfm if SEER <= 13.5, else 0.375 W/cfm.
|
@@ -1373,7 +1375,7 @@ If a room air conditioner is specified, additional information is entered in ``C
|
|
1373
1375
|
================================================================== ====== ====== =========== ======== ========= ============================================
|
1374
1376
|
``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency
|
1375
1377
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1376
|
-
``SensibleHeatFraction`` double frac 0 - 1 No
|
1378
|
+
``SensibleHeatFraction`` double frac 0 - 1 No 0.65 Sensible heat fraction
|
1377
1379
|
``IntegratedHeatingSystemFuel`` string See [#]_ No <none> Fuel type of integrated heater
|
1378
1380
|
================================================================== ====== ====== =========== ======== ========= ============================================
|
1379
1381
|
|
@@ -1402,7 +1404,7 @@ If a PTAC is specified, additional information is entered in ``CoolingSystem``.
|
|
1402
1404
|
================================================================== ====== ====== =========== ======== ========= ==========================================
|
1403
1405
|
``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated efficiency
|
1404
1406
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1405
|
-
``SensibleHeatFraction`` double frac 0 - 1 No
|
1407
|
+
``SensibleHeatFraction`` double frac 0 - 1 No 0.65 Sensible heat fraction
|
1406
1408
|
``IntegratedHeatingSystemFuel`` string See [#]_ No <none> Fuel type of integrated heater
|
1407
1409
|
================================================================== ====== ====== =========== ======== ========= ==========================================
|
1408
1410
|
|
@@ -1446,7 +1448,7 @@ If a mini-split air conditioner is specified, additional information is entered
|
|
1446
1448
|
``DistributionSystem`` idref See [#]_ No ID of attached distribution system
|
1447
1449
|
``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_
|
1448
1450
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1449
|
-
``SensibleHeatFraction`` double frac 0 - 1 No
|
1451
|
+
``SensibleHeatFraction`` double frac 0 - 1 No 0.73 Sensible heat fraction
|
1450
1452
|
``extension/FanPowerWattsPerCFM`` double W/cfm >= 0 No See [#]_ Blower fan efficiency at maximum fan speed
|
1451
1453
|
``extension/AirflowDefectRatio`` double frac -0.9 - 9 No 0.0 Deviation between design/installed airflows [#]_
|
1452
1454
|
``extension/ChargeDefectRatio`` double frac -0.9 - 9 No 0.0 Deviation between design/installed charges [#]_
|
@@ -1588,7 +1590,7 @@ If an air-to-air heat pump is specified, additional information is entered in ``
|
|
1588
1590
|
``HeatingCapacity`` double Btu/hr >= 0 No autosized Heating output capacity (excluding any backup heating)
|
1589
1591
|
``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available
|
1590
1592
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1591
|
-
``CoolingSensibleHeatFraction`` double frac 0 - 1 No
|
1593
|
+
``CoolingSensibleHeatFraction`` double frac 0 - 1 No See [#]_ Sensible heat fraction
|
1592
1594
|
``FractionHeatLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of heating load served
|
1593
1595
|
``FractionCoolLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of cooling load served
|
1594
1596
|
``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_
|
@@ -1601,6 +1603,7 @@ If an air-to-air heat pump is specified, additional information is entered in ``
|
|
1601
1603
|
.. [#] HVACDistribution type must be AirDistribution (type: "regular velocity") or DSE.
|
1602
1604
|
.. [#] CompressorType choices are "single stage", "two stage", or "variable speed".
|
1603
1605
|
.. [#] If CompressorType not provided, defaults to "single stage" if SEER <= 15, else "two stage" if SEER <= 21, else "variable speed".
|
1606
|
+
.. [#] If not provided, defaults to 0.73 for single/two stage and 0.78 for variable speed.
|
1604
1607
|
.. [#] The sum of all ``FractionHeatLoadServed`` (across all HVAC systems) must be less than or equal to 1.
|
1605
1608
|
.. [#] The sum of all ``FractionCoolLoadServed`` (across all HVAC systems) must be less than or equal to 1.
|
1606
1609
|
.. [#] If SEER2 provided, converted to SEER using ANSI/RESNET/ICC 301-2022 Addendum C, where SEER = SEER2 / 0.95 (assumed to be a split system).
|
@@ -1624,7 +1627,7 @@ If a mini-split heat pump is specified, additional information is entered in ``H
|
|
1624
1627
|
``HeatingCapacity`` double Btu/hr >= 0 No autosized Heating output capacity (excluding any backup heating)
|
1625
1628
|
``HeatingCapacity17F`` double Btu/hr >= 0, <= HeatingCapacity No Heating output capacity at 17F, if available
|
1626
1629
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1627
|
-
``CoolingSensibleHeatFraction`` double frac 0 - 1 No
|
1630
|
+
``CoolingSensibleHeatFraction`` double frac 0 - 1 No 0.73 Sensible heat fraction
|
1628
1631
|
``FractionHeatLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of heating load served
|
1629
1632
|
``FractionCoolLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of cooling load served
|
1630
1633
|
``AnnualCoolingEfficiency[Units="SEER" or Units="SEER2"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency [#]_
|
@@ -1663,7 +1666,7 @@ If a packaged terminal heat pump is specified, additional information is entered
|
|
1663
1666
|
=============================================================== ======== ====== =========== ======== ========= ==============================================
|
1664
1667
|
``HeatingCapacity`` double Btu/hr >= 0 No autosized Heating output capacity (excluding any backup heating)
|
1665
1668
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1666
|
-
``CoolingSensibleHeatFraction`` double frac 0 - 1 No
|
1669
|
+
``CoolingSensibleHeatFraction`` double frac 0 - 1 No 0.65 Sensible heat fraction
|
1667
1670
|
``FractionHeatLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of heating load served
|
1668
1671
|
``FractionCoolLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of cooling load served
|
1669
1672
|
``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency
|
@@ -1685,7 +1688,7 @@ If a room air conditioner with reverse cycle is specified, additional informatio
|
|
1685
1688
|
=============================================================== ======== ====== =========== ======== ========= ==============================================
|
1686
1689
|
``HeatingCapacity`` double Btu/hr >= 0 No autosized Heating output capacity (excluding any backup heating)
|
1687
1690
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1688
|
-
``CoolingSensibleHeatFraction`` double frac 0 - 1 No
|
1691
|
+
``CoolingSensibleHeatFraction`` double frac 0 - 1 No 0.65 Sensible heat fraction
|
1689
1692
|
``FractionHeatLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of heating load served
|
1690
1693
|
``FractionCoolLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of cooling load served
|
1691
1694
|
``AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency
|
@@ -1707,7 +1710,7 @@ If a ground-to-air heat pump is specified, additional information is entered in
|
|
1707
1710
|
``DistributionSystem`` idref See [#]_ Yes ID of attached distribution system
|
1708
1711
|
``HeatingCapacity`` double Btu/hr >= 0 No autosized Heating output capacity (excluding any backup heating)
|
1709
1712
|
``CoolingCapacity`` double Btu/hr >= 0 No autosized Cooling output capacity
|
1710
|
-
``CoolingSensibleHeatFraction`` double frac 0 - 1 No
|
1713
|
+
``CoolingSensibleHeatFraction`` double frac 0 - 1 No 0.73 Sensible heat fraction
|
1711
1714
|
``FractionHeatLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of heating load served
|
1712
1715
|
``FractionCoolLoadServed`` double frac 0 - 1 [#]_ Yes Fraction of cooling load served
|
1713
1716
|
``AnnualCoolingEfficiency[Units="EER"]/Value`` double Btu/Wh > 0 Yes Rated cooling efficiency
|
@@ -2568,7 +2571,7 @@ If not entered, the simulation will not include batteries.
|
|
2568
2571
|
Element Type Units Constraints Required Default Notes
|
2569
2572
|
==================================================== ======= ========= ======================= ======== ======== ============================================
|
2570
2573
|
``SystemIdentifier`` id Yes Unique identifier
|
2571
|
-
``Location`` string See [#]_ No
|
2574
|
+
``Location`` string See [#]_ No See [#]_ Location
|
2572
2575
|
``BatteryType`` string See [#]_ Yes Battery type
|
2573
2576
|
``NominalCapacity[Units="kWh" or Units="Ah"]/Value`` double kWh or Ah >= 0 No See [#]_ Nominal (total) capacity
|
2574
2577
|
``UsableCapacity[Units="kWh" or Units="Ah"]/Value`` double kWh or Ah >= 0, < NominalCapacity No See [#]_ Usable capacity
|
@@ -2578,6 +2581,7 @@ If not entered, the simulation will not include batteries.
|
|
2578
2581
|
==================================================== ======= ========= ======================= ======== ======== ============================================
|
2579
2582
|
|
2580
2583
|
.. [#] Location choices are "living space", "basement - conditioned", "basement - unconditioned", "crawlspace - vented", "crawlspace - unvented", "crawlspace - conditioned", "attic - vented", "attic - unvented", "garage", or "outside".
|
2584
|
+
.. [#] If Location not provided, defaults to "garage" if a garage is present, otherwise "outside".
|
2581
2585
|
.. [#] BatteryType only choice is "Li-ion".
|
2582
2586
|
.. [#] If NominalCapacity not provided, defaults to UsableCapacity / 0.9 if UsableCapacity provided, else (RatedPowerOutput / 1000) / 0.5 if RatedPowerOutput provided, else 10 kWh.
|
2583
2587
|
.. [#] If UsableCapacity not provided, defaults to 0.9 * NominalCapacity.
|
@@ -88,8 +88,8 @@ Annual energy consumption outputs are listed below.
|
|
88
88
|
==================================== ===========================
|
89
89
|
Type Notes
|
90
90
|
==================================== ===========================
|
91
|
-
Energy Use: Total (MBtu)
|
92
|
-
Energy Use: Net (MBtu) Subtracts any power produced by PV
|
91
|
+
Energy Use: Total (MBtu) Includes any battery charging/discharging
|
92
|
+
Energy Use: Net (MBtu) Subtracts any power produced by PV or generators.
|
93
93
|
==================================== ===========================
|
94
94
|
|
95
95
|
Annual Energy Consumption by Fuel Use
|
@@ -100,8 +100,8 @@ Fuel uses are listed below.
|
|
100
100
|
==================================== ===========================
|
101
101
|
Type Notes
|
102
102
|
==================================== ===========================
|
103
|
-
Fuel Use: Electricity: Total (MBtu)
|
104
|
-
Fuel Use: Electricity: Net (MBtu) Subtracts any power produced by PV
|
103
|
+
Fuel Use: Electricity: Total (MBtu) Includes any battery charging/discharging
|
104
|
+
Fuel Use: Electricity: Net (MBtu) Subtracts any power produced by PV or generators.
|
105
105
|
Fuel Use: Natural Gas: Total (MBtu)
|
106
106
|
Fuel Use: Fuel Oil: Total (MBtu) Includes "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "kerosene", and "diesel"
|
107
107
|
Fuel Use: Propane: Total (MBtu)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
{
|
2
|
+
"run_directory": "run",
|
3
|
+
"measure_paths": [
|
4
|
+
".."
|
5
|
+
],
|
6
|
+
"steps": [
|
7
|
+
{
|
8
|
+
"arguments": {
|
9
|
+
"hpxml_path": "../../sample_files/base.xml",
|
10
|
+
"schedules_type": "stochastic",
|
11
|
+
"output_csv_path": "stochastic.csv",
|
12
|
+
"hpxml_output_path": "../built-stochastic-schedules.xml",
|
13
|
+
"schedules_column_names": "cooking_range, dishwasher, hot_water_dishwasher, clothes_washer, hot_water_clothes_washer, clothes_dryer, hot_water_fixtures"
|
14
|
+
},
|
15
|
+
"measure_dir_name": "BuildResidentialScheduleFile"
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"arguments": {
|
19
|
+
"hpxml_path": "../built-stochastic-schedules.xml",
|
20
|
+
"output_dir": "..",
|
21
|
+
"debug": false,
|
22
|
+
"add_component_loads": false,
|
23
|
+
"skip_validation": false
|
24
|
+
},
|
25
|
+
"measure_dir_name": "HPXMLtoOpenStudio"
|
26
|
+
},
|
27
|
+
{
|
28
|
+
"arguments": {
|
29
|
+
"output_format": "csv",
|
30
|
+
"timeseries_frequency": "none",
|
31
|
+
"include_timeseries_total_consumptions": false,
|
32
|
+
"include_timeseries_fuel_consumptions": false,
|
33
|
+
"include_timeseries_end_use_consumptions": false,
|
34
|
+
"include_timeseries_emissions": false,
|
35
|
+
"include_timeseries_emission_fuels": false,
|
36
|
+
"include_timeseries_emission_end_uses": false,
|
37
|
+
"include_timeseries_hot_water_uses": false,
|
38
|
+
"include_timeseries_total_loads": false,
|
39
|
+
"include_timeseries_component_loads": false,
|
40
|
+
"include_timeseries_unmet_hours": false,
|
41
|
+
"include_timeseries_zone_temperatures": false,
|
42
|
+
"include_timeseries_airflows": false,
|
43
|
+
"include_timeseries_weather": false,
|
44
|
+
"timeseries_timestamp_convention": "start",
|
45
|
+
"add_timeseries_dst_column": false,
|
46
|
+
"add_timeseries_utc_column": false,
|
47
|
+
"user_output_variables": "",
|
48
|
+
"generate_eri_outputs": false
|
49
|
+
},
|
50
|
+
"measure_dir_name": "ReportSimulationOutput"
|
51
|
+
},
|
52
|
+
{
|
53
|
+
"arguments": {
|
54
|
+
"output_format": "csv"
|
55
|
+
},
|
56
|
+
"measure_dir_name": "ReportUtilityBills"
|
57
|
+
}
|
58
|
+
],
|
59
|
+
"run_options": {
|
60
|
+
"fast": true,
|
61
|
+
"skip_expand_objects": true,
|
62
|
+
"skip_energyplus_preprocess": true
|
63
|
+
}
|
64
|
+
}
|
@@ -9,13 +9,13 @@
|
|
9
9
|
"hpxml_path": "../../sample_files/base.xml",
|
10
10
|
"schedules_type": "stochastic",
|
11
11
|
"output_csv_path": "stochastic.csv",
|
12
|
-
"hpxml_output_path": "../
|
12
|
+
"hpxml_output_path": "../built-stochastic-schedules.xml"
|
13
13
|
},
|
14
14
|
"measure_dir_name": "BuildResidentialScheduleFile"
|
15
15
|
},
|
16
16
|
{
|
17
17
|
"arguments": {
|
18
|
-
"hpxml_path": "../
|
18
|
+
"hpxml_path": "../built-stochastic-schedules.xml",
|
19
19
|
"output_dir": "..",
|
20
20
|
"debug": false,
|
21
21
|
"add_component_loads": false,
|