urbanopt-cli 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/CMakeLists.txt +8 -8
- data/LICENSE.md +11 -1
- data/Rakefile +16 -6
- data/example_files/example_project_combined.json +100 -5
- data/example_files/mappers/Baseline.rb +31 -18
- data/example_files/mappers/CreateBar.rb +16 -6
- data/example_files/mappers/EvCharging.rb +20 -10
- data/example_files/mappers/Floorspace.rb +16 -6
- data/example_files/mappers/HighEfficiencyCreateBar.rb +16 -6
- data/example_files/mappers/HighEfficiencyFloorspace.rb +16 -6
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/measures/BuildResidentialModel/measure.rb +211 -129
- data/example_files/residential/clothes_dryer.tsv +7 -7
- data/example_files/residential/clothes_washer.tsv +1 -1
- data/example_files/residential/cooling_system.tsv +42 -22
- data/example_files/residential/dishwasher.tsv +1 -1
- data/example_files/residential/exhaust.tsv +3 -0
- data/example_files/residential/heat_pump.tsv +62 -40
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -0
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +23 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +633 -1188
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1524 -1211
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +424 -335
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +104 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +36 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +40 -64
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +44 -68
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +39 -65
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +57 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +33 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
- data/example_files/resources/hpxml-measures/Changelog.md +238 -0
- data/example_files/resources/hpxml-measures/Gemfile +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +265 -838
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +135 -114
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +5 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +573 -193
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +2 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +107 -176
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -180
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +481 -94
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +2 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +23 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +735 -453
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +417 -105
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1377 -1335
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1393 -1467
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +64 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +2 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +15 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +7 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +3 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +31 -30
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +62 -16
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +507 -628
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +321 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +25 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -0
- data/example_files/resources/hpxml-measures/README.md +4 -4
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +111 -37
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +318 -490
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +237 -183
- data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +3 -105
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +476 -351
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +154 -130
- data/example_files/resources/hpxml-measures/tasks.rb +1287 -511
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +23 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +22 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +14 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +600 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2474 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +576 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +643 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +552 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +556 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +559 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +556 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +552 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +547 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +557 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +554 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +559 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +546 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +547 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +547 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +567 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +565 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +570 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +551 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +551 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +564 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +568 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +837 -834
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +576 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +9 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +447 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +11 -58
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +459 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +578 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +2 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +573 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +464 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +450 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +472 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +912 -909
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +12 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/template.osw +4 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +232 -360
- data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
- data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
- data/lib/uo_cli.rb +187 -44
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/uo_cli.gemspec +2 -2
- metadata +248 -64
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
- data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
- data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>1539.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>12312.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>3078.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>24624.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -28,9 +28,6 @@
|
|
|
28
28
|
<NumberofBedrooms>3</NumberofBedrooms>
|
|
29
29
|
<ConditionedFloorArea>3078.0</ConditionedFloorArea>
|
|
30
30
|
<ConditionedBuildingVolume>24624.0</ConditionedBuildingVolume>
|
|
31
|
-
<extension>
|
|
32
|
-
<UseOnlyIdealAirSystem>true</UseOnlyIdealAirSystem>
|
|
33
|
-
</extension>
|
|
34
31
|
</BuildingConstruction>
|
|
35
32
|
</BuildingSummary>
|
|
36
33
|
<ClimateandRiskZones>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
require_relative '../../HPXMLtoOpenStudio/resources/minitest_helper'
|
|
4
4
|
require 'openstudio'
|
|
5
|
-
require 'openstudio/measure/ShowRunnerOutput'
|
|
6
5
|
require 'minitest/autorun'
|
|
7
6
|
require 'fileutils'
|
|
7
|
+
require 'parallel'
|
|
8
8
|
require_relative '../../HPXMLtoOpenStudio/measure.rb'
|
|
9
9
|
require_relative '../../HPXMLtoOpenStudio/resources/constants'
|
|
10
10
|
require_relative '../../HPXMLtoOpenStudio/resources/meta_measure'
|
|
@@ -12,12 +12,8 @@ require_relative '../../HPXMLtoOpenStudio/resources/unit_conversions'
|
|
|
12
12
|
require_relative '../../HPXMLtoOpenStudio/resources/xmlhelper'
|
|
13
13
|
|
|
14
14
|
class HPXMLTest < MiniTest::Test
|
|
15
|
-
@@simulation_runtime_key = 'Simulation Runtime'
|
|
16
15
|
@@workflow_runtime_key = 'Workflow Runtime'
|
|
17
16
|
|
|
18
|
-
@@os_log = OpenStudio::StringStreamLogSink.new
|
|
19
|
-
@@os_log.setLogLevel(OpenStudio::Warn)
|
|
20
|
-
|
|
21
17
|
def before_setup
|
|
22
18
|
@this_dir = File.dirname(__FILE__)
|
|
23
19
|
@results_dir = File.join(@this_dir, 'results')
|
|
@@ -25,44 +21,37 @@ class HPXMLTest < MiniTest::Test
|
|
|
25
21
|
end
|
|
26
22
|
|
|
27
23
|
def test_simulations
|
|
28
|
-
sample_files_dir = File.absolute_path(File.join(@this_dir, '..', 'sample_files'))
|
|
29
|
-
autosize_dir = File.absolute_path(File.join(@this_dir, '..', 'sample_files', 'hvac_autosizing'))
|
|
30
|
-
|
|
31
24
|
results_out = File.join(@results_dir, 'results.csv')
|
|
32
25
|
File.delete(results_out) if File.exist? results_out
|
|
33
26
|
sizing_out = File.join(@results_dir, 'results_hvac_sizing.csv')
|
|
34
27
|
File.delete(sizing_out) if File.exist? sizing_out
|
|
35
28
|
|
|
36
|
-
test_dirs = [sample_files_dir,
|
|
37
|
-
autosize_dir]
|
|
38
|
-
|
|
39
29
|
xmls = []
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
30
|
+
sample_files_dir = File.absolute_path(File.join(@this_dir, '..', 'sample_files'))
|
|
31
|
+
Dir["#{sample_files_dir}/*.xml"].sort.each do |xml|
|
|
32
|
+
xmls << File.absolute_path(xml)
|
|
44
33
|
end
|
|
45
34
|
|
|
46
35
|
# Test simulations
|
|
47
36
|
puts "Running #{xmls.size} HPXML files..."
|
|
48
37
|
all_results = {}
|
|
49
38
|
all_sizing_results = {}
|
|
50
|
-
xmls.
|
|
51
|
-
|
|
39
|
+
Parallel.map(xmls, in_threads: Parallel.processor_count) do |xml|
|
|
40
|
+
xml_name = File.basename(xml)
|
|
41
|
+
all_results[xml_name], all_sizing_results[xml_name] = _run_xml(xml, Parallel.worker_number)
|
|
52
42
|
end
|
|
53
43
|
|
|
54
|
-
_write_summary_results(all_results, results_out)
|
|
55
|
-
_write_hvac_sizing_results(all_sizing_results, sizing_out)
|
|
44
|
+
_write_summary_results(all_results.sort_by { |k, v| k.downcase }.to_h, results_out)
|
|
45
|
+
_write_hvac_sizing_results(all_sizing_results.sort_by { |k, v| k.downcase }.to_h, sizing_out)
|
|
56
46
|
end
|
|
57
47
|
|
|
58
48
|
def test_ashrae_140
|
|
59
|
-
ashrae140_dir = File.absolute_path(File.join(@this_dir, 'ASHRAE_Standard_140'))
|
|
60
|
-
|
|
61
49
|
ashrae140_out = File.join(@results_dir, 'results_ashrae_140.csv')
|
|
62
50
|
File.delete(ashrae140_out) if File.exist? ashrae140_out
|
|
63
51
|
|
|
64
52
|
xmls = []
|
|
65
|
-
|
|
53
|
+
ashrae_140_dir = File.absolute_path(File.join(@this_dir, 'ASHRAE_Standard_140'))
|
|
54
|
+
Dir["#{ashrae_140_dir}/*.xml"].sort.each do |xml|
|
|
66
55
|
xmls << File.absolute_path(xml)
|
|
67
56
|
end
|
|
68
57
|
|
|
@@ -70,27 +59,28 @@ class HPXMLTest < MiniTest::Test
|
|
|
70
59
|
puts "Running #{xmls.size} HPXML files..."
|
|
71
60
|
all_results = {}
|
|
72
61
|
all_sizing_results = {}
|
|
73
|
-
xmls.
|
|
74
|
-
|
|
62
|
+
Parallel.map(xmls, in_threads: Parallel.processor_count) do |xml|
|
|
63
|
+
xml_name = File.basename(xml)
|
|
64
|
+
all_results[xml_name], all_sizing_results[xml_name] = _run_xml(xml, Parallel.worker_number)
|
|
75
65
|
end
|
|
76
66
|
|
|
77
|
-
_write_ashrae_140_results(all_results,
|
|
67
|
+
_write_ashrae_140_results(all_results.sort_by { |k, v| k.downcase }.to_h, ashrae140_out)
|
|
78
68
|
end
|
|
79
69
|
|
|
80
|
-
def
|
|
81
|
-
# Check that simulation
|
|
70
|
+
def test_run_simulation_json_output
|
|
71
|
+
# Check that the simulation produces JSON outputs (instead of CSV outputs) if requested
|
|
82
72
|
os_cli = OpenStudio.getOpenStudioCLI
|
|
83
73
|
rb_path = File.join(File.dirname(__FILE__), '..', 'run_simulation.rb')
|
|
84
74
|
xml = File.join(File.dirname(__FILE__), '..', 'sample_files', 'base.xml')
|
|
85
|
-
command = "#{os_cli} #{rb_path} -x #{xml} --debug --hourly ALL"
|
|
75
|
+
command = "#{os_cli} #{rb_path} -x #{xml} --debug --hourly ALL --output-format json"
|
|
86
76
|
system(command, err: File::NULL)
|
|
87
77
|
|
|
88
78
|
# Check for output files
|
|
89
79
|
sql_path = File.join(File.dirname(xml), 'run', 'eplusout.sql')
|
|
90
80
|
assert(File.exist? sql_path)
|
|
91
|
-
csv_output_path = File.join(File.dirname(xml), 'run', 'results_annual.
|
|
81
|
+
csv_output_path = File.join(File.dirname(xml), 'run', 'results_annual.json')
|
|
92
82
|
assert(File.exist? csv_output_path)
|
|
93
|
-
csv_output_path = File.join(File.dirname(xml), 'run', 'results_timeseries.
|
|
83
|
+
csv_output_path = File.join(File.dirname(xml), 'run', 'results_timeseries.json')
|
|
94
84
|
assert(File.exist? csv_output_path)
|
|
95
85
|
|
|
96
86
|
# Check for debug files
|
|
@@ -154,29 +144,42 @@ class HPXMLTest < MiniTest::Test
|
|
|
154
144
|
def test_invalid
|
|
155
145
|
sample_files_dir = File.join(@this_dir, '..', 'sample_files')
|
|
156
146
|
|
|
157
|
-
expected_error_msgs = { '
|
|
158
|
-
'
|
|
159
|
-
'clothes-
|
|
160
|
-
'
|
|
161
|
-
'
|
|
147
|
+
expected_error_msgs = { 'boiler-invalid-afue.xml' => ['Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1'],
|
|
148
|
+
'cfis-with-hydronic-distribution.xml' => ["Attached HVAC distribution system 'HVACDistribution' cannot be hydronic for ventilation fan 'MechanicalVentilation'."],
|
|
149
|
+
'clothes-dryer-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
150
|
+
'clothes-washer-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
151
|
+
'cooking-range-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
152
|
+
'dehumidifier-fraction-served.xml' => ['Expected FractionDehumidificationLoadServed to sum to <= 1, but calculated sum is 1.1.'],
|
|
153
|
+
'dehumidifier-setpoints.xml' => ['All dehumidifiers must have the same setpoint but multiple setpoints were specified.'],
|
|
154
|
+
'dishwasher-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
162
155
|
'dhw-frac-load-served.xml' => ['Expected FractionDHWLoadServed to sum to 1, but calculated sum is 1.15.'],
|
|
163
156
|
'dhw-invalid-ef-tank.xml' => ['Expected EnergyFactor to be less than 1 [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem[WaterHeaterType="storage water heater"]]'],
|
|
164
157
|
'dhw-invalid-uef-tank-heat-pump.xml' => ['Expected UniformEnergyFactor to be greater than 1 [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem[WaterHeaterType="heat pump water heater"]]'],
|
|
165
|
-
'duct-
|
|
166
|
-
'duct-
|
|
158
|
+
'duct-leakage-cfm25.xml' => ['Expected Value to be greater than or equal to 0 [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/AirDistribution/DuctLeakageMeasurement/DuctLeakage[Units="CFM25"]]'],
|
|
159
|
+
'duct-leakage-percent.xml' => ['Expected Value to be less than 1 [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/AirDistribution/DuctLeakageMeasurement/DuctLeakage[Units="Percent"]]'],
|
|
160
|
+
'duct-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
161
|
+
'duct-location-unconditioned-space.xml' => ["Expected DuctLocation to be 'living space' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace - vented' or 'crawlspace - unvented' or 'attic - vented' or 'attic - unvented' or 'garage' or 'exterior wall' or 'under slab' or 'roof deck' or 'outside' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/*/Ducts]"],
|
|
167
162
|
'duplicate-id.xml' => ["Duplicate SystemIdentifier IDs detected for 'WindowNorth'."],
|
|
168
|
-
'enclosure-attic-missing-roof.xml' => ['There must be at least one roof adjacent to attic - unvented.'],
|
|
169
|
-
'enclosure-basement-missing-exterior-foundation-wall.xml' => ['There must be at least one exterior foundation wall adjacent to basement - unconditioned.'],
|
|
170
|
-
'enclosure-basement-missing-slab.xml' => ['There must be at least one slab adjacent to basement - unconditioned.'],
|
|
171
|
-
'enclosure-floor-area-exceeds-cfa.xml' => ['
|
|
172
|
-
'enclosure-
|
|
173
|
-
'enclosure-garage-missing-
|
|
174
|
-
'enclosure-garage-missing-
|
|
175
|
-
'enclosure-
|
|
176
|
-
'enclosure-living-missing-
|
|
177
|
-
|
|
178
|
-
'
|
|
179
|
-
'
|
|
163
|
+
'enclosure-attic-missing-roof.xml' => ['There must be at least one roof adjacent to "attic - unvented". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="attic - unvented" or ExteriorAdjacentTo="attic - unvented"]]]'],
|
|
164
|
+
'enclosure-basement-missing-exterior-foundation-wall.xml' => ['There must be at least one exterior foundation wall adjacent to "basement - unconditioned". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="basement - unconditioned" or ExteriorAdjacentTo="basement - unconditioned"]]]'],
|
|
165
|
+
'enclosure-basement-missing-slab.xml' => ['There must be at least one slab adjacent to "basement - unconditioned". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="basement - unconditioned" or ExteriorAdjacentTo="basement - unconditioned"]]]'],
|
|
166
|
+
'enclosure-floor-area-exceeds-cfa.xml' => ['Expected ConditionedFloorArea to be greater than or equal to the sum of conditioned slab/floor areas. [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]'],
|
|
167
|
+
'enclosure-floor-area-exceeds-cfa2.xml' => ['Expected ConditionedFloorArea to be greater than or equal to the sum of conditioned slab/floor areas. [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]'],
|
|
168
|
+
'enclosure-garage-missing-exterior-wall.xml' => ['There must be at least one exterior wall/foundation wall adjacent to "garage". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="garage" or ExteriorAdjacentTo="garage"]]]'],
|
|
169
|
+
'enclosure-garage-missing-roof-ceiling.xml' => ['There must be at least one roof/ceiling adjacent to "garage". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="garage" or ExteriorAdjacentTo="garage"]]]'],
|
|
170
|
+
'enclosure-garage-missing-slab.xml' => ['There must be at least one slab adjacent to "garage". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="garage" or ExteriorAdjacentTo="garage"]]]'],
|
|
171
|
+
'enclosure-living-missing-ceiling-roof.xml' => ['There must be at least one ceiling/roof adjacent to conditioned space. [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="living space"]]]',
|
|
172
|
+
'There must be at least one floor adjacent to "attic - unvented". [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="attic - unvented" or ExteriorAdjacentTo="attic - unvented"]]]'],
|
|
173
|
+
'enclosure-living-missing-exterior-wall.xml' => ['There must be at least one exterior wall adjacent to conditioned space. [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="living space"]]]'],
|
|
174
|
+
'enclosure-living-missing-floor-slab.xml' => ['There must be at least one floor/slab adjacent to conditioned space. [context: /HPXML/Building/BuildingDetails/Enclosure[*/*[InteriorAdjacentTo="living space"]]]'],
|
|
175
|
+
'frac-sensible-plug-load.xml' => ['Expected extension/FracSensible to be greater than or equal to 0 [context: /HPXML/Building/BuildingDetails/MiscLoads/PlugLoad[PlugLoadType="other" or PlugLoadType="TV other" or PlugLoadType="electric vehicle charging" or PlugLoadType="well pump"]]'],
|
|
176
|
+
'frac-total-plug-load.xml' => ['Expected sum of extension/FracSensible and extension/FracLatent to be less than or equal to 1 [context: /HPXML/Building/BuildingDetails/MiscLoads/PlugLoad[PlugLoadType="other" or PlugLoadType="TV other" or PlugLoadType="electric vehicle charging" or PlugLoadType="well pump"]]'],
|
|
177
|
+
'frac-sensible-fuel-load.xml' => ['Expected extension/FracSensible to be greater than or equal to 0 [context: /HPXML/Building/BuildingDetails/MiscLoads/FuelLoad[FuelLoadType="grill" or FuelLoadType="lighting" or FuelLoadType="fireplace"]]'],
|
|
178
|
+
'frac-total-fuel-load.xml' => ['Expected sum of extension/FracSensible and extension/FracLatent to be less than or equal to 1 [context: /HPXML/Building/BuildingDetails/MiscLoads/FuelLoad[FuelLoadType="grill" or FuelLoadType="lighting" or FuelLoadType="fireplace"]]'],
|
|
179
|
+
'furnace-invalid-afue.xml' => ['Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1'],
|
|
180
|
+
'generator-output-greater-than-consumption.xml' => ['Expected AnnualConsumptionkBtu to be greater than AnnualOutputkWh*3412 [context: /HPXML/Building/BuildingDetails/Systems/extension/Generators/Generator]'],
|
|
181
|
+
'generator-number-of-bedrooms-served.xml' => ['Expected NumberofBedroomsServed to be greater than ../../../../BuildingSummary/BuildingConstruction/NumberofBedrooms [context: /HPXML/Building/BuildingDetails/Systems/extension/Generators/Generator[IsSharedSystem="true"]]'],
|
|
182
|
+
'heat-pump-mixed-fixed-and-autosize-capacities.xml' => ['Expected 0 or 2 element(s) for xpath: HeatingCapacity | BackupHeatingCapacity [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACPlant/HeatPump[BackupSystemFuel]]'],
|
|
180
183
|
'hvac-invalid-distribution-system-type.xml' => ["Incorrect HVAC distribution system type for HVAC type: 'Furnace'. Should be one of: ["],
|
|
181
184
|
'hvac-distribution-multiple-attached-cooling.xml' => ["Multiple cooling systems found attached to distribution system 'HVACDistribution2'."],
|
|
182
185
|
'hvac-distribution-multiple-attached-heating.xml' => ["Multiple heating systems found attached to distribution system 'HVACDistribution'."],
|
|
@@ -184,14 +187,12 @@ class HPXMLTest < MiniTest::Test
|
|
|
184
187
|
'hvac-dse-multiple-attached-heating.xml' => ["Multiple heating systems found attached to distribution system 'HVACDistribution'."],
|
|
185
188
|
'hvac-frac-load-served.xml' => ['Expected FractionCoolLoadServed to sum to <= 1, but calculated sum is 1.2.',
|
|
186
189
|
'Expected FractionHeatLoadServed to sum to <= 1, but calculated sum is 1.1.'],
|
|
187
|
-
'hvac-distribution-return-duct-leakage-missing.xml' => [
|
|
188
|
-
'hvac-inconsistent-fan-powers.xml' => ["Fan powers for heating system 'HeatingSystem' and cooling system 'CoolingSystem' must be the same."],
|
|
189
|
-
'invalid-
|
|
190
|
-
'invalid-datatype-
|
|
191
|
-
'invalid-datatype-integer.xml' => ["Cannot convert '2.5' to integer."],
|
|
192
|
-
'invalid-datatype-
|
|
193
|
-
'invalid-datatype-float.xml' => ["Cannot convert 'FOOBAR' to float."],
|
|
194
|
-
'invalid-datatype-float2.xml' => ["Cannot convert '' to float."],
|
|
190
|
+
'hvac-distribution-return-duct-leakage-missing.xml' => ['Expected 1 element(s) for xpath: DuctLeakageMeasurement[DuctType="return"]/DuctLeakage[(Units="CFM25" or Units="Percent") and TotalOrToOutside="to outside"] [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/AirDistribution]'],
|
|
191
|
+
'hvac-inconsistent-fan-powers.xml' => ["Fan powers for heating system 'HeatingSystem' and cooling system 'CoolingSystem' are attached to a single distribution system and therefore must be the same."],
|
|
192
|
+
'invalid-assembly-effective-rvalue.xml' => ['Expected Insulation/AssemblyEffectiveRValue to be greater than 0 [context: /HPXML/Building/BuildingDetails/Enclosure/Walls/Wall]'],
|
|
193
|
+
'invalid-datatype-boolean.xml' => ["Cannot convert 'FOOBAR' to boolean for Roof/RadiantBarrier."],
|
|
194
|
+
'invalid-datatype-integer.xml' => ["Cannot convert '2.5' to integer for BuildingConstruction/NumberofBedrooms."],
|
|
195
|
+
'invalid-datatype-float.xml' => ["Cannot convert 'FOOBAR' to float for Slab/extension/CarpetFraction."],
|
|
195
196
|
'invalid-daylight-saving.xml' => ['Daylight Saving End Day of Month (31) must be one of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30.'],
|
|
196
197
|
'invalid-distribution-cfa-served.xml' => ['The total conditioned floor area served by the HVAC distribution system(s) for heating is larger than the conditioned floor area of the building.',
|
|
197
198
|
'The total conditioned floor area served by the HVAC distribution system(s) for cooling is larger than the conditioned floor area of the building.'],
|
|
@@ -205,6 +206,12 @@ class HPXMLTest < MiniTest::Test
|
|
|
205
206
|
"The building is of type 'single-family detached' but the surface 'FoundationWallOther' is adjacent to Attached/Multifamily space 'other housing unit'.",
|
|
206
207
|
"The building is of type 'single-family detached' but the surface 'FloorOther' is adjacent to Attached/Multifamily space 'other housing unit'.",
|
|
207
208
|
"The building is of type 'single-family detached' but the surface 'CeilingOther' is adjacent to Attached/Multifamily space 'other housing unit'."],
|
|
209
|
+
'invalid-foundation-wall-properties.xml' => ['Expected DepthBelowGrade to be less than or equal to Height [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall]',
|
|
210
|
+
'Expected extension/DistanceToBottomOfInsulation to be greater than or equal to extension/DistanceToTopOfInsulation [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall/Insulation/Layer[InstallationType="continuous - exterior" or InstallationType="continuous - interior"]]',
|
|
211
|
+
'Expected extension/DistanceToBottomOfInsulation to be less than or equal to ../../Height [context: /HPXML/Building/BuildingDetails/Enclosure/FoundationWalls/FoundationWall/Insulation/Layer[InstallationType="continuous - exterior" or InstallationType="continuous - interior"]]'],
|
|
212
|
+
'invalid-id.xml' => ["Empty SystemIdentifier ID ('') detected for skylights."],
|
|
213
|
+
'invalid-id2.xml' => ['Expected id attribute for SystemIdentifier [context: /HPXML/Building/BuildingDetails/Enclosure/Skylights/Skylight]'],
|
|
214
|
+
'invalid-infiltration-volume.xml' => ['Expected InfiltrationVolume to be greater than or equal to ../../../BuildingSummary/BuildingConstruction/ConditionedBuildingVolume [context: /HPXML/Building/BuildingDetails/Enclosure/AirInfiltration/AirInfiltrationMeasurement[BuildingAirLeakage/UnitofMeasure[text()="ACH" or text()="CFM"]]]'],
|
|
208
215
|
'invalid-input-parameters.xml' => ["Expected Transaction to be 'create' or 'update' [context: /HPXML/XMLTransactionHeaderInformation]",
|
|
209
216
|
"Expected SiteType to be 'rural' or 'suburban' or 'urban' [context: /HPXML/Building/BuildingDetails/BuildingSummary/Site]",
|
|
210
217
|
"Expected Year to be '2012' or '2009' or '2006' or '2003' [context: /HPXML/Building/BuildingDetails/ClimateandRiskZones/ClimateZoneIECC]",
|
|
@@ -212,30 +219,38 @@ class HPXMLTest < MiniTest::Test
|
|
|
212
219
|
'Expected RadiantBarrierGrade to be less than or equal to 3 [context: /HPXML/Building/BuildingDetails/Enclosure/Roofs/Roof]',
|
|
213
220
|
'Expected EnergyFactor to be less than or equal to 5 [context: /HPXML/Building/BuildingDetails/Appliances/Dishwasher]'],
|
|
214
221
|
'invalid-neighbor-shading-azimuth.xml' => ['A neighbor building has an azimuth (145) not equal to the azimuth of any wall.'],
|
|
222
|
+
'invalid-number-of-bedrooms-served.xml' => ['Expected extension/NumberofBedroomsServed to be greater than ../../../BuildingSummary/BuildingConstruction/NumberofBedrooms [context: /HPXML/Building/BuildingDetails/Systems/Photovoltaics/PVSystem[IsSharedSystem="true"]]'],
|
|
223
|
+
'invalid-number-of-conditioned-floors.xml' => ['Expected NumberofConditionedFloors to be greater than or equal to NumberofConditionedFloorsAboveGrade [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]'],
|
|
224
|
+
'invalid-number-of-units-served.xml' => ['Expected NumberofUnitsServed to be greater than 1 [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem[IsSharedSystem="true"]]'],
|
|
215
225
|
'invalid-relatedhvac-dhw-indirect.xml' => ["RelatedHVACSystem 'HeatingSystem_bad' not found for water heating system 'WaterHeater'"],
|
|
216
226
|
'invalid-relatedhvac-desuperheater.xml' => ["RelatedHVACSystem 'CoolingSystem_bad' not found for water heating system 'WaterHeater'."],
|
|
217
227
|
'invalid-schema-version.xml' => ['HPXML version 3.0 is required.'],
|
|
228
|
+
'invalid-shared-vent-in-unit-flowrate.xml' => ['Expected extension/InUnitFlowRate to be less than RatedFlowRate [context: /HPXML/Building/BuildingDetails/Systems/MechanicalVentilation/VentilationFans/VentilationFan[UsedForWholeBuildingVentilation="true" and IsSharedSystem="true"]]'],
|
|
218
229
|
'invalid-timestep.xml' => ['Timestep (45) must be one of: 60, 30, 20, 15, 12, 10, 6, 5, 4, 3, 2, 1.'],
|
|
219
230
|
'invalid-runperiod.xml' => ['Run Period End Day of Month (31) must be one of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30.'],
|
|
220
|
-
'invalid-window-height.xml' => [
|
|
231
|
+
'invalid-window-height.xml' => ['Expected DistanceToBottomOfWindow to be greater than DistanceToTopOfWindow [context: /HPXML/Building/BuildingDetails/Enclosure/Windows/Window/Overhangs]'],
|
|
221
232
|
'lighting-fractions.xml' => ['Sum of fractions of interior lighting (1.15) is greater than 1.'],
|
|
222
|
-
'mismatched-slab-and-foundation-wall.xml' => ["Foundation wall 'FoundationWall' is adjacent to 'basement - conditioned' but no corresponding slab was found adjacent to"],
|
|
223
233
|
'missing-elements.xml' => ['Expected 1 element(s) for xpath: NumberofConditionedFloors [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]',
|
|
224
234
|
'Expected 1 element(s) for xpath: ConditionedFloorArea [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]'],
|
|
225
|
-
'missing-duct-location.xml' => ['Expected 0 or 2 element(s) for xpath: DuctSurfaceArea | DuctLocation [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/*/Ducts
|
|
226
|
-
'missing-duct-location-and-surface-area.xml' => ['Error: The location and surface area of all ducts must be provided or blank.'],
|
|
235
|
+
'missing-duct-location.xml' => ['Expected 0 or 2 element(s) for xpath: DuctSurfaceArea | DuctLocation [context: /HPXML/Building/BuildingDetails/Systems/HVAC/HVACDistribution/DistributionSystemType/*/Ducts]'],
|
|
227
236
|
'multifamily-reference-appliance.xml' => ["The building is of type 'single-family detached' but"],
|
|
228
237
|
'multifamily-reference-duct.xml' => ["The building is of type 'single-family detached' but"],
|
|
229
238
|
'multifamily-reference-surface.xml' => ["The building is of type 'single-family detached' but"],
|
|
230
239
|
'multifamily-reference-water-heater.xml' => ["The building is of type 'single-family detached' but"],
|
|
240
|
+
'multiple-buildings-without-building-id.xml' => ['Multiple Building elements defined in HPXML file; Building ID argument must be provided.'],
|
|
241
|
+
'multiple-buildings-wrong-building-id.xml' => ["Could not find Building element with ID 'MyFoo'."],
|
|
242
|
+
'multiple-shared-cooling-systems.xml' => ['More than one shared cooling system found.'],
|
|
243
|
+
'multiple-shared-heating-systems.xml' => ['More than one shared heating system found.'],
|
|
231
244
|
'net-area-negative-wall.xml' => ["Calculated a negative net surface area for surface 'Wall'."],
|
|
232
245
|
'net-area-negative-roof.xml' => ["Calculated a negative net surface area for surface 'Roof'."],
|
|
233
|
-
'num-bedrooms-exceeds-limit.xml' => ['
|
|
246
|
+
'num-bedrooms-exceeds-limit.xml' => ['Expected NumberofBedrooms to be less than or equal to (ConditionedFloorArea-120)/70 [context: /HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction]'],
|
|
234
247
|
'orphaned-hvac-distribution.xml' => ["Distribution system 'HVACDistribution' found but no HVAC system attached to it."],
|
|
235
|
-
'refrigerator-location.xml' => [
|
|
248
|
+
'refrigerator-location.xml' => ['A location is specified as "garage" but no surfaces were found adjacent to this space type.'],
|
|
249
|
+
'refrigerators-multiple-primary.xml' => ['More than one refrigerator designated as the primary.'],
|
|
250
|
+
'refrigerators-no-primary.xml' => ['Could not find a primary refrigerator.'],
|
|
236
251
|
'repeated-relatedhvac-dhw-indirect.xml' => ["RelatedHVACSystem 'HeatingSystem' is attached to multiple water heating systems."],
|
|
237
252
|
'repeated-relatedhvac-desuperheater.xml' => ["RelatedHVACSystem 'CoolingSystem' is attached to multiple water heating systems."],
|
|
238
|
-
'slab-zero-exposed-perimeter.xml' => [
|
|
253
|
+
'slab-zero-exposed-perimeter.xml' => ['Expected ExposedPerimeter to be greater than 0 [context: /HPXML/Building/BuildingDetails/Enclosure/Slabs/Slab]'],
|
|
239
254
|
'solar-thermal-system-with-combi-tankless.xml' => ["Water heating system 'WaterHeater' connected to solar thermal system 'SolarThermalSystem' cannot be a space-heating boiler."],
|
|
240
255
|
'solar-thermal-system-with-desuperheater.xml' => ["Water heating system 'WaterHeater' connected to solar thermal system 'SolarThermalSystem' cannot be attached to a desuperheater."],
|
|
241
256
|
'solar-thermal-system-with-dhw-indirect.xml' => ["Water heating system 'WaterHeater' connected to solar thermal system 'SolarThermalSystem' cannot be a space-heating boiler."],
|
|
@@ -247,14 +262,13 @@ class HPXMLTest < MiniTest::Test
|
|
|
247
262
|
'unattached-shared-clothes-washer-water-heater.xml' => ["Attached water heating system 'foobar' not found for clothes washer"],
|
|
248
263
|
'unattached-shared-dishwasher-water-heater.xml' => ["Attached water heating system 'foobar' not found for dishwasher"],
|
|
249
264
|
'unattached-window.xml' => ["Attached wall 'foobar' not found for window 'WindowNorth'."],
|
|
250
|
-
'water-heater-location.xml' => [
|
|
251
|
-
'water-heater-location-other.xml' => ["Expected Location to be 'living space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem]"]
|
|
252
|
-
'refrigerators-multiple-primary.xml' => ['More than one refrigerator designated as the primary.'],
|
|
253
|
-
'refrigerators-no-primary.xml' => ['Could not find a primary refrigerator.'] }
|
|
265
|
+
'water-heater-location.xml' => ['A location is specified as "crawlspace - vented" but no surfaces were found adjacent to this space type.'],
|
|
266
|
+
'water-heater-location-other.xml' => ["Expected Location to be 'living space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' [context: /HPXML/Building/BuildingDetails/Systems/WaterHeating/WaterHeatingSystem]"] }
|
|
254
267
|
|
|
255
268
|
# Test simulations
|
|
256
|
-
Dir["#{sample_files_dir}/invalid_files/*.xml"].sort
|
|
257
|
-
|
|
269
|
+
xmls = Dir["#{sample_files_dir}/invalid_files/*.xml"].sort
|
|
270
|
+
Parallel.map(xmls, in_threads: Parallel.processor_count) do |xml|
|
|
271
|
+
_run_xml(File.absolute_path(xml), Parallel.worker_number, true, expected_error_msgs[File.basename(xml)])
|
|
258
272
|
end
|
|
259
273
|
end
|
|
260
274
|
|
|
@@ -277,58 +291,25 @@ class HPXMLTest < MiniTest::Test
|
|
|
277
291
|
end
|
|
278
292
|
end
|
|
279
293
|
|
|
280
|
-
def _run_xml(xml, expect_error = false, expect_error_msgs = nil)
|
|
294
|
+
def _run_xml(xml, worker_num = nil, expect_error = false, expect_error_msgs = nil)
|
|
281
295
|
print "Testing #{File.basename(xml)}...\n"
|
|
282
|
-
rundir = File.join(@this_dir,
|
|
283
|
-
|
|
284
|
-
measures_dir = File.join(@this_dir, '..', '..')
|
|
285
|
-
|
|
286
|
-
measures = {}
|
|
296
|
+
rundir = File.join(@this_dir, "test#{worker_num}")
|
|
287
297
|
|
|
288
|
-
# Add HPXML translator measure to workflow
|
|
289
|
-
measure_subdir = 'HPXMLtoOpenStudio'
|
|
290
|
-
args = {}
|
|
291
|
-
args['hpxml_path'] = xml
|
|
292
|
-
args['output_dir'] = File.absolute_path(rundir)
|
|
293
|
-
args['debug'] = true
|
|
294
|
-
update_args_hash(measures, measure_subdir, args)
|
|
295
|
-
|
|
296
|
-
# Add reporting measure to workflow
|
|
297
298
|
# Uses 'monthly' to verify timeseries results match annual results via error-checking
|
|
298
299
|
# inside the SimulationOutputReport measure.
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
args['include_timeseries_zone_temperatures'] = true
|
|
308
|
-
args['include_timeseries_airflows'] = true
|
|
309
|
-
args['include_timeseries_weather'] = true
|
|
310
|
-
update_args_hash(measures, measure_subdir, args)
|
|
311
|
-
|
|
312
|
-
# Add output variables for combi system energy check and CFIS
|
|
313
|
-
output_vars = [['Water Heater Source Side Heat Transfer Energy', 'runperiod', '*'],
|
|
314
|
-
['Baseboard Total Heating Energy', 'runperiod', '*'],
|
|
315
|
-
['Boiler Heating Energy', 'runperiod', '*'],
|
|
316
|
-
['Fluid Heat Exchanger Heat Transfer Energy', 'runperiod', '*'],
|
|
317
|
-
['Fan Electricity Rate', 'runperiod', '*'],
|
|
318
|
-
['Fan Runtime Fraction', 'runperiod', '*'],
|
|
319
|
-
['Electric Equipment Electricity Energy', 'runperiod', Constants.ObjectNameMechanicalVentilationHouseFanCFIS]]
|
|
320
|
-
|
|
321
|
-
# Run workflow
|
|
300
|
+
cli_path = OpenStudio.getOpenStudioCLI
|
|
301
|
+
building_id = ''
|
|
302
|
+
if xml.include? 'base-multiple-buildings.xml'
|
|
303
|
+
building_id = '--building-id MyBuilding'
|
|
304
|
+
elsif xml.include? 'multiple-buildings-wrong-building-id.xml'
|
|
305
|
+
building_id = '--building-id MyFoo'
|
|
306
|
+
end
|
|
307
|
+
command = "\"#{cli_path}\" \"#{File.join(File.dirname(__FILE__), '../run_simulation.rb')}\" -x #{xml} -o #{rundir} --debug --monthly ALL #{building_id}"
|
|
322
308
|
workflow_start = Time.now
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
success = results[:success]
|
|
328
|
-
runner = results[:runner]
|
|
329
|
-
sim_time = results[:sim_time]
|
|
330
|
-
puts "Completed in #{workflow_time} seconds."
|
|
331
|
-
puts
|
|
309
|
+
success = system(command)
|
|
310
|
+
workflow_time = Time.now - workflow_start
|
|
311
|
+
|
|
312
|
+
rundir = File.join(rundir, 'run')
|
|
332
313
|
|
|
333
314
|
# Check results
|
|
334
315
|
if expect_error
|
|
@@ -357,7 +338,6 @@ class HPXMLTest < MiniTest::Test
|
|
|
357
338
|
return
|
|
358
339
|
end
|
|
359
340
|
|
|
360
|
-
show_output(runner.result) unless success
|
|
361
341
|
assert_equal(true, success)
|
|
362
342
|
|
|
363
343
|
# Check for output files
|
|
@@ -367,16 +347,26 @@ class HPXMLTest < MiniTest::Test
|
|
|
367
347
|
assert(File.exist? timeseries_csv_path)
|
|
368
348
|
|
|
369
349
|
# Get results
|
|
370
|
-
results = _get_results(rundir,
|
|
371
|
-
sizing_results = _get_sizing_results(rundir)
|
|
350
|
+
results = _get_results(rundir, workflow_time, annual_csv_path, xml)
|
|
372
351
|
|
|
373
352
|
# Check outputs
|
|
374
|
-
|
|
353
|
+
hpxml_defaults_path = File.join(rundir, 'in.xml')
|
|
354
|
+
stron_paths = [File.join(File.dirname(__FILE__), '..', '..', 'HPXMLtoOpenStudio', 'resources', 'EPvalidator.xml')]
|
|
355
|
+
hpxml = HPXML.new(hpxml_path: hpxml_defaults_path, schematron_validators: stron_paths) # Validate in.xml to ensure it can be run back through OS-HPXML
|
|
356
|
+
if not hpxml.errors.empty?
|
|
357
|
+
puts 'ERRORS:'
|
|
358
|
+
hpxml.errors.each do |error|
|
|
359
|
+
puts error
|
|
360
|
+
end
|
|
361
|
+
flunk "EPvalidator.xml error in #{hpxml_defaults_path}."
|
|
362
|
+
end
|
|
363
|
+
sizing_results = _get_sizing_results(hpxml, xml)
|
|
364
|
+
_verify_outputs(rundir, xml, results, hpxml)
|
|
375
365
|
|
|
376
366
|
return results, sizing_results
|
|
377
367
|
end
|
|
378
368
|
|
|
379
|
-
def _get_results(rundir,
|
|
369
|
+
def _get_results(rundir, workflow_time, annual_csv_path, xml)
|
|
380
370
|
# Grab all outputs from reporting measure CSV annual results
|
|
381
371
|
results = {}
|
|
382
372
|
CSV.foreach(annual_csv_path) do |row|
|
|
@@ -385,35 +375,6 @@ class HPXMLTest < MiniTest::Test
|
|
|
385
375
|
results[row[0]] = Float(row[1])
|
|
386
376
|
end
|
|
387
377
|
|
|
388
|
-
sql_path = File.join(rundir, 'eplusout.sql')
|
|
389
|
-
sqlFile = OpenStudio::SqlFile.new(sql_path, false)
|
|
390
|
-
|
|
391
|
-
# Obtain HVAC capacities
|
|
392
|
-
# TODO: Add to reporting measure?
|
|
393
|
-
htg_cap_w = 0
|
|
394
|
-
for spd in [4, 2]
|
|
395
|
-
# Get capacity of highest speed for multi-speed coil
|
|
396
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE CompType='Coil:Heating:DX:MultiSpeed' AND Description LIKE '%User-Specified Speed #{spd}%Capacity' AND Units='W'"
|
|
397
|
-
htg_cap_w += sqlFile.execAndReturnFirstDouble(query).get
|
|
398
|
-
break if htg_cap_w > 0
|
|
399
|
-
end
|
|
400
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE ((CompType LIKE 'Coil:Heating:%' OR CompType LIKE 'Boiler:%' OR CompType LIKE 'ZONEHVAC:BASEBOARD:%') AND CompType!='Coil:Heating:DX:MultiSpeed') AND Description LIKE '%User-Specified%Capacity' AND Units='W'"
|
|
401
|
-
htg_cap_w += sqlFile.execAndReturnFirstDouble(query).get
|
|
402
|
-
results['Capacity: Heating (W)'] = htg_cap_w
|
|
403
|
-
|
|
404
|
-
clg_cap_w = 0
|
|
405
|
-
for spd in [4, 2]
|
|
406
|
-
# Get capacity of highest speed for multi-speed coil
|
|
407
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE CompType='Coil:Cooling:DX:MultiSpeed' AND Description LIKE 'User-Specified Speed #{spd}%Total%Capacity' AND Units='W'"
|
|
408
|
-
clg_cap_w += sqlFile.execAndReturnFirstDouble(query).get
|
|
409
|
-
break if clg_cap_w > 0
|
|
410
|
-
end
|
|
411
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE CompType LIKE 'Coil:Cooling:%' AND CompType!='Coil:Cooling:DX:MultiSpeed' AND Description LIKE '%User-Specified%Total%Capacity' AND Units='W'"
|
|
412
|
-
clg_cap_w += sqlFile.execAndReturnFirstDouble(query).get
|
|
413
|
-
results['Capacity: Cooling (W)'] = clg_cap_w
|
|
414
|
-
|
|
415
|
-
sqlFile.close
|
|
416
|
-
|
|
417
378
|
# Check discrepancy between total load and sum of component loads
|
|
418
379
|
if not xml.include? 'ASHRAE_Standard_140'
|
|
419
380
|
sum_component_htg_loads = results.select { |k, v| k.start_with? 'Component Load: Heating:' }.map { |k, v| v }.sum(0.0)
|
|
@@ -424,38 +385,81 @@ class HPXMLTest < MiniTest::Test
|
|
|
424
385
|
assert_operator(residual_clg_load.abs, :<, 0.5)
|
|
425
386
|
end
|
|
426
387
|
|
|
427
|
-
results[@@simulation_runtime_key] = sim_time
|
|
428
388
|
results[@@workflow_runtime_key] = workflow_time
|
|
429
389
|
|
|
430
390
|
return results
|
|
431
391
|
end
|
|
432
392
|
|
|
433
|
-
def _get_sizing_results(
|
|
393
|
+
def _get_sizing_results(hpxml, xml)
|
|
434
394
|
results = {}
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
results[
|
|
445
|
-
|
|
395
|
+
return if xml.include? 'ASHRAE_Standard_140'
|
|
396
|
+
|
|
397
|
+
# Heating design loads
|
|
398
|
+
hpxml.hvac_plant.class::HDL_ATTRS.each do |attr, element_name|
|
|
399
|
+
results["heating_load_#{attr.to_s.gsub('hdl_', '')} [Btuh]"] = hpxml.hvac_plant.send(attr.to_s)
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
# Cooling sensible design loads
|
|
403
|
+
hpxml.hvac_plant.class::CDL_SENS_ATTRS.each do |attr, element_name|
|
|
404
|
+
results["cooling_load_#{attr.to_s.gsub('cdl_', '')} [Btuh]"] = hpxml.hvac_plant.send(attr.to_s)
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
# Cooling latent design loads
|
|
408
|
+
hpxml.hvac_plant.class::CDL_LAT_ATTRS.each do |attr, element_name|
|
|
409
|
+
results["cooling_load_#{attr.to_s.gsub('cdl_', '')} [Btuh]"] = hpxml.hvac_plant.send(attr.to_s)
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
# Heating capacities/airflows
|
|
413
|
+
results['heating_capacity [Btuh]'] = 0.0
|
|
414
|
+
results['heating_backup_capacity [Btuh]'] = 0.0
|
|
415
|
+
results['heating_airflow [cfm]'] = 0.0
|
|
416
|
+
(hpxml.heating_systems + hpxml.heat_pumps).each do |htg_sys|
|
|
417
|
+
results['heating_capacity [Btuh]'] += htg_sys.heating_capacity
|
|
418
|
+
if htg_sys.respond_to? :backup_heating_capacity
|
|
419
|
+
results['heating_backup_capacity [Btuh]'] += htg_sys.backup_heating_capacity
|
|
420
|
+
end
|
|
421
|
+
results['heating_airflow [cfm]'] += htg_sys.heating_airflow_cfm
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
# Cooling capacity/airflows
|
|
425
|
+
results['cooling_capacity [Btuh]'] = 0.0
|
|
426
|
+
results['cooling_airflow [cfm]'] = 0.0
|
|
427
|
+
(hpxml.cooling_systems + hpxml.heat_pumps).each do |clg_sys|
|
|
428
|
+
results['cooling_capacity [Btuh]'] += clg_sys.cooling_capacity
|
|
429
|
+
results['cooling_airflow [cfm]'] += clg_sys.cooling_airflow_cfm
|
|
446
430
|
end
|
|
431
|
+
|
|
447
432
|
assert(!results.empty?)
|
|
433
|
+
|
|
434
|
+
if (hpxml.heating_systems + hpxml.heat_pumps).select { |h| h.fraction_heat_load_served.to_f > 0 }.empty?
|
|
435
|
+
# No heating equipment; check for zero heating capacities/airflows/duct loads
|
|
436
|
+
assert_equal(0.0, results['heating_capacity [Btuh]'])
|
|
437
|
+
assert_equal(0.0, results['heating_backup_capacity [Btuh]'])
|
|
438
|
+
assert_equal(0.0, results['heating_airflow [cfm]'])
|
|
439
|
+
assert_equal(0.0, results['heating_load_ducts [Btuh]'])
|
|
440
|
+
end
|
|
441
|
+
if (hpxml.cooling_systems + hpxml.heat_pumps).select { |c| c.fraction_cool_load_served.to_f > 0 }.empty?
|
|
442
|
+
# No cooling equipment; check for zero cooling capacities/airflows/duct loads
|
|
443
|
+
assert_equal(0.0, results['cooling_capacity [Btuh]'])
|
|
444
|
+
assert_equal(0.0, results['cooling_airflow [cfm]'])
|
|
445
|
+
assert_equal(0.0, results['cooling_load_sens_ducts [Btuh]'])
|
|
446
|
+
assert_equal(0.0, results['cooling_load_lat_ducts [Btuh]'])
|
|
447
|
+
end
|
|
448
|
+
if hpxml.hvac_distributions.map { |dist| dist.ducts.size }.empty?
|
|
449
|
+
# No ducts; check for zero duct loads
|
|
450
|
+
assert_equal(0.0, results['heating_load_ducts [Btuh]'])
|
|
451
|
+
assert_equal(0.0, results['cooling_load_sens_ducts [Btuh]'])
|
|
452
|
+
assert_equal(0.0, results['cooling_load_lat_ducts [Btuh]'])
|
|
453
|
+
end
|
|
454
|
+
|
|
448
455
|
return results
|
|
449
456
|
end
|
|
450
457
|
|
|
451
|
-
def _verify_outputs(
|
|
458
|
+
def _verify_outputs(rundir, hpxml_path, results, hpxml)
|
|
452
459
|
sql_path = File.join(rundir, 'eplusout.sql')
|
|
453
460
|
assert(File.exist? sql_path)
|
|
454
461
|
|
|
455
462
|
sqlFile = OpenStudio::SqlFile.new(sql_path, false)
|
|
456
|
-
hpxml_defaults_path = File.join(rundir, 'in.xml')
|
|
457
|
-
hpxml = HPXML.new(hpxml_path: hpxml_defaults_path)
|
|
458
|
-
HVAC.apply_shared_systems(hpxml)
|
|
459
463
|
|
|
460
464
|
# Collapse windows further using same logic as measure.rb
|
|
461
465
|
hpxml.windows.each do |window|
|
|
@@ -469,10 +473,11 @@ class HPXMLTest < MiniTest::Test
|
|
|
469
473
|
next if log_line.include? 'Warning: Could not load nokogiri, no HPXML validation performed.'
|
|
470
474
|
next if log_line.start_with? 'Info: '
|
|
471
475
|
next if log_line.start_with? 'Executing command'
|
|
472
|
-
next if (log_line.start_with?('Heat ') || log_line.start_with?('Cool ')) && log_line.include?('=')
|
|
473
476
|
next if log_line.include? "-cache.csv' could not be found; regenerating it."
|
|
474
|
-
next if log_line.include?('Warning: HVACDistribution') && log_line.include?('has ducts entirely within conditioned space but there is non-zero leakage to the outside.')
|
|
475
477
|
|
|
478
|
+
if hpxml_path.include? 'base-atticroof-conditioned.xml'
|
|
479
|
+
next if log_line.include?('Ducts are entirely within conditioned space but there is moderate leakage to the outside. Leakage to the outside is typically zero or near-zero in these situations, consider revising leakage values. Leakage will be modeled as heat lost to the ambient environment.')
|
|
480
|
+
end
|
|
476
481
|
if hpxml.clothes_washers.empty?
|
|
477
482
|
next if log_line.include? 'No clothes washer specified, the model will not include clothes washer energy use.'
|
|
478
483
|
end
|
|
@@ -489,13 +494,13 @@ class HPXMLTest < MiniTest::Test
|
|
|
489
494
|
next if log_line.include? 'No cooking range specified, the model will not include cooking range/oven energy use.'
|
|
490
495
|
end
|
|
491
496
|
if hpxml.water_heating_systems.empty?
|
|
492
|
-
next if log_line.include? 'No water
|
|
497
|
+
next if log_line.include? 'No water heating specified, the model will not include water heating energy use.'
|
|
493
498
|
end
|
|
494
499
|
if (hpxml.heating_systems + hpxml.heat_pumps).select { |h| h.fraction_heat_load_served.to_f > 0 }.empty?
|
|
495
|
-
next if log_line.include? 'No heating
|
|
500
|
+
next if log_line.include? 'No space heating specified, the model will not include space heating energy use.'
|
|
496
501
|
end
|
|
497
502
|
if (hpxml.cooling_systems + hpxml.heat_pumps).select { |c| c.fraction_cool_load_served.to_f > 0 }.empty?
|
|
498
|
-
next if log_line.include? 'No cooling
|
|
503
|
+
next if log_line.include? 'No space cooling specified, the model will not include space cooling energy use.'
|
|
499
504
|
end
|
|
500
505
|
if hpxml.plug_loads.select { |p| p.plug_load_type == HPXML::PlugLoadTypeOther }.empty?
|
|
501
506
|
next if log_line.include? "No '#{HPXML::PlugLoadTypeOther}' plug loads specified, the model will not include misc plug load energy use."
|
|
@@ -506,6 +511,9 @@ class HPXMLTest < MiniTest::Test
|
|
|
506
511
|
if hpxml.lighting_groups.empty?
|
|
507
512
|
next if log_line.include? 'No lighting specified, the model will not include lighting energy use.'
|
|
508
513
|
end
|
|
514
|
+
if hpxml.windows.empty?
|
|
515
|
+
next if log_line.include? 'No windows specified, the model will not include window heat transfer.'
|
|
516
|
+
end
|
|
509
517
|
|
|
510
518
|
flunk "Unexpected warning found in run.log: #{log_line}"
|
|
511
519
|
end
|
|
@@ -567,10 +575,19 @@ class HPXMLTest < MiniTest::Test
|
|
|
567
575
|
if hpxml.cooling_systems.select { |c| c.cooling_system_type == HPXML::HVACTypeRoomAirConditioner }.size > 0
|
|
568
576
|
next if err_line.include? 'GetDXCoils: Coil:Cooling:DX:SingleSpeed="ROOM AC CLG COIL" curve values' # TODO: Double-check Room AC curves
|
|
569
577
|
end
|
|
570
|
-
if hpxml.hvac_distributions.select { |d| d.
|
|
578
|
+
if hpxml.hvac_distributions.select { |d| d.air_type.to_s == HPXML::AirTypeFanCoil }.size > 0
|
|
571
579
|
next if err_line.include? 'In calculating the design coil UA for Coil:Cooling:Water' # Warning for unused cooling coil for fan coil
|
|
572
580
|
end
|
|
573
|
-
if hpxml_path.include?('
|
|
581
|
+
if hpxml_path.include?('ASHRAE_Standard_140') || (hpxml.windows.size == 0)
|
|
582
|
+
next if err_line.include? 'GetShadowingInput: DetailedSkyDiffuseModeling is chosen but not needed'
|
|
583
|
+
end
|
|
584
|
+
if hpxml_path.include? 'base-enclosure-split-surfaces2.xml'
|
|
585
|
+
next if err_line.include? 'GetSurfaceData: Very small surface area' # FUTURE: Prevent this warning
|
|
586
|
+
end
|
|
587
|
+
if hpxml_path.include?('ground-to-air-heat-pump-cooling-only.xml') || hpxml_path.include?('ground-to-air-heat-pump-heating-only.xml')
|
|
588
|
+
next if err_line.include? 'COIL:HEATING:WATERTOAIRHEATPUMP:EQUATIONFIT' # heating capacity is > 20% different than cooling capacity; safe to ignore
|
|
589
|
+
end
|
|
590
|
+
if hpxml_path.include?('base-schedules-stochastic.xml') || hpxml_path.include?('base-schedules-stochastic-vacant.xml') || hpxml_path.include?('base-schedules-user-specified.xml')
|
|
574
591
|
next if err_line.include?('GetCurrentScheduleValue: Schedule=') && err_line.include?('is a Schedule:File')
|
|
575
592
|
end
|
|
576
593
|
|
|
@@ -665,9 +682,11 @@ class HPXMLTest < MiniTest::Test
|
|
|
665
682
|
num_expected_kiva_instances = { 'base-foundation-ambient.xml' => 0, # no foundation in contact w/ ground
|
|
666
683
|
'base-foundation-multiple.xml' => 2, # additional instance for 2nd foundation type
|
|
667
684
|
'base-enclosure-2stories-garage.xml' => 2, # additional instance for garage
|
|
685
|
+
'base-foundation-basement-garage.xml' => 2, # additional instance for garage
|
|
668
686
|
'base-enclosure-garage.xml' => 2, # additional instance for garage
|
|
669
687
|
'base-foundation-walkout-basement.xml' => 4, # 3 foundation walls plus a no-wall exposed perimeter
|
|
670
|
-
'base-foundation-complex.xml' => 10
|
|
688
|
+
'base-foundation-complex.xml' => 10, # lots of foundations for testing
|
|
689
|
+
'base-enclosure-split-surfaces2.xml' => 81 } # lots of foundations for testing
|
|
671
690
|
|
|
672
691
|
if not num_expected_kiva_instances[File.basename(hpxml_path)].nil?
|
|
673
692
|
assert_equal(num_expected_kiva_instances[File.basename(hpxml_path)], num_kiva_instances)
|
|
@@ -982,154 +1001,14 @@ class HPXMLTest < MiniTest::Test
|
|
|
982
1001
|
assert_in_epsilon(hpxml_value, sql_value, 0.02)
|
|
983
1002
|
end
|
|
984
1003
|
|
|
985
|
-
# HVAC Heating Systems
|
|
986
|
-
hpxml.heating_systems.each do |heating_system|
|
|
987
|
-
next unless heating_system.fraction_heat_load_served > 0
|
|
988
|
-
next unless hpxml.heating_systems.size == 1
|
|
989
|
-
|
|
990
|
-
next unless (not heating_system.fan_watts.nil?) || (not heating_system.fan_watts_per_cfm.nil?)
|
|
991
|
-
# Compare fan power from timeseries output
|
|
992
|
-
next if hpxml.cooling_systems.size + hpxml.heat_pumps.size > 0 # Skip if other system types (which could result in A) multiple supply fans or B) different supply fan power consumption in the cooling season)
|
|
993
|
-
|
|
994
|
-
if not heating_system.fan_watts.nil?
|
|
995
|
-
hpxml_value = heating_system.fan_watts
|
|
996
|
-
else
|
|
997
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE Description='User-Specified Heating Supply Air Flow Rate'"
|
|
998
|
-
heating_cfm = UnitConversions.convert(sqlFile.execAndReturnFirstDouble(query).get, 'm^3/s', 'cfm')
|
|
999
|
-
hpxml_value = heating_system.fan_watts_per_cfm * heating_cfm
|
|
1000
|
-
end
|
|
1001
|
-
query = "SELECT SUM(VariableValue) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Avg' AND VariableName='Fan Runtime Fraction' AND ReportingFrequency='Run Period')"
|
|
1002
|
-
avg_rtf = sqlFile.execAndReturnFirstDouble(query).get
|
|
1003
|
-
query = "SELECT SUM(VariableValue) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Avg' AND VariableName='Fan Electricity Rate' AND ReportingFrequency='Run Period')"
|
|
1004
|
-
avg_w = sqlFile.execAndReturnFirstDouble(query).get
|
|
1005
|
-
sql_value = avg_w / avg_rtf
|
|
1006
|
-
assert_in_epsilon(sql_value, hpxml_value, 0.01)
|
|
1007
|
-
end
|
|
1008
|
-
|
|
1009
|
-
# HVAC Cooling Systems
|
|
1010
|
-
hpxml.cooling_systems.each do |cooling_system|
|
|
1011
|
-
next unless cooling_system.fraction_cool_load_served > 0
|
|
1012
|
-
next unless hpxml.cooling_systems.size == 1
|
|
1013
|
-
next unless not cooling_system.fan_watts_per_cfm.nil?
|
|
1014
|
-
next if hpxml.heating_systems.size + hpxml.heat_pumps.size > 0 # Skip if other system types (which could result in A) multiple supply fans or B) different supply fan power consumption in the heating season)
|
|
1015
|
-
next unless cooling_system.compressor_type == HPXML::HVACCompressorTypeSingleStage
|
|
1016
|
-
|
|
1017
|
-
# Compare fan power from timeseries output
|
|
1018
|
-
query = "SELECT SUM(Value) FROM ComponentSizes WHERE Description='User-Specified Cooling Supply Air Flow Rate'"
|
|
1019
|
-
cooling_cfm = UnitConversions.convert(sqlFile.execAndReturnFirstDouble(query).get, 'm^3/s', 'cfm')
|
|
1020
|
-
hpxml_value = cooling_system.fan_watts_per_cfm * cooling_cfm
|
|
1021
|
-
query = "SELECT SUM(VariableValue) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Avg' AND VariableName='Fan Runtime Fraction' AND ReportingFrequency='Run Period')"
|
|
1022
|
-
avg_rtf = sqlFile.execAndReturnFirstDouble(query).get
|
|
1023
|
-
query = "SELECT SUM(VariableValue) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Avg' AND VariableName='Fan Electricity Rate' AND ReportingFrequency='Run Period')"
|
|
1024
|
-
avg_w = sqlFile.execAndReturnFirstDouble(query).get
|
|
1025
|
-
sql_value = avg_w / avg_rtf
|
|
1026
|
-
assert_in_epsilon(sql_value, hpxml_value, 0.01)
|
|
1027
|
-
end
|
|
1028
|
-
|
|
1029
|
-
# HVAC Capacities
|
|
1030
|
-
htg_cap = nil
|
|
1031
|
-
clg_cap = nil
|
|
1032
|
-
hpxml.heating_systems.each do |heating_system|
|
|
1033
|
-
htg_sys_cap = heating_system.heating_capacity.to_f
|
|
1034
|
-
if htg_sys_cap > 0
|
|
1035
|
-
htg_cap = 0 if htg_cap.nil?
|
|
1036
|
-
htg_cap += htg_sys_cap
|
|
1037
|
-
end
|
|
1038
|
-
end
|
|
1039
|
-
hpxml.cooling_systems.each do |cooling_system|
|
|
1040
|
-
clg_sys_cap = cooling_system.cooling_capacity.to_f
|
|
1041
|
-
clg_cap_mult = 1.0
|
|
1042
|
-
if cooling_system.cooling_system_type == HPXML::HVACTypeMiniSplitAirConditioner
|
|
1043
|
-
# TODO: Generalize this
|
|
1044
|
-
clg_cap_mult = 1.20
|
|
1045
|
-
end
|
|
1046
|
-
if clg_sys_cap > 0
|
|
1047
|
-
clg_cap = 0 if clg_cap.nil?
|
|
1048
|
-
clg_cap += (clg_sys_cap * clg_cap_mult)
|
|
1049
|
-
end
|
|
1050
|
-
end
|
|
1051
|
-
hpxml.heat_pumps.each do |heat_pump|
|
|
1052
|
-
hp_cap_clg = heat_pump.cooling_capacity.to_f
|
|
1053
|
-
hp_cap_htg = heat_pump.heating_capacity.to_f
|
|
1054
|
-
clg_cap_mult = 1.0
|
|
1055
|
-
htg_cap_mult = 1.0
|
|
1056
|
-
if heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpMiniSplit
|
|
1057
|
-
# TODO: Generalize this
|
|
1058
|
-
clg_cap_mult = 1.20
|
|
1059
|
-
htg_cap_mult = 1.20
|
|
1060
|
-
elsif (heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpAirToAir) && (heat_pump.cooling_efficiency_seer > 21)
|
|
1061
|
-
# TODO: Generalize this
|
|
1062
|
-
htg_cap_mult = 1.17
|
|
1063
|
-
end
|
|
1064
|
-
supp_hp_cap = heat_pump.backup_heating_capacity.to_f
|
|
1065
|
-
if hp_cap_clg > 0
|
|
1066
|
-
clg_cap = 0 if clg_cap.nil?
|
|
1067
|
-
clg_cap += (hp_cap_clg * clg_cap_mult)
|
|
1068
|
-
end
|
|
1069
|
-
if hp_cap_htg > 0
|
|
1070
|
-
htg_cap = 0 if htg_cap.nil?
|
|
1071
|
-
htg_cap += (hp_cap_htg * htg_cap_mult)
|
|
1072
|
-
end
|
|
1073
|
-
if supp_hp_cap > 0
|
|
1074
|
-
htg_cap = 0 if htg_cap.nil?
|
|
1075
|
-
htg_cap += supp_hp_cap
|
|
1076
|
-
end
|
|
1077
|
-
end
|
|
1078
|
-
if not clg_cap.nil?
|
|
1079
|
-
sql_value = UnitConversions.convert(results['Capacity: Cooling (W)'], 'W', 'Btu/hr')
|
|
1080
|
-
if clg_cap == 0
|
|
1081
|
-
assert_operator(sql_value, :<, 1)
|
|
1082
|
-
elsif clg_cap > 0
|
|
1083
|
-
if hpxml.header.allow_increased_fixed_capacities
|
|
1084
|
-
assert_operator(sql_value, :>=, clg_cap)
|
|
1085
|
-
else
|
|
1086
|
-
assert_in_epsilon(clg_cap, sql_value, 0.01)
|
|
1087
|
-
end
|
|
1088
|
-
else # autosized
|
|
1089
|
-
assert_operator(sql_value, :>, 1)
|
|
1090
|
-
end
|
|
1091
|
-
end
|
|
1092
|
-
if not htg_cap.nil?
|
|
1093
|
-
sql_value = UnitConversions.convert(results['Capacity: Heating (W)'], 'W', 'Btu/hr')
|
|
1094
|
-
if htg_cap == 0
|
|
1095
|
-
assert_operator(sql_value, :<, 1)
|
|
1096
|
-
elsif htg_cap > 0
|
|
1097
|
-
if hpxml.header.allow_increased_fixed_capacities
|
|
1098
|
-
assert_operator(sql_value, :>=, htg_cap)
|
|
1099
|
-
else
|
|
1100
|
-
assert_in_epsilon(htg_cap, sql_value, 0.01)
|
|
1101
|
-
end
|
|
1102
|
-
else # autosized
|
|
1103
|
-
assert_operator(sql_value, :>, 1)
|
|
1104
|
-
end
|
|
1105
|
-
end
|
|
1106
|
-
|
|
1107
1004
|
# HVAC Load Fractions
|
|
1108
|
-
if not hpxml_path.include? 'location-miami'
|
|
1005
|
+
if (not hpxml_path.include? 'location-miami') && (not hpxml_path.include? 'location-honolulu') && (not hpxml_path.include? 'location-phoenix')
|
|
1109
1006
|
htg_energy = results.select { |k, v| (k.include?(': Heating (MBtu)') || k.include?(': Heating Fans/Pumps (MBtu)')) && !k.include?('Load') }.map { |k, v| v }.sum(0.0)
|
|
1110
1007
|
assert_equal(hpxml.total_fraction_heat_load_served > 0, htg_energy > 0)
|
|
1111
1008
|
end
|
|
1112
1009
|
clg_energy = results.select { |k, v| (k.include?(': Cooling (MBtu)') || k.include?(': Cooling Fans/Pumps (MBtu)')) && !k.include?('Load') }.map { |k, v| v }.sum(0.0)
|
|
1113
1010
|
assert_equal(hpxml.total_fraction_cool_load_served > 0, clg_energy > 0)
|
|
1114
1011
|
|
|
1115
|
-
# Water Heater
|
|
1116
|
-
if hpxml.water_heating_systems.select { |wh| [HPXML::WaterHeaterTypeCombiStorage, HPXML::WaterHeaterTypeCombiTankless].include? wh.water_heater_type }.size > 0
|
|
1117
|
-
query = "SELECT SUM(ABS(VariableValue)/1000000000) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Sum' AND VariableName='Fluid Heat Exchanger Heat Transfer Energy' AND ReportingFrequency='Run Period' AND VariableUnits='J')"
|
|
1118
|
-
combi_hx_load = sqlFile.execAndReturnFirstDouble(query).get.round(2)
|
|
1119
|
-
query = "SELECT SUM(ABS(VariableValue)/1000000000) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Sum' AND VariableName='Boiler Heating Energy' AND ReportingFrequency='Run Period' AND VariableUnits='J')"
|
|
1120
|
-
combi_htg_load = sqlFile.execAndReturnFirstDouble(query).get.round(2)
|
|
1121
|
-
|
|
1122
|
-
# Check combi system energy balance
|
|
1123
|
-
query = "SELECT SUM(ABS(VariableValue)/1000000000) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Sum' AND VariableName='Water Heater Source Side Heat Transfer Energy' AND VariableUnits='J')"
|
|
1124
|
-
combi_tank_source_load = sqlFile.execAndReturnFirstDouble(query).get.round(2)
|
|
1125
|
-
assert_in_epsilon(combi_hx_load, combi_tank_source_load, 0.02)
|
|
1126
|
-
|
|
1127
|
-
# Check boiler, hx, pump, heating coil energy balance
|
|
1128
|
-
query = "SELECT SUM(ABS(VariableValue)/1000000000) FROM ReportVariableData WHERE ReportVariableDataDictionaryIndex IN (SELECT ReportVariableDataDictionaryIndex FROM ReportVariableDataDictionary WHERE VariableType='Sum' AND VariableName='Baseboard Total Heating Energy' AND VariableUnits='J')"
|
|
1129
|
-
boiler_space_heating_load = sqlFile.execAndReturnFirstDouble(query).get.round(2)
|
|
1130
|
-
assert_in_epsilon(combi_hx_load + boiler_space_heating_load, combi_htg_load, 0.02)
|
|
1131
|
-
end
|
|
1132
|
-
|
|
1133
1012
|
# Mechanical Ventilation
|
|
1134
1013
|
fan_cfis = hpxml.ventilation_fans.select { |vent_mech| vent_mech.used_for_whole_building_ventilation && (vent_mech.fan_type == HPXML::MechVentTypeCFIS) }
|
|
1135
1014
|
fan_sup = hpxml.ventilation_fans.select { |vent_mech| vent_mech.used_for_whole_building_ventilation && (vent_mech.fan_type == HPXML::MechVentTypeSupply) }
|
|
@@ -1139,43 +1018,36 @@ class HPXMLTest < MiniTest::Test
|
|
|
1139
1018
|
vent_fan_bath = hpxml.ventilation_fans.select { |vent_mech| vent_mech.used_for_local_ventilation && (vent_mech.fan_location == HPXML::LocationBath) }
|
|
1140
1019
|
|
|
1141
1020
|
if not (fan_cfis + fan_sup + fan_exh + fan_bal + vent_fan_kitchen + vent_fan_bath).empty?
|
|
1142
|
-
mv_energy = UnitConversions.convert(results['Electricity: Mech Vent (MBtu)'], 'MBtu', 'GJ')
|
|
1021
|
+
mv_energy = UnitConversions.convert(results['End Use: Electricity: Mech Vent (MBtu)'], 'MBtu', 'GJ')
|
|
1143
1022
|
|
|
1144
1023
|
if not fan_cfis.empty?
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
if fan_gj > 0
|
|
1151
|
-
assert_operator(cfis_energy, :>, 0)
|
|
1152
|
-
assert_operator(cfis_energy, :<, fan_gj)
|
|
1153
|
-
else
|
|
1154
|
-
assert_equal(cfis_energy, 0.0)
|
|
1024
|
+
if (fan_sup + fan_exh + fan_bal + vent_fan_kitchen + vent_fan_bath).empty?
|
|
1025
|
+
# CFIS only, check for positive mech vent energy that is less than the energy if it had run 24/7
|
|
1026
|
+
fan_gj = fan_cfis.map { |vent_mech| UnitConversions.convert(vent_mech.unit_fan_power * vent_mech.hours_in_operation * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1027
|
+
assert_operator(mv_energy, :>, 0)
|
|
1028
|
+
assert_operator(mv_energy, :<, fan_gj)
|
|
1155
1029
|
end
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1030
|
+
else
|
|
1031
|
+
# Supply, exhaust, ERV, HRV, etc., check for appropriate mech vent energy
|
|
1032
|
+
fan_gj = 0
|
|
1033
|
+
if not fan_sup.empty?
|
|
1034
|
+
fan_gj += fan_sup.map { |vent_mech| UnitConversions.convert(vent_mech.unit_fan_power * vent_mech.hours_in_operation * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1035
|
+
end
|
|
1036
|
+
if not fan_exh.empty?
|
|
1037
|
+
fan_gj += fan_exh.map { |vent_mech| UnitConversions.convert(vent_mech.unit_fan_power * vent_mech.hours_in_operation * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1038
|
+
end
|
|
1039
|
+
if not fan_bal.empty?
|
|
1040
|
+
fan_gj += fan_bal.map { |vent_mech| UnitConversions.convert(vent_mech.unit_fan_power * vent_mech.hours_in_operation * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1041
|
+
end
|
|
1042
|
+
if not vent_fan_kitchen.empty?
|
|
1043
|
+
fan_gj += vent_fan_kitchen.map { |vent_kitchen| UnitConversions.convert(vent_kitchen.unit_fan_power * vent_kitchen.hours_in_operation * vent_kitchen.quantity * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1044
|
+
end
|
|
1045
|
+
if not vent_fan_bath.empty?
|
|
1046
|
+
fan_gj += vent_fan_bath.map { |vent_bath| UnitConversions.convert(vent_bath.unit_fan_power * vent_bath.hours_in_operation * vent_bath.quantity * 365.0, 'Wh', 'GJ') }.sum(0.0)
|
|
1047
|
+
end
|
|
1048
|
+
# Maximum error that can be caused by rounding
|
|
1049
|
+
assert_in_delta(mv_energy, fan_gj, 0.006)
|
|
1176
1050
|
end
|
|
1177
|
-
# Maximum error that can be caused by rounding
|
|
1178
|
-
assert_in_delta(mv_energy, fan_gj, 0.006)
|
|
1179
1051
|
end
|
|
1180
1052
|
|
|
1181
1053
|
# Clothes Washer
|
|
@@ -1239,8 +1111,10 @@ class HPXMLTest < MiniTest::Test
|
|
|
1239
1111
|
end
|
|
1240
1112
|
|
|
1241
1113
|
# Lighting
|
|
1242
|
-
ltg_energy = results.select { |k, v| k.include? 'Electricity: Lighting' }.map { |k, v| v }.sum(0.0)
|
|
1243
|
-
|
|
1114
|
+
ltg_energy = results.select { |k, v| k.include? 'End Use: Electricity: Lighting' }.map { |k, v| v }.sum(0.0)
|
|
1115
|
+
if hpxml.header.schedules_path.nil?
|
|
1116
|
+
assert_equal(hpxml.lighting_groups.size > 0, ltg_energy > 0)
|
|
1117
|
+
end
|
|
1244
1118
|
|
|
1245
1119
|
# Get fuels
|
|
1246
1120
|
htg_fuels = []
|
|
@@ -1270,11 +1144,11 @@ class HPXMLTest < MiniTest::Test
|
|
|
1270
1144
|
HPXML::FuelTypeCoal].each do |fuel|
|
|
1271
1145
|
fuel_name = fuel.split.map(&:capitalize).join(' ')
|
|
1272
1146
|
fuel_name += ' Cord' if fuel_name == 'Wood'
|
|
1273
|
-
energy_htg = results.fetch("#{fuel_name}: Heating (MBtu)", 0)
|
|
1274
|
-
energy_dhw = results.fetch("#{fuel_name}: Hot Water (MBtu)", 0)
|
|
1275
|
-
energy_cd = results.fetch("#{fuel_name}: Clothes Dryer (MBtu)", 0)
|
|
1276
|
-
energy_cr = results.fetch("#{fuel_name}: Range/Oven (MBtu)", 0)
|
|
1277
|
-
if htg_fuels.include?(fuel) && (not hpxml_path.include? 'location-miami')
|
|
1147
|
+
energy_htg = results.fetch("End Use: #{fuel_name}: Heating (MBtu)", 0)
|
|
1148
|
+
energy_dhw = results.fetch("End Use: #{fuel_name}: Hot Water (MBtu)", 0)
|
|
1149
|
+
energy_cd = results.fetch("End Use: #{fuel_name}: Clothes Dryer (MBtu)", 0)
|
|
1150
|
+
energy_cr = results.fetch("End Use: #{fuel_name}: Range/Oven (MBtu)", 0)
|
|
1151
|
+
if htg_fuels.include?(fuel) && (not hpxml_path.include? 'location-miami') && (not hpxml_path.include? 'location-honolulu') && (not hpxml_path.include? 'location-phoenix')
|
|
1278
1152
|
assert_operator(energy_htg, :>, 0)
|
|
1279
1153
|
else
|
|
1280
1154
|
assert_equal(0, energy_htg)
|
|
@@ -1355,7 +1229,7 @@ class HPXMLTest < MiniTest::Test
|
|
|
1355
1229
|
puts "Wrote HVAC sizing results to #{csv_out}."
|
|
1356
1230
|
end
|
|
1357
1231
|
|
|
1358
|
-
def _write_ashrae_140_results(all_results,
|
|
1232
|
+
def _write_ashrae_140_results(all_results, csv_out)
|
|
1359
1233
|
require 'csv'
|
|
1360
1234
|
|
|
1361
1235
|
htg_loads = {}
|
|
@@ -1363,7 +1237,6 @@ class HPXMLTest < MiniTest::Test
|
|
|
1363
1237
|
CSV.open(csv_out, 'w') do |csv|
|
|
1364
1238
|
csv << ['Test Case', 'Annual Heating Load [MMBtu]', 'Annual Cooling Load [MMBtu]']
|
|
1365
1239
|
all_results.sort.each do |xml, xml_results|
|
|
1366
|
-
next unless xml.include? ashrae140_dir
|
|
1367
1240
|
next unless xml.include? 'C.xml'
|
|
1368
1241
|
|
|
1369
1242
|
htg_load = xml_results['Load: Heating (MBtu)'].round(2)
|
|
@@ -1372,7 +1245,6 @@ class HPXMLTest < MiniTest::Test
|
|
|
1372
1245
|
htg_loads[test_name] = htg_load
|
|
1373
1246
|
end
|
|
1374
1247
|
all_results.sort.each do |xml, xml_results|
|
|
1375
|
-
next unless xml.include? ashrae140_dir
|
|
1376
1248
|
next unless xml.include? 'L.xml'
|
|
1377
1249
|
|
|
1378
1250
|
clg_load = xml_results['Load: Cooling (MBtu)'].round(2)
|