urbanopt-cli 0.5.1 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -2
- data/CHANGELOG.md +43 -1
- data/CMakeLists.txt +14 -14
- data/FindOpenStudioSDK.cmake +11 -6
- data/Gemfile +11 -5
- data/LICENSE.md +11 -1
- data/Rakefile +16 -6
- data/example_files/Gemfile +8 -8
- data/example_files/example_project_combined.json +100 -5
- data/example_files/example_project_with_streets.json +826 -0
- data/example_files/mappers/Baseline.rb +107 -59
- data/example_files/mappers/CreateBar.rb +17 -7
- data/example_files/mappers/EvCharging.rb +20 -10
- data/example_files/mappers/Floorspace.rb +17 -7
- data/example_files/mappers/HighEfficiency.rb +20 -8
- data/example_files/mappers/HighEfficiencyCreateBar.rb +19 -8
- data/example_files/mappers/HighEfficiencyFloorspace.rb +19 -8
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/measures/BuildResidentialModel/measure.rb +249 -134
- data/example_files/reopt/base_assumptions.json +2 -2
- data/example_files/reopt/multiPV_assumptions.json +4 -3
- data/example_files/residential/clothes_dryer.tsv +7 -7
- data/example_files/residential/clothes_washer.tsv +1 -1
- data/example_files/residential/cooling_system.tsv +42 -22
- data/example_files/residential/dishwasher.tsv +1 -1
- data/example_files/residential/exhaust.tsv +3 -0
- data/example_files/residential/heat_pump.tsv +62 -40
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +2 -1
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +116 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +746 -1236
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1550 -1215
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +432 -343
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +134 -91
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +41 -65
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +36 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +35 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +35 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +36 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +41 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +37 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +36 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +45 -69
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +49 -73
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-location-honolulu-hi.osw} +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +44 -70
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +37 -61
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +60 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +38 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +39 -63
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +38 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +40 -64
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +38 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
- data/example_files/resources/hpxml-measures/Changelog.md +249 -0
- data/example_files/resources/hpxml-measures/Gemfile +3 -4
- data/example_files/resources/hpxml-measures/Gemfile.lock +27 -32
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +318 -1283
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +167 -121
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +7 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +600 -203
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +21 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +112 -177
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +16 -180
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +543 -94
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +4 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +410 -14
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +782 -460
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +455 -107
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1466 -1403
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1391 -1467
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +85 -13
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +14 -33
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +3 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +43 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +24 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +4 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +32 -30
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +6 -29
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +523 -635
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +297 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +0 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +26 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
- data/example_files/resources/hpxml-measures/README.md +4 -5
- data/example_files/resources/hpxml-measures/Rakefile +1 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +140 -47
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +351 -495
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +260 -189
- data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +4 -105
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +538 -396
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +158 -130
- data/example_files/resources/hpxml-measures/tasks.rb +1497 -736
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +36 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +5 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +28 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +28 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +23 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +23 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +23 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +6 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +8 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +17 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +564 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +9 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +601 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +22 -21
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2475 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +577 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +644 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +6 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +558 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +558 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +557 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +557 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +569 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +547 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +547 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +2 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +553 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +547 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +548 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +558 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +562 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +547 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +7 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +11 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +512 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +548 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +548 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +562 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +568 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +566 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +571 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +552 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +552 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +565 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +570 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +1 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +6 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +3 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +512 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +7 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +37 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +37 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +577 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +11 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +32 -29
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +4 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +8 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +12 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +8 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → invalid_files/dehumidifier-fraction-served.xml} +534 -523
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +7 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +448 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +14 -60
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +761 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +460 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +579 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +3 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +920 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +574 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +473 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +9 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +916 -909
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +15 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +5 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +3 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +6 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +4 -3
- data/example_files/resources/hpxml-measures/workflow/template.osw +5 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +324 -382
- data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
- data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
- data/example_files/visualization/input_visualization_feature.html +13 -14
- data/example_files/visualization/input_visualization_scenario.html +14 -9
- data/lib/uo_cli.rb +293 -60
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/scripts/setup-env-gitbash.sh +4 -4
- data/scripts/setup-env-unix.sh +4 -4
- data/scripts/setup-env.bat +3 -3
- data/scripts/setup-env.ps1 +3 -3
- data/uo_cli.gemspec +10 -7
- metadata +320 -82
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
- data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
- data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -74
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +0 -109
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -835
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +0 -563
@@ -21,7 +21,8 @@
|
|
21
21
|
"add_blended_rates_to_urdb_rate": false,
|
22
22
|
"net_metering_limit_kw": 0,
|
23
23
|
"interconnection_limit_kw": 100000000.0,
|
24
|
-
|
24
|
+
"blended_monthly_demand_charges_us_dollars_per_kw": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
|
25
|
+
"blended_monthly_rates_us_dollars_per_kwh": [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
|
25
26
|
},
|
26
27
|
"Wind": {
|
27
28
|
"min_kw": 0,
|
@@ -50,7 +51,6 @@
|
|
50
51
|
"pv_name": "Roof - South Face",
|
51
52
|
"location":"roof",
|
52
53
|
"existing_kw": 0,
|
53
|
-
"existing_kw": 0,
|
54
54
|
"min_kw": 0,
|
55
55
|
"max_kw": 1000000000.0,
|
56
56
|
"installed_cost_us_dollars_per_kw": 1600,
|
@@ -21,7 +21,8 @@
|
|
21
21
|
"add_blended_rates_to_urdb_rate": false,
|
22
22
|
"net_metering_limit_kw": 0,
|
23
23
|
"interconnection_limit_kw": 100000000.0,
|
24
|
-
|
24
|
+
"blended_monthly_demand_charges_us_dollars_per_kw": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
|
25
|
+
"blended_monthly_rates_us_dollars_per_kwh": [0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13]
|
25
26
|
},
|
26
27
|
"Wind": {
|
27
28
|
"min_kw": 0,
|
@@ -50,7 +51,7 @@
|
|
50
51
|
"pv_name": "Roof - South Face",
|
51
52
|
"location":"roof",
|
52
53
|
"existing_kw": 0,
|
53
|
-
"min_kw":
|
54
|
+
"min_kw": 0,
|
54
55
|
"max_kw": 1000000000.0,
|
55
56
|
"installed_cost_us_dollars_per_kw": 1600,
|
56
57
|
"om_cost_us_dollars_per_kw": 16,
|
@@ -85,7 +86,7 @@
|
|
85
86
|
{
|
86
87
|
"pv_name": "Groundmount",
|
87
88
|
"location":"ground",
|
88
|
-
"existing_kw":
|
89
|
+
"existing_kw": 0,
|
89
90
|
"min_kw": 0,
|
90
91
|
"max_kw": 1000000000.0,
|
91
92
|
"installed_cost_us_dollars_per_kw": 2200,
|
@@ -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
|
-
- [ ] No unexpected regression test changes on CI
|
14
|
+
- [ ] No unexpected regression test changes on CI (checked comparison artifacts)
|
@@ -0,0 +1,116 @@
|
|
1
|
+
name: ci
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches: [ master ]
|
6
|
+
pull_request:
|
7
|
+
types: [ synchronize, opened, ready_for_review ]
|
8
|
+
workflow_dispatch:
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
build:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
container:
|
14
|
+
image: docker://nrel/openstudio:develop
|
15
|
+
steps:
|
16
|
+
- uses: actions/checkout@v2
|
17
|
+
|
18
|
+
- name: Install gems
|
19
|
+
run: |
|
20
|
+
rm -f Gemfile.lock && bundle install
|
21
|
+
|
22
|
+
- name: Run tests
|
23
|
+
run: |
|
24
|
+
bundle exec rake test_all
|
25
|
+
|
26
|
+
- name: Store results
|
27
|
+
uses: actions/upload-artifact@v2
|
28
|
+
with:
|
29
|
+
path: workflow/tests/results
|
30
|
+
name: results
|
31
|
+
|
32
|
+
compare-results:
|
33
|
+
if: github.event_name == 'pull_request'
|
34
|
+
runs-on: ubuntu-latest
|
35
|
+
needs: build
|
36
|
+
steps:
|
37
|
+
- uses: actions/checkout@v2
|
38
|
+
with:
|
39
|
+
ref: ${{ github.event.pull_request.base.sha }}
|
40
|
+
|
41
|
+
- name: Store base results
|
42
|
+
uses: actions/upload-artifact@v2
|
43
|
+
with:
|
44
|
+
path: workflow/tests/base_results
|
45
|
+
name: base_results
|
46
|
+
|
47
|
+
- uses: actions/checkout@v2
|
48
|
+
with:
|
49
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
50
|
+
|
51
|
+
- name: Download base results
|
52
|
+
uses: actions/download-artifact@v2
|
53
|
+
with:
|
54
|
+
path: |
|
55
|
+
base_results
|
56
|
+
name: base_results
|
57
|
+
|
58
|
+
- name: Download feature results
|
59
|
+
uses: actions/download-artifact@v2
|
60
|
+
with:
|
61
|
+
path: |
|
62
|
+
results
|
63
|
+
name: results
|
64
|
+
|
65
|
+
- name: Compare results
|
66
|
+
run: |
|
67
|
+
cp -r base_results/results*.csv workflow/tests/base_results
|
68
|
+
mkdir workflow/tests/results
|
69
|
+
cp -r results/results* workflow/tests/results
|
70
|
+
ruby workflow/tests/compare.rb
|
71
|
+
|
72
|
+
- name: Store comparisons
|
73
|
+
uses: actions/upload-artifact@v2
|
74
|
+
with:
|
75
|
+
path: workflow/tests/comparisons
|
76
|
+
name: comparisons
|
77
|
+
|
78
|
+
update-results:
|
79
|
+
if: github.event.pull_request.draft != true
|
80
|
+
runs-on: ubuntu-latest
|
81
|
+
needs: compare-results
|
82
|
+
steps:
|
83
|
+
- uses: actions/checkout@v2
|
84
|
+
with:
|
85
|
+
ref: ${{ github.event.pull_request.head.sha }}
|
86
|
+
|
87
|
+
- name: Setup git branch
|
88
|
+
shell: bash
|
89
|
+
run: |
|
90
|
+
branch_name="${{ github.head_ref }}"
|
91
|
+
branch_sha="${{ github.event.pull_request.head.sha }}"
|
92
|
+
echo "Checking out branch: $branch_name, $branch_sha"
|
93
|
+
git checkout -b $branch_name || git checkout $branch_name
|
94
|
+
|
95
|
+
- name: Download feature results
|
96
|
+
uses: actions/download-artifact@v2
|
97
|
+
with:
|
98
|
+
path: |
|
99
|
+
results
|
100
|
+
name: results
|
101
|
+
|
102
|
+
- name: Commit latest results
|
103
|
+
shell: bash
|
104
|
+
run: |
|
105
|
+
git status
|
106
|
+
cp -r results/results* workflow/tests/base_results
|
107
|
+
git add workflow/tests/base_results
|
108
|
+
git status
|
109
|
+
if [[ $(git diff --cached --exit-code) ]]; then
|
110
|
+
git config --global user.email "github-action@users.noreply.github.com"
|
111
|
+
git config --global user.name "GitHub Action"
|
112
|
+
git commit -m "Latest results."
|
113
|
+
branch_name="${{ github.head_ref }}"
|
114
|
+
echo "Pushing to branch: $branch_name"
|
115
|
+
git push -u origin $branch_name
|
116
|
+
fi
|
@@ -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. Exterior corridors are shaded, but not enclosed. Interior corridors are enclosed and conditioned.")
|
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
|
|
@@ -941,6 +951,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
941
951
|
heating_system_type_choices << HPXML::HVACTypePortableHeater
|
942
952
|
heating_system_type_choices << HPXML::HVACTypeFireplace
|
943
953
|
heating_system_type_choices << HPXML::HVACTypeFixedHeater
|
954
|
+
heating_system_type_choices << "Shared #{HPXML::HVACTypeBoiler} w/ Baseboard"
|
955
|
+
heating_system_type_choices << "Shared #{HPXML::HVACTypeBoiler} w/ Ductless Fan Coil"
|
944
956
|
|
945
957
|
heating_system_fuel_choices = OpenStudio::StringVector.new
|
946
958
|
heating_system_fuel_choices << HPXML::FuelTypeElectricity
|
@@ -958,6 +970,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
958
970
|
cooling_system_type_choices << HPXML::HVACTypeEvaporativeCooler
|
959
971
|
cooling_system_type_choices << HPXML::HVACTypeMiniSplitAirConditioner
|
960
972
|
|
973
|
+
cooling_efficiency_type_choices = OpenStudio::StringVector.new
|
974
|
+
cooling_efficiency_type_choices << HPXML::UnitsSEER
|
975
|
+
cooling_efficiency_type_choices << HPXML::UnitsEER
|
976
|
+
|
961
977
|
compressor_type_choices = OpenStudio::StringVector.new
|
962
978
|
compressor_type_choices << HPXML::HVACCompressorTypeSingleStage
|
963
979
|
compressor_type_choices << HPXML::HVACCompressorTypeTwoStage
|
@@ -996,28 +1012,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
996
1012
|
arg.setDefaultValue(1)
|
997
1013
|
args << arg
|
998
1014
|
|
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)
|
1015
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_airflow_defect_ratio', false)
|
1016
|
+
arg.setDisplayName('Heating System: Airflow Defect Ratio')
|
1017
|
+
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}.")
|
1018
|
+
arg.setUnits('Frac')
|
1021
1019
|
args << arg
|
1022
1020
|
|
1023
1021
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_type', cooling_system_type_choices, true)
|
@@ -1026,18 +1024,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1026
1024
|
arg.setDefaultValue(HPXML::HVACTypeCentralAirConditioner)
|
1027
1025
|
args << arg
|
1028
1026
|
|
1029
|
-
arg = OpenStudio::Measure::OSArgument::
|
1030
|
-
arg.setDisplayName('Cooling System:
|
1031
|
-
arg.
|
1032
|
-
arg.
|
1033
|
-
arg.setDefaultValue(13.0)
|
1027
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_efficiency_type', cooling_efficiency_type_choices, true)
|
1028
|
+
arg.setDisplayName('Cooling System: Efficiency Type')
|
1029
|
+
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}.")
|
1030
|
+
arg.setDefaultValue(HPXML::UnitsSEER)
|
1034
1031
|
args << arg
|
1035
1032
|
|
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(
|
1033
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_efficiency', true)
|
1034
|
+
arg.setDisplayName('Cooling System: Efficiency')
|
1035
|
+
arg.setUnits("#{HPXML::UnitsSEER} or #{HPXML::UnitsEER}")
|
1036
|
+
arg.setDescription("The rated efficiency value of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.")
|
1037
|
+
arg.setDefaultValue(13.0)
|
1041
1038
|
args << arg
|
1042
1039
|
|
1043
1040
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1047,13 +1044,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1047
1044
|
|
1048
1045
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_sensible_heat_fraction', false)
|
1049
1046
|
arg.setDisplayName('Cooling System: Cooling Sensible Heat Fraction')
|
1050
|
-
arg.setDescription(
|
1047
|
+
arg.setDescription("The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.")
|
1051
1048
|
arg.setUnits('Frac')
|
1052
1049
|
args << arg
|
1053
1050
|
|
1054
1051
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('cooling_system_cooling_capacity', true)
|
1055
1052
|
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.
|
1053
|
+
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
1054
|
arg.setUnits('tons')
|
1058
1055
|
arg.setDefaultValue(Constants.Auto)
|
1059
1056
|
args << arg
|
@@ -1067,14 +1064,20 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1067
1064
|
|
1068
1065
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted', true)
|
1069
1066
|
arg.setDisplayName('Cooling System: Is Ducted')
|
1070
|
-
arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::
|
1067
|
+
arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}.")
|
1071
1068
|
arg.setDefaultValue(false)
|
1072
1069
|
args << arg
|
1073
1070
|
|
1074
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1075
|
-
arg.setDisplayName('Cooling System:
|
1076
|
-
arg.setDescription("
|
1077
|
-
arg.setUnits('
|
1071
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_airflow_defect_ratio', false)
|
1072
|
+
arg.setDisplayName('Cooling System: Airflow Defect Ratio')
|
1073
|
+
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}.")
|
1074
|
+
arg.setUnits('Frac')
|
1075
|
+
args << arg
|
1076
|
+
|
1077
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_charge_defect_ratio', false)
|
1078
|
+
arg.setDisplayName('Cooling System: Charge Defect Ratio')
|
1079
|
+
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}.")
|
1080
|
+
arg.setUnits('Frac')
|
1078
1081
|
args << arg
|
1079
1082
|
|
1080
1083
|
heat_pump_type_choices = OpenStudio::StringVector.new
|
@@ -1083,6 +1086,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1083
1086
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpMiniSplit
|
1084
1087
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpGroundToAir
|
1085
1088
|
|
1089
|
+
heat_pump_heating_efficiency_type_choices = OpenStudio::StringVector.new
|
1090
|
+
heat_pump_heating_efficiency_type_choices << HPXML::UnitsHSPF
|
1091
|
+
heat_pump_heating_efficiency_type_choices << HPXML::UnitsCOP
|
1092
|
+
|
1086
1093
|
heat_pump_fuel_choices = OpenStudio::StringVector.new
|
1087
1094
|
heat_pump_fuel_choices << HPXML::FuelTypeElectricity
|
1088
1095
|
|
@@ -1099,32 +1106,30 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1099
1106
|
arg.setDefaultValue('none')
|
1100
1107
|
args << arg
|
1101
1108
|
|
1102
|
-
arg = OpenStudio::Measure::OSArgument::
|
1103
|
-
arg.setDisplayName('Heat Pump:
|
1104
|
-
arg.
|
1105
|
-
arg.
|
1106
|
-
arg.setDefaultValue(7.7)
|
1109
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_heating_efficiency_type', heat_pump_heating_efficiency_type_choices, true)
|
1110
|
+
arg.setDisplayName('Heat Pump: Heating Efficiency Type')
|
1111
|
+
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}.")
|
1112
|
+
arg.setDefaultValue(HPXML::UnitsHSPF)
|
1107
1113
|
args << arg
|
1108
1114
|
|
1109
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1110
|
-
arg.setDisplayName('Heat Pump:
|
1111
|
-
arg.setUnits(
|
1112
|
-
arg.setDescription(
|
1113
|
-
arg.setDefaultValue(
|
1115
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_efficiency', true)
|
1116
|
+
arg.setDisplayName('Heat Pump: Heating Efficiency')
|
1117
|
+
arg.setUnits("#{HPXML::UnitsHSPF} or #{HPXML::UnitsCOP}")
|
1118
|
+
arg.setDescription('The rated heating efficiency value of the heat pump.')
|
1119
|
+
arg.setDefaultValue(7.7)
|
1114
1120
|
args << arg
|
1115
1121
|
|
1116
|
-
arg = OpenStudio::Measure::OSArgument::
|
1117
|
-
arg.setDisplayName('Heat Pump:
|
1118
|
-
arg.
|
1119
|
-
arg.
|
1120
|
-
arg.setDefaultValue(13.0)
|
1122
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_efficiency_type', cooling_efficiency_type_choices, true)
|
1123
|
+
arg.setDisplayName('Heat Pump: Cooling Efficiency Type')
|
1124
|
+
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}.")
|
1125
|
+
arg.setDefaultValue(HPXML::UnitsSEER)
|
1121
1126
|
args << arg
|
1122
1127
|
|
1123
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1124
|
-
arg.setDisplayName('Heat Pump:
|
1125
|
-
arg.setUnits(
|
1126
|
-
arg.setDescription(
|
1127
|
-
arg.setDefaultValue(
|
1128
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_efficiency', true)
|
1129
|
+
arg.setDisplayName('Heat Pump: Cooling Efficiency')
|
1130
|
+
arg.setUnits("#{HPXML::UnitsSEER} or #{HPXML::UnitsEER}")
|
1131
|
+
arg.setDescription('The rated cooling efficiency value of the heat pump.')
|
1132
|
+
arg.setDefaultValue(13.0)
|
1128
1133
|
args << arg
|
1129
1134
|
|
1130
1135
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1145,7 +1150,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1145
1150
|
arg.setDefaultValue(Constants.Auto)
|
1146
1151
|
args << arg
|
1147
1152
|
|
1148
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1153
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heat_pump_heating_capacity_17_f', true)
|
1149
1154
|
arg.setDisplayName('Heat Pump: Heating Capacity 17F')
|
1150
1155
|
arg.setDescription("The output heating capacity of the heat pump at 17F. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.")
|
1151
1156
|
arg.setUnits('Btu/hr')
|
@@ -1194,101 +1199,96 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1194
1199
|
|
1195
1200
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_switchover_temp', false)
|
1196
1201
|
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.')
|
1202
|
+
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
1203
|
arg.setUnits('deg-F')
|
1199
1204
|
args << arg
|
1200
1205
|
|
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')
|
1210
|
-
args << arg
|
1211
|
-
|
1212
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fan_power_watts_per_cfm', false)
|
1213
|
-
arg.setDisplayName('Heat Pump: Fan Power')
|
1214
|
-
arg.setDescription('Blower fan power.')
|
1215
|
-
arg.setUnits('W/CFM')
|
1206
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heat_pump_is_ducted', false)
|
1207
|
+
arg.setDisplayName('Heat Pump: Is Ducted')
|
1208
|
+
arg.setDescription("Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}.")
|
1216
1209
|
args << arg
|
1217
1210
|
|
1218
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1219
|
-
arg.setDisplayName('
|
1220
|
-
arg.setDescription(
|
1221
|
-
arg.setUnits('
|
1222
|
-
arg.setDefaultValue(71)
|
1211
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_airflow_defect_ratio', false)
|
1212
|
+
arg.setDisplayName('Heat Pump: Airflow Defect Ratio')
|
1213
|
+
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}.")
|
1214
|
+
arg.setUnits('Frac')
|
1223
1215
|
args << arg
|
1224
1216
|
|
1225
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1226
|
-
arg.setDisplayName('
|
1227
|
-
arg.setDescription('
|
1228
|
-
arg.setUnits('
|
1229
|
-
arg.setDefaultValue(71)
|
1217
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_charge_defect_ratio', false)
|
1218
|
+
arg.setDisplayName('Heat Pump: Charge Defect Ratio')
|
1219
|
+
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.')
|
1220
|
+
arg.setUnits('Frac')
|
1230
1221
|
args << arg
|
1231
1222
|
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1223
|
+
heating_system_type_2_choices = OpenStudio::StringVector.new
|
1224
|
+
heating_system_type_2_choices << 'none'
|
1225
|
+
heating_system_type_2_choices << HPXML::HVACTypeWallFurnace
|
1226
|
+
heating_system_type_2_choices << HPXML::HVACTypeFloorFurnace
|
1227
|
+
heating_system_type_2_choices << HPXML::HVACTypeBoiler
|
1228
|
+
heating_system_type_2_choices << HPXML::HVACTypeElectricResistance
|
1229
|
+
heating_system_type_2_choices << HPXML::HVACTypeStove
|
1230
|
+
heating_system_type_2_choices << HPXML::HVACTypePortableHeater
|
1231
|
+
heating_system_type_2_choices << HPXML::HVACTypeFireplace
|
1237
1232
|
|
1238
|
-
arg = OpenStudio::Measure::OSArgument::
|
1239
|
-
arg.setDisplayName('Heating
|
1240
|
-
arg.setDescription('
|
1241
|
-
arg.
|
1233
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_type_2', heating_system_type_2_choices, true)
|
1234
|
+
arg.setDisplayName('Heating System 2: Type')
|
1235
|
+
arg.setDescription('The type of the second heating system.')
|
1236
|
+
arg.setDefaultValue('none')
|
1242
1237
|
args << arg
|
1243
1238
|
|
1244
|
-
arg = OpenStudio::Measure::OSArgument::
|
1245
|
-
arg.setDisplayName('Heating
|
1246
|
-
arg.setDescription(
|
1247
|
-
arg.
|
1239
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel_2', heating_system_fuel_choices, true)
|
1240
|
+
arg.setDisplayName('Heating System 2: Fuel Type')
|
1241
|
+
arg.setDescription("The fuel type of the second heating system. Ignored for #{HPXML::HVACTypeElectricResistance}.")
|
1242
|
+
arg.setDefaultValue(HPXML::FuelTypeElectricity)
|
1248
1243
|
args << arg
|
1249
1244
|
|
1250
|
-
arg = OpenStudio::Measure::OSArgument::
|
1251
|
-
arg.setDisplayName('Heating
|
1252
|
-
arg.
|
1253
|
-
arg.
|
1245
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency_2', true)
|
1246
|
+
arg.setDisplayName('Heating System 2: Rated AFUE or Percent')
|
1247
|
+
arg.setUnits('Frac')
|
1248
|
+
arg.setDescription('For Furnace/WallFurnace/FloorFurnace/Boiler second heating system, the rated AFUE value. For ElectricResistance/Stove/PortableHeater/Fireplace, the rated Percent value.')
|
1249
|
+
arg.setDefaultValue(1.0)
|
1254
1250
|
args << arg
|
1255
1251
|
|
1256
|
-
arg = OpenStudio::Measure::OSArgument::
|
1257
|
-
arg.setDisplayName('
|
1258
|
-
arg.setDescription('
|
1259
|
-
arg.setUnits('
|
1260
|
-
arg.setDefaultValue(
|
1252
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heating_system_heating_capacity_2', true)
|
1253
|
+
arg.setDisplayName('Heating System 2: Heating Capacity')
|
1254
|
+
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.")
|
1255
|
+
arg.setUnits('Btu/hr')
|
1256
|
+
arg.setDefaultValue(Constants.Auto)
|
1261
1257
|
args << arg
|
1262
1258
|
|
1263
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1264
|
-
arg.setDisplayName('
|
1265
|
-
arg.setDescription('
|
1266
|
-
arg.setUnits('
|
1267
|
-
arg.setDefaultValue(
|
1259
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served_2', true)
|
1260
|
+
arg.setDisplayName('Heating System 2: Fraction Heat Load Served')
|
1261
|
+
arg.setDescription('The heat load served fraction of the second heating system.')
|
1262
|
+
arg.setUnits('Frac')
|
1263
|
+
arg.setDefaultValue(0.25)
|
1268
1264
|
args << arg
|
1269
1265
|
|
1270
|
-
arg = OpenStudio::Measure::OSArgument::
|
1271
|
-
arg.setDisplayName('
|
1272
|
-
arg.setDescription('Specify the weekday
|
1266
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekday', true)
|
1267
|
+
arg.setDisplayName('Heating Setpoint: Weekday Schedule')
|
1268
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekday heating schedule.')
|
1273
1269
|
arg.setUnits('deg-F')
|
1270
|
+
arg.setDefaultValue('71')
|
1274
1271
|
args << arg
|
1275
1272
|
|
1276
|
-
arg = OpenStudio::Measure::OSArgument::
|
1277
|
-
arg.setDisplayName('
|
1278
|
-
arg.setDescription('Specify the weekend
|
1273
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekend', true)
|
1274
|
+
arg.setDisplayName('Heating Setpoint: Weekend Schedule')
|
1275
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekend heating schedule.')
|
1279
1276
|
arg.setUnits('deg-F')
|
1277
|
+
arg.setDefaultValue('71')
|
1280
1278
|
args << arg
|
1281
1279
|
|
1282
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1280
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekday', true)
|
1283
1281
|
arg.setDisplayName('Cooling Setpoint: Weekday Schedule')
|
1284
|
-
arg.setDescription('Specify the 24-hour comma-separated weekday cooling schedule
|
1282
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekday cooling schedule.')
|
1285
1283
|
arg.setUnits('deg-F')
|
1284
|
+
arg.setDefaultValue('76')
|
1286
1285
|
args << arg
|
1287
1286
|
|
1288
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1287
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekend', true)
|
1289
1288
|
arg.setDisplayName('Cooling Setpoint: Weekend Schedule')
|
1290
|
-
arg.setDescription('Specify the 24-hour comma-separated weekend cooling schedule
|
1289
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekend cooling schedule.')
|
1291
1290
|
arg.setUnits('deg-F')
|
1291
|
+
arg.setDefaultValue('76')
|
1292
1292
|
args << arg
|
1293
1293
|
|
1294
1294
|
duct_leakage_units_choices = OpenStudio::StringVector.new
|
@@ -1380,71 +1380,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1380
1380
|
|
1381
1381
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('ducts_number_of_return_registers', true)
|
1382
1382
|
arg.setDisplayName('Ducts: Number of Return Registers')
|
1383
|
-
arg.setDescription(
|
1383
|
+
arg.setDescription("The number of return registers of the ducts. Ignored for ducted #{HPXML::HVACTypeEvaporativeCooler}.")
|
1384
1384
|
arg.setUnits('#')
|
1385
1385
|
arg.setDefaultValue(Constants.Auto)
|
1386
1386
|
args << arg
|
1387
1387
|
|
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
1388
|
mech_vent_fan_type_choices = OpenStudio::StringVector.new
|
1449
1389
|
mech_vent_fan_type_choices << 'none'
|
1450
1390
|
mech_vent_fan_type_choices << HPXML::MechVentTypeExhaust
|
@@ -1474,11 +1414,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1474
1414
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation', true)
|
1475
1415
|
arg.setDisplayName('Mechanical Ventilation: Hours In Operation')
|
1476
1416
|
arg.setDescription('The hours in operation of the mechanical ventilation.')
|
1477
|
-
arg.setUnits('hrs')
|
1417
|
+
arg.setUnits('hrs/day')
|
1478
1418
|
arg.setDefaultValue(24)
|
1479
1419
|
args << arg
|
1480
1420
|
|
1481
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1421
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true)
|
1482
1422
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency Type')
|
1483
1423
|
arg.setDescription('The total recovery efficiency type of the mechanical ventilation.')
|
1484
1424
|
arg.setDefaultValue('Unadjusted')
|
@@ -1486,20 +1426,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1486
1426
|
|
1487
1427
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', true)
|
1488
1428
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency')
|
1489
|
-
arg.setDescription(
|
1429
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1490
1430
|
arg.setUnits('Frac')
|
1491
1431
|
arg.setDefaultValue(0.48)
|
1492
1432
|
args << arg
|
1493
1433
|
|
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
1434
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', true)
|
1501
1435
|
arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency')
|
1502
|
-
arg.setDescription(
|
1436
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1503
1437
|
arg.setUnits('Frac')
|
1504
1438
|
arg.setDefaultValue(0.72)
|
1505
1439
|
args << arg
|
@@ -1526,12 +1460,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1526
1460
|
|
1527
1461
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_preheating_fuel', heating_system_fuel_choices, false)
|
1528
1462
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Fuel')
|
1529
|
-
arg.setDescription('Fuel type of the preconditioning heating equipment.')
|
1463
|
+
arg.setDescription('Fuel type of the preconditioning heating equipment. Only used for a shared mechanical ventilation system.')
|
1530
1464
|
args << arg
|
1531
1465
|
|
1532
1466
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_preheating_efficiency', false)
|
1533
1467
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Efficiency')
|
1534
|
-
arg.setDescription('Efficiency of the preconditioning heating equipment.')
|
1468
|
+
arg.setDescription('Efficiency of the preconditioning heating equipment. Only used for a shared mechanical ventilation system.')
|
1535
1469
|
arg.setUnits('COP')
|
1536
1470
|
args << arg
|
1537
1471
|
|
@@ -1546,12 +1480,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1546
1480
|
|
1547
1481
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_precooling_fuel', cooling_system_fuel_choices, false)
|
1548
1482
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Fuel')
|
1549
|
-
arg.setDescription('Fuel type of the preconditioning cooling equipment.')
|
1483
|
+
arg.setDescription('Fuel type of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system.')
|
1550
1484
|
args << arg
|
1551
1485
|
|
1552
1486
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_precooling_efficiency', false)
|
1553
1487
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Efficiency')
|
1554
|
-
arg.setDescription('Efficiency of the preconditioning cooling equipment.')
|
1488
|
+
arg.setDescription('Efficiency of the preconditioning cooling equipment. Only used for a shared mechanical ventilation system.')
|
1555
1489
|
arg.setUnits('COP')
|
1556
1490
|
args << arg
|
1557
1491
|
|
@@ -1561,7 +1495,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1561
1495
|
arg.setUnits('Frac')
|
1562
1496
|
args << arg
|
1563
1497
|
|
1564
|
-
|
1498
|
+
mech_vent_fan_type_2_choices = OpenStudio::StringVector.new
|
1499
|
+
mech_vent_fan_type_2_choices << 'none'
|
1500
|
+
mech_vent_fan_type_2_choices << HPXML::MechVentTypeExhaust
|
1501
|
+
mech_vent_fan_type_2_choices << HPXML::MechVentTypeSupply
|
1502
|
+
mech_vent_fan_type_2_choices << HPXML::MechVentTypeERV
|
1503
|
+
mech_vent_fan_type_2_choices << HPXML::MechVentTypeHRV
|
1504
|
+
mech_vent_fan_type_2_choices << HPXML::MechVentTypeBalanced
|
1505
|
+
|
1506
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_fan_type_2', mech_vent_fan_type_2_choices, true)
|
1565
1507
|
arg.setDisplayName('Mechanical Ventilation 2: Fan Type')
|
1566
1508
|
arg.setDescription("The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system.")
|
1567
1509
|
arg.setDefaultValue('none')
|
@@ -1577,11 +1519,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1577
1519
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation_2', true)
|
1578
1520
|
arg.setDisplayName('Mechanical Ventilation 2: Hours In Operation')
|
1579
1521
|
arg.setDescription('The hours in operation of the second mechanical ventilation.')
|
1580
|
-
arg.setUnits('hrs')
|
1522
|
+
arg.setUnits('hrs/day')
|
1581
1523
|
arg.setDefaultValue(24)
|
1582
1524
|
args << arg
|
1583
1525
|
|
1584
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1526
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type_2', mech_vent_recovery_efficiency_type_choices, true)
|
1585
1527
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency Type')
|
1586
1528
|
arg.setDescription('The total recovery efficiency type of the second mechanical ventilation.')
|
1587
1529
|
arg.setDefaultValue('Unadjusted')
|
@@ -1589,20 +1531,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1589
1531
|
|
1590
1532
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency_2', true)
|
1591
1533
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency')
|
1592
|
-
arg.setDescription(
|
1534
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1593
1535
|
arg.setUnits('Frac')
|
1594
1536
|
arg.setDefaultValue(0.48)
|
1595
1537
|
args << arg
|
1596
1538
|
|
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
1539
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency_2', true)
|
1604
1540
|
arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency')
|
1605
|
-
arg.setDescription(
|
1541
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1606
1542
|
arg.setUnits('Frac')
|
1607
1543
|
arg.setDefaultValue(0.72)
|
1608
1544
|
args << arg
|
@@ -1614,76 +1550,74 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1614
1550
|
arg.setDefaultValue(30)
|
1615
1551
|
args << arg
|
1616
1552
|
|
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)
|
1553
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_quantity', true)
|
1624
1554
|
arg.setDisplayName('Kitchen Fans: Quantity')
|
1625
1555
|
arg.setDescription('The quantity of the kitchen fans.')
|
1626
1556
|
arg.setUnits('#')
|
1557
|
+
arg.setDefaultValue(Constants.Auto)
|
1627
1558
|
args << arg
|
1628
1559
|
|
1629
|
-
arg = OpenStudio::Measure::OSArgument::
|
1560
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_flow_rate', false)
|
1630
1561
|
arg.setDisplayName('Kitchen Fans: Flow Rate')
|
1631
1562
|
arg.setDescription('The flow rate of the kitchen fan.')
|
1632
1563
|
arg.setUnits('CFM')
|
1564
|
+
arg.setDefaultValue(Constants.Auto)
|
1633
1565
|
args << arg
|
1634
1566
|
|
1635
|
-
arg = OpenStudio::Measure::OSArgument::
|
1567
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_hours_in_operation', false)
|
1636
1568
|
arg.setDisplayName('Kitchen Fans: Hours In Operation')
|
1637
1569
|
arg.setDescription('The hours in operation of the kitchen fan.')
|
1638
|
-
arg.setUnits('hrs')
|
1570
|
+
arg.setUnits('hrs/day')
|
1571
|
+
arg.setDefaultValue(Constants.Auto)
|
1639
1572
|
args << arg
|
1640
1573
|
|
1641
|
-
arg = OpenStudio::Measure::OSArgument::
|
1574
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_power', false)
|
1642
1575
|
arg.setDisplayName('Kitchen Fans: Fan Power')
|
1643
1576
|
arg.setDescription('The fan power of the kitchen fan.')
|
1644
1577
|
arg.setUnits('W')
|
1578
|
+
arg.setDefaultValue(Constants.Auto)
|
1645
1579
|
args << arg
|
1646
1580
|
|
1647
|
-
arg = OpenStudio::Measure::OSArgument::
|
1581
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_start_hour', false)
|
1648
1582
|
arg.setDisplayName('Kitchen Fans: Start Hour')
|
1649
1583
|
arg.setDescription('The start hour of the kitchen fan.')
|
1650
1584
|
arg.setUnits('hr')
|
1585
|
+
arg.setDefaultValue(Constants.Auto)
|
1651
1586
|
args << arg
|
1652
1587
|
|
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)
|
1588
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_quantity', true)
|
1660
1589
|
arg.setDisplayName('Bathroom Fans: Quantity')
|
1661
1590
|
arg.setDescription('The quantity of the bathroom fans.')
|
1662
1591
|
arg.setUnits('#')
|
1592
|
+
arg.setDefaultValue(Constants.Auto)
|
1663
1593
|
args << arg
|
1664
1594
|
|
1665
|
-
arg = OpenStudio::Measure::OSArgument::
|
1595
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_flow_rate', false)
|
1666
1596
|
arg.setDisplayName('Bathroom Fans: Flow Rate')
|
1667
1597
|
arg.setDescription('The flow rate of the bathroom fans.')
|
1668
1598
|
arg.setUnits('CFM')
|
1599
|
+
arg.setDefaultValue(Constants.Auto)
|
1669
1600
|
args << arg
|
1670
1601
|
|
1671
|
-
arg = OpenStudio::Measure::OSArgument::
|
1602
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_hours_in_operation', false)
|
1672
1603
|
arg.setDisplayName('Bathroom Fans: Hours In Operation')
|
1673
1604
|
arg.setDescription('The hours in operation of the bathroom fans.')
|
1674
|
-
arg.setUnits('hrs')
|
1605
|
+
arg.setUnits('hrs/day')
|
1606
|
+
arg.setDefaultValue(Constants.Auto)
|
1675
1607
|
args << arg
|
1676
1608
|
|
1677
|
-
arg = OpenStudio::Measure::OSArgument::
|
1609
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_power', false)
|
1678
1610
|
arg.setDisplayName('Bathroom Fans: Fan Power')
|
1679
1611
|
arg.setDescription('The fan power of the bathroom fans.')
|
1680
1612
|
arg.setUnits('W')
|
1613
|
+
arg.setDefaultValue(Constants.Auto)
|
1681
1614
|
args << arg
|
1682
1615
|
|
1683
|
-
arg = OpenStudio::Measure::OSArgument::
|
1616
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_start_hour', false)
|
1684
1617
|
arg.setDisplayName('Bathroom Fans: Start Hour')
|
1685
1618
|
arg.setDescription('The start hour of the bathroom fans.')
|
1686
1619
|
arg.setUnits('hr')
|
1620
|
+
arg.setDefaultValue(Constants.Auto)
|
1687
1621
|
args << arg
|
1688
1622
|
|
1689
1623
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', true)
|
@@ -1762,18 +1696,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1762
1696
|
|
1763
1697
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_tank_volume', true)
|
1764
1698
|
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}.")
|
1699
|
+
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
1700
|
arg.setUnits('gal')
|
1767
1701
|
arg.setDefaultValue(Constants.Auto)
|
1768
1702
|
args << arg
|
1769
1703
|
|
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
1704
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, true)
|
1778
1705
|
arg.setDisplayName('Water Heater: Efficiency Type')
|
1779
1706
|
arg.setDescription('The efficiency type of water heater. Does not apply to space-heating boilers.')
|
@@ -1819,12 +1746,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1819
1746
|
arg.setDefaultValue(Constants.Auto)
|
1820
1747
|
args << arg
|
1821
1748
|
|
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
1749
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('water_heater_num_units_served', true)
|
1829
1750
|
arg.setDisplayName('Water Heater: Number of Units Served')
|
1830
1751
|
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 +2183,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2262
2183
|
arg.setDefaultValue(Constants.Auto)
|
2263
2184
|
args << arg
|
2264
2185
|
|
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
2186
|
dehumidifier_type_choices = OpenStudio::StringVector.new
|
2187
|
+
dehumidifier_type_choices << 'none'
|
2272
2188
|
dehumidifier_type_choices << HPXML::DehumidifierTypePortable
|
2273
2189
|
dehumidifier_type_choices << HPXML::DehumidifierTypeWholeHome
|
2274
2190
|
|
@@ -2279,26 +2195,19 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2279
2195
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, true)
|
2280
2196
|
arg.setDisplayName('Dehumidifier: Type')
|
2281
2197
|
arg.setDescription('The type of dehumidifier.')
|
2282
|
-
arg.setDefaultValue(
|
2198
|
+
arg.setDefaultValue('none')
|
2283
2199
|
args << arg
|
2284
2200
|
|
2285
2201
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, true)
|
2286
2202
|
arg.setDisplayName('Dehumidifier: Efficiency Type')
|
2287
2203
|
arg.setDescription('The efficiency type of dehumidifier.')
|
2288
|
-
arg.setDefaultValue('
|
2204
|
+
arg.setDefaultValue('IntegratedEnergyFactor')
|
2289
2205
|
args << arg
|
2290
2206
|
|
2291
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
2292
|
-
arg.setDisplayName('Dehumidifier:
|
2207
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', true)
|
2208
|
+
arg.setDisplayName('Dehumidifier: Efficiency')
|
2293
2209
|
arg.setUnits('liters/kWh')
|
2294
|
-
arg.setDescription('The
|
2295
|
-
arg.setDefaultValue(1.8)
|
2296
|
-
args << arg
|
2297
|
-
|
2298
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency_ief', true)
|
2299
|
-
arg.setDisplayName('Dehumidifier: Integrated Energy Factor')
|
2300
|
-
arg.setUnits('liters/kWh')
|
2301
|
-
arg.setDescription('The Integrated Energy Factor (IEF) of the dehumidifier.')
|
2210
|
+
arg.setDescription('The efficiency of the dehumidifier.')
|
2302
2211
|
arg.setDefaultValue(1.5)
|
2303
2212
|
args << arg
|
2304
2213
|
|
@@ -2323,14 +2232,9 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2323
2232
|
arg.setDefaultValue(1)
|
2324
2233
|
args << arg
|
2325
2234
|
|
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
2235
|
appliance_location_choices = OpenStudio::StringVector.new
|
2333
2236
|
appliance_location_choices << Constants.Auto
|
2237
|
+
appliance_location_choices << 'none'
|
2334
2238
|
appliance_location_choices << HPXML::LocationLivingSpace
|
2335
2239
|
appliance_location_choices << HPXML::LocationBasementConditioned
|
2336
2240
|
appliance_location_choices << HPXML::LocationBasementUnconditioned
|
@@ -2352,21 +2256,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2352
2256
|
|
2353
2257
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, true)
|
2354
2258
|
arg.setDisplayName('Clothes Washer: Efficiency Type')
|
2355
|
-
arg.setDescription('The efficiency type of clothes washer.')
|
2259
|
+
arg.setDescription('The efficiency type of the clothes washer.')
|
2356
2260
|
arg.setDefaultValue('IntegratedModifiedEnergyFactor')
|
2357
2261
|
args << arg
|
2358
2262
|
|
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')
|
2263
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_washer_efficiency', true)
|
2264
|
+
arg.setDisplayName('Clothes Washer: Efficiency')
|
2368
2265
|
arg.setUnits('ft^3/kWh-cyc')
|
2369
|
-
arg.setDescription('The
|
2266
|
+
arg.setDescription('The efficiency of the clothes washer.')
|
2370
2267
|
arg.setDefaultValue(Constants.Auto)
|
2371
2268
|
args << arg
|
2372
2269
|
|
@@ -2418,12 +2315,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2418
2315
|
arg.setDefaultValue(1.0)
|
2419
2316
|
args << arg
|
2420
2317
|
|
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
2318
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_location', appliance_location_choices, true)
|
2428
2319
|
arg.setDisplayName('Clothes Dryer: Location')
|
2429
2320
|
arg.setDescription('The space type for the clothes dryer location.')
|
@@ -2438,11 +2329,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2438
2329
|
clothes_dryer_fuel_choices << HPXML::FuelTypeWoodCord
|
2439
2330
|
clothes_dryer_fuel_choices << HPXML::FuelTypeCoal
|
2440
2331
|
|
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
2332
|
clothes_dryer_efficiency_type_choices = OpenStudio::StringVector.new
|
2447
2333
|
clothes_dryer_efficiency_type_choices << 'EnergyFactor'
|
2448
2334
|
clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor'
|
@@ -2455,27 +2341,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2455
2341
|
|
2456
2342
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, true)
|
2457
2343
|
arg.setDisplayName('Clothes Dryer: Efficiency Type')
|
2458
|
-
arg.setDescription('The efficiency type of clothes dryer.')
|
2344
|
+
arg.setDescription('The efficiency type of the clothes dryer.')
|
2459
2345
|
arg.setDefaultValue('CombinedEnergyFactor')
|
2460
2346
|
args << arg
|
2461
2347
|
|
2462
|
-
arg = OpenStudio::Measure::OSArgument::
|
2463
|
-
arg.setDisplayName('Clothes Dryer:
|
2348
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_dryer_efficiency', true)
|
2349
|
+
arg.setDisplayName('Clothes Dryer: Efficiency')
|
2464
2350
|
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.')
|
2351
|
+
arg.setDescription('The efficiency of the clothes dryer.')
|
2479
2352
|
arg.setDefaultValue(Constants.Auto)
|
2480
2353
|
args << arg
|
2481
2354
|
|
@@ -2492,12 +2365,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2492
2365
|
arg.setDefaultValue(1.0)
|
2493
2366
|
args << arg
|
2494
2367
|
|
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
2368
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_location', appliance_location_choices, true)
|
2502
2369
|
arg.setDisplayName('Dishwasher: Location')
|
2503
2370
|
arg.setDescription('The space type for the dishwasher location.')
|
@@ -2514,19 +2381,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2514
2381
|
arg.setDefaultValue('RatedAnnualkWh')
|
2515
2382
|
args << arg
|
2516
2383
|
|
2517
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
2518
|
-
arg.setDisplayName('Dishwasher:
|
2519
|
-
arg.setUnits('
|
2520
|
-
arg.setDescription('The
|
2384
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dishwasher_efficiency', true)
|
2385
|
+
arg.setDisplayName('Dishwasher: Efficiency')
|
2386
|
+
arg.setUnits('RatedAnnualkWh or EnergyFactor')
|
2387
|
+
arg.setDescription('The efficiency of the dishwasher.')
|
2521
2388
|
arg.setDefaultValue(Constants.Auto)
|
2522
2389
|
args << arg
|
2523
2390
|
|
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
2391
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dishwasher_label_electric_rate', true)
|
2531
2392
|
arg.setDisplayName('Dishwasher: Label Electric Rate')
|
2532
2393
|
arg.setUnits('$/kWh')
|
@@ -2568,12 +2429,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2568
2429
|
arg.setDefaultValue(1.0)
|
2569
2430
|
args << arg
|
2570
2431
|
|
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
2432
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('refrigerator_location', appliance_location_choices, true)
|
2578
2433
|
arg.setDisplayName('Refrigerator: Location')
|
2579
2434
|
arg.setDescription('The space type for the refrigerator location.')
|
@@ -2593,12 +2448,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2593
2448
|
arg.setDefaultValue(1.0)
|
2594
2449
|
args << arg
|
2595
2450
|
|
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
2451
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('extra_refrigerator_location', appliance_location_choices, true)
|
2603
2452
|
arg.setDisplayName('Extra Refrigerator: Location')
|
2604
2453
|
arg.setDescription('The space type for the extra refrigerator location.')
|
@@ -2618,12 +2467,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2618
2467
|
arg.setDefaultValue(1.0)
|
2619
2468
|
args << arg
|
2620
2469
|
|
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
2470
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('freezer_location', appliance_location_choices, true)
|
2628
2471
|
arg.setDisplayName('Freezer: Location')
|
2629
2472
|
arg.setDescription('The space type for the freezer location.')
|
@@ -2651,12 +2494,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2651
2494
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord
|
2652
2495
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeCoal
|
2653
2496
|
|
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
2497
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_location', appliance_location_choices, true)
|
2661
2498
|
arg.setDisplayName('Cooking Range/Oven: Location')
|
2662
2499
|
arg.setDescription('The space type for the cooking range/oven location.')
|
@@ -2725,12 +2562,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2725
2562
|
arg.setDefaultValue(1.0)
|
2726
2563
|
args << arg
|
2727
2564
|
|
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
2565
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('plug_loads_other_annual_kwh', true)
|
2735
2566
|
arg.setDisplayName('Plug Loads: Other Annual kWh')
|
2736
2567
|
arg.setDescription('The annual energy consumption of the other residual plug loads.')
|
@@ -2758,12 +2589,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2758
2589
|
arg.setDefaultValue(1.0)
|
2759
2590
|
args << arg
|
2760
2591
|
|
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
2592
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_well_pump_present', true)
|
2768
2593
|
arg.setDisplayName('Plug Loads: Well Pump Present')
|
2769
2594
|
arg.setDescription('Whether there is a well pump.')
|
@@ -2780,13 +2605,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2780
2605
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier', true)
|
2781
2606
|
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier')
|
2782
2607
|
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)
|
2608
|
+
arg.setDefaultValue(1.0)
|
2790
2609
|
args << arg
|
2791
2610
|
|
2792
2611
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_vehicle_present', true)
|
@@ -2805,13 +2624,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2805
2624
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier', true)
|
2806
2625
|
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier')
|
2807
2626
|
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)
|
2627
|
+
arg.setDefaultValue(1.0)
|
2815
2628
|
args << arg
|
2816
2629
|
|
2817
2630
|
fuel_loads_fuel_choices = OpenStudio::StringVector.new
|
@@ -2916,7 +2729,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2916
2729
|
args << arg
|
2917
2730
|
|
2918
2731
|
heater_type_choices = OpenStudio::StringVector.new
|
2919
|
-
heater_type_choices <<
|
2732
|
+
heater_type_choices << HPXML::TypeNone
|
2920
2733
|
heater_type_choices << HPXML::HeaterTypeElectricResistance
|
2921
2734
|
heater_type_choices << HPXML::HeaterTypeGas
|
2922
2735
|
heater_type_choices << HPXML::HeaterTypeHeatPump
|
@@ -2943,7 +2756,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2943
2756
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, true)
|
2944
2757
|
arg.setDisplayName('Pool: Heater Type')
|
2945
2758
|
arg.setDescription("The type of pool heater. Use 'none' if there is no pool heater.")
|
2946
|
-
arg.setDefaultValue(
|
2759
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2947
2760
|
args << arg
|
2948
2761
|
|
2949
2762
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('pool_heater_annual_kwh', true)
|
@@ -2988,7 +2801,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2988
2801
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_tub_heater_type', heater_type_choices, true)
|
2989
2802
|
arg.setDisplayName('Hot Tub: Heater Type')
|
2990
2803
|
arg.setDescription("The type of hot tub heater. Use 'none' if there is no hot tub heater.")
|
2991
|
-
arg.setDefaultValue(
|
2804
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2992
2805
|
args << arg
|
2993
2806
|
|
2994
2807
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('hot_tub_heater_annual_kwh', true)
|
@@ -3023,13 +2836,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3023
2836
|
return false
|
3024
2837
|
end
|
3025
2838
|
|
2839
|
+
Geometry.tear_down_model(model, runner)
|
2840
|
+
|
3026
2841
|
Version.check_openstudio_version()
|
3027
2842
|
|
3028
2843
|
# 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)
|
2844
|
+
args = get_argument_values(runner, arguments(model), user_arguments)
|
2845
|
+
args = Hash[args.collect { |k, v| [k.to_sym, v] }]
|
2846
|
+
args[:geometry_rim_joist_height] /= 12.0
|
3033
2847
|
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
2848
|
|
3035
2849
|
# Argument error checks
|
@@ -3081,414 +2895,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3081
2895
|
runner.registerInfo("Wrote file: #{hpxml_path}")
|
3082
2896
|
end
|
3083
2897
|
|
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
2898
|
def validate_arguments(args)
|
3493
2899
|
warnings = []
|
3494
2900
|
errors = []
|
@@ -3554,9 +2960,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3554
2960
|
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
2961
|
|
3556
2962
|
# 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)
|
2963
|
+
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
2964
|
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
2965
|
|
2966
|
+
# second heating system fraction heat load served is 100%
|
2967
|
+
error = (args[:heating_system_type_2] != 'none') && (args[:heating_system_fraction_heat_load_served_2] == 1.0)
|
2968
|
+
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
|
2969
|
+
|
2970
|
+
# second heating system but no primary heating system
|
2971
|
+
error = (args[:heating_system_type] == 'none') && (args[:heat_pump_type] == 'none') && (args[:heating_system_type_2] != 'none')
|
2972
|
+
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
|
2973
|
+
|
3560
2974
|
# single-family attached and num units, horizontal location not specified
|
3561
2975
|
error = (args[:geometry_unit_type] == HPXML::ResidentialTypeSFA) && (!args[:geometry_building_num_units].is_initialized || !args[:geometry_horizontal_location].is_initialized)
|
3562
2976
|
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 +2995,56 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3581
2995
|
warning = (args[:geometry_attic_type] == HPXML::AtticTypeConditioned) && (args[:geometry_roof_type] != 'flat') && (args[:ceiling_assembly_r] > 2.1)
|
3582
2996
|
warnings << "geometry_attic_type=#{args[:geometry_attic_type]} and ceiling_assembly_r=#{args[:ceiling_assembly_r]}" if warning
|
3583
2997
|
|
2998
|
+
# conditioned attic but only one above-grade floor
|
2999
|
+
error = (args[:geometry_num_floors_above_grade] == 1 && args[:geometry_attic_type] == HPXML::AtticTypeConditioned)
|
3000
|
+
errors << "geometry_num_floors_above_grade=#{args[:geometry_num_floors_above_grade]} and geometry_attic_type=#{args[:geometry_attic_type]}" if error
|
3001
|
+
|
3584
3002
|
# dhw indirect but no boiler
|
3585
3003
|
error = ((args[:water_heater_type] == HPXML::WaterHeaterTypeCombiStorage) || (args[:water_heater_type] == HPXML::WaterHeaterTypeCombiTankless)) && (args[:heating_system_type] != HPXML::HVACTypeBoiler)
|
3586
3004
|
errors << "water_heater_type=#{args[:water_heater_type]} and heating_system_type=#{args[:heating_system_type]}" if error
|
3587
3005
|
|
3588
|
-
# no plug loads but specifying usage multipliers
|
3589
|
-
|
3590
|
-
|
3006
|
+
# no tv plug loads but specifying usage multipliers
|
3007
|
+
if args[:plug_loads_television_annual_kwh] != Constants.Auto
|
3008
|
+
warning = (args[:plug_loads_television_annual_kwh].to_f == 0.0 && args[:plug_loads_television_usage_multiplier] != 0.0)
|
3009
|
+
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
|
3010
|
+
end
|
3011
|
+
|
3012
|
+
# no other plug loads but specifying usage multipliers
|
3013
|
+
if args[:plug_loads_other_annual_kwh] != Constants.Auto
|
3014
|
+
warning = (args[:plug_loads_other_annual_kwh].to_f == 0.0 && args[:plug_loads_other_usage_multiplier] != 0.0)
|
3015
|
+
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
|
3016
|
+
end
|
3017
|
+
|
3018
|
+
# no well pump plug loads but specifying usage multipliers
|
3019
|
+
if args[:plug_loads_well_pump_annual_kwh] != Constants.Auto
|
3020
|
+
warning = (args[:plug_loads_well_pump_annual_kwh].to_f == 0.0 && args[:plug_loads_well_pump_usage_multiplier] != 0.0)
|
3021
|
+
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
|
3022
|
+
end
|
3023
|
+
|
3024
|
+
# no vehicle plug loads but specifying usage multipliers
|
3025
|
+
if args[:plug_loads_vehicle_annual_kwh] != Constants.Auto
|
3026
|
+
warning = (args[:plug_loads_vehicle_annual_kwh].to_f && args[:plug_loads_vehicle_usage_multiplier] != 0.0)
|
3027
|
+
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
|
3028
|
+
end
|
3591
3029
|
|
3592
3030
|
# no fuel loads but specifying usage multipliers
|
3593
3031
|
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
3032
|
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
3033
|
|
3034
|
+
# foundation wall insulation distance to bottom is greater than foundation wall height
|
3035
|
+
if args[:foundation_wall_insulation_distance_to_bottom] != Constants.Auto
|
3036
|
+
error = (args[:foundation_wall_insulation_distance_to_bottom].to_f > args[:geometry_foundation_height])
|
3037
|
+
errors << "foundation_wall_insulation_distance_to_bottom=#{args[:foundation_wall_insulation_distance_to_bottom]} and geometry_foundation_height=#{args[:geometry_foundation_height]}" if error
|
3038
|
+
end
|
3039
|
+
|
3040
|
+
# number of bedrooms not greater than zero
|
3041
|
+
error = (args[:geometry_num_bedrooms] <= 0)
|
3042
|
+
errors << "geometry_num_bedrooms=#{args[:geometry_num_bedrooms]}" if error
|
3043
|
+
|
3044
|
+
# single-family detached with shared system
|
3045
|
+
error = [HPXML::ResidentialTypeSFD].include?(args[:geometry_unit_type]) && args[:heating_system_type].include?('Shared')
|
3046
|
+
errors << "geometry_unit_type=#{args[:geometry_unit_type]} and heating_system_type=#{args[:heating_system_type]}" if error
|
3047
|
+
|
3596
3048
|
return warnings, errors
|
3597
3049
|
end
|
3598
3050
|
|
@@ -3625,9 +3077,7 @@ end
|
|
3625
3077
|
|
3626
3078
|
class HPXMLFile
|
3627
3079
|
def self.create(runner, model, args, epw_file)
|
3628
|
-
|
3629
|
-
|
3630
|
-
success = create_geometry_envelope(runner, model_geometry, args)
|
3080
|
+
success = create_geometry_envelope(runner, model, args)
|
3631
3081
|
return false if not success
|
3632
3082
|
|
3633
3083
|
success = create_schedules(runner, model, epw_file, args)
|
@@ -3635,27 +3085,30 @@ class HPXMLFile
|
|
3635
3085
|
|
3636
3086
|
hpxml = HPXML.new
|
3637
3087
|
|
3638
|
-
set_header(hpxml, runner, args)
|
3088
|
+
set_header(hpxml, runner, args, epw_file)
|
3639
3089
|
set_site(hpxml, runner, args)
|
3640
3090
|
set_neighbor_buildings(hpxml, runner, args)
|
3641
3091
|
set_building_occupancy(hpxml, runner, args)
|
3642
3092
|
set_building_construction(hpxml, runner, args)
|
3643
3093
|
set_climate_and_risk_zones(hpxml, runner, args, epw_file)
|
3644
3094
|
set_air_infiltration_measurements(hpxml, runner, args)
|
3645
|
-
|
3646
|
-
|
3647
|
-
|
3648
|
-
|
3649
|
-
|
3650
|
-
|
3651
|
-
|
3652
|
-
|
3653
|
-
|
3654
|
-
|
3655
|
-
|
3095
|
+
|
3096
|
+
set_attics(hpxml, runner, model, args)
|
3097
|
+
set_foundations(hpxml, runner, model, args)
|
3098
|
+
set_roofs(hpxml, runner, model, args)
|
3099
|
+
set_rim_joists(hpxml, runner, model, args)
|
3100
|
+
set_walls(hpxml, runner, model, args)
|
3101
|
+
set_foundation_walls(hpxml, runner, model, args)
|
3102
|
+
set_frame_floors(hpxml, runner, model, args)
|
3103
|
+
set_slabs(hpxml, runner, model, args)
|
3104
|
+
set_windows(hpxml, runner, model, args)
|
3105
|
+
set_skylights(hpxml, runner, model, args)
|
3106
|
+
set_doors(hpxml, runner, model, args)
|
3107
|
+
|
3656
3108
|
set_heating_systems(hpxml, runner, args)
|
3657
3109
|
set_cooling_systems(hpxml, runner, args)
|
3658
3110
|
set_heat_pumps(hpxml, runner, args)
|
3111
|
+
set_secondary_heating_systems(hpxml, runner, args)
|
3659
3112
|
set_hvac_distribution(hpxml, runner, args)
|
3660
3113
|
set_hvac_control(hpxml, runner, args)
|
3661
3114
|
set_ventilation_fans(hpxml, runner, args)
|
@@ -3699,6 +3152,13 @@ class HPXMLFile
|
|
3699
3152
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeSlab
|
3700
3153
|
args[:geometry_foundation_height] = 0.0
|
3701
3154
|
args[:geometry_foundation_height_above_grade] = 0.0
|
3155
|
+
args[:geometry_rim_joist_height] = 0.0
|
3156
|
+
elsif args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient
|
3157
|
+
args[:geometry_rim_joist_height] = 0.0
|
3158
|
+
end
|
3159
|
+
|
3160
|
+
if args[:geometry_attic_type] == HPXML::AtticTypeConditioned
|
3161
|
+
args[:geometry_num_floors_above_grade] -= 1
|
3702
3162
|
end
|
3703
3163
|
|
3704
3164
|
if args[:geometry_unit_type] == HPXML::ResidentialTypeSFD
|
@@ -3706,6 +3166,8 @@ class HPXMLFile
|
|
3706
3166
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeSFA
|
3707
3167
|
success = Geometry.create_single_family_attached(runner: runner, model: model, **args)
|
3708
3168
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3169
|
+
args[:geometry_roof_type] = 'flat'
|
3170
|
+
args[:geometry_attic_type] = HPXML::AtticTypeVented
|
3709
3171
|
success = Geometry.create_multifamily(runner: runner, model: model, **args)
|
3710
3172
|
end
|
3711
3173
|
return false if not success
|
@@ -3767,7 +3229,7 @@ class HPXMLFile
|
|
3767
3229
|
return false if not success
|
3768
3230
|
|
3769
3231
|
# export the schedule
|
3770
|
-
args[:schedules_path] = '
|
3232
|
+
args[:schedules_path] = "../#{File.basename(args[:hpxml_path], '.xml')}_schedules.csv"
|
3771
3233
|
success = schedule_generator.export(schedules_path: File.expand_path(args[:schedules_path]))
|
3772
3234
|
return false if not success
|
3773
3235
|
|
@@ -3776,7 +3238,7 @@ class HPXMLFile
|
|
3776
3238
|
return true
|
3777
3239
|
end
|
3778
3240
|
|
3779
|
-
def self.set_header(hpxml, runner, args)
|
3241
|
+
def self.set_header(hpxml, runner, args, epw_file)
|
3780
3242
|
hpxml.header.xml_type = 'HPXML'
|
3781
3243
|
hpxml.header.xml_generated_by = 'BuildResidentialHPXML'
|
3782
3244
|
hpxml.header.transaction = 'create'
|
@@ -3826,20 +3288,21 @@ class HPXMLFile
|
|
3826
3288
|
end
|
3827
3289
|
|
3828
3290
|
hpxml.header.building_id = 'MyBuilding'
|
3291
|
+
hpxml.header.state_code = epw_file.stateProvinceRegion
|
3829
3292
|
hpxml.header.event_type = 'proposed workscope'
|
3830
3293
|
hpxml.header.schedules_path = args[:schedules_path]
|
3831
3294
|
end
|
3832
3295
|
|
3833
3296
|
def self.set_site(hpxml, runner, args)
|
3834
|
-
if args[:
|
3835
|
-
|
3297
|
+
if args[:air_leakage_shielding_of_home] != Constants.Auto
|
3298
|
+
shielding_of_home = args[:air_leakage_shielding_of_home]
|
3836
3299
|
end
|
3837
3300
|
|
3838
3301
|
if args[:site_type].is_initialized
|
3839
3302
|
hpxml.site.site_type = args[:site_type].get
|
3840
3303
|
end
|
3841
3304
|
|
3842
|
-
hpxml.site.
|
3305
|
+
hpxml.site.shielding_of_home = shielding_of_home
|
3843
3306
|
end
|
3844
3307
|
|
3845
3308
|
def self.set_neighbor_buildings(hpxml, runner, args)
|
@@ -3896,11 +3359,9 @@ class HPXMLFile
|
|
3896
3359
|
hpxml.building_construction.conditioned_building_volume = conditioned_building_volume
|
3897
3360
|
hpxml.building_construction.average_ceiling_height = args[:geometry_wall_height]
|
3898
3361
|
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
|
3362
|
+
if args[:geometry_has_flue_or_chimney] != Constants.Auto
|
3363
|
+
has_flue_or_chimney = args[:geometry_has_flue_or_chimney]
|
3364
|
+
hpxml.building_construction.has_flue_or_chimney = has_flue_or_chimney
|
3904
3365
|
end
|
3905
3366
|
end
|
3906
3367
|
|
@@ -3939,7 +3400,6 @@ class HPXMLFile
|
|
3939
3400
|
|
3940
3401
|
def self.set_attics(hpxml, runner, model, args)
|
3941
3402
|
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
3403
|
|
3944
3404
|
if args[:geometry_roof_type] == 'flat'
|
3945
3405
|
hpxml.attics.add(id: HPXML::AtticTypeFlatRoof,
|
@@ -3974,27 +3434,13 @@ class HPXMLFile
|
|
3974
3434
|
roof_type = args[:roof_material_type].get
|
3975
3435
|
end
|
3976
3436
|
|
3977
|
-
if args[:roof_color] == Constants.Auto && args[:roof_solar_absorptance] == Constants.Auto
|
3978
|
-
solar_absorptance = 0.7
|
3979
|
-
end
|
3980
|
-
|
3981
3437
|
if args[:roof_color] != Constants.Auto
|
3982
3438
|
roof_color = args[:roof_color]
|
3983
3439
|
end
|
3984
3440
|
|
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
|
3441
|
+
radiant_barrier = args[:roof_radiant_barrier]
|
3442
|
+
if args[:roof_radiant_barrier]
|
3443
|
+
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
3998
3444
|
end
|
3999
3445
|
|
4000
3446
|
if args[:geometry_roof_type] == 'flat'
|
@@ -4009,8 +3455,6 @@ class HPXMLFile
|
|
4009
3455
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
4010
3456
|
roof_type: roof_type,
|
4011
3457
|
roof_color: roof_color,
|
4012
|
-
solar_absorptance: solar_absorptance,
|
4013
|
-
emittance: emittance,
|
4014
3458
|
pitch: args[:geometry_roof_pitch],
|
4015
3459
|
radiant_barrier: radiant_barrier,
|
4016
3460
|
radiant_barrier_grade: radiant_barrier_grade,
|
@@ -4020,8 +3464,59 @@ class HPXMLFile
|
|
4020
3464
|
|
4021
3465
|
def self.set_rim_joists(hpxml, runner, model, args)
|
4022
3466
|
model.getSurfaces.sort.each do |surface|
|
4023
|
-
|
3467
|
+
next if surface.surfaceType != 'Wall'
|
3468
|
+
next unless ['Outdoors', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
3469
|
+
next unless Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
3470
|
+
|
3471
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
3472
|
+
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
3473
|
+
|
3474
|
+
exterior_adjacent_to = HPXML::LocationOutside
|
3475
|
+
if surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to foundation space
|
3476
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
3477
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
3478
|
+
unless [HPXML::ResidentialTypeSFD].include?(args[:geometry_unit_type])
|
3479
|
+
exterior_adjacent_to = interior_adjacent_to
|
3480
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
3481
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3482
|
+
end
|
3483
|
+
end
|
3484
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
3485
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
3486
|
+
end
|
3487
|
+
end
|
3488
|
+
|
3489
|
+
if exterior_adjacent_to == HPXML::LocationOutside && args[:wall_siding_type].is_initialized
|
3490
|
+
siding = args[:wall_siding_type].get
|
3491
|
+
end
|
3492
|
+
|
3493
|
+
if args[:wall_color] != Constants.Auto
|
3494
|
+
color = args[:wall_color]
|
3495
|
+
end
|
3496
|
+
|
3497
|
+
if interior_adjacent_to == exterior_adjacent_to
|
3498
|
+
insulation_assembly_r_value = 4.0 # Uninsulated
|
3499
|
+
else
|
3500
|
+
insulation_assembly_r_value = args[:rim_joist_assembly_r]
|
3501
|
+
end
|
3502
|
+
|
3503
|
+
hpxml.rim_joists.add(id: valid_attr(surface.name),
|
3504
|
+
exterior_adjacent_to: exterior_adjacent_to,
|
3505
|
+
interior_adjacent_to: interior_adjacent_to,
|
3506
|
+
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round(1),
|
3507
|
+
siding: siding,
|
3508
|
+
color: color,
|
3509
|
+
insulation_assembly_r_value: insulation_assembly_r_value)
|
3510
|
+
end
|
3511
|
+
end
|
3512
|
+
|
3513
|
+
def self.get_unexposed_garage_perimeter(hpxml, args)
|
3514
|
+
# this is perimeter adjacent to a 100% protruding garage that is not exposed
|
3515
|
+
# we need this because it's difficult to set this surface to Adiabatic using our geometry methods
|
3516
|
+
if (args[:geometry_garage_protrusion] == 1.0) && (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0)
|
3517
|
+
return args[:geometry_garage_width]
|
4024
3518
|
end
|
3519
|
+
return 0
|
4025
3520
|
end
|
4026
3521
|
|
4027
3522
|
def self.get_adiabatic_adjacent_surface(model, surface)
|
@@ -4050,6 +3545,7 @@ class HPXMLFile
|
|
4050
3545
|
def self.set_walls(hpxml, runner, model, args)
|
4051
3546
|
model.getSurfaces.sort.each do |surface|
|
4052
3547
|
next if surface.surfaceType != 'Wall'
|
3548
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
4053
3549
|
|
4054
3550
|
interior_adjacent_to = get_adjacent_to(surface)
|
4055
3551
|
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
@@ -4130,19 +3626,20 @@ class HPXMLFile
|
|
4130
3626
|
model.getSurfaces.sort.each do |surface|
|
4131
3627
|
next if surface.surfaceType != 'Wall'
|
4132
3628
|
next unless ['Foundation', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
3629
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
4133
3630
|
|
4134
3631
|
interior_adjacent_to = get_adjacent_to(surface)
|
4135
3632
|
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
4136
3633
|
|
4137
3634
|
exterior_adjacent_to = HPXML::LocationGround
|
4138
3635
|
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
3636
|
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
4142
3637
|
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
4143
|
-
|
4144
|
-
|
4145
|
-
exterior_adjacent_to
|
3638
|
+
unless [HPXML::ResidentialTypeSFD].include?(args[:geometry_unit_type])
|
3639
|
+
exterior_adjacent_to = interior_adjacent_to
|
3640
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
3641
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3642
|
+
end
|
4146
3643
|
end
|
4147
3644
|
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
4148
3645
|
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
@@ -4160,6 +3657,9 @@ class HPXMLFile
|
|
4160
3657
|
insulation_exterior_r_value = args[:foundation_wall_insulation_r]
|
4161
3658
|
insulation_exterior_distance_to_top = args[:foundation_wall_insulation_distance_to_top]
|
4162
3659
|
insulation_exterior_distance_to_bottom = args[:foundation_wall_insulation_distance_to_bottom]
|
3660
|
+
if insulation_exterior_distance_to_bottom == Constants.Auto
|
3661
|
+
insulation_exterior_distance_to_bottom = args[:geometry_foundation_height]
|
3662
|
+
end
|
4163
3663
|
end
|
4164
3664
|
insulation_interior_r_value = 0
|
4165
3665
|
insulation_interior_distance_to_top = 0
|
@@ -4250,6 +3750,11 @@ class HPXMLFile
|
|
4250
3750
|
has_foundation_walls = true
|
4251
3751
|
end
|
4252
3752
|
exposed_perimeter = Geometry.calculate_exposed_perimeter(model, [surface], has_foundation_walls).round
|
3753
|
+
next if exposed_perimeter == 0 # this could be, e.g., the foundation floor of an interior corridor
|
3754
|
+
|
3755
|
+
if [HPXML::LocationCrawlspaceVented, HPXML::LocationCrawlspaceUnvented, HPXML::LocationBasementUnconditioned, HPXML::LocationBasementConditioned].include? interior_adjacent_to
|
3756
|
+
exposed_perimeter -= get_unexposed_garage_perimeter(hpxml, args)
|
3757
|
+
end
|
4253
3758
|
|
4254
3759
|
if [HPXML::LocationLivingSpace, HPXML::LocationGarage].include? interior_adjacent_to
|
4255
3760
|
depth_below_grade = 0
|
@@ -4301,39 +3806,37 @@ class HPXMLFile
|
|
4301
3806
|
sub_surface_height = Geometry.get_surface_height(sub_surface)
|
4302
3807
|
sub_surface_facade = Geometry.get_facade_for_surface(sub_surface)
|
4303
3808
|
|
4304
|
-
if (sub_surface_facade == Constants.FacadeFront) && (args[:overhangs_front_depth] > 0)
|
3809
|
+
if (sub_surface_facade == Constants.FacadeFront) && ((args[:overhangs_front_depth] > 0) || args[:overhangs_front_distance_to_top_of_window] > 0)
|
4305
3810
|
overhangs_depth = args[:overhangs_front_depth]
|
4306
3811
|
overhangs_distance_to_top_of_window = args[:overhangs_front_distance_to_top_of_window]
|
4307
3812
|
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)
|
3813
|
+
elsif (sub_surface_facade == Constants.FacadeBack) && ((args[:overhangs_back_depth] > 0) || args[:overhangs_back_distance_to_top_of_window] > 0)
|
4309
3814
|
overhangs_depth = args[:overhangs_back_depth]
|
4310
3815
|
overhangs_distance_to_top_of_window = args[:overhangs_back_distance_to_top_of_window]
|
4311
3816
|
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)
|
3817
|
+
elsif (sub_surface_facade == Constants.FacadeLeft) && ((args[:overhangs_left_depth] > 0) || args[:overhangs_left_distance_to_top_of_window] > 0)
|
4313
3818
|
overhangs_depth = args[:overhangs_left_depth]
|
4314
3819
|
overhangs_distance_to_top_of_window = args[:overhangs_left_distance_to_top_of_window]
|
4315
3820
|
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)
|
3821
|
+
elsif (sub_surface_facade == Constants.FacadeRight) && ((args[:overhangs_right_depth] > 0) || args[:overhangs_right_distance_to_top_of_window] > 0)
|
4317
3822
|
overhangs_depth = args[:overhangs_right_depth]
|
4318
3823
|
overhangs_distance_to_top_of_window = args[:overhangs_right_distance_to_top_of_window]
|
4319
3824
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4320
3825
|
elsif args[:geometry_eaves_depth] > 0
|
4321
|
-
|
3826
|
+
# Get max z coordinate of eaves
|
3827
|
+
eaves_z = args[:geometry_wall_height] * args[:geometry_num_floors_above_grade] + args[:geometry_rim_joist_height]
|
3828
|
+
if args[:geometry_attic_type] == HPXML::AtticTypeConditioned
|
3829
|
+
eaves_z += Geometry.get_conditioned_attic_height(model.getSpaces)
|
3830
|
+
end
|
4322
3831
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient
|
4323
3832
|
eaves_z += args[:geometry_foundation_height]
|
4324
3833
|
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')
|
3834
|
+
|
3835
|
+
# Get max z coordinate of this window
|
3836
|
+
sub_surface_z = Geometry.getSurfaceZValues([sub_surface]).max + UnitConversions.convert(sub_surface.space.get.zOrigin, 'm', 'ft')
|
3837
|
+
|
4335
3838
|
overhangs_depth = args[:geometry_eaves_depth]
|
4336
|
-
overhangs_distance_to_top_of_window = eaves_z - sub_surface_z
|
3839
|
+
overhangs_distance_to_top_of_window = eaves_z - sub_surface_z # difference between max z coordinates of eaves and this window
|
4337
3840
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4338
3841
|
end
|
4339
3842
|
|
@@ -4347,6 +3850,14 @@ class HPXMLFile
|
|
4347
3850
|
interior_shading_factor_summer = args[:window_interior_shading_summer].get
|
4348
3851
|
end
|
4349
3852
|
|
3853
|
+
if args[:window_exterior_shading_winter].is_initialized
|
3854
|
+
exterior_shading_factor_winter = args[:window_exterior_shading_winter].get
|
3855
|
+
end
|
3856
|
+
|
3857
|
+
if args[:window_exterior_shading_summer].is_initialized
|
3858
|
+
exterior_shading_factor_summer = args[:window_exterior_shading_summer].get
|
3859
|
+
end
|
3860
|
+
|
4350
3861
|
if args[:window_fraction_operable].is_initialized
|
4351
3862
|
fraction_operable = args[:window_fraction_operable].get
|
4352
3863
|
end
|
@@ -4361,6 +3872,8 @@ class HPXMLFile
|
|
4361
3872
|
overhangs_distance_to_bottom_of_window: overhangs_distance_to_bottom_of_window,
|
4362
3873
|
interior_shading_factor_winter: interior_shading_factor_winter,
|
4363
3874
|
interior_shading_factor_summer: interior_shading_factor_summer,
|
3875
|
+
exterior_shading_factor_winter: exterior_shading_factor_winter,
|
3876
|
+
exterior_shading_factor_summer: exterior_shading_factor_summer,
|
4364
3877
|
fraction_operable: fraction_operable,
|
4365
3878
|
wall_idref: valid_attr(surface.name))
|
4366
3879
|
end # sub_surfaces
|
@@ -4417,84 +3930,49 @@ class HPXMLFile
|
|
4417
3930
|
heating_capacity = args[:heating_system_heating_capacity]
|
4418
3931
|
end
|
4419
3932
|
|
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
3933
|
if heating_system_type == HPXML::HVACTypeElectricResistance
|
4427
3934
|
heating_system_fuel = HPXML::FuelTypeElectricity
|
4428
3935
|
else
|
4429
3936
|
heating_system_fuel = args[:heating_system_fuel]
|
4430
3937
|
end
|
4431
3938
|
|
4432
|
-
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace
|
3939
|
+
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace].include?(heating_system_type) || heating_system_type.include?(HPXML::HVACTypeBoiler)
|
4433
3940
|
heating_efficiency_afue = args[:heating_system_heating_efficiency]
|
4434
|
-
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace, HPXML::HVACTypeFixedHeater].include?
|
3941
|
+
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace, HPXML::HVACTypeFixedHeater].include?(heating_system_type)
|
4435
3942
|
heating_efficiency_percent = args[:heating_system_heating_efficiency]
|
4436
3943
|
end
|
4437
3944
|
|
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
|
3945
|
+
if args[:heating_system_airflow_defect_ratio].is_initialized
|
3946
|
+
if [HPXML::HVACTypeFurnace].include? heating_system_type
|
3947
|
+
airflow_defect_ratio = args[:heating_system_airflow_defect_ratio].get
|
4445
3948
|
end
|
4446
3949
|
end
|
4447
3950
|
|
4448
|
-
|
4449
|
-
|
4450
|
-
|
4451
|
-
heating_capacity: heating_capacity,
|
4452
|
-
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served],
|
4453
|
-
electric_auxiliary_energy: electric_auxiliary_energy,
|
4454
|
-
heating_efficiency_afue: heating_efficiency_afue,
|
4455
|
-
heating_efficiency_percent: heating_efficiency_percent,
|
4456
|
-
fan_watts_per_cfm: fan_watts_per_cfm,
|
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
|
3951
|
+
fraction_heat_load_served = args[:heating_system_fraction_heat_load_served]
|
3952
|
+
if args[:heating_system_type_2] != 'none' && fraction_heat_load_served + args[:heating_system_fraction_heat_load_served_2] > 1.0
|
3953
|
+
fraction_heat_load_served = 1.0 - args[:heating_system_fraction_heat_load_served_2]
|
4471
3954
|
end
|
4472
3955
|
|
4473
|
-
if
|
4474
|
-
|
4475
|
-
|
4476
|
-
|
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]
|
3956
|
+
if heating_system_type.include?('Shared')
|
3957
|
+
is_shared_system = true
|
3958
|
+
number_of_units_served = args[:geometry_building_num_units].get
|
3959
|
+
heating_capacity = nil
|
4483
3960
|
end
|
4484
3961
|
|
4485
|
-
if
|
4486
|
-
|
3962
|
+
if heating_system_type.include?(HPXML::HVACTypeBoiler)
|
3963
|
+
heating_system_type = HPXML::HVACTypeBoiler
|
4487
3964
|
end
|
4488
3965
|
|
4489
|
-
hpxml.heating_systems.add(id: '
|
4490
|
-
heating_system_type:
|
4491
|
-
heating_system_fuel:
|
4492
|
-
heating_capacity:
|
4493
|
-
fraction_heat_load_served:
|
4494
|
-
|
4495
|
-
|
4496
|
-
|
4497
|
-
|
3966
|
+
hpxml.heating_systems.add(id: 'HeatingSystem',
|
3967
|
+
heating_system_type: heating_system_type,
|
3968
|
+
heating_system_fuel: heating_system_fuel,
|
3969
|
+
heating_capacity: heating_capacity,
|
3970
|
+
fraction_heat_load_served: fraction_heat_load_served,
|
3971
|
+
heating_efficiency_afue: heating_efficiency_afue,
|
3972
|
+
heating_efficiency_percent: heating_efficiency_percent,
|
3973
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
3974
|
+
is_shared_system: is_shared_system,
|
3975
|
+
number_of_units_served: number_of_units_served)
|
4498
3976
|
end
|
4499
3977
|
|
4500
3978
|
def self.set_cooling_systems(hpxml, runner, args)
|
@@ -4502,10 +3980,8 @@ class HPXMLFile
|
|
4502
3980
|
|
4503
3981
|
return if cooling_system_type == 'none'
|
4504
3982
|
|
4505
|
-
if
|
4506
|
-
|
4507
|
-
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4508
|
-
end
|
3983
|
+
if args[:cooling_system_cooling_capacity] != Constants.Auto
|
3984
|
+
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4509
3985
|
end
|
4510
3986
|
|
4511
3987
|
if args[:cooling_system_cooling_compressor_type].is_initialized
|
@@ -4520,15 +3996,21 @@ class HPXMLFile
|
|
4520
3996
|
end
|
4521
3997
|
end
|
4522
3998
|
|
4523
|
-
if [
|
4524
|
-
cooling_efficiency_seer = args[:
|
4525
|
-
elsif [HPXML::
|
4526
|
-
cooling_efficiency_eer = args[:
|
3999
|
+
if args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsSEER
|
4000
|
+
cooling_efficiency_seer = args[:cooling_system_cooling_efficiency]
|
4001
|
+
elsif args[:cooling_system_cooling_efficiency_type] == HPXML::UnitsEER
|
4002
|
+
cooling_efficiency_eer = args[:cooling_system_cooling_efficiency]
|
4003
|
+
end
|
4004
|
+
|
4005
|
+
if args[:cooling_system_airflow_defect_ratio].is_initialized
|
4006
|
+
if [HPXML::HVACTypeCentralAirConditioner].include?(cooling_system_type) || ([HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type) && (args[:cooling_system_is_ducted]))
|
4007
|
+
airflow_defect_ratio = args[:cooling_system_airflow_defect_ratio].get
|
4008
|
+
end
|
4527
4009
|
end
|
4528
4010
|
|
4529
|
-
if [
|
4530
|
-
if
|
4531
|
-
|
4011
|
+
if args[:cooling_system_charge_defect_ratio].is_initialized
|
4012
|
+
if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system_type)
|
4013
|
+
charge_defect_ratio = args[:cooling_system_charge_defect_ratio].get
|
4532
4014
|
end
|
4533
4015
|
end
|
4534
4016
|
|
@@ -4541,7 +4023,8 @@ class HPXMLFile
|
|
4541
4023
|
cooling_shr: cooling_shr,
|
4542
4024
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4543
4025
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4544
|
-
|
4026
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
4027
|
+
charge_defect_ratio: charge_defect_ratio)
|
4545
4028
|
end
|
4546
4029
|
|
4547
4030
|
def self.set_heat_pumps(hpxml, runner, args)
|
@@ -4554,8 +4037,8 @@ class HPXMLFile
|
|
4554
4037
|
end
|
4555
4038
|
|
4556
4039
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump_type
|
4557
|
-
if args[:
|
4558
|
-
heating_capacity_17F = args[:
|
4040
|
+
if args[:heat_pump_heating_capacity_17_f] != Constants.Auto
|
4041
|
+
heating_capacity_17F = args[:heat_pump_heating_capacity_17_f]
|
4559
4042
|
end
|
4560
4043
|
end
|
4561
4044
|
|
@@ -4592,20 +4075,31 @@ class HPXMLFile
|
|
4592
4075
|
cooling_shr = args[:heat_pump_cooling_sensible_heat_fraction].get
|
4593
4076
|
end
|
4594
4077
|
|
4595
|
-
if [
|
4596
|
-
heating_efficiency_hspf = args[:
|
4597
|
-
|
4598
|
-
|
4599
|
-
|
4600
|
-
|
4601
|
-
|
4602
|
-
|
4603
|
-
|
4078
|
+
if args[:heat_pump_heating_efficiency_type] == HPXML::UnitsHSPF
|
4079
|
+
heating_efficiency_hspf = args[:heat_pump_heating_efficiency]
|
4080
|
+
elsif args[:heat_pump_heating_efficiency_type] == HPXML::UnitsCOP
|
4081
|
+
heating_efficiency_cop = args[:heat_pump_heating_efficiency]
|
4082
|
+
end
|
4083
|
+
|
4084
|
+
if args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsSEER
|
4085
|
+
cooling_efficiency_seer = args[:heat_pump_cooling_efficiency]
|
4086
|
+
elsif args[:heat_pump_cooling_efficiency_type] == HPXML::UnitsEER
|
4087
|
+
cooling_efficiency_eer = args[:heat_pump_cooling_efficiency]
|
4088
|
+
end
|
4089
|
+
|
4090
|
+
if args[:heat_pump_airflow_defect_ratio].is_initialized
|
4091
|
+
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include?(heat_pump_type) || ([HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump_type) && (args[:heat_pump_is_ducted]))
|
4092
|
+
airflow_defect_ratio = args[:heat_pump_airflow_defect_ratio].get
|
4604
4093
|
end
|
4605
4094
|
end
|
4606
4095
|
|
4607
|
-
if args[:
|
4608
|
-
|
4096
|
+
if args[:heat_pump_charge_defect_ratio].is_initialized
|
4097
|
+
charge_defect_ratio = args[:heat_pump_charge_defect_ratio].get
|
4098
|
+
end
|
4099
|
+
|
4100
|
+
fraction_heat_load_served = args[:heat_pump_fraction_heat_load_served]
|
4101
|
+
if args[:heating_system_type_2] != 'none' && fraction_heat_load_served + args[:heating_system_fraction_heat_load_served_2] > 1.0
|
4102
|
+
fraction_heat_load_served = 1.0 - args[:heating_system_fraction_heat_load_served_2]
|
4609
4103
|
end
|
4610
4104
|
|
4611
4105
|
hpxml.heat_pumps.add(id: 'HeatPump',
|
@@ -4616,7 +4110,7 @@ class HPXMLFile
|
|
4616
4110
|
compressor_type: compressor_type,
|
4617
4111
|
cooling_shr: cooling_shr,
|
4618
4112
|
cooling_capacity: cooling_capacity,
|
4619
|
-
fraction_heat_load_served:
|
4113
|
+
fraction_heat_load_served: fraction_heat_load_served,
|
4620
4114
|
fraction_cool_load_served: args[:heat_pump_fraction_cool_load_served],
|
4621
4115
|
backup_heating_fuel: backup_heating_fuel,
|
4622
4116
|
backup_heating_capacity: backup_heating_capacity,
|
@@ -4627,31 +4121,67 @@ class HPXMLFile
|
|
4627
4121
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4628
4122
|
heating_efficiency_cop: heating_efficiency_cop,
|
4629
4123
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4630
|
-
|
4631
|
-
|
4124
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
4125
|
+
charge_defect_ratio: charge_defect_ratio)
|
4126
|
+
end
|
4127
|
+
|
4128
|
+
def self.set_secondary_heating_systems(hpxml, runner, args)
|
4129
|
+
heating_system_type = args[:heating_system_type_2]
|
4130
|
+
|
4131
|
+
return if heating_system_type == 'none'
|
4132
|
+
|
4133
|
+
if args[:heating_system_heating_capacity_2] != Constants.Auto
|
4134
|
+
heating_capacity = args[:heating_system_heating_capacity_2]
|
4135
|
+
end
|
4136
|
+
|
4137
|
+
if args[:heating_system_fuel_2] == HPXML::HVACTypeElectricResistance
|
4138
|
+
heating_system_fuel = HPXML::FuelTypeElectricity
|
4139
|
+
else
|
4140
|
+
heating_system_fuel = args[:heating_system_fuel_2]
|
4141
|
+
end
|
4142
|
+
|
4143
|
+
if [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace].include?(heating_system_type) || heating_system_type.include?(HPXML::HVACTypeBoiler)
|
4144
|
+
heating_efficiency_afue = args[:heating_system_heating_efficiency_2]
|
4145
|
+
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace].include?(heating_system_type)
|
4146
|
+
heating_efficiency_percent = args[:heating_system_heating_efficiency_2]
|
4147
|
+
end
|
4148
|
+
|
4149
|
+
if heating_system_type.include?(HPXML::HVACTypeBoiler)
|
4150
|
+
heating_system_type = HPXML::HVACTypeBoiler
|
4151
|
+
end
|
4152
|
+
|
4153
|
+
hpxml.heating_systems.add(id: 'SecondHeatingSystem',
|
4154
|
+
heating_system_type: heating_system_type,
|
4155
|
+
heating_system_fuel: heating_system_fuel,
|
4156
|
+
heating_capacity: heating_capacity,
|
4157
|
+
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served_2],
|
4158
|
+
heating_efficiency_afue: heating_efficiency_afue,
|
4159
|
+
heating_efficiency_percent: heating_efficiency_percent)
|
4632
4160
|
end
|
4633
4161
|
|
4634
4162
|
def self.set_hvac_distribution(hpxml, runner, args)
|
4635
4163
|
# HydronicDistribution?
|
4164
|
+
hydr_idx = 0
|
4636
4165
|
hpxml.heating_systems.each do |heating_system|
|
4637
|
-
next unless [
|
4166
|
+
next unless [heating_system.heating_system_type].include?(HPXML::HVACTypeBoiler)
|
4167
|
+
next if args[:heating_system_type].include?('Fan Coil')
|
4638
4168
|
|
4639
|
-
|
4169
|
+
hydr_idx += 1
|
4170
|
+
hpxml.hvac_distributions.add(id: "HydronicDistribution#{hydr_idx}",
|
4640
4171
|
distribution_system_type: HPXML::HVACDistributionTypeHydronic,
|
4641
4172
|
hydronic_type: HPXML::HydronicTypeBaseboard)
|
4642
4173
|
heating_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
|
4643
|
-
break
|
4644
4174
|
end
|
4645
4175
|
|
4646
4176
|
# AirDistribution?
|
4647
4177
|
air_distribution_systems = []
|
4648
4178
|
hpxml.heating_systems.each do |heating_system|
|
4649
|
-
if [HPXML::HVACTypeFurnace].include?
|
4179
|
+
if [HPXML::HVACTypeFurnace].include?(heating_system.heating_system_type)
|
4650
4180
|
air_distribution_systems << heating_system
|
4651
4181
|
end
|
4652
4182
|
end
|
4653
4183
|
hpxml.cooling_systems.each do |cooling_system|
|
4654
|
-
if [HPXML::HVACTypeCentralAirConditioner].include?
|
4184
|
+
if [HPXML::HVACTypeCentralAirConditioner].include?(cooling_system.cooling_system_type)
|
4655
4185
|
air_distribution_systems << cooling_system
|
4656
4186
|
elsif [HPXML::HVACTypeEvaporativeCooler, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system.cooling_system_type) && args[:cooling_system_is_ducted]
|
4657
4187
|
air_distribution_systems << cooling_system
|
@@ -4661,41 +4191,69 @@ class HPXMLFile
|
|
4661
4191
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
4662
4192
|
air_distribution_systems << heat_pump
|
4663
4193
|
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump.heat_pump_type)
|
4664
|
-
if args[:
|
4665
|
-
air_distribution_systems << heat_pump if to_boolean(args[:
|
4194
|
+
if args[:heat_pump_is_ducted].is_initialized
|
4195
|
+
air_distribution_systems << heat_pump if to_boolean(args[:heat_pump_is_ducted].get)
|
4666
4196
|
end
|
4667
4197
|
end
|
4668
4198
|
end
|
4669
|
-
|
4199
|
+
|
4200
|
+
# FanCoil?
|
4201
|
+
fan_coil_distribution_systems = []
|
4202
|
+
hpxml.heating_systems.each do |heating_system|
|
4203
|
+
if args[:heating_system_type].include?('Fan Coil')
|
4204
|
+
fan_coil_distribution_systems << heating_system
|
4205
|
+
end
|
4206
|
+
end
|
4207
|
+
|
4208
|
+
return if air_distribution_systems.size == 0 && fan_coil_distribution_systems.size == 0
|
4670
4209
|
|
4671
4210
|
if args[:ducts_number_of_return_registers] != Constants.Auto
|
4672
4211
|
number_of_return_registers = args[:ducts_number_of_return_registers]
|
4673
4212
|
end
|
4674
4213
|
|
4675
|
-
|
4676
|
-
|
4677
|
-
|
4678
|
-
|
4214
|
+
if [HPXML::HVACTypeEvaporativeCooler].include?(args[:cooling_system_type]) && hpxml.heating_systems.size == 0 && hpxml.heat_pumps.size == 0
|
4215
|
+
number_of_return_registers = nil
|
4216
|
+
if args[:cooling_system_is_ducted]
|
4217
|
+
number_of_return_registers = 0
|
4218
|
+
end
|
4219
|
+
end
|
4679
4220
|
|
4680
|
-
air_distribution_systems.
|
4681
|
-
|
4221
|
+
if air_distribution_systems.size > 0
|
4222
|
+
hpxml.hvac_distributions.add(id: 'AirDistribution',
|
4223
|
+
distribution_system_type: HPXML::HVACDistributionTypeAir,
|
4224
|
+
conditioned_floor_area_served: args[:geometry_cfa],
|
4225
|
+
air_type: HPXML::AirTypeRegularVelocity,
|
4226
|
+
number_of_return_registers: number_of_return_registers)
|
4227
|
+
air_distribution_systems.each do |hvac_system|
|
4228
|
+
hvac_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
|
4229
|
+
end
|
4230
|
+
set_duct_leakages(args, hpxml.hvac_distributions[-1])
|
4231
|
+
set_ducts(args, hpxml.hvac_distributions[-1])
|
4682
4232
|
end
|
4683
4233
|
|
4684
|
-
|
4685
|
-
|
4686
|
-
|
4687
|
-
|
4688
|
-
|
4234
|
+
if fan_coil_distribution_systems.size > 0
|
4235
|
+
hpxml.hvac_distributions.add(id: 'FanCoilDistribution',
|
4236
|
+
distribution_system_type: HPXML::HVACDistributionTypeAir,
|
4237
|
+
air_type: HPXML::AirTypeFanCoil)
|
4238
|
+
fan_coil_distribution_systems.each do |hvac_system|
|
4239
|
+
hvac_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
|
4240
|
+
end
|
4241
|
+
end
|
4242
|
+
end
|
4689
4243
|
|
4690
|
-
|
4244
|
+
def self.set_duct_leakages(args, hvac_distribution)
|
4245
|
+
hvac_distribution.duct_leakage_measurements.add(duct_type: HPXML::DuctTypeSupply,
|
4246
|
+
duct_leakage_units: args[:ducts_supply_leakage_units],
|
4247
|
+
duct_leakage_value: args[:ducts_supply_leakage_value],
|
4248
|
+
duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
|
4691
4249
|
|
4692
|
-
|
4693
|
-
|
4694
|
-
|
4695
|
-
|
4696
|
-
|
4250
|
+
hvac_distribution.duct_leakage_measurements.add(duct_type: HPXML::DuctTypeReturn,
|
4251
|
+
duct_leakage_units: args[:ducts_return_leakage_units],
|
4252
|
+
duct_leakage_value: args[:ducts_return_leakage_value],
|
4253
|
+
duct_leakage_total_or_to_outside: HPXML::DuctLeakageToOutside)
|
4254
|
+
end
|
4697
4255
|
|
4698
|
-
|
4256
|
+
def self.set_ducts(args, hvac_distribution)
|
4699
4257
|
if args[:ducts_supply_location] != Constants.Auto
|
4700
4258
|
ducts_supply_location = args[:ducts_supply_location]
|
4701
4259
|
end
|
@@ -4712,64 +4270,36 @@ class HPXMLFile
|
|
4712
4270
|
ducts_return_surface_area = args[:ducts_return_surface_area]
|
4713
4271
|
end
|
4714
4272
|
|
4715
|
-
|
4716
|
-
|
4717
|
-
|
4718
|
-
|
4273
|
+
hvac_distribution.ducts.add(duct_type: HPXML::DuctTypeSupply,
|
4274
|
+
duct_insulation_r_value: args[:ducts_supply_insulation_r],
|
4275
|
+
duct_location: ducts_supply_location,
|
4276
|
+
duct_surface_area: ducts_supply_surface_area)
|
4719
4277
|
|
4720
4278
|
if not ([HPXML::HVACTypeEvaporativeCooler].include?(args[:cooling_system_type]) && args[:cooling_system_is_ducted])
|
4721
|
-
|
4722
|
-
|
4723
|
-
|
4724
|
-
|
4279
|
+
hvac_distribution.ducts.add(duct_type: HPXML::DuctTypeReturn,
|
4280
|
+
duct_insulation_r_value: args[:ducts_return_insulation_r],
|
4281
|
+
duct_location: ducts_return_location,
|
4282
|
+
duct_surface_area: ducts_return_surface_area)
|
4725
4283
|
end
|
4726
4284
|
end
|
4727
4285
|
|
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
4286
|
def self.set_hvac_control(hpxml, runner, args)
|
4736
4287
|
return if (args[:heating_system_type] == 'none') && (args[:cooling_system_type] == 'none') && (args[:heat_pump_type] == 'none')
|
4737
4288
|
|
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)
|
4289
|
+
if args[:setpoint_heating_weekday] == args[:setpoint_heating_weekend] && !args[:setpoint_heating_weekday].include?(',')
|
4290
|
+
heating_setpoint_temp = args[:setpoint_heating_weekday]
|
4291
|
+
else
|
4292
|
+
weekday_heating_setpoints = args[:setpoint_heating_weekday]
|
4293
|
+
weekend_heating_setpoints = args[:setpoint_heating_weekend]
|
4760
4294
|
end
|
4761
4295
|
|
4762
|
-
if args[:
|
4763
|
-
|
4764
|
-
|
4765
|
-
|
4296
|
+
if args[:setpoint_cooling_weekday] == args[:setpoint_cooling_weekend] && !args[:setpoint_cooling_weekday].include?(',')
|
4297
|
+
cooling_setpoint_temp = args[:setpoint_cooling_weekday]
|
4298
|
+
else
|
4299
|
+
weekday_cooling_setpoints = args[:setpoint_cooling_weekday]
|
4300
|
+
weekend_cooling_setpoints = args[:setpoint_cooling_weekend]
|
4766
4301
|
end
|
4767
4302
|
|
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
4303
|
ceiling_fan_quantity = nil
|
4774
4304
|
if args[:ceiling_fan_quantity] != Constants.Auto
|
4775
4305
|
ceiling_fan_quantity = Float(args[:ceiling_fan_quantity])
|
@@ -4780,6 +4310,8 @@ class HPXMLFile
|
|
4780
4310
|
end
|
4781
4311
|
|
4782
4312
|
hpxml.hvac_controls.add(id: 'HVACControl',
|
4313
|
+
heating_setpoint_temp: heating_setpoint_temp,
|
4314
|
+
cooling_setpoint_temp: cooling_setpoint_temp,
|
4783
4315
|
weekday_heating_setpoints: weekday_heating_setpoints,
|
4784
4316
|
weekend_heating_setpoints: weekend_heating_setpoints,
|
4785
4317
|
weekday_cooling_setpoints: weekday_cooling_setpoints,
|
@@ -4790,30 +4322,27 @@ class HPXMLFile
|
|
4790
4322
|
def self.set_ventilation_fans(hpxml, runner, args)
|
4791
4323
|
if args[:mech_vent_fan_type] != 'none'
|
4792
4324
|
|
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
|
-
|
4325
|
+
if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type])
|
4326
|
+
if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted'
|
4327
|
+
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency]
|
4328
|
+
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency]
|
4329
|
+
elsif args[:mech_vent_recovery_efficiency_type] == 'Adjusted'
|
4330
|
+
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency]
|
4331
|
+
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency]
|
4803
4332
|
end
|
4804
|
-
|
4805
|
-
if args[:
|
4333
|
+
elsif [HPXML::MechVentTypeHRV].include?(args[:mech_vent_fan_type])
|
4334
|
+
if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted'
|
4806
4335
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency]
|
4807
|
-
elsif args[:
|
4336
|
+
elsif args[:mech_vent_recovery_efficiency_type] == 'Adjusted'
|
4808
4337
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency]
|
4809
4338
|
end
|
4810
|
-
|
4811
4339
|
end
|
4812
4340
|
|
4813
4341
|
distribution_system_idref = nil
|
4814
4342
|
if args[:mech_vent_fan_type] == HPXML::MechVentTypeCFIS
|
4815
4343
|
hpxml.hvac_distributions.each do |hvac_distribution|
|
4816
4344
|
next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
|
4345
|
+
next if hvac_distribution.air_type != HPXML::AirTypeRegularVelocity
|
4817
4346
|
|
4818
4347
|
distribution_system_idref = hvac_distribution.id
|
4819
4348
|
end
|
@@ -4859,32 +4388,20 @@ class HPXMLFile
|
|
4859
4388
|
|
4860
4389
|
if args[:mech_vent_fan_type_2] != 'none'
|
4861
4390
|
|
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
|
4871
|
-
|
4872
|
-
end
|
4391
|
+
if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type_2])
|
4873
4392
|
|
4874
|
-
if args[:
|
4393
|
+
if args[:mech_vent_recovery_efficiency_type_2] == 'Unadjusted'
|
4394
|
+
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency_2]
|
4875
4395
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency_2]
|
4876
|
-
elsif args[:
|
4396
|
+
elsif args[:mech_vent_recovery_efficiency_type_2] == 'Adjusted'
|
4397
|
+
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency_2]
|
4877
4398
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency_2]
|
4878
4399
|
end
|
4879
|
-
|
4880
|
-
|
4881
|
-
|
4882
|
-
|
4883
|
-
|
4884
|
-
hpxml.hvac_distributions.each do |hvac_distribution|
|
4885
|
-
next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
|
4886
|
-
|
4887
|
-
distribution_system_idref = hvac_distribution.id
|
4400
|
+
elsif [HPXML::MechVentTypeHRV].include?(args[:mech_vent_fan_type_2])
|
4401
|
+
if args[:mech_vent_recovery_efficiency_type_2] == 'Unadjusted'
|
4402
|
+
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency_2]
|
4403
|
+
elsif args[:mech_vent_recovery_efficiency_type_2] == 'Adjusted'
|
4404
|
+
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency_2]
|
4888
4405
|
end
|
4889
4406
|
end
|
4890
4407
|
|
@@ -4897,29 +4414,36 @@ class HPXMLFile
|
|
4897
4414
|
total_recovery_efficiency_adjusted: total_recovery_efficiency_adjusted,
|
4898
4415
|
sensible_recovery_efficiency: sensible_recovery_efficiency,
|
4899
4416
|
sensible_recovery_efficiency_adjusted: sensible_recovery_efficiency_adjusted,
|
4900
|
-
fan_power: args[:mech_vent_fan_power_2]
|
4901
|
-
distribution_system_idref: distribution_system_idref)
|
4417
|
+
fan_power: args[:mech_vent_fan_power_2])
|
4902
4418
|
end
|
4903
4419
|
|
4904
|
-
if args[:
|
4420
|
+
if (args[:kitchen_fans_quantity] == Constants.Auto) || (args[:kitchen_fans_quantity].to_i > 0)
|
4905
4421
|
if args[:kitchen_fans_flow_rate].is_initialized
|
4906
|
-
|
4422
|
+
if args[:kitchen_fans_flow_rate].get != Constants.Auto
|
4423
|
+
rated_flow_rate = args[:kitchen_fans_flow_rate].get.to_f
|
4424
|
+
end
|
4907
4425
|
end
|
4908
4426
|
|
4909
4427
|
if args[:kitchen_fans_power].is_initialized
|
4910
|
-
|
4428
|
+
if args[:kitchen_fans_power].get != Constants.Auto
|
4429
|
+
fan_power = args[:kitchen_fans_power].get.to_f
|
4430
|
+
end
|
4911
4431
|
end
|
4912
4432
|
|
4913
4433
|
if args[:kitchen_fans_hours_in_operation].is_initialized
|
4914
|
-
|
4434
|
+
if args[:kitchen_fans_hours_in_operation].get != Constants.Auto
|
4435
|
+
hours_in_operation = args[:kitchen_fans_hours_in_operation].get.to_f
|
4436
|
+
end
|
4915
4437
|
end
|
4916
4438
|
|
4917
4439
|
if args[:kitchen_fans_start_hour].is_initialized
|
4918
|
-
|
4440
|
+
if args[:kitchen_fans_start_hour].get != Constants.Auto
|
4441
|
+
start_hour = args[:kitchen_fans_start_hour].get.to_i
|
4442
|
+
end
|
4919
4443
|
end
|
4920
4444
|
|
4921
|
-
if args[:kitchen_fans_quantity].
|
4922
|
-
quantity = args[:kitchen_fans_quantity].
|
4445
|
+
if args[:kitchen_fans_quantity] != Constants.Auto
|
4446
|
+
quantity = args[:kitchen_fans_quantity].to_i
|
4923
4447
|
end
|
4924
4448
|
|
4925
4449
|
hpxml.ventilation_fans.add(id: 'KitchenRangeFan',
|
@@ -4932,25 +4456,33 @@ class HPXMLFile
|
|
4932
4456
|
quantity: quantity)
|
4933
4457
|
end
|
4934
4458
|
|
4935
|
-
if args[:
|
4459
|
+
if (args[:bathroom_fans_quantity] == Constants.Auto) || (args[:bathroom_fans_quantity].to_i > 0)
|
4936
4460
|
if args[:bathroom_fans_flow_rate].is_initialized
|
4937
|
-
|
4461
|
+
if args[:bathroom_fans_flow_rate].get != Constants.Auto
|
4462
|
+
rated_flow_rate = args[:bathroom_fans_flow_rate].get.to_f
|
4463
|
+
end
|
4938
4464
|
end
|
4939
4465
|
|
4940
4466
|
if args[:bathroom_fans_power].is_initialized
|
4941
|
-
|
4467
|
+
if args[:bathroom_fans_power].get != Constants.Auto
|
4468
|
+
fan_power = args[:bathroom_fans_power].get.to_f
|
4469
|
+
end
|
4942
4470
|
end
|
4943
4471
|
|
4944
4472
|
if args[:bathroom_fans_hours_in_operation].is_initialized
|
4945
|
-
|
4473
|
+
if args[:bathroom_fans_hours_in_operation].get != Constants.Auto
|
4474
|
+
hours_in_operation = args[:bathroom_fans_hours_in_operation].get.to_f
|
4475
|
+
end
|
4946
4476
|
end
|
4947
4477
|
|
4948
4478
|
if args[:bathroom_fans_start_hour].is_initialized
|
4949
|
-
|
4479
|
+
if args[:bathroom_fans_start_hour].get != Constants.Auto
|
4480
|
+
start_hour = args[:bathroom_fans_start_hour].get.to_i
|
4481
|
+
end
|
4950
4482
|
end
|
4951
4483
|
|
4952
|
-
if args[:bathroom_fans_quantity].
|
4953
|
-
quantity = args[:bathroom_fans_quantity].
|
4484
|
+
if args[:bathroom_fans_quantity] != Constants.Auto
|
4485
|
+
quantity = args[:bathroom_fans_quantity].to_i
|
4954
4486
|
end
|
4955
4487
|
|
4956
4488
|
hpxml.ventilation_fans.add(id: 'BathFans',
|
@@ -4993,10 +4525,6 @@ class HPXMLFile
|
|
4993
4525
|
tank_volume = args[:water_heater_tank_volume]
|
4994
4526
|
end
|
4995
4527
|
|
4996
|
-
if args[:water_heater_heating_capacity] != Constants.Auto
|
4997
|
-
heating_capacity = args[:water_heater_heating_capacity]
|
4998
|
-
end
|
4999
|
-
|
5000
4528
|
if args[:water_heater_setpoint_temperature] != Constants.Auto
|
5001
4529
|
temperature = args[:water_heater_setpoint_temperature]
|
5002
4530
|
end
|
@@ -5064,7 +4592,6 @@ class HPXMLFile
|
|
5064
4592
|
location: location,
|
5065
4593
|
tank_volume: tank_volume,
|
5066
4594
|
fraction_dhw_load_served: 1.0,
|
5067
|
-
heating_capacity: heating_capacity,
|
5068
4595
|
energy_factor: energy_factor,
|
5069
4596
|
uniform_energy_factor: uniform_energy_factor,
|
5070
4597
|
first_hour_rating: first_hour_rating,
|
@@ -5310,12 +4837,12 @@ class HPXMLFile
|
|
5310
4837
|
end
|
5311
4838
|
|
5312
4839
|
def self.set_dehumidifier(hpxml, runner, args)
|
5313
|
-
return
|
4840
|
+
return if args[:dehumidifier_type] == 'none'
|
5314
4841
|
|
5315
4842
|
if args[:dehumidifier_efficiency_type] == 'EnergyFactor'
|
5316
|
-
energy_factor = args[:
|
4843
|
+
energy_factor = args[:dehumidifier_efficiency]
|
5317
4844
|
elsif args[:dehumidifier_efficiency_type] == 'IntegratedEnergyFactor'
|
5318
|
-
integrated_energy_factor = args[:
|
4845
|
+
integrated_energy_factor = args[:dehumidifier_efficiency]
|
5319
4846
|
end
|
5320
4847
|
|
5321
4848
|
hpxml.dehumidifiers.add(id: 'Dehumidifier',
|
@@ -5324,31 +4851,31 @@ class HPXMLFile
|
|
5324
4851
|
energy_factor: energy_factor,
|
5325
4852
|
integrated_energy_factor: integrated_energy_factor,
|
5326
4853
|
rh_setpoint: args[:dehumidifier_rh_setpoint],
|
5327
|
-
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served]
|
4854
|
+
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served],
|
4855
|
+
location: HPXML::LocationLivingSpace)
|
5328
4856
|
end
|
5329
4857
|
|
5330
4858
|
def self.set_clothes_washer(hpxml, runner, args)
|
5331
4859
|
if args[:water_heater_type] == 'none'
|
5332
|
-
args[:
|
4860
|
+
args[:clothes_washer_location] = 'none'
|
5333
4861
|
end
|
5334
4862
|
|
5335
|
-
return
|
4863
|
+
return if args[:clothes_washer_location] == 'none'
|
5336
4864
|
|
5337
4865
|
if args[:clothes_washer_rated_annual_kwh] != Constants.Auto
|
5338
4866
|
rated_annual_kwh = args[:clothes_washer_rated_annual_kwh]
|
4867
|
+
return if Float(rated_annual_kwh) == 0
|
5339
4868
|
end
|
5340
4869
|
|
5341
4870
|
if args[:clothes_washer_location] != Constants.Auto
|
5342
4871
|
location = args[:clothes_washer_location]
|
5343
4872
|
end
|
5344
4873
|
|
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]
|
4874
|
+
if args[:clothes_washer_efficiency] != Constants.Auto
|
4875
|
+
if args[:clothes_washer_efficiency_type] == 'ModifiedEnergyFactor'
|
4876
|
+
modified_energy_factor = args[:clothes_washer_efficiency].to_f
|
4877
|
+
elsif args[:clothes_washer_efficiency_type] == 'IntegratedModifiedEnergyFactor'
|
4878
|
+
integrated_modified_energy_factor = args[:clothes_washer_efficiency].to_f
|
5352
4879
|
end
|
5353
4880
|
end
|
5354
4881
|
|
@@ -5390,14 +4917,14 @@ class HPXMLFile
|
|
5390
4917
|
end
|
5391
4918
|
|
5392
4919
|
def self.set_clothes_dryer(hpxml, runner, args)
|
5393
|
-
return
|
5394
|
-
return
|
5395
|
-
|
5396
|
-
if args[:
|
5397
|
-
|
5398
|
-
|
5399
|
-
|
5400
|
-
combined_energy_factor = args[:
|
4920
|
+
return if args[:clothes_washer_location] == 'none'
|
4921
|
+
return if args[:clothes_dryer_location] == 'none'
|
4922
|
+
|
4923
|
+
if args[:clothes_dryer_efficiency] != Constants.Auto
|
4924
|
+
if args[:clothes_dryer_efficiency_type] == 'EnergyFactor'
|
4925
|
+
energy_factor = args[:clothes_dryer_efficiency].to_f
|
4926
|
+
elsif args[:clothes_dryer_efficiency_type] == 'CombinedEnergyFactor'
|
4927
|
+
combined_energy_factor = args[:clothes_dryer_efficiency].to_f
|
5401
4928
|
end
|
5402
4929
|
end
|
5403
4930
|
|
@@ -5405,10 +4932,6 @@ class HPXMLFile
|
|
5405
4932
|
location = args[:clothes_dryer_location]
|
5406
4933
|
end
|
5407
4934
|
|
5408
|
-
if args[:clothes_dryer_control_type] != Constants.Auto
|
5409
|
-
control_type = args[:clothes_dryer_control_type]
|
5410
|
-
end
|
5411
|
-
|
5412
4935
|
if args[:clothes_dryer_vented_flow_rate] != Constants.Auto
|
5413
4936
|
is_vented = false
|
5414
4937
|
if Float(args[:clothes_dryer_vented_flow_rate]) > 0
|
@@ -5426,25 +4949,25 @@ class HPXMLFile
|
|
5426
4949
|
fuel_type: args[:clothes_dryer_fuel_type],
|
5427
4950
|
energy_factor: energy_factor,
|
5428
4951
|
combined_energy_factor: combined_energy_factor,
|
5429
|
-
control_type: control_type,
|
5430
4952
|
is_vented: is_vented,
|
5431
4953
|
vented_flow_rate: vented_flow_rate,
|
5432
4954
|
usage_multiplier: usage_multiplier)
|
5433
4955
|
end
|
5434
4956
|
|
5435
4957
|
def self.set_dishwasher(hpxml, runner, args)
|
5436
|
-
return
|
4958
|
+
return if args[:dishwasher_location] == 'none'
|
5437
4959
|
|
5438
4960
|
if args[:dishwasher_location] != Constants.Auto
|
5439
4961
|
location = args[:dishwasher_location]
|
5440
4962
|
end
|
5441
4963
|
|
5442
4964
|
if args[:dishwasher_efficiency_type] == 'RatedAnnualkWh'
|
5443
|
-
if args[:
|
5444
|
-
rated_annual_kwh = args[:
|
4965
|
+
if args[:dishwasher_efficiency] != Constants.Auto
|
4966
|
+
rated_annual_kwh = args[:dishwasher_efficiency]
|
4967
|
+
return if Float(rated_annual_kwh) == 0
|
5445
4968
|
end
|
5446
4969
|
elsif args[:dishwasher_efficiency_type] == 'EnergyFactor'
|
5447
|
-
energy_factor = args[:
|
4970
|
+
energy_factor = args[:dishwasher_efficiency]
|
5448
4971
|
end
|
5449
4972
|
|
5450
4973
|
if args[:dishwasher_label_electric_rate] != Constants.Auto
|
@@ -5484,10 +5007,11 @@ class HPXMLFile
|
|
5484
5007
|
end
|
5485
5008
|
|
5486
5009
|
def self.set_refrigerator(hpxml, runner, args)
|
5487
|
-
return
|
5010
|
+
return if args[:refrigerator_location] == 'none'
|
5488
5011
|
|
5489
5012
|
if args[:refrigerator_rated_annual_kwh] != Constants.Auto
|
5490
|
-
|
5013
|
+
rated_annual_kwh = args[:refrigerator_rated_annual_kwh]
|
5014
|
+
return if Float(rated_annual_kwh) == 0
|
5491
5015
|
end
|
5492
5016
|
|
5493
5017
|
if args[:refrigerator_location] != Constants.Auto
|
@@ -5498,22 +5022,23 @@ class HPXMLFile
|
|
5498
5022
|
usage_multiplier = args[:refrigerator_usage_multiplier]
|
5499
5023
|
end
|
5500
5024
|
|
5501
|
-
if args[:
|
5025
|
+
if args[:extra_refrigerator_location] != 'none'
|
5502
5026
|
primary_indicator = true
|
5503
5027
|
end
|
5504
5028
|
|
5505
5029
|
hpxml.refrigerators.add(id: 'Refrigerator',
|
5506
5030
|
location: location,
|
5507
|
-
rated_annual_kwh:
|
5031
|
+
rated_annual_kwh: rated_annual_kwh,
|
5508
5032
|
primary_indicator: primary_indicator,
|
5509
5033
|
usage_multiplier: usage_multiplier)
|
5510
5034
|
end
|
5511
5035
|
|
5512
5036
|
def self.set_extra_refrigerator(hpxml, runner, args)
|
5513
|
-
return
|
5037
|
+
return if args[:extra_refrigerator_location] == 'none'
|
5514
5038
|
|
5515
5039
|
if args[:extra_refrigerator_rated_annual_kwh] != Constants.Auto
|
5516
5040
|
rated_annual_kwh = args[:extra_refrigerator_rated_annual_kwh]
|
5041
|
+
return if Float(rated_annual_kwh) == 0
|
5517
5042
|
end
|
5518
5043
|
|
5519
5044
|
if args[:extra_refrigerator_location] != Constants.Auto
|
@@ -5532,10 +5057,11 @@ class HPXMLFile
|
|
5532
5057
|
end
|
5533
5058
|
|
5534
5059
|
def self.set_freezer(hpxml, runner, args)
|
5535
|
-
return
|
5060
|
+
return if args[:freezer_location] == 'none'
|
5536
5061
|
|
5537
5062
|
if args[:freezer_rated_annual_kwh] != Constants.Auto
|
5538
5063
|
rated_annual_kwh = args[:freezer_rated_annual_kwh]
|
5064
|
+
return if Float(rated_annual_kwh) == 0
|
5539
5065
|
end
|
5540
5066
|
|
5541
5067
|
if args[:freezer_location] != Constants.Auto
|
@@ -5553,7 +5079,7 @@ class HPXMLFile
|
|
5553
5079
|
end
|
5554
5080
|
|
5555
5081
|
def self.set_cooking_range_oven(hpxml, runner, args)
|
5556
|
-
return
|
5082
|
+
return if args[:cooking_range_oven_location] == 'none'
|
5557
5083
|
|
5558
5084
|
if args[:cooking_range_oven_location] != Constants.Auto
|
5559
5085
|
location = args[:cooking_range_oven_location]
|
@@ -5602,7 +5128,7 @@ class HPXMLFile
|
|
5602
5128
|
kWh_per_year = args[:plug_loads_television_annual_kwh]
|
5603
5129
|
end
|
5604
5130
|
|
5605
|
-
usage_multiplier = args[:plug_loads_television_usage_multiplier]
|
5131
|
+
usage_multiplier = args[:plug_loads_television_usage_multiplier]
|
5606
5132
|
if usage_multiplier == 1.0
|
5607
5133
|
usage_multiplier = nil
|
5608
5134
|
end
|
@@ -5626,7 +5152,7 @@ class HPXMLFile
|
|
5626
5152
|
frac_latent = args[:plug_loads_other_frac_latent]
|
5627
5153
|
end
|
5628
5154
|
|
5629
|
-
usage_multiplier = args[:plug_loads_other_usage_multiplier]
|
5155
|
+
usage_multiplier = args[:plug_loads_other_usage_multiplier]
|
5630
5156
|
if usage_multiplier == 1.0
|
5631
5157
|
usage_multiplier = nil
|
5632
5158
|
end
|
@@ -5646,7 +5172,7 @@ class HPXMLFile
|
|
5646
5172
|
kWh_per_year = args[:plug_loads_well_pump_annual_kwh]
|
5647
5173
|
end
|
5648
5174
|
|
5649
|
-
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier]
|
5175
|
+
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier]
|
5650
5176
|
if usage_multiplier == 1.0
|
5651
5177
|
usage_multiplier = nil
|
5652
5178
|
end
|
@@ -5664,7 +5190,7 @@ class HPXMLFile
|
|
5664
5190
|
kWh_per_year = args[:plug_loads_vehicle_annual_kwh]
|
5665
5191
|
end
|
5666
5192
|
|
5667
|
-
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier]
|
5193
|
+
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier]
|
5668
5194
|
if usage_multiplier == 1.0
|
5669
5195
|
usage_multiplier = nil
|
5670
5196
|
end
|
@@ -5750,18 +5276,20 @@ class HPXMLFile
|
|
5750
5276
|
pump_usage_multiplier = args[:pool_pump_usage_multiplier]
|
5751
5277
|
end
|
5752
5278
|
|
5753
|
-
|
5754
|
-
heater_type = args[:pool_heater_type]
|
5755
|
-
end
|
5279
|
+
pool_heater_type = args[:pool_heater_type]
|
5756
5280
|
|
5757
|
-
if
|
5758
|
-
|
5759
|
-
|
5281
|
+
if [HPXML::HeaterTypeElectricResistance, HPXML::HeaterTypeHeatPump].include?(pool_heater_type)
|
5282
|
+
if args[:pool_heater_annual_kwh] != Constants.Auto
|
5283
|
+
heater_load_units = 'kWh/year'
|
5284
|
+
heater_load_value = args[:pool_heater_annual_kwh]
|
5285
|
+
end
|
5760
5286
|
end
|
5761
5287
|
|
5762
|
-
if
|
5763
|
-
|
5764
|
-
|
5288
|
+
if [HPXML::HeaterTypeGas].include?(pool_heater_type)
|
5289
|
+
if args[:pool_heater_annual_therm] != Constants.Auto
|
5290
|
+
heater_load_units = 'therm/year'
|
5291
|
+
heater_load_value = args[:pool_heater_annual_therm]
|
5292
|
+
end
|
5765
5293
|
end
|
5766
5294
|
|
5767
5295
|
if args[:pool_heater_usage_multiplier] != 1.0
|
@@ -5769,9 +5297,11 @@ class HPXMLFile
|
|
5769
5297
|
end
|
5770
5298
|
|
5771
5299
|
hpxml.pools.add(id: 'Pool',
|
5300
|
+
type: HPXML::TypeUnknown,
|
5301
|
+
pump_type: HPXML::TypeUnknown,
|
5772
5302
|
pump_kwh_per_year: pump_kwh_per_year,
|
5773
5303
|
pump_usage_multiplier: pump_usage_multiplier,
|
5774
|
-
heater_type:
|
5304
|
+
heater_type: pool_heater_type,
|
5775
5305
|
heater_load_units: heater_load_units,
|
5776
5306
|
heater_load_value: heater_load_value,
|
5777
5307
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5788,18 +5318,20 @@ class HPXMLFile
|
|
5788
5318
|
pump_usage_multiplier = args[:hot_tub_pump_usage_multiplier]
|
5789
5319
|
end
|
5790
5320
|
|
5791
|
-
|
5792
|
-
heater_type = args[:hot_tub_heater_type]
|
5793
|
-
end
|
5321
|
+
hot_tub_heater_type = args[:hot_tub_heater_type]
|
5794
5322
|
|
5795
|
-
if
|
5796
|
-
|
5797
|
-
|
5323
|
+
if [HPXML::HeaterTypeElectricResistance, HPXML::HeaterTypeHeatPump].include?(hot_tub_heater_type)
|
5324
|
+
if args[:hot_tub_heater_annual_kwh] != Constants.Auto
|
5325
|
+
heater_load_units = 'kWh/year'
|
5326
|
+
heater_load_value = args[:hot_tub_heater_annual_kwh]
|
5327
|
+
end
|
5798
5328
|
end
|
5799
5329
|
|
5800
|
-
if
|
5801
|
-
|
5802
|
-
|
5330
|
+
if [HPXML::HeaterTypeGas].include?(hot_tub_heater_type)
|
5331
|
+
if args[:hot_tub_heater_annual_therm] != Constants.Auto
|
5332
|
+
heater_load_units = 'therm/year'
|
5333
|
+
heater_load_value = args[:hot_tub_heater_annual_therm]
|
5334
|
+
end
|
5803
5335
|
end
|
5804
5336
|
|
5805
5337
|
if args[:hot_tub_heater_usage_multiplier] != 1.0
|
@@ -5807,9 +5339,11 @@ class HPXMLFile
|
|
5807
5339
|
end
|
5808
5340
|
|
5809
5341
|
hpxml.hot_tubs.add(id: 'HotTub',
|
5342
|
+
type: HPXML::TypeUnknown,
|
5343
|
+
pump_type: HPXML::TypeUnknown,
|
5810
5344
|
pump_kwh_per_year: pump_kwh_per_year,
|
5811
5345
|
pump_usage_multiplier: pump_usage_multiplier,
|
5812
|
-
heater_type:
|
5346
|
+
heater_type: hot_tub_heater_type,
|
5813
5347
|
heater_load_units: heater_load_units,
|
5814
5348
|
heater_load_value: heater_load_value,
|
5815
5349
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5827,31 +5361,7 @@ class HPXMLFile
|
|
5827
5361
|
st = space.spaceType.get
|
5828
5362
|
space_type = st.standardsSpaceType.get
|
5829
5363
|
|
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
|
5364
|
+
return space_type
|
5855
5365
|
end
|
5856
5366
|
|
5857
5367
|
def self.get_surface_azimuth(surface, args)
|