urbanopt-cli 0.4.1 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +59 -0
- data/CMakeLists.txt +17 -17
- data/FindOpenStudioSDK.cmake +12 -7
- data/Gemfile +8 -10
- data/LICENSE.md +11 -1
- data/README.md +1 -0
- data/Rakefile +16 -6
- data/example_files/Gemfile +25 -9
- data/example_files/example_project.json +35 -20
- data/example_files/example_project_combined.json +100 -5
- data/example_files/example_project_with_electric_network.json +2116 -0
- data/example_files/mappers/Baseline.rb +111 -51
- data/example_files/mappers/CreateBar.rb +19 -7
- data/example_files/mappers/EvCharging.rb +141 -0
- data/example_files/mappers/Floorspace.rb +29 -17
- 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/mappers/base_workflow.osw +26 -1
- data/example_files/mappers/floorspace_workflow.osw +9 -0
- 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 +2 -2
- 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/residential/water_heater.tsv +1 -1
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +14 -0
- 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 +1088 -1329
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1819 -1383
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +450 -362
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +165 -112
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-ief.osw → base-appliances-dehumidifier-ief-portable.osw} +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-appliances-dehumidifier-ief-whole-home.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +61 -87
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +56 -82
- 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/{extra-mechvent-shared-preconditioning.osw → base-bldgtype-multifamily-shared-mechvent-preconditioning.osw} +70 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-mechvent-shared.osw → base-bldgtype-multifamily-shared-mechvent.osw} +70 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-single-family-attached.osw → base-bldgtype-single-family-attached.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +56 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +55 -81
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +56 -82
- 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 +56 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw +339 -0
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +57 -83
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +64 -90
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +69 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +64 -92
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +60 -86
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +60 -86
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +56 -82
- 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 +52 -78
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +52 -78
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +71 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +56 -82
- 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-pv-shared.osw → extra-bldgtype-single-family-attached-double-exterior.osw} +62 -89
- 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-dhw-shared-water-heater.osw → extra-bldgtype-single-family-attached-single-exterior-front.osw} +60 -86
- 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/{base-multifamily.osw → extra-bldgtype-single-family-attached-unconditioned-basement.osw} +64 -91
- 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 +56 -82
- 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 +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +338 -0
- 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} +58 -84
- 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} +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +56 -82
- 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 +59 -85
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +64 -89
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +64 -89
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +63 -88
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-hvac-programmable-thermostat.osw → invalid_files/multipliers-without-fuel-loads.osw} +54 -80
- 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-tv-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-dhw-uef.osw → invalid_files/multipliers-without-vehicle-plug-loads.osw} +58 -84
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +56 -82
- 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 +56 -82
- 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 +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +56 -82
- 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 +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +56 -82
- 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 +2 -5
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +404 -1357
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +247 -171
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +11 -101
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +824 -301
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +18 -35
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +526 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +135 -207
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +14 -186
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +549 -93
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +12 -15
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +78 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +413 -15
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +48 -37
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +1627 -1227
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +1192 -434
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1555 -1616
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1436 -1479
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +3 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +22 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +85 -19
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +22 -46
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +22 -21
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +51 -14
- 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/validator.rb +80 -19
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +9 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +106 -75
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +109 -34
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +22 -36
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +1565 -768
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +101 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +9 -18
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +316 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +53 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +13 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +5 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +13 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +102 -62
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +189 -35
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
- data/example_files/resources/hpxml-measures/README.md +5 -5
- data/example_files/resources/hpxml-measures/Rakefile +2 -10
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +416 -299
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +364 -481
- data/example_files/resources/hpxml-measures/SimulationOutputReport/resources/constants.rb +1 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +327 -320
- data/example_files/resources/hpxml-measures/docs/source/build_residential_hpxml.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/conf.py +11 -5
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +6 -6
- data/example_files/resources/hpxml-measures/docs/source/index.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +7 -109
- data/example_files/resources/hpxml-measures/docs/source/nstatic/stylesheet.css +13 -1
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +2482 -0
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +282 -0
- data/example_files/resources/hpxml-measures/tasks.rb +2494 -1248
- 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 +96 -21
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-ief.xml → base-appliances-dehumidifier-ief-portable.xml} +8 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → base-appliances-dehumidifier-ief-whole-home.xml} +10 -9
- 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 +525 -524
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +564 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +633 -634
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +531 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-multifamily-buffer-space.xml → base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +554 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-non-freezing-space.xml → base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-heated-space.xml → base-bldgtype-multifamily-adjacent-to-other-heated-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-housing-unit.xml → base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +425 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +457 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +427 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +479 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +474 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +408 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +439 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +406 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +409 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +457 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +407 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +438 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +408 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +456 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +460 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +466 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-mechvent-shared-multiple.xml → base-bldgtype-multifamily-shared-mechvent-multiple.xml} +43 -415
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +489 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +473 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +458 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +448 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +619 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +516 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +516 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +7 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +567 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +525 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +567 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +566 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +522 -525
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +575 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +497 -497
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +569 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +661 -664
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +636 -639
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +582 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +590 -591
- 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 +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +2474 -2493
- 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 +754 -755
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +504 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +23 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +498 -497
- 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 +724 -729
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +685 -688
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +516 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +609 -610
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +627 -628
- 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-air-to-air-heat-pump-1-speed-cooling-only.xml} +8 -12
- 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-air-to-air-heat-pump-1-speed-heating-only.xml} +9 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +561 -562
- 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/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml +561 -0
- 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} +4 -5
- 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} +4 -5
- 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} +4 -5
- 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} +4 -5
- 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} +2 -5
- 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} +4 -6
- 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} +2 -5
- 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} +547 -548
- 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} +4 -5
- 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} +4 -5
- 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} +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml +559 -0
- 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} +557 -558
- 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} +2 -5
- 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} +4 -5
- 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} +5 -6
- 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} +4 -5
- 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} +4 -5
- 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} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-autosize-furnace-gas-only.xml} +4 -6
- 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} +4 -5
- 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} +4 -6
- 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} +4 -6
- 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} +551 -552
- 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} +556 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted.xml} +556 -557
- 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} +2 -5
- 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} +5 -6
- 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} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +571 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +519 -522
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +532 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +509 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +555 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +536 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +503 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +6 -57
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +549 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +576 -579
- 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 +7 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-flowrate.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +8 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +13 -8
- 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-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml +572 -0
- 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/base-hvac-install-quality-all-furnace-gas-only.xml +553 -0
- 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} +10 -5
- 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-install-quality-all-mini-split-heat-pump-ducted.xml} +13 -8
- 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-misc-shelter-coefficient.xml → base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml} +9 -10
- 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 +547 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +554 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +515 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +486 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +6 -57
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +585 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +488 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +573 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +516 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +573 -563
- 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 +516 -517
- 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 +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +545 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +549 -541
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +796 -795
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +572 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +478 -495
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +579 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +758 -833
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +749 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +550 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-calendar-year.xml → base-misc-shielding-of-home.xml} +7 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +728 -725
- 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 +6 -7
- 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 +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +569 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +566 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +562 -563
- 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 +532 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +535 -0
- 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 +575 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-uef.xml → invalid_files/dhw-invalid-ef-tank.xml} +7 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +562 -563
- 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 +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +546 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +543 -544
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +546 -545
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +563 -0
- 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 +613 -616
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +626 -629
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +610 -611
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +472 -473
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +488 -534
- 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 +559 -560
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +528 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +546 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +546 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +570 -571
- 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 +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +569 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +466 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +644 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/{appliances-location-unconditioned-space.xml → invalid-foundation-wall-properties.xml} +39 -29
- 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 +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +575 -576
- 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/{slab-zero-exposed-perimeter.xml → invalid-number-of-conditioned-floors.xml} +7 -8
- 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 +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +564 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +563 -0
- 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 +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +582 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +575 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +562 -563
- 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/invalid_files/multiple-shared-cooling-systems.xml +432 -0
- 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 +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +546 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +526 -529
- 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 +531 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +531 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +465 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +465 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/template.osw +5 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -19
- 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 +522 -527
- 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/validation_schema.yaml +149 -0
- data/example_files/visualization/input_visualization_feature.html +213 -56
- data/example_files/visualization/input_visualization_scenario.html +92 -30
- data/lib/uo_cli.rb +406 -128
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/scripts/setup-env-gitbash.sh +5 -5
- data/scripts/setup-env-unix.sh +4 -4
- data/scripts/setup-env.bat +14 -11
- data/scripts/setup-env.ps1 +13 -10
- data/uo_cli.gemspec +10 -8
- metadata +390 -130
- data/developer_nrel_key.rb +0 -31
- 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/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -61
- data/example_files/resources/hpxml-measures/docs/source/hpxml_to_openstudio.rst +0 -1386
- data/example_files/resources/hpxml-measures/docs/source/simulation_output_report.rst +0 -252
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-laundry-room.xml +0 -828
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater-recirc.xml +0 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater.xml +0 -813
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-attached-multifamily.xml +0 -810
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-common-surfaces.xml +0 -928
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ideal-air.xml +0 -501
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -838
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-baseboard.xml +0 -777
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil-ducted.xml +0 -808
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil.xml +0 -780
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml +0 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-cooling-tower-water-loop-heat-pump.xml +0 -815
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-baseboard.xml +0 -760
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-ducted.xml +0 -790
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-eae.xml +0 -759
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil.xml +0 -762
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-water-loop-heat-pump.xml +0 -796
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-baseboard.xml +0 -759
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil-ducted.xml +0 -789
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil.xml +0 -761
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-water-loop-heat-pump.xml +0 -796
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-cooling-tower-only-water-loop-heat-pump.xml +0 -791
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-ground-loop-ground-to-air-heat-pump.xml +0 -814
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared-preconditioning.xml +0 -851
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared.xml +0 -835
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-shared.xml +0 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/coal-for-non-boiler-heating.xml +0 -514
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type.xml +0 -828
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-interior-shading.xml +0 -564
@@ -1,94 +1,176 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class HPXMLDefaults
|
4
|
-
|
5
|
-
|
4
|
+
# Note: Each HPXML object (e.g., HPXML::Wall) has an additional_properties
|
5
|
+
# child object where # custom information can be attached to the object without
|
6
|
+
# being written to the HPXML file. This is useful to associate additional values
|
7
|
+
# with the HPXML objects that will ultimately get passed around.
|
8
|
+
|
9
|
+
def self.apply(hpxml, eri_version, weather, epw_file: nil)
|
10
|
+
cfa = hpxml.building_construction.conditioned_floor_area
|
11
|
+
nbeds = hpxml.building_construction.number_of_bedrooms
|
12
|
+
ncfl = hpxml.building_construction.number_of_conditioned_floors
|
13
|
+
ncfl_ag = hpxml.building_construction.number_of_conditioned_floors_above_grade
|
14
|
+
has_uncond_bsmnt = hpxml.has_space_type(HPXML::LocationBasementUnconditioned)
|
15
|
+
|
16
|
+
apply_header(hpxml, epw_file)
|
6
17
|
apply_site(hpxml)
|
7
18
|
apply_building_occupancy(hpxml, nbeds)
|
8
19
|
apply_building_construction(hpxml, cfa, nbeds)
|
20
|
+
apply_infiltration(hpxml)
|
9
21
|
apply_attics(hpxml)
|
10
22
|
apply_foundations(hpxml)
|
11
|
-
apply_infiltration(hpxml)
|
12
23
|
apply_roofs(hpxml)
|
13
|
-
apply_walls(hpxml)
|
14
24
|
apply_rim_joists(hpxml)
|
25
|
+
apply_walls(hpxml)
|
26
|
+
apply_foundation_walls(hpxml)
|
27
|
+
apply_slabs(hpxml)
|
15
28
|
apply_windows(hpxml)
|
16
29
|
apply_skylights(hpxml)
|
17
|
-
apply_hvac(hpxml)
|
30
|
+
apply_hvac(hpxml, weather)
|
31
|
+
apply_hvac_control(hpxml)
|
18
32
|
apply_hvac_distribution(hpxml, ncfl, ncfl_ag)
|
33
|
+
apply_ventilation_fans(hpxml)
|
19
34
|
apply_water_heaters(hpxml, nbeds, eri_version)
|
20
35
|
apply_hot_water_distribution(hpxml, cfa, ncfl, has_uncond_bsmnt)
|
21
36
|
apply_water_fixtures(hpxml)
|
22
37
|
apply_solar_thermal_systems(hpxml)
|
23
|
-
|
38
|
+
apply_appliances(hpxml, nbeds, eri_version)
|
39
|
+
apply_lighting(hpxml)
|
24
40
|
apply_ceiling_fans(hpxml, nbeds)
|
41
|
+
apply_pools_and_hot_tubs(hpxml, cfa, nbeds)
|
25
42
|
apply_plug_loads(hpxml, cfa, nbeds)
|
26
43
|
apply_fuel_loads(hpxml, cfa, nbeds)
|
27
|
-
apply_pools_and_hot_tubs(hpxml, cfa, nbeds)
|
28
|
-
apply_appliances(hpxml, nbeds, eri_version)
|
29
|
-
apply_lighting(hpxml)
|
30
44
|
apply_pv_systems(hpxml)
|
45
|
+
apply_generators(hpxml)
|
46
|
+
|
47
|
+
# Do HVAC sizing after all other defaults have been applied
|
48
|
+
apply_hvac_sizing(hpxml, weather, cfa, nbeds)
|
31
49
|
end
|
32
50
|
|
33
51
|
private
|
34
52
|
|
35
|
-
def self.apply_header(hpxml, epw_file
|
36
|
-
|
53
|
+
def self.apply_header(hpxml, epw_file)
|
54
|
+
if hpxml.header.timestep.nil?
|
55
|
+
hpxml.header.timestep = 60
|
56
|
+
hpxml.header.timestep_isdefaulted = true
|
57
|
+
end
|
58
|
+
|
59
|
+
if hpxml.header.sim_begin_month.nil?
|
60
|
+
hpxml.header.sim_begin_month = 1
|
61
|
+
hpxml.header.sim_begin_month_isdefaulted = true
|
62
|
+
end
|
63
|
+
if hpxml.header.sim_begin_day.nil?
|
64
|
+
hpxml.header.sim_begin_day = 1
|
65
|
+
hpxml.header.sim_begin_day_isdefaulted = true
|
66
|
+
end
|
67
|
+
if hpxml.header.sim_end_month.nil?
|
68
|
+
hpxml.header.sim_end_month = 12
|
69
|
+
hpxml.header.sim_end_month_isdefaulted = true
|
70
|
+
end
|
71
|
+
if hpxml.header.sim_end_day.nil?
|
72
|
+
hpxml.header.sim_end_day = 31
|
73
|
+
hpxml.header.sim_end_day_isdefaulted = true
|
74
|
+
end
|
37
75
|
|
38
|
-
|
39
|
-
hpxml.header.sim_begin_day_of_month = 1 if hpxml.header.sim_begin_day_of_month.nil?
|
40
|
-
hpxml.header.sim_end_month = 12 if hpxml.header.sim_end_month.nil?
|
41
|
-
hpxml.header.sim_end_day_of_month = 31 if hpxml.header.sim_end_day_of_month.nil?
|
42
|
-
if epw_file.startDateActualYear.is_initialized # AMY
|
76
|
+
if (not epw_file.nil?) && epw_file.startDateActualYear.is_initialized # AMY
|
43
77
|
if not hpxml.header.sim_calendar_year.nil?
|
44
|
-
|
78
|
+
if hpxml.header.sim_calendar_year != epw_file.startDateActualYear.get
|
79
|
+
hpxml.header.sim_calendar_year = epw_file.startDateActualYear.get
|
80
|
+
hpxml.header.sim_calendar_year_isdefaulted = true
|
81
|
+
end
|
82
|
+
else
|
83
|
+
hpxml.header.sim_calendar_year = epw_file.startDateActualYear.get
|
84
|
+
hpxml.header.sim_calendar_year_isdefaulted = true
|
45
85
|
end
|
46
|
-
hpxml.header.sim_calendar_year = epw_file.startDateActualYear.get
|
47
86
|
else
|
48
|
-
|
87
|
+
if hpxml.header.sim_calendar_year.nil?
|
88
|
+
hpxml.header.sim_calendar_year = 2007 # For consistency with SAM utility bill calculations
|
89
|
+
hpxml.header.sim_calendar_year_isdefaulted = true
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
if hpxml.header.dst_enabled.nil?
|
94
|
+
hpxml.header.dst_enabled = true # Assume DST since it occurs in most US locations
|
95
|
+
hpxml.header.dst_enabled_isdefaulted = true
|
49
96
|
end
|
50
97
|
|
51
|
-
hpxml.header.dst_enabled
|
52
|
-
|
53
|
-
if hpxml.header.dst_begin_month.nil? || hpxml.header.dst_begin_day_of_month.nil? || hpxml.header.dst_end_month.nil? || hpxml.header.dst_end_day_of_month.nil?
|
98
|
+
if hpxml.header.dst_enabled && (not epw_file.nil?)
|
99
|
+
if hpxml.header.dst_begin_month.nil? || hpxml.header.dst_begin_day.nil? || hpxml.header.dst_end_month.nil? || hpxml.header.dst_end_day.nil?
|
54
100
|
if epw_file.daylightSavingStartDate.is_initialized && epw_file.daylightSavingEndDate.is_initialized
|
55
101
|
# Use weather file DST dates if available
|
56
102
|
dst_start_date = epw_file.daylightSavingStartDate.get
|
57
103
|
dst_end_date = epw_file.daylightSavingEndDate.get
|
58
104
|
hpxml.header.dst_begin_month = dst_start_date.monthOfYear.value
|
59
|
-
hpxml.header.
|
105
|
+
hpxml.header.dst_begin_day = dst_start_date.dayOfMonth
|
60
106
|
hpxml.header.dst_end_month = dst_end_date.monthOfYear.value
|
61
|
-
hpxml.header.
|
107
|
+
hpxml.header.dst_end_day = dst_end_date.dayOfMonth
|
62
108
|
else
|
63
109
|
# Roughly average US dates according to https://en.wikipedia.org/wiki/Daylight_saving_time_in_the_United_States
|
64
110
|
hpxml.header.dst_begin_month = 3
|
65
|
-
hpxml.header.
|
111
|
+
hpxml.header.dst_begin_day = 12
|
66
112
|
hpxml.header.dst_end_month = 11
|
67
|
-
hpxml.header.
|
113
|
+
hpxml.header.dst_end_day = 5
|
68
114
|
end
|
115
|
+
hpxml.header.dst_begin_month_isdefaulted = true
|
116
|
+
hpxml.header.dst_begin_day_isdefaulted = true
|
117
|
+
hpxml.header.dst_end_month_isdefaulted = true
|
118
|
+
hpxml.header.dst_end_day_isdefaulted = true
|
69
119
|
end
|
70
120
|
end
|
71
121
|
|
72
|
-
|
73
|
-
|
122
|
+
if hpxml.header.allow_increased_fixed_capacities.nil?
|
123
|
+
hpxml.header.allow_increased_fixed_capacities = false
|
124
|
+
hpxml.header.allow_increased_fixed_capacities_isdefaulted = true
|
125
|
+
end
|
126
|
+
if hpxml.header.use_max_load_for_heat_pumps.nil?
|
127
|
+
hpxml.header.use_max_load_for_heat_pumps = true
|
128
|
+
hpxml.header.use_max_load_for_heat_pumps_isdefaulted = true
|
129
|
+
end
|
74
130
|
end
|
75
131
|
|
76
132
|
def self.apply_site(hpxml)
|
77
|
-
|
78
|
-
|
133
|
+
if hpxml.site.site_type.nil?
|
134
|
+
hpxml.site.site_type = HPXML::SiteTypeSuburban
|
135
|
+
hpxml.site.site_type_isdefaulted = true
|
136
|
+
end
|
137
|
+
|
138
|
+
if hpxml.site.shielding_of_home.nil?
|
139
|
+
hpxml.site.shielding_of_home = HPXML::ShieldingNormal
|
140
|
+
hpxml.site.shielding_of_home_isdefaulted = true
|
141
|
+
end
|
142
|
+
hpxml.site.additional_properties.aim2_shelter_coeff = Airflow.get_aim2_shelter_coefficient(hpxml.site.shielding_of_home)
|
79
143
|
end
|
80
144
|
|
81
145
|
def self.apply_building_occupancy(hpxml, nbeds)
|
82
|
-
|
146
|
+
if hpxml.building_occupancy.number_of_residents.nil?
|
147
|
+
hpxml.building_occupancy.number_of_residents = Geometry.get_occupancy_default_num(nbeds)
|
148
|
+
hpxml.building_occupancy.number_of_residents_isdefaulted = true
|
149
|
+
end
|
83
150
|
end
|
84
151
|
|
85
152
|
def self.apply_building_construction(hpxml, cfa, nbeds)
|
86
|
-
if hpxml.building_construction.conditioned_building_volume.nil?
|
153
|
+
if hpxml.building_construction.conditioned_building_volume.nil? && hpxml.building_construction.average_ceiling_height.nil?
|
154
|
+
hpxml.building_construction.average_ceiling_height = 8.0
|
155
|
+
hpxml.building_construction.average_ceiling_height_isdefaulted = true
|
156
|
+
hpxml.building_construction.conditioned_building_volume = cfa * hpxml.building_construction.average_ceiling_height
|
157
|
+
hpxml.building_construction.conditioned_building_volume_isdefaulted = true
|
158
|
+
elsif hpxml.building_construction.conditioned_building_volume.nil?
|
87
159
|
hpxml.building_construction.conditioned_building_volume = cfa * hpxml.building_construction.average_ceiling_height
|
160
|
+
hpxml.building_construction.conditioned_building_volume_isdefaulted = true
|
161
|
+
elsif hpxml.building_construction.average_ceiling_height.nil?
|
162
|
+
hpxml.building_construction.average_ceiling_height = hpxml.building_construction.conditioned_building_volume / cfa
|
163
|
+
hpxml.building_construction.average_ceiling_height_isdefaulted = true
|
164
|
+
end
|
165
|
+
|
166
|
+
if hpxml.building_construction.number_of_bathrooms.nil?
|
167
|
+
hpxml.building_construction.number_of_bathrooms = Float(Waterheater.get_default_num_bathrooms(nbeds)).to_i
|
168
|
+
hpxml.building_construction.number_of_bathrooms_isdefaulted = true
|
88
169
|
end
|
89
|
-
|
170
|
+
|
90
171
|
if hpxml.building_construction.has_flue_or_chimney.nil?
|
91
172
|
hpxml.building_construction.has_flue_or_chimney = false
|
173
|
+
hpxml.building_construction.has_flue_or_chimney_isdefaulted = true
|
92
174
|
hpxml.heating_systems.each do |heating_system|
|
93
175
|
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeBoiler, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeStove, HPXML::HVACTypeFixedHeater].include? heating_system.heating_system_type
|
94
176
|
if not heating_system.heating_efficiency_afue.nil?
|
@@ -116,63 +198,84 @@ class HPXMLDefaults
|
|
116
198
|
end
|
117
199
|
end
|
118
200
|
|
201
|
+
def self.apply_infiltration(hpxml)
|
202
|
+
measurements = []
|
203
|
+
infil_volume = nil
|
204
|
+
hpxml.air_infiltration_measurements.each do |measurement|
|
205
|
+
is_ach = ((measurement.unit_of_measure == HPXML::UnitsACH) && !measurement.house_pressure.nil?)
|
206
|
+
is_cfm = ((measurement.unit_of_measure == HPXML::UnitsCFM) && !measurement.house_pressure.nil?)
|
207
|
+
is_nach = (measurement.unit_of_measure == HPXML::UnitsACHNatural)
|
208
|
+
next unless (is_ach || is_cfm || is_nach)
|
209
|
+
|
210
|
+
measurements << measurement
|
211
|
+
next if measurement.infiltration_volume.nil?
|
212
|
+
|
213
|
+
infil_volume = measurement.infiltration_volume
|
214
|
+
end
|
215
|
+
if infil_volume.nil?
|
216
|
+
infil_volume = hpxml.building_construction.conditioned_building_volume
|
217
|
+
measurements.each do |measurement|
|
218
|
+
measurement.infiltration_volume = infil_volume
|
219
|
+
measurement.infiltration_volume_isdefaulted = true
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
return infil_volume
|
224
|
+
end
|
225
|
+
|
119
226
|
def self.apply_attics(hpxml)
|
120
227
|
return unless hpxml.has_space_type(HPXML::LocationAtticVented)
|
121
228
|
|
122
|
-
|
229
|
+
vented_attics = []
|
230
|
+
default_sla = Airflow.get_default_vented_attic_sla()
|
231
|
+
default_ach = nil
|
123
232
|
hpxml.attics.each do |attic|
|
124
233
|
next unless attic.attic_type == HPXML::AtticTypeVented
|
234
|
+
# check existing sla and ach
|
235
|
+
default_sla = attic.vented_attic_sla unless attic.vented_attic_sla.nil?
|
236
|
+
default_ach = attic.vented_attic_ach unless attic.vented_attic_ach.nil?
|
125
237
|
|
126
|
-
|
238
|
+
vented_attics << attic
|
127
239
|
end
|
128
|
-
if
|
240
|
+
if vented_attics.empty?
|
129
241
|
hpxml.attics.add(id: 'VentedAttic',
|
130
|
-
attic_type: HPXML::AtticTypeVented
|
131
|
-
|
242
|
+
attic_type: HPXML::AtticTypeVented,
|
243
|
+
vented_attic_sla: default_sla)
|
244
|
+
hpxml.attics[-1].vented_attic_sla_isdefaulted = true
|
132
245
|
end
|
133
|
-
|
134
|
-
vented_attic.vented_attic_sla
|
246
|
+
vented_attics.each do |vented_attic|
|
247
|
+
next unless (vented_attic.vented_attic_sla.nil? && vented_attic.vented_attic_ach.nil?)
|
248
|
+
if not default_ach.nil? # ACH specified
|
249
|
+
vented_attic.vented_attic_ach = default_ach
|
250
|
+
else # Use SLA
|
251
|
+
vented_attic.vented_attic_sla = default_sla
|
252
|
+
end
|
253
|
+
vented_attic.vented_attic_sla_isdefaulted = true
|
135
254
|
end
|
136
255
|
end
|
137
256
|
|
138
257
|
def self.apply_foundations(hpxml)
|
139
258
|
return unless hpxml.has_space_type(HPXML::LocationCrawlspaceVented)
|
140
259
|
|
141
|
-
|
260
|
+
vented_crawls = []
|
261
|
+
default_sla = Airflow.get_default_vented_crawl_sla()
|
142
262
|
hpxml.foundations.each do |foundation|
|
143
263
|
next unless foundation.foundation_type == HPXML::FoundationTypeCrawlspaceVented
|
264
|
+
# check existing sla
|
265
|
+
default_sla = foundation.vented_crawlspace_sla unless foundation.vented_crawlspace_sla.nil?
|
144
266
|
|
145
|
-
|
267
|
+
vented_crawls << foundation
|
146
268
|
end
|
147
|
-
if
|
269
|
+
if vented_crawls.empty?
|
148
270
|
hpxml.foundations.add(id: 'VentedCrawlspace',
|
149
|
-
foundation_type: HPXML::FoundationTypeCrawlspaceVented
|
150
|
-
|
151
|
-
|
152
|
-
if vented_crawl.vented_crawlspace_sla.nil?
|
153
|
-
vented_crawl.vented_crawlspace_sla = Airflow.get_default_vented_crawl_sla()
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def self.apply_infiltration(hpxml)
|
158
|
-
measurements = []
|
159
|
-
infil_volume = nil
|
160
|
-
hpxml.air_infiltration_measurements.each do |measurement|
|
161
|
-
is_ach = ((measurement.unit_of_measure == HPXML::UnitsACH) && !measurement.house_pressure.nil?)
|
162
|
-
is_cfm = ((measurement.unit_of_measure == HPXML::UnitsCFM) && !measurement.house_pressure.nil?)
|
163
|
-
is_nach = (measurement.unit_of_measure == HPXML::UnitsACHNatural)
|
164
|
-
next unless (is_ach || is_cfm || is_nach)
|
165
|
-
|
166
|
-
measurements << measurement
|
167
|
-
next if measurement.infiltration_volume.nil?
|
168
|
-
|
169
|
-
infil_volume = measurement.infiltration_volume
|
271
|
+
foundation_type: HPXML::FoundationTypeCrawlspaceVented,
|
272
|
+
vented_crawlspace_sla: default_sla)
|
273
|
+
hpxml.foundations[-1].vented_crawlspace_sla_isdefaulted = true
|
170
274
|
end
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
end
|
275
|
+
vented_crawls.each do |vented_crawl|
|
276
|
+
next unless vented_crawl.vented_crawlspace_sla.nil?
|
277
|
+
vented_crawl.vented_crawlspace_sla = default_sla
|
278
|
+
vented_crawl.vented_crawlspace_sla_isdefaulted = true
|
176
279
|
end
|
177
280
|
end
|
178
281
|
|
@@ -180,11 +283,44 @@ class HPXMLDefaults
|
|
180
283
|
hpxml.roofs.each do |roof|
|
181
284
|
if roof.roof_type.nil?
|
182
285
|
roof.roof_type = HPXML::RoofTypeAsphaltShingles
|
286
|
+
roof.roof_type_isdefaulted = true
|
287
|
+
end
|
288
|
+
if roof.emittance.nil?
|
289
|
+
roof.emittance = 0.90
|
290
|
+
roof.emittance_isdefaulted = true
|
291
|
+
end
|
292
|
+
if roof.radiant_barrier.nil?
|
293
|
+
roof.radiant_barrier = false
|
294
|
+
roof.radiant_barrier_isdefaulted = true
|
183
295
|
end
|
184
296
|
if roof.roof_color.nil?
|
185
297
|
roof.roof_color = Constructions.get_default_roof_color(roof.roof_type, roof.solar_absorptance)
|
298
|
+
roof.roof_color_isdefaulted = true
|
186
299
|
elsif roof.solar_absorptance.nil?
|
187
300
|
roof.solar_absorptance = Constructions.get_default_roof_solar_absorptance(roof.roof_type, roof.roof_color)
|
301
|
+
roof.solar_absorptance_isdefaulted = true
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
def self.apply_rim_joists(hpxml)
|
307
|
+
hpxml.rim_joists.each do |rim_joist|
|
308
|
+
next unless rim_joist.is_exterior
|
309
|
+
|
310
|
+
if rim_joist.emittance.nil?
|
311
|
+
rim_joist.emittance = 0.90
|
312
|
+
rim_joist.emittance_isdefaulted = true
|
313
|
+
end
|
314
|
+
if rim_joist.siding.nil?
|
315
|
+
rim_joist.siding = HPXML::SidingTypeWood
|
316
|
+
rim_joist.siding_isdefaulted = true
|
317
|
+
end
|
318
|
+
if rim_joist.color.nil?
|
319
|
+
rim_joist.color = Constructions.get_default_wall_color(rim_joist.solar_absorptance)
|
320
|
+
rim_joist.color_isdefaulted = true
|
321
|
+
elsif rim_joist.solar_absorptance.nil?
|
322
|
+
rim_joist.solar_absorptance = Constructions.get_default_wall_solar_absorptance(rim_joist.color)
|
323
|
+
rim_joist.solar_absorptance_isdefaulted = true
|
188
324
|
end
|
189
325
|
end
|
190
326
|
end
|
@@ -193,28 +329,49 @@ class HPXMLDefaults
|
|
193
329
|
hpxml.walls.each do |wall|
|
194
330
|
next unless wall.is_exterior
|
195
331
|
|
332
|
+
if wall.emittance.nil?
|
333
|
+
wall.emittance = 0.90
|
334
|
+
wall.emittance_isdefaulted = true
|
335
|
+
end
|
196
336
|
if wall.siding.nil?
|
197
337
|
wall.siding = HPXML::SidingTypeWood
|
338
|
+
wall.siding_isdefaulted = true
|
198
339
|
end
|
199
340
|
if wall.color.nil?
|
200
341
|
wall.color = Constructions.get_default_wall_color(wall.solar_absorptance)
|
342
|
+
wall.color_isdefaulted = true
|
201
343
|
elsif wall.solar_absorptance.nil?
|
202
344
|
wall.solar_absorptance = Constructions.get_default_wall_solar_absorptance(wall.color)
|
345
|
+
wall.solar_absorptance_isdefaulted = true
|
203
346
|
end
|
204
347
|
end
|
205
348
|
end
|
206
349
|
|
207
|
-
def self.
|
208
|
-
hpxml.
|
209
|
-
|
350
|
+
def self.apply_foundation_walls(hpxml)
|
351
|
+
hpxml.foundation_walls.each do |foundation_wall|
|
352
|
+
if foundation_wall.thickness.nil?
|
353
|
+
foundation_wall.thickness = 8.0
|
354
|
+
foundation_wall.thickness_isdefaulted = true
|
355
|
+
end
|
356
|
+
end
|
357
|
+
end
|
210
358
|
|
211
|
-
|
212
|
-
|
359
|
+
def self.apply_slabs(hpxml)
|
360
|
+
hpxml.slabs.each do |slab|
|
361
|
+
if slab.thickness.nil?
|
362
|
+
crawl_slab = [HPXML::LocationCrawlspaceVented, HPXML::LocationCrawlspaceUnvented].include?(slab.interior_adjacent_to)
|
363
|
+
slab.thickness = crawl_slab ? 0.0 : 4.0
|
364
|
+
slab.thickness_isdefaulted = true
|
213
365
|
end
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
366
|
+
conditioned_slab = [HPXML::LocationLivingSpace,
|
367
|
+
HPXML::LocationBasementConditioned].include?(slab.interior_adjacent_to)
|
368
|
+
if slab.carpet_r_value.nil?
|
369
|
+
slab.carpet_r_value = conditioned_slab ? 2.0 : 0.0
|
370
|
+
slab.carpet_r_value_isdefaulted = true
|
371
|
+
end
|
372
|
+
if slab.carpet_fraction.nil?
|
373
|
+
slab.carpet_fraction = conditioned_slab ? 0.8 : 0.0
|
374
|
+
slab.carpet_fraction_isdefaulted = true
|
218
375
|
end
|
219
376
|
end
|
220
377
|
end
|
@@ -224,12 +381,23 @@ class HPXMLDefaults
|
|
224
381
|
hpxml.windows.each do |window|
|
225
382
|
if window.interior_shading_factor_summer.nil?
|
226
383
|
window.interior_shading_factor_summer = default_shade_summer
|
384
|
+
window.interior_shading_factor_summer_isdefaulted = true
|
227
385
|
end
|
228
386
|
if window.interior_shading_factor_winter.nil?
|
229
387
|
window.interior_shading_factor_winter = default_shade_winter
|
388
|
+
window.interior_shading_factor_winter_isdefaulted = true
|
389
|
+
end
|
390
|
+
if window.exterior_shading_factor_summer.nil?
|
391
|
+
window.exterior_shading_factor_summer = 1.0
|
392
|
+
window.exterior_shading_factor_summer_isdefaulted = true
|
393
|
+
end
|
394
|
+
if window.exterior_shading_factor_winter.nil?
|
395
|
+
window.exterior_shading_factor_winter = 1.0
|
396
|
+
window.exterior_shading_factor_winter_isdefaulted = true
|
230
397
|
end
|
231
398
|
if window.fraction_operable.nil?
|
232
399
|
window.fraction_operable = Airflow.get_default_fraction_of_windows_operable()
|
400
|
+
window.fraction_operable_isdefaulted = true
|
233
401
|
end
|
234
402
|
end
|
235
403
|
end
|
@@ -238,34 +406,48 @@ class HPXMLDefaults
|
|
238
406
|
hpxml.skylights.each do |skylight|
|
239
407
|
if skylight.interior_shading_factor_summer.nil?
|
240
408
|
skylight.interior_shading_factor_summer = 1.0
|
409
|
+
skylight.interior_shading_factor_summer_isdefaulted = true
|
241
410
|
end
|
242
411
|
if skylight.interior_shading_factor_winter.nil?
|
243
412
|
skylight.interior_shading_factor_winter = 1.0
|
413
|
+
skylight.interior_shading_factor_winter_isdefaulted = true
|
414
|
+
end
|
415
|
+
if skylight.exterior_shading_factor_summer.nil?
|
416
|
+
skylight.exterior_shading_factor_summer = 1.0
|
417
|
+
skylight.exterior_shading_factor_summer_isdefaulted = true
|
418
|
+
end
|
419
|
+
if skylight.exterior_shading_factor_winter.nil?
|
420
|
+
skylight.exterior_shading_factor_winter = 1.0
|
421
|
+
skylight.exterior_shading_factor_winter_isdefaulted = true
|
244
422
|
end
|
245
423
|
end
|
246
424
|
end
|
247
425
|
|
248
|
-
def self.apply_hvac(hpxml)
|
426
|
+
def self.apply_hvac(hpxml, weather)
|
427
|
+
HVAC.apply_shared_systems(hpxml)
|
428
|
+
|
249
429
|
# Default AC/HP compressor type
|
250
430
|
hpxml.cooling_systems.each do |cooling_system|
|
251
|
-
next unless cooling_system.cooling_system_type == HPXML::HVACTypeCentralAirConditioner
|
252
431
|
next unless cooling_system.compressor_type.nil?
|
253
432
|
|
254
|
-
cooling_system.compressor_type = HVAC.get_default_compressor_type(cooling_system.cooling_efficiency_seer)
|
433
|
+
cooling_system.compressor_type = HVAC.get_default_compressor_type(cooling_system.cooling_system_type, cooling_system.cooling_efficiency_seer)
|
434
|
+
cooling_system.compressor_type_isdefaulted = true
|
255
435
|
end
|
256
436
|
hpxml.heat_pumps.each do |heat_pump|
|
257
|
-
next unless heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpAirToAir
|
258
437
|
next unless heat_pump.compressor_type.nil?
|
259
438
|
|
260
|
-
heat_pump.compressor_type = HVAC.get_default_compressor_type(heat_pump.cooling_efficiency_seer)
|
439
|
+
heat_pump.compressor_type = HVAC.get_default_compressor_type(heat_pump.heat_pump_type, heat_pump.cooling_efficiency_seer)
|
440
|
+
heat_pump.compressor_type_isdefaulted = true
|
261
441
|
end
|
262
442
|
|
263
443
|
# Default boiler EAE
|
264
444
|
hpxml.heating_systems.each do |heating_system|
|
265
|
-
next unless heating_system.heating_system_type == HPXML::HVACTypeBoiler
|
266
445
|
next unless heating_system.electric_auxiliary_energy.nil?
|
267
|
-
|
268
|
-
heating_system.electric_auxiliary_energy = HVAC.
|
446
|
+
heating_system.electric_auxiliary_energy_isdefaulted = true
|
447
|
+
heating_system.electric_auxiliary_energy = HVAC.get_default_boiler_eae(heating_system)
|
448
|
+
heating_system.shared_loop_watts = nil
|
449
|
+
heating_system.shared_loop_motor_efficiency = nil
|
450
|
+
heating_system.fan_coil_watts = nil
|
269
451
|
end
|
270
452
|
|
271
453
|
# Default AC/HP sensible heat ratio
|
@@ -280,10 +462,13 @@ class HPXMLDefaults
|
|
280
462
|
elsif cooling_system.compressor_type == HPXML::HVACCompressorTypeVariableSpeed
|
281
463
|
cooling_system.cooling_shr = 0.78
|
282
464
|
end
|
465
|
+
cooling_system.cooling_shr_isdefaulted = true
|
283
466
|
elsif cooling_system.cooling_system_type == HPXML::HVACTypeRoomAirConditioner
|
284
467
|
cooling_system.cooling_shr = 0.65
|
468
|
+
cooling_system.cooling_shr_isdefaulted = true
|
285
469
|
elsif cooling_system.cooling_system_type == HPXML::HVACTypeMiniSplitAirConditioner
|
286
470
|
cooling_system.cooling_shr = 0.73
|
471
|
+
cooling_system.cooling_shr_isdefaulted = true
|
287
472
|
end
|
288
473
|
end
|
289
474
|
hpxml.heat_pumps.each do |heat_pump|
|
@@ -297,59 +482,282 @@ class HPXMLDefaults
|
|
297
482
|
elsif heat_pump.compressor_type == HPXML::HVACCompressorTypeVariableSpeed
|
298
483
|
heat_pump.cooling_shr = 0.78
|
299
484
|
end
|
485
|
+
heat_pump.cooling_shr_isdefaulted = true
|
300
486
|
elsif heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpMiniSplit
|
301
487
|
heat_pump.cooling_shr = 0.73
|
488
|
+
heat_pump.cooling_shr_isdefaulted = true
|
302
489
|
elsif heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
|
303
490
|
heat_pump.cooling_shr = 0.732
|
491
|
+
heat_pump.cooling_shr_isdefaulted = true
|
304
492
|
end
|
305
493
|
end
|
306
494
|
|
307
|
-
#
|
495
|
+
# GSHP pump power
|
308
496
|
hpxml.heat_pumps.each do |heat_pump|
|
309
497
|
next unless heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpGroundToAir
|
498
|
+
next unless heat_pump.pump_watts_per_ton.nil?
|
499
|
+
|
500
|
+
heat_pump.pump_watts_per_ton = HVAC.get_default_gshp_pump_power()
|
501
|
+
heat_pump.pump_watts_per_ton_isdefaulted = true
|
502
|
+
end
|
503
|
+
|
504
|
+
# Charge defect ratio
|
505
|
+
hpxml.cooling_systems.each do |cooling_system|
|
506
|
+
next unless [HPXML::HVACTypeCentralAirConditioner,
|
507
|
+
HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
|
508
|
+
next unless cooling_system.charge_defect_ratio.nil?
|
310
509
|
|
311
|
-
|
312
|
-
|
510
|
+
cooling_system.charge_defect_ratio = 0.0
|
511
|
+
cooling_system.charge_defect_ratio_isdefaulted = true
|
512
|
+
cooling_system.charge_not_tested = nil
|
513
|
+
end
|
514
|
+
hpxml.heat_pumps.each do |heat_pump|
|
515
|
+
next unless [HPXML::HVACTypeHeatPumpAirToAir,
|
516
|
+
HPXML::HVACTypeHeatPumpMiniSplit,
|
517
|
+
HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
518
|
+
next unless heat_pump.charge_defect_ratio.nil?
|
519
|
+
|
520
|
+
heat_pump.charge_defect_ratio = 0.0
|
521
|
+
heat_pump.charge_defect_ratio_isdefaulted = true
|
522
|
+
heat_pump.charge_not_tested = nil
|
523
|
+
end
|
524
|
+
|
525
|
+
# Airflow defect ratio
|
526
|
+
hpxml.heating_systems.each do |heating_system|
|
527
|
+
next unless [HPXML::HVACTypeFurnace].include? heating_system.heating_system_type
|
528
|
+
next unless heating_system.airflow_defect_ratio.nil?
|
529
|
+
|
530
|
+
heating_system.airflow_defect_ratio = 0.0
|
531
|
+
heating_system.airflow_defect_ratio_isdefaulted = true
|
532
|
+
heating_system.airflow_not_tested = nil
|
533
|
+
end
|
534
|
+
hpxml.cooling_systems.each do |cooling_system|
|
535
|
+
next unless [HPXML::HVACTypeCentralAirConditioner,
|
536
|
+
HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
|
537
|
+
if cooling_system.cooling_system_type == HPXML::HVACTypeMiniSplitAirConditioner && cooling_system.distribution_system_idref.nil?
|
538
|
+
next # Ducted mini-splits only
|
313
539
|
end
|
314
|
-
|
315
|
-
|
540
|
+
next unless cooling_system.airflow_defect_ratio.nil?
|
541
|
+
|
542
|
+
cooling_system.airflow_defect_ratio = 0.0
|
543
|
+
cooling_system.airflow_defect_ratio_isdefaulted = true
|
544
|
+
cooling_system.airflow_not_tested = nil
|
545
|
+
end
|
546
|
+
hpxml.heat_pumps.each do |heat_pump|
|
547
|
+
next unless [HPXML::HVACTypeHeatPumpAirToAir,
|
548
|
+
HPXML::HVACTypeHeatPumpGroundToAir,
|
549
|
+
HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump.heat_pump_type
|
550
|
+
if heat_pump.heat_pump_type == HPXML::HVACTypeHeatPumpMiniSplit && heat_pump.distribution_system_idref.nil?
|
551
|
+
next # Ducted mini-splits only
|
316
552
|
end
|
553
|
+
next unless heat_pump.airflow_defect_ratio.nil?
|
554
|
+
|
555
|
+
heat_pump.airflow_defect_ratio = 0.0
|
556
|
+
heat_pump.airflow_defect_ratio_isdefaulted = true
|
557
|
+
heat_pump.airflow_not_tested = nil
|
317
558
|
end
|
318
559
|
|
319
|
-
#
|
320
|
-
|
560
|
+
# Fan power
|
561
|
+
psc_watts_per_cfm = 0.5 # W/cfm, PSC fan
|
562
|
+
ecm_watts_per_cfm = 0.375 # W/cfm, ECM fan
|
563
|
+
mini_split_ducted_watts_per_cfm = 0.18 # W/cfm, ducted mini split
|
321
564
|
hpxml.heating_systems.each do |heating_system|
|
322
|
-
if
|
323
|
-
heating_system.
|
565
|
+
if [HPXML::HVACTypeFurnace].include? heating_system.heating_system_type
|
566
|
+
if heating_system.fan_watts_per_cfm.nil?
|
567
|
+
if heating_system.distribution_system.air_type == HPXML::AirTypeGravity
|
568
|
+
heating_system.fan_watts_per_cfm = 0.0
|
569
|
+
elsif heating_system.heating_efficiency_afue > 0.9 # HEScore assumption
|
570
|
+
heating_system.fan_watts_per_cfm = ecm_watts_per_cfm
|
571
|
+
else
|
572
|
+
heating_system.fan_watts_per_cfm = psc_watts_per_cfm
|
573
|
+
end
|
574
|
+
heating_system.fan_watts_per_cfm_isdefaulted = true
|
575
|
+
heating_system.fan_power_not_tested = nil
|
576
|
+
end
|
577
|
+
elsif [HPXML::HVACTypeStove].include? heating_system.heating_system_type
|
578
|
+
if heating_system.fan_watts.nil?
|
579
|
+
heating_system.fan_watts = 40.0 # W
|
580
|
+
heating_system.fan_watts_isdefaulted = true
|
581
|
+
end
|
582
|
+
elsif [HPXML::HVACTypeWallFurnace,
|
583
|
+
HPXML::HVACTypeFloorFurnace,
|
584
|
+
HPXML::HVACTypePortableHeater,
|
585
|
+
HPXML::HVACTypeFixedHeater,
|
586
|
+
HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
|
587
|
+
if heating_system.fan_watts.nil?
|
588
|
+
heating_system.fan_watts = 0.0 # W/cfm, assume no fan power
|
589
|
+
heating_system.fan_watts_isdefaulted = true
|
590
|
+
end
|
324
591
|
end
|
325
592
|
end
|
326
593
|
hpxml.cooling_systems.each do |cooling_system|
|
327
|
-
|
328
|
-
|
594
|
+
next unless cooling_system.fan_watts_per_cfm.nil?
|
595
|
+
|
596
|
+
if (not cooling_system.attached_heating_system.nil?) && (not cooling_system.attached_heating_system.fan_watts_per_cfm.nil?)
|
597
|
+
cooling_system.fan_watts_per_cfm = cooling_system.attached_heating_system.fan_watts_per_cfm
|
598
|
+
cooling_system.fan_watts_per_cfm_isdefaulted = true
|
599
|
+
cooling_system.fan_power_not_tested = nil
|
600
|
+
elsif [HPXML::HVACTypeCentralAirConditioner].include? cooling_system.cooling_system_type
|
601
|
+
if cooling_system.cooling_efficiency_seer > 13.5 # HEScore assumption
|
602
|
+
cooling_system.fan_watts_per_cfm = ecm_watts_per_cfm
|
603
|
+
else
|
604
|
+
cooling_system.fan_watts_per_cfm = psc_watts_per_cfm
|
605
|
+
end
|
606
|
+
cooling_system.fan_watts_per_cfm_isdefaulted = true
|
607
|
+
cooling_system.fan_power_not_tested = nil
|
608
|
+
elsif [HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
|
609
|
+
if not cooling_system.distribution_system.nil?
|
610
|
+
cooling_system.fan_watts_per_cfm = mini_split_ducted_watts_per_cfm
|
611
|
+
end
|
612
|
+
cooling_system.fan_watts_per_cfm_isdefaulted = true
|
613
|
+
cooling_system.fan_power_not_tested = nil
|
614
|
+
elsif [HPXML::HVACTypeEvaporativeCooler].include? cooling_system.cooling_system_type
|
615
|
+
# Depends on airflow rate, so defaulted in hvac_sizing.rb
|
329
616
|
end
|
330
617
|
end
|
331
618
|
hpxml.heat_pumps.each do |heat_pump|
|
332
|
-
|
333
|
-
|
619
|
+
next unless heat_pump.fan_watts_per_cfm.nil?
|
620
|
+
|
621
|
+
if [HPXML::HVACTypeHeatPumpAirToAir].include? heat_pump.heat_pump_type
|
622
|
+
if heat_pump.heating_efficiency_hspf > 8.75 # HEScore assumption
|
623
|
+
heat_pump.fan_watts_per_cfm = ecm_watts_per_cfm
|
624
|
+
else
|
625
|
+
heat_pump.fan_watts_per_cfm = psc_watts_per_cfm
|
626
|
+
end
|
627
|
+
heat_pump.fan_watts_per_cfm_isdefaulted = true
|
628
|
+
heat_pump.fan_power_not_tested = nil
|
629
|
+
elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
630
|
+
if heat_pump.heating_efficiency_cop > 8.75 / 3.2 # HEScore assumption
|
631
|
+
heat_pump.fan_watts_per_cfm = ecm_watts_per_cfm
|
632
|
+
else
|
633
|
+
heat_pump.fan_watts_per_cfm = psc_watts_per_cfm
|
634
|
+
end
|
635
|
+
heat_pump.fan_watts_per_cfm_isdefaulted = true
|
636
|
+
heat_pump.fan_power_not_tested = nil
|
637
|
+
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump.heat_pump_type
|
638
|
+
if not heat_pump.distribution_system.nil?
|
639
|
+
heat_pump.fan_watts_per_cfm = mini_split_ducted_watts_per_cfm
|
640
|
+
end
|
641
|
+
heat_pump.fan_watts_per_cfm_isdefaulted = true
|
642
|
+
heat_pump.fan_power_not_tested = nil
|
334
643
|
end
|
335
|
-
|
336
|
-
|
644
|
+
end
|
645
|
+
|
646
|
+
# Detailed HVAC performance
|
647
|
+
hpxml.cooling_systems.each do |cooling_system|
|
648
|
+
clg_ap = cooling_system.additional_properties
|
649
|
+
if [HPXML::HVACTypeCentralAirConditioner].include? cooling_system.cooling_system_type
|
650
|
+
# Note: We use HP cooling curve so that a central AC behaves the same.
|
651
|
+
HVAC.set_num_speeds(cooling_system)
|
652
|
+
HVAC.set_fan_power_rated(cooling_system)
|
653
|
+
HVAC.set_crankcase_assumptions(cooling_system)
|
654
|
+
|
655
|
+
HVAC.set_cool_c_d(cooling_system, clg_ap.num_speeds)
|
656
|
+
HVAC.set_cool_curves_ashp(cooling_system)
|
657
|
+
HVAC.set_cool_rated_cfm_per_ton(cooling_system)
|
658
|
+
HVAC.set_cool_rated_shrs_gross(cooling_system)
|
659
|
+
HVAC.set_cool_rated_eirs(cooling_system)
|
660
|
+
|
661
|
+
elsif [HPXML::HVACTypeRoomAirConditioner].include? cooling_system.cooling_system_type
|
662
|
+
HVAC.set_num_speeds(cooling_system)
|
663
|
+
HVAC.set_cool_c_d(cooling_system, clg_ap.num_speeds)
|
664
|
+
HVAC.set_cool_curves_room_ac(cooling_system)
|
665
|
+
HVAC.set_cool_rated_cfm_per_ton(cooling_system)
|
666
|
+
HVAC.set_cool_rated_shrs_gross(cooling_system)
|
667
|
+
|
668
|
+
elsif [HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system.cooling_system_type
|
669
|
+
num_speeds = 10
|
670
|
+
HVAC.set_num_speeds(cooling_system)
|
671
|
+
HVAC.set_crankcase_assumptions(cooling_system)
|
672
|
+
HVAC.set_fan_power_rated(cooling_system)
|
673
|
+
|
674
|
+
HVAC.set_cool_c_d(cooling_system, num_speeds)
|
675
|
+
HVAC.set_cool_curves_mshp(cooling_system, num_speeds)
|
676
|
+
HVAC.set_cool_rated_cfm_per_ton_mshp(cooling_system, num_speeds)
|
677
|
+
HVAC.set_cool_rated_eirs_mshp(cooling_system, num_speeds)
|
678
|
+
|
679
|
+
HVAC.set_mshp_downselected_speed_indices(cooling_system)
|
680
|
+
|
681
|
+
elsif [HPXML::HVACTypeEvaporativeCooler].include? cooling_system.cooling_system_type
|
682
|
+
clg_ap.effectiveness = 0.72 # Assumption from HEScore
|
683
|
+
|
337
684
|
end
|
338
|
-
|
339
|
-
|
685
|
+
end
|
686
|
+
hpxml.heating_systems.each do |heating_system|
|
687
|
+
htg_ap = heating_system.additional_properties
|
688
|
+
next unless [HPXML::HVACTypeStove,
|
689
|
+
HPXML::HVACTypePortableHeater,
|
690
|
+
HPXML::HVACTypeFixedHeater,
|
691
|
+
HPXML::HVACTypeWallFurnace,
|
692
|
+
HPXML::HVACTypeFloorFurnace,
|
693
|
+
HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
|
694
|
+
HVAC.set_heat_rated_cfm_per_ton(heating_system)
|
695
|
+
end
|
696
|
+
hpxml.heat_pumps.each do |heat_pump|
|
697
|
+
hp_ap = heat_pump.additional_properties
|
698
|
+
if [HPXML::HVACTypeHeatPumpAirToAir].include? heat_pump.heat_pump_type
|
699
|
+
HVAC.set_num_speeds(heat_pump)
|
700
|
+
HVAC.set_fan_power_rated(heat_pump)
|
701
|
+
HVAC.set_crankcase_assumptions(heat_pump)
|
702
|
+
HVAC.set_heat_pump_temperatures(heat_pump)
|
703
|
+
|
704
|
+
HVAC.set_cool_c_d(heat_pump, hp_ap.num_speeds)
|
705
|
+
HVAC.set_cool_curves_ashp(heat_pump)
|
706
|
+
HVAC.set_cool_rated_cfm_per_ton(heat_pump)
|
707
|
+
HVAC.set_cool_rated_shrs_gross(heat_pump)
|
708
|
+
HVAC.set_cool_rated_eirs(heat_pump)
|
709
|
+
|
710
|
+
HVAC.set_heat_c_d(heat_pump, hp_ap.num_speeds)
|
711
|
+
HVAC.set_ashp_htg_curves(heat_pump)
|
712
|
+
HVAC.set_heat_rated_cfm_per_ton(heat_pump)
|
713
|
+
HVAC.set_heat_rated_eirs(heat_pump)
|
714
|
+
|
715
|
+
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump.heat_pump_type
|
716
|
+
num_speeds = 10
|
717
|
+
HVAC.set_num_speeds(heat_pump)
|
718
|
+
HVAC.set_crankcase_assumptions(heat_pump)
|
719
|
+
HVAC.set_fan_power_rated(heat_pump)
|
720
|
+
HVAC.set_heat_pump_temperatures(heat_pump)
|
721
|
+
|
722
|
+
HVAC.set_cool_c_d(heat_pump, num_speeds)
|
723
|
+
HVAC.set_cool_curves_mshp(heat_pump, num_speeds)
|
724
|
+
HVAC.set_cool_rated_cfm_per_ton_mshp(heat_pump, num_speeds)
|
725
|
+
HVAC.set_cool_rated_eirs_mshp(heat_pump, num_speeds)
|
726
|
+
|
727
|
+
HVAC.set_heat_c_d(heat_pump, num_speeds)
|
728
|
+
HVAC.set_heat_curves_mshp(heat_pump, num_speeds)
|
729
|
+
HVAC.set_heat_rated_cfm_per_ton_mshp(heat_pump, num_speeds)
|
730
|
+
HVAC.set_heat_rated_eirs_mshp(heat_pump, num_speeds)
|
731
|
+
|
732
|
+
HVAC.set_mshp_downselected_speed_indices(heat_pump)
|
733
|
+
|
734
|
+
elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
735
|
+
HVAC.set_gshp_assumptions(heat_pump, weather)
|
736
|
+
HVAC.set_curves_gshp(heat_pump)
|
737
|
+
|
738
|
+
elsif [HPXML::HVACTypeHeatPumpWaterLoopToAir].include? heat_pump.heat_pump_type
|
739
|
+
HVAC.set_heat_pump_temperatures(heat_pump)
|
740
|
+
|
340
741
|
end
|
341
|
-
|
342
|
-
|
742
|
+
end
|
743
|
+
end
|
744
|
+
|
745
|
+
def self.apply_hvac_control(hpxml)
|
746
|
+
hpxml.hvac_controls.each do |hvac_control|
|
747
|
+
if not hvac_control.heating_setback_temp.nil?
|
748
|
+
if hvac_control.heating_setback_start_hour.nil?
|
749
|
+
hvac_control.heating_setback_start_hour = 23 # 11 pm
|
750
|
+
hvac_control.heating_setback_start_hour_isdefaulted = true
|
751
|
+
end
|
343
752
|
end
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
753
|
+
|
754
|
+
next unless not hvac_control.cooling_setup_temp.nil?
|
755
|
+
|
756
|
+
if hvac_control.cooling_setup_start_hour.nil?
|
757
|
+
hvac_control.cooling_setup_start_hour = 9 # 9 am
|
758
|
+
hvac_control.cooling_setup_start_hour_isdefaulted = true
|
348
759
|
end
|
349
760
|
end
|
350
|
-
|
351
|
-
# TODO: Default HeatingCapacity17F
|
352
|
-
# TODO: Default Electric Auxiliary Energy (EAE; requires autosized HVAC capacity)
|
353
761
|
end
|
354
762
|
|
355
763
|
def self.apply_hvac_distribution(hpxml, ncfl, ncfl_ag)
|
@@ -360,16 +768,15 @@ class HPXMLDefaults
|
|
360
768
|
n_ducts += hvac_distribution.ducts.size
|
361
769
|
n_ducts_to_be_defaulted += hvac_distribution.ducts.select { |duct| duct.duct_surface_area.nil? && duct.duct_location.nil? }.size
|
362
770
|
end
|
363
|
-
if n_ducts_to_be_defaulted > 0 && (n_ducts != n_ducts_to_be_defaulted)
|
364
|
-
fail 'The location and surface area of all ducts must be provided or blank.'
|
365
|
-
end
|
771
|
+
fail if n_ducts_to_be_defaulted > 0 && (n_ducts != n_ducts_to_be_defaulted) # EPvalidator.xml should prevent this
|
366
772
|
|
367
773
|
hpxml.hvac_distributions.each do |hvac_distribution|
|
368
|
-
next unless [HPXML::HVACDistributionTypeAir
|
774
|
+
next unless [HPXML::HVACDistributionTypeAir].include? hvac_distribution.distribution_system_type
|
369
775
|
|
370
776
|
# Default return registers
|
371
777
|
if hvac_distribution.number_of_return_registers.nil?
|
372
|
-
hvac_distribution.number_of_return_registers = ncfl # Add 1 return register per conditioned floor if not provided
|
778
|
+
hvac_distribution.number_of_return_registers = ncfl.ceil # Add 1 return register per conditioned floor if not provided
|
779
|
+
hvac_distribution.number_of_return_registers_isdefaulted = true
|
373
780
|
end
|
374
781
|
|
375
782
|
# Default ducts
|
@@ -394,24 +801,99 @@ class HPXMLDefaults
|
|
394
801
|
hvac_distribution.ducts.add(duct_type: duct.duct_type,
|
395
802
|
duct_insulation_r_value: duct.duct_insulation_r_value,
|
396
803
|
duct_location: secondary_duct_location,
|
397
|
-
|
804
|
+
duct_location_isdefaulted: true,
|
805
|
+
duct_surface_area: secondary_duct_area,
|
806
|
+
duct_surface_area_isdefaulted: true)
|
398
807
|
end
|
399
808
|
end
|
809
|
+
duct.duct_surface_area_isdefaulted = true
|
810
|
+
duct.duct_location_isdefaulted = true
|
400
811
|
end
|
401
812
|
end
|
402
813
|
end
|
403
814
|
end
|
404
815
|
|
816
|
+
def self.apply_ventilation_fans(hpxml)
|
817
|
+
# Default mech vent systems
|
818
|
+
hpxml.ventilation_fans.each do |vent_fan|
|
819
|
+
next unless vent_fan.used_for_whole_building_ventilation
|
820
|
+
|
821
|
+
if vent_fan.is_shared_system.nil?
|
822
|
+
vent_fan.is_shared_system = false
|
823
|
+
vent_fan.is_shared_system_isdefaulted = true
|
824
|
+
end
|
825
|
+
if vent_fan.hours_in_operation.nil?
|
826
|
+
vent_fan.hours_in_operation = (vent_fan.fan_type == HPXML::MechVentTypeCFIS) ? 8.0 : 24.0
|
827
|
+
vent_fan.hours_in_operation_isdefaulted = true
|
828
|
+
end
|
829
|
+
end
|
830
|
+
|
831
|
+
# Default kitchen fan
|
832
|
+
hpxml.ventilation_fans.each do |vent_fan|
|
833
|
+
next unless (vent_fan.used_for_local_ventilation && (vent_fan.fan_location == HPXML::LocationKitchen))
|
834
|
+
|
835
|
+
if vent_fan.quantity.nil?
|
836
|
+
vent_fan.quantity = 1
|
837
|
+
vent_fan.quantity_isdefaulted = true
|
838
|
+
end
|
839
|
+
if vent_fan.rated_flow_rate.nil?
|
840
|
+
vent_fan.rated_flow_rate = 100.0 # cfm, per BA HSP
|
841
|
+
vent_fan.rated_flow_rate_isdefaulted = true
|
842
|
+
end
|
843
|
+
if vent_fan.hours_in_operation.nil?
|
844
|
+
vent_fan.hours_in_operation = 1.0 # hrs/day, per BA HSP
|
845
|
+
vent_fan.hours_in_operation_isdefaulted = true
|
846
|
+
end
|
847
|
+
if vent_fan.fan_power.nil?
|
848
|
+
vent_fan.fan_power = 0.3 * vent_fan.rated_flow_rate # W, per BA HSP
|
849
|
+
vent_fan.fan_power_isdefaulted = true
|
850
|
+
end
|
851
|
+
if vent_fan.start_hour.nil?
|
852
|
+
vent_fan.start_hour = 18 # 6 pm, per BA HSP
|
853
|
+
vent_fan.start_hour_isdefaulted = true
|
854
|
+
end
|
855
|
+
end
|
856
|
+
|
857
|
+
# Default bath fans
|
858
|
+
hpxml.ventilation_fans.each do |vent_fan|
|
859
|
+
next unless (vent_fan.used_for_local_ventilation && (vent_fan.fan_location == HPXML::LocationBath))
|
860
|
+
|
861
|
+
if vent_fan.quantity.nil?
|
862
|
+
vent_fan.quantity = hpxml.building_construction.number_of_bathrooms
|
863
|
+
vent_fan.quantity_isdefaulted = true
|
864
|
+
end
|
865
|
+
if vent_fan.rated_flow_rate.nil?
|
866
|
+
vent_fan.rated_flow_rate = 50.0 # cfm, per BA HSP
|
867
|
+
vent_fan.rated_flow_rate_isdefaulted = true
|
868
|
+
end
|
869
|
+
if vent_fan.hours_in_operation.nil?
|
870
|
+
vent_fan.hours_in_operation = 1.0 # hrs/day, per BA HSP
|
871
|
+
vent_fan.hours_in_operation_isdefaulted = true
|
872
|
+
end
|
873
|
+
if vent_fan.fan_power.nil?
|
874
|
+
vent_fan.fan_power = 0.3 * vent_fan.rated_flow_rate # W, per BA HSP
|
875
|
+
vent_fan.fan_power_isdefaulted = true
|
876
|
+
end
|
877
|
+
if vent_fan.start_hour.nil?
|
878
|
+
vent_fan.start_hour = 7 # 7 am, per BA HSP
|
879
|
+
vent_fan.start_hour_isdefaulted = true
|
880
|
+
end
|
881
|
+
end
|
882
|
+
end
|
883
|
+
|
405
884
|
def self.apply_water_heaters(hpxml, nbeds, eri_version)
|
406
885
|
hpxml.water_heating_systems.each do |water_heating_system|
|
407
886
|
if water_heating_system.is_shared_system.nil?
|
408
887
|
water_heating_system.is_shared_system = false
|
888
|
+
water_heating_system.is_shared_system_isdefaulted = true
|
409
889
|
end
|
410
890
|
if water_heating_system.temperature.nil?
|
411
891
|
water_heating_system.temperature = Waterheater.get_default_hot_water_temperature(eri_version)
|
892
|
+
water_heating_system.temperature_isdefaulted = true
|
412
893
|
end
|
413
894
|
if water_heating_system.performance_adjustment.nil?
|
414
895
|
water_heating_system.performance_adjustment = Waterheater.get_default_performance_adjustment(water_heating_system)
|
896
|
+
water_heating_system.performance_adjustment_isdefaulted = true
|
415
897
|
end
|
416
898
|
if (water_heating_system.water_heater_type == HPXML::WaterHeaterTypeCombiStorage) && water_heating_system.standby_loss.nil?
|
417
899
|
# Use equation fit from AHRI database
|
@@ -420,20 +902,25 @@ class HPXMLDefaults
|
|
420
902
|
surface_area = Waterheater.calc_tank_areas(act_vol)[0]
|
421
903
|
sqft_by_gal = surface_area / act_vol # sqft/gal
|
422
904
|
water_heating_system.standby_loss = (2.9721 * sqft_by_gal - 0.4732).round(3) # linear equation assuming a constant u, F/hr
|
905
|
+
water_heating_system.standby_loss_isdefaulted = true
|
423
906
|
end
|
424
907
|
if (water_heating_system.water_heater_type == HPXML::WaterHeaterTypeStorage)
|
425
908
|
if water_heating_system.heating_capacity.nil?
|
426
|
-
water_heating_system.heating_capacity = Waterheater.get_default_heating_capacity(water_heating_system.fuel_type, nbeds, hpxml.water_heating_systems.size, hpxml.building_construction.number_of_bathrooms) * 1000.0
|
909
|
+
water_heating_system.heating_capacity = (Waterheater.get_default_heating_capacity(water_heating_system.fuel_type, nbeds, hpxml.water_heating_systems.size, hpxml.building_construction.number_of_bathrooms) * 1000.0).round
|
910
|
+
water_heating_system.heating_capacity_isdefaulted = true
|
427
911
|
end
|
428
912
|
if water_heating_system.tank_volume.nil?
|
429
913
|
water_heating_system.tank_volume = Waterheater.get_default_tank_volume(water_heating_system.fuel_type, nbeds, hpxml.building_construction.number_of_bathrooms)
|
914
|
+
water_heating_system.tank_volume_isdefaulted = true
|
430
915
|
end
|
431
916
|
if water_heating_system.recovery_efficiency.nil?
|
432
917
|
water_heating_system.recovery_efficiency = Waterheater.get_default_recovery_efficiency(water_heating_system)
|
918
|
+
water_heating_system.recovery_efficiency_isdefaulted = true
|
433
919
|
end
|
434
920
|
end
|
435
921
|
if water_heating_system.location.nil?
|
436
922
|
water_heating_system.location = Waterheater.get_default_location(hpxml, hpxml.climate_and_risk_zones.iecc_zone)
|
923
|
+
water_heating_system.location_isdefaulted = true
|
437
924
|
end
|
438
925
|
end
|
439
926
|
end
|
@@ -442,32 +929,46 @@ class HPXMLDefaults
|
|
442
929
|
return if hpxml.hot_water_distributions.size == 0
|
443
930
|
|
444
931
|
hot_water_distribution = hpxml.hot_water_distributions[0]
|
932
|
+
|
933
|
+
if hot_water_distribution.pipe_r_value.nil?
|
934
|
+
hot_water_distribution.pipe_r_value = 0.0
|
935
|
+
hot_water_distribution.pipe_r_value_isdefaulted = true
|
936
|
+
end
|
937
|
+
|
445
938
|
if hot_water_distribution.system_type == HPXML::DHWDistTypeStandard
|
446
939
|
if hot_water_distribution.standard_piping_length.nil?
|
447
940
|
hot_water_distribution.standard_piping_length = HotWaterAndAppliances.get_default_std_pipe_length(has_uncond_bsmnt, cfa, ncfl)
|
941
|
+
hot_water_distribution.standard_piping_length_isdefaulted = true
|
448
942
|
end
|
449
943
|
elsif hot_water_distribution.system_type == HPXML::DHWDistTypeRecirc
|
450
944
|
if hot_water_distribution.recirculation_piping_length.nil?
|
451
945
|
hot_water_distribution.recirculation_piping_length = HotWaterAndAppliances.get_default_recirc_loop_length(HotWaterAndAppliances.get_default_std_pipe_length(has_uncond_bsmnt, cfa, ncfl))
|
946
|
+
hot_water_distribution.recirculation_piping_length_isdefaulted = true
|
452
947
|
end
|
453
948
|
if hot_water_distribution.recirculation_branch_piping_length.nil?
|
454
949
|
hot_water_distribution.recirculation_branch_piping_length = HotWaterAndAppliances.get_default_recirc_branch_loop_length()
|
950
|
+
hot_water_distribution.recirculation_branch_piping_length_isdefaulted = true
|
455
951
|
end
|
456
952
|
if hot_water_distribution.recirculation_pump_power.nil?
|
457
953
|
hot_water_distribution.recirculation_pump_power = HotWaterAndAppliances.get_default_recirc_pump_power()
|
954
|
+
hot_water_distribution.recirculation_pump_power_isdefaulted = true
|
458
955
|
end
|
459
956
|
end
|
460
957
|
|
461
958
|
if hot_water_distribution.has_shared_recirculation
|
462
959
|
if hot_water_distribution.shared_recirculation_pump_power.nil?
|
463
960
|
hot_water_distribution.shared_recirculation_pump_power = HotWaterAndAppliances.get_default_shared_recirc_pump_power()
|
961
|
+
hot_water_distribution.shared_recirculation_pump_power_isdefaulted = true
|
464
962
|
end
|
465
963
|
end
|
466
964
|
end
|
467
965
|
|
468
966
|
def self.apply_water_fixtures(hpxml)
|
967
|
+
return if hpxml.hot_water_distributions.size == 0
|
968
|
+
|
469
969
|
if hpxml.water_heating.water_fixtures_usage_multiplier.nil?
|
470
970
|
hpxml.water_heating.water_fixtures_usage_multiplier = 1.0
|
971
|
+
hpxml.water_heating.water_fixtures_usage_multiplier_isdefaulted = true
|
471
972
|
end
|
472
973
|
end
|
473
974
|
|
@@ -480,319 +981,45 @@ class HPXMLDefaults
|
|
480
981
|
if not collector_area.nil? # Detailed solar water heater
|
481
982
|
if solar_thermal_system.storage_volume.nil?
|
482
983
|
solar_thermal_system.storage_volume = Waterheater.calc_default_solar_thermal_system_storage_volume(collector_area)
|
984
|
+
solar_thermal_system.storage_volume_isdefaulted = true
|
483
985
|
end
|
484
986
|
end
|
485
987
|
end
|
486
988
|
|
487
|
-
def self.
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
vent_fan.is_shared_system = false
|
494
|
-
end
|
495
|
-
|
496
|
-
# Default kitchen fan
|
497
|
-
hpxml.ventilation_fans.each do |vent_fan|
|
498
|
-
next unless (vent_fan.used_for_local_ventilation && (vent_fan.fan_location == HPXML::LocationKitchen))
|
499
|
-
|
500
|
-
if vent_fan.quantity.nil?
|
501
|
-
vent_fan.quantity = 1
|
989
|
+
def self.apply_pv_systems(hpxml)
|
990
|
+
hpxml.pv_systems.each do |pv_system|
|
991
|
+
if pv_system.is_shared_system.nil?
|
992
|
+
pv_system.is_shared_system = false
|
993
|
+
pv_system.is_shared_system_isdefaulted = true
|
502
994
|
end
|
503
|
-
if
|
504
|
-
|
995
|
+
if pv_system.location.nil?
|
996
|
+
pv_system.location = HPXML::LocationRoof
|
997
|
+
pv_system.location_isdefaulted = true
|
505
998
|
end
|
506
|
-
if
|
507
|
-
|
999
|
+
if pv_system.tracking.nil?
|
1000
|
+
pv_system.tracking = HPXML::PVTrackingTypeFixed
|
1001
|
+
pv_system.tracking_isdefaulted = true
|
508
1002
|
end
|
509
|
-
if
|
510
|
-
|
1003
|
+
if pv_system.module_type.nil?
|
1004
|
+
pv_system.module_type = HPXML::PVModuleTypeStandard
|
1005
|
+
pv_system.module_type_isdefaulted = true
|
511
1006
|
end
|
512
|
-
if
|
513
|
-
|
1007
|
+
if pv_system.inverter_efficiency.nil?
|
1008
|
+
pv_system.inverter_efficiency = PV.get_default_inv_eff()
|
1009
|
+
pv_system.inverter_efficiency_isdefaulted = true
|
1010
|
+
end
|
1011
|
+
if pv_system.system_losses_fraction.nil?
|
1012
|
+
pv_system.system_losses_fraction = PV.get_default_system_losses(pv_system.year_modules_manufactured)
|
1013
|
+
pv_system.system_losses_fraction_isdefaulted = true
|
514
1014
|
end
|
515
1015
|
end
|
1016
|
+
end
|
516
1017
|
|
517
|
-
|
518
|
-
hpxml.
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
vent_fan.quantity = hpxml.building_construction.number_of_bathrooms
|
523
|
-
end
|
524
|
-
if vent_fan.rated_flow_rate.nil?
|
525
|
-
vent_fan.rated_flow_rate = 50.0 # cfm, per BA HSP
|
526
|
-
end
|
527
|
-
if vent_fan.hours_in_operation.nil?
|
528
|
-
vent_fan.hours_in_operation = 1.0 # hrs/day, per BA HSP
|
529
|
-
end
|
530
|
-
if vent_fan.fan_power.nil?
|
531
|
-
vent_fan.fan_power = 0.3 * vent_fan.rated_flow_rate # W, per BA HSP
|
532
|
-
end
|
533
|
-
if vent_fan.start_hour.nil?
|
534
|
-
vent_fan.start_hour = 7 # 7 am, per BA HSP
|
535
|
-
end
|
536
|
-
end
|
537
|
-
end
|
538
|
-
|
539
|
-
def self.apply_ceiling_fans(hpxml, nbeds)
|
540
|
-
return if hpxml.ceiling_fans.size == 0
|
541
|
-
|
542
|
-
ceiling_fan = hpxml.ceiling_fans[0]
|
543
|
-
if ceiling_fan.efficiency.nil?
|
544
|
-
medium_cfm = 3000.0
|
545
|
-
ceiling_fan.efficiency = medium_cfm / HVAC.get_default_ceiling_fan_power()
|
546
|
-
end
|
547
|
-
if ceiling_fan.quantity.nil?
|
548
|
-
ceiling_fan.quantity = HVAC.get_default_ceiling_fan_quantity(nbeds)
|
549
|
-
end
|
550
|
-
end
|
551
|
-
|
552
|
-
def self.apply_plug_loads(hpxml, cfa, nbeds)
|
553
|
-
hpxml.plug_loads.each do |plug_load|
|
554
|
-
if plug_load.plug_load_type == HPXML::PlugLoadTypeOther
|
555
|
-
default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_residual_mels_default_values(cfa)
|
556
|
-
if plug_load.kWh_per_year.nil?
|
557
|
-
plug_load.kWh_per_year = default_annual_kwh
|
558
|
-
end
|
559
|
-
if plug_load.frac_sensible.nil?
|
560
|
-
plug_load.frac_sensible = default_sens_frac
|
561
|
-
end
|
562
|
-
if plug_load.frac_latent.nil?
|
563
|
-
plug_load.frac_latent = default_lat_frac
|
564
|
-
end
|
565
|
-
if plug_load.location.nil?
|
566
|
-
plug_load.location = HPXML::LocationInterior
|
567
|
-
end
|
568
|
-
if plug_load.weekday_fractions.nil?
|
569
|
-
plug_load.weekday_fractions = Schedule.PlugLoadsOtherWeekdayFractions
|
570
|
-
end
|
571
|
-
if plug_load.weekend_fractions.nil?
|
572
|
-
plug_load.weekend_fractions = Schedule.PlugLoadsOtherWeekendFractions
|
573
|
-
end
|
574
|
-
if plug_load.monthly_multipliers.nil?
|
575
|
-
plug_load.monthly_multipliers = Schedule.PlugLoadsOtherMonthlyMultipliers
|
576
|
-
end
|
577
|
-
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeTelevision
|
578
|
-
default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_televisions_default_values(cfa, nbeds)
|
579
|
-
if plug_load.kWh_per_year.nil?
|
580
|
-
plug_load.kWh_per_year = default_annual_kwh
|
581
|
-
end
|
582
|
-
if plug_load.frac_sensible.nil?
|
583
|
-
plug_load.frac_sensible = default_sens_frac
|
584
|
-
end
|
585
|
-
if plug_load.frac_latent.nil?
|
586
|
-
plug_load.frac_latent = default_lat_frac
|
587
|
-
end
|
588
|
-
if plug_load.location.nil?
|
589
|
-
plug_load.location = HPXML::LocationInterior
|
590
|
-
end
|
591
|
-
if plug_load.weekday_fractions.nil?
|
592
|
-
plug_load.weekday_fractions = Schedule.PlugLoadsTVWeekdayFractions
|
593
|
-
end
|
594
|
-
if plug_load.weekend_fractions.nil?
|
595
|
-
plug_load.weekend_fractions = Schedule.PlugLoadsTVWeekendFractions
|
596
|
-
end
|
597
|
-
if plug_load.monthly_multipliers.nil?
|
598
|
-
plug_load.monthly_multipliers = Schedule.PlugLoadsTVMonthlyMultipliers
|
599
|
-
end
|
600
|
-
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging
|
601
|
-
default_annual_kwh = MiscLoads.get_electric_vehicle_charging_default_values
|
602
|
-
if plug_load.kWh_per_year.nil?
|
603
|
-
plug_load.kWh_per_year = default_annual_kwh
|
604
|
-
end
|
605
|
-
if plug_load.frac_sensible.nil?
|
606
|
-
plug_load.frac_sensible = 0.0
|
607
|
-
end
|
608
|
-
if plug_load.frac_latent.nil?
|
609
|
-
plug_load.frac_latent = 0.0
|
610
|
-
end
|
611
|
-
if plug_load.location.nil?
|
612
|
-
plug_load.location = HPXML::LocationExterior
|
613
|
-
end
|
614
|
-
if plug_load.weekday_fractions.nil?
|
615
|
-
plug_load.weekday_fractions = Schedule.PlugLoadsVehicleWeekdayFractions
|
616
|
-
end
|
617
|
-
if plug_load.weekend_fractions.nil?
|
618
|
-
plug_load.weekend_fractions = Schedule.PlugLoadsVehicleWeekendFractions
|
619
|
-
end
|
620
|
-
if plug_load.monthly_multipliers.nil?
|
621
|
-
plug_load.monthly_multipliers = Schedule.PlugLoadsVehicleMonthlyMultipliers
|
622
|
-
end
|
623
|
-
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump
|
624
|
-
default_annual_kwh = MiscLoads.get_well_pump_default_values(cfa, nbeds)
|
625
|
-
if plug_load.kWh_per_year.nil?
|
626
|
-
plug_load.kWh_per_year = default_annual_kwh
|
627
|
-
end
|
628
|
-
if plug_load.frac_sensible.nil?
|
629
|
-
plug_load.frac_sensible = 0.0
|
630
|
-
end
|
631
|
-
if plug_load.frac_latent.nil?
|
632
|
-
plug_load.frac_latent = 0.0
|
633
|
-
end
|
634
|
-
if plug_load.location.nil?
|
635
|
-
plug_load.location = HPXML::LocationExterior
|
636
|
-
end
|
637
|
-
if plug_load.weekday_fractions.nil?
|
638
|
-
plug_load.weekday_fractions = Schedule.PlugLoadsWellPumpWeekdayFractions
|
639
|
-
end
|
640
|
-
if plug_load.weekend_fractions.nil?
|
641
|
-
plug_load.weekend_fractions = Schedule.PlugLoadsWellPumpWeekendFractions
|
642
|
-
end
|
643
|
-
if plug_load.monthly_multipliers.nil?
|
644
|
-
plug_load.monthly_multipliers = Schedule.PlugLoadsWellPumpMonthlyMultipliers
|
645
|
-
end
|
646
|
-
end
|
647
|
-
if plug_load.usage_multiplier.nil?
|
648
|
-
plug_load.usage_multiplier = 1.0
|
649
|
-
end
|
650
|
-
end
|
651
|
-
end
|
652
|
-
|
653
|
-
def self.apply_fuel_loads(hpxml, cfa, nbeds)
|
654
|
-
hpxml.fuel_loads.each do |fuel_load|
|
655
|
-
if fuel_load.fuel_load_type == HPXML::FuelLoadTypeGrill
|
656
|
-
if fuel_load.therm_per_year.nil?
|
657
|
-
fuel_load.therm_per_year = MiscLoads.get_gas_grill_default_values(cfa, nbeds)
|
658
|
-
end
|
659
|
-
if fuel_load.frac_sensible.nil?
|
660
|
-
fuel_load.frac_sensible = 0.0
|
661
|
-
end
|
662
|
-
if fuel_load.frac_latent.nil?
|
663
|
-
fuel_load.frac_latent = 0.0
|
664
|
-
end
|
665
|
-
if fuel_load.location.nil?
|
666
|
-
fuel_load.location = HPXML::LocationExterior
|
667
|
-
end
|
668
|
-
if fuel_load.weekday_fractions.nil?
|
669
|
-
fuel_load.weekday_fractions = Schedule.FuelLoadsGrillWeekdayFractions
|
670
|
-
end
|
671
|
-
if fuel_load.weekend_fractions.nil?
|
672
|
-
fuel_load.weekend_fractions = Schedule.FuelLoadsGrillWeekendFractions
|
673
|
-
end
|
674
|
-
if fuel_load.monthly_multipliers.nil?
|
675
|
-
fuel_load.monthly_multipliers = Schedule.FuelLoadsGrillMonthlyMultipliers
|
676
|
-
end
|
677
|
-
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeLighting
|
678
|
-
if fuel_load.therm_per_year.nil?
|
679
|
-
fuel_load.therm_per_year = MiscLoads.get_gas_lighting_default_values(cfa, nbeds)
|
680
|
-
end
|
681
|
-
if fuel_load.frac_sensible.nil?
|
682
|
-
fuel_load.frac_sensible = 0.0
|
683
|
-
end
|
684
|
-
if fuel_load.frac_latent.nil?
|
685
|
-
fuel_load.frac_latent = 0.0
|
686
|
-
end
|
687
|
-
if fuel_load.location.nil?
|
688
|
-
fuel_load.location = HPXML::LocationExterior
|
689
|
-
end
|
690
|
-
if fuel_load.weekday_fractions.nil?
|
691
|
-
fuel_load.weekday_fractions = Schedule.FuelLoadsLightingWeekdayFractions
|
692
|
-
end
|
693
|
-
if fuel_load.weekend_fractions.nil?
|
694
|
-
fuel_load.weekend_fractions = Schedule.FuelLoadsLightingWeekendFractions
|
695
|
-
end
|
696
|
-
if fuel_load.monthly_multipliers.nil?
|
697
|
-
fuel_load.monthly_multipliers = Schedule.FuelLoadsLightingMonthlyMultipliers
|
698
|
-
end
|
699
|
-
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeFireplace
|
700
|
-
if fuel_load.therm_per_year.nil?
|
701
|
-
fuel_load.therm_per_year = MiscLoads.get_gas_fireplace_default_values(cfa, nbeds)
|
702
|
-
end
|
703
|
-
if fuel_load.frac_sensible.nil?
|
704
|
-
fuel_load.frac_sensible = 0.5
|
705
|
-
end
|
706
|
-
if fuel_load.frac_latent.nil?
|
707
|
-
fuel_load.frac_latent = 0.1
|
708
|
-
end
|
709
|
-
if fuel_load.location.nil?
|
710
|
-
fuel_load.location = HPXML::LocationInterior
|
711
|
-
end
|
712
|
-
if fuel_load.weekday_fractions.nil?
|
713
|
-
fuel_load.weekday_fractions = Schedule.FuelLoadsFireplaceWeekdayFractions
|
714
|
-
end
|
715
|
-
if fuel_load.weekend_fractions.nil?
|
716
|
-
fuel_load.weekend_fractions = Schedule.FuelLoadsFireplaceWeekendFractions
|
717
|
-
end
|
718
|
-
if fuel_load.monthly_multipliers.nil?
|
719
|
-
fuel_load.monthly_multipliers = Schedule.FuelLoadsFireplaceMonthlyMultipliers
|
720
|
-
end
|
721
|
-
end
|
722
|
-
if fuel_load.usage_multiplier.nil?
|
723
|
-
fuel_load.usage_multiplier = 1.0
|
724
|
-
end
|
725
|
-
end
|
726
|
-
end
|
727
|
-
|
728
|
-
def self.apply_pools_and_hot_tubs(hpxml, cfa, nbeds)
|
729
|
-
hpxml.pools.each do |pool|
|
730
|
-
if pool.pump_kwh_per_year.nil?
|
731
|
-
pool.pump_kwh_per_year = MiscLoads.get_pool_pump_default_values(cfa, nbeds)
|
732
|
-
end
|
733
|
-
if pool.heater_load_value.nil?
|
734
|
-
default_heater_load_units, default_heater_load_value = MiscLoads.get_pool_heater_default_values(cfa, nbeds, pool.heater_type)
|
735
|
-
pool.heater_load_units = default_heater_load_units
|
736
|
-
pool.heater_load_value = default_heater_load_value
|
737
|
-
end
|
738
|
-
if pool.heater_usage_multiplier.nil?
|
739
|
-
pool.heater_usage_multiplier = 1.0
|
740
|
-
end
|
741
|
-
if pool.pump_usage_multiplier.nil?
|
742
|
-
pool.pump_usage_multiplier = 1.0
|
743
|
-
end
|
744
|
-
if pool.pump_weekday_fractions.nil?
|
745
|
-
pool.pump_weekday_fractions = '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'
|
746
|
-
end
|
747
|
-
if pool.pump_weekend_fractions.nil?
|
748
|
-
pool.pump_weekend_fractions = '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'
|
749
|
-
end
|
750
|
-
if pool.pump_monthly_multipliers.nil?
|
751
|
-
pool.pump_monthly_multipliers = '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
752
|
-
end
|
753
|
-
if pool.heater_weekday_fractions.nil?
|
754
|
-
pool.heater_weekday_fractions = '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'
|
755
|
-
end
|
756
|
-
if pool.heater_weekend_fractions.nil?
|
757
|
-
pool.heater_weekend_fractions = '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'
|
758
|
-
end
|
759
|
-
if pool.heater_monthly_multipliers.nil?
|
760
|
-
pool.heater_monthly_multipliers = '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
761
|
-
end
|
762
|
-
end
|
763
|
-
|
764
|
-
hpxml.hot_tubs.each do |hot_tub|
|
765
|
-
if hot_tub.pump_kwh_per_year.nil?
|
766
|
-
hot_tub.pump_kwh_per_year = MiscLoads.get_hot_tub_pump_default_values(cfa, nbeds)
|
767
|
-
end
|
768
|
-
if hot_tub.heater_load_value.nil?
|
769
|
-
default_heater_load_units, default_heater_load_value = MiscLoads.get_hot_tub_heater_default_values(cfa, nbeds, hot_tub.heater_type)
|
770
|
-
hot_tub.heater_load_units = default_heater_load_units
|
771
|
-
hot_tub.heater_load_value = default_heater_load_value
|
772
|
-
end
|
773
|
-
if hot_tub.heater_usage_multiplier.nil?
|
774
|
-
hot_tub.heater_usage_multiplier = 1.0
|
775
|
-
end
|
776
|
-
if hot_tub.pump_usage_multiplier.nil?
|
777
|
-
hot_tub.pump_usage_multiplier = 1.0
|
778
|
-
end
|
779
|
-
if hot_tub.pump_weekday_fractions.nil?
|
780
|
-
hot_tub.pump_weekday_fractions = '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'
|
781
|
-
end
|
782
|
-
if hot_tub.pump_weekend_fractions.nil?
|
783
|
-
hot_tub.pump_weekend_fractions = '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'
|
784
|
-
end
|
785
|
-
if hot_tub.pump_monthly_multipliers.nil?
|
786
|
-
hot_tub.pump_monthly_multipliers = '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921'
|
787
|
-
end
|
788
|
-
if hot_tub.heater_weekday_fractions.nil?
|
789
|
-
hot_tub.heater_weekday_fractions = '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'
|
790
|
-
end
|
791
|
-
if hot_tub.heater_weekend_fractions.nil?
|
792
|
-
hot_tub.heater_weekend_fractions = '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'
|
793
|
-
end
|
794
|
-
if hot_tub.heater_monthly_multipliers.nil?
|
795
|
-
hot_tub.heater_monthly_multipliers = '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
1018
|
+
def self.apply_generators(hpxml)
|
1019
|
+
hpxml.generators.each do |generator|
|
1020
|
+
if generator.is_shared_system.nil?
|
1021
|
+
generator.is_shared_system = false
|
1022
|
+
generator.is_shared_system_isdefaulted = true
|
796
1023
|
end
|
797
1024
|
end
|
798
1025
|
end
|
@@ -803,22 +1030,32 @@ class HPXMLDefaults
|
|
803
1030
|
clothes_washer = hpxml.clothes_washers[0]
|
804
1031
|
if clothes_washer.is_shared_appliance.nil?
|
805
1032
|
clothes_washer.is_shared_appliance = false
|
1033
|
+
clothes_washer.is_shared_appliance_isdefaulted = true
|
806
1034
|
end
|
807
1035
|
if clothes_washer.location.nil?
|
808
1036
|
clothes_washer.location = HPXML::LocationLivingSpace
|
1037
|
+
clothes_washer.location_isdefaulted = true
|
809
1038
|
end
|
810
1039
|
if clothes_washer.rated_annual_kwh.nil?
|
811
1040
|
default_values = HotWaterAndAppliances.get_clothes_washer_default_values(eri_version)
|
812
1041
|
clothes_washer.integrated_modified_energy_factor = default_values[:integrated_modified_energy_factor]
|
1042
|
+
clothes_washer.integrated_modified_energy_factor_isdefaulted = true
|
813
1043
|
clothes_washer.rated_annual_kwh = default_values[:rated_annual_kwh]
|
1044
|
+
clothes_washer.rated_annual_kwh_isdefaulted = true
|
814
1045
|
clothes_washer.label_electric_rate = default_values[:label_electric_rate]
|
1046
|
+
clothes_washer.label_electric_rate_isdefaulted = true
|
815
1047
|
clothes_washer.label_gas_rate = default_values[:label_gas_rate]
|
1048
|
+
clothes_washer.label_gas_rate_isdefaulted = true
|
816
1049
|
clothes_washer.label_annual_gas_cost = default_values[:label_annual_gas_cost]
|
1050
|
+
clothes_washer.label_annual_gas_cost_isdefaulted = true
|
817
1051
|
clothes_washer.capacity = default_values[:capacity]
|
1052
|
+
clothes_washer.capacity_isdefaulted = true
|
818
1053
|
clothes_washer.label_usage = default_values[:label_usage]
|
1054
|
+
clothes_washer.label_usage_isdefaulted = true
|
819
1055
|
end
|
820
1056
|
if clothes_washer.usage_multiplier.nil?
|
821
1057
|
clothes_washer.usage_multiplier = 1.0
|
1058
|
+
clothes_washer.usage_multiplier_isdefaulted = true
|
822
1059
|
end
|
823
1060
|
end
|
824
1061
|
|
@@ -827,23 +1064,33 @@ class HPXMLDefaults
|
|
827
1064
|
clothes_dryer = hpxml.clothes_dryers[0]
|
828
1065
|
if clothes_dryer.is_shared_appliance.nil?
|
829
1066
|
clothes_dryer.is_shared_appliance = false
|
1067
|
+
clothes_dryer.is_shared_appliance_isdefaulted = true
|
830
1068
|
end
|
831
1069
|
if clothes_dryer.location.nil?
|
832
1070
|
clothes_dryer.location = HPXML::LocationLivingSpace
|
1071
|
+
clothes_dryer.location_isdefaulted = true
|
1072
|
+
end
|
1073
|
+
if clothes_dryer.combined_energy_factor.nil? && clothes_dryer.energy_factor.nil?
|
1074
|
+
default_values = HotWaterAndAppliances.get_clothes_dryer_default_values(eri_version, clothes_dryer.fuel_type)
|
1075
|
+
clothes_dryer.combined_energy_factor = default_values[:combined_energy_factor]
|
1076
|
+
clothes_dryer.combined_energy_factor_isdefaulted = true
|
833
1077
|
end
|
834
1078
|
if clothes_dryer.control_type.nil?
|
835
1079
|
default_values = HotWaterAndAppliances.get_clothes_dryer_default_values(eri_version, clothes_dryer.fuel_type)
|
836
1080
|
clothes_dryer.control_type = default_values[:control_type]
|
837
|
-
clothes_dryer.
|
1081
|
+
clothes_dryer.control_type_isdefaulted = true
|
838
1082
|
end
|
839
1083
|
if clothes_dryer.usage_multiplier.nil?
|
840
1084
|
clothes_dryer.usage_multiplier = 1.0
|
1085
|
+
clothes_dryer.usage_multiplier_isdefaulted = true
|
841
1086
|
end
|
842
1087
|
if clothes_dryer.is_vented.nil?
|
843
1088
|
clothes_dryer.is_vented = true
|
1089
|
+
clothes_dryer.is_vented_isdefaulted = true
|
844
1090
|
end
|
845
1091
|
if clothes_dryer.is_vented && clothes_dryer.vented_flow_rate.nil?
|
846
1092
|
clothes_dryer.vented_flow_rate = 100.0
|
1093
|
+
clothes_dryer.vented_flow_rate_isdefaulted = true
|
847
1094
|
end
|
848
1095
|
end
|
849
1096
|
|
@@ -852,66 +1099,87 @@ class HPXMLDefaults
|
|
852
1099
|
dishwasher = hpxml.dishwashers[0]
|
853
1100
|
if dishwasher.is_shared_appliance.nil?
|
854
1101
|
dishwasher.is_shared_appliance = false
|
1102
|
+
dishwasher.is_shared_appliance_isdefaulted = true
|
855
1103
|
end
|
856
1104
|
if dishwasher.location.nil?
|
857
1105
|
dishwasher.location = HPXML::LocationLivingSpace
|
1106
|
+
dishwasher.location_isdefaulted = true
|
858
1107
|
end
|
859
1108
|
if dishwasher.place_setting_capacity.nil?
|
860
|
-
default_values = HotWaterAndAppliances.get_dishwasher_default_values()
|
1109
|
+
default_values = HotWaterAndAppliances.get_dishwasher_default_values(eri_version)
|
861
1110
|
dishwasher.rated_annual_kwh = default_values[:rated_annual_kwh]
|
1111
|
+
dishwasher.rated_annual_kwh_isdefaulted = true
|
862
1112
|
dishwasher.label_electric_rate = default_values[:label_electric_rate]
|
1113
|
+
dishwasher.label_electric_rate_isdefaulted = true
|
863
1114
|
dishwasher.label_gas_rate = default_values[:label_gas_rate]
|
1115
|
+
dishwasher.label_gas_rate_isdefaulted = true
|
864
1116
|
dishwasher.label_annual_gas_cost = default_values[:label_annual_gas_cost]
|
1117
|
+
dishwasher.label_annual_gas_cost_isdefaulted = true
|
865
1118
|
dishwasher.label_usage = default_values[:label_usage]
|
1119
|
+
dishwasher.label_usage_isdefaulted = true
|
866
1120
|
dishwasher.place_setting_capacity = default_values[:place_setting_capacity]
|
1121
|
+
dishwasher.place_setting_capacity_isdefaulted = true
|
867
1122
|
end
|
868
1123
|
if dishwasher.usage_multiplier.nil?
|
869
1124
|
dishwasher.usage_multiplier = 1.0
|
1125
|
+
dishwasher.usage_multiplier_isdefaulted = true
|
870
1126
|
end
|
871
1127
|
end
|
872
1128
|
|
873
1129
|
# Default refrigerators
|
874
1130
|
if hpxml.refrigerators.size == 1
|
875
1131
|
hpxml.refrigerators[0].primary_indicator = true
|
1132
|
+
hpxml.refrigerators[0].primary_indicator_isdefaulted = true
|
876
1133
|
end
|
877
1134
|
hpxml.refrigerators.each do |refrigerator|
|
878
1135
|
if not refrigerator.primary_indicator # extra refrigerator
|
879
1136
|
if refrigerator.location.nil?
|
880
1137
|
refrigerator.location = HotWaterAndAppliances.get_default_extra_refrigerator_and_freezer_locations(hpxml)
|
1138
|
+
refrigerator.location_isdefaulted = true
|
881
1139
|
end
|
882
1140
|
if refrigerator.adjusted_annual_kwh.nil? && refrigerator.rated_annual_kwh.nil?
|
883
1141
|
default_values = HotWaterAndAppliances.get_extra_refrigerator_default_values
|
884
1142
|
refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh]
|
1143
|
+
refrigerator.rated_annual_kwh_isdefaulted = true
|
885
1144
|
end
|
886
1145
|
if refrigerator.weekday_fractions.nil?
|
887
1146
|
refrigerator.weekday_fractions = Schedule.ExtraRefrigeratorWeekdayFractions
|
1147
|
+
refrigerator.weekday_fractions_isdefaulted = true
|
888
1148
|
end
|
889
1149
|
if refrigerator.weekend_fractions.nil?
|
890
1150
|
refrigerator.weekend_fractions = Schedule.ExtraRefrigeratorWeekendFractions
|
1151
|
+
refrigerator.weekend_fractions_isdefaulted = true
|
891
1152
|
end
|
892
1153
|
if refrigerator.monthly_multipliers.nil?
|
893
1154
|
refrigerator.monthly_multipliers = Schedule.ExtraRefrigeratorMonthlyMultipliers
|
1155
|
+
refrigerator.monthly_multipliers_isdefaulted = true
|
894
1156
|
end
|
895
1157
|
else # primary refrigerator
|
896
1158
|
if refrigerator.location.nil?
|
897
1159
|
refrigerator.location = HPXML::LocationLivingSpace
|
1160
|
+
refrigerator.location_isdefaulted = true
|
898
1161
|
end
|
899
1162
|
if refrigerator.adjusted_annual_kwh.nil? && refrigerator.rated_annual_kwh.nil?
|
900
1163
|
default_values = HotWaterAndAppliances.get_refrigerator_default_values(nbeds)
|
901
1164
|
refrigerator.rated_annual_kwh = default_values[:rated_annual_kwh]
|
1165
|
+
refrigerator.rated_annual_kwh_isdefaulted = true
|
902
1166
|
end
|
903
1167
|
if refrigerator.weekday_fractions.nil?
|
904
1168
|
refrigerator.weekday_fractions = Schedule.RefrigeratorWeekdayFractions
|
1169
|
+
refrigerator.weekday_fractions_isdefaulted = true
|
905
1170
|
end
|
906
1171
|
if refrigerator.weekend_fractions.nil?
|
907
1172
|
refrigerator.weekend_fractions = Schedule.RefrigeratorWeekendFractions
|
1173
|
+
refrigerator.weekend_fractions_isdefaulted = true
|
908
1174
|
end
|
909
1175
|
if refrigerator.monthly_multipliers.nil?
|
910
1176
|
refrigerator.monthly_multipliers = Schedule.RefrigeratorMonthlyMultipliers
|
1177
|
+
refrigerator.monthly_multipliers_isdefaulted = true
|
911
1178
|
end
|
912
1179
|
end
|
913
1180
|
if refrigerator.usage_multiplier.nil?
|
914
1181
|
refrigerator.usage_multiplier = 1.0
|
1182
|
+
refrigerator.usage_multiplier_isdefaulted = true
|
915
1183
|
end
|
916
1184
|
end
|
917
1185
|
|
@@ -919,22 +1187,28 @@ class HPXMLDefaults
|
|
919
1187
|
hpxml.freezers.each do |freezer|
|
920
1188
|
if freezer.location.nil?
|
921
1189
|
freezer.location = HotWaterAndAppliances.get_default_extra_refrigerator_and_freezer_locations(hpxml)
|
1190
|
+
freezer.location_isdefaulted = true
|
922
1191
|
end
|
923
1192
|
if freezer.adjusted_annual_kwh.nil? && freezer.rated_annual_kwh.nil?
|
924
1193
|
default_values = HotWaterAndAppliances.get_freezer_default_values
|
925
1194
|
freezer.rated_annual_kwh = default_values[:rated_annual_kwh]
|
1195
|
+
freezer.rated_annual_kwh_isdefaulted = true
|
926
1196
|
end
|
927
1197
|
if freezer.usage_multiplier.nil?
|
928
1198
|
freezer.usage_multiplier = 1.0
|
1199
|
+
freezer.usage_multiplier_isdefaulted = true
|
929
1200
|
end
|
930
1201
|
if freezer.weekday_fractions.nil?
|
931
1202
|
freezer.weekday_fractions = Schedule.FreezerWeekdayFractions
|
1203
|
+
freezer.weekday_fractions_isdefaulted = true
|
932
1204
|
end
|
933
1205
|
if freezer.weekend_fractions.nil?
|
934
1206
|
freezer.weekend_fractions = Schedule.FreezerWeekendFractions
|
1207
|
+
freezer.weekend_fractions_isdefaulted = true
|
935
1208
|
end
|
936
1209
|
if freezer.monthly_multipliers.nil?
|
937
1210
|
freezer.monthly_multipliers = Schedule.FreezerMonthlyMultipliers
|
1211
|
+
freezer.monthly_multipliers_isdefaulted = true
|
938
1212
|
end
|
939
1213
|
end
|
940
1214
|
|
@@ -943,22 +1217,28 @@ class HPXMLDefaults
|
|
943
1217
|
cooking_range = hpxml.cooking_ranges[0]
|
944
1218
|
if cooking_range.location.nil?
|
945
1219
|
cooking_range.location = HPXML::LocationLivingSpace
|
1220
|
+
cooking_range.location_isdefaulted = true
|
946
1221
|
end
|
947
1222
|
if cooking_range.is_induction.nil?
|
948
1223
|
default_values = HotWaterAndAppliances.get_range_oven_default_values()
|
949
1224
|
cooking_range.is_induction = default_values[:is_induction]
|
1225
|
+
cooking_range.is_induction_isdefaulted = true
|
950
1226
|
end
|
951
1227
|
if cooking_range.usage_multiplier.nil?
|
952
1228
|
cooking_range.usage_multiplier = 1.0
|
1229
|
+
cooking_range.usage_multiplier_isdefaulted = true
|
953
1230
|
end
|
954
1231
|
if cooking_range.weekday_fractions.nil?
|
955
1232
|
cooking_range.weekday_fractions = Schedule.CookingRangeWeekdayFractions
|
1233
|
+
cooking_range.weekday_fractions_isdefaulted = true
|
956
1234
|
end
|
957
1235
|
if cooking_range.weekend_fractions.nil?
|
958
1236
|
cooking_range.weekend_fractions = Schedule.CookingRangeWeekendFractions
|
1237
|
+
cooking_range.weekend_fractions_isdefaulted = true
|
959
1238
|
end
|
960
1239
|
if cooking_range.monthly_multipliers.nil?
|
961
1240
|
cooking_range.monthly_multipliers = Schedule.CookingRangeMonthlyMultipliers
|
1241
|
+
cooking_range.monthly_multipliers_isdefaulted = true
|
962
1242
|
end
|
963
1243
|
end
|
964
1244
|
|
@@ -968,42 +1248,55 @@ class HPXMLDefaults
|
|
968
1248
|
if oven.is_convection.nil?
|
969
1249
|
default_values = HotWaterAndAppliances.get_range_oven_default_values()
|
970
1250
|
oven.is_convection = default_values[:is_convection]
|
1251
|
+
oven.is_convection_isdefaulted = true
|
971
1252
|
end
|
972
1253
|
end
|
973
1254
|
end
|
974
1255
|
|
975
1256
|
def self.apply_lighting(hpxml)
|
1257
|
+
return if hpxml.lighting_groups.empty?
|
1258
|
+
|
976
1259
|
if hpxml.lighting.interior_usage_multiplier.nil?
|
977
1260
|
hpxml.lighting.interior_usage_multiplier = 1.0
|
1261
|
+
hpxml.lighting.interior_usage_multiplier_isdefaulted = true
|
978
1262
|
end
|
979
1263
|
if hpxml.lighting.garage_usage_multiplier.nil?
|
980
1264
|
hpxml.lighting.garage_usage_multiplier = 1.0
|
1265
|
+
hpxml.lighting.garage_usage_multiplier_isdefaulted = true
|
981
1266
|
end
|
982
1267
|
if hpxml.lighting.exterior_usage_multiplier.nil?
|
983
1268
|
hpxml.lighting.exterior_usage_multiplier = 1.0
|
1269
|
+
hpxml.lighting.exterior_usage_multiplier_isdefaulted = true
|
984
1270
|
end
|
1271
|
+
# Schedules from T24 2016 Residential ACM Appendix C Table 8 Exterior Lighting Hourly Multiplier (Weekdays and weekends)
|
985
1272
|
default_exterior_lighting_weekday_fractions = Schedule.LightingExteriorWeekdayFractions
|
986
1273
|
default_exterior_lighting_weekend_fractions = Schedule.LightingExteriorWeekendFractions
|
987
1274
|
default_exterior_lighting_monthly_multipliers = Schedule.LightingExteriorMonthlyMultipliers
|
988
1275
|
if hpxml.has_space_type(HPXML::LocationGarage)
|
989
1276
|
if hpxml.lighting.garage_weekday_fractions.nil?
|
990
1277
|
hpxml.lighting.garage_weekday_fractions = default_exterior_lighting_weekday_fractions
|
1278
|
+
hpxml.lighting.garage_weekday_fractions_isdefaulted = true
|
991
1279
|
end
|
992
1280
|
if hpxml.lighting.garage_weekend_fractions.nil?
|
993
1281
|
hpxml.lighting.garage_weekend_fractions = default_exterior_lighting_weekend_fractions
|
1282
|
+
hpxml.lighting.garage_weekend_fractions_isdefaulted = true
|
994
1283
|
end
|
995
1284
|
if hpxml.lighting.garage_monthly_multipliers.nil?
|
996
1285
|
hpxml.lighting.garage_monthly_multipliers = default_exterior_lighting_monthly_multipliers
|
1286
|
+
hpxml.lighting.garage_monthly_multipliers_isdefaulted = true
|
997
1287
|
end
|
998
1288
|
end
|
999
1289
|
if hpxml.lighting.exterior_weekday_fractions.nil?
|
1000
1290
|
hpxml.lighting.exterior_weekday_fractions = default_exterior_lighting_weekday_fractions
|
1291
|
+
hpxml.lighting.exterior_weekday_fractions_isdefaulted = true
|
1001
1292
|
end
|
1002
1293
|
if hpxml.lighting.exterior_weekend_fractions.nil?
|
1003
1294
|
hpxml.lighting.exterior_weekend_fractions = default_exterior_lighting_weekend_fractions
|
1295
|
+
hpxml.lighting.exterior_weekend_fractions_isdefaulted = true
|
1004
1296
|
end
|
1005
1297
|
if hpxml.lighting.exterior_monthly_multipliers.nil?
|
1006
1298
|
hpxml.lighting.exterior_monthly_multipliers = default_exterior_lighting_monthly_multipliers
|
1299
|
+
hpxml.lighting.exterior_monthly_multipliers_isdefaulted = true
|
1007
1300
|
end
|
1008
1301
|
if hpxml.lighting.holiday_exists
|
1009
1302
|
if hpxml.lighting.holiday_kwh_per_day.nil?
|
@@ -1013,35 +1306,500 @@ class HPXMLDefaults
|
|
1013
1306
|
else # Multifamily and others
|
1014
1307
|
hpxml.lighting.holiday_kwh_per_day = 0.55
|
1015
1308
|
end
|
1309
|
+
hpxml.lighting.holiday_kwh_per_day_isdefaulted = true
|
1016
1310
|
end
|
1017
1311
|
if hpxml.lighting.holiday_period_begin_month.nil?
|
1018
1312
|
hpxml.lighting.holiday_period_begin_month = 11
|
1019
|
-
hpxml.lighting.
|
1313
|
+
hpxml.lighting.holiday_period_begin_month_isdefaulted = true
|
1314
|
+
hpxml.lighting.holiday_period_begin_day = 24
|
1315
|
+
hpxml.lighting.holiday_period_begin_day_isdefaulted = true
|
1020
1316
|
end
|
1021
|
-
if hpxml.lighting.
|
1317
|
+
if hpxml.lighting.holiday_period_end_day.nil?
|
1022
1318
|
hpxml.lighting.holiday_period_end_month = 1
|
1023
|
-
hpxml.lighting.
|
1319
|
+
hpxml.lighting.holiday_period_end_month_isdefaulted = true
|
1320
|
+
hpxml.lighting.holiday_period_end_day = 6
|
1321
|
+
hpxml.lighting.holiday_period_end_day_isdefaulted = true
|
1024
1322
|
end
|
1025
1323
|
if hpxml.lighting.holiday_weekday_fractions.nil?
|
1026
1324
|
hpxml.lighting.holiday_weekday_fractions = Schedule.LightingExteriorHolidayWeekdayFractions
|
1325
|
+
hpxml.lighting.holiday_weekday_fractions_isdefaulted = true
|
1027
1326
|
end
|
1028
1327
|
if hpxml.lighting.holiday_weekend_fractions.nil?
|
1029
1328
|
hpxml.lighting.holiday_weekend_fractions = Schedule.LightingExteriorHolidayWeekendFractions
|
1329
|
+
hpxml.lighting.holiday_weekend_fractions_isdefaulted = true
|
1030
1330
|
end
|
1031
1331
|
end
|
1032
1332
|
end
|
1033
1333
|
|
1034
|
-
def self.
|
1035
|
-
hpxml.
|
1036
|
-
|
1037
|
-
|
1334
|
+
def self.apply_ceiling_fans(hpxml, nbeds)
|
1335
|
+
return if hpxml.ceiling_fans.size == 0
|
1336
|
+
|
1337
|
+
ceiling_fan = hpxml.ceiling_fans[0]
|
1338
|
+
if ceiling_fan.efficiency.nil?
|
1339
|
+
medium_cfm = 3000.0
|
1340
|
+
ceiling_fan.efficiency = medium_cfm / HVAC.get_default_ceiling_fan_power()
|
1341
|
+
ceiling_fan.efficiency_isdefaulted = true
|
1342
|
+
end
|
1343
|
+
if ceiling_fan.quantity.nil?
|
1344
|
+
ceiling_fan.quantity = HVAC.get_default_ceiling_fan_quantity(nbeds)
|
1345
|
+
ceiling_fan.quantity_isdefaulted = true
|
1346
|
+
end
|
1347
|
+
end
|
1348
|
+
|
1349
|
+
def self.apply_pools_and_hot_tubs(hpxml, cfa, nbeds)
|
1350
|
+
hpxml.pools.each do |pool|
|
1351
|
+
next if pool.type == HPXML::TypeNone
|
1352
|
+
|
1353
|
+
if pool.pump_type != HPXML::TypeNone
|
1354
|
+
# Pump
|
1355
|
+
if pool.pump_kwh_per_year.nil?
|
1356
|
+
pool.pump_kwh_per_year = MiscLoads.get_pool_pump_default_values(cfa, nbeds)
|
1357
|
+
pool.pump_kwh_per_year_isdefaulted = true
|
1358
|
+
end
|
1359
|
+
if pool.pump_usage_multiplier.nil?
|
1360
|
+
pool.pump_usage_multiplier = 1.0
|
1361
|
+
pool.pump_usage_multiplier_isdefaulted = true
|
1362
|
+
end
|
1363
|
+
if pool.pump_weekday_fractions.nil?
|
1364
|
+
pool.pump_weekday_fractions = '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'
|
1365
|
+
pool.pump_weekday_fractions_isdefaulted = true
|
1366
|
+
end
|
1367
|
+
if pool.pump_weekend_fractions.nil?
|
1368
|
+
pool.pump_weekend_fractions = '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'
|
1369
|
+
pool.pump_weekend_fractions_isdefaulted = true
|
1370
|
+
end
|
1371
|
+
if pool.pump_monthly_multipliers.nil?
|
1372
|
+
pool.pump_monthly_multipliers = '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
1373
|
+
pool.pump_monthly_multipliers_isdefaulted = true
|
1374
|
+
end
|
1038
1375
|
end
|
1039
|
-
|
1040
|
-
|
1376
|
+
|
1377
|
+
next unless pool.heater_type != HPXML::TypeNone
|
1378
|
+
|
1379
|
+
# Heater
|
1380
|
+
if pool.heater_load_value.nil?
|
1381
|
+
default_heater_load_units, default_heater_load_value = MiscLoads.get_pool_heater_default_values(cfa, nbeds, pool.heater_type)
|
1382
|
+
pool.heater_load_units = default_heater_load_units
|
1383
|
+
pool.heater_load_value = default_heater_load_value
|
1384
|
+
pool.heater_load_value_isdefaulted = true
|
1041
1385
|
end
|
1042
|
-
if
|
1043
|
-
|
1386
|
+
if pool.heater_usage_multiplier.nil?
|
1387
|
+
pool.heater_usage_multiplier = 1.0
|
1388
|
+
pool.heater_usage_multiplier_isdefaulted = true
|
1389
|
+
end
|
1390
|
+
if pool.heater_weekday_fractions.nil?
|
1391
|
+
pool.heater_weekday_fractions = '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'
|
1392
|
+
pool.heater_weekday_fractions_isdefaulted = true
|
1393
|
+
end
|
1394
|
+
if pool.heater_weekend_fractions.nil?
|
1395
|
+
pool.heater_weekend_fractions = '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'
|
1396
|
+
pool.heater_weekend_fractions_isdefaulted = true
|
1397
|
+
end
|
1398
|
+
if pool.heater_monthly_multipliers.nil?
|
1399
|
+
pool.heater_monthly_multipliers = '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154'
|
1400
|
+
pool.heater_monthly_multipliers_isdefaulted = true
|
1401
|
+
end
|
1402
|
+
end
|
1403
|
+
|
1404
|
+
hpxml.hot_tubs.each do |hot_tub|
|
1405
|
+
next if hot_tub.type == HPXML::TypeNone
|
1406
|
+
|
1407
|
+
if hot_tub.pump_type != HPXML::TypeNone
|
1408
|
+
# Pump
|
1409
|
+
if hot_tub.pump_kwh_per_year.nil?
|
1410
|
+
hot_tub.pump_kwh_per_year = MiscLoads.get_hot_tub_pump_default_values(cfa, nbeds)
|
1411
|
+
hot_tub.pump_kwh_per_year_isdefaulted = true
|
1412
|
+
end
|
1413
|
+
if hot_tub.pump_usage_multiplier.nil?
|
1414
|
+
hot_tub.pump_usage_multiplier = 1.0
|
1415
|
+
hot_tub.pump_usage_multiplier_isdefaulted = true
|
1416
|
+
end
|
1417
|
+
if hot_tub.pump_weekday_fractions.nil?
|
1418
|
+
hot_tub.pump_weekday_fractions = '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'
|
1419
|
+
hot_tub.pump_weekday_fractions_isdefaulted = true
|
1420
|
+
end
|
1421
|
+
if hot_tub.pump_weekend_fractions.nil?
|
1422
|
+
hot_tub.pump_weekend_fractions = '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'
|
1423
|
+
hot_tub.pump_weekend_fractions_isdefaulted = true
|
1424
|
+
end
|
1425
|
+
if hot_tub.pump_monthly_multipliers.nil?
|
1426
|
+
hot_tub.pump_monthly_multipliers = '0.921, 0.928, 0.921, 0.915, 0.921, 1.160, 1.158, 1.158, 1.160, 0.921, 0.915, 0.921'
|
1427
|
+
hot_tub.pump_monthly_multipliers_isdefaulted = true
|
1428
|
+
end
|
1429
|
+
end
|
1430
|
+
|
1431
|
+
next unless hot_tub.heater_type != HPXML::TypeNone
|
1432
|
+
|
1433
|
+
# Heater
|
1434
|
+
if hot_tub.heater_load_value.nil?
|
1435
|
+
default_heater_load_units, default_heater_load_value = MiscLoads.get_hot_tub_heater_default_values(cfa, nbeds, hot_tub.heater_type)
|
1436
|
+
hot_tub.heater_load_units = default_heater_load_units
|
1437
|
+
hot_tub.heater_load_value = default_heater_load_value
|
1438
|
+
hot_tub.heater_load_value_isdefaulted = true
|
1439
|
+
end
|
1440
|
+
if hot_tub.heater_usage_multiplier.nil?
|
1441
|
+
hot_tub.heater_usage_multiplier = 1.0
|
1442
|
+
hot_tub.heater_usage_multiplier_isdefaulted = true
|
1443
|
+
end
|
1444
|
+
if hot_tub.heater_weekday_fractions.nil?
|
1445
|
+
hot_tub.heater_weekday_fractions = '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'
|
1446
|
+
hot_tub.heater_weekday_fractions_isdefaulted = true
|
1447
|
+
end
|
1448
|
+
if hot_tub.heater_weekend_fractions.nil?
|
1449
|
+
hot_tub.heater_weekend_fractions = '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'
|
1450
|
+
hot_tub.heater_weekend_fractions_isdefaulted = true
|
1451
|
+
end
|
1452
|
+
if hot_tub.heater_monthly_multipliers.nil?
|
1453
|
+
hot_tub.heater_monthly_multipliers = '0.837, 0.835, 1.084, 1.084, 1.084, 1.096, 1.096, 1.096, 1.096, 0.931, 0.925, 0.837'
|
1454
|
+
hot_tub.heater_monthly_multipliers_isdefaulted = true
|
1455
|
+
end
|
1456
|
+
end
|
1457
|
+
end
|
1458
|
+
|
1459
|
+
def self.apply_plug_loads(hpxml, cfa, nbeds)
|
1460
|
+
hpxml.plug_loads.each do |plug_load|
|
1461
|
+
if plug_load.plug_load_type == HPXML::PlugLoadTypeOther
|
1462
|
+
default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_residual_mels_default_values(cfa)
|
1463
|
+
if plug_load.kWh_per_year.nil?
|
1464
|
+
plug_load.kWh_per_year = default_annual_kwh
|
1465
|
+
plug_load.kWh_per_year_isdefaulted = true
|
1466
|
+
end
|
1467
|
+
if plug_load.frac_sensible.nil?
|
1468
|
+
plug_load.frac_sensible = default_sens_frac
|
1469
|
+
plug_load.frac_sensible_isdefaulted = true
|
1470
|
+
end
|
1471
|
+
if plug_load.frac_latent.nil?
|
1472
|
+
plug_load.frac_latent = default_lat_frac
|
1473
|
+
plug_load.frac_latent_isdefaulted = true
|
1474
|
+
end
|
1475
|
+
if plug_load.weekday_fractions.nil?
|
1476
|
+
plug_load.weekday_fractions = Schedule.PlugLoadsOtherWeekdayFractions
|
1477
|
+
plug_load.weekday_fractions_isdefaulted = true
|
1478
|
+
end
|
1479
|
+
if plug_load.weekend_fractions.nil?
|
1480
|
+
plug_load.weekend_fractions = Schedule.PlugLoadsOtherWeekendFractions
|
1481
|
+
plug_load.weekend_fractions_isdefaulted = true
|
1482
|
+
end
|
1483
|
+
if plug_load.monthly_multipliers.nil?
|
1484
|
+
plug_load.monthly_multipliers = Schedule.PlugLoadsOtherMonthlyMultipliers
|
1485
|
+
plug_load.monthly_multipliers_isdefaulted = true
|
1486
|
+
end
|
1487
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeTelevision
|
1488
|
+
default_annual_kwh, default_sens_frac, default_lat_frac = MiscLoads.get_televisions_default_values(cfa, nbeds)
|
1489
|
+
if plug_load.kWh_per_year.nil?
|
1490
|
+
plug_load.kWh_per_year = default_annual_kwh
|
1491
|
+
plug_load.kWh_per_year_isdefaulted = true
|
1492
|
+
end
|
1493
|
+
if plug_load.frac_sensible.nil?
|
1494
|
+
plug_load.frac_sensible = default_sens_frac
|
1495
|
+
plug_load.frac_sensible_isdefaulted = true
|
1496
|
+
end
|
1497
|
+
if plug_load.frac_latent.nil?
|
1498
|
+
plug_load.frac_latent = default_lat_frac
|
1499
|
+
plug_load.frac_latent_isdefaulted = true
|
1500
|
+
end
|
1501
|
+
if plug_load.weekday_fractions.nil?
|
1502
|
+
plug_load.weekday_fractions = Schedule.PlugLoadsTVWeekdayFractions
|
1503
|
+
plug_load.weekday_fractions_isdefaulted = true
|
1504
|
+
end
|
1505
|
+
if plug_load.weekend_fractions.nil?
|
1506
|
+
plug_load.weekend_fractions = Schedule.PlugLoadsTVWeekendFractions
|
1507
|
+
plug_load.weekend_fractions_isdefaulted = true
|
1508
|
+
end
|
1509
|
+
if plug_load.monthly_multipliers.nil?
|
1510
|
+
plug_load.monthly_multipliers = Schedule.PlugLoadsTVMonthlyMultipliers
|
1511
|
+
plug_load.monthly_multipliers_isdefaulted = true
|
1512
|
+
end
|
1513
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeElectricVehicleCharging
|
1514
|
+
default_annual_kwh = MiscLoads.get_electric_vehicle_charging_default_values
|
1515
|
+
if plug_load.kWh_per_year.nil?
|
1516
|
+
plug_load.kWh_per_year = default_annual_kwh
|
1517
|
+
plug_load.kWh_per_year_isdefaulted = true
|
1518
|
+
end
|
1519
|
+
if plug_load.frac_sensible.nil?
|
1520
|
+
plug_load.frac_sensible = 0.0
|
1521
|
+
plug_load.frac_sensible_isdefaulted = true
|
1522
|
+
end
|
1523
|
+
if plug_load.frac_latent.nil?
|
1524
|
+
plug_load.frac_latent = 0.0
|
1525
|
+
plug_load.frac_latent_isdefaulted = true
|
1526
|
+
end
|
1527
|
+
if plug_load.weekday_fractions.nil?
|
1528
|
+
plug_load.weekday_fractions = Schedule.PlugLoadsVehicleWeekdayFractions
|
1529
|
+
plug_load.weekday_fractions_isdefaulted = true
|
1530
|
+
end
|
1531
|
+
if plug_load.weekend_fractions.nil?
|
1532
|
+
plug_load.weekend_fractions = Schedule.PlugLoadsVehicleWeekendFractions
|
1533
|
+
plug_load.weekend_fractions_isdefaulted = true
|
1534
|
+
end
|
1535
|
+
if plug_load.monthly_multipliers.nil?
|
1536
|
+
plug_load.monthly_multipliers = Schedule.PlugLoadsVehicleMonthlyMultipliers
|
1537
|
+
plug_load.monthly_multipliers_isdefaulted = true
|
1538
|
+
end
|
1539
|
+
elsif plug_load.plug_load_type == HPXML::PlugLoadTypeWellPump
|
1540
|
+
default_annual_kwh = MiscLoads.get_well_pump_default_values(cfa, nbeds)
|
1541
|
+
if plug_load.kWh_per_year.nil?
|
1542
|
+
plug_load.kWh_per_year = default_annual_kwh
|
1543
|
+
plug_load.kWh_per_year_isdefaulted = true
|
1544
|
+
end
|
1545
|
+
if plug_load.frac_sensible.nil?
|
1546
|
+
plug_load.frac_sensible = 0.0
|
1547
|
+
plug_load.frac_sensible_isdefaulted = true
|
1548
|
+
end
|
1549
|
+
if plug_load.frac_latent.nil?
|
1550
|
+
plug_load.frac_latent = 0.0
|
1551
|
+
plug_load.frac_latent_isdefaulted = true
|
1552
|
+
end
|
1553
|
+
if plug_load.weekday_fractions.nil?
|
1554
|
+
plug_load.weekday_fractions = Schedule.PlugLoadsWellPumpWeekdayFractions
|
1555
|
+
plug_load.weekday_fractions_isdefaulted = true
|
1556
|
+
end
|
1557
|
+
if plug_load.weekend_fractions.nil?
|
1558
|
+
plug_load.weekend_fractions = Schedule.PlugLoadsWellPumpWeekendFractions
|
1559
|
+
plug_load.weekend_fractions_isdefaulted = true
|
1560
|
+
end
|
1561
|
+
if plug_load.monthly_multipliers.nil?
|
1562
|
+
plug_load.monthly_multipliers = Schedule.PlugLoadsWellPumpMonthlyMultipliers
|
1563
|
+
plug_load.monthly_multipliers_isdefaulted = true
|
1564
|
+
end
|
1565
|
+
end
|
1566
|
+
if plug_load.usage_multiplier.nil?
|
1567
|
+
plug_load.usage_multiplier = 1.0
|
1568
|
+
plug_load.usage_multiplier_isdefaulted = true
|
1569
|
+
end
|
1570
|
+
end
|
1571
|
+
end
|
1572
|
+
|
1573
|
+
def self.apply_fuel_loads(hpxml, cfa, nbeds)
|
1574
|
+
hpxml.fuel_loads.each do |fuel_load|
|
1575
|
+
if fuel_load.fuel_load_type == HPXML::FuelLoadTypeGrill
|
1576
|
+
if fuel_load.therm_per_year.nil?
|
1577
|
+
fuel_load.therm_per_year = MiscLoads.get_gas_grill_default_values(cfa, nbeds)
|
1578
|
+
fuel_load.therm_per_year_isdefaulted = true
|
1579
|
+
end
|
1580
|
+
if fuel_load.frac_sensible.nil?
|
1581
|
+
fuel_load.frac_sensible = 0.0
|
1582
|
+
fuel_load.frac_sensible_isdefaulted = true
|
1583
|
+
end
|
1584
|
+
if fuel_load.frac_latent.nil?
|
1585
|
+
fuel_load.frac_latent = 0.0
|
1586
|
+
fuel_load.frac_latent_isdefaulted = true
|
1587
|
+
end
|
1588
|
+
if fuel_load.weekday_fractions.nil?
|
1589
|
+
fuel_load.weekday_fractions = Schedule.FuelLoadsGrillWeekdayFractions
|
1590
|
+
fuel_load.weekday_fractions_isdefaulted = true
|
1591
|
+
end
|
1592
|
+
if fuel_load.weekend_fractions.nil?
|
1593
|
+
fuel_load.weekend_fractions = Schedule.FuelLoadsGrillWeekendFractions
|
1594
|
+
fuel_load.weekend_fractions_isdefaulted = true
|
1595
|
+
end
|
1596
|
+
if fuel_load.monthly_multipliers.nil?
|
1597
|
+
fuel_load.monthly_multipliers = Schedule.FuelLoadsGrillMonthlyMultipliers
|
1598
|
+
fuel_load.monthly_multipliers_isdefaulted = true
|
1599
|
+
end
|
1600
|
+
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeLighting
|
1601
|
+
if fuel_load.therm_per_year.nil?
|
1602
|
+
fuel_load.therm_per_year = MiscLoads.get_gas_lighting_default_values(cfa, nbeds)
|
1603
|
+
fuel_load.therm_per_year_isdefaulted = true
|
1604
|
+
end
|
1605
|
+
if fuel_load.frac_sensible.nil?
|
1606
|
+
fuel_load.frac_sensible = 0.0
|
1607
|
+
fuel_load.frac_sensible_isdefaulted = true
|
1608
|
+
end
|
1609
|
+
if fuel_load.frac_latent.nil?
|
1610
|
+
fuel_load.frac_latent = 0.0
|
1611
|
+
fuel_load.frac_latent_isdefaulted = true
|
1612
|
+
end
|
1613
|
+
if fuel_load.weekday_fractions.nil?
|
1614
|
+
fuel_load.weekday_fractions = Schedule.FuelLoadsLightingWeekdayFractions
|
1615
|
+
fuel_load.weekday_fractions_isdefaulted = true
|
1616
|
+
end
|
1617
|
+
if fuel_load.weekend_fractions.nil?
|
1618
|
+
fuel_load.weekend_fractions = Schedule.FuelLoadsLightingWeekendFractions
|
1619
|
+
fuel_load.weekend_fractions_isdefaulted = true
|
1620
|
+
end
|
1621
|
+
if fuel_load.monthly_multipliers.nil?
|
1622
|
+
fuel_load.monthly_multipliers = Schedule.FuelLoadsLightingMonthlyMultipliers
|
1623
|
+
fuel_load.monthly_multipliers_isdefaulted = true
|
1624
|
+
end
|
1625
|
+
elsif fuel_load.fuel_load_type == HPXML::FuelLoadTypeFireplace
|
1626
|
+
if fuel_load.therm_per_year.nil?
|
1627
|
+
fuel_load.therm_per_year = MiscLoads.get_gas_fireplace_default_values(cfa, nbeds)
|
1628
|
+
fuel_load.therm_per_year_isdefaulted = true
|
1629
|
+
end
|
1630
|
+
if fuel_load.frac_sensible.nil?
|
1631
|
+
fuel_load.frac_sensible = 0.5
|
1632
|
+
fuel_load.frac_sensible_isdefaulted = true
|
1633
|
+
end
|
1634
|
+
if fuel_load.frac_latent.nil?
|
1635
|
+
fuel_load.frac_latent = 0.1
|
1636
|
+
fuel_load.frac_latent_isdefaulted = true
|
1637
|
+
end
|
1638
|
+
if fuel_load.weekday_fractions.nil?
|
1639
|
+
fuel_load.weekday_fractions = Schedule.FuelLoadsFireplaceWeekdayFractions
|
1640
|
+
fuel_load.weekday_fractions_isdefaulted = true
|
1641
|
+
end
|
1642
|
+
if fuel_load.weekend_fractions.nil?
|
1643
|
+
fuel_load.weekend_fractions = Schedule.FuelLoadsFireplaceWeekendFractions
|
1644
|
+
fuel_load.weekend_fractions_isdefaulted = true
|
1645
|
+
end
|
1646
|
+
if fuel_load.monthly_multipliers.nil?
|
1647
|
+
fuel_load.monthly_multipliers = Schedule.FuelLoadsFireplaceMonthlyMultipliers
|
1648
|
+
fuel_load.monthly_multipliers_isdefaulted = true
|
1649
|
+
end
|
1044
1650
|
end
|
1651
|
+
if fuel_load.usage_multiplier.nil?
|
1652
|
+
fuel_load.usage_multiplier = 1.0
|
1653
|
+
fuel_load.usage_multiplier_isdefaulted = true
|
1654
|
+
end
|
1655
|
+
end
|
1656
|
+
end
|
1657
|
+
|
1658
|
+
def self.apply_hvac_sizing(hpxml, weather, cfa, nbeds)
|
1659
|
+
# Convert negative values (e.g., -1) to nil as appropriate
|
1660
|
+
hpxml.hvac_systems.each do |hvac_system|
|
1661
|
+
if hvac_system.respond_to?(:heating_capacity) && hvac_system.heating_capacity.to_f < 0
|
1662
|
+
hvac_system.heating_capacity = nil
|
1663
|
+
end
|
1664
|
+
if hvac_system.respond_to?(:cooling_capacity) && hvac_system.cooling_capacity.to_f < 0
|
1665
|
+
hvac_system.cooling_capacity = nil
|
1666
|
+
end
|
1667
|
+
if hvac_system.respond_to?(:heating_capacity_17F) && hvac_system.heating_capacity_17F.to_f < 0
|
1668
|
+
hvac_system.heating_capacity_17F = nil
|
1669
|
+
end
|
1670
|
+
if hvac_system.respond_to?(:backup_heating_capacity) && hvac_system.backup_heating_capacity.to_f < 0
|
1671
|
+
hvac_system.backup_heating_capacity = nil
|
1672
|
+
end
|
1673
|
+
end
|
1674
|
+
|
1675
|
+
hvac_systems = HVAC.get_hpxml_hvac_systems(hpxml)
|
1676
|
+
|
1677
|
+
# Calculate building design loads and equipment capacities/airflows
|
1678
|
+
bldg_design_loads, all_hvac_sizing_values = HVACSizing.calculate(weather, hpxml, cfa, nbeds, hvac_systems)
|
1679
|
+
|
1680
|
+
hvacpl = hpxml.hvac_plant
|
1681
|
+
tol = 10 # Btuh
|
1682
|
+
|
1683
|
+
# Assign heating design loads back to HPXML object
|
1684
|
+
hvacpl.hdl_total = bldg_design_loads.Heat_Tot.round
|
1685
|
+
hvacpl.hdl_walls = bldg_design_loads.Heat_Walls.round
|
1686
|
+
hvacpl.hdl_ceilings = bldg_design_loads.Heat_Ceilings.round
|
1687
|
+
hvacpl.hdl_roofs = bldg_design_loads.Heat_Roofs.round
|
1688
|
+
hvacpl.hdl_floors = bldg_design_loads.Heat_Floors.round
|
1689
|
+
hvacpl.hdl_slabs = bldg_design_loads.Heat_Slabs.round
|
1690
|
+
hvacpl.hdl_windows = bldg_design_loads.Heat_Windows.round
|
1691
|
+
hvacpl.hdl_skylights = bldg_design_loads.Heat_Skylights.round
|
1692
|
+
hvacpl.hdl_doors = bldg_design_loads.Heat_Doors.round
|
1693
|
+
hvacpl.hdl_infilvent = bldg_design_loads.Heat_InfilVent.round
|
1694
|
+
hvacpl.hdl_ducts = bldg_design_loads.Heat_Ducts.round
|
1695
|
+
hdl_sum = (hvacpl.hdl_walls + hvacpl.hdl_ceilings + hvacpl.hdl_roofs +
|
1696
|
+
hvacpl.hdl_floors + hvacpl.hdl_slabs + hvacpl.hdl_windows +
|
1697
|
+
hvacpl.hdl_skylights + hvacpl.hdl_doors + hvacpl.hdl_infilvent +
|
1698
|
+
hvacpl.hdl_ducts)
|
1699
|
+
if (hdl_sum - hvacpl.hdl_total).abs > tol
|
1700
|
+
fail 'Heating design loads do not sum to total.'
|
1701
|
+
end
|
1702
|
+
|
1703
|
+
# Cooling sensible design loads back to HPXML object
|
1704
|
+
hvacpl.cdl_sens_total = bldg_design_loads.Cool_Sens.round
|
1705
|
+
hvacpl.cdl_sens_walls = bldg_design_loads.Cool_Walls.round
|
1706
|
+
hvacpl.cdl_sens_ceilings = bldg_design_loads.Cool_Ceilings.round
|
1707
|
+
hvacpl.cdl_sens_roofs = bldg_design_loads.Cool_Roofs.round
|
1708
|
+
hvacpl.cdl_sens_floors = bldg_design_loads.Cool_Floors.round
|
1709
|
+
hvacpl.cdl_sens_slabs = 0.0
|
1710
|
+
hvacpl.cdl_sens_windows = bldg_design_loads.Cool_Windows.round
|
1711
|
+
hvacpl.cdl_sens_skylights = bldg_design_loads.Cool_Skylights.round
|
1712
|
+
hvacpl.cdl_sens_doors = bldg_design_loads.Cool_Doors.round
|
1713
|
+
hvacpl.cdl_sens_infilvent = bldg_design_loads.Cool_Infil_Sens.round
|
1714
|
+
hvacpl.cdl_sens_ducts = bldg_design_loads.Cool_Ducts_Sens.round
|
1715
|
+
hvacpl.cdl_sens_intgains = bldg_design_loads.Cool_IntGains_Sens.round
|
1716
|
+
cdl_sens_sum = (hvacpl.cdl_sens_walls + hvacpl.cdl_sens_ceilings +
|
1717
|
+
hvacpl.cdl_sens_roofs + hvacpl.cdl_sens_floors +
|
1718
|
+
hvacpl.cdl_sens_slabs + hvacpl.cdl_sens_windows +
|
1719
|
+
hvacpl.cdl_sens_skylights + hvacpl.cdl_sens_doors +
|
1720
|
+
hvacpl.cdl_sens_infilvent + hvacpl.cdl_sens_ducts +
|
1721
|
+
hvacpl.cdl_sens_intgains)
|
1722
|
+
if (cdl_sens_sum - hvacpl.cdl_sens_total).abs > tol
|
1723
|
+
fail 'Cooling sensible design loads do not sum to total.'
|
1724
|
+
end
|
1725
|
+
|
1726
|
+
# Cooling latent design loads back to HPXML object
|
1727
|
+
hvacpl.cdl_lat_total = bldg_design_loads.Cool_Lat.round
|
1728
|
+
hvacpl.cdl_lat_ducts = bldg_design_loads.Cool_Ducts_Lat.round
|
1729
|
+
hvacpl.cdl_lat_infilvent = bldg_design_loads.Cool_Infil_Lat.round
|
1730
|
+
hvacpl.cdl_lat_intgains = bldg_design_loads.Cool_IntGains_Lat.round
|
1731
|
+
cdl_lat_sum = (hvacpl.cdl_lat_ducts + hvacpl.cdl_lat_infilvent +
|
1732
|
+
hvacpl.cdl_lat_intgains)
|
1733
|
+
if (cdl_lat_sum - hvacpl.cdl_lat_total).abs > tol
|
1734
|
+
fail 'Cooling latent design loads do not sum to total.'
|
1735
|
+
end
|
1736
|
+
|
1737
|
+
# Assign sizing values back to HPXML objects
|
1738
|
+
all_hvac_sizing_values.each do |hvac_system, hvac_sizing_values|
|
1739
|
+
htg_sys = hvac_system[:heating]
|
1740
|
+
clg_sys = hvac_system[:cooling]
|
1741
|
+
|
1742
|
+
# Heating system
|
1743
|
+
if not htg_sys.nil?
|
1744
|
+
|
1745
|
+
# Heating capacities
|
1746
|
+
if htg_sys.heating_capacity.nil? || ((htg_sys.heating_capacity - hvac_sizing_values.Heat_Capacity).abs >= 1.0)
|
1747
|
+
# Heating capacity @ 17F
|
1748
|
+
if htg_sys.respond_to? :heating_capacity_17F
|
1749
|
+
if (not htg_sys.heating_capacity.nil?) && (not htg_sys.heating_capacity_17F.nil?)
|
1750
|
+
# Fixed value entered; scale w/ heating_capacity in case allow_increased_fixed_capacities=true
|
1751
|
+
htg_cap_17f = htg_sys.heating_capacity_17F * hvac_sizing_values.Heat_Capacity.round / htg_sys.heating_capacity
|
1752
|
+
if (htg_sys.heating_capacity_17F - htg_cap_17f).abs >= 1.0
|
1753
|
+
htg_sys.heating_capacity_17F = htg_cap_17f.round
|
1754
|
+
htg_sys.heating_capacity_17F_isdefaulted = true
|
1755
|
+
end
|
1756
|
+
else
|
1757
|
+
# Autosized
|
1758
|
+
# FUTURE: Calculate HeatingCapacity17F from heat_cap_ft_spec? Might be confusing
|
1759
|
+
# since user would not be able to replicate the results using this value, as the
|
1760
|
+
# default curves are non-linear.
|
1761
|
+
end
|
1762
|
+
end
|
1763
|
+
htg_sys.heating_capacity = hvac_sizing_values.Heat_Capacity.round
|
1764
|
+
htg_sys.heating_capacity_isdefaulted = true
|
1765
|
+
end
|
1766
|
+
if htg_sys.respond_to? :backup_heating_capacity
|
1767
|
+
if not htg_sys.backup_heating_fuel.nil? # If there is a backup heating source
|
1768
|
+
if htg_sys.backup_heating_capacity.nil? || ((htg_sys.backup_heating_capacity - hvac_sizing_values.Heat_Capacity_Supp).abs >= 1.0)
|
1769
|
+
htg_sys.backup_heating_capacity = hvac_sizing_values.Heat_Capacity_Supp.round
|
1770
|
+
htg_sys.backup_heating_capacity_isdefaulted = true
|
1771
|
+
end
|
1772
|
+
else
|
1773
|
+
htg_sys.backup_heating_capacity = 0.0
|
1774
|
+
end
|
1775
|
+
end
|
1776
|
+
|
1777
|
+
# Heating airflow
|
1778
|
+
htg_sys.heating_airflow_cfm = hvac_sizing_values.Heat_Airflow.round
|
1779
|
+
htg_sys.heating_airflow_cfm_isdefaulted = true
|
1780
|
+
|
1781
|
+
# Heating GSHP loop
|
1782
|
+
if htg_sys.is_a? HPXML::HeatPump
|
1783
|
+
htg_sys.additional_properties.GSHP_Loop_flow = hvac_sizing_values.GSHP_Loop_flow
|
1784
|
+
htg_sys.additional_properties.GSHP_Bore_Depth = hvac_sizing_values.GSHP_Bore_Depth
|
1785
|
+
htg_sys.additional_properties.GSHP_Bore_Holes = hvac_sizing_values.GSHP_Bore_Holes
|
1786
|
+
htg_sys.additional_properties.GSHP_G_Functions = hvac_sizing_values.GSHP_G_Functions
|
1787
|
+
end
|
1788
|
+
end
|
1789
|
+
|
1790
|
+
# Cooling system
|
1791
|
+
next unless not clg_sys.nil?
|
1792
|
+
|
1793
|
+
# Cooling capacities
|
1794
|
+
if clg_sys.cooling_capacity.nil? || ((clg_sys.cooling_capacity - hvac_sizing_values.Cool_Capacity).abs >= 1.0)
|
1795
|
+
clg_sys.cooling_capacity = hvac_sizing_values.Cool_Capacity.round
|
1796
|
+
clg_sys.cooling_capacity_isdefaulted = true
|
1797
|
+
end
|
1798
|
+
clg_sys.additional_properties.cooling_capacity_sensible = hvac_sizing_values.Cool_Capacity_Sens.round
|
1799
|
+
|
1800
|
+
# Cooling airflow
|
1801
|
+
clg_sys.cooling_airflow_cfm = hvac_sizing_values.Cool_Airflow.round
|
1802
|
+
clg_sys.cooling_airflow_cfm_isdefaulted = true
|
1045
1803
|
end
|
1046
1804
|
end
|
1047
1805
|
end
|