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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/nightly_build.yml +60 -0
  3. data/CHANGELOG.md +12 -0
  4. data/CMakeLists.txt +8 -8
  5. data/FindOpenStudioSDK.cmake +10 -10
  6. data/LICENSE.md +1 -1
  7. data/README.md +25 -23
  8. data/Rakefile +1 -1
  9. data/example_files/Gemfile +2 -0
  10. data/example_files/mappers/Baseline.rb +155 -155
  11. data/example_files/mappers/ClassProject.rb +4 -4
  12. data/example_files/mappers/CreateBar.rb +1 -1
  13. data/example_files/mappers/EvCharging.rb +1 -1
  14. data/example_files/mappers/FlexibleHotWater.rb +1 -1
  15. data/example_files/mappers/Floorspace.rb +1 -1
  16. data/example_files/mappers/HighEfficiency.rb +1 -1
  17. data/example_files/mappers/HighEfficiencyCreateBar.rb +1 -1
  18. data/example_files/mappers/HighEfficiencyFloorspace.rb +1 -1
  19. data/example_files/mappers/PeakHoursMelsShedding.rb +1 -1
  20. data/example_files/mappers/PeakHoursThermostatAdjust.rb +1 -1
  21. data/example_files/mappers/ThermalStorage.rb +1 -1
  22. data/example_files/measures/BuildResidentialModel/measure.rb +3 -3
  23. data/example_files/measures/BuildResidentialModel/measure.xml +3 -3
  24. data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
  25. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +7 -0
  26. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +18 -10
  27. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +15 -0
  28. data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +53 -5
  29. data/example_files/resources/hpxml-measures/Changelog.md +39 -28
  30. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +27 -27
  31. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +9 -4
  32. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +5 -4
  33. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
  34. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +5 -1
  35. data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +28 -10
  36. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +6 -1
  37. data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +3 -3
  38. data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +2 -1
  39. data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +14 -10
  40. data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +4 -4
  41. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +64 -0
  42. data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +2 -2
  43. data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +12 -12
  44. data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +36 -110
  45. data/lib/uo_cli/version.rb +2 -2
  46. data/lib/uo_cli.rb +62 -67
  47. data/uo_cli.gemspec +3 -1
  48. metadata +32 -3
  49. 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>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>
@@ -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('charge')
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 * charge * (1 - #{battery.round_trip_efficiency})")
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
- return { location: HPXML::LocationOutside,
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.724
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.732
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.0' # Version of the OS-HPXML workflow
5
- OS_Version = '3.5.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
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
- if water_heating_system.energy_factor < 0.7
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, HPXML::BatteryLifetimeModelKandlerSmith, 0.9)
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, HPXML::BatteryLifetimeModelKandlerSmith, 0.9)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, HPXML::BatteryLifetimeModelNone, 0.925)
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, _lifetime_model, round_trip_efficiency)
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
- assert_equal(nil, hpxml.batteries[0].lifetime_model)
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 |_fuel_type, fuel|
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>16b781cb-81df-4d15-9a0f-a6ef3e7910d9</version_id>
7
- <version_modified>20221118T005334Z</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>BB6A623C</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
- | This workflow automatically generates and uses a CSV file with stochastic occupancy schedules before running the EnergyPlus simulation.
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 Sensible heat fraction
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 outside Location
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 (including any battery storage) or generators.
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 (including any battery storage) or generators.
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": "../base-stochastic-schedules.xml"
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": "../base-stochastic-schedules.xml",
18
+ "hpxml_path": "../built-stochastic-schedules.xml",
19
19
  "output_dir": "..",
20
20
  "debug": false,
21
21
  "add_component_loads": false,