urbanopt-cli 0.4.1 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/CMakeLists.txt +9 -9
- data/Gemfile +10 -12
- data/README.md +1 -0
- data/example_files/Gemfile +26 -10
- data/example_files/mappers/Baseline.rb +9 -0
- data/example_files/mappers/CreateBar.rb +2 -0
- data/example_files/mappers/Floorspace.rb +12 -10
- data/example_files/mappers/floorspace_workflow.osw +9 -0
- data/example_files/residential/clothes_washer.tsv +1 -1
- data/example_files/residential/water_heater.tsv +1 -1
- data/example_files/resources/hpxml-measures/.circleci/config.yml +20 -0
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +13 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +583 -334
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +687 -586
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +21 -22
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +34 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_config.yml +14 -1
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-appliances-dehumidifier-ief.osw → base-appliances-dehumidifier-ief-portable.osw} +34 -36
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +361 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-mechvent-shared-preconditioning.osw → base-bldgtype-multifamily-shared-mechvent-preconditioning.osw} +47 -48
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-mechvent-shared.osw → base-bldgtype-multifamily-shared-mechvent.osw} +47 -48
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-pv-shared.osw → base-bldgtype-multifamily-shared-pv.osw} +49 -50
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +365 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-multifamily.osw → base-bldgtype-multifamily.osw} +43 -44
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-single-family-attached.osw → base-bldgtype-single-family-attached.osw} +36 -38
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +362 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +362 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +362 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +33 -36
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +361 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +361 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +33 -34
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +35 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +35 -37
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +34 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +34 -36
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +36 -38
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +39 -41
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +39 -41
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +30 -32
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +29 -31
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +19 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +369 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-plug-loads-additional-multipliers.osw +361 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-dhw-shared-water-heater.osw → extra-schedules-random-seed.osw} +47 -50
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-vacancy-6-months.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +41 -42
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +41 -42
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +40 -41
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-hvac-programmable-thermostat.osw → invalid_files/multipliers-without-fuel-loads.osw} +31 -33
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{base-dhw-uef.osw → invalid_files/multipliers-without-plug-loads.osw} +35 -37
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +35 -37
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +35 -37
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +36 -38
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +33 -35
- data/example_files/resources/hpxml-measures/Gemfile +0 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +141 -129
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +183 -153
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +4 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +247 -121
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +0 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +434 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +28 -35
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +4 -12
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +60 -53
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +11 -15
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +81 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +3 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +21 -12
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +1150 -1072
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +799 -389
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +227 -351
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +122 -89
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +2 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +0 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +8 -13
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +23 -21
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +8 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +2 -2
- 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 +103 -72
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +110 -37
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +16 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +109 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +1747 -838
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +99 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +5 -16
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +23 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +54 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +10 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +10 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +77 -60
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +186 -34
- data/example_files/resources/hpxml-measures/README.md +1 -0
- data/example_files/resources/hpxml-measures/Rakefile +2 -9
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +278 -254
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +32 -5
- data/example_files/resources/hpxml-measures/SimulationOutputReport/resources/constants.rb +1 -2
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +73 -137
- data/example_files/resources/hpxml-measures/docs/source/build_residential_hpxml.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/conf.py +7 -4
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +4 -4
- data/example_files/resources/hpxml-measures/docs/source/index.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +4 -5
- data/example_files/resources/hpxml-measures/docs/source/nstatic/stylesheet.css +13 -1
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +2340 -0
- data/example_files/resources/hpxml-measures/docs/source/{simulation_output_report.rst → workflow_outputs.rst} +18 -16
- data/example_files/resources/hpxml-measures/tasks.rb +1154 -669
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +64 -20
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +523 -524
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-appliances-dehumidifier-ief.xml → base-appliances-dehumidifier-ief-portable.xml} +3 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +524 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +523 -524
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +563 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +511 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +632 -634
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +530 -532
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +516 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +564 -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} +30 -59
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +553 -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} +30 -59
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-heated-space.xml → base-bldgtype-multifamily-adjacent-to-other-heated-space.xml} +30 -59
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-other-housing-unit.xml → base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml} +30 -59
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +426 -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 +429 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +469 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +464 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +409 -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 +408 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +411 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +445 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +408 -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 +410 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +445 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +440 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +459 -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 +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-mechvent-shared-multiple.xml → base-bldgtype-multifamily-shared-mechvent-multiple.xml} +35 -410
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +488 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +472 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +464 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +457 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +450 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +447 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +606 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +517 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +517 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +549 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +550 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +549 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +552 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +566 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +518 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +518 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +526 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +518 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +566 -568
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +567 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +565 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +523 -525
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +495 -497
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +569 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/invalid-window-interior-shading.xml → base-dhw-tank-elec-uef.xml} +8 -9
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-flowrate.xml → base-dhw-tank-heat-pump-uef.xml} +6 -13
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +568 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +575 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +567 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +660 -664
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +635 -639
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +589 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +589 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +2473 -2493
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +753 -755
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-interior-shading.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +503 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +497 -497
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +723 -729
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +684 -688
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +515 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +608 -610
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +572 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +572 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +572 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +575 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +626 -628
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +563 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +560 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +519 -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 +520 -522
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +550 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +580 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +533 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +564 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +564 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +563 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +510 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +553 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +526 -528
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +506 -505
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +548 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +550 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +577 -579
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ideal-air.xml +498 -500
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +549 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +512 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +556 -555
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +562 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +562 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +519 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +913 -912
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +834 -837
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +487 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +563 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat-detailed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +569 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +509 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +509 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +513 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +572 -574
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +584 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +487 -489
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +515 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +515 -517
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +573 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +589 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +546 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +539 -541
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +575 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +575 -577
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +573 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +573 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +793 -795
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +573 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +571 -573
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +476 -495
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +578 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +753 -833
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +740 -820
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +549 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shelter-coefficient.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +723 -725
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +2 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +568 -570
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +565 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-autosize.xml +559 -561
- 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 +562 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml +559 -558
- 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 +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml +556 -558
- 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 +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml +556 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml +518 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml +569 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml +519 -521
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml +549 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml +546 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml +546 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml +575 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml +560 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml +559 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml +509 -511
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml +552 -554
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml +512 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml +546 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml +549 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml +557 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml +562 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml +548 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml +561 -560
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml +558 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml +553 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml +558 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-room-ac-only-autosize.xml +508 -510
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-stove-oil-only-autosize.xml +512 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml +512 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +533 -535
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-dhw-uef.xml → invalid_files/dhw-invalid-ef-tank.xml} +3 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +545 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +542 -544
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +545 -545
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +612 -616
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +625 -629
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +609 -611
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +549 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +471 -473
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +534 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +561 -560
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml +562 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +913 -912
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +913 -912
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +532 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +547 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +913 -912
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/{invalid-calendar-year.xml → hvac-inconsistent-fan-powers.xml} +8 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +569 -571
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +568 -567
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +465 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +643 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +552 -551
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +518 -520
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +563 -565
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +909 -908
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +559 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +564 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +589 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +545 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +567 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +567 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +565 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +527 -529
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/slab-zero-exposed-perimeter.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +532 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +567 -566
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +532 -534
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +574 -576
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +464 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +464 -827
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +589 -591
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +576 -578
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +561 -563
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +6 -14
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +6 -16
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +6 -16
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -16
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -16
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +277 -224
- data/lib/uo_cli/version.rb +1 -1
- data/scripts/setup-env-gitbash.sh +4 -4
- data/scripts/setup-env.bat +14 -11
- data/scripts/setup-env.ps1 +13 -10
- data/uo_cli.gemspec +6 -4
- metadata +106 -57
- data/example_files/resources/hpxml-measures/docs/source/hpxml_to_openstudio.rst +0 -1386
- 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-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/appliances-location-unconditioned-space.xml +0 -564
- 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
@@ -1,14 +1,14 @@
|
|
1
|
-
..
|
1
|
+
.. _workflow_outputs:
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
Workflow Outputs
|
4
|
+
================
|
5
5
|
|
6
|
-
|
6
|
+
OpenStudio-HPXML generates a variety of annual (and optionally, timeseries) outputs for a residential HPXML-based model.
|
7
7
|
|
8
8
|
Annual Outputs
|
9
9
|
--------------
|
10
10
|
|
11
|
-
|
11
|
+
OpenStudio-HPXML will always generate an annual CSV output file called results_annual.csv, co-located with the EnergyPlus output.
|
12
12
|
The CSV file includes the following sections of output:
|
13
13
|
|
14
14
|
Annual Energy Consumption by Fuel Type
|
@@ -20,7 +20,7 @@ Current fuel types are:
|
|
20
20
|
Type Notes
|
21
21
|
========================== ===========================
|
22
22
|
Electricity: Total (MBtu)
|
23
|
-
Electricity: Net (MBtu) Excludes any PV
|
23
|
+
Electricity: Net (MBtu) Excludes any power produced by PV or generators.
|
24
24
|
Natural Gas: Total (MBtu)
|
25
25
|
Fuel Oil: Total (MBtu) Includes "fuel oil", "fuel oil 1", "fuel oil 2", "fuel oil 4", "fuel oil 5/6", "kerosene", and "diesel"
|
26
26
|
Propane: Total (MBtu)
|
@@ -34,9 +34,9 @@ Annual Energy Consumption By Fuel Type and End Use
|
|
34
34
|
|
35
35
|
Current end use/fuel type combinations are:
|
36
36
|
|
37
|
-
|
38
|
-
Type
|
39
|
-
|
37
|
+
========================================================== ====================================================
|
38
|
+
Type Notes
|
39
|
+
========================================================== ====================================================
|
40
40
|
Electricity: Heating (MBtu)
|
41
41
|
Electricity: Heating Fans/Pumps (MBtu)
|
42
42
|
Electricity: Cooling (MBtu)
|
@@ -67,7 +67,8 @@ Current end use/fuel type combinations are:
|
|
67
67
|
Electricity: Pool Pump (MBtu)
|
68
68
|
Electricity: Hot Tub Heater (MBtu)
|
69
69
|
Electricity: Hot Tub Pump (MBtu)
|
70
|
-
Electricity: PV (MBtu)
|
70
|
+
Electricity: PV (MBtu) Negative value for any power produced
|
71
|
+
Electricity: Generator (MBtu) Negative value for power produced
|
71
72
|
Natural Gas: Heating (MBtu)
|
72
73
|
Natural Gas: Hot Water (MBtu)
|
73
74
|
Natural Gas: Clothes Dryer (MBtu)
|
@@ -79,6 +80,7 @@ Current end use/fuel type combinations are:
|
|
79
80
|
Natural Gas: Grill (MBtu)
|
80
81
|
Natural Gas: Lighting (MBtu)
|
81
82
|
Natural Gas: Fireplace (MBtu)
|
83
|
+
Natural Gas: Generator (MBtu) Positive value for any fuel consumed
|
82
84
|
Fuel Oil: Heating (MBtu)
|
83
85
|
Fuel Oil: Hot Water (MBtu)
|
84
86
|
Fuel Oil: Clothes Dryer (MBtu)
|
@@ -97,6 +99,7 @@ Current end use/fuel type combinations are:
|
|
97
99
|
Propane: Grill (MBtu)
|
98
100
|
Propane: Lighting (MBtu)
|
99
101
|
Propane: Fireplace (MBtu)
|
102
|
+
Propane: Generator (MBtu) Positive value for any fuel consumed
|
100
103
|
Wood Cord: Heating (MBtu)
|
101
104
|
Wood Cord: Hot Water (MBtu)
|
102
105
|
Wood Cord: Clothes Dryer (MBtu)
|
@@ -124,7 +127,7 @@ Current end use/fuel type combinations are:
|
|
124
127
|
Coal: Grill (MBtu)
|
125
128
|
Coal: Lighting (MBtu)
|
126
129
|
Coal: Fireplace (MBtu)
|
127
|
-
|
130
|
+
========================================================== ====================================================
|
128
131
|
|
129
132
|
Annual Building Loads
|
130
133
|
~~~~~~~~~~~~~~~~~~~~~
|
@@ -208,9 +211,8 @@ Current component loads disaggregated by Heating/Cooling are:
|
|
208
211
|
Component Load: \*: Internal Mass (MBtu) Heat gain/loss from internal mass (e.g., furniture, interior walls/floors) in conditioned space
|
209
212
|
Component Load: \*: Infiltration (MBtu) Heat gain/loss from airflow induced by stack and wind effects
|
210
213
|
Component Load: \*: Natural Ventilation (MBtu) Heat gain/loss from airflow through operable windows
|
211
|
-
Component Load: \*: Mechanical Ventilation (MBtu) Heat gain/loss from airflow/fan energy from
|
214
|
+
Component Load: \*: Mechanical Ventilation (MBtu) Heat gain/loss from airflow/fan energy from mechanical ventilation systems (including clothes dryer exhaust)
|
212
215
|
Component Load: \*: Whole House Fan (MBtu) Heat gain/loss from airflow due to a whole house fan
|
213
|
-
Component Load; \*: Clothes Dryer Exhaust (MBtu) Heat gain/loss from airflow due to clothes dryer exhaust
|
214
216
|
Component Load: \*: Ducts (MBtu) Heat gain/loss from conduction and leakage losses through supply/return ducts outside conditioned space
|
215
217
|
Component Load: \*: Internal Gains (MBtu) Heat gain/loss from appliances, lighting, plug loads, water heater tank losses, etc. in the conditioned space
|
216
218
|
================================================= =========================================================================================================
|
@@ -233,7 +235,7 @@ Current annual hot water uses are:
|
|
233
235
|
Timeseries Outputs
|
234
236
|
------------------
|
235
237
|
|
236
|
-
|
238
|
+
OpenStudio-HPXML can optionally generate a timeseries CSV output file.
|
237
239
|
The timeseries output file is called results_timeseries.csv and co-located with the EnergyPlus output.
|
238
240
|
|
239
241
|
Depending on the outputs requested, CSV files may include:
|
@@ -244,9 +246,9 @@ Depending on the outputs requested, CSV files may include:
|
|
244
246
|
Fuel Consumptions Energy use for each fuel type (in kBtu for fossil fuels and kWh for electricity).
|
245
247
|
End Use Consumptions Energy use for each end use type (in kBtu for fossil fuels and kWh for electricity).
|
246
248
|
Hot Water Uses Water use for each end use type (in gallons).
|
247
|
-
Total Loads Heating and
|
249
|
+
Total Loads Heating, cooling, and hot water loads (in kBtu) for the building.
|
248
250
|
Component Loads Heating and cooling loads (in kBtu) disaggregated by component (e.g., Walls, Windows, Infiltration, Ducts, etc.).
|
249
251
|
Zone Temperatures Average temperatures (in deg-F) for each space modeled (e.g., living space, attic, garage, basement, crawlspace, etc.).
|
250
|
-
Airflows Airflow rates (in cfm) for infiltration, mechanical ventilation, natural ventilation, whole house fans
|
252
|
+
Airflows Airflow rates (in cfm) for infiltration, mechanical ventilation (including clothes dryer exhaust), natural ventilation, whole house fans.
|
251
253
|
Weather Weather file data including outdoor temperatures, relative humidity, wind speed, and solar.
|
252
254
|
=================================== ==================================================================================================================================
|
@@ -7,15 +7,15 @@ def create_osws
|
|
7
7
|
|
8
8
|
this_dir = File.dirname(__FILE__)
|
9
9
|
tests_dir = File.join(this_dir, 'BuildResidentialHPXML/tests')
|
10
|
+
File.delete(*Dir.glob("#{tests_dir}/*.osw"))
|
10
11
|
|
11
12
|
# Hash of OSW -> Parent OSW
|
12
13
|
osws_files = {
|
13
14
|
'base.osw' => nil, # single-family detached
|
14
|
-
'base-single-family-attached.osw' => 'base.osw',
|
15
|
-
'base-multifamily.osw' => 'base.osw',
|
16
15
|
'base-appliances-coal.osw' => 'base.osw',
|
17
16
|
'base-appliances-dehumidifier.osw' => 'base-location-dallas-tx.osw',
|
18
|
-
'base-appliances-dehumidifier-ief.osw' => 'base-appliances-dehumidifier.osw',
|
17
|
+
'base-appliances-dehumidifier-ief-portable.osw' => 'base-appliances-dehumidifier.osw',
|
18
|
+
'base-appliances-dehumidifier-ief-whole-home.osw' => 'base-appliances-dehumidifier-ief-portable.osw',
|
19
19
|
'base-appliances-dehumidifier-50percent.osw' => 'base-appliances-dehumidifier.osw',
|
20
20
|
'base-appliances-gas.osw' => 'base.osw',
|
21
21
|
'base-appliances-modified.osw' => 'base.osw',
|
@@ -24,11 +24,25 @@ def create_osws
|
|
24
24
|
'base-appliances-propane.osw' => 'base.osw',
|
25
25
|
'base-appliances-wood.osw' => 'base.osw',
|
26
26
|
# 'base-atticroof-cathedral.osw' => 'base.osw', # TODO: conditioned attic ceiling heights are greater than wall height
|
27
|
-
# 'base-atticroof-conditioned.osw' => 'base.osw', #
|
27
|
+
# 'base-atticroof-conditioned.osw' => 'base.osw', # Not supporting attic kneewalls for now
|
28
28
|
'base-atticroof-flat.osw' => 'base.osw',
|
29
29
|
'base-atticroof-radiant-barrier.osw' => 'base-location-dallas-tx.osw',
|
30
30
|
'base-atticroof-unvented-insulated-roof.osw' => 'base.osw',
|
31
31
|
'base-atticroof-vented.osw' => 'base.osw',
|
32
|
+
'base-bldgtype-multifamily.osw' => 'base.osw',
|
33
|
+
# 'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
|
34
|
+
# 'base-bldgtype-multifamily-adjacent-to-multiple.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
|
35
|
+
# 'base-bldgtype-multifamily-adjacent-to-non-freezing-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
|
36
|
+
# 'base-bldgtype-multifamily-adjacent-to-other-heated-space.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
|
37
|
+
# 'base-bldgtype-multifamily-adjacent-to-other-housing-unit.osw' => 'base.osw', # Not supporting units adjacent to other MF spaces for now
|
38
|
+
# 'base-bldgtype-multifamily-shared-laundry-room.osw' => 'base.osw', # Not going to support shared laundry room
|
39
|
+
'base-bldgtype-multifamily-shared-mechvent.osw' => 'base-bldgtype-multifamily.osw',
|
40
|
+
# 'base-bldgtype-multifamily-shared-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
|
41
|
+
'base-bldgtype-multifamily-shared-mechvent-preconditioning.osw' => 'base-bldgtype-multifamily-shared-mechvent.osw',
|
42
|
+
'base-bldgtype-multifamily-shared-pv.osw' => 'base-bldgtype-multifamily.osw',
|
43
|
+
'base-bldgtype-multifamily-shared-water-heater.osw' => 'base-bldgtype-multifamily.osw',
|
44
|
+
# 'base-bldgtype-multifamily-shared-water-heater-recirc.osw' => 'base.osw', $ Not supporting shared recirculation for now
|
45
|
+
'base-bldgtype-single-family-attached.osw' => 'base.osw',
|
32
46
|
'base-dhw-combi-tankless.osw' => 'base-dhw-indirect.osw',
|
33
47
|
'base-dhw-combi-tankless-outside.osw' => 'base-dhw-combi-tankless.osw',
|
34
48
|
# 'base-dhw-desuperheater.osw' => 'base.osw', # Not supporting desuperheater for now
|
@@ -55,9 +69,6 @@ def create_osws
|
|
55
69
|
'base-dhw-recirc-nocontrol.osw' => 'base.osw',
|
56
70
|
'base-dhw-recirc-temperature.osw' => 'base.osw',
|
57
71
|
'base-dhw-recirc-timer.osw' => 'base.osw',
|
58
|
-
# 'base-dhw-shared-laundry-room.osw' => 'base.osw',
|
59
|
-
# 'base-dhw-shared-water-heater.osw' => 'base.osw',
|
60
|
-
# 'base-dhw-shared-water-heater-recirc.osw' => 'base.osw',
|
61
72
|
'base-dhw-solar-direct-evacuated-tube.osw' => 'base.osw',
|
62
73
|
'base-dhw-solar-direct-flat-plate.osw' => 'base.osw',
|
63
74
|
'base-dhw-solar-direct-ics.osw' => 'base.osw',
|
@@ -65,39 +76,37 @@ def create_osws
|
|
65
76
|
'base-dhw-solar-indirect-flat-plate.osw' => 'base.osw',
|
66
77
|
'base-dhw-solar-thermosyphon-flat-plate.osw' => 'base.osw',
|
67
78
|
'base-dhw-tank-coal.osw' => 'base.osw',
|
79
|
+
'base-dhw-tank-elec-uef.osw' => 'base.osw',
|
68
80
|
'base-dhw-tank-gas.osw' => 'base.osw',
|
81
|
+
'base-dhw-tank-gas-uef.osw' => 'base-dhw-tank-gas.osw',
|
69
82
|
'base-dhw-tank-gas-outside.osw' => 'base.osw',
|
70
83
|
'base-dhw-tank-heat-pump.osw' => 'base.osw',
|
71
84
|
'base-dhw-tank-heat-pump-outside.osw' => 'base.osw',
|
85
|
+
'base-dhw-tank-heat-pump-uef.osw' => 'base-dhw-tank-heat-pump.osw',
|
72
86
|
'base-dhw-tank-heat-pump-with-solar.osw' => 'base.osw',
|
73
87
|
'base-dhw-tank-heat-pump-with-solar-fraction.osw' => 'base.osw',
|
74
88
|
'base-dhw-tankless-electric.osw' => 'base.osw',
|
75
89
|
'base-dhw-tankless-electric-outside.osw' => 'base.osw',
|
90
|
+
'base-dhw-tankless-electric-uef.osw' => 'base-dhw-tankless-electric.osw',
|
76
91
|
'base-dhw-tankless-gas.osw' => 'base.osw',
|
92
|
+
'base-dhw-tankless-gas-uef.osw' => 'base-dhw-tankless-gas.osw',
|
77
93
|
'base-dhw-tankless-gas-with-solar.osw' => 'base.osw',
|
78
94
|
'base-dhw-tankless-gas-with-solar-fraction.osw' => 'base.osw',
|
79
95
|
'base-dhw-tankless-propane.osw' => 'base.osw',
|
80
96
|
'base-dhw-tank-oil.osw' => 'base.osw',
|
81
97
|
'base-dhw-tank-wood.osw' => 'base.osw',
|
82
|
-
'base-dhw-uef.osw' => 'base.osw',
|
83
98
|
'base-enclosure-2stories.osw' => 'base.osw',
|
84
99
|
'base-enclosure-2stories-garage.osw' => 'base.osw',
|
85
|
-
# 'base-enclosure-attached-multifamily.osw' => 'base.osw',
|
86
100
|
'base-enclosure-beds-1.osw' => 'base.osw',
|
87
101
|
'base-enclosure-beds-2.osw' => 'base.osw',
|
88
102
|
'base-enclosure-beds-4.osw' => 'base.osw',
|
89
103
|
'base-enclosure-beds-5.osw' => 'base.osw',
|
90
|
-
# 'base-enclosure-common-surfaces.osw' => 'base.osw',
|
91
104
|
'base-enclosure-garage.osw' => 'base.osw',
|
92
105
|
'base-enclosure-infil-ach-house-pressure.osw' => 'base.osw',
|
93
106
|
'base-enclosure-infil-cfm-house-pressure.osw' => 'base-enclosure-infil-cfm50.osw',
|
94
107
|
'base-enclosure-infil-cfm50.osw' => 'base.osw',
|
95
108
|
'base-enclosure-infil-flue.osw' => 'base.osw',
|
96
109
|
'base-enclosure-infil-natural-ach.osw' => 'base.osw',
|
97
|
-
# 'base-enclosure-other-heated-space.osw' => 'base.osw', # TODO: uncomment when we can model multifamily with ambient foundation?
|
98
|
-
# 'base-enclosure-other-housing-unit.osw' => 'base-foundation-ambient.osw', # TODO: uncomment when we can model multifamily with ambient foundation?
|
99
|
-
# 'base-enclosure-other-multifamily-buffer-space.osw' => 'base.osw', # TODO: uncomment when we can model multifamily with ambient foundation?
|
100
|
-
# 'base-enclosure-other-non-freezing-space.osw' => 'base.osw', # TODO: uncomment when we can model multifamily with ambient foundation?
|
101
110
|
'base-enclosure-overhangs.osw' => 'base.osw',
|
102
111
|
# 'base-enclosure-rooftypes.osw' => 'base.osw',
|
103
112
|
# 'base-enclosure-skylights.osw' => 'base.osw', # There are no front roof surfaces, but 15.0 ft^2 of skylights were specified.
|
@@ -106,10 +115,10 @@ def create_osws
|
|
106
115
|
# 'base-enclosure-windows-interior-shading.osw' => 'base.osw', # Not going to support interior shading by facade
|
107
116
|
'base-enclosure-windows-none.osw' => 'base.osw',
|
108
117
|
'base-foundation-ambient.osw' => 'base.osw',
|
109
|
-
# 'base-foundation-complex.osw' => 'base.osw', #
|
118
|
+
# 'base-foundation-complex.osw' => 'base.osw', # Not going to support multiple foundation types
|
110
119
|
'base-foundation-conditioned-basement-slab-insulation.osw' => 'base.osw',
|
111
120
|
# 'base-foundation-conditioned-basement-wall-interior-insulation.osw' => 'base.osw',
|
112
|
-
# 'base-foundation-multiple.osw' => 'base.osw', # Not
|
121
|
+
# 'base-foundation-multiple.osw' => 'base.osw', # Not going to support multiple foundation types
|
113
122
|
'base-foundation-slab.osw' => 'base.osw',
|
114
123
|
'base-foundation-unconditioned-basement.osw' => 'base.osw',
|
115
124
|
# 'base-foundation-unconditioned-basement-above-grade.osw' => 'base.osw', # TODO: add foundation wall windows
|
@@ -146,7 +155,6 @@ def create_osws
|
|
146
155
|
'base-hvac-fireplace-wood-only.osw' => 'base.osw',
|
147
156
|
'base-hvac-fixed-heater-gas-only.osw' => 'base.osw',
|
148
157
|
'base-hvac-floor-furnace-propane-only.osw' => 'base.osw',
|
149
|
-
# 'base-hvac-flowrate.osw' => 'base.osw', # Not going to support in the measure
|
150
158
|
'base-hvac-furnace-elec-central-ac-1-speed.osw' => 'base.osw',
|
151
159
|
'base-hvac-furnace-elec-only.osw' => 'base.osw',
|
152
160
|
'base-hvac-furnace-gas-central-ac-2-speed.osw' => 'base.osw',
|
@@ -169,7 +177,8 @@ def create_osws
|
|
169
177
|
# 'base-hvac-multiple2.osw' => 'base.osw', # Not supporting multiple heating/cooling systems for now
|
170
178
|
'base-hvac-none.osw' => 'base.osw',
|
171
179
|
'base-hvac-portable-heater-gas-only.osw' => 'base.osw',
|
172
|
-
'base-hvac-programmable-thermostat.osw' => 'base.osw',
|
180
|
+
# 'base-hvac-programmable-thermostat.osw' => 'base.osw',
|
181
|
+
# 'base-hvac-programmable-thermostat-detailed.osw' => 'base.osw',
|
173
182
|
'base-hvac-room-ac-only.osw' => 'base.osw',
|
174
183
|
'base-hvac-room-ac-only-33percent.osw' => 'base.osw',
|
175
184
|
'base-hvac-setpoints.osw' => 'base.osw',
|
@@ -194,23 +203,18 @@ def create_osws
|
|
194
203
|
'base-mechvent-erv.osw' => 'base.osw',
|
195
204
|
'base-mechvent-erv-atre-asre.osw' => 'base.osw',
|
196
205
|
'base-mechvent-exhaust.osw' => 'base.osw',
|
197
|
-
# 'base-mechvent-exhaust-rated-flow-rate.osw' => 'base.osw', # No difference
|
198
206
|
'base-mechvent-hrv.osw' => 'base.osw',
|
199
207
|
'base-mechvent-hrv-asre.osw' => 'base.osw',
|
200
|
-
# 'base-mechvent-multiple.osw' => 'base.osw',
|
201
|
-
# 'base-mechvent-shared.osw' => 'base.osw',
|
202
|
-
# 'base-mechvent-shared-multiple.osw' => 'base.osw',
|
203
|
-
# 'base-mechvent-shared-preconditioning.osw' => 'base.osw',
|
208
|
+
# 'base-mechvent-multiple.osw' => 'base.osw', # Not going to support > 2 MV systems
|
204
209
|
'base-mechvent-supply.osw' => 'base.osw',
|
205
210
|
'base-mechvent-whole-house-fan.osw' => 'base.osw',
|
206
211
|
'base-misc-defaults.osw' => 'base.osw',
|
207
|
-
'base-misc-loads-large-uncommon.osw' => 'base
|
212
|
+
'base-misc-loads-large-uncommon.osw' => 'base.osw',
|
208
213
|
'base-misc-loads-large-uncommon2.osw' => 'base-misc-loads-large-uncommon.osw',
|
209
214
|
# 'base-misc-loads-none.osw' => 'base.osw',
|
210
215
|
'base-misc-neighbor-shading.osw' => 'base.osw',
|
211
216
|
'base-misc-usage-multiplier.osw' => 'base.osw',
|
212
217
|
'base-pv.osw' => 'base.osw',
|
213
|
-
# 'base-pv-shared.osw' => 'base.osw',
|
214
218
|
'base-simcontrol-calendar-year-custom.osw' => 'base.osw',
|
215
219
|
'base-simcontrol-daylight-saving-custom.osw' => 'base.osw',
|
216
220
|
'base-simcontrol-daylight-saving-disabled.osw' => 'base.osw',
|
@@ -223,15 +227,14 @@ def create_osws
|
|
223
227
|
'extra-auto.osw' => 'base.osw',
|
224
228
|
'extra-pv-roofpitch.osw' => 'base.osw',
|
225
229
|
'extra-dhw-solar-latitude.osw' => 'base.osw',
|
226
|
-
'extra-dhw-shared-water-heater.osw' => 'base-single-family-attached.osw',
|
227
230
|
'extra-second-refrigerator.osw' => 'base.osw',
|
228
231
|
'extra-second-heating-system-portable-heater.osw' => 'base.osw',
|
229
232
|
'extra-second-heating-system-fireplace.osw' => 'base.osw',
|
230
|
-
'extra-pv-shared.osw' => 'base-single-family-attached.osw',
|
231
233
|
'extra-enclosure-garage-partially-protruded.osw' => 'base.osw',
|
232
|
-
'extra-mechvent-shared.osw' => 'base-single-family-attached.osw',
|
233
|
-
'extra-mechvent-shared-preconditioning.osw' => 'extra-mechvent-shared.osw',
|
234
234
|
'extra-vacancy-6-months.osw' => 'base-schedules-stochastic.osw',
|
235
|
+
'extra-schedules-random-seed.osw' => 'base-schedules-stochastic.osw',
|
236
|
+
'extra-hvac-programmable-thermostat.osw' => 'base.osw',
|
237
|
+
'extra-plug-loads-additional-multipliers.osw' => 'base.osw',
|
235
238
|
|
236
239
|
'invalid_files/non-electric-heat-pump-water-heater.osw' => 'base.osw',
|
237
240
|
'invalid_files/heating-system-and-heat-pump.osw' => 'base.osw',
|
@@ -240,14 +243,14 @@ def create_osws
|
|
240
243
|
'invalid_files/non-integer-ceiling-fan-quantity.osw' => 'base.osw',
|
241
244
|
'invalid_files/single-family-detached-slab-non-zero-foundation-height.osw' => 'base.osw',
|
242
245
|
'invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw' => 'base.osw',
|
243
|
-
'invalid_files/single-family-attached-ambient.osw' => 'base-single-family-attached.osw',
|
244
|
-
'invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw' => 'base-multifamily.osw',
|
245
|
-
'invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw' => 'base-multifamily.osw',
|
246
|
+
'invalid_files/single-family-attached-ambient.osw' => 'base-bldgtype-single-family-attached.osw',
|
247
|
+
'invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw' => 'base-bldgtype-multifamily.osw',
|
248
|
+
'invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw' => 'base-bldgtype-multifamily.osw',
|
246
249
|
'invalid_files/slab-non-zero-foundation-height-above-grade.osw' => 'base.osw',
|
247
250
|
'invalid_files/ducts-location-and-areas-not-same-type.osw' => 'base.osw',
|
248
251
|
'invalid_files/second-heating-system-serves-majority-heat.osw' => 'base.osw',
|
249
|
-
'invalid_files/single-family-attached-no-building-orientation.osw' => 'base-single-family-attached.osw',
|
250
|
-
'invalid_files/multifamily-no-building-orientation.osw' => 'base-multifamily.osw',
|
252
|
+
'invalid_files/single-family-attached-no-building-orientation.osw' => 'base-bldgtype-single-family-attached.osw',
|
253
|
+
'invalid_files/multifamily-no-building-orientation.osw' => 'base-bldgtype-multifamily.osw',
|
251
254
|
'invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'base.osw',
|
252
255
|
'invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw' => 'base.osw',
|
253
256
|
'invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw' => 'base.osw',
|
@@ -255,7 +258,9 @@ def create_osws
|
|
255
258
|
'invalid_files/unvented-attic-with-floor-and-roof-insulation.osw' => 'base.osw',
|
256
259
|
'invalid_files/conditioned-basement-with-ceiling-insulation.osw' => 'base.osw',
|
257
260
|
'invalid_files/conditioned-attic-with-floor-insulation.osw' => 'base.osw',
|
258
|
-
'invalid_files/dhw-indirect-without-boiler.osw' => 'base.osw'
|
261
|
+
'invalid_files/dhw-indirect-without-boiler.osw' => 'base.osw',
|
262
|
+
'invalid_files/multipliers-without-plug-loads.osw' => 'base.osw',
|
263
|
+
'invalid_files/multipliers-without-fuel-loads.osw' => 'base.osw'
|
259
264
|
}
|
260
265
|
|
261
266
|
puts "Generating #{osws_files.size} OSW files..."
|
@@ -356,7 +361,6 @@ def get_values(osw_file, step)
|
|
356
361
|
step.setArgument('geometry_foundation_height_above_grade', 1.0)
|
357
362
|
step.setArgument('geometry_roof_type', 'gable')
|
358
363
|
step.setArgument('geometry_roof_pitch', '6:12')
|
359
|
-
step.setArgument('geometry_roof_structure', 'truss, cantilever')
|
360
364
|
step.setArgument('geometry_attic_type', HPXML::AtticTypeUnvented)
|
361
365
|
step.setArgument('geometry_eaves_depth', 0)
|
362
366
|
step.setArgument('geometry_num_bedrooms', 3)
|
@@ -366,19 +370,21 @@ def get_values(osw_file, step)
|
|
366
370
|
step.setArgument('foundation_wall_insulation_r', 8.9)
|
367
371
|
step.setArgument('foundation_wall_insulation_distance_to_top', 0.0)
|
368
372
|
step.setArgument('foundation_wall_insulation_distance_to_bottom', 8.0)
|
373
|
+
step.setArgument('foundation_wall_thickness', '8.0')
|
369
374
|
step.setArgument('slab_perimeter_insulation_r', 0)
|
370
375
|
step.setArgument('slab_perimeter_depth', 0)
|
371
376
|
step.setArgument('slab_under_insulation_r', 0)
|
372
377
|
step.setArgument('slab_under_width', 0)
|
373
|
-
step.setArgument('
|
374
|
-
step.setArgument('
|
378
|
+
step.setArgument('slab_thickness', '4.0')
|
379
|
+
step.setArgument('slab_carpet_fraction', '0.0')
|
380
|
+
step.setArgument('slab_carpet_r', '0.0')
|
375
381
|
step.setArgument('ceiling_assembly_r', 39.3)
|
376
382
|
step.setArgument('roof_material_type', HPXML::RoofTypeAsphaltShingles)
|
377
383
|
step.setArgument('roof_color', Constants.Auto)
|
378
384
|
step.setArgument('roof_assembly_r', 2.3)
|
379
385
|
step.setArgument('roof_solar_absorptance', Constants.Auto)
|
380
|
-
step.setArgument('roof_emittance', 0.92)
|
381
|
-
step.setArgument('roof_radiant_barrier', false)
|
386
|
+
step.setArgument('roof_emittance', '0.92')
|
387
|
+
step.setArgument('roof_radiant_barrier', 'false')
|
382
388
|
step.setArgument('roof_radiant_barrier_grade', '1')
|
383
389
|
step.setArgument('neighbor_front_distance', 0)
|
384
390
|
step.setArgument('neighbor_back_distance', 0)
|
@@ -393,7 +399,7 @@ def get_values(osw_file, step)
|
|
393
399
|
step.setArgument('wall_color', Constants.Auto)
|
394
400
|
step.setArgument('wall_assembly_r', 23)
|
395
401
|
step.setArgument('wall_solar_absorptance', Constants.Auto)
|
396
|
-
step.setArgument('wall_emittance', 0.92)
|
402
|
+
step.setArgument('wall_emittance', '0.92')
|
397
403
|
step.setArgument('window_front_wwr', 0)
|
398
404
|
step.setArgument('window_back_wwr', 0)
|
399
405
|
step.setArgument('window_left_wwr', 0)
|
@@ -433,7 +439,6 @@ def get_values(osw_file, step)
|
|
433
439
|
step.setArgument('heating_system_heating_efficiency', 0.92)
|
434
440
|
step.setArgument('heating_system_heating_capacity', '64000.0')
|
435
441
|
step.setArgument('heating_system_fraction_heat_load_served', 1)
|
436
|
-
step.setArgument('heating_system_electric_auxiliary_energy', 0)
|
437
442
|
step.setArgument('heating_system_has_flue_or_chimney', false)
|
438
443
|
step.setArgument('cooling_system_type', HPXML::HVACTypeCentralAirConditioner)
|
439
444
|
step.setArgument('cooling_system_cooling_efficiency_seer', 13.0)
|
@@ -458,14 +463,10 @@ def get_values(osw_file, step)
|
|
458
463
|
step.setArgument('heat_pump_backup_fuel', 'none')
|
459
464
|
step.setArgument('heat_pump_backup_heating_efficiency', 1)
|
460
465
|
step.setArgument('heat_pump_backup_heating_capacity', '34121.0')
|
461
|
-
step.setArgument('
|
462
|
-
step.setArgument('
|
463
|
-
step.setArgument('
|
464
|
-
step.setArgument('
|
465
|
-
step.setArgument('setpoint_cooling_temp', 78)
|
466
|
-
step.setArgument('setpoint_cooling_setup_temp', 78)
|
467
|
-
step.setArgument('setpoint_cooling_setup_hours_per_week', 0)
|
468
|
-
step.setArgument('setpoint_cooling_setup_start_hour', 0)
|
466
|
+
step.setArgument('setpoint_heating_weekday_temp', 68)
|
467
|
+
step.setArgument('setpoint_heating_weekend_temp', 68)
|
468
|
+
step.setArgument('setpoint_cooling_weekday_temp', 78)
|
469
|
+
step.setArgument('setpoint_cooling_weekend_temp', 78)
|
469
470
|
step.setArgument('ducts_supply_leakage_units', HPXML::UnitsCFM25)
|
470
471
|
step.setArgument('ducts_return_leakage_units', HPXML::UnitsCFM25)
|
471
472
|
step.setArgument('ducts_supply_leakage_value', 75.0)
|
@@ -482,7 +483,6 @@ def get_values(osw_file, step)
|
|
482
483
|
step.setArgument('heating_system_heating_efficiency_2', 1.0)
|
483
484
|
step.setArgument('heating_system_heating_capacity_2', Constants.Auto)
|
484
485
|
step.setArgument('heating_system_fraction_heat_load_served_2', 0.25)
|
485
|
-
step.setArgument('heating_system_electric_auxiliary_energy_2', 0)
|
486
486
|
step.setArgument('heating_system_has_flue_or_chimney_2', false)
|
487
487
|
step.setArgument('mech_vent_fan_type', 'none')
|
488
488
|
step.setArgument('mech_vent_flow_rate', 110)
|
@@ -492,7 +492,7 @@ def get_values(osw_file, step)
|
|
492
492
|
step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Unadjusted')
|
493
493
|
step.setArgument('mech_vent_sensible_recovery_efficiency', 0.72)
|
494
494
|
step.setArgument('mech_vent_fan_power', 30)
|
495
|
-
step.setArgument('
|
495
|
+
step.setArgument('mech_vent_num_units_served', 1)
|
496
496
|
step.setArgument('mech_vent_fan_type_2', 'none')
|
497
497
|
step.setArgument('mech_vent_flow_rate_2', 110)
|
498
498
|
step.setArgument('mech_vent_hours_in_operation_2', 24)
|
@@ -512,21 +512,20 @@ def get_values(osw_file, step)
|
|
512
512
|
step.setArgument('water_heater_tank_volume', '40')
|
513
513
|
step.setArgument('water_heater_heating_capacity', '18767')
|
514
514
|
step.setArgument('water_heater_efficiency_type', 'EnergyFactor')
|
515
|
-
step.setArgument('
|
516
|
-
step.setArgument('water_heater_efficiency_uef', 0.93)
|
515
|
+
step.setArgument('water_heater_efficiency', 0.95)
|
517
516
|
step.setArgument('water_heater_recovery_efficiency', '0.76')
|
518
517
|
step.setArgument('water_heater_standby_loss', 0)
|
519
518
|
step.setArgument('water_heater_jacket_rvalue', 0)
|
520
519
|
step.setArgument('water_heater_setpoint_temperature', '125')
|
521
520
|
step.setArgument('water_heater_has_flue_or_chimney', false)
|
522
|
-
step.setArgument('
|
521
|
+
step.setArgument('water_heater_num_units_served', 1)
|
523
522
|
step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeStandard)
|
524
523
|
step.setArgument('dhw_distribution_standard_piping_length', '50')
|
525
524
|
step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeNone)
|
526
525
|
step.setArgument('dhw_distribution_recirc_piping_length', '50')
|
527
526
|
step.setArgument('dhw_distribution_recirc_branch_piping_length', '50')
|
528
527
|
step.setArgument('dhw_distribution_recirc_pump_power', '50')
|
529
|
-
step.setArgument('dhw_distribution_pipe_r', 0.0)
|
528
|
+
step.setArgument('dhw_distribution_pipe_r', '0.0')
|
530
529
|
step.setArgument('dwhr_facilities_connected', 'none')
|
531
530
|
step.setArgument('dwhr_equal_flow', true)
|
532
531
|
step.setArgument('dwhr_efficiency', 0.55)
|
@@ -544,23 +543,23 @@ def get_values(osw_file, step)
|
|
544
543
|
step.setArgument('solar_thermal_storage_volume', Constants.Auto)
|
545
544
|
step.setArgument('solar_thermal_solar_fraction', 0)
|
546
545
|
step.setArgument('pv_system_module_type_1', 'none')
|
547
|
-
step.setArgument('pv_system_location_1',
|
548
|
-
step.setArgument('pv_system_tracking_1',
|
546
|
+
step.setArgument('pv_system_location_1', Constants.Auto)
|
547
|
+
step.setArgument('pv_system_tracking_1', Constants.Auto)
|
549
548
|
step.setArgument('pv_system_array_azimuth_1', 180)
|
550
549
|
step.setArgument('pv_system_array_tilt_1', '20')
|
551
550
|
step.setArgument('pv_system_max_power_output_1', 4000)
|
552
551
|
step.setArgument('pv_system_inverter_efficiency_1', 0.96)
|
553
552
|
step.setArgument('pv_system_system_losses_fraction_1', 0.14)
|
554
|
-
step.setArgument('
|
553
|
+
step.setArgument('pv_system_num_units_served_1', 1)
|
555
554
|
step.setArgument('pv_system_module_type_2', 'none')
|
556
|
-
step.setArgument('pv_system_location_2',
|
557
|
-
step.setArgument('pv_system_tracking_2',
|
555
|
+
step.setArgument('pv_system_location_2', Constants.Auto)
|
556
|
+
step.setArgument('pv_system_tracking_2', Constants.Auto)
|
558
557
|
step.setArgument('pv_system_array_azimuth_2', 180)
|
559
558
|
step.setArgument('pv_system_array_tilt_2', '20')
|
560
559
|
step.setArgument('pv_system_max_power_output_2', 4000)
|
561
560
|
step.setArgument('pv_system_inverter_efficiency_2', 0.96)
|
562
561
|
step.setArgument('pv_system_system_losses_fraction_2', 0.14)
|
563
|
-
step.setArgument('
|
562
|
+
step.setArgument('pv_system_num_units_served_2', 1)
|
564
563
|
step.setArgument('lighting_fraction_cfl_interior', 0.4)
|
565
564
|
step.setArgument('lighting_fraction_lfl_interior', 0.1)
|
566
565
|
step.setArgument('lighting_fraction_led_interior', 0.25)
|
@@ -580,6 +579,7 @@ def get_values(osw_file, step)
|
|
580
579
|
step.setArgument('holiday_lighting_period_end_month', Constants.Auto)
|
581
580
|
step.setArgument('holiday_lighting_period_end_day_of_month', Constants.Auto)
|
582
581
|
step.setArgument('dehumidifier_present', false)
|
582
|
+
step.setArgument('dehumidifier_type', HPXML::DehumidifierTypePortable)
|
583
583
|
step.setArgument('dehumidifier_efficiency_type', 'EnergyFactor')
|
584
584
|
step.setArgument('dehumidifier_efficiency_ef', 1.8)
|
585
585
|
step.setArgument('dehumidifier_efficiency_ief', 1.5)
|
@@ -640,33 +640,36 @@ def get_values(osw_file, step)
|
|
640
640
|
step.setArgument('ceiling_fan_efficiency', Constants.Auto)
|
641
641
|
step.setArgument('ceiling_fan_quantity', Constants.Auto)
|
642
642
|
step.setArgument('ceiling_fan_cooling_setpoint_temp_offset', 0)
|
643
|
+
step.setArgument('plug_loads_television_annual_kwh', '620.0')
|
644
|
+
step.setArgument('plug_loads_television_usage_multiplier', 1.0)
|
645
|
+
step.setArgument('plug_loads_television_usage_multiplier_2', 1.0)
|
643
646
|
step.setArgument('plug_loads_other_annual_kwh', '2457.0')
|
644
647
|
step.setArgument('plug_loads_other_frac_sensible', '0.855')
|
645
648
|
step.setArgument('plug_loads_other_frac_latent', '0.045')
|
646
649
|
step.setArgument('plug_loads_other_usage_multiplier', 1.0)
|
647
|
-
step.setArgument('
|
648
|
-
step.setArgument('plug_loads_television_usage_multiplier', 1.0)
|
650
|
+
step.setArgument('plug_loads_other_usage_multiplier_2', 1.0)
|
649
651
|
step.setArgument('plug_loads_well_pump_present', false)
|
650
652
|
step.setArgument('plug_loads_well_pump_annual_kwh', Constants.Auto)
|
651
|
-
step.setArgument('plug_loads_well_pump_usage_multiplier',
|
653
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier', 0.0)
|
654
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier_2', 0.0)
|
652
655
|
step.setArgument('plug_loads_vehicle_present', false)
|
653
656
|
step.setArgument('plug_loads_vehicle_annual_kwh', Constants.Auto)
|
654
|
-
step.setArgument('plug_loads_vehicle_usage_multiplier',
|
657
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier', 0.0)
|
658
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier_2', 0.0)
|
655
659
|
step.setArgument('fuel_loads_grill_present', false)
|
656
660
|
step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypeNaturalGas)
|
657
661
|
step.setArgument('fuel_loads_grill_annual_therm', Constants.Auto)
|
658
|
-
step.setArgument('
|
659
|
-
step.setArgument('fuel_loads_grill_usage_multiplier', 1.0)
|
662
|
+
step.setArgument('fuel_loads_grill_usage_multiplier', 0.0)
|
660
663
|
step.setArgument('fuel_loads_lighting_present', false)
|
661
664
|
step.setArgument('fuel_loads_lighting_fuel_type', HPXML::FuelTypeNaturalGas)
|
662
665
|
step.setArgument('fuel_loads_lighting_annual_therm', Constants.Auto)
|
663
|
-
step.setArgument('
|
664
|
-
step.setArgument('fuel_loads_lighting_usage_multiplier', 1.0)
|
666
|
+
step.setArgument('fuel_loads_lighting_usage_multiplier', 0.0)
|
665
667
|
step.setArgument('fuel_loads_fireplace_present', false)
|
666
668
|
step.setArgument('fuel_loads_fireplace_fuel_type', HPXML::FuelTypeNaturalGas)
|
667
669
|
step.setArgument('fuel_loads_fireplace_annual_therm', Constants.Auto)
|
668
|
-
step.setArgument('
|
669
|
-
step.setArgument('
|
670
|
+
step.setArgument('fuel_loads_fireplace_frac_sensible', Constants.Auto)
|
671
|
+
step.setArgument('fuel_loads_fireplace_frac_latent', Constants.Auto)
|
672
|
+
step.setArgument('fuel_loads_fireplace_usage_multiplier', 0.0)
|
670
673
|
step.setArgument('pool_present', false)
|
671
674
|
step.setArgument('pool_pump_annual_kwh', Constants.Auto)
|
672
675
|
step.setArgument('pool_pump_usage_multiplier', 1.0)
|
@@ -681,9 +684,9 @@ def get_values(osw_file, step)
|
|
681
684
|
step.setArgument('hot_tub_heater_annual_kwh', Constants.Auto)
|
682
685
|
step.setArgument('hot_tub_heater_annual_therm', Constants.Auto)
|
683
686
|
step.setArgument('hot_tub_heater_usage_multiplier', 1.0)
|
684
|
-
elsif ['base-single-family-attached.osw'].include? osw_file
|
687
|
+
elsif ['base-bldgtype-single-family-attached.osw'].include? osw_file
|
685
688
|
step.setArgument('geometry_unit_type', HPXML::ResidentialTypeSFA)
|
686
|
-
step.setArgument('geometry_cfa',
|
689
|
+
step.setArgument('geometry_cfa', 1800.0)
|
687
690
|
step.setArgument('geometry_corridor_position', 'None')
|
688
691
|
step.setArgument('geometry_building_num_units', 3)
|
689
692
|
step.setArgument('geometry_horizontal_location', 'Left')
|
@@ -695,14 +698,17 @@ def get_values(osw_file, step)
|
|
695
698
|
step.setArgument('window_area_back', 0)
|
696
699
|
step.setArgument('window_area_left', 0)
|
697
700
|
step.setArgument('window_area_right', 0)
|
698
|
-
|
701
|
+
step.setArgument('plug_loads_other_annual_kwh', '1638.0')
|
702
|
+
elsif ['base-bldgtype-multifamily.osw'].include? osw_file
|
699
703
|
step.setArgument('geometry_unit_type', HPXML::ResidentialTypeApartment)
|
700
704
|
step.setArgument('geometry_cfa', 900.0)
|
701
705
|
step.setArgument('geometry_corridor_position', 'None')
|
702
706
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeBasementUnconditioned)
|
703
|
-
step.setArgument('geometry_level', '
|
707
|
+
step.setArgument('geometry_level', 'Middle')
|
704
708
|
step.setArgument('geometry_horizontal_location', 'Left')
|
705
|
-
step.setArgument('geometry_building_num_units',
|
709
|
+
step.setArgument('geometry_building_num_units', 50)
|
710
|
+
step.setArgument('geometry_building_num_bedrooms', 50 * 3)
|
711
|
+
step.setArgument('geometry_num_floors_above_grade', 5)
|
706
712
|
step.setArgument('window_front_wwr', 0.18)
|
707
713
|
step.setArgument('window_back_wwr', 0.18)
|
708
714
|
step.setArgument('window_left_wwr', 0.18)
|
@@ -713,6 +719,12 @@ def get_values(osw_file, step)
|
|
713
719
|
step.setArgument('window_area_right', 0)
|
714
720
|
step.setArgument('ducts_supply_leakage_value', 0.0)
|
715
721
|
step.setArgument('ducts_return_leakage_value', 0.0)
|
722
|
+
step.setArgument('ducts_supply_location', HPXML::LocationLivingSpace)
|
723
|
+
step.setArgument('ducts_return_location', HPXML::LocationLivingSpace)
|
724
|
+
step.setArgument('ducts_supply_insulation_r', 0.0)
|
725
|
+
step.setArgument('ducts_return_insulation_r', 0.0)
|
726
|
+
step.setArgument('door_area', 20.0)
|
727
|
+
step.setArgument('plug_loads_other_annual_kwh', '819.0')
|
716
728
|
elsif ['base-appliances-coal.osw'].include? osw_file
|
717
729
|
step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeCoal)
|
718
730
|
step.setArgument('clothes_dryer_efficiency_cef', '3.3')
|
@@ -723,8 +735,10 @@ def get_values(osw_file, step)
|
|
723
735
|
step.setArgument('dehumidifier_present', true)
|
724
736
|
elsif ['base-appliances-dehumidifier-50percent.osw'].include? osw_file
|
725
737
|
step.setArgument('dehumidifier_fraction_dehumidification_load_served', 0.5)
|
726
|
-
elsif ['base-appliances-dehumidifier-ief.osw'].include? osw_file
|
738
|
+
elsif ['base-appliances-dehumidifier-ief-portable.osw'].include? osw_file
|
727
739
|
step.setArgument('dehumidifier_efficiency_type', 'IntegratedEnergyFactor')
|
740
|
+
elsif ['base-appliances-dehumidifier-ief-whole-home.osw'].include? osw_file
|
741
|
+
step.setArgument('dehumidifier_type', HPXML::DehumidifierTypeWholeHome)
|
728
742
|
elsif ['base-appliances-gas.osw'].include? osw_file
|
729
743
|
step.setArgument('clothes_dryer_fuel_type', HPXML::FuelTypeNaturalGas)
|
730
744
|
step.setArgument('clothes_dryer_efficiency_cef', '3.3')
|
@@ -793,7 +807,7 @@ def get_values(osw_file, step)
|
|
793
807
|
step.setArgument('ducts_supply_location', HPXML::LocationBasementConditioned)
|
794
808
|
step.setArgument('ducts_return_location', HPXML::LocationBasementConditioned)
|
795
809
|
elsif ['base-atticroof-radiant-barrier.osw'].include? osw_file
|
796
|
-
step.setArgument('roof_radiant_barrier', true)
|
810
|
+
step.setArgument('roof_radiant_barrier', 'true')
|
797
811
|
step.setArgument('roof_radiant_barrier_grade', '2')
|
798
812
|
elsif ['base-atticroof-unvented-insulated-roof.osw'].include? osw_file
|
799
813
|
step.setArgument('ceiling_assembly_r', 2.1)
|
@@ -836,11 +850,11 @@ def get_values(osw_file, step)
|
|
836
850
|
elsif ['base-dhw-recirc-demand.osw'].include? osw_file
|
837
851
|
step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
|
838
852
|
step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeSensor)
|
839
|
-
step.setArgument('dhw_distribution_pipe_r', 3.0)
|
853
|
+
step.setArgument('dhw_distribution_pipe_r', '3.0')
|
840
854
|
elsif ['base-dhw-recirc-manual.osw'].include? osw_file
|
841
855
|
step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
|
842
856
|
step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeManual)
|
843
|
-
step.setArgument('dhw_distribution_pipe_r', 3.0)
|
857
|
+
step.setArgument('dhw_distribution_pipe_r', '3.0')
|
844
858
|
elsif ['base-dhw-recirc-nocontrol.osw'].include? osw_file
|
845
859
|
step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
|
846
860
|
elsif ['base-dhw-recirc-temperature.osw'].include? osw_file
|
@@ -849,6 +863,13 @@ def get_values(osw_file, step)
|
|
849
863
|
elsif ['base-dhw-recirc-timer.osw'].include? osw_file
|
850
864
|
step.setArgument('dhw_distribution_system_type', HPXML::DHWDistTypeRecirc)
|
851
865
|
step.setArgument('dhw_distribution_recirc_control_type', HPXML::DHWRecirControlTypeTimer)
|
866
|
+
elsif ['base-bldgtype-multifamily-shared-water-heater.osw'].include? osw_file
|
867
|
+
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
868
|
+
step.setArgument('water_heater_num_units_served', 6)
|
869
|
+
step.setArgument('water_heater_tank_volume', '120')
|
870
|
+
step.setArgument('water_heater_heating_capacity', '40000')
|
871
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
872
|
+
step.setArgument('water_heater_recovery_efficiency', '0.76')
|
852
873
|
elsif ['base-dhw-solar-direct-evacuated-tube.osw'].include? osw_file
|
853
874
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
854
875
|
step.setArgument('solar_thermal_storage_volume', '60')
|
@@ -885,34 +906,54 @@ def get_values(osw_file, step)
|
|
885
906
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeCoal)
|
886
907
|
step.setArgument('water_heater_tank_volume', '50')
|
887
908
|
step.setArgument('water_heater_heating_capacity', '40000')
|
888
|
-
step.setArgument('
|
909
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
910
|
+
elsif ['base-dhw-tank-elec-uef.osw'].include? osw_file
|
911
|
+
step.setArgument('water_heater_tank_volume', '30')
|
912
|
+
step.setArgument('water_heater_heating_capacity', '15354')
|
913
|
+
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
914
|
+
step.setArgument('water_heater_efficiency', 0.93)
|
915
|
+
step.setArgument('water_heater_first_hour_rating', 46)
|
916
|
+
step.setArgument('water_heater_recovery_efficiency', 0.98)
|
889
917
|
elsif ['base-dhw-tank-gas.osw'].include? osw_file
|
890
918
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
891
919
|
step.setArgument('water_heater_tank_volume', '50')
|
892
920
|
step.setArgument('water_heater_heating_capacity', '40000')
|
893
|
-
step.setArgument('
|
921
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
922
|
+
elsif ['base-dhw-tank-gas-uef.osw'].include? osw_file
|
923
|
+
step.setArgument('water_heater_tank_volume', '30')
|
924
|
+
step.setArgument('water_heater_heating_capacity', '30000')
|
925
|
+
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
926
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
927
|
+
step.setArgument('water_heater_first_hour_rating', 56)
|
928
|
+
step.setArgument('water_heater_recovery_efficiency', 0.75)
|
894
929
|
elsif ['base-dhw-tank-gas-outside.osw'].include? osw_file
|
895
930
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
896
931
|
step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
|
897
932
|
step.setArgument('water_heater_tank_volume', '50')
|
898
933
|
step.setArgument('water_heater_heating_capacity', '40000')
|
899
|
-
step.setArgument('
|
934
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
900
935
|
elsif ['base-dhw-tank-heat-pump.osw'].include? osw_file
|
901
936
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
|
902
937
|
step.setArgument('water_heater_tank_volume', '80')
|
903
938
|
step.setArgument('water_heater_heating_capacity', Constants.Auto)
|
904
|
-
step.setArgument('
|
939
|
+
step.setArgument('water_heater_efficiency', 2.3)
|
905
940
|
elsif ['base-dhw-tank-heat-pump-outside.osw'].include? osw_file
|
906
941
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
|
907
942
|
step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
|
908
943
|
step.setArgument('water_heater_tank_volume', '80')
|
909
944
|
step.setArgument('water_heater_heating_capacity', Constants.Auto)
|
910
|
-
step.setArgument('
|
945
|
+
step.setArgument('water_heater_efficiency', 2.3)
|
946
|
+
elsif ['base-dhw-tank-heat-pump-uef.osw'].include? osw_file
|
947
|
+
step.setArgument('water_heater_tank_volume', '50')
|
948
|
+
step.setArgument('water_heater_heating_capacity', '18767')
|
949
|
+
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
950
|
+
step.setArgument('water_heater_efficiency', 3.75)
|
951
|
+
step.setArgument('water_heater_first_hour_rating', 60)
|
911
952
|
elsif ['base-dhw-tank-heat-pump-with-solar.osw'].include? osw_file
|
912
953
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
|
913
954
|
step.setArgument('water_heater_tank_volume', '80')
|
914
955
|
step.setArgument('water_heater_heating_capacity', Constants.Auto)
|
915
|
-
step.setArgument('
|
956
|
+
step.setArgument('water_heater_efficiency', 2.3)
|
916
957
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
917
958
|
step.setArgument('solar_thermal_collector_loop_type', HPXML::SolarThermalLoopTypeIndirect)
|
918
959
|
step.setArgument('solar_thermal_collector_type', HPXML::SolarThermalTypeSingleGlazing)
|
@@ -923,29 +964,34 @@ def get_values(osw_file, step)
|
|
923
964
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
|
924
965
|
step.setArgument('water_heater_tank_volume', '80')
|
925
966
|
step.setArgument('water_heater_heating_capacity', Constants.Auto)
|
926
|
-
step.setArgument('
|
967
|
+
step.setArgument('water_heater_efficiency', 2.3)
|
927
968
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
928
969
|
step.setArgument('solar_thermal_solar_fraction', 0.65)
|
929
970
|
elsif ['base-dhw-tankless-electric.osw'].include? osw_file
|
930
971
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
931
972
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
932
|
-
step.setArgument('
|
973
|
+
step.setArgument('water_heater_efficiency', 0.99)
|
933
974
|
elsif ['base-dhw-tankless-electric-outside.osw'].include? osw_file
|
934
975
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
935
976
|
step.setArgument('water_heater_location', HPXML::LocationOtherExterior)
|
936
977
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
937
|
-
step.setArgument('
|
938
|
-
|
978
|
+
step.setArgument('water_heater_efficiency', 0.99)
|
979
|
+
elsif ['base-dhw-tankless-electric-uef.osw'].include? osw_file
|
980
|
+
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
981
|
+
step.setArgument('water_heater_efficiency', 0.98)
|
939
982
|
elsif ['base-dhw-tankless-gas.osw'].include? osw_file
|
940
983
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
941
984
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
942
985
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
943
|
-
step.setArgument('
|
986
|
+
step.setArgument('water_heater_efficiency', 0.82)
|
987
|
+
elsif ['base-dhw-tankless-gas-uef.osw'].include? osw_file
|
988
|
+
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
989
|
+
step.setArgument('water_heater_efficiency', 0.93)
|
944
990
|
elsif ['base-dhw-tankless-gas-with-solar.osw'].include? osw_file
|
945
991
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
946
992
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
947
993
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
948
|
-
step.setArgument('
|
994
|
+
step.setArgument('water_heater_efficiency', 0.82)
|
949
995
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
950
996
|
step.setArgument('solar_thermal_collector_loop_type', HPXML::SolarThermalLoopTypeIndirect)
|
951
997
|
step.setArgument('solar_thermal_collector_type', HPXML::SolarThermalTypeSingleGlazing)
|
@@ -956,27 +1002,24 @@ def get_values(osw_file, step)
|
|
956
1002
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
957
1003
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
958
1004
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
959
|
-
step.setArgument('
|
1005
|
+
step.setArgument('water_heater_efficiency', 0.82)
|
960
1006
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
961
1007
|
step.setArgument('solar_thermal_solar_fraction', 0.65)
|
962
1008
|
elsif ['base-dhw-tankless-propane.osw'].include? osw_file
|
963
1009
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeTankless)
|
964
1010
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypePropane)
|
965
1011
|
step.setArgument('water_heater_tank_volume', Constants.Auto)
|
966
|
-
step.setArgument('
|
1012
|
+
step.setArgument('water_heater_efficiency', 0.82)
|
967
1013
|
elsif ['base-dhw-tank-oil.osw'].include? osw_file
|
968
1014
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeOil)
|
969
1015
|
step.setArgument('water_heater_tank_volume', '50')
|
970
1016
|
step.setArgument('water_heater_heating_capacity', '40000')
|
971
|
-
step.setArgument('
|
1017
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
972
1018
|
elsif ['base-dhw-tank-wood.osw'].include? osw_file
|
973
1019
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeWoodCord)
|
974
1020
|
step.setArgument('water_heater_tank_volume', '50')
|
975
1021
|
step.setArgument('water_heater_heating_capacity', '40000')
|
976
|
-
step.setArgument('
|
977
|
-
elsif ['base-dhw-uef.osw'].include? osw_file
|
978
|
-
step.setArgument('water_heater_efficiency_type', 'UniformEnergyFactor')
|
979
|
-
step.setArgument('water_heater_efficiency_uef', 0.93)
|
1022
|
+
step.setArgument('water_heater_efficiency', 0.59)
|
980
1023
|
elsif ['base-enclosure-2stories.osw'].include? osw_file
|
981
1024
|
step.setArgument('geometry_cfa', 4050.0)
|
982
1025
|
step.setArgument('geometry_num_floors_above_grade', 2)
|
@@ -996,8 +1039,6 @@ def get_values(osw_file, step)
|
|
996
1039
|
step.setArgument('ducts_supply_surface_area', '112.5')
|
997
1040
|
step.setArgument('ducts_return_surface_area', '37.5')
|
998
1041
|
step.setArgument('plug_loads_other_annual_kwh', '2957.5')
|
999
|
-
elsif ['base-enclosure-attached-multifamily.osw'].include? osw_file
|
1000
|
-
|
1001
1042
|
elsif ['base-enclosure-beds-1.osw'].include? osw_file
|
1002
1043
|
step.setArgument('geometry_num_bedrooms', 1)
|
1003
1044
|
step.setArgument('geometry_num_bathrooms', '1')
|
@@ -1117,8 +1158,8 @@ def get_values(osw_file, step)
|
|
1117
1158
|
step.setArgument('geometry_foundation_height_above_grade', 0.0)
|
1118
1159
|
step.setArgument('slab_under_insulation_r', 5)
|
1119
1160
|
step.setArgument('slab_under_width', 999)
|
1120
|
-
step.setArgument('slab_carpet_fraction', 1.0)
|
1121
|
-
step.setArgument('slab_carpet_r', 2.5)
|
1161
|
+
step.setArgument('slab_carpet_fraction', '1.0')
|
1162
|
+
step.setArgument('slab_carpet_r', '2.5')
|
1122
1163
|
step.setArgument('ducts_supply_location', HPXML::LocationUnderSlab)
|
1123
1164
|
step.setArgument('ducts_return_location', HPXML::LocationUnderSlab)
|
1124
1165
|
step.setArgument('plug_loads_other_annual_kwh', '1228.5')
|
@@ -1165,7 +1206,7 @@ def get_values(osw_file, step)
|
|
1165
1206
|
step.setArgument('geometry_foundation_height_above_grade', 1.0)
|
1166
1207
|
step.setArgument('floor_assembly_r', 18.7)
|
1167
1208
|
step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
|
1168
|
-
step.setArgument('slab_carpet_r', 2.5)
|
1209
|
+
step.setArgument('slab_carpet_r', '2.5')
|
1169
1210
|
step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceUnvented)
|
1170
1211
|
step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceUnvented)
|
1171
1212
|
step.setArgument('water_heater_location', HPXML::LocationCrawlspaceUnvented)
|
@@ -1177,7 +1218,7 @@ def get_values(osw_file, step)
|
|
1177
1218
|
step.setArgument('geometry_foundation_height_above_grade', 1.0)
|
1178
1219
|
step.setArgument('floor_assembly_r', 18.7)
|
1179
1220
|
step.setArgument('foundation_wall_insulation_distance_to_bottom', 4.0)
|
1180
|
-
step.setArgument('slab_carpet_r', 2.5)
|
1221
|
+
step.setArgument('slab_carpet_r', '2.5')
|
1181
1222
|
step.setArgument('ducts_supply_location', HPXML::LocationCrawlspaceVented)
|
1182
1223
|
step.setArgument('ducts_return_location', HPXML::LocationCrawlspaceVented)
|
1183
1224
|
step.setArgument('water_heater_location', HPXML::LocationCrawlspaceVented)
|
@@ -1192,6 +1233,7 @@ def get_values(osw_file, step)
|
|
1192
1233
|
step.setArgument('heat_pump_heating_capacity', '42000.0')
|
1193
1234
|
step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
|
1194
1235
|
step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
|
1236
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
|
1195
1237
|
elsif ['base-hvac-air-to-air-heat-pump-2-speed.osw'].include? osw_file
|
1196
1238
|
step.setArgument('heating_system_type', 'none')
|
1197
1239
|
step.setArgument('cooling_system_type', 'none')
|
@@ -1244,6 +1286,7 @@ def get_values(osw_file, step)
|
|
1244
1286
|
step.setArgument('cooling_system_type', 'none')
|
1245
1287
|
elsif ['base-hvac-central-ac-only-1-speed.osw'].include? osw_file
|
1246
1288
|
step.setArgument('heating_system_type', 'none')
|
1289
|
+
step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.45)
|
1247
1290
|
elsif ['base-hvac-central-ac-only-2-speed.osw'].include? osw_file
|
1248
1291
|
step.setArgument('heating_system_type', 'none')
|
1249
1292
|
step.setArgument('cooling_system_cooling_efficiency_seer', 18.0)
|
@@ -1260,6 +1303,7 @@ def get_values(osw_file, step)
|
|
1260
1303
|
step.setArgument('heat_pump_heating_capacity_17F', '26460.0')
|
1261
1304
|
step.setArgument('heat_pump_fraction_cool_load_served', 0)
|
1262
1305
|
step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
|
1306
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
|
1263
1307
|
elsif ['base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw'].include? osw_file
|
1264
1308
|
step.setArgument('cooling_system_type', 'none')
|
1265
1309
|
step.setArgument('heat_pump_heating_efficiency_hspf', 7.7)
|
@@ -1287,6 +1331,7 @@ def get_values(osw_file, step)
|
|
1287
1331
|
step.setArgument('heat_pump_backup_heating_efficiency', 0.95)
|
1288
1332
|
step.setArgument('heat_pump_backup_heating_capacity', '36000.0')
|
1289
1333
|
step.setArgument('heat_pump_backup_heating_switchover_temp', 25)
|
1334
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
|
1290
1335
|
elsif ['base-hvac-ducts-leakage-percent.osw'].include? osw_file
|
1291
1336
|
step.setArgument('ducts_supply_leakage_units', HPXML::UnitsPercent)
|
1292
1337
|
step.setArgument('ducts_return_leakage_units', HPXML::UnitsPercent)
|
@@ -1306,6 +1351,7 @@ def get_values(osw_file, step)
|
|
1306
1351
|
step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
|
1307
1352
|
step.removeArgument('cooling_system_cooling_compressor_type')
|
1308
1353
|
step.removeArgument('cooling_system_cooling_sensible_heat_fraction')
|
1354
|
+
step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.3)
|
1309
1355
|
elsif ['base-hvac-evap-cooler-only-ducted.osw'].include? osw_file
|
1310
1356
|
step.setArgument('heating_system_type', 'none')
|
1311
1357
|
step.setArgument('cooling_system_type', HPXML::HVACTypeEvaporativeCooler)
|
@@ -1316,17 +1362,17 @@ def get_values(osw_file, step)
|
|
1316
1362
|
step.setArgument('heating_system_type', HPXML::HVACTypeFireplace)
|
1317
1363
|
step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodCord)
|
1318
1364
|
step.setArgument('heating_system_heating_efficiency', 0.8)
|
1319
|
-
step.setArgument('
|
1365
|
+
step.setArgument('heating_system_fan_power_watts', 0.0)
|
1320
1366
|
step.setArgument('cooling_system_type', 'none')
|
1321
1367
|
elsif ['base-hvac-fixed-heater-gas-only.osw'].include? osw_file
|
1322
1368
|
step.setArgument('heating_system_type', HPXML::HVACTypeFixedHeater)
|
1323
1369
|
step.setArgument('heating_system_heating_efficiency', 1.0)
|
1324
|
-
step.setArgument('
|
1370
|
+
step.setArgument('heating_system_fan_power_watts', 0.0)
|
1325
1371
|
elsif ['base-hvac-floor-furnace-propane-only.osw'].include? osw_file
|
1326
1372
|
step.setArgument('heating_system_type', HPXML::HVACTypeFloorFurnace)
|
1327
1373
|
step.setArgument('heating_system_fuel', HPXML::FuelTypePropane)
|
1328
1374
|
step.setArgument('heating_system_heating_efficiency', 0.8)
|
1329
|
-
step.setArgument('
|
1375
|
+
step.setArgument('heating_system_fan_power_watts', 0.0)
|
1330
1376
|
step.setArgument('cooling_system_type', 'none')
|
1331
1377
|
elsif ['base-hvac-furnace-elec-central-ac-1-speed.osw'].include? osw_file
|
1332
1378
|
step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
|
@@ -1343,7 +1389,7 @@ def get_values(osw_file, step)
|
|
1343
1389
|
step.setArgument('cooling_system_cooling_compressor_type', HPXML::HVACCompressorTypeVariableSpeed)
|
1344
1390
|
step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.78)
|
1345
1391
|
elsif ['base-hvac-furnace-gas-only.osw'].include? osw_file
|
1346
|
-
step.setArgument('
|
1392
|
+
step.setArgument('heating_system_fan_power_watts_per_cfm', 0.45)
|
1347
1393
|
step.setArgument('cooling_system_type', 'none')
|
1348
1394
|
elsif ['base-hvac-furnace-gas-room-ac.osw'].include? osw_file
|
1349
1395
|
step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
|
@@ -1364,6 +1410,7 @@ def get_values(osw_file, step)
|
|
1364
1410
|
step.setArgument('cooling_system_cooling_efficiency_seer', 19.0)
|
1365
1411
|
step.removeArgument('cooling_system_cooling_compressor_type')
|
1366
1412
|
step.setArgument('cooling_system_is_ducted', true)
|
1413
|
+
step.setArgument('cooling_system_fan_power_watts_per_cfm', 0.2)
|
1367
1414
|
step.setArgument('ducts_supply_leakage_value', 15.0)
|
1368
1415
|
step.setArgument('ducts_return_leakage_value', 5.0)
|
1369
1416
|
step.setArgument('ducts_supply_insulation_r', 0.0)
|
@@ -1380,8 +1427,8 @@ def get_values(osw_file, step)
|
|
1380
1427
|
step.removeArgument('heat_pump_cooling_compressor_type')
|
1381
1428
|
step.setArgument('heat_pump_heating_capacity', '42000.0')
|
1382
1429
|
step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
|
1383
|
-
step.setArgument('
|
1384
|
-
step.setArgument('
|
1430
|
+
step.setArgument('heat_pump_pump_power_watts_per_ton', 30.0)
|
1431
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.45)
|
1385
1432
|
elsif ['base-hvac-mini-split-heat-pump-ducted.osw'].include? osw_file
|
1386
1433
|
step.setArgument('heating_system_type', 'none')
|
1387
1434
|
step.setArgument('cooling_system_type', 'none')
|
@@ -1393,6 +1440,7 @@ def get_values(osw_file, step)
|
|
1393
1440
|
step.removeArgument('heat_pump_cooling_compressor_type')
|
1394
1441
|
step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
|
1395
1442
|
step.setArgument('heat_pump_mini_split_is_ducted', true)
|
1443
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
|
1396
1444
|
step.setArgument('ducts_supply_leakage_value', 15.0)
|
1397
1445
|
step.setArgument('ducts_return_leakage_value', 5.0)
|
1398
1446
|
step.setArgument('ducts_supply_insulation_r', 0.0)
|
@@ -1403,10 +1451,12 @@ def get_values(osw_file, step)
|
|
1403
1451
|
step.setArgument('heat_pump_heating_capacity_17F', '0')
|
1404
1452
|
step.setArgument('heat_pump_fraction_heat_load_served', 0)
|
1405
1453
|
step.setArgument('heat_pump_backup_fuel', 'none')
|
1454
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
|
1406
1455
|
elsif ['base-hvac-mini-split-heat-pump-ducted-heating-only.osw'].include? osw_file
|
1407
1456
|
step.setArgument('heat_pump_cooling_capacity', '0')
|
1408
1457
|
step.setArgument('heat_pump_fraction_cool_load_served', 0)
|
1409
1458
|
step.setArgument('heat_pump_backup_fuel', HPXML::FuelTypeElectricity)
|
1459
|
+
step.setArgument('heat_pump_fan_power_watts_per_cfm', 0.2)
|
1410
1460
|
elsif ['base-hvac-mini-split-heat-pump-ductless.osw'].include? osw_file
|
1411
1461
|
step.setArgument('heat_pump_backup_fuel', 'none')
|
1412
1462
|
step.setArgument('heat_pump_mini_split_is_ducted', false)
|
@@ -1416,14 +1466,7 @@ def get_values(osw_file, step)
|
|
1416
1466
|
elsif ['base-hvac-portable-heater-gas-only.osw'].include? osw_file
|
1417
1467
|
step.setArgument('heating_system_type', HPXML::HVACTypePortableHeater)
|
1418
1468
|
step.setArgument('heating_system_heating_efficiency', 1.0)
|
1419
|
-
step.setArgument('
|
1420
|
-
elsif ['base-hvac-programmable-thermostat.osw'].include? osw_file
|
1421
|
-
step.setArgument('setpoint_heating_setback_temp', 66)
|
1422
|
-
step.setArgument('setpoint_heating_setback_hours_per_week', 49)
|
1423
|
-
step.setArgument('setpoint_heating_setback_start_hour', 23)
|
1424
|
-
step.setArgument('setpoint_cooling_setup_temp', 80)
|
1425
|
-
step.setArgument('setpoint_cooling_setup_hours_per_week', 42)
|
1426
|
-
step.setArgument('setpoint_cooling_setup_start_hour', 9)
|
1469
|
+
step.setArgument('heating_system_fan_power_watts', 0.0)
|
1427
1470
|
elsif ['base-hvac-room-ac-only.osw'].include? osw_file
|
1428
1471
|
step.setArgument('heating_system_type', 'none')
|
1429
1472
|
step.setArgument('cooling_system_type', HPXML::HVACTypeRoomAirConditioner)
|
@@ -1436,19 +1479,21 @@ def get_values(osw_file, step)
|
|
1436
1479
|
step.setArgument('cooling_system_cooling_sensible_heat_fraction', 0.65)
|
1437
1480
|
step.setArgument('cooling_system_fraction_cool_load_served', 0.33)
|
1438
1481
|
elsif ['base-hvac-setpoints.osw'].include? osw_file
|
1439
|
-
step.setArgument('
|
1440
|
-
step.setArgument('
|
1482
|
+
step.setArgument('setpoint_heating_weekday_temp', 60.0)
|
1483
|
+
step.setArgument('setpoint_heating_weekend_temp', 60.0)
|
1484
|
+
step.setArgument('setpoint_cooling_weekday_temp', 80.0)
|
1485
|
+
step.setArgument('setpoint_cooling_weekend_temp', 80.0)
|
1441
1486
|
elsif ['base-hvac-stove-oil-only.osw'].include? osw_file
|
1442
1487
|
step.setArgument('heating_system_type', HPXML::HVACTypeStove)
|
1443
1488
|
step.setArgument('heating_system_fuel', HPXML::FuelTypeOil)
|
1444
1489
|
step.setArgument('heating_system_heating_efficiency', 0.8)
|
1445
|
-
step.setArgument('
|
1490
|
+
step.setArgument('heating_system_fan_power_watts', 40.0)
|
1446
1491
|
step.setArgument('cooling_system_type', 'none')
|
1447
1492
|
elsif ['base-hvac-stove-wood-pellets-only.osw'].include? osw_file
|
1448
1493
|
step.setArgument('heating_system_type', HPXML::HVACTypeStove)
|
1449
1494
|
step.setArgument('heating_system_fuel', HPXML::FuelTypeWoodPellets)
|
1450
1495
|
step.setArgument('heating_system_heating_efficiency', 0.8)
|
1451
|
-
step.setArgument('
|
1496
|
+
step.setArgument('heating_system_fan_power_watts', 40.0)
|
1452
1497
|
step.setArgument('cooling_system_type', 'none')
|
1453
1498
|
elsif ['base-hvac-undersized.osw'].include? osw_file
|
1454
1499
|
step.setArgument('heating_system_heating_capacity', '6400.0')
|
@@ -1459,12 +1504,12 @@ def get_values(osw_file, step)
|
|
1459
1504
|
step.setArgument('heating_system_type', HPXML::HVACTypeWallFurnace)
|
1460
1505
|
step.setArgument('heating_system_fuel', HPXML::FuelTypeElectricity)
|
1461
1506
|
step.setArgument('heating_system_heating_efficiency', 1.0)
|
1462
|
-
step.setArgument('
|
1507
|
+
step.setArgument('heating_system_fan_power_watts', 0.0)
|
1463
1508
|
step.setArgument('cooling_system_type', 'none')
|
1464
1509
|
elsif ['base-lighting-ceiling-fans.osw'].include? osw_file
|
1465
1510
|
step.setArgument('ceiling_fan_present', true)
|
1466
1511
|
step.setArgument('ceiling_fan_efficiency', '100.0')
|
1467
|
-
step.setArgument('ceiling_fan_quantity', '
|
1512
|
+
step.setArgument('ceiling_fan_quantity', '4')
|
1468
1513
|
step.setArgument('ceiling_fan_cooling_setpoint_temp_offset', 0.5)
|
1469
1514
|
elsif ['base-lighting-detailed.osw'].include? osw_file
|
1470
1515
|
step.setArgument('holiday_lighting_present', true)
|
@@ -1529,6 +1574,22 @@ def get_values(osw_file, step)
|
|
1529
1574
|
step.setArgument('mech_vent_sensible_recovery_efficiency_type', 'Adjusted')
|
1530
1575
|
step.setArgument('mech_vent_sensible_recovery_efficiency', 0.79)
|
1531
1576
|
step.setArgument('mech_vent_fan_power', 60)
|
1577
|
+
elsif ['base-bldgtype-multifamily-shared-mechvent.osw'].include? osw_file
|
1578
|
+
step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
|
1579
|
+
step.setArgument('mech_vent_flow_rate', 800)
|
1580
|
+
step.setArgument('mech_vent_fan_power', 240)
|
1581
|
+
step.setArgument('mech_vent_num_units_served', 10)
|
1582
|
+
step.setArgument('shared_mech_vent_frac_recirculation', 0.5)
|
1583
|
+
step.setArgument('mech_vent_fan_type_2', HPXML::MechVentTypeExhaust)
|
1584
|
+
step.setArgument('mech_vent_flow_rate_2', 72)
|
1585
|
+
step.setArgument('mech_vent_fan_power_2', 26)
|
1586
|
+
elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.osw'].include? osw_file
|
1587
|
+
step.setArgument('shared_mech_vent_preheating_fuel', HPXML::FuelTypeNaturalGas)
|
1588
|
+
step.setArgument('shared_mech_vent_preheating_efficiency', 0.92)
|
1589
|
+
step.setArgument('shared_mech_vent_preheating_fraction_heat_load_served', 0.7)
|
1590
|
+
step.setArgument('shared_mech_vent_precooling_fuel', HPXML::FuelTypeElectricity)
|
1591
|
+
step.setArgument('shared_mech_vent_precooling_efficiency', 4.0)
|
1592
|
+
step.setArgument('shared_mech_vent_precooling_fraction_cool_load_served', 0.8)
|
1532
1593
|
elsif ['base-mechvent-supply.osw'].include? osw_file
|
1533
1594
|
step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
|
1534
1595
|
elsif ['base-mechvent-whole-house-fan.osw'].include? osw_file
|
@@ -1538,11 +1599,17 @@ def get_values(osw_file, step)
|
|
1538
1599
|
step.removeArgument('site_type')
|
1539
1600
|
step.setArgument('geometry_num_bathrooms', Constants.Auto)
|
1540
1601
|
step.setArgument('geometry_num_occupants', Constants.Auto)
|
1602
|
+
step.setArgument('foundation_wall_thickness', Constants.Auto)
|
1603
|
+
step.setArgument('slab_thickness', Constants.Auto)
|
1604
|
+
step.setArgument('slab_carpet_fraction', Constants.Auto)
|
1541
1605
|
step.removeArgument('roof_material_type')
|
1542
1606
|
step.setArgument('roof_color', HPXML::ColorLight)
|
1543
1607
|
step.removeArgument('roof_material_type')
|
1608
|
+
step.setArgument('roof_emittance', Constants.Auto)
|
1609
|
+
step.setArgument('roof_radiant_barrier', Constants.Auto)
|
1544
1610
|
step.removeArgument('wall_siding_type')
|
1545
1611
|
step.setArgument('wall_color', HPXML::ColorMedium)
|
1612
|
+
step.setArgument('wall_emittance', Constants.Auto)
|
1546
1613
|
step.removeArgument('window_fraction_operable')
|
1547
1614
|
step.removeArgument('window_interior_shading_winter')
|
1548
1615
|
step.removeArgument('window_interior_shading_summer')
|
@@ -1559,11 +1626,12 @@ def get_values(osw_file, step)
|
|
1559
1626
|
step.setArgument('water_heater_heating_capacity', Constants.Auto)
|
1560
1627
|
step.setArgument('water_heater_setpoint_temperature', Constants.Auto)
|
1561
1628
|
step.setArgument('dhw_distribution_standard_piping_length', Constants.Auto)
|
1629
|
+
step.setArgument('dhw_distribution_pipe_r', Constants.Auto)
|
1562
1630
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
1563
1631
|
step.setArgument('solar_thermal_collector_type', HPXML::SolarThermalTypeSingleGlazing)
|
1564
1632
|
step.setArgument('solar_thermal_collector_rated_optical_efficiency', 0.77)
|
1565
1633
|
step.setArgument('solar_thermal_collector_rated_thermal_losses', 0.793)
|
1566
|
-
step.setArgument('pv_system_module_type_1',
|
1634
|
+
step.setArgument('pv_system_module_type_1', Constants.Auto)
|
1567
1635
|
step.removeArgument('pv_system_inverter_efficiency_1')
|
1568
1636
|
step.removeArgument('pv_system_system_losses_fraction_1')
|
1569
1637
|
step.setArgument('clothes_washer_location', Constants.Auto)
|
@@ -1579,6 +1647,7 @@ def get_values(osw_file, step)
|
|
1579
1647
|
step.setArgument('clothes_dryer_efficiency_cef', Constants.Auto)
|
1580
1648
|
step.setArgument('clothes_dryer_control_type', Constants.Auto)
|
1581
1649
|
step.setArgument('clothes_dryer_vented_flow_rate', Constants.Auto)
|
1650
|
+
step.setArgument('dishwasher_location', Constants.Auto)
|
1582
1651
|
step.setArgument('dishwasher_efficiency_kwh', Constants.Auto)
|
1583
1652
|
step.setArgument('dishwasher_label_electric_rate', Constants.Auto)
|
1584
1653
|
step.setArgument('dishwasher_label_gas_rate', Constants.Auto)
|
@@ -1587,6 +1656,7 @@ def get_values(osw_file, step)
|
|
1587
1656
|
step.setArgument('dishwasher_place_setting_capacity', Constants.Auto)
|
1588
1657
|
step.setArgument('refrigerator_location', Constants.Auto)
|
1589
1658
|
step.setArgument('refrigerator_rated_annual_kwh', Constants.Auto)
|
1659
|
+
step.setArgument('cooking_range_oven_location', Constants.Auto)
|
1590
1660
|
step.removeArgument('cooking_range_oven_is_induction')
|
1591
1661
|
step.removeArgument('cooking_range_oven_is_convection')
|
1592
1662
|
step.setArgument('ceiling_fan_present', true)
|
@@ -1602,18 +1672,25 @@ def get_values(osw_file, step)
|
|
1602
1672
|
step.setArgument('freezer_rated_annual_kwh', '300.0')
|
1603
1673
|
step.setArgument('plug_loads_well_pump_present', true)
|
1604
1674
|
step.setArgument('plug_loads_well_pump_annual_kwh', '475.0')
|
1675
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
|
1676
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
|
1605
1677
|
step.setArgument('plug_loads_vehicle_present', true)
|
1606
1678
|
step.setArgument('plug_loads_vehicle_annual_kwh', '1500.0')
|
1679
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
|
1680
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
|
1607
1681
|
step.setArgument('fuel_loads_grill_present', true)
|
1608
1682
|
step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypePropane)
|
1609
1683
|
step.setArgument('fuel_loads_grill_annual_therm', '25.0')
|
1610
|
-
step.setArgument('
|
1684
|
+
step.setArgument('fuel_loads_grill_usage_multiplier', 1.0)
|
1611
1685
|
step.setArgument('fuel_loads_lighting_present', true)
|
1612
1686
|
step.setArgument('fuel_loads_lighting_annual_therm', '28.0')
|
1687
|
+
step.setArgument('fuel_loads_lighting_usage_multiplier', 1.0)
|
1613
1688
|
step.setArgument('fuel_loads_fireplace_present', true)
|
1614
1689
|
step.setArgument('fuel_loads_fireplace_fuel_type', HPXML::FuelTypeWoodCord)
|
1615
1690
|
step.setArgument('fuel_loads_fireplace_annual_therm', '55.0')
|
1616
|
-
step.setArgument('
|
1691
|
+
step.setArgument('fuel_loads_fireplace_frac_sensible', '0.5')
|
1692
|
+
step.setArgument('fuel_loads_fireplace_frac_latent', '0.1')
|
1693
|
+
step.setArgument('fuel_loads_fireplace_usage_multiplier', 1.0)
|
1617
1694
|
step.setArgument('pool_present', true)
|
1618
1695
|
step.setArgument('pool_heater_type', HPXML::HeaterTypeGas)
|
1619
1696
|
step.setArgument('pool_pump_annual_kwh', '2700.0')
|
@@ -1658,7 +1735,6 @@ def get_values(osw_file, step)
|
|
1658
1735
|
step.setArgument('fuel_loads_grill_present', true)
|
1659
1736
|
step.setArgument('fuel_loads_grill_fuel_type', HPXML::FuelTypePropane)
|
1660
1737
|
step.setArgument('fuel_loads_grill_annual_therm', '25.0')
|
1661
|
-
step.setArgument('fuel_loads_grill_location', HPXML::LocationExterior)
|
1662
1738
|
step.setArgument('fuel_loads_grill_usage_multiplier', 0.9)
|
1663
1739
|
step.setArgument('fuel_loads_lighting_present', true)
|
1664
1740
|
step.setArgument('fuel_loads_lighting_annual_therm', '28.0')
|
@@ -1666,7 +1742,8 @@ def get_values(osw_file, step)
|
|
1666
1742
|
step.setArgument('fuel_loads_fireplace_present', true)
|
1667
1743
|
step.setArgument('fuel_loads_fireplace_fuel_type', HPXML::FuelTypeWoodCord)
|
1668
1744
|
step.setArgument('fuel_loads_fireplace_annual_therm', '55.0')
|
1669
|
-
step.setArgument('
|
1745
|
+
step.setArgument('fuel_loads_fireplace_frac_sensible', '0.5')
|
1746
|
+
step.setArgument('fuel_loads_fireplace_frac_latent', '0.1')
|
1670
1747
|
step.setArgument('fuel_loads_fireplace_usage_multiplier', 0.9)
|
1671
1748
|
elsif ['base-misc-neighbor-shading.osw'].include? osw_file
|
1672
1749
|
step.setArgument('neighbor_back_distance', 10)
|
@@ -1674,9 +1751,23 @@ def get_values(osw_file, step)
|
|
1674
1751
|
step.setArgument('neighbor_front_height', '12')
|
1675
1752
|
elsif ['base-pv.osw'].include? osw_file
|
1676
1753
|
step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
|
1754
|
+
step.setArgument('pv_system_location_1', HPXML::LocationRoof)
|
1755
|
+
step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
|
1677
1756
|
step.setArgument('pv_system_module_type_2', HPXML::PVModuleTypePremium)
|
1757
|
+
step.setArgument('pv_system_location_2', HPXML::LocationRoof)
|
1758
|
+
step.setArgument('pv_system_tracking_2', HPXML::PVTrackingTypeFixed)
|
1678
1759
|
step.setArgument('pv_system_array_azimuth_2', 90)
|
1679
1760
|
step.setArgument('pv_system_max_power_output_2', 1500)
|
1761
|
+
elsif ['base-bldgtype-multifamily-shared-pv.osw'].include? osw_file
|
1762
|
+
step.setArgument('pv_system_num_units_served_1', 6)
|
1763
|
+
step.setArgument('pv_system_location_1', HPXML::LocationGround)
|
1764
|
+
step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
|
1765
|
+
step.setArgument('pv_system_tracking_1', HPXML::PVTrackingTypeFixed)
|
1766
|
+
step.setArgument('pv_system_array_azimuth_1', 225)
|
1767
|
+
step.setArgument('pv_system_array_tilt_1', '30')
|
1768
|
+
step.setArgument('pv_system_max_power_output_1', 30000)
|
1769
|
+
step.setArgument('pv_system_inverter_efficiency_1', 0.96)
|
1770
|
+
step.setArgument('pv_system_system_losses_fraction_1', 0.14)
|
1680
1771
|
elsif ['base-simcontrol-calendar-year-custom.osw'].include? osw_file
|
1681
1772
|
step.setArgument('simulation_control_run_period_calendar_year', 2008)
|
1682
1773
|
elsif ['base-simcontrol-daylight-saving-custom.osw'].include? osw_file
|
@@ -1722,8 +1813,6 @@ def get_values(osw_file, step)
|
|
1722
1813
|
elsif ['extra-dhw-solar-latitude.osw'].include? osw_file
|
1723
1814
|
step.setArgument('solar_thermal_system_type', 'hot water')
|
1724
1815
|
step.setArgument('solar_thermal_collector_tilt', 'latitude-15')
|
1725
|
-
elsif ['extra-dhw-shared-water-heater.osw'].include? osw_file
|
1726
|
-
step.setArgument('water_heater_is_shared_system', true)
|
1727
1816
|
elsif ['extra-second-refrigerator.osw'].include? osw_file
|
1728
1817
|
step.setArgument('extra_refrigerator_present', true)
|
1729
1818
|
elsif ['extra-second-heating-system-portable-heater.osw'].include? osw_file
|
@@ -1743,41 +1832,39 @@ def get_values(osw_file, step)
|
|
1743
1832
|
step.setArgument('heating_system_fraction_heat_load_served', 0.75)
|
1744
1833
|
step.setArgument('heating_system_type_2', HPXML::HVACTypeFireplace)
|
1745
1834
|
step.setArgument('heating_system_heating_capacity_2', '16000.0')
|
1746
|
-
elsif ['extra-pv-shared.osw'].include? osw_file
|
1747
|
-
step.setArgument('geometry_building_num_bedrooms', 9)
|
1748
|
-
step.setArgument('pv_system_module_type_1', HPXML::PVModuleTypeStandard)
|
1749
|
-
step.setArgument('pv_system_is_shared_1', true)
|
1750
1835
|
elsif ['extra-enclosure-garage-partially-protruded.osw'].include? osw_file
|
1751
1836
|
step.setArgument('geometry_garage_width', 12)
|
1752
1837
|
step.setArgument('geometry_garage_protrusion', 0.5)
|
1753
|
-
elsif ['extra-mechvent-shared.osw'].include? osw_file
|
1754
|
-
step.setArgument('mech_vent_fan_type', HPXML::MechVentTypeSupply)
|
1755
|
-
step.setArgument('mech_vent_flow_rate', 800)
|
1756
|
-
step.setArgument('mech_vent_fan_power', 240)
|
1757
|
-
step.setArgument('mech_vent_is_shared_system', true)
|
1758
|
-
step.setArgument('shared_mech_vent_in_unit_flow_rate', 80.0)
|
1759
|
-
step.setArgument('shared_mech_vent_frac_recirculation', 0.5)
|
1760
|
-
step.setArgument('mech_vent_fan_type_2', HPXML::MechVentTypeExhaust)
|
1761
|
-
step.setArgument('mech_vent_flow_rate_2', 72)
|
1762
|
-
step.setArgument('mech_vent_fan_power_2', 26)
|
1763
|
-
elsif ['extra-mechvent-shared-preconditioning.osw'].include? osw_file
|
1764
|
-
step.setArgument('shared_mech_vent_preheating_fuel', HPXML::FuelTypeNaturalGas)
|
1765
|
-
step.setArgument('shared_mech_vent_preheating_efficiency', 0.92)
|
1766
|
-
step.setArgument('shared_mech_vent_preheating_fraction_heat_load_served', 0.7)
|
1767
|
-
step.setArgument('shared_mech_vent_precooling_fuel', HPXML::FuelTypeElectricity)
|
1768
|
-
step.setArgument('shared_mech_vent_precooling_efficiency', 4.0)
|
1769
|
-
step.setArgument('shared_mech_vent_precooling_fraction_cool_load_served', 0.8)
|
1770
1838
|
elsif ['extra-vacancy-6-months.osw'].include? osw_file
|
1771
1839
|
step.setArgument('schedules_vacancy_begin_month', 1)
|
1772
1840
|
step.setArgument('schedules_vacancy_begin_day_of_month', 1)
|
1773
1841
|
step.setArgument('schedules_vacancy_end_month', 6)
|
1774
1842
|
step.setArgument('schedules_vacancy_end_day_of_month', 30)
|
1843
|
+
elsif ['extra-schedules-random-seed.osw'].include? osw_file
|
1844
|
+
step.setArgument('schedules_random_seed', 123)
|
1845
|
+
elsif ['extra-hvac-programmable-thermostat.osw'].include? osw_file
|
1846
|
+
step.setArgument('setpoint_heating_weekday_offset_magnitude', 4)
|
1847
|
+
step.setArgument('setpoint_heating_weekend_offset_magnitude', 4)
|
1848
|
+
step.setArgument('setpoint_heating_weekday_schedule', '-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1')
|
1849
|
+
step.setArgument('setpoint_heating_weekend_schedule', '-1, -1, -1, -1, -1, -1, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1')
|
1850
|
+
step.setArgument('setpoint_cooling_weekday_offset_magnitude', 4)
|
1851
|
+
step.setArgument('setpoint_cooling_weekend_offset_magnitude', 4)
|
1852
|
+
step.setArgument('setpoint_cooling_weekday_schedule', '0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0')
|
1853
|
+
step.setArgument('setpoint_cooling_weekend_schedule', '0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0')
|
1854
|
+
elsif ['extra-plug-loads-additional-multipliers.osw'].include? osw_file
|
1855
|
+
step.setArgument('plug_loads_television_usage_multiplier_2', 1.5)
|
1856
|
+
step.setArgument('plug_loads_other_usage_multiplier_2', 1.5)
|
1857
|
+
step.setArgument('plug_loads_well_pump_present', true)
|
1858
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.5)
|
1859
|
+
step.setArgument('plug_loads_vehicle_present', true)
|
1860
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.5)
|
1775
1861
|
end
|
1776
1862
|
|
1777
1863
|
# Warnings/Errors
|
1778
1864
|
if ['invalid_files/non-electric-heat-pump-water-heater.osw'].include? osw_file
|
1779
1865
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeHeatPump)
|
1780
1866
|
step.setArgument('water_heater_fuel_type', HPXML::FuelTypeNaturalGas)
|
1867
|
+
step.setArgument('water_heater_efficiency', 2.3)
|
1781
1868
|
elsif ['invalid_files/heating-system-and-heat-pump.osw'].include? osw_file
|
1782
1869
|
step.setArgument('cooling_system_type', 'none')
|
1783
1870
|
step.setArgument('heat_pump_type', HPXML::HVACTypeHeatPumpAirToAir)
|
@@ -1798,9 +1885,11 @@ def get_values(osw_file, step)
|
|
1798
1885
|
elsif ['invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw'].include? osw_file
|
1799
1886
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
|
1800
1887
|
step.setArgument('geometry_foundation_height_above_grade', 0.0)
|
1888
|
+
step.setArgument('geometry_level', 'Bottom')
|
1801
1889
|
elsif ['invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw'].include? osw_file
|
1802
1890
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
|
1803
1891
|
step.setArgument('geometry_foundation_height', 0.0)
|
1892
|
+
step.setArgument('geometry_level', 'Bottom')
|
1804
1893
|
elsif ['invalid_files/slab-non-zero-foundation-height-above-grade.osw'].include? osw_file
|
1805
1894
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeSlab)
|
1806
1895
|
step.setArgument('geometry_foundation_height', 0.0)
|
@@ -1821,7 +1910,7 @@ def get_values(osw_file, step)
|
|
1821
1910
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceVented)
|
1822
1911
|
step.setArgument('geometry_foundation_height', 3.0)
|
1823
1912
|
step.setArgument('floor_assembly_r', 10)
|
1824
|
-
elsif ['invalid_files/unvented-crawlspace-with-ceiling-insulation.osw'].include? osw_file
|
1913
|
+
elsif ['invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw'].include? osw_file
|
1825
1914
|
step.setArgument('geometry_foundation_type', HPXML::FoundationTypeCrawlspaceUnvented)
|
1826
1915
|
step.setArgument('geometry_foundation_height', 3.0)
|
1827
1916
|
step.setArgument('floor_assembly_r', 10)
|
@@ -1841,6 +1930,17 @@ def get_values(osw_file, step)
|
|
1841
1930
|
step.setArgument('geometry_attic_type', HPXML::AtticTypeConditioned)
|
1842
1931
|
elsif ['invalid_files/dhw-indirect-without-boiler.osw'].include? osw_file
|
1843
1932
|
step.setArgument('water_heater_type', HPXML::WaterHeaterTypeCombiStorage)
|
1933
|
+
elsif ['invalid_files/multipliers-without-plug-loads.osw'].include? osw_file
|
1934
|
+
step.setArgument('plug_loads_television_annual_kwh', '0.0')
|
1935
|
+
step.setArgument('plug_loads_other_annual_kwh', '0.0')
|
1936
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier', 1.0)
|
1937
|
+
step.setArgument('plug_loads_well_pump_usage_multiplier_2', 1.0)
|
1938
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier', 1.0)
|
1939
|
+
step.setArgument('plug_loads_vehicle_usage_multiplier_2', 1.0)
|
1940
|
+
elsif ['invalid_files/multipliers-without-fuel-loads.osw'].include? osw_file
|
1941
|
+
step.setArgument('fuel_loads_grill_usage_multiplier', 1.0)
|
1942
|
+
step.setArgument('fuel_loads_lighting_usage_multiplier', 1.0)
|
1943
|
+
step.setArgument('fuel_loads_fireplace_usage_multiplier', 1.0)
|
1844
1944
|
end
|
1845
1945
|
return step
|
1846
1946
|
end
|
@@ -1856,6 +1956,7 @@ def create_hpxmls
|
|
1856
1956
|
|
1857
1957
|
this_dir = File.dirname(__FILE__)
|
1858
1958
|
sample_files_dir = File.join(this_dir, 'workflow/sample_files')
|
1959
|
+
hpxml_docs = {}
|
1859
1960
|
|
1860
1961
|
# Hash of HPXML -> Parent HPXML
|
1861
1962
|
hpxmls_files = {
|
@@ -1892,9 +1993,9 @@ def create_hpxmls
|
|
1892
1993
|
'invalid_files/clothes-washer-location.xml' => 'base.xml',
|
1893
1994
|
'invalid_files/clothes-dryer-location.xml' => 'base.xml',
|
1894
1995
|
'invalid_files/cooking-range-location.xml' => 'base.xml',
|
1895
|
-
'invalid_files/appliances-location-unconditioned-space.xml' => 'base.xml',
|
1896
|
-
'invalid_files/coal-for-non-boiler-heating.xml' => 'base-hvac-stove-oil-only.xml',
|
1897
1996
|
'invalid_files/dhw-frac-load-served.xml' => 'base-dhw-multiple.xml',
|
1997
|
+
'invalid_files/dhw-invalid-ef-tank.xml' => 'base.xml',
|
1998
|
+
'invalid_files/dhw-invalid-uef-tank-heat-pump.xml' => 'base-dhw-tank-heat-pump-uef.xml',
|
1898
1999
|
'invalid_files/dishwasher-location.xml' => 'base.xml',
|
1899
2000
|
'invalid_files/duct-location.xml' => 'base.xml',
|
1900
2001
|
'invalid_files/duct-location-unconditioned-space.xml' => 'base.xml',
|
@@ -1902,6 +2003,7 @@ def create_hpxmls
|
|
1902
2003
|
'invalid_files/enclosure-attic-missing-roof.xml' => 'base.xml',
|
1903
2004
|
'invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml' => 'base-foundation-unconditioned-basement.xml',
|
1904
2005
|
'invalid_files/enclosure-basement-missing-slab.xml' => 'base-foundation-unconditioned-basement.xml',
|
2006
|
+
'invalid_files/enclosure-floor-area-exceeds-cfa.xml' => 'base.xml',
|
1905
2007
|
'invalid_files/enclosure-garage-missing-exterior-wall.xml' => 'base-enclosure-garage.xml',
|
1906
2008
|
'invalid_files/enclosure-garage-missing-roof-ceiling.xml' => 'base-enclosure-garage.xml',
|
1907
2009
|
'invalid_files/enclosure-garage-missing-slab.xml' => 'base-enclosure-garage.xml',
|
@@ -1917,17 +2019,22 @@ def create_hpxmls
|
|
1917
2019
|
'invalid_files/hvac-dse-multiple-attached-cooling.xml' => 'base-hvac-dse.xml',
|
1918
2020
|
'invalid_files/hvac-dse-multiple-attached-heating.xml' => 'base-hvac-dse.xml',
|
1919
2021
|
'invalid_files/hvac-frac-load-served.xml' => 'base-hvac-multiple.xml',
|
1920
|
-
'invalid_files/
|
1921
|
-
'invalid_files/invalid-
|
2022
|
+
'invalid_files/hvac-inconsistent-fan-powers.xml' => 'base.xml',
|
2023
|
+
'invalid_files/invalid-datatype-boolean.xml' => 'base.xml',
|
2024
|
+
'invalid_files/invalid-datatype-float.xml' => 'base.xml',
|
2025
|
+
'invalid_files/invalid-datatype-integer.xml' => 'base.xml',
|
2026
|
+
'invalid_files/invalid-daylight-saving.xml' => 'base-simcontrol-daylight-saving-custom.xml',
|
1922
2027
|
'invalid_files/invalid-epw-filepath.xml' => 'base.xml',
|
1923
|
-
'invalid_files/invalid-facility-type.xml' => 'base-
|
2028
|
+
'invalid_files/invalid-facility-type-equipment.xml' => 'base-bldgtype-multifamily-shared-laundry-room.xml',
|
2029
|
+
'invalid_files/invalid-facility-type-surfaces.xml' => 'base.xml',
|
2030
|
+
'invalid_files/invalid-input-parameters.xml' => 'base.xml',
|
1924
2031
|
'invalid_files/invalid-neighbor-shading-azimuth.xml' => 'base-misc-neighbor-shading.xml',
|
1925
2032
|
'invalid_files/invalid-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
|
1926
2033
|
'invalid_files/invalid-relatedhvac-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
|
1927
2034
|
'invalid_files/invalid-runperiod.xml' => 'base.xml',
|
2035
|
+
'invalid_files/invalid-schema-version.xml' => 'base.xml',
|
1928
2036
|
'invalid_files/invalid-timestep.xml' => 'base.xml',
|
1929
2037
|
'invalid_files/invalid-window-height.xml' => 'base-enclosure-overhangs.xml',
|
1930
|
-
'invalid_files/invalid-window-interior-shading.xml' => 'base.xml',
|
1931
2038
|
'invalid_files/lighting-fractions.xml' => 'base.xml',
|
1932
2039
|
'invalid_files/missing-elements.xml' => 'base.xml',
|
1933
2040
|
'invalid_files/multifamily-reference-appliance.xml' => 'base.xml',
|
@@ -1936,6 +2043,7 @@ def create_hpxmls
|
|
1936
2043
|
'invalid_files/multifamily-reference-water-heater.xml' => 'base.xml',
|
1937
2044
|
'invalid_files/net-area-negative-roof.xml' => 'base-enclosure-skylights.xml',
|
1938
2045
|
'invalid_files/net-area-negative-wall.xml' => 'base.xml',
|
2046
|
+
'invalid_files/num-bedrooms-exceeds-limit.xml' => 'base.xml',
|
1939
2047
|
'invalid_files/orphaned-hvac-distribution.xml' => 'base-hvac-furnace-gas-room-ac.xml',
|
1940
2048
|
'invalid_files/refrigerator-location.xml' => 'base.xml',
|
1941
2049
|
'invalid_files/repeated-relatedhvac-dhw-indirect.xml' => 'base-dhw-indirect.xml',
|
@@ -1949,8 +2057,8 @@ def create_hpxmls
|
|
1949
2057
|
'invalid_files/unattached-hvac-distribution.xml' => 'base.xml',
|
1950
2058
|
'invalid_files/unattached-skylight.xml' => 'base-enclosure-skylights.xml',
|
1951
2059
|
'invalid_files/unattached-solar-thermal-system.xml' => 'base-dhw-solar-indirect-flat-plate.xml',
|
1952
|
-
'invalid_files/unattached-shared-clothes-washer-water-heater.xml' => 'base-
|
1953
|
-
'invalid_files/unattached-shared-dishwasher-water-heater.xml' => 'base-
|
2060
|
+
'invalid_files/unattached-shared-clothes-washer-water-heater.xml' => 'base-bldgtype-multifamily-shared-laundry-room.xml',
|
2061
|
+
'invalid_files/unattached-shared-dishwasher-water-heater.xml' => 'base-bldgtype-multifamily-shared-laundry-room.xml',
|
1954
2062
|
'invalid_files/unattached-window.xml' => 'base.xml',
|
1955
2063
|
'invalid_files/water-heater-location.xml' => 'base.xml',
|
1956
2064
|
'invalid_files/water-heater-location-other.xml' => 'base.xml',
|
@@ -1960,8 +2068,9 @@ def create_hpxmls
|
|
1960
2068
|
'invalid_files/refrigerators-no-primary.xml' => 'base.xml',
|
1961
2069
|
'base-appliances-coal.xml' => 'base.xml',
|
1962
2070
|
'base-appliances-dehumidifier.xml' => 'base-location-dallas-tx.xml',
|
1963
|
-
'base-appliances-dehumidifier-ief.xml' => 'base-appliances-dehumidifier.xml',
|
1964
2071
|
'base-appliances-dehumidifier-50percent.xml' => 'base-appliances-dehumidifier.xml',
|
2072
|
+
'base-appliances-dehumidifier-ief-portable.xml' => 'base-appliances-dehumidifier.xml',
|
2073
|
+
'base-appliances-dehumidifier-ief-whole-home.xml' => 'base-appliances-dehumidifier-ief-portable.xml',
|
1965
2074
|
'base-appliances-gas.xml' => 'base.xml',
|
1966
2075
|
'base-appliances-modified.xml' => 'base.xml',
|
1967
2076
|
'base-appliances-none.xml' => 'base.xml',
|
@@ -1974,6 +2083,37 @@ def create_hpxmls
|
|
1974
2083
|
'base-atticroof-radiant-barrier.xml' => 'base-location-dallas-tx.xml',
|
1975
2084
|
'base-atticroof-vented.xml' => 'base.xml',
|
1976
2085
|
'base-atticroof-unvented-insulated-roof.xml' => 'base.xml',
|
2086
|
+
'base-bldgtype-multifamily.xml' => 'base.xml',
|
2087
|
+
'base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml' => 'base-bldgtype-multifamily.xml',
|
2088
|
+
'base-bldgtype-multifamily-adjacent-to-other-heated-space.xml' => 'base-bldgtype-multifamily.xml',
|
2089
|
+
'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml' => 'base-bldgtype-multifamily.xml',
|
2090
|
+
'base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml' => 'base-bldgtype-multifamily.xml',
|
2091
|
+
'base-bldgtype-multifamily-adjacent-to-multiple.xml' => 'base-bldgtype-multifamily.xml',
|
2092
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml' => 'base-bldgtype-multifamily.xml',
|
2093
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml',
|
2094
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml' => 'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml',
|
2095
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml' => 'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml',
|
2096
|
+
'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml' => 'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml',
|
2097
|
+
'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml' => 'base-bldgtype-multifamily.xml',
|
2098
|
+
'base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
|
2099
|
+
'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
|
2100
|
+
'base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml' => 'base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
|
2101
|
+
'base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml' => 'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
|
2102
|
+
'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml' => 'base-bldgtype-multifamily.xml',
|
2103
|
+
'base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
|
2104
|
+
'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml' => 'base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
|
2105
|
+
'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml' => 'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
|
2106
|
+
'base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml' => 'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml',
|
2107
|
+
'base-bldgtype-multifamily-shared-generator.xml' => 'base-bldgtype-multifamily.xml',
|
2108
|
+
'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml' => 'base-bldgtype-multifamily.xml',
|
2109
|
+
'base-bldgtype-multifamily-shared-laundry-room.xml' => 'base-bldgtype-multifamily.xml',
|
2110
|
+
'base-bldgtype-multifamily-shared-mechvent.xml' => 'base-bldgtype-multifamily.xml',
|
2111
|
+
'base-bldgtype-multifamily-shared-mechvent-preconditioning.xml' => 'base-bldgtype-multifamily-shared-mechvent.xml',
|
2112
|
+
'base-bldgtype-multifamily-shared-mechvent-multiple.xml' => 'base-bldgtype-multifamily.xml',
|
2113
|
+
'base-bldgtype-multifamily-shared-pv.xml' => 'base-bldgtype-multifamily.xml',
|
2114
|
+
'base-bldgtype-multifamily-shared-water-heater.xml' => 'base-bldgtype-multifamily.xml',
|
2115
|
+
'base-bldgtype-multifamily-shared-water-heater-recirc.xml' => 'base-bldgtype-multifamily-shared-water-heater.xml',
|
2116
|
+
'base-bldgtype-single-family-attached.xml' => 'base.xml',
|
1977
2117
|
'base-dhw-combi-tankless.xml' => 'base-dhw-indirect.xml',
|
1978
2118
|
'base-dhw-combi-tankless-outside.xml' => 'base-dhw-combi-tankless.xml',
|
1979
2119
|
'base-dhw-desuperheater.xml' => 'base-hvac-central-ac-only-1-speed.xml',
|
@@ -1996,9 +2136,6 @@ def create_hpxmls
|
|
1996
2136
|
'base-dhw-recirc-nocontrol.xml' => 'base.xml',
|
1997
2137
|
'base-dhw-recirc-temperature.xml' => 'base.xml',
|
1998
2138
|
'base-dhw-recirc-timer.xml' => 'base.xml',
|
1999
|
-
'base-dhw-shared-water-heater.xml' => 'base-enclosure-attached-multifamily.xml',
|
2000
|
-
'base-dhw-shared-water-heater-recirc.xml' => 'base-dhw-shared-water-heater.xml',
|
2001
|
-
'base-dhw-shared-laundry-room.xml' => 'base-enclosure-attached-multifamily.xml',
|
2002
2139
|
'base-dhw-solar-direct-evacuated-tube.xml' => 'base.xml',
|
2003
2140
|
'base-dhw-solar-direct-flat-plate.xml' => 'base.xml',
|
2004
2141
|
'base-dhw-solar-direct-ics.xml' => 'base.xml',
|
@@ -2006,36 +2143,35 @@ def create_hpxmls
|
|
2006
2143
|
'base-dhw-solar-indirect-flat-plate.xml' => 'base.xml',
|
2007
2144
|
'base-dhw-solar-thermosyphon-flat-plate.xml' => 'base.xml',
|
2008
2145
|
'base-dhw-tank-coal.xml' => 'base.xml',
|
2146
|
+
'base-dhw-tank-elec-uef.xml' => 'base.xml',
|
2009
2147
|
'base-dhw-tank-gas.xml' => 'base.xml',
|
2148
|
+
'base-dhw-tank-gas-uef.xml' => 'base.xml',
|
2010
2149
|
'base-dhw-tank-gas-outside.xml' => 'base-dhw-tank-gas.xml',
|
2011
2150
|
'base-dhw-tank-heat-pump.xml' => 'base.xml',
|
2012
2151
|
'base-dhw-tank-heat-pump-outside.xml' => 'base-dhw-tank-heat-pump.xml',
|
2152
|
+
'base-dhw-tank-heat-pump-uef.xml' => 'base.xml',
|
2013
2153
|
'base-dhw-tank-heat-pump-with-solar.xml' => 'base-dhw-tank-heat-pump.xml',
|
2014
2154
|
'base-dhw-tank-heat-pump-with-solar-fraction.xml' => 'base-dhw-tank-heat-pump.xml',
|
2015
2155
|
'base-dhw-tank-oil.xml' => 'base.xml',
|
2016
2156
|
'base-dhw-tank-wood.xml' => 'base.xml',
|
2017
2157
|
'base-dhw-tankless-electric.xml' => 'base.xml',
|
2158
|
+
'base-dhw-tankless-electric-uef.xml' => 'base.xml',
|
2018
2159
|
'base-dhw-tankless-electric-outside.xml' => 'base-dhw-tankless-electric.xml',
|
2019
2160
|
'base-dhw-tankless-gas.xml' => 'base.xml',
|
2161
|
+
'base-dhw-tankless-gas-uef.xml' => 'base.xml',
|
2020
2162
|
'base-dhw-tankless-gas-with-solar.xml' => 'base-dhw-tankless-gas.xml',
|
2021
2163
|
'base-dhw-tankless-gas-with-solar-fraction.xml' => 'base-dhw-tankless-gas.xml',
|
2022
2164
|
'base-dhw-tankless-propane.xml' => 'base.xml',
|
2023
|
-
'base-dhw-uef.xml' => 'base.xml',
|
2024
2165
|
'base-dhw-jacket-electric.xml' => 'base.xml',
|
2025
2166
|
'base-dhw-jacket-gas.xml' => 'base-dhw-tank-gas.xml',
|
2026
2167
|
'base-dhw-jacket-indirect.xml' => 'base-dhw-indirect.xml',
|
2027
2168
|
'base-dhw-jacket-hpwh.xml' => 'base-dhw-tank-heat-pump.xml',
|
2028
2169
|
'base-enclosure-2stories.xml' => 'base.xml',
|
2029
2170
|
'base-enclosure-2stories-garage.xml' => 'base-enclosure-2stories.xml',
|
2030
|
-
'base-enclosure-other-housing-unit.xml' => 'base-foundation-ambient.xml',
|
2031
|
-
'base-enclosure-other-heated-space.xml' => 'base-foundation-ambient.xml',
|
2032
|
-
'base-enclosure-other-non-freezing-space.xml' => 'base-foundation-ambient.xml',
|
2033
|
-
'base-enclosure-other-multifamily-buffer-space.xml' => 'base-foundation-ambient.xml',
|
2034
2171
|
'base-enclosure-beds-1.xml' => 'base.xml',
|
2035
2172
|
'base-enclosure-beds-2.xml' => 'base.xml',
|
2036
2173
|
'base-enclosure-beds-4.xml' => 'base.xml',
|
2037
2174
|
'base-enclosure-beds-5.xml' => 'base.xml',
|
2038
|
-
'base-enclosure-common-surfaces.xml' => 'base-enclosure-attached-multifamily.xml',
|
2039
2175
|
'base-enclosure-garage.xml' => 'base.xml',
|
2040
2176
|
'base-enclosure-infil-ach-house-pressure.xml' => 'base.xml',
|
2041
2177
|
'base-enclosure-infil-cfm-house-pressure.xml' => 'base-enclosure-infil-cfm50.xml',
|
@@ -2045,11 +2181,11 @@ def create_hpxmls
|
|
2045
2181
|
'base-enclosure-overhangs.xml' => 'base.xml',
|
2046
2182
|
'base-enclosure-rooftypes.xml' => 'base.xml',
|
2047
2183
|
'base-enclosure-skylights.xml' => 'base.xml',
|
2184
|
+
'base-enclosure-split-level.xml' => 'base-foundation-slab.xml',
|
2048
2185
|
'base-enclosure-split-surfaces.xml' => 'base-enclosure-skylights.xml',
|
2049
2186
|
'base-enclosure-walltypes.xml' => 'base.xml',
|
2050
2187
|
'base-enclosure-windows-interior-shading.xml' => 'base.xml',
|
2051
2188
|
'base-enclosure-windows-none.xml' => 'base.xml',
|
2052
|
-
'base-enclosure-attached-multifamily.xml' => 'base.xml',
|
2053
2189
|
'base-foundation-multiple.xml' => 'base-foundation-unconditioned-basement.xml',
|
2054
2190
|
'base-foundation-ambient.xml' => 'base.xml',
|
2055
2191
|
'base-foundation-conditioned-basement-slab-insulation.xml' => 'base.xml',
|
@@ -2091,7 +2227,7 @@ def create_hpxmls
|
|
2091
2227
|
'base-hvac-fireplace-wood-only.xml' => 'base.xml',
|
2092
2228
|
'base-hvac-fixed-heater-gas-only.xml' => 'base.xml',
|
2093
2229
|
'base-hvac-floor-furnace-propane-only.xml' => 'base.xml',
|
2094
|
-
'base-hvac-
|
2230
|
+
'base-hvac-furnace-coal-only.xml' => 'base.xml',
|
2095
2231
|
'base-hvac-furnace-elec-central-ac-1-speed.xml' => 'base.xml',
|
2096
2232
|
'base-hvac-furnace-elec-only.xml' => 'base.xml',
|
2097
2233
|
'base-hvac-furnace-gas-central-ac-2-speed.xml' => 'base.xml',
|
@@ -2115,25 +2251,10 @@ def create_hpxmls
|
|
2115
2251
|
'base-hvac-none.xml' => 'base.xml',
|
2116
2252
|
'base-hvac-portable-heater-gas-only.xml' => 'base.xml',
|
2117
2253
|
'base-hvac-programmable-thermostat.xml' => 'base.xml',
|
2254
|
+
'base-hvac-programmable-thermostat-detailed.xml' => 'base.xml',
|
2118
2255
|
'base-hvac-room-ac-only.xml' => 'base.xml',
|
2119
2256
|
'base-hvac-room-ac-only-33percent.xml' => 'base-hvac-room-ac-only.xml',
|
2120
2257
|
'base-hvac-setpoints.xml' => 'base.xml',
|
2121
|
-
'base-hvac-shared-boiler-chiller-baseboard.xml' => 'base-enclosure-attached-multifamily.xml',
|
2122
|
-
'base-hvac-shared-boiler-chiller-fan-coil.xml' => 'base-hvac-shared-boiler-chiller-baseboard.xml',
|
2123
|
-
'base-hvac-shared-boiler-chiller-fan-coil-ducted.xml' => 'base-hvac-shared-boiler-chiller-fan-coil.xml',
|
2124
|
-
'base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml' => 'base-hvac-shared-boiler-chiller-baseboard.xml',
|
2125
|
-
'base-hvac-shared-boiler-cooling-tower-water-loop-heat-pump.xml' => 'base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml',
|
2126
|
-
'base-hvac-shared-boiler-only-baseboard.xml' => 'base-enclosure-attached-multifamily.xml',
|
2127
|
-
'base-hvac-shared-boiler-only-fan-coil.xml' => 'base-hvac-shared-boiler-only-baseboard.xml',
|
2128
|
-
'base-hvac-shared-boiler-only-fan-coil-ducted.xml' => 'base-hvac-shared-boiler-only-fan-coil.xml',
|
2129
|
-
'base-hvac-shared-boiler-only-fan-coil-eae.xml' => 'base-hvac-shared-boiler-only-fan-coil.xml',
|
2130
|
-
'base-hvac-shared-boiler-only-water-loop-heat-pump.xml' => 'base-hvac-shared-boiler-only-baseboard.xml',
|
2131
|
-
'base-hvac-shared-chiller-only-baseboard.xml' => 'base-enclosure-attached-multifamily.xml',
|
2132
|
-
'base-hvac-shared-chiller-only-fan-coil.xml' => 'base-hvac-shared-chiller-only-baseboard.xml',
|
2133
|
-
'base-hvac-shared-chiller-only-fan-coil-ducted.xml' => 'base-hvac-shared-chiller-only-fan-coil.xml',
|
2134
|
-
'base-hvac-shared-chiller-only-water-loop-heat-pump.xml' => 'base-hvac-shared-chiller-only-baseboard.xml',
|
2135
|
-
'base-hvac-shared-cooling-tower-only-water-loop-heat-pump.xml' => 'base-hvac-shared-chiller-only-water-loop-heat-pump.xml',
|
2136
|
-
'base-hvac-shared-ground-loop-ground-to-air-heat-pump.xml' => 'base-enclosure-attached-multifamily.xml',
|
2137
2258
|
'base-hvac-stove-oil-only.xml' => 'base.xml',
|
2138
2259
|
'base-hvac-stove-wood-pellets-only.xml' => 'base.xml',
|
2139
2260
|
'base-hvac-undersized.xml' => 'base.xml',
|
@@ -2159,20 +2280,17 @@ def create_hpxmls
|
|
2159
2280
|
'base-mechvent-hrv.xml' => 'base.xml',
|
2160
2281
|
'base-mechvent-hrv-asre.xml' => 'base.xml',
|
2161
2282
|
'base-mechvent-multiple.xml' => 'base-mechvent-bath-kitchen-fans.xml',
|
2162
|
-
'base-mechvent-shared.xml' => 'base-enclosure-attached-multifamily.xml',
|
2163
|
-
'base-mechvent-shared-preconditioning.xml' => 'base-mechvent-shared.xml',
|
2164
|
-
'base-mechvent-shared-multiple.xml' => 'base-enclosure-attached-multifamily.xml',
|
2165
2283
|
'base-mechvent-supply.xml' => 'base.xml',
|
2166
2284
|
'base-mechvent-whole-house-fan.xml' => 'base.xml',
|
2167
2285
|
'base-misc-defaults.xml' => 'base.xml',
|
2168
|
-
'base-misc-
|
2286
|
+
'base-misc-generators.xml' => 'base.xml',
|
2287
|
+
'base-misc-loads-large-uncommon.xml' => 'base.xml',
|
2169
2288
|
'base-misc-loads-large-uncommon2.xml' => 'base-misc-loads-large-uncommon.xml',
|
2170
2289
|
'base-misc-loads-none.xml' => 'base.xml',
|
2171
2290
|
'base-misc-neighbor-shading.xml' => 'base.xml',
|
2172
2291
|
'base-misc-shelter-coefficient.xml' => 'base.xml',
|
2173
2292
|
'base-misc-usage-multiplier.xml' => 'base.xml',
|
2174
2293
|
'base-pv.xml' => 'base.xml',
|
2175
|
-
'base-pv-shared.xml' => 'base-enclosure-attached-multifamily.xml',
|
2176
2294
|
'base-simcontrol-calendar-year-custom.xml' => 'base.xml',
|
2177
2295
|
'base-simcontrol-daylight-saving-custom.xml' => 'base.xml',
|
2178
2296
|
'base-simcontrol-daylight-saving-disabled.xml' => 'base.xml',
|
@@ -2267,6 +2385,7 @@ def create_hpxmls
|
|
2267
2385
|
set_hpxml_water_fixtures(hpxml_file, hpxml)
|
2268
2386
|
set_hpxml_solar_thermal_system(hpxml_file, hpxml)
|
2269
2387
|
set_hpxml_pv_systems(hpxml_file, hpxml)
|
2388
|
+
set_hpxml_generators(hpxml_file, hpxml)
|
2270
2389
|
set_hpxml_clothes_washer(hpxml_file, hpxml)
|
2271
2390
|
set_hpxml_clothes_dryer(hpxml_file, hpxml)
|
2272
2391
|
set_hpxml_dishwasher(hpxml_file, hpxml)
|
@@ -2285,10 +2404,20 @@ def create_hpxmls
|
|
2285
2404
|
end
|
2286
2405
|
|
2287
2406
|
hpxml_doc = hpxml.to_oga()
|
2407
|
+
hpxml_docs[File.basename(derivative)] = hpxml_doc
|
2288
2408
|
|
2289
2409
|
if ['invalid_files/missing-elements.xml'].include? derivative
|
2290
2410
|
XMLHelper.delete_element(hpxml_doc, '/HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction/NumberofConditionedFloors')
|
2291
2411
|
XMLHelper.delete_element(hpxml_doc, '/HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction/ConditionedFloorArea')
|
2412
|
+
elsif ['invalid_files/invalid-datatype-boolean.xml'].include? derivative
|
2413
|
+
XMLHelper.get_element(hpxml_doc, '/HPXML/Building/BuildingDetails/Enclosure/Roofs/Roof/RadiantBarrier').inner_text = 'FOOBAR'
|
2414
|
+
elsif ['invalid_files/invalid-datatype-float.xml'].include? derivative
|
2415
|
+
XMLHelper.get_element(hpxml_doc, '/HPXML/Building/BuildingDetails/Enclosure/Slabs/Slab/extension/CarpetFraction').inner_text = 'FOOBAR'
|
2416
|
+
elsif ['invalid_files/invalid-datatype-integer.xml'].include? derivative
|
2417
|
+
XMLHelper.get_element(hpxml_doc, '/HPXML/Building/BuildingDetails/BuildingSummary/BuildingConstruction/NumberofBedrooms').inner_text = '2.5'
|
2418
|
+
elsif ['invalid_files/invalid-schema-version.xml'].include? derivative
|
2419
|
+
root = XMLHelper.get_element(hpxml_doc, '/HPXML')
|
2420
|
+
XMLHelper.add_attribute(root, 'schemaVersion', '2.3')
|
2292
2421
|
end
|
2293
2422
|
|
2294
2423
|
if derivative.include? 'ASHRAE_Standard_140'
|
@@ -2306,8 +2435,7 @@ def create_hpxmls
|
|
2306
2435
|
if errors.size > 0
|
2307
2436
|
fail "ERRORS: #{errors}"
|
2308
2437
|
end
|
2309
|
-
|
2310
|
-
# Check for additional errors
|
2438
|
+
# Check for errors
|
2311
2439
|
errors = hpxml.check_for_errors()
|
2312
2440
|
if errors.size > 0
|
2313
2441
|
fail "ERRORS: #{errors}"
|
@@ -2338,6 +2466,8 @@ def create_hpxmls
|
|
2338
2466
|
puts "Warning: Extra HPXML file found at #{File.absolute_path(xml)}"
|
2339
2467
|
end
|
2340
2468
|
end
|
2469
|
+
|
2470
|
+
return hpxml_docs
|
2341
2471
|
end
|
2342
2472
|
|
2343
2473
|
def set_hpxml_header(hpxml_file, hpxml)
|
@@ -2360,38 +2490,38 @@ def set_hpxml_header(hpxml_file, hpxml)
|
|
2360
2490
|
elsif ['base-simcontrol-daylight-saving-custom.xml'].include? hpxml_file
|
2361
2491
|
hpxml.header.dst_enabled = true
|
2362
2492
|
hpxml.header.dst_begin_month = 3
|
2363
|
-
hpxml.header.
|
2493
|
+
hpxml.header.dst_begin_day = 10
|
2364
2494
|
hpxml.header.dst_end_month = 11
|
2365
|
-
hpxml.header.
|
2495
|
+
hpxml.header.dst_end_day = 6
|
2366
2496
|
elsif ['base-simcontrol-daylight-saving-disabled.xml'].include? hpxml_file
|
2367
2497
|
hpxml.header.dst_enabled = false
|
2368
2498
|
elsif ['base-simcontrol-timestep-10-mins.xml'].include? hpxml_file
|
2369
2499
|
hpxml.header.timestep = 10
|
2370
2500
|
elsif ['base-simcontrol-runperiod-1-month.xml'].include? hpxml_file
|
2371
2501
|
hpxml.header.sim_begin_month = 1
|
2372
|
-
hpxml.header.
|
2502
|
+
hpxml.header.sim_begin_day = 1
|
2373
2503
|
hpxml.header.sim_end_month = 1
|
2374
|
-
hpxml.header.
|
2504
|
+
hpxml.header.sim_end_day = 31
|
2375
2505
|
elsif ['base-hvac-undersized-allow-increased-fixed-capacities.xml'].include? hpxml_file
|
2376
2506
|
hpxml.header.allow_increased_fixed_capacities = true
|
2377
2507
|
elsif hpxml_file.include? 'manual-s-oversize-allowances.xml'
|
2378
2508
|
hpxml.header.use_max_load_for_heat_pumps = false
|
2379
|
-
elsif ['invalid_files/invalid-calendar-year.xml'].include? hpxml_file
|
2380
|
-
hpxml.header.sim_calendar_year = 20018
|
2381
2509
|
elsif ['invalid_files/invalid-timestep.xml'].include? hpxml_file
|
2382
2510
|
hpxml.header.timestep = 45
|
2383
2511
|
elsif ['invalid_files/invalid-runperiod.xml'].include? hpxml_file
|
2384
2512
|
hpxml.header.sim_end_month = 4
|
2385
|
-
hpxml.header.
|
2513
|
+
hpxml.header.sim_end_day = 31
|
2386
2514
|
elsif ['invalid_files/invalid-daylight-saving.xml'].include? hpxml_file
|
2387
2515
|
hpxml.header.dst_end_month = 4
|
2388
|
-
hpxml.header.
|
2516
|
+
hpxml.header.dst_end_day = 31
|
2389
2517
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
2390
2518
|
hpxml.header.timestep = nil
|
2391
2519
|
elsif ['base-schedules-stochastic.xml'].include? hpxml_file
|
2392
2520
|
hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/stochastic.csv'
|
2393
2521
|
elsif ['base-schedules-user-specified.xml'].include? hpxml_file
|
2394
2522
|
hpxml.header.schedules_path = 'BuildResidentialHPXML/tests/schedules/user-specified.csv'
|
2523
|
+
elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
|
2524
|
+
hpxml.header.transaction = 'modify'
|
2395
2525
|
end
|
2396
2526
|
end
|
2397
2527
|
|
@@ -2403,6 +2533,8 @@ def set_hpxml_site(hpxml_file, hpxml)
|
|
2403
2533
|
hpxml.site.shelter_coefficient = 0.8
|
2404
2534
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
2405
2535
|
hpxml.site.site_type = nil
|
2536
|
+
elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
|
2537
|
+
hpxml.site.site_type = 'mountain'
|
2406
2538
|
end
|
2407
2539
|
end
|
2408
2540
|
|
@@ -2440,6 +2572,15 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
|
|
2440
2572
|
hpxml.building_construction.number_of_bathrooms = 2
|
2441
2573
|
hpxml.building_construction.conditioned_floor_area = 2700
|
2442
2574
|
hpxml.building_construction.conditioned_building_volume = 2700 * 8
|
2575
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
2576
|
+
hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeApartment
|
2577
|
+
hpxml.building_construction.number_of_conditioned_floors = 1
|
2578
|
+
hpxml.building_construction.conditioned_floor_area = 900
|
2579
|
+
hpxml.building_construction.conditioned_building_volume = 900 * 8
|
2580
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
2581
|
+
hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFA
|
2582
|
+
hpxml.building_construction.conditioned_floor_area = 1800
|
2583
|
+
hpxml.building_construction.conditioned_building_volume = 1800 * 8
|
2443
2584
|
elsif ['base-enclosure-beds-1.xml'].include? hpxml_file
|
2444
2585
|
hpxml.building_construction.number_of_bedrooms = 1
|
2445
2586
|
hpxml.building_construction.number_of_bathrooms = 1
|
@@ -2479,17 +2620,19 @@ def set_hpxml_building_construction(hpxml_file, hpxml)
|
|
2479
2620
|
hpxml.building_construction.conditioned_building_volume -= 400 * 2 * 8
|
2480
2621
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
2481
2622
|
hpxml.building_construction.conditioned_building_volume = nil
|
2482
|
-
hpxml.building_construction.average_ceiling_height =
|
2623
|
+
hpxml.building_construction.average_ceiling_height = nil
|
2483
2624
|
hpxml.building_construction.number_of_bathrooms = nil
|
2484
|
-
elsif ['base-enclosure-attached-multifamily.xml',
|
2485
|
-
'base-enclosure-other-housing-unit.xml',
|
2486
|
-
'base-enclosure-other-heated-space.xml',
|
2487
|
-
'base-enclosure-other-non-freezing-space.xml',
|
2488
|
-
'base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
2489
|
-
hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeApartment
|
2490
2625
|
elsif ['base-foundation-walkout-basement.xml'].include? hpxml_file
|
2491
2626
|
hpxml.building_construction.number_of_conditioned_floors_above_grade += 1
|
2492
|
-
elsif ['
|
2627
|
+
elsif ['base-enclosure-split-level.xml'].include? hpxml_file
|
2628
|
+
hpxml.building_construction.number_of_conditioned_floors = 1.5
|
2629
|
+
hpxml.building_construction.number_of_conditioned_floors_above_grade = 1.5
|
2630
|
+
elsif ['invalid_files/enclosure-floor-area-exceeds-cfa.xml'].include? hpxml_file
|
2631
|
+
hpxml.building_construction.conditioned_floor_area /= 5.0
|
2632
|
+
elsif ['invalid_files/num-bedrooms-exceeds-limit.xml'].include? hpxml_file
|
2633
|
+
hpxml.building_construction.number_of_bedrooms = 40
|
2634
|
+
elsif ['invalid_files/invalid-facility-type-equipment.xml',
|
2635
|
+
'invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
|
2493
2636
|
hpxml.building_construction.residential_facility_type = HPXML::ResidentialTypeSFD
|
2494
2637
|
end
|
2495
2638
|
end
|
@@ -2543,6 +2686,8 @@ def set_hpxml_climate_and_risk_zones(hpxml_file, hpxml)
|
|
2543
2686
|
hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'US_CO_Boulder_AMY_2012.epw'
|
2544
2687
|
elsif ['invalid_files/invalid-epw-filepath.xml'].include? hpxml_file
|
2545
2688
|
hpxml.climate_and_risk_zones.weather_station_epw_filepath = 'foo.epw'
|
2689
|
+
elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
|
2690
|
+
hpxml.climate_and_risk_zones.iecc_year = 2020
|
2546
2691
|
end
|
2547
2692
|
end
|
2548
2693
|
|
@@ -2599,6 +2744,8 @@ def set_hpxml_attics(hpxml_file, hpxml)
|
|
2599
2744
|
hpxml.attics.add(id: 'UnventedAttic',
|
2600
2745
|
attic_type: HPXML::AtticTypeUnvented,
|
2601
2746
|
within_infiltration_volume: false)
|
2747
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
2748
|
+
hpxml.attics.clear
|
2602
2749
|
elsif ['base-atticroof-cathedral.xml'].include? hpxml_file
|
2603
2750
|
hpxml.attics.clear
|
2604
2751
|
hpxml.attics.add(id: 'CathedralCeiling',
|
@@ -2610,11 +2757,6 @@ def set_hpxml_attics(hpxml_file, hpxml)
|
|
2610
2757
|
hpxml.attics.clear
|
2611
2758
|
hpxml.attics.add(id: 'FlatRoof',
|
2612
2759
|
attic_type: HPXML::AtticTypeFlatRoof)
|
2613
|
-
elsif ['base-enclosure-other-housing-unit.xml',
|
2614
|
-
'base-enclosure-other-heated-space.xml',
|
2615
|
-
'base-enclosure-other-non-freezing-space.xml',
|
2616
|
-
'base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
2617
|
-
hpxml.attics.clear
|
2618
2760
|
elsif ['base-atticroof-vented.xml'].include? hpxml_file
|
2619
2761
|
hpxml.attics.clear
|
2620
2762
|
hpxml.attics.add(id: 'VentedAttic',
|
@@ -2629,6 +2771,8 @@ def set_hpxml_foundations(hpxml_file, hpxml)
|
|
2629
2771
|
if ['base.xml'].include? hpxml_file
|
2630
2772
|
hpxml.foundations.add(id: 'ConditionedBasement',
|
2631
2773
|
foundation_type: HPXML::FoundationTypeBasementConditioned)
|
2774
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
2775
|
+
hpxml.foundations.clear
|
2632
2776
|
elsif ['base-foundation-vented-crawlspace.xml'].include? hpxml_file
|
2633
2777
|
hpxml.foundations.clear
|
2634
2778
|
hpxml.foundations.add(id: 'VentedCrawlspace',
|
@@ -2699,6 +2843,10 @@ def set_hpxml_roofs(hpxml_file, hpxml)
|
|
2699
2843
|
pitch: 6,
|
2700
2844
|
radiant_barrier: false,
|
2701
2845
|
insulation_assembly_r_value: 2.3)
|
2846
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
2847
|
+
hpxml.roofs.clear
|
2848
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
2849
|
+
hpxml.roofs[0].area = 1006
|
2702
2850
|
elsif ['base-enclosure-rooftypes.xml'].include? hpxml_file
|
2703
2851
|
roof_types = [[HPXML::RoofTypeClayTile, HPXML::ColorLight],
|
2704
2852
|
[HPXML::RoofTypeMetal, HPXML::ColorReflective],
|
@@ -2755,11 +2903,6 @@ def set_hpxml_roofs(hpxml_file, hpxml)
|
|
2755
2903
|
hpxml.roofs[0].area += 670
|
2756
2904
|
elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
|
2757
2905
|
hpxml.roofs[0].insulation_assembly_r_value = 25.8
|
2758
|
-
elsif ['base-enclosure-other-housing-unit.xml',
|
2759
|
-
'base-enclosure-other-heated-space.xml',
|
2760
|
-
'base-enclosure-other-non-freezing-space.xml',
|
2761
|
-
'base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
2762
|
-
hpxml.roofs.clear
|
2763
2906
|
elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
|
2764
2907
|
for n in 1..hpxml.roofs.size
|
2765
2908
|
hpxml.roofs[n - 1].area /= 9.0
|
@@ -2781,7 +2924,12 @@ def set_hpxml_roofs(hpxml_file, hpxml)
|
|
2781
2924
|
roof.roof_type = nil
|
2782
2925
|
roof.solar_absorptance = nil
|
2783
2926
|
roof.roof_color = HPXML::ColorLight
|
2927
|
+
roof.emittance = nil
|
2928
|
+
roof.radiant_barrier = nil
|
2784
2929
|
end
|
2930
|
+
elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
|
2931
|
+
hpxml.roofs[0].radiant_barrier_grade = 4
|
2932
|
+
hpxml.roofs[0].azimuth = 365
|
2785
2933
|
end
|
2786
2934
|
end
|
2787
2935
|
|
@@ -2838,6 +2986,8 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
|
|
2838
2986
|
solar_absorptance: 0.7,
|
2839
2987
|
emittance: 0.92,
|
2840
2988
|
insulation_assembly_r_value: 23.0)
|
2989
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
2990
|
+
hpxml.rim_joists.clear
|
2841
2991
|
elsif ['base-enclosure-walltypes.xml'].include? hpxml_file
|
2842
2992
|
siding_types = [[HPXML::SidingTypeAluminum, HPXML::ColorDark],
|
2843
2993
|
[HPXML::SidingTypeBrick, HPXML::ColorReflective],
|
@@ -2858,9 +3008,6 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
|
|
2858
3008
|
elsif ['base-foundation-ambient.xml',
|
2859
3009
|
'base-foundation-slab.xml'].include? hpxml_file
|
2860
3010
|
hpxml.rim_joists.clear
|
2861
|
-
elsif ['base-enclosure-attached-multifamily.xml'].include? hpxml_file
|
2862
|
-
hpxml.rim_joists[0].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
2863
|
-
hpxml.rim_joists[0].siding = nil
|
2864
3011
|
elsif ['base-foundation-unconditioned-basement.xml'].include? hpxml_file
|
2865
3012
|
for i in 0..hpxml.rim_joists.size - 1
|
2866
3013
|
hpxml.rim_joists[i].interior_adjacent_to = HPXML::LocationBasementUnconditioned
|
@@ -2909,11 +3056,20 @@ def set_hpxml_rim_joists(hpxml_file, hpxml)
|
|
2909
3056
|
hpxml.rim_joists << hpxml.rim_joists[-1].dup
|
2910
3057
|
hpxml.rim_joists[-1].id = 'TinyRimJoist'
|
2911
3058
|
hpxml.rim_joists[-1].area = 0.05
|
3059
|
+
elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
|
3060
|
+
hpxml.rim_joists.add(id: 'RimJoistOther',
|
3061
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3062
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3063
|
+
area: 116,
|
3064
|
+
solar_absorptance: 0.7,
|
3065
|
+
emittance: 0.92,
|
3066
|
+
insulation_assembly_r_value: 23.0)
|
2912
3067
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
2913
3068
|
hpxml.rim_joists.each do |rim_joist|
|
2914
3069
|
rim_joist.siding = nil
|
2915
3070
|
rim_joist.solar_absorptance = nil
|
2916
3071
|
rim_joist.color = HPXML::ColorMedium
|
3072
|
+
rim_joist.emittance = nil
|
2917
3073
|
end
|
2918
3074
|
end
|
2919
3075
|
hpxml.rim_joists.each do |rim_joist|
|
@@ -3020,6 +3176,61 @@ def set_hpxml_walls(hpxml_file, hpxml)
|
|
3020
3176
|
solar_absorptance: 0.7,
|
3021
3177
|
emittance: 0.92,
|
3022
3178
|
insulation_assembly_r_value: 4.0)
|
3179
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
3180
|
+
hpxml.walls.clear
|
3181
|
+
hpxml.walls.add(id: 'Wall',
|
3182
|
+
exterior_adjacent_to: HPXML::LocationOutside,
|
3183
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3184
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3185
|
+
siding: HPXML::SidingTypeWood,
|
3186
|
+
area: 686,
|
3187
|
+
solar_absorptance: 0.7,
|
3188
|
+
emittance: 0.92,
|
3189
|
+
insulation_assembly_r_value: 23.0)
|
3190
|
+
hpxml.walls.add(id: 'WallOther',
|
3191
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3192
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3193
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3194
|
+
area: 294,
|
3195
|
+
solar_absorptance: 0.7,
|
3196
|
+
emittance: 0.92,
|
3197
|
+
insulation_assembly_r_value: 4.0)
|
3198
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
3199
|
+
hpxml.walls.clear
|
3200
|
+
hpxml.walls.add(id: 'Wall',
|
3201
|
+
exterior_adjacent_to: HPXML::LocationOutside,
|
3202
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3203
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3204
|
+
siding: HPXML::SidingTypeWood,
|
3205
|
+
area: 686,
|
3206
|
+
solar_absorptance: 0.7,
|
3207
|
+
emittance: 0.92,
|
3208
|
+
insulation_assembly_r_value: 23.0)
|
3209
|
+
hpxml.walls.add(id: 'WallOther',
|
3210
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3211
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3212
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3213
|
+
area: 294,
|
3214
|
+
solar_absorptance: 0.7,
|
3215
|
+
emittance: 0.92,
|
3216
|
+
insulation_assembly_r_value: 4.0)
|
3217
|
+
hpxml.walls.add(id: 'WallAtticGable',
|
3218
|
+
exterior_adjacent_to: HPXML::LocationOutside,
|
3219
|
+
interior_adjacent_to: HPXML::LocationAtticUnvented,
|
3220
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3221
|
+
siding: HPXML::SidingTypeWood,
|
3222
|
+
area: 169,
|
3223
|
+
solar_absorptance: 0.7,
|
3224
|
+
emittance: 0.92,
|
3225
|
+
insulation_assembly_r_value: 4.0)
|
3226
|
+
hpxml.walls.add(id: 'WallAtticOther',
|
3227
|
+
exterior_adjacent_to: HPXML::LocationAtticUnvented,
|
3228
|
+
interior_adjacent_to: HPXML::LocationAtticUnvented,
|
3229
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3230
|
+
area: 169,
|
3231
|
+
solar_absorptance: 0.7,
|
3232
|
+
emittance: 0.92,
|
3233
|
+
insulation_assembly_r_value: 4.0)
|
3023
3234
|
elsif ['base-atticroof-flat.xml'].include? hpxml_file
|
3024
3235
|
hpxml.walls.delete_at(1)
|
3025
3236
|
elsif ['base-atticroof-vented.xml'].include? hpxml_file
|
@@ -3055,7 +3266,8 @@ def set_hpxml_walls(hpxml_file, hpxml)
|
|
3055
3266
|
solar_absorptance: 0.7,
|
3056
3267
|
emittance: 0.92,
|
3057
3268
|
insulation_assembly_r_value: 4.0)
|
3058
|
-
elsif ['base-
|
3269
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
3270
|
+
hpxml.walls[1].delete
|
3059
3271
|
hpxml.walls.add(id: 'WallOtherHeatedSpace',
|
3060
3272
|
exterior_adjacent_to: HPXML::LocationOtherHeatedSpace,
|
3061
3273
|
interior_adjacent_to: HPXML::LocationLivingSpace,
|
@@ -3088,14 +3300,6 @@ def set_hpxml_walls(hpxml_file, hpxml)
|
|
3088
3300
|
solar_absorptance: 0.7,
|
3089
3301
|
emittance: 0.92,
|
3090
3302
|
insulation_assembly_r_value: 4.0)
|
3091
|
-
hpxml.walls.add(id: 'WallAtticLivingWall',
|
3092
|
-
exterior_adjacent_to: HPXML::LocationAtticUnvented,
|
3093
|
-
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3094
|
-
wall_type: HPXML::WallTypeWoodStud,
|
3095
|
-
area: 50,
|
3096
|
-
solar_absorptance: 0.7,
|
3097
|
-
emittance: 0.92,
|
3098
|
-
insulation_assembly_r_value: 4.0)
|
3099
3303
|
elsif ['base-enclosure-walltypes.xml'].include? hpxml_file
|
3100
3304
|
walls_map = { HPXML::WallTypeCMU => 12,
|
3101
3305
|
HPXML::WallTypeDoubleWoodStud => 28.7,
|
@@ -3205,32 +3409,18 @@ def set_hpxml_walls(hpxml_file, hpxml)
|
|
3205
3409
|
insulation_assembly_r_value: 4)
|
3206
3410
|
elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
|
3207
3411
|
hpxml.walls[1].insulation_assembly_r_value = 23
|
3208
|
-
elsif ['base-
|
3209
|
-
|
3210
|
-
|
3211
|
-
|
3212
|
-
hpxml.walls.
|
3213
|
-
hpxml.walls
|
3214
|
-
|
3215
|
-
hpxml.walls[-1].
|
3216
|
-
hpxml.walls[-1].
|
3217
|
-
|
3218
|
-
|
3219
|
-
|
3220
|
-
hpxml.walls[-1].insulation_assembly_r_value = 4
|
3221
|
-
elsif ['base-enclosure-other-heated-space.xml'].include? hpxml_file
|
3222
|
-
hpxml.walls[-1].id = 'WallOtherHeatedSpace'
|
3223
|
-
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3224
|
-
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3225
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
3226
|
-
hpxml.walls[-1].id = 'WallOtherNonFreezingSpace'
|
3227
|
-
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
3228
|
-
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3229
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
3230
|
-
hpxml.walls[-1].id = 'WallOtherMultifamilyBufferSpace'
|
3231
|
-
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherMultifamilyBufferSpace
|
3232
|
-
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3233
|
-
end
|
3412
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
3413
|
+
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3414
|
+
hpxml.walls[-1].insulation_assembly_r_value = 4
|
3415
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
3416
|
+
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3417
|
+
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3418
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
3419
|
+
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherMultifamilyBufferSpace
|
3420
|
+
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3421
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
3422
|
+
hpxml.walls[-1].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
3423
|
+
hpxml.walls[-1].insulation_assembly_r_value = 23
|
3234
3424
|
elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
|
3235
3425
|
for n in 1..hpxml.walls.size
|
3236
3426
|
hpxml.walls[n - 1].area /= 9.0
|
@@ -3242,27 +3432,26 @@ def set_hpxml_walls(hpxml_file, hpxml)
|
|
3242
3432
|
hpxml.walls << hpxml.walls[-1].dup
|
3243
3433
|
hpxml.walls[-1].id = 'TinyWall'
|
3244
3434
|
hpxml.walls[-1].area = 0.05
|
3245
|
-
elsif ['invalid_files/duplicate-id.xml'].include? hpxml_file
|
3246
|
-
hpxml.walls[-1].id = hpxml.walls[0].id
|
3247
3435
|
elsif ['invalid_files/enclosure-living-missing-exterior-wall.xml'].include? hpxml_file
|
3248
3436
|
hpxml.walls[0].delete
|
3249
3437
|
elsif ['invalid_files/enclosure-garage-missing-exterior-wall.xml'].include? hpxml_file
|
3250
3438
|
hpxml.walls[-2].delete
|
3439
|
+
elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
|
3440
|
+
hpxml.walls.add(id: 'WallOther',
|
3441
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3442
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3443
|
+
wall_type: HPXML::WallTypeWoodStud,
|
3444
|
+
area: 294,
|
3445
|
+
solar_absorptance: 0.7,
|
3446
|
+
emittance: 0.92,
|
3447
|
+
insulation_assembly_r_value: 4.0)
|
3251
3448
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
3252
3449
|
hpxml.walls.each do |wall|
|
3253
3450
|
wall.siding = nil
|
3254
3451
|
wall.solar_absorptance = nil
|
3255
3452
|
wall.color = HPXML::ColorMedium
|
3453
|
+
wall.emittance = nil
|
3256
3454
|
end
|
3257
|
-
elsif ['base-enclosure-common-surfaces.xml'].include? hpxml_file
|
3258
|
-
hpxml.walls.add(id: 'CommonWallUnventedAttic',
|
3259
|
-
exterior_adjacent_to: HPXML::LocationAtticUnvented,
|
3260
|
-
interior_adjacent_to: HPXML::LocationAtticUnvented,
|
3261
|
-
wall_type: HPXML::WallTypeWoodStud,
|
3262
|
-
area: 113,
|
3263
|
-
solar_absorptance: 0.7,
|
3264
|
-
emittance: 0.92,
|
3265
|
-
insulation_assembly_r_value: 4)
|
3266
3455
|
end
|
3267
3456
|
hpxml.walls.each do |wall|
|
3268
3457
|
next unless wall.is_interior
|
@@ -3336,25 +3525,11 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
|
|
3336
3525
|
hpxml.foundation_walls[i].insulation_interior_distance_to_bottom = 7.25
|
3337
3526
|
end
|
3338
3527
|
elsif ['base.xml'].include? hpxml_file
|
3339
|
-
hpxml.
|
3340
|
-
|
3341
|
-
interior_adjacent_to: HPXML::LocationBasementConditioned,
|
3342
|
-
height: 8,
|
3343
|
-
area: 1200,
|
3344
|
-
thickness: 8,
|
3345
|
-
depth_below_grade: 7,
|
3346
|
-
insulation_interior_r_value: 0,
|
3347
|
-
insulation_interior_distance_to_top: 0,
|
3348
|
-
insulation_interior_distance_to_bottom: 0,
|
3349
|
-
insulation_exterior_distance_to_top: 0,
|
3350
|
-
insulation_exterior_distance_to_bottom: 8,
|
3351
|
-
insulation_exterior_r_value: 8.9)
|
3352
|
-
elsif ['base-enclosure-attached-multifamily.xml'].include? hpxml_file
|
3353
|
-
hpxml.foundation_walls.add(id: 'FoundationWallOtherNonFreezingSpace',
|
3354
|
-
exterior_adjacent_to: HPXML::LocationOtherNonFreezingSpace,
|
3528
|
+
hpxml.foundation_walls.add(id: 'FoundationWall',
|
3529
|
+
exterior_adjacent_to: HPXML::LocationGround,
|
3355
3530
|
interior_adjacent_to: HPXML::LocationBasementConditioned,
|
3356
3531
|
height: 8,
|
3357
|
-
area:
|
3532
|
+
area: 1200,
|
3358
3533
|
thickness: 8,
|
3359
3534
|
depth_below_grade: 7,
|
3360
3535
|
insulation_interior_r_value: 0,
|
@@ -3363,32 +3538,36 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
|
|
3363
3538
|
insulation_exterior_distance_to_top: 0,
|
3364
3539
|
insulation_exterior_distance_to_bottom: 8,
|
3365
3540
|
insulation_exterior_r_value: 8.9)
|
3366
|
-
|
3367
|
-
|
3541
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
3542
|
+
hpxml.foundation_walls.clear
|
3543
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
3544
|
+
hpxml.foundation_walls.clear
|
3545
|
+
hpxml.foundation_walls.add(id: 'FoundationWall',
|
3546
|
+
exterior_adjacent_to: HPXML::LocationGround,
|
3368
3547
|
interior_adjacent_to: HPXML::LocationBasementConditioned,
|
3369
|
-
height:
|
3370
|
-
area:
|
3548
|
+
height: 8,
|
3549
|
+
area: 686,
|
3371
3550
|
thickness: 8,
|
3372
|
-
depth_below_grade:
|
3551
|
+
depth_below_grade: 7,
|
3373
3552
|
insulation_interior_r_value: 0,
|
3374
3553
|
insulation_interior_distance_to_top: 0,
|
3375
3554
|
insulation_interior_distance_to_bottom: 0,
|
3376
3555
|
insulation_exterior_distance_to_top: 0,
|
3377
|
-
insulation_exterior_distance_to_bottom:
|
3556
|
+
insulation_exterior_distance_to_bottom: 8,
|
3378
3557
|
insulation_exterior_r_value: 8.9)
|
3379
|
-
hpxml.foundation_walls.add(id: '
|
3380
|
-
exterior_adjacent_to: HPXML::
|
3558
|
+
hpxml.foundation_walls.add(id: 'FoundationWallOther',
|
3559
|
+
exterior_adjacent_to: HPXML::LocationBasementConditioned,
|
3381
3560
|
interior_adjacent_to: HPXML::LocationBasementConditioned,
|
3382
|
-
height:
|
3383
|
-
area:
|
3561
|
+
height: 8,
|
3562
|
+
area: 294,
|
3384
3563
|
thickness: 8,
|
3385
|
-
depth_below_grade:
|
3564
|
+
depth_below_grade: 7,
|
3386
3565
|
insulation_interior_r_value: 0,
|
3387
3566
|
insulation_interior_distance_to_top: 0,
|
3388
3567
|
insulation_interior_distance_to_bottom: 0,
|
3389
3568
|
insulation_exterior_distance_to_top: 0,
|
3390
|
-
insulation_exterior_distance_to_bottom:
|
3391
|
-
insulation_exterior_r_value:
|
3569
|
+
insulation_exterior_distance_to_bottom: 0,
|
3570
|
+
insulation_exterior_r_value: 0)
|
3392
3571
|
elsif ['base-foundation-conditioned-basement-wall-interior-insulation.xml'].include? hpxml_file
|
3393
3572
|
hpxml.foundation_walls[0].insulation_interior_distance_to_top = 0
|
3394
3573
|
hpxml.foundation_walls[0].insulation_interior_distance_to_bottom = 8
|
@@ -3575,28 +3754,18 @@ def set_hpxml_foundation_walls(hpxml_file, hpxml)
|
|
3575
3754
|
hpxml.foundation_walls[-1].area = 0.05
|
3576
3755
|
elsif ['base-enclosure-2stories-garage.xml'].include? hpxml_file
|
3577
3756
|
hpxml.foundation_walls[-1].area = 880
|
3578
|
-
elsif ['base-
|
3579
|
-
hpxml.foundation_walls
|
3580
|
-
|
3581
|
-
|
3582
|
-
|
3583
|
-
|
3584
|
-
|
3757
|
+
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
3758
|
+
hpxml.foundation_walls.each do |fwall|
|
3759
|
+
fwall.thickness = nil
|
3760
|
+
end
|
3761
|
+
elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
|
3762
|
+
hpxml.foundation_walls.add(id: 'FoundationWallOther',
|
3763
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3764
|
+
interior_adjacent_to: HPXML::LocationBasementConditioned,
|
3765
|
+
height: 8,
|
3766
|
+
area: 294,
|
3585
3767
|
thickness: 8,
|
3586
|
-
depth_below_grade:
|
3587
|
-
insulation_interior_r_value: 0,
|
3588
|
-
insulation_interior_distance_to_top: 0,
|
3589
|
-
insulation_interior_distance_to_bottom: 0,
|
3590
|
-
insulation_exterior_distance_to_top: 0,
|
3591
|
-
insulation_exterior_distance_to_bottom: 0,
|
3592
|
-
insulation_exterior_r_value: 0)
|
3593
|
-
hpxml.foundation_walls.add(id: 'CommonFoundationWall',
|
3594
|
-
exterior_adjacent_to: HPXML::LocationCrawlspaceVented,
|
3595
|
-
interior_adjacent_to: HPXML::LocationCrawlspaceVented,
|
3596
|
-
height: 4,
|
3597
|
-
area: 240,
|
3598
|
-
thickness: 5.5,
|
3599
|
-
depth_below_grade: 3,
|
3768
|
+
depth_below_grade: 7,
|
3600
3769
|
insulation_interior_r_value: 0,
|
3601
3770
|
insulation_interior_distance_to_top: 0,
|
3602
3771
|
insulation_interior_distance_to_bottom: 0,
|
@@ -3638,6 +3807,40 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
|
|
3638
3807
|
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3639
3808
|
area: 1350,
|
3640
3809
|
insulation_assembly_r_value: 39.3)
|
3810
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
3811
|
+
hpxml.frame_floors.clear
|
3812
|
+
hpxml.frame_floors.add(id: 'FloorOther',
|
3813
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3814
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3815
|
+
area: 900,
|
3816
|
+
insulation_assembly_r_value: 2.1,
|
3817
|
+
other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
|
3818
|
+
hpxml.frame_floors.add(id: 'CeilingOther',
|
3819
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3820
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3821
|
+
area: 900,
|
3822
|
+
insulation_assembly_r_value: 2.1,
|
3823
|
+
other_space_above_or_below: HPXML::FrameFloorOtherSpaceAbove)
|
3824
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
3825
|
+
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3826
|
+
hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3827
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
3828
|
+
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3829
|
+
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3830
|
+
hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3831
|
+
hpxml.frame_floors[1].insulation_assembly_r_value = 18.7
|
3832
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
3833
|
+
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
3834
|
+
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3835
|
+
hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
3836
|
+
hpxml.frame_floors[1].insulation_assembly_r_value = 18.7
|
3837
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
3838
|
+
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherMultifamilyBufferSpace
|
3839
|
+
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3840
|
+
hpxml.frame_floors[1].exterior_adjacent_to = HPXML::LocationOtherMultifamilyBufferSpace
|
3841
|
+
hpxml.frame_floors[1].insulation_assembly_r_value = 18.7
|
3842
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
3843
|
+
hpxml.frame_floors[0].area = 900
|
3641
3844
|
elsif ['base-atticroof-flat.xml',
|
3642
3845
|
'base-atticroof-cathedral.xml'].include? hpxml_file
|
3643
3846
|
hpxml.frame_floors.delete_at(0)
|
@@ -3692,39 +3895,12 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
|
|
3692
3895
|
insulation_assembly_r_value: 39.3)
|
3693
3896
|
elsif ['base-atticroof-unvented-insulated-roof.xml'].include? hpxml_file
|
3694
3897
|
hpxml.frame_floors[0].insulation_assembly_r_value = 2.1
|
3695
|
-
elsif ['base-
|
3696
|
-
|
3697
|
-
'base-enclosure-other-non-freezing-space.xml',
|
3698
|
-
'base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
3699
|
-
hpxml.frame_floors.clear
|
3700
|
-
hpxml.frame_floors.add(interior_adjacent_to: HPXML::LocationLivingSpace,
|
3701
|
-
area: 1350,
|
3702
|
-
other_space_above_or_below: HPXML::FrameFloorOtherSpaceAbove)
|
3703
|
-
if ['base-enclosure-other-housing-unit.xml'].include? hpxml_file
|
3704
|
-
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
3705
|
-
hpxml.frame_floors[0].id = 'FloorBelowOtherHousingUnit'
|
3706
|
-
hpxml.frame_floors[0].insulation_assembly_r_value = 2.1
|
3707
|
-
elsif ['base-enclosure-other-heated-space.xml'].include? hpxml_file
|
3708
|
-
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3709
|
-
hpxml.frame_floors[0].id = 'FloorBelowOtherHeatedSpace'
|
3710
|
-
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3711
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
3712
|
-
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherNonFreezingSpace
|
3713
|
-
hpxml.frame_floors[0].id = 'FloorBelowOtherNonFreezingSpace'
|
3714
|
-
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3715
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
3716
|
-
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherMultifamilyBufferSpace
|
3717
|
-
hpxml.frame_floors[0].id = 'FloorBelowOtherMultifamilyBufferSpace'
|
3718
|
-
hpxml.frame_floors[0].insulation_assembly_r_value = 18.7
|
3719
|
-
end
|
3720
|
-
hpxml.frame_floors << hpxml.frame_floors[0].dup
|
3721
|
-
hpxml.frame_floors[1].id = hpxml.frame_floors[0].id.gsub('Below', 'Above')
|
3722
|
-
hpxml.frame_floors[1].other_space_above_or_below = HPXML::FrameFloorOtherSpaceBelow
|
3723
|
-
elsif ['base-enclosure-attached-multifamily.xml'].include? hpxml_file
|
3898
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
3899
|
+
hpxml.frame_floors[0].delete
|
3724
3900
|
hpxml.frame_floors.add(id: 'FloorAboveNonFreezingSpace',
|
3725
3901
|
exterior_adjacent_to: HPXML::LocationOtherNonFreezingSpace,
|
3726
3902
|
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3727
|
-
area:
|
3903
|
+
area: 550,
|
3728
3904
|
insulation_assembly_r_value: 18.7,
|
3729
3905
|
other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
|
3730
3906
|
hpxml.frame_floors.add(id: 'FloorAboveMultifamilyBuffer',
|
@@ -3739,18 +3915,6 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
|
|
3739
3915
|
area: 150,
|
3740
3916
|
insulation_assembly_r_value: 2.1,
|
3741
3917
|
other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
|
3742
|
-
elsif ['base-enclosure-common-surfaces.xml'].include? hpxml_file
|
3743
|
-
hpxml.frame_floors[1].area = 650
|
3744
|
-
hpxml.frame_floors.add(id: 'FloorAboveVentedCrawlspace',
|
3745
|
-
exterior_adjacent_to: HPXML::LocationCrawlspaceVented,
|
3746
|
-
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3747
|
-
area: 350,
|
3748
|
-
insulation_assembly_r_value: 18.7)
|
3749
|
-
hpxml.frame_floors.add(id: 'CommonFrameFloorVentedCrawlspace',
|
3750
|
-
exterior_adjacent_to: HPXML::LocationCrawlspaceVented,
|
3751
|
-
interior_adjacent_to: HPXML::LocationCrawlspaceVented,
|
3752
|
-
area: 350,
|
3753
|
-
insulation_assembly_r_value: 3.0)
|
3754
3918
|
elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
|
3755
3919
|
for n in 1..hpxml.frame_floors.size
|
3756
3920
|
hpxml.frame_floors[n - 1].area /= 9.0
|
@@ -3776,6 +3940,19 @@ def set_hpxml_frame_floors(hpxml_file, hpxml)
|
|
3776
3940
|
elsif ['invalid_files/multifamily-reference-surface.xml'].include? hpxml_file
|
3777
3941
|
hpxml.frame_floors[0].exterior_adjacent_to = HPXML::LocationOtherHeatedSpace
|
3778
3942
|
hpxml.frame_floors[0].other_space_above_or_below = HPXML::FrameFloorOtherSpaceAbove
|
3943
|
+
elsif ['invalid_files/invalid-facility-type-surfaces.xml'].include? hpxml_file
|
3944
|
+
hpxml.frame_floors.add(id: 'FloorOther',
|
3945
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3946
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3947
|
+
area: 900,
|
3948
|
+
insulation_assembly_r_value: 2.1,
|
3949
|
+
other_space_above_or_below: HPXML::FrameFloorOtherSpaceBelow)
|
3950
|
+
hpxml.frame_floors.add(id: 'CeilingOther',
|
3951
|
+
exterior_adjacent_to: HPXML::LocationOtherHousingUnit,
|
3952
|
+
interior_adjacent_to: HPXML::LocationLivingSpace,
|
3953
|
+
area: 900,
|
3954
|
+
insulation_assembly_r_value: 2.1,
|
3955
|
+
other_space_above_or_below: HPXML::FrameFloorOtherSpaceAbove)
|
3779
3956
|
end
|
3780
3957
|
end
|
3781
3958
|
|
@@ -3822,6 +3999,11 @@ def set_hpxml_slabs(hpxml_file, hpxml)
|
|
3822
3999
|
under_slab_insulation_r_value: 0,
|
3823
4000
|
carpet_fraction: 0,
|
3824
4001
|
carpet_r_value: 0)
|
4002
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
4003
|
+
hpxml.slabs.clear
|
4004
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
4005
|
+
hpxml.slabs[0].area = 900
|
4006
|
+
hpxml.slabs[0].exposed_perimeter = 86
|
3825
4007
|
elsif ['base-foundation-unconditioned-basement.xml'].include? hpxml_file
|
3826
4008
|
hpxml.slabs[0].interior_adjacent_to = HPXML::LocationBasementUnconditioned
|
3827
4009
|
elsif ['base-foundation-conditioned-basement-slab-insulation.xml'].include? hpxml_file
|
@@ -3936,20 +4118,12 @@ def set_hpxml_slabs(hpxml_file, hpxml)
|
|
3936
4118
|
hpxml.slabs << hpxml.slabs[-1].dup
|
3937
4119
|
hpxml.slabs[-1].id = 'TinySlab'
|
3938
4120
|
hpxml.slabs[-1].area = 0.05
|
3939
|
-
elsif ['base-
|
3940
|
-
hpxml.slabs
|
3941
|
-
|
3942
|
-
|
3943
|
-
|
3944
|
-
|
3945
|
-
thickness: 0,
|
3946
|
-
exposed_perimeter: 39,
|
3947
|
-
perimeter_insulation_depth: 0,
|
3948
|
-
under_slab_insulation_width: 0,
|
3949
|
-
perimeter_insulation_r_value: 0,
|
3950
|
-
under_slab_insulation_r_value: 0,
|
3951
|
-
carpet_fraction: 0,
|
3952
|
-
carpet_r_value: 0)
|
4121
|
+
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
4122
|
+
hpxml.slabs.each do |slab|
|
4123
|
+
slab.thickness = nil
|
4124
|
+
slab.carpet_fraction = nil
|
4125
|
+
slab.carpet_fraction = nil
|
4126
|
+
end
|
3953
4127
|
elsif ['invalid_files/mismatched-slab-and-foundation-wall.xml'].include? hpxml_file
|
3954
4128
|
hpxml.slabs[0].interior_adjacent_to = HPXML::LocationBasementUnconditioned
|
3955
4129
|
hpxml.slabs[0].depth_below_grade = 7.0
|
@@ -4062,6 +4236,64 @@ def set_hpxml_windows(hpxml_file, hpxml)
|
|
4062
4236
|
interior_shading_factor_summer: 0.7,
|
4063
4237
|
interior_shading_factor_winter: 0.85,
|
4064
4238
|
wall_idref: 'Wall')
|
4239
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
4240
|
+
hpxml.windows.clear
|
4241
|
+
hpxml.windows.add(id: 'WindowNorth',
|
4242
|
+
area: 35.0,
|
4243
|
+
azimuth: 0,
|
4244
|
+
ufactor: 0.33,
|
4245
|
+
shgc: 0.45,
|
4246
|
+
fraction_operable: 0.67,
|
4247
|
+
interior_shading_factor_summer: 0.7,
|
4248
|
+
interior_shading_factor_winter: 0.85,
|
4249
|
+
wall_idref: 'Wall')
|
4250
|
+
hpxml.windows.add(id: 'WindowSouth',
|
4251
|
+
area: 35.0,
|
4252
|
+
azimuth: 180,
|
4253
|
+
ufactor: 0.33,
|
4254
|
+
shgc: 0.45,
|
4255
|
+
fraction_operable: 0.67,
|
4256
|
+
interior_shading_factor_summer: 0.7,
|
4257
|
+
interior_shading_factor_winter: 0.85,
|
4258
|
+
wall_idref: 'Wall')
|
4259
|
+
hpxml.windows.add(id: 'WindowWest',
|
4260
|
+
area: 53.0,
|
4261
|
+
azimuth: 270,
|
4262
|
+
ufactor: 0.33,
|
4263
|
+
shgc: 0.45,
|
4264
|
+
fraction_operable: 0.67,
|
4265
|
+
interior_shading_factor_summer: 0.7,
|
4266
|
+
interior_shading_factor_winter: 0.85,
|
4267
|
+
wall_idref: 'Wall')
|
4268
|
+
elsif ['base-bldgtype-single-family-attached.xml'].include? hpxml_file
|
4269
|
+
hpxml.windows.clear
|
4270
|
+
hpxml.windows.add(id: 'WindowNorth',
|
4271
|
+
area: 35.4,
|
4272
|
+
azimuth: 0,
|
4273
|
+
ufactor: 0.33,
|
4274
|
+
shgc: 0.45,
|
4275
|
+
fraction_operable: 0.67,
|
4276
|
+
interior_shading_factor_summer: 0.7,
|
4277
|
+
interior_shading_factor_winter: 0.85,
|
4278
|
+
wall_idref: 'Wall')
|
4279
|
+
hpxml.windows.add(id: 'WindowSouth',
|
4280
|
+
area: 35.4,
|
4281
|
+
azimuth: 180,
|
4282
|
+
ufactor: 0.33,
|
4283
|
+
shgc: 0.45,
|
4284
|
+
fraction_operable: 0.67,
|
4285
|
+
interior_shading_factor_summer: 0.7,
|
4286
|
+
interior_shading_factor_winter: 0.85,
|
4287
|
+
wall_idref: 'Wall')
|
4288
|
+
hpxml.windows.add(id: 'WindowWest',
|
4289
|
+
area: 53.0,
|
4290
|
+
azimuth: 270,
|
4291
|
+
ufactor: 0.33,
|
4292
|
+
shgc: 0.45,
|
4293
|
+
fraction_operable: 0.67,
|
4294
|
+
interior_shading_factor_summer: 0.7,
|
4295
|
+
interior_shading_factor_winter: 0.85,
|
4296
|
+
wall_idref: 'Wall')
|
4065
4297
|
elsif ['base-enclosure-overhangs.xml'].include? hpxml_file
|
4066
4298
|
hpxml.windows[0].overhangs_depth = 2.5
|
4067
4299
|
hpxml.windows[0].overhangs_distance_to_top_of_window = 0
|
@@ -4075,13 +4307,10 @@ def set_hpxml_windows(hpxml_file, hpxml)
|
|
4075
4307
|
elsif ['base-enclosure-windows-interior-shading.xml'].include? hpxml_file
|
4076
4308
|
hpxml.windows[1].interior_shading_factor_summer = 0.01
|
4077
4309
|
hpxml.windows[1].interior_shading_factor_winter = 0.99
|
4078
|
-
hpxml.windows[2].interior_shading_factor_summer = 0.
|
4310
|
+
hpxml.windows[2].interior_shading_factor_summer = 0.5
|
4079
4311
|
hpxml.windows[2].interior_shading_factor_winter = 0.5
|
4080
|
-
hpxml.windows[3].interior_shading_factor_summer =
|
4312
|
+
hpxml.windows[3].interior_shading_factor_summer = 0.0
|
4081
4313
|
hpxml.windows[3].interior_shading_factor_winter = 1.0
|
4082
|
-
elsif ['invalid_files/invalid-window-interior-shading.xml'].include? hpxml_file
|
4083
|
-
hpxml.windows[0].interior_shading_factor_summer = 0.85
|
4084
|
-
hpxml.windows[0].interior_shading_factor_winter = 0.7
|
4085
4314
|
elsif ['base-enclosure-windows-none.xml'].include? hpxml_file
|
4086
4315
|
hpxml.windows.clear
|
4087
4316
|
elsif ['invalid_files/net-area-negative-wall.xml'].include? hpxml_file
|
@@ -4165,10 +4394,10 @@ def set_hpxml_windows(hpxml_file, hpxml)
|
|
4165
4394
|
shgc: 0.45,
|
4166
4395
|
fraction_operable: 0.0,
|
4167
4396
|
wall_idref: 'FoundationWall')
|
4168
|
-
elsif ['base-
|
4169
|
-
'base-
|
4170
|
-
'base-
|
4171
|
-
'base-
|
4397
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml',
|
4398
|
+
'base-bldgtype-multifamily-adjacent-to-other-heated-space.xml',
|
4399
|
+
'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml',
|
4400
|
+
'base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
4172
4401
|
hpxml.windows.each do |window|
|
4173
4402
|
window.area *= 0.35
|
4174
4403
|
end
|
@@ -4237,14 +4466,16 @@ def set_hpxml_windows(hpxml_file, hpxml)
|
|
4237
4466
|
window.interior_shading_factor_winter = nil
|
4238
4467
|
window.fraction_operable = nil
|
4239
4468
|
end
|
4240
|
-
elsif ['base-
|
4241
|
-
hpxml.windows.add(id: '
|
4469
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
4470
|
+
hpxml.windows.add(id: 'WindowOtherMultifamilyBufferSpace',
|
4242
4471
|
area: 50,
|
4243
4472
|
azimuth: 270,
|
4244
4473
|
ufactor: 0.33,
|
4245
4474
|
shgc: 0.45,
|
4246
4475
|
fraction_operable: 0.67,
|
4247
4476
|
wall_idref: 'WallOtherMultifamilyBufferSpace')
|
4477
|
+
elsif ['invalid_files/duplicate-id.xml'].include? hpxml_file
|
4478
|
+
hpxml.windows[-1].id = hpxml.windows[0].id
|
4248
4479
|
end
|
4249
4480
|
end
|
4250
4481
|
|
@@ -4309,6 +4540,13 @@ def set_hpxml_doors(hpxml_file, hpxml)
|
|
4309
4540
|
area: 40,
|
4310
4541
|
azimuth: 180,
|
4311
4542
|
r_value: 4.4)
|
4543
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
4544
|
+
hpxml.doors.clear
|
4545
|
+
hpxml.doors.add(id: 'Door',
|
4546
|
+
wall_idref: 'Wall',
|
4547
|
+
area: 20,
|
4548
|
+
azimuth: 180,
|
4549
|
+
r_value: 4.4)
|
4312
4550
|
elsif ['base-enclosure-garage.xml',
|
4313
4551
|
'base-enclosure-2stories-garage.xml'].include? hpxml_file
|
4314
4552
|
hpxml.doors.add(id: 'GarageDoorSouth',
|
@@ -4316,46 +4554,26 @@ def set_hpxml_doors(hpxml_file, hpxml)
|
|
4316
4554
|
area: 70,
|
4317
4555
|
azimuth: 180,
|
4318
4556
|
r_value: 4.4)
|
4319
|
-
elsif ['base-
|
4320
|
-
hpxml.doors.add(id: '
|
4557
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
4558
|
+
hpxml.doors.add(id: 'DoorOtherHeatedSpace',
|
4321
4559
|
wall_idref: 'WallOtherHeatedSpace',
|
4322
|
-
area:
|
4560
|
+
area: 20,
|
4323
4561
|
azimuth: 0,
|
4324
4562
|
r_value: 4.4)
|
4325
|
-
hpxml.doors.add(id: '
|
4326
|
-
wall_idref: 'FoundationWallOtherNonFreezingSpace',
|
4327
|
-
area: 40,
|
4328
|
-
azimuth: 0,
|
4329
|
-
r_value: 4.4)
|
4330
|
-
hpxml.doors.add(id: 'DoorOnWallOtherHousingUnit',
|
4563
|
+
hpxml.doors.add(id: 'DoorOtherHousingUnit',
|
4331
4564
|
wall_idref: 'WallOtherHousingUnit',
|
4332
|
-
area:
|
4565
|
+
area: 20,
|
4333
4566
|
azimuth: 0,
|
4334
4567
|
r_value: 4.4)
|
4335
|
-
|
4336
|
-
|
4337
|
-
|
4568
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml',
|
4569
|
+
'base-bldgtype-multifamily-adjacent-to-other-heated-space.xml',
|
4570
|
+
'base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml',
|
4571
|
+
'base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
4572
|
+
hpxml.doors.add(id: 'DoorOther',
|
4573
|
+
wall_idref: 'WallOther',
|
4574
|
+
area: 20,
|
4338
4575
|
azimuth: 0,
|
4339
4576
|
r_value: 4.4)
|
4340
|
-
elsif ['base-enclosure-other-housing-unit.xml',
|
4341
|
-
'base-enclosure-other-heated-space.xml',
|
4342
|
-
'base-enclosure-other-non-freezing-space.xml',
|
4343
|
-
'base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
4344
|
-
hpxml.doors.add(id: 'DoorOnWallOtherHousingUnit',
|
4345
|
-
wall_idref: 'WallOtherHousingUnit',
|
4346
|
-
area: 40,
|
4347
|
-
azimuth: 0,
|
4348
|
-
r_value: 4.4)
|
4349
|
-
if ['base-enclosure-other-heated-space.xml'].include? hpxml_file
|
4350
|
-
hpxml.doors[-1].id = 'DoorOnWallOtherHeatedSpace'
|
4351
|
-
hpxml.doors[-1].wall_idref = 'WallOtherHeatedSpace'
|
4352
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
4353
|
-
hpxml.doors[-1].id = 'DoorOnWallOtherNonFreezingSpace'
|
4354
|
-
hpxml.doors[-1].wall_idref = 'WallOtherNonFreezingSpace'
|
4355
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
4356
|
-
hpxml.doors[-1].id = 'DoorOnWallOtherMultifamilyBufferSpace'
|
4357
|
-
hpxml.doors[-1].wall_idref = 'WallOtherMultifamilyBufferSpace'
|
4358
|
-
end
|
4359
4577
|
elsif ['invalid_files/unattached-door.xml'].include? hpxml_file
|
4360
4578
|
hpxml.doors[0].wall_idref = 'foobar'
|
4361
4579
|
elsif ['base-enclosure-split-surfaces.xml'].include? hpxml_file
|
@@ -4409,10 +4627,12 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4409
4627
|
'base-hvac-ideal-air.xml',
|
4410
4628
|
'base-hvac-none.xml',
|
4411
4629
|
'base-hvac-room-ac-only.xml',
|
4412
|
-
'base-
|
4413
|
-
'base-
|
4630
|
+
'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
|
4631
|
+
'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml',
|
4414
4632
|
'invalid_files/orphaned-hvac-distribution.xml'].include? hpxml_file
|
4415
4633
|
hpxml.heating_systems.clear
|
4634
|
+
elsif ['base-hvac-furnace-gas-only.xml'].include? hpxml_file
|
4635
|
+
hpxml.heating_systems[0].fan_watts_per_cfm = 0.45
|
4416
4636
|
elsif ['base-hvac-boiler-elec-only.xml'].include? hpxml_file
|
4417
4637
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
|
4418
4638
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
|
@@ -4442,12 +4662,12 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4442
4662
|
elsif ['base-hvac-furnace-elec-only.xml'].include? hpxml_file
|
4443
4663
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
|
4444
4664
|
hpxml.heating_systems[0].heating_efficiency_afue = 1
|
4445
|
-
elsif ['base-hvac-furnace-gas-only.xml'].include? hpxml_file
|
4446
|
-
hpxml.heating_systems[0].electric_auxiliary_energy = 700
|
4447
4665
|
elsif ['base-hvac-furnace-oil-only.xml'].include? hpxml_file
|
4448
4666
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeOil
|
4449
4667
|
elsif ['base-hvac-furnace-propane-only.xml'].include? hpxml_file
|
4450
4668
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypePropane
|
4669
|
+
elsif ['base-hvac-furnace-coal-only.xml'].include? hpxml_file
|
4670
|
+
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeCoal
|
4451
4671
|
elsif ['base-hvac-furnace-wood-only.xml'].include? hpxml_file
|
4452
4672
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeWoodCord
|
4453
4673
|
elsif ['base-hvac-multiple.xml'].include? hpxml_file
|
@@ -4465,8 +4685,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4465
4685
|
heating_system_fuel: HPXML::FuelTypeNaturalGas,
|
4466
4686
|
heating_capacity: 6400,
|
4467
4687
|
heating_efficiency_afue: 0.92,
|
4468
|
-
fraction_heat_load_served: 0.1
|
4469
|
-
electric_auxiliary_energy: 700)
|
4688
|
+
fraction_heat_load_served: 0.1)
|
4470
4689
|
hpxml.heating_systems.add(id: 'HeatingSystem3',
|
4471
4690
|
distribution_system_idref: 'HVACDistribution3',
|
4472
4691
|
heating_system_type: HPXML::HVACTypeBoiler,
|
@@ -4494,14 +4713,14 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4494
4713
|
heating_capacity: 6400,
|
4495
4714
|
heating_efficiency_percent: 0.8,
|
4496
4715
|
fraction_heat_load_served: 0.1,
|
4497
|
-
|
4716
|
+
fan_watts: 40.0)
|
4498
4717
|
hpxml.heating_systems.add(id: 'HeatingSystem7',
|
4499
4718
|
heating_system_type: HPXML::HVACTypeWallFurnace,
|
4500
4719
|
heating_system_fuel: HPXML::FuelTypePropane,
|
4501
4720
|
heating_capacity: 6400,
|
4502
4721
|
heating_efficiency_afue: 0.8,
|
4503
4722
|
fraction_heat_load_served: 0.1,
|
4504
|
-
|
4723
|
+
fan_watts: 0.0)
|
4505
4724
|
elsif ['base-hvac-multiple2.xml'].include? hpxml_file
|
4506
4725
|
hpxml.heating_systems.clear
|
4507
4726
|
hpxml.heating_systems.add(id: 'HeatingSystem',
|
@@ -4517,8 +4736,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4517
4736
|
heating_system_fuel: HPXML::FuelTypeElectricity,
|
4518
4737
|
heating_capacity: 6400,
|
4519
4738
|
heating_efficiency_afue: 0.92,
|
4520
|
-
fraction_heat_load_served: 0.2
|
4521
|
-
electric_auxiliary_energy: 700)
|
4739
|
+
fraction_heat_load_served: 0.2)
|
4522
4740
|
hpxml.heating_systems.add(id: 'HeatingSystem3',
|
4523
4741
|
distribution_system_idref: 'HVACDistribution3',
|
4524
4742
|
heating_system_type: HPXML::HVACTypeBoiler,
|
@@ -4533,7 +4751,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4533
4751
|
heating_efficiency_percent: 1,
|
4534
4752
|
fraction_heat_load_served: 0.1)
|
4535
4753
|
elsif ['base-mechvent-multiple.xml',
|
4536
|
-
'base-
|
4754
|
+
'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
|
4537
4755
|
hpxml.heating_systems[0].heating_capacity /= 2.0
|
4538
4756
|
hpxml.heating_systems[0].fraction_heat_load_served /= 2.0
|
4539
4757
|
hpxml.heating_systems << hpxml.heating_systems[0].dup
|
@@ -4547,34 +4765,34 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4547
4765
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeWoodCord
|
4548
4766
|
hpxml.heating_systems[0].heating_efficiency_afue = nil
|
4549
4767
|
hpxml.heating_systems[0].heating_efficiency_percent = 0.8
|
4550
|
-
hpxml.heating_systems[0].
|
4768
|
+
hpxml.heating_systems[0].fan_watts = 0.0
|
4551
4769
|
elsif ['base-hvac-floor-furnace-propane-only.xml'].include? hpxml_file
|
4552
4770
|
hpxml.heating_systems[0].distribution_system_idref = nil
|
4553
4771
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeFloorFurnace
|
4554
4772
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypePropane
|
4555
4773
|
hpxml.heating_systems[0].heating_efficiency_afue = 0.8
|
4556
|
-
hpxml.heating_systems[0].
|
4774
|
+
hpxml.heating_systems[0].fan_watts = 0.0
|
4557
4775
|
elsif ['base-hvac-portable-heater-gas-only.xml'].include? hpxml_file
|
4558
4776
|
hpxml.heating_systems[0].distribution_system_idref = nil
|
4559
4777
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypePortableHeater
|
4560
4778
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeNaturalGas
|
4561
4779
|
hpxml.heating_systems[0].heating_efficiency_afue = nil
|
4562
4780
|
hpxml.heating_systems[0].heating_efficiency_percent = 1.0
|
4563
|
-
hpxml.heating_systems[0].
|
4781
|
+
hpxml.heating_systems[0].fan_watts = 0.0
|
4564
4782
|
elsif ['base-hvac-fixed-heater-gas-only.xml'].include? hpxml_file
|
4565
4783
|
hpxml.heating_systems[0].distribution_system_idref = nil
|
4566
4784
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeFixedHeater
|
4567
4785
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeNaturalGas
|
4568
4786
|
hpxml.heating_systems[0].heating_efficiency_afue = nil
|
4569
4787
|
hpxml.heating_systems[0].heating_efficiency_percent = 1.0
|
4570
|
-
hpxml.heating_systems[0].
|
4788
|
+
hpxml.heating_systems[0].fan_watts = 0.0
|
4571
4789
|
elsif ['base-hvac-stove-oil-only.xml',
|
4572
4790
|
'base-hvac-stove-wood-pellets-only.xml'].include? hpxml_file
|
4573
4791
|
hpxml.heating_systems[0].distribution_system_idref = nil
|
4574
4792
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeStove
|
4575
4793
|
hpxml.heating_systems[0].heating_efficiency_afue = nil
|
4576
4794
|
hpxml.heating_systems[0].heating_efficiency_percent = 0.8
|
4577
|
-
hpxml.heating_systems[0].
|
4795
|
+
hpxml.heating_systems[0].fan_watts = 40.0
|
4578
4796
|
if hpxml_file == 'base-hvac-stove-oil-only.xml'
|
4579
4797
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeOil
|
4580
4798
|
elsif hpxml_file == 'base-hvac-stove-wood-pellets-only.xml'
|
@@ -4585,7 +4803,7 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4585
4803
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeWallFurnace
|
4586
4804
|
hpxml.heating_systems[0].heating_system_fuel = HPXML::FuelTypeElectricity
|
4587
4805
|
hpxml.heating_systems[0].heating_efficiency_afue = 1.0
|
4588
|
-
hpxml.heating_systems[0].
|
4806
|
+
hpxml.heating_systems[0].fan_watts = 0.0
|
4589
4807
|
elsif ['base-hvac-furnace-x3-dse.xml'].include? hpxml_file
|
4590
4808
|
hpxml.heating_systems << hpxml.heating_systems[0].dup
|
4591
4809
|
hpxml.heating_systems << hpxml.heating_systems[1].dup
|
@@ -4613,26 +4831,24 @@ def set_hpxml_heating_systems(hpxml_file, hpxml)
|
|
4613
4831
|
hpxml.heating_systems[0].fraction_heat_load_served = 0.5
|
4614
4832
|
hpxml.heating_systems << hpxml.heating_systems[0].dup
|
4615
4833
|
hpxml.heating_systems[1].id += '2'
|
4616
|
-
elsif ['invalid_files/
|
4617
|
-
hpxml.heating_systems[0].
|
4834
|
+
elsif ['invalid_files/hvac-inconsistent-fan-powers.xml'].include? hpxml_file
|
4835
|
+
hpxml.heating_systems[0].fan_watts_per_cfm = 0.45
|
4618
4836
|
elsif ['base-hvac-undersized.xml'].include? hpxml_file
|
4619
4837
|
hpxml.heating_systems[0].heating_capacity /= 10.0
|
4620
|
-
elsif ['base-
|
4621
|
-
|
4622
|
-
elsif ['base-hvac-shared-boiler-only-baseboard.xml',
|
4623
|
-
'base-hvac-shared-boiler-chiller-baseboard.xml'].include? hpxml_file
|
4838
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
|
4839
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml'].include? hpxml_file
|
4624
4840
|
hpxml.heating_systems[0].heating_system_type = HPXML::HVACTypeBoiler
|
4625
4841
|
hpxml.heating_systems[0].is_shared_system = true
|
4626
4842
|
hpxml.heating_systems[0].number_of_units_served = 6
|
4627
4843
|
hpxml.heating_systems[0].heating_capacity = nil
|
4628
4844
|
hpxml.heating_systems[0].shared_loop_watts = 600
|
4629
|
-
elsif ['base-
|
4630
|
-
'base-
|
4845
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
|
4846
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
|
4631
4847
|
hpxml.heating_systems[0].fan_coil_watts = 150
|
4632
|
-
elsif ['base-
|
4633
|
-
'base-
|
4848
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml',
|
4849
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml'].include? hpxml_file
|
4634
4850
|
hpxml.heating_systems[0].wlhp_heating_efficiency_cop = 4.4
|
4635
|
-
elsif ['base-
|
4851
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml'].include? hpxml_file
|
4636
4852
|
hpxml.heating_systems[0].fan_coil_watts = nil
|
4637
4853
|
hpxml.heating_systems[0].shared_loop_watts = nil
|
4638
4854
|
hpxml.heating_systems[0].electric_auxiliary_energy = 500.0
|
@@ -4664,6 +4880,7 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4664
4880
|
'base-hvac-elec-resistance-only.xml',
|
4665
4881
|
'base-hvac-fireplace-wood-only.xml',
|
4666
4882
|
'base-hvac-floor-furnace-propane-only.xml',
|
4883
|
+
'base-hvac-furnace-coal-only.xml',
|
4667
4884
|
'base-hvac-furnace-elec-only.xml',
|
4668
4885
|
'base-hvac-furnace-gas-only.xml',
|
4669
4886
|
'base-hvac-furnace-oil-only.xml',
|
@@ -4676,9 +4893,11 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4676
4893
|
'base-hvac-stove-oil-only.xml',
|
4677
4894
|
'base-hvac-stove-wood-pellets-only.xml',
|
4678
4895
|
'base-hvac-wall-furnace-elec-only.xml',
|
4679
|
-
'base-
|
4680
|
-
'base-
|
4896
|
+
'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
|
4897
|
+
'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'].include? hpxml_file
|
4681
4898
|
hpxml.cooling_systems.clear
|
4899
|
+
elsif ['base-hvac-central-ac-only-1-speed.xml'].include? hpxml_file
|
4900
|
+
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.45
|
4682
4901
|
elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
|
4683
4902
|
hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
|
4684
4903
|
elsif ['base-hvac-furnace-gas-central-ac-2-speed.xml',
|
@@ -4696,6 +4915,7 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4696
4915
|
hpxml.cooling_systems[0].cooling_efficiency_seer = 19
|
4697
4916
|
hpxml.cooling_systems[0].cooling_shr = 0.73
|
4698
4917
|
hpxml.cooling_systems[0].compressor_type = nil
|
4918
|
+
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.2
|
4699
4919
|
elsif ['base-hvac-mini-split-air-conditioner-only-ductless.xml'].include? hpxml_file
|
4700
4920
|
hpxml.cooling_systems[0].distribution_system_idref = nil
|
4701
4921
|
elsif ['base-hvac-furnace-gas-room-ac.xml',
|
@@ -4723,6 +4943,9 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4723
4943
|
'base-hvac-evap-cooler-only.xml'].include? hpxml_file
|
4724
4944
|
hpxml.cooling_systems[0].distribution_system_idref = nil
|
4725
4945
|
end
|
4946
|
+
if ['base-hvac-evap-cooler-only.xml'].include? hpxml_file
|
4947
|
+
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.3
|
4948
|
+
end
|
4726
4949
|
elsif ['base-hvac-multiple.xml'].include? hpxml_file
|
4727
4950
|
hpxml.cooling_systems[0].distribution_system_idref = 'HVACDistribution2'
|
4728
4951
|
hpxml.cooling_systems[0].fraction_cool_load_served = 0.2
|
@@ -4747,7 +4970,7 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4747
4970
|
cooling_efficiency_seer: 13,
|
4748
4971
|
cooling_shr: 0.65)
|
4749
4972
|
elsif ['base-mechvent-multiple.xml',
|
4750
|
-
'base-
|
4973
|
+
'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
|
4751
4974
|
hpxml.cooling_systems[0].fraction_cool_load_served /= 2.0
|
4752
4975
|
hpxml.cooling_systems[0].cooling_capacity /= 2.0
|
4753
4976
|
hpxml.cooling_systems << hpxml.cooling_systems[0].dup
|
@@ -4759,6 +4982,8 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4759
4982
|
hpxml.cooling_systems[0].fraction_cool_load_served = 0.5
|
4760
4983
|
hpxml.cooling_systems << hpxml.cooling_systems[0].dup
|
4761
4984
|
hpxml.cooling_systems[1].id += '2'
|
4985
|
+
elsif ['invalid_files/hvac-inconsistent-fan-powers.xml'].include? hpxml_file
|
4986
|
+
hpxml.cooling_systems[0].fan_watts_per_cfm = 0.55
|
4762
4987
|
elsif ['base-hvac-undersized.xml'].include? hpxml_file
|
4763
4988
|
hpxml.cooling_systems[0].cooling_capacity /= 10.0
|
4764
4989
|
elsif ['base-hvac-flowrate.xml'].include? hpxml_file
|
@@ -4766,10 +4991,10 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4766
4991
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
4767
4992
|
hpxml.cooling_systems[0].cooling_shr = nil
|
4768
4993
|
hpxml.cooling_systems[0].compressor_type = nil
|
4769
|
-
elsif ['base-
|
4770
|
-
'base-
|
4771
|
-
'base-
|
4772
|
-
'base-
|
4994
|
+
elsif ['base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
|
4995
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml',
|
4996
|
+
'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml',
|
4997
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml'].include? hpxml_file
|
4773
4998
|
hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeChiller
|
4774
4999
|
hpxml.cooling_systems[0].is_shared_system = true
|
4775
5000
|
hpxml.cooling_systems[0].number_of_units_served = 6
|
@@ -4782,13 +5007,13 @@ def set_hpxml_cooling_systems(hpxml_file, hpxml)
|
|
4782
5007
|
hpxml.cooling_systems[0].wlhp_cooling_capacity = 24000
|
4783
5008
|
hpxml.cooling_systems[0].wlhp_cooling_efficiency_eer = 12.8
|
4784
5009
|
end
|
4785
|
-
elsif ['base-
|
4786
|
-
'base-
|
5010
|
+
elsif ['base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml',
|
5011
|
+
'base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml'].include? hpxml_file
|
4787
5012
|
hpxml.cooling_systems[0].cooling_system_type = HPXML::HVACTypeCoolingTower
|
4788
5013
|
hpxml.cooling_systems[0].cooling_capacity = nil
|
4789
5014
|
hpxml.cooling_systems[0].cooling_efficiency_kw_per_ton = nil
|
4790
|
-
elsif ['base-
|
4791
|
-
'base-
|
5015
|
+
elsif ['base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
|
5016
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
|
4792
5017
|
hpxml.cooling_systems[0].fan_coil_watts = 150
|
4793
5018
|
elsif hpxml_file.include?('hvac_autosizing') && (not hpxml.cooling_systems.nil?) && (hpxml.cooling_systems.size > 0)
|
4794
5019
|
hpxml.cooling_systems[0].cooling_capacity = nil
|
@@ -4813,7 +5038,8 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
|
|
4813
5038
|
cooling_efficiency_seer: 13,
|
4814
5039
|
heating_capacity_17F: 42000 * 0.630, # Based on OAT slope of default curves
|
4815
5040
|
cooling_shr: 0.73,
|
4816
|
-
compressor_type: HPXML::HVACCompressorTypeSingleStage
|
5041
|
+
compressor_type: HPXML::HVACCompressorTypeSingleStage,
|
5042
|
+
fan_watts_per_cfm: 0.45)
|
4817
5043
|
if hpxml_file == 'base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml'
|
4818
5044
|
hpxml.heat_pumps[0].fraction_cool_load_served = 0
|
4819
5045
|
end
|
@@ -4852,7 +5078,7 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
|
|
4852
5078
|
cooling_shr: 0.78,
|
4853
5079
|
compressor_type: HPXML::HVACCompressorTypeVariableSpeed)
|
4854
5080
|
elsif ['base-hvac-ground-to-air-heat-pump.xml',
|
4855
|
-
'base-
|
5081
|
+
'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'].include? hpxml_file
|
4856
5082
|
hpxml.heat_pumps.add(id: 'HeatPump',
|
4857
5083
|
distribution_system_idref: 'HVACDistribution',
|
4858
5084
|
heat_pump_type: HPXML::HVACTypeHeatPumpGroundToAir,
|
@@ -4868,8 +5094,8 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
|
|
4868
5094
|
cooling_efficiency_eer: 16.6,
|
4869
5095
|
cooling_shr: 0.73,
|
4870
5096
|
pump_watts_per_ton: 30.0,
|
4871
|
-
fan_watts_per_cfm: 0.
|
4872
|
-
if hpxml_file == 'base-
|
5097
|
+
fan_watts_per_cfm: 0.45)
|
5098
|
+
if hpxml_file == 'base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml'
|
4873
5099
|
hpxml.heat_pumps[-1].is_shared_system = true
|
4874
5100
|
hpxml.heat_pumps[-1].number_of_units_served = 6
|
4875
5101
|
hpxml.heat_pumps[-1].shared_loop_watts = 600
|
@@ -4890,7 +5116,8 @@ def set_hpxml_heat_pumps(hpxml_file, hpxml)
|
|
4890
5116
|
heating_efficiency_hspf: 10,
|
4891
5117
|
cooling_efficiency_seer: 19,
|
4892
5118
|
heating_capacity_17F: 52000 * f,
|
4893
|
-
cooling_shr: 0.73
|
5119
|
+
cooling_shr: 0.73,
|
5120
|
+
fan_watts_per_cfm: 0.2)
|
4894
5121
|
elsif ['base-hvac-mini-split-heat-pump-ducted-heating-only.xml'].include? hpxml_file
|
4895
5122
|
hpxml.heat_pumps[0].cooling_capacity = 0
|
4896
5123
|
hpxml.heat_pumps[0].fraction_cool_load_served = 0
|
@@ -5032,6 +5259,14 @@ def set_hpxml_hvac_control(hpxml_file, hpxml)
|
|
5032
5259
|
hpxml.hvac_controls[0].cooling_setup_temp = 80
|
5033
5260
|
hpxml.hvac_controls[0].cooling_setup_hours_per_week = 6 * 7
|
5034
5261
|
hpxml.hvac_controls[0].cooling_setup_start_hour = 9 # 9am
|
5262
|
+
elsif ['base-hvac-programmable-thermostat-detailed.xml'].include? hpxml_file
|
5263
|
+
hpxml.hvac_controls[0].control_type = HPXML::HVACControlTypeProgrammable
|
5264
|
+
hpxml.hvac_controls[0].heating_setpoint_temp = nil
|
5265
|
+
hpxml.hvac_controls[0].cooling_setpoint_temp = nil
|
5266
|
+
hpxml.hvac_controls[0].weekday_heating_setpoints = '64, 64, 64, 64, 64, 64, 64, 74, 74, 66, 66, 66, 66, 66, 66, 66, 66, 68, 68, 68, 68, 68, 64, 64'
|
5267
|
+
hpxml.hvac_controls[0].weekend_heating_setpoints = '74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74'
|
5268
|
+
hpxml.hvac_controls[0].weekday_cooling_setpoints = '82, 82, 82, 82, 82, 82, 82, 72, 72, 80, 80, 80, 80, 80, 80, 80, 80, 78, 78, 78, 78, 78, 82, 82'
|
5269
|
+
hpxml.hvac_controls[0].weekend_cooling_setpoints = '78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78'
|
5035
5270
|
elsif ['base-hvac-setpoints.xml'].include? hpxml_file
|
5036
5271
|
hpxml.hvac_controls[0].heating_setpoint_temp = 60
|
5037
5272
|
hpxml.hvac_controls[0].cooling_setpoint_temp = 80
|
@@ -5060,22 +5295,32 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
|
|
5060
5295
|
duct_insulation_r_value: 0,
|
5061
5296
|
duct_location: HPXML::LocationAtticUnvented,
|
5062
5297
|
duct_surface_area: 50)
|
5298
|
+
elsif ['base-bldgtype-multifamily.xml'].include? hpxml_file
|
5299
|
+
hpxml.hvac_distributions.each do |hvac_distribution|
|
5300
|
+
hvac_distribution.duct_leakage_measurements.each do |duct_leakage_measurement|
|
5301
|
+
duct_leakage_measurement.duct_leakage_value = 0
|
5302
|
+
end
|
5303
|
+
hvac_distribution.ducts.each do |duct|
|
5304
|
+
duct.duct_location = HPXML::LocationLivingSpace
|
5305
|
+
duct.duct_insulation_r_value = 0
|
5306
|
+
end
|
5307
|
+
end
|
5063
5308
|
elsif ['base-hvac-boiler-coal-only.xml',
|
5064
5309
|
'base-hvac-boiler-elec-only.xml',
|
5065
5310
|
'base-hvac-boiler-gas-only.xml',
|
5066
5311
|
'base-hvac-boiler-oil-only.xml',
|
5067
5312
|
'base-hvac-boiler-propane-only.xml',
|
5068
5313
|
'base-hvac-boiler-wood-only.xml',
|
5069
|
-
'base-
|
5070
|
-
'base-
|
5071
|
-
'base-
|
5314
|
+
'base-bldgtype-multifamily-shared-boiler-only-baseboard.xml',
|
5315
|
+
'base-bldgtype-multifamily-shared-chiller-only-baseboard.xml',
|
5316
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml'].include? hpxml_file
|
5072
5317
|
hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronic
|
5073
5318
|
hpxml.hvac_distributions[0].duct_leakage_measurements.clear
|
5074
5319
|
hpxml.hvac_distributions[0].ducts.clear
|
5075
5320
|
hpxml.hvac_distributions[0].hydronic_type = HPXML::HydronicTypeBaseboard
|
5076
|
-
elsif ['base-
|
5077
|
-
'base-
|
5078
|
-
'base-
|
5321
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml',
|
5322
|
+
'base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml',
|
5323
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml'].include? hpxml_file
|
5079
5324
|
hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronicAndAir
|
5080
5325
|
hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeFanCoil
|
5081
5326
|
elsif ['base-hvac-boiler-gas-central-ac-1-speed.xml'].include? hpxml_file
|
@@ -5193,7 +5438,7 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
|
|
5193
5438
|
hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
|
5194
5439
|
hpxml.hvac_distributions[-1].id = 'HVACDistribution5'
|
5195
5440
|
elsif ['base-mechvent-multiple.xml',
|
5196
|
-
'base-
|
5441
|
+
'base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
|
5197
5442
|
hpxml.hvac_distributions << hpxml.hvac_distributions[0].dup
|
5198
5443
|
hpxml.hvac_distributions[1].id = 'HVACDistribution2'
|
5199
5444
|
elsif ['base-hvac-dse.xml',
|
@@ -5265,7 +5510,7 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
|
|
5265
5510
|
elsif ['invalid_files/duct-location-unconditioned-space.xml'].include? hpxml_file
|
5266
5511
|
hpxml.hvac_distributions[0].ducts[0].duct_location = 'unconditioned space'
|
5267
5512
|
hpxml.hvac_distributions[0].ducts[1].duct_location = 'unconditioned space'
|
5268
|
-
elsif ['base-
|
5513
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
5269
5514
|
hpxml.hvac_distributions[0].ducts[1].duct_location = HPXML::LocationOtherHousingUnit
|
5270
5515
|
hpxml.hvac_distributions[0].ducts.add(duct_type: HPXML::DuctTypeSupply,
|
5271
5516
|
duct_insulation_r_value: 4,
|
@@ -5297,29 +5542,24 @@ def set_hpxml_hvac_distributions(hpxml_file, hpxml)
|
|
5297
5542
|
hpxml.hvac_distributions[0].duct_leakage_measurements[0].duct_leakage_value = 1.5
|
5298
5543
|
hpxml.hvac_distributions[0].duct_leakage_measurements[1].duct_leakage_value = 1.5
|
5299
5544
|
end
|
5300
|
-
elsif ['base-
|
5301
|
-
|
5302
|
-
|
5303
|
-
|
5304
|
-
|
5305
|
-
|
5306
|
-
|
5307
|
-
|
5308
|
-
|
5309
|
-
|
5310
|
-
|
5311
|
-
|
5312
|
-
|
5313
|
-
|
5314
|
-
|
5315
|
-
|
5316
|
-
|
5317
|
-
|
5318
|
-
'base-hvac-shared-chiller-only-water-loop-heat-pump.xml',
|
5319
|
-
'base-hvac-shared-boiler-chiller-water-loop-heat-pump.xml',
|
5320
|
-
'base-hvac-shared-boiler-chiller-fan-coil-ducted.xml',
|
5321
|
-
'base-hvac-shared-boiler-only-fan-coil-ducted.xml',
|
5322
|
-
'base-hvac-shared-chiller-only-fan-coil-ducted.xml'].include? hpxml_file
|
5545
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
5546
|
+
hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherHousingUnit
|
5547
|
+
hpxml.hvac_distributions[0].ducts[1].duct_location = HPXML::LocationOtherHousingUnit
|
5548
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
5549
|
+
hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherHeatedSpace
|
5550
|
+
hpxml.hvac_distributions[0].ducts[1].duct_location = HPXML::LocationOtherHeatedSpace
|
5551
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
5552
|
+
hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherMultifamilyBufferSpace
|
5553
|
+
hpxml.hvac_distributions[0].ducts[1].duct_location = HPXML::LocationOtherMultifamilyBufferSpace
|
5554
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
5555
|
+
hpxml.hvac_distributions[0].ducts[0].duct_location = HPXML::LocationOtherNonFreezingSpace
|
5556
|
+
hpxml.hvac_distributions[0].ducts[1].duct_location = HPXML::LocationOtherNonFreezingSpace
|
5557
|
+
elsif ['base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml',
|
5558
|
+
'base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml',
|
5559
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml',
|
5560
|
+
'base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml',
|
5561
|
+
'base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml',
|
5562
|
+
'base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml'].include? hpxml_file
|
5323
5563
|
hpxml.hvac_distributions[0].distribution_system_type = HPXML::HVACDistributionTypeHydronicAndAir
|
5324
5564
|
if hpxml_file.include? 'fan-coil'
|
5325
5565
|
hpxml.hvac_distributions[0].hydronic_and_air_type = HPXML::HydronicAndAirTypeFanCoil
|
@@ -5500,7 +5740,7 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
|
|
5500
5740
|
hpxml.ventilation_fans.add(id: 'BathFans',
|
5501
5741
|
fan_location: HPXML::LocationBath,
|
5502
5742
|
used_for_local_ventilation: true)
|
5503
|
-
elsif ['base-
|
5743
|
+
elsif ['base-bldgtype-multifamily-shared-mechvent.xml'].include? hpxml_file
|
5504
5744
|
# Shared supply + in-unit exhaust (roughly balanced)
|
5505
5745
|
hpxml.ventilation_fans.add(id: 'SharedSupplyFan',
|
5506
5746
|
fan_type: HPXML::MechVentTypeSupply,
|
@@ -5517,14 +5757,14 @@ def set_hpxml_ventilation_fans(hpxml_file, hpxml)
|
|
5517
5757
|
hours_in_operation: 24,
|
5518
5758
|
fan_power: 26,
|
5519
5759
|
used_for_whole_building_ventilation: true)
|
5520
|
-
elsif ['base-
|
5760
|
+
elsif ['base-bldgtype-multifamily-shared-mechvent-preconditioning.xml'].include? hpxml_file
|
5521
5761
|
hpxml.ventilation_fans[0].preheating_fuel = HPXML::FuelTypeNaturalGas
|
5522
5762
|
hpxml.ventilation_fans[0].preheating_efficiency_cop = 0.92
|
5523
5763
|
hpxml.ventilation_fans[0].preheating_fraction_load_served = 0.7
|
5524
5764
|
hpxml.ventilation_fans[0].precooling_fuel = HPXML::FuelTypeElectricity
|
5525
5765
|
hpxml.ventilation_fans[0].precooling_efficiency_cop = 4.0
|
5526
5766
|
hpxml.ventilation_fans[0].precooling_fraction_load_served = 0.8
|
5527
|
-
elsif ['base-
|
5767
|
+
elsif ['base-bldgtype-multifamily-shared-mechvent-multiple.xml'].include? hpxml_file
|
5528
5768
|
hpxml.ventilation_fans.add(id: 'SharedSupplyPreconditioned',
|
5529
5769
|
fan_type: HPXML::MechVentTypeSupply,
|
5530
5770
|
is_shared_system: true,
|
@@ -5779,9 +6019,42 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
|
|
5779
6019
|
elsif hpxml_file == 'base-dhw-tankless-propane.xml'
|
5780
6020
|
hpxml.water_heating_systems[0].fuel_type = HPXML::FuelTypePropane
|
5781
6021
|
end
|
5782
|
-
elsif ['base-dhw-uef.xml'].include? hpxml_file
|
6022
|
+
elsif ['base-dhw-tank-elec-uef.xml'].include? hpxml_file
|
6023
|
+
# Based on Richmond model number 6ESB30-2 in AHR directory
|
6024
|
+
hpxml.water_heating_systems[0].energy_factor = nil
|
6025
|
+
hpxml.water_heating_systems[0].uniform_energy_factor = 0.93
|
6026
|
+
hpxml.water_heating_systems[0].first_hour_rating = 46.0
|
6027
|
+
hpxml.water_heating_systems[0].tank_volume = 30.0
|
6028
|
+
hpxml.water_heating_systems[0].heating_capacity = 15354.0 # 4.5 kW
|
6029
|
+
elsif ['base-dhw-tank-gas-uef.xml'].include? hpxml_file
|
6030
|
+
# Based on AO Smith model number G6-MH3030NV 400 in AHRI directory
|
6031
|
+
hpxml.water_heating_systems[0].fuel_type = HPXML::FuelTypeNaturalGas
|
6032
|
+
hpxml.water_heating_systems[0].energy_factor = nil
|
6033
|
+
hpxml.water_heating_systems[0].uniform_energy_factor = 0.59
|
6034
|
+
hpxml.water_heating_systems[0].first_hour_rating = 56.0
|
6035
|
+
hpxml.water_heating_systems[0].tank_volume = 30.0
|
6036
|
+
hpxml.water_heating_systems[0].heating_capacity = 30000.0
|
6037
|
+
hpxml.water_heating_systems[0].recovery_efficiency = 0.75
|
6038
|
+
elsif ['base-dhw-tank-heat-pump-uef.xml'].include? hpxml_file
|
6039
|
+
# Based on Rheem model number XE40T10HS45U0 from AHRI directory
|
6040
|
+
hpxml.water_heating_systems[0].water_heater_type = HPXML::WaterHeaterTypeHeatPump
|
6041
|
+
hpxml.water_heating_systems[0].energy_factor = nil
|
6042
|
+
hpxml.water_heating_systems[0].uniform_energy_factor = 3.75
|
6043
|
+
hpxml.water_heating_systems[0].first_hour_rating = 60.0
|
6044
|
+
hpxml.water_heating_systems[0].tank_volume = 50.0
|
6045
|
+
elsif ['base-dhw-tankless-gas-uef.xml'].include? hpxml_file
|
6046
|
+
hpxml.water_heating_systems[0].water_heater_type = HPXML::WaterHeaterTypeTankless
|
6047
|
+
hpxml.water_heating_systems[0].fuel_type = HPXML::FuelTypeNaturalGas
|
6048
|
+
hpxml.water_heating_systems[0].tank_volume = nil
|
6049
|
+
hpxml.water_heating_systems[0].heating_capacity = nil
|
5783
6050
|
hpxml.water_heating_systems[0].energy_factor = nil
|
5784
6051
|
hpxml.water_heating_systems[0].uniform_energy_factor = 0.93
|
6052
|
+
elsif ['base-dhw-tankless-electric-uef.xml'].include? hpxml_file
|
6053
|
+
hpxml.water_heating_systems[0].water_heater_type = HPXML::WaterHeaterTypeTankless
|
6054
|
+
hpxml.water_heating_systems[0].tank_volume = nil
|
6055
|
+
hpxml.water_heating_systems[0].heating_capacity = nil
|
6056
|
+
hpxml.water_heating_systems[0].energy_factor = nil
|
6057
|
+
hpxml.water_heating_systems[0].uniform_energy_factor = 0.98
|
5785
6058
|
elsif ['base-dhw-desuperheater.xml',
|
5786
6059
|
'base-dhw-desuperheater-2-speed.xml',
|
5787
6060
|
'base-dhw-desuperheater-var-speed.xml',
|
@@ -5856,21 +6129,16 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
|
|
5856
6129
|
hpxml.water_heating_systems[1].id = 'WaterHeater2'
|
5857
6130
|
elsif ['base-enclosure-garage.xml'].include? hpxml_file
|
5858
6131
|
hpxml.water_heating_systems[0].location = HPXML::LocationGarage
|
5859
|
-
elsif ['base-
|
6132
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
5860
6133
|
hpxml.water_heating_systems[0].location = HPXML::LocationLivingSpace
|
5861
|
-
elsif ['base-
|
5862
|
-
|
5863
|
-
|
5864
|
-
|
5865
|
-
|
5866
|
-
|
5867
|
-
|
5868
|
-
|
5869
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
5870
|
-
hpxml.water_heating_systems[0].location = HPXML::LocationOtherNonFreezingSpace
|
5871
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
5872
|
-
hpxml.water_heating_systems[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
5873
|
-
end
|
6134
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6135
|
+
hpxml.water_heating_systems[0].location = HPXML::LocationOtherHousingUnit
|
6136
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6137
|
+
hpxml.water_heating_systems[0].location = HPXML::LocationOtherHeatedSpace
|
6138
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6139
|
+
hpxml.water_heating_systems[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6140
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6141
|
+
hpxml.water_heating_systems[0].location = HPXML::LocationOtherNonFreezingSpace
|
5874
6142
|
elsif ['base-dhw-none.xml'].include? hpxml_file
|
5875
6143
|
hpxml.water_heating_systems.clear
|
5876
6144
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
@@ -5879,7 +6147,7 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
|
|
5879
6147
|
hpxml.water_heating_systems[0].heating_capacity = nil
|
5880
6148
|
hpxml.water_heating_systems[0].tank_volume = nil
|
5881
6149
|
hpxml.water_heating_systems[0].recovery_efficiency = nil
|
5882
|
-
elsif ['base-
|
6150
|
+
elsif ['base-bldgtype-multifamily-shared-water-heater.xml'].include? hpxml_file
|
5883
6151
|
hpxml.water_heating_systems.clear
|
5884
6152
|
hpxml.water_heating_systems.add(id: 'SharedWaterHeater',
|
5885
6153
|
is_shared_system: true,
|
@@ -5887,13 +6155,13 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
|
|
5887
6155
|
fuel_type: HPXML::FuelTypeNaturalGas,
|
5888
6156
|
water_heater_type: HPXML::WaterHeaterTypeStorage,
|
5889
6157
|
location: HPXML::LocationLivingSpace,
|
5890
|
-
tank_volume:
|
6158
|
+
tank_volume: 120,
|
5891
6159
|
fraction_dhw_load_served: 1.0,
|
5892
6160
|
heating_capacity: 40000,
|
5893
6161
|
energy_factor: 0.59,
|
5894
6162
|
recovery_efficiency: 0.76,
|
5895
6163
|
temperature: Waterheater.get_default_hot_water_temperature(Constants.ERIVersions[-1]))
|
5896
|
-
elsif ['base-
|
6164
|
+
elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
|
5897
6165
|
hpxml.water_heating_systems[0].location = HPXML::LocationLivingSpace
|
5898
6166
|
hpxml.water_heating_systems << hpxml.water_heating_systems[0].dup
|
5899
6167
|
hpxml.water_heating_systems[1].id = 'SharedWaterHeater'
|
@@ -5903,6 +6171,10 @@ def set_hpxml_water_heating_systems(hpxml_file, hpxml)
|
|
5903
6171
|
hpxml.water_heating_systems[1].location = HPXML::LocationOtherHeatedSpace
|
5904
6172
|
elsif ['invalid_files/multifamily-reference-water-heater.xml'].include? hpxml_file
|
5905
6173
|
hpxml.water_heating_systems[0].location = HPXML::LocationOtherNonFreezingSpace
|
6174
|
+
elsif ['invalid_files/dhw-invalid-ef-tank.xml'].include? hpxml_file
|
6175
|
+
hpxml.water_heating_systems[0].energy_factor = 1.0
|
6176
|
+
elsif ['invalid_files/dhw-invalid-uef-tank-heat-pump.xml'].include? hpxml_file
|
6177
|
+
hpxml.water_heating_systems[0].uniform_energy_factor = 1.0
|
5906
6178
|
end
|
5907
6179
|
end
|
5908
6180
|
|
@@ -5948,9 +6220,9 @@ def set_hpxml_hot_water_distribution(hpxml_file, hpxml)
|
|
5948
6220
|
hpxml.hot_water_distributions[0].recirculation_piping_length = 50
|
5949
6221
|
hpxml.hot_water_distributions[0].recirculation_branch_piping_length = 50
|
5950
6222
|
hpxml.hot_water_distributions[0].recirculation_pump_power = 50
|
5951
|
-
elsif ['base-
|
6223
|
+
elsif ['base-bldgtype-multifamily-shared-water-heater.xml'].include? hpxml_file
|
5952
6224
|
hpxml.hot_water_distributions[0].id = 'SharedHotWaterDistribution'
|
5953
|
-
elsif ['base-
|
6225
|
+
elsif ['base-bldgtype-multifamily-shared-water-heater-recirc.xml'].include? hpxml_file
|
5954
6226
|
hpxml.hot_water_distributions[0].has_shared_recirculation = true
|
5955
6227
|
hpxml.hot_water_distributions[0].shared_recirculation_number_of_units_served = 6
|
5956
6228
|
hpxml.hot_water_distributions[0].shared_recirculation_pump_power = 220
|
@@ -5958,6 +6230,7 @@ def set_hpxml_hot_water_distribution(hpxml_file, hpxml)
|
|
5958
6230
|
elsif ['base-dhw-none.xml'].include? hpxml_file
|
5959
6231
|
hpxml.hot_water_distributions.clear
|
5960
6232
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6233
|
+
hpxml.hot_water_distributions[0].pipe_r_value = nil
|
5961
6234
|
hpxml.hot_water_distributions[0].standard_piping_length = nil
|
5962
6235
|
end
|
5963
6236
|
end
|
@@ -6077,14 +6350,11 @@ def set_hpxml_pv_systems(hpxml_file, hpxml)
|
|
6077
6350
|
system_losses_fraction: 0.14)
|
6078
6351
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6079
6352
|
hpxml.pv_systems.add(id: 'PVSystem',
|
6080
|
-
module_type: HPXML::PVModuleTypeStandard,
|
6081
|
-
location: HPXML::LocationRoof,
|
6082
|
-
tracking: HPXML::PVTrackingTypeFixed,
|
6083
6353
|
array_azimuth: 180,
|
6084
6354
|
array_tilt: 20,
|
6085
6355
|
max_power_output: 4000,
|
6086
6356
|
year_modules_manufactured: 2015)
|
6087
|
-
elsif ['base-
|
6357
|
+
elsif ['base-bldgtype-multifamily-shared-pv.xml'].include? hpxml_file
|
6088
6358
|
hpxml.pv_systems.add(id: 'PVSystem',
|
6089
6359
|
is_shared_system: true,
|
6090
6360
|
module_type: HPXML::PVModuleTypeStandard,
|
@@ -6095,7 +6365,27 @@ def set_hpxml_pv_systems(hpxml_file, hpxml)
|
|
6095
6365
|
max_power_output: 30000,
|
6096
6366
|
inverter_efficiency: 0.96,
|
6097
6367
|
system_losses_fraction: 0.14,
|
6098
|
-
number_of_bedrooms_served:
|
6368
|
+
number_of_bedrooms_served: 18)
|
6369
|
+
end
|
6370
|
+
end
|
6371
|
+
|
6372
|
+
def set_hpxml_generators(hpxml_file, hpxml)
|
6373
|
+
if ['base-misc-generators.xml'].include? hpxml_file
|
6374
|
+
hpxml.generators.add(id: 'Generator',
|
6375
|
+
fuel_type: HPXML::FuelTypeNaturalGas,
|
6376
|
+
annual_consumption_kbtu: 8500,
|
6377
|
+
annual_output_kwh: 500)
|
6378
|
+
hpxml.generators.add(id: 'Generator2',
|
6379
|
+
fuel_type: HPXML::FuelTypePropane,
|
6380
|
+
annual_consumption_kbtu: 8500,
|
6381
|
+
annual_output_kwh: 500)
|
6382
|
+
elsif ['base-bldgtype-multifamily-shared-generator.xml'].include? hpxml_file
|
6383
|
+
hpxml.generators.add(id: 'Generator',
|
6384
|
+
is_shared_system: true,
|
6385
|
+
fuel_type: HPXML::FuelTypePropane,
|
6386
|
+
annual_consumption_kbtu: 85000,
|
6387
|
+
annual_output_kwh: 5000,
|
6388
|
+
number_of_bedrooms_served: 18)
|
6099
6389
|
end
|
6100
6390
|
end
|
6101
6391
|
|
@@ -6113,21 +6403,16 @@ def set_hpxml_clothes_washer(hpxml_file, hpxml)
|
|
6113
6403
|
elsif ['base-appliances-none.xml',
|
6114
6404
|
'base-dhw-none.xml'].include? hpxml_file
|
6115
6405
|
hpxml.clothes_washers.clear
|
6116
|
-
elsif ['base-
|
6406
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
6117
6407
|
hpxml.clothes_washers[0].location = HPXML::LocationLivingSpace
|
6118
|
-
elsif ['base-
|
6119
|
-
|
6120
|
-
|
6121
|
-
|
6122
|
-
|
6123
|
-
|
6124
|
-
|
6125
|
-
|
6126
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
6127
|
-
hpxml.clothes_washers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6128
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
6129
|
-
hpxml.clothes_washers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6130
|
-
end
|
6408
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6409
|
+
hpxml.clothes_washers[0].location = HPXML::LocationOtherHousingUnit
|
6410
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6411
|
+
hpxml.clothes_washers[0].location = HPXML::LocationOtherHeatedSpace
|
6412
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6413
|
+
hpxml.clothes_washers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6414
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6415
|
+
hpxml.clothes_washers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6131
6416
|
elsif ['base-appliances-modified.xml'].include? hpxml_file
|
6132
6417
|
imef = hpxml.clothes_washers[0].integrated_modified_energy_factor
|
6133
6418
|
hpxml.clothes_washers[0].integrated_modified_energy_factor = nil
|
@@ -6139,8 +6424,6 @@ def set_hpxml_clothes_washer(hpxml_file, hpxml)
|
|
6139
6424
|
elsif ['base-enclosure-garage.xml',
|
6140
6425
|
'invalid_files/clothes-washer-location.xml'].include? hpxml_file
|
6141
6426
|
hpxml.clothes_washers[0].location = HPXML::LocationGarage
|
6142
|
-
elsif ['invalid_files/appliances-location-unconditioned-space.xml'].include? hpxml_file
|
6143
|
-
hpxml.clothes_washers[0].location = 'unconditioned space'
|
6144
6427
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6145
6428
|
hpxml.clothes_washers[0].location = nil
|
6146
6429
|
hpxml.clothes_washers[0].modified_energy_factor = nil
|
@@ -6153,7 +6436,7 @@ def set_hpxml_clothes_washer(hpxml_file, hpxml)
|
|
6153
6436
|
hpxml.clothes_washers[0].label_usage = nil
|
6154
6437
|
elsif ['base-misc-usage-multiplier.xml'].include? hpxml_file
|
6155
6438
|
hpxml.clothes_washers[0].usage_multiplier = 0.9
|
6156
|
-
elsif ['base-
|
6439
|
+
elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
|
6157
6440
|
hpxml.clothes_washers[0].is_shared_appliance = true
|
6158
6441
|
hpxml.clothes_washers[0].id = 'SharedClothesWasher'
|
6159
6442
|
hpxml.clothes_washers[0].location = HPXML::LocationOtherHeatedSpace
|
@@ -6177,21 +6460,16 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
|
|
6177
6460
|
elsif ['base-appliances-none.xml',
|
6178
6461
|
'base-dhw-none.xml'].include? hpxml_file
|
6179
6462
|
hpxml.clothes_dryers.clear
|
6180
|
-
elsif ['base-
|
6463
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
6181
6464
|
hpxml.clothes_dryers[0].location = HPXML::LocationLivingSpace
|
6182
|
-
elsif ['base-
|
6183
|
-
|
6184
|
-
|
6185
|
-
|
6186
|
-
|
6187
|
-
|
6188
|
-
|
6189
|
-
|
6190
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
6191
|
-
hpxml.clothes_dryers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6192
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
6193
|
-
hpxml.clothes_dryers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6194
|
-
end
|
6465
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6466
|
+
hpxml.clothes_dryers[0].location = HPXML::LocationOtherHousingUnit
|
6467
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6468
|
+
hpxml.clothes_dryers[0].location = HPXML::LocationOtherHeatedSpace
|
6469
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6470
|
+
hpxml.clothes_dryers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6471
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6472
|
+
hpxml.clothes_dryers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6195
6473
|
elsif ['base-appliances-modified.xml'].include? hpxml_file
|
6196
6474
|
cef = hpxml.clothes_dryers[-1].combined_energy_factor
|
6197
6475
|
hpxml.clothes_dryers.clear
|
@@ -6229,8 +6507,6 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
|
|
6229
6507
|
elsif ['base-enclosure-garage.xml',
|
6230
6508
|
'invalid_files/clothes-dryer-location.xml'].include? hpxml_file
|
6231
6509
|
hpxml.clothes_dryers[0].location = HPXML::LocationGarage
|
6232
|
-
elsif ['invalid_files/appliances-location-unconditioned-space.xml'].include? hpxml_file
|
6233
|
-
hpxml.clothes_dryers[0].location = 'unconditioned space'
|
6234
6510
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6235
6511
|
hpxml.clothes_dryers[0].location = nil
|
6236
6512
|
hpxml.clothes_dryers[0].energy_factor = nil
|
@@ -6238,7 +6514,7 @@ def set_hpxml_clothes_dryer(hpxml_file, hpxml)
|
|
6238
6514
|
hpxml.clothes_dryers[0].control_type = nil
|
6239
6515
|
hpxml.clothes_dryers[0].is_vented = nil
|
6240
6516
|
hpxml.clothes_dryers[0].vented_flow_rate = nil
|
6241
|
-
elsif ['base-
|
6517
|
+
elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
|
6242
6518
|
hpxml.clothes_dryers[0].id = 'SharedClothesDryer'
|
6243
6519
|
hpxml.clothes_dryers[0].location = HPXML::LocationOtherHeatedSpace
|
6244
6520
|
hpxml.clothes_dryers[0].is_shared_appliance = true
|
@@ -6262,21 +6538,16 @@ def set_hpxml_dishwasher(hpxml_file, hpxml)
|
|
6262
6538
|
hpxml.dishwashers[0].rated_annual_kwh = nil
|
6263
6539
|
hpxml.dishwashers[0].energy_factor = HotWaterAndAppliances.calc_dishwasher_ef_from_annual_kwh(rated_annual_kwh).round(2)
|
6264
6540
|
hpxml.dishwashers[0].place_setting_capacity = 6 # Compact
|
6265
|
-
elsif ['base-
|
6541
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
6266
6542
|
hpxml.dishwashers[0].location = HPXML::LocationLivingSpace
|
6267
|
-
elsif ['base-
|
6268
|
-
|
6269
|
-
|
6270
|
-
|
6271
|
-
|
6272
|
-
|
6273
|
-
|
6274
|
-
|
6275
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
6276
|
-
hpxml.dishwashers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6277
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
6278
|
-
hpxml.dishwashers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6279
|
-
end
|
6543
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6544
|
+
hpxml.dishwashers[0].location = HPXML::LocationOtherHousingUnit
|
6545
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6546
|
+
hpxml.dishwashers[0].location = HPXML::LocationOtherHeatedSpace
|
6547
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6548
|
+
hpxml.dishwashers[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6549
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6550
|
+
hpxml.dishwashers[0].location = HPXML::LocationOtherNonFreezingSpace
|
6280
6551
|
elsif ['base-appliances-none.xml',
|
6281
6552
|
'base-dhw-none.xml'].include? hpxml_file
|
6282
6553
|
hpxml.dishwashers.clear
|
@@ -6287,8 +6558,6 @@ def set_hpxml_dishwasher(hpxml_file, hpxml)
|
|
6287
6558
|
elsif ['base-enclosure-garage.xml',
|
6288
6559
|
'invalid_files/dishwasher-location.xml'].include? hpxml_file
|
6289
6560
|
hpxml.dishwashers[0].location = HPXML::LocationGarage
|
6290
|
-
elsif ['invalid_files/appliances-location-unconditioned-space.xml'].include? hpxml_file
|
6291
|
-
hpxml.dishwashers[0].location = 'unconditioned space'
|
6292
6561
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6293
6562
|
hpxml.dishwashers[0].rated_annual_kwh = nil
|
6294
6563
|
hpxml.dishwashers[0].label_electric_rate = nil
|
@@ -6296,15 +6565,19 @@ def set_hpxml_dishwasher(hpxml_file, hpxml)
|
|
6296
6565
|
hpxml.dishwashers[0].label_annual_gas_cost = nil
|
6297
6566
|
hpxml.dishwashers[0].place_setting_capacity = nil
|
6298
6567
|
hpxml.dishwashers[0].label_usage = nil
|
6568
|
+
hpxml.dishwashers[0].location = nil
|
6299
6569
|
elsif ['base-misc-usage-multiplier.xml'].include? hpxml_file
|
6300
6570
|
hpxml.dishwashers[0].usage_multiplier = 0.9
|
6301
|
-
elsif ['base-
|
6571
|
+
elsif ['base-bldgtype-multifamily-shared-laundry-room.xml'].include? hpxml_file
|
6302
6572
|
hpxml.dishwashers[0].is_shared_appliance = true
|
6303
6573
|
hpxml.dishwashers[0].id = 'SharedDishwasher'
|
6304
6574
|
hpxml.dishwashers[0].location = HPXML::LocationOtherHeatedSpace
|
6305
6575
|
hpxml.dishwashers[0].water_heating_system_idref = 'SharedWaterHeater'
|
6306
6576
|
elsif ['invalid_files/unattached-shared-dishwasher-water-heater.xml'].include? hpxml_file
|
6307
6577
|
hpxml.dishwashers[0].water_heating_system_idref = 'foobar'
|
6578
|
+
elsif ['invalid_files/invalid-input-parameters.xml'].include? hpxml_file
|
6579
|
+
hpxml.dishwashers[0].rated_annual_kwh = nil
|
6580
|
+
hpxml.dishwashers[0].energy_factor = 5.1
|
6308
6581
|
end
|
6309
6582
|
end
|
6310
6583
|
|
@@ -6318,21 +6591,16 @@ def set_hpxml_refrigerator(hpxml_file, hpxml)
|
|
6318
6591
|
hpxml.refrigerators[0].adjusted_annual_kwh = 600
|
6319
6592
|
elsif ['base-appliances-none.xml'].include? hpxml_file
|
6320
6593
|
hpxml.refrigerators.clear
|
6321
|
-
elsif ['base-
|
6594
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
6322
6595
|
hpxml.refrigerators[0].location = HPXML::LocationLivingSpace
|
6323
|
-
elsif ['base-
|
6324
|
-
|
6325
|
-
|
6326
|
-
|
6327
|
-
|
6328
|
-
|
6329
|
-
|
6330
|
-
|
6331
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
6332
|
-
hpxml.refrigerators[0].location = HPXML::LocationOtherNonFreezingSpace
|
6333
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
6334
|
-
hpxml.refrigerators[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6335
|
-
end
|
6596
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6597
|
+
hpxml.refrigerators[0].location = HPXML::LocationOtherHousingUnit
|
6598
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6599
|
+
hpxml.refrigerators[0].location = HPXML::LocationOtherHeatedSpace
|
6600
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6601
|
+
hpxml.refrigerators[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6602
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6603
|
+
hpxml.refrigerators[0].location = HPXML::LocationOtherNonFreezingSpace
|
6336
6604
|
elsif ['base-foundation-unconditioned-basement.xml'].include? hpxml_file
|
6337
6605
|
hpxml.refrigerators[0].location = HPXML::LocationBasementUnconditioned
|
6338
6606
|
elsif ['base-atticroof-conditioned.xml'].include? hpxml_file
|
@@ -6340,8 +6608,6 @@ def set_hpxml_refrigerator(hpxml_file, hpxml)
|
|
6340
6608
|
elsif ['base-enclosure-garage.xml',
|
6341
6609
|
'invalid_files/refrigerator-location.xml'].include? hpxml_file
|
6342
6610
|
hpxml.refrigerators[0].location = HPXML::LocationGarage
|
6343
|
-
elsif ['invalid_files/appliances-location-unconditioned-space.xml'].include? hpxml_file
|
6344
|
-
hpxml.refrigerators[0].location = 'unconditioned space'
|
6345
6611
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6346
6612
|
hpxml.refrigerators[0].primary_indicator = nil
|
6347
6613
|
hpxml.refrigerators[0].location = nil
|
@@ -6405,15 +6671,18 @@ end
|
|
6405
6671
|
def set_hpxml_dehumidifier(hpxml_file, hpxml)
|
6406
6672
|
if ['base-appliances-dehumidifier.xml'].include? hpxml_file
|
6407
6673
|
hpxml.dehumidifiers.add(id: 'Dehumidifier',
|
6674
|
+
type: HPXML::DehumidifierTypePortable,
|
6408
6675
|
capacity: 40,
|
6409
6676
|
energy_factor: 1.8,
|
6410
6677
|
rh_setpoint: 0.5,
|
6411
6678
|
fraction_served: 1.0)
|
6412
|
-
elsif ['base-appliances-dehumidifier-ief.xml'].include? hpxml_file
|
6413
|
-
hpxml.dehumidifiers[0].energy_factor = nil
|
6414
|
-
hpxml.dehumidifiers[0].integrated_energy_factor = 1.5
|
6415
6679
|
elsif ['base-appliances-dehumidifier-50percent.xml'].include? hpxml_file
|
6416
6680
|
hpxml.dehumidifiers[0].fraction_served = 0.5
|
6681
|
+
elsif ['base-appliances-dehumidifier-ief-portable.xml'].include? hpxml_file
|
6682
|
+
hpxml.dehumidifiers[0].energy_factor = nil
|
6683
|
+
hpxml.dehumidifiers[0].integrated_energy_factor = 1.5
|
6684
|
+
elsif ['base-appliances-dehumidifier-ief-whole-home.xml'].include? hpxml_file
|
6685
|
+
hpxml.dehumidifiers[0].type = HPXML::DehumidifierTypeWholeHome
|
6417
6686
|
end
|
6418
6687
|
end
|
6419
6688
|
|
@@ -6425,21 +6694,16 @@ def set_hpxml_cooking_range(hpxml_file, hpxml)
|
|
6425
6694
|
is_induction: false)
|
6426
6695
|
elsif ['base-appliances-none.xml'].include? hpxml_file
|
6427
6696
|
hpxml.cooking_ranges.clear
|
6428
|
-
elsif ['base-
|
6697
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multiple.xml'].include? hpxml_file
|
6429
6698
|
hpxml.cooking_ranges[0].location = HPXML::LocationLivingSpace
|
6430
|
-
elsif ['base-
|
6431
|
-
|
6432
|
-
|
6433
|
-
|
6434
|
-
|
6435
|
-
|
6436
|
-
|
6437
|
-
|
6438
|
-
elsif ['base-enclosure-other-non-freezing-space.xml'].include? hpxml_file
|
6439
|
-
hpxml.cooking_ranges[0].location = HPXML::LocationOtherNonFreezingSpace
|
6440
|
-
elsif ['base-enclosure-other-multifamily-buffer-space.xml'].include? hpxml_file
|
6441
|
-
hpxml.cooking_ranges[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6442
|
-
end
|
6699
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml'].include? hpxml_file
|
6700
|
+
hpxml.cooking_ranges[0].location = HPXML::LocationOtherHousingUnit
|
6701
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-other-heated-space.xml'].include? hpxml_file
|
6702
|
+
hpxml.cooking_ranges[0].location = HPXML::LocationOtherHeatedSpace
|
6703
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml'].include? hpxml_file
|
6704
|
+
hpxml.cooking_ranges[0].location = HPXML::LocationOtherMultifamilyBufferSpace
|
6705
|
+
elsif ['base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml'].include? hpxml_file
|
6706
|
+
hpxml.cooking_ranges[0].location = HPXML::LocationOtherNonFreezingSpace
|
6443
6707
|
elsif ['base-appliances-gas.xml'].include? hpxml_file
|
6444
6708
|
hpxml.cooking_ranges[0].fuel_type = HPXML::FuelTypeNaturalGas
|
6445
6709
|
hpxml.cooking_ranges[0].is_induction = false
|
@@ -6460,10 +6724,9 @@ def set_hpxml_cooking_range(hpxml_file, hpxml)
|
|
6460
6724
|
elsif ['base-enclosure-garage.xml',
|
6461
6725
|
'invalid_files/cooking-range-location.xml'].include? hpxml_file
|
6462
6726
|
hpxml.cooking_ranges[0].location = HPXML::LocationGarage
|
6463
|
-
elsif ['invalid_files/appliances-location-unconditioned-space.xml'].include? hpxml_file
|
6464
|
-
hpxml.cooking_ranges[0].location = 'unconditioned space'
|
6465
6727
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6466
6728
|
hpxml.cooking_ranges[0].is_induction = nil
|
6729
|
+
hpxml.cooking_ranges[0].location = nil
|
6467
6730
|
elsif ['base-misc-usage-multiplier.xml'].include? hpxml_file
|
6468
6731
|
hpxml.cooking_ranges[0].usage_multiplier = 0.9
|
6469
6732
|
elsif ['base-misc-loads-large-uncommon.xml'].include? hpxml_file
|
@@ -6537,7 +6800,7 @@ def set_hpxml_ceiling_fans(hpxml_file, hpxml)
|
|
6537
6800
|
if ['base-lighting-ceiling-fans.xml'].include? hpxml_file
|
6538
6801
|
hpxml.ceiling_fans.add(id: 'CeilingFan',
|
6539
6802
|
efficiency: 100,
|
6540
|
-
quantity:
|
6803
|
+
quantity: 4)
|
6541
6804
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6542
6805
|
hpxml.ceiling_fans.add(id: 'CeilingFan',
|
6543
6806
|
efficiency: nil,
|
@@ -6614,9 +6877,9 @@ def set_hpxml_lighting_schedule(hpxml_file, hpxml)
|
|
6614
6877
|
hpxml.lighting.holiday_exists = true
|
6615
6878
|
hpxml.lighting.holiday_kwh_per_day = 1.1
|
6616
6879
|
hpxml.lighting.holiday_period_begin_month = 11
|
6617
|
-
hpxml.lighting.
|
6880
|
+
hpxml.lighting.holiday_period_begin_day = 24
|
6618
6881
|
hpxml.lighting.holiday_period_end_month = 1
|
6619
|
-
hpxml.lighting.
|
6882
|
+
hpxml.lighting.holiday_period_end_day = 6
|
6620
6883
|
hpxml.lighting.holiday_weekday_fractions = '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019'
|
6621
6884
|
hpxml.lighting.holiday_weekend_fractions = '0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.008, 0.098, 0.168, 0.194, 0.284, 0.192, 0.037, 0.019'
|
6622
6885
|
end
|
@@ -6628,11 +6891,8 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
|
|
6628
6891
|
hpxml.plug_loads.add(id: 'PlugLoadMisc',
|
6629
6892
|
plug_load_type: HPXML::PlugLoadTypeOther,
|
6630
6893
|
kWh_per_year: 7302,
|
6631
|
-
frac_sensible: 0.
|
6632
|
-
frac_latent: 0.
|
6633
|
-
hpxml.plug_loads.add(id: 'PlugLoadMisc2',
|
6634
|
-
plug_load_type: HPXML::PlugLoadTypeTelevision,
|
6635
|
-
kWh_per_year: 0)
|
6894
|
+
frac_sensible: 0.822,
|
6895
|
+
frac_latent: 0.178)
|
6636
6896
|
elsif ['ASHRAE_Standard_140/L170AC.xml',
|
6637
6897
|
'ASHRAE_Standard_140/L170AL.xml'].include? hpxml_file
|
6638
6898
|
hpxml.plug_loads[0].kWh_per_year = 0
|
@@ -6658,9 +6918,6 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
|
|
6658
6918
|
hpxml.plug_loads.add(id: 'PlugLoadMisc',
|
6659
6919
|
plug_load_type: HPXML::PlugLoadTypeOther,
|
6660
6920
|
kWh_per_year: 0)
|
6661
|
-
hpxml.plug_loads.add(id: 'PlugLoadMisc2',
|
6662
|
-
plug_load_type: HPXML::PlugLoadTypeTelevision,
|
6663
|
-
kWh_per_year: 0)
|
6664
6921
|
elsif ['base-misc-loads-large-uncommon.xml'].include? hpxml_file
|
6665
6922
|
hpxml.plug_loads[0].weekday_fractions = '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036'
|
6666
6923
|
hpxml.plug_loads[0].weekend_fractions = '0.035, 0.033, 0.032, 0.031, 0.032, 0.033, 0.037, 0.042, 0.043, 0.043, 0.043, 0.044, 0.045, 0.045, 0.044, 0.046, 0.048, 0.052, 0.053, 0.05, 0.047, 0.045, 0.04, 0.036'
|
@@ -6669,14 +6926,12 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
|
|
6669
6926
|
hpxml.plug_loads[1].weekend_fractions = '0.045, 0.019, 0.01, 0.001, 0.001, 0.001, 0.005, 0.009, 0.018, 0.026, 0.032, 0.038, 0.04, 0.041, 0.043, 0.045, 0.05, 0.055, 0.07, 0.085, 0.097, 0.108, 0.089, 0.07'
|
6670
6927
|
hpxml.plug_loads[1].monthly_multipliers = '1.137, 1.129, 0.961, 0.969, 0.961, 0.993, 0.996, 0.96, 0.993, 0.867, 0.86, 1.137'
|
6671
6928
|
hpxml.plug_loads.add(id: 'PlugLoadMisc3',
|
6672
|
-
location: HPXML::LocationExterior,
|
6673
6929
|
plug_load_type: HPXML::PlugLoadTypeElectricVehicleCharging,
|
6674
6930
|
kWh_per_year: 1500,
|
6675
6931
|
weekday_fractions: '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042',
|
6676
6932
|
weekend_fractions: '0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042, 0.042',
|
6677
6933
|
monthly_multipliers: '1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1')
|
6678
6934
|
hpxml.plug_loads.add(id: 'PlugLoadMisc4',
|
6679
|
-
location: HPXML::LocationExterior,
|
6680
6935
|
plug_load_type: HPXML::PlugLoadTypeWellPump,
|
6681
6936
|
kWh_per_year: 475,
|
6682
6937
|
weekday_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
|
@@ -6696,14 +6951,13 @@ def set_hpxml_plug_loads(hpxml_file, hpxml)
|
|
6696
6951
|
end
|
6697
6952
|
end
|
6698
6953
|
if hpxml_file.include?('ASHRAE_Standard_140')
|
6699
|
-
hpxml.plug_loads[0].weekday_fractions = '0.
|
6700
|
-
hpxml.plug_loads[0].weekend_fractions = '0.
|
6954
|
+
hpxml.plug_loads[0].weekday_fractions = '0.0203, 0.0203, 0.0203, 0.0203, 0.0203, 0.0339, 0.0426, 0.0852, 0.0497, 0.0304, 0.0304, 0.0406, 0.0304, 0.0254, 0.0264, 0.0264, 0.0386, 0.0416, 0.0447, 0.0700, 0.0700, 0.0731, 0.0731, 0.0660'
|
6955
|
+
hpxml.plug_loads[0].weekend_fractions = '0.0203, 0.0203, 0.0203, 0.0203, 0.0203, 0.0339, 0.0426, 0.0852, 0.0497, 0.0304, 0.0304, 0.0406, 0.0304, 0.0254, 0.0264, 0.0264, 0.0386, 0.0416, 0.0447, 0.0700, 0.0700, 0.0731, 0.0731, 0.0660'
|
6701
6956
|
hpxml.plug_loads[0].monthly_multipliers = '1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0'
|
6702
6957
|
elsif ['base-misc-defaults.xml'].include? hpxml_file
|
6703
6958
|
hpxml.plug_loads[0].weekday_fractions = nil
|
6704
6959
|
hpxml.plug_loads[0].weekend_fractions = nil
|
6705
6960
|
hpxml.plug_loads[0].monthly_multipliers = nil
|
6706
|
-
hpxml.plug_loads[0].location = nil
|
6707
6961
|
end
|
6708
6962
|
end
|
6709
6963
|
|
@@ -6711,7 +6965,6 @@ def set_hpxml_fuel_loads(hpxml_file, hpxml)
|
|
6711
6965
|
if ['base-misc-loads-large-uncommon.xml',
|
6712
6966
|
'base-misc-usage-multiplier.xml'].include? hpxml_file
|
6713
6967
|
hpxml.fuel_loads.add(id: 'FuelLoadMisc',
|
6714
|
-
location: HPXML::LocationExterior,
|
6715
6968
|
fuel_load_type: HPXML::FuelLoadTypeGrill,
|
6716
6969
|
fuel_type: HPXML::FuelTypePropane,
|
6717
6970
|
therm_per_year: 25,
|
@@ -6726,9 +6979,10 @@ def set_hpxml_fuel_loads(hpxml_file, hpxml)
|
|
6726
6979
|
weekend_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
|
6727
6980
|
monthly_multipliers: '1.154, 1.161, 1.013, 1.010, 1.013, 0.888, 0.883, 0.883, 0.888, 0.978, 0.974, 1.154')
|
6728
6981
|
hpxml.fuel_loads.add(id: 'FuelLoadMisc3',
|
6729
|
-
location: HPXML::LocationInterior,
|
6730
6982
|
fuel_load_type: HPXML::FuelLoadTypeFireplace,
|
6731
6983
|
fuel_type: HPXML::FuelTypeWoodCord,
|
6984
|
+
frac_sensible: 0.5,
|
6985
|
+
frac_latent: 0.1,
|
6732
6986
|
therm_per_year: 55,
|
6733
6987
|
weekday_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
|
6734
6988
|
weekend_fractions: '0.044, 0.023, 0.019, 0.015, 0.016, 0.018, 0.026, 0.033, 0.033, 0.032, 0.033, 0.033, 0.032, 0.032, 0.032, 0.033, 0.045, 0.057, 0.066, 0.076, 0.081, 0.086, 0.075, 0.065',
|
@@ -6763,6 +7017,205 @@ def download_epws
|
|
6763
7017
|
exit!
|
6764
7018
|
end
|
6765
7019
|
|
7020
|
+
def get_elements_from_sample_files(hpxml_docs)
|
7021
|
+
elements_being_used = []
|
7022
|
+
hpxml_docs.each do |xml, hpxml_doc|
|
7023
|
+
root = XMLHelper.get_element(hpxml_doc, '/HPXML')
|
7024
|
+
root.each_node do |node|
|
7025
|
+
next unless node.is_a?(Oga::XML::Element)
|
7026
|
+
|
7027
|
+
ancestors = []
|
7028
|
+
node.each_ancestor do |parent_node|
|
7029
|
+
ancestors << ['h:', parent_node.name].join()
|
7030
|
+
end
|
7031
|
+
parent_element_xpath = ancestors.reverse
|
7032
|
+
child_element_xpath = ['h:', node.name].join()
|
7033
|
+
element_xpath = [parent_element_xpath, child_element_xpath].join('/')
|
7034
|
+
|
7035
|
+
next if element_xpath.include? 'extension'
|
7036
|
+
|
7037
|
+
elements_being_used << element_xpath if not elements_being_used.include? element_xpath
|
7038
|
+
end
|
7039
|
+
end
|
7040
|
+
|
7041
|
+
return elements_being_used
|
7042
|
+
end
|
7043
|
+
|
7044
|
+
def create_schematron_hpxml_validator(hpxml_docs)
|
7045
|
+
elements_in_sample_files = get_elements_from_sample_files(hpxml_docs)
|
7046
|
+
|
7047
|
+
base_elements_xsd = File.read(File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio', 'resources', 'BaseElements.xsd'))
|
7048
|
+
base_elements_xsd_doc = Oga.parse_xml(base_elements_xsd)
|
7049
|
+
|
7050
|
+
# construct dictionary for enumerations and min/max values of HPXML data types
|
7051
|
+
hpxml_data_types_xsd = File.read(File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio', 'resources', 'HPXMLDataTypes.xsd'))
|
7052
|
+
hpxml_data_types_xsd_doc = Oga.parse_xml(hpxml_data_types_xsd)
|
7053
|
+
hpxml_data_types_dict = {}
|
7054
|
+
hpxml_data_types_xsd_doc.xpath('//xs:simpleType | //xs:complexType').each do |simple_type_element|
|
7055
|
+
enums = []
|
7056
|
+
simple_type_element.xpath('xs:restriction/xs:enumeration').each do |enum|
|
7057
|
+
enums << enum.get('value')
|
7058
|
+
end
|
7059
|
+
minInclusive_element = simple_type_element.at_xpath('xs:restriction/xs:minInclusive')
|
7060
|
+
min_inclusive = minInclusive_element.get('value') if not minInclusive_element.nil?
|
7061
|
+
maxInclusive_element = simple_type_element.at_xpath('xs:restriction/xs:maxInclusive')
|
7062
|
+
max_inclusive = maxInclusive_element.get('value') if not maxInclusive_element.nil?
|
7063
|
+
minExclusive_element = simple_type_element.at_xpath('xs:restriction/xs:minExclusive')
|
7064
|
+
min_exclusive = minExclusive_element.get('value') if not minExclusive_element.nil?
|
7065
|
+
maxExclusive_element = simple_type_element.at_xpath('xs:restriction/xs:maxExclusive')
|
7066
|
+
max_exclusive = maxExclusive_element.get('value') if not maxExclusive_element.nil?
|
7067
|
+
|
7068
|
+
simple_type_element_name = simple_type_element.get('name')
|
7069
|
+
hpxml_data_types_dict[simple_type_element_name] = {}
|
7070
|
+
hpxml_data_types_dict[simple_type_element_name][:enums] = enums
|
7071
|
+
hpxml_data_types_dict[simple_type_element_name][:min_inclusive] = min_inclusive
|
7072
|
+
hpxml_data_types_dict[simple_type_element_name][:max_inclusive] = max_inclusive
|
7073
|
+
hpxml_data_types_dict[simple_type_element_name][:min_exclusive] = min_exclusive
|
7074
|
+
hpxml_data_types_dict[simple_type_element_name][:max_exclusive] = max_exclusive
|
7075
|
+
end
|
7076
|
+
|
7077
|
+
# construct HPXMLvalidator.xml
|
7078
|
+
hpxml_validator = XMLHelper.create_doc(version = '1.0', encoding = 'UTF-8')
|
7079
|
+
root = XMLHelper.add_element(hpxml_validator, 'sch:schema')
|
7080
|
+
XMLHelper.add_attribute(root, 'xmlns:sch', 'http://purl.oclc.org/dsdl/schematron')
|
7081
|
+
XMLHelper.add_element(root, 'sch:title', 'HPXML Schematron Validator: HPXML.xsd', :string)
|
7082
|
+
name_space = XMLHelper.add_element(root, 'sch:ns')
|
7083
|
+
XMLHelper.add_attribute(name_space, 'uri', 'http://hpxmlonline.com/2019/10')
|
7084
|
+
XMLHelper.add_attribute(name_space, 'prefix', 'h')
|
7085
|
+
pattern = XMLHelper.add_element(root, 'sch:pattern')
|
7086
|
+
|
7087
|
+
# construct complexType and group elements dictionary
|
7088
|
+
complex_type_or_group_dict = {}
|
7089
|
+
['//xs:complexType', '//xs:group', '//xs:element'].each do |param|
|
7090
|
+
base_elements_xsd_doc.xpath(param).each do |param_type|
|
7091
|
+
next if param_type.name == 'element' && (not ['XMLTransactionHeaderInformation', 'ProjectStatus', 'SoftwareInfo'].include?(param_type.get('name')))
|
7092
|
+
next if param_type.get('name').nil?
|
7093
|
+
|
7094
|
+
param_type_name = param_type.get('name')
|
7095
|
+
complex_type_or_group_dict[param_type_name] = {}
|
7096
|
+
|
7097
|
+
param_type.each_node do |element|
|
7098
|
+
next unless element.is_a? Oga::XML::Element
|
7099
|
+
next unless (element.name == 'element' || element.name == 'group')
|
7100
|
+
next if element.name == 'element' && (element.get('name').nil? && element.get('ref').nil?)
|
7101
|
+
next if element.name == 'group' && element.get('ref').nil?
|
7102
|
+
|
7103
|
+
ancestors = []
|
7104
|
+
element.each_ancestor do |node|
|
7105
|
+
next if node.get('name').nil?
|
7106
|
+
next if node.get('name') == param_type.get('name') # exclude complexType name from element xpath
|
7107
|
+
|
7108
|
+
ancestors << node.get('name')
|
7109
|
+
end
|
7110
|
+
|
7111
|
+
parent_element_names = ancestors.reverse
|
7112
|
+
if element.name == 'element'
|
7113
|
+
child_element_name = element.get('name')
|
7114
|
+
child_element_name = element.get('ref') if child_element_name.nil? # Backup
|
7115
|
+
element_type = element.get('type')
|
7116
|
+
element_type = element.get('ref') if element_type.nil? # Backup
|
7117
|
+
elsif element.name == 'group'
|
7118
|
+
child_element_name = nil # exclude group name from the element's xpath
|
7119
|
+
element_type = element.get('ref')
|
7120
|
+
end
|
7121
|
+
element_xpath = parent_element_names.push(child_element_name)
|
7122
|
+
complex_type_or_group_dict[param_type_name][element_xpath] = element_type
|
7123
|
+
end
|
7124
|
+
end
|
7125
|
+
end
|
7126
|
+
|
7127
|
+
element_xpaths = {}
|
7128
|
+
top_level_elements_of_interest = elements_in_sample_files.map { |e| e.split('/')[1].gsub('h:', '') }.uniq
|
7129
|
+
top_level_elements_of_interest.each do |element|
|
7130
|
+
top_level_element = []
|
7131
|
+
top_level_element << element
|
7132
|
+
top_level_element_type = element
|
7133
|
+
get_element_full_xpaths(element_xpaths, complex_type_or_group_dict, top_level_element, top_level_element_type)
|
7134
|
+
end
|
7135
|
+
|
7136
|
+
# Add enumeration and min/max numeric values
|
7137
|
+
rules = {}
|
7138
|
+
element_xpaths.each do |element_xpath, element_type|
|
7139
|
+
next if element_type.nil?
|
7140
|
+
|
7141
|
+
# Skip element xpaths not being used in sample files
|
7142
|
+
element_xpath_with_prefix = element_xpath.compact.map { |e| "h:#{e}" }
|
7143
|
+
context_xpath = element_xpath_with_prefix.join('/').chomp('/')
|
7144
|
+
next unless elements_in_sample_files.any? { |item| item.include? context_xpath }
|
7145
|
+
|
7146
|
+
hpxml_data_type_name = [element_type, '_simple'].join() # FUTURE: This may need to be improved later since enumeration and minimum/maximum values cannot be guaranteed to always be placed within simpleType.
|
7147
|
+
hpxml_data_type = hpxml_data_types_dict[hpxml_data_type_name]
|
7148
|
+
hpxml_data_type = hpxml_data_types_dict[element_type] if hpxml_data_type.nil? # Backup
|
7149
|
+
if hpxml_data_type.nil?
|
7150
|
+
fail "Could not find data type name for '#{element_type}'."
|
7151
|
+
end
|
7152
|
+
|
7153
|
+
next if hpxml_data_type[:enums].empty? && hpxml_data_type[:min_inclusive].nil? && hpxml_data_type[:max_inclusive].nil? && hpxml_data_type[:min_exclusive].nil? && hpxml_data_type[:max_exclusive].nil?
|
7154
|
+
|
7155
|
+
element_name = context_xpath.split('/')[-1]
|
7156
|
+
context_xpath = context_xpath.split('/')[0..-2].join('/').chomp('/').prepend('/h:HPXML/')
|
7157
|
+
rule = rules[context_xpath]
|
7158
|
+
if rule.nil?
|
7159
|
+
# Need new rule
|
7160
|
+
rule = XMLHelper.add_element(pattern, 'sch:rule')
|
7161
|
+
XMLHelper.add_attribute(rule, 'context', context_xpath)
|
7162
|
+
rules[context_xpath] = rule
|
7163
|
+
end
|
7164
|
+
|
7165
|
+
if not hpxml_data_type[:enums].empty?
|
7166
|
+
assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected #{element_name.gsub('h:', '')} to be \"#{hpxml_data_type[:enums].join('" or "')}\"", :string)
|
7167
|
+
XMLHelper.add_attribute(assertion, 'role', 'ERROR')
|
7168
|
+
XMLHelper.add_attribute(assertion, 'test', "#{element_name}[#{hpxml_data_type[:enums].map { |e| "text()=\"#{e}\"" }.join(' or ')}] or not(#{element_name})")
|
7169
|
+
else
|
7170
|
+
if hpxml_data_type[:min_inclusive]
|
7171
|
+
assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected #{element_name.gsub('h:', '')} to be greater than or equal to #{hpxml_data_type[:min_inclusive]}", :string)
|
7172
|
+
XMLHelper.add_attribute(assertion, 'role', 'ERROR')
|
7173
|
+
XMLHelper.add_attribute(assertion, 'test', "number(#{element_name}) >= #{hpxml_data_type[:min_inclusive]} or not(#{element_name})")
|
7174
|
+
end
|
7175
|
+
if hpxml_data_type[:max_inclusive]
|
7176
|
+
assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected #{element_name.gsub('h:', '')} to be less than or equal to #{hpxml_data_type[:max_inclusive]}", :string)
|
7177
|
+
XMLHelper.add_attribute(assertion, 'role', 'ERROR')
|
7178
|
+
XMLHelper.add_attribute(assertion, 'test', "number(#{element_name}) <= #{hpxml_data_type[:max_inclusive]} or not(#{element_name})")
|
7179
|
+
end
|
7180
|
+
if hpxml_data_type[:min_exclusive]
|
7181
|
+
assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected #{element_name.gsub('h:', '')} to be greater than #{hpxml_data_type[:min_exclusive]}", :string)
|
7182
|
+
XMLHelper.add_attribute(assertion, 'role', 'ERROR')
|
7183
|
+
XMLHelper.add_attribute(assertion, 'test', "number(#{element_name}) > #{hpxml_data_type[:min_exclusive]} or not(#{element_name})")
|
7184
|
+
end
|
7185
|
+
if hpxml_data_type[:max_exclusive]
|
7186
|
+
assertion = XMLHelper.add_element(rule, 'sch:assert', "Expected #{element_name.gsub('h:', '')} to be less than #{hpxml_data_type[:max_exclusive]}", :string)
|
7187
|
+
XMLHelper.add_attribute(assertion, 'role', 'ERROR')
|
7188
|
+
XMLHelper.add_attribute(assertion, 'test', "number(#{element_name}) < #{hpxml_data_type[:max_exclusive]} or not(#{element_name})")
|
7189
|
+
end
|
7190
|
+
end
|
7191
|
+
end
|
7192
|
+
|
7193
|
+
XMLHelper.write_file(hpxml_validator, File.join(File.dirname(__FILE__), 'HPXMLtoOpenStudio', 'resources', 'HPXMLvalidator.xml'))
|
7194
|
+
end
|
7195
|
+
|
7196
|
+
def get_element_full_xpaths(element_xpaths, complex_type_or_group_dict, element_xpath, element_type)
|
7197
|
+
if not complex_type_or_group_dict.keys.include? element_type
|
7198
|
+
return element_xpaths[element_xpath] = element_type
|
7199
|
+
else
|
7200
|
+
complex_type_or_group = deep_copy_object(complex_type_or_group_dict[element_type])
|
7201
|
+
complex_type_or_group.each do |k, v|
|
7202
|
+
child_element_xpath = k.unshift(element_xpath).flatten!
|
7203
|
+
child_element_type = v
|
7204
|
+
|
7205
|
+
if not complex_type_or_group_dict.keys.include? child_element_type
|
7206
|
+
element_xpaths[child_element_xpath] = child_element_type
|
7207
|
+
next
|
7208
|
+
end
|
7209
|
+
|
7210
|
+
get_element_full_xpaths(element_xpaths, complex_type_or_group_dict, child_element_xpath, child_element_type)
|
7211
|
+
end
|
7212
|
+
end
|
7213
|
+
end
|
7214
|
+
|
7215
|
+
def deep_copy_object(obj)
|
7216
|
+
return Marshal.load(Marshal.dump(obj))
|
7217
|
+
end
|
7218
|
+
|
6766
7219
|
command_list = [:update_measures, :cache_weather, :create_release_zips, :download_weather]
|
6767
7220
|
|
6768
7221
|
def display_usage(command_list)
|
@@ -6788,8 +7241,15 @@ if ARGV[0].to_sym == :update_measures
|
|
6788
7241
|
ENV['HOME'] = 'C:' if !ENV['HOME'].nil? && ENV['HOME'].start_with?('U:')
|
6789
7242
|
ENV['HOMEDRIVE'] = 'C:\\' if !ENV['HOMEDRIVE'].nil? && ENV['HOMEDRIVE'].start_with?('U:')
|
6790
7243
|
|
6791
|
-
|
6792
|
-
|
7244
|
+
# Create sample/test OSWs
|
7245
|
+
create_osws()
|
7246
|
+
|
7247
|
+
# Create sample/test HPXMLs
|
7248
|
+
hpxml_docs = create_hpxmls()
|
7249
|
+
|
7250
|
+
# Create Schematron file that reflects HPXML schema
|
7251
|
+
puts 'Generating HPXMLvalidator.xml...'
|
7252
|
+
create_schematron_hpxml_validator(hpxml_docs)
|
6793
7253
|
|
6794
7254
|
# Apply rubocop
|
6795
7255
|
cops = ['Layout',
|
@@ -6847,17 +7307,21 @@ if ARGV[0].to_sym == :download_weather
|
|
6847
7307
|
end
|
6848
7308
|
|
6849
7309
|
if ARGV[0].to_sym == :create_release_zips
|
6850
|
-
|
6851
|
-
|
6852
|
-
|
7310
|
+
require_relative 'HPXMLtoOpenStudio/resources/version'
|
7311
|
+
|
7312
|
+
release_map = { File.join(File.dirname(__FILE__), "OpenStudio-HPXML-v#{Version::OS_HPXML_Version}-minimal.zip") => false,
|
7313
|
+
File.join(File.dirname(__FILE__), "OpenStudio-HPXML-v#{Version::OS_HPXML_Version}-full.zip") => true }
|
7314
|
+
|
7315
|
+
release_map.keys.each do |zip_path|
|
7316
|
+
File.delete(zip_path) if File.exist? zip_path
|
7317
|
+
end
|
7318
|
+
|
7319
|
+
# Only include files under git version control
|
7320
|
+
command = 'git ls-files'
|
6853
7321
|
begin
|
6854
|
-
`#{command}`
|
6855
|
-
if not File.exist? File.join(File.dirname(__FILE__), 'documentation', 'index.html')
|
6856
|
-
puts 'Documentation was not successfully generated. Aborting...'
|
6857
|
-
exit!
|
6858
|
-
end
|
7322
|
+
git_files = `#{command}`
|
6859
7323
|
rescue
|
6860
|
-
puts "Command failed: '#{command}'. Perhaps
|
7324
|
+
puts "Command failed: '#{command}'. Perhaps git needs to be installed?"
|
6861
7325
|
exit!
|
6862
7326
|
end
|
6863
7327
|
|
@@ -6865,50 +7329,69 @@ if ARGV[0].to_sym == :create_release_zips
|
|
6865
7329
|
'HPXMLtoOpenStudio/resources/*.*',
|
6866
7330
|
'SimulationOutputReport/measure.*',
|
6867
7331
|
'SimulationOutputReport/resources/*.*',
|
7332
|
+
'BuildResidentialHPXML/measure.*',
|
7333
|
+
'BuildResidentialHPXML/resources/*.*',
|
6868
7334
|
'weather/*.*',
|
6869
7335
|
'workflow/*.*',
|
6870
7336
|
'workflow/sample_files/*.xml',
|
7337
|
+
'workflow/tests/*.rb',
|
7338
|
+
'workflow/tests/ASHRAE_Standard_140/*.xml',
|
6871
7339
|
'documentation/index.html',
|
6872
7340
|
'documentation/_static/**/*.*']
|
6873
7341
|
|
6874
|
-
|
6875
|
-
|
6876
|
-
|
6877
|
-
|
6878
|
-
|
6879
|
-
|
6880
|
-
|
6881
|
-
|
6882
|
-
|
6883
|
-
|
6884
|
-
|
7342
|
+
if not ENV['CI']
|
7343
|
+
# Run ASHRAE 140 files
|
7344
|
+
puts 'Running ASHRAE 140 tests (this will take a minute)...'
|
7345
|
+
command = "#{OpenStudio.getOpenStudioCLI} workflow/tests/hpxml_translator_test.rb --name=test_ashrae_140 > log.txt"
|
7346
|
+
system(command)
|
7347
|
+
results_csv_path = 'workflow/tests/results/results_ashrae_140.csv'
|
7348
|
+
if not File.exist? results_csv_path
|
7349
|
+
puts 'ASHRAE 140 results CSV file not generated. Aborting...'
|
7350
|
+
exit!
|
7351
|
+
end
|
7352
|
+
File.delete('log.txt')
|
6885
7353
|
|
6886
|
-
|
6887
|
-
|
6888
|
-
|
7354
|
+
# Generate documentation
|
7355
|
+
puts 'Generating documentation...'
|
7356
|
+
command = 'sphinx-build -b singlehtml docs/source documentation'
|
7357
|
+
begin
|
7358
|
+
`#{command}`
|
7359
|
+
if not File.exist? File.join(File.dirname(__FILE__), 'documentation', 'index.html')
|
7360
|
+
puts 'Documentation was not successfully generated. Aborting...'
|
7361
|
+
exit!
|
7362
|
+
end
|
7363
|
+
rescue
|
7364
|
+
puts "Command failed: '#{command}'. Perhaps sphinx needs to be installed?"
|
7365
|
+
exit!
|
7366
|
+
end
|
7367
|
+
FileUtils.rm_r(File.join(File.dirname(__FILE__), 'documentation', '_static', 'fonts'))
|
6889
7368
|
|
6890
|
-
|
6891
|
-
|
6892
|
-
|
6893
|
-
|
6894
|
-
|
6895
|
-
|
7369
|
+
# Check if we need to download weather files for the full release zip
|
7370
|
+
num_epws_expected = 1011
|
7371
|
+
num_epws_local = 0
|
7372
|
+
files.each do |f|
|
7373
|
+
Dir[f].each do |file|
|
7374
|
+
next unless file.end_with? '.epw'
|
6896
7375
|
|
6897
|
-
|
7376
|
+
num_epws_local += 1
|
7377
|
+
end
|
6898
7378
|
end
|
6899
|
-
end
|
6900
7379
|
|
6901
|
-
|
6902
|
-
|
6903
|
-
|
6904
|
-
|
6905
|
-
|
7380
|
+
# Make sure we have the full set of weather files
|
7381
|
+
if num_epws_local < num_epws_expected
|
7382
|
+
puts 'Fetching all weather files...'
|
7383
|
+
command = "#{OpenStudio.getOpenStudioCLI} #{__FILE__} download_weather"
|
7384
|
+
log = `#{command}`
|
7385
|
+
end
|
6906
7386
|
end
|
6907
7387
|
|
6908
7388
|
# Create zip files
|
6909
7389
|
release_map.each do |zip_path, include_all_epws|
|
6910
7390
|
puts "Creating #{zip_path}..."
|
6911
7391
|
zip = OpenStudio::ZipFile.new(zip_path, false)
|
7392
|
+
if not ENV['CI']
|
7393
|
+
zip.addFile(results_csv_path, File.join('OpenStudio-HPXML', results_csv_path))
|
7394
|
+
end
|
6912
7395
|
files.each do |f|
|
6913
7396
|
Dir[f].each do |file|
|
6914
7397
|
if file.start_with? 'documentation'
|
@@ -6930,7 +7413,9 @@ if ARGV[0].to_sym == :create_release_zips
|
|
6930
7413
|
end
|
6931
7414
|
|
6932
7415
|
# Cleanup
|
6933
|
-
|
7416
|
+
if not ENV['CI']
|
7417
|
+
FileUtils.rm_r(File.join(File.dirname(__FILE__), 'documentation'))
|
7418
|
+
end
|
6934
7419
|
|
6935
7420
|
puts 'Done.'
|
6936
7421
|
end
|