urbanopt-cli 0.4.1 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -1
- data/CHANGELOG.md +59 -0
- data/CMakeLists.txt +17 -17
- data/FindOpenStudioSDK.cmake +12 -7
- data/Gemfile +8 -10
- data/LICENSE.md +11 -1
- data/README.md +1 -0
- data/Rakefile +16 -6
- data/example_files/Gemfile +25 -9
- data/example_files/example_project.json +35 -20
- data/example_files/example_project_combined.json +100 -5
- data/example_files/example_project_with_electric_network.json +2116 -0
- data/example_files/mappers/Baseline.rb +111 -51
- data/example_files/mappers/CreateBar.rb +19 -7
- data/example_files/mappers/EvCharging.rb +141 -0
- data/example_files/mappers/Floorspace.rb +29 -17
- data/example_files/mappers/HighEfficiency.rb +20 -8
- data/example_files/mappers/HighEfficiencyCreateBar.rb +19 -8
- data/example_files/mappers/HighEfficiencyFloorspace.rb +19 -8
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/mappers/base_workflow.osw +26 -1
- data/example_files/mappers/floorspace_workflow.osw +9 -0
- data/example_files/measures/BuildResidentialModel/measure.rb +249 -134
- data/example_files/reopt/base_assumptions.json +2 -2
- data/example_files/reopt/multiPV_assumptions.json +4 -3
- data/example_files/residential/clothes_dryer.tsv +7 -7
- data/example_files/residential/clothes_washer.tsv +2 -2
- data/example_files/residential/cooling_system.tsv +42 -22
- data/example_files/residential/dishwasher.tsv +1 -1
- data/example_files/residential/exhaust.tsv +3 -0
- data/example_files/residential/heat_pump.tsv +62 -40
- data/example_files/residential/water_heater.tsv +1 -1
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +14 -0
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +116 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +1088 -1329
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1819 -1383
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +450 -362
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +165 -112
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.json +388 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.md +43 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-ief.osw → base-appliances-dehumidifier-ief-portable.osw} +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-50percent.osw → base-appliances-dehumidifier-ief-whole-home.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +61 -87
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-baseboard.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-boiler-only-fan-coil.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-mechvent-shared-preconditioning.osw → base-bldgtype-multifamily-shared-mechvent-preconditioning.osw} +70 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-mechvent-shared.osw → base-bldgtype-multifamily-shared-mechvent.osw} +70 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-single-family-attached.osw → base-bldgtype-single-family-attached.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +56 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +55 -81
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +56 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +64 -90
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +69 -95
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +64 -92
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +57 -83
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +60 -86
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +60 -86
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +52 -78
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +52 -78
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +71 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-flat.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-pv-shared.osw → extra-bldgtype-single-family-attached-double-exterior.osw} +62 -89
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-dhw-shared-water-heater.osw → extra-bldgtype-single-family-attached-single-exterior-front.osw} +60 -86
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-multifamily.osw → extra-bldgtype-single-family-attached-unconditioned-basement.osw} +64 -91
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-hot-tub-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-gas-pool-heater-with-zero-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +64 -89
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +64 -89
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +63 -88
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-hvac-programmable-thermostat.osw → invalid_files/multipliers-without-fuel-loads.osw} +54 -80
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-tv-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-dhw-uef.osw → invalid_files/multipliers-without-vehicle-plug-loads.osw} +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-with-shared-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +59 -85
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +58 -84
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +56 -82
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
- data/example_files/resources/hpxml-measures/Changelog.md +249 -0
- data/example_files/resources/hpxml-measures/Gemfile +2 -5
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +404 -1357
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +247 -171
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +11 -101
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +824 -301
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +18 -35
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +526 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +135 -207
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +14 -186
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +549 -93
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +12 -15
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +78 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +413 -15
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +48 -37
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +1627 -1227
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +1192 -434
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1555 -1616
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1436 -1479
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +3 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +22 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +85 -19
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/minitest_helper.rb +4 -26
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +22 -46
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +22 -21
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +51 -14
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +24 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/validator.rb +80 -19
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +9 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +106 -75
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +109 -34
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +22 -36
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +1565 -768
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +151 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +101 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +9 -18
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +316 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +53 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +13 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +5 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +13 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +102 -62
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +189 -35
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/util.rb +26 -0
- data/example_files/resources/hpxml-measures/README.md +5 -5
- data/example_files/resources/hpxml-measures/Rakefile +2 -10
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +416 -299
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +364 -481
- data/example_files/resources/hpxml-measures/SimulationOutputReport/resources/constants.rb +1 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +327 -320
- data/example_files/resources/hpxml-measures/docs/source/build_residential_hpxml.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/conf.py +11 -5
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +6 -6
- data/example_files/resources/hpxml-measures/docs/source/index.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +7 -109
- data/example_files/resources/hpxml-measures/docs/source/nstatic/stylesheet.css +13 -1
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +2482 -0
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +282 -0
- data/example_files/resources/hpxml-measures/tasks.rb +2494 -1248
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +10 -10
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +96 -21
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-ief.xml → base-appliances-dehumidifier-ief-portable.xml} +8 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-50percent.xml → base-appliances-dehumidifier-ief-whole-home.xml} +10 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +525 -524
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +564 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +633 -634
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +531 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-multifamily-buffer-space.xml → base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +554 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-non-freezing-space.xml → base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-heated-space.xml → base-bldgtype-multifamily-adjacent-to-other-heated-space.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-housing-unit.xml → base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml} +34 -62
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +425 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +457 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +427 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +479 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +474 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +408 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +439 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +406 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +409 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +457 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +407 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +438 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +408 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +456 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +460 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +466 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-mechvent-shared-multiple.xml → base-bldgtype-multifamily-shared-mechvent-multiple.xml} +43 -415
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +489 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +473 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +458 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +448 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +619 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +516 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +516 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +7 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +567 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +525 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +567 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +566 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +522 -525
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +575 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +497 -497
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +569 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +661 -664
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +636 -639
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +582 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +601 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +2474 -2493
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2475 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +754 -755
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +504 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +23 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +498 -497
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +644 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +724 -729
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +685 -688
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +516 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +609 -610
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +627 -628
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml} +8 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml} +9 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed.xml +558 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +2 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +4 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +2 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +547 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml +559 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +557 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +2 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-autosize-furnace-gas-only.xml} +4 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +4 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +4 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +547 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +551 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +556 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted.xml} +556 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +2 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +5 -6
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +4 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +571 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +519 -522
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +518 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +532 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +509 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +555 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +536 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +503 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +6 -57
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +549 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +5 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +548 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +576 -579
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +7 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-flowrate.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +8 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +13 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +572 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-only.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +10 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +13 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml} +9 -10
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +570 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +547 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +554 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +515 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +486 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +6 -57
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +567 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +508 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +573 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +585 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +488 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +573 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +516 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +573 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +516 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +517 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +577 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +545 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +549 -541
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +576 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +796 -795
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +574 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +572 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +478 -495
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +579 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +758 -833
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +749 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +550 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-calendar-year.xml → base-misc-shielding-of-home.xml} +7 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +728 -725
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +6 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +569 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +566 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +532 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +535 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +575 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-uef.xml → invalid_files/dhw-invalid-ef-tank.xml} +7 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +546 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +543 -544
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +546 -545
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +448 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +613 -616
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +626 -629
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +610 -611
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +472 -473
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +488 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +761 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +460 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +579 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +559 -560
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +528 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +546 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +546 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +570 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-shared-negative-seer-eq.xml +407 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +569 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +466 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +644 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/{appliances-location-unconditioned-space.xml → invalid-foundation-wall-properties.xml} +39 -29
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +591 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/{slab-zero-exposed-perimeter.xml → invalid-number-of-conditioned-floors.xml} +7 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +451 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +550 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +517 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +564 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +473 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +582 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +21 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +560 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +575 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1657 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-cooling-systems.xml +432 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +546 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +526 -529
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-fraction-one.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +531 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +565 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +531 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +575 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +465 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +465 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +590 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +577 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +562 -563
- data/example_files/resources/hpxml-measures/workflow/template.osw +5 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +6 -17
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -19
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_ashrae_140.csv +27 -0
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_hvac_sizing.csv +294 -0
- data/example_files/resources/hpxml-measures/workflow/tests/compare.rb +130 -0
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +522 -527
- data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
- data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
- data/example_files/validation_schema.yaml +149 -0
- data/example_files/visualization/input_visualization_feature.html +213 -56
- data/example_files/visualization/input_visualization_scenario.html +92 -30
- data/lib/uo_cli.rb +406 -128
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/scripts/setup-env-gitbash.sh +5 -5
- data/scripts/setup-env-unix.sh +4 -4
- data/scripts/setup-env.bat +14 -11
- data/scripts/setup-env.ps1 +13 -10
- data/uo_cli.gemspec +10 -8
- metadata +390 -130
- data/developer_nrel_key.rb +0 -31
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
- data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +0 -61
- data/example_files/resources/hpxml-measures/docs/source/hpxml_to_openstudio.rst +0 -1386
- data/example_files/resources/hpxml-measures/docs/source/simulation_output_report.rst +0 -252
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-laundry-room.xml +0 -828
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater-recirc.xml +0 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-shared-water-heater.xml +0 -813
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-attached-multifamily.xml +0 -810
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-common-surfaces.xml +0 -928
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ideal-air.xml +0 -501
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +0 -838
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-baseboard.xml +0 -777
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil-ducted.xml +0 -808
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-fan-coil.xml +0 -780
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml +0 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-cooling-tower-water-loop-heat-pump.xml +0 -815
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-baseboard.xml +0 -760
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-ducted.xml +0 -790
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil-eae.xml +0 -759
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-fan-coil.xml +0 -762
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-boiler-only-water-loop-heat-pump.xml +0 -796
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-baseboard.xml +0 -759
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil-ducted.xml +0 -789
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-fan-coil.xml +0 -761
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-chiller-only-water-loop-heat-pump.xml +0 -796
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-cooling-tower-only-water-loop-heat-pump.xml +0 -791
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-shared-ground-loop-ground-to-air-heat-pump.xml +0 -814
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared-preconditioning.xml +0 -851
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-shared.xml +0 -835
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-shared.xml +0 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/coal-for-non-boiler-heating.xml +0 -514
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type.xml +0 -828
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-interior-shading.xml +0 -564
@@ -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
|
2
|
-
ft^
|
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
|
+
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)"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Dependency=Template Month Dependency=Template Year Dependency=water_heater_fuel_type
|
1
|
+
Dependency=Template Month Dependency=Template Year Dependency=water_heater_fuel_type water_heater_efficiency water_heater_tank_volume Source
|
2
2
|
ratio gal
|
3
3
|
Sep 2020 electricity 0.93 40 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
4
4
|
Sep 2020 natural gas 0.61 40 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
@@ -0,0 +1,14 @@
|
|
1
|
+
## Pull Request Description
|
2
|
+
|
3
|
+
[description here]
|
4
|
+
|
5
|
+
## Checklist
|
6
|
+
|
7
|
+
Not all may apply:
|
8
|
+
|
9
|
+
- [ ] EPvalidator.xml has been updated
|
10
|
+
- [ ] Tests (and test files) have been updated
|
11
|
+
- [ ] Documentation has been updated
|
12
|
+
- [ ] Changelog has been updated
|
13
|
+
- [ ] `openstudio tasks.rb update_measures` has been run
|
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'
|
@@ -134,7 +135,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
134
135
|
|
135
136
|
arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('schedules_type', schedules_type_choices, true)
|
136
137
|
arg.setDisplayName('Schedules: Type')
|
137
|
-
arg.setDescription("The type of occupant-related schedules to use. Schedules corresponding to 'default' are average (e.g., Building America). Schedules corresponding to 'stochastic' are generated using time-
|
138
|
+
arg.setDescription("The type of occupant-related schedules to use. Schedules corresponding to 'default' are average (e.g., Building America). Schedules corresponding to 'stochastic' are generated using time-inhomogeneous Markov chains derived from American Time Use Survey data, and supplemented with sampling duration and power level from NEEA RBSA data as well as DHW draw duration and flow rate from Aquacraft/AWWA data.")
|
138
139
|
arg.setDefaultValue('default')
|
139
140
|
args << arg
|
140
141
|
|
@@ -167,6 +168,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
167
168
|
arg.setDescription("This numeric field should contain the ending day of the ending month (must be valid for month) for the vacancy period desired. Only applies if the schedules type is 'stochastic'.")
|
168
169
|
args << arg
|
169
170
|
|
171
|
+
arg = OpenStudio::Measure::OSArgument.makeIntegerArgument('schedules_random_seed', false)
|
172
|
+
arg.setDisplayName('Schedules: Random Seed')
|
173
|
+
arg.setUnits('#')
|
174
|
+
arg.setDescription("This numeric field is the seed for the random number generator. Only applies if the schedules type is 'stochastic'.")
|
175
|
+
args << arg
|
176
|
+
|
170
177
|
arg = OpenStudio::Measure::OSArgument.makeStringArgument('weather_station_epw_filepath', true)
|
171
178
|
arg.setDisplayName('EnergyPlus Weather (EPW) Filepath')
|
172
179
|
arg.setDescription('Path of the EPW file.')
|
@@ -184,7 +191,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
184
191
|
args << arg
|
185
192
|
|
186
193
|
unit_type_choices = OpenStudio::StringVector.new
|
187
|
-
unit_type_choices << HPXML::ResidentialTypeManufactured
|
188
194
|
unit_type_choices << HPXML::ResidentialTypeSFD
|
189
195
|
unit_type_choices << HPXML::ResidentialTypeSFA
|
190
196
|
unit_type_choices << HPXML::ResidentialTypeApartment
|
@@ -205,7 +211,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
205
211
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_num_floors_above_grade', true)
|
206
212
|
arg.setDisplayName('Geometry: Number of Floors')
|
207
213
|
arg.setUnits('#')
|
208
|
-
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.")
|
209
215
|
arg.setDefaultValue(2)
|
210
216
|
args << arg
|
211
217
|
|
@@ -219,7 +225,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
219
225
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_orientation', true)
|
220
226
|
arg.setDisplayName('Geometry: Orientation')
|
221
227
|
arg.setUnits('degrees')
|
222
|
-
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).")
|
223
229
|
arg.setDefaultValue(180.0)
|
224
230
|
args << arg
|
225
231
|
|
@@ -238,28 +244,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
238
244
|
|
239
245
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_corridor_position', corridor_position_choices, true)
|
240
246
|
arg.setDisplayName('Geometry: Corridor Position')
|
241
|
-
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.")
|
242
248
|
arg.setDefaultValue('Double-Loaded Interior')
|
243
249
|
args << arg
|
244
250
|
|
245
251
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_corridor_width', true)
|
246
252
|
arg.setDisplayName('Geometry: Corridor Width')
|
247
253
|
arg.setUnits('ft')
|
248
|
-
arg.setDescription(
|
254
|
+
arg.setDescription("The width of the corridor. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
249
255
|
arg.setDefaultValue(10.0)
|
250
256
|
args << arg
|
251
257
|
|
252
258
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_inset_width', true)
|
253
259
|
arg.setDisplayName('Geometry: Inset Width')
|
254
260
|
arg.setUnits('ft')
|
255
|
-
arg.setDescription(
|
261
|
+
arg.setDescription("The width of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
256
262
|
arg.setDefaultValue(0.0)
|
257
263
|
args << arg
|
258
264
|
|
259
265
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_inset_depth', true)
|
260
266
|
arg.setDisplayName('Geometry: Inset Depth')
|
261
267
|
arg.setUnits('ft')
|
262
|
-
arg.setDescription(
|
268
|
+
arg.setDescription("The depth of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
263
269
|
arg.setDefaultValue(0.0)
|
264
270
|
args << arg
|
265
271
|
|
@@ -269,35 +275,35 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
269
275
|
|
270
276
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_inset_position', inset_position_choices, true)
|
271
277
|
arg.setDisplayName('Geometry: Inset Position')
|
272
|
-
arg.setDescription(
|
278
|
+
arg.setDescription("The position of the inset. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
273
279
|
arg.setDefaultValue('Right')
|
274
280
|
args << arg
|
275
281
|
|
276
282
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_balcony_depth', true)
|
277
283
|
arg.setDisplayName('Geometry: Balcony Depth')
|
278
284
|
arg.setUnits('ft')
|
279
|
-
arg.setDescription(
|
285
|
+
arg.setDescription("The depth of the balcony. Only applies to #{HPXML::ResidentialTypeApartment} units.")
|
280
286
|
arg.setDefaultValue(0.0)
|
281
287
|
args << arg
|
282
288
|
|
283
289
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_width', true)
|
284
290
|
arg.setDisplayName('Geometry: Garage Width')
|
285
291
|
arg.setUnits('ft')
|
286
|
-
arg.setDescription(
|
292
|
+
arg.setDescription("The width of the garage. Enter zero for no garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
287
293
|
arg.setDefaultValue(0.0)
|
288
294
|
args << arg
|
289
295
|
|
290
296
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_depth', true)
|
291
297
|
arg.setDisplayName('Geometry: Garage Depth')
|
292
298
|
arg.setUnits('ft')
|
293
|
-
arg.setDescription(
|
299
|
+
arg.setDescription("The depth of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
294
300
|
arg.setDefaultValue(20.0)
|
295
301
|
args << arg
|
296
302
|
|
297
303
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_garage_protrusion', true)
|
298
304
|
arg.setDisplayName('Geometry: Garage Protrusion')
|
299
305
|
arg.setUnits('frac')
|
300
|
-
arg.setDescription(
|
306
|
+
arg.setDescription("The fraction of the garage that is protruding from the living space. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
301
307
|
arg.setDefaultValue(0.0)
|
302
308
|
args << arg
|
303
309
|
|
@@ -307,7 +313,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
307
313
|
|
308
314
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_garage_position', garage_position_choices, true)
|
309
315
|
arg.setDisplayName('Geometry: Garage Position')
|
310
|
-
arg.setDescription(
|
316
|
+
arg.setDescription("The position of the garage. Only applies to #{HPXML::ResidentialTypeSFD} units.")
|
311
317
|
arg.setDefaultValue('Right')
|
312
318
|
args << arg
|
313
319
|
|
@@ -339,6 +345,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
339
345
|
arg.setDefaultValue(0.0)
|
340
346
|
args << arg
|
341
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
|
+
|
342
355
|
roof_type_choices = OpenStudio::StringVector.new
|
343
356
|
roof_type_choices << 'gable'
|
344
357
|
roof_type_choices << 'hip'
|
@@ -346,7 +359,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
346
359
|
|
347
360
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_type', roof_type_choices, true)
|
348
361
|
arg.setDisplayName('Geometry: Roof Type')
|
349
|
-
arg.setDescription(
|
362
|
+
arg.setDescription("The roof type of the building. Assumed flat for #{HPXML::ResidentialTypeApartment} units.")
|
350
363
|
arg.setDefaultValue('gable')
|
351
364
|
args << arg
|
352
365
|
|
@@ -370,16 +383,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
370
383
|
arg.setDefaultValue('6:12')
|
371
384
|
args << arg
|
372
385
|
|
373
|
-
roof_structure_choices = OpenStudio::StringVector.new
|
374
|
-
roof_structure_choices << 'truss, cantilever'
|
375
|
-
roof_structure_choices << 'rafter'
|
376
|
-
|
377
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_structure', roof_structure_choices, true)
|
378
|
-
arg.setDisplayName('Geometry: Roof Structure')
|
379
|
-
arg.setDescription('The roof structure of the building. Ignored if the building has a flat roof.')
|
380
|
-
arg.setDefaultValue('truss, cantilever')
|
381
|
-
args << arg
|
382
|
-
|
383
386
|
attic_type_choices = OpenStudio::StringVector.new
|
384
387
|
attic_type_choices << HPXML::AtticTypeVented
|
385
388
|
attic_type_choices << HPXML::AtticTypeUnvented
|
@@ -419,6 +422,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
419
422
|
arg.setDefaultValue(Constants.Auto)
|
420
423
|
args << arg
|
421
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
|
+
|
422
431
|
level_choices = OpenStudio::StringVector.new
|
423
432
|
level_choices << 'Bottom'
|
424
433
|
level_choices << 'Middle'
|
@@ -442,19 +451,19 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
442
451
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_units', false)
|
443
452
|
arg.setDisplayName('Geometry: Building Number of Units')
|
444
453
|
arg.setUnits('#')
|
445
|
-
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.")
|
446
455
|
args << arg
|
447
456
|
|
448
457
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_bedrooms', false)
|
449
458
|
arg.setDisplayName('Geometry: Building Number of Bedrooms')
|
450
459
|
arg.setUnits('#')
|
451
|
-
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.")
|
452
461
|
args << arg
|
453
462
|
|
454
463
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('floor_assembly_r', true)
|
455
464
|
arg.setDisplayName('Floor: Assembly R-value')
|
456
465
|
arg.setUnits('h-ft^2-R/Btu')
|
457
|
-
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.')
|
458
467
|
arg.setDefaultValue(30)
|
459
468
|
args << arg
|
460
469
|
|
@@ -472,11 +481,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
472
481
|
arg.setDefaultValue(0)
|
473
482
|
args << arg
|
474
483
|
|
475
|
-
arg = OpenStudio::Measure::OSArgument::
|
484
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('foundation_wall_insulation_distance_to_bottom', true)
|
476
485
|
arg.setDisplayName('Foundation: Wall Insulation Distance To Bottom')
|
477
486
|
arg.setUnits('ft')
|
478
|
-
arg.setDescription(
|
479
|
-
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)
|
480
489
|
args << arg
|
481
490
|
|
482
491
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('foundation_wall_assembly_r', false)
|
@@ -485,6 +494,19 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
485
494
|
arg.setDescription('Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs.')
|
486
495
|
args << arg
|
487
496
|
|
497
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('foundation_wall_thickness', true)
|
498
|
+
arg.setDisplayName('Foundation: Wall Thickness')
|
499
|
+
arg.setDescription('The thickness of the foundation wall.')
|
500
|
+
arg.setDefaultValue(Constants.Auto)
|
501
|
+
args << arg
|
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
|
+
|
488
510
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', true)
|
489
511
|
arg.setDisplayName('Slab: Perimeter Insulation Nominal R-value')
|
490
512
|
arg.setUnits('h-ft^2-R/Btu')
|
@@ -513,18 +535,24 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
513
535
|
arg.setDefaultValue(0)
|
514
536
|
args << arg
|
515
537
|
|
516
|
-
arg = OpenStudio::Measure::OSArgument::
|
538
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_thickness', true)
|
539
|
+
arg.setDisplayName('Slab: Thickness')
|
540
|
+
arg.setDescription('The thickness of the slab.')
|
541
|
+
arg.setDefaultValue(Constants.Auto)
|
542
|
+
args << arg
|
543
|
+
|
544
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_carpet_fraction', true)
|
517
545
|
arg.setDisplayName('Slab: Carpet Fraction')
|
518
546
|
arg.setUnits('Frac')
|
519
547
|
arg.setDescription('Fraction of the slab floor area that is carpeted.')
|
520
|
-
arg.setDefaultValue(
|
548
|
+
arg.setDefaultValue(Constants.Auto)
|
521
549
|
args << arg
|
522
550
|
|
523
|
-
arg = OpenStudio::Measure::OSArgument::
|
551
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_carpet_r', true)
|
524
552
|
arg.setDisplayName('Slab: Carpet R-value')
|
525
553
|
arg.setUnits('h-ft^2-R/Btu')
|
526
554
|
arg.setDescription('R-value of the slab carpet.')
|
527
|
-
arg.setDefaultValue(
|
555
|
+
arg.setDefaultValue(Constants.Auto)
|
528
556
|
args << arg
|
529
557
|
|
530
558
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_assembly_r', true)
|
@@ -548,7 +576,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
548
576
|
args << arg
|
549
577
|
|
550
578
|
color_choices = OpenStudio::StringVector.new
|
551
|
-
color_choices << Constants.Auto
|
552
579
|
color_choices << HPXML::ColorDark
|
553
580
|
color_choices << HPXML::ColorLight
|
554
581
|
color_choices << HPXML::ColorMedium
|
@@ -558,7 +585,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
558
585
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_color', color_choices, true)
|
559
586
|
arg.setDisplayName('Roof: Color')
|
560
587
|
arg.setDescription('The color of the roof.')
|
561
|
-
arg.setDefaultValue(
|
588
|
+
arg.setDefaultValue(HPXML::ColorMedium)
|
562
589
|
args << arg
|
563
590
|
|
564
591
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_assembly_r', true)
|
@@ -568,18 +595,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
568
595
|
arg.setDefaultValue(2.3)
|
569
596
|
args << arg
|
570
597
|
|
571
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('roof_solar_absorptance', true)
|
572
|
-
arg.setDisplayName('Roof: Solar Absorptance')
|
573
|
-
arg.setDescription('The solar absorptance of the roof.')
|
574
|
-
arg.setDefaultValue(Constants.Auto)
|
575
|
-
args << arg
|
576
|
-
|
577
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('roof_emittance', true)
|
578
|
-
arg.setDisplayName('Roof: Emittance')
|
579
|
-
arg.setDescription('The emittance of the roof.')
|
580
|
-
arg.setDefaultValue(0.92)
|
581
|
-
args << arg
|
582
|
-
|
583
598
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('roof_radiant_barrier', true)
|
584
599
|
arg.setDisplayName('Roof: Has Radiant Barrier')
|
585
600
|
arg.setDescription('Specifies whether the attic has a radiant barrier.')
|
@@ -600,28 +615,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
600
615
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', true)
|
601
616
|
arg.setDisplayName('Neighbor: Front Distance')
|
602
617
|
arg.setUnits('ft')
|
603
|
-
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.')
|
604
619
|
arg.setDefaultValue(0.0)
|
605
620
|
args << arg
|
606
621
|
|
607
622
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_back_distance', true)
|
608
623
|
arg.setDisplayName('Neighbor: Back Distance')
|
609
624
|
arg.setUnits('ft')
|
610
|
-
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.')
|
611
626
|
arg.setDefaultValue(0.0)
|
612
627
|
args << arg
|
613
628
|
|
614
629
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_left_distance', true)
|
615
630
|
arg.setDisplayName('Neighbor: Left Distance')
|
616
631
|
arg.setUnits('ft')
|
617
|
-
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.')
|
618
633
|
arg.setDefaultValue(10.0)
|
619
634
|
args << arg
|
620
635
|
|
621
636
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_right_distance', true)
|
622
637
|
arg.setDisplayName('Neighbor: Right Distance')
|
623
638
|
arg.setUnits('ft')
|
624
|
-
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.')
|
625
640
|
arg.setDefaultValue(10.0)
|
626
641
|
args << arg
|
627
642
|
|
@@ -682,13 +697,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
682
697
|
|
683
698
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_siding_type', wall_siding_type_choices, false)
|
684
699
|
arg.setDisplayName('Wall: Siding Type')
|
685
|
-
arg.setDescription('The siding type of the exterior walls.')
|
700
|
+
arg.setDescription('The siding type of the exterior walls. Also applies to rim joists.')
|
686
701
|
args << arg
|
687
702
|
|
688
703
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('wall_color', color_choices, true)
|
689
704
|
arg.setDisplayName('Wall: Color')
|
690
|
-
arg.setDescription('The color of the exterior walls.')
|
691
|
-
arg.setDefaultValue(
|
705
|
+
arg.setDescription('The color of the exterior walls. Also applies to rim joists.')
|
706
|
+
arg.setDefaultValue(HPXML::ColorMedium)
|
692
707
|
args << arg
|
693
708
|
|
694
709
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('wall_assembly_r', true)
|
@@ -698,63 +713,51 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
698
713
|
arg.setDefaultValue(13)
|
699
714
|
args << arg
|
700
715
|
|
701
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('wall_solar_absorptance', true)
|
702
|
-
arg.setDisplayName('Wall: Solar Absorptance')
|
703
|
-
arg.setDescription('The solar absorptance of the exterior walls.')
|
704
|
-
arg.setDefaultValue(Constants.Auto)
|
705
|
-
args << arg
|
706
|
-
|
707
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('wall_emittance', true)
|
708
|
-
arg.setDisplayName('Wall: Emittance')
|
709
|
-
arg.setDescription('The emittance of the exterior walls.')
|
710
|
-
arg.setDefaultValue(0.92)
|
711
|
-
args << arg
|
712
|
-
|
713
716
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_front_wwr', true)
|
714
717
|
arg.setDisplayName('Windows: Front Window-to-Wall Ratio')
|
715
|
-
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.")
|
716
719
|
arg.setDefaultValue(0.18)
|
717
720
|
args << arg
|
718
721
|
|
719
722
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_back_wwr', true)
|
720
723
|
arg.setDisplayName('Windows: Back Window-to-Wall Ratio')
|
721
|
-
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.")
|
722
725
|
arg.setDefaultValue(0.18)
|
723
726
|
args << arg
|
724
727
|
|
725
728
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_left_wwr', true)
|
726
729
|
arg.setDisplayName('Windows: Left Window-to-Wall Ratio')
|
727
|
-
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.")
|
728
731
|
arg.setDefaultValue(0.18)
|
729
732
|
args << arg
|
730
733
|
|
731
734
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_right_wwr', true)
|
732
735
|
arg.setDisplayName('Windows: Right Window-to-Wall Ratio')
|
733
|
-
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.")
|
734
737
|
arg.setDefaultValue(0.18)
|
735
738
|
args << arg
|
736
739
|
|
737
740
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_front', true)
|
738
741
|
arg.setDisplayName('Windows: Front Window Area')
|
739
|
-
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.")
|
740
743
|
arg.setDefaultValue(0)
|
741
744
|
args << arg
|
742
745
|
|
743
746
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_back', true)
|
744
747
|
arg.setDisplayName('Windows: Back Window Area')
|
745
|
-
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.")
|
746
749
|
arg.setDefaultValue(0)
|
747
750
|
args << arg
|
748
751
|
|
749
752
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_left', true)
|
750
753
|
arg.setDisplayName('Windows: Left Window Area')
|
751
|
-
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.")
|
752
755
|
arg.setDefaultValue(0)
|
753
756
|
args << arg
|
754
757
|
|
755
758
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_area_right', true)
|
756
759
|
arg.setDisplayName('Windows: Right Window Area')
|
757
|
-
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.")
|
758
761
|
arg.setDefaultValue(0)
|
759
762
|
args << arg
|
760
763
|
|
@@ -792,6 +795,16 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
792
795
|
arg.setDescription('Interior shading multiplier for the cooling season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc.')
|
793
796
|
args << arg
|
794
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
|
+
|
795
808
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('overhangs_front_depth', true)
|
796
809
|
arg.setDisplayName('Overhangs: Front Facade Depth')
|
797
810
|
arg.setDescription('Specifies the depth of overhangs for windows on the front facade.')
|
@@ -842,25 +855,25 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
842
855
|
|
843
856
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_front', true)
|
844
857
|
arg.setDisplayName('Skylights: Front Roof Area')
|
845
|
-
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.")
|
846
859
|
arg.setDefaultValue(0)
|
847
860
|
args << arg
|
848
861
|
|
849
862
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_back', true)
|
850
863
|
arg.setDisplayName('Skylights: Back Roof Area')
|
851
|
-
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.")
|
852
865
|
arg.setDefaultValue(0)
|
853
866
|
args << arg
|
854
867
|
|
855
868
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_left', true)
|
856
869
|
arg.setDisplayName('Skylights: Left Roof Area')
|
857
|
-
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).")
|
858
871
|
arg.setDefaultValue(0)
|
859
872
|
args << arg
|
860
873
|
|
861
874
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('skylight_area_right', true)
|
862
875
|
arg.setDisplayName('Skylights: Right Roof Area')
|
863
|
-
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).")
|
864
877
|
arg.setDefaultValue(0)
|
865
878
|
args << arg
|
866
879
|
|
@@ -915,10 +928,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
915
928
|
arg.setDefaultValue(3)
|
916
929
|
args << arg
|
917
930
|
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
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.')
|
922
940
|
arg.setDefaultValue(Constants.Auto)
|
923
941
|
args << arg
|
924
942
|
|
@@ -933,6 +951,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
933
951
|
heating_system_type_choices << HPXML::HVACTypePortableHeater
|
934
952
|
heating_system_type_choices << HPXML::HVACTypeFireplace
|
935
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"
|
936
956
|
|
937
957
|
heating_system_fuel_choices = OpenStudio::StringVector.new
|
938
958
|
heating_system_fuel_choices << HPXML::FuelTypeElectricity
|
@@ -950,6 +970,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
950
970
|
cooling_system_type_choices << HPXML::HVACTypeEvaporativeCooler
|
951
971
|
cooling_system_type_choices << HPXML::HVACTypeMiniSplitAirConditioner
|
952
972
|
|
973
|
+
cooling_efficiency_type_choices = OpenStudio::StringVector.new
|
974
|
+
cooling_efficiency_type_choices << HPXML::UnitsSEER
|
975
|
+
cooling_efficiency_type_choices << HPXML::UnitsEER
|
976
|
+
|
953
977
|
compressor_type_choices = OpenStudio::StringVector.new
|
954
978
|
compressor_type_choices << HPXML::HVACCompressorTypeSingleStage
|
955
979
|
compressor_type_choices << HPXML::HVACCompressorTypeTwoStage
|
@@ -988,16 +1012,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
988
1012
|
arg.setDefaultValue(1)
|
989
1013
|
args << arg
|
990
1014
|
|
991
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
992
|
-
arg.setDisplayName('Heating System:
|
993
|
-
arg.setDescription(
|
994
|
-
arg.setUnits('
|
995
|
-
args << arg
|
996
|
-
|
997
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney', true)
|
998
|
-
arg.setDisplayName('Heating System: Has Flue or Chimney')
|
999
|
-
arg.setDescription('Whether the heating system has a flue or chimney.')
|
1000
|
-
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')
|
1001
1019
|
args << arg
|
1002
1020
|
|
1003
1021
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_type', cooling_system_type_choices, true)
|
@@ -1006,18 +1024,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1006
1024
|
arg.setDefaultValue(HPXML::HVACTypeCentralAirConditioner)
|
1007
1025
|
args << arg
|
1008
1026
|
|
1009
|
-
arg = OpenStudio::Measure::OSArgument::
|
1010
|
-
arg.setDisplayName('Cooling System:
|
1011
|
-
arg.
|
1012
|
-
arg.
|
1013
|
-
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)
|
1014
1031
|
args << arg
|
1015
1032
|
|
1016
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1017
|
-
arg.setDisplayName('Cooling System:
|
1018
|
-
arg.setUnits(
|
1019
|
-
arg.setDescription("The rated efficiency value of the #{HPXML::
|
1020
|
-
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)
|
1021
1038
|
args << arg
|
1022
1039
|
|
1023
1040
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1027,13 +1044,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1027
1044
|
|
1028
1045
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_cooling_sensible_heat_fraction', false)
|
1029
1046
|
arg.setDisplayName('Cooling System: Cooling Sensible Heat Fraction')
|
1030
|
-
arg.setDescription(
|
1047
|
+
arg.setDescription("The sensible heat fraction of the cooling system. Ignored for #{HPXML::HVACTypeEvaporativeCooler}.")
|
1031
1048
|
arg.setUnits('Frac')
|
1032
1049
|
args << arg
|
1033
1050
|
|
1034
1051
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('cooling_system_cooling_capacity', true)
|
1035
1052
|
arg.setDisplayName('Cooling System: Cooling Capacity')
|
1036
|
-
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.")
|
1037
1054
|
arg.setUnits('tons')
|
1038
1055
|
arg.setDefaultValue(Constants.Auto)
|
1039
1056
|
args << arg
|
@@ -1047,16 +1064,32 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1047
1064
|
|
1048
1065
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted', true)
|
1049
1066
|
arg.setDisplayName('Cooling System: Is Ducted')
|
1050
|
-
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}.")
|
1051
1068
|
arg.setDefaultValue(false)
|
1052
1069
|
args << arg
|
1053
1070
|
|
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')
|
1081
|
+
args << arg
|
1082
|
+
|
1054
1083
|
heat_pump_type_choices = OpenStudio::StringVector.new
|
1055
1084
|
heat_pump_type_choices << 'none'
|
1056
1085
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpAirToAir
|
1057
1086
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpMiniSplit
|
1058
1087
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpGroundToAir
|
1059
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
|
+
|
1060
1093
|
heat_pump_fuel_choices = OpenStudio::StringVector.new
|
1061
1094
|
heat_pump_fuel_choices << HPXML::FuelTypeElectricity
|
1062
1095
|
|
@@ -1073,32 +1106,30 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1073
1106
|
arg.setDefaultValue('none')
|
1074
1107
|
args << arg
|
1075
1108
|
|
1076
|
-
arg = OpenStudio::Measure::OSArgument::
|
1077
|
-
arg.setDisplayName('Heat Pump:
|
1078
|
-
arg.
|
1079
|
-
arg.
|
1080
|
-
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)
|
1081
1113
|
args << arg
|
1082
1114
|
|
1083
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1084
|
-
arg.setDisplayName('Heat Pump:
|
1085
|
-
arg.setUnits(
|
1086
|
-
arg.setDescription(
|
1087
|
-
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)
|
1088
1120
|
args << arg
|
1089
1121
|
|
1090
|
-
arg = OpenStudio::Measure::OSArgument::
|
1091
|
-
arg.setDisplayName('Heat Pump:
|
1092
|
-
arg.
|
1093
|
-
arg.
|
1094
|
-
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)
|
1095
1126
|
args << arg
|
1096
1127
|
|
1097
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1098
|
-
arg.setDisplayName('Heat Pump:
|
1099
|
-
arg.setUnits(
|
1100
|
-
arg.setDescription(
|
1101
|
-
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)
|
1102
1133
|
args << arg
|
1103
1134
|
|
1104
1135
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_cooling_compressor_type', compressor_type_choices, false)
|
@@ -1119,7 +1150,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1119
1150
|
arg.setDefaultValue(Constants.Auto)
|
1120
1151
|
args << arg
|
1121
1152
|
|
1122
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
1153
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heat_pump_heating_capacity_17_f', true)
|
1123
1154
|
arg.setDisplayName('Heat Pump: Heating Capacity 17F')
|
1124
1155
|
arg.setDescription("The output heating capacity of the heat pump at 17F. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}.")
|
1125
1156
|
arg.setUnits('Btu/hr')
|
@@ -1168,77 +1199,96 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1168
1199
|
|
1169
1200
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_switchover_temp', false)
|
1170
1201
|
arg.setDisplayName('Heat Pump: Backup Heating Switchover Temperature')
|
1171
|
-
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.')
|
1172
1203
|
arg.setUnits('deg-F')
|
1173
1204
|
args << arg
|
1174
1205
|
|
1175
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('
|
1176
|
-
arg.setDisplayName('Heat Pump:
|
1177
|
-
arg.setDescription(
|
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}.")
|
1178
1209
|
args << arg
|
1179
1210
|
|
1180
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1181
|
-
arg.setDisplayName('Heat Pump:
|
1182
|
-
arg.setDescription(
|
1183
|
-
arg.setUnits('
|
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')
|
1184
1215
|
args << arg
|
1185
1216
|
|
1186
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1187
|
-
arg.setDisplayName('Heat Pump:
|
1188
|
-
arg.setDescription('
|
1189
|
-
arg.setUnits('
|
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')
|
1190
1221
|
args << arg
|
1191
1222
|
|
1192
|
-
|
1193
|
-
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
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
|
1232
|
+
|
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')
|
1197
1237
|
args << arg
|
1198
1238
|
|
1199
|
-
arg = OpenStudio::Measure::OSArgument::
|
1200
|
-
arg.setDisplayName('
|
1201
|
-
arg.setDescription(
|
1202
|
-
arg.
|
1203
|
-
arg.setDefaultValue(71)
|
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)
|
1204
1243
|
args << arg
|
1205
1244
|
|
1206
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1207
|
-
arg.setDisplayName('
|
1208
|
-
arg.
|
1209
|
-
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)
|
1210
1250
|
args << arg
|
1211
1251
|
|
1212
|
-
arg = OpenStudio::Measure::OSArgument::
|
1213
|
-
arg.setDisplayName('
|
1214
|
-
arg.setDescription(
|
1215
|
-
arg.
|
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)
|
1257
|
+
args << arg
|
1258
|
+
|
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)
|
1216
1264
|
args << arg
|
1217
1265
|
|
1218
|
-
arg = OpenStudio::Measure::OSArgument::
|
1219
|
-
arg.setDisplayName('Setpoint:
|
1220
|
-
arg.setDescription('Specify the
|
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.')
|
1221
1269
|
arg.setUnits('deg-F')
|
1222
|
-
arg.setDefaultValue(
|
1270
|
+
arg.setDefaultValue('71')
|
1223
1271
|
args << arg
|
1224
1272
|
|
1225
|
-
arg = OpenStudio::Measure::OSArgument::
|
1226
|
-
arg.setDisplayName('Setpoint:
|
1227
|
-
arg.setDescription('Specify the
|
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.')
|
1228
1276
|
arg.setUnits('deg-F')
|
1229
|
-
arg.setDefaultValue(
|
1277
|
+
arg.setDefaultValue('71')
|
1230
1278
|
args << arg
|
1231
1279
|
|
1232
|
-
arg = OpenStudio::Measure::OSArgument::
|
1233
|
-
arg.setDisplayName('Setpoint:
|
1234
|
-
arg.setDescription('Specify the
|
1235
|
-
arg.
|
1280
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekday', true)
|
1281
|
+
arg.setDisplayName('Cooling Setpoint: Weekday Schedule')
|
1282
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekday cooling schedule.')
|
1283
|
+
arg.setUnits('deg-F')
|
1284
|
+
arg.setDefaultValue('76')
|
1236
1285
|
args << arg
|
1237
1286
|
|
1238
|
-
arg = OpenStudio::Measure::OSArgument::
|
1239
|
-
arg.setDisplayName('Setpoint:
|
1240
|
-
arg.setDescription('Specify the
|
1241
|
-
arg.
|
1287
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekend', true)
|
1288
|
+
arg.setDisplayName('Cooling Setpoint: Weekend Schedule')
|
1289
|
+
arg.setDescription('Specify the constant or 24-hour comma-separated weekend cooling schedule.')
|
1290
|
+
arg.setUnits('deg-F')
|
1291
|
+
arg.setDefaultValue('76')
|
1242
1292
|
args << arg
|
1243
1293
|
|
1244
1294
|
duct_leakage_units_choices = OpenStudio::StringVector.new
|
@@ -1330,65 +1380,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1330
1380
|
|
1331
1381
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('ducts_number_of_return_registers', true)
|
1332
1382
|
arg.setDisplayName('Ducts: Number of Return Registers')
|
1333
|
-
arg.setDescription(
|
1383
|
+
arg.setDescription("The number of return registers of the ducts. Ignored for ducted #{HPXML::HVACTypeEvaporativeCooler}.")
|
1334
1384
|
arg.setUnits('#')
|
1335
1385
|
arg.setDefaultValue(Constants.Auto)
|
1336
1386
|
args << arg
|
1337
1387
|
|
1338
|
-
heating_system_type_2_choices = OpenStudio::StringVector.new
|
1339
|
-
heating_system_type_2_choices << 'none'
|
1340
|
-
heating_system_type_2_choices << HPXML::HVACTypeWallFurnace
|
1341
|
-
heating_system_type_2_choices << HPXML::HVACTypeFloorFurnace
|
1342
|
-
heating_system_type_2_choices << HPXML::HVACTypeElectricResistance
|
1343
|
-
heating_system_type_2_choices << HPXML::HVACTypeStove
|
1344
|
-
heating_system_type_2_choices << HPXML::HVACTypePortableHeater
|
1345
|
-
heating_system_type_2_choices << HPXML::HVACTypeFireplace
|
1346
|
-
|
1347
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_type_2', heating_system_type_2_choices, true)
|
1348
|
-
arg.setDisplayName('Heating System 2: Type')
|
1349
|
-
arg.setDescription('The type of the second heating system.')
|
1350
|
-
arg.setDefaultValue('none')
|
1351
|
-
args << arg
|
1352
|
-
|
1353
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_fuel_2', heating_system_fuel_choices, true)
|
1354
|
-
arg.setDisplayName('Heating System 2: Fuel Type')
|
1355
|
-
arg.setDescription('The fuel type of the second heating system. Ignored for ElectricResistance.')
|
1356
|
-
arg.setDefaultValue(HPXML::FuelTypeElectricity)
|
1357
|
-
args << arg
|
1358
|
-
|
1359
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_heating_efficiency_2', true)
|
1360
|
-
arg.setDisplayName('Heating System 2: Rated AFUE or Percent')
|
1361
|
-
arg.setUnits('Frac')
|
1362
|
-
arg.setDescription('For Furnace/WallFurnace/FloorFurnace/Boiler second heating system, the rated AFUE value. For ElectricResistance/Stove/PortableHeater/Fireplace, the rated Percent value.')
|
1363
|
-
arg.setDefaultValue(1.0)
|
1364
|
-
args << arg
|
1365
|
-
|
1366
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('heating_system_heating_capacity_2', true)
|
1367
|
-
arg.setDisplayName('Heating System 2: Heating Capacity')
|
1368
|
-
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.")
|
1369
|
-
arg.setUnits('Btu/hr')
|
1370
|
-
arg.setDefaultValue(Constants.Auto)
|
1371
|
-
args << arg
|
1372
|
-
|
1373
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fraction_heat_load_served_2', true)
|
1374
|
-
arg.setDisplayName('Heating System 2: Fraction Heat Load Served')
|
1375
|
-
arg.setDescription('The heat load served fraction of the second heating system.')
|
1376
|
-
arg.setUnits('Frac')
|
1377
|
-
arg.setDefaultValue(0.25)
|
1378
|
-
args << arg
|
1379
|
-
|
1380
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_electric_auxiliary_energy_2', false)
|
1381
|
-
arg.setDisplayName('Heating System 2: Electric Auxiliary Energy')
|
1382
|
-
arg.setDescription('The electric auxiliary energy of the second heating system.')
|
1383
|
-
arg.setUnits('kWh/yr')
|
1384
|
-
args << arg
|
1385
|
-
|
1386
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney_2', true)
|
1387
|
-
arg.setDisplayName('Heating System 2: Has Flue or Chimney')
|
1388
|
-
arg.setDescription('Whether the second heating system has a flue or chimney.')
|
1389
|
-
arg.setDefaultValue(false)
|
1390
|
-
args << arg
|
1391
|
-
|
1392
1388
|
mech_vent_fan_type_choices = OpenStudio::StringVector.new
|
1393
1389
|
mech_vent_fan_type_choices << 'none'
|
1394
1390
|
mech_vent_fan_type_choices << HPXML::MechVentTypeExhaust
|
@@ -1418,11 +1414,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1418
1414
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation', true)
|
1419
1415
|
arg.setDisplayName('Mechanical Ventilation: Hours In Operation')
|
1420
1416
|
arg.setDescription('The hours in operation of the mechanical ventilation.')
|
1421
|
-
arg.setUnits('hrs')
|
1417
|
+
arg.setUnits('hrs/day')
|
1422
1418
|
arg.setDefaultValue(24)
|
1423
1419
|
args << arg
|
1424
1420
|
|
1425
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1421
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true)
|
1426
1422
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency Type')
|
1427
1423
|
arg.setDescription('The total recovery efficiency type of the mechanical ventilation.')
|
1428
1424
|
arg.setDefaultValue('Unadjusted')
|
@@ -1430,20 +1426,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1430
1426
|
|
1431
1427
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency', true)
|
1432
1428
|
arg.setDisplayName('Mechanical Ventilation: Total Recovery Efficiency')
|
1433
|
-
arg.setDescription(
|
1429
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1434
1430
|
arg.setUnits('Frac')
|
1435
1431
|
arg.setDefaultValue(0.48)
|
1436
1432
|
args << arg
|
1437
1433
|
|
1438
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_sensible_recovery_efficiency_type', mech_vent_recovery_efficiency_type_choices, true)
|
1439
|
-
arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency Type')
|
1440
|
-
arg.setDescription('The sensible recovery efficiency type of the mechanical ventilation.')
|
1441
|
-
arg.setDefaultValue('Unadjusted')
|
1442
|
-
args << arg
|
1443
|
-
|
1444
1434
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency', true)
|
1445
1435
|
arg.setDisplayName('Mechanical Ventilation: Sensible Recovery Efficiency')
|
1446
|
-
arg.setDescription(
|
1436
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1447
1437
|
arg.setUnits('Frac')
|
1448
1438
|
arg.setDefaultValue(0.72)
|
1449
1439
|
args << arg
|
@@ -1455,16 +1445,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1455
1445
|
arg.setDefaultValue(30)
|
1456
1446
|
args << arg
|
1457
1447
|
|
1458
|
-
arg = OpenStudio::Measure::OSArgument::
|
1459
|
-
arg.setDisplayName('Mechanical Ventilation:
|
1460
|
-
arg.setDescription(
|
1461
|
-
arg.
|
1462
|
-
|
1463
|
-
|
1464
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_in_unit_flow_rate', false)
|
1465
|
-
arg.setDisplayName('Shared Mechanical Ventilation: In-Unit Flow Rate')
|
1466
|
-
arg.setDescription('The flow rate delivered to the dwelling unit. This is required for a shared mechanical ventilation system.')
|
1467
|
-
arg.setUnits('CFM')
|
1448
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('mech_vent_num_units_served', true)
|
1449
|
+
arg.setDisplayName('Mechanical Ventilation: Number of Units Served')
|
1450
|
+
arg.setDescription("Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.")
|
1451
|
+
arg.setUnits('#')
|
1452
|
+
arg.setDefaultValue(1)
|
1468
1453
|
args << arg
|
1469
1454
|
|
1470
1455
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_frac_recirculation', false)
|
@@ -1475,12 +1460,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1475
1460
|
|
1476
1461
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_preheating_fuel', heating_system_fuel_choices, false)
|
1477
1462
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Fuel')
|
1478
|
-
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.')
|
1479
1464
|
args << arg
|
1480
1465
|
|
1481
1466
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_preheating_efficiency', false)
|
1482
1467
|
arg.setDisplayName('Shared Mechanical Ventilation: Preheating Efficiency')
|
1483
|
-
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.')
|
1484
1469
|
arg.setUnits('COP')
|
1485
1470
|
args << arg
|
1486
1471
|
|
@@ -1495,12 +1480,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1495
1480
|
|
1496
1481
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('shared_mech_vent_precooling_fuel', cooling_system_fuel_choices, false)
|
1497
1482
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Fuel')
|
1498
|
-
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.')
|
1499
1484
|
args << arg
|
1500
1485
|
|
1501
1486
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_precooling_efficiency', false)
|
1502
1487
|
arg.setDisplayName('Shared Mechanical Ventilation: Precooling Efficiency')
|
1503
|
-
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.')
|
1504
1489
|
arg.setUnits('COP')
|
1505
1490
|
args << arg
|
1506
1491
|
|
@@ -1510,7 +1495,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1510
1495
|
arg.setUnits('Frac')
|
1511
1496
|
args << arg
|
1512
1497
|
|
1513
|
-
|
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)
|
1514
1507
|
arg.setDisplayName('Mechanical Ventilation 2: Fan Type')
|
1515
1508
|
arg.setDescription("The type of the second mechanical ventilation. Use 'none' if there is no second mechanical ventilation system.")
|
1516
1509
|
arg.setDefaultValue('none')
|
@@ -1526,11 +1519,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1526
1519
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_hours_in_operation_2', true)
|
1527
1520
|
arg.setDisplayName('Mechanical Ventilation 2: Hours In Operation')
|
1528
1521
|
arg.setDescription('The hours in operation of the second mechanical ventilation.')
|
1529
|
-
arg.setUnits('hrs')
|
1522
|
+
arg.setUnits('hrs/day')
|
1530
1523
|
arg.setDefaultValue(24)
|
1531
1524
|
args << arg
|
1532
1525
|
|
1533
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('
|
1526
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_recovery_efficiency_type_2', mech_vent_recovery_efficiency_type_choices, true)
|
1534
1527
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency Type')
|
1535
1528
|
arg.setDescription('The total recovery efficiency type of the second mechanical ventilation.')
|
1536
1529
|
arg.setDefaultValue('Unadjusted')
|
@@ -1538,20 +1531,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1538
1531
|
|
1539
1532
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_total_recovery_efficiency_2', true)
|
1540
1533
|
arg.setDisplayName('Mechanical Ventilation 2: Total Recovery Efficiency')
|
1541
|
-
arg.setDescription(
|
1534
|
+
arg.setDescription("The Unadjusted or Adjusted total recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV}.")
|
1542
1535
|
arg.setUnits('Frac')
|
1543
1536
|
arg.setDefaultValue(0.48)
|
1544
1537
|
args << arg
|
1545
1538
|
|
1546
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('mech_vent_sensible_recovery_efficiency_type_2', mech_vent_recovery_efficiency_type_choices, true)
|
1547
|
-
arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency Type')
|
1548
|
-
arg.setDescription('The sensible recovery efficiency type of the second mechanical ventilation.')
|
1549
|
-
arg.setDefaultValue('Unadjusted')
|
1550
|
-
args << arg
|
1551
|
-
|
1552
1539
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('mech_vent_sensible_recovery_efficiency_2', true)
|
1553
1540
|
arg.setDisplayName('Mechanical Ventilation 2: Sensible Recovery Efficiency')
|
1554
|
-
arg.setDescription(
|
1541
|
+
arg.setDescription("The Unadjusted or Adjusted sensible recovery efficiency of the second mechanical ventilation. Applies to #{HPXML::MechVentTypeERV} and #{HPXML::MechVentTypeHRV}.")
|
1555
1542
|
arg.setUnits('Frac')
|
1556
1543
|
arg.setDefaultValue(0.72)
|
1557
1544
|
args << arg
|
@@ -1563,76 +1550,74 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1563
1550
|
arg.setDefaultValue(30)
|
1564
1551
|
args << arg
|
1565
1552
|
|
1566
|
-
arg = OpenStudio::Measure::OSArgument::
|
1567
|
-
arg.setDisplayName('Kitchen Fans: Present')
|
1568
|
-
arg.setDescription('Whether there are kitchen fans.')
|
1569
|
-
arg.setDefaultValue(false)
|
1570
|
-
args << arg
|
1571
|
-
|
1572
|
-
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('kitchen_fans_quantity', false)
|
1553
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_quantity', true)
|
1573
1554
|
arg.setDisplayName('Kitchen Fans: Quantity')
|
1574
1555
|
arg.setDescription('The quantity of the kitchen fans.')
|
1575
1556
|
arg.setUnits('#')
|
1557
|
+
arg.setDefaultValue(Constants.Auto)
|
1576
1558
|
args << arg
|
1577
1559
|
|
1578
|
-
arg = OpenStudio::Measure::OSArgument::
|
1560
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_flow_rate', false)
|
1579
1561
|
arg.setDisplayName('Kitchen Fans: Flow Rate')
|
1580
1562
|
arg.setDescription('The flow rate of the kitchen fan.')
|
1581
1563
|
arg.setUnits('CFM')
|
1564
|
+
arg.setDefaultValue(Constants.Auto)
|
1582
1565
|
args << arg
|
1583
1566
|
|
1584
|
-
arg = OpenStudio::Measure::OSArgument::
|
1567
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_hours_in_operation', false)
|
1585
1568
|
arg.setDisplayName('Kitchen Fans: Hours In Operation')
|
1586
1569
|
arg.setDescription('The hours in operation of the kitchen fan.')
|
1587
|
-
arg.setUnits('hrs')
|
1570
|
+
arg.setUnits('hrs/day')
|
1571
|
+
arg.setDefaultValue(Constants.Auto)
|
1588
1572
|
args << arg
|
1589
1573
|
|
1590
|
-
arg = OpenStudio::Measure::OSArgument::
|
1574
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_power', false)
|
1591
1575
|
arg.setDisplayName('Kitchen Fans: Fan Power')
|
1592
1576
|
arg.setDescription('The fan power of the kitchen fan.')
|
1593
1577
|
arg.setUnits('W')
|
1578
|
+
arg.setDefaultValue(Constants.Auto)
|
1594
1579
|
args << arg
|
1595
1580
|
|
1596
|
-
arg = OpenStudio::Measure::OSArgument::
|
1581
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('kitchen_fans_start_hour', false)
|
1597
1582
|
arg.setDisplayName('Kitchen Fans: Start Hour')
|
1598
1583
|
arg.setDescription('The start hour of the kitchen fan.')
|
1599
1584
|
arg.setUnits('hr')
|
1585
|
+
arg.setDefaultValue(Constants.Auto)
|
1600
1586
|
args << arg
|
1601
1587
|
|
1602
|
-
arg = OpenStudio::Measure::OSArgument::
|
1603
|
-
arg.setDisplayName('Bathroom Fans: Present')
|
1604
|
-
arg.setDescription('Whether there are bathroom fans.')
|
1605
|
-
arg.setDefaultValue(false)
|
1606
|
-
args << arg
|
1607
|
-
|
1608
|
-
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('bathroom_fans_quantity', false)
|
1588
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_quantity', true)
|
1609
1589
|
arg.setDisplayName('Bathroom Fans: Quantity')
|
1610
1590
|
arg.setDescription('The quantity of the bathroom fans.')
|
1611
1591
|
arg.setUnits('#')
|
1592
|
+
arg.setDefaultValue(Constants.Auto)
|
1612
1593
|
args << arg
|
1613
1594
|
|
1614
|
-
arg = OpenStudio::Measure::OSArgument::
|
1595
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_flow_rate', false)
|
1615
1596
|
arg.setDisplayName('Bathroom Fans: Flow Rate')
|
1616
1597
|
arg.setDescription('The flow rate of the bathroom fans.')
|
1617
1598
|
arg.setUnits('CFM')
|
1599
|
+
arg.setDefaultValue(Constants.Auto)
|
1618
1600
|
args << arg
|
1619
1601
|
|
1620
|
-
arg = OpenStudio::Measure::OSArgument::
|
1602
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_hours_in_operation', false)
|
1621
1603
|
arg.setDisplayName('Bathroom Fans: Hours In Operation')
|
1622
1604
|
arg.setDescription('The hours in operation of the bathroom fans.')
|
1623
|
-
arg.setUnits('hrs')
|
1605
|
+
arg.setUnits('hrs/day')
|
1606
|
+
arg.setDefaultValue(Constants.Auto)
|
1624
1607
|
args << arg
|
1625
1608
|
|
1626
|
-
arg = OpenStudio::Measure::OSArgument::
|
1609
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_power', false)
|
1627
1610
|
arg.setDisplayName('Bathroom Fans: Fan Power')
|
1628
1611
|
arg.setDescription('The fan power of the bathroom fans.')
|
1629
1612
|
arg.setUnits('W')
|
1613
|
+
arg.setDefaultValue(Constants.Auto)
|
1630
1614
|
args << arg
|
1631
1615
|
|
1632
|
-
arg = OpenStudio::Measure::OSArgument::
|
1616
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('bathroom_fans_start_hour', false)
|
1633
1617
|
arg.setDisplayName('Bathroom Fans: Start Hour')
|
1634
1618
|
arg.setDescription('The start hour of the bathroom fans.')
|
1635
1619
|
arg.setUnits('hr')
|
1620
|
+
arg.setDefaultValue(Constants.Auto)
|
1636
1621
|
args << arg
|
1637
1622
|
|
1638
1623
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('whole_house_fan_present', true)
|
@@ -1711,34 +1696,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1711
1696
|
|
1712
1697
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_tank_volume', true)
|
1713
1698
|
arg.setDisplayName('Water Heater: Tank Volume')
|
1714
|
-
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}.")
|
1715
1700
|
arg.setUnits('gal')
|
1716
1701
|
arg.setDefaultValue(Constants.Auto)
|
1717
1702
|
args << arg
|
1718
1703
|
|
1719
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_heating_capacity', true)
|
1720
|
-
arg.setDisplayName('Water Heater: Input Capacity')
|
1721
|
-
arg.setDescription("The maximum energy input rating of water heater. Set to #{Constants.Auto} to have this field autosized. Only applies to #{HPXML::WaterHeaterTypeStorage}.")
|
1722
|
-
arg.setUnits('Btu/hr')
|
1723
|
-
arg.setDefaultValue(Constants.Auto)
|
1724
|
-
args << arg
|
1725
|
-
|
1726
1704
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_efficiency_type', water_heater_efficiency_type_choices, true)
|
1727
1705
|
arg.setDisplayName('Water Heater: Efficiency Type')
|
1728
1706
|
arg.setDescription('The efficiency type of water heater. Does not apply to space-heating boilers.')
|
1729
1707
|
arg.setDefaultValue('EnergyFactor')
|
1730
1708
|
args << arg
|
1731
1709
|
|
1732
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1733
|
-
arg.setDisplayName('Water Heater:
|
1734
|
-
arg.setDescription('
|
1710
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_efficiency', true)
|
1711
|
+
arg.setDisplayName('Water Heater: Efficiency')
|
1712
|
+
arg.setDescription('Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.')
|
1735
1713
|
arg.setDefaultValue(0.67)
|
1736
1714
|
args << arg
|
1737
1715
|
|
1738
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1739
|
-
arg.setDisplayName('Water Heater:
|
1740
|
-
arg.setDescription(
|
1741
|
-
arg.
|
1716
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_first_hour_rating', false)
|
1717
|
+
arg.setDisplayName('Water Heater: First Hour Rating')
|
1718
|
+
arg.setDescription("Rated gallons of hot water supplied in an hour. Required if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers.")
|
1719
|
+
arg.setUnits('gal/hr')
|
1720
|
+
arg.setDefaultValue(56.0)
|
1742
1721
|
args << arg
|
1743
1722
|
|
1744
1723
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_recovery_efficiency', true)
|
@@ -1767,22 +1746,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1767
1746
|
arg.setDefaultValue(Constants.Auto)
|
1768
1747
|
args << arg
|
1769
1748
|
|
1770
|
-
arg = OpenStudio::Measure::OSArgument::
|
1771
|
-
arg.setDisplayName('Water Heater:
|
1772
|
-
arg.setDescription("
|
1773
|
-
arg.setUnits('
|
1774
|
-
|
1775
|
-
|
1776
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_has_flue_or_chimney', true)
|
1777
|
-
arg.setDisplayName('Water Heater: Has Flue or Chimney')
|
1778
|
-
arg.setDescription('Whether the water heater has a flue or chimney.')
|
1779
|
-
arg.setDefaultValue(false)
|
1780
|
-
args << arg
|
1781
|
-
|
1782
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_is_shared_system', true)
|
1783
|
-
arg.setDisplayName('Water Heater: Is Shared System')
|
1784
|
-
arg.setDescription('Whether the water heater is a shared system. If true, assumed to serve all the units in the building.')
|
1785
|
-
arg.setDefaultValue(false)
|
1749
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('water_heater_num_units_served', true)
|
1750
|
+
arg.setDisplayName('Water Heater: Number of Units Served')
|
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.")
|
1752
|
+
arg.setUnits('#')
|
1753
|
+
arg.setDefaultValue(1)
|
1786
1754
|
args << arg
|
1787
1755
|
|
1788
1756
|
dhw_distribution_system_type_choices = OpenStudio::StringVector.new
|
@@ -1836,11 +1804,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1836
1804
|
arg.setDefaultValue(Constants.Auto)
|
1837
1805
|
args << arg
|
1838
1806
|
|
1839
|
-
arg = OpenStudio::Measure::OSArgument::
|
1807
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dhw_distribution_pipe_r', true)
|
1840
1808
|
arg.setDisplayName('Hot Water Distribution: Pipe Insulation Nominal R-Value')
|
1841
1809
|
arg.setUnits('h-ft^2-R/Btu')
|
1842
1810
|
arg.setDescription('Nominal R-value of the pipe insulation.')
|
1843
|
-
arg.setDefaultValue(
|
1811
|
+
arg.setDefaultValue(Constants.Auto)
|
1844
1812
|
args << arg
|
1845
1813
|
|
1846
1814
|
dwhr_facilities_connected_choices = OpenStudio::StringVector.new
|
@@ -1850,7 +1818,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1850
1818
|
|
1851
1819
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dwhr_facilities_connected', dwhr_facilities_connected_choices, true)
|
1852
1820
|
arg.setDisplayName('Drain Water Heat Recovery: Facilities Connected')
|
1853
|
-
arg.setDescription("Which facilities are connected for the drain water heat recovery. Use 'none' if there is no
|
1821
|
+
arg.setDescription("Which facilities are connected for the drain water heat recovery. Use 'none' if there is no drain water heat recovery system.")
|
1854
1822
|
arg.setDefaultValue('none')
|
1855
1823
|
args << arg
|
1856
1824
|
|
@@ -1969,15 +1937,18 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1969
1937
|
|
1970
1938
|
pv_system_module_type_choices = OpenStudio::StringVector.new
|
1971
1939
|
pv_system_module_type_choices << 'none'
|
1940
|
+
pv_system_module_type_choices << Constants.Auto
|
1972
1941
|
pv_system_module_type_choices << HPXML::PVModuleTypeStandard
|
1973
1942
|
pv_system_module_type_choices << HPXML::PVModuleTypePremium
|
1974
1943
|
pv_system_module_type_choices << HPXML::PVModuleTypeThinFilm
|
1975
1944
|
|
1976
1945
|
pv_system_location_choices = OpenStudio::StringVector.new
|
1946
|
+
pv_system_location_choices << Constants.Auto
|
1977
1947
|
pv_system_location_choices << HPXML::LocationRoof
|
1978
1948
|
pv_system_location_choices << HPXML::LocationGround
|
1979
1949
|
|
1980
1950
|
pv_system_tracking_choices = OpenStudio::StringVector.new
|
1951
|
+
pv_system_tracking_choices << Constants.Auto
|
1981
1952
|
pv_system_tracking_choices << HPXML::PVTrackingTypeFixed
|
1982
1953
|
pv_system_tracking_choices << HPXML::PVTrackingType1Axis
|
1983
1954
|
pv_system_tracking_choices << HPXML::PVTrackingType1AxisBacktracked
|
@@ -1992,13 +1963,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1992
1963
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_location_1', pv_system_location_choices, true)
|
1993
1964
|
arg.setDisplayName('Photovoltaics 1: Location')
|
1994
1965
|
arg.setDescription('Location of the PV system 1.')
|
1995
|
-
arg.setDefaultValue(
|
1966
|
+
arg.setDefaultValue(Constants.Auto)
|
1996
1967
|
args << arg
|
1997
1968
|
|
1998
1969
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_tracking_1', pv_system_tracking_choices, true)
|
1999
1970
|
arg.setDisplayName('Photovoltaics 1: Tracking')
|
2000
1971
|
arg.setDescription('Tracking of the PV system 1.')
|
2001
|
-
arg.setDefaultValue(
|
1972
|
+
arg.setDefaultValue(Constants.Auto)
|
2002
1973
|
args << arg
|
2003
1974
|
|
2004
1975
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth_1', true)
|
@@ -2034,10 +2005,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2034
2005
|
arg.setDescription('System losses fraction of the PV system 1.')
|
2035
2006
|
args << arg
|
2036
2007
|
|
2037
|
-
arg = OpenStudio::Measure::OSArgument::
|
2038
|
-
arg.setDisplayName('Photovoltaics 1:
|
2039
|
-
arg.setDescription(
|
2040
|
-
arg.
|
2008
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('pv_system_num_units_served_1', true)
|
2009
|
+
arg.setDisplayName('Photovoltaics 1: Number of Units Served')
|
2010
|
+
arg.setDescription("Number of dwelling units served by PV system 1. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion PV generation to the unit.")
|
2011
|
+
arg.setUnits('#')
|
2012
|
+
arg.setDefaultValue(1)
|
2041
2013
|
args << arg
|
2042
2014
|
|
2043
2015
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_module_type_2', pv_system_module_type_choices, true)
|
@@ -2049,13 +2021,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2049
2021
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_location_2', pv_system_location_choices, true)
|
2050
2022
|
arg.setDisplayName('Photovoltaics 2: Location')
|
2051
2023
|
arg.setDescription('Location of the PV system 2.')
|
2052
|
-
arg.setDefaultValue(
|
2024
|
+
arg.setDefaultValue(Constants.Auto)
|
2053
2025
|
args << arg
|
2054
2026
|
|
2055
2027
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_tracking_2', pv_system_tracking_choices, true)
|
2056
2028
|
arg.setDisplayName('Photovoltaics 2: Tracking')
|
2057
2029
|
arg.setDescription('Tracking of the PV system 2.')
|
2058
|
-
arg.setDefaultValue(
|
2030
|
+
arg.setDefaultValue(Constants.Auto)
|
2059
2031
|
args << arg
|
2060
2032
|
|
2061
2033
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth_2', true)
|
@@ -2091,10 +2063,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2091
2063
|
arg.setDescription('System losses fraction of the PV system 2.')
|
2092
2064
|
args << arg
|
2093
2065
|
|
2094
|
-
arg = OpenStudio::Measure::OSArgument::
|
2095
|
-
arg.setDisplayName('Photovoltaics 2:
|
2096
|
-
arg.setDescription(
|
2097
|
-
arg.
|
2066
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('pv_system_num_units_served_2', true)
|
2067
|
+
arg.setDisplayName('Photovoltaics 2: Number of Units Served')
|
2068
|
+
arg.setDescription("Number of dwelling units served by PV system 2. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion PV generation to the unit.")
|
2069
|
+
arg.setUnits('#')
|
2070
|
+
arg.setDefaultValue(1)
|
2098
2071
|
args << arg
|
2099
2072
|
|
2100
2073
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_fraction_cfl_interior', true)
|
@@ -2210,33 +2183,31 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2210
2183
|
arg.setDefaultValue(Constants.Auto)
|
2211
2184
|
args << arg
|
2212
2185
|
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2217
|
-
args << arg
|
2186
|
+
dehumidifier_type_choices = OpenStudio::StringVector.new
|
2187
|
+
dehumidifier_type_choices << 'none'
|
2188
|
+
dehumidifier_type_choices << HPXML::DehumidifierTypePortable
|
2189
|
+
dehumidifier_type_choices << HPXML::DehumidifierTypeWholeHome
|
2218
2190
|
|
2219
2191
|
dehumidifier_efficiency_type_choices = OpenStudio::StringVector.new
|
2220
2192
|
dehumidifier_efficiency_type_choices << 'EnergyFactor'
|
2221
2193
|
dehumidifier_efficiency_type_choices << 'IntegratedEnergyFactor'
|
2222
2194
|
|
2195
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, true)
|
2196
|
+
arg.setDisplayName('Dehumidifier: Type')
|
2197
|
+
arg.setDescription('The type of dehumidifier.')
|
2198
|
+
arg.setDefaultValue('none')
|
2199
|
+
args << arg
|
2200
|
+
|
2223
2201
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, true)
|
2224
2202
|
arg.setDisplayName('Dehumidifier: Efficiency Type')
|
2225
2203
|
arg.setDescription('The efficiency type of dehumidifier.')
|
2226
|
-
arg.setDefaultValue('
|
2227
|
-
args << arg
|
2228
|
-
|
2229
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency_ef', true)
|
2230
|
-
arg.setDisplayName('Dehumidifier: Energy Factor')
|
2231
|
-
arg.setUnits('liters/kWh')
|
2232
|
-
arg.setDescription('The Energy Factor (EF) of the dehumidifier.')
|
2233
|
-
arg.setDefaultValue(1.8)
|
2204
|
+
arg.setDefaultValue('IntegratedEnergyFactor')
|
2234
2205
|
args << arg
|
2235
2206
|
|
2236
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
2237
|
-
arg.setDisplayName('Dehumidifier:
|
2207
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dehumidifier_efficiency', true)
|
2208
|
+
arg.setDisplayName('Dehumidifier: Efficiency')
|
2238
2209
|
arg.setUnits('liters/kWh')
|
2239
|
-
arg.setDescription('The
|
2210
|
+
arg.setDescription('The efficiency of the dehumidifier.')
|
2240
2211
|
arg.setDefaultValue(1.5)
|
2241
2212
|
args << arg
|
2242
2213
|
|
@@ -2261,14 +2232,9 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2261
2232
|
arg.setDefaultValue(1)
|
2262
2233
|
args << arg
|
2263
2234
|
|
2264
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_washer_present', true)
|
2265
|
-
arg.setDisplayName('Clothes Washer: Present')
|
2266
|
-
arg.setDescription('Whether there is a clothes washer.')
|
2267
|
-
arg.setDefaultValue(true)
|
2268
|
-
args << arg
|
2269
|
-
|
2270
2235
|
appliance_location_choices = OpenStudio::StringVector.new
|
2271
2236
|
appliance_location_choices << Constants.Auto
|
2237
|
+
appliance_location_choices << 'none'
|
2272
2238
|
appliance_location_choices << HPXML::LocationLivingSpace
|
2273
2239
|
appliance_location_choices << HPXML::LocationBasementConditioned
|
2274
2240
|
appliance_location_choices << HPXML::LocationBasementUnconditioned
|
@@ -2290,21 +2256,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2290
2256
|
|
2291
2257
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_washer_efficiency_type', clothes_washer_efficiency_type_choices, true)
|
2292
2258
|
arg.setDisplayName('Clothes Washer: Efficiency Type')
|
2293
|
-
arg.setDescription('The efficiency type of clothes washer.')
|
2259
|
+
arg.setDescription('The efficiency type of the clothes washer.')
|
2294
2260
|
arg.setDefaultValue('IntegratedModifiedEnergyFactor')
|
2295
2261
|
args << arg
|
2296
2262
|
|
2297
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
2298
|
-
arg.setDisplayName('Clothes Washer:
|
2299
|
-
arg.setUnits('ft^3/kWh-cycle')
|
2300
|
-
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.')
|
2301
|
-
arg.setDefaultValue(Constants.Auto)
|
2302
|
-
args << arg
|
2303
|
-
|
2304
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_washer_efficiency_imef', true)
|
2305
|
-
arg.setDisplayName('Clothes Washer: Integrated Modified Energy Factor')
|
2263
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_washer_efficiency', true)
|
2264
|
+
arg.setDisplayName('Clothes Washer: Efficiency')
|
2306
2265
|
arg.setUnits('ft^3/kWh-cyc')
|
2307
|
-
arg.setDescription('The
|
2266
|
+
arg.setDescription('The efficiency of the clothes washer.')
|
2308
2267
|
arg.setDefaultValue(Constants.Auto)
|
2309
2268
|
args << arg
|
2310
2269
|
|
@@ -2356,12 +2315,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2356
2315
|
arg.setDefaultValue(1.0)
|
2357
2316
|
args << arg
|
2358
2317
|
|
2359
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('clothes_dryer_present', true)
|
2360
|
-
arg.setDisplayName('Clothes Dryer: Present')
|
2361
|
-
arg.setDescription('Whether there is a clothes dryer.')
|
2362
|
-
arg.setDefaultValue(true)
|
2363
|
-
args << arg
|
2364
|
-
|
2365
2318
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_location', appliance_location_choices, true)
|
2366
2319
|
arg.setDisplayName('Clothes Dryer: Location')
|
2367
2320
|
arg.setDescription('The space type for the clothes dryer location.')
|
@@ -2376,11 +2329,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2376
2329
|
clothes_dryer_fuel_choices << HPXML::FuelTypeWoodCord
|
2377
2330
|
clothes_dryer_fuel_choices << HPXML::FuelTypeCoal
|
2378
2331
|
|
2379
|
-
clothes_dryer_control_type_choices = OpenStudio::StringVector.new
|
2380
|
-
clothes_dryer_control_type_choices << Constants.Auto
|
2381
|
-
clothes_dryer_control_type_choices << HPXML::ClothesDryerControlTypeTimer
|
2382
|
-
clothes_dryer_control_type_choices << HPXML::ClothesDryerControlTypeMoisture
|
2383
|
-
|
2384
2332
|
clothes_dryer_efficiency_type_choices = OpenStudio::StringVector.new
|
2385
2333
|
clothes_dryer_efficiency_type_choices << 'EnergyFactor'
|
2386
2334
|
clothes_dryer_efficiency_type_choices << 'CombinedEnergyFactor'
|
@@ -2393,27 +2341,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2393
2341
|
|
2394
2342
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_efficiency_type', clothes_dryer_efficiency_type_choices, true)
|
2395
2343
|
arg.setDisplayName('Clothes Dryer: Efficiency Type')
|
2396
|
-
arg.setDescription('The efficiency type of clothes dryer.')
|
2344
|
+
arg.setDescription('The efficiency type of the clothes dryer.')
|
2397
2345
|
arg.setDefaultValue('CombinedEnergyFactor')
|
2398
2346
|
args << arg
|
2399
2347
|
|
2400
|
-
arg = OpenStudio::Measure::OSArgument::
|
2401
|
-
arg.setDisplayName('Clothes Dryer:
|
2348
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_dryer_efficiency', true)
|
2349
|
+
arg.setDisplayName('Clothes Dryer: Efficiency')
|
2402
2350
|
arg.setUnits('lb/kWh')
|
2403
|
-
arg.setDescription('The
|
2404
|
-
arg.setDefaultValue(3.4615)
|
2405
|
-
args << arg
|
2406
|
-
|
2407
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('clothes_dryer_efficiency_cef', true)
|
2408
|
-
arg.setDisplayName('Clothes Dryer: Combined Energy Factor')
|
2409
|
-
arg.setUnits('lb/kWh')
|
2410
|
-
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.')
|
2411
|
-
arg.setDefaultValue(Constants.Auto)
|
2412
|
-
args << arg
|
2413
|
-
|
2414
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('clothes_dryer_control_type', clothes_dryer_control_type_choices, true)
|
2415
|
-
arg.setDisplayName('Clothes Dryer: Control Type')
|
2416
|
-
arg.setDescription('Type of control used by the clothes dryer.')
|
2351
|
+
arg.setDescription('The efficiency of the clothes dryer.')
|
2417
2352
|
arg.setDefaultValue(Constants.Auto)
|
2418
2353
|
args << arg
|
2419
2354
|
|
@@ -2430,12 +2365,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2430
2365
|
arg.setDefaultValue(1.0)
|
2431
2366
|
args << arg
|
2432
2367
|
|
2433
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dishwasher_present', true)
|
2434
|
-
arg.setDisplayName('Dishwasher: Present')
|
2435
|
-
arg.setDescription('Whether there is a dishwasher.')
|
2436
|
-
arg.setDefaultValue(true)
|
2437
|
-
args << arg
|
2438
|
-
|
2439
2368
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dishwasher_location', appliance_location_choices, true)
|
2440
2369
|
arg.setDisplayName('Dishwasher: Location')
|
2441
2370
|
arg.setDescription('The space type for the dishwasher location.')
|
@@ -2452,19 +2381,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2452
2381
|
arg.setDefaultValue('RatedAnnualkWh')
|
2453
2382
|
args << arg
|
2454
2383
|
|
2455
|
-
arg = OpenStudio::Measure::OSArgument::makeStringArgument('
|
2456
|
-
arg.setDisplayName('Dishwasher:
|
2457
|
-
arg.setUnits('
|
2458
|
-
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.')
|
2459
2388
|
arg.setDefaultValue(Constants.Auto)
|
2460
2389
|
args << arg
|
2461
2390
|
|
2462
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dishwasher_efficiency_ef', true)
|
2463
|
-
arg.setDisplayName('Dishwasher: Energy Factor')
|
2464
|
-
arg.setDescription('The energy factor of the dishwasher.')
|
2465
|
-
arg.setDefaultValue(0.46)
|
2466
|
-
args << arg
|
2467
|
-
|
2468
2391
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dishwasher_label_electric_rate', true)
|
2469
2392
|
arg.setDisplayName('Dishwasher: Label Electric Rate')
|
2470
2393
|
arg.setUnits('$/kWh')
|
@@ -2506,12 +2429,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2506
2429
|
arg.setDefaultValue(1.0)
|
2507
2430
|
args << arg
|
2508
2431
|
|
2509
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('refrigerator_present', true)
|
2510
|
-
arg.setDisplayName('Refrigerator: Present')
|
2511
|
-
arg.setDescription('Whether there is a refrigerator.')
|
2512
|
-
arg.setDefaultValue(true)
|
2513
|
-
args << arg
|
2514
|
-
|
2515
2432
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('refrigerator_location', appliance_location_choices, true)
|
2516
2433
|
arg.setDisplayName('Refrigerator: Location')
|
2517
2434
|
arg.setDescription('The space type for the refrigerator location.')
|
@@ -2531,12 +2448,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2531
2448
|
arg.setDefaultValue(1.0)
|
2532
2449
|
args << arg
|
2533
2450
|
|
2534
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('extra_refrigerator_present', true)
|
2535
|
-
arg.setDisplayName('Extra Refrigerator: Present')
|
2536
|
-
arg.setDescription('Whether there is an extra refrigerator.')
|
2537
|
-
arg.setDefaultValue(false)
|
2538
|
-
args << arg
|
2539
|
-
|
2540
2451
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('extra_refrigerator_location', appliance_location_choices, true)
|
2541
2452
|
arg.setDisplayName('Extra Refrigerator: Location')
|
2542
2453
|
arg.setDescription('The space type for the extra refrigerator location.')
|
@@ -2556,12 +2467,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2556
2467
|
arg.setDefaultValue(1.0)
|
2557
2468
|
args << arg
|
2558
2469
|
|
2559
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('freezer_present', true)
|
2560
|
-
arg.setDisplayName('Freezer: Present')
|
2561
|
-
arg.setDescription('Whether there is a freezer.')
|
2562
|
-
arg.setDefaultValue(false)
|
2563
|
-
args << arg
|
2564
|
-
|
2565
2470
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('freezer_location', appliance_location_choices, true)
|
2566
2471
|
arg.setDisplayName('Freezer: Location')
|
2567
2472
|
arg.setDescription('The space type for the freezer location.')
|
@@ -2589,12 +2494,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2589
2494
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeWoodCord
|
2590
2495
|
cooking_range_oven_fuel_choices << HPXML::FuelTypeCoal
|
2591
2496
|
|
2592
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooking_range_oven_present', true)
|
2593
|
-
arg.setDisplayName('Cooking Range/Oven: Present')
|
2594
|
-
arg.setDescription('Whether there is a cooking range/oven.')
|
2595
|
-
arg.setDefaultValue(true)
|
2596
|
-
args << arg
|
2597
|
-
|
2598
2497
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooking_range_oven_location', appliance_location_choices, true)
|
2599
2498
|
arg.setDisplayName('Cooking Range/Oven: Location')
|
2600
2499
|
arg.setDescription('The space type for the cooking range/oven location.')
|
@@ -2631,7 +2530,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2631
2530
|
|
2632
2531
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('ceiling_fan_efficiency', true)
|
2633
2532
|
arg.setDisplayName('Ceiling Fan: Efficiency')
|
2634
|
-
arg.setUnits('CFM/
|
2533
|
+
arg.setUnits('CFM/W')
|
2635
2534
|
arg.setDescription('The efficiency rating of the ceiling fan(s) at medium speed.')
|
2636
2535
|
arg.setDefaultValue(Constants.Auto)
|
2637
2536
|
args << arg
|
@@ -2705,26 +2604,26 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2705
2604
|
|
2706
2605
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier', true)
|
2707
2606
|
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier')
|
2708
|
-
arg.setDescription('Multiplier on the
|
2607
|
+
arg.setDescription('Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.')
|
2709
2608
|
arg.setDefaultValue(1.0)
|
2710
2609
|
args << arg
|
2711
2610
|
|
2712
2611
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_vehicle_present', true)
|
2713
2612
|
arg.setDisplayName('Plug Loads: Vehicle Present')
|
2714
|
-
arg.setDescription('Whether there is
|
2613
|
+
arg.setDescription('Whether there is an electric vehicle.')
|
2715
2614
|
arg.setDefaultValue(false)
|
2716
2615
|
args << arg
|
2717
2616
|
|
2718
2617
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('plug_loads_vehicle_annual_kwh', true)
|
2719
2618
|
arg.setDisplayName('Plug Loads: Vehicle Annual kWh')
|
2720
|
-
arg.setDescription('The annual energy consumption of the
|
2619
|
+
arg.setDescription('The annual energy consumption of the electric vehicle plug loads.')
|
2721
2620
|
arg.setUnits('kWh/yr')
|
2722
2621
|
arg.setDefaultValue(Constants.Auto)
|
2723
2622
|
args << arg
|
2724
2623
|
|
2725
2624
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier', true)
|
2726
2625
|
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier')
|
2727
|
-
arg.setDescription('Multiplier on the
|
2626
|
+
arg.setDescription('Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.')
|
2728
2627
|
arg.setDefaultValue(1.0)
|
2729
2628
|
args << arg
|
2730
2629
|
|
@@ -2759,16 +2658,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2759
2658
|
arg.setDefaultValue(Constants.Auto)
|
2760
2659
|
args << arg
|
2761
2660
|
|
2762
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('fuel_loads_grill_location', fuel_loads_location_choices, true)
|
2763
|
-
arg.setDisplayName('Fuel Loads: Grill Location')
|
2764
|
-
arg.setDescription('The location of the fuel loads grill.')
|
2765
|
-
arg.setDefaultValue(Constants.Auto)
|
2766
|
-
args << arg
|
2767
|
-
|
2768
2661
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_grill_usage_multiplier', true)
|
2769
2662
|
arg.setDisplayName('Fuel Loads: Grill Usage Multiplier')
|
2770
2663
|
arg.setDescription('Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.')
|
2771
|
-
arg.setDefaultValue(
|
2664
|
+
arg.setDefaultValue(0.0)
|
2772
2665
|
args << arg
|
2773
2666
|
|
2774
2667
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('fuel_loads_lighting_present', true)
|
@@ -2790,16 +2683,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2790
2683
|
arg.setDefaultValue(Constants.Auto)
|
2791
2684
|
args << arg
|
2792
2685
|
|
2793
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('fuel_loads_lighting_location', fuel_loads_location_choices, true)
|
2794
|
-
arg.setDisplayName('Fuel Loads: Lighting Location')
|
2795
|
-
arg.setDescription('The location of the fuel loads lighting.')
|
2796
|
-
arg.setDefaultValue(Constants.Auto)
|
2797
|
-
args << arg
|
2798
|
-
|
2799
2686
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_lighting_usage_multiplier', true)
|
2800
2687
|
arg.setDisplayName('Fuel Loads: Lighting Usage Multiplier')
|
2801
2688
|
arg.setDescription('Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.')
|
2802
|
-
arg.setDefaultValue(
|
2689
|
+
arg.setDefaultValue(0.0)
|
2803
2690
|
args << arg
|
2804
2691
|
|
2805
2692
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('fuel_loads_fireplace_present', true)
|
@@ -2821,20 +2708,28 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2821
2708
|
arg.setDefaultValue(Constants.Auto)
|
2822
2709
|
args << arg
|
2823
2710
|
|
2824
|
-
arg = OpenStudio::Measure::OSArgument::
|
2825
|
-
arg.setDisplayName('Fuel Loads: Fireplace
|
2826
|
-
arg.setDescription(
|
2711
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('fuel_loads_fireplace_frac_sensible', true)
|
2712
|
+
arg.setDisplayName('Fuel Loads: Fireplace Sensible Fraction')
|
2713
|
+
arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are sensible.")
|
2714
|
+
arg.setUnits('Frac')
|
2715
|
+
arg.setDefaultValue(Constants.Auto)
|
2716
|
+
args << arg
|
2717
|
+
|
2718
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('fuel_loads_fireplace_frac_latent', true)
|
2719
|
+
arg.setDisplayName('Fuel Loads: Fireplace Latent Fraction')
|
2720
|
+
arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are latent.")
|
2721
|
+
arg.setUnits('Frac')
|
2827
2722
|
arg.setDefaultValue(Constants.Auto)
|
2828
2723
|
args << arg
|
2829
2724
|
|
2830
2725
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_fireplace_usage_multiplier', true)
|
2831
2726
|
arg.setDisplayName('Fuel Loads: Fireplace Usage Multiplier')
|
2832
2727
|
arg.setDescription('Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.')
|
2833
|
-
arg.setDefaultValue(
|
2728
|
+
arg.setDefaultValue(0.0)
|
2834
2729
|
args << arg
|
2835
2730
|
|
2836
2731
|
heater_type_choices = OpenStudio::StringVector.new
|
2837
|
-
heater_type_choices <<
|
2732
|
+
heater_type_choices << HPXML::TypeNone
|
2838
2733
|
heater_type_choices << HPXML::HeaterTypeElectricResistance
|
2839
2734
|
heater_type_choices << HPXML::HeaterTypeGas
|
2840
2735
|
heater_type_choices << HPXML::HeaterTypeHeatPump
|
@@ -2861,7 +2756,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2861
2756
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pool_heater_type', heater_type_choices, true)
|
2862
2757
|
arg.setDisplayName('Pool: Heater Type')
|
2863
2758
|
arg.setDescription("The type of pool heater. Use 'none' if there is no pool heater.")
|
2864
|
-
arg.setDefaultValue(
|
2759
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2865
2760
|
args << arg
|
2866
2761
|
|
2867
2762
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('pool_heater_annual_kwh', true)
|
@@ -2906,7 +2801,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2906
2801
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_tub_heater_type', heater_type_choices, true)
|
2907
2802
|
arg.setDisplayName('Hot Tub: Heater Type')
|
2908
2803
|
arg.setDescription("The type of hot tub heater. Use 'none' if there is no hot tub heater.")
|
2909
|
-
arg.setDefaultValue(
|
2804
|
+
arg.setDefaultValue(HPXML::TypeNone)
|
2910
2805
|
args << arg
|
2911
2806
|
|
2912
2807
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('hot_tub_heater_annual_kwh', true)
|
@@ -2941,13 +2836,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2941
2836
|
return false
|
2942
2837
|
end
|
2943
2838
|
|
2839
|
+
Geometry.tear_down_model(model, runner)
|
2840
|
+
|
2944
2841
|
Version.check_openstudio_version()
|
2945
2842
|
|
2946
2843
|
# assign the user inputs to variables
|
2947
|
-
args = get_argument_values(runner, user_arguments)
|
2948
|
-
args
|
2949
|
-
args[:
|
2950
|
-
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
|
2951
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]]
|
2952
2848
|
|
2953
2849
|
# Argument error checks
|
@@ -2999,402 +2895,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2999
2895
|
runner.registerInfo("Wrote file: #{hpxml_path}")
|
3000
2896
|
end
|
3001
2897
|
|
3002
|
-
def get_argument_values(runner, user_arguments)
|
3003
|
-
return { simulation_control_timestep: runner.getOptionalIntegerArgumentValue('simulation_control_timestep', user_arguments),
|
3004
|
-
simulation_control_run_period_begin_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_begin_month', user_arguments),
|
3005
|
-
simulation_control_run_period_begin_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_begin_day_of_month', user_arguments),
|
3006
|
-
simulation_control_run_period_end_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_end_month', user_arguments),
|
3007
|
-
simulation_control_run_period_end_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_end_day_of_month', user_arguments),
|
3008
|
-
simulation_control_run_period_calendar_year: runner.getOptionalIntegerArgumentValue('simulation_control_run_period_calendar_year', user_arguments),
|
3009
|
-
simulation_control_daylight_saving_enabled: runner.getOptionalStringArgumentValue('simulation_control_daylight_saving_enabled', user_arguments),
|
3010
|
-
simulation_control_daylight_saving_begin_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_begin_month', user_arguments),
|
3011
|
-
simulation_control_daylight_saving_begin_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_begin_day_of_month', user_arguments),
|
3012
|
-
simulation_control_daylight_saving_end_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_end_month', user_arguments),
|
3013
|
-
simulation_control_daylight_saving_end_day_of_month: runner.getOptionalIntegerArgumentValue('simulation_control_daylight_saving_end_day_of_month', user_arguments),
|
3014
|
-
schedules_type: runner.getStringArgumentValue('schedules_type', user_arguments),
|
3015
|
-
schedules_path: runner.getOptionalStringArgumentValue('schedules_path', user_arguments),
|
3016
|
-
schedules_vacancy_begin_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_begin_month', user_arguments),
|
3017
|
-
schedules_vacancy_begin_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_begin_day_of_month', user_arguments),
|
3018
|
-
schedules_vacancy_end_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_month', user_arguments),
|
3019
|
-
schedules_vacancy_end_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_day_of_month', user_arguments),
|
3020
|
-
weather_station_epw_filepath: runner.getStringArgumentValue('weather_station_epw_filepath', user_arguments),
|
3021
|
-
site_type: runner.getOptionalStringArgumentValue('site_type', user_arguments),
|
3022
|
-
geometry_unit_type: runner.getStringArgumentValue('geometry_unit_type', user_arguments),
|
3023
|
-
geometry_cfa: runner.getDoubleArgumentValue('geometry_cfa', user_arguments),
|
3024
|
-
geometry_num_floors_above_grade: runner.getIntegerArgumentValue('geometry_num_floors_above_grade', user_arguments),
|
3025
|
-
geometry_wall_height: runner.getDoubleArgumentValue('geometry_wall_height', user_arguments),
|
3026
|
-
geometry_orientation: runner.getDoubleArgumentValue('geometry_orientation', user_arguments),
|
3027
|
-
geometry_aspect_ratio: runner.getDoubleArgumentValue('geometry_aspect_ratio', user_arguments),
|
3028
|
-
geometry_corridor_position: runner.getStringArgumentValue('geometry_corridor_position', user_arguments),
|
3029
|
-
geometry_corridor_width: runner.getDoubleArgumentValue('geometry_corridor_width', user_arguments),
|
3030
|
-
geometry_inset_width: runner.getDoubleArgumentValue('geometry_inset_width', user_arguments),
|
3031
|
-
geometry_inset_depth: runner.getDoubleArgumentValue('geometry_inset_depth', user_arguments),
|
3032
|
-
geometry_inset_position: runner.getStringArgumentValue('geometry_inset_position', user_arguments),
|
3033
|
-
geometry_balcony_depth: runner.getDoubleArgumentValue('geometry_balcony_depth', user_arguments),
|
3034
|
-
geometry_garage_width: runner.getDoubleArgumentValue('geometry_garage_width', user_arguments),
|
3035
|
-
geometry_garage_depth: runner.getDoubleArgumentValue('geometry_garage_depth', user_arguments),
|
3036
|
-
geometry_garage_protrusion: runner.getDoubleArgumentValue('geometry_garage_protrusion', user_arguments),
|
3037
|
-
geometry_garage_position: runner.getStringArgumentValue('geometry_garage_position', user_arguments),
|
3038
|
-
geometry_foundation_type: runner.getStringArgumentValue('geometry_foundation_type', user_arguments),
|
3039
|
-
geometry_foundation_height: runner.getDoubleArgumentValue('geometry_foundation_height', user_arguments),
|
3040
|
-
geometry_foundation_height_above_grade: runner.getDoubleArgumentValue('geometry_foundation_height_above_grade', user_arguments),
|
3041
|
-
geometry_roof_type: runner.getStringArgumentValue('geometry_roof_type', user_arguments),
|
3042
|
-
geometry_roof_pitch: runner.getStringArgumentValue('geometry_roof_pitch', user_arguments),
|
3043
|
-
geometry_roof_structure: runner.getStringArgumentValue('geometry_roof_structure', user_arguments),
|
3044
|
-
geometry_attic_type: runner.getStringArgumentValue('geometry_attic_type', user_arguments),
|
3045
|
-
geometry_eaves_depth: runner.getDoubleArgumentValue('geometry_eaves_depth', user_arguments),
|
3046
|
-
geometry_num_bedrooms: runner.getIntegerArgumentValue('geometry_num_bedrooms', user_arguments),
|
3047
|
-
geometry_num_bathrooms: runner.getStringArgumentValue('geometry_num_bathrooms', user_arguments),
|
3048
|
-
geometry_num_occupants: runner.getStringArgumentValue('geometry_num_occupants', user_arguments),
|
3049
|
-
geometry_level: runner.getOptionalStringArgumentValue('geometry_level', user_arguments),
|
3050
|
-
geometry_horizontal_location: runner.getOptionalStringArgumentValue('geometry_horizontal_location', user_arguments),
|
3051
|
-
geometry_building_num_units: runner.getOptionalIntegerArgumentValue('geometry_building_num_units', user_arguments),
|
3052
|
-
geometry_building_num_bedrooms: runner.getOptionalIntegerArgumentValue('geometry_building_num_bedrooms', user_arguments),
|
3053
|
-
floor_assembly_r: runner.getDoubleArgumentValue('floor_assembly_r', user_arguments),
|
3054
|
-
foundation_wall_insulation_r: runner.getDoubleArgumentValue('foundation_wall_insulation_r', user_arguments),
|
3055
|
-
foundation_wall_insulation_distance_to_top: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_top', user_arguments),
|
3056
|
-
foundation_wall_insulation_distance_to_bottom: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_bottom', user_arguments),
|
3057
|
-
foundation_wall_assembly_r: runner.getOptionalDoubleArgumentValue('foundation_wall_assembly_r', user_arguments),
|
3058
|
-
slab_perimeter_insulation_r: runner.getDoubleArgumentValue('slab_perimeter_insulation_r', user_arguments),
|
3059
|
-
slab_perimeter_depth: runner.getDoubleArgumentValue('slab_perimeter_depth', user_arguments),
|
3060
|
-
slab_under_insulation_r: runner.getDoubleArgumentValue('slab_under_insulation_r', user_arguments),
|
3061
|
-
slab_under_width: runner.getDoubleArgumentValue('slab_under_width', user_arguments),
|
3062
|
-
slab_carpet_fraction: runner.getDoubleArgumentValue('slab_carpet_fraction', user_arguments),
|
3063
|
-
slab_carpet_r: runner.getDoubleArgumentValue('slab_carpet_r', user_arguments),
|
3064
|
-
ceiling_assembly_r: runner.getDoubleArgumentValue('ceiling_assembly_r', user_arguments),
|
3065
|
-
roof_material_type: runner.getOptionalStringArgumentValue('roof_material_type', user_arguments),
|
3066
|
-
roof_color: runner.getStringArgumentValue('roof_color', user_arguments),
|
3067
|
-
roof_assembly_r: runner.getDoubleArgumentValue('roof_assembly_r', user_arguments),
|
3068
|
-
roof_solar_absorptance: runner.getStringArgumentValue('roof_solar_absorptance', user_arguments),
|
3069
|
-
roof_emittance: runner.getDoubleArgumentValue('roof_emittance', user_arguments),
|
3070
|
-
roof_radiant_barrier: runner.getBoolArgumentValue('roof_radiant_barrier', user_arguments),
|
3071
|
-
roof_radiant_barrier_grade: runner.getStringArgumentValue('roof_radiant_barrier_grade', user_arguments),
|
3072
|
-
neighbor_front_distance: runner.getDoubleArgumentValue('neighbor_front_distance', user_arguments),
|
3073
|
-
neighbor_back_distance: runner.getDoubleArgumentValue('neighbor_back_distance', user_arguments),
|
3074
|
-
neighbor_left_distance: runner.getDoubleArgumentValue('neighbor_left_distance', user_arguments),
|
3075
|
-
neighbor_right_distance: runner.getDoubleArgumentValue('neighbor_right_distance', user_arguments),
|
3076
|
-
neighbor_front_height: runner.getStringArgumentValue('neighbor_front_height', user_arguments),
|
3077
|
-
neighbor_back_height: runner.getStringArgumentValue('neighbor_back_height', user_arguments),
|
3078
|
-
neighbor_left_height: runner.getStringArgumentValue('neighbor_left_height', user_arguments),
|
3079
|
-
neighbor_right_height: runner.getStringArgumentValue('neighbor_right_height', user_arguments),
|
3080
|
-
wall_type: runner.getStringArgumentValue('wall_type', user_arguments),
|
3081
|
-
wall_siding_type: runner.getOptionalStringArgumentValue('wall_siding_type', user_arguments),
|
3082
|
-
wall_color: runner.getStringArgumentValue('wall_color', user_arguments),
|
3083
|
-
wall_assembly_r: runner.getDoubleArgumentValue('wall_assembly_r', user_arguments),
|
3084
|
-
wall_solar_absorptance: runner.getStringArgumentValue('wall_solar_absorptance', user_arguments),
|
3085
|
-
wall_emittance: runner.getDoubleArgumentValue('wall_emittance', user_arguments),
|
3086
|
-
window_front_wwr: runner.getDoubleArgumentValue('window_front_wwr', user_arguments),
|
3087
|
-
window_back_wwr: runner.getDoubleArgumentValue('window_back_wwr', user_arguments),
|
3088
|
-
window_left_wwr: runner.getDoubleArgumentValue('window_left_wwr', user_arguments),
|
3089
|
-
window_right_wwr: runner.getDoubleArgumentValue('window_right_wwr', user_arguments),
|
3090
|
-
window_area_front: runner.getDoubleArgumentValue('window_area_front', user_arguments),
|
3091
|
-
window_area_back: runner.getDoubleArgumentValue('window_area_back', user_arguments),
|
3092
|
-
window_area_left: runner.getDoubleArgumentValue('window_area_left', user_arguments),
|
3093
|
-
window_area_right: runner.getDoubleArgumentValue('window_area_right', user_arguments),
|
3094
|
-
window_aspect_ratio: runner.getDoubleArgumentValue('window_aspect_ratio', user_arguments),
|
3095
|
-
window_fraction_operable: runner.getOptionalDoubleArgumentValue('window_fraction_operable', user_arguments),
|
3096
|
-
window_ufactor: runner.getDoubleArgumentValue('window_ufactor', user_arguments),
|
3097
|
-
window_shgc: runner.getDoubleArgumentValue('window_shgc', user_arguments),
|
3098
|
-
window_interior_shading_winter: runner.getOptionalDoubleArgumentValue('window_interior_shading_winter', user_arguments),
|
3099
|
-
window_interior_shading_summer: runner.getOptionalDoubleArgumentValue('window_interior_shading_summer', user_arguments),
|
3100
|
-
overhangs_front_depth: runner.getDoubleArgumentValue('overhangs_front_depth', user_arguments),
|
3101
|
-
overhangs_front_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_front_distance_to_top_of_window', user_arguments),
|
3102
|
-
overhangs_back_depth: runner.getDoubleArgumentValue('overhangs_back_depth', user_arguments),
|
3103
|
-
overhangs_back_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_back_distance_to_top_of_window', user_arguments),
|
3104
|
-
overhangs_left_depth: runner.getDoubleArgumentValue('overhangs_left_depth', user_arguments),
|
3105
|
-
overhangs_left_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_left_distance_to_top_of_window', user_arguments),
|
3106
|
-
overhangs_right_depth: runner.getDoubleArgumentValue('overhangs_right_depth', user_arguments),
|
3107
|
-
overhangs_right_distance_to_top_of_window: runner.getDoubleArgumentValue('overhangs_right_distance_to_top_of_window', user_arguments),
|
3108
|
-
skylight_area_front: runner.getDoubleArgumentValue('skylight_area_front', user_arguments),
|
3109
|
-
skylight_area_back: runner.getDoubleArgumentValue('skylight_area_back', user_arguments),
|
3110
|
-
skylight_area_left: runner.getDoubleArgumentValue('skylight_area_left', user_arguments),
|
3111
|
-
skylight_area_right: runner.getDoubleArgumentValue('skylight_area_right', user_arguments),
|
3112
|
-
skylight_ufactor: runner.getDoubleArgumentValue('skylight_ufactor', user_arguments),
|
3113
|
-
skylight_shgc: runner.getDoubleArgumentValue('skylight_shgc', user_arguments),
|
3114
|
-
door_area: runner.getDoubleArgumentValue('door_area', user_arguments),
|
3115
|
-
door_rvalue: runner.getDoubleArgumentValue('door_rvalue', user_arguments),
|
3116
|
-
air_leakage_units: runner.getStringArgumentValue('air_leakage_units', user_arguments),
|
3117
|
-
air_leakage_house_pressure: runner.getDoubleArgumentValue('air_leakage_house_pressure', user_arguments),
|
3118
|
-
air_leakage_value: runner.getDoubleArgumentValue('air_leakage_value', user_arguments),
|
3119
|
-
air_leakage_shelter_coefficient: runner.getStringArgumentValue('air_leakage_shelter_coefficient', user_arguments),
|
3120
|
-
heating_system_type: runner.getStringArgumentValue('heating_system_type', user_arguments),
|
3121
|
-
heating_system_fuel: runner.getStringArgumentValue('heating_system_fuel', user_arguments),
|
3122
|
-
heating_system_heating_efficiency: runner.getDoubleArgumentValue('heating_system_heating_efficiency', user_arguments),
|
3123
|
-
heating_system_heating_capacity: runner.getStringArgumentValue('heating_system_heating_capacity', user_arguments),
|
3124
|
-
heating_system_fraction_heat_load_served: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served', user_arguments),
|
3125
|
-
heating_system_electric_auxiliary_energy: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy', user_arguments),
|
3126
|
-
heating_system_has_flue_or_chimney: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney', user_arguments),
|
3127
|
-
cooling_system_type: runner.getStringArgumentValue('cooling_system_type', user_arguments),
|
3128
|
-
cooling_system_cooling_efficiency_seer: runner.getDoubleArgumentValue('cooling_system_cooling_efficiency_seer', user_arguments),
|
3129
|
-
cooling_system_cooling_efficiency_eer: runner.getDoubleArgumentValue('cooling_system_cooling_efficiency_eer', user_arguments),
|
3130
|
-
cooling_system_cooling_compressor_type: runner.getOptionalStringArgumentValue('cooling_system_cooling_compressor_type', user_arguments),
|
3131
|
-
cooling_system_cooling_sensible_heat_fraction: runner.getOptionalDoubleArgumentValue('cooling_system_cooling_sensible_heat_fraction', user_arguments),
|
3132
|
-
cooling_system_cooling_capacity: runner.getStringArgumentValue('cooling_system_cooling_capacity', user_arguments),
|
3133
|
-
cooling_system_fraction_cool_load_served: runner.getDoubleArgumentValue('cooling_system_fraction_cool_load_served', user_arguments),
|
3134
|
-
cooling_system_is_ducted: runner.getBoolArgumentValue('cooling_system_is_ducted', user_arguments),
|
3135
|
-
heat_pump_type: runner.getStringArgumentValue('heat_pump_type', user_arguments),
|
3136
|
-
heat_pump_heating_efficiency_hspf: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_hspf', user_arguments),
|
3137
|
-
heat_pump_heating_efficiency_cop: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_cop', user_arguments),
|
3138
|
-
heat_pump_cooling_efficiency_seer: runner.getDoubleArgumentValue('heat_pump_cooling_efficiency_seer', user_arguments),
|
3139
|
-
heat_pump_cooling_efficiency_eer: runner.getDoubleArgumentValue('heat_pump_cooling_efficiency_eer', user_arguments),
|
3140
|
-
heat_pump_cooling_compressor_type: runner.getOptionalStringArgumentValue('heat_pump_cooling_compressor_type', user_arguments),
|
3141
|
-
heat_pump_cooling_sensible_heat_fraction: runner.getOptionalDoubleArgumentValue('heat_pump_cooling_sensible_heat_fraction', user_arguments),
|
3142
|
-
heat_pump_heating_capacity: runner.getStringArgumentValue('heat_pump_heating_capacity', user_arguments),
|
3143
|
-
heat_pump_heating_capacity_17F: runner.getStringArgumentValue('heat_pump_heating_capacity_17F', user_arguments),
|
3144
|
-
heat_pump_cooling_capacity: runner.getStringArgumentValue('heat_pump_cooling_capacity', user_arguments),
|
3145
|
-
heat_pump_fraction_heat_load_served: runner.getDoubleArgumentValue('heat_pump_fraction_heat_load_served', user_arguments),
|
3146
|
-
heat_pump_fraction_cool_load_served: runner.getDoubleArgumentValue('heat_pump_fraction_cool_load_served', user_arguments),
|
3147
|
-
heat_pump_backup_fuel: runner.getStringArgumentValue('heat_pump_backup_fuel', user_arguments),
|
3148
|
-
heat_pump_backup_heating_efficiency: runner.getDoubleArgumentValue('heat_pump_backup_heating_efficiency', user_arguments),
|
3149
|
-
heat_pump_backup_heating_capacity: runner.getStringArgumentValue('heat_pump_backup_heating_capacity', user_arguments),
|
3150
|
-
heat_pump_backup_heating_switchover_temp: runner.getOptionalDoubleArgumentValue('heat_pump_backup_heating_switchover_temp', user_arguments),
|
3151
|
-
heat_pump_mini_split_is_ducted: runner.getOptionalStringArgumentValue('heat_pump_mini_split_is_ducted', user_arguments),
|
3152
|
-
heat_pump_ground_to_air_pump_power: runner.getOptionalDoubleArgumentValue('heat_pump_ground_to_air_pump_power', user_arguments),
|
3153
|
-
heat_pump_ground_to_air_fan_power: runner.getOptionalDoubleArgumentValue('heat_pump_ground_to_air_fan_power', user_arguments),
|
3154
|
-
setpoint_heating_temp: runner.getDoubleArgumentValue('setpoint_heating_temp', user_arguments),
|
3155
|
-
setpoint_heating_setback_temp: runner.getDoubleArgumentValue('setpoint_heating_setback_temp', user_arguments),
|
3156
|
-
setpoint_heating_setback_hours_per_week: runner.getDoubleArgumentValue('setpoint_heating_setback_hours_per_week', user_arguments),
|
3157
|
-
setpoint_heating_setback_start_hour: runner.getDoubleArgumentValue('setpoint_heating_setback_start_hour', user_arguments),
|
3158
|
-
setpoint_cooling_temp: runner.getDoubleArgumentValue('setpoint_cooling_temp', user_arguments),
|
3159
|
-
setpoint_cooling_setup_temp: runner.getDoubleArgumentValue('setpoint_cooling_setup_temp', user_arguments),
|
3160
|
-
setpoint_cooling_setup_hours_per_week: runner.getDoubleArgumentValue('setpoint_cooling_setup_hours_per_week', user_arguments),
|
3161
|
-
setpoint_cooling_setup_start_hour: runner.getDoubleArgumentValue('setpoint_cooling_setup_start_hour', user_arguments),
|
3162
|
-
ducts_supply_leakage_units: runner.getStringArgumentValue('ducts_supply_leakage_units', user_arguments),
|
3163
|
-
ducts_return_leakage_units: runner.getStringArgumentValue('ducts_return_leakage_units', user_arguments),
|
3164
|
-
ducts_supply_leakage_value: runner.getDoubleArgumentValue('ducts_supply_leakage_value', user_arguments),
|
3165
|
-
ducts_return_leakage_value: runner.getDoubleArgumentValue('ducts_return_leakage_value', user_arguments),
|
3166
|
-
ducts_supply_insulation_r: runner.getDoubleArgumentValue('ducts_supply_insulation_r', user_arguments),
|
3167
|
-
ducts_return_insulation_r: runner.getDoubleArgumentValue('ducts_return_insulation_r', user_arguments),
|
3168
|
-
ducts_supply_location: runner.getStringArgumentValue('ducts_supply_location', user_arguments),
|
3169
|
-
ducts_return_location: runner.getStringArgumentValue('ducts_return_location', user_arguments),
|
3170
|
-
ducts_supply_surface_area: runner.getStringArgumentValue('ducts_supply_surface_area', user_arguments),
|
3171
|
-
ducts_return_surface_area: runner.getStringArgumentValue('ducts_return_surface_area', user_arguments),
|
3172
|
-
ducts_number_of_return_registers: runner.getStringArgumentValue('ducts_number_of_return_registers', user_arguments),
|
3173
|
-
heating_system_type_2: runner.getStringArgumentValue('heating_system_type_2', user_arguments),
|
3174
|
-
heating_system_fuel_2: runner.getStringArgumentValue('heating_system_fuel_2', user_arguments),
|
3175
|
-
heating_system_heating_efficiency_2: runner.getDoubleArgumentValue('heating_system_heating_efficiency_2', user_arguments),
|
3176
|
-
heating_system_heating_capacity_2: runner.getStringArgumentValue('heating_system_heating_capacity_2', user_arguments),
|
3177
|
-
heating_system_fraction_heat_load_served_2: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served_2', user_arguments),
|
3178
|
-
heating_system_electric_auxiliary_energy_2: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy_2', user_arguments),
|
3179
|
-
heating_system_has_flue_or_chimney_2: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney_2', user_arguments),
|
3180
|
-
mech_vent_fan_type: runner.getStringArgumentValue('mech_vent_fan_type', user_arguments),
|
3181
|
-
mech_vent_flow_rate: runner.getDoubleArgumentValue('mech_vent_flow_rate', user_arguments),
|
3182
|
-
mech_vent_hours_in_operation: runner.getDoubleArgumentValue('mech_vent_hours_in_operation', user_arguments),
|
3183
|
-
mech_vent_total_recovery_efficiency_type: runner.getStringArgumentValue('mech_vent_total_recovery_efficiency_type', user_arguments),
|
3184
|
-
mech_vent_total_recovery_efficiency: runner.getDoubleArgumentValue('mech_vent_total_recovery_efficiency', user_arguments),
|
3185
|
-
mech_vent_sensible_recovery_efficiency_type: runner.getStringArgumentValue('mech_vent_sensible_recovery_efficiency_type', user_arguments),
|
3186
|
-
mech_vent_sensible_recovery_efficiency: runner.getDoubleArgumentValue('mech_vent_sensible_recovery_efficiency', user_arguments),
|
3187
|
-
mech_vent_fan_power: runner.getDoubleArgumentValue('mech_vent_fan_power', user_arguments),
|
3188
|
-
mech_vent_is_shared_system: runner.getBoolArgumentValue('mech_vent_is_shared_system', user_arguments),
|
3189
|
-
shared_mech_vent_in_unit_flow_rate: runner.getOptionalDoubleArgumentValue('shared_mech_vent_in_unit_flow_rate', user_arguments),
|
3190
|
-
shared_mech_vent_frac_recirculation: runner.getOptionalDoubleArgumentValue('shared_mech_vent_frac_recirculation', user_arguments),
|
3191
|
-
shared_mech_vent_preheating_fuel: runner.getOptionalStringArgumentValue('shared_mech_vent_preheating_fuel', user_arguments),
|
3192
|
-
shared_mech_vent_preheating_efficiency: runner.getOptionalDoubleArgumentValue('shared_mech_vent_preheating_efficiency', user_arguments),
|
3193
|
-
shared_mech_vent_preheating_fraction_heat_load_served: runner.getOptionalDoubleArgumentValue('shared_mech_vent_preheating_fraction_heat_load_served', user_arguments),
|
3194
|
-
shared_mech_vent_precooling_fuel: runner.getOptionalStringArgumentValue('shared_mech_vent_precooling_fuel', user_arguments),
|
3195
|
-
shared_mech_vent_precooling_efficiency: runner.getOptionalDoubleArgumentValue('shared_mech_vent_precooling_efficiency', user_arguments),
|
3196
|
-
shared_mech_vent_precooling_fraction_cool_load_served: runner.getOptionalDoubleArgumentValue('shared_mech_vent_precooling_fraction_cool_load_served', user_arguments),
|
3197
|
-
mech_vent_fan_type_2: runner.getStringArgumentValue('mech_vent_fan_type_2', user_arguments),
|
3198
|
-
mech_vent_flow_rate_2: runner.getDoubleArgumentValue('mech_vent_flow_rate_2', user_arguments),
|
3199
|
-
mech_vent_hours_in_operation_2: runner.getDoubleArgumentValue('mech_vent_hours_in_operation_2', user_arguments),
|
3200
|
-
mech_vent_total_recovery_efficiency_type_2: runner.getStringArgumentValue('mech_vent_total_recovery_efficiency_type_2', user_arguments),
|
3201
|
-
mech_vent_total_recovery_efficiency_2: runner.getDoubleArgumentValue('mech_vent_total_recovery_efficiency_2', user_arguments),
|
3202
|
-
mech_vent_sensible_recovery_efficiency_type_2: runner.getStringArgumentValue('mech_vent_sensible_recovery_efficiency_type_2', user_arguments),
|
3203
|
-
mech_vent_sensible_recovery_efficiency_2: runner.getDoubleArgumentValue('mech_vent_sensible_recovery_efficiency_2', user_arguments),
|
3204
|
-
mech_vent_fan_power_2: runner.getDoubleArgumentValue('mech_vent_fan_power_2', user_arguments),
|
3205
|
-
kitchen_fans_present: runner.getBoolArgumentValue('kitchen_fans_present', user_arguments),
|
3206
|
-
kitchen_fans_quantity: runner.getOptionalIntegerArgumentValue('kitchen_fans_quantity', user_arguments),
|
3207
|
-
kitchen_fans_flow_rate: runner.getOptionalDoubleArgumentValue('kitchen_fans_flow_rate', user_arguments),
|
3208
|
-
kitchen_fans_hours_in_operation: runner.getOptionalDoubleArgumentValue('kitchen_fans_hours_in_operation', user_arguments),
|
3209
|
-
kitchen_fans_power: runner.getOptionalDoubleArgumentValue('kitchen_fans_power', user_arguments),
|
3210
|
-
kitchen_fans_start_hour: runner.getOptionalIntegerArgumentValue('kitchen_fans_start_hour', user_arguments),
|
3211
|
-
bathroom_fans_present: runner.getBoolArgumentValue('bathroom_fans_present', user_arguments),
|
3212
|
-
bathroom_fans_quantity: runner.getOptionalIntegerArgumentValue('bathroom_fans_quantity', user_arguments),
|
3213
|
-
bathroom_fans_flow_rate: runner.getOptionalDoubleArgumentValue('bathroom_fans_flow_rate', user_arguments),
|
3214
|
-
bathroom_fans_hours_in_operation: runner.getOptionalDoubleArgumentValue('bathroom_fans_hours_in_operation', user_arguments),
|
3215
|
-
bathroom_fans_power: runner.getOptionalDoubleArgumentValue('bathroom_fans_power', user_arguments),
|
3216
|
-
bathroom_fans_start_hour: runner.getOptionalIntegerArgumentValue('bathroom_fans_start_hour', user_arguments),
|
3217
|
-
whole_house_fan_present: runner.getBoolArgumentValue('whole_house_fan_present', user_arguments),
|
3218
|
-
whole_house_fan_flow_rate: runner.getDoubleArgumentValue('whole_house_fan_flow_rate', user_arguments),
|
3219
|
-
whole_house_fan_power: runner.getDoubleArgumentValue('whole_house_fan_power', user_arguments),
|
3220
|
-
water_heater_type: runner.getStringArgumentValue('water_heater_type', user_arguments),
|
3221
|
-
water_heater_fuel_type: runner.getStringArgumentValue('water_heater_fuel_type', user_arguments),
|
3222
|
-
water_heater_location: runner.getStringArgumentValue('water_heater_location', user_arguments),
|
3223
|
-
water_heater_tank_volume: runner.getStringArgumentValue('water_heater_tank_volume', user_arguments),
|
3224
|
-
water_heater_heating_capacity: runner.getStringArgumentValue('water_heater_heating_capacity', user_arguments),
|
3225
|
-
water_heater_efficiency_type: runner.getStringArgumentValue('water_heater_efficiency_type', user_arguments),
|
3226
|
-
water_heater_efficiency_ef: runner.getDoubleArgumentValue('water_heater_efficiency_ef', user_arguments),
|
3227
|
-
water_heater_efficiency_uef: runner.getDoubleArgumentValue('water_heater_efficiency_uef', user_arguments),
|
3228
|
-
water_heater_recovery_efficiency: runner.getStringArgumentValue('water_heater_recovery_efficiency', user_arguments),
|
3229
|
-
water_heater_standby_loss: runner.getOptionalDoubleArgumentValue('water_heater_standby_loss', user_arguments),
|
3230
|
-
water_heater_jacket_rvalue: runner.getOptionalDoubleArgumentValue('water_heater_jacket_rvalue', user_arguments),
|
3231
|
-
water_heater_setpoint_temperature: runner.getStringArgumentValue('water_heater_setpoint_temperature', user_arguments),
|
3232
|
-
water_heater_performance_adjustment: runner.getOptionalDoubleArgumentValue('water_heater_performance_adjustment', user_arguments),
|
3233
|
-
water_heater_has_flue_or_chimney: runner.getBoolArgumentValue('water_heater_has_flue_or_chimney', user_arguments),
|
3234
|
-
water_heater_is_shared_system: runner.getBoolArgumentValue('water_heater_is_shared_system', user_arguments),
|
3235
|
-
dhw_distribution_system_type: runner.getStringArgumentValue('dhw_distribution_system_type', user_arguments),
|
3236
|
-
dhw_distribution_standard_piping_length: runner.getStringArgumentValue('dhw_distribution_standard_piping_length', user_arguments),
|
3237
|
-
dhw_distribution_recirc_control_type: runner.getStringArgumentValue('dhw_distribution_recirc_control_type', user_arguments),
|
3238
|
-
dhw_distribution_recirc_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_piping_length', user_arguments),
|
3239
|
-
dhw_distribution_recirc_branch_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_branch_piping_length', user_arguments),
|
3240
|
-
dhw_distribution_recirc_pump_power: runner.getStringArgumentValue('dhw_distribution_recirc_pump_power', user_arguments),
|
3241
|
-
dhw_distribution_pipe_r: runner.getDoubleArgumentValue('dhw_distribution_pipe_r', user_arguments),
|
3242
|
-
dwhr_facilities_connected: runner.getStringArgumentValue('dwhr_facilities_connected', user_arguments),
|
3243
|
-
dwhr_equal_flow: runner.getBoolArgumentValue('dwhr_equal_flow', user_arguments),
|
3244
|
-
dwhr_efficiency: runner.getDoubleArgumentValue('dwhr_efficiency', user_arguments),
|
3245
|
-
water_fixtures_shower_low_flow: runner.getBoolArgumentValue('water_fixtures_shower_low_flow', user_arguments),
|
3246
|
-
water_fixtures_sink_low_flow: runner.getBoolArgumentValue('water_fixtures_sink_low_flow', user_arguments),
|
3247
|
-
water_fixtures_usage_multiplier: runner.getDoubleArgumentValue('water_fixtures_usage_multiplier', user_arguments),
|
3248
|
-
solar_thermal_system_type: runner.getStringArgumentValue('solar_thermal_system_type', user_arguments),
|
3249
|
-
solar_thermal_collector_area: runner.getDoubleArgumentValue('solar_thermal_collector_area', user_arguments),
|
3250
|
-
solar_thermal_collector_loop_type: runner.getStringArgumentValue('solar_thermal_collector_loop_type', user_arguments),
|
3251
|
-
solar_thermal_collector_type: runner.getStringArgumentValue('solar_thermal_collector_type', user_arguments),
|
3252
|
-
solar_thermal_collector_azimuth: runner.getDoubleArgumentValue('solar_thermal_collector_azimuth', user_arguments),
|
3253
|
-
solar_thermal_collector_tilt: runner.getStringArgumentValue('solar_thermal_collector_tilt', user_arguments),
|
3254
|
-
solar_thermal_collector_rated_optical_efficiency: runner.getDoubleArgumentValue('solar_thermal_collector_rated_optical_efficiency', user_arguments),
|
3255
|
-
solar_thermal_collector_rated_thermal_losses: runner.getDoubleArgumentValue('solar_thermal_collector_rated_thermal_losses', user_arguments),
|
3256
|
-
solar_thermal_storage_volume: runner.getStringArgumentValue('solar_thermal_storage_volume', user_arguments),
|
3257
|
-
solar_thermal_solar_fraction: runner.getDoubleArgumentValue('solar_thermal_solar_fraction', user_arguments),
|
3258
|
-
pv_system_module_type_1: runner.getStringArgumentValue('pv_system_module_type_1', user_arguments),
|
3259
|
-
pv_system_location_1: runner.getStringArgumentValue('pv_system_location_1', user_arguments),
|
3260
|
-
pv_system_tracking_1: runner.getStringArgumentValue('pv_system_tracking_1', user_arguments),
|
3261
|
-
pv_system_array_azimuth_1: runner.getDoubleArgumentValue('pv_system_array_azimuth_1', user_arguments),
|
3262
|
-
pv_system_array_tilt_1: runner.getStringArgumentValue('pv_system_array_tilt_1', user_arguments),
|
3263
|
-
pv_system_max_power_output_1: runner.getDoubleArgumentValue('pv_system_max_power_output_1', user_arguments),
|
3264
|
-
pv_system_inverter_efficiency_1: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_1', user_arguments),
|
3265
|
-
pv_system_system_losses_fraction_1: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_1', user_arguments),
|
3266
|
-
pv_system_is_shared_1: runner.getBoolArgumentValue('pv_system_is_shared_1', user_arguments),
|
3267
|
-
pv_system_module_type_2: runner.getStringArgumentValue('pv_system_module_type_2', user_arguments),
|
3268
|
-
pv_system_location_2: runner.getStringArgumentValue('pv_system_location_2', user_arguments),
|
3269
|
-
pv_system_tracking_2: runner.getStringArgumentValue('pv_system_tracking_2', user_arguments),
|
3270
|
-
pv_system_array_azimuth_2: runner.getDoubleArgumentValue('pv_system_array_azimuth_2', user_arguments),
|
3271
|
-
pv_system_array_tilt_2: runner.getStringArgumentValue('pv_system_array_tilt_2', user_arguments),
|
3272
|
-
pv_system_max_power_output_2: runner.getDoubleArgumentValue('pv_system_max_power_output_2', user_arguments),
|
3273
|
-
pv_system_inverter_efficiency_2: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_2', user_arguments),
|
3274
|
-
pv_system_system_losses_fraction_2: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_2', user_arguments),
|
3275
|
-
pv_system_is_shared_2: runner.getBoolArgumentValue('pv_system_is_shared_2', user_arguments),
|
3276
|
-
lighting_fraction_cfl_interior: runner.getDoubleArgumentValue('lighting_fraction_cfl_interior', user_arguments),
|
3277
|
-
lighting_fraction_lfl_interior: runner.getDoubleArgumentValue('lighting_fraction_lfl_interior', user_arguments),
|
3278
|
-
lighting_fraction_led_interior: runner.getDoubleArgumentValue('lighting_fraction_led_interior', user_arguments),
|
3279
|
-
lighting_usage_multiplier_interior: runner.getDoubleArgumentValue('lighting_usage_multiplier_interior', user_arguments),
|
3280
|
-
lighting_fraction_cfl_exterior: runner.getDoubleArgumentValue('lighting_fraction_cfl_exterior', user_arguments),
|
3281
|
-
lighting_fraction_lfl_exterior: runner.getDoubleArgumentValue('lighting_fraction_lfl_exterior', user_arguments),
|
3282
|
-
lighting_fraction_led_exterior: runner.getDoubleArgumentValue('lighting_fraction_led_exterior', user_arguments),
|
3283
|
-
lighting_usage_multiplier_exterior: runner.getDoubleArgumentValue('lighting_usage_multiplier_exterior', user_arguments),
|
3284
|
-
lighting_fraction_cfl_garage: runner.getDoubleArgumentValue('lighting_fraction_cfl_garage', user_arguments),
|
3285
|
-
lighting_fraction_lfl_garage: runner.getDoubleArgumentValue('lighting_fraction_lfl_garage', user_arguments),
|
3286
|
-
lighting_fraction_led_garage: runner.getDoubleArgumentValue('lighting_fraction_led_garage', user_arguments),
|
3287
|
-
lighting_usage_multiplier_garage: runner.getDoubleArgumentValue('lighting_usage_multiplier_garage', user_arguments),
|
3288
|
-
holiday_lighting_present: runner.getBoolArgumentValue('holiday_lighting_present', user_arguments),
|
3289
|
-
holiday_lighting_daily_kwh: runner.getStringArgumentValue('holiday_lighting_daily_kwh', user_arguments),
|
3290
|
-
holiday_lighting_period_begin_month: runner.getStringArgumentValue('holiday_lighting_period_begin_month', user_arguments),
|
3291
|
-
holiday_lighting_period_begin_day_of_month: runner.getStringArgumentValue('holiday_lighting_period_begin_day_of_month', user_arguments),
|
3292
|
-
holiday_lighting_period_end_month: runner.getStringArgumentValue('holiday_lighting_period_end_month', user_arguments),
|
3293
|
-
holiday_lighting_period_end_day_of_month: runner.getStringArgumentValue('holiday_lighting_period_end_day_of_month', user_arguments),
|
3294
|
-
dehumidifier_present: runner.getBoolArgumentValue('dehumidifier_present', user_arguments),
|
3295
|
-
dehumidifier_efficiency_type: runner.getStringArgumentValue('dehumidifier_efficiency_type', user_arguments),
|
3296
|
-
dehumidifier_efficiency_ef: runner.getDoubleArgumentValue('dehumidifier_efficiency_ef', user_arguments),
|
3297
|
-
dehumidifier_efficiency_ief: runner.getDoubleArgumentValue('dehumidifier_efficiency_ief', user_arguments),
|
3298
|
-
dehumidifier_capacity: runner.getDoubleArgumentValue('dehumidifier_capacity', user_arguments),
|
3299
|
-
dehumidifier_rh_setpoint: runner.getDoubleArgumentValue('dehumidifier_rh_setpoint', user_arguments),
|
3300
|
-
dehumidifier_fraction_dehumidification_load_served: runner.getDoubleArgumentValue('dehumidifier_fraction_dehumidification_load_served', user_arguments),
|
3301
|
-
clothes_washer_present: runner.getBoolArgumentValue('clothes_washer_present', user_arguments),
|
3302
|
-
clothes_washer_location: runner.getStringArgumentValue('clothes_washer_location', user_arguments),
|
3303
|
-
clothes_washer_efficiency_type: runner.getStringArgumentValue('clothes_washer_efficiency_type', user_arguments),
|
3304
|
-
clothes_washer_efficiency_mef: runner.getStringArgumentValue('clothes_washer_efficiency_mef', user_arguments),
|
3305
|
-
clothes_washer_efficiency_imef: runner.getStringArgumentValue('clothes_washer_efficiency_imef', user_arguments),
|
3306
|
-
clothes_washer_rated_annual_kwh: runner.getStringArgumentValue('clothes_washer_rated_annual_kwh', user_arguments),
|
3307
|
-
clothes_washer_label_electric_rate: runner.getStringArgumentValue('clothes_washer_label_electric_rate', user_arguments),
|
3308
|
-
clothes_washer_label_gas_rate: runner.getStringArgumentValue('clothes_washer_label_gas_rate', user_arguments),
|
3309
|
-
clothes_washer_label_annual_gas_cost: runner.getStringArgumentValue('clothes_washer_label_annual_gas_cost', user_arguments),
|
3310
|
-
clothes_washer_label_usage: runner.getStringArgumentValue('clothes_washer_label_usage', user_arguments),
|
3311
|
-
clothes_washer_capacity: runner.getStringArgumentValue('clothes_washer_capacity', user_arguments),
|
3312
|
-
clothes_washer_usage_multiplier: runner.getDoubleArgumentValue('clothes_washer_usage_multiplier', user_arguments),
|
3313
|
-
clothes_dryer_present: runner.getBoolArgumentValue('clothes_dryer_present', user_arguments),
|
3314
|
-
clothes_dryer_location: runner.getStringArgumentValue('clothes_dryer_location', user_arguments),
|
3315
|
-
clothes_dryer_fuel_type: runner.getStringArgumentValue('clothes_dryer_fuel_type', user_arguments),
|
3316
|
-
clothes_dryer_efficiency_type: runner.getStringArgumentValue('clothes_dryer_efficiency_type', user_arguments),
|
3317
|
-
clothes_dryer_efficiency_ef: runner.getDoubleArgumentValue('clothes_dryer_efficiency_ef', user_arguments),
|
3318
|
-
clothes_dryer_efficiency_cef: runner.getStringArgumentValue('clothes_dryer_efficiency_cef', user_arguments),
|
3319
|
-
clothes_dryer_control_type: runner.getStringArgumentValue('clothes_dryer_control_type', user_arguments),
|
3320
|
-
clothes_dryer_vented_flow_rate: runner.getStringArgumentValue('clothes_dryer_vented_flow_rate', user_arguments),
|
3321
|
-
clothes_dryer_usage_multiplier: runner.getDoubleArgumentValue('clothes_dryer_usage_multiplier', user_arguments),
|
3322
|
-
dishwasher_present: runner.getBoolArgumentValue('dishwasher_present', user_arguments),
|
3323
|
-
dishwasher_location: runner.getStringArgumentValue('dishwasher_location', user_arguments),
|
3324
|
-
dishwasher_efficiency_type: runner.getStringArgumentValue('dishwasher_efficiency_type', user_arguments),
|
3325
|
-
dishwasher_efficiency_kwh: runner.getStringArgumentValue('dishwasher_efficiency_kwh', user_arguments),
|
3326
|
-
dishwasher_efficiency_ef: runner.getDoubleArgumentValue('dishwasher_efficiency_ef', user_arguments),
|
3327
|
-
dishwasher_label_electric_rate: runner.getStringArgumentValue('dishwasher_label_electric_rate', user_arguments),
|
3328
|
-
dishwasher_label_gas_rate: runner.getStringArgumentValue('dishwasher_label_gas_rate', user_arguments),
|
3329
|
-
dishwasher_label_annual_gas_cost: runner.getStringArgumentValue('dishwasher_label_annual_gas_cost', user_arguments),
|
3330
|
-
dishwasher_label_usage: runner.getStringArgumentValue('dishwasher_label_usage', user_arguments),
|
3331
|
-
dishwasher_place_setting_capacity: runner.getStringArgumentValue('dishwasher_place_setting_capacity', user_arguments),
|
3332
|
-
dishwasher_usage_multiplier: runner.getDoubleArgumentValue('dishwasher_usage_multiplier', user_arguments),
|
3333
|
-
refrigerator_present: runner.getBoolArgumentValue('refrigerator_present', user_arguments),
|
3334
|
-
refrigerator_location: runner.getStringArgumentValue('refrigerator_location', user_arguments),
|
3335
|
-
refrigerator_rated_annual_kwh: runner.getStringArgumentValue('refrigerator_rated_annual_kwh', user_arguments),
|
3336
|
-
refrigerator_usage_multiplier: runner.getDoubleArgumentValue('refrigerator_usage_multiplier', user_arguments),
|
3337
|
-
extra_refrigerator_present: runner.getBoolArgumentValue('extra_refrigerator_present', user_arguments),
|
3338
|
-
extra_refrigerator_location: runner.getStringArgumentValue('extra_refrigerator_location', user_arguments),
|
3339
|
-
extra_refrigerator_rated_annual_kwh: runner.getStringArgumentValue('extra_refrigerator_rated_annual_kwh', user_arguments),
|
3340
|
-
extra_refrigerator_usage_multiplier: runner.getDoubleArgumentValue('extra_refrigerator_usage_multiplier', user_arguments),
|
3341
|
-
freezer_present: runner.getBoolArgumentValue('freezer_present', user_arguments),
|
3342
|
-
freezer_location: runner.getStringArgumentValue('freezer_location', user_arguments),
|
3343
|
-
freezer_rated_annual_kwh: runner.getStringArgumentValue('freezer_rated_annual_kwh', user_arguments),
|
3344
|
-
freezer_usage_multiplier: runner.getDoubleArgumentValue('freezer_usage_multiplier', user_arguments),
|
3345
|
-
cooking_range_oven_present: runner.getBoolArgumentValue('cooking_range_oven_present', user_arguments),
|
3346
|
-
cooking_range_oven_location: runner.getStringArgumentValue('cooking_range_oven_location', user_arguments),
|
3347
|
-
cooking_range_oven_fuel_type: runner.getStringArgumentValue('cooking_range_oven_fuel_type', user_arguments),
|
3348
|
-
cooking_range_oven_is_induction: runner.getOptionalStringArgumentValue('cooking_range_oven_is_induction', user_arguments),
|
3349
|
-
cooking_range_oven_is_convection: runner.getOptionalStringArgumentValue('cooking_range_oven_is_convection', user_arguments),
|
3350
|
-
cooking_range_oven_usage_multiplier: runner.getDoubleArgumentValue('cooking_range_oven_usage_multiplier', user_arguments),
|
3351
|
-
ceiling_fan_present: runner.getBoolArgumentValue('ceiling_fan_present', user_arguments),
|
3352
|
-
ceiling_fan_efficiency: runner.getStringArgumentValue('ceiling_fan_efficiency', user_arguments),
|
3353
|
-
ceiling_fan_quantity: runner.getStringArgumentValue('ceiling_fan_quantity', user_arguments),
|
3354
|
-
ceiling_fan_cooling_setpoint_temp_offset: runner.getDoubleArgumentValue('ceiling_fan_cooling_setpoint_temp_offset', user_arguments),
|
3355
|
-
plug_loads_television_annual_kwh: runner.getStringArgumentValue('plug_loads_television_annual_kwh', user_arguments),
|
3356
|
-
plug_loads_television_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_television_usage_multiplier', user_arguments),
|
3357
|
-
plug_loads_other_annual_kwh: runner.getStringArgumentValue('plug_loads_other_annual_kwh', user_arguments),
|
3358
|
-
plug_loads_other_frac_sensible: runner.getStringArgumentValue('plug_loads_other_frac_sensible', user_arguments),
|
3359
|
-
plug_loads_other_frac_latent: runner.getStringArgumentValue('plug_loads_other_frac_latent', user_arguments),
|
3360
|
-
plug_loads_other_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_other_usage_multiplier', user_arguments),
|
3361
|
-
plug_loads_well_pump_present: runner.getBoolArgumentValue('plug_loads_well_pump_present', user_arguments),
|
3362
|
-
plug_loads_well_pump_annual_kwh: runner.getStringArgumentValue('plug_loads_well_pump_annual_kwh', user_arguments),
|
3363
|
-
plug_loads_well_pump_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_well_pump_usage_multiplier', user_arguments),
|
3364
|
-
plug_loads_vehicle_present: runner.getBoolArgumentValue('plug_loads_vehicle_present', user_arguments),
|
3365
|
-
plug_loads_vehicle_annual_kwh: runner.getStringArgumentValue('plug_loads_vehicle_annual_kwh', user_arguments),
|
3366
|
-
plug_loads_vehicle_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_vehicle_usage_multiplier', user_arguments),
|
3367
|
-
fuel_loads_grill_present: runner.getBoolArgumentValue('fuel_loads_grill_present', user_arguments),
|
3368
|
-
fuel_loads_grill_fuel_type: runner.getStringArgumentValue('fuel_loads_grill_fuel_type', user_arguments),
|
3369
|
-
fuel_loads_grill_annual_therm: runner.getStringArgumentValue('fuel_loads_grill_annual_therm', user_arguments),
|
3370
|
-
fuel_loads_grill_location: runner.getStringArgumentValue('fuel_loads_grill_location', user_arguments),
|
3371
|
-
fuel_loads_grill_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_grill_usage_multiplier', user_arguments),
|
3372
|
-
fuel_loads_lighting_present: runner.getBoolArgumentValue('fuel_loads_lighting_present', user_arguments),
|
3373
|
-
fuel_loads_lighting_fuel_type: runner.getStringArgumentValue('fuel_loads_lighting_fuel_type', user_arguments),
|
3374
|
-
fuel_loads_lighting_annual_therm: runner.getStringArgumentValue('fuel_loads_lighting_annual_therm', user_arguments),
|
3375
|
-
fuel_loads_lighting_location: runner.getStringArgumentValue('fuel_loads_lighting_location', user_arguments),
|
3376
|
-
fuel_loads_lighting_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_lighting_usage_multiplier', user_arguments),
|
3377
|
-
fuel_loads_fireplace_present: runner.getBoolArgumentValue('fuel_loads_fireplace_present', user_arguments),
|
3378
|
-
fuel_loads_fireplace_fuel_type: runner.getStringArgumentValue('fuel_loads_fireplace_fuel_type', user_arguments),
|
3379
|
-
fuel_loads_fireplace_annual_therm: runner.getStringArgumentValue('fuel_loads_fireplace_annual_therm', user_arguments),
|
3380
|
-
fuel_loads_fireplace_location: runner.getStringArgumentValue('fuel_loads_fireplace_location', user_arguments),
|
3381
|
-
fuel_loads_fireplace_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_fireplace_usage_multiplier', user_arguments),
|
3382
|
-
pool_present: runner.getBoolArgumentValue('pool_present', user_arguments),
|
3383
|
-
pool_pump_annual_kwh: runner.getStringArgumentValue('pool_pump_annual_kwh', user_arguments),
|
3384
|
-
pool_pump_usage_multiplier: runner.getDoubleArgumentValue('pool_pump_usage_multiplier', user_arguments),
|
3385
|
-
pool_heater_type: runner.getStringArgumentValue('pool_heater_type', user_arguments),
|
3386
|
-
pool_heater_annual_kwh: runner.getStringArgumentValue('pool_heater_annual_kwh', user_arguments),
|
3387
|
-
pool_heater_annual_therm: runner.getStringArgumentValue('pool_heater_annual_therm', user_arguments),
|
3388
|
-
pool_heater_usage_multiplier: runner.getDoubleArgumentValue('pool_heater_usage_multiplier', user_arguments),
|
3389
|
-
hot_tub_present: runner.getBoolArgumentValue('hot_tub_present', user_arguments),
|
3390
|
-
hot_tub_pump_annual_kwh: runner.getStringArgumentValue('hot_tub_pump_annual_kwh', user_arguments),
|
3391
|
-
hot_tub_pump_usage_multiplier: runner.getDoubleArgumentValue('hot_tub_pump_usage_multiplier', user_arguments),
|
3392
|
-
hot_tub_heater_type: runner.getStringArgumentValue('hot_tub_heater_type', user_arguments),
|
3393
|
-
hot_tub_heater_annual_kwh: runner.getStringArgumentValue('hot_tub_heater_annual_kwh', user_arguments),
|
3394
|
-
hot_tub_heater_annual_therm: runner.getStringArgumentValue('hot_tub_heater_annual_therm', user_arguments),
|
3395
|
-
hot_tub_heater_usage_multiplier: runner.getDoubleArgumentValue('hot_tub_heater_usage_multiplier', user_arguments) }
|
3396
|
-
end
|
3397
|
-
|
3398
2898
|
def validate_arguments(args)
|
3399
2899
|
warnings = []
|
3400
2900
|
errors = []
|
@@ -3460,9 +2960,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3460
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
|
3461
2961
|
|
3462
2962
|
# second heating system fraction heat load served non less than 50%
|
3463
|
-
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)
|
3464
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
|
3465
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
|
+
|
3466
2974
|
# single-family attached and num units, horizontal location not specified
|
3467
2975
|
error = (args[:geometry_unit_type] == HPXML::ResidentialTypeSFA) && (!args[:geometry_building_num_units].is_initialized || !args[:geometry_horizontal_location].is_initialized)
|
3468
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
|
@@ -3487,10 +2995,56 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3487
2995
|
warning = (args[:geometry_attic_type] == HPXML::AtticTypeConditioned) && (args[:geometry_roof_type] != 'flat') && (args[:ceiling_assembly_r] > 2.1)
|
3488
2996
|
warnings << "geometry_attic_type=#{args[:geometry_attic_type]} and ceiling_assembly_r=#{args[:ceiling_assembly_r]}" if warning
|
3489
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
|
+
|
3490
3002
|
# dhw indirect but no boiler
|
3491
3003
|
error = ((args[:water_heater_type] == HPXML::WaterHeaterTypeCombiStorage) || (args[:water_heater_type] == HPXML::WaterHeaterTypeCombiTankless)) && (args[:heating_system_type] != HPXML::HVACTypeBoiler)
|
3492
3004
|
errors << "water_heater_type=#{args[:water_heater_type]} and heating_system_type=#{args[:heating_system_type]}" if error
|
3493
3005
|
|
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
|
3029
|
+
|
3030
|
+
# no fuel loads but specifying usage multipliers
|
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)
|
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
|
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
|
+
|
3494
3048
|
return warnings, errors
|
3495
3049
|
end
|
3496
3050
|
|
@@ -3505,13 +3059,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3505
3059
|
is_valid = false
|
3506
3060
|
end
|
3507
3061
|
|
3508
|
-
# Validate input HPXML against
|
3509
|
-
|
3510
|
-
|
3062
|
+
# Validate input HPXML against schematron docs
|
3063
|
+
stron_paths = [File.join(schemas_dir, 'HPXMLvalidator.xml'),
|
3064
|
+
File.join(schemas_dir, 'EPvalidator.xml')]
|
3065
|
+
errors, warnings = Validator.run_validators(hpxml_doc, stron_paths)
|
3511
3066
|
errors.each do |error|
|
3512
3067
|
runner.registerError("#{hpxml_path}: #{error}")
|
3513
3068
|
is_valid = false
|
3514
3069
|
end
|
3070
|
+
warnings.each do |warning|
|
3071
|
+
runner.registerWarning("#{warning}")
|
3072
|
+
end
|
3515
3073
|
|
3516
3074
|
return is_valid
|
3517
3075
|
end
|
@@ -3519,9 +3077,7 @@ end
|
|
3519
3077
|
|
3520
3078
|
class HPXMLFile
|
3521
3079
|
def self.create(runner, model, args, epw_file)
|
3522
|
-
|
3523
|
-
|
3524
|
-
success = create_geometry_envelope(runner, model_geometry, args)
|
3080
|
+
success = create_geometry_envelope(runner, model, args)
|
3525
3081
|
return false if not success
|
3526
3082
|
|
3527
3083
|
success = create_schedules(runner, model, epw_file, args)
|
@@ -3529,27 +3085,30 @@ class HPXMLFile
|
|
3529
3085
|
|
3530
3086
|
hpxml = HPXML.new
|
3531
3087
|
|
3532
|
-
set_header(hpxml, runner, args)
|
3088
|
+
set_header(hpxml, runner, args, epw_file)
|
3533
3089
|
set_site(hpxml, runner, args)
|
3534
3090
|
set_neighbor_buildings(hpxml, runner, args)
|
3535
3091
|
set_building_occupancy(hpxml, runner, args)
|
3536
3092
|
set_building_construction(hpxml, runner, args)
|
3537
3093
|
set_climate_and_risk_zones(hpxml, runner, args, epw_file)
|
3538
3094
|
set_air_infiltration_measurements(hpxml, runner, args)
|
3539
|
-
|
3540
|
-
|
3541
|
-
|
3542
|
-
|
3543
|
-
|
3544
|
-
|
3545
|
-
|
3546
|
-
|
3547
|
-
|
3548
|
-
|
3549
|
-
|
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
|
+
|
3550
3108
|
set_heating_systems(hpxml, runner, args)
|
3551
3109
|
set_cooling_systems(hpxml, runner, args)
|
3552
3110
|
set_heat_pumps(hpxml, runner, args)
|
3111
|
+
set_secondary_heating_systems(hpxml, runner, args)
|
3553
3112
|
set_hvac_distribution(hpxml, runner, args)
|
3554
3113
|
set_hvac_control(hpxml, runner, args)
|
3555
3114
|
set_ventilation_fans(hpxml, runner, args)
|
@@ -3593,6 +3152,13 @@ class HPXMLFile
|
|
3593
3152
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeSlab
|
3594
3153
|
args[:geometry_foundation_height] = 0.0
|
3595
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
|
3596
3162
|
end
|
3597
3163
|
|
3598
3164
|
if args[:geometry_unit_type] == HPXML::ResidentialTypeSFD
|
@@ -3600,6 +3166,8 @@ class HPXMLFile
|
|
3600
3166
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeSFA
|
3601
3167
|
success = Geometry.create_single_family_attached(runner: runner, model: model, **args)
|
3602
3168
|
elsif args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3169
|
+
args[:geometry_roof_type] = 'flat'
|
3170
|
+
args[:geometry_attic_type] = HPXML::AtticTypeVented
|
3603
3171
|
success = Geometry.create_multifamily(runner: runner, model: model, **args)
|
3604
3172
|
end
|
3605
3173
|
return false if not success
|
@@ -3623,12 +3191,18 @@ class HPXMLFile
|
|
3623
3191
|
return true
|
3624
3192
|
end
|
3625
3193
|
|
3194
|
+
info_msgs = []
|
3195
|
+
|
3626
3196
|
# set the calendar year
|
3627
3197
|
year_description = model.getYearDescription
|
3628
3198
|
year_description.setCalendarYear(2007) # default to TMY
|
3199
|
+
if args[:simulation_control_run_period_calendar_year].is_initialized
|
3200
|
+
year_description.setCalendarYear(args[:simulation_control_run_period_calendar_year].get)
|
3201
|
+
end
|
3629
3202
|
if epw_file.startDateActualYear.is_initialized # AMY
|
3630
3203
|
year_description.setCalendarYear(epw_file.startDateActualYear.get)
|
3631
3204
|
end
|
3205
|
+
info_msgs << "CalendarYear=#{year_description.calendarYear}"
|
3632
3206
|
|
3633
3207
|
# set the timestep
|
3634
3208
|
timestep = model.getTimestep
|
@@ -3636,8 +3210,13 @@ class HPXMLFile
|
|
3636
3210
|
if args[:simulation_control_timestep].is_initialized
|
3637
3211
|
timestep.setNumberOfTimestepsPerHour(60 / args[:simulation_control_timestep].get)
|
3638
3212
|
end
|
3213
|
+
info_msgs << "NumberOfTimestepsPerHour=#{timestep.numberOfTimestepsPerHour}"
|
3214
|
+
|
3215
|
+
# get the seed
|
3216
|
+
random_seed = args[:schedules_random_seed].get if args[:schedules_random_seed].is_initialized
|
3639
3217
|
|
3640
|
-
|
3218
|
+
# instantiate the generator
|
3219
|
+
schedule_generator = ScheduleGenerator.new(runner: runner, model: model, epw_file: epw_file, random_seed: random_seed)
|
3641
3220
|
|
3642
3221
|
# create the schedule
|
3643
3222
|
if args[:geometry_num_occupants] == Constants.Auto
|
@@ -3650,14 +3229,16 @@ class HPXMLFile
|
|
3650
3229
|
return false if not success
|
3651
3230
|
|
3652
3231
|
# export the schedule
|
3653
|
-
args[:schedules_path] = '
|
3232
|
+
args[:schedules_path] = "../#{File.basename(args[:hpxml_path], '.xml')}_schedules.csv"
|
3654
3233
|
success = schedule_generator.export(schedules_path: File.expand_path(args[:schedules_path]))
|
3655
3234
|
return false if not success
|
3656
3235
|
|
3236
|
+
runner.registerInfo("Created schedule with #{info_msgs.join(', ')}")
|
3237
|
+
|
3657
3238
|
return true
|
3658
3239
|
end
|
3659
3240
|
|
3660
|
-
def self.set_header(hpxml, runner, args)
|
3241
|
+
def self.set_header(hpxml, runner, args, epw_file)
|
3661
3242
|
hpxml.header.xml_type = 'HPXML'
|
3662
3243
|
hpxml.header.xml_generated_by = 'BuildResidentialHPXML'
|
3663
3244
|
hpxml.header.transaction = 'create'
|
@@ -3678,13 +3259,13 @@ class HPXMLFile
|
|
3678
3259
|
hpxml.header.sim_begin_month = args[:simulation_control_run_period_begin_month].get
|
3679
3260
|
end
|
3680
3261
|
if args[:simulation_control_run_period_begin_day_of_month].is_initialized
|
3681
|
-
hpxml.header.
|
3262
|
+
hpxml.header.sim_begin_day = args[:simulation_control_run_period_begin_day_of_month].get
|
3682
3263
|
end
|
3683
3264
|
if args[:simulation_control_run_period_end_month].is_initialized
|
3684
3265
|
hpxml.header.sim_end_month = args[:simulation_control_run_period_end_month].get
|
3685
3266
|
end
|
3686
3267
|
if args[:simulation_control_run_period_end_day_of_month].is_initialized
|
3687
|
-
hpxml.header.
|
3268
|
+
hpxml.header.sim_end_day = args[:simulation_control_run_period_end_day_of_month].get
|
3688
3269
|
end
|
3689
3270
|
if args[:simulation_control_run_period_calendar_year].is_initialized
|
3690
3271
|
hpxml.header.sim_calendar_year = args[:simulation_control_run_period_calendar_year].get
|
@@ -3697,50 +3278,47 @@ class HPXMLFile
|
|
3697
3278
|
hpxml.header.dst_begin_month = args[:simulation_control_daylight_saving_begin_month].get
|
3698
3279
|
end
|
3699
3280
|
if args[:simulation_control_daylight_saving_begin_day_of_month].is_initialized
|
3700
|
-
hpxml.header.
|
3281
|
+
hpxml.header.dst_begin_day = args[:simulation_control_daylight_saving_begin_day_of_month].get
|
3701
3282
|
end
|
3702
3283
|
if args[:simulation_control_daylight_saving_end_month].is_initialized
|
3703
3284
|
hpxml.header.dst_end_month = args[:simulation_control_daylight_saving_end_month].get
|
3704
3285
|
end
|
3705
3286
|
if args[:simulation_control_daylight_saving_end_day_of_month].is_initialized
|
3706
|
-
hpxml.header.
|
3287
|
+
hpxml.header.dst_end_day = args[:simulation_control_daylight_saving_end_day_of_month].get
|
3707
3288
|
end
|
3708
3289
|
|
3709
3290
|
hpxml.header.building_id = 'MyBuilding'
|
3291
|
+
hpxml.header.state_code = epw_file.stateProvinceRegion
|
3710
3292
|
hpxml.header.event_type = 'proposed workscope'
|
3711
3293
|
hpxml.header.schedules_path = args[:schedules_path]
|
3712
3294
|
end
|
3713
3295
|
|
3714
3296
|
def self.set_site(hpxml, runner, args)
|
3715
|
-
if args[:
|
3716
|
-
|
3297
|
+
if args[:air_leakage_shielding_of_home] != Constants.Auto
|
3298
|
+
shielding_of_home = args[:air_leakage_shielding_of_home]
|
3717
3299
|
end
|
3718
3300
|
|
3719
3301
|
if args[:site_type].is_initialized
|
3720
3302
|
hpxml.site.site_type = args[:site_type].get
|
3721
3303
|
end
|
3722
3304
|
|
3723
|
-
hpxml.site.
|
3305
|
+
hpxml.site.shielding_of_home = shielding_of_home
|
3724
3306
|
end
|
3725
3307
|
|
3726
3308
|
def self.set_neighbor_buildings(hpxml, runner, args)
|
3727
|
-
[args[:neighbor_front_distance], args[:
|
3728
|
-
|
3309
|
+
nbr_map = { Constants.FacadeFront => [args[:neighbor_front_distance], args[:neighbor_front_height]],
|
3310
|
+
Constants.FacadeBack => [args[:neighbor_back_distance], args[:neighbor_back_height]],
|
3311
|
+
Constants.FacadeLeft => [args[:neighbor_left_distance], args[:neighbor_left_height]],
|
3312
|
+
Constants.FacadeRight => [args[:neighbor_right_distance], args[:neighbor_right_height]] }
|
3729
3313
|
|
3730
|
-
|
3731
|
-
|
3732
|
-
|
3733
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
3734
|
-
elsif i == 2 # left
|
3735
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
3736
|
-
elsif i == 3 # right
|
3737
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
3738
|
-
end
|
3314
|
+
nbr_map.each do |facade, data|
|
3315
|
+
distance, neighbor_height = data
|
3316
|
+
next if distance == 0
|
3739
3317
|
|
3740
|
-
|
3318
|
+
azimuth = get_azimuth_from_facade(facade, args)
|
3741
3319
|
|
3742
|
-
if (distance > 0) && (neighbor_height
|
3743
|
-
height = Float(neighbor_height
|
3320
|
+
if (distance > 0) && (neighbor_height != Constants.Auto)
|
3321
|
+
height = Float(neighbor_height)
|
3744
3322
|
end
|
3745
3323
|
|
3746
3324
|
hpxml.neighbor_buildings.add(azimuth: azimuth,
|
@@ -3756,11 +3334,15 @@ class HPXMLFile
|
|
3756
3334
|
end
|
3757
3335
|
|
3758
3336
|
def self.set_building_construction(hpxml, runner, args)
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3762
|
-
|
3763
|
-
|
3337
|
+
if args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3338
|
+
number_of_conditioned_floors_above_grade = 1
|
3339
|
+
number_of_conditioned_floors = 1
|
3340
|
+
else
|
3341
|
+
number_of_conditioned_floors_above_grade = args[:geometry_num_floors_above_grade]
|
3342
|
+
number_of_conditioned_floors = number_of_conditioned_floors_above_grade
|
3343
|
+
if args[:geometry_foundation_type] == HPXML::FoundationTypeBasementConditioned
|
3344
|
+
number_of_conditioned_floors += 1
|
3345
|
+
end
|
3764
3346
|
end
|
3765
3347
|
|
3766
3348
|
if args[:geometry_num_bathrooms] != Constants.Auto
|
@@ -3777,11 +3359,9 @@ class HPXMLFile
|
|
3777
3359
|
hpxml.building_construction.conditioned_building_volume = conditioned_building_volume
|
3778
3360
|
hpxml.building_construction.average_ceiling_height = args[:geometry_wall_height]
|
3779
3361
|
hpxml.building_construction.residential_facility_type = args[:geometry_unit_type]
|
3780
|
-
|
3781
|
-
|
3782
|
-
|
3783
|
-
(args[:water_heater_type] != 'none' && args[:water_heater_has_flue_or_chimney])
|
3784
|
-
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
|
3785
3365
|
end
|
3786
3366
|
end
|
3787
3367
|
|
@@ -3820,7 +3400,6 @@ class HPXMLFile
|
|
3820
3400
|
|
3821
3401
|
def self.set_attics(hpxml, runner, model, args)
|
3822
3402
|
return if args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3823
|
-
return if args[:geometry_unit_type] == HPXML::ResidentialTypeSFA # TODO: remove when we can model single-family attached units
|
3824
3403
|
|
3825
3404
|
if args[:geometry_roof_type] == 'flat'
|
3826
3405
|
hpxml.attics.add(id: HPXML::AtticTypeFlatRoof,
|
@@ -3839,6 +3418,11 @@ class HPXMLFile
|
|
3839
3418
|
end
|
3840
3419
|
|
3841
3420
|
def self.set_roofs(hpxml, runner, model, args)
|
3421
|
+
args[:geometry_roof_pitch] *= 12.0
|
3422
|
+
if args[:geometry_roof_type] == 'flat'
|
3423
|
+
args[:geometry_roof_pitch] = 0.0
|
3424
|
+
end
|
3425
|
+
|
3842
3426
|
model.getSurfaces.sort.each do |surface|
|
3843
3427
|
next unless ['Outdoors'].include? surface.outsideBoundaryCondition
|
3844
3428
|
next if surface.surfaceType != 'RoofCeiling'
|
@@ -3846,40 +3430,33 @@ class HPXMLFile
|
|
3846
3430
|
interior_adjacent_to = get_adjacent_to(surface)
|
3847
3431
|
next if [HPXML::LocationOtherHousingUnit].include? interior_adjacent_to
|
3848
3432
|
|
3849
|
-
pitch = args[:geometry_roof_pitch] * 12.0
|
3850
|
-
if args[:geometry_roof_type] == 'flat'
|
3851
|
-
pitch = 0.0
|
3852
|
-
end
|
3853
|
-
|
3854
3433
|
if args[:roof_material_type].is_initialized
|
3855
3434
|
roof_type = args[:roof_material_type].get
|
3856
3435
|
end
|
3857
3436
|
|
3858
|
-
if args[:roof_color] == Constants.Auto && args[:roof_solar_absorptance] == Constants.Auto
|
3859
|
-
solar_absorptance = 0.7
|
3860
|
-
end
|
3861
|
-
|
3862
3437
|
if args[:roof_color] != Constants.Auto
|
3863
3438
|
roof_color = args[:roof_color]
|
3864
3439
|
end
|
3865
3440
|
|
3866
|
-
|
3867
|
-
solar_absorptance = args[:roof_solar_absorptance]
|
3868
|
-
end
|
3869
|
-
|
3441
|
+
radiant_barrier = args[:roof_radiant_barrier]
|
3870
3442
|
if args[:roof_radiant_barrier]
|
3871
3443
|
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
3872
3444
|
end
|
3873
3445
|
|
3446
|
+
if args[:geometry_roof_type] == 'flat'
|
3447
|
+
azimuth = nil
|
3448
|
+
else
|
3449
|
+
azimuth = get_surface_azimuth(surface, args)
|
3450
|
+
end
|
3451
|
+
|
3874
3452
|
hpxml.roofs.add(id: valid_attr(surface.name),
|
3875
3453
|
interior_adjacent_to: get_adjacent_to(surface),
|
3454
|
+
azimuth: azimuth,
|
3876
3455
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3877
3456
|
roof_type: roof_type,
|
3878
3457
|
roof_color: roof_color,
|
3879
|
-
|
3880
|
-
|
3881
|
-
pitch: pitch,
|
3882
|
-
radiant_barrier: args[:roof_radiant_barrier],
|
3458
|
+
pitch: args[:geometry_roof_pitch],
|
3459
|
+
radiant_barrier: radiant_barrier,
|
3883
3460
|
radiant_barrier_grade: radiant_barrier_grade,
|
3884
3461
|
insulation_assembly_r_value: args[:roof_assembly_r])
|
3885
3462
|
end
|
@@ -3887,41 +3464,108 @@ class HPXMLFile
|
|
3887
3464
|
|
3888
3465
|
def self.set_rim_joists(hpxml, runner, model, args)
|
3889
3466
|
model.getSurfaces.sort.each do |surface|
|
3890
|
-
|
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]
|
3518
|
+
end
|
3519
|
+
return 0
|
3520
|
+
end
|
3521
|
+
|
3522
|
+
def self.get_adiabatic_adjacent_surface(model, surface)
|
3523
|
+
return if surface.outsideBoundaryCondition != 'Adiabatic'
|
3524
|
+
|
3525
|
+
adjacentSurfaceType = 'Wall'
|
3526
|
+
if surface.surfaceType == 'RoofCeiling'
|
3527
|
+
adjacentSurfaceType = 'Floor'
|
3528
|
+
elsif surface.surfaceType == 'Floor'
|
3529
|
+
adjacentSurfaceType = 'RoofCeiling'
|
3530
|
+
end
|
3531
|
+
|
3532
|
+
model.getSurfaces.sort.each do |adjacent_surface|
|
3533
|
+
next if surface == adjacent_surface
|
3534
|
+
next if adjacent_surface.surfaceType != adjacentSurfaceType
|
3535
|
+
next if adjacent_surface.outsideBoundaryCondition != 'Adiabatic'
|
3536
|
+
next if Geometry.getSurfaceXValues([surface]) != Geometry.getSurfaceXValues([adjacent_surface])
|
3537
|
+
next if Geometry.getSurfaceYValues([surface]) != Geometry.getSurfaceYValues([adjacent_surface])
|
3538
|
+
next if Geometry.getSurfaceZValues([surface]) != Geometry.getSurfaceZValues([adjacent_surface])
|
3539
|
+
|
3540
|
+
return adjacent_surface
|
3891
3541
|
end
|
3542
|
+
return
|
3892
3543
|
end
|
3893
3544
|
|
3894
3545
|
def self.set_walls(hpxml, runner, model, args)
|
3895
3546
|
model.getSurfaces.sort.each do |surface|
|
3896
3547
|
next if surface.surfaceType != 'Wall'
|
3548
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
3897
3549
|
|
3898
3550
|
interior_adjacent_to = get_adjacent_to(surface)
|
3899
|
-
|
3900
|
-
has_door = false
|
3901
|
-
surface.subSurfaces.each do |sub_surface|
|
3902
|
-
next if sub_surface.subSurfaceType != 'Door'
|
3903
|
-
|
3904
|
-
has_door = true
|
3905
|
-
end
|
3906
|
-
next unless has_door
|
3907
|
-
else
|
3908
|
-
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
3909
|
-
end
|
3551
|
+
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
3910
3552
|
|
3911
3553
|
exterior_adjacent_to = HPXML::LocationOutside
|
3912
3554
|
if surface.adjacentSurface.is_initialized
|
3913
3555
|
exterior_adjacent_to = get_adjacent_to(surface.adjacentSurface.get)
|
3914
|
-
elsif surface.outsideBoundaryCondition == 'Adiabatic'
|
3915
|
-
|
3556
|
+
elsif surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to living space, attic, corridor
|
3557
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
3558
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
3559
|
+
exterior_adjacent_to = interior_adjacent_to
|
3560
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
3561
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3562
|
+
end
|
3563
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
3564
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
3565
|
+
end
|
3916
3566
|
end
|
3917
3567
|
|
3918
|
-
if
|
3919
|
-
interior_adjacent_to = HPXML::LocationLivingSpace
|
3920
|
-
exterior_adjacent_to == HPXML::LocationOtherHousingUnit
|
3921
|
-
else
|
3922
|
-
next if interior_adjacent_to == exterior_adjacent_to
|
3923
|
-
end
|
3924
|
-
next if [HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include? exterior_adjacent_to
|
3568
|
+
next if exterior_adjacent_to == HPXML::LocationLivingSpace # already captured these surfaces
|
3925
3569
|
|
3926
3570
|
wall_type = args[:wall_type]
|
3927
3571
|
if [HPXML::LocationAtticUnvented, HPXML::LocationAtticVented].include? interior_adjacent_to
|
@@ -3944,15 +3588,22 @@ class HPXMLFile
|
|
3944
3588
|
solar_absorptance = args[:wall_solar_absorptance]
|
3945
3589
|
end
|
3946
3590
|
|
3591
|
+
if args[:wall_emittance] != Constants.Auto
|
3592
|
+
emittance = args[:wall_emittance]
|
3593
|
+
end
|
3594
|
+
|
3595
|
+
azimuth = get_surface_azimuth(surface, args)
|
3596
|
+
|
3947
3597
|
hpxml.walls.add(id: valid_attr(surface.name),
|
3948
3598
|
exterior_adjacent_to: exterior_adjacent_to,
|
3949
3599
|
interior_adjacent_to: interior_adjacent_to,
|
3600
|
+
azimuth: azimuth,
|
3950
3601
|
wall_type: wall_type,
|
3951
3602
|
siding: siding,
|
3952
3603
|
color: color,
|
3953
3604
|
solar_absorptance: solar_absorptance,
|
3954
3605
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3955
|
-
emittance:
|
3606
|
+
emittance: emittance)
|
3956
3607
|
|
3957
3608
|
is_uncond_attic_roof_insulated = false
|
3958
3609
|
if [HPXML::LocationAtticUnvented, HPXML::LocationAtticVented].include? interior_adjacent_to
|
@@ -3973,26 +3624,58 @@ class HPXMLFile
|
|
3973
3624
|
|
3974
3625
|
def self.set_foundation_walls(hpxml, runner, model, args)
|
3975
3626
|
model.getSurfaces.sort.each do |surface|
|
3976
|
-
next unless ['Foundation'].include? surface.outsideBoundaryCondition
|
3977
3627
|
next if surface.surfaceType != 'Wall'
|
3628
|
+
next unless ['Foundation', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
3629
|
+
next if Geometry.surface_is_rim_joist(surface, args[:geometry_rim_joist_height])
|
3630
|
+
|
3631
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
3632
|
+
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
3633
|
+
|
3634
|
+
exterior_adjacent_to = HPXML::LocationGround
|
3635
|
+
if surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to foundation space
|
3636
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
3637
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
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
|
3643
|
+
end
|
3644
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
3645
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
3646
|
+
end
|
3647
|
+
end
|
3978
3648
|
|
3979
3649
|
if args[:foundation_wall_assembly_r].is_initialized && (args[:foundation_wall_assembly_r].get > 0)
|
3980
3650
|
insulation_assembly_r_value = args[:foundation_wall_assembly_r]
|
3981
3651
|
else
|
3982
|
-
|
3983
|
-
|
3984
|
-
|
3652
|
+
if interior_adjacent_to == exterior_adjacent_to # E.g., don't insulate wall between basement and neighbor basement
|
3653
|
+
insulation_exterior_r_value = 0
|
3654
|
+
insulation_exterior_distance_to_top = 0
|
3655
|
+
insulation_exterior_distance_to_bottom = 0
|
3656
|
+
else
|
3657
|
+
insulation_exterior_r_value = args[:foundation_wall_insulation_r]
|
3658
|
+
insulation_exterior_distance_to_top = args[:foundation_wall_insulation_distance_to_top]
|
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
|
3663
|
+
end
|
3985
3664
|
insulation_interior_r_value = 0
|
3986
3665
|
insulation_interior_distance_to_top = 0
|
3987
3666
|
insulation_interior_distance_to_bottom = 0
|
3988
3667
|
end
|
3989
3668
|
|
3669
|
+
if args[:foundation_wall_thickness] != Constants.Auto
|
3670
|
+
thickness = args[:foundation_wall_thickness]
|
3671
|
+
end
|
3672
|
+
|
3990
3673
|
hpxml.foundation_walls.add(id: valid_attr(surface.name),
|
3991
|
-
exterior_adjacent_to:
|
3992
|
-
interior_adjacent_to:
|
3674
|
+
exterior_adjacent_to: exterior_adjacent_to,
|
3675
|
+
interior_adjacent_to: interior_adjacent_to,
|
3993
3676
|
height: args[:geometry_foundation_height],
|
3994
3677
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3995
|
-
thickness:
|
3678
|
+
thickness: thickness,
|
3996
3679
|
depth_below_grade: args[:geometry_foundation_height] - args[:geometry_foundation_height_above_grade],
|
3997
3680
|
insulation_assembly_r_value: insulation_assembly_r_value,
|
3998
3681
|
insulation_interior_r_value: insulation_interior_r_value,
|
@@ -4067,6 +3750,11 @@ class HPXMLFile
|
|
4067
3750
|
has_foundation_walls = true
|
4068
3751
|
end
|
4069
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
|
4070
3758
|
|
4071
3759
|
if [HPXML::LocationLivingSpace, HPXML::LocationGarage].include? interior_adjacent_to
|
4072
3760
|
depth_below_grade = 0
|
@@ -4078,11 +3766,22 @@ class HPXMLFile
|
|
4078
3766
|
under_slab_insulation_width = args[:slab_under_width]
|
4079
3767
|
end
|
4080
3768
|
|
4081
|
-
|
3769
|
+
if args[:slab_thickness] != Constants.Auto
|
3770
|
+
thickness = args[:slab_thickness]
|
3771
|
+
end
|
3772
|
+
|
4082
3773
|
if interior_adjacent_to.include? 'crawlspace'
|
4083
3774
|
thickness = 0.0 # Assume soil
|
4084
3775
|
end
|
4085
3776
|
|
3777
|
+
if args[:slab_carpet_fraction] != Constants.Auto
|
3778
|
+
carpet_fraction = args[:slab_carpet_fraction]
|
3779
|
+
end
|
3780
|
+
|
3781
|
+
if args[:slab_carpet_r] != Constants.Auto
|
3782
|
+
carpet_r_value = args[:slab_carpet_r]
|
3783
|
+
end
|
3784
|
+
|
4086
3785
|
hpxml.slabs.add(id: valid_attr(surface.name),
|
4087
3786
|
interior_adjacent_to: interior_adjacent_to,
|
4088
3787
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
@@ -4094,8 +3793,8 @@ class HPXMLFile
|
|
4094
3793
|
under_slab_insulation_r_value: args[:slab_under_insulation_r],
|
4095
3794
|
under_slab_insulation_spans_entire_slab: under_slab_insulation_spans_entire_slab,
|
4096
3795
|
depth_below_grade: depth_below_grade,
|
4097
|
-
carpet_fraction:
|
4098
|
-
carpet_r_value:
|
3796
|
+
carpet_fraction: carpet_fraction,
|
3797
|
+
carpet_r_value: carpet_r_value)
|
4099
3798
|
end
|
4100
3799
|
end
|
4101
3800
|
|
@@ -4107,51 +3806,41 @@ class HPXMLFile
|
|
4107
3806
|
sub_surface_height = Geometry.get_surface_height(sub_surface)
|
4108
3807
|
sub_surface_facade = Geometry.get_facade_for_surface(sub_surface)
|
4109
3808
|
|
4110
|
-
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)
|
4111
3810
|
overhangs_depth = args[:overhangs_front_depth]
|
4112
3811
|
overhangs_distance_to_top_of_window = args[:overhangs_front_distance_to_top_of_window]
|
4113
3812
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4114
|
-
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)
|
4115
3814
|
overhangs_depth = args[:overhangs_back_depth]
|
4116
3815
|
overhangs_distance_to_top_of_window = args[:overhangs_back_distance_to_top_of_window]
|
4117
3816
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4118
|
-
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)
|
4119
3818
|
overhangs_depth = args[:overhangs_left_depth]
|
4120
3819
|
overhangs_distance_to_top_of_window = args[:overhangs_left_distance_to_top_of_window]
|
4121
3820
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4122
|
-
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)
|
4123
3822
|
overhangs_depth = args[:overhangs_right_depth]
|
4124
3823
|
overhangs_distance_to_top_of_window = args[:overhangs_right_distance_to_top_of_window]
|
4125
3824
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4126
3825
|
elsif args[:geometry_eaves_depth] > 0
|
4127
|
-
|
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
|
4128
3831
|
if args[:geometry_foundation_type] == HPXML::FoundationTypeAmbient
|
4129
3832
|
eaves_z += args[:geometry_foundation_height]
|
4130
3833
|
end
|
4131
|
-
|
4132
|
-
|
4133
|
-
|
4134
|
-
|
4135
|
-
z = vertex.z + z_origin
|
4136
|
-
next if z < sub_surface_z
|
4137
|
-
|
4138
|
-
sub_surface_z = z
|
4139
|
-
end
|
4140
|
-
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
|
+
|
4141
3838
|
overhangs_depth = args[:geometry_eaves_depth]
|
4142
|
-
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
|
4143
3840
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4144
3841
|
end
|
4145
3842
|
|
4146
|
-
|
4147
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 0, args[:geometry_orientation], 0)
|
4148
|
-
elsif sub_surface_facade == Constants.FacadeBack
|
4149
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
4150
|
-
elsif sub_surface_facade == Constants.FacadeLeft
|
4151
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
4152
|
-
elsif sub_surface_facade == Constants.FacadeRight
|
4153
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
4154
|
-
end
|
3843
|
+
azimuth = get_azimuth_from_facade(sub_surface_facade, args)
|
4155
3844
|
|
4156
3845
|
if args[:window_interior_shading_winter].is_initialized
|
4157
3846
|
interior_shading_factor_winter = args[:window_interior_shading_winter].get
|
@@ -4161,6 +3850,14 @@ class HPXMLFile
|
|
4161
3850
|
interior_shading_factor_summer = args[:window_interior_shading_summer].get
|
4162
3851
|
end
|
4163
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
|
+
|
4164
3861
|
if args[:window_fraction_operable].is_initialized
|
4165
3862
|
fraction_operable = args[:window_fraction_operable].get
|
4166
3863
|
end
|
@@ -4175,6 +3872,8 @@ class HPXMLFile
|
|
4175
3872
|
overhangs_distance_to_bottom_of_window: overhangs_distance_to_bottom_of_window,
|
4176
3873
|
interior_shading_factor_winter: interior_shading_factor_winter,
|
4177
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,
|
4178
3877
|
fraction_operable: fraction_operable,
|
4179
3878
|
wall_idref: valid_attr(surface.name))
|
4180
3879
|
end # sub_surfaces
|
@@ -4200,13 +3899,21 @@ class HPXMLFile
|
|
4200
3899
|
|
4201
3900
|
def self.set_doors(hpxml, runner, model, args)
|
4202
3901
|
model.getSurfaces.sort.each do |surface|
|
3902
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
3903
|
+
|
3904
|
+
adjacent_surface = surface
|
3905
|
+
if [HPXML::LocationOtherHousingUnit].include?(interior_adjacent_to)
|
3906
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
3907
|
+
next if adjacent_surface.nil?
|
3908
|
+
end
|
3909
|
+
|
4203
3910
|
surface.subSurfaces.sort.each do |sub_surface|
|
4204
3911
|
next if sub_surface.subSurfaceType != 'Door'
|
4205
3912
|
|
4206
3913
|
sub_surface_facade = Geometry.get_facade_for_surface(sub_surface)
|
4207
3914
|
|
4208
3915
|
hpxml.doors.add(id: "#{valid_attr(sub_surface.name)}_#{sub_surface_facade}",
|
4209
|
-
wall_idref: valid_attr(
|
3916
|
+
wall_idref: valid_attr(adjacent_surface.name),
|
4210
3917
|
area: UnitConversions.convert(sub_surface.grossArea, 'm^2', 'ft^2').round,
|
4211
3918
|
azimuth: args[:geometry_orientation],
|
4212
3919
|
r_value: args[:door_rvalue])
|
@@ -4223,67 +3930,49 @@ class HPXMLFile
|
|
4223
3930
|
heating_capacity = args[:heating_system_heating_capacity]
|
4224
3931
|
end
|
4225
3932
|
|
4226
|
-
if args[:heating_system_electric_auxiliary_energy].is_initialized
|
4227
|
-
if args[:heating_system_electric_auxiliary_energy].get > 0
|
4228
|
-
electric_auxiliary_energy = args[:heating_system_electric_auxiliary_energy].get
|
4229
|
-
end
|
4230
|
-
end
|
4231
|
-
|
4232
3933
|
if heating_system_type == HPXML::HVACTypeElectricResistance
|
4233
3934
|
heating_system_fuel = HPXML::FuelTypeElectricity
|
4234
3935
|
else
|
4235
3936
|
heating_system_fuel = args[:heating_system_fuel]
|
4236
3937
|
end
|
4237
3938
|
|
4238
|
-
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)
|
4239
3940
|
heating_efficiency_afue = args[:heating_system_heating_efficiency]
|
4240
|
-
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)
|
4241
3942
|
heating_efficiency_percent = args[:heating_system_heating_efficiency]
|
4242
3943
|
end
|
4243
3944
|
|
4244
|
-
|
4245
|
-
|
4246
|
-
|
4247
|
-
|
4248
|
-
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served],
|
4249
|
-
electric_auxiliary_energy: electric_auxiliary_energy,
|
4250
|
-
heating_efficiency_afue: heating_efficiency_afue,
|
4251
|
-
heating_efficiency_percent: heating_efficiency_percent)
|
4252
|
-
|
4253
|
-
heating_system_type_2 = args[:heating_system_type_2]
|
4254
|
-
|
4255
|
-
return if heating_system_type_2 == 'none'
|
4256
|
-
|
4257
|
-
if args[:heating_system_heating_capacity_2] != Constants.Auto
|
4258
|
-
heating_capacity_2 = args[:heating_system_heating_capacity_2]
|
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
|
3948
|
+
end
|
4259
3949
|
end
|
4260
3950
|
|
4261
|
-
|
4262
|
-
|
4263
|
-
|
4264
|
-
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]
|
4265
3954
|
end
|
4266
3955
|
|
4267
|
-
if
|
4268
|
-
|
4269
|
-
|
4270
|
-
|
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
|
4271
3960
|
end
|
4272
3961
|
|
4273
|
-
if
|
4274
|
-
|
4275
|
-
elsif [HPXML::HVACTypeElectricResistance, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace].include? heating_system_type_2
|
4276
|
-
heating_efficiency_percent_2 = args[:heating_system_heating_efficiency_2]
|
3962
|
+
if heating_system_type.include?(HPXML::HVACTypeBoiler)
|
3963
|
+
heating_system_type = HPXML::HVACTypeBoiler
|
4277
3964
|
end
|
4278
3965
|
|
4279
|
-
hpxml.heating_systems.add(id: '
|
4280
|
-
heating_system_type:
|
4281
|
-
heating_system_fuel:
|
4282
|
-
heating_capacity:
|
4283
|
-
fraction_heat_load_served:
|
4284
|
-
|
4285
|
-
|
4286
|
-
|
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)
|
4287
3976
|
end
|
4288
3977
|
|
4289
3978
|
def self.set_cooling_systems(hpxml, runner, args)
|
@@ -4291,10 +3980,8 @@ class HPXMLFile
|
|
4291
3980
|
|
4292
3981
|
return if cooling_system_type == 'none'
|
4293
3982
|
|
4294
|
-
if
|
4295
|
-
|
4296
|
-
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4297
|
-
end
|
3983
|
+
if args[:cooling_system_cooling_capacity] != Constants.Auto
|
3984
|
+
cooling_capacity = args[:cooling_system_cooling_capacity]
|
4298
3985
|
end
|
4299
3986
|
|
4300
3987
|
if args[:cooling_system_cooling_compressor_type].is_initialized
|
@@ -4309,10 +3996,22 @@ class HPXMLFile
|
|
4309
3996
|
end
|
4310
3997
|
end
|
4311
3998
|
|
4312
|
-
if [
|
4313
|
-
cooling_efficiency_seer = args[:
|
4314
|
-
elsif [HPXML::
|
4315
|
-
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
|
4009
|
+
end
|
4010
|
+
|
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
|
4014
|
+
end
|
4316
4015
|
end
|
4317
4016
|
|
4318
4017
|
hpxml.cooling_systems.add(id: 'CoolingSystem',
|
@@ -4323,7 +4022,9 @@ class HPXMLFile
|
|
4323
4022
|
compressor_type: compressor_type,
|
4324
4023
|
cooling_shr: cooling_shr,
|
4325
4024
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4326
|
-
cooling_efficiency_eer: cooling_efficiency_eer
|
4025
|
+
cooling_efficiency_eer: cooling_efficiency_eer,
|
4026
|
+
airflow_defect_ratio: airflow_defect_ratio,
|
4027
|
+
charge_defect_ratio: charge_defect_ratio)
|
4327
4028
|
end
|
4328
4029
|
|
4329
4030
|
def self.set_heat_pumps(hpxml, runner, args)
|
@@ -4336,8 +4037,8 @@ class HPXMLFile
|
|
4336
4037
|
end
|
4337
4038
|
|
4338
4039
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump_type
|
4339
|
-
if args[:
|
4340
|
-
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]
|
4341
4042
|
end
|
4342
4043
|
end
|
4343
4044
|
|
@@ -4374,22 +4075,33 @@ class HPXMLFile
|
|
4374
4075
|
cooling_shr = args[:heat_pump_cooling_sensible_heat_fraction].get
|
4375
4076
|
end
|
4376
4077
|
|
4377
|
-
if [
|
4378
|
-
heating_efficiency_hspf = args[:
|
4379
|
-
|
4380
|
-
|
4381
|
-
|
4382
|
-
cooling_efficiency_eer = args[:heat_pump_cooling_efficiency_eer]
|
4383
|
-
|
4384
|
-
if args[:heat_pump_ground_to_air_pump_power].is_initialized
|
4385
|
-
pump_watts_per_ton = args[:heat_pump_ground_to_air_pump_power].get
|
4386
|
-
end
|
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
|
4387
4083
|
|
4388
|
-
|
4389
|
-
|
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
|
4390
4093
|
end
|
4391
4094
|
end
|
4392
4095
|
|
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]
|
4103
|
+
end
|
4104
|
+
|
4393
4105
|
hpxml.heat_pumps.add(id: 'HeatPump',
|
4394
4106
|
heat_pump_type: heat_pump_type,
|
4395
4107
|
heat_pump_fuel: HPXML::FuelTypeElectricity,
|
@@ -4398,7 +4110,7 @@ class HPXMLFile
|
|
4398
4110
|
compressor_type: compressor_type,
|
4399
4111
|
cooling_shr: cooling_shr,
|
4400
4112
|
cooling_capacity: cooling_capacity,
|
4401
|
-
fraction_heat_load_served:
|
4113
|
+
fraction_heat_load_served: fraction_heat_load_served,
|
4402
4114
|
fraction_cool_load_served: args[:heat_pump_fraction_cool_load_served],
|
4403
4115
|
backup_heating_fuel: backup_heating_fuel,
|
4404
4116
|
backup_heating_capacity: backup_heating_capacity,
|
@@ -4409,31 +4121,67 @@ class HPXMLFile
|
|
4409
4121
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4410
4122
|
heating_efficiency_cop: heating_efficiency_cop,
|
4411
4123
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4412
|
-
|
4413
|
-
|
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)
|
4414
4160
|
end
|
4415
4161
|
|
4416
4162
|
def self.set_hvac_distribution(hpxml, runner, args)
|
4417
4163
|
# HydronicDistribution?
|
4164
|
+
hydr_idx = 0
|
4418
4165
|
hpxml.heating_systems.each do |heating_system|
|
4419
|
-
next unless [
|
4166
|
+
next unless [heating_system.heating_system_type].include?(HPXML::HVACTypeBoiler)
|
4167
|
+
next if args[:heating_system_type].include?('Fan Coil')
|
4420
4168
|
|
4421
|
-
|
4169
|
+
hydr_idx += 1
|
4170
|
+
hpxml.hvac_distributions.add(id: "HydronicDistribution#{hydr_idx}",
|
4422
4171
|
distribution_system_type: HPXML::HVACDistributionTypeHydronic,
|
4423
4172
|
hydronic_type: HPXML::HydronicTypeBaseboard)
|
4424
4173
|
heating_system.distribution_system_idref = hpxml.hvac_distributions[-1].id
|
4425
|
-
break
|
4426
4174
|
end
|
4427
4175
|
|
4428
4176
|
# AirDistribution?
|
4429
4177
|
air_distribution_systems = []
|
4430
4178
|
hpxml.heating_systems.each do |heating_system|
|
4431
|
-
if [HPXML::HVACTypeFurnace].include?
|
4179
|
+
if [HPXML::HVACTypeFurnace].include?(heating_system.heating_system_type)
|
4432
4180
|
air_distribution_systems << heating_system
|
4433
4181
|
end
|
4434
4182
|
end
|
4435
4183
|
hpxml.cooling_systems.each do |cooling_system|
|
4436
|
-
if [HPXML::HVACTypeCentralAirConditioner].include?
|
4184
|
+
if [HPXML::HVACTypeCentralAirConditioner].include?(cooling_system.cooling_system_type)
|
4437
4185
|
air_distribution_systems << cooling_system
|
4438
4186
|
elsif [HPXML::HVACTypeEvaporativeCooler, HPXML::HVACTypeMiniSplitAirConditioner].include?(cooling_system.cooling_system_type) && args[:cooling_system_is_ducted]
|
4439
4187
|
air_distribution_systems << cooling_system
|
@@ -4443,41 +4191,69 @@ class HPXMLFile
|
|
4443
4191
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
4444
4192
|
air_distribution_systems << heat_pump
|
4445
4193
|
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump.heat_pump_type)
|
4446
|
-
if args[:
|
4447
|
-
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)
|
4448
4196
|
end
|
4449
4197
|
end
|
4450
4198
|
end
|
4451
|
-
|
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
|
4452
4209
|
|
4453
4210
|
if args[:ducts_number_of_return_registers] != Constants.Auto
|
4454
4211
|
number_of_return_registers = args[:ducts_number_of_return_registers]
|
4455
4212
|
end
|
4456
4213
|
|
4457
|
-
|
4458
|
-
|
4459
|
-
|
4460
|
-
|
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
|
4461
4220
|
|
4462
|
-
air_distribution_systems.
|
4463
|
-
|
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])
|
4464
4232
|
end
|
4465
4233
|
|
4466
|
-
|
4467
|
-
|
4468
|
-
|
4469
|
-
|
4470
|
-
|
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
|
4471
4243
|
|
4472
|
-
|
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)
|
4473
4249
|
|
4474
|
-
|
4475
|
-
|
4476
|
-
|
4477
|
-
|
4478
|
-
|
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
|
4479
4255
|
|
4480
|
-
|
4256
|
+
def self.set_ducts(args, hvac_distribution)
|
4481
4257
|
if args[:ducts_supply_location] != Constants.Auto
|
4482
4258
|
ducts_supply_location = args[:ducts_supply_location]
|
4483
4259
|
end
|
@@ -4494,32 +4270,34 @@ class HPXMLFile
|
|
4494
4270
|
ducts_return_surface_area = args[:ducts_return_surface_area]
|
4495
4271
|
end
|
4496
4272
|
|
4497
|
-
|
4498
|
-
|
4499
|
-
|
4500
|
-
|
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)
|
4501
4277
|
|
4502
4278
|
if not ([HPXML::HVACTypeEvaporativeCooler].include?(args[:cooling_system_type]) && args[:cooling_system_is_ducted])
|
4503
|
-
|
4504
|
-
|
4505
|
-
|
4506
|
-
|
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)
|
4507
4283
|
end
|
4508
4284
|
end
|
4509
4285
|
|
4510
4286
|
def self.set_hvac_control(hpxml, runner, args)
|
4511
4287
|
return if (args[:heating_system_type] == 'none') && (args[:cooling_system_type] == 'none') && (args[:heat_pump_type] == 'none')
|
4512
4288
|
|
4513
|
-
if
|
4514
|
-
|
4515
|
-
|
4516
|
-
|
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]
|
4517
4294
|
end
|
4518
4295
|
|
4519
|
-
if
|
4520
|
-
|
4521
|
-
|
4522
|
-
|
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]
|
4523
4301
|
end
|
4524
4302
|
|
4525
4303
|
ceiling_fan_quantity = nil
|
@@ -4532,52 +4310,47 @@ class HPXMLFile
|
|
4532
4310
|
end
|
4533
4311
|
|
4534
4312
|
hpxml.hvac_controls.add(id: 'HVACControl',
|
4535
|
-
heating_setpoint_temp:
|
4536
|
-
cooling_setpoint_temp:
|
4537
|
-
|
4538
|
-
|
4539
|
-
|
4540
|
-
|
4541
|
-
cooling_setup_hours_per_week: cooling_setup_hours_per_week,
|
4542
|
-
cooling_setup_start_hour: cooling_setup_start_hour,
|
4313
|
+
heating_setpoint_temp: heating_setpoint_temp,
|
4314
|
+
cooling_setpoint_temp: cooling_setpoint_temp,
|
4315
|
+
weekday_heating_setpoints: weekday_heating_setpoints,
|
4316
|
+
weekend_heating_setpoints: weekend_heating_setpoints,
|
4317
|
+
weekday_cooling_setpoints: weekday_cooling_setpoints,
|
4318
|
+
weekend_cooling_setpoints: weekend_cooling_setpoints,
|
4543
4319
|
ceiling_fan_cooling_setpoint_temp_offset: ceiling_fan_cooling_setpoint_temp_offset)
|
4544
4320
|
end
|
4545
4321
|
|
4546
4322
|
def self.set_ventilation_fans(hpxml, runner, args)
|
4547
4323
|
if args[:mech_vent_fan_type] != 'none'
|
4548
4324
|
|
4549
|
-
if args[:mech_vent_fan_type]
|
4550
|
-
|
4551
|
-
|
4552
|
-
|
4553
|
-
|
4554
|
-
|
4555
|
-
|
4556
|
-
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency]
|
4557
|
-
end
|
4558
|
-
|
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]
|
4559
4332
|
end
|
4560
|
-
|
4561
|
-
if args[:
|
4333
|
+
elsif [HPXML::MechVentTypeHRV].include?(args[:mech_vent_fan_type])
|
4334
|
+
if args[:mech_vent_recovery_efficiency_type] == 'Unadjusted'
|
4562
4335
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency]
|
4563
|
-
elsif args[:
|
4336
|
+
elsif args[:mech_vent_recovery_efficiency_type] == 'Adjusted'
|
4564
4337
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency]
|
4565
4338
|
end
|
4566
|
-
|
4567
4339
|
end
|
4568
4340
|
|
4569
4341
|
distribution_system_idref = nil
|
4570
4342
|
if args[:mech_vent_fan_type] == HPXML::MechVentTypeCFIS
|
4571
4343
|
hpxml.hvac_distributions.each do |hvac_distribution|
|
4572
4344
|
next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
|
4345
|
+
next if hvac_distribution.air_type != HPXML::AirTypeRegularVelocity
|
4573
4346
|
|
4574
4347
|
distribution_system_idref = hvac_distribution.id
|
4575
4348
|
end
|
4576
4349
|
end
|
4577
4350
|
|
4578
|
-
if args[:
|
4579
|
-
is_shared_system =
|
4580
|
-
in_unit_flow_rate = args[:
|
4351
|
+
if args[:mech_vent_num_units_served] > 1
|
4352
|
+
is_shared_system = true
|
4353
|
+
in_unit_flow_rate = args[:mech_vent_flow_rate] / args[:mech_vent_num_units_served].to_f
|
4581
4354
|
fraction_recirculation = args[:shared_mech_vent_frac_recirculation].get
|
4582
4355
|
if args[:shared_mech_vent_preheating_fuel].is_initialized && args[:shared_mech_vent_preheating_efficiency].is_initialized && args[:shared_mech_vent_preheating_fraction_heat_load_served].is_initialized
|
4583
4356
|
preheating_fuel = args[:shared_mech_vent_preheating_fuel].get
|
@@ -4615,32 +4388,20 @@ class HPXMLFile
|
|
4615
4388
|
|
4616
4389
|
if args[:mech_vent_fan_type_2] != 'none'
|
4617
4390
|
|
4618
|
-
if args[:mech_vent_fan_type_2]
|
4619
|
-
|
4620
|
-
if args[:mech_vent_fan_type_2].include? 'energy'
|
4391
|
+
if [HPXML::MechVentTypeERV].include?(args[:mech_vent_fan_type_2])
|
4621
4392
|
|
4622
|
-
|
4623
|
-
|
4624
|
-
elsif args[:mech_vent_total_recovery_efficiency_type_2] == 'Adjusted'
|
4625
|
-
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency_2]
|
4626
|
-
end
|
4627
|
-
|
4628
|
-
end
|
4629
|
-
|
4630
|
-
if args[:mech_vent_sensible_recovery_efficiency_type_2] == 'Unadjusted'
|
4393
|
+
if args[:mech_vent_recovery_efficiency_type_2] == 'Unadjusted'
|
4394
|
+
total_recovery_efficiency = args[:mech_vent_total_recovery_efficiency_2]
|
4631
4395
|
sensible_recovery_efficiency = args[:mech_vent_sensible_recovery_efficiency_2]
|
4632
|
-
elsif args[:
|
4396
|
+
elsif args[:mech_vent_recovery_efficiency_type_2] == 'Adjusted'
|
4397
|
+
total_recovery_efficiency_adjusted = args[:mech_vent_total_recovery_efficiency_2]
|
4633
4398
|
sensible_recovery_efficiency_adjusted = args[:mech_vent_sensible_recovery_efficiency_2]
|
4634
4399
|
end
|
4635
|
-
|
4636
|
-
|
4637
|
-
|
4638
|
-
|
4639
|
-
|
4640
|
-
hpxml.hvac_distributions.each do |hvac_distribution|
|
4641
|
-
next unless hvac_distribution.distribution_system_type == HPXML::HVACDistributionTypeAir
|
4642
|
-
|
4643
|
-
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]
|
4644
4405
|
end
|
4645
4406
|
end
|
4646
4407
|
|
@@ -4653,29 +4414,36 @@ class HPXMLFile
|
|
4653
4414
|
total_recovery_efficiency_adjusted: total_recovery_efficiency_adjusted,
|
4654
4415
|
sensible_recovery_efficiency: sensible_recovery_efficiency,
|
4655
4416
|
sensible_recovery_efficiency_adjusted: sensible_recovery_efficiency_adjusted,
|
4656
|
-
fan_power: args[:mech_vent_fan_power_2]
|
4657
|
-
distribution_system_idref: distribution_system_idref)
|
4417
|
+
fan_power: args[:mech_vent_fan_power_2])
|
4658
4418
|
end
|
4659
4419
|
|
4660
|
-
if args[:
|
4420
|
+
if (args[:kitchen_fans_quantity] == Constants.Auto) || (args[:kitchen_fans_quantity].to_i > 0)
|
4661
4421
|
if args[:kitchen_fans_flow_rate].is_initialized
|
4662
|
-
|
4422
|
+
if args[:kitchen_fans_flow_rate].get != Constants.Auto
|
4423
|
+
rated_flow_rate = args[:kitchen_fans_flow_rate].get.to_f
|
4424
|
+
end
|
4663
4425
|
end
|
4664
4426
|
|
4665
4427
|
if args[:kitchen_fans_power].is_initialized
|
4666
|
-
|
4428
|
+
if args[:kitchen_fans_power].get != Constants.Auto
|
4429
|
+
fan_power = args[:kitchen_fans_power].get.to_f
|
4430
|
+
end
|
4667
4431
|
end
|
4668
4432
|
|
4669
4433
|
if args[:kitchen_fans_hours_in_operation].is_initialized
|
4670
|
-
|
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
|
4671
4437
|
end
|
4672
4438
|
|
4673
4439
|
if args[:kitchen_fans_start_hour].is_initialized
|
4674
|
-
|
4440
|
+
if args[:kitchen_fans_start_hour].get != Constants.Auto
|
4441
|
+
start_hour = args[:kitchen_fans_start_hour].get.to_i
|
4442
|
+
end
|
4675
4443
|
end
|
4676
4444
|
|
4677
|
-
if args[:kitchen_fans_quantity].
|
4678
|
-
quantity = args[:kitchen_fans_quantity].
|
4445
|
+
if args[:kitchen_fans_quantity] != Constants.Auto
|
4446
|
+
quantity = args[:kitchen_fans_quantity].to_i
|
4679
4447
|
end
|
4680
4448
|
|
4681
4449
|
hpxml.ventilation_fans.add(id: 'KitchenRangeFan',
|
@@ -4688,25 +4456,33 @@ class HPXMLFile
|
|
4688
4456
|
quantity: quantity)
|
4689
4457
|
end
|
4690
4458
|
|
4691
|
-
if args[:
|
4459
|
+
if (args[:bathroom_fans_quantity] == Constants.Auto) || (args[:bathroom_fans_quantity].to_i > 0)
|
4692
4460
|
if args[:bathroom_fans_flow_rate].is_initialized
|
4693
|
-
|
4461
|
+
if args[:bathroom_fans_flow_rate].get != Constants.Auto
|
4462
|
+
rated_flow_rate = args[:bathroom_fans_flow_rate].get.to_f
|
4463
|
+
end
|
4694
4464
|
end
|
4695
4465
|
|
4696
4466
|
if args[:bathroom_fans_power].is_initialized
|
4697
|
-
|
4467
|
+
if args[:bathroom_fans_power].get != Constants.Auto
|
4468
|
+
fan_power = args[:bathroom_fans_power].get.to_f
|
4469
|
+
end
|
4698
4470
|
end
|
4699
4471
|
|
4700
4472
|
if args[:bathroom_fans_hours_in_operation].is_initialized
|
4701
|
-
|
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
|
4702
4476
|
end
|
4703
4477
|
|
4704
4478
|
if args[:bathroom_fans_start_hour].is_initialized
|
4705
|
-
|
4479
|
+
if args[:bathroom_fans_start_hour].get != Constants.Auto
|
4480
|
+
start_hour = args[:bathroom_fans_start_hour].get.to_i
|
4481
|
+
end
|
4706
4482
|
end
|
4707
4483
|
|
4708
|
-
if args[:bathroom_fans_quantity].
|
4709
|
-
quantity = args[:bathroom_fans_quantity].
|
4484
|
+
if args[:bathroom_fans_quantity] != Constants.Auto
|
4485
|
+
quantity = args[:bathroom_fans_quantity].to_i
|
4710
4486
|
end
|
4711
4487
|
|
4712
4488
|
hpxml.ventilation_fans.add(id: 'BathFans',
|
@@ -4749,19 +4525,18 @@ class HPXMLFile
|
|
4749
4525
|
tank_volume = args[:water_heater_tank_volume]
|
4750
4526
|
end
|
4751
4527
|
|
4752
|
-
if args[:water_heater_heating_capacity] != Constants.Auto
|
4753
|
-
heating_capacity = args[:water_heater_heating_capacity]
|
4754
|
-
end
|
4755
|
-
|
4756
4528
|
if args[:water_heater_setpoint_temperature] != Constants.Auto
|
4757
4529
|
temperature = args[:water_heater_setpoint_temperature]
|
4758
4530
|
end
|
4759
4531
|
|
4760
4532
|
if not [HPXML::WaterHeaterTypeCombiStorage, HPXML::WaterHeaterTypeCombiTankless].include? water_heater_type
|
4761
4533
|
if args[:water_heater_efficiency_type] == 'EnergyFactor'
|
4762
|
-
energy_factor = args[:
|
4534
|
+
energy_factor = args[:water_heater_efficiency]
|
4763
4535
|
elsif args[:water_heater_efficiency_type] == 'UniformEnergyFactor'
|
4764
|
-
uniform_energy_factor = args[:
|
4536
|
+
uniform_energy_factor = args[:water_heater_efficiency]
|
4537
|
+
if water_heater_type != HPXML::WaterHeaterTypeTankless
|
4538
|
+
first_hour_rating = args[:water_heater_first_hour_rating]
|
4539
|
+
end
|
4765
4540
|
end
|
4766
4541
|
end
|
4767
4542
|
|
@@ -4771,6 +4546,10 @@ class HPXMLFile
|
|
4771
4546
|
end
|
4772
4547
|
end
|
4773
4548
|
|
4549
|
+
if [HPXML::WaterHeaterTypeTankless, HPXML::WaterHeaterTypeCombiTankless].include? water_heater_type
|
4550
|
+
tank_volume = nil
|
4551
|
+
end
|
4552
|
+
|
4774
4553
|
if [HPXML::WaterHeaterTypeTankless].include? water_heater_type
|
4775
4554
|
heating_capacity = nil
|
4776
4555
|
recovery_efficiency = nil
|
@@ -4802,27 +4581,20 @@ class HPXMLFile
|
|
4802
4581
|
end
|
4803
4582
|
end
|
4804
4583
|
|
4805
|
-
if [
|
4806
|
-
|
4807
|
-
|
4808
|
-
end
|
4809
|
-
end
|
4810
|
-
|
4811
|
-
if args[:water_heater_is_shared_system]
|
4812
|
-
is_shared_system = args[:water_heater_is_shared_system]
|
4813
|
-
number_of_units_served = args[:geometry_building_num_units].get
|
4584
|
+
if args[:water_heater_num_units_served] > 1
|
4585
|
+
is_shared_system = true
|
4586
|
+
number_of_units_served = args[:water_heater_num_units_served]
|
4814
4587
|
end
|
4815
4588
|
|
4816
4589
|
hpxml.water_heating_systems.add(id: 'WaterHeater',
|
4817
4590
|
water_heater_type: water_heater_type,
|
4818
4591
|
fuel_type: fuel_type,
|
4819
4592
|
location: location,
|
4820
|
-
performance_adjustment: performance_adjustment,
|
4821
4593
|
tank_volume: tank_volume,
|
4822
4594
|
fraction_dhw_load_served: 1.0,
|
4823
|
-
heating_capacity: heating_capacity,
|
4824
4595
|
energy_factor: energy_factor,
|
4825
4596
|
uniform_energy_factor: uniform_energy_factor,
|
4597
|
+
first_hour_rating: first_hour_rating,
|
4826
4598
|
recovery_efficiency: recovery_efficiency,
|
4827
4599
|
related_hvac_idref: related_hvac_idref,
|
4828
4600
|
standby_loss: standby_loss,
|
@@ -4861,6 +4633,10 @@ class HPXMLFile
|
|
4861
4633
|
end
|
4862
4634
|
end
|
4863
4635
|
|
4636
|
+
if args[:dhw_distribution_pipe_r] != Constants.Auto
|
4637
|
+
pipe_r_value = args[:dhw_distribution_pipe_r]
|
4638
|
+
end
|
4639
|
+
|
4864
4640
|
hpxml.hot_water_distributions.add(id: 'HotWaterDistribution',
|
4865
4641
|
system_type: args[:dhw_distribution_system_type],
|
4866
4642
|
standard_piping_length: standard_piping_length,
|
@@ -4868,7 +4644,7 @@ class HPXMLFile
|
|
4868
4644
|
recirculation_piping_length: recirculation_piping_length,
|
4869
4645
|
recirculation_branch_piping_length: recirculation_branch_piping_length,
|
4870
4646
|
recirculation_pump_power: recirculation_pump_power,
|
4871
|
-
pipe_r_value:
|
4647
|
+
pipe_r_value: pipe_r_value,
|
4872
4648
|
dwhr_facilities_connected: dwhr_facilities_connected,
|
4873
4649
|
dwhr_equal_flow: dwhr_equal_flow,
|
4874
4650
|
dwhr_efficiency: dwhr_efficiency)
|
@@ -4912,7 +4688,7 @@ class HPXMLFile
|
|
4912
4688
|
collector_loop_type = args[:solar_thermal_collector_loop_type]
|
4913
4689
|
collector_type = args[:solar_thermal_collector_type]
|
4914
4690
|
collector_azimuth = args[:solar_thermal_collector_azimuth]
|
4915
|
-
collector_tilt = get_absolute_tilt(args[:solar_thermal_collector_tilt],
|
4691
|
+
collector_tilt = get_absolute_tilt(args[:solar_thermal_collector_tilt], args[:geometry_roof_pitch], epw_file)
|
4916
4692
|
collector_frta = args[:solar_thermal_collector_rated_optical_efficiency]
|
4917
4693
|
collector_frul = args[:solar_thermal_collector_rated_thermal_losses]
|
4918
4694
|
|
@@ -4940,8 +4716,20 @@ class HPXMLFile
|
|
4940
4716
|
end
|
4941
4717
|
|
4942
4718
|
def self.set_pv_systems(hpxml, runner, args, epw_file)
|
4943
|
-
[args[:pv_system_module_type_1], args[:pv_system_module_type_2]].each_with_index do |
|
4944
|
-
next if
|
4719
|
+
[args[:pv_system_module_type_1], args[:pv_system_module_type_2]].each_with_index do |pv_system_module_type, i|
|
4720
|
+
next if pv_system_module_type == 'none'
|
4721
|
+
|
4722
|
+
if [args[:pv_system_module_type_1], args[:pv_system_module_type_2]][i] != Constants.Auto
|
4723
|
+
module_type = [args[:pv_system_module_type_1], args[:pv_system_module_type_2]][i]
|
4724
|
+
end
|
4725
|
+
|
4726
|
+
if [args[:pv_system_location_1], args[:pv_system_location_2]][i] != Constants.Auto
|
4727
|
+
location = [args[:pv_system_location_1], args[:pv_system_location_2]][i]
|
4728
|
+
end
|
4729
|
+
|
4730
|
+
if [args[:pv_system_tracking_1], args[:pv_system_tracking_2]][i] != Constants.Auto
|
4731
|
+
tracking = [args[:pv_system_tracking_1], args[:pv_system_tracking_2]][i]
|
4732
|
+
end
|
4945
4733
|
|
4946
4734
|
max_power_output = [args[:pv_system_max_power_output_1], args[:pv_system_max_power_output_2]][i]
|
4947
4735
|
|
@@ -4953,17 +4741,18 @@ class HPXMLFile
|
|
4953
4741
|
system_losses_fraction = [args[:pv_system_system_losses_fraction_1], args[:pv_system_system_losses_fraction_2]][i].get
|
4954
4742
|
end
|
4955
4743
|
|
4956
|
-
|
4957
|
-
|
4958
|
-
|
4744
|
+
num_units_served = [args[:pv_system_num_units_served_1], args[:pv_system_num_units_served_2]][i]
|
4745
|
+
if num_units_served > 1
|
4746
|
+
is_shared_system = true
|
4747
|
+
number_of_bedrooms_served = (args[:geometry_building_num_bedrooms].get * num_units_served / args[:geometry_building_num_units].get).to_i
|
4959
4748
|
end
|
4960
4749
|
|
4961
4750
|
hpxml.pv_systems.add(id: "PVSystem#{i + 1}",
|
4962
|
-
location:
|
4751
|
+
location: location,
|
4963
4752
|
module_type: module_type,
|
4964
|
-
tracking:
|
4753
|
+
tracking: tracking,
|
4965
4754
|
array_azimuth: [args[:pv_system_array_azimuth_1], args[:pv_system_array_azimuth_2]][i],
|
4966
|
-
array_tilt: get_absolute_tilt([args[:pv_system_array_tilt_1], args[:pv_system_array_tilt_2]][i],
|
4755
|
+
array_tilt: get_absolute_tilt([args[:pv_system_array_tilt_1], args[:pv_system_array_tilt_2]][i], args[:geometry_roof_pitch], epw_file),
|
4967
4756
|
max_power_output: max_power_output,
|
4968
4757
|
inverter_efficiency: inverter_efficiency,
|
4969
4758
|
system_losses_fraction: system_losses_fraction,
|
@@ -5035,7 +4824,7 @@ class HPXMLFile
|
|
5035
4824
|
end
|
5036
4825
|
|
5037
4826
|
if args[:holiday_lighting_period_begin_day_of_month] != Constants.Auto
|
5038
|
-
hpxml.lighting.
|
4827
|
+
hpxml.lighting.holiday_period_begin_day = args[:holiday_lighting_period_begin_day_of_month]
|
5039
4828
|
end
|
5040
4829
|
|
5041
4830
|
if args[:holiday_lighting_period_end_month] != Constants.Auto
|
@@ -5043,49 +4832,50 @@ class HPXMLFile
|
|
5043
4832
|
end
|
5044
4833
|
|
5045
4834
|
if args[:holiday_lighting_period_end_day_of_month] != Constants.Auto
|
5046
|
-
hpxml.lighting.
|
4835
|
+
hpxml.lighting.holiday_period_end_day = args[:holiday_lighting_period_end_day_of_month]
|
5047
4836
|
end
|
5048
4837
|
end
|
5049
4838
|
|
5050
4839
|
def self.set_dehumidifier(hpxml, runner, args)
|
5051
|
-
return
|
4840
|
+
return if args[:dehumidifier_type] == 'none'
|
5052
4841
|
|
5053
4842
|
if args[:dehumidifier_efficiency_type] == 'EnergyFactor'
|
5054
|
-
energy_factor = args[:
|
4843
|
+
energy_factor = args[:dehumidifier_efficiency]
|
5055
4844
|
elsif args[:dehumidifier_efficiency_type] == 'IntegratedEnergyFactor'
|
5056
|
-
integrated_energy_factor = args[:
|
4845
|
+
integrated_energy_factor = args[:dehumidifier_efficiency]
|
5057
4846
|
end
|
5058
4847
|
|
5059
4848
|
hpxml.dehumidifiers.add(id: 'Dehumidifier',
|
4849
|
+
type: args[:dehumidifier_type],
|
5060
4850
|
capacity: args[:dehumidifier_capacity],
|
5061
4851
|
energy_factor: energy_factor,
|
5062
4852
|
integrated_energy_factor: integrated_energy_factor,
|
5063
4853
|
rh_setpoint: args[:dehumidifier_rh_setpoint],
|
5064
|
-
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served]
|
4854
|
+
fraction_served: args[:dehumidifier_fraction_dehumidification_load_served],
|
4855
|
+
location: HPXML::LocationLivingSpace)
|
5065
4856
|
end
|
5066
4857
|
|
5067
4858
|
def self.set_clothes_washer(hpxml, runner, args)
|
5068
4859
|
if args[:water_heater_type] == 'none'
|
5069
|
-
args[:
|
4860
|
+
args[:clothes_washer_location] = 'none'
|
5070
4861
|
end
|
5071
4862
|
|
5072
|
-
return
|
4863
|
+
return if args[:clothes_washer_location] == 'none'
|
5073
4864
|
|
5074
4865
|
if args[:clothes_washer_rated_annual_kwh] != Constants.Auto
|
5075
4866
|
rated_annual_kwh = args[:clothes_washer_rated_annual_kwh]
|
4867
|
+
return if Float(rated_annual_kwh) == 0
|
5076
4868
|
end
|
5077
4869
|
|
5078
4870
|
if args[:clothes_washer_location] != Constants.Auto
|
5079
4871
|
location = args[:clothes_washer_location]
|
5080
4872
|
end
|
5081
4873
|
|
5082
|
-
if args[:
|
5083
|
-
if args[:
|
5084
|
-
modified_energy_factor = args[:
|
5085
|
-
|
5086
|
-
|
5087
|
-
if args[:clothes_washer_efficiency_imef] != Constants.Auto
|
5088
|
-
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
|
5089
4879
|
end
|
5090
4880
|
end
|
5091
4881
|
|
@@ -5127,14 +4917,14 @@ class HPXMLFile
|
|
5127
4917
|
end
|
5128
4918
|
|
5129
4919
|
def self.set_clothes_dryer(hpxml, runner, args)
|
5130
|
-
return
|
5131
|
-
return
|
5132
|
-
|
5133
|
-
if args[:
|
5134
|
-
|
5135
|
-
|
5136
|
-
|
5137
|
-
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
|
5138
4928
|
end
|
5139
4929
|
end
|
5140
4930
|
|
@@ -5142,10 +4932,6 @@ class HPXMLFile
|
|
5142
4932
|
location = args[:clothes_dryer_location]
|
5143
4933
|
end
|
5144
4934
|
|
5145
|
-
if args[:clothes_dryer_control_type] != Constants.Auto
|
5146
|
-
control_type = args[:clothes_dryer_control_type]
|
5147
|
-
end
|
5148
|
-
|
5149
4935
|
if args[:clothes_dryer_vented_flow_rate] != Constants.Auto
|
5150
4936
|
is_vented = false
|
5151
4937
|
if Float(args[:clothes_dryer_vented_flow_rate]) > 0
|
@@ -5163,25 +4949,25 @@ class HPXMLFile
|
|
5163
4949
|
fuel_type: args[:clothes_dryer_fuel_type],
|
5164
4950
|
energy_factor: energy_factor,
|
5165
4951
|
combined_energy_factor: combined_energy_factor,
|
5166
|
-
control_type: control_type,
|
5167
4952
|
is_vented: is_vented,
|
5168
4953
|
vented_flow_rate: vented_flow_rate,
|
5169
4954
|
usage_multiplier: usage_multiplier)
|
5170
4955
|
end
|
5171
4956
|
|
5172
4957
|
def self.set_dishwasher(hpxml, runner, args)
|
5173
|
-
return
|
4958
|
+
return if args[:dishwasher_location] == 'none'
|
5174
4959
|
|
5175
4960
|
if args[:dishwasher_location] != Constants.Auto
|
5176
4961
|
location = args[:dishwasher_location]
|
5177
4962
|
end
|
5178
4963
|
|
5179
4964
|
if args[:dishwasher_efficiency_type] == 'RatedAnnualkWh'
|
5180
|
-
if args[:
|
5181
|
-
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
|
5182
4968
|
end
|
5183
4969
|
elsif args[:dishwasher_efficiency_type] == 'EnergyFactor'
|
5184
|
-
energy_factor = args[:
|
4970
|
+
energy_factor = args[:dishwasher_efficiency]
|
5185
4971
|
end
|
5186
4972
|
|
5187
4973
|
if args[:dishwasher_label_electric_rate] != Constants.Auto
|
@@ -5221,10 +5007,11 @@ class HPXMLFile
|
|
5221
5007
|
end
|
5222
5008
|
|
5223
5009
|
def self.set_refrigerator(hpxml, runner, args)
|
5224
|
-
return
|
5010
|
+
return if args[:refrigerator_location] == 'none'
|
5225
5011
|
|
5226
5012
|
if args[:refrigerator_rated_annual_kwh] != Constants.Auto
|
5227
|
-
|
5013
|
+
rated_annual_kwh = args[:refrigerator_rated_annual_kwh]
|
5014
|
+
return if Float(rated_annual_kwh) == 0
|
5228
5015
|
end
|
5229
5016
|
|
5230
5017
|
if args[:refrigerator_location] != Constants.Auto
|
@@ -5235,22 +5022,23 @@ class HPXMLFile
|
|
5235
5022
|
usage_multiplier = args[:refrigerator_usage_multiplier]
|
5236
5023
|
end
|
5237
5024
|
|
5238
|
-
if args[:
|
5025
|
+
if args[:extra_refrigerator_location] != 'none'
|
5239
5026
|
primary_indicator = true
|
5240
5027
|
end
|
5241
5028
|
|
5242
5029
|
hpxml.refrigerators.add(id: 'Refrigerator',
|
5243
5030
|
location: location,
|
5244
|
-
rated_annual_kwh:
|
5031
|
+
rated_annual_kwh: rated_annual_kwh,
|
5245
5032
|
primary_indicator: primary_indicator,
|
5246
5033
|
usage_multiplier: usage_multiplier)
|
5247
5034
|
end
|
5248
5035
|
|
5249
5036
|
def self.set_extra_refrigerator(hpxml, runner, args)
|
5250
|
-
return
|
5037
|
+
return if args[:extra_refrigerator_location] == 'none'
|
5251
5038
|
|
5252
5039
|
if args[:extra_refrigerator_rated_annual_kwh] != Constants.Auto
|
5253
5040
|
rated_annual_kwh = args[:extra_refrigerator_rated_annual_kwh]
|
5041
|
+
return if Float(rated_annual_kwh) == 0
|
5254
5042
|
end
|
5255
5043
|
|
5256
5044
|
if args[:extra_refrigerator_location] != Constants.Auto
|
@@ -5269,10 +5057,11 @@ class HPXMLFile
|
|
5269
5057
|
end
|
5270
5058
|
|
5271
5059
|
def self.set_freezer(hpxml, runner, args)
|
5272
|
-
return
|
5060
|
+
return if args[:freezer_location] == 'none'
|
5273
5061
|
|
5274
5062
|
if args[:freezer_rated_annual_kwh] != Constants.Auto
|
5275
5063
|
rated_annual_kwh = args[:freezer_rated_annual_kwh]
|
5064
|
+
return if Float(rated_annual_kwh) == 0
|
5276
5065
|
end
|
5277
5066
|
|
5278
5067
|
if args[:freezer_location] != Constants.Auto
|
@@ -5290,7 +5079,7 @@ class HPXMLFile
|
|
5290
5079
|
end
|
5291
5080
|
|
5292
5081
|
def self.set_cooking_range_oven(hpxml, runner, args)
|
5293
|
-
return
|
5082
|
+
return if args[:cooking_range_oven_location] == 'none'
|
5294
5083
|
|
5295
5084
|
if args[:cooking_range_oven_location] != Constants.Auto
|
5296
5085
|
location = args[:cooking_range_oven_location]
|
@@ -5339,8 +5128,9 @@ class HPXMLFile
|
|
5339
5128
|
kWh_per_year = args[:plug_loads_television_annual_kwh]
|
5340
5129
|
end
|
5341
5130
|
|
5342
|
-
|
5343
|
-
|
5131
|
+
usage_multiplier = args[:plug_loads_television_usage_multiplier]
|
5132
|
+
if usage_multiplier == 1.0
|
5133
|
+
usage_multiplier = nil
|
5344
5134
|
end
|
5345
5135
|
|
5346
5136
|
hpxml.plug_loads.add(id: 'PlugLoadsTelevision',
|
@@ -5362,8 +5152,9 @@ class HPXMLFile
|
|
5362
5152
|
frac_latent = args[:plug_loads_other_frac_latent]
|
5363
5153
|
end
|
5364
5154
|
|
5365
|
-
|
5366
|
-
|
5155
|
+
usage_multiplier = args[:plug_loads_other_usage_multiplier]
|
5156
|
+
if usage_multiplier == 1.0
|
5157
|
+
usage_multiplier = nil
|
5367
5158
|
end
|
5368
5159
|
|
5369
5160
|
hpxml.plug_loads.add(id: 'PlugLoadsOther',
|
@@ -5381,30 +5172,15 @@ class HPXMLFile
|
|
5381
5172
|
kWh_per_year = args[:plug_loads_well_pump_annual_kwh]
|
5382
5173
|
end
|
5383
5174
|
|
5384
|
-
|
5385
|
-
|
5386
|
-
|
5387
|
-
|
5388
|
-
if args[:plug_loads_well_pump_weekday_fractions] != Constants.Auto
|
5389
|
-
weekday_fractions = args[:plug_loads_well_pump_weekday_fractions]
|
5390
|
-
end
|
5391
|
-
|
5392
|
-
if args[:plug_loads_well_pump_weekend_fractions] != Constants.Auto
|
5393
|
-
weekend_fractions = args[:plug_loads_well_pump_weekend_fractions]
|
5394
|
-
end
|
5395
|
-
|
5396
|
-
if args[:plug_loads_well_pump_monthly_multipliers] != Constants.Auto
|
5397
|
-
monthly_multipliers = args[:plug_loads_well_pump_monthly_multipliers]
|
5175
|
+
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier]
|
5176
|
+
if usage_multiplier == 1.0
|
5177
|
+
usage_multiplier = nil
|
5398
5178
|
end
|
5399
5179
|
|
5400
5180
|
hpxml.plug_loads.add(id: 'PlugLoadsWellPump',
|
5401
5181
|
plug_load_type: HPXML::PlugLoadTypeWellPump,
|
5402
5182
|
kWh_per_year: kWh_per_year,
|
5403
|
-
usage_multiplier: usage_multiplier
|
5404
|
-
weekday_fractions: weekday_fractions,
|
5405
|
-
weekend_fractions: weekend_fractions,
|
5406
|
-
monthly_multipliers: monthly_multipliers,
|
5407
|
-
location: HPXML::LocationExterior)
|
5183
|
+
usage_multiplier: usage_multiplier)
|
5408
5184
|
end
|
5409
5185
|
|
5410
5186
|
def self.set_plug_loads_vehicle(hpxml, runner, args)
|
@@ -5414,30 +5190,15 @@ class HPXMLFile
|
|
5414
5190
|
kWh_per_year = args[:plug_loads_vehicle_annual_kwh]
|
5415
5191
|
end
|
5416
5192
|
|
5417
|
-
|
5418
|
-
|
5419
|
-
|
5420
|
-
|
5421
|
-
if args[:plug_loads_vehicle_weekday_fractions] != Constants.Auto
|
5422
|
-
weekday_fractions = args[:plug_loads_vehicle_weekday_fractions]
|
5423
|
-
end
|
5424
|
-
|
5425
|
-
if args[:plug_loads_vehicle_weekend_fractions] != Constants.Auto
|
5426
|
-
weekend_fractions = args[:plug_loads_vehicle_weekend_fractions]
|
5427
|
-
end
|
5428
|
-
|
5429
|
-
if args[:plug_loads_vehicle_monthly_multipliers] != Constants.Auto
|
5430
|
-
monthly_multipliers = args[:plug_loads_vehicle_monthly_multipliers]
|
5193
|
+
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier]
|
5194
|
+
if usage_multiplier == 1.0
|
5195
|
+
usage_multiplier = nil
|
5431
5196
|
end
|
5432
5197
|
|
5433
5198
|
hpxml.plug_loads.add(id: 'PlugLoadsVehicle',
|
5434
5199
|
plug_load_type: HPXML::PlugLoadTypeElectricVehicleCharging,
|
5435
5200
|
kWh_per_year: kWh_per_year,
|
5436
|
-
usage_multiplier: usage_multiplier
|
5437
|
-
weekday_fractions: weekday_fractions,
|
5438
|
-
weekend_fractions: weekend_fractions,
|
5439
|
-
monthly_multipliers: monthly_multipliers,
|
5440
|
-
location: HPXML::LocationExterior)
|
5201
|
+
usage_multiplier: usage_multiplier)
|
5441
5202
|
end
|
5442
5203
|
|
5443
5204
|
def self.set_fuel_loads_grill(hpxml, runner, args)
|
@@ -5446,10 +5207,6 @@ class HPXMLFile
|
|
5446
5207
|
therm_per_year = args[:fuel_loads_grill_annual_therm]
|
5447
5208
|
end
|
5448
5209
|
|
5449
|
-
if args[:fuel_loads_grill_location] != Constants.Auto
|
5450
|
-
location = args[:fuel_loads_grill_location]
|
5451
|
-
end
|
5452
|
-
|
5453
5210
|
if args[:fuel_loads_grill_usage_multiplier] != 1.0
|
5454
5211
|
usage_multiplier = args[:fuel_loads_grill_usage_multiplier]
|
5455
5212
|
end
|
@@ -5457,7 +5214,6 @@ class HPXMLFile
|
|
5457
5214
|
hpxml.fuel_loads.add(id: 'FuelLoadsGrill',
|
5458
5215
|
fuel_load_type: HPXML::FuelLoadTypeGrill,
|
5459
5216
|
fuel_type: args[:fuel_loads_grill_fuel_type],
|
5460
|
-
location: location,
|
5461
5217
|
therm_per_year: therm_per_year,
|
5462
5218
|
usage_multiplier: usage_multiplier)
|
5463
5219
|
end
|
@@ -5469,10 +5225,6 @@ class HPXMLFile
|
|
5469
5225
|
therm_per_year = args[:fuel_loads_lighting_annual_therm]
|
5470
5226
|
end
|
5471
5227
|
|
5472
|
-
if args[:fuel_loads_lighting_location] != Constants.Auto
|
5473
|
-
location = args[:fuel_loads_lighting_location]
|
5474
|
-
end
|
5475
|
-
|
5476
5228
|
if args[:fuel_loads_lighting_usage_multiplier] != 1.0
|
5477
5229
|
usage_multiplier = args[:fuel_loads_lighting_usage_multiplier]
|
5478
5230
|
end
|
@@ -5480,7 +5232,6 @@ class HPXMLFile
|
|
5480
5232
|
hpxml.fuel_loads.add(id: 'FuelLoadsLighting',
|
5481
5233
|
fuel_load_type: HPXML::FuelLoadTypeLighting,
|
5482
5234
|
fuel_type: args[:fuel_loads_lighting_fuel_type],
|
5483
|
-
location: location,
|
5484
5235
|
therm_per_year: therm_per_year,
|
5485
5236
|
usage_multiplier: usage_multiplier)
|
5486
5237
|
end
|
@@ -5492,8 +5243,12 @@ class HPXMLFile
|
|
5492
5243
|
therm_per_year = args[:fuel_loads_fireplace_annual_therm]
|
5493
5244
|
end
|
5494
5245
|
|
5495
|
-
if args[:
|
5496
|
-
|
5246
|
+
if args[:fuel_loads_fireplace_frac_sensible] != Constants.Auto
|
5247
|
+
frac_sensible = args[:fuel_loads_fireplace_frac_sensible]
|
5248
|
+
end
|
5249
|
+
|
5250
|
+
if args[:fuel_loads_fireplace_frac_latent] != Constants.Auto
|
5251
|
+
frac_latent = args[:fuel_loads_fireplace_frac_latent]
|
5497
5252
|
end
|
5498
5253
|
|
5499
5254
|
if args[:fuel_loads_fireplace_usage_multiplier] != 1.0
|
@@ -5503,8 +5258,9 @@ class HPXMLFile
|
|
5503
5258
|
hpxml.fuel_loads.add(id: 'FuelLoadsFireplace',
|
5504
5259
|
fuel_load_type: HPXML::FuelLoadTypeFireplace,
|
5505
5260
|
fuel_type: args[:fuel_loads_fireplace_fuel_type],
|
5506
|
-
location: location,
|
5507
5261
|
therm_per_year: therm_per_year,
|
5262
|
+
frac_sensible: frac_sensible,
|
5263
|
+
frac_latent: frac_latent,
|
5508
5264
|
usage_multiplier: usage_multiplier)
|
5509
5265
|
end
|
5510
5266
|
end
|
@@ -5520,18 +5276,20 @@ class HPXMLFile
|
|
5520
5276
|
pump_usage_multiplier = args[:pool_pump_usage_multiplier]
|
5521
5277
|
end
|
5522
5278
|
|
5523
|
-
|
5524
|
-
heater_type = args[:pool_heater_type]
|
5525
|
-
end
|
5279
|
+
pool_heater_type = args[:pool_heater_type]
|
5526
5280
|
|
5527
|
-
if
|
5528
|
-
|
5529
|
-
|
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
|
5530
5286
|
end
|
5531
5287
|
|
5532
|
-
if
|
5533
|
-
|
5534
|
-
|
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
|
5535
5293
|
end
|
5536
5294
|
|
5537
5295
|
if args[:pool_heater_usage_multiplier] != 1.0
|
@@ -5539,9 +5297,11 @@ class HPXMLFile
|
|
5539
5297
|
end
|
5540
5298
|
|
5541
5299
|
hpxml.pools.add(id: 'Pool',
|
5300
|
+
type: HPXML::TypeUnknown,
|
5301
|
+
pump_type: HPXML::TypeUnknown,
|
5542
5302
|
pump_kwh_per_year: pump_kwh_per_year,
|
5543
5303
|
pump_usage_multiplier: pump_usage_multiplier,
|
5544
|
-
heater_type:
|
5304
|
+
heater_type: pool_heater_type,
|
5545
5305
|
heater_load_units: heater_load_units,
|
5546
5306
|
heater_load_value: heater_load_value,
|
5547
5307
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5558,18 +5318,20 @@ class HPXMLFile
|
|
5558
5318
|
pump_usage_multiplier = args[:hot_tub_pump_usage_multiplier]
|
5559
5319
|
end
|
5560
5320
|
|
5561
|
-
|
5562
|
-
heater_type = args[:hot_tub_heater_type]
|
5563
|
-
end
|
5321
|
+
hot_tub_heater_type = args[:hot_tub_heater_type]
|
5564
5322
|
|
5565
|
-
if
|
5566
|
-
|
5567
|
-
|
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
|
5568
5328
|
end
|
5569
5329
|
|
5570
|
-
if
|
5571
|
-
|
5572
|
-
|
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
|
5573
5335
|
end
|
5574
5336
|
|
5575
5337
|
if args[:hot_tub_heater_usage_multiplier] != 1.0
|
@@ -5577,9 +5339,11 @@ class HPXMLFile
|
|
5577
5339
|
end
|
5578
5340
|
|
5579
5341
|
hpxml.hot_tubs.add(id: 'HotTub',
|
5342
|
+
type: HPXML::TypeUnknown,
|
5343
|
+
pump_type: HPXML::TypeUnknown,
|
5580
5344
|
pump_kwh_per_year: pump_kwh_per_year,
|
5581
5345
|
pump_usage_multiplier: pump_usage_multiplier,
|
5582
|
-
heater_type:
|
5346
|
+
heater_type: hot_tub_heater_type,
|
5583
5347
|
heater_load_units: heater_load_units,
|
5584
5348
|
heater_load_value: heater_load_value,
|
5585
5349
|
heater_usage_multiplier: heater_usage_multiplier)
|
@@ -5597,30 +5361,25 @@ class HPXMLFile
|
|
5597
5361
|
st = space.spaceType.get
|
5598
5362
|
space_type = st.standardsSpaceType.get
|
5599
5363
|
|
5600
|
-
|
5601
|
-
|
5602
|
-
|
5603
|
-
|
5604
|
-
|
5605
|
-
|
5606
|
-
|
5607
|
-
|
5608
|
-
|
5609
|
-
|
5610
|
-
|
5611
|
-
|
5612
|
-
|
5613
|
-
|
5614
|
-
|
5615
|
-
|
5616
|
-
|
5617
|
-
return HPXML::LocationBasementUnconditioned
|
5618
|
-
elsif ['corridor'].include? space_type
|
5619
|
-
return HPXML::LocationOtherHousingUnit
|
5620
|
-
elsif ['ambient'].include? space_type
|
5621
|
-
return HPXML::LocationOutside
|
5364
|
+
return space_type
|
5365
|
+
end
|
5366
|
+
|
5367
|
+
def self.get_surface_azimuth(surface, args)
|
5368
|
+
facade = Geometry.get_facade_for_surface(surface)
|
5369
|
+
return get_azimuth_from_facade(facade, args)
|
5370
|
+
end
|
5371
|
+
|
5372
|
+
def self.get_azimuth_from_facade(facade, args)
|
5373
|
+
if facade == Constants.FacadeFront
|
5374
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 0, args[:geometry_orientation], 0)
|
5375
|
+
elsif facade == Constants.FacadeBack
|
5376
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
5377
|
+
elsif facade == Constants.FacadeLeft
|
5378
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
5379
|
+
elsif facade == Constants.FacadeRight
|
5380
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
5622
5381
|
else
|
5623
|
-
fail
|
5382
|
+
fail 'Unexpected facade.'
|
5624
5383
|
end
|
5625
5384
|
end
|
5626
5385
|
end
|