urbanopt-cli 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/CMakeLists.txt +8 -8
- data/LICENSE.md +11 -1
- data/Rakefile +16 -6
- data/example_files/example_project_combined.json +100 -5
- data/example_files/mappers/Baseline.rb +31 -18
- data/example_files/mappers/CreateBar.rb +16 -6
- data/example_files/mappers/EvCharging.rb +20 -10
- data/example_files/mappers/Floorspace.rb +16 -6
- data/example_files/mappers/HighEfficiencyCreateBar.rb +16 -6
- data/example_files/mappers/HighEfficiencyFloorspace.rb +16 -6
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/measures/BuildResidentialModel/measure.rb +211 -129
- data/example_files/residential/clothes_dryer.tsv +7 -7
- data/example_files/residential/clothes_washer.tsv +1 -1
- data/example_files/residential/cooling_system.tsv +42 -22
- data/example_files/residential/dishwasher.tsv +1 -1
- data/example_files/residential/exhaust.tsv +3 -0
- data/example_files/residential/heat_pump.tsv +62 -40
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -0
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +23 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +633 -1188
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1524 -1211
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +424 -335
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +104 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +36 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +40 -64
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +44 -68
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +39 -65
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +57 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +33 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
- data/example_files/resources/hpxml-measures/Changelog.md +238 -0
- data/example_files/resources/hpxml-measures/Gemfile +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +265 -838
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +135 -114
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +5 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +573 -193
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +2 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +107 -176
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -180
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +481 -94
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +2 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +23 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +735 -453
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +417 -105
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1377 -1335
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1393 -1467
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +64 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +2 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +15 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +7 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +3 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +31 -30
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +62 -16
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +507 -628
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +321 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +25 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -0
- data/example_files/resources/hpxml-measures/README.md +4 -4
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +111 -37
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +318 -490
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +237 -183
- data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +3 -105
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +476 -351
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +154 -130
- data/example_files/resources/hpxml-measures/tasks.rb +1287 -511
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +23 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +22 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +14 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +600 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2474 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +576 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +643 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +552 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +556 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +559 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +556 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +552 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +547 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +557 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +554 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +559 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +546 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +547 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +547 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +567 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +565 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +570 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +551 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +551 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +564 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +568 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +837 -834
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +576 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +9 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +447 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +11 -58
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +459 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +578 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +2 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +573 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +464 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +450 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +472 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +912 -909
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +12 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/template.osw +4 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +232 -360
- data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
- data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
- data/lib/uo_cli.rb +187 -44
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/uo_cli.gemspec +2 -2
- metadata +248 -64
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
- data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
- data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
@@ -1,7 +1,7 @@
|
|
1
|
-
Dependency=Template Month Dependency=Template Year Dependency=clothes_dryer_fuel_type
|
2
|
-
lb/kWh
|
3
|
-
Sep 2020 electricity 3.93
|
4
|
-
Sep 2020 natural gas 3.03
|
5
|
-
Sep 2020 fuel oil 3.03
|
6
|
-
Sep 2020 propane 3.03
|
7
|
-
Sep 2020 wood 3.03
|
1
|
+
Dependency=Template Month Dependency=Template Year Dependency=clothes_dryer_fuel_type clothes_dryer_efficiency Source
|
2
|
+
lb/kWh
|
3
|
+
Sep 2020 electricity 3.93 "ResStock ""Electric, Premium, EnergyStar 100% Usage"""
|
4
|
+
Sep 2020 natural gas 3.03 "ResStock ""Gas, Premium, 100% Usage"""
|
5
|
+
Sep 2020 fuel oil 3.03 Engineering judgment
|
6
|
+
Sep 2020 propane 3.03 Engineering judgment
|
7
|
+
Sep 2020 wood 3.03 Engineering judgment
|
@@ -1,3 +1,3 @@
|
|
1
|
-
Dependency=Template Month Dependency=Template Year
|
1
|
+
Dependency=Template Month Dependency=Template Year clothes_washer_efficiency clothes_washer_rated_annual_kwh clothes_washer_label_electric_rate clothes_washer_label_gas_rate clothes_washer_label_annual_gas_cost clothes_washer_label_usage clothes_washer_capacity Source
|
2
2
|
ft^2/kWh-cyc kWh/yr $/kWh $/therm $ cyc/wk ft^3
|
3
3
|
Sep 2020 2.92 75 0.12 1.09 7 6 4.5 "ResStock ""EnergyStar Most Efficient, 100% Usage"""
|
@@ -1,22 +1,42 @@
|
|
1
|
-
Dependency=Climate Zone Dependency=Template Month Dependency=Template Year Dependency=cooling_system_type
|
2
|
-
|
3
|
-
1A Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
4
|
-
1B Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
5
|
-
1C Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
6
|
-
2A Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
7
|
-
2B Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
8
|
-
2C Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
9
|
-
3A Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
10
|
-
3B Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
11
|
-
3C Sep 2020 central air conditioner 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
12
|
-
4A Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
13
|
-
4B Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
14
|
-
4C Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
15
|
-
5A Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
16
|
-
5B Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
17
|
-
5C Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
18
|
-
6A Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
19
|
-
6B Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
20
|
-
6C Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
21
|
-
7 Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
22
|
-
8 Sep 2020 central air conditioner 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
1
|
+
Dependency=Climate Zone Dependency=Template Month Dependency=Template Year Dependency=cooling_system_type cooling_system_cooling_efficiency_type cooling_system_cooling_efficiency Source
|
2
|
+
|
3
|
+
1A Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
4
|
+
1B Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
5
|
+
1C Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
6
|
+
2A Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
7
|
+
2B Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
8
|
+
2C Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
9
|
+
3A Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
10
|
+
3B Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
11
|
+
3C Sep 2020 central air conditioner SEER 15 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
12
|
+
4A Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
13
|
+
4B Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
14
|
+
4C Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
15
|
+
5A Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
16
|
+
5B Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
17
|
+
5C Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
18
|
+
6A Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
19
|
+
6B Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
20
|
+
6C Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
21
|
+
7 Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
22
|
+
8 Sep 2020 central air conditioner SEER 13 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
23
|
+
1A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
24
|
+
1B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
25
|
+
1C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
26
|
+
2A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
27
|
+
2B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
28
|
+
2C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
29
|
+
3A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
30
|
+
3B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
31
|
+
3C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
32
|
+
4A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
33
|
+
4B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
34
|
+
4C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
35
|
+
5A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
36
|
+
5B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
37
|
+
5C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
38
|
+
6A Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
39
|
+
6B Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
40
|
+
6C Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
41
|
+
7 Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
42
|
+
8 Sep 2020 room air conditioner EER 8.5 "ResStock ""Room AC, EER 8.5"""
|
@@ -1,3 +1,3 @@
|
|
1
|
-
Dependency=Template Month Dependency=Template Year
|
1
|
+
Dependency=Template Month Dependency=Template Year dishwasher_efficiency dishwasher_label_electric_rate dishwasher_label_gas_rate dishwasher_label_annual_gas_cost dishwasher_label_usage dishwasher_place_setting_capacity Source
|
2
2
|
kWh/yr $/kWh $/therm $ cyc/wk #
|
3
3
|
Sep 2020 199 0.12 1.09 18 4 12 "ResStock ""199 Rated kWh, 100% Usage"""
|
@@ -1,40 +1,62 @@
|
|
1
|
-
Dependency=Climate Zone Dependency=Template Month Dependency=Template Year Dependency=heat_pump_type
|
2
|
-
|
3
|
-
1A Sep 2020 air-to-air 8.2
|
4
|
-
1B Sep 2020 air-to-air 8.2
|
5
|
-
1C Sep 2020 air-to-air 8.2
|
6
|
-
2A Sep 2020 air-to-air 8.2
|
7
|
-
2B Sep 2020 air-to-air 8.2
|
8
|
-
2C Sep 2020 air-to-air 8.2
|
9
|
-
3A Sep 2020 air-to-air 8.2
|
10
|
-
3B Sep 2020 air-to-air 8.2
|
11
|
-
3C Sep 2020 air-to-air 8.2
|
12
|
-
4A Sep 2020 air-to-air 8.5
|
13
|
-
4B Sep 2020 air-to-air 8.5
|
14
|
-
4C Sep 2020 air-to-air 9.25
|
15
|
-
5A Sep 2020 air-to-air 9.25
|
16
|
-
5B Sep 2020 air-to-air 9.25
|
17
|
-
5C Sep 2020 air-to-air 9.25
|
18
|
-
6A Sep 2020 air-to-air 9.5
|
19
|
-
6B Sep 2020 air-to-air 9.5
|
20
|
-
6C Sep 2020 air-to-air 9.5
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
1
|
+
Dependency=Climate Zone Dependency=Template Month Dependency=Template Year Dependency=heat_pump_type heat_pump_heating_efficiency_type heat_pump_heating_efficiency heat_pump_cooling_efficiency_type heat_pump_cooling_efficiency heat_pump_backup_fuel Source
|
2
|
+
type
|
3
|
+
1A Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
4
|
+
1B Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
5
|
+
1C Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
6
|
+
2A Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
7
|
+
2B Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
8
|
+
2C Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
9
|
+
3A Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
10
|
+
3B Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
11
|
+
3C Sep 2020 air-to-air HSPF 8.2 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
12
|
+
4A Sep 2020 air-to-air HSPF 8.5 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
13
|
+
4B Sep 2020 air-to-air HSPF 8.5 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
14
|
+
4C Sep 2020 air-to-air HSPF 9.25 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
15
|
+
5A Sep 2020 air-to-air HSPF 9.25 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
16
|
+
5B Sep 2020 air-to-air HSPF 9.25 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
17
|
+
5C Sep 2020 air-to-air HSPF 9.25 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
18
|
+
6A Sep 2020 air-to-air HSPF 9.5 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
19
|
+
6B Sep 2020 air-to-air HSPF 9.5 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
20
|
+
6C Sep 2020 air-to-air HSPF 9.5 SEER 15 electricity "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
21
|
+
7 Sep 2020 air-to-air HSPF 9.5 SEER 15 electricity Engineering judgment
|
22
|
+
8 Sep 2020 air-to-air HSPF 9.5 SEER 15 electricity Engineering judgment
|
23
|
+
1A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
24
|
+
1B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
25
|
+
1C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
26
|
+
2A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
27
|
+
2B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
28
|
+
2C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
29
|
+
3A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
30
|
+
3B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
31
|
+
3C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
32
|
+
4A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
33
|
+
4B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
34
|
+
4C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
35
|
+
5A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
36
|
+
5B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
37
|
+
5C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
38
|
+
6A Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
39
|
+
6B Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
40
|
+
6C Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
41
|
+
7 Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
42
|
+
8 Sep 2020 mini-split HSPF 10 SEER 19 electricity Engineering judgment
|
43
|
+
1A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
44
|
+
1B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
45
|
+
1C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
46
|
+
2A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
47
|
+
2B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
48
|
+
2C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
49
|
+
3A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
50
|
+
3B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
51
|
+
3C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
52
|
+
4A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
53
|
+
4B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
54
|
+
4C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
55
|
+
5A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
56
|
+
5B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
57
|
+
5C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
58
|
+
6A Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
59
|
+
6B Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
60
|
+
6C Sep 2020 ground-to-air COP 3.6 EER 17.1 Engineering judgment
|
61
|
+
7 Sep 2020 ground-to-air COP 3.6 EER 17.1 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
62
|
+
8 Sep 2020 ground-to-air COP 3.6 EER 17.1 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
@@ -9,5 +9,6 @@ Not all may apply:
|
|
9
9
|
- [ ] EPvalidator.xml has been updated
|
10
10
|
- [ ] Tests (and test files) have been updated
|
11
11
|
- [ ] Documentation has been updated
|
12
|
+
- [ ] Changelog has been updated
|
12
13
|
- [ ] `openstudio tasks.rb update_measures` has been run
|
13
14
|
- [ ] No unexpected regression test changes on CI
|
@@ -0,0 +1,23 @@
|
|
1
|
+
name: ci
|
2
|
+
on: [push]
|
3
|
+
jobs:
|
4
|
+
build:
|
5
|
+
runs-on: ubuntu-latest
|
6
|
+
container:
|
7
|
+
image: docker://nrel/openstudio:3.1.0
|
8
|
+
steps:
|
9
|
+
- uses: actions/checkout@v2
|
10
|
+
|
11
|
+
- name: Install gems
|
12
|
+
run: |
|
13
|
+
rm -f Gemfile.lock && bundle install
|
14
|
+
|
15
|
+
- name: Run tests
|
16
|
+
run: |
|
17
|
+
bundle exec rake test_all
|
18
|
+
|
19
|
+
- name: Store results
|
20
|
+
uses: actions/upload-artifact@v2
|
21
|
+
with:
|
22
|
+
path: workflow/tests/results
|
23
|
+
name: results
|
@@ -241,8 +241,6 @@
|
|
241
241
|
/weather/USA_AZ_Page.Muni.AWOS.723710_TMY3.epw
|
242
242
|
/weather/USA_AZ_Phoenix-Deer.Valley.AP.722784_TMY3-cache.csv
|
243
243
|
/weather/USA_AZ_Phoenix-Deer.Valley.AP.722784_TMY3.epw
|
244
|
-
/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv
|
245
|
-
/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw
|
246
244
|
/weather/USA_AZ_Prescott-Love.Field.723723_TMY3-cache.csv
|
247
245
|
/weather/USA_AZ_Prescott-Love.Field.723723_TMY3.epw
|
248
246
|
/weather/USA_AZ_Safford.AWOS.722747_TMY3-cache.csv
|
@@ -593,8 +591,6 @@
|
|
593
591
|
/weather/USA_HI_Barbers.Point.NAS.911780_TMY3.epw
|
594
592
|
/weather/USA_HI_Hilo.Intl.AP.912850_TMY3-cache.csv
|
595
593
|
/weather/USA_HI_Hilo.Intl.AP.912850_TMY3.epw
|
596
|
-
/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv
|
597
|
-
/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw
|
598
594
|
/weather/USA_HI_Kahului.AP.911900_TMY3-cache.csv
|
599
595
|
/weather/USA_HI_Kahului.AP.911900_TMY3.epw
|
600
596
|
/weather/USA_HI_Kailua-Kaneohe.Bay.MCAS.911760_TMY3-cache.csv
|
@@ -1189,8 +1185,6 @@
|
|
1189
1185
|
/weather/USA_MT_Great.Falls.Intl.AP.727750_TMY3.epw
|
1190
1186
|
/weather/USA_MT_Havre.City-County.AP.727770_TMY3-cache.csv
|
1191
1187
|
/weather/USA_MT_Havre.City-County.AP.727770_TMY3.epw
|
1192
|
-
/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv
|
1193
|
-
/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw
|
1194
1188
|
/weather/USA_MT_Kalispell-Glacier.Park.Intl.AP.727790_TMY3-cache.csv
|
1195
1189
|
/weather/USA_MT_Kalispell-Glacier.Park.Intl.AP.727790_TMY3.epw
|
1196
1190
|
/weather/USA_MT_Lewistown.Muni.AP.726776_TMY3-cache.csv
|
@@ -1539,8 +1533,6 @@
|
|
1539
1533
|
/weather/USA_OR_Portland-Hillsboro.AP.726986_TMY3.epw
|
1540
1534
|
/weather/USA_OR_Portland-Troutdale.AP.726985_TMY3-cache.csv
|
1541
1535
|
/weather/USA_OR_Portland-Troutdale.AP.726985_TMY3.epw
|
1542
|
-
/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv
|
1543
|
-
/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw
|
1544
1536
|
/weather/USA_OR_Redmond-Roberts.Field.726835_TMY3-cache.csv
|
1545
1537
|
/weather/USA_OR_Redmond-Roberts.Field.726835_TMY3.epw
|
1546
1538
|
/weather/USA_OR_Roseburg.Rgnl.AP.726904_TMY3-cache.csv
|
@@ -2020,6 +2012,7 @@
|
|
2020
2012
|
/workflow/out.osw
|
2021
2013
|
/workflow/tests/results
|
2022
2014
|
/workflow/tests/run
|
2015
|
+
/workflow/tests/test*
|
2023
2016
|
/workflow/sample_files/results
|
2024
2017
|
/workflow/sample_files/run
|
2025
2018
|
/workflow/sample_files/invalid_files/results
|
@@ -9,7 +9,6 @@ require 'csv'
|
|
9
9
|
|
10
10
|
require_relative 'resources/constants'
|
11
11
|
require_relative 'resources/geometry'
|
12
|
-
require_relative 'resources/location'
|
13
12
|
require_relative 'resources/schedules'
|
14
13
|
|
15
14
|
require_relative '../HPXMLtoOpenStudio/resources/constants'
|
@@ -18,7 +17,9 @@ require_relative '../HPXMLtoOpenStudio/resources/geometry'
|
|
18
17
|
require_relative '../HPXMLtoOpenStudio/resources/hpxml'
|
19
18
|
require_relative '../HPXMLtoOpenStudio/resources/hvac'
|
20
19
|
require_relative '../HPXMLtoOpenStudio/resources/lighting'
|
20
|
+
require_relative '../HPXMLtoOpenStudio/resources/location'
|
21
21
|
require_relative '../HPXMLtoOpenStudio/resources/materials'
|
22
|
+
require_relative '../HPXMLtoOpenStudio/resources/meta_measure'
|
22
23
|
require_relative '../HPXMLtoOpenStudio/resources/psychrometrics'
|
23
24
|
require_relative '../HPXMLtoOpenStudio/resources/schedules'
|
24
25
|
require_relative '../HPXMLtoOpenStudio/resources/unit_conversions'
|
@@ -190,7 +191,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
190
191
|
args << arg
|
191
192
|
|
192
193
|
unit_type_choices = OpenStudio::StringVector.new
|
193
|
-
unit_type_choices << HPXML::ResidentialTypeManufactured
|
194
194
|
unit_type_choices << HPXML::ResidentialTypeSFD
|
195
195
|
unit_type_choices << HPXML::ResidentialTypeSFA
|
196
196
|
unit_type_choices << HPXML::ResidentialTypeApartment
|
@@ -211,7 +211,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
211
211
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_num_floors_above_grade', true)
|
212
212
|
arg.setDisplayName('Geometry: Number of Floors')
|
213
213
|
arg.setUnits('#')
|
214
|
-
arg.setDescription("The number of floors above grade (in the unit if #{HPXML::ResidentialTypeSFA}, and in the building if #{HPXML::ResidentialTypeApartment}).")
|
214
|
+
arg.setDescription("The number of floors above grade (in the unit if #{HPXML::ResidentialTypeSFD} or #{HPXML::ResidentialTypeSFA}, and in the building if #{HPXML::ResidentialTypeApartment}). Conditioned attics are included.")
|
215
215
|
arg.setDefaultValue(2)
|
216
216
|
args << arg
|
217
217
|
|
@@ -225,7 +225,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
225
225
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_orientation', true)
|
226
226
|
arg.setDisplayName('Geometry: Orientation')
|
227
227
|
arg.setUnits('degrees')
|
228
|
-
arg.setDescription("The
|
228
|
+
arg.setDescription("The unit's orientation is measured clockwise from due south when viewed from above (e.g., North=0, East=90, South=180, West=270).")
|
229
229
|
arg.setDefaultValue(180.0)
|
230
230
|
args << arg
|
231
231
|
|
@@ -244,28 +244,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
244
244
|
|
245
245
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_corridor_position', corridor_position_choices, true)
|
246
246
|
arg.setDisplayName('Geometry: Corridor Position')
|
247
|
-
arg.setDescription(
|
247
|
+
arg.setDescription("The position of the corridor. Only applies to #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment} units.")
|
248
248
|
arg.setDefaultValue('Double-Loaded Interior')
|
249
249
|
args << arg
|
250
250
|
|
251
251
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_corridor_width', true)
|
252
252
|
arg.setDisplayName('Geometry: Corridor Width')
|
253
253
|
arg.setUnits('ft')
|
254
|
-
arg.setDescription(
|
254
|
+
arg.setDescription("The width of the corridor. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
255
255
|
arg.setDefaultValue(10.0)
|
256
256
|
args << arg
|
257
257
|
|
258
258
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_inset_width', true)
|
259
259
|
arg.setDisplayName('Geometry: Inset Width')
|
260
260
|
arg.setUnits('ft')
|
261
|
-
arg.setDescription(
|
261
|
+
arg.setDescription("The width of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
262
262
|
arg.setDefaultValue(0.0)
|
263
263
|
args << arg
|
264
264
|
|
265
265
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_inset_depth', true)
|
266
266
|
arg.setDisplayName('Geometry: Inset Depth')
|
267
267
|
arg.setUnits('ft')
|
268
|
-
arg.setDescription(
|
268
|
+
arg.setDescription("The depth of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
269
269
|
arg.setDefaultValue(0.0)
|
270
270
|
args << arg
|
271
271
|
|
@@ -275,35 +275,35 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
275
275
|
|
276
276
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_inset_position', inset_position_choices, true)
|
277
277
|
arg.setDisplayName('Geometry: Inset Position')
|
278
|
-
arg.setDescription(
|
278
|
+
arg.setDescription("The position of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
279
279
|
arg.setDefaultValue('Right')
|
280
280
|
args << arg
|
281
281
|
|
282
282
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_balcony_depth', true)
|
283
283
|
arg.setDisplayName('Geometry: Balcony Depth')
|
284
284
|
arg.setUnits('ft')
|
285
|
-
arg.setDescription(
|
285
|
+
arg.setDescription("The depth of the balcony. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
286
286
|
arg.setDefaultValue(0.0)
|
287
287
|
args << arg
|
288
288
|
|
289
289
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', true)
|
290
290
|
arg.setDisplayName('Geometry: Garage Width')
|
291
291
|
arg.setUnits('ft')
|
292
|
-
arg.setDescription(
|
292
|
+
arg.setDescription("The width of the garage. Enter zero for no garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
293
293
|
arg.setDefaultValue(0.0)
|
294
294
|
args << arg
|
295
295
|
|
296
296
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_depth', true)
|
297
297
|
arg.setDisplayName('Geometry: Garage Depth')
|
298
298
|
arg.setUnits('ft')
|
299
|
-
arg.setDescription(
|
299
|
+
arg.setDescription("The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
300
300
|
arg.setDefaultValue(20.0)
|
301
301
|
args << arg
|
302
302
|
|
303
303
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_protrusion', true)
|
304
304
|
arg.setDisplayName('Geometry: Garage Protrusion')
|
305
305
|
arg.setUnits('frac')
|
306
|
-
arg.setDescription(
|
306
|
+
arg.setDescription("The fraction of the garage that is protruding from the living space. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
307
307
|
arg.setDefaultValue(0.0)
|
308
308
|
args << arg
|
309
309
|
|
@@ -313,7 +313,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
313
313
|
|
314
314
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_garage_position', garage_position_choices, true)
|
315
315
|
arg.setDisplayName('Geometry: Garage Position')
|
316
|
-
arg.setDescription(
|
316
|
+
arg.setDescription("The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
317
317
|
arg.setDefaultValue('Right')
|
318
318
|
args << arg
|
319
319
|
|
@@ -345,6 +345,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
345
345
|
arg.setDefaultValue(0.0)
|
346
346
|
args << arg
|
347
347
|
|
348
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_rim_joist_height', true)
|
349
|
+
arg.setDisplayName('Geometry: Rim Joist Height')
|
350
|
+
arg.setUnits('in')
|
351
|
+
arg.setDescription('The height of the rim joists. Only applies to basements/crawlspaces.')
|
352
|
+
arg.setDefaultValue(9.25)
|
353
|
+
args << arg
|
354
|
+
|
348
355
|
roof_type_choices = OpenStudio::StringVector.new
|
349
356
|
roof_type_choices << 'gable'
|
350
357
|
roof_type_choices << 'hip'
|
@@ -352,7 +359,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
352
359
|
|
353
360
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_type', roof_type_choices, true)
|
354
361
|
arg.setDisplayName('Geometry: Roof Type')
|
355
|
-
arg.setDescription(
|
362
|
+
arg.setDescription("The roof type of the building. Assumed flat for #{HPXML::ResidentialTypeApartment} units.")
|
356
363
|
arg.setDefaultValue('gable')
|
357
364
|
args << arg
|
358
365
|
|
@@ -415,6 +422,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
415
422
|
arg.setDefaultValue(Constants.Auto)
|
416
423
|
args << arg
|
417
424
|
|
425
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('geometry_has_flue_or_chimney', true)
|
426
|
+
arg.setDisplayName('Geometry: Has Flue or Chimney')
|
427
|
+
arg.setDescription('Whether there is a flue or chimney.')
|
428
|
+
arg.setDefaultValue(Constants.Auto)
|
429
|
+
args << arg
|
430
|
+
|
418
431
|
level_choices = OpenStudio::StringVector.new
|
419
432
|
level_choices << 'Bottom'
|
420
433
|
level_choices << 'Middle'
|
@@ -438,19 +451,19 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
438
451
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_units', false)
|
439
452
|
arg.setDisplayName('Geometry: Building Number of Units')
|
440
453
|
arg.setUnits('#')
|
441
|
-
arg.setDescription("The number of units in the building. This is required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}
|
454
|
+
arg.setDescription("The number of units in the building. This is required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment} units.")
|
442
455
|
args << arg
|
443
456
|
|
444
457
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_bedrooms', false)
|
445
458
|
arg.setDisplayName('Geometry: Building Number of Bedrooms')
|
446
459
|
arg.setUnits('#')
|
447
|
-
arg.setDescription("The number of bedrooms in the building. This is required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment}
|
460
|
+
arg.setDescription("The number of bedrooms in the building. This is required for #{HPXML::ResidentialTypeSFA} and #{HPXML::ResidentialTypeApartment} units with shared PV systems.")
|
448
461
|
args << arg
|
449
462
|
|
450
463
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_assembly_r', true)
|
451
464
|
arg.setDisplayName('Floor: Assembly R-value')
|
452
465
|
arg.setUnits('h-ft^2-R/Btu')
|
453
|
-
arg.setDescription('Assembly R-value for the floor (foundation ceiling). Ignored if a slab foundation.')
|
466
|
+
arg.setDescription('Assembly R-value for the floor (foundation ceiling). Ignored if the building has a slab foundation.')
|
454
467
|
arg.setDefaultValue(30)
|
455
468
|
args << arg
|
456
469
|
|
@@ -468,11 +481,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
468
481
|
arg.setDefaultValue(0)
|
469
482
|
args << arg
|
470
483
|
|
471
|
-
arg = OpenStudio::Measure::OSArgument::
|
484
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('foundation_wall_insulation_distance_to_bottom', true)
|
472
485
|
arg.setDisplayName('Foundation: Wall Insulation Distance To Bottom')
|
473
486
|
arg.setUnits('ft')
|
474
|
-
arg.setDescription(
|
475
|
-
arg.setDefaultValue(
|
487
|
+
arg.setDescription("The distance from the top of the foundation wall to the bottom of the foundation wall insulation. Only applies to basements/crawlspaces. A value of '#{Constants.Auto}' will use the same height as the foundation.")
|
488
|
+
arg.setDefaultValue(Constants.Auto)
|
476
489
|
args << arg
|
477
490
|
|
478
491
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_assembly_r', false)
|
@@ -487,6 +500,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
487
500
|
arg.setDefaultValue(Constants.Auto)
|
488
501
|
args << arg
|
489
502
|
|
503
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('rim_joist_assembly_r', true)
|
504
|
+
arg.setDisplayName('Rim Joist: Assembly R-value')
|
505
|
+
arg.setUnits('h-ft^2-R/Btu')
|
506
|
+
arg.setDescription('Assembly R-value for the rim joists. Only applies to basements/crawlspaces.')
|
507
|
+
arg.setDefaultValue(23)
|
508
|
+
args << arg
|
509
|
+
|
490
510
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', true)
|
491
511
|
arg.setDisplayName('Slab: Perimeter Insulation Nominal R-value')
|
492
512
|
arg.setUnits('h-ft^2-R/Btu')
|
@@ -556,7 +576,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
556
576
|
args << arg
|
557
577
|
|
558
578
|
color_choices = OpenStudio::StringVector.new
|
559
|
-
color_choices << Constants.Auto
|
560
579
|
color_choices << HPXML::ColorDark
|
561
580
|
color_choices << HPXML::ColorLight
|
562
581
|
color_choices << HPXML::ColorMedium
|
@@ -566,7 +585,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
566
585
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_color', color_choices, true)
|
567
586
|
arg.setDisplayName('Roof: Color')
|
568
587
|
arg.setDescription('The color of the roof.')
|
569
|
-
arg.setDefaultValue(
|
588
|
+
arg.setDefaultValue(HPXML::ColorMedium)
|
570
589
|
args << arg
|
571
590
|
|
572
591
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_assembly_r', true)
|
@@ -576,22 +595,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
576
595
|
arg.setDefaultValue(2.3)
|
577
596
|
args << arg
|
578
597
|
|
579
|
-
arg = OpenStudio::Measure::OSArgument::
|
580
|
-
arg.setDisplayName('Roof: Solar Absorptance')
|
581
|
-
arg.setDescription('The solar absorptance of the roof.')
|
582
|
-
arg.setDefaultValue(Constants.Auto)
|
583
|
-
args << arg
|
584
|
-
|
585
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('roof_emittance', true)
|
586
|
-
arg.setDisplayName('Roof: Emittance')
|
587
|
-
arg.setDescription('The emittance of the roof.')
|
588
|
-
arg.setDefaultValue(Constants.Auto)
|
589
|
-
args << arg
|
590
|
-
|
591
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('roof_radiant_barrier', true)
|
598
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('roof_radiant_barrier', true)
|
592
599
|
arg.setDisplayName('Roof: Has Radiant Barrier')
|
593
600
|
arg.setDescription('Specifies whether the attic has a radiant barrier.')
|
594
|
-
arg.setDefaultValue(
|
601
|
+
arg.setDefaultValue(false)
|
595
602
|
args << arg
|
596
603
|
|
597
604
|
roof_radiant_barrier_grade_choices = OpenStudio::StringVector.new
|
@@ -608,28 +615,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
608
615
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', true)
|
609
616
|
arg.setDisplayName('Neighbor: Front Distance')
|
610
617
|
arg.setUnits('ft')
|
611
|
-
arg.setDescription('The minimum distance between the simulated
|
618
|
+
arg.setDescription('The minimum distance between the simulated unit and the neighboring building to the front (not including eaves). A value of zero indicates no neighbors.')
|
612
619
|
arg.setDefaultValue(0.0)
|
613
620
|
args << arg
|
614
621
|
|
615
622
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_distance', true)
|
616
623
|
arg.setDisplayName('Neighbor: Back Distance')
|
617
624
|
arg.setUnits('ft')
|
618
|
-
arg.setDescription('The minimum distance between the simulated
|
625
|
+
arg.setDescription('The minimum distance between the simulated unit and the neighboring building to the back (not including eaves). A value of zero indicates no neighbors.')
|
619
626
|
arg.setDefaultValue(0.0)
|
620
627
|
args << arg
|
621
628
|
|
622
629
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_distance', true)
|
623
630
|
arg.setDisplayName('Neighbor: Left Distance')
|
624
631
|
arg.setUnits('ft')
|
625
|
-
arg.setDescription('The minimum distance between the simulated
|
632
|
+
arg.setDescription('The minimum distance between the simulated unit and the neighboring building to the left (not including eaves). A value of zero indicates no neighbors.')
|
626
633
|
arg.setDefaultValue(10.0)
|
627
634
|
args << arg
|
628
635
|
|
629
636
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_distance', true)
|
630
637
|
arg.setDisplayName('Neighbor: Right Distance')
|
631
638
|
arg.setUnits('ft')
|
632
|
-
arg.setDescription('The minimum distance between the simulated
|
639
|
+
arg.setDescription('The minimum distance between the simulated unit and the neighboring building to the right (not including eaves). A value of zero indicates no neighbors.')
|
633
640
|
arg.setDefaultValue(10.0)
|
634
641
|
args << arg
|
635
642
|
|
@@ -690,13 +697,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
690
697
|
|
691
698
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_siding_type', wall_siding_type_choices, false)
|
692
699
|
arg.setDisplayName('Wall: Siding Type')
|
693
|
-
arg.setDescription('The siding type of the exterior walls.')
|
700
|
+
arg.setDescription('The siding type of the exterior walls. Also applies to rim joists.')
|
694
701
|
args << arg
|
695
702
|
|
696
703
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_color', color_choices, true)
|
697
704
|
arg.setDisplayName('Wall: Color')
|
698
|
-
arg.setDescription('The color of the exterior walls.')
|
699
|
-
arg.setDefaultValue(
|
705
|
+
arg.setDescription('The color of the exterior walls. Also applies to rim joists.')
|
706
|
+
arg.setDefaultValue(HPXML::ColorMedium)
|
700
707
|
args << arg
|
701
708
|
|
702
709
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('wall_assembly_r', true)
|
@@ -706,63 +713,51 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
706
713
|
arg.setDefaultValue(13)
|
707
714
|
args << arg
|
708
715
|
|
709
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('wall_solar_absorptance', true)
|
710
|
-
arg.setDisplayName('Wall: Solar Absorptance')
|
711
|
-
arg.setDescription('The solar absorptance of the exterior walls.')
|
712
|
-
arg.setDefaultValue(Constants.Auto)
|
713
|
-
args << arg
|
714
|
-
|
715
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('wall_emittance', true)
|
716
|
-
arg.setDisplayName('Wall: Emittance')
|
717
|
-
arg.setDescription('The emittance of the exterior walls.')
|
718
|
-
arg.setDefaultValue(Constants.Auto)
|
719
|
-
args << arg
|
720
|
-
|
721
716
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_front_wwr', true)
|
722
717
|
arg.setDisplayName('Windows: Front Window-to-Wall Ratio')
|
723
|
-
arg.setDescription("The ratio of window area to wall area for the
|
718
|
+
arg.setDescription("The ratio of window area to wall area for the unit's front facade. Enter 0 if specifying Front Window Area instead.")
|
724
719
|
arg.setDefaultValue(0.18)
|
725
720
|
args << arg
|
726
721
|
|
727
722
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_back_wwr', true)
|
728
723
|
arg.setDisplayName('Windows: Back Window-to-Wall Ratio')
|
729
|
-
arg.setDescription("The ratio of window area to wall area for the
|
724
|
+
arg.setDescription("The ratio of window area to wall area for the unit's back facade. Enter 0 if specifying Back Window Area instead.")
|
730
725
|
arg.setDefaultValue(0.18)
|
731
726
|
args << arg
|
732
727
|
|
733
728
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_left_wwr', true)
|
734
729
|
arg.setDisplayName('Windows: Left Window-to-Wall Ratio')
|
735
|
-
arg.setDescription("The ratio of window area to wall area for the
|
730
|
+
arg.setDescription("The ratio of window area to wall area for the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window Area instead.")
|
736
731
|
arg.setDefaultValue(0.18)
|
737
732
|
args << arg
|
738
733
|
|
739
734
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_right_wwr', true)
|
740
735
|
arg.setDisplayName('Windows: Right Window-to-Wall Ratio')
|
741
|
-
arg.setDescription("The ratio of window area to wall area for the
|
736
|
+
arg.setDescription("The ratio of window area to wall area for the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window Area instead.")
|
742
737
|
arg.setDefaultValue(0.18)
|
743
738
|
args << arg
|
744
739
|
|
745
740
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_front', true)
|
746
741
|
arg.setDisplayName('Windows: Front Window Area')
|
747
|
-
arg.setDescription("The amount of window area on the
|
742
|
+
arg.setDescription("The amount of window area on the unit's front facade. Enter 0 if specifying Front Window-to-Wall Ratio instead.")
|
748
743
|
arg.setDefaultValue(0)
|
749
744
|
args << arg
|
750
745
|
|
751
746
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_back', true)
|
752
747
|
arg.setDisplayName('Windows: Back Window Area')
|
753
|
-
arg.setDescription("The amount of window area on the
|
748
|
+
arg.setDescription("The amount of window area on the unit's back facade. Enter 0 if specifying Back Window-to-Wall Ratio instead.")
|
754
749
|
arg.setDefaultValue(0)
|
755
750
|
args << arg
|
756
751
|
|
757
752
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_left', true)
|
758
753
|
arg.setDisplayName('Windows: Left Window Area')
|
759
|
-
arg.setDescription("The amount of window area on the
|
754
|
+
arg.setDescription("The amount of window area on the unit's left facade (when viewed from the front). Enter 0 if specifying Left Window-to-Wall Ratio instead.")
|
760
755
|
arg.setDefaultValue(0)
|
761
756
|
args << arg
|
762
757
|
|
763
758
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_right', true)
|
764
759
|
arg.setDisplayName('Windows: Right Window Area')
|
765
|
-
arg.setDescription("The amount of window area on the
|
760
|
+
arg.setDescription("The amount of window area on the unit's right facade (when viewed from the front). Enter 0 if specifying Right Window-to-Wall Ratio instead.")
|
766
761
|
arg.setDefaultValue(0)
|
767
762
|
args << arg
|
768
763
|
|
@@ -800,6 +795,16 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
800
795
|
arg.setDescription('Interior shading multiplier for the cooling season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.')
|
801
796
|
args << arg
|
802
797
|
|
798
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_winter', false)
|
799
|
+
arg.setDisplayName('Windows: Winter Exterior Shading')
|
800
|
+
arg.setDescription('Exterior shading multiplier for the heating season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.')
|
801
|
+
args << arg
|
802
|
+
|
803
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_summer', false)
|
804
|
+
arg.setDisplayName('Windows: Summer Exterior Shading')
|
805
|
+
arg.setDescription('Exterior shading multiplier for the cooling season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.')
|
806
|
+
args << arg
|
807
|
+
|
803
808
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_depth', true)
|
804
809
|
arg.setDisplayName('Overhangs: Front Facade Depth')
|
805
810
|
arg.setDescription('Specifies the depth of overhangs for windows on the front facade.')
|
@@ -850,25 +855,25 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
850
855
|
|
851
856
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_front', true)
|
852
857
|
arg.setDisplayName('Skylights: Front Roof Area')
|
853
|
-
arg.setDescription("The amount of skylight area on the
|
858
|
+
arg.setDescription("The amount of skylight area on the unit's front conditioned roof facade.")
|
854
859
|
arg.setDefaultValue(0)
|
855
860
|
args << arg
|
856
861
|
|
857
862
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_back', true)
|
858
863
|
arg.setDisplayName('Skylights: Back Roof Area')
|
859
|
-
arg.setDescription("The amount of skylight area on the
|
864
|
+
arg.setDescription("The amount of skylight area on the unit's back conditioned roof facade.")
|
860
865
|
arg.setDefaultValue(0)
|
861
866
|
args << arg
|
862
867
|
|
863
868
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_left', true)
|
864
869
|
arg.setDisplayName('Skylights: Left Roof Area')
|
865
|
-
arg.setDescription("The amount of skylight area on the
|
870
|
+
arg.setDescription("The amount of skylight area on the unit's left conditioned roof facade (when viewed from the front).")
|
866
871
|
arg.setDefaultValue(0)
|
867
872
|
args << arg
|
868
873
|
|
869
874
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_right', true)
|
870
875
|
arg.setDisplayName('Skylights: Right Roof Area')
|
871
|
-
arg.setDescription("The amount of skylight area on the
|
876
|
+
arg.setDescription("The amount of skylight area on the unit's right conditioned roof facade (when viewed from the front).")
|
872
877
|
arg.setDefaultValue(0)
|
873
878
|
args << arg
|
874
879
|
|
@@ -923,10 +928,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
923
928
|
arg.setDefaultValue(3)
|
924
929
|
args << arg
|
925
930
|
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
931
|
+
air_leakage_shielding_of_home_choices = OpenStudio::StringVector.new
|
932
|
+
air_leakage_shielding_of_home_choices << Constants.Auto
|
933
|
+
air_leakage_shielding_of_home_choices << HPXML::ShieldingExposed
|
934
|
+
air_leakage_shielding_of_home_choices << HPXML::ShieldingNormal
|
935
|
+
air_leakage_shielding_of_home_choices << HPXML::ShieldingWellShielded
|
936
|
+
|
937
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_shielding_of_home', air_leakage_shielding_of_home_choices, true)
|
938
|
+
arg.setDisplayName('Air Leakage: Shielding of Home')
|
939
|
+
arg.setDescription('Presence of nearby buildings, trees, obstructions for infiltration model.')
|
930
940
|
arg.setDefaultValue(Constants.Auto)
|
931
941
|
args << arg
|
932
942
|
|
@@ -958,6 +968,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
958
968
|
cooling_system_type_choices << HPXML::HVACTypeEvaporativeCooler
|
959
969
|
cooling_system_type_choices << HPXML::HVACTypeMiniSplitAirConditioner
|
960
970
|
|
971
|
+
cooling_efficiency_type_choices = OpenStudio::StringVector.new
|
972
|
+
cooling_efficiency_type_choices << HPXML::UnitsSEER
|
973
|
+
cooling_efficiency_type_choices << HPXML::UnitsEER
|
974
|
+
|
961
975
|
compressor_type_choices = OpenStudio::StringVector.new
|
962
976
|
compressor_type_choices << HPXML::HVACCompressorTypeSingleStage
|
963
977
|
compressor_type_choices << HPXML::HVACCompressorTypeTwoStage
|
@@ -996,28 +1010,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
996
1010
|
arg.setDefaultValue(1)
|
997
1011
|
args << arg
|
998
1012
|
|
999
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1000
|
-
arg.setDisplayName('Heating System:
|
1001
|
-
arg.setDescription("The
|
1002
|
-
arg.setUnits('
|
1003
|
-
args << arg
|
1004
|
-
|
1005
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts_per_cfm', false)
|
1006
|
-
arg.setDisplayName('Heating System: Fan Power')
|
1007
|
-
arg.setDescription("Blower fan power. Applies to #{HPXML::HVACTypeFurnace}.")
|
1008
|
-
arg.setUnits('W/CFM')
|
1009
|
-
args << arg
|
1010
|
-
|
1011
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts', false)
|
1012
|
-
arg.setDisplayName('Heating System: Fan Power')
|
1013
|
-
arg.setDescription("Blower fan power. Ignored for #{HPXML::HVACTypeElectricResistance}, #{HPXML::HVACTypeFurnace}, and #{HPXML::HVACTypeBoiler}.")
|
1014
|
-
arg.setUnits('W')
|
1015
|
-
args << arg
|
1016
|
-
|
1017
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney', true)
|
1018
|
-
arg.setDisplayName('Heating System: Has Flue or Chimney')
|
1019
|
-
arg.setDescription('Whether the heating system has a flue or chimney.')
|
1020
|
-
arg.setDefaultValue(false)
|
1013
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_airflow_defect_ratio', false)
|
1014
|
+
arg.setDisplayName('Heating System: Airflow Defect Ratio')
|
1015
|
+
arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}.")
|
1016
|
+
arg.setUnits('Frac')
|
1021
1017
|
args << arg
|
1022
1018
|
|
1023
1019
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_type', cooling_system_type_choices, true)
|
@@ -1026,18 +1022,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1026
1022
|
arg.setDefaultValue(HPXML::HVACTypeCentralAirConditioner)
|
1027
1023
|
args << arg
|
1028
1024
|
|
1029
|
-
arg = OpenStudio::Measure::OSArgument::
|
1030
|
-
arg.setDisplayName('Cooling System:
|
1031
|
-
arg.
|
1032
|
-
arg.
|
1033
|
-
arg.setDefaultValue(13.0)
|
1025
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, true)
|
1026
|
+
arg.setDisplayName('Cooling System: Efficiency Type')
|
1027
|
+
arg.setDescription("The efficiency type of the cooling system. System types #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner} use #{HPXML::UnitsSEER}. System type #{HPXML::HVACTypeRoomAirConditioner} uses #{HPXML::UnitsEER}. Ignored for system type #{HPXML::HVACTypeEvaporativeCooler}.")
|
1028
|
+
arg.setDefaultValue(HPXML::UnitsSEER)
|
1034
1029
|
args << arg
|
1035
1030
|
|
1036
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1037
|
-
arg.setDisplayName('Cooling System:
|
1038
|
-
arg.setUnits(
|
1039
|
-
arg.setDescription("The rated efficiency value of the #{HPXML::
|
1040
|
-
arg.setDefaultValue(
|
1031
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_efficiency', true)
|
1032
|
+
arg.setDisplayName('Cooling System: Efficiency')
|
1033
|
+
arg.setUnits("#{HPXML::UnitsSEER} or #{HPXML::UnitsEER}")
|
1034
|
+
arg.setDescription("The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.")
|
1035
|
+
arg.setDefaultValue(13.0)
|
1041
1036
|
args << arg
|
1042
1037
|
|
1043
1038
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1047,13 +1042,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1047
1042
|
|
1048
1043
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_sensible_heat_fraction', false)
|
1049
1044
|
arg.setDisplayName('Cooling System: Cooling Sensible Heat Fraction')
|
1050
|
-
arg.setDescription(
|
1045
|
+
arg.setDescription("The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.")
|
1051
1046
|
arg.setUnits('Frac')
|
1052
1047
|
args << arg
|
1053
1048
|
|
1054
1049
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('cooling_system_cooling_capacity', true)
|
1055
1050
|
arg.setDisplayName('Cooling System: Cooling Capacity')
|
1056
|
-
arg.setDescription("The output cooling capacity of the cooling system. If using '#{Constants.Auto}', the autosizing algorithm will use ACCA Manual J/S to set the capacity to meet its load served.
|
1051
|
+
arg.setDescription("The output cooling capacity of the cooling system. If using '#{Constants.Auto}', the autosizing algorithm will use ACCA Manual J/S to set the capacity to meet its load served.")
|
1057
1052
|
arg.setUnits('tons')
|
1058
1053
|
arg.setDefaultValue(Constants.Auto)
|
1059
1054
|
args << arg
|
@@ -1067,14 +1062,20 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1067
1062
|
|
1068
1063
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted', true)
|
1069
1064
|
arg.setDisplayName('Cooling System: Is Ducted')
|
1070
|
-
arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::
|
1065
|
+
arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}.")
|
1071
1066
|
arg.setDefaultValue(false)
|
1072
1067
|
args << arg
|
1073
1068
|
|
1074
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1075
|
-
arg.setDisplayName('Cooling System:
|
1076
|
-
arg.setDescription("
|
1077
|
-
arg.setUnits('
|
1069
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_airflow_defect_ratio', false)
|
1070
|
+
arg.setDisplayName('Cooling System: Airflow Defect Ratio')
|
1071
|
+
arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and ducted #{HPXML::HVACTypeMiniSplitAirConditioner}.")
|
1072
|
+
arg.setUnits('Frac')
|
1073
|
+
args << arg
|
1074
|
+
|
1075
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_charge_defect_ratio', false)
|
1076
|
+
arg.setDisplayName('Cooling System: Charge Defect Ratio')
|
1077
|
+
arg.setDescription("The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the cooling system per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies only to #{HPXML::HVACTypeCentralAirConditioner} and #{HPXML::HVACTypeMiniSplitAirConditioner}.")
|
1078
|
+
arg.setUnits('Frac')
|
1078
1079
|
args << arg
|
1079
1080
|
|
1080
1081
|
heat_pump_type_choices = OpenStudio::StringVector.new
|
@@ -1083,6 +1084,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1083
1084
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpMiniSplit
|
1084
1085
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpGroundToAir
|
1085
1086
|
|
1087
|
+
heat_pump_heating_efficiency_type_choices = OpenStudio::StringVector.new
|
1088
|
+
heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF
|
1089
|
+
heat_pump_heating_efficiency_type_choices << HPXML::UnitsCOP
|
1090
|
+
|
1086
1091
|
heat_pump_fuel_choices = OpenStudio::StringVector.new
|
1087
1092
|
heat_pump_fuel_choices << HPXML::FuelTypeElectricity
|
1088
1093
|
|
@@ -1099,32 +1104,30 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1099
1104
|
arg.setDefaultValue('none')
|
1100
1105
|
args << arg
|
1101
1106
|
|
1102
|
-
arg = OpenStudio::Measure::OSArgument::
|
1103
|
-
arg.setDisplayName('Heat Pump:
|
1104
|
-
arg.
|
1105
|
-
arg.
|
1106
|
-
arg.setDefaultValue(7.7)
|
1107
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, true)
|
1108
|
+
arg.setDisplayName('Heat Pump: Heating Efficiency Type')
|
1109
|
+
arg.setDescription("The heating efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsHSPF}. System type #{HPXML::HVACTypeHeatPumpGroundToAir} uses #{HPXML::UnitsCOP}.")
|
1110
|
+
arg.setDefaultValue(HPXML::UnitsHSPF)
|
1107
1111
|
args << arg
|
1108
1112
|
|
1109
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1110
|
-
arg.setDisplayName('Heat Pump:
|
1111
|
-
arg.setUnits(
|
1112
|
-
arg.setDescription(
|
1113
|
-
arg.setDefaultValue(
|
1113
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_efficiency', true)
|
1114
|
+
arg.setDisplayName('Heat Pump: Heating Efficiency')
|
1115
|
+
arg.setUnits("#{HPXML::UnitsHSPF} or #{HPXML::UnitsCOP}")
|
1116
|
+
arg.setDescription('The rated heating efficiency value of the heat pump.')
|
1117
|
+
arg.setDefaultValue(7.7)
|
1114
1118
|
args << arg
|
1115
1119
|
|
1116
|
-
arg = OpenStudio::Measure::OSArgument::
|
1117
|
-
arg.setDisplayName('Heat Pump:
|
1118
|
-
arg.
|
1119
|
-
arg.
|
1120
|
-
arg.setDefaultValue(13.0)
|
1120
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, true)
|
1121
|
+
arg.setDisplayName('Heat Pump: Cooling Efficiency Type')
|
1122
|
+
arg.setDescription("The cooling efficiency type of heat pump. System types #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit} use #{HPXML::UnitsSEER}. System type #{HPXML::HVACTypeHeatPumpGroundToAir} uses #{HPXML::UnitsEER}.")
|
1123
|
+
arg.setDefaultValue(HPXML::UnitsSEER)
|
1121
1124
|
args << arg
|
1122
1125
|
|
1123
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1124
|
-
arg.setDisplayName('Heat Pump:
|
1125
|
-
arg.setUnits(
|
1126
|
-
arg.setDescription(
|
1127
|
-
arg.setDefaultValue(
|
1126
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_efficiency', true)
|
1127
|
+
arg.setDisplayName('Heat Pump: Cooling Efficiency')
|
1128
|
+
arg.setUnits("#{HPXML::UnitsSEER} or #{HPXML::UnitsEER}")
|
1129
|
+
arg.setDescription('The rated cooling efficiency value of the heat pump.')
|
1130
|
+
arg.setDefaultValue(13.0)
|
1128
1131
|
args << arg
|
1129
1132
|
|
1130
1133
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1145,7 +1148,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1145
1148
|
arg.setDefaultValue(Constants.Auto)
|
1146
1149
|
args << arg
|
1147
1150
|
|
1148
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1151
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heat_pump_heating_capacity_17_f', true)
|
1149
1152
|
arg.setDisplayName('Heat Pump: Heating Capacity 17F')
|
1150
1153
|
arg.setDescription("The output heating capacity of the heat pump at 17F. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.")
|
1151
1154
|
arg.setUnits('Btu/hr')
|
@@ -1194,101 +1197,96 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1194
1197
|
|
1195
1198
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_switchover_temp', false)
|
1196
1199
|
arg.setDisplayName('Heat Pump: Backup Heating Switchover Temperature')
|
1197
|
-
arg.setDescription('The temperature at which the heat pump stops operating and the backup heating system starts running. Only applies to air-to-air and mini-split.')
|
1200
|
+
arg.setDescription('The temperature at which the heat pump stops operating and the backup heating system starts running. Only applies to air-to-air and mini-split. If not provided, backup heating will operate as needed when heat pump capacity is insufficient.')
|
1198
1201
|
arg.setUnits('deg-F')
|
1199
1202
|
args << arg
|
1200
1203
|
|
1201
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('
|
1202
|
-
arg.setDisplayName('Heat Pump:
|
1203
|
-
arg.setDescription(
|
1204
|
-
args << arg
|
1205
|
-
|
1206
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_pump_power_watts_per_ton', false)
|
1207
|
-
arg.setDisplayName('Heat Pump: Ground-to-Air Pump Power')
|
1208
|
-
arg.setDescription('Ground loop circulator pump power during operation of the heat pump.')
|
1209
|
-
arg.setUnits('W/ton')
|
1204
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heat_pump_is_ducted', false)
|
1205
|
+
arg.setDisplayName('Heat Pump: Is Ducted')
|
1206
|
+
arg.setDescription("Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}.")
|
1210
1207
|
args << arg
|
1211
1208
|
|
1212
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1213
|
-
arg.setDisplayName('Heat Pump:
|
1214
|
-
arg.setDescription(
|
1215
|
-
arg.setUnits('
|
1216
|
-
args << arg
|
1217
|
-
|
1218
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_heating_weekday_temp', true)
|
1219
|
-
arg.setDisplayName('Heating Setpoint: Weekday Temperature')
|
1220
|
-
arg.setDescription('Specify the weekday heating setpoint temperature.')
|
1221
|
-
arg.setUnits('deg-F')
|
1222
|
-
arg.setDefaultValue(71)
|
1209
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_airflow_defect_ratio', false)
|
1210
|
+
arg.setDisplayName('Heat Pump: Airflow Defect Ratio')
|
1211
|
+
arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, ducted #{HPXML::HVACTypeHeatPumpMiniSplit}, and #{HPXML::HVACTypeHeatPumpGroundToAir}.")
|
1212
|
+
arg.setUnits('Frac')
|
1223
1213
|
args << arg
|
1224
1214
|
|
1225
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1226
|
-
arg.setDisplayName('
|
1227
|
-
arg.setDescription('
|
1228
|
-
arg.setUnits('
|
1229
|
-
arg.setDefaultValue(71)
|
1215
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_charge_defect_ratio', false)
|
1216
|
+
arg.setDisplayName('Heat Pump: Charge Defect Ratio')
|
1217
|
+
arg.setDescription('The refrigerant charge defect ratio, defined as (InstalledCharge - DesignCharge) / DesignCharge, of the heat pump per ANSI/RESNET/ACCA Standard 310. A value of zero means no refrigerant charge defect. Applies to all heat pump types.')
|
1218
|
+
arg.setUnits('Frac')
|
1230
1219
|
args << arg
|
1231
1220
|
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1221
|
+
heating_system_type_2_choices = OpenStudio::StringVector.new
|
1222
|
+
heating_system_type_2_choices << 'none'
|
1223
|
+
heating_system_type_2_choices << HPXML::HVACTypeWallFurnace
|
1224
|
+
heating_system_type_2_choices << HPXML::HVACTypeFloorFurnace
|
1225
|
+
heating_system_type_2_choices << HPXML::HVACTypeBoiler
|
1226
|
+
heating_system_type_2_choices << HPXML::HVACTypeElectricResistance
|
1227
|
+
heating_system_type_2_choices << HPXML::HVACTypeStove
|
1228
|
+
heating_system_type_2_choices << HPXML::HVACTypePortableHeater
|
1229
|
+
heating_system_type_2_choices << HPXML::HVACTypeFireplace
|
1237
1230
|
|
1238
|
-
arg = OpenStudio::Measure::OSArgument::
|
1239
|
-
arg.setDisplayName('Heating
|
1240
|
-
arg.setDescription('
|
1241
|
-
arg.
|
1231
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_type_2', heating_system_type_2_choices, true)
|
1232
|
+
arg.setDisplayName('Heating System 2: Type')
|
1233
|
+
arg.setDescription('The type of the second heating system.')
|
1234
|
+
arg.setDefaultValue('none')
|
1242
1235
|
args << arg
|
1243
1236
|
|
1244
|
-
arg = OpenStudio::Measure::OSArgument::
|
1245
|
-
arg.setDisplayName('Heating
|
1246
|
-
arg.setDescription(
|
1247
|
-
arg.
|
1237
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel_2', heating_system_fuel_choices, true)
|
1238
|
+
arg.setDisplayName('Heating System 2: Fuel Type')
|
1239
|
+
arg.setDescription("The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.")
|
1240
|
+
arg.setDefaultValue(HPXML::FuelTypeElectricity)
|
1248
1241
|
args << arg
|
1249
1242
|
|
1250
|
-
arg = OpenStudio::Measure::OSArgument::
|
1251
|
-
arg.setDisplayName('Heating
|
1252
|
-
arg.
|
1253
|
-
arg.
|
1243
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency_2', true)
|
1244
|
+
arg.setDisplayName('Heating System 2: Rated AFUE or Percent')
|
1245
|
+
arg.setUnits('Frac')
|
1246
|
+
arg.setDescription('For Furnace/WallFurnace/FloorFurnace/Boiler second heating system, the rated AFUE value. For ElectricResistance/Stove/PortableHeater/Fireplace, the rated Percent value.')
|
1247
|
+
arg.setDefaultValue(1.0)
|
1254
1248
|
args << arg
|
1255
1249
|
|
1256
|
-
arg = OpenStudio::Measure::OSArgument::
|
1257
|
-
arg.setDisplayName('
|
1258
|
-
arg.setDescription('
|
1259
|
-
arg.setUnits('
|
1260
|
-
arg.setDefaultValue(
|
1250
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heating_system_heating_capacity_2', true)
|
1251
|
+
arg.setDisplayName('Heating System 2: Heating Capacity')
|
1252
|
+
arg.setDescription("The output heating capacity of the second heating system. If using '#{Constants.Auto}', the autosizing algorithm will use ACCA Manual J/S to set the capacity to meet its load served.")
|
1253
|
+
arg.setUnits('Btu/hr')
|
1254
|
+
arg.setDefaultValue(Constants.Auto)
|
1261
1255
|
args << arg
|
1262
1256
|
|
1263
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1264
|
-
arg.setDisplayName('
|
1265
|
-
arg.setDescription('
|
1266
|
-
arg.setUnits('
|
1267
|
-
arg.setDefaultValue(
|
1257
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served_2', true)
|
1258
|
+
arg.setDisplayName('Heating System 2: Fraction Heat Load Served')
|
1259
|
+
arg.setDescription('The heat load served fraction of the second heating system.')
|
1260
|
+
arg.setUnits('Frac')
|
1261
|
+
arg.setDefaultValue(0.25)
|
1268
1262
|
args << arg
|
1269
1263
|
|
1270
|
-
arg = OpenStudio::Measure::OSArgument::
|
1271
|
-
arg.setDisplayName('
|
1272
|
-
arg.setDescription('Specify the weekday
|
1264
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekday', true)
|
1265
|
+
arg.setDisplayName('Heating Setpoint: Weekday Schedule')
|
1266
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekday heating schedule.')
|
1273
1267
|
arg.setUnits('deg-F')
|
1268
|
+
arg.setDefaultValue('71')
|
1274
1269
|
args << arg
|
1275
1270
|
|
1276
|
-
arg = OpenStudio::Measure::OSArgument::
|
1277
|
-
arg.setDisplayName('
|
1278
|
-
arg.setDescription('Specify the weekend
|
1271
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekend', true)
|
1272
|
+
arg.setDisplayName('Heating Setpoint: Weekend Schedule')
|
1273
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekend heating schedule.')
|
1279
1274
|
arg.setUnits('deg-F')
|
1275
|
+
arg.setDefaultValue('71')
|
1280
1276
|
args << arg
|
1281
1277
|
|
1282
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1278
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekday', true)
|
1283
1279
|
arg.setDisplayName('Cooling Setpoint: Weekday Schedule')
|
1284
|
-
arg.setDescription('Specify the 24-hour comma-separated weekday cooling schedule
|
1280
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekday cooling schedule.')
|
1285
1281
|
arg.setUnits('deg-F')
|
1282
|
+
arg.setDefaultValue('76')
|
1286
1283
|
args << arg
|
1287
1284
|
|
1288
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1285
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekend', true)
|
1289
1286
|
arg.setDisplayName('Cooling Setpoint: Weekend Schedule')
|
1290
|
-
arg.setDescription('Specify the 24-hour comma-separated weekend cooling schedule
|
1287
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekend cooling schedule.')
|
1291
1288
|
arg.setUnits('deg-F')
|
1289
|
+
arg.setDefaultValue('76')
|
1292
1290
|
args << arg
|
1293
1291
|
|
1294
1292
|
duct_leakage_units_choices = OpenStudio::StringVector.new
|
@@ -1385,66 +1383,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1385
1383
|
arg.setDefaultValue(Constants.Auto)
|
1386
1384
|
args << arg
|
1387
1385
|
|
1388
|
-
heating_system_type_2_choices = OpenStudio::StringVector.new
|
1389
|
-
heating_system_type_2_choices << 'none'
|
1390
|
-
heating_system_type_2_choices << HPXML::HVACTypeWallFurnace
|
1391
|
-
heating_system_type_2_choices << HPXML::HVACTypeFloorFurnace
|
1392
|
-
heating_system_type_2_choices << HPXML::HVACTypeElectricResistance
|
1393
|
-
heating_system_type_2_choices << HPXML::HVACTypeStove
|
1394
|
-
heating_system_type_2_choices << HPXML::HVACTypePortableHeater
|
1395
|
-
heating_system_type_2_choices << HPXML::HVACTypeFireplace
|
1396
|
-
|
1397
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_type_2', heating_system_type_2_choices, true)
|
1398
|
-
arg.setDisplayName('Heating System 2: Type')
|
1399
|
-
arg.setDescription('The type of the second heating system.')
|
1400
|
-
arg.setDefaultValue('none')
|
1401
|
-
args << arg
|
1402
|
-
|
1403
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel_2', heating_system_fuel_choices, true)
|
1404
|
-
arg.setDisplayName('Heating System 2: Fuel Type')
|
1405
|
-
arg.setDescription('The fuel type of the second heating system. Ignored for ElectricResistance.')
|
1406
|
-
arg.setDefaultValue(HPXML::FuelTypeElectricity)
|
1407
|
-
args << arg
|
1408
|
-
|
1409
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency_2', true)
|
1410
|
-
arg.setDisplayName('Heating System 2: Rated AFUE or Percent')
|
1411
|
-
arg.setUnits('Frac')
|
1412
|
-
arg.setDescription('For Furnace/WallFurnace/FloorFurnace/Boiler second heating system, the rated AFUE value. For ElectricResistance/Stove/PortableHeater/Fireplace, the rated Percent value.')
|
1413
|
-
arg.setDefaultValue(1.0)
|
1414
|
-
args << arg
|
1415
|
-
|
1416
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heating_system_heating_capacity_2', true)
|
1417
|
-
arg.setDisplayName('Heating System 2: Heating Capacity')
|
1418
|
-
arg.setDescription("The output heating capacity of the second heating system. If using '#{Constants.Auto}', the autosizing algorithm will use ACCA Manual J/S to set the capacity to meet its load served.")
|
1419
|
-
arg.setUnits('Btu/hr')
|
1420
|
-
arg.setDefaultValue(Constants.Auto)
|
1421
|
-
args << arg
|
1422
|
-
|
1423
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served_2', true)
|
1424
|
-
arg.setDisplayName('Heating System 2: Fraction Heat Load Served')
|
1425
|
-
arg.setDescription('The heat load served fraction of the second heating system.')
|
1426
|
-
arg.setUnits('Frac')
|
1427
|
-
arg.setDefaultValue(0.25)
|
1428
|
-
args << arg
|
1429
|
-
|
1430
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_electric_auxiliary_energy_2', false)
|
1431
|
-
arg.setDisplayName('Heating System 2: Electric Auxiliary Energy')
|
1432
|
-
arg.setDescription('The electric auxiliary energy of the second heating system.')
|
1433
|
-
arg.setUnits('kWh/yr')
|
1434
|
-
args << arg
|
1435
|
-
|
1436
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts_2', false)
|
1437
|
-
arg.setDisplayName('Heating System 2: Fan Power')
|
1438
|
-
arg.setDescription("Blower fan power. Ignored for #{HPXML::HVACTypeElectricResistance}.")
|
1439
|
-
arg.setUnits('W/CFM')
|
1440
|
-
args << arg
|
1441
|
-
|
1442
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney_2', true)
|
1443
|
-
arg.setDisplayName('Heating System 2: Has Flue or Chimney')
|
1444
|
-
arg.setDescription('Whether the second heating system has a flue or chimney.')
|
1445
|
-
arg.setDefaultValue(false)
|
1446
|
-
args << arg
|
1447
|
-
|
1448
1386
|
mech_vent_fan_type_choices = OpenStudio::StringVector.new
|
1449
1387
|
mech_vent_fan_type_choices << 'none'
|
1450
1388
|
mech_vent_fan_type_choices << HPXML::MechVentTypeExhaust
|
@@ -1474,11 +1412,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1474
1412
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation', true)
|
1475
1413
|
arg.setDisplayName('Mechanical Ventilation: Hours In Operation')
|
1476
1414
|
arg.setDescription('The hours in operation of the mechanical ventilation.')
|
1477
|
-
arg.setUnits('hrs')
|
1415
|
+
arg.setUnits('hrs/day')
|
1478
1416
|
arg.setDefaultValue(24)
|
1479
1417
|
args << arg
|
1480
1418
|
|
1481
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1419
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true)
|
1482
1420
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency Type')
|
1483
1421
|
arg.setDescription('The total recovery efficiency type of the mechanical ventilation.')
|
1484
1422
|
arg.setDefaultValue('Unadjusted')
|
@@ -1486,20 +1424,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1486
1424
|
|
1487
1425
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', true)
|
1488
1426
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency')
|
1489
|
-
arg.setDescription(
|
1427
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1490
1428
|
arg.setUnits('Frac')
|
1491
1429
|
arg.setDefaultValue(0.48)
|
1492
1430
|
args << arg
|
1493
1431
|
|
1494
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_sensible_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true)
|
1495
|
-
arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency Type')
|
1496
|
-
arg.setDescription('The sensible recovery efficiency type of the mechanical ventilation.')
|
1497
|
-
arg.setDefaultValue('Unadjusted')
|
1498
|
-
args << arg
|
1499
|
-
|
1500
1432
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', true)
|
1501
1433
|
arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency')
|
1502
|
-
arg.setDescription(
|
1434
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1503
1435
|
arg.setUnits('Frac')
|
1504
1436
|
arg.setDefaultValue(0.72)
|
1505
1437
|
args << arg
|
@@ -1526,12 +1458,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1526
1458
|
|
1527
1459
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_preheating_fuel', heating_system_fuel_choices, false)
|
1528
1460
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Fuel')
|
1529
|
-
arg.setDescription('Fuel type of the preconditioning heating equipment.')
|
1461
|
+
arg.setDescription('Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system.')
|
1530
1462
|
args << arg
|
1531
1463
|
|
1532
1464
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_preheating_efficiency', false)
|
1533
1465
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Efficiency')
|
1534
|
-
arg.setDescription('Efficiency of the preconditioning heating equipment.')
|
1466
|
+
arg.setDescription('Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system.')
|
1535
1467
|
arg.setUnits('COP')
|
1536
1468
|
args << arg
|
1537
1469
|
|
@@ -1546,12 +1478,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1546
1478
|
|
1547
1479
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_precooling_fuel', cooling_system_fuel_choices, false)
|
1548
1480
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Fuel')
|
1549
|
-
arg.setDescription('Fuel type of the preconditioning cooling equipment.')
|
1481
|
+
arg.setDescription('Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system.')
|
1550
1482
|
args << arg
|
1551
1483
|
|
1552
1484
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_precooling_efficiency', false)
|
1553
1485
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Efficiency')
|
1554
|
-
arg.setDescription('Efficiency of the preconditioning cooling equipment.')
|
1486
|
+
arg.setDescription('Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system.')
|
1555
1487
|
arg.setUnits('COP')
|
1556
1488
|
args << arg
|
1557
1489
|
|
@@ -1577,11 +1509,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1577
1509
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation_2', true)
|
1578
1510
|
arg.setDisplayName('Mechanical Ventilation 2: Hours In Operation')
|
1579
1511
|
arg.setDescription('The hours in operation of the second mechanical ventilation.')
|
1580
|
-
arg.setUnits('hrs')
|
1512
|
+
arg.setUnits('hrs/day')
|
1581
1513
|
arg.setDefaultValue(24)
|
1582
1514
|
args << arg
|
1583
1515
|
|
1584
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1516
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type_2', mech_vent_recovery_efficiency_type_choices, true)
|
1585
1517
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency Type')
|
1586
1518
|
arg.setDescription('The total recovery efficiency type of the second mechanical ventilation.')
|
1587
1519
|
arg.setDefaultValue('Unadjusted')
|
@@ -1589,20 +1521,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1589
1521
|
|
1590
1522
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency_2', true)
|
1591
1523
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency')
|
1592
|
-
arg.setDescription(
|
1524
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1593
1525
|
arg.setUnits('Frac')
|
1594
1526
|
arg.setDefaultValue(0.48)
|
1595
1527
|
args << arg
|
1596
1528
|
|
1597
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_sensible_recovery_efficiency_type_2', mech_vent_recovery_efficiency_type_choices, true)
|
1598
|
-
arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency Type')
|
1599
|
-
arg.setDescription('The sensible recovery efficiency type of the second mechanical ventilation.')
|
1600
|
-
arg.setDefaultValue('Unadjusted')
|
1601
|
-
args << arg
|
1602
|
-
|
1603
1529
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency_2', true)
|
1604
1530
|
arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency')
|
1605
|
-
arg.setDescription(
|
1531
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1606
1532
|
arg.setUnits('Frac')
|
1607
1533
|
arg.setDefaultValue(0.72)
|
1608
1534
|
args << arg
|
@@ -1614,76 +1540,74 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1614
1540
|
arg.setDefaultValue(30)
|
1615
1541
|
args << arg
|
1616
1542
|
|
1617
|
-
arg = OpenStudio::Measure::OSArgument::
|
1618
|
-
arg.setDisplayName('Kitchen Fans: Present')
|
1619
|
-
arg.setDescription('Whether there are kitchen fans.')
|
1620
|
-
arg.setDefaultValue(false)
|
1621
|
-
args << arg
|
1622
|
-
|
1623
|
-
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_quantity', false)
|
1543
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_quantity', true)
|
1624
1544
|
arg.setDisplayName('Kitchen Fans: Quantity')
|
1625
1545
|
arg.setDescription('The quantity of the kitchen fans.')
|
1626
1546
|
arg.setUnits('#')
|
1547
|
+
arg.setDefaultValue(Constants.Auto)
|
1627
1548
|
args << arg
|
1628
1549
|
|
1629
|
-
arg = OpenStudio::Measure::OSArgument::
|
1550
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_flow_rate', false)
|
1630
1551
|
arg.setDisplayName('Kitchen Fans: Flow Rate')
|
1631
1552
|
arg.setDescription('The flow rate of the kitchen fan.')
|
1632
1553
|
arg.setUnits('CFM')
|
1554
|
+
arg.setDefaultValue(Constants.Auto)
|
1633
1555
|
args << arg
|
1634
1556
|
|
1635
|
-
arg = OpenStudio::Measure::OSArgument::
|
1557
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_hours_in_operation', false)
|
1636
1558
|
arg.setDisplayName('Kitchen Fans: Hours In Operation')
|
1637
1559
|
arg.setDescription('The hours in operation of the kitchen fan.')
|
1638
|
-
arg.setUnits('hrs')
|
1560
|
+
arg.setUnits('hrs/day')
|
1561
|
+
arg.setDefaultValue(Constants.Auto)
|
1639
1562
|
args << arg
|
1640
1563
|
|
1641
|
-
arg = OpenStudio::Measure::OSArgument::
|
1564
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_power', false)
|
1642
1565
|
arg.setDisplayName('Kitchen Fans: Fan Power')
|
1643
1566
|
arg.setDescription('The fan power of the kitchen fan.')
|
1644
1567
|
arg.setUnits('W')
|
1568
|
+
arg.setDefaultValue(Constants.Auto)
|
1645
1569
|
args << arg
|
1646
1570
|
|
1647
|
-
arg = OpenStudio::Measure::OSArgument::
|
1571
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_start_hour', false)
|
1648
1572
|
arg.setDisplayName('Kitchen Fans: Start Hour')
|
1649
1573
|
arg.setDescription('The start hour of the kitchen fan.')
|
1650
1574
|
arg.setUnits('hr')
|
1575
|
+
arg.setDefaultValue(Constants.Auto)
|
1651
1576
|
args << arg
|
1652
1577
|
|
1653
|
-
arg = OpenStudio::Measure::OSArgument::
|
1654
|
-
arg.setDisplayName('Bathroom Fans: Present')
|
1655
|
-
arg.setDescription('Whether there are bathroom fans.')
|
1656
|
-
arg.setDefaultValue(false)
|
1657
|
-
args << arg
|
1658
|
-
|
1659
|
-
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_quantity', false)
|
1578
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_quantity', true)
|
1660
1579
|
arg.setDisplayName('Bathroom Fans: Quantity')
|
1661
1580
|
arg.setDescription('The quantity of the bathroom fans.')
|
1662
1581
|
arg.setUnits('#')
|
1582
|
+
arg.setDefaultValue(Constants.Auto)
|
1663
1583
|
args << arg
|
1664
1584
|
|
1665
|
-
arg = OpenStudio::Measure::OSArgument::
|
1585
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_flow_rate', false)
|
1666
1586
|
arg.setDisplayName('Bathroom Fans: Flow Rate')
|
1667
1587
|
arg.setDescription('The flow rate of the bathroom fans.')
|
1668
1588
|
arg.setUnits('CFM')
|
1589
|
+
arg.setDefaultValue(Constants.Auto)
|
1669
1590
|
args << arg
|
1670
1591
|
|
1671
|
-
arg = OpenStudio::Measure::OSArgument::
|
1592
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_hours_in_operation', false)
|
1672
1593
|
arg.setDisplayName('Bathroom Fans: Hours In Operation')
|
1673
1594
|
arg.setDescription('The hours in operation of the bathroom fans.')
|
1674
|
-
arg.setUnits('hrs')
|
1595
|
+
arg.setUnits('hrs/day')
|
1596
|
+
arg.setDefaultValue(Constants.Auto)
|
1675
1597
|
args << arg
|
1676
1598
|
|
1677
|
-
arg = OpenStudio::Measure::OSArgument::
|
1599
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_power', false)
|
1678
1600
|
arg.setDisplayName('Bathroom Fans: Fan Power')
|
1679
1601
|
arg.setDescription('The fan power of the bathroom fans.')
|
1680
1602
|
arg.setUnits('W')
|
1603
|
+
arg.setDefaultValue(Constants.Auto)
|
1681
1604
|
args << arg
|
1682
1605
|
|
1683
|
-
arg = OpenStudio::Measure::OSArgument::
|
1606
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_start_hour', false)
|
1684
1607
|
arg.setDisplayName('Bathroom Fans: Start Hour')
|
1685
1608
|
arg.setDescription('The start hour of the bathroom fans.')
|
1686
1609
|
arg.setUnits('hr')
|
1610
|
+
arg.setDefaultValue(Constants.Auto)
|
1687
1611
|
args << arg
|
1688
1612
|
|
1689
1613
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', true)
|
@@ -1762,18 +1686,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1762
1686
|
|
1763
1687
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_tank_volume', true)
|
1764
1688
|
arg.setDisplayName('Water Heater: Tank Volume')
|
1765
|
-
arg.setDescription("Nominal volume of water heater tank. Set to #{Constants.Auto} to have volume autosized. Only applies to #{HPXML::WaterHeaterTypeStorage}, #{HPXML::WaterHeaterTypeHeatPump}, and #{HPXML::WaterHeaterTypeCombiStorage}.")
|
1689
|
+
arg.setDescription("Nominal volume of water heater tank. Set to '#{Constants.Auto}' to have volume autosized. Only applies to #{HPXML::WaterHeaterTypeStorage}, #{HPXML::WaterHeaterTypeHeatPump}, and #{HPXML::WaterHeaterTypeCombiStorage}.")
|
1766
1690
|
arg.setUnits('gal')
|
1767
1691
|
arg.setDefaultValue(Constants.Auto)
|
1768
1692
|
args << arg
|
1769
1693
|
|
1770
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_heating_capacity', true)
|
1771
|
-
arg.setDisplayName('Water Heater: Input Capacity')
|
1772
|
-
arg.setDescription("The maximum energy input rating of water heater. Set to #{Constants.Auto} to have this field autosized. Only applies to #{HPXML::WaterHeaterTypeStorage}.")
|
1773
|
-
arg.setUnits('Btu/hr')
|
1774
|
-
arg.setDefaultValue(Constants.Auto)
|
1775
|
-
args << arg
|
1776
|
-
|
1777
1694
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, true)
|
1778
1695
|
arg.setDisplayName('Water Heater: Efficiency Type')
|
1779
1696
|
arg.setDescription('The efficiency type of water heater. Does not apply to space-heating boilers.')
|
@@ -1819,12 +1736,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1819
1736
|
arg.setDefaultValue(Constants.Auto)
|
1820
1737
|
args << arg
|
1821
1738
|
|
1822
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_has_flue_or_chimney', true)
|
1823
|
-
arg.setDisplayName('Water Heater: Has Flue or Chimney')
|
1824
|
-
arg.setDescription('Whether the water heater has a flue or chimney.')
|
1825
|
-
arg.setDefaultValue(false)
|
1826
|
-
args << arg
|
1827
|
-
|
1828
1739
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('water_heater_num_units_served', true)
|
1829
1740
|
arg.setDisplayName('Water Heater: Number of Units Served')
|
1830
1741
|
arg.setDescription("Number of dwelling units served (directly or indirectly) by the water heater. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion water heater tank losses to the unit.")
|
@@ -2262,13 +2173,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2262
2173
|
arg.setDefaultValue(Constants.Auto)
|
2263
2174
|
args << arg
|
2264
2175
|
|
2265
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dehumidifier_present', true)
|
2266
|
-
arg.setDisplayName('Dehumidifier: Present')
|
2267
|
-
arg.setDescription('Whether there is a dehumidifier.')
|
2268
|
-
arg.setDefaultValue(false)
|
2269
|
-
args << arg
|
2270
|
-
|
2271
2176
|
dehumidifier_type_choices = OpenStudio::StringVector.new
|
2177
|
+
dehumidifier_type_choices << 'none'
|
2272
2178
|
dehumidifier_type_choices << HPXML::DehumidifierTypePortable
|
2273
2179
|
dehumidifier_type_choices << HPXML::DehumidifierTypeWholeHome
|
2274
2180
|
|
@@ -2279,26 +2185,19 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2279
2185
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, true)
|
2280
2186
|
arg.setDisplayName('Dehumidifier: Type')
|
2281
2187
|
arg.setDescription('The type of dehumidifier.')
|
2282
|
-
arg.setDefaultValue(
|
2188
|
+
arg.setDefaultValue('none')
|
2283
2189
|
args << arg
|
2284
2190
|
|
2285
2191
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, true)
|
2286
2192
|
arg.setDisplayName('Dehumidifier: Efficiency Type')
|
2287
2193
|
arg.setDescription('The efficiency type of dehumidifier.')
|
2288
|
-
arg.setDefaultValue('
|
2289
|
-
args << arg
|
2290
|
-
|
2291
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency_ef', true)
|
2292
|
-
arg.setDisplayName('Dehumidifier: Energy Factor')
|
2293
|
-
arg.setUnits('liters/kWh')
|
2294
|
-
arg.setDescription('The Energy Factor (EF) of the dehumidifier.')
|
2295
|
-
arg.setDefaultValue(1.8)
|
2194
|
+
arg.setDefaultValue('IntegratedEnergyFactor')
|
2296
2195
|
args << arg
|
2297
2196
|
|
2298
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
2299
|
-
arg.setDisplayName('Dehumidifier:
|
2197
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', true)
|
2198
|
+
arg.setDisplayName('Dehumidifier: Efficiency')
|
2300
2199
|
arg.setUnits('liters/kWh')
|
2301
|
-
arg.setDescription('The
|
2200
|
+
arg.setDescription('The efficiency of the dehumidifier.')
|
2302
2201
|
arg.setDefaultValue(1.5)
|
2303
2202
|
args << arg
|
2304
2203
|
|
@@ -2323,14 +2222,9 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2323
2222
|
arg.setDefaultValue(1)
|
2324
2223
|
args << arg
|
2325
2224
|
|
2326
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_washer_present', true)
|
2327
|
-
arg.setDisplayName('Clothes Washer: Present')
|
2328
|
-
arg.setDescription('Whether there is a clothes washer.')
|
2329
|
-
arg.setDefaultValue(true)
|
2330
|
-
args << arg
|
2331
|
-
|
2332
2225
|
appliance_location_choices = OpenStudio::StringVector.new
|
2333
2226
|
appliance_location_choices << Constants.Auto
|
2227
|
+
appliance_location_choices << 'none'
|
2334
2228
|
appliance_location_choices << HPXML::LocationLivingSpace
|
2335
2229
|
appliance_location_choices << HPXML::LocationBasementConditioned
|
2336
2230
|
appliance_location_choices << HPXML::LocationBasementUnconditioned
|
@@ -2352,21 +2246,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2352
2246
|
|
2353
2247
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, true)
|
2354
2248
|
arg.setDisplayName('Clothes Washer: Efficiency Type')
|
2355
|
-
arg.setDescription('The efficiency type of clothes washer.')
|
2249
|
+
arg.setDescription('The efficiency type of the clothes washer.')
|
2356
2250
|
arg.setDefaultValue('IntegratedModifiedEnergyFactor')
|
2357
2251
|
args << arg
|
2358
2252
|
|
2359
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
2360
|
-
arg.setDisplayName('Clothes Washer:
|
2361
|
-
arg.setUnits('ft^3/kWh-cycle')
|
2362
|
-
arg.setDescription('The Modified Energy Factor (MEF) is the capacity of the clothes container divided by the total clothes washer energy consumption per cycle, where the energy consumption is the sum of the machine electrical energy consumption, the hot water energy consumption, the energy required for removal of the remaining moisture in the wash load, standby energy, and off-mode energy consumption.')
|
2363
|
-
arg.setDefaultValue(Constants.Auto)
|
2364
|
-
args << arg
|
2365
|
-
|
2366
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_washer_efficiency_imef', true)
|
2367
|
-
arg.setDisplayName('Clothes Washer: Integrated Modified Energy Factor')
|
2253
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_washer_efficiency', true)
|
2254
|
+
arg.setDisplayName('Clothes Washer: Efficiency')
|
2368
2255
|
arg.setUnits('ft^3/kWh-cyc')
|
2369
|
-
arg.setDescription('The
|
2256
|
+
arg.setDescription('The efficiency of the clothes washer.')
|
2370
2257
|
arg.setDefaultValue(Constants.Auto)
|
2371
2258
|
args << arg
|
2372
2259
|
|
@@ -2418,12 +2305,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2418
2305
|
arg.setDefaultValue(1.0)
|
2419
2306
|
args << arg
|
2420
2307
|
|
2421
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_dryer_present', true)
|
2422
|
-
arg.setDisplayName('Clothes Dryer: Present')
|
2423
|
-
arg.setDescription('Whether there is a clothes dryer.')
|
2424
|
-
arg.setDefaultValue(true)
|
2425
|
-
args << arg
|
2426
|
-
|
2427
2308
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_location', appliance_location_choices, true)
|
2428
2309
|
arg.setDisplayName('Clothes Dryer: Location')
|
2429
2310
|
arg.setDescription('The space type for the clothes dryer location.')
|
@@ -2438,11 +2319,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2438
2319
|
clothes_dryer_fuel_choices << HPXML::FuelTypeWoodCord
|
2439
2320
|
clothes_dryer_fuel_choices << HPXML::FuelTypeCoal
|
2440
2321
|
|
2441
|
-
clothes_dryer_control_type_choices = OpenStudio::StringVector.new
|
2442
|
-
clothes_dryer_control_type_choices << Constants.Auto
|
2443
|
-
clothes_dryer_control_type_choices << HPXML::ClothesDryerControlTypeTimer
|
2444
|
-
clothes_dryer_control_type_choices << HPXML::ClothesDryerControlTypeMoisture
|
2445
|
-
|
2446
2322
|
clothes_dryer_efficiency_type_choices = OpenStudio::StringVector.new
|
2447
2323
|
clothes_dryer_efficiency_type_choices << 'EnergyFactor'
|
2448
2324
|
clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor'
|
@@ -2455,27 +2331,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2455
2331
|
|
2456
2332
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, true)
|
2457
2333
|
arg.setDisplayName('Clothes Dryer: Efficiency Type')
|
2458
|
-
arg.setDescription('The efficiency type of clothes dryer.')
|
2334
|
+
arg.setDescription('The efficiency type of the clothes dryer.')
|
2459
2335
|
arg.setDefaultValue('CombinedEnergyFactor')
|
2460
2336
|
args << arg
|
2461
2337
|
|
2462
|
-
arg = OpenStudio::Measure::OSArgument::
|
2463
|
-
arg.setDisplayName('Clothes Dryer:
|
2338
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_dryer_efficiency', true)
|
2339
|
+
arg.setDisplayName('Clothes Dryer: Efficiency')
|
2464
2340
|
arg.setUnits('lb/kWh')
|
2465
|
-
arg.setDescription('The
|
2466
|
-
arg.setDefaultValue(3.4615)
|
2467
|
-
args << arg
|
2468
|
-
|
2469
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_dryer_efficiency_cef', true)
|
2470
|
-
arg.setDisplayName('Clothes Dryer: Combined Energy Factor')
|
2471
|
-
arg.setUnits('lb/kWh')
|
2472
|
-
arg.setDescription('The Combined Energy Factor (CEF) measures the pounds of clothing that can be dried per kWh (Fuel equivalent) of electricity, including energy consumed during Stand-by and Off modes.')
|
2473
|
-
arg.setDefaultValue(Constants.Auto)
|
2474
|
-
args << arg
|
2475
|
-
|
2476
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_control_type', clothes_dryer_control_type_choices, true)
|
2477
|
-
arg.setDisplayName('Clothes Dryer: Control Type')
|
2478
|
-
arg.setDescription('Type of control used by the clothes dryer.')
|
2341
|
+
arg.setDescription('The efficiency of the clothes dryer.')
|
2479
2342
|
arg.setDefaultValue(Constants.Auto)
|
2480
2343
|
args << arg
|
2481
2344
|
|
@@ -2492,12 +2355,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2492
2355
|
arg.setDefaultValue(1.0)
|
2493
2356
|
args << arg
|
2494
2357
|
|
2495
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dishwasher_present', true)
|
2496
|
-
arg.setDisplayName('Dishwasher: Present')
|
2497
|
-
arg.setDescription('Whether there is a dishwasher.')
|
2498
|
-
arg.setDefaultValue(true)
|
2499
|
-
args << arg
|
2500
|
-
|
2501
2358
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_location', appliance_location_choices, true)
|
2502
2359
|
arg.setDisplayName('Dishwasher: Location')
|
2503
2360
|
arg.setDescription('The space type for the dishwasher location.')
|
@@ -2514,19 +2371,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2514
2371
|
arg.setDefaultValue('RatedAnnualkWh')
|
2515
2372
|
args << arg
|
2516
2373
|
|
2517
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
2518
|
-
arg.setDisplayName('Dishwasher:
|
2519
|
-
arg.setUnits('
|
2520
|
-
arg.setDescription('The
|
2374
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dishwasher_efficiency', true)
|
2375
|
+
arg.setDisplayName('Dishwasher: Efficiency')
|
2376
|
+
arg.setUnits('RatedAnnualkWh or EnergyFactor')
|
2377
|
+
arg.setDescription('The efficiency of the dishwasher.')
|
2521
2378
|
arg.setDefaultValue(Constants.Auto)
|
2522
2379
|
args << arg
|
2523
2380
|
|
2524
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_efficiency_ef', true)
|
2525
|
-
arg.setDisplayName('Dishwasher: Energy Factor')
|
2526
|
-
arg.setDescription('The energy factor of the dishwasher.')
|
2527
|
-
arg.setDefaultValue(0.46)
|
2528
|
-
args << arg
|
2529
|
-
|
2530
2381
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dishwasher_label_electric_rate', true)
|
2531
2382
|
arg.setDisplayName('Dishwasher: Label Electric Rate')
|
2532
2383
|
arg.setUnits('$/kWh')
|
@@ -2568,12 +2419,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2568
2419
|
arg.setDefaultValue(1.0)
|
2569
2420
|
args << arg
|
2570
2421
|
|
2571
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('refrigerator_present', true)
|
2572
|
-
arg.setDisplayName('Refrigerator: Present')
|
2573
|
-
arg.setDescription('Whether there is a refrigerator.')
|
2574
|
-
arg.setDefaultValue(true)
|
2575
|
-
args << arg
|
2576
|
-
|
2577
2422
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('refrigerator_location', appliance_location_choices, true)
|
2578
2423
|
arg.setDisplayName('Refrigerator: Location')
|
2579
2424
|
arg.setDescription('The space type for the refrigerator location.')
|
@@ -2593,12 +2438,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2593
2438
|
arg.setDefaultValue(1.0)
|
2594
2439
|
args << arg
|
2595
2440
|
|
2596
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('extra_refrigerator_present', true)
|
2597
|
-
arg.setDisplayName('Extra Refrigerator: Present')
|
2598
|
-
arg.setDescription('Whether there is an extra refrigerator.')
|
2599
|
-
arg.setDefaultValue(false)
|
2600
|
-
args << arg
|
2601
|
-
|
2602
2441
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('extra_refrigerator_location', appliance_location_choices, true)
|
2603
2442
|
arg.setDisplayName('Extra Refrigerator: Location')
|
2604
2443
|
arg.setDescription('The space type for the extra refrigerator location.')
|
@@ -2618,12 +2457,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2618
2457
|
arg.setDefaultValue(1.0)
|
2619
2458
|
args << arg
|
2620
2459
|
|
2621
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('freezer_present', true)
|
2622
|
-
arg.setDisplayName('Freezer: Present')
|
2623
|
-
arg.setDescription('Whether there is a freezer.')
|
2624
|
-
arg.setDefaultValue(false)
|
2625
|
-
args << arg
|
2626
|
-
|
2627
2460
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('freezer_location', appliance_location_choices, true)
|
2628
2461
|
arg.setDisplayName('Freezer: Location')
|
2629
2462
|
arg.setDescription('The space type for the freezer location.')
|
@@ -2651,12 +2484,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2651
2484
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord
|
2652
2485
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeCoal
|
2653
2486
|
|
2654
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooking_range_oven_present', true)
|
2655
|
-
arg.setDisplayName('Cooking Range/Oven: Present')
|
2656
|
-
arg.setDescription('Whether there is a cooking range/oven.')
|
2657
|
-
arg.setDefaultValue(true)
|
2658
|
-
args << arg
|
2659
|
-
|
2660
2487
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_location', appliance_location_choices, true)
|
2661
2488
|
arg.setDisplayName('Cooking Range/Oven: Location')
|
2662
2489
|
arg.setDescription('The space type for the cooking range/oven location.')
|
@@ -2725,12 +2552,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2725
2552
|
arg.setDefaultValue(1.0)
|
2726
2553
|
args << arg
|
2727
2554
|
|
2728
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_television_usage_multiplier_2', true)
|
2729
|
-
arg.setDisplayName('Plug Loads: Television Usage Multiplier 2')
|
2730
|
-
arg.setDefaultValue(1.0)
|
2731
|
-
arg.setDescription('Additional multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.')
|
2732
|
-
args << arg
|
2733
|
-
|
2734
2555
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('plug_loads_other_annual_kwh', true)
|
2735
2556
|
arg.setDisplayName('Plug Loads: Other Annual kWh')
|
2736
2557
|
arg.setDescription('The annual energy consumption of the other residual plug loads.')
|
@@ -2758,12 +2579,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2758
2579
|
arg.setDefaultValue(1.0)
|
2759
2580
|
args << arg
|
2760
2581
|
|
2761
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_other_usage_multiplier_2', true)
|
2762
|
-
arg.setDisplayName('Plug Loads: Other Usage Multiplier 2')
|
2763
|
-
arg.setDescription('Additional multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.')
|
2764
|
-
arg.setDefaultValue(1.0)
|
2765
|
-
args << arg
|
2766
|
-
|
2767
2582
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_well_pump_present', true)
|
2768
2583
|
arg.setDisplayName('Plug Loads: Well Pump Present')
|
2769
2584
|
arg.setDescription('Whether there is a well pump.')
|
@@ -2780,13 +2595,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2780
2595
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier', true)
|
2781
2596
|
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier')
|
2782
2597
|
arg.setDescription('Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.')
|
2783
|
-
arg.setDefaultValue(
|
2784
|
-
args << arg
|
2785
|
-
|
2786
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier_2', true)
|
2787
|
-
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier 2')
|
2788
|
-
arg.setDescription('Additional multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.')
|
2789
|
-
arg.setDefaultValue(0.0)
|
2598
|
+
arg.setDefaultValue(1.0)
|
2790
2599
|
args << arg
|
2791
2600
|
|
2792
2601
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_vehicle_present', true)
|
@@ -2805,13 +2614,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2805
2614
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier', true)
|
2806
2615
|
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier')
|
2807
2616
|
arg.setDescription('Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.')
|
2808
|
-
arg.setDefaultValue(
|
2809
|
-
args << arg
|
2810
|
-
|
2811
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier_2', true)
|
2812
|
-
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier 2')
|
2813
|
-
arg.setDescription('Additional multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.')
|
2814
|
-
arg.setDefaultValue(0.0)
|
2617
|
+
arg.setDefaultValue(1.0)
|
2815
2618
|
args << arg
|
2816
2619
|
|
2817
2620
|
fuel_loads_fuel_choices = OpenStudio::StringVector.new
|
@@ -2916,7 +2719,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2916
2719
|
args << arg
|
2917
2720
|
|
2918
2721
|
heater_type_choices = OpenStudio::StringVector.new
|
2919
|
-
heater_type_choices <<
|
2722
|
+
heater_type_choices << HPXML::TypeNone
|
2920
2723
|
heater_type_choices << HPXML::HeaterTypeElectricResistance
|
2921
2724
|
heater_type_choices << HPXML::HeaterTypeGas
|
2922
2725
|
heater_type_choices << HPXML::HeaterTypeHeatPump
|
@@ -2943,7 +2746,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2943
2746
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, true)
|
2944
2747
|
arg.setDisplayName('Pool: Heater Type')
|
2945
2748
|
arg.setDescription("The type of pool heater. Use 'none' if there is no pool heater.")
|
2946
|
-
arg.setDefaultValue(
|
2749
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2947
2750
|
args << arg
|
2948
2751
|
|
2949
2752
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('pool_heater_annual_kwh', true)
|
@@ -2988,7 +2791,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2988
2791
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_tub_heater_type', heater_type_choices, true)
|
2989
2792
|
arg.setDisplayName('Hot Tub: Heater Type')
|
2990
2793
|
arg.setDescription("The type of hot tub heater. Use 'none' if there is no hot tub heater.")
|
2991
|
-
arg.setDefaultValue(
|
2794
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2992
2795
|
args << arg
|
2993
2796
|
|
2994
2797
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('hot_tub_heater_annual_kwh', true)
|
@@ -3023,13 +2826,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3023
2826
|
return false
|
3024
2827
|
end
|
3025
2828
|
|
2829
|
+
Geometry.tear_down_model(model, runner)
|
2830
|
+
|
3026
2831
|
Version.check_openstudio_version()
|
3027
2832
|
|
3028
2833
|
# assign the user inputs to variables
|
3029
|
-
args = get_argument_values(runner, user_arguments)
|
3030
|
-
args
|
3031
|
-
args[:
|
3032
|
-
args[:software_program_version] = runner.getOptionalStringArgumentValue('software_program_version', user_arguments)
|
2834
|
+
args = get_argument_values(runner, arguments(model), user_arguments)
|
2835
|
+
args = Hash[args.collect { |k, v| [k.to_sym, v] }]
|
2836
|
+
args[:geometry_rim_joist_height] /= 12.0
|
3033
2837
|
args[:geometry_roof_pitch] = { '1:12' => 1.0 / 12.0, '2:12' => 2.0 / 12.0, '3:12' => 3.0 / 12.0, '4:12' => 4.0 / 12.0, '5:12' => 5.0 / 12.0, '6:12' => 6.0 / 12.0, '7:12' => 7.0 / 12.0, '8:12' => 8.0 / 12.0, '9:12' => 9.0 / 12.0, '10:12' => 10.0 / 12.0, '11:12' => 11.0 / 12.0, '12:12' => 12.0 / 12.0 }[args[:geometry_roof_pitch]]
|
3034
2838
|
|
3035
2839
|
# Argument error checks
|
@@ -3081,414 +2885,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3081
2885
|
runner.registerInfo("Wrote file: #{hpxml_path}")
|
3082
2886
|
end
|
3083
2887
|
|
3084
|
-
def get_argument_values(runner, user_arguments)
|
3085
|
-
return { simulation_control_timestep: runner.getOptionalIntegerArgumentValue('simulation_control_timestep', user_arguments),
|
3086
|
-
simulation_control_run_period_begin_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_begin_month', user_arguments),
|
3087
|
-
simulation_control_run_period_begin_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_begin_day_of_month', user_arguments),
|
3088
|
-
simulation_control_run_period_end_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_end_month', user_arguments),
|
3089
|
-
simulation_control_run_period_end_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_end_day_of_month', user_arguments),
|
3090
|
-
simulation_control_run_period_calendar_year: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_calendar_year', user_arguments),
|
3091
|
-
simulation_control_daylight_saving_enabled: runner.getOptionalStringArgumentValue('simulation_control_daylight_saving_enabled', user_arguments),
|
3092
|
-
simulation_control_daylight_saving_begin_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_begin_month', user_arguments),
|
3093
|
-
simulation_control_daylight_saving_begin_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_begin_day_of_month', user_arguments),
|
3094
|
-
simulation_control_daylight_saving_end_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_end_month', user_arguments),
|
3095
|
-
simulation_control_daylight_saving_end_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_end_day_of_month', user_arguments),
|
3096
|
-
schedules_type: runner.getStringArgumentValue('schedules_type', user_arguments),
|
3097
|
-
schedules_path: runner.getOptionalStringArgumentValue('schedules_path', user_arguments),
|
3098
|
-
schedules_vacancy_begin_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_begin_month', user_arguments),
|
3099
|
-
schedules_vacancy_begin_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_begin_day_of_month', user_arguments),
|
3100
|
-
schedules_vacancy_end_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_month', user_arguments),
|
3101
|
-
schedules_vacancy_end_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_day_of_month', user_arguments),
|
3102
|
-
schedules_random_seed: runner.getOptionalIntegerArgumentValue('schedules_random_seed', user_arguments),
|
3103
|
-
weather_station_epw_filepath: runner.getStringArgumentValue('weather_station_epw_filepath', user_arguments),
|
3104
|
-
site_type: runner.getOptionalStringArgumentValue('site_type', user_arguments),
|
3105
|
-
geometry_unit_type: runner.getStringArgumentValue('geometry_unit_type', user_arguments),
|
3106
|
-
geometry_cfa: runner.getDoubleArgumentValue('geometry_cfa', user_arguments),
|
3107
|
-
geometry_num_floors_above_grade: runner.getIntegerArgumentValue('geometry_num_floors_above_grade', user_arguments),
|
3108
|
-
geometry_wall_height: runner.getDoubleArgumentValue('geometry_wall_height', user_arguments),
|
3109
|
-
geometry_orientation: runner.getDoubleArgumentValue('geometry_orientation', user_arguments),
|
3110
|
-
geometry_aspect_ratio: runner.getDoubleArgumentValue('geometry_aspect_ratio', user_arguments),
|
3111
|
-
geometry_corridor_position: runner.getStringArgumentValue('geometry_corridor_position', user_arguments),
|
3112
|
-
geometry_corridor_width: runner.getDoubleArgumentValue('geometry_corridor_width', user_arguments),
|
3113
|
-
geometry_inset_width: runner.getDoubleArgumentValue('geometry_inset_width', user_arguments),
|
3114
|
-
geometry_inset_depth: runner.getDoubleArgumentValue('geometry_inset_depth', user_arguments),
|
3115
|
-
geometry_inset_position: runner.getStringArgumentValue('geometry_inset_position', user_arguments),
|
3116
|
-
geometry_balcony_depth: runner.getDoubleArgumentValue('geometry_balcony_depth', user_arguments),
|
3117
|
-
geometry_garage_width: runner.getDoubleArgumentValue('geometry_garage_width', user_arguments),
|
3118
|
-
geometry_garage_depth: runner.getDoubleArgumentValue('geometry_garage_depth', user_arguments),
|
3119
|
-
geometry_garage_protrusion: runner.getDoubleArgumentValue('geometry_garage_protrusion', user_arguments),
|
3120
|
-
geometry_garage_position: runner.getStringArgumentValue('geometry_garage_position', user_arguments),
|
3121
|
-
geometry_foundation_type: runner.getStringArgumentValue('geometry_foundation_type', user_arguments),
|
3122
|
-
geometry_foundation_height: runner.getDoubleArgumentValue('geometry_foundation_height', user_arguments),
|
3123
|
-
geometry_foundation_height_above_grade: runner.getDoubleArgumentValue('geometry_foundation_height_above_grade', user_arguments),
|
3124
|
-
geometry_roof_type: runner.getStringArgumentValue('geometry_roof_type', user_arguments),
|
3125
|
-
geometry_roof_pitch: runner.getStringArgumentValue('geometry_roof_pitch', user_arguments),
|
3126
|
-
geometry_attic_type: runner.getStringArgumentValue('geometry_attic_type', user_arguments),
|
3127
|
-
geometry_eaves_depth: runner.getDoubleArgumentValue('geometry_eaves_depth', user_arguments),
|
3128
|
-
geometry_num_bedrooms: runner.getIntegerArgumentValue('geometry_num_bedrooms', user_arguments),
|
3129
|
-
geometry_num_bathrooms: runner.getStringArgumentValue('geometry_num_bathrooms', user_arguments),
|
3130
|
-
geometry_num_occupants: runner.getStringArgumentValue('geometry_num_occupants', user_arguments),
|
3131
|
-
geometry_level: runner.getOptionalStringArgumentValue('geometry_level', user_arguments),
|
3132
|
-
geometry_horizontal_location: runner.getOptionalStringArgumentValue('geometry_horizontal_location', user_arguments),
|
3133
|
-
geometry_building_num_units: runner.getOptionalIntegerArgumentValue('geometry_building_num_units', user_arguments),
|
3134
|
-
geometry_building_num_bedrooms: runner.getOptionalIntegerArgumentValue('geometry_building_num_bedrooms', user_arguments),
|
3135
|
-
floor_assembly_r: runner.getDoubleArgumentValue('floor_assembly_r', user_arguments),
|
3136
|
-
foundation_wall_insulation_r: runner.getDoubleArgumentValue('foundation_wall_insulation_r', user_arguments),
|
3137
|
-
foundation_wall_insulation_distance_to_top: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_top', user_arguments),
|
3138
|
-
foundation_wall_insulation_distance_to_bottom: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_bottom', user_arguments),
|
3139
|
-
foundation_wall_assembly_r: runner.getOptionalDoubleArgumentValue('foundation_wall_assembly_r', user_arguments),
|
3140
|
-
foundation_wall_thickness: runner.getStringArgumentValue('foundation_wall_thickness', user_arguments),
|
3141
|
-
slab_perimeter_insulation_r: runner.getDoubleArgumentValue('slab_perimeter_insulation_r', user_arguments),
|
3142
|
-
slab_perimeter_depth: runner.getDoubleArgumentValue('slab_perimeter_depth', user_arguments),
|
3143
|
-
slab_under_insulation_r: runner.getDoubleArgumentValue('slab_under_insulation_r', user_arguments),
|
3144
|
-
slab_under_width: runner.getDoubleArgumentValue('slab_under_width', user_arguments),
|
3145
|
-
slab_thickness: runner.getStringArgumentValue('slab_thickness', user_arguments),
|
3146
|
-
slab_carpet_fraction: runner.getStringArgumentValue('slab_carpet_fraction', user_arguments),
|
3147
|
-
slab_carpet_r: runner.getStringArgumentValue('slab_carpet_r', user_arguments),
|
3148
|
-
ceiling_assembly_r: runner.getDoubleArgumentValue('ceiling_assembly_r', user_arguments),
|
3149
|
-
roof_material_type: runner.getOptionalStringArgumentValue('roof_material_type', user_arguments),
|
3150
|
-
roof_color: runner.getStringArgumentValue('roof_color', user_arguments),
|
3151
|
-
roof_assembly_r: runner.getDoubleArgumentValue('roof_assembly_r', user_arguments),
|
3152
|
-
roof_solar_absorptance: runner.getStringArgumentValue('roof_solar_absorptance', user_arguments),
|
3153
|
-
roof_emittance: runner.getStringArgumentValue('roof_emittance', user_arguments),
|
3154
|
-
roof_radiant_barrier: runner.getStringArgumentValue('roof_radiant_barrier', user_arguments),
|
3155
|
-
roof_radiant_barrier_grade: runner.getStringArgumentValue('roof_radiant_barrier_grade', user_arguments),
|
3156
|
-
neighbor_front_distance: runner.getDoubleArgumentValue('neighbor_front_distance', user_arguments),
|
3157
|
-
neighbor_back_distance: runner.getDoubleArgumentValue('neighbor_back_distance', user_arguments),
|
3158
|
-
neighbor_left_distance: runner.getDoubleArgumentValue('neighbor_left_distance', user_arguments),
|
3159
|
-
neighbor_right_distance: runner.getDoubleArgumentValue('neighbor_right_distance', user_arguments),
|
3160
|
-
neighbor_front_height: runner.getStringArgumentValue('neighbor_front_height', user_arguments),
|
3161
|
-
neighbor_back_height: runner.getStringArgumentValue('neighbor_back_height', user_arguments),
|
3162
|
-
neighbor_left_height: runner.getStringArgumentValue('neighbor_left_height', user_arguments),
|
3163
|
-
neighbor_right_height: runner.getStringArgumentValue('neighbor_right_height', user_arguments),
|
3164
|
-
wall_type: runner.getStringArgumentValue('wall_type', user_arguments),
|
3165
|
-
wall_siding_type: runner.getOptionalStringArgumentValue('wall_siding_type', user_arguments),
|
3166
|
-
wall_color: runner.getStringArgumentValue('wall_color', user_arguments),
|
3167
|
-
wall_assembly_r: runner.getDoubleArgumentValue('wall_assembly_r', user_arguments),
|
3168
|
-
wall_solar_absorptance: runner.getStringArgumentValue('wall_solar_absorptance', user_arguments),
|
3169
|
-
wall_emittance: runner.getStringArgumentValue('wall_emittance', user_arguments),
|
3170
|
-
window_front_wwr: runner.getDoubleArgumentValue('window_front_wwr', user_arguments),
|
3171
|
-
window_back_wwr: runner.getDoubleArgumentValue('window_back_wwr', user_arguments),
|
3172
|
-
window_left_wwr: runner.getDoubleArgumentValue('window_left_wwr', user_arguments),
|
3173
|
-
window_right_wwr: runner.getDoubleArgumentValue('window_right_wwr', user_arguments),
|
3174
|
-
window_area_front: runner.getDoubleArgumentValue('window_area_front', user_arguments),
|
3175
|
-
window_area_back: runner.getDoubleArgumentValue('window_area_back', user_arguments),
|
3176
|
-
window_area_left: runner.getDoubleArgumentValue('window_area_left', user_arguments),
|
3177
|
-
window_area_right: runner.getDoubleArgumentValue('window_area_right', user_arguments),
|
3178
|
-
window_aspect_ratio: runner.getDoubleArgumentValue('window_aspect_ratio', user_arguments),
|
3179
|
-
window_fraction_operable: runner.getOptionalDoubleArgumentValue('window_fraction_operable', user_arguments),
|
3180
|
-
window_ufactor: runner.getDoubleArgumentValue('window_ufactor', user_arguments),
|
3181
|
-
window_shgc: runner.getDoubleArgumentValue('window_shgc', user_arguments),
|
3182
|
-
window_interior_shading_winter: runner.getOptionalDoubleArgumentValue('window_interior_shading_winter', user_arguments),
|
3183
|
-
window_interior_shading_summer: runner.getOptionalDoubleArgumentValue('window_interior_shading_summer', user_arguments),
|
3184
|
-
overhangs_front_depth: runner.getDoubleArgumentValue('overhangs_front_depth', user_arguments),
|
3185
|
-
overhangs_front_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_front_distance_to_top_of_window', user_arguments),
|
3186
|
-
overhangs_back_depth: runner.getDoubleArgumentValue('overhangs_back_depth', user_arguments),
|
3187
|
-
overhangs_back_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_back_distance_to_top_of_window', user_arguments),
|
3188
|
-
overhangs_left_depth: runner.getDoubleArgumentValue('overhangs_left_depth', user_arguments),
|
3189
|
-
overhangs_left_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_left_distance_to_top_of_window', user_arguments),
|
3190
|
-
overhangs_right_depth: runner.getDoubleArgumentValue('overhangs_right_depth', user_arguments),
|
3191
|
-
overhangs_right_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_right_distance_to_top_of_window', user_arguments),
|
3192
|
-
skylight_area_front: runner.getDoubleArgumentValue('skylight_area_front', user_arguments),
|
3193
|
-
skylight_area_back: runner.getDoubleArgumentValue('skylight_area_back', user_arguments),
|
3194
|
-
skylight_area_left: runner.getDoubleArgumentValue('skylight_area_left', user_arguments),
|
3195
|
-
skylight_area_right: runner.getDoubleArgumentValue('skylight_area_right', user_arguments),
|
3196
|
-
skylight_ufactor: runner.getDoubleArgumentValue('skylight_ufactor', user_arguments),
|
3197
|
-
skylight_shgc: runner.getDoubleArgumentValue('skylight_shgc', user_arguments),
|
3198
|
-
door_area: runner.getDoubleArgumentValue('door_area', user_arguments),
|
3199
|
-
door_rvalue: runner.getDoubleArgumentValue('door_rvalue', user_arguments),
|
3200
|
-
air_leakage_units: runner.getStringArgumentValue('air_leakage_units', user_arguments),
|
3201
|
-
air_leakage_house_pressure: runner.getDoubleArgumentValue('air_leakage_house_pressure', user_arguments),
|
3202
|
-
air_leakage_value: runner.getDoubleArgumentValue('air_leakage_value', user_arguments),
|
3203
|
-
air_leakage_shelter_coefficient: runner.getStringArgumentValue('air_leakage_shelter_coefficient', user_arguments),
|
3204
|
-
heating_system_type: runner.getStringArgumentValue('heating_system_type', user_arguments),
|
3205
|
-
heating_system_fuel: runner.getStringArgumentValue('heating_system_fuel', user_arguments),
|
3206
|
-
heating_system_heating_efficiency: runner.getDoubleArgumentValue('heating_system_heating_efficiency', user_arguments),
|
3207
|
-
heating_system_heating_capacity: runner.getStringArgumentValue('heating_system_heating_capacity', user_arguments),
|
3208
|
-
heating_system_fraction_heat_load_served: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served', user_arguments),
|
3209
|
-
heating_system_electric_auxiliary_energy: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy', user_arguments),
|
3210
|
-
heating_system_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts_per_cfm', user_arguments),
|
3211
|
-
heating_system_fan_power_watts: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts', user_arguments),
|
3212
|
-
heating_system_has_flue_or_chimney: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney', user_arguments),
|
3213
|
-
cooling_system_type: runner.getStringArgumentValue('cooling_system_type', user_arguments),
|
3214
|
-
cooling_system_cooling_efficiency_seer: runner.getDoubleArgumentValue('cooling_system_cooling_efficiency_seer', user_arguments),
|
3215
|
-
cooling_system_cooling_efficiency_eer: runner.getDoubleArgumentValue('cooling_system_cooling_efficiency_eer', user_arguments),
|
3216
|
-
cooling_system_cooling_compressor_type: runner.getOptionalStringArgumentValue('cooling_system_cooling_compressor_type', user_arguments),
|
3217
|
-
cooling_system_cooling_sensible_heat_fraction: runner.getOptionalDoubleArgumentValue('cooling_system_cooling_sensible_heat_fraction', user_arguments),
|
3218
|
-
cooling_system_cooling_capacity: runner.getStringArgumentValue('cooling_system_cooling_capacity', user_arguments),
|
3219
|
-
cooling_system_fraction_cool_load_served: runner.getDoubleArgumentValue('cooling_system_fraction_cool_load_served', user_arguments),
|
3220
|
-
cooling_system_is_ducted: runner.getBoolArgumentValue('cooling_system_is_ducted', user_arguments),
|
3221
|
-
cooling_system_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('cooling_system_fan_power_watts_per_cfm', user_arguments),
|
3222
|
-
heat_pump_type: runner.getStringArgumentValue('heat_pump_type', user_arguments),
|
3223
|
-
heat_pump_heating_efficiency_hspf: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_hspf', user_arguments),
|
3224
|
-
heat_pump_heating_efficiency_cop: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_cop', user_arguments),
|
3225
|
-
heat_pump_cooling_efficiency_seer: runner.getDoubleArgumentValue('heat_pump_cooling_efficiency_seer', user_arguments),
|
3226
|
-
heat_pump_cooling_efficiency_eer: runner.getDoubleArgumentValue('heat_pump_cooling_efficiency_eer', user_arguments),
|
3227
|
-
heat_pump_cooling_compressor_type: runner.getOptionalStringArgumentValue('heat_pump_cooling_compressor_type', user_arguments),
|
3228
|
-
heat_pump_cooling_sensible_heat_fraction: runner.getOptionalDoubleArgumentValue('heat_pump_cooling_sensible_heat_fraction', user_arguments),
|
3229
|
-
heat_pump_heating_capacity: runner.getStringArgumentValue('heat_pump_heating_capacity', user_arguments),
|
3230
|
-
heat_pump_heating_capacity_17F: runner.getStringArgumentValue('heat_pump_heating_capacity_17F', user_arguments),
|
3231
|
-
heat_pump_cooling_capacity: runner.getStringArgumentValue('heat_pump_cooling_capacity', user_arguments),
|
3232
|
-
heat_pump_fraction_heat_load_served: runner.getDoubleArgumentValue('heat_pump_fraction_heat_load_served', user_arguments),
|
3233
|
-
heat_pump_fraction_cool_load_served: runner.getDoubleArgumentValue('heat_pump_fraction_cool_load_served', user_arguments),
|
3234
|
-
heat_pump_backup_fuel: runner.getStringArgumentValue('heat_pump_backup_fuel', user_arguments),
|
3235
|
-
heat_pump_backup_heating_efficiency: runner.getDoubleArgumentValue('heat_pump_backup_heating_efficiency', user_arguments),
|
3236
|
-
heat_pump_backup_heating_capacity: runner.getStringArgumentValue('heat_pump_backup_heating_capacity', user_arguments),
|
3237
|
-
heat_pump_backup_heating_switchover_temp: runner.getOptionalDoubleArgumentValue('heat_pump_backup_heating_switchover_temp', user_arguments),
|
3238
|
-
heat_pump_mini_split_is_ducted: runner.getOptionalStringArgumentValue('heat_pump_mini_split_is_ducted', user_arguments),
|
3239
|
-
heat_pump_pump_power_watts_per_ton: runner.getOptionalDoubleArgumentValue('heat_pump_pump_power_watts_per_ton', user_arguments),
|
3240
|
-
heat_pump_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('heat_pump_fan_power_watts_per_cfm', user_arguments),
|
3241
|
-
setpoint_heating_weekday_temp: runner.getDoubleArgumentValue('setpoint_heating_weekday_temp', user_arguments),
|
3242
|
-
setpoint_heating_weekend_temp: runner.getDoubleArgumentValue('setpoint_heating_weekend_temp', user_arguments),
|
3243
|
-
setpoint_heating_weekday_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_heating_weekday_offset_magnitude', user_arguments),
|
3244
|
-
setpoint_heating_weekend_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_heating_weekend_offset_magnitude', user_arguments),
|
3245
|
-
setpoint_heating_weekday_schedule: runner.getOptionalStringArgumentValue('setpoint_heating_weekday_schedule', user_arguments),
|
3246
|
-
setpoint_heating_weekend_schedule: runner.getOptionalStringArgumentValue('setpoint_heating_weekend_schedule', user_arguments),
|
3247
|
-
setpoint_cooling_weekday_temp: runner.getDoubleArgumentValue('setpoint_cooling_weekday_temp', user_arguments),
|
3248
|
-
setpoint_cooling_weekend_temp: runner.getDoubleArgumentValue('setpoint_cooling_weekend_temp', user_arguments),
|
3249
|
-
setpoint_cooling_weekday_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_cooling_weekday_offset_magnitude', user_arguments),
|
3250
|
-
setpoint_cooling_weekend_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_cooling_weekend_offset_magnitude', user_arguments),
|
3251
|
-
setpoint_cooling_weekday_schedule: runner.getOptionalStringArgumentValue('setpoint_cooling_weekday_schedule', user_arguments),
|
3252
|
-
setpoint_cooling_weekend_schedule: runner.getOptionalStringArgumentValue('setpoint_cooling_weekend_schedule', user_arguments),
|
3253
|
-
ducts_supply_leakage_units: runner.getStringArgumentValue('ducts_supply_leakage_units', user_arguments),
|
3254
|
-
ducts_return_leakage_units: runner.getStringArgumentValue('ducts_return_leakage_units', user_arguments),
|
3255
|
-
ducts_supply_leakage_value: runner.getDoubleArgumentValue('ducts_supply_leakage_value', user_arguments),
|
3256
|
-
ducts_return_leakage_value: runner.getDoubleArgumentValue('ducts_return_leakage_value', user_arguments),
|
3257
|
-
ducts_supply_insulation_r: runner.getDoubleArgumentValue('ducts_supply_insulation_r', user_arguments),
|
3258
|
-
ducts_return_insulation_r: runner.getDoubleArgumentValue('ducts_return_insulation_r', user_arguments),
|
3259
|
-
ducts_supply_location: runner.getStringArgumentValue('ducts_supply_location', user_arguments),
|
3260
|
-
ducts_return_location: runner.getStringArgumentValue('ducts_return_location', user_arguments),
|
3261
|
-
ducts_supply_surface_area: runner.getStringArgumentValue('ducts_supply_surface_area', user_arguments),
|
3262
|
-
ducts_return_surface_area: runner.getStringArgumentValue('ducts_return_surface_area', user_arguments),
|
3263
|
-
ducts_number_of_return_registers: runner.getStringArgumentValue('ducts_number_of_return_registers', user_arguments),
|
3264
|
-
heating_system_type_2: runner.getStringArgumentValue('heating_system_type_2', user_arguments),
|
3265
|
-
heating_system_fuel_2: runner.getStringArgumentValue('heating_system_fuel_2', user_arguments),
|
3266
|
-
heating_system_heating_efficiency_2: runner.getDoubleArgumentValue('heating_system_heating_efficiency_2', user_arguments),
|
3267
|
-
heating_system_heating_capacity_2: runner.getStringArgumentValue('heating_system_heating_capacity_2', user_arguments),
|
3268
|
-
heating_system_fraction_heat_load_served_2: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served_2', user_arguments),
|
3269
|
-
heating_system_electric_auxiliary_energy_2: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy_2', user_arguments),
|
3270
|
-
heating_system_fan_power_watts_2: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts_2', user_arguments),
|
3271
|
-
heating_system_has_flue_or_chimney_2: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney_2', user_arguments),
|
3272
|
-
mech_vent_fan_type: runner.getStringArgumentValue('mech_vent_fan_type', user_arguments),
|
3273
|
-
mech_vent_flow_rate: runner.getDoubleArgumentValue('mech_vent_flow_rate', user_arguments),
|
3274
|
-
mech_vent_hours_in_operation: runner.getDoubleArgumentValue('mech_vent_hours_in_operation', user_arguments),
|
3275
|
-
mech_vent_total_recovery_efficiency_type: runner.getStringArgumentValue('mech_vent_total_recovery_efficiency_type', user_arguments),
|
3276
|
-
mech_vent_total_recovery_efficiency: runner.getDoubleArgumentValue('mech_vent_total_recovery_efficiency', user_arguments),
|
3277
|
-
mech_vent_sensible_recovery_efficiency_type: runner.getStringArgumentValue('mech_vent_sensible_recovery_efficiency_type', user_arguments),
|
3278
|
-
mech_vent_sensible_recovery_efficiency: runner.getDoubleArgumentValue('mech_vent_sensible_recovery_efficiency', user_arguments),
|
3279
|
-
mech_vent_fan_power: runner.getDoubleArgumentValue('mech_vent_fan_power', user_arguments),
|
3280
|
-
mech_vent_num_units_served: runner.getIntegerArgumentValue('mech_vent_num_units_served', user_arguments),
|
3281
|
-
shared_mech_vent_frac_recirculation: runner.getOptionalDoubleArgumentValue('shared_mech_vent_frac_recirculation', user_arguments),
|
3282
|
-
shared_mech_vent_preheating_fuel: runner.getOptionalStringArgumentValue('shared_mech_vent_preheating_fuel', user_arguments),
|
3283
|
-
shared_mech_vent_preheating_efficiency: runner.getOptionalDoubleArgumentValue('shared_mech_vent_preheating_efficiency', user_arguments),
|
3284
|
-
shared_mech_vent_preheating_fraction_heat_load_served: runner.getOptionalDoubleArgumentValue('shared_mech_vent_preheating_fraction_heat_load_served', user_arguments),
|
3285
|
-
shared_mech_vent_precooling_fuel: runner.getOptionalStringArgumentValue('shared_mech_vent_precooling_fuel', user_arguments),
|
3286
|
-
shared_mech_vent_precooling_efficiency: runner.getOptionalDoubleArgumentValue('shared_mech_vent_precooling_efficiency', user_arguments),
|
3287
|
-
shared_mech_vent_precooling_fraction_cool_load_served: runner.getOptionalDoubleArgumentValue('shared_mech_vent_precooling_fraction_cool_load_served', user_arguments),
|
3288
|
-
mech_vent_fan_type_2: runner.getStringArgumentValue('mech_vent_fan_type_2', user_arguments),
|
3289
|
-
mech_vent_flow_rate_2: runner.getDoubleArgumentValue('mech_vent_flow_rate_2', user_arguments),
|
3290
|
-
mech_vent_hours_in_operation_2: runner.getDoubleArgumentValue('mech_vent_hours_in_operation_2', user_arguments),
|
3291
|
-
mech_vent_total_recovery_efficiency_type_2: runner.getStringArgumentValue('mech_vent_total_recovery_efficiency_type_2', user_arguments),
|
3292
|
-
mech_vent_total_recovery_efficiency_2: runner.getDoubleArgumentValue('mech_vent_total_recovery_efficiency_2', user_arguments),
|
3293
|
-
mech_vent_sensible_recovery_efficiency_type_2: runner.getStringArgumentValue('mech_vent_sensible_recovery_efficiency_type_2', user_arguments),
|
3294
|
-
mech_vent_sensible_recovery_efficiency_2: runner.getDoubleArgumentValue('mech_vent_sensible_recovery_efficiency_2', user_arguments),
|
3295
|
-
mech_vent_fan_power_2: runner.getDoubleArgumentValue('mech_vent_fan_power_2', user_arguments),
|
3296
|
-
kitchen_fans_present: runner.getBoolArgumentValue('kitchen_fans_present', user_arguments),
|
3297
|
-
kitchen_fans_quantity: runner.getOptionalIntegerArgumentValue('kitchen_fans_quantity', user_arguments),
|
3298
|
-
kitchen_fans_flow_rate: runner.getOptionalDoubleArgumentValue('kitchen_fans_flow_rate', user_arguments),
|
3299
|
-
kitchen_fans_hours_in_operation: runner.getOptionalDoubleArgumentValue('kitchen_fans_hours_in_operation', user_arguments),
|
3300
|
-
kitchen_fans_power: runner.getOptionalDoubleArgumentValue('kitchen_fans_power', user_arguments),
|
3301
|
-
kitchen_fans_start_hour: runner.getOptionalIntegerArgumentValue('kitchen_fans_start_hour', user_arguments),
|
3302
|
-
bathroom_fans_present: runner.getBoolArgumentValue('bathroom_fans_present', user_arguments),
|
3303
|
-
bathroom_fans_quantity: runner.getOptionalIntegerArgumentValue('bathroom_fans_quantity', user_arguments),
|
3304
|
-
bathroom_fans_flow_rate: runner.getOptionalDoubleArgumentValue('bathroom_fans_flow_rate', user_arguments),
|
3305
|
-
bathroom_fans_hours_in_operation: runner.getOptionalDoubleArgumentValue('bathroom_fans_hours_in_operation', user_arguments),
|
3306
|
-
bathroom_fans_power: runner.getOptionalDoubleArgumentValue('bathroom_fans_power', user_arguments),
|
3307
|
-
bathroom_fans_start_hour: runner.getOptionalIntegerArgumentValue('bathroom_fans_start_hour', user_arguments),
|
3308
|
-
whole_house_fan_present: runner.getBoolArgumentValue('whole_house_fan_present', user_arguments),
|
3309
|
-
whole_house_fan_flow_rate: runner.getDoubleArgumentValue('whole_house_fan_flow_rate', user_arguments),
|
3310
|
-
whole_house_fan_power: runner.getDoubleArgumentValue('whole_house_fan_power', user_arguments),
|
3311
|
-
water_heater_type: runner.getStringArgumentValue('water_heater_type', user_arguments),
|
3312
|
-
water_heater_fuel_type: runner.getStringArgumentValue('water_heater_fuel_type', user_arguments),
|
3313
|
-
water_heater_location: runner.getStringArgumentValue('water_heater_location', user_arguments),
|
3314
|
-
water_heater_tank_volume: runner.getStringArgumentValue('water_heater_tank_volume', user_arguments),
|
3315
|
-
water_heater_heating_capacity: runner.getStringArgumentValue('water_heater_heating_capacity', user_arguments),
|
3316
|
-
water_heater_efficiency_type: runner.getStringArgumentValue('water_heater_efficiency_type', user_arguments),
|
3317
|
-
water_heater_efficiency: runner.getDoubleArgumentValue('water_heater_efficiency', user_arguments),
|
3318
|
-
water_heater_first_hour_rating: runner.getDoubleArgumentValue('water_heater_first_hour_rating', user_arguments),
|
3319
|
-
water_heater_recovery_efficiency: runner.getStringArgumentValue('water_heater_recovery_efficiency', user_arguments),
|
3320
|
-
water_heater_standby_loss: runner.getOptionalDoubleArgumentValue('water_heater_standby_loss', user_arguments),
|
3321
|
-
water_heater_jacket_rvalue: runner.getOptionalDoubleArgumentValue('water_heater_jacket_rvalue', user_arguments),
|
3322
|
-
water_heater_setpoint_temperature: runner.getStringArgumentValue('water_heater_setpoint_temperature', user_arguments),
|
3323
|
-
water_heater_has_flue_or_chimney: runner.getBoolArgumentValue('water_heater_has_flue_or_chimney', user_arguments),
|
3324
|
-
water_heater_num_units_served: runner.getIntegerArgumentValue('water_heater_num_units_served', user_arguments),
|
3325
|
-
dhw_distribution_system_type: runner.getStringArgumentValue('dhw_distribution_system_type', user_arguments),
|
3326
|
-
dhw_distribution_standard_piping_length: runner.getStringArgumentValue('dhw_distribution_standard_piping_length', user_arguments),
|
3327
|
-
dhw_distribution_recirc_control_type: runner.getStringArgumentValue('dhw_distribution_recirc_control_type', user_arguments),
|
3328
|
-
dhw_distribution_recirc_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_piping_length', user_arguments),
|
3329
|
-
dhw_distribution_recirc_branch_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_branch_piping_length', user_arguments),
|
3330
|
-
dhw_distribution_recirc_pump_power: runner.getStringArgumentValue('dhw_distribution_recirc_pump_power', user_arguments),
|
3331
|
-
dhw_distribution_pipe_r: runner.getStringArgumentValue('dhw_distribution_pipe_r', user_arguments),
|
3332
|
-
dwhr_facilities_connected: runner.getStringArgumentValue('dwhr_facilities_connected', user_arguments),
|
3333
|
-
dwhr_equal_flow: runner.getBoolArgumentValue('dwhr_equal_flow', user_arguments),
|
3334
|
-
dwhr_efficiency: runner.getDoubleArgumentValue('dwhr_efficiency', user_arguments),
|
3335
|
-
water_fixtures_shower_low_flow: runner.getBoolArgumentValue('water_fixtures_shower_low_flow', user_arguments),
|
3336
|
-
water_fixtures_sink_low_flow: runner.getBoolArgumentValue('water_fixtures_sink_low_flow', user_arguments),
|
3337
|
-
water_fixtures_usage_multiplier: runner.getDoubleArgumentValue('water_fixtures_usage_multiplier', user_arguments),
|
3338
|
-
solar_thermal_system_type: runner.getStringArgumentValue('solar_thermal_system_type', user_arguments),
|
3339
|
-
solar_thermal_collector_area: runner.getDoubleArgumentValue('solar_thermal_collector_area', user_arguments),
|
3340
|
-
solar_thermal_collector_loop_type: runner.getStringArgumentValue('solar_thermal_collector_loop_type', user_arguments),
|
3341
|
-
solar_thermal_collector_type: runner.getStringArgumentValue('solar_thermal_collector_type', user_arguments),
|
3342
|
-
solar_thermal_collector_azimuth: runner.getDoubleArgumentValue('solar_thermal_collector_azimuth', user_arguments),
|
3343
|
-
solar_thermal_collector_tilt: runner.getStringArgumentValue('solar_thermal_collector_tilt', user_arguments),
|
3344
|
-
solar_thermal_collector_rated_optical_efficiency: runner.getDoubleArgumentValue('solar_thermal_collector_rated_optical_efficiency', user_arguments),
|
3345
|
-
solar_thermal_collector_rated_thermal_losses: runner.getDoubleArgumentValue('solar_thermal_collector_rated_thermal_losses', user_arguments),
|
3346
|
-
solar_thermal_storage_volume: runner.getStringArgumentValue('solar_thermal_storage_volume', user_arguments),
|
3347
|
-
solar_thermal_solar_fraction: runner.getDoubleArgumentValue('solar_thermal_solar_fraction', user_arguments),
|
3348
|
-
pv_system_module_type_1: runner.getStringArgumentValue('pv_system_module_type_1', user_arguments),
|
3349
|
-
pv_system_location_1: runner.getStringArgumentValue('pv_system_location_1', user_arguments),
|
3350
|
-
pv_system_tracking_1: runner.getStringArgumentValue('pv_system_tracking_1', user_arguments),
|
3351
|
-
pv_system_array_azimuth_1: runner.getDoubleArgumentValue('pv_system_array_azimuth_1', user_arguments),
|
3352
|
-
pv_system_array_tilt_1: runner.getStringArgumentValue('pv_system_array_tilt_1', user_arguments),
|
3353
|
-
pv_system_max_power_output_1: runner.getDoubleArgumentValue('pv_system_max_power_output_1', user_arguments),
|
3354
|
-
pv_system_inverter_efficiency_1: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_1', user_arguments),
|
3355
|
-
pv_system_system_losses_fraction_1: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_1', user_arguments),
|
3356
|
-
pv_system_num_units_served_1: runner.getIntegerArgumentValue('pv_system_num_units_served_1', user_arguments),
|
3357
|
-
pv_system_module_type_2: runner.getStringArgumentValue('pv_system_module_type_2', user_arguments),
|
3358
|
-
pv_system_location_2: runner.getStringArgumentValue('pv_system_location_2', user_arguments),
|
3359
|
-
pv_system_tracking_2: runner.getStringArgumentValue('pv_system_tracking_2', user_arguments),
|
3360
|
-
pv_system_array_azimuth_2: runner.getDoubleArgumentValue('pv_system_array_azimuth_2', user_arguments),
|
3361
|
-
pv_system_array_tilt_2: runner.getStringArgumentValue('pv_system_array_tilt_2', user_arguments),
|
3362
|
-
pv_system_max_power_output_2: runner.getDoubleArgumentValue('pv_system_max_power_output_2', user_arguments),
|
3363
|
-
pv_system_inverter_efficiency_2: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_2', user_arguments),
|
3364
|
-
pv_system_system_losses_fraction_2: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_2', user_arguments),
|
3365
|
-
pv_system_num_units_served_2: runner.getIntegerArgumentValue('pv_system_num_units_served_2', user_arguments),
|
3366
|
-
lighting_fraction_cfl_interior: runner.getDoubleArgumentValue('lighting_fraction_cfl_interior', user_arguments),
|
3367
|
-
lighting_fraction_lfl_interior: runner.getDoubleArgumentValue('lighting_fraction_lfl_interior', user_arguments),
|
3368
|
-
lighting_fraction_led_interior: runner.getDoubleArgumentValue('lighting_fraction_led_interior', user_arguments),
|
3369
|
-
lighting_usage_multiplier_interior: runner.getDoubleArgumentValue('lighting_usage_multiplier_interior', user_arguments),
|
3370
|
-
lighting_fraction_cfl_exterior: runner.getDoubleArgumentValue('lighting_fraction_cfl_exterior', user_arguments),
|
3371
|
-
lighting_fraction_lfl_exterior: runner.getDoubleArgumentValue('lighting_fraction_lfl_exterior', user_arguments),
|
3372
|
-
lighting_fraction_led_exterior: runner.getDoubleArgumentValue('lighting_fraction_led_exterior', user_arguments),
|
3373
|
-
lighting_usage_multiplier_exterior: runner.getDoubleArgumentValue('lighting_usage_multiplier_exterior', user_arguments),
|
3374
|
-
lighting_fraction_cfl_garage: runner.getDoubleArgumentValue('lighting_fraction_cfl_garage', user_arguments),
|
3375
|
-
lighting_fraction_lfl_garage: runner.getDoubleArgumentValue('lighting_fraction_lfl_garage', user_arguments),
|
3376
|
-
lighting_fraction_led_garage: runner.getDoubleArgumentValue('lighting_fraction_led_garage', user_arguments),
|
3377
|
-
lighting_usage_multiplier_garage: runner.getDoubleArgumentValue('lighting_usage_multiplier_garage', user_arguments),
|
3378
|
-
holiday_lighting_present: runner.getBoolArgumentValue('holiday_lighting_present', user_arguments),
|
3379
|
-
holiday_lighting_daily_kwh: runner.getStringArgumentValue('holiday_lighting_daily_kwh', user_arguments),
|
3380
|
-
holiday_lighting_period_begin_month: runner.getStringArgumentValue('holiday_lighting_period_begin_month', user_arguments),
|
3381
|
-
holiday_lighting_period_begin_day_of_month: runner.getStringArgumentValue('holiday_lighting_period_begin_day_of_month', user_arguments),
|
3382
|
-
holiday_lighting_period_end_month: runner.getStringArgumentValue('holiday_lighting_period_end_month', user_arguments),
|
3383
|
-
holiday_lighting_period_end_day_of_month: runner.getStringArgumentValue('holiday_lighting_period_end_day_of_month', user_arguments),
|
3384
|
-
dehumidifier_present: runner.getBoolArgumentValue('dehumidifier_present', user_arguments),
|
3385
|
-
dehumidifier_type: runner.getStringArgumentValue('dehumidifier_type', user_arguments),
|
3386
|
-
dehumidifier_efficiency_type: runner.getStringArgumentValue('dehumidifier_efficiency_type', user_arguments),
|
3387
|
-
dehumidifier_efficiency_ef: runner.getDoubleArgumentValue('dehumidifier_efficiency_ef', user_arguments),
|
3388
|
-
dehumidifier_efficiency_ief: runner.getDoubleArgumentValue('dehumidifier_efficiency_ief', user_arguments),
|
3389
|
-
dehumidifier_capacity: runner.getDoubleArgumentValue('dehumidifier_capacity', user_arguments),
|
3390
|
-
dehumidifier_rh_setpoint: runner.getDoubleArgumentValue('dehumidifier_rh_setpoint', user_arguments),
|
3391
|
-
dehumidifier_fraction_dehumidification_load_served: runner.getDoubleArgumentValue('dehumidifier_fraction_dehumidification_load_served', user_arguments),
|
3392
|
-
clothes_washer_present: runner.getBoolArgumentValue('clothes_washer_present', user_arguments),
|
3393
|
-
clothes_washer_location: runner.getStringArgumentValue('clothes_washer_location', user_arguments),
|
3394
|
-
clothes_washer_efficiency_type: runner.getStringArgumentValue('clothes_washer_efficiency_type', user_arguments),
|
3395
|
-
clothes_washer_efficiency_mef: runner.getStringArgumentValue('clothes_washer_efficiency_mef', user_arguments),
|
3396
|
-
clothes_washer_efficiency_imef: runner.getStringArgumentValue('clothes_washer_efficiency_imef', user_arguments),
|
3397
|
-
clothes_washer_rated_annual_kwh: runner.getStringArgumentValue('clothes_washer_rated_annual_kwh', user_arguments),
|
3398
|
-
clothes_washer_label_electric_rate: runner.getStringArgumentValue('clothes_washer_label_electric_rate', user_arguments),
|
3399
|
-
clothes_washer_label_gas_rate: runner.getStringArgumentValue('clothes_washer_label_gas_rate', user_arguments),
|
3400
|
-
clothes_washer_label_annual_gas_cost: runner.getStringArgumentValue('clothes_washer_label_annual_gas_cost', user_arguments),
|
3401
|
-
clothes_washer_label_usage: runner.getStringArgumentValue('clothes_washer_label_usage', user_arguments),
|
3402
|
-
clothes_washer_capacity: runner.getStringArgumentValue('clothes_washer_capacity', user_arguments),
|
3403
|
-
clothes_washer_usage_multiplier: runner.getDoubleArgumentValue('clothes_washer_usage_multiplier', user_arguments),
|
3404
|
-
clothes_dryer_present: runner.getBoolArgumentValue('clothes_dryer_present', user_arguments),
|
3405
|
-
clothes_dryer_location: runner.getStringArgumentValue('clothes_dryer_location', user_arguments),
|
3406
|
-
clothes_dryer_fuel_type: runner.getStringArgumentValue('clothes_dryer_fuel_type', user_arguments),
|
3407
|
-
clothes_dryer_efficiency_type: runner.getStringArgumentValue('clothes_dryer_efficiency_type', user_arguments),
|
3408
|
-
clothes_dryer_efficiency_ef: runner.getDoubleArgumentValue('clothes_dryer_efficiency_ef', user_arguments),
|
3409
|
-
clothes_dryer_efficiency_cef: runner.getStringArgumentValue('clothes_dryer_efficiency_cef', user_arguments),
|
3410
|
-
clothes_dryer_control_type: runner.getStringArgumentValue('clothes_dryer_control_type', user_arguments),
|
3411
|
-
clothes_dryer_vented_flow_rate: runner.getStringArgumentValue('clothes_dryer_vented_flow_rate', user_arguments),
|
3412
|
-
clothes_dryer_usage_multiplier: runner.getDoubleArgumentValue('clothes_dryer_usage_multiplier', user_arguments),
|
3413
|
-
dishwasher_present: runner.getBoolArgumentValue('dishwasher_present', user_arguments),
|
3414
|
-
dishwasher_location: runner.getStringArgumentValue('dishwasher_location', user_arguments),
|
3415
|
-
dishwasher_efficiency_type: runner.getStringArgumentValue('dishwasher_efficiency_type', user_arguments),
|
3416
|
-
dishwasher_efficiency_kwh: runner.getStringArgumentValue('dishwasher_efficiency_kwh', user_arguments),
|
3417
|
-
dishwasher_efficiency_ef: runner.getDoubleArgumentValue('dishwasher_efficiency_ef', user_arguments),
|
3418
|
-
dishwasher_label_electric_rate: runner.getStringArgumentValue('dishwasher_label_electric_rate', user_arguments),
|
3419
|
-
dishwasher_label_gas_rate: runner.getStringArgumentValue('dishwasher_label_gas_rate', user_arguments),
|
3420
|
-
dishwasher_label_annual_gas_cost: runner.getStringArgumentValue('dishwasher_label_annual_gas_cost', user_arguments),
|
3421
|
-
dishwasher_label_usage: runner.getStringArgumentValue('dishwasher_label_usage', user_arguments),
|
3422
|
-
dishwasher_place_setting_capacity: runner.getStringArgumentValue('dishwasher_place_setting_capacity', user_arguments),
|
3423
|
-
dishwasher_usage_multiplier: runner.getDoubleArgumentValue('dishwasher_usage_multiplier', user_arguments),
|
3424
|
-
refrigerator_present: runner.getBoolArgumentValue('refrigerator_present', user_arguments),
|
3425
|
-
refrigerator_location: runner.getStringArgumentValue('refrigerator_location', user_arguments),
|
3426
|
-
refrigerator_rated_annual_kwh: runner.getStringArgumentValue('refrigerator_rated_annual_kwh', user_arguments),
|
3427
|
-
refrigerator_usage_multiplier: runner.getDoubleArgumentValue('refrigerator_usage_multiplier', user_arguments),
|
3428
|
-
extra_refrigerator_present: runner.getBoolArgumentValue('extra_refrigerator_present', user_arguments),
|
3429
|
-
extra_refrigerator_location: runner.getStringArgumentValue('extra_refrigerator_location', user_arguments),
|
3430
|
-
extra_refrigerator_rated_annual_kwh: runner.getStringArgumentValue('extra_refrigerator_rated_annual_kwh', user_arguments),
|
3431
|
-
extra_refrigerator_usage_multiplier: runner.getDoubleArgumentValue('extra_refrigerator_usage_multiplier', user_arguments),
|
3432
|
-
freezer_present: runner.getBoolArgumentValue('freezer_present', user_arguments),
|
3433
|
-
freezer_location: runner.getStringArgumentValue('freezer_location', user_arguments),
|
3434
|
-
freezer_rated_annual_kwh: runner.getStringArgumentValue('freezer_rated_annual_kwh', user_arguments),
|
3435
|
-
freezer_usage_multiplier: runner.getDoubleArgumentValue('freezer_usage_multiplier', user_arguments),
|
3436
|
-
cooking_range_oven_present: runner.getBoolArgumentValue('cooking_range_oven_present', user_arguments),
|
3437
|
-
cooking_range_oven_location: runner.getStringArgumentValue('cooking_range_oven_location', user_arguments),
|
3438
|
-
cooking_range_oven_fuel_type: runner.getStringArgumentValue('cooking_range_oven_fuel_type', user_arguments),
|
3439
|
-
cooking_range_oven_is_induction: runner.getOptionalStringArgumentValue('cooking_range_oven_is_induction', user_arguments),
|
3440
|
-
cooking_range_oven_is_convection: runner.getOptionalStringArgumentValue('cooking_range_oven_is_convection', user_arguments),
|
3441
|
-
cooking_range_oven_usage_multiplier: runner.getDoubleArgumentValue('cooking_range_oven_usage_multiplier', user_arguments),
|
3442
|
-
ceiling_fan_present: runner.getBoolArgumentValue('ceiling_fan_present', user_arguments),
|
3443
|
-
ceiling_fan_efficiency: runner.getStringArgumentValue('ceiling_fan_efficiency', user_arguments),
|
3444
|
-
ceiling_fan_quantity: runner.getStringArgumentValue('ceiling_fan_quantity', user_arguments),
|
3445
|
-
ceiling_fan_cooling_setpoint_temp_offset: runner.getDoubleArgumentValue('ceiling_fan_cooling_setpoint_temp_offset', user_arguments),
|
3446
|
-
plug_loads_television_annual_kwh: runner.getStringArgumentValue('plug_loads_television_annual_kwh', user_arguments),
|
3447
|
-
plug_loads_television_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_television_usage_multiplier', user_arguments),
|
3448
|
-
plug_loads_television_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_television_usage_multiplier_2', user_arguments),
|
3449
|
-
plug_loads_other_annual_kwh: runner.getStringArgumentValue('plug_loads_other_annual_kwh', user_arguments),
|
3450
|
-
plug_loads_other_frac_sensible: runner.getStringArgumentValue('plug_loads_other_frac_sensible', user_arguments),
|
3451
|
-
plug_loads_other_frac_latent: runner.getStringArgumentValue('plug_loads_other_frac_latent', user_arguments),
|
3452
|
-
plug_loads_other_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_other_usage_multiplier', user_arguments),
|
3453
|
-
plug_loads_other_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_other_usage_multiplier_2', user_arguments),
|
3454
|
-
plug_loads_well_pump_present: runner.getBoolArgumentValue('plug_loads_well_pump_present', user_arguments),
|
3455
|
-
plug_loads_well_pump_annual_kwh: runner.getStringArgumentValue('plug_loads_well_pump_annual_kwh', user_arguments),
|
3456
|
-
plug_loads_well_pump_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_well_pump_usage_multiplier', user_arguments),
|
3457
|
-
plug_loads_well_pump_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_well_pump_usage_multiplier_2', user_arguments),
|
3458
|
-
plug_loads_vehicle_present: runner.getBoolArgumentValue('plug_loads_vehicle_present', user_arguments),
|
3459
|
-
plug_loads_vehicle_annual_kwh: runner.getStringArgumentValue('plug_loads_vehicle_annual_kwh', user_arguments),
|
3460
|
-
plug_loads_vehicle_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_vehicle_usage_multiplier', user_arguments),
|
3461
|
-
plug_loads_vehicle_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_vehicle_usage_multiplier_2', user_arguments),
|
3462
|
-
fuel_loads_grill_present: runner.getBoolArgumentValue('fuel_loads_grill_present', user_arguments),
|
3463
|
-
fuel_loads_grill_fuel_type: runner.getStringArgumentValue('fuel_loads_grill_fuel_type', user_arguments),
|
3464
|
-
fuel_loads_grill_annual_therm: runner.getStringArgumentValue('fuel_loads_grill_annual_therm', user_arguments),
|
3465
|
-
fuel_loads_grill_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_grill_usage_multiplier', user_arguments),
|
3466
|
-
fuel_loads_lighting_present: runner.getBoolArgumentValue('fuel_loads_lighting_present', user_arguments),
|
3467
|
-
fuel_loads_lighting_fuel_type: runner.getStringArgumentValue('fuel_loads_lighting_fuel_type', user_arguments),
|
3468
|
-
fuel_loads_lighting_annual_therm: runner.getStringArgumentValue('fuel_loads_lighting_annual_therm', user_arguments),
|
3469
|
-
fuel_loads_lighting_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_lighting_usage_multiplier', user_arguments),
|
3470
|
-
fuel_loads_fireplace_present: runner.getBoolArgumentValue('fuel_loads_fireplace_present', user_arguments),
|
3471
|
-
fuel_loads_fireplace_fuel_type: runner.getStringArgumentValue('fuel_loads_fireplace_fuel_type', user_arguments),
|
3472
|
-
fuel_loads_fireplace_annual_therm: runner.getStringArgumentValue('fuel_loads_fireplace_annual_therm', user_arguments),
|
3473
|
-
fuel_loads_fireplace_frac_sensible: runner.getStringArgumentValue('fuel_loads_fireplace_frac_sensible', user_arguments),
|
3474
|
-
fuel_loads_fireplace_frac_latent: runner.getStringArgumentValue('fuel_loads_fireplace_frac_latent', user_arguments),
|
3475
|
-
fuel_loads_fireplace_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_fireplace_usage_multiplier', user_arguments),
|
3476
|
-
pool_present: runner.getBoolArgumentValue('pool_present', user_arguments),
|
3477
|
-
pool_pump_annual_kwh: runner.getStringArgumentValue('pool_pump_annual_kwh', user_arguments),
|
3478
|
-
pool_pump_usage_multiplier: runner.getDoubleArgumentValue('pool_pump_usage_multiplier', user_arguments),
|
3479
|
-
pool_heater_type: runner.getStringArgumentValue('pool_heater_type', user_arguments),
|
3480
|
-
pool_heater_annual_kwh: runner.getStringArgumentValue('pool_heater_annual_kwh', user_arguments),
|
3481
|
-
pool_heater_annual_therm: runner.getStringArgumentValue('pool_heater_annual_therm', user_arguments),
|
3482
|
-
pool_heater_usage_multiplier: runner.getDoubleArgumentValue('pool_heater_usage_multiplier', user_arguments),
|
3483
|
-
hot_tub_present: runner.getBoolArgumentValue('hot_tub_present', user_arguments),
|
3484
|
-
hot_tub_pump_annual_kwh: runner.getStringArgumentValue('hot_tub_pump_annual_kwh', user_arguments),
|
3485
|
-
hot_tub_pump_usage_multiplier: runner.getDoubleArgumentValue('hot_tub_pump_usage_multiplier', user_arguments),
|
3486
|
-
hot_tub_heater_type: runner.getStringArgumentValue('hot_tub_heater_type', user_arguments),
|
3487
|
-
hot_tub_heater_annual_kwh: runner.getStringArgumentValue('hot_tub_heater_annual_kwh', user_arguments),
|
3488
|
-
hot_tub_heater_annual_therm: runner.getStringArgumentValue('hot_tub_heater_annual_therm', user_arguments),
|
3489
|
-
hot_tub_heater_usage_multiplier: runner.getDoubleArgumentValue('hot_tub_heater_usage_multiplier', user_arguments) }
|
3490
|
-
end
|
3491
|
-
|
3492
2888
|
def validate_arguments(args)
|
3493
2889
|
warnings = []
|
3494
2890
|
errors = []
|
@@ -3554,9 +2950,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3554
2950
|
errors << "ducts_supply_location=#{args[:ducts_supply_location]} and ducts_supply_surface_area=#{args[:ducts_supply_surface_area]} and ducts_return_location=#{args[:ducts_return_location]} and ducts_return_surface_area=#{args[:ducts_return_surface_area]}" if error
|
3555
2951
|
|
3556
2952
|
# second heating system fraction heat load served non less than 50%
|
3557
|
-
warning = (args[:heating_system_type_2] != 'none') && (args[:heating_system_fraction_heat_load_served_2] >= 0.5)
|
2953
|
+
warning = (args[:heating_system_type_2] != 'none') && (args[:heating_system_fraction_heat_load_served_2] >= 0.5) && (args[:heating_system_fraction_heat_load_served_2] < 1.0)
|
3558
2954
|
warnings << "heating_system_type_2=#{args[:heating_system_type_2]} and heating_system_fraction_heat_load_served_2=#{args[:heating_system_fraction_heat_load_served_2]}" if warning
|
3559
2955
|
|
2956
|
+
# second heating system fraction heat load served is 100%
|
2957
|
+
error = (args[:heating_system_type_2] != 'none') && (args[:heating_system_fraction_heat_load_served_2] == 1.0)
|
2958
|
+
errors << "heating_system_type_2=#{args[:heating_system_type_2]} and heating_system_fraction_heat_load_served_2=#{args[:heating_system_fraction_heat_load_served_2]}" if error
|
2959
|
+
|
2960
|
+
# second heating system but no primary heating system
|
2961
|
+
error = (args[:heating_system_type] == 'none') && (args[:heat_pump_type] == 'none') && (args[:heating_system_type_2] != 'none')
|
2962
|
+
errors << "heating_system_type=#{args[:heating_system_type]} and heat_pump_type=#{args[:heat_pump_type]} and heating_system_type_2=#{args[:heating_system_type_2]}" if error
|
2963
|
+
|
3560
2964
|
# single-family attached and num units, horizontal location not specified
|
3561
2965
|
error = (args[:geometry_unit_type] == HPXML::ResidentialTypeSFA) && (!args[:geometry_building_num_units].is_initialized || !args[:geometry_horizontal_location].is_initialized)
|
3562
2966
|
errors << "geometry_unit_type=#{args[:geometry_unit_type]} and geometry_building_num_units=#{args[:geometry_building_num_units].is_initialized} and geometry_horizontal_location=#{args[:geometry_horizontal_location].is_initialized}" if error
|
@@ -3581,18 +2985,52 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3581
2985
|
warning = (args[:geometry_attic_type] == HPXML::AtticTypeConditioned) && (args[:geometry_roof_type] != 'flat') && (args[:ceiling_assembly_r] > 2.1)
|
3582
2986
|
warnings << "geometry_attic_type=#{args[:geometry_attic_type]} and ceiling_assembly_r=#{args[:ceiling_assembly_r]}" if warning
|
3583
2987
|
|
2988
|
+
# conditioned attic but only one above-grade floor
|
2989
|
+
error = (args[:geometry_num_floors_above_grade] == 1 && args[:geometry_attic_type] == HPXML::AtticTypeConditioned)
|
2990
|
+
errors << "geometry_num_floors_above_grade=#{args[:geometry_num_floors_above_grade]} and geometry_attic_type=#{args[:geometry_attic_type]}" if error
|
2991
|
+
|
3584
2992
|
# dhw indirect but no boiler
|
3585
2993
|
error = ((args[:water_heater_type] == HPXML::WaterHeaterTypeCombiStorage) || (args[:water_heater_type] == HPXML::WaterHeaterTypeCombiTankless)) && (args[:heating_system_type] != HPXML::HVACTypeBoiler)
|
3586
2994
|
errors << "water_heater_type=#{args[:water_heater_type]} and heating_system_type=#{args[:heating_system_type]}" if error
|
3587
2995
|
|
3588
|
-
# no plug loads but specifying usage multipliers
|
3589
|
-
|
3590
|
-
|
2996
|
+
# no tv plug loads but specifying usage multipliers
|
2997
|
+
if args[:plug_loads_television_annual_kwh] != Constants.Auto
|
2998
|
+
warning = (args[:plug_loads_television_annual_kwh].to_f == 0.0 && args[:plug_loads_television_usage_multiplier] != 0.0)
|
2999
|
+
warnings << "plug_loads_television_annual_kwh=#{args[:plug_loads_television_annual_kwh]} and plug_loads_television_usage_multiplier=#{args[:plug_loads_television_usage_multiplier]}" if warning
|
3000
|
+
end
|
3001
|
+
|
3002
|
+
# no other plug loads but specifying usage multipliers
|
3003
|
+
if args[:plug_loads_other_annual_kwh] != Constants.Auto
|
3004
|
+
warning = (args[:plug_loads_other_annual_kwh].to_f == 0.0 && args[:plug_loads_other_usage_multiplier] != 0.0)
|
3005
|
+
warnings << "plug_loads_other_annual_kwh=#{args[:plug_loads_other_annual_kwh]} and plug_loads_other_usage_multiplier=#{args[:plug_loads_other_usage_multiplier]}" if warning
|
3006
|
+
end
|
3007
|
+
|
3008
|
+
# no well pump plug loads but specifying usage multipliers
|
3009
|
+
if args[:plug_loads_well_pump_annual_kwh] != Constants.Auto
|
3010
|
+
warning = (args[:plug_loads_well_pump_annual_kwh].to_f == 0.0 && args[:plug_loads_well_pump_usage_multiplier] != 0.0)
|
3011
|
+
warnings << "plug_loads_well_pump_annual_kwh=#{args[:plug_loads_well_pump_annual_kwh]} and plug_loads_well_pump_usage_multiplier=#{args[:plug_loads_well_pump_usage_multiplier]}" if warning
|
3012
|
+
end
|
3013
|
+
|
3014
|
+
# no vehicle plug loads but specifying usage multipliers
|
3015
|
+
if args[:plug_loads_vehicle_annual_kwh] != Constants.Auto
|
3016
|
+
warning = (args[:plug_loads_vehicle_annual_kwh].to_f && args[:plug_loads_vehicle_usage_multiplier] != 0.0)
|
3017
|
+
warnings << "plug_loads_vehicle_annual_kwh=#{args[:plug_loads_vehicle_annual_kwh]} and plug_loads_vehicle_usage_multiplier=#{args[:plug_loads_vehicle_usage_multiplier]}" if warning
|
3018
|
+
end
|
3591
3019
|
|
3592
3020
|
# no fuel loads but specifying usage multipliers
|
3593
3021
|
warning = (!args[:fuel_loads_grill_present] && args[:fuel_loads_grill_usage_multiplier] != 0.0) || (!args[:fuel_loads_lighting_present] && args[:fuel_loads_lighting_usage_multiplier] != 0.0) || (!args[:fuel_loads_fireplace_present] && args[:fuel_loads_fireplace_usage_multiplier] != 0.0)
|
3594
3022
|
warnings << "fuel_loads_grill_present=#{args[:fuel_loads_grill_present]} and fuel_loads_grill_usage_multiplier=#{args[:fuel_loads_grill_usage_multiplier]} and fuel_loads_lighting_present=#{args[:fuel_loads_lighting_present]} and fuel_loads_lighting_usage_multiplier=#{args[:fuel_loads_lighting_usage_multiplier]} and fuel_loads_fireplace_present=#{args[:fuel_loads_fireplace_present]} and fuel_loads_fireplace_usage_multiplier=#{args[:fuel_loads_fireplace_usage_multiplier]}" if warning
|
3595
3023
|
|
3024
|
+
# foundation wall insulation distance to bottom is greater than foundation wall height
|
3025
|
+
if args[:foundation_wall_insulation_distance_to_bottom] != Constants.Auto
|
3026
|
+
error = (args[:foundation_wall_insulation_distance_to_bottom].to_f > args[:geometry_foundation_height])
|
3027
|
+
errors << "foundation_wall_insulation_distance_to_bottom=#{args[:foundation_wall_insulation_distance_to_bottom]} and geometry_foundation_height=#{args[:geometry_foundation_height]}" if error
|
3028
|
+
end
|
3029
|
+
|
3030
|
+
# number of bedrooms not greater than zero
|
3031
|
+
error = (args[:geometry_num_bedrooms] <= 0)
|
3032
|
+
errors << "geometry_num_bedrooms=#{args[:geometry_num_bedrooms]}" if error
|
3033
|
+
|
3596
3034
|
return warnings, errors
|
3597
3035
|
end
|
3598
3036
|
|
@@ -3625,9 +3063,7 @@ end
|
|
3625
3063
|
|
3626
3064
|
class HPXMLFile
|
3627
3065
|
def self.create(runner, model, args, epw_file)
|
3628
|
-
|
3629
|
-
|
3630
|
-
success = create_geometry_envelope(runner, model_geometry, args)
|
3066
|
+
success = create_geometry_envelope(runner, model, args)
|
3631
3067
|
return false if not success
|
3632
3068
|
|
3633
3069
|
success = create_schedules(runner, model, epw_file, args)
|
@@ -3635,27 +3071,30 @@ class HPXMLFile
|
|
3635
3071
|
|
3636
3072
|
hpxml = HPXML.new
|
3637
3073
|
|
3638
|
-
set_header(hpxml, runner, args)
|
3074
|
+
set_header(hpxml, runner, args, epw_file)
|
3639
3075
|
set_site(hpxml, runner, args)
|
3640
3076
|
set_neighbor_buildings(hpxml, runner, args)
|
3641
3077
|
set_building_occupancy(hpxml, runner, args)
|
3642
3078
|
set_building_construction(hpxml, runner, args)
|
3643
3079
|
set_climate_and_risk_zones(hpxml, runner, args, epw_file)
|
3644
3080
|
set_air_infiltration_measurements(hpxml, runner, args)
|
3645
|
-
|
3646
|
-
|
3647
|
-
|
3648
|
-
|
3649
|
-
|
3650
|
-
|
3651
|
-
|
3652
|
-
|
3653
|
-
|
3654
|
-
|
3655
|
-
|
3081
|
+
|
3082
|
+
set_attics(hpxml, runner, model, args)
|
3083
|
+
set_foundations(hpxml, runner, model, args)
|
3084
|
+
set_roofs(hpxml, runner, model, args)
|
3085
|
+
set_rim_joists(hpxml, runner, model, args)
|
3086
|
+
set_walls(hpxml, runner, model, args)
|
3087
|
+
set_foundation_walls(hpxml, runner, model, args)
|
3088
|
+
set_frame_floors(hpxml, runner, model, args)
|
3089
|
+
set_slabs(hpxml, runner, model, args)
|
3090
|
+
set_windows(hpxml, runner, model, args)
|
3091
|
+
set_skylights(hpxml, runner, model, args)
|
3092
|
+
set_doors(hpxml, runner, model, args)
|
3093
|
+
|
3656
3094
|
set_heating_systems(hpxml, runner, args)
|
3657
3095
|
set_cooling_systems(hpxml, runner, args)
|
3658
3096
|
set_heat_pumps(hpxml, runner, args)
|
3097
|
+
set_secondary_heating_systems(hpxml, runner, args)
|
3659
3098
|
set_hvac_distribution(hpxml, runner, args)
|
3660
3099
|
set_hvac_control(hpxml, runner, args)
|
3661
3100
|
set_ventilation_fans(hpxml, runner, args)
|
@@ -3699,6 +3138,13 @@ class HPXMLFile
|
|
3699
3138
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeSlab
|
3700
3139
|
args[:geometry_foundation_height] = 0.0
|
3701
3140
|
args[:geometry_foundation_height_above_grade] = 0.0
|
3141
|
+
args[:geometry_rim_joist_height] = 0.0
|
3142
|
+
elsif args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient
|
3143
|
+
args[:geometry_rim_joist_height] = 0.0
|
3144
|
+
end
|
3145
|
+
|
3146
|
+
if args[:geometry_attic_type] == HPXML::AtticTypeConditioned
|
3147
|
+
args[:geometry_num_floors_above_grade] -= 1
|
3702
3148
|
end
|
3703
3149
|
|
3704
3150
|
if args[:geometry_unit_type] == HPXML::ResidentialTypeSFD
|
@@ -3706,6 +3152,8 @@ class HPXMLFile
|
|
3706
3152
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeSFA
|
3707
3153
|
success = Geometry.create_single_family_attached(runner: runner, model: model, **args)
|
3708
3154
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3155
|
+
args[:geometry_roof_type] = 'flat'
|
3156
|
+
args[:geometry_attic_type] = HPXML::AtticTypeVented
|
3709
3157
|
success = Geometry.create_multifamily(runner: runner, model: model, **args)
|
3710
3158
|
end
|
3711
3159
|
return false if not success
|
@@ -3767,7 +3215,7 @@ class HPXMLFile
|
|
3767
3215
|
return false if not success
|
3768
3216
|
|
3769
3217
|
# export the schedule
|
3770
|
-
args[:schedules_path] = '
|
3218
|
+
args[:schedules_path] = "../#{File.basename(args[:hpxml_path], '.xml')}_schedules.csv"
|
3771
3219
|
success = schedule_generator.export(schedules_path: File.expand_path(args[:schedules_path]))
|
3772
3220
|
return false if not success
|
3773
3221
|
|
@@ -3776,7 +3224,7 @@ class HPXMLFile
|
|
3776
3224
|
return true
|
3777
3225
|
end
|
3778
3226
|
|
3779
|
-
def self.set_header(hpxml, runner, args)
|
3227
|
+
def self.set_header(hpxml, runner, args, epw_file)
|
3780
3228
|
hpxml.header.xml_type = 'HPXML'
|
3781
3229
|
hpxml.header.xml_generated_by = 'BuildResidentialHPXML'
|
3782
3230
|
hpxml.header.transaction = 'create'
|
@@ -3826,20 +3274,21 @@ class HPXMLFile
|
|
3826
3274
|
end
|
3827
3275
|
|
3828
3276
|
hpxml.header.building_id = 'MyBuilding'
|
3277
|
+
hpxml.header.state_code = epw_file.stateProvinceRegion
|
3829
3278
|
hpxml.header.event_type = 'proposed workscope'
|
3830
3279
|
hpxml.header.schedules_path = args[:schedules_path]
|
3831
3280
|
end
|
3832
3281
|
|
3833
3282
|
def self.set_site(hpxml, runner, args)
|
3834
|
-
if args[:
|
3835
|
-
|
3283
|
+
if args[:air_leakage_shielding_of_home] != Constants.Auto
|
3284
|
+
shielding_of_home = args[:air_leakage_shielding_of_home]
|
3836
3285
|
end
|
3837
3286
|
|
3838
3287
|
if args[:site_type].is_initialized
|
3839
3288
|
hpxml.site.site_type = args[:site_type].get
|
3840
3289
|
end
|
3841
3290
|
|
3842
|
-
hpxml.site.
|
3291
|
+
hpxml.site.shielding_of_home = shielding_of_home
|
3843
3292
|
end
|
3844
3293
|
|
3845
3294
|
def self.set_neighbor_buildings(hpxml, runner, args)
|
@@ -3896,11 +3345,9 @@ class HPXMLFile
|
|
3896
3345
|
hpxml.building_construction.conditioned_building_volume = conditioned_building_volume
|
3897
3346
|
hpxml.building_construction.average_ceiling_height = args[:geometry_wall_height]
|
3898
3347
|
hpxml.building_construction.residential_facility_type = args[:geometry_unit_type]
|
3899
|
-
|
3900
|
-
|
3901
|
-
|
3902
|
-
(args[:water_heater_type] != 'none' && args[:water_heater_has_flue_or_chimney])
|
3903
|
-
hpxml.building_construction.has_flue_or_chimney = true
|
3348
|
+
if args[:geometry_has_flue_or_chimney] != Constants.Auto
|
3349
|
+
has_flue_or_chimney = args[:geometry_has_flue_or_chimney]
|
3350
|
+
hpxml.building_construction.has_flue_or_chimney = has_flue_or_chimney
|
3904
3351
|
end
|
3905
3352
|
end
|
3906
3353
|
|
@@ -3939,7 +3386,6 @@ class HPXMLFile
|
|
3939
3386
|
|
3940
3387
|
def self.set_attics(hpxml, runner, model, args)
|
3941
3388
|
return if args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3942
|
-
return if args[:geometry_unit_type] == HPXML::ResidentialTypeSFA # TODO: remove when we can model single-family attached units
|
3943
3389
|
|
3944
3390
|
if args[:geometry_roof_type] == 'flat'
|
3945
3391
|
hpxml.attics.add(id: HPXML::AtticTypeFlatRoof,
|
@@ -3974,27 +3420,13 @@ class HPXMLFile
|
|
3974
3420
|
roof_type = args[:roof_material_type].get
|
3975
3421
|
end
|
3976
3422
|
|
3977
|
-
if args[:roof_color] == Constants.Auto && args[:roof_solar_absorptance] == Constants.Auto
|
3978
|
-
solar_absorptance = 0.7
|
3979
|
-
end
|
3980
|
-
|
3981
3423
|
if args[:roof_color] != Constants.Auto
|
3982
3424
|
roof_color = args[:roof_color]
|
3983
3425
|
end
|
3984
3426
|
|
3985
|
-
|
3986
|
-
|
3987
|
-
|
3988
|
-
|
3989
|
-
if args[:roof_emittance] != Constants.Auto
|
3990
|
-
emittance = args[:roof_emittance]
|
3991
|
-
end
|
3992
|
-
|
3993
|
-
if args[:roof_radiant_barrier] != Constants.Auto
|
3994
|
-
radiant_barrier = args[:roof_radiant_barrier]
|
3995
|
-
if to_boolean(radiant_barrier)
|
3996
|
-
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
3997
|
-
end
|
3427
|
+
radiant_barrier = args[:roof_radiant_barrier]
|
3428
|
+
if args[:roof_radiant_barrier]
|
3429
|
+
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
3998
3430
|
end
|
3999
3431
|
|
4000
3432
|
if args[:geometry_roof_type] == 'flat'
|
@@ -4009,8 +3441,6 @@ class HPXMLFile
|
|
4009
3441
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
4010
3442
|
roof_type: roof_type,
|
4011
3443
|
roof_color: roof_color,
|
4012
|
-
solar_absorptance: solar_absorptance,
|
4013
|
-
emittance: emittance,
|
4014
3444
|
pitch: args[:geometry_roof_pitch],
|
4015
3445
|
radiant_barrier: radiant_barrier,
|
4016
3446
|
radiant_barrier_grade: radiant_barrier_grade,
|
@@ -4020,10 +3450,61 @@ class HPXMLFile
|
|
4020
3450
|
|
4021
3451
|
def self.set_rim_joists(hpxml, runner, model, args)
|
4022
3452
|
model.getSurfaces.sort.each do |surface|
|
4023
|
-
|
3453
|
+
next if surface.surfaceType != 'Wall'
|
3454
|
+
next unless ['Outdoors', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
3455
|
+
next unless Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
3456
|
+
|
3457
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
3458
|
+
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
3459
|
+
|
3460
|
+
exterior_adjacent_to = HPXML::LocationOutside
|
3461
|
+
if surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to foundation space
|
3462
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
3463
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
3464
|
+
unless [HPXML::ResidentialTypeSFD].include?(args[:geometry_unit_type])
|
3465
|
+
exterior_adjacent_to = interior_adjacent_to
|
3466
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
3467
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3468
|
+
end
|
3469
|
+
end
|
3470
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
3471
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
3472
|
+
end
|
3473
|
+
end
|
3474
|
+
|
3475
|
+
if exterior_adjacent_to == HPXML::LocationOutside && args[:wall_siding_type].is_initialized
|
3476
|
+
siding = args[:wall_siding_type].get
|
3477
|
+
end
|
3478
|
+
|
3479
|
+
if args[:wall_color] != Constants.Auto
|
3480
|
+
color = args[:wall_color]
|
3481
|
+
end
|
3482
|
+
|
3483
|
+
if interior_adjacent_to == exterior_adjacent_to
|
3484
|
+
insulation_assembly_r_value = 4.0 # Uninsulated
|
3485
|
+
else
|
3486
|
+
insulation_assembly_r_value = args[:rim_joist_assembly_r]
|
3487
|
+
end
|
3488
|
+
|
3489
|
+
hpxml.rim_joists.add(id: valid_attr(surface.name),
|
3490
|
+
exterior_adjacent_to: exterior_adjacent_to,
|
3491
|
+
interior_adjacent_to: interior_adjacent_to,
|
3492
|
+
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round(1),
|
3493
|
+
siding: siding,
|
3494
|
+
color: color,
|
3495
|
+
insulation_assembly_r_value: insulation_assembly_r_value)
|
4024
3496
|
end
|
4025
3497
|
end
|
4026
3498
|
|
3499
|
+
def self.get_unexposed_garage_perimeter(hpxml, args)
|
3500
|
+
# this is perimeter adjacent to a 100% protruding garage that is not exposed
|
3501
|
+
# we need this because it's difficult to set this surface to Adiabatic using our geometry methods
|
3502
|
+
if (args[:geometry_garage_protrusion] == 1.0) && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0)
|
3503
|
+
return args[:geometry_garage_width]
|
3504
|
+
end
|
3505
|
+
return 0
|
3506
|
+
end
|
3507
|
+
|
4027
3508
|
def self.get_adiabatic_adjacent_surface(model, surface)
|
4028
3509
|
return if surface.outsideBoundaryCondition != 'Adiabatic'
|
4029
3510
|
|
@@ -4050,6 +3531,7 @@ class HPXMLFile
|
|
4050
3531
|
def self.set_walls(hpxml, runner, model, args)
|
4051
3532
|
model.getSurfaces.sort.each do |surface|
|
4052
3533
|
next if surface.surfaceType != 'Wall'
|
3534
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
4053
3535
|
|
4054
3536
|
interior_adjacent_to = get_adjacent_to(surface)
|
4055
3537
|
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
@@ -4130,19 +3612,20 @@ class HPXMLFile
|
|
4130
3612
|
model.getSurfaces.sort.each do |surface|
|
4131
3613
|
next if surface.surfaceType != 'Wall'
|
4132
3614
|
next unless ['Foundation', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
3615
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
4133
3616
|
|
4134
3617
|
interior_adjacent_to = get_adjacent_to(surface)
|
4135
3618
|
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
4136
3619
|
|
4137
3620
|
exterior_adjacent_to = HPXML::LocationGround
|
4138
3621
|
if surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to foundation space
|
4139
|
-
next if [HPXML::ResidentialTypeSFD, HPXML::ResidentialTypeManufactured].include? args[:geometry_unit_type] # these are surfaces for kiva
|
4140
|
-
|
4141
3622
|
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
4142
3623
|
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
4143
|
-
|
4144
|
-
|
4145
|
-
exterior_adjacent_to
|
3624
|
+
unless [HPXML::ResidentialTypeSFD].include?(args[:geometry_unit_type])
|
3625
|
+
exterior_adjacent_to = interior_adjacent_to
|
3626
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
3627
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3628
|
+
end
|
4146
3629
|
end
|
4147
3630
|
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
4148
3631
|
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
@@ -4160,6 +3643,9 @@ class HPXMLFile
|
|
4160
3643
|
insulation_exterior_r_value = args[:foundation_wall_insulation_r]
|
4161
3644
|
insulation_exterior_distance_to_top = args[:foundation_wall_insulation_distance_to_top]
|
4162
3645
|
insulation_exterior_distance_to_bottom = args[:foundation_wall_insulation_distance_to_bottom]
|
3646
|
+
if insulation_exterior_distance_to_bottom == Constants.Auto
|
3647
|
+
insulation_exterior_distance_to_bottom = args[:geometry_foundation_height]
|
3648
|
+
end
|
4163
3649
|
end
|
4164
3650
|
insulation_interior_r_value = 0
|
4165
3651
|
insulation_interior_distance_to_top = 0
|
@@ -4250,6 +3736,11 @@ class HPXMLFile
|
|
4250
3736
|
has_foundation_walls = true
|
4251
3737
|
end
|
4252
3738
|
exposed_perimeter = Geometry.calculate_exposed_perimeter(model, [surface], has_foundation_walls).round
|
3739
|
+
next if exposed_perimeter == 0 # this could be, e.g., the foundation floor of an interior corridor
|
3740
|
+
|
3741
|
+
if [HPXML::LocationCrawlspaceVented, HPXML::LocationCrawlspaceUnvented, HPXML::LocationBasementUnconditioned, HPXML::LocationBasementConditioned].include? interior_adjacent_to
|
3742
|
+
exposed_perimeter -= get_unexposed_garage_perimeter(hpxml, args)
|
3743
|
+
end
|
4253
3744
|
|
4254
3745
|
if [HPXML::LocationLivingSpace, HPXML::LocationGarage].include? interior_adjacent_to
|
4255
3746
|
depth_below_grade = 0
|
@@ -4301,39 +3792,37 @@ class HPXMLFile
|
|
4301
3792
|
sub_surface_height = Geometry.get_surface_height(sub_surface)
|
4302
3793
|
sub_surface_facade = Geometry.get_facade_for_surface(sub_surface)
|
4303
3794
|
|
4304
|
-
if (sub_surface_facade == Constants.FacadeFront) && (args[:overhangs_front_depth] > 0)
|
3795
|
+
if (sub_surface_facade == Constants.FacadeFront) && ((args[:overhangs_front_depth] > 0) || args[:overhangs_front_distance_to_top_of_window] > 0)
|
4305
3796
|
overhangs_depth = args[:overhangs_front_depth]
|
4306
3797
|
overhangs_distance_to_top_of_window = args[:overhangs_front_distance_to_top_of_window]
|
4307
3798
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4308
|
-
elsif (sub_surface_facade == Constants.FacadeBack) && (args[:overhangs_back_depth] > 0)
|
3799
|
+
elsif (sub_surface_facade == Constants.FacadeBack) && ((args[:overhangs_back_depth] > 0) || args[:overhangs_back_distance_to_top_of_window] > 0)
|
4309
3800
|
overhangs_depth = args[:overhangs_back_depth]
|
4310
3801
|
overhangs_distance_to_top_of_window = args[:overhangs_back_distance_to_top_of_window]
|
4311
3802
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4312
|
-
elsif (sub_surface_facade == Constants.FacadeLeft) && (args[:overhangs_left_depth] > 0)
|
3803
|
+
elsif (sub_surface_facade == Constants.FacadeLeft) && ((args[:overhangs_left_depth] > 0) || args[:overhangs_left_distance_to_top_of_window] > 0)
|
4313
3804
|
overhangs_depth = args[:overhangs_left_depth]
|
4314
3805
|
overhangs_distance_to_top_of_window = args[:overhangs_left_distance_to_top_of_window]
|
4315
3806
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4316
|
-
elsif (sub_surface_facade == Constants.FacadeRight) && (args[:overhangs_right_depth] > 0)
|
3807
|
+
elsif (sub_surface_facade == Constants.FacadeRight) && ((args[:overhangs_right_depth] > 0) || args[:overhangs_right_distance_to_top_of_window] > 0)
|
4317
3808
|
overhangs_depth = args[:overhangs_right_depth]
|
4318
3809
|
overhangs_distance_to_top_of_window = args[:overhangs_right_distance_to_top_of_window]
|
4319
3810
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4320
3811
|
elsif args[:geometry_eaves_depth] > 0
|
4321
|
-
|
3812
|
+
# Get max z coordinate of eaves
|
3813
|
+
eaves_z = args[:geometry_wall_height] * args[:geometry_num_floors_above_grade] + args[:geometry_rim_joist_height]
|
3814
|
+
if args[:geometry_attic_type] == HPXML::AtticTypeConditioned
|
3815
|
+
eaves_z += Geometry.get_conditioned_attic_height(model.getSpaces)
|
3816
|
+
end
|
4322
3817
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient
|
4323
3818
|
eaves_z += args[:geometry_foundation_height]
|
4324
3819
|
end
|
4325
|
-
|
4326
|
-
|
4327
|
-
|
4328
|
-
|
4329
|
-
z = vertex.z + z_origin
|
4330
|
-
next if z < sub_surface_z
|
4331
|
-
|
4332
|
-
sub_surface_z = z
|
4333
|
-
end
|
4334
|
-
sub_surface_z = UnitConversions.convert(sub_surface_z, 'm', 'ft')
|
3820
|
+
|
3821
|
+
# Get max z coordinate of this window
|
3822
|
+
sub_surface_z = Geometry.getSurfaceZValues([sub_surface]).max + UnitConversions.convert(sub_surface.space.get.zOrigin, 'm', 'ft')
|
3823
|
+
|
4335
3824
|
overhangs_depth = args[:geometry_eaves_depth]
|
4336
|
-
overhangs_distance_to_top_of_window = eaves_z - sub_surface_z
|
3825
|
+
overhangs_distance_to_top_of_window = eaves_z - sub_surface_z # difference between max z coordinates of eaves and this window
|
4337
3826
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4338
3827
|
end
|
4339
3828
|
|
@@ -4347,6 +3836,14 @@ class HPXMLFile
|
|
4347
3836
|
interior_shading_factor_summer = args[:window_interior_shading_summer].get
|
4348
3837
|
end
|
4349
3838
|
|
3839
|
+
if args[:window_exterior_shading_winter].is_initialized
|
3840
|
+
exterior_shading_factor_winter = args[:window_exterior_shading_winter].get
|
3841
|
+
end
|
3842
|
+
|
3843
|
+
if args[:window_exterior_shading_summer].is_initialized
|
3844
|
+
exterior_shading_factor_summer = args[:window_exterior_shading_summer].get
|
3845
|
+
end
|
3846
|
+
|
4350
3847
|
if args[:window_fraction_operable].is_initialized
|
4351
3848
|
fraction_operable = args[:window_fraction_operable].get
|
4352
3849
|
end
|
@@ -4361,6 +3858,8 @@ class HPXMLFile
|
|
4361
3858
|
overhangs_distance_to_bottom_of_window: overhangs_distance_to_bottom_of_window,
|
4362
3859
|
interior_shading_factor_winter: interior_shading_factor_winter,
|
4363
3860
|
interior_shading_factor_summer: interior_shading_factor_summer,
|
3861
|
+
exterior_shading_factor_winter: exterior_shading_factor_winter,
|
3862
|
+
exterior_shading_factor_summer: exterior_shading_factor_summer,
|
4364
3863
|
fraction_operable: fraction_operable,
|
4365
3864
|
wall_idref: valid_attr(surface.name))
|
4366
3865
|
end # sub_surfaces
|
@@ -4417,12 +3916,6 @@ class HPXMLFile
|
|
4417
3916
|
heating_capacity = args[:heating_system_heating_capacity]
|
4418
3917
|
end
|
4419
3918
|
|
4420
|
-
if args[:heating_system_electric_auxiliary_energy].is_initialized
|
4421
|
-
if args[:heating_system_electric_auxiliary_energy].get > 0
|
4422
|
-
electric_auxiliary_energy = args[:heating_system_electric_auxiliary_energy].get
|
4423
|
-
end
|
4424
|
-
end
|
4425
|
-
|
4426
3919
|
if heating_system_type == HPXML::HVACTypeElectricResistance
|
4427
3920
|
heating_system_fuel = HPXML::FuelTypeElectricity
|
4428
3921
|
else
|
@@ -4435,66 +3928,25 @@ class HPXMLFile
|
|
4435
3928
|
heating_efficiency_percent = args[:heating_system_heating_efficiency]
|
4436
3929
|
end
|
4437
3930
|
|
4438
|
-
if [
|
4439
|
-
if
|
4440
|
-
|
4441
|
-
end
|
4442
|
-
elsif [HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace, HPXML::HVACTypeFixedHeater].include? heating_system_type
|
4443
|
-
if args[:heating_system_fan_power_watts].is_initialized
|
4444
|
-
fan_watts = args[:heating_system_fan_power_watts].get
|
3931
|
+
if args[:heating_system_airflow_defect_ratio].is_initialized
|
3932
|
+
if [HPXML::HVACTypeFurnace].include? heating_system_type
|
3933
|
+
airflow_defect_ratio = args[:heating_system_airflow_defect_ratio].get
|
4445
3934
|
end
|
4446
3935
|
end
|
4447
3936
|
|
3937
|
+
fraction_heat_load_served = args[:heating_system_fraction_heat_load_served]
|
3938
|
+
if args[:heating_system_type_2] != 'none' && fraction_heat_load_served + args[:heating_system_fraction_heat_load_served_2] > 1.0
|
3939
|
+
fraction_heat_load_served = 1.0 - args[:heating_system_fraction_heat_load_served_2]
|
3940
|
+
end
|
3941
|
+
|
4448
3942
|
hpxml.heating_systems.add(id: 'HeatingSystem',
|
4449
3943
|
heating_system_type: heating_system_type,
|
4450
3944
|
heating_system_fuel: heating_system_fuel,
|
4451
3945
|
heating_capacity: heating_capacity,
|
4452
|
-
fraction_heat_load_served:
|
4453
|
-
electric_auxiliary_energy: electric_auxiliary_energy,
|
3946
|
+
fraction_heat_load_served: fraction_heat_load_served,
|
4454
3947
|
heating_efficiency_afue: heating_efficiency_afue,
|
4455
3948
|
heating_efficiency_percent: heating_efficiency_percent,
|
4456
|
-
|
4457
|
-
fan_watts: fan_watts)
|
4458
|
-
|
4459
|
-
heating_system_type_2 = args[:heating_system_type_2]
|
4460
|
-
|
4461
|
-
return if heating_system_type_2 == 'none'
|
4462
|
-
|
4463
|
-
if args[:heating_system_heating_capacity_2] != Constants.Auto
|
4464
|
-
heating_capacity_2 = args[:heating_system_heating_capacity_2]
|
4465
|
-
end
|
4466
|
-
|
4467
|
-
if args[:heating_system_electric_auxiliary_energy_2].is_initialized
|
4468
|
-
if args[:heating_system_electric_auxiliary_energy_2].get > 0
|
4469
|
-
electric_auxiliary_energy_2 = args[:heating_system_electric_auxiliary_energy_2].get
|
4470
|
-
end
|
4471
|
-
end
|
4472
|
-
|
4473
|
-
if args[:heating_system_fuel_2] == HPXML::HVACTypeElectricResistance
|
4474
|
-
heating_system_fuel_2 = HPXML::FuelTypeElectricity
|
4475
|
-
else
|
4476
|
-
heating_system_fuel_2 = args[:heating_system_fuel_2]
|
4477
|
-
end
|
4478
|
-
|
4479
|
-
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace].include? heating_system_type_2
|
4480
|
-
heating_efficiency_afue_2 = args[:heating_system_heating_efficiency_2]
|
4481
|
-
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace].include? heating_system_type_2
|
4482
|
-
heating_efficiency_percent_2 = args[:heating_system_heating_efficiency_2]
|
4483
|
-
end
|
4484
|
-
|
4485
|
-
if args[:heating_system_fan_power_watts_2].is_initialized
|
4486
|
-
fan_watts = args[:heating_system_fan_power_watts_2].get
|
4487
|
-
end
|
4488
|
-
|
4489
|
-
hpxml.heating_systems.add(id: 'SecondHeatingSystem',
|
4490
|
-
heating_system_type: heating_system_type_2,
|
4491
|
-
heating_system_fuel: heating_system_fuel_2,
|
4492
|
-
heating_capacity: heating_capacity_2,
|
4493
|
-
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served_2],
|
4494
|
-
electric_auxiliary_energy: electric_auxiliary_energy_2,
|
4495
|
-
heating_efficiency_afue: heating_efficiency_afue_2,
|
4496
|
-
heating_efficiency_percent: heating_efficiency_percent_2,
|
4497
|
-
fan_watts: fan_watts)
|
3949
|
+
airflow_defect_ratio: airflow_defect_ratio)
|
4498
3950
|
end
|
4499
3951
|
|
4500
3952
|
def self.set_cooling_systems(hpxml, runner, args)
|
@@ -4502,10 +3954,8 @@ class HPXMLFile
|
|
4502
3954
|
|
4503
3955
|
return if cooling_system_type == 'none'
|
4504
3956
|
|
4505
|
-
if
|
4506
|
-
|
4507
|
-
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4508
|
-
end
|
3957
|
+
if args[:cooling_system_cooling_capacity] != Constants.Auto
|
3958
|
+
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4509
3959
|
end
|
4510
3960
|
|
4511
3961
|
if args[:cooling_system_cooling_compressor_type].is_initialized
|
@@ -4520,15 +3970,21 @@ class HPXMLFile
|
|
4520
3970
|
end
|
4521
3971
|
end
|
4522
3972
|
|
4523
|
-
if [
|
4524
|
-
cooling_efficiency_seer = args[:
|
4525
|
-
elsif [HPXML::
|
4526
|
-
cooling_efficiency_eer = args[:
|
3973
|
+
if args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsSEER
|
3974
|
+
cooling_efficiency_seer = args[:cooling_system_cooling_efficiency]
|
3975
|
+
elsif args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsEER
|
3976
|
+
cooling_efficiency_eer = args[:cooling_system_cooling_efficiency]
|
3977
|
+
end
|
3978
|
+
|
3979
|
+
if args[:cooling_system_airflow_defect_ratio].is_initialized
|
3980
|
+
if [HPXML::HVACTypeCentralAirConditioner].include?(cooling_system_type) || ([HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) && (args[:cooling_system_is_ducted]))
|
3981
|
+
airflow_defect_ratio = args[:cooling_system_airflow_defect_ratio].get
|
3982
|
+
end
|
4527
3983
|
end
|
4528
3984
|
|
4529
|
-
if [
|
4530
|
-
if
|
4531
|
-
|
3985
|
+
if args[:cooling_system_charge_defect_ratio].is_initialized
|
3986
|
+
if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type)
|
3987
|
+
charge_defect_ratio = args[:cooling_system_charge_defect_ratio].get
|
4532
3988
|
end
|
4533
3989
|
end
|
4534
3990
|
|
@@ -4541,7 +3997,8 @@ class HPXMLFile
|
|
4541
3997
|
cooling_shr: cooling_shr,
|
4542
3998
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4543
3999
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4544
|
-
|
4000
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
4001
|
+
charge_defect_ratio: charge_defect_ratio)
|
4545
4002
|
end
|
4546
4003
|
|
4547
4004
|
def self.set_heat_pumps(hpxml, runner, args)
|
@@ -4554,8 +4011,8 @@ class HPXMLFile
|
|
4554
4011
|
end
|
4555
4012
|
|
4556
4013
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump_type
|
4557
|
-
if args[:
|
4558
|
-
heating_capacity_17F = args[:
|
4014
|
+
if args[:heat_pump_heating_capacity_17_f] != Constants.Auto
|
4015
|
+
heating_capacity_17F = args[:heat_pump_heating_capacity_17_f]
|
4559
4016
|
end
|
4560
4017
|
end
|
4561
4018
|
|
@@ -4592,20 +4049,31 @@ class HPXMLFile
|
|
4592
4049
|
cooling_shr = args[:heat_pump_cooling_sensible_heat_fraction].get
|
4593
4050
|
end
|
4594
4051
|
|
4595
|
-
if [
|
4596
|
-
heating_efficiency_hspf = args[:
|
4597
|
-
|
4598
|
-
|
4599
|
-
|
4600
|
-
|
4601
|
-
|
4602
|
-
|
4603
|
-
|
4052
|
+
if args[:heat_pump_heating_efficiency_type] == HPXML::UnitsHSPF
|
4053
|
+
heating_efficiency_hspf = args[:heat_pump_heating_efficiency]
|
4054
|
+
elsif args[:heat_pump_heating_efficiency_type] == HPXML::UnitsCOP
|
4055
|
+
heating_efficiency_cop = args[:heat_pump_heating_efficiency]
|
4056
|
+
end
|
4057
|
+
|
4058
|
+
if args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsSEER
|
4059
|
+
cooling_efficiency_seer = args[:heat_pump_cooling_efficiency]
|
4060
|
+
elsif args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsEER
|
4061
|
+
cooling_efficiency_eer = args[:heat_pump_cooling_efficiency]
|
4062
|
+
end
|
4063
|
+
|
4064
|
+
if args[:heat_pump_airflow_defect_ratio].is_initialized
|
4065
|
+
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) || ([HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump_type) && (args[:heat_pump_is_ducted]))
|
4066
|
+
airflow_defect_ratio = args[:heat_pump_airflow_defect_ratio].get
|
4604
4067
|
end
|
4605
4068
|
end
|
4606
4069
|
|
4607
|
-
if args[:
|
4608
|
-
|
4070
|
+
if args[:heat_pump_charge_defect_ratio].is_initialized
|
4071
|
+
charge_defect_ratio = args[:heat_pump_charge_defect_ratio].get
|
4072
|
+
end
|
4073
|
+
|
4074
|
+
fraction_heat_load_served = args[:heat_pump_fraction_heat_load_served]
|
4075
|
+
if args[:heating_system_type_2] != 'none' && fraction_heat_load_served + args[:heating_system_fraction_heat_load_served_2] > 1.0
|
4076
|
+
fraction_heat_load_served = 1.0 - args[:heating_system_fraction_heat_load_served_2]
|
4609
4077
|
end
|
4610
4078
|
|
4611
4079
|
hpxml.heat_pumps.add(id: 'HeatPump',
|
@@ -4616,7 +4084,7 @@ class HPXMLFile
|
|
4616
4084
|
compressor_type: compressor_type,
|
4617
4085
|
cooling_shr: cooling_shr,
|
4618
4086
|
cooling_capacity: cooling_capacity,
|
4619
|
-
fraction_heat_load_served:
|
4087
|
+
fraction_heat_load_served: fraction_heat_load_served,
|
4620
4088
|
fraction_cool_load_served: args[:heat_pump_fraction_cool_load_served],
|
4621
4089
|
backup_heating_fuel: backup_heating_fuel,
|
4622
4090
|
backup_heating_capacity: backup_heating_capacity,
|
@@ -4627,20 +4095,51 @@ class HPXMLFile
|
|
4627
4095
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4628
4096
|
heating_efficiency_cop: heating_efficiency_cop,
|
4629
4097
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4630
|
-
|
4631
|
-
|
4098
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
4099
|
+
charge_defect_ratio: charge_defect_ratio)
|
4100
|
+
end
|
4101
|
+
|
4102
|
+
def self.set_secondary_heating_systems(hpxml, runner, args)
|
4103
|
+
heating_system_type_2 = args[:heating_system_type_2]
|
4104
|
+
|
4105
|
+
return if heating_system_type_2 == 'none'
|
4106
|
+
|
4107
|
+
if args[:heating_system_heating_capacity_2] != Constants.Auto
|
4108
|
+
heating_capacity_2 = args[:heating_system_heating_capacity_2]
|
4109
|
+
end
|
4110
|
+
|
4111
|
+
if args[:heating_system_fuel_2] == HPXML::HVACTypeElectricResistance
|
4112
|
+
heating_system_fuel_2 = HPXML::FuelTypeElectricity
|
4113
|
+
else
|
4114
|
+
heating_system_fuel_2 = args[:heating_system_fuel_2]
|
4115
|
+
end
|
4116
|
+
|
4117
|
+
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeBoiler].include? heating_system_type_2
|
4118
|
+
heating_efficiency_afue_2 = args[:heating_system_heating_efficiency_2]
|
4119
|
+
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace].include? heating_system_type_2
|
4120
|
+
heating_efficiency_percent_2 = args[:heating_system_heating_efficiency_2]
|
4121
|
+
end
|
4122
|
+
|
4123
|
+
hpxml.heating_systems.add(id: 'SecondHeatingSystem',
|
4124
|
+
heating_system_type: heating_system_type_2,
|
4125
|
+
heating_system_fuel: heating_system_fuel_2,
|
4126
|
+
heating_capacity: heating_capacity_2,
|
4127
|
+
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served_2],
|
4128
|
+
heating_efficiency_afue: heating_efficiency_afue_2,
|
4129
|
+
heating_efficiency_percent: heating_efficiency_percent_2)
|
4632
4130
|
end
|
4633
4131
|
|
4634
4132
|
def self.set_hvac_distribution(hpxml, runner, args)
|
4635
4133
|
# HydronicDistribution?
|
4134
|
+
hydr_idx = 0
|
4636
4135
|
hpxml.heating_systems.each do |heating_system|
|
4637
4136
|
next unless [HPXML::HVACTypeBoiler].include? heating_system.heating_system_type
|
4638
4137
|
|
4639
|
-
|
4138
|
+
hydr_idx += 1
|
4139
|
+
hpxml.hvac_distributions.add(id: "HydronicDistribution#{hydr_idx}",
|
4640
4140
|
distribution_system_type: HPXML::HVACDistributionTypeHydronic,
|
4641
4141
|
hydronic_type: HPXML::HydronicTypeBaseboard)
|
4642
4142
|
heating_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
|
4643
|
-
break
|
4644
4143
|
end
|
4645
4144
|
|
4646
4145
|
# AirDistribution?
|
@@ -4661,8 +4160,8 @@ class HPXMLFile
|
|
4661
4160
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
4662
4161
|
air_distribution_systems << heat_pump
|
4663
4162
|
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump.heat_pump_type)
|
4664
|
-
if args[:
|
4665
|
-
air_distribution_systems << heat_pump if to_boolean(args[:
|
4163
|
+
if args[:heat_pump_is_ducted].is_initialized
|
4164
|
+
air_distribution_systems << heat_pump if to_boolean(args[:heat_pump_is_ducted].get)
|
4666
4165
|
end
|
4667
4166
|
end
|
4668
4167
|
end
|
@@ -4687,13 +4186,10 @@ class HPXMLFile
|
|
4687
4186
|
duct_leakage_value: args[:ducts_supply_leakage_value],
|
4688
4187
|
duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
|
4689
4188
|
|
4690
|
-
|
4691
|
-
|
4692
|
-
|
4693
|
-
|
4694
|
-
duct_leakage_value: args[:ducts_return_leakage_value],
|
4695
|
-
duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
|
4696
|
-
end
|
4189
|
+
hpxml.hvac_distributions[-1].duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
|
4190
|
+
duct_leakage_units: args[:ducts_return_leakage_units],
|
4191
|
+
duct_leakage_value: args[:ducts_return_leakage_value],
|
4192
|
+
duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
|
4697
4193
|
|
4698
4194
|
# Ducts
|
4699
4195
|
if args[:ducts_supply_location] != Constants.Auto
|
@@ -4725,51 +4221,23 @@ class HPXMLFile
|
|
4725
4221
|
end
|
4726
4222
|
end
|
4727
4223
|
|
4728
|
-
def self.modify_setpoint_schedule(schedule, offset_magnitude, offset_schedule)
|
4729
|
-
offset_schedule.each_with_index do |direction, i|
|
4730
|
-
schedule[i] += offset_magnitude * direction
|
4731
|
-
end
|
4732
|
-
return schedule
|
4733
|
-
end
|
4734
|
-
|
4735
4224
|
def self.set_hvac_control(hpxml, runner, args)
|
4736
4225
|
return if (args[:heating_system_type] == 'none') && (args[:cooling_system_type] == 'none') && (args[:heat_pump_type] == 'none')
|
4737
4226
|
|
4738
|
-
|
4739
|
-
|
4740
|
-
|
4741
|
-
|
4742
|
-
|
4743
|
-
|
4744
|
-
if args[:setpoint_heating_weekday_offset_magnitude].is_initialized && args[:setpoint_heating_weekday_schedule].is_initialized
|
4745
|
-
setpoint_heating_weekday_offset_magnitude = args[:setpoint_heating_weekday_offset_magnitude].get
|
4746
|
-
setpoint_heating_weekday_schedule = args[:setpoint_heating_weekday_schedule].get.split(',').map { |i| Float(i) }
|
4747
|
-
weekday_heating_setpoints = modify_setpoint_schedule(weekday_heating_setpoints, setpoint_heating_weekday_offset_magnitude, setpoint_heating_weekday_schedule)
|
4748
|
-
end
|
4749
|
-
|
4750
|
-
if args[:setpoint_heating_weekend_offset_magnitude].is_initialized && args[:setpoint_heating_weekend_schedule].is_initialized
|
4751
|
-
setpoint_heating_weekend_offset_magnitude = args[:setpoint_heating_weekend_offset_magnitude].get
|
4752
|
-
setpoint_heating_weekend_schedule = args[:setpoint_heating_weekend_schedule].get.split(',').map { |i| Float(i) }
|
4753
|
-
weekend_heating_setpoints = modify_setpoint_schedule(weekend_heating_setpoints, setpoint_heating_weekend_offset_magnitude, setpoint_heating_weekend_schedule)
|
4754
|
-
end
|
4755
|
-
|
4756
|
-
if args[:setpoint_cooling_weekday_offset_magnitude].is_initialized && args[:setpoint_cooling_weekday_schedule].is_initialized
|
4757
|
-
setpoint_cooling_weekday_offset_magnitude = args[:setpoint_cooling_weekday_offset_magnitude].get
|
4758
|
-
setpoint_cooling_weekday_schedule = args[:setpoint_cooling_weekday_schedule].get.split(',').map { |i| Float(i) }
|
4759
|
-
weekday_cooling_setpoints = modify_setpoint_schedule(weekday_cooling_setpoints, setpoint_cooling_weekday_offset_magnitude, setpoint_cooling_weekday_schedule)
|
4227
|
+
if args[:setpoint_heating_weekday] == args[:setpoint_heating_weekend] && !args[:setpoint_heating_weekday].include?(',')
|
4228
|
+
heating_setpoint_temp = args[:setpoint_heating_weekday]
|
4229
|
+
else
|
4230
|
+
weekday_heating_setpoints = args[:setpoint_heating_weekday]
|
4231
|
+
weekend_heating_setpoints = args[:setpoint_heating_weekend]
|
4760
4232
|
end
|
4761
4233
|
|
4762
|
-
if args[:
|
4763
|
-
|
4764
|
-
|
4765
|
-
|
4234
|
+
if args[:setpoint_cooling_weekday] == args[:setpoint_cooling_weekend] && !args[:setpoint_cooling_weekday].include?(',')
|
4235
|
+
cooling_setpoint_temp = args[:setpoint_cooling_weekday]
|
4236
|
+
else
|
4237
|
+
weekday_cooling_setpoints = args[:setpoint_cooling_weekday]
|
4238
|
+
weekend_cooling_setpoints = args[:setpoint_cooling_weekend]
|
4766
4239
|
end
|
4767
4240
|
|
4768
|
-
weekday_heating_setpoints = weekday_heating_setpoints.join(', ')
|
4769
|
-
weekend_heating_setpoints = weekend_heating_setpoints.join(', ')
|
4770
|
-
weekday_cooling_setpoints = weekday_cooling_setpoints.join(', ')
|
4771
|
-
weekend_cooling_setpoints = weekend_cooling_setpoints.join(', ')
|
4772
|
-
|
4773
4241
|
ceiling_fan_quantity = nil
|
4774
4242
|
if args[:ceiling_fan_quantity] != Constants.Auto
|
4775
4243
|
ceiling_fan_quantity = Float(args[:ceiling_fan_quantity])
|
@@ -4780,6 +4248,8 @@ class HPXMLFile
|
|
4780
4248
|
end
|
4781
4249
|
|
4782
4250
|
hpxml.hvac_controls.add(id: 'HVACControl',
|
4251
|
+
heating_setpoint_temp: heating_setpoint_temp,
|
4252
|
+
cooling_setpoint_temp: cooling_setpoint_temp,
|
4783
4253
|
weekday_heating_setpoints: weekday_heating_setpoints,
|
4784
4254
|
weekend_heating_setpoints: weekend_heating_setpoints,
|
4785
4255
|
weekday_cooling_setpoints: weekday_cooling_setpoints,
|
@@ -4790,24 +4260,20 @@ class HPXMLFile
|
|
4790
4260
|
def self.set_ventilation_fans(hpxml, runner, args)
|
4791
4261
|
if args[:mech_vent_fan_type] != 'none'
|
4792
4262
|
|
4793
|
-
if args[:mech_vent_fan_type]
|
4794
|
-
|
4795
|
-
|
4796
|
-
|
4797
|
-
|
4798
|
-
|
4799
|
-
|
4800
|
-
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency]
|
4801
|
-
end
|
4802
|
-
|
4263
|
+
if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type])
|
4264
|
+
if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted'
|
4265
|
+
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency]
|
4266
|
+
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency]
|
4267
|
+
elsif args[:mech_vent_recovery_efficiency_type] == 'Adjusted'
|
4268
|
+
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency]
|
4269
|
+
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency]
|
4803
4270
|
end
|
4804
|
-
|
4805
|
-
if args[:
|
4271
|
+
elsif [HPXML::MechVentTypeHRV].include?(args[:mech_vent_fan_type])
|
4272
|
+
if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted'
|
4806
4273
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency]
|
4807
|
-
elsif args[:
|
4274
|
+
elsif args[:mech_vent_recovery_efficiency_type] == 'Adjusted'
|
4808
4275
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency]
|
4809
4276
|
end
|
4810
|
-
|
4811
4277
|
end
|
4812
4278
|
|
4813
4279
|
distribution_system_idref = nil
|
@@ -4859,24 +4325,21 @@ class HPXMLFile
|
|
4859
4325
|
|
4860
4326
|
if args[:mech_vent_fan_type_2] != 'none'
|
4861
4327
|
|
4862
|
-
if args[:mech_vent_fan_type_2]
|
4863
|
-
|
4864
|
-
if args[:mech_vent_fan_type_2].include? 'energy'
|
4865
|
-
|
4866
|
-
if args[:mech_vent_total_recovery_efficiency_type_2] == 'Unadjusted'
|
4867
|
-
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency_2]
|
4868
|
-
elsif args[:mech_vent_total_recovery_efficiency_type_2] == 'Adjusted'
|
4869
|
-
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency_2]
|
4870
|
-
end
|
4328
|
+
if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type_2])
|
4871
4329
|
|
4330
|
+
if args[:mech_vent_recovery_efficiency_type_2] == 'Unadjusted'
|
4331
|
+
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency_2]
|
4332
|
+
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency_2]
|
4333
|
+
elsif args[:mech_vent_recovery_efficiency_type_2] == 'Adjusted'
|
4334
|
+
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency_2]
|
4335
|
+
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency_2]
|
4872
4336
|
end
|
4873
|
-
|
4874
|
-
if args[:
|
4337
|
+
elsif [HPXML::MechVentTypeHRV].include?(args[:mech_vent_fan_type_2])
|
4338
|
+
if args[:mech_vent_recovery_efficiency_type_2] == 'Unadjusted'
|
4875
4339
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency_2]
|
4876
|
-
elsif args[:
|
4340
|
+
elsif args[:mech_vent_recovery_efficiency_type_2] == 'Adjusted'
|
4877
4341
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency_2]
|
4878
4342
|
end
|
4879
|
-
|
4880
4343
|
end
|
4881
4344
|
|
4882
4345
|
distribution_system_idref = nil
|
@@ -4901,25 +4364,33 @@ class HPXMLFile
|
|
4901
4364
|
distribution_system_idref: distribution_system_idref)
|
4902
4365
|
end
|
4903
4366
|
|
4904
|
-
if args[:
|
4367
|
+
if (args[:kitchen_fans_quantity] == Constants.Auto) || (args[:kitchen_fans_quantity].to_i > 0)
|
4905
4368
|
if args[:kitchen_fans_flow_rate].is_initialized
|
4906
|
-
|
4369
|
+
if args[:kitchen_fans_flow_rate].get != Constants.Auto
|
4370
|
+
rated_flow_rate = args[:kitchen_fans_flow_rate].get.to_f
|
4371
|
+
end
|
4907
4372
|
end
|
4908
4373
|
|
4909
4374
|
if args[:kitchen_fans_power].is_initialized
|
4910
|
-
|
4375
|
+
if args[:kitchen_fans_power].get != Constants.Auto
|
4376
|
+
fan_power = args[:kitchen_fans_power].get.to_f
|
4377
|
+
end
|
4911
4378
|
end
|
4912
4379
|
|
4913
4380
|
if args[:kitchen_fans_hours_in_operation].is_initialized
|
4914
|
-
|
4381
|
+
if args[:kitchen_fans_hours_in_operation].get != Constants.Auto
|
4382
|
+
hours_in_operation = args[:kitchen_fans_hours_in_operation].get.to_f
|
4383
|
+
end
|
4915
4384
|
end
|
4916
4385
|
|
4917
4386
|
if args[:kitchen_fans_start_hour].is_initialized
|
4918
|
-
|
4387
|
+
if args[:kitchen_fans_start_hour].get != Constants.Auto
|
4388
|
+
start_hour = args[:kitchen_fans_start_hour].get.to_i
|
4389
|
+
end
|
4919
4390
|
end
|
4920
4391
|
|
4921
|
-
if args[:kitchen_fans_quantity].
|
4922
|
-
quantity = args[:kitchen_fans_quantity].
|
4392
|
+
if args[:kitchen_fans_quantity] != Constants.Auto
|
4393
|
+
quantity = args[:kitchen_fans_quantity].to_i
|
4923
4394
|
end
|
4924
4395
|
|
4925
4396
|
hpxml.ventilation_fans.add(id: 'KitchenRangeFan',
|
@@ -4932,25 +4403,33 @@ class HPXMLFile
|
|
4932
4403
|
quantity: quantity)
|
4933
4404
|
end
|
4934
4405
|
|
4935
|
-
if args[:
|
4406
|
+
if (args[:bathroom_fans_quantity] == Constants.Auto) || (args[:bathroom_fans_quantity].to_i > 0)
|
4936
4407
|
if args[:bathroom_fans_flow_rate].is_initialized
|
4937
|
-
|
4408
|
+
if args[:bathroom_fans_flow_rate].get != Constants.Auto
|
4409
|
+
rated_flow_rate = args[:bathroom_fans_flow_rate].get.to_f
|
4410
|
+
end
|
4938
4411
|
end
|
4939
4412
|
|
4940
4413
|
if args[:bathroom_fans_power].is_initialized
|
4941
|
-
|
4414
|
+
if args[:bathroom_fans_power].get != Constants.Auto
|
4415
|
+
fan_power = args[:bathroom_fans_power].get.to_f
|
4416
|
+
end
|
4942
4417
|
end
|
4943
4418
|
|
4944
4419
|
if args[:bathroom_fans_hours_in_operation].is_initialized
|
4945
|
-
|
4420
|
+
if args[:bathroom_fans_hours_in_operation].get != Constants.Auto
|
4421
|
+
hours_in_operation = args[:bathroom_fans_hours_in_operation].get.to_f
|
4422
|
+
end
|
4946
4423
|
end
|
4947
4424
|
|
4948
4425
|
if args[:bathroom_fans_start_hour].is_initialized
|
4949
|
-
|
4426
|
+
if args[:bathroom_fans_start_hour].get != Constants.Auto
|
4427
|
+
start_hour = args[:bathroom_fans_start_hour].get.to_i
|
4428
|
+
end
|
4950
4429
|
end
|
4951
4430
|
|
4952
|
-
if args[:bathroom_fans_quantity].
|
4953
|
-
quantity = args[:bathroom_fans_quantity].
|
4431
|
+
if args[:bathroom_fans_quantity] != Constants.Auto
|
4432
|
+
quantity = args[:bathroom_fans_quantity].to_i
|
4954
4433
|
end
|
4955
4434
|
|
4956
4435
|
hpxml.ventilation_fans.add(id: 'BathFans',
|
@@ -4993,10 +4472,6 @@ class HPXMLFile
|
|
4993
4472
|
tank_volume = args[:water_heater_tank_volume]
|
4994
4473
|
end
|
4995
4474
|
|
4996
|
-
if args[:water_heater_heating_capacity] != Constants.Auto
|
4997
|
-
heating_capacity = args[:water_heater_heating_capacity]
|
4998
|
-
end
|
4999
|
-
|
5000
4475
|
if args[:water_heater_setpoint_temperature] != Constants.Auto
|
5001
4476
|
temperature = args[:water_heater_setpoint_temperature]
|
5002
4477
|
end
|
@@ -5064,7 +4539,6 @@ class HPXMLFile
|
|
5064
4539
|
location: location,
|
5065
4540
|
tank_volume: tank_volume,
|
5066
4541
|
fraction_dhw_load_served: 1.0,
|
5067
|
-
heating_capacity: heating_capacity,
|
5068
4542
|
energy_factor: energy_factor,
|
5069
4543
|
uniform_energy_factor: uniform_energy_factor,
|
5070
4544
|
first_hour_rating: first_hour_rating,
|
@@ -5310,12 +4784,12 @@ class HPXMLFile
|
|
5310
4784
|
end
|
5311
4785
|
|
5312
4786
|
def self.set_dehumidifier(hpxml, runner, args)
|
5313
|
-
return
|
4787
|
+
return if args[:dehumidifier_type] == 'none'
|
5314
4788
|
|
5315
4789
|
if args[:dehumidifier_efficiency_type] == 'EnergyFactor'
|
5316
|
-
energy_factor = args[:
|
4790
|
+
energy_factor = args[:dehumidifier_efficiency]
|
5317
4791
|
elsif args[:dehumidifier_efficiency_type] == 'IntegratedEnergyFactor'
|
5318
|
-
integrated_energy_factor = args[:
|
4792
|
+
integrated_energy_factor = args[:dehumidifier_efficiency]
|
5319
4793
|
end
|
5320
4794
|
|
5321
4795
|
hpxml.dehumidifiers.add(id: 'Dehumidifier',
|
@@ -5324,31 +4798,31 @@ class HPXMLFile
|
|
5324
4798
|
energy_factor: energy_factor,
|
5325
4799
|
integrated_energy_factor: integrated_energy_factor,
|
5326
4800
|
rh_setpoint: args[:dehumidifier_rh_setpoint],
|
5327
|
-
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served]
|
4801
|
+
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served],
|
4802
|
+
location: HPXML::LocationLivingSpace)
|
5328
4803
|
end
|
5329
4804
|
|
5330
4805
|
def self.set_clothes_washer(hpxml, runner, args)
|
5331
4806
|
if args[:water_heater_type] == 'none'
|
5332
|
-
args[:
|
4807
|
+
args[:clothes_washer_location] = 'none'
|
5333
4808
|
end
|
5334
4809
|
|
5335
|
-
return
|
4810
|
+
return if args[:clothes_washer_location] == 'none'
|
5336
4811
|
|
5337
4812
|
if args[:clothes_washer_rated_annual_kwh] != Constants.Auto
|
5338
4813
|
rated_annual_kwh = args[:clothes_washer_rated_annual_kwh]
|
4814
|
+
return if Float(rated_annual_kwh) == 0
|
5339
4815
|
end
|
5340
4816
|
|
5341
4817
|
if args[:clothes_washer_location] != Constants.Auto
|
5342
4818
|
location = args[:clothes_washer_location]
|
5343
4819
|
end
|
5344
4820
|
|
5345
|
-
if args[:
|
5346
|
-
if args[:
|
5347
|
-
modified_energy_factor = args[:
|
5348
|
-
|
5349
|
-
|
5350
|
-
if args[:clothes_washer_efficiency_imef] != Constants.Auto
|
5351
|
-
integrated_modified_energy_factor = args[:clothes_washer_efficiency_imef]
|
4821
|
+
if args[:clothes_washer_efficiency] != Constants.Auto
|
4822
|
+
if args[:clothes_washer_efficiency_type] == 'ModifiedEnergyFactor'
|
4823
|
+
modified_energy_factor = args[:clothes_washer_efficiency].to_f
|
4824
|
+
elsif args[:clothes_washer_efficiency_type] == 'IntegratedModifiedEnergyFactor'
|
4825
|
+
integrated_modified_energy_factor = args[:clothes_washer_efficiency].to_f
|
5352
4826
|
end
|
5353
4827
|
end
|
5354
4828
|
|
@@ -5390,14 +4864,14 @@ class HPXMLFile
|
|
5390
4864
|
end
|
5391
4865
|
|
5392
4866
|
def self.set_clothes_dryer(hpxml, runner, args)
|
5393
|
-
return
|
5394
|
-
return
|
5395
|
-
|
5396
|
-
if args[:
|
5397
|
-
|
5398
|
-
|
5399
|
-
|
5400
|
-
combined_energy_factor = args[:
|
4867
|
+
return if args[:clothes_washer_location] == 'none'
|
4868
|
+
return if args[:clothes_dryer_location] == 'none'
|
4869
|
+
|
4870
|
+
if args[:clothes_dryer_efficiency] != Constants.Auto
|
4871
|
+
if args[:clothes_dryer_efficiency_type] == 'EnergyFactor'
|
4872
|
+
energy_factor = args[:clothes_dryer_efficiency].to_f
|
4873
|
+
elsif args[:clothes_dryer_efficiency_type] == 'CombinedEnergyFactor'
|
4874
|
+
combined_energy_factor = args[:clothes_dryer_efficiency].to_f
|
5401
4875
|
end
|
5402
4876
|
end
|
5403
4877
|
|
@@ -5405,10 +4879,6 @@ class HPXMLFile
|
|
5405
4879
|
location = args[:clothes_dryer_location]
|
5406
4880
|
end
|
5407
4881
|
|
5408
|
-
if args[:clothes_dryer_control_type] != Constants.Auto
|
5409
|
-
control_type = args[:clothes_dryer_control_type]
|
5410
|
-
end
|
5411
|
-
|
5412
4882
|
if args[:clothes_dryer_vented_flow_rate] != Constants.Auto
|
5413
4883
|
is_vented = false
|
5414
4884
|
if Float(args[:clothes_dryer_vented_flow_rate]) > 0
|
@@ -5426,25 +4896,25 @@ class HPXMLFile
|
|
5426
4896
|
fuel_type: args[:clothes_dryer_fuel_type],
|
5427
4897
|
energy_factor: energy_factor,
|
5428
4898
|
combined_energy_factor: combined_energy_factor,
|
5429
|
-
control_type: control_type,
|
5430
4899
|
is_vented: is_vented,
|
5431
4900
|
vented_flow_rate: vented_flow_rate,
|
5432
4901
|
usage_multiplier: usage_multiplier)
|
5433
4902
|
end
|
5434
4903
|
|
5435
4904
|
def self.set_dishwasher(hpxml, runner, args)
|
5436
|
-
return
|
4905
|
+
return if args[:dishwasher_location] == 'none'
|
5437
4906
|
|
5438
4907
|
if args[:dishwasher_location] != Constants.Auto
|
5439
4908
|
location = args[:dishwasher_location]
|
5440
4909
|
end
|
5441
4910
|
|
5442
4911
|
if args[:dishwasher_efficiency_type] == 'RatedAnnualkWh'
|
5443
|
-
if args[:
|
5444
|
-
rated_annual_kwh = args[:
|
4912
|
+
if args[:dishwasher_efficiency] != Constants.Auto
|
4913
|
+
rated_annual_kwh = args[:dishwasher_efficiency]
|
4914
|
+
return if Float(rated_annual_kwh) == 0
|
5445
4915
|
end
|
5446
4916
|
elsif args[:dishwasher_efficiency_type] == 'EnergyFactor'
|
5447
|
-
energy_factor = args[:
|
4917
|
+
energy_factor = args[:dishwasher_efficiency]
|
5448
4918
|
end
|
5449
4919
|
|
5450
4920
|
if args[:dishwasher_label_electric_rate] != Constants.Auto
|
@@ -5484,10 +4954,11 @@ class HPXMLFile
|
|
5484
4954
|
end
|
5485
4955
|
|
5486
4956
|
def self.set_refrigerator(hpxml, runner, args)
|
5487
|
-
return
|
4957
|
+
return if args[:refrigerator_location] == 'none'
|
5488
4958
|
|
5489
4959
|
if args[:refrigerator_rated_annual_kwh] != Constants.Auto
|
5490
|
-
|
4960
|
+
rated_annual_kwh = args[:refrigerator_rated_annual_kwh]
|
4961
|
+
return if Float(rated_annual_kwh) == 0
|
5491
4962
|
end
|
5492
4963
|
|
5493
4964
|
if args[:refrigerator_location] != Constants.Auto
|
@@ -5498,22 +4969,23 @@ class HPXMLFile
|
|
5498
4969
|
usage_multiplier = args[:refrigerator_usage_multiplier]
|
5499
4970
|
end
|
5500
4971
|
|
5501
|
-
if args[:
|
4972
|
+
if args[:extra_refrigerator_location] != 'none'
|
5502
4973
|
primary_indicator = true
|
5503
4974
|
end
|
5504
4975
|
|
5505
4976
|
hpxml.refrigerators.add(id: 'Refrigerator',
|
5506
4977
|
location: location,
|
5507
|
-
rated_annual_kwh:
|
4978
|
+
rated_annual_kwh: rated_annual_kwh,
|
5508
4979
|
primary_indicator: primary_indicator,
|
5509
4980
|
usage_multiplier: usage_multiplier)
|
5510
4981
|
end
|
5511
4982
|
|
5512
4983
|
def self.set_extra_refrigerator(hpxml, runner, args)
|
5513
|
-
return
|
4984
|
+
return if args[:extra_refrigerator_location] == 'none'
|
5514
4985
|
|
5515
4986
|
if args[:extra_refrigerator_rated_annual_kwh] != Constants.Auto
|
5516
4987
|
rated_annual_kwh = args[:extra_refrigerator_rated_annual_kwh]
|
4988
|
+
return if Float(rated_annual_kwh) == 0
|
5517
4989
|
end
|
5518
4990
|
|
5519
4991
|
if args[:extra_refrigerator_location] != Constants.Auto
|
@@ -5532,10 +5004,11 @@ class HPXMLFile
|
|
5532
5004
|
end
|
5533
5005
|
|
5534
5006
|
def self.set_freezer(hpxml, runner, args)
|
5535
|
-
return
|
5007
|
+
return if args[:freezer_location] == 'none'
|
5536
5008
|
|
5537
5009
|
if args[:freezer_rated_annual_kwh] != Constants.Auto
|
5538
5010
|
rated_annual_kwh = args[:freezer_rated_annual_kwh]
|
5011
|
+
return if Float(rated_annual_kwh) == 0
|
5539
5012
|
end
|
5540
5013
|
|
5541
5014
|
if args[:freezer_location] != Constants.Auto
|
@@ -5553,7 +5026,7 @@ class HPXMLFile
|
|
5553
5026
|
end
|
5554
5027
|
|
5555
5028
|
def self.set_cooking_range_oven(hpxml, runner, args)
|
5556
|
-
return
|
5029
|
+
return if args[:cooking_range_oven_location] == 'none'
|
5557
5030
|
|
5558
5031
|
if args[:cooking_range_oven_location] != Constants.Auto
|
5559
5032
|
location = args[:cooking_range_oven_location]
|
@@ -5602,7 +5075,7 @@ class HPXMLFile
|
|
5602
5075
|
kWh_per_year = args[:plug_loads_television_annual_kwh]
|
5603
5076
|
end
|
5604
5077
|
|
5605
|
-
usage_multiplier = args[:plug_loads_television_usage_multiplier]
|
5078
|
+
usage_multiplier = args[:plug_loads_television_usage_multiplier]
|
5606
5079
|
if usage_multiplier == 1.0
|
5607
5080
|
usage_multiplier = nil
|
5608
5081
|
end
|
@@ -5626,7 +5099,7 @@ class HPXMLFile
|
|
5626
5099
|
frac_latent = args[:plug_loads_other_frac_latent]
|
5627
5100
|
end
|
5628
5101
|
|
5629
|
-
usage_multiplier = args[:plug_loads_other_usage_multiplier]
|
5102
|
+
usage_multiplier = args[:plug_loads_other_usage_multiplier]
|
5630
5103
|
if usage_multiplier == 1.0
|
5631
5104
|
usage_multiplier = nil
|
5632
5105
|
end
|
@@ -5646,7 +5119,7 @@ class HPXMLFile
|
|
5646
5119
|
kWh_per_year = args[:plug_loads_well_pump_annual_kwh]
|
5647
5120
|
end
|
5648
5121
|
|
5649
|
-
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier]
|
5122
|
+
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier]
|
5650
5123
|
if usage_multiplier == 1.0
|
5651
5124
|
usage_multiplier = nil
|
5652
5125
|
end
|
@@ -5664,7 +5137,7 @@ class HPXMLFile
|
|
5664
5137
|
kWh_per_year = args[:plug_loads_vehicle_annual_kwh]
|
5665
5138
|
end
|
5666
5139
|
|
5667
|
-
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier]
|
5140
|
+
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier]
|
5668
5141
|
if usage_multiplier == 1.0
|
5669
5142
|
usage_multiplier = nil
|
5670
5143
|
end
|
@@ -5750,10 +5223,6 @@ class HPXMLFile
|
|
5750
5223
|
pump_usage_multiplier = args[:pool_pump_usage_multiplier]
|
5751
5224
|
end
|
5752
5225
|
|
5753
|
-
if args[:pool_heater_type] != 'none'
|
5754
|
-
heater_type = args[:pool_heater_type]
|
5755
|
-
end
|
5756
|
-
|
5757
5226
|
if args[:pool_heater_annual_kwh] != Constants.Auto
|
5758
5227
|
heater_load_units = 'kWh/year'
|
5759
5228
|
heater_load_value = args[:pool_heater_annual_kwh]
|
@@ -5769,9 +5238,11 @@ class HPXMLFile
|
|
5769
5238
|
end
|
5770
5239
|
|
5771
5240
|
hpxml.pools.add(id: 'Pool',
|
5241
|
+
type: HPXML::TypeUnknown,
|
5242
|
+
pump_type: HPXML::TypeUnknown,
|
5772
5243
|
pump_kwh_per_year: pump_kwh_per_year,
|
5773
5244
|
pump_usage_multiplier: pump_usage_multiplier,
|
5774
|
-
heater_type:
|
5245
|
+
heater_type: args[:pool_heater_type],
|
5775
5246
|
heater_load_units: heater_load_units,
|
5776
5247
|
heater_load_value: heater_load_value,
|
5777
5248
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5788,10 +5259,6 @@ class HPXMLFile
|
|
5788
5259
|
pump_usage_multiplier = args[:hot_tub_pump_usage_multiplier]
|
5789
5260
|
end
|
5790
5261
|
|
5791
|
-
if args[:hot_tub_heater_type] != 'none'
|
5792
|
-
heater_type = args[:hot_tub_heater_type]
|
5793
|
-
end
|
5794
|
-
|
5795
5262
|
if args[:hot_tub_heater_annual_kwh] != Constants.Auto
|
5796
5263
|
heater_load_units = 'kWh/year'
|
5797
5264
|
heater_load_value = args[:hot_tub_heater_annual_kwh]
|
@@ -5807,9 +5274,11 @@ class HPXMLFile
|
|
5807
5274
|
end
|
5808
5275
|
|
5809
5276
|
hpxml.hot_tubs.add(id: 'HotTub',
|
5277
|
+
type: HPXML::TypeUnknown,
|
5278
|
+
pump_type: HPXML::TypeUnknown,
|
5810
5279
|
pump_kwh_per_year: pump_kwh_per_year,
|
5811
5280
|
pump_usage_multiplier: pump_usage_multiplier,
|
5812
|
-
heater_type:
|
5281
|
+
heater_type: args[:hot_tub_heater_type],
|
5813
5282
|
heater_load_units: heater_load_units,
|
5814
5283
|
heater_load_value: heater_load_value,
|
5815
5284
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5827,31 +5296,7 @@ class HPXMLFile
|
|
5827
5296
|
st = space.spaceType.get
|
5828
5297
|
space_type = st.standardsSpaceType.get
|
5829
5298
|
|
5830
|
-
|
5831
|
-
return HPXML::LocationCrawlspaceVented
|
5832
|
-
elsif ['unvented crawlspace'].include? space_type
|
5833
|
-
return HPXML::LocationCrawlspaceUnvented
|
5834
|
-
elsif ['garage'].include? space_type
|
5835
|
-
return HPXML::LocationGarage
|
5836
|
-
elsif ['living space'].include? space_type
|
5837
|
-
if Geometry.space_is_below_grade(space)
|
5838
|
-
return HPXML::LocationBasementConditioned
|
5839
|
-
else
|
5840
|
-
return HPXML::LocationLivingSpace
|
5841
|
-
end
|
5842
|
-
elsif ['vented attic'].include? space_type
|
5843
|
-
return HPXML::LocationAtticVented
|
5844
|
-
elsif ['unvented attic'].include? space_type
|
5845
|
-
return HPXML::LocationAtticUnvented
|
5846
|
-
elsif ['unconditioned basement'].include? space_type
|
5847
|
-
return HPXML::LocationBasementUnconditioned
|
5848
|
-
elsif ['corridor'].include? space_type
|
5849
|
-
return HPXML::LocationOtherHousingUnit
|
5850
|
-
elsif ['ambient'].include? space_type
|
5851
|
-
return HPXML::LocationOutside
|
5852
|
-
else
|
5853
|
-
fail "Unhandled SpaceType value (#{space_type}) for surface '#{surface.name}'."
|
5854
|
-
end
|
5299
|
+
return space_type
|
5855
5300
|
end
|
5856
5301
|
|
5857
5302
|
def self.get_surface_azimuth(surface, args)
|