urbanopt-cli 0.8.2 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +5 -6
- data/CHANGELOG.md +21 -0
- data/CMakeLists.txt +7 -7
- data/Gemfile +3 -1
- data/README.md +9 -0
- data/example_files/Gemfile +23 -16
- data/example_files/Gemfile.lock +177 -0
- data/example_files/base_workflow_res.osw +57 -14
- data/example_files/class_project_coincident.json +1322 -0
- data/example_files/class_project_diverse.json +1322 -0
- data/example_files/disco/config.json +42 -0
- data/example_files/disco/cost_database.xlsx +0 -0
- data/example_files/disco/technical_catalog.json +12126 -0
- data/example_files/mappers/Baseline.rb +10 -7
- data/example_files/mappers/ChilledWaterStorage.rb +98 -0
- data/example_files/mappers/ClassProject.rb +110 -0
- data/example_files/mappers/CreateBar.rb +1 -0
- data/example_files/mappers/HighEfficiency.rb +13 -11
- data/example_files/mappers/PeakHoursMelsShedding.rb +72 -0
- data/example_files/mappers/PeakHoursThermostatAdjust.rb +78 -0
- data/example_files/mappers/ThermalStorage.rb +1 -0
- data/example_files/mappers/base_workflow.osw +55 -14
- data/example_files/mappers/class_project_workflow.osw +328 -0
- data/example_files/mappers/createbar_workflow.osw +16 -16
- data/example_files/measures/BuildResidentialModel/measure.rb +7 -1
- data/example_files/measures/BuildResidentialModel/measure.xml +1313 -706
- data/example_files/opendss/electrical_database.json +1446 -1446
- data/example_files/python_deps/dependencies.json +5 -0
- data/example_files/python_deps/install_python.ps1 +96 -0
- data/example_files/python_deps/install_python.sh +120 -0
- data/example_files/residential/clothes_dryer.tsv +11 -11
- data/example_files/residential/clothes_washer.tsv +3 -3
- data/example_files/residential/dishwasher.tsv +3 -3
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +0 -1
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +8 -21
- data/example_files/resources/hpxml-measures/.gitignore +2 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +1272 -1094
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +978 -659
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +52 -74
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +77 -140
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +30 -27
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +32 -13
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +55 -51
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +89 -16
- data/example_files/resources/hpxml-measures/Changelog.md +65 -0
- data/example_files/resources/hpxml-measures/Gemfile +2 -4
- data/example_files/resources/hpxml-measures/Gemfile.lock +2 -13
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +276 -300
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +221 -215
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +215 -170
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +108 -16
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +24 -44
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +564 -197
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/cambium/README.md +8 -8
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +7 -55
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +24 -19
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +541 -211
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +300 -172
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +0 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +230 -141
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +145 -137
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +191 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/iso-schematron.xsd +391 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +194 -198
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +140 -145
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +11 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +33 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/materials.rb +4 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +17 -9
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -12
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +39 -17
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/battery.csv +8761 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +114 -57
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/utility_bills.rb +148 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +85 -127
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +26 -32
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +2 -14
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +67 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +117 -56
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_battery.rb +141 -14
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +453 -344
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +124 -20
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +28 -32
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +172 -79
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +54 -8
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +4 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +7 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +6 -9
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +8 -8
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +213 -95
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +1 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +76 -0
- data/example_files/resources/hpxml-measures/README.md +2 -3
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +585 -287
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +304 -352
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +404 -279
- data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +222 -501
- data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +137 -200
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Annual Charge.json +649 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate Min Monthly Charge.json +649 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Flat Rate.json +647 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Annual Charge.json +8776 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate Min Monthly Charge.json +8776 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Real-Time Pricing Rate.json +8774 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Annual Charge.json +659 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate Min Monthly Charge.json +659 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Rate.json +657 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Annual Charge.json +670 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate Min Monthly Charge.json +670 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Tiered Time-of-Use Rate.json +668 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Annual Charge.json +655 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate Min Monthly Charge.json +655 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/Sample Time-of-Use Rate.json +653 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/detailed_rates/openei_rates.zip +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/Average_retail_price_of_electricity.csv +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/HouseholdConsumption.csv +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/NG_PRI_SUM_A_EPG0_PRS_DMCF_A.csv +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPD2F_PRS_DPGAL_W.csv +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/PET_PRI_WFR_A_EPLLPA_PRS_DPGAL_W.csv +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/{Data/UtilityRates → simple_rates}/README.md +0 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/resources/util.rb +506 -25
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Contains Demand Charges.json +1312 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Fixed Charge Units.json +657 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Invalid Min Charge Units.json +659 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/JacksonElectricMemberCorp-ResidentialSeniorCitizenLowIncomeAssistance.json +681 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/Missing Required Fields.json +54 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/data.csv +8761 -0
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +1006 -235
- data/example_files/resources/hpxml-measures/docs/source/conf.py +1 -1
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +0 -1
- data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +461 -261
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +146 -152
- data/example_files/resources/hpxml-measures/tasks.rb +616 -802
- data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +19 -11
- data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +12 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +12 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +19 -11
- data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +12 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +28 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +28 -17
- data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +28 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +19 -11
- data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +13 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +12 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +31 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +21 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +37 -22
- data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +24 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +33 -21
- data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +28 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +28 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +30 -17
- data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +10 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +22 -11
- data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +12 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +18 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +25 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +26 -17
- data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +19 -11
- data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +25 -16
- data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +35 -21
- data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +28 -17
- data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +35 -21
- data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +20 -12
- data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +20 -13
- data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +12 -9
- data/example_files/resources/hpxml-measures/workflow/real_homes/house048.xml +25 -14
- data/example_files/resources/hpxml-measures/workflow/real_homes/house049.xml +10 -7
- data/example_files/resources/hpxml-measures/workflow/real_homes/house050.xml +20 -11
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +91 -88
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +546 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +546 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +555 -544
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +7 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +17 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +7 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +600 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +598 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +606 -593
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-calctype-operational.xml +480 -471
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +464 -457
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +496 -487
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +466 -459
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +518 -509
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +513 -504
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +445 -438
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +476 -467
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +443 -436
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +446 -439
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +445 -438
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +476 -467
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +446 -439
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +494 -485
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +489 -480
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +499 -490
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +491 -482
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +510 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +495 -486
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +709 -695
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +528 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +512 -503
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +504 -495
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +497 -488
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +490 -481
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +487 -478
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-2stories.xml +639 -628
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached-atticroof-cathedral.xml +587 -580
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +639 -628
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-defaults.xml +539 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon.xml +644 -633
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational-misc-loads-large-uncommon2.xml +644 -633
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-calctype-operational.xml +575 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +585 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +536 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +20 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +584 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +584 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +585 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +586 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +585 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +28 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +20 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +607 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +550 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +589 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +619 -608
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +620 -609
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +618 -607
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +537 -526
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +90 -43
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2507 -2460
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +595 -584
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +19 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +584 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +594 -583
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +597 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +598 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +671 -656
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-foundation-conditioned-basement-wall-interior-insulation.xml → base-foundation-conditioned-basement-wall-insulation.xml} +585 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +35 -16
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml +586 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +583 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +600 -589
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +599 -588
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +629 -616
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +573 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +579 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +582 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +598 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +628 -615
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +535 -526
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +589 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +536 -527
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +565 -554
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +565 -554
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +526 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +573 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +529 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +565 -554
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +565 -554
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +578 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +575 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +551 -542
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +532 -530
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +525 -516
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +541 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +541 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +541 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +525 -516
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +533 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +542 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +542 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +542 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +529 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +529 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +580 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +611 -598
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +589 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +17 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +566 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +566 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +566 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +574 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +587 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +587 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +587 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +591 -580
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +591 -580
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +591 -580
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +570 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +586 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +570 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +586 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +552 -543
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +963 -938
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +33 -69
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ptac-with-heating.xml → base-hvac-ptac-with-heating-natural-gas.xml} +23 -21
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +526 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +541 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +526 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +526 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +16 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +542 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +594 -583
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +586 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +530 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +591 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +27 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +537 -526
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +537 -526
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +601 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +601 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +19 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +20 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +607 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +607 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +21 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +37 -19
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +590 -579
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +578 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +632 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +614 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +677 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +593 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +27 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +676 -665
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +616 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +615 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +598 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +586 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1700 -1677
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +622 -611
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +697 -682
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-pv-battery-lifetime-model.xml → base-pv-battery-round-trip-efficiency.xml} +20 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +624 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +622 -611
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +640 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +639 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +623 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +606 -595
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +582 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-smooth.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +584 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +583 -572
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +581 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +636 -625
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +27 -14
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +21 -10
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +21 -10
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-tank-heat-pump-detailed-operating-modes.xml → base-simcontrol-temperature-capacitance-multiplier.xml} +25 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +584 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +584 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-tank-heat-pump-detailed-setpoints.xml → base-simcontrol-timestep-30-mins.xml} +25 -14
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +18 -7
- data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +18 -13
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +12 -7
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +8 -24
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +366 -358
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +311 -303
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +311 -303
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +327 -319
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +327 -319
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +332 -324
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +332 -324
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +341 -333
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +341 -333
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +369 -361
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +383 -379
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +383 -379
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +538 -534
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +550 -546
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +444 -410
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +8 -8
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +444 -410
- data/example_files/resources/hpxml-measures/workflow/tests/compare.py +18 -4
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +133 -288
- data/example_files/scripts/convert_urbanopt_to_disco.py +130 -0
- data/example_files/scripts/default_control_changes.csv +8 -0
- data/example_files/scripts/default_voltage_regulators.csv +3 -0
- data/example_files/scripts/read_data.py +331 -0
- data/example_files/visualization/input_visualization_feature.html +172 -81
- data/example_files/visualization/input_visualization_scenario.html +178 -82
- data/example_files/xml_building/17/README.md +2 -2
- data/example_files/xml_building/17/unit 1.xml +40 -41
- data/example_files/xml_building/17/unit 2.xml +35 -36
- data/example_files/xml_building/17/unit 3.xml +35 -36
- data/example_files/xml_building/17/unit 4.xml +41 -42
- data/lib/uo_cli/version.rb +1 -1
- data/lib/uo_cli.rb +601 -101
- data/scripts/setup-env.bat +6 -7
- data/uo_cli.gemspec +6 -5
- metadata +121 -36
- data/example_files/residential/exhaust.tsv +0 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/hvac_equipment_efficiency.csv +0 -493
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/water_heater_efficiency.csv +0 -157
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/HPXMLvalidator.xml +0 -620
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/validator.rb +0 -107
- data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.rb +0 -450
- data/example_files/resources/hpxml-measures/ReportHPXMLOutput/measure.xml +0 -85
- data/example_files/resources/hpxml-measures/ReportHPXMLOutput/resources/constants.rb +0 -72
- data/example_files/resources/hpxml-measures/ReportHPXMLOutput/tests/hpxml_output_report_test.rb +0 -290
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_10kW.csv +0 -8761
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_1kW.csv +0 -8761
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/PV_None.csv +0 -8761
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +0 -410
data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb
CHANGED
@@ -6,8 +6,20 @@ require 'openstudio/measure/ShowRunnerOutput'
|
|
6
6
|
require 'fileutils'
|
7
7
|
require 'csv'
|
8
8
|
require_relative '../measure.rb'
|
9
|
+
require_relative '../../HPXMLtoOpenStudio/resources/xmlhelper.rb'
|
10
|
+
require_relative '../../HPXMLtoOpenStudio/resources/constants.rb'
|
11
|
+
require_relative '../../HPXMLtoOpenStudio/resources/version.rb'
|
12
|
+
require 'oga'
|
9
13
|
|
10
14
|
class ReportSimulationOutputTest < MiniTest::Test
|
15
|
+
def setup
|
16
|
+
@tmp_hpxml_path = File.join(File.dirname(__FILE__), 'tmp.xml')
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
File.delete(@tmp_hpxml_path) if File.exist? @tmp_hpxml_path
|
21
|
+
end
|
22
|
+
|
11
23
|
AnnualRows = [
|
12
24
|
'Energy Use: Total (MBtu)',
|
13
25
|
'Energy Use: Net (MBtu)',
|
@@ -52,6 +64,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
52
64
|
'End Use: Electricity: Hot Tub Pump (MBtu)',
|
53
65
|
'End Use: Electricity: PV (MBtu)',
|
54
66
|
'End Use: Electricity: Generator (MBtu)',
|
67
|
+
'End Use: Electricity: Battery (MBtu)',
|
55
68
|
'End Use: Natural Gas: Heating (MBtu)',
|
56
69
|
'End Use: Natural Gas: Heating Heat Pump Backup (MBtu)',
|
57
70
|
'End Use: Natural Gas: Hot Water (MBtu)',
|
@@ -124,8 +137,8 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
124
137
|
'Unmet Hours: Cooling (hr)',
|
125
138
|
'Peak Electricity: Winter Total (W)',
|
126
139
|
'Peak Electricity: Summer Total (W)',
|
127
|
-
'Peak Load: Heating: Delivered (kBtu)',
|
128
|
-
'Peak Load: Cooling: Delivered (kBtu)',
|
140
|
+
'Peak Load: Heating: Delivered (kBtu/hr)',
|
141
|
+
'Peak Load: Cooling: Delivered (kBtu/hr)',
|
129
142
|
'Component Load: Heating: Roofs (MBtu)',
|
130
143
|
'Component Load: Heating: Ceilings (MBtu)',
|
131
144
|
'Component Load: Heating: Walls (MBtu)',
|
@@ -164,6 +177,38 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
164
177
|
'Hot Water: Dishwasher (gal)',
|
165
178
|
'Hot Water: Fixtures (gal)',
|
166
179
|
'Hot Water: Distribution Waste (gal)',
|
180
|
+
'HVAC Capacity: Cooling (Btu/h)',
|
181
|
+
'HVAC Capacity: Heating (Btu/h)',
|
182
|
+
'HVAC Capacity: Heat Pump Backup (Btu/h)',
|
183
|
+
'HVAC Design Temperature: Heating (F)',
|
184
|
+
'HVAC Design Temperature: Cooling (F)',
|
185
|
+
'HVAC Design Load: Heating: Total (Btu/h)',
|
186
|
+
'HVAC Design Load: Heating: Ducts (Btu/h)',
|
187
|
+
'HVAC Design Load: Heating: Windows (Btu/h)',
|
188
|
+
'HVAC Design Load: Heating: Skylights (Btu/h)',
|
189
|
+
'HVAC Design Load: Heating: Doors (Btu/h)',
|
190
|
+
'HVAC Design Load: Heating: Walls (Btu/h)',
|
191
|
+
'HVAC Design Load: Heating: Roofs (Btu/h)',
|
192
|
+
'HVAC Design Load: Heating: Floors (Btu/h)',
|
193
|
+
'HVAC Design Load: Heating: Slabs (Btu/h)',
|
194
|
+
'HVAC Design Load: Heating: Ceilings (Btu/h)',
|
195
|
+
'HVAC Design Load: Heating: Infiltration/Ventilation (Btu/h)',
|
196
|
+
'HVAC Design Load: Cooling Sensible: Total (Btu/h)',
|
197
|
+
'HVAC Design Load: Cooling Sensible: Ducts (Btu/h)',
|
198
|
+
'HVAC Design Load: Cooling Sensible: Windows (Btu/h)',
|
199
|
+
'HVAC Design Load: Cooling Sensible: Skylights (Btu/h)',
|
200
|
+
'HVAC Design Load: Cooling Sensible: Doors (Btu/h)',
|
201
|
+
'HVAC Design Load: Cooling Sensible: Walls (Btu/h)',
|
202
|
+
'HVAC Design Load: Cooling Sensible: Roofs (Btu/h)',
|
203
|
+
'HVAC Design Load: Cooling Sensible: Floors (Btu/h)',
|
204
|
+
'HVAC Design Load: Cooling Sensible: Slabs (Btu/h)',
|
205
|
+
'HVAC Design Load: Cooling Sensible: Ceilings (Btu/h)',
|
206
|
+
'HVAC Design Load: Cooling Sensible: Infiltration/Ventilation (Btu/h)',
|
207
|
+
'HVAC Design Load: Cooling Sensible: Internal Gains (Btu/h)',
|
208
|
+
'HVAC Design Load: Cooling Latent: Total (Btu/h)',
|
209
|
+
'HVAC Design Load: Cooling Latent: Ducts (Btu/h)',
|
210
|
+
'HVAC Design Load: Cooling Latent: Infiltration/Ventilation (Btu/h)',
|
211
|
+
'HVAC Design Load: Cooling Latent: Internal Gains (Btu/h)'
|
167
212
|
]
|
168
213
|
|
169
214
|
BaseHPXMLTimeseriesColsEnergy = [
|
@@ -233,9 +278,16 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
233
278
|
'Component Load: Heating: Windows',
|
234
279
|
]
|
235
280
|
|
281
|
+
BaseHPXMLTimeseriesColsUnmetHours = [
|
282
|
+
'Unmet Hours: Heating',
|
283
|
+
'Unmet Hours: Cooling',
|
284
|
+
]
|
285
|
+
|
236
286
|
BaseHPXMLTimeseriesColsZoneTemps = [
|
237
287
|
'Temperature: Attic - Unvented',
|
238
288
|
'Temperature: Living Space',
|
289
|
+
'Temperature: Heating Setpoint',
|
290
|
+
'Temperature: Cooling Setpoint',
|
239
291
|
]
|
240
292
|
|
241
293
|
BaseHPXMLTimeseriesColsAirflows = [
|
@@ -261,13 +313,11 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
261
313
|
BaseHPXMLTimeseriesColsAdvancedOutputVariables = [
|
262
314
|
'Surface Construction Index: Door1',
|
263
315
|
'Surface Construction Index: Foundationwall1',
|
264
|
-
'Surface Construction Index:
|
265
|
-
'Surface Construction Index: Furniture Mass Living Space 1
|
266
|
-
'Surface Construction Index: Furniture Mass Living Space 1 Below Grade',
|
316
|
+
'Surface Construction Index: Floor1',
|
317
|
+
'Surface Construction Index: Furniture Mass Living Space 1',
|
267
318
|
'Surface Construction Index: Inferred Conditioned Ceiling',
|
268
319
|
'Surface Construction Index: Inferred Conditioned Floor',
|
269
|
-
'Surface Construction Index: Partition Wall Mass
|
270
|
-
'Surface Construction Index: Partition Wall Mass Below Grade',
|
320
|
+
'Surface Construction Index: Partition Wall Mass',
|
271
321
|
'Surface Construction Index: Rimjoist1:0',
|
272
322
|
'Surface Construction Index: Rimjoist1:90',
|
273
323
|
'Surface Construction Index: Rimjoist1:180',
|
@@ -303,176 +353,105 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
303
353
|
'Surface Construction Index: Window4'
|
304
354
|
]
|
305
355
|
|
306
|
-
ERIRows = [
|
307
|
-
'hpxml_heat_sys_ids',
|
308
|
-
'hpxml_cool_sys_ids',
|
309
|
-
'hpxml_dhw_sys_ids',
|
310
|
-
'hpxml_vent_preheat_sys_ids',
|
311
|
-
'hpxml_vent_precool_sys_ids',
|
312
|
-
'hpxml_eec_heats',
|
313
|
-
'hpxml_eec_cools',
|
314
|
-
'hpxml_eec_dhws',
|
315
|
-
'hpxml_eec_vent_preheats',
|
316
|
-
'hpxml_eec_vent_precools',
|
317
|
-
'hpxml_heat_fuels',
|
318
|
-
'hpxml_dwh_fuels',
|
319
|
-
'hpxml_vent_preheat_fuels',
|
320
|
-
'fuelElectricity',
|
321
|
-
'fuelNaturalGas',
|
322
|
-
'fuelFuelOil',
|
323
|
-
'fuelPropane',
|
324
|
-
'fuelWoodCord',
|
325
|
-
'fuelWoodPellets',
|
326
|
-
'fuelCoal',
|
327
|
-
'enduseElectricityHeating',
|
328
|
-
'enduseElectricityHeatingFansPumps',
|
329
|
-
'enduseElectricityCooling',
|
330
|
-
'enduseElectricityCoolingFansPumps',
|
331
|
-
'enduseElectricityHotWater',
|
332
|
-
'enduseElectricityHotWaterRecircPump',
|
333
|
-
'enduseElectricityHotWaterSolarThermalPump',
|
334
|
-
'enduseElectricityLightingInterior',
|
335
|
-
'enduseElectricityLightingGarage',
|
336
|
-
'enduseElectricityLightingExterior',
|
337
|
-
'enduseElectricityMechVent',
|
338
|
-
'enduseElectricityMechVentPreheating',
|
339
|
-
'enduseElectricityMechVentPrecooling',
|
340
|
-
'enduseElectricityWholeHouseFan',
|
341
|
-
'enduseElectricityRefrigerator',
|
342
|
-
'enduseElectricityDehumidifier',
|
343
|
-
'enduseElectricityDishwasher',
|
344
|
-
'enduseElectricityClothesWasher',
|
345
|
-
'enduseElectricityClothesDryer',
|
346
|
-
'enduseElectricityRangeOven',
|
347
|
-
'enduseElectricityCeilingFan',
|
348
|
-
'enduseElectricityTelevision',
|
349
|
-
'enduseElectricityPlugLoads',
|
350
|
-
'enduseElectricityPV',
|
351
|
-
'enduseElectricityGenerator',
|
352
|
-
'enduseNaturalGasHeating',
|
353
|
-
'enduseNaturalGasHotWater',
|
354
|
-
'enduseNaturalGasClothesDryer',
|
355
|
-
'enduseNaturalGasRangeOven',
|
356
|
-
'enduseNaturalGasMechVentPreheating',
|
357
|
-
'enduseNaturalGasGenerator',
|
358
|
-
'enduseFuelOilHeating',
|
359
|
-
'enduseFuelOilHotWater',
|
360
|
-
'enduseFuelOilClothesDryer',
|
361
|
-
'enduseFuelOilRangeOven',
|
362
|
-
'enduseFuelOilMechVentPreheating',
|
363
|
-
'enduseFuelOilGenerator',
|
364
|
-
'endusePropaneHeating',
|
365
|
-
'endusePropaneHotWater',
|
366
|
-
'endusePropaneClothesDryer',
|
367
|
-
'endusePropaneRangeOven',
|
368
|
-
'endusePropaneMechVentPreheating',
|
369
|
-
'endusePropaneGenerator',
|
370
|
-
'enduseWoodCordHeating',
|
371
|
-
'enduseWoodCordHotWater',
|
372
|
-
'enduseWoodCordClothesDryer',
|
373
|
-
'enduseWoodCordRangeOven',
|
374
|
-
'enduseWoodCordMechVentPreheating',
|
375
|
-
'enduseWoodCordGenerator',
|
376
|
-
'enduseWoodPelletsHeating',
|
377
|
-
'enduseWoodPelletsHotWater',
|
378
|
-
'enduseWoodPelletsClothesDryer',
|
379
|
-
'enduseWoodPelletsRangeOven',
|
380
|
-
'enduseWoodPelletsMechVentPreheating',
|
381
|
-
'enduseWoodPelletsGenerator',
|
382
|
-
'enduseCoalHeating',
|
383
|
-
'enduseCoalHotWater',
|
384
|
-
'enduseCoalClothesDryer',
|
385
|
-
'enduseCoalRangeOven',
|
386
|
-
'enduseCoalMechVentPreheating',
|
387
|
-
'enduseCoalGenerator',
|
388
|
-
'loadHeatingDelivered',
|
389
|
-
'loadCoolingDelivered',
|
390
|
-
'loadHotWaterDelivered',
|
391
|
-
'co2eCambiumHourlyMidCaseLRMERRMPATotal',
|
392
|
-
'co2eCambiumHourlyMidCaseLRMERRMPAElectricity',
|
393
|
-
'co2eCambiumHourlyMidCaseLRMERRMPANaturalGas',
|
394
|
-
'co2eCambiumHourlyMidCaseLRMERRMPAFuelOil',
|
395
|
-
'co2eCambiumHourlyMidCaseLRMERRMPAPropane',
|
396
|
-
'co2eCambiumHourlyMidCaseLRMERRMPAWoodCord',
|
397
|
-
'co2eCambiumHourlyMidCaseLRMERRMPAWoodPellets',
|
398
|
-
'co2eCambiumHourlyMidCaseLRMERRMPACoal',
|
399
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPATotal',
|
400
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPAElectricity',
|
401
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPANaturalGas',
|
402
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPAFuelOil',
|
403
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPAPropane',
|
404
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPAWoodCord',
|
405
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPAWoodPellets',
|
406
|
-
'co2eCambiumHourlyLowRECostsLRMERRMPACoal',
|
407
|
-
'co2eCambiumAnnualMidCaseAERNationalTotal',
|
408
|
-
'co2eCambiumAnnualMidCaseAERNationalElectricity',
|
409
|
-
'co2eCambiumAnnualMidCaseAERNationalNaturalGas',
|
410
|
-
'co2eCambiumAnnualMidCaseAERNationalFuelOil',
|
411
|
-
'co2eCambiumAnnualMidCaseAERNationalPropane',
|
412
|
-
'co2eCambiumAnnualMidCaseAERNationalWoodCord',
|
413
|
-
'co2eCambiumAnnualMidCaseAERNationalWoodPellets',
|
414
|
-
'co2eCambiumAnnualMidCaseAERNationalCoal',
|
415
|
-
'so2eGRIDRMPATotal',
|
416
|
-
'so2eGRIDRMPAElectricity',
|
417
|
-
'so2eGRIDRMPANaturalGas',
|
418
|
-
'so2eGRIDRMPAFuelOil',
|
419
|
-
'so2eGRIDRMPAPropane',
|
420
|
-
'so2eGRIDRMPAWoodCord',
|
421
|
-
'so2eGRIDRMPAWoodPellets',
|
422
|
-
'so2eGRIDRMPACoal',
|
423
|
-
'noxeGRIDRMPATotal',
|
424
|
-
'noxeGRIDRMPAElectricity',
|
425
|
-
'noxeGRIDRMPANaturalGas',
|
426
|
-
'noxeGRIDRMPAFuelOil',
|
427
|
-
'noxeGRIDRMPAPropane',
|
428
|
-
'noxeGRIDRMPAWoodCord',
|
429
|
-
'noxeGRIDRMPAWoodPellets',
|
430
|
-
'noxeGRIDRMPACoal',
|
431
|
-
'hpxml_cfa',
|
432
|
-
'hpxml_nbr',
|
433
|
-
'hpxml_nst',
|
434
|
-
'hpxml_residential_facility_type',
|
435
|
-
]
|
436
|
-
|
437
356
|
def all_base_hpxml_timeseries_cols
|
438
357
|
return (BaseHPXMLTimeseriesColsEnergy +
|
439
358
|
BaseHPXMLTimeseriesColsFuels +
|
440
359
|
BaseHPXMLTimeseriesColsEndUses +
|
441
360
|
BaseHPXMLTimeseriesColsWaterUses +
|
442
361
|
BaseHPXMLTimeseriesColsTotalLoads +
|
362
|
+
BaseHPXMLTimeseriesColsUnmetHours +
|
443
363
|
BaseHPXMLTimeseriesColsZoneTemps +
|
444
364
|
BaseHPXMLTimeseriesColsAirflows +
|
445
365
|
BaseHPXMLTimeseriesColsWeather)
|
446
366
|
end
|
447
367
|
|
368
|
+
def emission_scenarios
|
369
|
+
return ['CO2e: Cambium Hourly MidCase LRMER RMPA',
|
370
|
+
'CO2e: Cambium Hourly LowRECosts LRMER RMPA',
|
371
|
+
'CO2e: Cambium Annual MidCase AER National',
|
372
|
+
'SO2: eGRID RMPA',
|
373
|
+
'NOx: eGRID RMPA']
|
374
|
+
end
|
375
|
+
|
376
|
+
def emission_annual_cols
|
377
|
+
cols = []
|
378
|
+
emission_scenarios.each do |scenario|
|
379
|
+
cols += ["Emissions: #{scenario}: Total (lb)",
|
380
|
+
"Emissions: #{scenario}: Electricity: Total (lb)",
|
381
|
+
"Emissions: #{scenario}: Electricity: Heating Fans/Pumps (lb)",
|
382
|
+
"Emissions: #{scenario}: Electricity: Cooling (lb)",
|
383
|
+
"Emissions: #{scenario}: Electricity: Cooling Fans/Pumps (lb)",
|
384
|
+
"Emissions: #{scenario}: Electricity: Hot Water (lb)",
|
385
|
+
"Emissions: #{scenario}: Electricity: Lighting Interior (lb)",
|
386
|
+
"Emissions: #{scenario}: Electricity: Lighting Exterior (lb)",
|
387
|
+
"Emissions: #{scenario}: Electricity: Refrigerator (lb)",
|
388
|
+
"Emissions: #{scenario}: Electricity: Dishwasher (lb)",
|
389
|
+
"Emissions: #{scenario}: Electricity: Clothes Washer (lb)",
|
390
|
+
"Emissions: #{scenario}: Electricity: Clothes Dryer (lb)",
|
391
|
+
"Emissions: #{scenario}: Electricity: Range/Oven (lb)",
|
392
|
+
"Emissions: #{scenario}: Electricity: Television (lb)",
|
393
|
+
"Emissions: #{scenario}: Electricity: Plug Loads (lb)",
|
394
|
+
"Emissions: #{scenario}: Electricity: PV (lb)",
|
395
|
+
"Emissions: #{scenario}: Electricity: Battery (lb)",
|
396
|
+
"Emissions: #{scenario}: Natural Gas: Total (lb)",
|
397
|
+
"Emissions: #{scenario}: Natural Gas: Heating (lb)"]
|
398
|
+
end
|
399
|
+
return cols
|
400
|
+
end
|
401
|
+
|
448
402
|
def emissions_timeseries_cols
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
403
|
+
cols = []
|
404
|
+
emission_scenarios.each do |scenario|
|
405
|
+
cols += ["Emissions: #{scenario}: Total"]
|
406
|
+
end
|
407
|
+
return cols
|
408
|
+
end
|
409
|
+
|
410
|
+
def emission_fuels_timeseries_cols
|
411
|
+
cols = []
|
412
|
+
emission_scenarios.each do |scenario|
|
413
|
+
cols += ["Emissions: #{scenario}: Electricity: Total",
|
414
|
+
"Emissions: #{scenario}: Natural Gas: Total"]
|
415
|
+
end
|
416
|
+
return cols
|
417
|
+
end
|
418
|
+
|
419
|
+
def emission_end_uses_timeseries_cols
|
420
|
+
cols = []
|
421
|
+
emission_scenarios.each do |scenario|
|
422
|
+
cols += ["Emissions: #{scenario}: Electricity: Heating Fans/Pumps",
|
423
|
+
"Emissions: #{scenario}: Electricity: Cooling",
|
424
|
+
"Emissions: #{scenario}: Electricity: Cooling Fans/Pumps",
|
425
|
+
"Emissions: #{scenario}: Electricity: Hot Water",
|
426
|
+
"Emissions: #{scenario}: Electricity: Lighting Interior",
|
427
|
+
"Emissions: #{scenario}: Electricity: Lighting Exterior",
|
428
|
+
"Emissions: #{scenario}: Electricity: Refrigerator",
|
429
|
+
"Emissions: #{scenario}: Electricity: Dishwasher",
|
430
|
+
"Emissions: #{scenario}: Electricity: Clothes Washer",
|
431
|
+
"Emissions: #{scenario}: Electricity: Clothes Dryer",
|
432
|
+
"Emissions: #{scenario}: Electricity: Range/Oven",
|
433
|
+
"Emissions: #{scenario}: Electricity: Television",
|
434
|
+
"Emissions: #{scenario}: Electricity: Plug Loads",
|
435
|
+
"Emissions: #{scenario}: Electricity: PV",
|
436
|
+
"Emissions: #{scenario}: Electricity: Battery",
|
437
|
+
"Emissions: #{scenario}: Natural Gas: Heating"]
|
438
|
+
end
|
439
|
+
return cols
|
464
440
|
end
|
465
441
|
|
466
442
|
def test_annual_only
|
467
|
-
args_hash = { 'hpxml_path' => '
|
443
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
468
444
|
'add_component_loads' => true,
|
469
445
|
'timeseries_frequency' => 'hourly',
|
470
446
|
'include_timeseries_total_consumptions' => false,
|
471
447
|
'include_timeseries_fuel_consumptions' => false,
|
472
448
|
'include_timeseries_end_use_consumptions' => false,
|
473
449
|
'include_timeseries_emissions' => false,
|
450
|
+
'include_timeseries_emission_fuels' => false,
|
451
|
+
'include_timeseries_emission_end_uses' => false,
|
474
452
|
'include_timeseries_hot_water_uses' => false,
|
475
453
|
'include_timeseries_total_loads' => false,
|
454
|
+
'include_timeseries_unmet_hours' => false,
|
476
455
|
'include_timeseries_component_loads' => false,
|
477
456
|
'include_timeseries_zone_temperatures' => false,
|
478
457
|
'include_timeseries_airflows' => false,
|
@@ -481,20 +460,24 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
481
460
|
assert(File.exist?(annual_csv))
|
482
461
|
assert(!File.exist?(timeseries_csv))
|
483
462
|
expected_annual_rows = AnnualRows
|
484
|
-
actual_annual_rows =
|
485
|
-
assert_equal(expected_annual_rows.sort, actual_annual_rows.sort)
|
463
|
+
actual_annual_rows = _get_actual_annual_rows(annual_csv)
|
464
|
+
assert_equal(expected_annual_rows.sort, actual_annual_rows.keys.sort)
|
465
|
+
_check_for_runner_registered_values(File.join(File.dirname(annual_csv), 'results.json'), actual_annual_rows)
|
486
466
|
end
|
487
467
|
|
488
468
|
def test_annual_only2
|
489
|
-
args_hash = { 'hpxml_path' => '
|
469
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
490
470
|
'add_component_loads' => true,
|
491
471
|
'timeseries_frequency' => 'none',
|
492
472
|
'include_timeseries_total_consumptions' => false,
|
493
473
|
'include_timeseries_fuel_consumptions' => true,
|
494
474
|
'include_timeseries_end_use_consumptions' => true,
|
495
475
|
'include_timeseries_emissions' => true,
|
476
|
+
'include_timeseries_emission_fuels' => true,
|
477
|
+
'include_timeseries_emission_end_uses' => true,
|
496
478
|
'include_timeseries_hot_water_uses' => true,
|
497
479
|
'include_timeseries_total_loads' => true,
|
480
|
+
'include_timeseries_unmet_hours' => true,
|
498
481
|
'include_timeseries_component_loads' => true,
|
499
482
|
'include_timeseries_zone_temperatures' => true,
|
500
483
|
'include_timeseries_airflows' => true,
|
@@ -502,13 +485,14 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
502
485
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
503
486
|
assert(File.exist?(annual_csv))
|
504
487
|
assert(!File.exist?(timeseries_csv))
|
505
|
-
expected_annual_rows = AnnualRows
|
506
|
-
actual_annual_rows =
|
507
|
-
assert_equal(expected_annual_rows.sort, actual_annual_rows.sort)
|
488
|
+
expected_annual_rows = AnnualRows + emission_annual_cols
|
489
|
+
actual_annual_rows = _get_actual_annual_rows(annual_csv)
|
490
|
+
assert_equal(expected_annual_rows.sort, actual_annual_rows.keys.sort)
|
491
|
+
_check_for_runner_registered_values(File.join(File.dirname(annual_csv), 'results.json'), actual_annual_rows)
|
508
492
|
end
|
509
493
|
|
510
494
|
def test_timeseries_hourly_total_energy
|
511
|
-
args_hash = { 'hpxml_path' => '
|
495
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
512
496
|
'timeseries_frequency' => 'hourly',
|
513
497
|
'include_timeseries_total_consumptions' => true }
|
514
498
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -525,7 +509,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
525
509
|
end
|
526
510
|
|
527
511
|
def test_timeseries_hourly_total_energy_pv
|
528
|
-
args_hash = { 'hpxml_path' => '
|
512
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-pv.xml'),
|
529
513
|
'timeseries_frequency' => 'hourly',
|
530
514
|
'include_timeseries_total_consumptions' => true }
|
531
515
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -543,7 +527,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
543
527
|
end
|
544
528
|
|
545
529
|
def test_timeseries_hourly_fuels
|
546
|
-
args_hash = { 'hpxml_path' => '
|
530
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
547
531
|
'timeseries_frequency' => 'hourly',
|
548
532
|
'include_timeseries_fuel_consumptions' => true }
|
549
533
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -560,7 +544,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
560
544
|
end
|
561
545
|
|
562
546
|
def test_timeseries_hourly_fuels_pv
|
563
|
-
args_hash = { 'hpxml_path' => '
|
547
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-pv.xml'),
|
564
548
|
'timeseries_frequency' => 'hourly',
|
565
549
|
'include_timeseries_fuel_consumptions' => true }
|
566
550
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -578,7 +562,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
578
562
|
end
|
579
563
|
|
580
564
|
def test_timeseries_hourly_emissions
|
581
|
-
args_hash = { 'hpxml_path' => '
|
565
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
582
566
|
'timeseries_frequency' => 'hourly',
|
583
567
|
'include_timeseries_emissions' => true }
|
584
568
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -594,8 +578,42 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
594
578
|
_check_for_nonzero_timeseries_value(timeseries_csv, emissions_timeseries_cols[0..2])
|
595
579
|
end
|
596
580
|
|
581
|
+
def test_timeseries_hourly_emission_end_uses
|
582
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
583
|
+
'timeseries_frequency' => 'hourly',
|
584
|
+
'include_timeseries_emission_end_uses' => true }
|
585
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
586
|
+
assert(File.exist?(annual_csv))
|
587
|
+
assert(File.exist?(timeseries_csv))
|
588
|
+
expected_timeseries_cols = ['Time'] + emission_end_uses_timeseries_cols
|
589
|
+
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
590
|
+
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
591
|
+
timeseries_rows = CSV.read(timeseries_csv)
|
592
|
+
assert_equal(8760, timeseries_rows.size - 2)
|
593
|
+
timeseries_cols = timeseries_rows.transpose
|
594
|
+
_check_for_constant_timeseries_step(timeseries_cols[0])
|
595
|
+
_check_for_nonzero_timeseries_value(timeseries_csv, emission_end_uses_timeseries_cols[0..2])
|
596
|
+
end
|
597
|
+
|
598
|
+
def test_timeseries_hourly_emission_fuels
|
599
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
600
|
+
'timeseries_frequency' => 'hourly',
|
601
|
+
'include_timeseries_emission_fuels' => true }
|
602
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
603
|
+
assert(File.exist?(annual_csv))
|
604
|
+
assert(File.exist?(timeseries_csv))
|
605
|
+
expected_timeseries_cols = ['Time'] + emission_fuels_timeseries_cols
|
606
|
+
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
607
|
+
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
608
|
+
timeseries_rows = CSV.read(timeseries_csv)
|
609
|
+
assert_equal(8760, timeseries_rows.size - 2)
|
610
|
+
timeseries_cols = timeseries_rows.transpose
|
611
|
+
_check_for_constant_timeseries_step(timeseries_cols[0])
|
612
|
+
_check_for_nonzero_timeseries_value(timeseries_csv, emission_fuels_timeseries_cols[0..2])
|
613
|
+
end
|
614
|
+
|
597
615
|
def test_timeseries_hourly_enduses
|
598
|
-
args_hash = { 'hpxml_path' => '
|
616
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
599
617
|
'timeseries_frequency' => 'hourly',
|
600
618
|
'include_timeseries_end_use_consumptions' => true }
|
601
619
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -612,7 +630,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
612
630
|
end
|
613
631
|
|
614
632
|
def test_timeseries_hourly_hotwateruses
|
615
|
-
args_hash = { 'hpxml_path' => '
|
633
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
616
634
|
'timeseries_frequency' => 'hourly',
|
617
635
|
'include_timeseries_hot_water_uses' => true }
|
618
636
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -629,7 +647,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
629
647
|
end
|
630
648
|
|
631
649
|
def test_timeseries_hourly_total_loads
|
632
|
-
args_hash = { 'hpxml_path' => '
|
650
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
633
651
|
'timeseries_frequency' => 'hourly',
|
634
652
|
'include_timeseries_total_loads' => true }
|
635
653
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -646,7 +664,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
646
664
|
end
|
647
665
|
|
648
666
|
def test_timeseries_hourly_component_loads
|
649
|
-
args_hash = { 'hpxml_path' => '
|
667
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
650
668
|
'add_component_loads' => true,
|
651
669
|
'timeseries_frequency' => 'hourly',
|
652
670
|
'include_timeseries_component_loads' => true }
|
@@ -663,8 +681,26 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
663
681
|
_check_for_nonzero_timeseries_value(timeseries_csv, ['Component Load: Heating: Internal Gains', 'Component Load: Cooling: Internal Gains'])
|
664
682
|
end
|
665
683
|
|
684
|
+
def test_timeseries_hourly_unmet_hours
|
685
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-hvac-undersized.xml'),
|
686
|
+
'add_component_loads' => true,
|
687
|
+
'timeseries_frequency' => 'hourly',
|
688
|
+
'include_timeseries_unmet_hours' => true }
|
689
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
690
|
+
assert(File.exist?(annual_csv))
|
691
|
+
assert(File.exist?(timeseries_csv))
|
692
|
+
expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsUnmetHours
|
693
|
+
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
694
|
+
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
695
|
+
timeseries_rows = CSV.read(timeseries_csv)
|
696
|
+
assert_equal(8760, timeseries_rows.size - 2)
|
697
|
+
timeseries_cols = timeseries_rows.transpose
|
698
|
+
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
699
|
+
_check_for_nonzero_timeseries_value(timeseries_csv, ['Unmet Hours: Heating', 'Unmet Hours: Cooling'])
|
700
|
+
end
|
701
|
+
|
666
702
|
def test_timeseries_hourly_zone_temperatures
|
667
|
-
args_hash = { 'hpxml_path' => '
|
703
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
668
704
|
'timeseries_frequency' => 'hourly',
|
669
705
|
'include_timeseries_zone_temperatures' => true }
|
670
706
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -680,8 +716,25 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
680
716
|
_check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps)
|
681
717
|
end
|
682
718
|
|
719
|
+
def test_timeseries_hourly_zone_temperatures_without_cooling
|
720
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-hvac-furnace-gas-only.xml'),
|
721
|
+
'timeseries_frequency' => 'hourly',
|
722
|
+
'include_timeseries_zone_temperatures' => true }
|
723
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
724
|
+
assert(File.exist?(annual_csv))
|
725
|
+
assert(File.exist?(timeseries_csv))
|
726
|
+
expected_timeseries_cols = ['Time'] + BaseHPXMLTimeseriesColsZoneTemps - ['Temperature: Cooling Setpoint']
|
727
|
+
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
728
|
+
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
729
|
+
timeseries_rows = CSV.read(timeseries_csv)
|
730
|
+
assert_equal(8760, timeseries_rows.size - 2)
|
731
|
+
timeseries_cols = timeseries_rows.transpose
|
732
|
+
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
733
|
+
_check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsZoneTemps - ['Temperature: Cooling Setpoint'])
|
734
|
+
end
|
735
|
+
|
683
736
|
def test_timeseries_hourly_zone_temperatures_mf_space
|
684
|
-
args_hash = { 'hpxml_path' => '
|
737
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml'),
|
685
738
|
'timeseries_frequency' => 'hourly',
|
686
739
|
'include_timeseries_zone_temperatures' => true }
|
687
740
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -705,7 +758,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
705
758
|
end
|
706
759
|
|
707
760
|
def test_timeseries_hourly_airflows_with_exhaust_mechvent
|
708
|
-
args_hash = { 'hpxml_path' => '
|
761
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-exhaust.xml'),
|
709
762
|
'timeseries_frequency' => 'hourly',
|
710
763
|
'include_timeseries_airflows' => true }
|
711
764
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -722,7 +775,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
722
775
|
end
|
723
776
|
|
724
777
|
def test_timeseries_hourly_airflows_with_whf
|
725
|
-
args_hash = { 'hpxml_path' => '
|
778
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-whole-house-fan.xml'),
|
726
779
|
'timeseries_frequency' => 'hourly',
|
727
780
|
'include_timeseries_airflows' => true }
|
728
781
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -741,7 +794,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
741
794
|
end
|
742
795
|
|
743
796
|
def test_timeseries_hourly_airflows_with_clothes_dryer_exhaust
|
744
|
-
args_hash = { 'hpxml_path' => '
|
797
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-appliances-gas.xml'),
|
745
798
|
'timeseries_frequency' => 'hourly',
|
746
799
|
'include_timeseries_airflows' => true }
|
747
800
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -758,7 +811,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
758
811
|
end
|
759
812
|
|
760
813
|
def test_timeseries_hourly_airflows_with_balanced_mechvent
|
761
|
-
args_hash = { 'hpxml_path' => '
|
814
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-balanced.xml'),
|
762
815
|
'timeseries_frequency' => 'hourly',
|
763
816
|
'include_timeseries_airflows' => true }
|
764
817
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -775,7 +828,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
775
828
|
end
|
776
829
|
|
777
830
|
def test_timeseries_hourly_airflows_with_cfis
|
778
|
-
args_hash = { 'hpxml_path' => '
|
831
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-mechvent-cfis.xml'),
|
779
832
|
'timeseries_frequency' => 'hourly',
|
780
833
|
'include_timeseries_airflows' => true }
|
781
834
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -792,7 +845,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
792
845
|
end
|
793
846
|
|
794
847
|
def test_timeseries_hourly_weather
|
795
|
-
args_hash = { 'hpxml_path' => '
|
848
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
796
849
|
'timeseries_frequency' => 'hourly',
|
797
850
|
'include_timeseries_weather' => true }
|
798
851
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -809,14 +862,17 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
809
862
|
end
|
810
863
|
|
811
864
|
def test_timeseries_hourly_ALL
|
812
|
-
args_hash = { 'hpxml_path' => '
|
865
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
813
866
|
'timeseries_frequency' => 'hourly',
|
814
867
|
'include_timeseries_total_consumptions' => true,
|
815
868
|
'include_timeseries_fuel_consumptions' => true,
|
816
869
|
'include_timeseries_end_use_consumptions' => true,
|
817
870
|
'include_timeseries_emissions' => true,
|
871
|
+
'include_timeseries_emission_fuels' => true,
|
872
|
+
'include_timeseries_emission_end_uses' => true,
|
818
873
|
'include_timeseries_hot_water_uses' => true,
|
819
874
|
'include_timeseries_total_loads' => true,
|
875
|
+
'include_timeseries_unmet_hours' => true,
|
820
876
|
'include_timeseries_component_loads' => true,
|
821
877
|
'include_timeseries_zone_temperatures' => true,
|
822
878
|
'include_timeseries_airflows' => true,
|
@@ -824,8 +880,12 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
824
880
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
825
881
|
assert(File.exist?(annual_csv))
|
826
882
|
assert(File.exist?(timeseries_csv))
|
827
|
-
expected_timeseries_cols = ['Time'] +
|
828
|
-
|
883
|
+
expected_timeseries_cols = ['Time'] +
|
884
|
+
all_base_hpxml_timeseries_cols +
|
885
|
+
emissions_timeseries_cols +
|
886
|
+
emission_fuels_timeseries_cols +
|
887
|
+
emission_end_uses_timeseries_cols +
|
888
|
+
['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
|
829
889
|
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
830
890
|
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
831
891
|
timeseries_rows = CSV.read(timeseries_csv)
|
@@ -837,14 +897,17 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
837
897
|
end
|
838
898
|
|
839
899
|
def test_timeseries_daily_ALL
|
840
|
-
args_hash = { 'hpxml_path' => '
|
900
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
841
901
|
'timeseries_frequency' => 'daily',
|
842
902
|
'include_timeseries_total_consumptions' => true,
|
843
903
|
'include_timeseries_fuel_consumptions' => true,
|
844
904
|
'include_timeseries_end_use_consumptions' => true,
|
845
905
|
'include_timeseries_emissions' => true,
|
906
|
+
'include_timeseries_emission_fuels' => true,
|
907
|
+
'include_timeseries_emission_end_uses' => true,
|
846
908
|
'include_timeseries_hot_water_uses' => true,
|
847
909
|
'include_timeseries_total_loads' => true,
|
910
|
+
'include_timeseries_unmet_hours' => true,
|
848
911
|
'include_timeseries_component_loads' => true,
|
849
912
|
'include_timeseries_zone_temperatures' => true,
|
850
913
|
'include_timeseries_airflows' => true,
|
@@ -852,8 +915,12 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
852
915
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
853
916
|
assert(File.exist?(annual_csv))
|
854
917
|
assert(File.exist?(timeseries_csv))
|
855
|
-
expected_timeseries_cols = ['Time'] +
|
856
|
-
|
918
|
+
expected_timeseries_cols = ['Time'] +
|
919
|
+
all_base_hpxml_timeseries_cols +
|
920
|
+
emissions_timeseries_cols +
|
921
|
+
emission_fuels_timeseries_cols +
|
922
|
+
emission_end_uses_timeseries_cols +
|
923
|
+
['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
|
857
924
|
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
858
925
|
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
859
926
|
timeseries_rows = CSV.read(timeseries_csv)
|
@@ -865,14 +932,17 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
865
932
|
end
|
866
933
|
|
867
934
|
def test_timeseries_monthly_ALL
|
868
|
-
args_hash = { 'hpxml_path' => '
|
935
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
869
936
|
'timeseries_frequency' => 'monthly',
|
870
937
|
'include_timeseries_total_consumptions' => true,
|
871
938
|
'include_timeseries_fuel_consumptions' => true,
|
872
939
|
'include_timeseries_end_use_consumptions' => true,
|
873
940
|
'include_timeseries_emissions' => true,
|
941
|
+
'include_timeseries_emission_fuels' => true,
|
942
|
+
'include_timeseries_emission_end_uses' => true,
|
874
943
|
'include_timeseries_hot_water_uses' => true,
|
875
944
|
'include_timeseries_total_loads' => true,
|
945
|
+
'include_timeseries_unmet_hours' => true,
|
876
946
|
'include_timeseries_component_loads' => true,
|
877
947
|
'include_timeseries_zone_temperatures' => true,
|
878
948
|
'include_timeseries_airflows' => true,
|
@@ -880,8 +950,12 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
880
950
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
881
951
|
assert(File.exist?(annual_csv))
|
882
952
|
assert(File.exist?(timeseries_csv))
|
883
|
-
expected_timeseries_cols = ['Time'] +
|
884
|
-
|
953
|
+
expected_timeseries_cols = ['Time'] +
|
954
|
+
all_base_hpxml_timeseries_cols +
|
955
|
+
emissions_timeseries_cols +
|
956
|
+
emission_fuels_timeseries_cols +
|
957
|
+
emission_end_uses_timeseries_cols +
|
958
|
+
['End Use: Electricity: PV', 'End Use: Electricity: Battery', 'Energy Use: Net', 'Fuel Use: Electricity: Net']
|
885
959
|
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
886
960
|
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
887
961
|
timeseries_rows = CSV.read(timeseries_csv)
|
@@ -891,7 +965,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
891
965
|
end
|
892
966
|
|
893
967
|
def test_timeseries_timestep
|
894
|
-
args_hash = { 'hpxml_path' => '
|
968
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
895
969
|
'timeseries_frequency' => 'timestep',
|
896
970
|
'include_timeseries_fuel_consumptions' => true }
|
897
971
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -904,13 +978,16 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
904
978
|
end
|
905
979
|
|
906
980
|
def test_timeseries_timestep_emissions
|
907
|
-
args_hash = { 'hpxml_path' => '
|
981
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-misc-emissions.xml'),
|
908
982
|
'timeseries_frequency' => 'timestep',
|
909
983
|
'include_timeseries_fuel_consumptions' => false,
|
910
984
|
'include_timeseries_end_use_consumptions' => false,
|
911
985
|
'include_timeseries_emissions' => true,
|
986
|
+
'include_timeseries_emission_fuels' => true,
|
987
|
+
'include_timeseries_emission_end_uses' => true,
|
912
988
|
'include_timeseries_hot_water_uses' => false,
|
913
989
|
'include_timeseries_total_loads' => false,
|
990
|
+
'include_timeseries_unmet_hours' => false,
|
914
991
|
'include_timeseries_component_loads' => false,
|
915
992
|
'include_timeseries_zone_temperatures' => false,
|
916
993
|
'include_timeseries_airflows' => false,
|
@@ -918,7 +995,10 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
918
995
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
919
996
|
assert(File.exist?(annual_csv))
|
920
997
|
assert(File.exist?(timeseries_csv))
|
921
|
-
expected_timeseries_cols = ['Time'] +
|
998
|
+
expected_timeseries_cols = ['Time'] +
|
999
|
+
emissions_timeseries_cols +
|
1000
|
+
emission_fuels_timeseries_cols +
|
1001
|
+
emission_end_uses_timeseries_cols
|
922
1002
|
actual_timeseries_cols = File.readlines(timeseries_csv)[0].strip.split(',')
|
923
1003
|
assert_equal(expected_timeseries_cols.sort, actual_timeseries_cols.sort)
|
924
1004
|
timeseries_rows = CSV.read(timeseries_csv)
|
@@ -929,7 +1009,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
929
1009
|
end
|
930
1010
|
|
931
1011
|
def test_timeseries_timestep_10min
|
932
|
-
args_hash = { 'hpxml_path' => '
|
1012
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-timestep-10-mins.xml'),
|
933
1013
|
'timeseries_frequency' => 'timestep',
|
934
1014
|
'include_timeseries_fuel_consumptions' => true }
|
935
1015
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
@@ -941,71 +1021,97 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
941
1021
|
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
942
1022
|
end
|
943
1023
|
|
944
|
-
def
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
1024
|
+
def test_timeseries_hourly_runperiod_1month
|
1025
|
+
expected_values = { 'timestep' => 28 * 24,
|
1026
|
+
'hourly' => 28 * 24,
|
1027
|
+
'daily' => 28,
|
1028
|
+
'monthly' => 1 }
|
1029
|
+
|
1030
|
+
expected_values.each do |timeseries_frequency, expected_value|
|
1031
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-runperiod-1-month.xml'),
|
1032
|
+
'timeseries_frequency' => timeseries_frequency,
|
1033
|
+
'include_timeseries_fuel_consumptions' => true }
|
1034
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
1035
|
+
assert(File.exist?(annual_csv))
|
1036
|
+
assert(File.exist?(timeseries_csv))
|
1037
|
+
timeseries_rows = CSV.read(timeseries_csv)
|
1038
|
+
assert_equal(expected_value, timeseries_rows.size - 2)
|
1039
|
+
if timeseries_frequency != 'monthly'
|
1040
|
+
timeseries_cols = timeseries_rows.transpose
|
1041
|
+
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
1042
|
+
end
|
1043
|
+
end
|
955
1044
|
end
|
956
1045
|
|
957
|
-
def
|
958
|
-
args_hash = { 'hpxml_path' => '
|
959
|
-
'timeseries_frequency' => '
|
1046
|
+
def test_timeseries_hourly_AMY_2012
|
1047
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-location-AMY-2012.xml'),
|
1048
|
+
'timeseries_frequency' => 'hourly',
|
960
1049
|
'include_timeseries_fuel_consumptions' => true }
|
961
1050
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
962
1051
|
assert(File.exist?(annual_csv))
|
963
1052
|
assert(File.exist?(timeseries_csv))
|
964
1053
|
timeseries_rows = CSV.read(timeseries_csv)
|
965
|
-
assert_equal(
|
1054
|
+
assert_equal(8784, timeseries_rows.size - 2)
|
966
1055
|
timeseries_cols = timeseries_rows.transpose
|
967
1056
|
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
968
1057
|
end
|
969
1058
|
|
970
|
-
def
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
1059
|
+
def test_timeseries_timestamp_convention
|
1060
|
+
# Expected values are arrays of time offsets (in seconds) for each reported row of output
|
1061
|
+
expected_values_array = { 'timestep' => [30 * 60] * 17520,
|
1062
|
+
'hourly' => [60 * 60] * 8760,
|
1063
|
+
'daily' => [60 * 60 * 24] * 365,
|
1064
|
+
'monthly' => Constants.NumDaysInMonths(1999).map { |n_days| n_days * 60 * 60 * 24 } }
|
1065
|
+
|
1066
|
+
expected_values_array.each do |timeseries_frequency, expected_values|
|
1067
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-timestep-30-mins.xml'),
|
1068
|
+
'timeseries_frequency' => timeseries_frequency,
|
1069
|
+
'include_timeseries_fuel_consumptions' => true,
|
1070
|
+
'timeseries_timestamp_convention' => 'end' }
|
1071
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
1072
|
+
assert(File.exist?(annual_csv))
|
1073
|
+
assert(File.exist?(timeseries_csv))
|
1074
|
+
timeseries_csv = CSV.readlines(timeseries_csv)
|
1075
|
+
|
1076
|
+
args_hash['timeseries_timestamp_convention'] = 'start'
|
1077
|
+
annual_csv, timeseries_csv2 = _test_measure(args_hash)
|
1078
|
+
assert(File.exist?(annual_csv))
|
1079
|
+
assert(File.exist?(timeseries_csv2))
|
1080
|
+
timeseries_csv2 = CSV.readlines(timeseries_csv2)
|
1081
|
+
|
1082
|
+
for rownum in 2..timeseries_csv.size - 1
|
1083
|
+
timestamp_offset = _parse_time(timeseries_csv[rownum][0]) - _parse_time(timeseries_csv2[rownum][0])
|
1084
|
+
assert_equal(expected_values[rownum - 2], timestamp_offset)
|
1085
|
+
end
|
1086
|
+
end
|
979
1087
|
end
|
980
1088
|
|
981
|
-
def
|
982
|
-
args_hash = { 'hpxml_path' => '
|
1089
|
+
def test_timeseries_for_dview
|
1090
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1091
|
+
'output_format' => 'csv_dview',
|
983
1092
|
'timeseries_frequency' => 'timestep',
|
984
|
-
'include_timeseries_fuel_consumptions' => true
|
1093
|
+
'include_timeseries_fuel_consumptions' => true,
|
1094
|
+
'include_timeseries_weather' => true }
|
985
1095
|
annual_csv, timeseries_csv = _test_measure(args_hash)
|
986
1096
|
assert(File.exist?(annual_csv))
|
987
1097
|
assert(File.exist?(timeseries_csv))
|
988
|
-
|
989
|
-
assert_equal(
|
990
|
-
timeseries_cols = timeseries_rows.transpose
|
991
|
-
assert_equal(1, _check_for_constant_timeseries_step(timeseries_cols[0]))
|
992
|
-
end
|
1098
|
+
timeseries_csv = CSV.readlines(timeseries_csv)
|
1099
|
+
assert_equal('wxDVFileHeaderVer.1', timeseries_csv[0][0].strip)
|
993
1100
|
|
994
|
-
|
995
|
-
|
996
|
-
'timeseries_frequency' => 'hourly',
|
997
|
-
'include_timeseries_fuel_consumptions' => true }
|
998
|
-
annual_csv, timeseries_csv = _test_measure(args_hash)
|
1101
|
+
args_hash['hpxml_path'] = File.join(File.dirname(__FILE__), '../../workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml')
|
1102
|
+
annual_csv, timeseries_csv2 = _test_measure(args_hash)
|
999
1103
|
assert(File.exist?(annual_csv))
|
1000
|
-
assert(File.exist?(
|
1001
|
-
|
1002
|
-
assert_equal(
|
1003
|
-
|
1004
|
-
|
1104
|
+
assert(File.exist?(timeseries_csv2))
|
1105
|
+
timeseries_csv2 = CSV.readlines(timeseries_csv2)
|
1106
|
+
assert_equal('wxDVFileHeaderVer.1', timeseries_csv2[0][0].strip)
|
1107
|
+
|
1108
|
+
col_ix = timeseries_csv[1].find_index('Weather| Drybulb Temperature')
|
1109
|
+
assert_equal(Float(timeseries_csv[5][col_ix].strip), Float(timeseries_csv2[5][col_ix].strip)) # not in dst period, values line up
|
1110
|
+
assert_equal(Float(timeseries_csv[5000 + 1][col_ix].strip), Float(timeseries_csv2[5000][col_ix].strip)) # in dst period, values are shifted forward
|
1005
1111
|
end
|
1006
1112
|
|
1007
1113
|
def test_timeseries_local_time_dst
|
1008
|
-
args_hash = { 'hpxml_path' => '
|
1114
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1009
1115
|
'timeseries_frequency' => 'timestep',
|
1010
1116
|
'include_timeseries_fuel_consumptions' => true,
|
1011
1117
|
'add_timeseries_dst_column' => true }
|
@@ -1022,7 +1128,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1022
1128
|
end
|
1023
1129
|
|
1024
1130
|
def test_timeseries_local_time_utc
|
1025
|
-
args_hash = { 'hpxml_path' => '
|
1131
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1026
1132
|
'timeseries_frequency' => 'timestep',
|
1027
1133
|
'include_timeseries_fuel_consumptions' => true,
|
1028
1134
|
'add_timeseries_utc_column' => true }
|
@@ -1039,7 +1145,7 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1039
1145
|
end
|
1040
1146
|
|
1041
1147
|
def test_timeseries_local_time_dst_and_utc
|
1042
|
-
args_hash = { 'hpxml_path' => '
|
1148
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1043
1149
|
'timeseries_frequency' => 'timestep',
|
1044
1150
|
'include_timeseries_fuel_consumptions' => true,
|
1045
1151
|
'add_timeseries_dst_column' => true,
|
@@ -1059,13 +1165,16 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1059
1165
|
end
|
1060
1166
|
|
1061
1167
|
def test_timeseries_user_defined_standard_output_variables
|
1062
|
-
args_hash = { 'hpxml_path' => '
|
1168
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1063
1169
|
'timeseries_frequency' => 'hourly',
|
1064
1170
|
'include_timeseries_fuel_consumptions' => false,
|
1065
1171
|
'include_timeseries_end_use_consumptions' => false,
|
1066
1172
|
'include_timeseries_emissions' => false,
|
1173
|
+
'include_timeseries_emission_fuels' => false,
|
1174
|
+
'include_timeseries_emission_end_uses' => false,
|
1067
1175
|
'include_timeseries_hot_water_uses' => false,
|
1068
1176
|
'include_timeseries_total_loads' => false,
|
1177
|
+
'include_timeseries_unmet_hours' => false,
|
1069
1178
|
'include_timeseries_component_loads' => false,
|
1070
1179
|
'include_timeseries_zone_temperatures' => false,
|
1071
1180
|
'include_timeseries_airflows' => false,
|
@@ -1086,14 +1195,17 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1086
1195
|
end
|
1087
1196
|
|
1088
1197
|
def test_timeseries_user_defined_advanced_output_variables
|
1089
|
-
args_hash = { 'hpxml_path' => '
|
1198
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1090
1199
|
'add_component_loads' => true,
|
1091
1200
|
'timeseries_frequency' => 'hourly',
|
1092
1201
|
'include_timeseries_fuel_consumptions' => false,
|
1093
1202
|
'include_timeseries_end_use_consumptions' => false,
|
1094
1203
|
'include_timeseries_emissions' => false,
|
1204
|
+
'include_timeseries_emission_fuels' => false,
|
1205
|
+
'include_timeseries_emission_end_uses' => false,
|
1095
1206
|
'include_timeseries_hot_water_uses' => false,
|
1096
1207
|
'include_timeseries_total_loads' => false,
|
1208
|
+
'include_timeseries_unmet_hours' => false,
|
1097
1209
|
'include_timeseries_component_loads' => false,
|
1098
1210
|
'include_timeseries_zone_temperatures' => false,
|
1099
1211
|
'include_timeseries_airflows' => false,
|
@@ -1112,36 +1224,31 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1112
1224
|
_check_for_nonzero_timeseries_value(timeseries_csv, BaseHPXMLTimeseriesColsAdvancedOutputVariables)
|
1113
1225
|
end
|
1114
1226
|
|
1115
|
-
def
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
# Cleanup
|
1139
|
-
File.delete(new_hpxml_path)
|
1140
|
-
File.delete(annual_csv)
|
1141
|
-
end
|
1227
|
+
def test_eri_output
|
1228
|
+
args_hash = { 'hpxml_path' => File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml'),
|
1229
|
+
'generate_eri_outputs' => true }
|
1230
|
+
annual_csv, timeseries_csv = _test_measure(args_hash)
|
1231
|
+
assert(File.exist?(annual_csv))
|
1232
|
+
assert(!File.exist?(timeseries_csv))
|
1233
|
+
actual_annual_rows = File.readlines(annual_csv).map { |x| x.split(',')[0].strip }.select { |x| !x.empty? }
|
1234
|
+
assert(actual_annual_rows.include? 'ERI: Building: CFA')
|
1235
|
+
end
|
1236
|
+
|
1237
|
+
def test_for_unsuccessful_simulation_infinity
|
1238
|
+
# Create HPXML w/ AFUE=0 to generate Infinity result
|
1239
|
+
hpxml_path = File.join(File.dirname(__FILE__), '../../workflow/sample_files/base.xml')
|
1240
|
+
hpxml = HPXML.new(hpxml_path: hpxml_path)
|
1241
|
+
hpxml.heating_systems[0].heating_efficiency_afue = 10.0**-315
|
1242
|
+
XMLHelper.write_file(hpxml.to_oga(), @tmp_hpxml_path)
|
1243
|
+
|
1244
|
+
args_hash = { 'hpxml_path' => @tmp_hpxml_path }
|
1245
|
+
annual_csv, timeseries_csv, run_log = _test_measure(args_hash, expect_success: false)
|
1246
|
+
assert(!File.exist?(annual_csv))
|
1247
|
+
assert(!File.exist?(timeseries_csv))
|
1248
|
+
assert(File.readlines(run_log).any? { |line| line.include?('Simulation used infinite energy; double-check inputs.') })
|
1142
1249
|
end
|
1143
1250
|
|
1144
|
-
def _test_measure(args_hash,
|
1251
|
+
def _test_measure(args_hash, expect_success: true)
|
1145
1252
|
# Run measure via OSW
|
1146
1253
|
require 'json'
|
1147
1254
|
template_osw = File.join(File.dirname(__FILE__), '..', '..', 'workflow', 'template-run-hpxml.osw')
|
@@ -1152,6 +1259,8 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1152
1259
|
steps = OpenStudio::WorkflowStepVector.new
|
1153
1260
|
found_args = []
|
1154
1261
|
json['steps'].each do |json_step|
|
1262
|
+
next unless ['HPXMLtoOpenStudio', 'ReportSimulationOutput'].include? json_step['measure_dir_name']
|
1263
|
+
|
1155
1264
|
step = OpenStudio::MeasureStep.new(json_step['measure_dir_name'])
|
1156
1265
|
json_step['arguments'].each do |json_arg_name, json_arg_val|
|
1157
1266
|
if args_hash.keys.include? json_arg_name
|
@@ -1170,35 +1279,27 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1170
1279
|
|
1171
1280
|
# Run OSW
|
1172
1281
|
success = system("#{OpenStudio.getOpenStudioCLI} run -w \"#{osw_path}\"")
|
1173
|
-
assert_equal(
|
1282
|
+
assert_equal(expect_success, success)
|
1174
1283
|
|
1175
1284
|
# Cleanup
|
1176
1285
|
File.delete(osw_path)
|
1177
1286
|
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
annual_csv = File.join(output_dir, "#{hpxml_name}.csv")
|
1182
|
-
timeseries_csv = File.join(output_dir, "#{hpxml_name}_Hourly.csv")
|
1183
|
-
run_log = File.join(output_dir, 'run.log')
|
1184
|
-
else
|
1185
|
-
annual_csv = File.join(File.dirname(template_osw), 'run', 'results_annual.csv')
|
1186
|
-
timeseries_csv = File.join(File.dirname(template_osw), 'run', 'results_timeseries.csv')
|
1187
|
-
run_log = File.join(File.dirname(template_osw), 'run', 'run.log')
|
1188
|
-
end
|
1287
|
+
annual_csv = File.join(File.dirname(template_osw), 'run', 'results_annual.csv')
|
1288
|
+
timeseries_csv = File.join(File.dirname(template_osw), 'run', 'results_timeseries.csv')
|
1289
|
+
run_log = File.join(File.dirname(template_osw), 'run', 'run.log')
|
1189
1290
|
return annual_csv, timeseries_csv, run_log
|
1190
1291
|
end
|
1191
1292
|
|
1192
1293
|
def _parse_time(ts)
|
1193
1294
|
date, time = ts.split('T')
|
1194
1295
|
year, month, day = date.split('-')
|
1195
|
-
hour, minute,
|
1296
|
+
hour, minute, _second = time.split(':')
|
1196
1297
|
return Time.utc(year, month, day, hour, minute)
|
1197
1298
|
end
|
1198
1299
|
|
1199
1300
|
def _check_for_constant_timeseries_step(time_col)
|
1200
1301
|
steps = []
|
1201
|
-
time_col.each_with_index do |
|
1302
|
+
time_col.each_with_index do |_ts, i|
|
1202
1303
|
next if i < 3
|
1203
1304
|
|
1204
1305
|
t0 = _parse_time(time_col[i - 1])
|
@@ -1250,4 +1351,28 @@ class ReportSimulationOutputTest < MiniTest::Test
|
|
1250
1351
|
assert(has_no_zero_timeseries_value)
|
1251
1352
|
end
|
1252
1353
|
end
|
1354
|
+
|
1355
|
+
def _get_actual_annual_rows(annual_csv)
|
1356
|
+
actual_annual_rows = {}
|
1357
|
+
File.readlines(annual_csv).each do |line|
|
1358
|
+
next if line.strip.empty?
|
1359
|
+
|
1360
|
+
key, value = line.split(',').map { |x| x.strip }
|
1361
|
+
actual_annual_rows[key] = Float(value)
|
1362
|
+
end
|
1363
|
+
return actual_annual_rows
|
1364
|
+
end
|
1365
|
+
|
1366
|
+
def _check_for_runner_registered_values(results_json, actual_annual_rows)
|
1367
|
+
require 'json'
|
1368
|
+
runner_annual_rows = JSON.parse(File.read(results_json))
|
1369
|
+
runner_annual_rows = runner_annual_rows['ReportSimulationOutput']
|
1370
|
+
|
1371
|
+
actual_annual_rows.each do |name, value|
|
1372
|
+
name = OpenStudio::toUnderscoreCase(name).chomp('_')
|
1373
|
+
|
1374
|
+
assert_includes(runner_annual_rows.keys, name)
|
1375
|
+
assert_equal(value, runner_annual_rows[name])
|
1376
|
+
end
|
1377
|
+
end
|
1253
1378
|
end
|