urbanopt-cli 0.5.1 → 0.6.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/.rubocop.yml +2 -2
- data/CHANGELOG.md +43 -1
- data/CMakeLists.txt +14 -14
- data/FindOpenStudioSDK.cmake +11 -6
- data/Gemfile +11 -5
- data/LICENSE.md +11 -1
- data/Rakefile +16 -6
- data/example_files/Gemfile +8 -8
- data/example_files/example_project_combined.json +100 -5
- data/example_files/example_project_with_streets.json +826 -0
- data/example_files/mappers/Baseline.rb +107 -59
- data/example_files/mappers/CreateBar.rb +17 -7
- data/example_files/mappers/EvCharging.rb +20 -10
- data/example_files/mappers/Floorspace.rb +17 -7
- data/example_files/mappers/HighEfficiency.rb +20 -8
- data/example_files/mappers/HighEfficiencyCreateBar.rb +19 -8
- data/example_files/mappers/HighEfficiencyFloorspace.rb +19 -8
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/measures/BuildResidentialModel/measure.rb +249 -134
- data/example_files/reopt/base_assumptions.json +2 -2
- data/example_files/reopt/multiPV_assumptions.json +4 -3
- 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 +2 -1
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +116 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +746 -1236
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1550 -1215
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +432 -343
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +134 -91
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +41 -65
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +35 -59
- 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 +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +36 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +35 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +35 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +36 -61
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +36 -60
- 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 +36 -62
- 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} +41 -63
- 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 +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +37 -62
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +45 -69
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +49 -73
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-location-honolulu-hi.osw} +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +36 -60
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +44 -70
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +36 -60
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +36 -60
- 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 +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +60 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +36 -60
- 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-atticroof-flat.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 +36 -60
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +36 -60
- 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} +38 -62
- 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} +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +36 -60
- 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 +39 -63
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +36 -60
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +38 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +36 -60
- 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} +40 -64
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +36 -60
- 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 +36 -60
- 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 +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +38 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
- 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 +249 -0
- data/example_files/resources/hpxml-measures/Gemfile +3 -4
- data/example_files/resources/hpxml-measures/Gemfile.lock +27 -32
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +318 -1283
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +167 -121
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +7 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +600 -203
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +21 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +112 -177
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +16 -180
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +543 -94
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +4 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +410 -14
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +782 -460
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +455 -107
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1466 -1403
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1391 -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 +85 -13
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -33
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +3 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +43 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +24 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +4 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +32 -30
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +6 -29
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +523 -635
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +297 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +0 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +26 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
- data/example_files/resources/hpxml-measures/README.md +4 -5
- data/example_files/resources/hpxml-measures/Rakefile +1 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +140 -47
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +351 -495
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +260 -189
- data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +4 -105
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +538 -396
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +158 -130
- data/example_files/resources/hpxml-measures/tasks.rb +1497 -736
- 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_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
- 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 +36 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +4 -3
- 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 +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +28 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +28 -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 +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +23 -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 +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +23 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +23 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +6 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +8 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +17 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +564 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +9 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +601 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +22 -21
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2475 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +577 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +644 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +6 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +558 -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} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +558 -0
- 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} +560 -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} +557 -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-manual-s-oversize-allowances.xml} +560 -559
- 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.xml} +557 -556
- 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} +569 -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} +2 -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} +547 -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} +547 -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} +2 -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} +2 -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} +2 -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} +553 -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} +547 -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} +560 -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} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +548 -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} +558 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +560 -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} +562 -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} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +547 -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} +2 -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} +2 -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} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +557 -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} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +7 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +11 -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 +512 -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 +548 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +548 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +562 -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} +568 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +566 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +567 -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} +571 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +572 -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} +552 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +566 -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} +552 -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} +565 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +570 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +1 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +6 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +3 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +920 -913
- 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 +512 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +7 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +4 -3
- 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 +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +4 -3
- 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 +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +37 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +37 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +577 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +11 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +32 -29
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +8 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +12 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +8 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +4 -3
- 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 +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → invalid_files/dehumidifier-fraction-served.xml} +534 -523
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +7 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +448 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +14 -60
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +761 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +460 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +579 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +3 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +574 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +473 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +9 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +916 -909
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +15 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1657 -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 +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/template.osw +5 -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/base_results/results.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +324 -382
- 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/example_files/visualization/input_visualization_feature.html +13 -14
- data/example_files/visualization/input_visualization_scenario.html +14 -9
- data/lib/uo_cli.rb +293 -60
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/scripts/setup-env-gitbash.sh +4 -4
- data/scripts/setup-env-unix.sh +4 -4
- data/scripts/setup-env.bat +3 -3
- data/scripts/setup-env.ps1 +3 -3
- data/uo_cli.gemspec +10 -7
- metadata +320 -82
- 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/resources/schedules_config.yml +0 -74
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +0 -109
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -835
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +0 -563
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class SimControls
|
|
4
|
-
def self.apply(model,
|
|
4
|
+
def self.apply(model, hpxml)
|
|
5
5
|
sim = model.getSimulationControl
|
|
6
6
|
sim.setRunSimulationforSizingPeriods(false)
|
|
7
7
|
|
|
8
8
|
tstep = model.getTimestep
|
|
9
|
-
tstep.setNumberOfTimestepsPerHour(60 / header.timestep)
|
|
9
|
+
tstep.setNumberOfTimestepsPerHour(60 / hpxml.header.timestep)
|
|
10
10
|
|
|
11
11
|
shad = model.getShadowCalculation
|
|
12
|
-
shad.setShadingCalculationUpdateFrequency(20)
|
|
13
12
|
shad.setMaximumFiguresInShadowOverlapCalculations(200)
|
|
13
|
+
# Use EnergyPlus default of 20 days for update frequency; it is a reasonable balance
|
|
14
|
+
# between speed and accuracy (e.g., sun position, picking up any change in window
|
|
15
|
+
# interior shading transmittance, etc.).
|
|
16
|
+
shad.setShadingCalculationUpdateFrequency(20)
|
|
17
|
+
|
|
18
|
+
has_windows_varying_transmittance = false
|
|
19
|
+
hpxml.windows.each do |window|
|
|
20
|
+
sf_summer = window.interior_shading_factor_summer * window.exterior_shading_factor_summer
|
|
21
|
+
sf_winter = window.interior_shading_factor_winter * window.exterior_shading_factor_winter
|
|
22
|
+
next if sf_summer == sf_winter
|
|
23
|
+
|
|
24
|
+
has_windows_varying_transmittance = true
|
|
25
|
+
end
|
|
26
|
+
if has_windows_varying_transmittance
|
|
27
|
+
# Detailed diffuse algorithm is required for window interior shading with varying
|
|
28
|
+
# transmittance schedules
|
|
29
|
+
shad.setSkyDiffuseModelingAlgorithm('DetailedSkyDiffuseModeling')
|
|
30
|
+
end
|
|
14
31
|
|
|
15
32
|
outsurf = model.getOutsideSurfaceConvectionAlgorithm
|
|
16
33
|
outsurf.setAlgorithm('DOE-2')
|
|
@@ -25,9 +42,9 @@ class SimControls
|
|
|
25
42
|
convlim.setMinimumSystemTimestep(0)
|
|
26
43
|
|
|
27
44
|
run_period = model.getRunPeriod
|
|
28
|
-
run_period.setBeginMonth(header.sim_begin_month)
|
|
29
|
-
run_period.setBeginDayOfMonth(header.sim_begin_day)
|
|
30
|
-
run_period.setEndMonth(header.sim_end_month)
|
|
31
|
-
run_period.setEndDayOfMonth(header.sim_end_day)
|
|
45
|
+
run_period.setBeginMonth(hpxml.header.sim_begin_month)
|
|
46
|
+
run_period.setBeginDayOfMonth(hpxml.header.sim_begin_day)
|
|
47
|
+
run_period.setEndMonth(hpxml.header.sim_end_month)
|
|
48
|
+
run_period.setEndDayOfMonth(hpxml.header.sim_end_day)
|
|
32
49
|
end
|
|
33
50
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
class Version
|
|
4
|
-
OS_HPXML_Version = '1.
|
|
5
|
-
OS_Version = '3.
|
|
4
|
+
OS_HPXML_Version = '1.1.0' # Version of the OS-HPXML workflow
|
|
5
|
+
OS_Version = '3.2.0' # Required version of OpenStudio (can be 'X.X' or 'X.X.X')
|
|
6
6
|
HPXML_Version = '3.0' # HPXML schemaVersion
|
|
7
7
|
|
|
8
8
|
def self.check_openstudio_version
|
|
@@ -183,6 +183,7 @@ class Waterheater
|
|
|
183
183
|
if water_heating_system.standby_loss <= 0
|
|
184
184
|
fail 'A negative indirect water heater standby loss was calculated, double check water heater inputs.'
|
|
185
185
|
end
|
|
186
|
+
|
|
186
187
|
act_vol = calc_storage_tank_actual_vol(water_heating_system.tank_volume, nil)
|
|
187
188
|
a_side = calc_tank_areas(act_vol)[1]
|
|
188
189
|
ua = calc_indirect_ua_with_standbyloss(act_vol, water_heating_system, a_side, solar_fraction)
|
|
@@ -1192,10 +1193,11 @@ class Waterheater
|
|
|
1192
1193
|
ef = calc_ef_from_uef(water_heating_system)
|
|
1193
1194
|
end
|
|
1194
1195
|
if ef >= 0.75
|
|
1195
|
-
|
|
1196
|
+
re = 0.561 * ef + 0.439
|
|
1196
1197
|
else
|
|
1197
|
-
|
|
1198
|
+
re = 0.252 * ef + 0.608
|
|
1198
1199
|
end
|
|
1200
|
+
return re
|
|
1199
1201
|
end
|
|
1200
1202
|
end
|
|
1201
1203
|
|
|
@@ -1398,8 +1400,6 @@ class Waterheater
|
|
|
1398
1400
|
location_hierarchy = [HPXML::LocationBasementConditioned,
|
|
1399
1401
|
HPXML::LocationBasementUnconditioned,
|
|
1400
1402
|
HPXML::LocationLivingSpace]
|
|
1401
|
-
else
|
|
1402
|
-
fail "Unexpected IECC climate zone: '#{iecc_zone}'."
|
|
1403
1403
|
end
|
|
1404
1404
|
location_hierarchy.each do |space_type|
|
|
1405
1405
|
if hpxml.has_space_type(space_type)
|
|
@@ -8,11 +8,11 @@ class XMLHelper
|
|
|
8
8
|
parent.children << added
|
|
9
9
|
if not value.nil?
|
|
10
10
|
if datatype == :integer
|
|
11
|
-
value = to_integer(value)
|
|
11
|
+
value = to_integer(value, parent, element_name)
|
|
12
12
|
elsif datatype == :float
|
|
13
|
-
value = to_float(value)
|
|
13
|
+
value = to_float(value, parent, element_name)
|
|
14
14
|
elsif datatype == :boolean
|
|
15
|
-
value = to_boolean(value)
|
|
15
|
+
value = to_boolean(value, parent, element_name)
|
|
16
16
|
elsif datatype != :string
|
|
17
17
|
# If value provided, datatype required
|
|
18
18
|
fail 'Unexpected datatype.'
|
|
@@ -58,30 +58,24 @@ class XMLHelper
|
|
|
58
58
|
|
|
59
59
|
# Returns the value of 'element_name' in the parent element or nil.
|
|
60
60
|
def self.get_value(parent, element_name, datatype)
|
|
61
|
-
value, isdefaulted = get_value_and_defaulted(parent, element_name, datatype)
|
|
62
|
-
return value
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def self.get_value_and_defaulted(parent, element_name, datatype)
|
|
66
61
|
element = parent.at_xpath(element_name)
|
|
67
62
|
if element.nil?
|
|
68
63
|
return
|
|
69
64
|
end
|
|
65
|
+
|
|
70
66
|
value = element.text
|
|
71
67
|
|
|
72
68
|
if datatype == :integer
|
|
73
|
-
value = to_integer_or_nil(value)
|
|
69
|
+
value = to_integer_or_nil(value, parent, element_name)
|
|
74
70
|
elsif datatype == :float
|
|
75
|
-
value = to_float_or_nil(value)
|
|
71
|
+
value = to_float_or_nil(value, parent, element_name)
|
|
76
72
|
elsif datatype == :boolean
|
|
77
|
-
value = to_boolean_or_nil(value)
|
|
73
|
+
value = to_boolean_or_nil(value, parent, element_name)
|
|
78
74
|
elsif datatype != :string
|
|
79
75
|
fail 'Unexpected datatype.'
|
|
80
76
|
end
|
|
81
77
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
return value, isdefaulted
|
|
78
|
+
return value
|
|
85
79
|
end
|
|
86
80
|
|
|
87
81
|
# Returns the value(s) of 'element_name' in the parent element or [].
|
|
@@ -91,11 +85,11 @@ class XMLHelper
|
|
|
91
85
|
value = value.text
|
|
92
86
|
|
|
93
87
|
if datatype == :integer
|
|
94
|
-
value = to_integer_or_nil(value)
|
|
88
|
+
value = to_integer_or_nil(value, parent, element_name)
|
|
95
89
|
elsif datatype == :float
|
|
96
|
-
value = to_float_or_nil(value)
|
|
90
|
+
value = to_float_or_nil(value, parent, element_name)
|
|
97
91
|
elsif datatype == :boolean
|
|
98
|
-
value = to_boolean_or_nil(value)
|
|
92
|
+
value = to_boolean_or_nil(value, parent, element_name)
|
|
99
93
|
elsif datatype != :string
|
|
100
94
|
fail 'Unexpected datatype.'
|
|
101
95
|
end
|
|
@@ -148,6 +142,12 @@ class XMLHelper
|
|
|
148
142
|
return element.get(attr_name)
|
|
149
143
|
end
|
|
150
144
|
|
|
145
|
+
def self.delete_attribute(element, attr_name)
|
|
146
|
+
return if element.nil?
|
|
147
|
+
|
|
148
|
+
element.unset(attr_name)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
151
|
def self.validate(doc, xsd_path, runner = nil)
|
|
152
152
|
if Gem::Specification::find_all_by_name('nokogiri').any?
|
|
153
153
|
require 'nokogiri'
|
|
@@ -222,28 +222,28 @@ class XMLHelper
|
|
|
222
222
|
end
|
|
223
223
|
end
|
|
224
224
|
|
|
225
|
-
def to_float(value)
|
|
225
|
+
def to_float(value, parent, element_name)
|
|
226
226
|
begin
|
|
227
227
|
return Float(value)
|
|
228
228
|
rescue
|
|
229
|
-
fail "Cannot convert '#{value}' to float."
|
|
229
|
+
fail "Cannot convert '#{value}' to float for #{parent.name}/#{element_name}."
|
|
230
230
|
end
|
|
231
231
|
end
|
|
232
232
|
|
|
233
|
-
def to_integer(value)
|
|
233
|
+
def to_integer(value, parent, element_name)
|
|
234
234
|
begin
|
|
235
235
|
value = Float(value)
|
|
236
236
|
rescue
|
|
237
|
-
fail "Cannot convert '#{value}' to integer."
|
|
237
|
+
fail "Cannot convert '#{value}' to integer for #{parent.name}/#{element_name}."
|
|
238
238
|
end
|
|
239
239
|
if value % 1 == 0
|
|
240
240
|
return Integer(value)
|
|
241
241
|
else
|
|
242
|
-
fail "Cannot convert '#{value}' to integer."
|
|
242
|
+
fail "Cannot convert '#{value}' to integer for #{parent.name}/#{element_name}."
|
|
243
243
|
end
|
|
244
244
|
end
|
|
245
245
|
|
|
246
|
-
def to_boolean(value)
|
|
246
|
+
def to_boolean(value, parent = nil, element_name = nil)
|
|
247
247
|
if value.is_a? TrueClass
|
|
248
248
|
return true
|
|
249
249
|
elsif value.is_a? FalseClass
|
|
@@ -254,23 +254,25 @@ def to_boolean(value)
|
|
|
254
254
|
return false
|
|
255
255
|
end
|
|
256
256
|
|
|
257
|
-
|
|
257
|
+
if (not parent.nil?) && (not element_name.nil?)
|
|
258
|
+
fail "Cannot convert '#{value}' to boolean for #{parent.name}/#{element_name}."
|
|
259
|
+
end
|
|
258
260
|
end
|
|
259
261
|
|
|
260
|
-
def to_float_or_nil(value)
|
|
262
|
+
def to_float_or_nil(value, parent, element_name)
|
|
261
263
|
return if value.nil?
|
|
262
264
|
|
|
263
|
-
return to_float(value)
|
|
265
|
+
return to_float(value, parent, element_name)
|
|
264
266
|
end
|
|
265
267
|
|
|
266
|
-
def to_integer_or_nil(value)
|
|
268
|
+
def to_integer_or_nil(value, parent, element_name)
|
|
267
269
|
return if value.nil?
|
|
268
270
|
|
|
269
|
-
return to_integer(value)
|
|
271
|
+
return to_integer(value, parent, element_name)
|
|
270
272
|
end
|
|
271
273
|
|
|
272
|
-
def to_boolean_or_nil(value)
|
|
274
|
+
def to_boolean_or_nil(value, parent, element_name)
|
|
273
275
|
return if value.nil?
|
|
274
276
|
|
|
275
|
-
return to_boolean(value)
|
|
277
|
+
return to_boolean(value, parent, element_name)
|
|
276
278
|
end
|
|
@@ -3,42 +3,16 @@
|
|
|
3
3
|
require_relative '../resources/minitest_helper'
|
|
4
4
|
require 'openstudio'
|
|
5
5
|
require 'openstudio/measure/ShowRunnerOutput'
|
|
6
|
-
require 'minitest/autorun'
|
|
7
6
|
require 'fileutils'
|
|
8
7
|
require_relative '../measure.rb'
|
|
9
8
|
require_relative '../resources/util.rb'
|
|
9
|
+
require_relative 'util.rb'
|
|
10
10
|
|
|
11
11
|
class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
|
|
12
12
|
def sample_files_dir
|
|
13
13
|
return File.join(File.dirname(__FILE__), '..', '..', 'workflow', 'sample_files')
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
def get_ems_values(ems_objects, name)
|
|
17
|
-
values = {}
|
|
18
|
-
ems_objects.each do |ems_object|
|
|
19
|
-
next unless ems_object.name.to_s.include? name.gsub(' ', '_')
|
|
20
|
-
|
|
21
|
-
ems_object.lines.each do |line|
|
|
22
|
-
next unless line.downcase.start_with? 'set'
|
|
23
|
-
|
|
24
|
-
lhs, rhs = line.split('=')
|
|
25
|
-
lhs = lhs.gsub('Set', '').gsub('set', '').strip
|
|
26
|
-
rhs = rhs.gsub(',', '').gsub(';', '').strip
|
|
27
|
-
values[lhs] = [] if values[lhs].nil?
|
|
28
|
-
# eg. "Q = Q + 1.5"
|
|
29
|
-
if rhs.include? '+'
|
|
30
|
-
rhs_els = rhs.split('+')
|
|
31
|
-
rhs = rhs_els.map { |s| s.to_f }.sum(0.0)
|
|
32
|
-
else
|
|
33
|
-
rhs = rhs.to_f
|
|
34
|
-
end
|
|
35
|
-
values[lhs] << rhs
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
assert_operator(values.size, :>, 0)
|
|
39
|
-
return values
|
|
40
|
-
end
|
|
41
|
-
|
|
42
16
|
def get_eed_for_ventilation(model, ee_name)
|
|
43
17
|
eeds = []
|
|
44
18
|
model.getElectricEquipmentDefinitions.each do |eed|
|
|
@@ -92,7 +66,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
|
|
|
92
66
|
# Check infiltration/ventilation program
|
|
93
67
|
program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program")
|
|
94
68
|
assert_in_epsilon(0.0436, program_values['c'].sum, 0.01)
|
|
95
|
-
assert_in_epsilon(0.
|
|
69
|
+
assert_in_epsilon(0.0661, program_values['Cs'].sum, 0.01)
|
|
96
70
|
assert_in_epsilon(0.1323, program_values['Cw'].sum, 0.01)
|
|
97
71
|
end
|
|
98
72
|
|
|
@@ -127,7 +101,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
|
|
|
127
101
|
|
|
128
102
|
# Check infiltration/ventilation program
|
|
129
103
|
program_values = get_ems_values(model.getEnergyManagementSystemPrograms, "#{Constants.ObjectNameInfiltration} program")
|
|
130
|
-
assert_in_epsilon(0.
|
|
104
|
+
assert_in_epsilon(0.0904, program_values['c'].sum, 0.01)
|
|
131
105
|
assert_in_epsilon(0.0573, program_values['Cs'].sum, 0.01)
|
|
132
106
|
assert_in_epsilon(0.1446, program_values['Cw'].sum, 0.01)
|
|
133
107
|
end
|
|
@@ -599,6 +573,7 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
|
|
|
599
573
|
model = OpenStudio::Model::Model.new
|
|
600
574
|
|
|
601
575
|
# get arguments
|
|
576
|
+
args_hash['output_dir'] = 'tests'
|
|
602
577
|
arguments = measure.arguments(model)
|
|
603
578
|
argument_map = OpenStudio::Measure.convertOSArgumentVectorToMap(arguments)
|
|
604
579
|
|
|
@@ -623,6 +598,8 @@ class HPXMLtoOpenStudioAirflowTest < MiniTest::Test
|
|
|
623
598
|
|
|
624
599
|
hpxml = HPXML.new(hpxml_path: args_hash['hpxml_path'])
|
|
625
600
|
|
|
601
|
+
File.delete(File.join(File.dirname(__FILE__), 'in.xml'))
|
|
602
|
+
|
|
626
603
|
return model, hpxml
|
|
627
604
|
end
|
|
628
605
|
end
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
require_relative '../resources/minitest_helper'
|
|
4
4
|
require 'openstudio'
|
|
5
5
|
require 'openstudio/measure/ShowRunnerOutput'
|
|
6
|
-
require 'minitest/autorun'
|
|
7
6
|
require 'fileutils'
|
|
8
7
|
require_relative '../measure.rb'
|
|
9
8
|
require_relative '../resources/util.rb'
|
|
@@ -12,7 +11,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
12
11
|
ConstantDaySchedule = '0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1'
|
|
13
12
|
ConstantMonthSchedule = '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1'
|
|
14
13
|
|
|
15
|
-
def
|
|
14
|
+
def setup
|
|
16
15
|
@root_path = File.absolute_path(File.join(File.dirname(__FILE__), '..', '..'))
|
|
17
16
|
@sample_files_path = File.join(@root_path, 'workflow', 'sample_files')
|
|
18
17
|
@tmp_hpxml_path = File.join(@sample_files_path, 'tmp.xml')
|
|
@@ -25,7 +24,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
25
24
|
@args_hash['output_dir'] = File.absolute_path(@tmp_output_path)
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
def
|
|
27
|
+
def teardown
|
|
29
28
|
File.delete(@tmp_hpxml_path) if File.exist? @tmp_hpxml_path
|
|
30
29
|
FileUtils.rm_rf(@tmp_output_path)
|
|
31
30
|
end
|
|
@@ -48,7 +47,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
48
47
|
hpxml.header.allow_increased_fixed_capacities = true
|
|
49
48
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
50
49
|
hpxml_default = _test_measure()
|
|
51
|
-
_test_default_header_values(hpxml_default,
|
|
50
|
+
_test_default_header_values(hpxml_default, 30, 2, 2, 11, 11, 2008, false, 3, 3, 10, 10, false, true)
|
|
52
51
|
|
|
53
52
|
# Test defaults - DST not in weather file
|
|
54
53
|
hpxml.header.timestep = nil
|
|
@@ -66,7 +65,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
66
65
|
hpxml.header.allow_increased_fixed_capacities = nil
|
|
67
66
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
68
67
|
hpxml_default = _test_measure()
|
|
69
|
-
_test_default_header_values(hpxml_default,
|
|
68
|
+
_test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2007, true, 3, 12, 11, 5, true, false)
|
|
70
69
|
|
|
71
70
|
# Test defaults - DST in weather file
|
|
72
71
|
hpxml = _create_hpxml('base-location-AMY-2012.xml')
|
|
@@ -85,24 +84,24 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
85
84
|
hpxml.header.allow_increased_fixed_capacities = nil
|
|
86
85
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
87
86
|
hpxml_default = _test_measure()
|
|
88
|
-
_test_default_header_values(hpxml_default,
|
|
87
|
+
_test_default_header_values(hpxml_default, 60, 1, 1, 12, 31, 2012, true, 3, 11, 11, 4, true, false)
|
|
89
88
|
end
|
|
90
89
|
|
|
91
90
|
def test_site
|
|
92
91
|
# Test inputs not overridden by defaults
|
|
93
92
|
hpxml = _create_hpxml('base.xml')
|
|
94
93
|
hpxml.site.site_type = HPXML::SiteTypeRural
|
|
95
|
-
hpxml.site.
|
|
94
|
+
hpxml.site.shielding_of_home = HPXML::ShieldingExposed
|
|
96
95
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
97
96
|
hpxml_default = _test_measure()
|
|
98
|
-
_test_default_site_values(hpxml_default,
|
|
97
|
+
_test_default_site_values(hpxml_default, HPXML::SiteTypeRural, HPXML::ShieldingExposed)
|
|
99
98
|
|
|
100
99
|
# Test defaults
|
|
101
100
|
hpxml.site.site_type = nil
|
|
102
|
-
hpxml.site.
|
|
101
|
+
hpxml.site.shielding_of_home = nil
|
|
103
102
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
104
103
|
hpxml_default = _test_measure()
|
|
105
|
-
_test_default_site_values(hpxml_default,
|
|
104
|
+
_test_default_site_values(hpxml_default, HPXML::SiteTypeSuburban, HPXML::ShieldingNormal)
|
|
106
105
|
end
|
|
107
106
|
|
|
108
107
|
def test_occupancy
|
|
@@ -111,13 +110,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
111
110
|
hpxml.building_occupancy.number_of_residents = 1
|
|
112
111
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
113
112
|
hpxml_default = _test_measure()
|
|
114
|
-
_test_default_occupancy_values(hpxml_default,
|
|
113
|
+
_test_default_occupancy_values(hpxml_default, 1)
|
|
115
114
|
|
|
116
115
|
# Test defaults
|
|
117
116
|
hpxml.building_occupancy.number_of_residents = nil
|
|
118
117
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
119
118
|
hpxml_default = _test_measure()
|
|
120
|
-
_test_default_occupancy_values(hpxml_default,
|
|
119
|
+
_test_default_occupancy_values(hpxml_default, 3)
|
|
121
120
|
end
|
|
122
121
|
|
|
123
122
|
def test_building_construction
|
|
@@ -128,7 +127,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
128
127
|
hpxml.building_construction.average_ceiling_height = 7
|
|
129
128
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
130
129
|
hpxml_default = _test_measure()
|
|
131
|
-
_test_default_building_construction_values(hpxml_default,
|
|
130
|
+
_test_default_building_construction_values(hpxml_default, 20000, 7, true, 4)
|
|
132
131
|
|
|
133
132
|
# Test defaults
|
|
134
133
|
hpxml.building_construction.conditioned_building_volume = nil
|
|
@@ -137,21 +136,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
137
136
|
hpxml.building_construction.number_of_bathrooms = nil
|
|
138
137
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
139
138
|
hpxml_default = _test_measure()
|
|
140
|
-
_test_default_building_construction_values(hpxml_default,
|
|
139
|
+
_test_default_building_construction_values(hpxml_default, 21600, 8, false, 2)
|
|
141
140
|
|
|
142
141
|
# Test defaults w/ average ceiling height
|
|
143
142
|
hpxml.building_construction.conditioned_building_volume = nil
|
|
144
143
|
hpxml.building_construction.average_ceiling_height = 10
|
|
145
144
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
146
145
|
hpxml_default = _test_measure()
|
|
147
|
-
_test_default_building_construction_values(hpxml_default,
|
|
146
|
+
_test_default_building_construction_values(hpxml_default, 27000, 10, false, 2)
|
|
148
147
|
|
|
149
148
|
# Test defaults w/ average ceiling height
|
|
150
|
-
hpxml.building_construction.conditioned_building_volume =
|
|
149
|
+
hpxml.building_construction.conditioned_building_volume = 20000
|
|
151
150
|
hpxml.building_construction.average_ceiling_height = nil
|
|
152
151
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
153
152
|
hpxml_default = _test_measure()
|
|
154
|
-
_test_default_building_construction_values(hpxml_default,
|
|
153
|
+
_test_default_building_construction_values(hpxml_default, 20000, 7.4, false, 2)
|
|
155
154
|
end
|
|
156
155
|
|
|
157
156
|
def test_infiltration
|
|
@@ -160,20 +159,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
160
159
|
hpxml.air_infiltration_measurements[0].infiltration_volume = 25000
|
|
161
160
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
162
161
|
hpxml_default = _test_measure()
|
|
163
|
-
_test_default_infiltration_values(hpxml_default,
|
|
162
|
+
_test_default_infiltration_values(hpxml_default, 25000)
|
|
164
163
|
|
|
165
164
|
# Test defaults w/ conditioned basement
|
|
166
165
|
hpxml.air_infiltration_measurements[0].infiltration_volume = nil
|
|
167
166
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
168
167
|
hpxml_default = _test_measure()
|
|
169
|
-
_test_default_infiltration_values(hpxml_default,
|
|
168
|
+
_test_default_infiltration_values(hpxml_default, 2700 * 8)
|
|
170
169
|
|
|
171
170
|
# Test defaults w/o conditioned basement
|
|
172
171
|
hpxml = _create_hpxml('base-foundation-slab.xml')
|
|
173
172
|
hpxml.air_infiltration_measurements[0].infiltration_volume = nil
|
|
174
173
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
175
174
|
hpxml_default = _test_measure()
|
|
176
|
-
_test_default_infiltration_values(hpxml_default,
|
|
175
|
+
_test_default_infiltration_values(hpxml_default, 1350 * 8)
|
|
177
176
|
end
|
|
178
177
|
|
|
179
178
|
def test_attics
|
|
@@ -182,13 +181,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
182
181
|
hpxml.attics[0].vented_attic_sla = 0.001
|
|
183
182
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
184
183
|
hpxml_default = _test_measure()
|
|
185
|
-
_test_default_attic_values(hpxml_default,
|
|
184
|
+
_test_default_attic_values(hpxml_default, 0.001)
|
|
186
185
|
|
|
187
186
|
# Test defaults
|
|
188
187
|
hpxml.attics[0].vented_attic_sla = nil
|
|
189
188
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
190
189
|
hpxml_default = _test_measure()
|
|
191
|
-
_test_default_attic_values(hpxml_default,
|
|
190
|
+
_test_default_attic_values(hpxml_default, 1.0 / 300.0)
|
|
192
191
|
end
|
|
193
192
|
|
|
194
193
|
def test_foundations
|
|
@@ -197,13 +196,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
197
196
|
hpxml.foundations[0].vented_crawlspace_sla = 0.001
|
|
198
197
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
199
198
|
hpxml_default = _test_measure()
|
|
200
|
-
_test_default_foundation_values(hpxml_default,
|
|
199
|
+
_test_default_foundation_values(hpxml_default, 0.001)
|
|
201
200
|
|
|
202
201
|
# Test defaults
|
|
203
202
|
hpxml.foundations[0].vented_crawlspace_sla = nil
|
|
204
203
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
205
204
|
hpxml_default = _test_measure()
|
|
206
|
-
_test_default_foundation_values(hpxml_default,
|
|
205
|
+
_test_default_foundation_values(hpxml_default, 1.0 / 150.0)
|
|
207
206
|
end
|
|
208
207
|
|
|
209
208
|
def test_roofs
|
|
@@ -215,7 +214,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
215
214
|
hpxml.roofs[0].emittance = 0.88
|
|
216
215
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
217
216
|
hpxml_default = _test_measure()
|
|
218
|
-
_test_default_roof_values(hpxml_default,
|
|
217
|
+
_test_default_roof_values(hpxml_default, HPXML::RoofTypeMetal, 0.77, HPXML::ColorDark, 0.88, true)
|
|
219
218
|
|
|
220
219
|
# Test defaults w/ RoofColor
|
|
221
220
|
hpxml.roofs[0].roof_type = nil
|
|
@@ -225,14 +224,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
225
224
|
hpxml.roofs[0].radiant_barrier = nil
|
|
226
225
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
227
226
|
hpxml_default = _test_measure()
|
|
228
|
-
_test_default_roof_values(hpxml_default,
|
|
227
|
+
_test_default_roof_values(hpxml_default, HPXML::RoofTypeAsphaltShingles, 0.75, HPXML::ColorLight, 0.90, false)
|
|
229
228
|
|
|
230
229
|
# Test defaults w/ SolarAbsorptance
|
|
231
230
|
hpxml.roofs[0].solar_absorptance = 0.99
|
|
232
231
|
hpxml.roofs[0].roof_color = nil
|
|
233
232
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
234
233
|
hpxml_default = _test_measure()
|
|
235
|
-
_test_default_roof_values(hpxml_default,
|
|
234
|
+
_test_default_roof_values(hpxml_default, HPXML::RoofTypeAsphaltShingles, 0.99, HPXML::ColorDark, 0.90, false)
|
|
236
235
|
end
|
|
237
236
|
|
|
238
237
|
def test_rim_joists
|
|
@@ -244,7 +243,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
244
243
|
hpxml.rim_joists[0].emittance = 0.88
|
|
245
244
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
246
245
|
hpxml_default = _test_measure()
|
|
247
|
-
_test_default_rim_joist_values(hpxml_default,
|
|
246
|
+
_test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeBrick, 0.55, HPXML::ColorLight, 0.88)
|
|
248
247
|
|
|
249
248
|
# Test defaults w/ Color
|
|
250
249
|
hpxml.rim_joists[0].siding = nil
|
|
@@ -253,14 +252,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
253
252
|
hpxml.rim_joists[0].emittance = nil
|
|
254
253
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
255
254
|
hpxml_default = _test_measure()
|
|
256
|
-
_test_default_rim_joist_values(hpxml_default,
|
|
255
|
+
_test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeWood, 0.95, HPXML::ColorDark, 0.90)
|
|
257
256
|
|
|
258
257
|
# Test defaults w/ SolarAbsorptance
|
|
259
258
|
hpxml.rim_joists[0].solar_absorptance = 0.99
|
|
260
259
|
hpxml.rim_joists[0].color = nil
|
|
261
260
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
262
261
|
hpxml_default = _test_measure()
|
|
263
|
-
_test_default_rim_joist_values(hpxml_default,
|
|
262
|
+
_test_default_rim_joist_values(hpxml_default, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
|
|
264
263
|
end
|
|
265
264
|
|
|
266
265
|
def test_walls
|
|
@@ -272,7 +271,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
272
271
|
hpxml.walls[0].emittance = 0.88
|
|
273
272
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
274
273
|
hpxml_default = _test_measure()
|
|
275
|
-
_test_default_wall_values(hpxml_default,
|
|
274
|
+
_test_default_wall_values(hpxml_default, HPXML::SidingTypeFiberCement, 0.66, HPXML::ColorDark, 0.88)
|
|
276
275
|
|
|
277
276
|
# Test defaults W/ Color
|
|
278
277
|
hpxml.walls[0].siding = nil
|
|
@@ -281,14 +280,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
281
280
|
hpxml.walls[0].emittance = nil
|
|
282
281
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
283
282
|
hpxml_default = _test_measure()
|
|
284
|
-
_test_default_wall_values(hpxml_default,
|
|
283
|
+
_test_default_wall_values(hpxml_default, HPXML::SidingTypeWood, 0.5, HPXML::ColorLight, 0.90)
|
|
285
284
|
|
|
286
285
|
# Test defaults W/ SolarAbsorptance
|
|
287
286
|
hpxml.walls[0].solar_absorptance = 0.99
|
|
288
287
|
hpxml.walls[0].color = nil
|
|
289
288
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
290
289
|
hpxml_default = _test_measure()
|
|
291
|
-
_test_default_wall_values(hpxml_default,
|
|
290
|
+
_test_default_wall_values(hpxml_default, HPXML::SidingTypeWood, 0.99, HPXML::ColorDark, 0.90)
|
|
292
291
|
end
|
|
293
292
|
|
|
294
293
|
def test_foundation_walls
|
|
@@ -297,13 +296,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
297
296
|
hpxml.foundation_walls[0].thickness = 7.0
|
|
298
297
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
299
298
|
hpxml_default = _test_measure()
|
|
300
|
-
_test_default_foundation_wall_values(hpxml_default,
|
|
299
|
+
_test_default_foundation_wall_values(hpxml_default, 7.0)
|
|
301
300
|
|
|
302
301
|
# Test defaults
|
|
303
302
|
hpxml.foundation_walls[0].thickness = nil
|
|
304
303
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
305
304
|
hpxml_default = _test_measure()
|
|
306
|
-
_test_default_foundation_wall_values(hpxml_default,
|
|
305
|
+
_test_default_foundation_wall_values(hpxml_default, 8.0)
|
|
307
306
|
end
|
|
308
307
|
|
|
309
308
|
def test_slabs
|
|
@@ -314,7 +313,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
314
313
|
hpxml.slabs[0].carpet_fraction = 0.5
|
|
315
314
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
316
315
|
hpxml_default = _test_measure()
|
|
317
|
-
_test_default_slab_values(hpxml_default,
|
|
316
|
+
_test_default_slab_values(hpxml_default, 7.0, 1.1, 0.5)
|
|
318
317
|
|
|
319
318
|
# Test defaults w/ conditioned basement
|
|
320
319
|
hpxml.slabs[0].thickness = nil
|
|
@@ -322,7 +321,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
322
321
|
hpxml.slabs[0].carpet_fraction = nil
|
|
323
322
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
324
323
|
hpxml_default = _test_measure()
|
|
325
|
-
_test_default_slab_values(hpxml_default,
|
|
324
|
+
_test_default_slab_values(hpxml_default, 4.0, 2.0, 0.8)
|
|
326
325
|
|
|
327
326
|
# Test defaults w/ crawlspace
|
|
328
327
|
hpxml = _create_hpxml('base-foundation-unvented-crawlspace.xml')
|
|
@@ -331,55 +330,63 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
331
330
|
hpxml.slabs[0].carpet_fraction = nil
|
|
332
331
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
333
332
|
hpxml_default = _test_measure()
|
|
334
|
-
_test_default_slab_values(hpxml_default,
|
|
333
|
+
_test_default_slab_values(hpxml_default, 0.0, 0.0, 0.0)
|
|
335
334
|
end
|
|
336
335
|
|
|
337
336
|
def test_windows
|
|
338
337
|
# Test inputs not overridden by defaults
|
|
339
|
-
hpxml = _create_hpxml('base-enclosure-windows-
|
|
338
|
+
hpxml = _create_hpxml('base-enclosure-windows-shading.xml')
|
|
340
339
|
hpxml.windows.each do |window|
|
|
341
340
|
window.fraction_operable = 0.5
|
|
341
|
+
window.exterior_shading_factor_summer = 0.44
|
|
342
|
+
window.exterior_shading_factor_winter = 0.55
|
|
342
343
|
window.interior_shading_factor_summer = 0.66
|
|
343
344
|
window.interior_shading_factor_winter = 0.77
|
|
344
345
|
end
|
|
345
346
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
346
347
|
hpxml_default = _test_measure()
|
|
347
348
|
n_windows = hpxml_default.windows.size
|
|
348
|
-
_test_default_window_values(hpxml_default,
|
|
349
|
+
_test_default_window_values(hpxml_default, [0.44] * n_windows, [0.55] * n_windows, [0.66] * n_windows, [0.77] * n_windows, [0.5] * n_windows)
|
|
349
350
|
|
|
350
351
|
# Test defaults
|
|
351
352
|
hpxml.windows.each do |window|
|
|
352
353
|
window.fraction_operable = nil
|
|
354
|
+
window.exterior_shading_factor_summer = nil
|
|
355
|
+
window.exterior_shading_factor_winter = nil
|
|
353
356
|
window.interior_shading_factor_summer = nil
|
|
354
357
|
window.interior_shading_factor_winter = nil
|
|
355
358
|
end
|
|
356
359
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
357
360
|
hpxml_default = _test_measure()
|
|
358
361
|
n_windows = hpxml_default.windows.size
|
|
359
|
-
_test_default_window_values(hpxml_default,
|
|
362
|
+
_test_default_window_values(hpxml_default, [1.0] * n_windows, [1.0] * n_windows, [0.7] * n_windows, [0.85] * n_windows, [0.67] * n_windows)
|
|
360
363
|
end
|
|
361
364
|
|
|
362
365
|
def test_skylights
|
|
363
366
|
# Test inputs not overridden by defaults
|
|
364
367
|
hpxml = _create_hpxml('base-enclosure-skylights.xml')
|
|
365
368
|
hpxml.skylights.each do |skylight|
|
|
369
|
+
skylight.exterior_shading_factor_summer = 0.44
|
|
370
|
+
skylight.exterior_shading_factor_winter = 0.55
|
|
366
371
|
skylight.interior_shading_factor_summer = 0.66
|
|
367
372
|
skylight.interior_shading_factor_winter = 0.77
|
|
368
373
|
end
|
|
369
374
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
370
375
|
hpxml_default = _test_measure()
|
|
371
376
|
n_skylights = hpxml_default.skylights.size
|
|
372
|
-
_test_default_skylight_values(hpxml_default,
|
|
377
|
+
_test_default_skylight_values(hpxml_default, [0.44] * n_skylights, [0.55] * n_skylights, [0.66] * n_skylights, [0.77] * n_skylights)
|
|
373
378
|
|
|
374
379
|
# Test defaults
|
|
375
380
|
hpxml.skylights.each do |skylight|
|
|
381
|
+
skylight.exterior_shading_factor_summer = nil
|
|
382
|
+
skylight.exterior_shading_factor_winter = nil
|
|
376
383
|
skylight.interior_shading_factor_summer = nil
|
|
377
384
|
skylight.interior_shading_factor_winter = nil
|
|
378
385
|
end
|
|
379
386
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
380
387
|
hpxml_default = _test_measure()
|
|
381
388
|
n_skylights = hpxml_default.skylights.size
|
|
382
|
-
_test_default_skylight_values(hpxml_default,
|
|
389
|
+
_test_default_skylight_values(hpxml_default, [1.0] * n_skylights, [1.0] * n_skylights, [1.0] * n_skylights, [1.0] * n_skylights)
|
|
383
390
|
end
|
|
384
391
|
|
|
385
392
|
def test_central_air_conditioners
|
|
@@ -388,32 +395,55 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
388
395
|
hpxml.cooling_systems[0].cooling_shr = 0.88
|
|
389
396
|
hpxml.cooling_systems[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed
|
|
390
397
|
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.66
|
|
398
|
+
hpxml.cooling_systems[0].charge_defect_ratio = -0.11
|
|
399
|
+
hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
|
|
400
|
+
hpxml.cooling_systems[0].cooling_capacity = 12345
|
|
391
401
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
392
402
|
hpxml_default = _test_measure()
|
|
393
|
-
_test_default_central_air_conditioner_values(hpxml_default,
|
|
403
|
+
_test_default_central_air_conditioner_values(hpxml_default, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345)
|
|
394
404
|
|
|
395
405
|
# Test defaults
|
|
396
406
|
hpxml.cooling_systems[0].cooling_shr = nil
|
|
397
407
|
hpxml.cooling_systems[0].compressor_type = nil
|
|
398
408
|
hpxml.cooling_systems[0].fan_watts_per_cfm = nil
|
|
409
|
+
hpxml.cooling_systems[0].charge_defect_ratio = nil
|
|
410
|
+
hpxml.cooling_systems[0].airflow_defect_ratio = nil
|
|
411
|
+
hpxml.cooling_systems[0].cooling_capacity = nil
|
|
399
412
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
400
413
|
hpxml_default = _test_measure()
|
|
401
|
-
_test_default_central_air_conditioner_values(hpxml_default,
|
|
414
|
+
_test_default_central_air_conditioner_values(hpxml_default, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil)
|
|
402
415
|
end
|
|
403
416
|
|
|
404
417
|
def test_room_air_conditioners
|
|
405
418
|
# Test inputs not overridden by defaults
|
|
406
419
|
hpxml = _create_hpxml('base-hvac-room-ac-only.xml')
|
|
407
420
|
hpxml.cooling_systems[0].cooling_shr = 0.88
|
|
421
|
+
hpxml.cooling_systems[0].cooling_capacity = 12345
|
|
408
422
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
409
423
|
hpxml_default = _test_measure()
|
|
410
|
-
_test_default_room_air_conditioner_values(hpxml_default,
|
|
424
|
+
_test_default_room_air_conditioner_values(hpxml_default, 0.88, 12345)
|
|
411
425
|
|
|
412
426
|
# Test defaults
|
|
413
427
|
hpxml.cooling_systems[0].cooling_shr = nil
|
|
428
|
+
hpxml.cooling_systems[0].cooling_capacity = nil
|
|
414
429
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
415
430
|
hpxml_default = _test_measure()
|
|
416
|
-
_test_default_room_air_conditioner_values(hpxml_default,
|
|
431
|
+
_test_default_room_air_conditioner_values(hpxml_default, 0.65, nil)
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
def test_evaporative_coolers
|
|
435
|
+
# Test inputs not overridden by defaults
|
|
436
|
+
hpxml = _create_hpxml('base-hvac-evap-cooler-only.xml')
|
|
437
|
+
hpxml.cooling_systems[0].cooling_capacity = 12345
|
|
438
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
439
|
+
hpxml_default = _test_measure()
|
|
440
|
+
_test_default_evap_cooler_values(hpxml_default, 12345)
|
|
441
|
+
|
|
442
|
+
# Test defaults
|
|
443
|
+
hpxml.cooling_systems[0].cooling_capacity = nil
|
|
444
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
445
|
+
hpxml_default = _test_measure()
|
|
446
|
+
_test_default_evap_cooler_values(hpxml_default, nil)
|
|
417
447
|
end
|
|
418
448
|
|
|
419
449
|
def test_mini_split_air_conditioners
|
|
@@ -421,76 +451,101 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
421
451
|
hpxml = _create_hpxml('base-hvac-mini-split-air-conditioner-only-ducted.xml')
|
|
422
452
|
hpxml.cooling_systems[0].cooling_shr = 0.78
|
|
423
453
|
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.66
|
|
454
|
+
hpxml.cooling_systems[0].charge_defect_ratio = -0.11
|
|
455
|
+
hpxml.cooling_systems[0].airflow_defect_ratio = -0.22
|
|
456
|
+
hpxml.cooling_systems[0].cooling_capacity = 12345
|
|
424
457
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
425
458
|
hpxml_default = _test_measure()
|
|
426
|
-
_test_default_mini_split_air_conditioner_values(hpxml_default,
|
|
459
|
+
_test_default_mini_split_air_conditioner_values(hpxml_default, 0.78, 0.66, -0.11, -0.22, 12345)
|
|
427
460
|
|
|
428
461
|
# Test defaults
|
|
429
462
|
hpxml.cooling_systems[0].cooling_shr = nil
|
|
430
463
|
hpxml.cooling_systems[0].fan_watts_per_cfm = nil
|
|
464
|
+
hpxml.cooling_systems[0].charge_defect_ratio = nil
|
|
465
|
+
hpxml.cooling_systems[0].airflow_defect_ratio = nil
|
|
466
|
+
hpxml.cooling_systems[0].cooling_capacity = nil
|
|
431
467
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
432
468
|
hpxml_default = _test_measure()
|
|
433
|
-
_test_default_mini_split_air_conditioner_values(hpxml_default,
|
|
469
|
+
_test_default_mini_split_air_conditioner_values(hpxml_default, 0.73, 0.18, 0, 0, nil)
|
|
434
470
|
end
|
|
435
471
|
|
|
436
472
|
def test_furnaces
|
|
437
473
|
# Test inputs not overridden by defaults
|
|
438
474
|
hpxml = _create_hpxml('base.xml')
|
|
439
475
|
hpxml.heating_systems[0].fan_watts_per_cfm = 0.66
|
|
476
|
+
hpxml.heating_systems[0].airflow_defect_ratio = -0.22
|
|
477
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
440
478
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
441
479
|
hpxml_default = _test_measure()
|
|
442
|
-
_test_default_furnace_values(hpxml_default,
|
|
480
|
+
_test_default_furnace_values(hpxml_default, 0.66, -0.22, 12345)
|
|
443
481
|
|
|
444
482
|
# Test defaults
|
|
445
483
|
hpxml.heating_systems[0].fan_watts_per_cfm = nil
|
|
484
|
+
hpxml.heating_systems[0].airflow_defect_ratio = nil
|
|
485
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
446
486
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
447
487
|
hpxml_default = _test_measure()
|
|
448
|
-
_test_default_furnace_values(hpxml_default,
|
|
488
|
+
_test_default_furnace_values(hpxml_default, 0.375, 0, nil)
|
|
489
|
+
|
|
490
|
+
# Test defaults w/ gravity distribution system
|
|
491
|
+
hpxml = _create_hpxml('base-hvac-furnace-gas-only.xml')
|
|
492
|
+
hpxml.heating_systems[0].distribution_system.air_type = HPXML::AirTypeGravity
|
|
493
|
+
hpxml.heating_systems[0].fan_watts_per_cfm = nil
|
|
494
|
+
hpxml.heating_systems[0].airflow_defect_ratio = nil
|
|
495
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
496
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
497
|
+
hpxml_default = _test_measure()
|
|
498
|
+
_test_default_furnace_values(hpxml_default, 0.0, 0, nil)
|
|
449
499
|
end
|
|
450
500
|
|
|
451
501
|
def test_wall_furnaces
|
|
452
502
|
# Test inputs not overridden by defaults
|
|
453
503
|
hpxml = _create_hpxml('base-hvac-wall-furnace-elec-only.xml')
|
|
454
504
|
hpxml.heating_systems[0].fan_watts = 22
|
|
505
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
455
506
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
456
507
|
hpxml_default = _test_measure()
|
|
457
|
-
_test_default_wall_furnace_values(hpxml_default,
|
|
508
|
+
_test_default_wall_furnace_values(hpxml_default, 22, 12345)
|
|
458
509
|
|
|
459
510
|
# Test defaults
|
|
460
511
|
hpxml.heating_systems[0].fan_watts = nil
|
|
512
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
461
513
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
462
514
|
hpxml_default = _test_measure()
|
|
463
|
-
_test_default_wall_furnace_values(hpxml_default,
|
|
515
|
+
_test_default_wall_furnace_values(hpxml_default, 0, nil)
|
|
464
516
|
end
|
|
465
517
|
|
|
466
518
|
def test_floor_furnaces
|
|
467
519
|
# Test inputs not overridden by defaults
|
|
468
520
|
hpxml = _create_hpxml('base-hvac-floor-furnace-propane-only.xml')
|
|
469
521
|
hpxml.heating_systems[0].fan_watts = 22
|
|
522
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
470
523
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
471
524
|
hpxml_default = _test_measure()
|
|
472
|
-
_test_default_floor_furnace_values(hpxml_default,
|
|
525
|
+
_test_default_floor_furnace_values(hpxml_default, 22, 12345)
|
|
473
526
|
|
|
474
527
|
# Test defaults
|
|
475
528
|
hpxml.heating_systems[0].fan_watts = nil
|
|
476
529
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
477
530
|
hpxml_default = _test_measure()
|
|
478
|
-
_test_default_floor_furnace_values(hpxml_default,
|
|
531
|
+
_test_default_floor_furnace_values(hpxml_default, 0, nil)
|
|
479
532
|
end
|
|
480
533
|
|
|
481
534
|
def test_boilers
|
|
482
535
|
# Test inputs not overridden by defaults (in-unit boiler)
|
|
483
536
|
hpxml = _create_hpxml('base-hvac-boiler-gas-only.xml')
|
|
484
537
|
hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
|
|
538
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
485
539
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
486
540
|
hpxml_default = _test_measure()
|
|
487
|
-
_test_default_boiler_values(hpxml_default,
|
|
541
|
+
_test_default_boiler_values(hpxml_default, 99.9, 12345)
|
|
488
542
|
|
|
489
543
|
# Test defaults w/ in-unit boiler
|
|
490
544
|
hpxml.heating_systems[0].electric_auxiliary_energy = nil
|
|
545
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
491
546
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
492
547
|
hpxml_default = _test_measure()
|
|
493
|
-
_test_default_boiler_values(hpxml_default,
|
|
548
|
+
_test_default_boiler_values(hpxml_default, 170.0, nil)
|
|
494
549
|
|
|
495
550
|
# Test inputs not overridden by defaults (shared boiler)
|
|
496
551
|
hpxml = _create_hpxml('base-bldgtype-multifamily-shared-boiler-only-baseboard.xml')
|
|
@@ -498,73 +553,81 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
498
553
|
hpxml.heating_systems[0].electric_auxiliary_energy = 99.9
|
|
499
554
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
500
555
|
hpxml_default = _test_measure()
|
|
501
|
-
_test_default_boiler_values(hpxml_default,
|
|
556
|
+
_test_default_boiler_values(hpxml_default, 99.9, nil)
|
|
502
557
|
|
|
503
558
|
# Test defaults w/ shared boiler
|
|
504
559
|
hpxml.heating_systems[0].electric_auxiliary_energy = nil
|
|
505
560
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
506
561
|
hpxml_default = _test_measure()
|
|
507
|
-
_test_default_boiler_values(hpxml_default,
|
|
562
|
+
_test_default_boiler_values(hpxml_default, 220.0, nil)
|
|
508
563
|
end
|
|
509
564
|
|
|
510
565
|
def test_stoves
|
|
511
566
|
# Test inputs not overridden by defaults
|
|
512
567
|
hpxml = _create_hpxml('base-hvac-stove-oil-only.xml')
|
|
513
568
|
hpxml.heating_systems[0].fan_watts = 22
|
|
569
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
514
570
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
515
571
|
hpxml_default = _test_measure()
|
|
516
|
-
_test_default_stove_values(hpxml_default,
|
|
572
|
+
_test_default_stove_values(hpxml_default, 22, 12345)
|
|
517
573
|
|
|
518
574
|
# Test defaults
|
|
519
575
|
hpxml.heating_systems[0].fan_watts = nil
|
|
576
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
520
577
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
521
578
|
hpxml_default = _test_measure()
|
|
522
|
-
_test_default_stove_values(hpxml_default,
|
|
579
|
+
_test_default_stove_values(hpxml_default, 40, nil)
|
|
523
580
|
end
|
|
524
581
|
|
|
525
582
|
def test_portable_heaters
|
|
526
583
|
# Test inputs not overridden by defaults
|
|
527
584
|
hpxml = _create_hpxml('base-hvac-portable-heater-gas-only.xml')
|
|
528
585
|
hpxml.heating_systems[0].fan_watts = 22
|
|
586
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
529
587
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
530
588
|
hpxml_default = _test_measure()
|
|
531
|
-
_test_default_portable_heater_values(hpxml_default,
|
|
589
|
+
_test_default_portable_heater_values(hpxml_default, 22, 12345)
|
|
532
590
|
|
|
533
591
|
# Test defaults
|
|
534
592
|
hpxml.heating_systems[0].fan_watts = nil
|
|
593
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
535
594
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
536
595
|
hpxml_default = _test_measure()
|
|
537
|
-
_test_default_portable_heater_values(hpxml_default,
|
|
596
|
+
_test_default_portable_heater_values(hpxml_default, 0, nil)
|
|
538
597
|
end
|
|
539
598
|
|
|
540
599
|
def test_fixed_heaters
|
|
541
600
|
# Test inputs not overridden by defaults
|
|
542
601
|
hpxml = _create_hpxml('base-hvac-fixed-heater-gas-only.xml')
|
|
543
602
|
hpxml.heating_systems[0].fan_watts = 22
|
|
603
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
544
604
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
545
605
|
hpxml_default = _test_measure()
|
|
546
|
-
_test_default_fixed_heater_values(hpxml_default,
|
|
606
|
+
_test_default_fixed_heater_values(hpxml_default, 22, 12345)
|
|
547
607
|
|
|
548
608
|
# Test defaults
|
|
549
609
|
hpxml.heating_systems[0].fan_watts = nil
|
|
610
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
550
611
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
551
612
|
hpxml_default = _test_measure()
|
|
552
|
-
_test_default_fixed_heater_values(hpxml_default,
|
|
613
|
+
_test_default_fixed_heater_values(hpxml_default, 0, nil)
|
|
553
614
|
end
|
|
554
615
|
|
|
555
616
|
def test_fireplaces
|
|
556
617
|
# Test inputs not overridden by defaults
|
|
557
618
|
hpxml = _create_hpxml('base-hvac-fireplace-wood-only.xml')
|
|
558
619
|
hpxml.heating_systems[0].fan_watts = 22
|
|
620
|
+
hpxml.heating_systems[0].heating_capacity = 12345
|
|
559
621
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
560
622
|
hpxml_default = _test_measure()
|
|
561
|
-
_test_default_fireplace_values(hpxml_default,
|
|
623
|
+
_test_default_fireplace_values(hpxml_default, 22, 12345)
|
|
562
624
|
|
|
563
625
|
# Test defaults
|
|
564
626
|
hpxml.heating_systems[0].fan_watts = nil
|
|
627
|
+
hpxml.heating_systems[0].heating_capacity = nil
|
|
565
628
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
566
629
|
hpxml_default = _test_measure()
|
|
567
|
-
_test_default_fireplace_values(hpxml_default,
|
|
630
|
+
_test_default_fireplace_values(hpxml_default, 0, nil)
|
|
568
631
|
end
|
|
569
632
|
|
|
570
633
|
def test_air_source_heat_pumps
|
|
@@ -573,17 +636,29 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
573
636
|
hpxml.heat_pumps[0].cooling_shr = 0.88
|
|
574
637
|
hpxml.heat_pumps[0].compressor_type = HPXML::HVACCompressorTypeVariableSpeed
|
|
575
638
|
hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
|
|
639
|
+
hpxml.heat_pumps[0].charge_defect_ratio = -0.11
|
|
640
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
|
|
641
|
+
hpxml.heat_pumps[0].cooling_capacity = 12345
|
|
642
|
+
hpxml.heat_pumps[0].heating_capacity = 23456
|
|
643
|
+
hpxml.heat_pumps[0].heating_capacity_17F = 9876
|
|
644
|
+
hpxml.heat_pumps[0].backup_heating_capacity = 34567
|
|
576
645
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
577
646
|
hpxml_default = _test_measure()
|
|
578
|
-
_test_default_air_to_air_heat_pump_values(hpxml_default,
|
|
647
|
+
_test_default_air_to_air_heat_pump_values(hpxml_default, 0.88, HPXML::HVACCompressorTypeVariableSpeed, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567)
|
|
579
648
|
|
|
580
649
|
# Test defaults
|
|
581
650
|
hpxml.heat_pumps[0].cooling_shr = nil
|
|
582
651
|
hpxml.heat_pumps[0].compressor_type = nil
|
|
583
652
|
hpxml.heat_pumps[0].fan_watts_per_cfm = nil
|
|
653
|
+
hpxml.heat_pumps[0].charge_defect_ratio = nil
|
|
654
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = nil
|
|
655
|
+
hpxml.heat_pumps[0].cooling_capacity = nil
|
|
656
|
+
hpxml.heat_pumps[0].heating_capacity = nil
|
|
657
|
+
hpxml.heat_pumps[0].heating_capacity_17F = nil
|
|
658
|
+
hpxml.heat_pumps[0].backup_heating_capacity = nil
|
|
584
659
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
585
660
|
hpxml_default = _test_measure()
|
|
586
|
-
_test_default_air_to_air_heat_pump_values(hpxml_default,
|
|
661
|
+
_test_default_air_to_air_heat_pump_values(hpxml_default, 0.73, HPXML::HVACCompressorTypeSingleStage, 0.5, 0, 0, nil, nil, nil, nil)
|
|
587
662
|
end
|
|
588
663
|
|
|
589
664
|
def test_mini_split_heat_pumps
|
|
@@ -591,33 +666,82 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
591
666
|
hpxml = _create_hpxml('base-hvac-mini-split-heat-pump-ducted.xml')
|
|
592
667
|
hpxml.heat_pumps[0].cooling_shr = 0.78
|
|
593
668
|
hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
|
|
669
|
+
hpxml.heat_pumps[0].charge_defect_ratio = -0.11
|
|
670
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
|
|
671
|
+
hpxml.heat_pumps[0].cooling_capacity = 12345
|
|
672
|
+
hpxml.heat_pumps[0].heating_capacity = 23456
|
|
673
|
+
hpxml.heat_pumps[0].heating_capacity_17F = 9876
|
|
674
|
+
hpxml.heat_pumps[0].backup_heating_capacity = 34567
|
|
594
675
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
595
676
|
hpxml_default = _test_measure()
|
|
596
|
-
_test_default_mini_split_heat_pump_values(hpxml_default,
|
|
677
|
+
_test_default_mini_split_heat_pump_values(hpxml_default, 0.78, 0.66, -0.11, -0.22, 12345, 23456, 9876, 34567)
|
|
597
678
|
|
|
598
679
|
# Test defaults
|
|
599
680
|
hpxml.heat_pumps[0].cooling_shr = nil
|
|
600
681
|
hpxml.heat_pumps[0].fan_watts_per_cfm = nil
|
|
682
|
+
hpxml.heat_pumps[0].charge_defect_ratio = nil
|
|
683
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = nil
|
|
684
|
+
hpxml.heat_pumps[0].cooling_capacity = nil
|
|
685
|
+
hpxml.heat_pumps[0].heating_capacity = nil
|
|
686
|
+
hpxml.heat_pumps[0].heating_capacity_17F = nil
|
|
687
|
+
hpxml.heat_pumps[0].backup_heating_capacity = nil
|
|
601
688
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
602
689
|
hpxml_default = _test_measure()
|
|
603
|
-
_test_default_mini_split_heat_pump_values(hpxml_default,
|
|
690
|
+
_test_default_mini_split_heat_pump_values(hpxml_default, 0.73, 0.18, 0, 0, nil, nil, nil, nil)
|
|
604
691
|
end
|
|
605
692
|
|
|
606
|
-
def
|
|
693
|
+
def test_ground_source_heat_pumps
|
|
607
694
|
# Test inputs not overridden by defaults
|
|
608
695
|
hpxml = _create_hpxml('base-hvac-ground-to-air-heat-pump.xml')
|
|
609
696
|
hpxml.heat_pumps[0].pump_watts_per_ton = 9.9
|
|
610
|
-
hpxml.heat_pumps[0].fan_watts_per_cfm = 0.
|
|
697
|
+
hpxml.heat_pumps[0].fan_watts_per_cfm = 0.66
|
|
698
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = -0.22
|
|
699
|
+
hpxml.heat_pumps[0].cooling_capacity = 12345
|
|
700
|
+
hpxml.heat_pumps[0].heating_capacity = 23456
|
|
701
|
+
hpxml.heat_pumps[0].backup_heating_capacity = 34567
|
|
611
702
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
612
703
|
hpxml_default = _test_measure()
|
|
613
|
-
_test_default_ground_to_air_heat_pump_values(hpxml_default,
|
|
704
|
+
_test_default_ground_to_air_heat_pump_values(hpxml_default, 9.9, 0.66, -0.22, 12345, 23456, 34567)
|
|
614
705
|
|
|
615
706
|
# Test defaults
|
|
616
707
|
hpxml.heat_pumps[0].pump_watts_per_ton = nil
|
|
617
708
|
hpxml.heat_pumps[0].fan_watts_per_cfm = nil
|
|
709
|
+
hpxml.heat_pumps[0].airflow_defect_ratio = nil
|
|
710
|
+
hpxml.heat_pumps[0].cooling_capacity = nil
|
|
711
|
+
hpxml.heat_pumps[0].heating_capacity = nil
|
|
712
|
+
hpxml.heat_pumps[0].backup_heating_capacity = nil
|
|
618
713
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
619
714
|
hpxml_default = _test_measure()
|
|
620
|
-
_test_default_ground_to_air_heat_pump_values(hpxml_default,
|
|
715
|
+
_test_default_ground_to_air_heat_pump_values(hpxml_default, 30.0, 0.375, 0, nil, nil, nil)
|
|
716
|
+
end
|
|
717
|
+
|
|
718
|
+
def test_hvac_increased_hardsized_equipment
|
|
719
|
+
# Test hard-sized capacities are increased for air conditioner + furnace
|
|
720
|
+
hpxml = _create_hpxml('base-hvac-undersized-allow-increased-fixed-capacities.xml')
|
|
721
|
+
htg_cap = hpxml.heating_systems[0].heating_capacity
|
|
722
|
+
clg_cap = hpxml.cooling_systems[0].cooling_capacity
|
|
723
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
724
|
+
hpxml_default = _test_measure()
|
|
725
|
+
assert(hpxml_default.heating_systems[0].heating_capacity > htg_cap)
|
|
726
|
+
assert(hpxml_default.cooling_systems[0].cooling_capacity > clg_cap)
|
|
727
|
+
|
|
728
|
+
# Test hard-sized capacities are increased for heat pump
|
|
729
|
+
hpxml = _create_hpxml('base-hvac-air-to-air-heat-pump-1-speed.xml')
|
|
730
|
+
hpxml.header.allow_increased_fixed_capacities = true
|
|
731
|
+
hpxml.heat_pumps[0].heating_capacity /= 10.0
|
|
732
|
+
hpxml.heat_pumps[0].heating_capacity_17F /= 10.0
|
|
733
|
+
hpxml.heat_pumps[0].backup_heating_capacity /= 10.0
|
|
734
|
+
hpxml.heat_pumps[0].cooling_capacity /= 10.0
|
|
735
|
+
htg_cap = hpxml.heat_pumps[0].heating_capacity
|
|
736
|
+
htg_17f_cap = hpxml.heat_pumps[0].heating_capacity_17F
|
|
737
|
+
htg_bak_cap = hpxml.heat_pumps[0].backup_heating_capacity
|
|
738
|
+
clg_cap = hpxml.heat_pumps[0].cooling_capacity
|
|
739
|
+
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
740
|
+
hpxml_default = _test_measure()
|
|
741
|
+
assert(hpxml_default.heat_pumps[0].heating_capacity > htg_cap)
|
|
742
|
+
assert(hpxml_default.heat_pumps[0].heating_capacity_17F > htg_17f_cap)
|
|
743
|
+
assert(hpxml_default.heat_pumps[0].backup_heating_capacity > htg_bak_cap)
|
|
744
|
+
assert(hpxml_default.heat_pumps[0].cooling_capacity > clg_cap)
|
|
621
745
|
end
|
|
622
746
|
|
|
623
747
|
def test_hvac_controls
|
|
@@ -627,20 +751,19 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
627
751
|
hpxml.hvac_controls[0].cooling_setup_start_hour = 12
|
|
628
752
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
629
753
|
hpxml_default = _test_measure()
|
|
630
|
-
_test_default_hvac_control_values(hpxml_default,
|
|
754
|
+
_test_default_hvac_control_values(hpxml_default, 12, 12)
|
|
631
755
|
|
|
632
756
|
# Test defaults
|
|
633
757
|
hpxml.hvac_controls[0].heating_setback_start_hour = nil
|
|
634
758
|
hpxml.hvac_controls[0].cooling_setup_start_hour = nil
|
|
635
759
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
636
760
|
hpxml_default = _test_measure()
|
|
637
|
-
_test_default_hvac_control_values(hpxml_default,
|
|
761
|
+
_test_default_hvac_control_values(hpxml_default, 23, 9)
|
|
638
762
|
end
|
|
639
763
|
|
|
640
764
|
def test_hvac_distribution
|
|
641
765
|
# Test inputs not overridden by defaults
|
|
642
766
|
hpxml = _create_hpxml('base.xml')
|
|
643
|
-
hpxml.hvac_distributions[0].number_of_return_registers = hpxml.building_construction.number_of_conditioned_floors
|
|
644
767
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
645
768
|
hpxml_default = _test_measure()
|
|
646
769
|
expected_supply_locations = ['attic - unvented']
|
|
@@ -648,7 +771,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
648
771
|
expected_supply_areas = [150.0]
|
|
649
772
|
expected_return_areas = [50.0]
|
|
650
773
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
651
|
-
_test_default_duct_values(hpxml_default,
|
|
774
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
652
775
|
|
|
653
776
|
# Test defaults w/ conditioned basement
|
|
654
777
|
hpxml.hvac_distributions[0].number_of_return_registers = nil
|
|
@@ -665,7 +788,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
665
788
|
expected_supply_areas = [729.0]
|
|
666
789
|
expected_return_areas = [270.0]
|
|
667
790
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
668
|
-
_test_default_duct_values(hpxml_default,
|
|
791
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
669
792
|
|
|
670
793
|
# Test defaults w/ multiple foundations
|
|
671
794
|
hpxml = _create_hpxml('base-foundation-multiple.xml')
|
|
@@ -682,7 +805,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
682
805
|
expected_supply_areas = [364.5]
|
|
683
806
|
expected_return_areas = [67.5]
|
|
684
807
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
685
|
-
_test_default_duct_values(hpxml_default,
|
|
808
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
686
809
|
|
|
687
810
|
# Test defaults w/ foundation exposed to ambient
|
|
688
811
|
hpxml = _create_hpxml('base-foundation-ambient.xml')
|
|
@@ -699,7 +822,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
699
822
|
expected_supply_areas = [364.5]
|
|
700
823
|
expected_return_areas = [67.5]
|
|
701
824
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
702
|
-
_test_default_duct_values(hpxml_default,
|
|
825
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
703
826
|
|
|
704
827
|
# Test defaults w/ building/unit adjacent to other housing unit
|
|
705
828
|
hpxml = _create_hpxml('base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml')
|
|
@@ -716,7 +839,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
716
839
|
expected_supply_areas = [243.0]
|
|
717
840
|
expected_return_areas = [45.0]
|
|
718
841
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
719
|
-
_test_default_duct_values(hpxml_default,
|
|
842
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
720
843
|
|
|
721
844
|
# Test defaults w/ 2-story building
|
|
722
845
|
hpxml = _create_hpxml('base-enclosure-2stories.xml')
|
|
@@ -733,7 +856,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
733
856
|
expected_supply_areas = [820.13, 273.38]
|
|
734
857
|
expected_return_areas = [455.63, 151.88]
|
|
735
858
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
736
|
-
_test_default_duct_values(hpxml_default,
|
|
859
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
737
860
|
|
|
738
861
|
# Test defaults w/ 1-story building & multiple HVAC systems
|
|
739
862
|
hpxml = _create_hpxml('base-hvac-multiple.xml')
|
|
@@ -747,10 +870,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
747
870
|
hpxml_default = _test_measure()
|
|
748
871
|
expected_supply_locations = ['basement - conditioned', 'basement - conditioned'] * hpxml_default.hvac_distributions.size
|
|
749
872
|
expected_return_locations = ['basement - conditioned', 'basement - conditioned'] * hpxml_default.hvac_distributions.size
|
|
750
|
-
expected_supply_areas = [
|
|
751
|
-
expected_return_areas = [
|
|
873
|
+
expected_supply_areas = [36.45, 36.45] * hpxml_default.hvac_distributions.size
|
|
874
|
+
expected_return_areas = [13.5, 13.5] * hpxml_default.hvac_distributions.size
|
|
752
875
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
753
|
-
_test_default_duct_values(hpxml_default,
|
|
876
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
754
877
|
|
|
755
878
|
# Test defaults w/ 2-story building & multiple HVAC systems
|
|
756
879
|
hpxml = _create_hpxml('base-hvac-multiple.xml')
|
|
@@ -765,10 +888,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
765
888
|
hpxml_default = _test_measure()
|
|
766
889
|
expected_supply_locations = ['basement - conditioned', 'basement - conditioned', 'living space', 'living space'] * hpxml_default.hvac_distributions.size
|
|
767
890
|
expected_return_locations = ['basement - conditioned', 'basement - conditioned', 'living space', 'living space'] * hpxml_default.hvac_distributions.size
|
|
768
|
-
expected_supply_areas = [
|
|
769
|
-
expected_return_areas = [
|
|
891
|
+
expected_supply_areas = [27.34, 27.34, 9.11, 9.11] * hpxml_default.hvac_distributions.size
|
|
892
|
+
expected_return_areas = [10.13, 10.13, 3.38, 3.38] * hpxml_default.hvac_distributions.size
|
|
770
893
|
expected_n_return_registers = hpxml_default.building_construction.number_of_conditioned_floors
|
|
771
|
-
_test_default_duct_values(hpxml_default,
|
|
894
|
+
_test_default_duct_values(hpxml_default, expected_supply_locations, expected_return_locations, expected_supply_areas, expected_return_areas, expected_n_return_registers)
|
|
772
895
|
end
|
|
773
896
|
|
|
774
897
|
def test_mech_ventilation_fans
|
|
@@ -782,7 +905,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
782
905
|
vent_fan.hours_in_operation = 22.0
|
|
783
906
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
784
907
|
hpxml_default = _test_measure()
|
|
785
|
-
_test_default_mech_vent_values(hpxml_default,
|
|
908
|
+
_test_default_mech_vent_values(hpxml_default, true, 22.0)
|
|
786
909
|
|
|
787
910
|
# Test defaults
|
|
788
911
|
vent_fan.rated_flow_rate = nil
|
|
@@ -794,7 +917,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
794
917
|
vent_fan.hours_in_operation = nil
|
|
795
918
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
796
919
|
hpxml_default = _test_measure()
|
|
797
|
-
_test_default_mech_vent_values(hpxml_default,
|
|
920
|
+
_test_default_mech_vent_values(hpxml_default, false, 24.0)
|
|
798
921
|
|
|
799
922
|
# Test inputs not overridden by defaults w/ CFIS
|
|
800
923
|
hpxml = _create_hpxml('base-mechvent-cfis.xml')
|
|
@@ -803,14 +926,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
803
926
|
vent_fan.hours_in_operation = 12.0
|
|
804
927
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
805
928
|
hpxml_default = _test_measure()
|
|
806
|
-
_test_default_mech_vent_values(hpxml_default, false,
|
|
929
|
+
_test_default_mech_vent_values(hpxml_default, false, 12.0)
|
|
807
930
|
|
|
808
931
|
# Test defaults w/ CFIS
|
|
809
932
|
vent_fan.is_shared_system = nil
|
|
810
933
|
vent_fan.hours_in_operation = nil
|
|
811
934
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
812
935
|
hpxml_default = _test_measure()
|
|
813
|
-
_test_default_mech_vent_values(hpxml_default,
|
|
936
|
+
_test_default_mech_vent_values(hpxml_default, false, 8.0)
|
|
814
937
|
end
|
|
815
938
|
|
|
816
939
|
def test_local_ventilation_fans
|
|
@@ -830,8 +953,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
830
953
|
bath_fan.hours_in_operation = 3
|
|
831
954
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
832
955
|
hpxml_default = _test_measure()
|
|
833
|
-
_test_default_kitchen_fan_values(hpxml_default,
|
|
834
|
-
_test_default_bath_fan_values(hpxml_default,
|
|
956
|
+
_test_default_kitchen_fan_values(hpxml_default, 2, 300, 2, 20, 12)
|
|
957
|
+
_test_default_bath_fan_values(hpxml_default, 3, 80, 3, 33, 6)
|
|
835
958
|
|
|
836
959
|
# Test defaults
|
|
837
960
|
kitchen_fan.rated_flow_rate = nil
|
|
@@ -846,8 +969,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
846
969
|
bath_fan.hours_in_operation = nil
|
|
847
970
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
848
971
|
hpxml_default = _test_measure()
|
|
849
|
-
_test_default_kitchen_fan_values(hpxml_default,
|
|
850
|
-
_test_default_bath_fan_values(hpxml_default,
|
|
972
|
+
_test_default_kitchen_fan_values(hpxml_default, 1, 100, 1, 30, 18)
|
|
973
|
+
_test_default_bath_fan_values(hpxml_default, 2, 50, 1, 15, 7)
|
|
851
974
|
end
|
|
852
975
|
|
|
853
976
|
def test_storage_water_heaters
|
|
@@ -865,7 +988,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
865
988
|
end
|
|
866
989
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
867
990
|
hpxml_default = _test_measure()
|
|
868
|
-
_test_default_storage_water_heater_values(hpxml_default,
|
|
991
|
+
_test_default_storage_water_heater_values(hpxml_default,
|
|
869
992
|
[true, 15000.0, 40.0, 0.95, HPXML::LocationLivingSpace, 111])
|
|
870
993
|
|
|
871
994
|
# Test defaults w/ 3-bedroom house & electric storage water heater
|
|
@@ -879,7 +1002,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
879
1002
|
end
|
|
880
1003
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
881
1004
|
hpxml_default = _test_measure()
|
|
882
|
-
_test_default_storage_water_heater_values(hpxml_default,
|
|
1005
|
+
_test_default_storage_water_heater_values(hpxml_default,
|
|
883
1006
|
[false, 18766.7, 50.0, 0.98, HPXML::LocationBasementConditioned, 125])
|
|
884
1007
|
|
|
885
1008
|
# Test defaults w/ 5-bedroom house & electric storage water heater
|
|
@@ -894,7 +1017,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
894
1017
|
end
|
|
895
1018
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
896
1019
|
hpxml_default = _test_measure()
|
|
897
|
-
_test_default_storage_water_heater_values(hpxml_default,
|
|
1020
|
+
_test_default_storage_water_heater_values(hpxml_default,
|
|
898
1021
|
[false, 18766.7, 66.0, 0.98, HPXML::LocationBasementConditioned, 125])
|
|
899
1022
|
|
|
900
1023
|
# Test defaults w/ 3-bedroom house & 2 storage water heaters (1 electric and 1 natural gas)
|
|
@@ -911,7 +1034,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
911
1034
|
end
|
|
912
1035
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
913
1036
|
hpxml_default = _test_measure()
|
|
914
|
-
_test_default_storage_water_heater_values(hpxml_default,
|
|
1037
|
+
_test_default_storage_water_heater_values(hpxml_default,
|
|
915
1038
|
[false, 15354.6, 50.0, 0.98, HPXML::LocationBasementConditioned, 125],
|
|
916
1039
|
[false, 36000.0, 40.0, 0.756, HPXML::LocationBasementConditioned, 125])
|
|
917
1040
|
end
|
|
@@ -922,13 +1045,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
922
1045
|
hpxml.water_heating_systems[0].performance_adjustment = 0.88
|
|
923
1046
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
924
1047
|
hpxml_default = _test_measure()
|
|
925
|
-
_test_default_tankless_water_heater_values(hpxml_default,
|
|
1048
|
+
_test_default_tankless_water_heater_values(hpxml_default, [0.88])
|
|
926
1049
|
|
|
927
1050
|
# Test defaults w/ EF
|
|
928
1051
|
hpxml.water_heating_systems[0].performance_adjustment = nil
|
|
929
1052
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
930
1053
|
hpxml_default = _test_measure()
|
|
931
|
-
_test_default_tankless_water_heater_values(hpxml_default,
|
|
1054
|
+
_test_default_tankless_water_heater_values(hpxml_default, [0.92])
|
|
932
1055
|
|
|
933
1056
|
# Test defaults w/ UEF
|
|
934
1057
|
hpxml.water_heating_systems[0].energy_factor = nil
|
|
@@ -936,7 +1059,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
936
1059
|
hpxml.water_heating_systems[0].first_hour_rating = 5.7
|
|
937
1060
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
938
1061
|
hpxml_default = _test_measure()
|
|
939
|
-
_test_default_tankless_water_heater_values(hpxml_default,
|
|
1062
|
+
_test_default_tankless_water_heater_values(hpxml_default, [0.94])
|
|
940
1063
|
end
|
|
941
1064
|
|
|
942
1065
|
def test_hot_water_distribution
|
|
@@ -945,7 +1068,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
945
1068
|
hpxml.hot_water_distributions[0].pipe_r_value = 2.5
|
|
946
1069
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
947
1070
|
hpxml_default = _test_measure()
|
|
948
|
-
_test_default_standard_distribution_values(hpxml_default,
|
|
1071
|
+
_test_default_standard_distribution_values(hpxml_default, 50.0, 2.5)
|
|
949
1072
|
|
|
950
1073
|
# Test inputs not overridden by defaults -- recirculation
|
|
951
1074
|
hpxml = _create_hpxml('base-dhw-recirc-demand.xml')
|
|
@@ -953,14 +1076,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
953
1076
|
hpxml.hot_water_distributions[0].pipe_r_value = 2.5
|
|
954
1077
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
955
1078
|
hpxml_default = _test_measure()
|
|
956
|
-
_test_default_recirc_distribution_values(hpxml_default,
|
|
1079
|
+
_test_default_recirc_distribution_values(hpxml_default, 50.0, 50.0, 65.0, 2.5)
|
|
957
1080
|
|
|
958
1081
|
# Test inputs not overridden by defaults -- shared recirculation
|
|
959
1082
|
hpxml = _create_hpxml('base-bldgtype-multifamily-shared-water-heater-recirc.xml')
|
|
960
1083
|
hpxml.hot_water_distributions[0].shared_recirculation_pump_power = 333.0
|
|
961
1084
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
962
1085
|
hpxml_default = _test_measure()
|
|
963
|
-
_test_default_shared_recirc_distribution_values(hpxml_default,
|
|
1086
|
+
_test_default_shared_recirc_distribution_values(hpxml_default, 333.0)
|
|
964
1087
|
|
|
965
1088
|
# Test defaults w/ conditioned basement
|
|
966
1089
|
hpxml = _create_hpxml('base.xml')
|
|
@@ -968,7 +1091,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
968
1091
|
hpxml.hot_water_distributions[0].pipe_r_value = nil
|
|
969
1092
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
970
1093
|
hpxml_default = _test_measure()
|
|
971
|
-
_test_default_standard_distribution_values(hpxml_default,
|
|
1094
|
+
_test_default_standard_distribution_values(hpxml_default, 93.48, 0.0)
|
|
972
1095
|
|
|
973
1096
|
# Test defaults w/ unconditioned basement
|
|
974
1097
|
hpxml = _create_hpxml('base-foundation-unconditioned-basement.xml')
|
|
@@ -976,7 +1099,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
976
1099
|
hpxml.hot_water_distributions[0].pipe_r_value = nil
|
|
977
1100
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
978
1101
|
hpxml_default = _test_measure()
|
|
979
|
-
_test_default_standard_distribution_values(hpxml_default,
|
|
1102
|
+
_test_default_standard_distribution_values(hpxml_default, 88.48, 0.0)
|
|
980
1103
|
|
|
981
1104
|
# Test defaults w/ 2-story building
|
|
982
1105
|
hpxml = _create_hpxml('base-enclosure-2stories.xml')
|
|
@@ -984,7 +1107,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
984
1107
|
hpxml.hot_water_distributions[0].pipe_r_value = nil
|
|
985
1108
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
986
1109
|
hpxml_default = _test_measure()
|
|
987
|
-
_test_default_standard_distribution_values(hpxml_default,
|
|
1110
|
+
_test_default_standard_distribution_values(hpxml_default, 103.48, 0.0)
|
|
988
1111
|
|
|
989
1112
|
# Test defaults w/ recirculation & conditioned basement
|
|
990
1113
|
hpxml = _create_hpxml('base-dhw-recirc-demand.xml')
|
|
@@ -994,7 +1117,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
994
1117
|
hpxml.hot_water_distributions[0].pipe_r_value = nil
|
|
995
1118
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
996
1119
|
hpxml_default = _test_measure()
|
|
997
|
-
_test_default_recirc_distribution_values(hpxml_default,
|
|
1120
|
+
_test_default_recirc_distribution_values(hpxml_default, 166.96, 10.0, 50.0, 0.0)
|
|
998
1121
|
|
|
999
1122
|
# Test defaults w/ recirculation & unconditioned basement
|
|
1000
1123
|
hpxml = _create_hpxml('base-foundation-unconditioned-basement.xml')
|
|
@@ -1004,7 +1127,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1004
1127
|
recirculation_control_type: HPXML::DHWRecirControlTypeSensor)
|
|
1005
1128
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1006
1129
|
hpxml_default = _test_measure()
|
|
1007
|
-
_test_default_recirc_distribution_values(hpxml_default,
|
|
1130
|
+
_test_default_recirc_distribution_values(hpxml_default, 156.96, 10.0, 50.0, 0.0)
|
|
1008
1131
|
|
|
1009
1132
|
# Test defaults w/ recirculation & 2-story building
|
|
1010
1133
|
hpxml = _create_hpxml('base-enclosure-2stories.xml')
|
|
@@ -1014,14 +1137,14 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1014
1137
|
recirculation_control_type: HPXML::DHWRecirControlTypeSensor)
|
|
1015
1138
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1016
1139
|
hpxml_default = _test_measure()
|
|
1017
|
-
_test_default_recirc_distribution_values(hpxml_default,
|
|
1140
|
+
_test_default_recirc_distribution_values(hpxml_default, 186.96, 10.0, 50.0, 0.0)
|
|
1018
1141
|
|
|
1019
1142
|
# Test defaults w/ shared recirculation
|
|
1020
1143
|
hpxml = _create_hpxml('base-bldgtype-multifamily-shared-water-heater-recirc.xml')
|
|
1021
1144
|
hpxml.hot_water_distributions[0].shared_recirculation_pump_power = nil
|
|
1022
1145
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1023
1146
|
hpxml_default = _test_measure()
|
|
1024
|
-
_test_default_shared_recirc_distribution_values(hpxml_default,
|
|
1147
|
+
_test_default_shared_recirc_distribution_values(hpxml_default, 220.0)
|
|
1025
1148
|
end
|
|
1026
1149
|
|
|
1027
1150
|
def test_water_fixtures
|
|
@@ -1030,13 +1153,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1030
1153
|
hpxml.water_heating.water_fixtures_usage_multiplier = 2.0
|
|
1031
1154
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1032
1155
|
hpxml_default = _test_measure()
|
|
1033
|
-
_test_default_water_fixture_values(hpxml_default,
|
|
1156
|
+
_test_default_water_fixture_values(hpxml_default, 2.0)
|
|
1034
1157
|
|
|
1035
1158
|
# Test defaults
|
|
1036
1159
|
hpxml.water_heating.water_fixtures_usage_multiplier = nil
|
|
1037
1160
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1038
1161
|
hpxml_default = _test_measure()
|
|
1039
|
-
_test_default_water_fixture_values(hpxml_default,
|
|
1162
|
+
_test_default_water_fixture_values(hpxml_default, 1.0)
|
|
1040
1163
|
end
|
|
1041
1164
|
|
|
1042
1165
|
def test_solar_thermal_systems
|
|
@@ -1045,20 +1168,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1045
1168
|
hpxml.solar_thermal_systems[0].storage_volume = 55.0
|
|
1046
1169
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1047
1170
|
hpxml_default = _test_measure()
|
|
1048
|
-
_test_default_solar_thermal_values(hpxml_default,
|
|
1171
|
+
_test_default_solar_thermal_values(hpxml_default, 55.0)
|
|
1049
1172
|
|
|
1050
1173
|
# Test defaults w/ collector area of 40 sqft
|
|
1051
1174
|
hpxml.solar_thermal_systems[0].storage_volume = nil
|
|
1052
1175
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1053
1176
|
hpxml_default = _test_measure()
|
|
1054
|
-
_test_default_solar_thermal_values(hpxml_default,
|
|
1177
|
+
_test_default_solar_thermal_values(hpxml_default, 60.0)
|
|
1055
1178
|
|
|
1056
1179
|
# Test defaults w/ collector area of 100 sqft
|
|
1057
1180
|
hpxml.solar_thermal_systems[0].collector_area = 100.0
|
|
1058
1181
|
hpxml.solar_thermal_systems[0].storage_volume = nil
|
|
1059
1182
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1060
1183
|
hpxml_default = _test_measure()
|
|
1061
|
-
_test_default_solar_thermal_values(hpxml_default,
|
|
1184
|
+
_test_default_solar_thermal_values(hpxml_default, 150.0)
|
|
1062
1185
|
end
|
|
1063
1186
|
|
|
1064
1187
|
def test_pv_systems
|
|
@@ -1076,7 +1199,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1076
1199
|
end
|
|
1077
1200
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1078
1201
|
hpxml_default = _test_measure()
|
|
1079
|
-
_test_default_pv_system_values(hpxml_default,
|
|
1202
|
+
_test_default_pv_system_values(hpxml_default, 0.90, 0.20, true, HPXML::LocationGround, HPXML::PVTrackingType1Axis, HPXML::PVModuleTypePremium)
|
|
1080
1203
|
|
|
1081
1204
|
# Test defaults w/o year modules manufactured
|
|
1082
1205
|
hpxml.pv_systems.each do |pv|
|
|
@@ -1089,7 +1212,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1089
1212
|
end
|
|
1090
1213
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1091
1214
|
hpxml_default = _test_measure()
|
|
1092
|
-
_test_default_pv_system_values(hpxml_default,
|
|
1215
|
+
_test_default_pv_system_values(hpxml_default, 0.96, 0.14, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
|
|
1093
1216
|
|
|
1094
1217
|
# Test defaults w/ year modules manufactured
|
|
1095
1218
|
hpxml.pv_systems.each do |pv|
|
|
@@ -1097,7 +1220,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1097
1220
|
end
|
|
1098
1221
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1099
1222
|
hpxml_default = _test_measure()
|
|
1100
|
-
_test_default_pv_system_values(hpxml_default,
|
|
1223
|
+
_test_default_pv_system_values(hpxml_default, 0.96, 0.186, false, HPXML::LocationRoof, HPXML::PVTrackingTypeFixed, HPXML::PVModuleTypeStandard)
|
|
1101
1224
|
end
|
|
1102
1225
|
|
|
1103
1226
|
def test_generators
|
|
@@ -1110,7 +1233,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1110
1233
|
end
|
|
1111
1234
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1112
1235
|
hpxml_default = _test_measure()
|
|
1113
|
-
_test_default_generator_values(hpxml_default,
|
|
1236
|
+
_test_default_generator_values(hpxml_default, true)
|
|
1114
1237
|
|
|
1115
1238
|
# Test defaults
|
|
1116
1239
|
hpxml.generators.each do |generator|
|
|
@@ -1118,7 +1241,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1118
1241
|
end
|
|
1119
1242
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1120
1243
|
hpxml_default = _test_measure()
|
|
1121
|
-
_test_default_generator_values(hpxml_default,
|
|
1244
|
+
_test_default_generator_values(hpxml_default, false)
|
|
1122
1245
|
end
|
|
1123
1246
|
|
|
1124
1247
|
def test_clothes_washers
|
|
@@ -1134,7 +1257,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1134
1257
|
hpxml.clothes_washers[0].water_heating_system_idref = hpxml.water_heating_systems[0].id
|
|
1135
1258
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1136
1259
|
hpxml_default = _test_measure()
|
|
1137
|
-
_test_default_clothes_washer_values(hpxml_default,
|
|
1260
|
+
_test_default_clothes_washer_values(hpxml_default, true, HPXML::LocationBasementConditioned, 1.21, 380.0, 0.12, 1.09, 27.0, 3.2, 6.0, 1.5)
|
|
1138
1261
|
|
|
1139
1262
|
# Test defaults
|
|
1140
1263
|
hpxml.clothes_washers[0].is_shared_appliance = nil
|
|
@@ -1149,7 +1272,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1149
1272
|
hpxml.clothes_washers[0].usage_multiplier = nil
|
|
1150
1273
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1151
1274
|
hpxml_default = _test_measure()
|
|
1152
|
-
_test_default_clothes_washer_values(hpxml_default,
|
|
1275
|
+
_test_default_clothes_washer_values(hpxml_default, false, HPXML::LocationLivingSpace, 1.0, 400.0, 0.12, 1.09, 27.0, 3.0, 6.0, 1.0)
|
|
1153
1276
|
|
|
1154
1277
|
# Test defaults before 301-2019 Addendum A
|
|
1155
1278
|
hpxml = _create_hpxml('base.xml')
|
|
@@ -1166,7 +1289,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1166
1289
|
hpxml.clothes_washers[0].usage_multiplier = nil
|
|
1167
1290
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1168
1291
|
hpxml_default = _test_measure()
|
|
1169
|
-
_test_default_clothes_washer_values(hpxml_default,
|
|
1292
|
+
_test_default_clothes_washer_values(hpxml_default, false, HPXML::LocationLivingSpace, 0.331, 704.0, 0.08, 0.58, 23.0, 2.874, 999, 1.0)
|
|
1170
1293
|
end
|
|
1171
1294
|
|
|
1172
1295
|
def test_clothes_dryers
|
|
@@ -1178,41 +1301,39 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1178
1301
|
hpxml.water_heating_systems[0].fraction_dhw_load_served = 0
|
|
1179
1302
|
hpxml.clothes_dryers[0].location = HPXML::LocationBasementConditioned
|
|
1180
1303
|
hpxml.clothes_dryers[0].is_shared_appliance = true
|
|
1181
|
-
hpxml.clothes_dryers[0].control_type = HPXML::ClothesDryerControlTypeMoisture
|
|
1182
1304
|
hpxml.clothes_dryers[0].combined_energy_factor = 3.33
|
|
1183
1305
|
hpxml.clothes_dryers[0].usage_multiplier = 1.1
|
|
1184
1306
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1185
1307
|
hpxml_default = _test_measure()
|
|
1186
|
-
_test_default_clothes_dryer_values(hpxml_default,
|
|
1308
|
+
_test_default_clothes_dryer_values(hpxml_default, true, HPXML::LocationBasementConditioned, 3.33, 1.1)
|
|
1187
1309
|
|
|
1188
1310
|
# Test defaults w/ electric clothes dryer
|
|
1189
1311
|
hpxml.clothes_dryers[0].location = nil
|
|
1190
1312
|
hpxml.clothes_dryers[0].is_shared_appliance = nil
|
|
1191
|
-
hpxml.clothes_dryers[0].control_type = nil
|
|
1192
1313
|
hpxml.clothes_dryers[0].combined_energy_factor = nil
|
|
1193
1314
|
hpxml.clothes_dryers[0].usage_multiplier = nil
|
|
1194
1315
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1195
1316
|
hpxml_default = _test_measure()
|
|
1196
|
-
_test_default_clothes_dryer_values(hpxml_default,
|
|
1317
|
+
_test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 3.01, 1.0)
|
|
1197
1318
|
|
|
1198
1319
|
# Test defaults w/ gas clothes dryer
|
|
1199
1320
|
hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeNaturalGas
|
|
1200
1321
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1201
1322
|
hpxml_default = _test_measure()
|
|
1202
|
-
_test_default_clothes_dryer_values(hpxml_default,
|
|
1323
|
+
_test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 3.01, 1.0)
|
|
1203
1324
|
|
|
1204
1325
|
# Test defaults w/ electric clothes dryer before 301-2019 Addendum A
|
|
1205
1326
|
hpxml.header.eri_calculation_version = '2019'
|
|
1206
1327
|
hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeElectricity
|
|
1207
1328
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1208
1329
|
hpxml_default = _test_measure()
|
|
1209
|
-
_test_default_clothes_dryer_values(hpxml_default,
|
|
1330
|
+
_test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 2.62, 1.0)
|
|
1210
1331
|
|
|
1211
1332
|
# Test defaults w/ gas clothes dryer before 301-2019 Addendum A
|
|
1212
1333
|
hpxml.clothes_dryers[0].fuel_type = HPXML::FuelTypeNaturalGas
|
|
1213
1334
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1214
1335
|
hpxml_default = _test_measure()
|
|
1215
|
-
_test_default_clothes_dryer_values(hpxml_default,
|
|
1336
|
+
_test_default_clothes_dryer_values(hpxml_default, false, HPXML::LocationLivingSpace, 2.32, 1.0)
|
|
1216
1337
|
end
|
|
1217
1338
|
|
|
1218
1339
|
def test_clothes_dryer_exhaust
|
|
@@ -1224,21 +1345,21 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1224
1345
|
clothes_dryer.vented_flow_rate = 200
|
|
1225
1346
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1226
1347
|
hpxml_default = _test_measure()
|
|
1227
|
-
_test_default_clothes_dryer_exhaust_values(hpxml_default,
|
|
1348
|
+
_test_default_clothes_dryer_exhaust_values(hpxml_default, true, 200)
|
|
1228
1349
|
|
|
1229
1350
|
# Test inputs not overridden by defaults w/ unvented dryer
|
|
1230
1351
|
clothes_dryer.is_vented = false
|
|
1231
1352
|
clothes_dryer.vented_flow_rate = nil
|
|
1232
1353
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1233
1354
|
hpxml_default = _test_measure()
|
|
1234
|
-
_test_default_clothes_dryer_exhaust_values(hpxml_default, false,
|
|
1355
|
+
_test_default_clothes_dryer_exhaust_values(hpxml_default, false, nil)
|
|
1235
1356
|
|
|
1236
1357
|
# Test defaults
|
|
1237
1358
|
clothes_dryer.is_vented = nil
|
|
1238
1359
|
clothes_dryer.vented_flow_rate = nil
|
|
1239
1360
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1240
1361
|
hpxml_default = _test_measure()
|
|
1241
|
-
_test_default_clothes_dryer_exhaust_values(hpxml_default, true,
|
|
1362
|
+
_test_default_clothes_dryer_exhaust_values(hpxml_default, true, 100)
|
|
1242
1363
|
end
|
|
1243
1364
|
|
|
1244
1365
|
def test_dishwashers
|
|
@@ -1254,7 +1375,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1254
1375
|
hpxml.dishwashers[0].water_heating_system_idref = hpxml.water_heating_systems[0].id
|
|
1255
1376
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1256
1377
|
hpxml_default = _test_measure()
|
|
1257
|
-
_test_default_dishwasher_values(hpxml_default,
|
|
1378
|
+
_test_default_dishwasher_values(hpxml_default, true, HPXML::LocationBasementConditioned, 307.0, 0.12, 1.09, 22.32, 4.0, 12, 1.3)
|
|
1258
1379
|
|
|
1259
1380
|
# Test defaults
|
|
1260
1381
|
hpxml.dishwashers[0].is_shared_appliance = nil
|
|
@@ -1268,13 +1389,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1268
1389
|
hpxml.dishwashers[0].usage_multiplier = nil
|
|
1269
1390
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1270
1391
|
hpxml_default = _test_measure()
|
|
1271
|
-
_test_default_dishwasher_values(hpxml_default,
|
|
1392
|
+
_test_default_dishwasher_values(hpxml_default, false, HPXML::LocationLivingSpace, 467.0, 0.12, 1.09, 33.12, 4.0, 12, 1.0)
|
|
1272
1393
|
|
|
1273
1394
|
# Test defaults before 301-2019 Addendum A
|
|
1274
1395
|
hpxml.header.eri_calculation_version = '2019'
|
|
1275
1396
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1276
1397
|
hpxml_default = _test_measure()
|
|
1277
|
-
_test_default_dishwasher_values(hpxml_default,
|
|
1398
|
+
_test_default_dishwasher_values(hpxml_default, false, HPXML::LocationLivingSpace, 467.0, 999, 999, 999, 999, 12, 1.0)
|
|
1278
1399
|
end
|
|
1279
1400
|
|
|
1280
1401
|
def test_refrigerators
|
|
@@ -1287,7 +1408,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1287
1408
|
hpxml.refrigerators[0].monthly_multipliers = ConstantMonthSchedule
|
|
1288
1409
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1289
1410
|
hpxml_default = _test_measure()
|
|
1290
|
-
_test_default_refrigerator_values(hpxml_default,
|
|
1411
|
+
_test_default_refrigerator_values(hpxml_default, HPXML::LocationBasementConditioned, 650.0, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1291
1412
|
|
|
1292
1413
|
# Test defaults
|
|
1293
1414
|
hpxml.refrigerators[0].location = nil
|
|
@@ -1298,20 +1419,20 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1298
1419
|
hpxml.refrigerators[0].monthly_multipliers = nil
|
|
1299
1420
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1300
1421
|
hpxml_default = _test_measure()
|
|
1301
|
-
_test_default_refrigerator_values(hpxml_default,
|
|
1422
|
+
_test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1302
1423
|
|
|
1303
1424
|
# Test defaults w/ refrigerator in 5-bedroom house
|
|
1304
1425
|
hpxml.building_construction.number_of_bedrooms = 5
|
|
1305
1426
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1306
1427
|
hpxml_default = _test_measure()
|
|
1307
|
-
_test_default_refrigerator_values(hpxml_default,
|
|
1428
|
+
_test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 727.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1308
1429
|
|
|
1309
1430
|
# Test defaults before 301-2019 Addendum A
|
|
1310
1431
|
hpxml.header.eri_calculation_version = '2019'
|
|
1311
1432
|
hpxml.building_construction.number_of_bedrooms = 3
|
|
1312
1433
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1313
1434
|
hpxml_default = _test_measure()
|
|
1314
|
-
_test_default_refrigerator_values(hpxml_default,
|
|
1435
|
+
_test_default_refrigerator_values(hpxml_default, HPXML::LocationLivingSpace, 691.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1315
1436
|
end
|
|
1316
1437
|
|
|
1317
1438
|
def test_extra_refrigerators
|
|
@@ -1327,7 +1448,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1327
1448
|
end
|
|
1328
1449
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1329
1450
|
hpxml_default = _test_measure()
|
|
1330
|
-
_test_default_extra_refrigerators_values(hpxml_default,
|
|
1451
|
+
_test_default_extra_refrigerators_values(hpxml_default, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1331
1452
|
|
|
1332
1453
|
# Test defaults
|
|
1333
1454
|
hpxml.refrigerators.each do |refrigerator|
|
|
@@ -1340,7 +1461,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1340
1461
|
end
|
|
1341
1462
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1342
1463
|
hpxml_default = _test_measure()
|
|
1343
|
-
_test_default_extra_refrigerators_values(hpxml_default,
|
|
1464
|
+
_test_default_extra_refrigerators_values(hpxml_default, HPXML::LocationBasementConditioned, 244.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1344
1465
|
end
|
|
1345
1466
|
|
|
1346
1467
|
def test_freezers
|
|
@@ -1356,7 +1477,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1356
1477
|
end
|
|
1357
1478
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1358
1479
|
hpxml_default = _test_measure()
|
|
1359
|
-
_test_default_freezers_values(hpxml_default,
|
|
1480
|
+
_test_default_freezers_values(hpxml_default, HPXML::LocationLivingSpace, 333.0, 1.5, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1360
1481
|
|
|
1361
1482
|
# Test defaults
|
|
1362
1483
|
hpxml.freezers.each do |freezer|
|
|
@@ -1369,7 +1490,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1369
1490
|
end
|
|
1370
1491
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1371
1492
|
hpxml_default = _test_measure()
|
|
1372
|
-
_test_default_freezers_values(hpxml_default,
|
|
1493
|
+
_test_default_freezers_values(hpxml_default, HPXML::LocationBasementConditioned, 320.0, 1.0, '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.040, 0.039, 0.038, 0.037, 0.036, 0.036, 0.038, 0.040, 0.041, 0.041, 0.040, 0.040, 0.042, 0.042, 0.042, 0.041, 0.044, 0.048, 0.050, 0.048, 0.047, 0.046, 0.044, 0.041', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1373
1494
|
end
|
|
1374
1495
|
|
|
1375
1496
|
def test_cooking_ranges
|
|
@@ -1383,7 +1504,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1383
1504
|
hpxml.cooking_ranges[0].monthly_multipliers = ConstantMonthSchedule
|
|
1384
1505
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1385
1506
|
hpxml_default = _test_measure()
|
|
1386
|
-
_test_default_cooking_range_values(hpxml_default,
|
|
1507
|
+
_test_default_cooking_range_values(hpxml_default, HPXML::LocationBasementConditioned, true, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1387
1508
|
|
|
1388
1509
|
# Test defaults
|
|
1389
1510
|
hpxml.cooking_ranges[0].location = nil
|
|
@@ -1394,13 +1515,13 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1394
1515
|
hpxml.cooking_ranges[0].monthly_multipliers = nil
|
|
1395
1516
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1396
1517
|
hpxml_default = _test_measure()
|
|
1397
|
-
_test_default_cooking_range_values(hpxml_default,
|
|
1518
|
+
_test_default_cooking_range_values(hpxml_default, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
|
|
1398
1519
|
|
|
1399
1520
|
# Test defaults before 301-2019 Addendum A
|
|
1400
1521
|
hpxml.header.eri_calculation_version = '2019'
|
|
1401
1522
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1402
1523
|
hpxml_default = _test_measure()
|
|
1403
|
-
_test_default_cooking_range_values(hpxml_default,
|
|
1524
|
+
_test_default_cooking_range_values(hpxml_default, HPXML::LocationLivingSpace, false, 1.0, '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '0.007, 0.007, 0.004, 0.004, 0.007, 0.011, 0.025, 0.042, 0.046, 0.048, 0.042, 0.050, 0.057, 0.046, 0.057, 0.044, 0.092, 0.150, 0.117, 0.060, 0.035, 0.025, 0.016, 0.011', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
|
|
1404
1525
|
end
|
|
1405
1526
|
|
|
1406
1527
|
def test_ovens
|
|
@@ -1409,19 +1530,19 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1409
1530
|
hpxml.ovens[0].is_convection = true
|
|
1410
1531
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1411
1532
|
hpxml_default = _test_measure()
|
|
1412
|
-
_test_default_oven_values(hpxml_default,
|
|
1533
|
+
_test_default_oven_values(hpxml_default, true)
|
|
1413
1534
|
|
|
1414
1535
|
# Test defaults
|
|
1415
1536
|
hpxml.ovens[0].is_convection = nil
|
|
1416
1537
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1417
1538
|
hpxml_default = _test_measure()
|
|
1418
|
-
_test_default_oven_values(hpxml_default,
|
|
1539
|
+
_test_default_oven_values(hpxml_default, false)
|
|
1419
1540
|
|
|
1420
1541
|
# Test defaults before 301-2019 Addendum A
|
|
1421
1542
|
hpxml.header.eri_calculation_version = '2019'
|
|
1422
1543
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1423
1544
|
hpxml_default = _test_measure()
|
|
1424
|
-
_test_default_oven_values(hpxml_default,
|
|
1545
|
+
_test_default_oven_values(hpxml_default, false)
|
|
1425
1546
|
end
|
|
1426
1547
|
|
|
1427
1548
|
def test_lighting
|
|
@@ -1449,7 +1570,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1449
1570
|
hpxml.lighting.holiday_weekend_fractions = ConstantDaySchedule
|
|
1450
1571
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1451
1572
|
hpxml_default = _test_measure()
|
|
1452
|
-
_test_default_lighting_values(hpxml_default,
|
|
1573
|
+
_test_default_lighting_values(hpxml_default, 2.0, 2.0, 2.0,
|
|
1453
1574
|
{ int_wk_sch: ConstantDaySchedule,
|
|
1454
1575
|
int_wknd_sch: ConstantDaySchedule,
|
|
1455
1576
|
int_month_mult: ConstantMonthSchedule,
|
|
@@ -1483,7 +1604,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1483
1604
|
hpxml.lighting.holiday_exists = nil
|
|
1484
1605
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1485
1606
|
hpxml_default = _test_measure()
|
|
1486
|
-
_test_default_lighting_values(hpxml_default,
|
|
1607
|
+
_test_default_lighting_values(hpxml_default, 1.0, 1.0, 1.0,
|
|
1487
1608
|
{ ext_wk_sch: '0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.035, 0.034, 0.033, 0.028, 0.022, 0.015, 0.012, 0.011, 0.011, 0.012, 0.019, 0.037, 0.049, 0.065, 0.091, 0.105, 0.091, 0.063',
|
|
1488
1609
|
ext_wknd_sch: '0.046, 0.046, 0.045, 0.045, 0.046, 0.045, 0.044, 0.041, 0.036, 0.03, 0.024, 0.016, 0.012, 0.011, 0.011, 0.012, 0.019, 0.038, 0.048, 0.06, 0.083, 0.098, 0.085, 0.059',
|
|
1489
1610
|
ext_month_mult: '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248' })
|
|
@@ -1495,7 +1616,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1495
1616
|
hpxml.lighting.exterior_usage_multiplier = nil
|
|
1496
1617
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1497
1618
|
hpxml_default = _test_measure()
|
|
1498
|
-
_test_default_lighting_values(hpxml_default,
|
|
1619
|
+
_test_default_lighting_values(hpxml_default, 1.0, 1.0, 1.0,
|
|
1499
1620
|
{ ext_wk_sch: '0.046, 0.046, 0.046, 0.046, 0.046, 0.037, 0.035, 0.034, 0.033, 0.028, 0.022, 0.015, 0.012, 0.011, 0.011, 0.012, 0.019, 0.037, 0.049, 0.065, 0.091, 0.105, 0.091, 0.063',
|
|
1500
1621
|
ext_wknd_sch: '0.046, 0.046, 0.045, 0.045, 0.046, 0.045, 0.044, 0.041, 0.036, 0.03, 0.024, 0.016, 0.012, 0.011, 0.011, 0.012, 0.019, 0.038, 0.048, 0.06, 0.083, 0.098, 0.085, 0.059',
|
|
1501
1622
|
ext_month_mult: '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248',
|
|
@@ -1511,7 +1632,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1511
1632
|
hpxml.ceiling_fans[0].efficiency = 100
|
|
1512
1633
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1513
1634
|
hpxml_default = _test_measure()
|
|
1514
|
-
_test_default_ceiling_fan_values(hpxml_default,
|
|
1635
|
+
_test_default_ceiling_fan_values(hpxml_default, 2, 100)
|
|
1515
1636
|
|
|
1516
1637
|
# Test defaults
|
|
1517
1638
|
hpxml.ceiling_fans.each do |ceiling_fan|
|
|
@@ -1520,7 +1641,7 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1520
1641
|
end
|
|
1521
1642
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1522
1643
|
hpxml_default = _test_measure()
|
|
1523
|
-
_test_default_ceiling_fan_values(hpxml_default,
|
|
1644
|
+
_test_default_ceiling_fan_values(hpxml_default, 4, 70.4)
|
|
1524
1645
|
end
|
|
1525
1646
|
|
|
1526
1647
|
def test_pools
|
|
@@ -1540,8 +1661,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1540
1661
|
pool.pump_monthly_multipliers = ConstantMonthSchedule
|
|
1541
1662
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1542
1663
|
hpxml_default = _test_measure()
|
|
1543
|
-
_test_default_pool_heater_values(hpxml_default,
|
|
1544
|
-
_test_default_pool_pump_values(hpxml_default,
|
|
1664
|
+
_test_default_pool_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 1000, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1665
|
+
_test_default_pool_pump_values(hpxml_default, 3000, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1545
1666
|
|
|
1546
1667
|
# Test defaults
|
|
1547
1668
|
pool = hpxml.pools[0]
|
|
@@ -1558,8 +1679,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1558
1679
|
pool.pump_monthly_multipliers = nil
|
|
1559
1680
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1560
1681
|
hpxml_default = _test_measure()
|
|
1561
|
-
_test_default_pool_heater_values(hpxml_default,
|
|
1562
|
-
_test_default_pool_pump_values(hpxml_default,
|
|
1682
|
+
_test_default_pool_heater_values(hpxml_default, HPXML::UnitsThermPerYear, 236, 1.0, '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1683
|
+
_test_default_pool_pump_values(hpxml_default, 2496, 1.0, '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1563
1684
|
|
|
1564
1685
|
# Test defaults 2
|
|
1565
1686
|
hpxml = _create_hpxml('base-misc-loads-large-uncommon2.xml')
|
|
@@ -1577,8 +1698,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1577
1698
|
pool.pump_monthly_multipliers = nil
|
|
1578
1699
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1579
1700
|
hpxml_default = _test_measure()
|
|
1580
|
-
_test_default_pool_heater_values(hpxml_default,
|
|
1581
|
-
_test_default_pool_pump_values(hpxml_default,
|
|
1701
|
+
_test_default_pool_heater_values(hpxml_default, nil, nil, nil, nil, nil, nil)
|
|
1702
|
+
_test_default_pool_pump_values(hpxml_default, 2496, 1.0, '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '0.003, 0.003, 0.003, 0.004, 0.008, 0.015, 0.026, 0.044, 0.084, 0.121, 0.127, 0.121, 0.120, 0.090, 0.075, 0.061, 0.037, 0.023, 0.013, 0.008, 0.004, 0.003, 0.003, 0.003', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1582
1703
|
end
|
|
1583
1704
|
|
|
1584
1705
|
def test_hot_tubs
|
|
@@ -1598,8 +1719,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1598
1719
|
hot_tub.pump_monthly_multipliers = ConstantMonthSchedule
|
|
1599
1720
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1600
1721
|
hpxml_default = _test_measure()
|
|
1601
|
-
_test_default_hot_tub_heater_values(hpxml_default,
|
|
1602
|
-
_test_default_hot_tub_pump_values(hpxml_default,
|
|
1722
|
+
_test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsThermPerYear, 1000, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1723
|
+
_test_default_hot_tub_pump_values(hpxml_default, 3000, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1603
1724
|
|
|
1604
1725
|
# Test defaults
|
|
1605
1726
|
hot_tub = hpxml.hot_tubs[0]
|
|
@@ -1616,8 +1737,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1616
1737
|
hot_tub.pump_monthly_multipliers = nil
|
|
1617
1738
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1618
1739
|
hpxml_default = _test_measure()
|
|
1619
|
-
_test_default_hot_tub_heater_values(hpxml_default,
|
|
1620
|
-
_test_default_hot_tub_pump_values(hpxml_default,
|
|
1740
|
+
_test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 1125, 1.0, '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1741
|
+
_test_default_hot_tub_pump_values(hpxml_default, 1111, 1.0, '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
|
|
1621
1742
|
|
|
1622
1743
|
# Test defaults 2
|
|
1623
1744
|
hpxml = _create_hpxml('base-misc-loads-large-uncommon2.xml')
|
|
@@ -1635,8 +1756,8 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1635
1756
|
hot_tub.pump_monthly_multipliers = nil
|
|
1636
1757
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1637
1758
|
hpxml_default = _test_measure()
|
|
1638
|
-
_test_default_hot_tub_heater_values(hpxml_default,
|
|
1639
|
-
_test_default_hot_tub_pump_values(hpxml_default,
|
|
1759
|
+
_test_default_hot_tub_heater_values(hpxml_default, HPXML::UnitsKwhPerYear, 225, 1.0, '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837')
|
|
1760
|
+
_test_default_hot_tub_pump_values(hpxml_default, 1111, 1.0, '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.024, 0.029, 0.024, 0.029, 0.047, 0.067, 0.057, 0.024, 0.024, 0.019, 0.015, 0.014, 0.014, 0.014, 0.024, 0.058, 0.126, 0.122, 0.068, 0.061, 0.051, 0.043, 0.024, 0.024', '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921')
|
|
1640
1761
|
end
|
|
1641
1762
|
|
|
1642
1763
|
def test_plug_loads
|
|
@@ -1676,10 +1797,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1676
1797
|
wellpump_pl.monthly_multipliers = ConstantMonthSchedule
|
|
1677
1798
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1678
1799
|
hpxml_default = _test_measure()
|
|
1679
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1680
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1681
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1682
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1800
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeTelevision, 1000, 0.6, 0.3, 1.1, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1801
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeOther, 2000, 0.5, 0.4, 1.2, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1802
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeElectricVehicleCharging, 4000, 0.4, 0.5, 1.3, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1803
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeWellPump, 3000, 0.3, 0.6, 1.4, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1683
1804
|
|
|
1684
1805
|
# Test defaults
|
|
1685
1806
|
hpxml.plug_loads.each do |plug_load|
|
|
@@ -1693,10 +1814,10 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1693
1814
|
end
|
|
1694
1815
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1695
1816
|
hpxml_default = _test_measure()
|
|
1696
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1697
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1698
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1699
|
-
_test_default_plug_load_values(hpxml_default,
|
|
1817
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeTelevision, 620, 1.0, 0.0, 1.0, '0.037, 0.018, 0.009, 0.007, 0.011, 0.018, 0.029, 0.040, 0.049, 0.058, 0.065, 0.072, 0.076, 0.086, 0.091, 0.102, 0.127, 0.156, 0.210, 0.294, 0.363, 0.344, 0.208, 0.090', '0.044, 0.022, 0.012, 0.008, 0.011, 0.014, 0.024, 0.043, 0.071, 0.094, 0.112, 0.123, 0.132, 0.156, 0.178, 0.196, 0.206, 0.213, 0.251, 0.330, 0.388, 0.358, 0.226, 0.103', '1.137, 1.129, 0.961, 0.969, 0.961, 0.993, 0.996, 0.96, 0.993, 0.867, 0.86, 1.137')
|
|
1818
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeOther, 2457, 0.855, 0.045, 1.0, '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036', '1.248, 1.257, 0.993, 0.989, 0.993, 0.827, 0.821, 0.821, 0.827, 0.99, 0.987, 1.248')
|
|
1819
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeElectricVehicleCharging, 1667, 0.0, 0.0, 1.0, '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042', '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1')
|
|
1820
|
+
_test_default_plug_load_values(hpxml_default, HPXML::PlugLoadTypeWellPump, 441, 0.0, 0.0, 1.0, '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1700
1821
|
end
|
|
1701
1822
|
|
|
1702
1823
|
def test_fuel_loads
|
|
@@ -1728,9 +1849,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1728
1849
|
gf_fl.monthly_multipliers = ConstantMonthSchedule
|
|
1729
1850
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1730
1851
|
hpxml_default = _test_measure()
|
|
1731
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1732
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1733
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1852
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeGrill, 1000, 0.6, 0.3, 0.9, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1853
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeLighting, 2000, 0.5, 0.4, 0.8, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1854
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 3000, 0.4, 0.5, 0.7, ConstantDaySchedule, ConstantDaySchedule, ConstantMonthSchedule)
|
|
1734
1855
|
|
|
1735
1856
|
# Test defaults
|
|
1736
1857
|
hpxml.fuel_loads.each do |fuel_load|
|
|
@@ -1744,9 +1865,9 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1744
1865
|
end
|
|
1745
1866
|
XMLHelper.write_file(hpxml.to_oga, @tmp_hpxml_path)
|
|
1746
1867
|
hpxml_default = _test_measure()
|
|
1747
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1748
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1749
|
-
_test_default_fuel_load_values(hpxml_default,
|
|
1868
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeGrill, 33, 0.0, 0.0, 1.0, '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '0.004, 0.001, 0.001, 0.002, 0.007, 0.012, 0.029, 0.046, 0.044, 0.041, 0.044, 0.046, 0.042, 0.038, 0.049, 0.059, 0.110, 0.161, 0.115, 0.070, 0.044, 0.019, 0.013, 0.007', '1.097, 1.097, 0.991, 0.987, 0.991, 0.890, 0.896, 0.896, 0.890, 1.085, 1.085, 1.097')
|
|
1869
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeLighting, 20, 0.0, 0.0, 1.0, '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1870
|
+
_test_default_fuel_load_values(hpxml_default, HPXML::FuelLoadTypeFireplace, 67, 0.5, 0.1, 1.0, '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065', '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
|
1750
1871
|
end
|
|
1751
1872
|
|
|
1752
1873
|
def _test_measure()
|
|
@@ -1784,879 +1905,710 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
1784
1905
|
return hpxml_default
|
|
1785
1906
|
end
|
|
1786
1907
|
|
|
1787
|
-
def _test_default_header_values(hpxml,
|
|
1908
|
+
def _test_default_header_values(hpxml, tstep, sim_begin_month, sim_begin_day, sim_end_month, sim_end_day, sim_calendar_year,
|
|
1788
1909
|
dst_enabled, dst_begin_month, dst_begin_day, dst_end_month, dst_end_day,
|
|
1789
1910
|
use_max_load_for_heat_pumps, allow_increased_fixed_capacities)
|
|
1790
1911
|
assert_equal(tstep, hpxml.header.timestep)
|
|
1791
|
-
assert_equal(isdefaulted, hpxml.header.timestep_isdefaulted)
|
|
1792
|
-
|
|
1793
1912
|
assert_equal(sim_begin_month, hpxml.header.sim_begin_month)
|
|
1794
|
-
assert_equal(isdefaulted, hpxml.header.sim_begin_month_isdefaulted)
|
|
1795
|
-
|
|
1796
1913
|
assert_equal(sim_begin_day, hpxml.header.sim_begin_day)
|
|
1797
|
-
assert_equal(isdefaulted, hpxml.header.sim_begin_day_isdefaulted)
|
|
1798
|
-
|
|
1799
1914
|
assert_equal(sim_end_month, hpxml.header.sim_end_month)
|
|
1800
|
-
assert_equal(isdefaulted, hpxml.header.sim_end_month_isdefaulted)
|
|
1801
|
-
|
|
1802
1915
|
assert_equal(sim_end_day, hpxml.header.sim_end_day)
|
|
1803
|
-
assert_equal(isdefaulted, hpxml.header.sim_end_day_isdefaulted)
|
|
1804
|
-
|
|
1805
1916
|
assert_equal(sim_calendar_year, hpxml.header.sim_calendar_year)
|
|
1806
|
-
assert_equal(isdefaulted, hpxml.header.sim_calendar_year_isdefaulted)
|
|
1807
|
-
|
|
1808
1917
|
assert_equal(dst_enabled, hpxml.header.dst_enabled)
|
|
1809
|
-
assert_equal(isdefaulted, hpxml.header.dst_enabled_isdefaulted)
|
|
1810
|
-
|
|
1811
1918
|
assert_equal(dst_begin_month, hpxml.header.dst_begin_month)
|
|
1812
|
-
assert_equal(isdefaulted, hpxml.header.dst_begin_month_isdefaulted)
|
|
1813
|
-
|
|
1814
1919
|
assert_equal(dst_begin_day, hpxml.header.dst_begin_day)
|
|
1815
|
-
assert_equal(isdefaulted, hpxml.header.dst_begin_day_isdefaulted)
|
|
1816
|
-
|
|
1817
1920
|
assert_equal(dst_end_month, hpxml.header.dst_end_month)
|
|
1818
|
-
assert_equal(isdefaulted, hpxml.header.dst_end_month_isdefaulted)
|
|
1819
|
-
|
|
1820
1921
|
assert_equal(dst_end_day, hpxml.header.dst_end_day)
|
|
1821
|
-
assert_equal(isdefaulted, hpxml.header.dst_end_day_isdefaulted)
|
|
1822
|
-
|
|
1823
1922
|
assert_equal(use_max_load_for_heat_pumps, hpxml.header.use_max_load_for_heat_pumps)
|
|
1824
|
-
assert_equal(isdefaulted, hpxml.header.use_max_load_for_heat_pumps_isdefaulted)
|
|
1825
|
-
|
|
1826
1923
|
assert_equal(allow_increased_fixed_capacities, hpxml.header.allow_increased_fixed_capacities)
|
|
1827
|
-
assert_equal(isdefaulted, hpxml.header.allow_increased_fixed_capacities_isdefaulted)
|
|
1828
1924
|
end
|
|
1829
1925
|
|
|
1830
|
-
def _test_default_site_values(hpxml,
|
|
1926
|
+
def _test_default_site_values(hpxml, site_type, shielding_of_home)
|
|
1831
1927
|
assert_equal(site_type, hpxml.site.site_type)
|
|
1832
|
-
assert_equal(
|
|
1833
|
-
|
|
1834
|
-
assert_equal(shelter_coefficient, hpxml.site.shelter_coefficient)
|
|
1835
|
-
assert_equal(isdefaulted, hpxml.site.shelter_coefficient_isdefaulted)
|
|
1928
|
+
assert_equal(shielding_of_home, hpxml.site.shielding_of_home)
|
|
1836
1929
|
end
|
|
1837
1930
|
|
|
1838
|
-
def _test_default_occupancy_values(hpxml,
|
|
1931
|
+
def _test_default_occupancy_values(hpxml, num_occupants)
|
|
1839
1932
|
assert_equal(num_occupants, hpxml.building_occupancy.number_of_residents)
|
|
1840
|
-
assert_equal(isdefaulted, hpxml.building_occupancy.number_of_residents_isdefaulted)
|
|
1841
1933
|
end
|
|
1842
1934
|
|
|
1843
|
-
def _test_default_building_construction_values(hpxml,
|
|
1935
|
+
def _test_default_building_construction_values(hpxml, building_volume, average_ceiling_height, has_flue_or_chimney, n_bathrooms)
|
|
1844
1936
|
assert_equal(building_volume, hpxml.building_construction.conditioned_building_volume)
|
|
1845
|
-
|
|
1846
|
-
if isdefaulted
|
|
1847
|
-
assert_equal(isdefaulted, hpxml.building_construction.conditioned_building_volume_isdefaulted || hpxml.building_construction.average_ceiling_height_isdefaulted)
|
|
1848
|
-
else
|
|
1849
|
-
assert_equal(isdefaulted, hpxml.building_construction.conditioned_building_volume_isdefaulted)
|
|
1850
|
-
assert_equal(isdefaulted, hpxml.building_construction.average_ceiling_height_isdefaulted)
|
|
1851
|
-
end
|
|
1852
|
-
|
|
1937
|
+
assert_in_epsilon(average_ceiling_height, hpxml.building_construction.average_ceiling_height, 0.01)
|
|
1853
1938
|
assert_equal(has_flue_or_chimney, hpxml.building_construction.has_flue_or_chimney)
|
|
1854
|
-
assert_equal(isdefaulted, hpxml.building_construction.has_flue_or_chimney_isdefaulted)
|
|
1855
|
-
|
|
1856
1939
|
assert_equal(n_bathrooms, hpxml.building_construction.number_of_bathrooms)
|
|
1857
|
-
assert_equal(isdefaulted, hpxml.building_construction.number_of_bathrooms_isdefaulted)
|
|
1858
1940
|
end
|
|
1859
1941
|
|
|
1860
|
-
def _test_default_infiltration_values(hpxml,
|
|
1942
|
+
def _test_default_infiltration_values(hpxml, volume)
|
|
1861
1943
|
air_infiltration_measurement = hpxml.air_infiltration_measurements[0]
|
|
1862
1944
|
|
|
1863
1945
|
assert_equal(volume, air_infiltration_measurement.infiltration_volume)
|
|
1864
|
-
assert_equal(isdefaulted, air_infiltration_measurement.infiltration_volume_isdefaulted)
|
|
1865
1946
|
end
|
|
1866
1947
|
|
|
1867
|
-
def _test_default_attic_values(hpxml,
|
|
1948
|
+
def _test_default_attic_values(hpxml, sla)
|
|
1868
1949
|
attic = hpxml.attics[0]
|
|
1869
1950
|
|
|
1870
|
-
|
|
1871
|
-
assert_equal(isdefaulted, attic.vented_attic_sla_isdefaulted)
|
|
1951
|
+
assert_in_epsilon(sla, attic.vented_attic_sla, 0.001)
|
|
1872
1952
|
end
|
|
1873
1953
|
|
|
1874
|
-
def _test_default_foundation_values(hpxml,
|
|
1954
|
+
def _test_default_foundation_values(hpxml, sla)
|
|
1875
1955
|
foundation = hpxml.foundations[0]
|
|
1876
1956
|
|
|
1877
|
-
|
|
1878
|
-
assert_equal(isdefaulted, foundation.vented_crawlspace_sla_isdefaulted)
|
|
1957
|
+
assert_in_epsilon(sla, foundation.vented_crawlspace_sla, 0.001)
|
|
1879
1958
|
end
|
|
1880
1959
|
|
|
1881
|
-
def _test_default_roof_values(hpxml,
|
|
1960
|
+
def _test_default_roof_values(hpxml, roof_type, solar_absorptance, roof_color, emittance, radiant_barrier)
|
|
1882
1961
|
roof = hpxml.roofs[0]
|
|
1883
1962
|
|
|
1884
1963
|
assert_equal(roof_type, roof.roof_type)
|
|
1885
|
-
assert_equal(isdefaulted, roof.roof_type_isdefaulted)
|
|
1886
|
-
|
|
1887
1964
|
assert_equal(solar_absorptance, roof.solar_absorptance)
|
|
1888
1965
|
assert_equal(roof_color, roof.roof_color)
|
|
1889
|
-
if isdefaulted
|
|
1890
|
-
assert_equal(isdefaulted, roof.solar_absorptance_isdefaulted || roof.roof_color_isdefaulted)
|
|
1891
|
-
else
|
|
1892
|
-
assert_equal(isdefaulted, roof.solar_absorptance_isdefaulted)
|
|
1893
|
-
assert_equal(isdefaulted, roof.roof_color_isdefaulted)
|
|
1894
|
-
end
|
|
1895
|
-
|
|
1896
1966
|
assert_equal(emittance, roof.emittance)
|
|
1897
|
-
assert_equal(isdefaulted, roof.emittance_isdefaulted)
|
|
1898
|
-
|
|
1899
1967
|
assert_equal(radiant_barrier, roof.radiant_barrier)
|
|
1900
|
-
assert_equal(isdefaulted, roof.radiant_barrier_isdefaulted)
|
|
1901
1968
|
end
|
|
1902
1969
|
|
|
1903
|
-
def _test_default_rim_joist_values(hpxml,
|
|
1970
|
+
def _test_default_rim_joist_values(hpxml, siding, solar_absorptance, color, emittance)
|
|
1904
1971
|
rim_joist = hpxml.rim_joists[0]
|
|
1905
1972
|
|
|
1906
1973
|
assert_equal(siding, rim_joist.siding)
|
|
1907
|
-
assert_equal(isdefaulted, rim_joist.siding_isdefaulted)
|
|
1908
|
-
|
|
1909
1974
|
assert_equal(solar_absorptance, rim_joist.solar_absorptance)
|
|
1910
1975
|
assert_equal(color, rim_joist.color)
|
|
1911
|
-
if isdefaulted
|
|
1912
|
-
assert_equal(isdefaulted, rim_joist.solar_absorptance_isdefaulted || rim_joist.color_isdefaulted)
|
|
1913
|
-
else
|
|
1914
|
-
assert_equal(isdefaulted, rim_joist.solar_absorptance_isdefaulted)
|
|
1915
|
-
assert_equal(isdefaulted, rim_joist.color_isdefaulted)
|
|
1916
|
-
end
|
|
1917
|
-
|
|
1918
1976
|
assert_equal(emittance, rim_joist.emittance)
|
|
1919
|
-
assert_equal(isdefaulted, rim_joist.emittance_isdefaulted)
|
|
1920
1977
|
end
|
|
1921
1978
|
|
|
1922
|
-
def _test_default_wall_values(hpxml,
|
|
1979
|
+
def _test_default_wall_values(hpxml, siding, solar_absorptance, color, emittance)
|
|
1923
1980
|
wall = hpxml.walls[0]
|
|
1924
1981
|
|
|
1925
1982
|
assert_equal(siding, wall.siding)
|
|
1926
|
-
assert_equal(isdefaulted, wall.siding_isdefaulted)
|
|
1927
|
-
|
|
1928
1983
|
assert_equal(solar_absorptance, wall.solar_absorptance)
|
|
1929
1984
|
assert_equal(color, wall.color)
|
|
1930
|
-
if isdefaulted
|
|
1931
|
-
assert_equal(isdefaulted, wall.solar_absorptance_isdefaulted || wall.color_isdefaulted)
|
|
1932
|
-
else
|
|
1933
|
-
assert_equal(isdefaulted, wall.solar_absorptance_isdefaulted)
|
|
1934
|
-
assert_equal(isdefaulted, wall.color_isdefaulted)
|
|
1935
|
-
end
|
|
1936
|
-
|
|
1937
1985
|
assert_equal(emittance, wall.emittance)
|
|
1938
|
-
assert_equal(isdefaulted, wall.emittance_isdefaulted)
|
|
1939
1986
|
end
|
|
1940
1987
|
|
|
1941
|
-
def _test_default_foundation_wall_values(hpxml,
|
|
1988
|
+
def _test_default_foundation_wall_values(hpxml, thickness)
|
|
1942
1989
|
foundation_wall = hpxml.foundation_walls[0]
|
|
1943
1990
|
|
|
1944
1991
|
assert_equal(thickness, foundation_wall.thickness)
|
|
1945
|
-
assert_equal(isdefaulted, foundation_wall.thickness_isdefaulted)
|
|
1946
1992
|
end
|
|
1947
1993
|
|
|
1948
|
-
def _test_default_slab_values(hpxml,
|
|
1994
|
+
def _test_default_slab_values(hpxml, thickness, carpet_r_value, carpet_fraction)
|
|
1949
1995
|
slab = hpxml.slabs[0]
|
|
1950
1996
|
|
|
1951
1997
|
assert_equal(thickness, slab.thickness)
|
|
1952
|
-
assert_equal(isdefaulted, slab.thickness_isdefaulted)
|
|
1953
|
-
|
|
1954
1998
|
assert_equal(carpet_r_value, slab.carpet_r_value)
|
|
1955
|
-
assert_equal(isdefaulted, slab.carpet_r_value_isdefaulted)
|
|
1956
|
-
|
|
1957
1999
|
assert_equal(carpet_fraction, slab.carpet_fraction)
|
|
1958
|
-
assert_equal(isdefaulted, slab.carpet_fraction_isdefaulted)
|
|
1959
2000
|
end
|
|
1960
2001
|
|
|
1961
|
-
def _test_default_window_values(hpxml,
|
|
1962
|
-
assert_equal(
|
|
2002
|
+
def _test_default_window_values(hpxml, ext_summer_sfs, ext_winter_sfs, int_summer_sfs, int_winter_sfs, fraction_operable)
|
|
2003
|
+
assert_equal(ext_summer_sfs.size, hpxml.windows.size)
|
|
1963
2004
|
hpxml.windows.each_with_index do |window, idx|
|
|
1964
|
-
assert_equal(
|
|
1965
|
-
assert_equal(
|
|
1966
|
-
|
|
1967
|
-
assert_equal(
|
|
1968
|
-
assert_equal(isdefaulted, window.interior_shading_factor_winter_isdefaulted)
|
|
1969
|
-
|
|
2005
|
+
assert_equal(ext_summer_sfs[idx], window.exterior_shading_factor_summer)
|
|
2006
|
+
assert_equal(ext_winter_sfs[idx], window.exterior_shading_factor_winter)
|
|
2007
|
+
assert_equal(int_summer_sfs[idx], window.interior_shading_factor_summer)
|
|
2008
|
+
assert_equal(int_winter_sfs[idx], window.interior_shading_factor_winter)
|
|
1970
2009
|
assert_equal(fraction_operable[idx], window.fraction_operable)
|
|
1971
|
-
assert_equal(isdefaulted, window.fraction_operable_isdefaulted)
|
|
1972
2010
|
end
|
|
1973
2011
|
end
|
|
1974
2012
|
|
|
1975
|
-
def _test_default_skylight_values(hpxml,
|
|
1976
|
-
assert_equal(
|
|
2013
|
+
def _test_default_skylight_values(hpxml, ext_summer_sfs, ext_winter_sfs, int_summer_sfs, int_winter_sfs)
|
|
2014
|
+
assert_equal(ext_summer_sfs.size, hpxml.skylights.size)
|
|
1977
2015
|
hpxml.skylights.each_with_index do |skylight, idx|
|
|
1978
|
-
assert_equal(
|
|
1979
|
-
assert_equal(
|
|
1980
|
-
|
|
1981
|
-
assert_equal(
|
|
1982
|
-
assert_equal(isdefaulted, skylight.interior_shading_factor_winter_isdefaulted)
|
|
2016
|
+
assert_equal(ext_summer_sfs[idx], skylight.exterior_shading_factor_summer)
|
|
2017
|
+
assert_equal(ext_winter_sfs[idx], skylight.exterior_shading_factor_winter)
|
|
2018
|
+
assert_equal(int_summer_sfs[idx], skylight.interior_shading_factor_summer)
|
|
2019
|
+
assert_equal(int_winter_sfs[idx], skylight.interior_shading_factor_winter)
|
|
1983
2020
|
end
|
|
1984
2021
|
end
|
|
1985
2022
|
|
|
1986
|
-
def _test_default_central_air_conditioner_values(hpxml,
|
|
2023
|
+
def _test_default_central_air_conditioner_values(hpxml, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
|
|
2024
|
+
airflow_defect_ratio, cooling_capacity)
|
|
1987
2025
|
cooling_system = hpxml.cooling_systems[0]
|
|
1988
2026
|
|
|
1989
2027
|
assert_equal(shr, cooling_system.cooling_shr)
|
|
1990
|
-
assert_equal(isdefaulted, cooling_system.cooling_shr_isdefaulted)
|
|
1991
|
-
|
|
1992
2028
|
assert_equal(compressor_type, cooling_system.compressor_type)
|
|
1993
|
-
assert_equal(isdefaulted, cooling_system.compressor_type_isdefaulted)
|
|
1994
|
-
|
|
1995
2029
|
assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
|
|
1996
|
-
assert_equal(
|
|
2030
|
+
assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
|
|
2031
|
+
assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
|
|
2032
|
+
if cooling_capacity.nil?
|
|
2033
|
+
assert(cooling_system.cooling_capacity > 0)
|
|
2034
|
+
else
|
|
2035
|
+
assert_equal(cooling_system.cooling_capacity, cooling_capacity)
|
|
2036
|
+
end
|
|
1997
2037
|
end
|
|
1998
2038
|
|
|
1999
|
-
def _test_default_room_air_conditioner_values(hpxml,
|
|
2039
|
+
def _test_default_room_air_conditioner_values(hpxml, shr, cooling_capacity)
|
|
2000
2040
|
cooling_system = hpxml.cooling_systems[0]
|
|
2001
2041
|
|
|
2002
2042
|
assert_equal(shr, cooling_system.cooling_shr)
|
|
2003
|
-
|
|
2043
|
+
if cooling_capacity.nil?
|
|
2044
|
+
assert(cooling_system.cooling_capacity > 0)
|
|
2045
|
+
else
|
|
2046
|
+
assert_equal(cooling_system.cooling_capacity, cooling_capacity)
|
|
2047
|
+
end
|
|
2004
2048
|
end
|
|
2005
2049
|
|
|
2006
|
-
def
|
|
2050
|
+
def _test_default_evap_cooler_values(hpxml, cooling_capacity)
|
|
2007
2051
|
cooling_system = hpxml.cooling_systems[0]
|
|
2008
2052
|
|
|
2009
|
-
|
|
2010
|
-
|
|
2053
|
+
if cooling_capacity.nil?
|
|
2054
|
+
assert(cooling_system.cooling_capacity > 0)
|
|
2055
|
+
else
|
|
2056
|
+
assert_equal(cooling_system.cooling_capacity, cooling_capacity)
|
|
2057
|
+
end
|
|
2058
|
+
end
|
|
2059
|
+
|
|
2060
|
+
def _test_default_mini_split_air_conditioner_values(hpxml, shr, fan_watts_per_cfm, charge_defect_ratio,
|
|
2061
|
+
airflow_defect_ratio, cooling_capacity)
|
|
2062
|
+
cooling_system = hpxml.cooling_systems[0]
|
|
2011
2063
|
|
|
2064
|
+
assert_equal(shr, cooling_system.cooling_shr)
|
|
2012
2065
|
assert_equal(fan_watts_per_cfm, cooling_system.fan_watts_per_cfm)
|
|
2013
|
-
assert_equal(
|
|
2066
|
+
assert_equal(charge_defect_ratio, cooling_system.charge_defect_ratio)
|
|
2067
|
+
assert_equal(airflow_defect_ratio, cooling_system.airflow_defect_ratio)
|
|
2068
|
+
if cooling_capacity.nil?
|
|
2069
|
+
assert(cooling_system.cooling_capacity > 0)
|
|
2070
|
+
else
|
|
2071
|
+
assert_equal(cooling_system.cooling_capacity, cooling_capacity)
|
|
2072
|
+
end
|
|
2014
2073
|
end
|
|
2015
2074
|
|
|
2016
|
-
def _test_default_furnace_values(hpxml,
|
|
2075
|
+
def _test_default_furnace_values(hpxml, fan_watts_per_cfm, airflow_defect_ratio,
|
|
2076
|
+
heating_capacity)
|
|
2017
2077
|
heating_system = hpxml.heating_systems[0]
|
|
2018
2078
|
|
|
2019
2079
|
assert_equal(fan_watts_per_cfm, heating_system.fan_watts_per_cfm)
|
|
2020
|
-
assert_equal(
|
|
2080
|
+
assert_equal(airflow_defect_ratio, heating_system.airflow_defect_ratio)
|
|
2081
|
+
if heating_capacity.nil?
|
|
2082
|
+
assert(heating_system.heating_capacity > 0)
|
|
2083
|
+
else
|
|
2084
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2085
|
+
end
|
|
2021
2086
|
end
|
|
2022
2087
|
|
|
2023
|
-
def _test_default_wall_furnace_values(hpxml,
|
|
2088
|
+
def _test_default_wall_furnace_values(hpxml, fan_watts, heating_capacity)
|
|
2024
2089
|
heating_system = hpxml.heating_systems[0]
|
|
2025
2090
|
|
|
2026
2091
|
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2027
|
-
|
|
2092
|
+
if heating_capacity.nil?
|
|
2093
|
+
assert(heating_system.heating_capacity > 0)
|
|
2094
|
+
else
|
|
2095
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2096
|
+
end
|
|
2028
2097
|
end
|
|
2029
2098
|
|
|
2030
|
-
def _test_default_floor_furnace_values(hpxml,
|
|
2099
|
+
def _test_default_floor_furnace_values(hpxml, fan_watts, heating_capacity)
|
|
2031
2100
|
heating_system = hpxml.heating_systems[0]
|
|
2032
2101
|
|
|
2033
2102
|
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2034
|
-
|
|
2103
|
+
if heating_capacity.nil?
|
|
2104
|
+
assert(heating_system.heating_capacity > 0)
|
|
2105
|
+
else
|
|
2106
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2107
|
+
end
|
|
2035
2108
|
end
|
|
2036
2109
|
|
|
2037
|
-
def
|
|
2110
|
+
def _test_default_boiler_values(hpxml, eae, heating_capacity)
|
|
2038
2111
|
heating_system = hpxml.heating_systems[0]
|
|
2039
2112
|
|
|
2040
|
-
assert_equal(
|
|
2041
|
-
|
|
2113
|
+
assert_equal(eae, heating_system.electric_auxiliary_energy)
|
|
2114
|
+
if heating_capacity.nil?
|
|
2115
|
+
assert(heating_system.heating_capacity > 0)
|
|
2116
|
+
else
|
|
2117
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2118
|
+
end
|
|
2042
2119
|
end
|
|
2043
2120
|
|
|
2044
|
-
def
|
|
2121
|
+
def _test_default_stove_values(hpxml, fan_watts, heating_capacity)
|
|
2045
2122
|
heating_system = hpxml.heating_systems[0]
|
|
2046
2123
|
|
|
2047
2124
|
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2048
|
-
|
|
2125
|
+
if heating_capacity.nil?
|
|
2126
|
+
assert(heating_system.heating_capacity > 0)
|
|
2127
|
+
else
|
|
2128
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2129
|
+
end
|
|
2049
2130
|
end
|
|
2050
2131
|
|
|
2051
|
-
def
|
|
2132
|
+
def _test_default_portable_heater_values(hpxml, fan_watts, heating_capacity)
|
|
2052
2133
|
heating_system = hpxml.heating_systems[0]
|
|
2053
2134
|
|
|
2054
2135
|
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2055
|
-
|
|
2136
|
+
if heating_capacity.nil?
|
|
2137
|
+
assert(heating_system.heating_capacity > 0)
|
|
2138
|
+
else
|
|
2139
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2140
|
+
end
|
|
2056
2141
|
end
|
|
2057
2142
|
|
|
2058
|
-
def
|
|
2143
|
+
def _test_default_fixed_heater_values(hpxml, fan_watts, heating_capacity)
|
|
2059
2144
|
heating_system = hpxml.heating_systems[0]
|
|
2060
2145
|
|
|
2061
2146
|
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2062
|
-
|
|
2147
|
+
if heating_capacity.nil?
|
|
2148
|
+
assert(heating_system.heating_capacity > 0)
|
|
2149
|
+
else
|
|
2150
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2151
|
+
end
|
|
2063
2152
|
end
|
|
2064
2153
|
|
|
2065
|
-
def
|
|
2154
|
+
def _test_default_fireplace_values(hpxml, fan_watts, heating_capacity)
|
|
2066
2155
|
heating_system = hpxml.heating_systems[0]
|
|
2067
2156
|
|
|
2068
|
-
assert_equal(
|
|
2069
|
-
|
|
2157
|
+
assert_equal(fan_watts, heating_system.fan_watts)
|
|
2158
|
+
if heating_capacity.nil?
|
|
2159
|
+
assert(heating_system.heating_capacity > 0)
|
|
2160
|
+
else
|
|
2161
|
+
assert_equal(heating_system.heating_capacity, heating_capacity)
|
|
2162
|
+
end
|
|
2070
2163
|
end
|
|
2071
2164
|
|
|
2072
|
-
def _test_default_air_to_air_heat_pump_values(hpxml,
|
|
2165
|
+
def _test_default_air_to_air_heat_pump_values(hpxml, shr, compressor_type, fan_watts_per_cfm, charge_defect_ratio,
|
|
2166
|
+
airflow_defect_ratio, cooling_capacity, heating_capacity,
|
|
2167
|
+
heating_capacity_17F, backup_heating_capacity)
|
|
2073
2168
|
heat_pump = hpxml.heat_pumps[0]
|
|
2074
2169
|
|
|
2075
2170
|
assert_equal(shr, heat_pump.cooling_shr)
|
|
2076
|
-
assert_equal(isdefaulted, heat_pump.cooling_shr_isdefaulted)
|
|
2077
|
-
|
|
2078
2171
|
assert_equal(compressor_type, heat_pump.compressor_type)
|
|
2079
|
-
assert_equal(isdefaulted, heat_pump.compressor_type_isdefaulted)
|
|
2080
|
-
|
|
2081
2172
|
assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
|
|
2082
|
-
assert_equal(
|
|
2173
|
+
assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
|
|
2174
|
+
assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
|
|
2175
|
+
if cooling_capacity.nil?
|
|
2176
|
+
assert(heat_pump.cooling_capacity > 0)
|
|
2177
|
+
else
|
|
2178
|
+
assert_equal(heat_pump.cooling_capacity, cooling_capacity)
|
|
2179
|
+
end
|
|
2180
|
+
if heating_capacity.nil?
|
|
2181
|
+
assert(heat_pump.heating_capacity > 0)
|
|
2182
|
+
else
|
|
2183
|
+
assert_equal(heat_pump.heating_capacity, heating_capacity)
|
|
2184
|
+
end
|
|
2185
|
+
if heating_capacity_17F.nil?
|
|
2186
|
+
# assert(heat_pump.heating_capacity_17F > 0) # FUTURE
|
|
2187
|
+
else
|
|
2188
|
+
assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
|
|
2189
|
+
end
|
|
2190
|
+
if backup_heating_capacity.nil?
|
|
2191
|
+
assert(heat_pump.backup_heating_capacity > 0)
|
|
2192
|
+
else
|
|
2193
|
+
assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
|
|
2194
|
+
end
|
|
2083
2195
|
end
|
|
2084
2196
|
|
|
2085
|
-
def _test_default_mini_split_heat_pump_values(hpxml,
|
|
2197
|
+
def _test_default_mini_split_heat_pump_values(hpxml, shr, fan_watts_per_cfm, charge_defect_ratio,
|
|
2198
|
+
airflow_defect_ratio, cooling_capacity, heating_capacity,
|
|
2199
|
+
heating_capacity_17F, backup_heating_capacity)
|
|
2086
2200
|
heat_pump = hpxml.heat_pumps[0]
|
|
2087
2201
|
|
|
2088
2202
|
assert_equal(shr, heat_pump.cooling_shr)
|
|
2089
|
-
assert_equal(isdefaulted, heat_pump.cooling_shr_isdefaulted)
|
|
2090
|
-
|
|
2091
2203
|
assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
|
|
2092
|
-
assert_equal(
|
|
2204
|
+
assert_equal(charge_defect_ratio, heat_pump.charge_defect_ratio)
|
|
2205
|
+
assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
|
|
2206
|
+
if cooling_capacity.nil?
|
|
2207
|
+
assert(heat_pump.cooling_capacity > 0)
|
|
2208
|
+
else
|
|
2209
|
+
assert_equal(heat_pump.cooling_capacity, cooling_capacity)
|
|
2210
|
+
end
|
|
2211
|
+
if heating_capacity.nil?
|
|
2212
|
+
assert(heat_pump.heating_capacity > 0)
|
|
2213
|
+
else
|
|
2214
|
+
assert_equal(heat_pump.heating_capacity, heating_capacity)
|
|
2215
|
+
end
|
|
2216
|
+
if heating_capacity_17F.nil?
|
|
2217
|
+
# assert(heat_pump.heating_capacity_17F > 0) # FUTURE
|
|
2218
|
+
else
|
|
2219
|
+
assert_equal(heat_pump.heating_capacity_17F, heating_capacity_17F)
|
|
2220
|
+
end
|
|
2221
|
+
if backup_heating_capacity.nil?
|
|
2222
|
+
assert(heat_pump.backup_heating_capacity > 0)
|
|
2223
|
+
else
|
|
2224
|
+
assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
|
|
2225
|
+
end
|
|
2093
2226
|
end
|
|
2094
2227
|
|
|
2095
|
-
def _test_default_ground_to_air_heat_pump_values(hpxml,
|
|
2228
|
+
def _test_default_ground_to_air_heat_pump_values(hpxml, pump_watts_per_ton, fan_watts_per_cfm,
|
|
2229
|
+
airflow_defect_ratio, cooling_capacity, heating_capacity,
|
|
2230
|
+
backup_heating_capacity)
|
|
2231
|
+
|
|
2096
2232
|
heat_pump = hpxml.heat_pumps[0]
|
|
2097
2233
|
|
|
2098
2234
|
assert_equal(pump_watts_per_ton, heat_pump.pump_watts_per_ton)
|
|
2099
|
-
assert_equal(isdefaulted, heat_pump.pump_watts_per_ton_isdefaulted)
|
|
2100
|
-
|
|
2101
2235
|
assert_equal(fan_watts_per_cfm, heat_pump.fan_watts_per_cfm)
|
|
2102
|
-
assert_equal(
|
|
2236
|
+
assert_equal(airflow_defect_ratio, heat_pump.airflow_defect_ratio)
|
|
2237
|
+
if cooling_capacity.nil?
|
|
2238
|
+
assert(heat_pump.cooling_capacity > 0)
|
|
2239
|
+
else
|
|
2240
|
+
assert_equal(heat_pump.cooling_capacity, cooling_capacity)
|
|
2241
|
+
end
|
|
2242
|
+
if heating_capacity.nil?
|
|
2243
|
+
assert(heat_pump.heating_capacity > 0)
|
|
2244
|
+
else
|
|
2245
|
+
assert_equal(heat_pump.heating_capacity, heating_capacity)
|
|
2246
|
+
end
|
|
2247
|
+
if backup_heating_capacity.nil?
|
|
2248
|
+
assert(heat_pump.backup_heating_capacity > 0)
|
|
2249
|
+
else
|
|
2250
|
+
assert_equal(heat_pump.backup_heating_capacity, backup_heating_capacity)
|
|
2251
|
+
end
|
|
2103
2252
|
end
|
|
2104
2253
|
|
|
2105
|
-
def _test_default_hvac_control_values(hpxml,
|
|
2254
|
+
def _test_default_hvac_control_values(hpxml, htg_setback_start_hr, clg_setup_start_hr)
|
|
2106
2255
|
hvac_control = hpxml.hvac_controls[0]
|
|
2107
2256
|
|
|
2108
2257
|
assert_equal(htg_setback_start_hr, hvac_control.heating_setback_start_hour)
|
|
2109
|
-
assert_equal(isdefaulted, hvac_control.heating_setback_start_hour_isdefaulted)
|
|
2110
|
-
|
|
2111
2258
|
assert_equal(clg_setup_start_hr, hvac_control.cooling_setup_start_hour)
|
|
2112
|
-
assert_equal(isdefaulted, hvac_control.cooling_setup_start_hour_isdefaulted)
|
|
2113
2259
|
end
|
|
2114
2260
|
|
|
2115
|
-
def _test_default_duct_values(hpxml,
|
|
2261
|
+
def _test_default_duct_values(hpxml, supply_locations, return_locations, supply_areas, return_areas, n_return_registers)
|
|
2116
2262
|
supply_duct_idx = 0
|
|
2117
2263
|
return_duct_idx = 0
|
|
2118
2264
|
hpxml.hvac_distributions.each do |hvac_distribution|
|
|
2119
|
-
next unless [HPXML::HVACDistributionTypeAir
|
|
2265
|
+
next unless [HPXML::HVACDistributionTypeAir].include? hvac_distribution.distribution_system_type
|
|
2120
2266
|
|
|
2121
2267
|
assert_equal(n_return_registers, hvac_distribution.number_of_return_registers)
|
|
2122
|
-
assert_equal(isdefaulted, hvac_distribution.number_of_return_registers_isdefaulted)
|
|
2123
|
-
|
|
2124
2268
|
hvac_distribution.ducts.each do |duct|
|
|
2125
2269
|
if duct.duct_type == HPXML::DuctTypeSupply
|
|
2126
2270
|
assert_equal(supply_locations[supply_duct_idx], duct.duct_location)
|
|
2127
|
-
assert_equal(isdefaulted, duct.duct_location_isdefaulted)
|
|
2128
|
-
|
|
2129
2271
|
assert_in_epsilon(supply_areas[supply_duct_idx], duct.duct_surface_area, 0.01)
|
|
2130
|
-
assert_equal(isdefaulted, duct.duct_surface_area_isdefaulted)
|
|
2131
|
-
|
|
2132
2272
|
supply_duct_idx += 1
|
|
2133
2273
|
elsif duct.duct_type == HPXML::DuctTypeReturn
|
|
2134
2274
|
assert_equal(return_locations[return_duct_idx], duct.duct_location)
|
|
2135
|
-
assert_equal(isdefaulted, duct.duct_location_isdefaulted)
|
|
2136
|
-
|
|
2137
2275
|
assert_in_epsilon(return_areas[return_duct_idx], duct.duct_surface_area, 0.01)
|
|
2138
|
-
assert_equal(isdefaulted, duct.duct_surface_area_isdefaulted)
|
|
2139
|
-
|
|
2140
2276
|
return_duct_idx += 1
|
|
2141
2277
|
end
|
|
2142
2278
|
end
|
|
2143
2279
|
end
|
|
2144
2280
|
end
|
|
2145
2281
|
|
|
2146
|
-
def _test_default_mech_vent_values(hpxml,
|
|
2282
|
+
def _test_default_mech_vent_values(hpxml, is_shared_system, hours_in_operation)
|
|
2147
2283
|
vent_fan = hpxml.ventilation_fans.select { |f| f.used_for_whole_building_ventilation }[0]
|
|
2148
2284
|
|
|
2149
2285
|
assert_equal(is_shared_system, vent_fan.is_shared_system)
|
|
2150
|
-
assert_equal(isdefaulted, vent_fan.is_shared_system_isdefaulted)
|
|
2151
|
-
|
|
2152
2286
|
assert_equal(hours_in_operation, vent_fan.hours_in_operation)
|
|
2153
|
-
assert_equal(isdefaulted, vent_fan.hours_in_operation_isdefaulted)
|
|
2154
2287
|
end
|
|
2155
2288
|
|
|
2156
|
-
def _test_default_kitchen_fan_values(hpxml,
|
|
2289
|
+
def _test_default_kitchen_fan_values(hpxml, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
|
|
2157
2290
|
kitchen_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationKitchen }[0]
|
|
2158
2291
|
|
|
2159
2292
|
assert_equal(quantity, kitchen_fan.quantity)
|
|
2160
|
-
assert_equal(isdefaulted, kitchen_fan.quantity_isdefaulted)
|
|
2161
|
-
|
|
2162
2293
|
assert_equal(rated_flow_rate, kitchen_fan.rated_flow_rate)
|
|
2163
|
-
assert_equal(isdefaulted, kitchen_fan.rated_flow_rate_isdefaulted)
|
|
2164
|
-
|
|
2165
2294
|
assert_equal(hours_in_operation, kitchen_fan.hours_in_operation)
|
|
2166
|
-
assert_equal(isdefaulted, kitchen_fan.hours_in_operation_isdefaulted)
|
|
2167
|
-
|
|
2168
2295
|
assert_equal(fan_power, kitchen_fan.fan_power)
|
|
2169
|
-
assert_equal(isdefaulted, kitchen_fan.fan_power_isdefaulted)
|
|
2170
|
-
|
|
2171
2296
|
assert_equal(start_hour, kitchen_fan.start_hour)
|
|
2172
|
-
assert_equal(isdefaulted, kitchen_fan.start_hour_isdefaulted)
|
|
2173
2297
|
end
|
|
2174
2298
|
|
|
2175
|
-
def _test_default_bath_fan_values(hpxml,
|
|
2299
|
+
def _test_default_bath_fan_values(hpxml, quantity, rated_flow_rate, hours_in_operation, fan_power, start_hour)
|
|
2176
2300
|
bath_fan = hpxml.ventilation_fans.select { |f| f.used_for_local_ventilation && f.fan_location == HPXML::LocationBath }[0]
|
|
2177
2301
|
|
|
2178
2302
|
assert_equal(quantity, bath_fan.quantity)
|
|
2179
|
-
assert_equal(isdefaulted, bath_fan.quantity_isdefaulted)
|
|
2180
|
-
|
|
2181
2303
|
assert_equal(rated_flow_rate, bath_fan.rated_flow_rate)
|
|
2182
|
-
assert_equal(isdefaulted, bath_fan.rated_flow_rate_isdefaulted)
|
|
2183
|
-
|
|
2184
2304
|
assert_equal(hours_in_operation, bath_fan.hours_in_operation)
|
|
2185
|
-
assert_equal(isdefaulted, bath_fan.hours_in_operation_isdefaulted)
|
|
2186
|
-
|
|
2187
2305
|
assert_equal(fan_power, bath_fan.fan_power)
|
|
2188
|
-
assert_equal(isdefaulted, bath_fan.fan_power_isdefaulted)
|
|
2189
|
-
|
|
2190
2306
|
assert_equal(start_hour, bath_fan.start_hour)
|
|
2191
|
-
assert_equal(isdefaulted, bath_fan.start_hour_isdefaulted)
|
|
2192
2307
|
end
|
|
2193
2308
|
|
|
2194
|
-
def _test_default_storage_water_heater_values(hpxml,
|
|
2309
|
+
def _test_default_storage_water_heater_values(hpxml, *expected_wh_values)
|
|
2195
2310
|
storage_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeStorage }
|
|
2196
2311
|
assert_equal(expected_wh_values.size, storage_water_heaters.size)
|
|
2197
2312
|
storage_water_heaters.each_with_index do |wh_system, idx|
|
|
2198
2313
|
is_shared, heating_capacity, tank_volume, recovery_efficiency, location = expected_wh_values[idx]
|
|
2199
2314
|
|
|
2200
2315
|
assert_equal(is_shared, wh_system.is_shared_system)
|
|
2201
|
-
assert_equal(isdefaulted, wh_system.is_shared_system_isdefaulted)
|
|
2202
|
-
|
|
2203
2316
|
assert_in_epsilon(heating_capacity, wh_system.heating_capacity, 0.01)
|
|
2204
|
-
assert_equal(isdefaulted, wh_system.heating_capacity_isdefaulted)
|
|
2205
|
-
|
|
2206
2317
|
assert_equal(tank_volume, wh_system.tank_volume)
|
|
2207
|
-
assert_equal(isdefaulted, wh_system.tank_volume_isdefaulted)
|
|
2208
|
-
|
|
2209
2318
|
assert_in_epsilon(recovery_efficiency, wh_system.recovery_efficiency, 0.01)
|
|
2210
|
-
assert_equal(isdefaulted, wh_system.recovery_efficiency_isdefaulted)
|
|
2211
|
-
|
|
2212
2319
|
assert_equal(location, wh_system.location)
|
|
2213
|
-
assert_equal(isdefaulted, wh_system.location_isdefaulted)
|
|
2214
2320
|
end
|
|
2215
2321
|
end
|
|
2216
2322
|
|
|
2217
|
-
def _test_default_tankless_water_heater_values(hpxml,
|
|
2323
|
+
def _test_default_tankless_water_heater_values(hpxml, *expected_wh_values)
|
|
2218
2324
|
tankless_water_heaters = hpxml.water_heating_systems.select { |w| w.water_heater_type == HPXML::WaterHeaterTypeTankless }
|
|
2219
2325
|
assert_equal(expected_wh_values.size, tankless_water_heaters.size)
|
|
2220
2326
|
tankless_water_heaters.each_with_index do |wh_system, idx|
|
|
2221
2327
|
performance_adjustment, = expected_wh_values[idx]
|
|
2222
2328
|
|
|
2223
2329
|
assert_equal(performance_adjustment, wh_system.performance_adjustment)
|
|
2224
|
-
assert_equal(isdefaulted, wh_system.performance_adjustment_isdefaulted)
|
|
2225
2330
|
end
|
|
2226
2331
|
end
|
|
2227
2332
|
|
|
2228
|
-
def _test_default_standard_distribution_values(hpxml,
|
|
2333
|
+
def _test_default_standard_distribution_values(hpxml, piping_length, pipe_r_value)
|
|
2229
2334
|
hot_water_distribution = hpxml.hot_water_distributions[0]
|
|
2230
2335
|
|
|
2231
2336
|
assert_in_epsilon(piping_length, hot_water_distribution.standard_piping_length, 0.01)
|
|
2232
|
-
assert_equal(isdefaulted, hot_water_distribution.standard_piping_length_isdefaulted)
|
|
2233
|
-
|
|
2234
2337
|
assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
|
|
2235
|
-
assert_equal(isdefaulted, hot_water_distribution.pipe_r_value_isdefaulted)
|
|
2236
2338
|
end
|
|
2237
2339
|
|
|
2238
|
-
def _test_default_recirc_distribution_values(hpxml,
|
|
2340
|
+
def _test_default_recirc_distribution_values(hpxml, piping_length, branch_piping_length, pump_power, pipe_r_value)
|
|
2239
2341
|
hot_water_distribution = hpxml.hot_water_distributions[0]
|
|
2240
2342
|
|
|
2241
2343
|
assert_in_epsilon(piping_length, hot_water_distribution.recirculation_piping_length, 0.01)
|
|
2242
|
-
assert_equal(isdefaulted, hot_water_distribution.recirculation_piping_length_isdefaulted)
|
|
2243
|
-
|
|
2244
2344
|
assert_in_epsilon(branch_piping_length, hot_water_distribution.recirculation_branch_piping_length, 0.01)
|
|
2245
|
-
assert_equal(isdefaulted, hot_water_distribution.recirculation_branch_piping_length_isdefaulted)
|
|
2246
|
-
|
|
2247
2345
|
assert_in_epsilon(pump_power, hot_water_distribution.recirculation_pump_power, 0.01)
|
|
2248
|
-
assert_equal(isdefaulted, hot_water_distribution.recirculation_pump_power_isdefaulted)
|
|
2249
|
-
|
|
2250
2346
|
assert_equal(pipe_r_value, hot_water_distribution.pipe_r_value)
|
|
2251
|
-
assert_equal(isdefaulted, hot_water_distribution.pipe_r_value_isdefaulted)
|
|
2252
2347
|
end
|
|
2253
2348
|
|
|
2254
|
-
def _test_default_shared_recirc_distribution_values(hpxml,
|
|
2349
|
+
def _test_default_shared_recirc_distribution_values(hpxml, pump_power)
|
|
2255
2350
|
hot_water_distribution = hpxml.hot_water_distributions[0]
|
|
2256
2351
|
|
|
2257
2352
|
assert_in_epsilon(pump_power, hot_water_distribution.shared_recirculation_pump_power, 0.01)
|
|
2258
|
-
assert_equal(isdefaulted, hot_water_distribution.shared_recirculation_pump_power_isdefaulted)
|
|
2259
2353
|
end
|
|
2260
2354
|
|
|
2261
|
-
def _test_default_water_fixture_values(hpxml,
|
|
2355
|
+
def _test_default_water_fixture_values(hpxml, usage_multiplier)
|
|
2262
2356
|
assert_equal(usage_multiplier, hpxml.water_heating.water_fixtures_usage_multiplier)
|
|
2263
|
-
assert_equal(isdefaulted, hpxml.water_heating.water_fixtures_usage_multiplier_isdefaulted)
|
|
2264
2357
|
end
|
|
2265
2358
|
|
|
2266
|
-
def _test_default_solar_thermal_values(hpxml,
|
|
2359
|
+
def _test_default_solar_thermal_values(hpxml, storage_volume)
|
|
2267
2360
|
solar_thermal_system = hpxml.solar_thermal_systems[0]
|
|
2268
2361
|
|
|
2269
2362
|
assert_equal(storage_volume, solar_thermal_system.storage_volume)
|
|
2270
|
-
assert_equal(isdefaulted, solar_thermal_system.storage_volume_isdefaulted)
|
|
2271
2363
|
end
|
|
2272
2364
|
|
|
2273
|
-
def _test_default_pv_system_values(hpxml,
|
|
2365
|
+
def _test_default_pv_system_values(hpxml, interver_efficiency, system_loss_frac, is_shared_system, location, tracking, module_type)
|
|
2274
2366
|
hpxml.pv_systems.each_with_index do |pv, idx|
|
|
2275
2367
|
assert_equal(is_shared_system, pv.is_shared_system)
|
|
2276
|
-
assert_equal(isdefaulted, pv.is_shared_system_isdefaulted)
|
|
2277
|
-
|
|
2278
2368
|
assert_equal(interver_efficiency, pv.inverter_efficiency)
|
|
2279
|
-
assert_equal(isdefaulted, pv.inverter_efficiency_isdefaulted)
|
|
2280
|
-
|
|
2281
2369
|
assert_in_epsilon(system_loss_frac, pv.system_losses_fraction, 0.01)
|
|
2282
|
-
assert_equal(isdefaulted, pv.system_losses_fraction_isdefaulted)
|
|
2283
|
-
|
|
2284
2370
|
assert_equal(location, pv.location)
|
|
2285
|
-
assert_equal(isdefaulted, pv.location_isdefaulted)
|
|
2286
|
-
|
|
2287
2371
|
assert_equal(tracking, pv.tracking)
|
|
2288
|
-
assert_equal(isdefaulted, pv.tracking_isdefaulted)
|
|
2289
|
-
|
|
2290
2372
|
assert_equal(module_type, pv.module_type)
|
|
2291
|
-
assert_equal(isdefaulted, pv.module_type_isdefaulted)
|
|
2292
2373
|
end
|
|
2293
2374
|
end
|
|
2294
2375
|
|
|
2295
|
-
def _test_default_generator_values(hpxml,
|
|
2376
|
+
def _test_default_generator_values(hpxml, is_shared_system)
|
|
2296
2377
|
hpxml.generators.each_with_index do |generator, idx|
|
|
2297
2378
|
assert_equal(is_shared_system, generator.is_shared_system)
|
|
2298
|
-
assert_equal(isdefaulted, generator.is_shared_system_isdefaulted)
|
|
2299
2379
|
end
|
|
2300
2380
|
end
|
|
2301
2381
|
|
|
2302
|
-
def _test_default_clothes_washer_values(hpxml,
|
|
2382
|
+
def _test_default_clothes_washer_values(hpxml, is_shared, location, imef, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, capacity, label_usage, usage_multiplier)
|
|
2303
2383
|
clothes_washer = hpxml.clothes_washers[0]
|
|
2304
2384
|
|
|
2305
2385
|
assert_equal(is_shared, clothes_washer.is_shared_appliance)
|
|
2306
|
-
assert_equal(isdefaulted, clothes_washer.is_shared_appliance_isdefaulted)
|
|
2307
|
-
|
|
2308
2386
|
assert_equal(location, clothes_washer.location)
|
|
2309
|
-
assert_equal(isdefaulted, clothes_washer.location_isdefaulted)
|
|
2310
|
-
|
|
2311
2387
|
assert_equal(imef, clothes_washer.integrated_modified_energy_factor)
|
|
2312
|
-
assert_equal(isdefaulted, clothes_washer.integrated_modified_energy_factor_isdefaulted)
|
|
2313
|
-
|
|
2314
2388
|
assert_equal(rated_annual_kwh, clothes_washer.rated_annual_kwh)
|
|
2315
|
-
assert_equal(isdefaulted, clothes_washer.rated_annual_kwh_isdefaulted)
|
|
2316
|
-
|
|
2317
2389
|
assert_equal(label_electric_rate, clothes_washer.label_electric_rate)
|
|
2318
|
-
assert_equal(isdefaulted, clothes_washer.label_electric_rate_isdefaulted)
|
|
2319
|
-
|
|
2320
2390
|
assert_equal(label_gas_rate, clothes_washer.label_gas_rate)
|
|
2321
|
-
assert_equal(isdefaulted, clothes_washer.label_gas_rate_isdefaulted)
|
|
2322
|
-
|
|
2323
2391
|
assert_equal(label_annual_gas_cost, clothes_washer.label_annual_gas_cost)
|
|
2324
|
-
assert_equal(isdefaulted, clothes_washer.label_annual_gas_cost_isdefaulted)
|
|
2325
|
-
|
|
2326
2392
|
assert_equal(capacity, clothes_washer.capacity)
|
|
2327
|
-
assert_equal(isdefaulted, clothes_washer.capacity_isdefaulted)
|
|
2328
|
-
|
|
2329
2393
|
assert_equal(label_usage, clothes_washer.label_usage)
|
|
2330
|
-
assert_equal(isdefaulted, clothes_washer.label_usage_isdefaulted)
|
|
2331
|
-
|
|
2332
2394
|
assert_equal(usage_multiplier, clothes_washer.usage_multiplier)
|
|
2333
|
-
assert_equal(isdefaulted, clothes_washer.usage_multiplier_isdefaulted)
|
|
2334
2395
|
end
|
|
2335
2396
|
|
|
2336
|
-
def _test_default_clothes_dryer_values(hpxml,
|
|
2397
|
+
def _test_default_clothes_dryer_values(hpxml, is_shared, location, cef, usage_multiplier)
|
|
2337
2398
|
clothes_dryer = hpxml.clothes_dryers[0]
|
|
2338
2399
|
|
|
2339
2400
|
assert_equal(is_shared, clothes_dryer.is_shared_appliance)
|
|
2340
|
-
assert_equal(isdefaulted, clothes_dryer.is_shared_appliance_isdefaulted)
|
|
2341
|
-
|
|
2342
2401
|
assert_equal(location, clothes_dryer.location)
|
|
2343
|
-
assert_equal(isdefaulted, clothes_dryer.location_isdefaulted)
|
|
2344
|
-
|
|
2345
|
-
assert_equal(control_type, clothes_dryer.control_type)
|
|
2346
|
-
assert_equal(isdefaulted, clothes_dryer.control_type_isdefaulted)
|
|
2347
|
-
|
|
2348
2402
|
assert_equal(cef, clothes_dryer.combined_energy_factor)
|
|
2349
|
-
assert_equal(isdefaulted, clothes_dryer.combined_energy_factor_isdefaulted)
|
|
2350
|
-
|
|
2351
2403
|
assert_equal(usage_multiplier, clothes_dryer.usage_multiplier)
|
|
2352
|
-
assert_equal(isdefaulted, clothes_dryer.usage_multiplier_isdefaulted)
|
|
2353
2404
|
end
|
|
2354
2405
|
|
|
2355
|
-
def _test_default_clothes_dryer_exhaust_values(hpxml,
|
|
2406
|
+
def _test_default_clothes_dryer_exhaust_values(hpxml, is_vented, vented_flow_rate)
|
|
2356
2407
|
clothes_dryer = hpxml.clothes_dryers[0]
|
|
2357
2408
|
|
|
2358
2409
|
assert_equal(is_vented, clothes_dryer.is_vented)
|
|
2359
|
-
assert_equal(isdefaulted, clothes_dryer.is_vented_isdefaulted)
|
|
2360
|
-
|
|
2361
2410
|
if vented_flow_rate.nil?
|
|
2362
2411
|
assert_nil(clothes_dryer.vented_flow_rate)
|
|
2363
2412
|
else
|
|
2364
2413
|
assert_equal(vented_flow_rate, clothes_dryer.vented_flow_rate)
|
|
2365
|
-
assert_equal(isdefaulted, clothes_dryer.vented_flow_rate_isdefaulted)
|
|
2366
2414
|
end
|
|
2367
2415
|
end
|
|
2368
2416
|
|
|
2369
|
-
def _test_default_dishwasher_values(hpxml,
|
|
2417
|
+
def _test_default_dishwasher_values(hpxml, is_shared, location, rated_annual_kwh, label_electric_rate, label_gas_rate, label_annual_gas_cost, label_usage, place_setting_capacity, usage_multiplier)
|
|
2370
2418
|
dishwasher = hpxml.dishwashers[0]
|
|
2371
2419
|
|
|
2372
2420
|
assert_equal(is_shared, dishwasher.is_shared_appliance)
|
|
2373
|
-
assert_equal(isdefaulted, dishwasher.is_shared_appliance_isdefaulted)
|
|
2374
|
-
|
|
2375
2421
|
assert_equal(location, dishwasher.location)
|
|
2376
|
-
assert_equal(isdefaulted, dishwasher.location_isdefaulted)
|
|
2377
|
-
|
|
2378
2422
|
assert_equal(rated_annual_kwh, dishwasher.rated_annual_kwh)
|
|
2379
|
-
assert_equal(isdefaulted, dishwasher.rated_annual_kwh_isdefaulted)
|
|
2380
|
-
|
|
2381
2423
|
assert_equal(label_electric_rate, dishwasher.label_electric_rate)
|
|
2382
|
-
assert_equal(isdefaulted, dishwasher.label_electric_rate_isdefaulted)
|
|
2383
|
-
|
|
2384
2424
|
assert_equal(label_gas_rate, dishwasher.label_gas_rate)
|
|
2385
|
-
assert_equal(isdefaulted, dishwasher.label_gas_rate_isdefaulted)
|
|
2386
|
-
|
|
2387
2425
|
assert_equal(label_annual_gas_cost, dishwasher.label_annual_gas_cost)
|
|
2388
|
-
assert_equal(isdefaulted, dishwasher.label_annual_gas_cost_isdefaulted)
|
|
2389
|
-
|
|
2390
2426
|
assert_equal(label_usage, dishwasher.label_usage)
|
|
2391
|
-
assert_equal(isdefaulted, dishwasher.label_usage_isdefaulted)
|
|
2392
|
-
|
|
2393
2427
|
assert_equal(place_setting_capacity, dishwasher.place_setting_capacity)
|
|
2394
|
-
assert_equal(isdefaulted, dishwasher.place_setting_capacity_isdefaulted)
|
|
2395
|
-
|
|
2396
2428
|
assert_equal(usage_multiplier, dishwasher.usage_multiplier)
|
|
2397
|
-
assert_equal(isdefaulted, dishwasher.usage_multiplier_isdefaulted)
|
|
2398
2429
|
end
|
|
2399
2430
|
|
|
2400
|
-
def _test_default_refrigerator_values(hpxml,
|
|
2431
|
+
def _test_default_refrigerator_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2401
2432
|
hpxml.refrigerators.each do |refrigerator|
|
|
2402
2433
|
next unless refrigerator.primary_indicator
|
|
2403
2434
|
|
|
2404
2435
|
assert_equal(location, refrigerator.location)
|
|
2405
|
-
assert_equal(isdefaulted, refrigerator.location_isdefaulted)
|
|
2406
|
-
|
|
2407
2436
|
assert_equal(rated_annual_kwh, refrigerator.rated_annual_kwh)
|
|
2408
|
-
assert_equal(isdefaulted, refrigerator.rated_annual_kwh_isdefaulted)
|
|
2409
|
-
|
|
2410
2437
|
assert_equal(usage_multiplier, refrigerator.usage_multiplier)
|
|
2411
|
-
assert_equal(isdefaulted, refrigerator.usage_multiplier_isdefaulted)
|
|
2412
|
-
|
|
2413
2438
|
if weekday_sch.nil?
|
|
2414
2439
|
assert_nil(refrigerator.weekday_fractions)
|
|
2415
2440
|
else
|
|
2416
2441
|
assert_equal(weekday_sch, refrigerator.weekday_fractions)
|
|
2417
|
-
assert_equal(isdefaulted, refrigerator.weekday_fractions_isdefaulted)
|
|
2418
2442
|
end
|
|
2419
|
-
|
|
2420
2443
|
if weekend_sch.nil?
|
|
2421
2444
|
assert_nil(refrigerator.weekend_fractions)
|
|
2422
2445
|
else
|
|
2423
2446
|
assert_equal(weekend_sch, refrigerator.weekend_fractions)
|
|
2424
|
-
assert_equal(isdefaulted, refrigerator.weekend_fractions_isdefaulted)
|
|
2425
2447
|
end
|
|
2426
|
-
|
|
2427
2448
|
if monthly_mults.nil?
|
|
2428
2449
|
assert_nil(refrigerator.monthly_multipliers)
|
|
2429
2450
|
else
|
|
2430
2451
|
assert_equal(monthly_mults, refrigerator.monthly_multipliers)
|
|
2431
|
-
assert_equal(isdefaulted, refrigerator.monthly_multipliers_isdefaulted)
|
|
2432
2452
|
end
|
|
2433
2453
|
end
|
|
2434
2454
|
end
|
|
2435
2455
|
|
|
2436
|
-
def _test_default_extra_refrigerators_values(hpxml,
|
|
2456
|
+
def _test_default_extra_refrigerators_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2437
2457
|
hpxml.refrigerators.each do |refrigerator|
|
|
2438
2458
|
next if refrigerator.primary_indicator
|
|
2439
2459
|
|
|
2440
2460
|
assert_equal(location, refrigerator.location)
|
|
2441
|
-
assert_equal(isdefaulted, refrigerator.location_isdefaulted)
|
|
2442
|
-
|
|
2443
2461
|
assert_in_epsilon(rated_annual_kwh, refrigerator.rated_annual_kwh, 0.01)
|
|
2444
|
-
assert_equal(isdefaulted, refrigerator.rated_annual_kwh_isdefaulted)
|
|
2445
|
-
|
|
2446
2462
|
assert_equal(usage_multiplier, refrigerator.usage_multiplier)
|
|
2447
|
-
assert_equal(isdefaulted, refrigerator.usage_multiplier_isdefaulted)
|
|
2448
|
-
|
|
2449
2463
|
if weekday_sch.nil?
|
|
2450
2464
|
assert_nil(refrigerator.weekday_fractions)
|
|
2451
2465
|
else
|
|
2452
2466
|
assert_equal(weekday_sch, refrigerator.weekday_fractions)
|
|
2453
|
-
assert_equal(isdefaulted, refrigerator.weekday_fractions_isdefaulted)
|
|
2454
2467
|
end
|
|
2455
|
-
|
|
2456
2468
|
if weekend_sch.nil?
|
|
2457
2469
|
assert_nil(refrigerator.weekend_fractions)
|
|
2458
2470
|
else
|
|
2459
2471
|
assert_equal(weekend_sch, refrigerator.weekend_fractions)
|
|
2460
|
-
assert_equal(isdefaulted, refrigerator.weekend_fractions_isdefaulted)
|
|
2461
2472
|
end
|
|
2462
|
-
|
|
2463
2473
|
if monthly_mults.nil?
|
|
2464
2474
|
assert_nil(refrigerator.monthly_multipliers)
|
|
2465
2475
|
else
|
|
2466
2476
|
assert_equal(monthly_mults, refrigerator.monthly_multipliers)
|
|
2467
|
-
assert_equal(isdefaulted, refrigerator.monthly_multipliers_isdefaulted)
|
|
2468
2477
|
end
|
|
2469
2478
|
end
|
|
2470
2479
|
end
|
|
2471
2480
|
|
|
2472
|
-
def _test_default_freezers_values(hpxml,
|
|
2481
|
+
def _test_default_freezers_values(hpxml, location, rated_annual_kwh, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2473
2482
|
hpxml.freezers.each do |freezer|
|
|
2474
2483
|
assert_equal(location, freezer.location)
|
|
2475
|
-
assert_equal(isdefaulted, freezer.location_isdefaulted)
|
|
2476
|
-
|
|
2477
2484
|
assert_in_epsilon(rated_annual_kwh, freezer.rated_annual_kwh, 0.01)
|
|
2478
|
-
assert_equal(isdefaulted, freezer.rated_annual_kwh_isdefaulted)
|
|
2479
|
-
|
|
2480
2485
|
assert_equal(usage_multiplier, freezer.usage_multiplier)
|
|
2481
|
-
assert_equal(isdefaulted, freezer.usage_multiplier_isdefaulted)
|
|
2482
|
-
|
|
2483
2486
|
if weekday_sch.nil?
|
|
2484
2487
|
assert_nil(freezer.weekday_fractions)
|
|
2485
2488
|
else
|
|
2486
2489
|
assert_equal(weekday_sch, freezer.weekday_fractions)
|
|
2487
|
-
assert_equal(isdefaulted, freezer.weekday_fractions_isdefaulted)
|
|
2488
2490
|
end
|
|
2489
|
-
|
|
2490
2491
|
if weekend_sch.nil?
|
|
2491
2492
|
assert_nil(freezer.weekend_fractions)
|
|
2492
2493
|
else
|
|
2493
2494
|
assert_equal(weekend_sch, freezer.weekend_fractions)
|
|
2494
|
-
assert_equal(isdefaulted, freezer.weekend_fractions_isdefaulted)
|
|
2495
2495
|
end
|
|
2496
|
-
|
|
2497
2496
|
if monthly_mults.nil?
|
|
2498
2497
|
assert_nil(freezer.monthly_multipliers)
|
|
2499
2498
|
else
|
|
2500
2499
|
assert_equal(monthly_mults, freezer.monthly_multipliers)
|
|
2501
|
-
assert_equal(isdefaulted, freezer.monthly_multipliers_isdefaulted)
|
|
2502
2500
|
end
|
|
2503
2501
|
end
|
|
2504
2502
|
end
|
|
2505
2503
|
|
|
2506
|
-
def _test_default_cooking_range_values(hpxml,
|
|
2504
|
+
def _test_default_cooking_range_values(hpxml, location, is_induction, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2507
2505
|
cooking_range = hpxml.cooking_ranges[0]
|
|
2508
2506
|
|
|
2509
2507
|
assert_equal(location, cooking_range.location)
|
|
2510
|
-
assert_equal(isdefaulted, cooking_range.location_isdefaulted)
|
|
2511
|
-
|
|
2512
2508
|
assert_equal(is_induction, cooking_range.is_induction)
|
|
2513
|
-
assert_equal(isdefaulted, cooking_range.is_induction_isdefaulted)
|
|
2514
|
-
|
|
2515
2509
|
assert_equal(usage_multiplier, cooking_range.usage_multiplier)
|
|
2516
|
-
assert_equal(isdefaulted, cooking_range.usage_multiplier_isdefaulted)
|
|
2517
|
-
|
|
2518
2510
|
if weekday_sch.nil?
|
|
2519
2511
|
assert_nil(cooking_range.weekday_fractions)
|
|
2520
2512
|
else
|
|
2521
2513
|
assert_equal(weekday_sch, cooking_range.weekday_fractions)
|
|
2522
|
-
assert_equal(isdefaulted, cooking_range.weekday_fractions_isdefaulted)
|
|
2523
2514
|
end
|
|
2524
|
-
|
|
2525
2515
|
if weekend_sch.nil?
|
|
2526
2516
|
assert_nil(cooking_range.weekend_fractions)
|
|
2527
2517
|
else
|
|
2528
2518
|
assert_equal(weekend_sch, cooking_range.weekend_fractions)
|
|
2529
|
-
assert_equal(isdefaulted, cooking_range.weekend_fractions_isdefaulted)
|
|
2530
2519
|
end
|
|
2531
|
-
|
|
2532
2520
|
if monthly_mults.nil?
|
|
2533
2521
|
assert_nil(cooking_range.monthly_multipliers)
|
|
2534
2522
|
else
|
|
2535
2523
|
assert_equal(monthly_mults, cooking_range.monthly_multipliers)
|
|
2536
|
-
assert_equal(isdefaulted, cooking_range.monthly_multipliers_isdefaulted)
|
|
2537
2524
|
end
|
|
2538
2525
|
end
|
|
2539
2526
|
|
|
2540
|
-
def _test_default_oven_values(hpxml,
|
|
2527
|
+
def _test_default_oven_values(hpxml, is_convection)
|
|
2541
2528
|
oven = hpxml.ovens[0]
|
|
2542
2529
|
|
|
2543
2530
|
assert_equal(is_convection, oven.is_convection)
|
|
2544
|
-
assert_equal(isdefaulted, oven.is_convection_isdefaulted)
|
|
2545
2531
|
end
|
|
2546
2532
|
|
|
2547
|
-
def _test_default_lighting_values(hpxml,
|
|
2533
|
+
def _test_default_lighting_values(hpxml, interior_usage_multiplier, garage_usage_multiplier, exterior_usage_multiplier, schedules = {})
|
|
2548
2534
|
assert_equal(interior_usage_multiplier, hpxml.lighting.interior_usage_multiplier)
|
|
2549
|
-
assert_equal(isdefaulted, hpxml.lighting.interior_usage_multiplier_isdefaulted)
|
|
2550
|
-
|
|
2551
2535
|
assert_equal(garage_usage_multiplier, hpxml.lighting.garage_usage_multiplier)
|
|
2552
|
-
assert_equal(isdefaulted, hpxml.lighting.garage_usage_multiplier_isdefaulted)
|
|
2553
|
-
|
|
2554
2536
|
assert_equal(exterior_usage_multiplier, hpxml.lighting.exterior_usage_multiplier)
|
|
2555
|
-
assert_equal(isdefaulted, hpxml.lighting.exterior_usage_multiplier_isdefaulted)
|
|
2556
|
-
|
|
2557
2537
|
if not schedules[:grg_wk_sch].nil?
|
|
2558
2538
|
assert_equal(schedules[:grg_wk_sch], hpxml.lighting.garage_weekday_fractions)
|
|
2559
|
-
assert_equal(isdefaulted, hpxml.lighting.garage_weekday_fractions_isdefaulted)
|
|
2560
2539
|
else
|
|
2561
2540
|
assert_nil(hpxml.lighting.garage_weekday_fractions)
|
|
2562
2541
|
end
|
|
2563
|
-
|
|
2564
2542
|
if not schedules[:grg_wknd_sch].nil?
|
|
2565
2543
|
assert_equal(schedules[:grg_wknd_sch], hpxml.lighting.garage_weekend_fractions)
|
|
2566
|
-
assert_equal(isdefaulted, hpxml.lighting.garage_weekend_fractions_isdefaulted)
|
|
2567
2544
|
else
|
|
2568
2545
|
assert_nil(hpxml.lighting.garage_weekend_fractions)
|
|
2569
2546
|
end
|
|
2570
|
-
|
|
2571
2547
|
if not schedules[:grg_month_mult].nil?
|
|
2572
2548
|
assert_equal(schedules[:grg_month_mult], hpxml.lighting.garage_monthly_multipliers)
|
|
2573
|
-
assert_equal(isdefaulted, hpxml.lighting.garage_monthly_multipliers_isdefaulted)
|
|
2574
2549
|
else
|
|
2575
2550
|
assert_nil(hpxml.lighting.garage_monthly_multipliers)
|
|
2576
2551
|
end
|
|
2577
|
-
|
|
2578
2552
|
if not schedules[:ext_wk_sch].nil?
|
|
2579
2553
|
assert_equal(schedules[:ext_wk_sch], hpxml.lighting.exterior_weekday_fractions)
|
|
2580
|
-
assert_equal(isdefaulted, hpxml.lighting.exterior_weekday_fractions_isdefaulted)
|
|
2581
2554
|
else
|
|
2582
2555
|
assert_nil(hpxml.lighting.exterior_weekday_fractions)
|
|
2583
2556
|
end
|
|
2584
|
-
|
|
2585
2557
|
if not schedules[:ext_wknd_sch].nil?
|
|
2586
2558
|
assert_equal(schedules[:ext_wknd_sch], hpxml.lighting.exterior_weekend_fractions)
|
|
2587
|
-
assert_equal(isdefaulted, hpxml.lighting.exterior_weekend_fractions_isdefaulted)
|
|
2588
2559
|
else
|
|
2589
2560
|
assert_nil(hpxml.lighting.exterior_weekday_fractions)
|
|
2590
2561
|
end
|
|
2591
|
-
|
|
2592
2562
|
if not schedules[:ext_month_mult].nil?
|
|
2593
2563
|
assert_equal(schedules[:ext_month_mult], hpxml.lighting.exterior_monthly_multipliers)
|
|
2594
|
-
assert_equal(isdefaulted, hpxml.lighting.exterior_monthly_multipliers_isdefaulted)
|
|
2595
2564
|
else
|
|
2596
2565
|
assert_nil(hpxml.lighting.exterior_monthly_multipliers)
|
|
2597
2566
|
end
|
|
2598
|
-
|
|
2599
2567
|
if not schedules[:hol_kwh_per_day].nil?
|
|
2600
2568
|
assert_equal(schedules[:hol_kwh_per_day], hpxml.lighting.holiday_kwh_per_day)
|
|
2601
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_kwh_per_day_isdefaulted)
|
|
2602
2569
|
else
|
|
2603
2570
|
assert_nil(hpxml.lighting.holiday_kwh_per_day)
|
|
2604
2571
|
end
|
|
2605
|
-
|
|
2606
2572
|
if not schedules[:hol_begin_month].nil?
|
|
2607
2573
|
assert_equal(schedules[:hol_begin_month], hpxml.lighting.holiday_period_begin_month)
|
|
2608
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_period_begin_month_isdefaulted)
|
|
2609
2574
|
else
|
|
2610
2575
|
assert_nil(hpxml.lighting.holiday_period_begin_month)
|
|
2611
2576
|
end
|
|
2612
|
-
|
|
2613
2577
|
if not schedules[:hol_begin_day].nil?
|
|
2614
2578
|
assert_equal(schedules[:hol_begin_day], hpxml.lighting.holiday_period_begin_day)
|
|
2615
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_period_begin_day_isdefaulted)
|
|
2616
2579
|
else
|
|
2617
2580
|
assert_nil(hpxml.lighting.holiday_period_begin_day)
|
|
2618
2581
|
end
|
|
2619
|
-
|
|
2620
2582
|
if not schedules[:hol_end_month].nil?
|
|
2621
2583
|
assert_equal(schedules[:hol_end_month], hpxml.lighting.holiday_period_end_month)
|
|
2622
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_period_end_month_isdefaulted)
|
|
2623
2584
|
else
|
|
2624
2585
|
assert_nil(hpxml.lighting.holiday_period_end_month)
|
|
2625
2586
|
end
|
|
2626
|
-
|
|
2627
2587
|
if not schedules[:hol_end_day].nil?
|
|
2628
2588
|
assert_equal(schedules[:hol_end_day], hpxml.lighting.holiday_period_end_day)
|
|
2629
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_period_end_day_isdefaulted)
|
|
2630
2589
|
else
|
|
2631
2590
|
assert_nil(hpxml.lighting.holiday_period_end_day)
|
|
2632
2591
|
end
|
|
2633
|
-
|
|
2634
2592
|
if not schedules[:hol_wk_sch].nil?
|
|
2635
2593
|
assert_equal(schedules[:hol_wk_sch], hpxml.lighting.holiday_weekday_fractions)
|
|
2636
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_weekday_fractions_isdefaulted)
|
|
2637
2594
|
else
|
|
2638
2595
|
assert_nil(hpxml.lighting.holiday_weekday_fractions)
|
|
2639
2596
|
end
|
|
2640
|
-
|
|
2641
2597
|
if not schedules[:hol_wknd_sch].nil?
|
|
2642
2598
|
assert_equal(schedules[:hol_wknd_sch], hpxml.lighting.holiday_weekend_fractions)
|
|
2643
|
-
assert_equal(isdefaulted, hpxml.lighting.holiday_weekend_fractions_isdefaulted)
|
|
2644
2599
|
else
|
|
2645
2600
|
assert_nil(hpxml.lighting.holiday_weekend_fractions)
|
|
2646
2601
|
end
|
|
2647
2602
|
end
|
|
2648
2603
|
|
|
2649
|
-
def _test_default_ceiling_fan_values(hpxml,
|
|
2604
|
+
def _test_default_ceiling_fan_values(hpxml, quantity, efficiency)
|
|
2650
2605
|
ceiling_fan = hpxml.ceiling_fans[0]
|
|
2651
2606
|
|
|
2652
2607
|
assert_equal(quantity, ceiling_fan.quantity)
|
|
2653
|
-
assert_equal(isdefaulted, ceiling_fan.quantity_isdefaulted)
|
|
2654
|
-
|
|
2655
2608
|
assert_in_epsilon(efficiency, ceiling_fan.efficiency, 0.01)
|
|
2656
|
-
assert_equal(isdefaulted, ceiling_fan.efficiency_isdefaulted)
|
|
2657
2609
|
end
|
|
2658
2610
|
|
|
2659
|
-
def _test_default_pool_heater_values(hpxml,
|
|
2611
|
+
def _test_default_pool_heater_values(hpxml, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2660
2612
|
pool = hpxml.pools[0]
|
|
2661
2613
|
|
|
2662
2614
|
if load_units.nil?
|
|
@@ -2664,63 +2616,44 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
2664
2616
|
else
|
|
2665
2617
|
assert_equal(load_units, pool.heater_load_units)
|
|
2666
2618
|
end
|
|
2667
|
-
|
|
2668
2619
|
if load_value.nil?
|
|
2669
2620
|
assert_nil(pool.heater_load_value)
|
|
2670
2621
|
else
|
|
2671
2622
|
assert_in_epsilon(load_value, pool.heater_load_value, 0.01)
|
|
2672
|
-
assert_equal(isdefaulted, pool.heater_load_value_isdefaulted)
|
|
2673
2623
|
end
|
|
2674
|
-
|
|
2675
2624
|
if usage_multiplier.nil?
|
|
2676
2625
|
assert_nil(pool.heater_usage_multiplier)
|
|
2677
2626
|
else
|
|
2678
2627
|
assert_equal(usage_multiplier, pool.heater_usage_multiplier)
|
|
2679
|
-
assert_equal(isdefaulted, pool.heater_usage_multiplier_isdefaulted)
|
|
2680
2628
|
end
|
|
2681
|
-
|
|
2682
2629
|
if weekday_sch.nil?
|
|
2683
2630
|
assert_nil(pool.heater_weekday_fractions)
|
|
2684
2631
|
else
|
|
2685
2632
|
assert_equal(weekday_sch, pool.heater_weekday_fractions)
|
|
2686
|
-
assert_equal(isdefaulted, pool.heater_weekday_fractions_isdefaulted)
|
|
2687
2633
|
end
|
|
2688
|
-
|
|
2689
2634
|
if weekend_sch.nil?
|
|
2690
2635
|
assert_nil(pool.heater_weekend_fractions)
|
|
2691
2636
|
else
|
|
2692
2637
|
assert_equal(weekend_sch, pool.heater_weekend_fractions)
|
|
2693
|
-
assert_equal(isdefaulted, pool.heater_weekend_fractions_isdefaulted)
|
|
2694
2638
|
end
|
|
2695
|
-
|
|
2696
2639
|
if monthly_mults.nil?
|
|
2697
2640
|
assert_nil(pool.heater_monthly_multipliers)
|
|
2698
2641
|
else
|
|
2699
2642
|
assert_equal(monthly_mults, pool.heater_monthly_multipliers)
|
|
2700
|
-
assert_equal(isdefaulted, pool.heater_monthly_multipliers_isdefaulted)
|
|
2701
2643
|
end
|
|
2702
2644
|
end
|
|
2703
2645
|
|
|
2704
|
-
def _test_default_pool_pump_values(hpxml,
|
|
2646
|
+
def _test_default_pool_pump_values(hpxml, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2705
2647
|
pool = hpxml.pools[0]
|
|
2706
2648
|
|
|
2707
2649
|
assert_in_epsilon(kWh_per_year, pool.pump_kwh_per_year, 0.01)
|
|
2708
|
-
assert_equal(isdefaulted, pool.pump_kwh_per_year_isdefaulted)
|
|
2709
|
-
|
|
2710
2650
|
assert_equal(usage_multiplier, pool.pump_usage_multiplier)
|
|
2711
|
-
assert_equal(isdefaulted, pool.pump_usage_multiplier_isdefaulted)
|
|
2712
|
-
|
|
2713
2651
|
assert_equal(weekday_sch, pool.pump_weekday_fractions)
|
|
2714
|
-
assert_equal(isdefaulted, pool.pump_weekday_fractions_isdefaulted)
|
|
2715
|
-
|
|
2716
2652
|
assert_equal(weekend_sch, pool.pump_weekend_fractions)
|
|
2717
|
-
assert_equal(isdefaulted, pool.pump_weekend_fractions_isdefaulted)
|
|
2718
|
-
|
|
2719
2653
|
assert_equal(monthly_mults, pool.pump_monthly_multipliers)
|
|
2720
|
-
assert_equal(isdefaulted, pool.pump_monthly_multipliers_isdefaulted)
|
|
2721
2654
|
end
|
|
2722
2655
|
|
|
2723
|
-
def _test_default_hot_tub_heater_values(hpxml,
|
|
2656
|
+
def _test_default_hot_tub_heater_values(hpxml, load_units, load_value, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2724
2657
|
hot_tub = hpxml.hot_tubs[0]
|
|
2725
2658
|
|
|
2726
2659
|
if load_units.nil?
|
|
@@ -2728,110 +2661,65 @@ class HPXMLtoOpenStudioDefaultsTest < MiniTest::Test
|
|
|
2728
2661
|
else
|
|
2729
2662
|
assert_equal(load_units, hot_tub.heater_load_units)
|
|
2730
2663
|
end
|
|
2731
|
-
|
|
2732
2664
|
if load_value.nil?
|
|
2733
2665
|
assert_nil(hot_tub.heater_load_value)
|
|
2734
2666
|
else
|
|
2735
2667
|
assert_in_epsilon(load_value, hot_tub.heater_load_value, 0.01)
|
|
2736
|
-
assert_equal(isdefaulted, hot_tub.heater_load_value_isdefaulted)
|
|
2737
2668
|
end
|
|
2738
|
-
|
|
2739
2669
|
if usage_multiplier.nil?
|
|
2740
2670
|
assert_nil(hot_tub.heater_usage_multiplier)
|
|
2741
2671
|
else
|
|
2742
2672
|
assert_equal(usage_multiplier, hot_tub.heater_usage_multiplier)
|
|
2743
|
-
assert_equal(isdefaulted, hot_tub.heater_usage_multiplier_isdefaulted)
|
|
2744
2673
|
end
|
|
2745
|
-
|
|
2746
2674
|
if weekday_sch.nil?
|
|
2747
2675
|
assert_nil(hot_tub.heater_weekday_fractions)
|
|
2748
2676
|
else
|
|
2749
2677
|
assert_equal(weekday_sch, hot_tub.heater_weekday_fractions)
|
|
2750
|
-
assert_equal(isdefaulted, hot_tub.heater_weekday_fractions_isdefaulted)
|
|
2751
2678
|
end
|
|
2752
|
-
|
|
2753
2679
|
if weekend_sch.nil?
|
|
2754
2680
|
assert_nil(hot_tub.heater_weekend_fractions)
|
|
2755
2681
|
else
|
|
2756
2682
|
assert_equal(weekend_sch, hot_tub.heater_weekend_fractions)
|
|
2757
|
-
assert_equal(isdefaulted, hot_tub.heater_weekend_fractions_isdefaulted)
|
|
2758
2683
|
end
|
|
2759
|
-
|
|
2760
2684
|
if monthly_mults.nil?
|
|
2761
2685
|
assert_nil(hot_tub.heater_monthly_multipliers)
|
|
2762
2686
|
else
|
|
2763
2687
|
assert_equal(monthly_mults, hot_tub.heater_monthly_multipliers)
|
|
2764
|
-
assert_equal(isdefaulted, hot_tub.heater_monthly_multipliers_isdefaulted)
|
|
2765
2688
|
end
|
|
2766
2689
|
end
|
|
2767
2690
|
|
|
2768
|
-
def _test_default_hot_tub_pump_values(hpxml,
|
|
2691
|
+
def _test_default_hot_tub_pump_values(hpxml, kWh_per_year, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2769
2692
|
hot_tub = hpxml.hot_tubs[0]
|
|
2770
2693
|
|
|
2771
2694
|
assert_in_epsilon(kWh_per_year, hot_tub.pump_kwh_per_year, 0.01)
|
|
2772
|
-
assert_equal(isdefaulted, hot_tub.pump_kwh_per_year_isdefaulted)
|
|
2773
|
-
|
|
2774
2695
|
assert_equal(usage_multiplier, hot_tub.pump_usage_multiplier)
|
|
2775
|
-
assert_equal(isdefaulted, hot_tub.pump_usage_multiplier_isdefaulted)
|
|
2776
|
-
|
|
2777
2696
|
assert_equal(weekday_sch, hot_tub.pump_weekday_fractions)
|
|
2778
|
-
assert_equal(isdefaulted, hot_tub.pump_weekday_fractions_isdefaulted)
|
|
2779
|
-
|
|
2780
2697
|
assert_equal(weekend_sch, hot_tub.pump_weekend_fractions)
|
|
2781
|
-
assert_equal(isdefaulted, hot_tub.pump_weekend_fractions_isdefaulted)
|
|
2782
|
-
|
|
2783
2698
|
assert_equal(monthly_mults, hot_tub.pump_monthly_multipliers)
|
|
2784
|
-
assert_equal(isdefaulted, hot_tub.pump_monthly_multipliers_isdefaulted)
|
|
2785
2699
|
end
|
|
2786
2700
|
|
|
2787
|
-
def _test_default_plug_load_values(hpxml,
|
|
2701
|
+
def _test_default_plug_load_values(hpxml, load_type, kWh_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2788
2702
|
pl = hpxml.plug_loads.select { |pl| pl.plug_load_type == load_type }[0]
|
|
2789
2703
|
|
|
2790
2704
|
assert_in_epsilon(kWh_per_year, pl.kWh_per_year, 0.01)
|
|
2791
|
-
assert_equal(isdefaulted, pl.kWh_per_year_isdefaulted)
|
|
2792
|
-
|
|
2793
2705
|
assert_equal(usage_multiplier, pl.usage_multiplier)
|
|
2794
|
-
assert_equal(isdefaulted, pl.usage_multiplier_isdefaulted)
|
|
2795
|
-
|
|
2796
2706
|
assert_in_epsilon(frac_sensible, pl.frac_sensible, 0.01)
|
|
2797
|
-
assert_equal(isdefaulted, pl.frac_sensible_isdefaulted)
|
|
2798
|
-
|
|
2799
2707
|
assert_in_epsilon(frac_latent, pl.frac_latent, 0.01)
|
|
2800
|
-
assert_equal(isdefaulted, pl.frac_latent_isdefaulted)
|
|
2801
|
-
|
|
2802
2708
|
assert_equal(weekday_sch, pl.weekday_fractions)
|
|
2803
|
-
assert_equal(isdefaulted, pl.weekday_fractions_isdefaulted)
|
|
2804
|
-
|
|
2805
2709
|
assert_equal(weekend_sch, pl.weekend_fractions)
|
|
2806
|
-
assert_equal(isdefaulted, pl.weekend_fractions_isdefaulted)
|
|
2807
|
-
|
|
2808
2710
|
assert_equal(monthly_mults, pl.monthly_multipliers)
|
|
2809
|
-
assert_equal(isdefaulted, pl.monthly_multipliers_isdefaulted)
|
|
2810
2711
|
end
|
|
2811
2712
|
|
|
2812
|
-
def _test_default_fuel_load_values(hpxml,
|
|
2713
|
+
def _test_default_fuel_load_values(hpxml, load_type, therm_per_year, frac_sensible, frac_latent, usage_multiplier, weekday_sch, weekend_sch, monthly_mults)
|
|
2813
2714
|
fl = hpxml.fuel_loads.select { |fl| fl.fuel_load_type == load_type }[0]
|
|
2814
2715
|
|
|
2815
2716
|
assert_in_epsilon(therm_per_year, fl.therm_per_year, 0.01)
|
|
2816
|
-
assert_equal(isdefaulted, fl.therm_per_year_isdefaulted)
|
|
2817
|
-
|
|
2818
2717
|
assert_equal(usage_multiplier, fl.usage_multiplier)
|
|
2819
|
-
assert_equal(isdefaulted, fl.usage_multiplier_isdefaulted)
|
|
2820
|
-
|
|
2821
2718
|
assert_in_epsilon(frac_sensible, fl.frac_sensible, 0.01)
|
|
2822
|
-
assert_equal(isdefaulted, fl.frac_sensible_isdefaulted)
|
|
2823
|
-
|
|
2824
2719
|
assert_in_epsilon(frac_latent, fl.frac_latent, 0.01)
|
|
2825
|
-
assert_equal(isdefaulted, fl.frac_latent_isdefaulted)
|
|
2826
|
-
|
|
2827
2720
|
assert_equal(weekday_sch, fl.weekday_fractions)
|
|
2828
|
-
assert_equal(isdefaulted, fl.weekday_fractions_isdefaulted)
|
|
2829
|
-
|
|
2830
2721
|
assert_equal(weekend_sch, fl.weekend_fractions)
|
|
2831
|
-
assert_equal(isdefaulted, fl.weekend_fractions_isdefaulted)
|
|
2832
|
-
|
|
2833
2722
|
assert_equal(monthly_mults, fl.monthly_multipliers)
|
|
2834
|
-
assert_equal(isdefaulted, fl.monthly_multipliers_isdefaulted)
|
|
2835
2723
|
end
|
|
2836
2724
|
|
|
2837
2725
|
def _create_hpxml(hpxml_name)
|