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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e2bd8a0e017ea6ee23ba2e879c2a907119cb5423bd2e39523e1a82ef5de86a9
|
4
|
+
data.tar.gz: ee8255001d28b3975c512e507685f78d139e0d2d2ad5f38aa55d41a5c1b1b5f4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4afe5bea5d1344209273015af0d7ac1d9ddaf59daec4ae1faeb47019e31ce8262201542ae1ce8f6db805c5fce1471730526b34d1dc46c0bbc0cfe7c8699c86f1
|
7
|
+
data.tar.gz: 97ab90105e0e4536c388e36846bfec5b268754813b2361628ae134a80b4b30d229d852d7f15c885900c4aa182a3fec7d5da9cb9ec2610acad0db287df87ed440
|
data/CHANGELOG.md
CHANGED
data/CMakeLists.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
cmake_minimum_required(VERSION 3.10.2)
|
2
2
|
cmake_policy(SET CMP0048 NEW)
|
3
3
|
|
4
|
-
project(UrbanOptCLI VERSION 0.
|
4
|
+
project(UrbanOptCLI VERSION 0.4.1)
|
5
5
|
|
6
6
|
include(FindOpenStudioSDK.cmake)
|
7
7
|
|
@@ -89,16 +89,16 @@ option(BUILD_PACKAGE "Build package" OFF)
|
|
89
89
|
# need to update the MD5sum for each platform and url below
|
90
90
|
if(UNIX)
|
91
91
|
if(APPLE)
|
92
|
-
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-
|
93
|
-
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "
|
92
|
+
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20201119-darwin.tar.gz")
|
93
|
+
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "950d0725f8cddd5c31df94b0357e3125")
|
94
94
|
else()
|
95
|
-
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-
|
96
|
-
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "
|
95
|
+
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20201123-linux.tar.gz")
|
96
|
+
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "596fc8b2383baa2dd9e0bf81644c8593")
|
97
97
|
endif()
|
98
98
|
elseif(WIN32)
|
99
99
|
if(CMAKE_CL_64)
|
100
|
-
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-
|
101
|
-
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "
|
100
|
+
set(URBANOPT_CLI_GEMS_ZIP_FILENAME "urbanopt-cli-gems-20201119-windows.tar.gz")
|
101
|
+
set(URBANOPT_CLI_GEMS_ZIP_EXPECTED_MD5 "f6af2bbfee964d46f756c55e9f74ce84")
|
102
102
|
endif()
|
103
103
|
endif()
|
104
104
|
|
@@ -133,7 +133,7 @@ if(UNIX)
|
|
133
133
|
endif()
|
134
134
|
elseif(WIN32)
|
135
135
|
set(RUBY_ZIP_FILENAME "ruby-2.5.1-win32.tar.gz")
|
136
|
-
set(RUBY_ZIP_EXPECTED_MD5 "
|
136
|
+
set(RUBY_ZIP_EXPECTED_MD5 "96495c32f5933250663df7561fdd6226")
|
137
137
|
endif()
|
138
138
|
|
139
139
|
set(RUBY_ZIP_LOCAL_PATH "${PROJECT_BINARY_DIR}/${RUBY_ZIP_FILENAME}")
|
@@ -212,7 +212,7 @@ elseif(UNIX)
|
|
212
212
|
|
213
213
|
# These two will set the .deb install path correctly
|
214
214
|
# ubuntu (18.04) uses libqdbm14
|
215
|
-
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqdbm14")
|
215
|
+
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqdbm14,sqlite3")
|
216
216
|
set(CPACK_SET_DESTDIR ON)
|
217
217
|
set(CPACK_INSTALL_PREFIX /usr/local/urbanopt-cli-${URBANOPT_CLI_VERSION})
|
218
218
|
|
data/Gemfile
CHANGED
@@ -34,33 +34,31 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
|
|
34
34
|
# end
|
35
35
|
|
36
36
|
# if allow_local && File.exist?('../urbanopt-scenario-gem')
|
37
|
-
|
37
|
+
# gem 'urbanopt-scenario', path: '../urbanopt-scenario-gem'
|
38
38
|
# elsif allow_local
|
39
|
-
#
|
39
|
+
# gem 'urbanopt-scenario', github: 'URBANopt/urbanopt-scenario-gem', branch: 'develop'
|
40
40
|
# end
|
41
41
|
|
42
42
|
# if allow_local && File.exist?('../urbanopt-geojson-gem')
|
43
43
|
# gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
|
44
44
|
# elsif allow_local
|
45
|
-
#
|
45
|
+
# gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
|
46
46
|
# end
|
47
47
|
|
48
48
|
# if allow_local && File.exist?('../urbanopt-reopt-gem')
|
49
49
|
# gem 'urbanopt-reopt', path: '../urbanopt-reopt-gem'
|
50
50
|
# elsif allow_local
|
51
|
-
#
|
51
|
+
# gem 'urbanopt-reopt', github: 'URBANopt/urbanopt-reopt-gem', branch: 'develop'
|
52
52
|
# end
|
53
53
|
|
54
|
-
#
|
55
|
-
#
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
# gem 'openstudio-load-flexibility-measures', '0.1.3'
|
60
|
-
# end
|
54
|
+
#if allow_local && File.exist?('../openstudio-load-flexibility-measures')
|
55
|
+
# gem 'openstudio-load-flexibility-measures', path: '../openstudio-load-flexibility-measures'
|
56
|
+
#elsif allow_local
|
57
|
+
# gem 'openstudio-load-flexibility-measures', github: 'NREL/openstudio-load-flexibility-measures-gem', branch: 'develop'
|
58
|
+
#end
|
61
59
|
|
62
60
|
# if allow_local && File.exist?('../urbanopt-reporting-gem')
|
63
61
|
# gem 'urbanopt-reporting', path: '../urbanopt-reporting-gem'
|
64
62
|
# elsif allow_local
|
65
|
-
#
|
63
|
+
# gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
|
66
64
|
# end
|
data/README.md
CHANGED
data/example_files/Gemfile
CHANGED
@@ -22,7 +22,7 @@ allow_local = ENV['FAVOR_LOCAL_GEMS']
|
|
22
22
|
# if allow_local && File.exist?('../urbanopt-core-gem')
|
23
23
|
# gem 'urbanopt-core', path: '../urbanopt-core-gem'
|
24
24
|
# elsif allow_local
|
25
|
-
#
|
25
|
+
# gem 'urbanopt-core', github: 'URBANopt/urbanopt-core-gem', branch: 'develop'
|
26
26
|
# end
|
27
27
|
#
|
28
28
|
|
@@ -31,7 +31,7 @@ if allow_local && File.exist?('../openstudio-common-measures-gem')
|
|
31
31
|
elsif allow_local
|
32
32
|
gem 'openstudio-common-measures', github: 'NREL/openstudio-common-measures-gem', branch: 'develop'
|
33
33
|
else
|
34
|
-
gem 'openstudio-common-measures', '0.2
|
34
|
+
gem 'openstudio-common-measures', '~> 0.3.2'
|
35
35
|
end
|
36
36
|
|
37
37
|
if allow_local && File.exist?('../openstudio-model-articulation-gem')
|
@@ -39,7 +39,7 @@ if allow_local && File.exist?('../openstudio-model-articulation-gem')
|
|
39
39
|
elsif allow_local
|
40
40
|
gem 'openstudio-model-articulation', github: 'NREL/openstudio-model-articulation-gem', branch: 'develop'
|
41
41
|
else
|
42
|
-
gem 'openstudio-model-articulation', '0.
|
42
|
+
gem 'openstudio-model-articulation', '~> 0.3.1'
|
43
43
|
end
|
44
44
|
|
45
45
|
if allow_local && File.exist?('../openstudio-load-flexibility-measures-gem')
|
@@ -47,21 +47,37 @@ if allow_local && File.exist?('../openstudio-load-flexibility-measures-gem')
|
|
47
47
|
elsif allow_local
|
48
48
|
gem 'openstudio-load-flexibility-measures', github: 'NREL/openstudio-load-flexibility-measures-gem', branch: 'master'
|
49
49
|
else
|
50
|
-
gem 'openstudio-load-flexibility-measures', '~> 0.1
|
50
|
+
gem 'openstudio-load-flexibility-measures', '~> 0.2.1'
|
51
51
|
end
|
52
52
|
|
53
|
-
if allow_local && File.exist?('../
|
53
|
+
if allow_local && File.exist?('../openstudio-ee-gem')
|
54
|
+
gem 'openstudio-ee', path: '../openstudio-ee-gem'
|
55
|
+
elsif allow_local
|
56
|
+
gem 'openstudio-ee', github: 'NREL/openstudio-ee-gem', branch: 'develop'
|
57
|
+
else
|
58
|
+
gem 'openstudio-ee', '~> 0.3.2'
|
59
|
+
end
|
60
|
+
|
61
|
+
if allow_local && File.exist?('../openstudio-calibration-gem')
|
62
|
+
gem 'openstudio-calibration', path: '../openstudio-calibration-gem'
|
63
|
+
elsif allow_local
|
64
|
+
gem 'openstudio-calibration', github: 'NREL/openstudio-calibration-gem', branch: 'develop'
|
65
|
+
else
|
66
|
+
gem 'openstudio-calibration', '~> 0.3.1'
|
67
|
+
end
|
68
|
+
|
69
|
+
if allow_local && File.exists?('../urbanopt-geojson-gem')
|
54
70
|
gem 'urbanopt-geojson', path: '../urbanopt-geojson-gem'
|
55
71
|
elsif allow_local
|
56
72
|
gem 'urbanopt-geojson', github: 'URBANopt/urbanopt-geojson-gem', branch: 'develop'
|
57
73
|
else
|
58
|
-
gem 'urbanopt-geojson', '~> 0.
|
74
|
+
gem 'urbanopt-geojson', '~> 0.5.0'
|
59
75
|
end
|
60
76
|
|
61
|
-
if allow_local && File.
|
62
|
-
|
77
|
+
if allow_local && File.exists?('../urbanopt-reporting-gem')
|
78
|
+
gem 'urbanopt-reporting', path: '../urbanotp-reporting-gem'
|
63
79
|
elsif allow_local
|
64
80
|
gem 'urbanopt-reporting', github: 'URBANopt/urbanopt-reporting-gem', branch: 'develop'
|
65
81
|
else
|
66
|
-
gem 'urbanopt-reporting', '~> 0.2
|
67
|
-
end
|
82
|
+
gem 'urbanopt-reporting', '~> 0.3.2'
|
83
|
+
end
|
@@ -31,6 +31,8 @@
|
|
31
31
|
require 'urbanopt/reporting'
|
32
32
|
require 'openstudio/common_measures'
|
33
33
|
require 'openstudio/model_articulation'
|
34
|
+
require 'openstudio/ee_measures'
|
35
|
+
require 'openstudio/calibration'
|
34
36
|
|
35
37
|
require 'json'
|
36
38
|
require 'rexml/document'
|
@@ -503,6 +505,13 @@ module URBANopt
|
|
503
505
|
# SCHEDULES
|
504
506
|
|
505
507
|
args[:schedules_type] = 'stochastic'
|
508
|
+
begin
|
509
|
+
schedules_random_seed = Float(feature_id)
|
510
|
+
if schedules_random_seed % 1 == 0
|
511
|
+
args[:schedules_random_seed] = Integer(schedules_random_seed)
|
512
|
+
end
|
513
|
+
rescue
|
514
|
+
end
|
506
515
|
|
507
516
|
# HVAC
|
508
517
|
|
@@ -31,6 +31,8 @@
|
|
31
31
|
require 'urbanopt/scenario'
|
32
32
|
require 'openstudio/common_measures'
|
33
33
|
require 'openstudio/model_articulation'
|
34
|
+
require 'openstudio/ee_measures'
|
35
|
+
require 'openstudio/calibration'
|
34
36
|
|
35
37
|
require 'json'
|
36
38
|
|
@@ -308,7 +310,7 @@ module URBANopt
|
|
308
310
|
|
309
311
|
# ChangeBuildingLocation
|
310
312
|
# set skip to false for change building location
|
311
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', '__SKIP__', false)
|
313
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', '__SKIP__', false,'ChangeBuildingLocation 2')
|
312
314
|
|
313
315
|
# cec climate zone takes precedence
|
314
316
|
cec_found = false
|
@@ -316,7 +318,7 @@ module URBANopt
|
|
316
318
|
cec_climate_zone = feature.cec_climate_zone
|
317
319
|
if !cec_climate_zone.empty?
|
318
320
|
cec_climate_zone = 'T24-CEC' + cec_climate_zone
|
319
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', cec_climate_zone)
|
321
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', cec_climate_zone, 'ChangeBuildingLocation 2')
|
320
322
|
cec_found = true
|
321
323
|
# Temporary fix for CEC climate zone:
|
322
324
|
cec_modified_zone = 'CEC ' + cec_climate_zone
|
@@ -329,7 +331,7 @@ module URBANopt
|
|
329
331
|
climate_zone = feature.climate_zone
|
330
332
|
if !climate_zone.empty?
|
331
333
|
climate_zone = 'ASHRAE 169-2013-' + climate_zone
|
332
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', climate_zone)
|
334
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', climate_zone, 'ChangeBuildingLocation 2')
|
333
335
|
end
|
334
336
|
rescue StandardError
|
335
337
|
end
|
@@ -339,7 +341,7 @@ module URBANopt
|
|
339
341
|
begin
|
340
342
|
weather_filename = feature.weather_filename
|
341
343
|
if !feature.weather_filename.nil? && !feature.weather_filename.empty?
|
342
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', weather_filename)
|
344
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', weather_filename, 'ChangeBuildingLocation 2')
|
343
345
|
puts "Setting weather_file_name to #{weather_filename} as specified in the FeatureFile"
|
344
346
|
end
|
345
347
|
rescue StandardError
|
@@ -347,7 +349,7 @@ module URBANopt
|
|
347
349
|
epw_file_path = Dir.glob(File.join(File.dirname(__FILE__), '../weather/*.epw'))[0]
|
348
350
|
if !epw_file_path.nil? && !epw_file_path.empty?
|
349
351
|
epw_file_name = File.basename(epw_file_path)
|
350
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', epw_file_name)
|
352
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', epw_file_name, 'ChangeBuildingLocation 2')
|
351
353
|
puts "Setting weather_file_name to first epw file found in the weather folder: #{epw_file_name}"
|
352
354
|
else
|
353
355
|
puts 'NO WEATHER FILES SPECIFIED...SIMULATIONS MAY FAIL'
|
@@ -478,7 +480,7 @@ module URBANopt
|
|
478
480
|
|
479
481
|
# ChangeBuildingLocation
|
480
482
|
# set skip to false for change building location
|
481
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', '__SKIP__', false)
|
483
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', '__SKIP__', false, 'ChangeBuildingLocation 1')
|
482
484
|
|
483
485
|
# cec climate zone takes precedence
|
484
486
|
cec_found = false
|
@@ -486,7 +488,7 @@ module URBANopt
|
|
486
488
|
cec_climate_zone = feature.cec_climate_zone
|
487
489
|
if !cec_climate_zone.empty?
|
488
490
|
cec_climate_zone = 'T24-CEC' + cec_climate_zone
|
489
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', cec_climate_zone)
|
491
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', cec_climate_zone, 'ChangeBuildingLocation 1')
|
490
492
|
cec_found = true
|
491
493
|
# Temporary fix for CEC climate zone:
|
492
494
|
cec_modified_zone = 'CEC ' + cec_climate_zone
|
@@ -502,7 +504,7 @@ module URBANopt
|
|
502
504
|
climate_zone = feature.climate_zone
|
503
505
|
if !climate_zone.empty?
|
504
506
|
climate_zone = 'ASHRAE 169-2013-' + climate_zone
|
505
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', climate_zone)
|
507
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'climate_zone', climate_zone, 'ChangeBuildingLocation 1')
|
506
508
|
end
|
507
509
|
rescue StandardError
|
508
510
|
end
|
@@ -512,7 +514,7 @@ module URBANopt
|
|
512
514
|
begin
|
513
515
|
weather_filename = feature.weather_filename
|
514
516
|
if !feature.weather_filename.nil? && !feature.weather_filename.empty?
|
515
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', weather_filename)
|
517
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', weather_filename, 'ChangeBuildingLocation 1')
|
516
518
|
puts "Setting weather_file_name to #{weather_filename} as specified in the FeatureFile"
|
517
519
|
end
|
518
520
|
rescue StandardError
|
@@ -520,7 +522,7 @@ module URBANopt
|
|
520
522
|
epw_file_path = Dir.glob(File.join(File.dirname(__FILE__), '../weather/*.epw'))[0]
|
521
523
|
if !epw_file_path.nil? && !epw_file_path.empty?
|
522
524
|
epw_file_name = File.basename(epw_file_path)
|
523
|
-
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', epw_file_name)
|
525
|
+
OpenStudio::Extension.set_measure_argument(osw, 'ChangeBuildingLocation', 'weather_file_name', epw_file_name, 'ChangeBuildingLocation 1')
|
524
526
|
puts "Setting weather_file_name to first epw file found in the weather folder: #{epw_file_name}"
|
525
527
|
else
|
526
528
|
puts 'NO WEATHER FILES SPECIFIED...SIMULATIONS MAY FAIL'
|
@@ -14,6 +14,7 @@
|
|
14
14
|
"end_date": "2019-12-31"
|
15
15
|
}
|
16
16
|
},{
|
17
|
+
"name": "ChangeBuildingLocation 1",
|
17
18
|
"measure_dir_name": "ChangeBuildingLocation",
|
18
19
|
"arguments": {
|
19
20
|
"__SKIP__": true,
|
@@ -53,6 +54,14 @@
|
|
53
54
|
"floorplan_path": "../files/office_floorplan.json",
|
54
55
|
"__SKIP__": true
|
55
56
|
}
|
57
|
+
},{
|
58
|
+
"name": "ChangeBuildingLocation 2",
|
59
|
+
"measure_dir_name": "ChangeBuildingLocation",
|
60
|
+
"arguments": {
|
61
|
+
"__SKIP__": true,
|
62
|
+
"weather_file_name": "USA_NY_Buffalo-Greater.Buffalo.Intl.AP.725280_TMY3.epw",
|
63
|
+
"climate_zone": "ASHRAE 169-2013-6A"
|
64
|
+
}
|
56
65
|
},{
|
57
66
|
"name": "create_typical_building_from_model 1",
|
58
67
|
"measure_dir_name": "create_typical_building_from_model",
|
@@ -1,3 +1,3 @@
|
|
1
1
|
Dependency=Template Month Dependency=Template Year clothes_washer_efficiency_imef clothes_washer_rated_annual_kwh clothes_washer_label_electric_rate clothes_washer_label_gas_rate clothes_washer_label_annual_gas_cost clothes_washer_label_usage clothes_washer_capacity Source
|
2
|
-
ft^
|
2
|
+
ft^2/kWh-cyc kWh/yr $/kWh $/therm $ cyc/wk ft^3
|
3
3
|
Sep 2020 2.92 75 0.12 1.09 7 6 4.5 "ResStock ""EnergyStar Most Efficient, 100% Usage"""
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Dependency=Template Month Dependency=Template Year Dependency=water_heater_fuel_type
|
1
|
+
Dependency=Template Month Dependency=Template Year Dependency=water_heater_fuel_type water_heater_efficiency water_heater_tank_volume Source
|
2
2
|
ratio gal
|
3
3
|
Sep 2020 electricity 0.93 40 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
4
4
|
Sep 2020 natural gas 0.61 40 "National ERI Target Procedure ENERGY STAR Certified Homes, Version 3.1 (Rev. 10)"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
docker:
|
5
|
+
- image: nrel/openstudio:3.1.0
|
6
|
+
steps:
|
7
|
+
- checkout
|
8
|
+
- run:
|
9
|
+
name: Install gems
|
10
|
+
command: |
|
11
|
+
rm -f Gemfile.lock && bundle install
|
12
|
+
- run:
|
13
|
+
name: Run tests
|
14
|
+
command: |
|
15
|
+
bundle exec rake test_all
|
16
|
+
- store_artifacts:
|
17
|
+
path: workflow/tests/results
|
18
|
+
destination: results
|
19
|
+
- store_test_results:
|
20
|
+
path: test/reports
|
@@ -0,0 +1,13 @@
|
|
1
|
+
## Pull Request Description
|
2
|
+
|
3
|
+
[description here]
|
4
|
+
|
5
|
+
## Checklist
|
6
|
+
|
7
|
+
Not all may apply:
|
8
|
+
|
9
|
+
- [ ] EPvalidator.xml has been updated
|
10
|
+
- [ ] Tests (and test files) have been updated
|
11
|
+
- [ ] Documentation has been updated
|
12
|
+
- [ ] `openstudio tasks.rb update_measures` has been run
|
13
|
+
- [ ] No unexpected regression test changes on CI
|
@@ -134,7 +134,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
134
134
|
|
135
135
|
arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('schedules_type', schedules_type_choices, true)
|
136
136
|
arg.setDisplayName('Schedules: Type')
|
137
|
-
arg.setDescription("The type of occupant-related schedules to use. Schedules corresponding to 'default' are average (e.g., Building America). Schedules corresponding to 'stochastic' are generated using time-
|
137
|
+
arg.setDescription("The type of occupant-related schedules to use. Schedules corresponding to 'default' are average (e.g., Building America). Schedules corresponding to 'stochastic' are generated using time-inhomogeneous Markov chains derived from American Time Use Survey data, and supplemented with sampling duration and power level from NEEA RBSA data as well as DHW draw duration and flow rate from Aquacraft/AWWA data.")
|
138
138
|
arg.setDefaultValue('default')
|
139
139
|
args << arg
|
140
140
|
|
@@ -167,6 +167,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
167
167
|
arg.setDescription("This numeric field should contain the ending day of the ending month (must be valid for month) for the vacancy period desired. Only applies if the schedules type is 'stochastic'.")
|
168
168
|
args << arg
|
169
169
|
|
170
|
+
arg = OpenStudio::Measure::OSArgument.makeIntegerArgument('schedules_random_seed', false)
|
171
|
+
arg.setDisplayName('Schedules: Random Seed')
|
172
|
+
arg.setUnits('#')
|
173
|
+
arg.setDescription("This numeric field is the seed for the random number generator. Only applies if the schedules type is 'stochastic'.")
|
174
|
+
args << arg
|
175
|
+
|
170
176
|
arg = OpenStudio::Measure::OSArgument.makeStringArgument('weather_station_epw_filepath', true)
|
171
177
|
arg.setDisplayName('EnergyPlus Weather (EPW) Filepath')
|
172
178
|
arg.setDescription('Path of the EPW file.')
|
@@ -370,16 +376,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
370
376
|
arg.setDefaultValue('6:12')
|
371
377
|
args << arg
|
372
378
|
|
373
|
-
roof_structure_choices = OpenStudio::StringVector.new
|
374
|
-
roof_structure_choices << 'truss, cantilever'
|
375
|
-
roof_structure_choices << 'rafter'
|
376
|
-
|
377
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('geometry_roof_structure', roof_structure_choices, true)
|
378
|
-
arg.setDisplayName('Geometry: Roof Structure')
|
379
|
-
arg.setDescription('The roof structure of the building. Ignored if the building has a flat roof.')
|
380
|
-
arg.setDefaultValue('truss, cantilever')
|
381
|
-
args << arg
|
382
|
-
|
383
379
|
attic_type_choices = OpenStudio::StringVector.new
|
384
380
|
attic_type_choices << HPXML::AtticTypeVented
|
385
381
|
attic_type_choices << HPXML::AtticTypeUnvented
|
@@ -485,6 +481,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
485
481
|
arg.setDescription('Assembly R-value for the foundation walls. Only applies to basements/crawlspaces. If provided, overrides the previous foundation wall insulation inputs.')
|
486
482
|
args << arg
|
487
483
|
|
484
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('foundation_wall_thickness', true)
|
485
|
+
arg.setDisplayName('Foundation: Wall Thickness')
|
486
|
+
arg.setDescription('The thickness of the foundation wall.')
|
487
|
+
arg.setDefaultValue(Constants.Auto)
|
488
|
+
args << arg
|
489
|
+
|
488
490
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('slab_perimeter_insulation_r', true)
|
489
491
|
arg.setDisplayName('Slab: Perimeter Insulation Nominal R-value')
|
490
492
|
arg.setUnits('h-ft^2-R/Btu')
|
@@ -513,18 +515,24 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
513
515
|
arg.setDefaultValue(0)
|
514
516
|
args << arg
|
515
517
|
|
516
|
-
arg = OpenStudio::Measure::OSArgument::
|
518
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_thickness', true)
|
519
|
+
arg.setDisplayName('Slab: Thickness')
|
520
|
+
arg.setDescription('The thickness of the slab.')
|
521
|
+
arg.setDefaultValue(Constants.Auto)
|
522
|
+
args << arg
|
523
|
+
|
524
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_carpet_fraction', true)
|
517
525
|
arg.setDisplayName('Slab: Carpet Fraction')
|
518
526
|
arg.setUnits('Frac')
|
519
527
|
arg.setDescription('Fraction of the slab floor area that is carpeted.')
|
520
|
-
arg.setDefaultValue(
|
528
|
+
arg.setDefaultValue(Constants.Auto)
|
521
529
|
args << arg
|
522
530
|
|
523
|
-
arg = OpenStudio::Measure::OSArgument::
|
531
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('slab_carpet_r', true)
|
524
532
|
arg.setDisplayName('Slab: Carpet R-value')
|
525
533
|
arg.setUnits('h-ft^2-R/Btu')
|
526
534
|
arg.setDescription('R-value of the slab carpet.')
|
527
|
-
arg.setDefaultValue(
|
535
|
+
arg.setDefaultValue(Constants.Auto)
|
528
536
|
args << arg
|
529
537
|
|
530
538
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_assembly_r', true)
|
@@ -574,16 +582,16 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
574
582
|
arg.setDefaultValue(Constants.Auto)
|
575
583
|
args << arg
|
576
584
|
|
577
|
-
arg = OpenStudio::Measure::OSArgument::
|
585
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('roof_emittance', true)
|
578
586
|
arg.setDisplayName('Roof: Emittance')
|
579
587
|
arg.setDescription('The emittance of the roof.')
|
580
|
-
arg.setDefaultValue(
|
588
|
+
arg.setDefaultValue(Constants.Auto)
|
581
589
|
args << arg
|
582
590
|
|
583
|
-
arg = OpenStudio::Measure::OSArgument::
|
591
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('roof_radiant_barrier', true)
|
584
592
|
arg.setDisplayName('Roof: Has Radiant Barrier')
|
585
593
|
arg.setDescription('Specifies whether the attic has a radiant barrier.')
|
586
|
-
arg.setDefaultValue(
|
594
|
+
arg.setDefaultValue(Constants.Auto)
|
587
595
|
args << arg
|
588
596
|
|
589
597
|
roof_radiant_barrier_grade_choices = OpenStudio::StringVector.new
|
@@ -704,10 +712,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
704
712
|
arg.setDefaultValue(Constants.Auto)
|
705
713
|
args << arg
|
706
714
|
|
707
|
-
arg = OpenStudio::Measure::OSArgument::
|
715
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('wall_emittance', true)
|
708
716
|
arg.setDisplayName('Wall: Emittance')
|
709
717
|
arg.setDescription('The emittance of the exterior walls.')
|
710
|
-
arg.setDefaultValue(
|
718
|
+
arg.setDefaultValue(Constants.Auto)
|
711
719
|
args << arg
|
712
720
|
|
713
721
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_front_wwr', true)
|
@@ -990,10 +998,22 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
990
998
|
|
991
999
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_electric_auxiliary_energy', false)
|
992
1000
|
arg.setDisplayName('Heating System: Electric Auxiliary Energy')
|
993
|
-
arg.setDescription(
|
1001
|
+
arg.setDescription("The electric auxiliary energy of the heating system. Applies to #{HPXML::HVACTypeBoiler}.")
|
994
1002
|
arg.setUnits('kWh/yr')
|
995
1003
|
args << arg
|
996
1004
|
|
1005
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts_per_cfm', false)
|
1006
|
+
arg.setDisplayName('Heating System: Fan Power')
|
1007
|
+
arg.setDescription("Blower fan power. Applies to #{HPXML::HVACTypeFurnace}.")
|
1008
|
+
arg.setUnits('W/CFM')
|
1009
|
+
args << arg
|
1010
|
+
|
1011
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts', false)
|
1012
|
+
arg.setDisplayName('Heating System: Fan Power')
|
1013
|
+
arg.setDescription("Blower fan power. Ignored for #{HPXML::HVACTypeElectricResistance}, #{HPXML::HVACTypeFurnace}, and #{HPXML::HVACTypeBoiler}.")
|
1014
|
+
arg.setUnits('W')
|
1015
|
+
args << arg
|
1016
|
+
|
997
1017
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney', true)
|
998
1018
|
arg.setDisplayName('Heating System: Has Flue or Chimney')
|
999
1019
|
arg.setDescription('Whether the heating system has a flue or chimney.')
|
@@ -1051,6 +1071,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1051
1071
|
arg.setDefaultValue(false)
|
1052
1072
|
args << arg
|
1053
1073
|
|
1074
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_fan_power_watts_per_cfm', false)
|
1075
|
+
arg.setDisplayName('Cooling System: Fan Power')
|
1076
|
+
arg.setDescription("Blower fan power. Applies to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeEvaporativeCooler}, and #{HPXML::HVACTypeMiniSplitAirConditioner}.")
|
1077
|
+
arg.setUnits('W/CFM')
|
1078
|
+
args << arg
|
1079
|
+
|
1054
1080
|
heat_pump_type_choices = OpenStudio::StringVector.new
|
1055
1081
|
heat_pump_type_choices << 'none'
|
1056
1082
|
heat_pump_type_choices << HPXML::HVACTypeHeatPumpAirToAir
|
@@ -1177,68 +1203,92 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1177
1203
|
arg.setDescription('Whether the mini-split heat pump is ducted or not.')
|
1178
1204
|
args << arg
|
1179
1205
|
|
1180
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1206
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_pump_power_watts_per_ton', false)
|
1181
1207
|
arg.setDisplayName('Heat Pump: Ground-to-Air Pump Power')
|
1182
1208
|
arg.setDescription('Ground loop circulator pump power during operation of the heat pump.')
|
1183
|
-
arg.setUnits('
|
1209
|
+
arg.setUnits('W/ton')
|
1184
1210
|
args << arg
|
1185
1211
|
|
1186
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1187
|
-
arg.setDisplayName('Heat Pump:
|
1212
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_fan_power_watts_per_cfm', false)
|
1213
|
+
arg.setDisplayName('Heat Pump: Fan Power')
|
1188
1214
|
arg.setDescription('Blower fan power.')
|
1189
|
-
arg.setUnits('
|
1215
|
+
arg.setUnits('W/CFM')
|
1190
1216
|
args << arg
|
1191
1217
|
|
1192
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1193
|
-
arg.setDisplayName('Setpoint:
|
1194
|
-
arg.setDescription('Specify the heating setpoint temperature.')
|
1218
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_heating_weekday_temp', true)
|
1219
|
+
arg.setDisplayName('Heating Setpoint: Weekday Temperature')
|
1220
|
+
arg.setDescription('Specify the weekday heating setpoint temperature.')
|
1195
1221
|
arg.setUnits('deg-F')
|
1196
1222
|
arg.setDefaultValue(71)
|
1197
1223
|
args << arg
|
1198
1224
|
|
1199
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1200
|
-
arg.setDisplayName('Setpoint:
|
1201
|
-
arg.setDescription('Specify the heating
|
1225
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_heating_weekend_temp', true)
|
1226
|
+
arg.setDisplayName('Heating Setpoint: Weekend Temperature')
|
1227
|
+
arg.setDescription('Specify the weekend heating setpoint temperature.')
|
1202
1228
|
arg.setUnits('deg-F')
|
1203
1229
|
arg.setDefaultValue(71)
|
1204
1230
|
args << arg
|
1205
1231
|
|
1206
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1207
|
-
arg.setDisplayName('Setpoint:
|
1208
|
-
arg.setDescription('Specify the heating
|
1209
|
-
arg.
|
1232
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_heating_weekday_offset_magnitude', false)
|
1233
|
+
arg.setDisplayName('Heating Setpoint: Weekday Offset Magnitude')
|
1234
|
+
arg.setDescription('Specify the weekday heating offset magnitude.')
|
1235
|
+
arg.setUnits('deg-F')
|
1236
|
+
args << arg
|
1237
|
+
|
1238
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_heating_weekend_offset_magnitude', false)
|
1239
|
+
arg.setDisplayName('Heating Setpoint: Weekend Offset Magnitude')
|
1240
|
+
arg.setDescription('Specify the weekend heating offset magnitude.')
|
1241
|
+
arg.setUnits('deg-F')
|
1242
|
+
args << arg
|
1243
|
+
|
1244
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekday_schedule', false)
|
1245
|
+
arg.setDisplayName('Heating Setpoint: Weekday Schedule')
|
1246
|
+
arg.setDescription('Specify the 24-hour comma-separated weekday heating schedule of 0s and 1s.')
|
1247
|
+
arg.setUnits('deg-F')
|
1210
1248
|
args << arg
|
1211
1249
|
|
1212
|
-
arg = OpenStudio::Measure::OSArgument::
|
1213
|
-
arg.setDisplayName('Setpoint:
|
1214
|
-
arg.setDescription('Specify the
|
1215
|
-
arg.
|
1250
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_heating_weekend_schedule', false)
|
1251
|
+
arg.setDisplayName('Heating Setpoint: Weekend Schedule')
|
1252
|
+
arg.setDescription('Specify the 24-hour comma-separated weekend heating schedule of 0s and 1s.')
|
1253
|
+
arg.setUnits('deg-F')
|
1216
1254
|
args << arg
|
1217
1255
|
|
1218
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1219
|
-
arg.setDisplayName('Setpoint:
|
1220
|
-
arg.setDescription('Specify the cooling setpoint temperature.')
|
1256
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_cooling_weekday_temp', true)
|
1257
|
+
arg.setDisplayName('Cooling Setpoint: Weekday Temperature')
|
1258
|
+
arg.setDescription('Specify the weekday cooling setpoint temperature.')
|
1221
1259
|
arg.setUnits('deg-F')
|
1222
1260
|
arg.setDefaultValue(76)
|
1223
1261
|
args << arg
|
1224
1262
|
|
1225
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1226
|
-
arg.setDisplayName('Setpoint:
|
1227
|
-
arg.setDescription('Specify the cooling
|
1263
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_cooling_weekend_temp', true)
|
1264
|
+
arg.setDisplayName('Cooling Setpoint: Weekend Temperature')
|
1265
|
+
arg.setDescription('Specify the weekend cooling setpoint temperature.')
|
1228
1266
|
arg.setUnits('deg-F')
|
1229
1267
|
arg.setDefaultValue(76)
|
1230
1268
|
args << arg
|
1231
1269
|
|
1232
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1233
|
-
arg.setDisplayName('Setpoint:
|
1234
|
-
arg.setDescription('Specify the cooling
|
1235
|
-
arg.
|
1270
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_cooling_weekday_offset_magnitude', false)
|
1271
|
+
arg.setDisplayName('Cooling Setpoint: Weekday Offset Magnitude')
|
1272
|
+
arg.setDescription('Specify the weekday cooling offset magnitude.')
|
1273
|
+
arg.setUnits('deg-F')
|
1274
|
+
args << arg
|
1275
|
+
|
1276
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('setpoint_cooling_weekend_offset_magnitude', false)
|
1277
|
+
arg.setDisplayName('Cooling Setpoint: Weekend Offset Magnitude')
|
1278
|
+
arg.setDescription('Specify the weekend cooling offset magnitude.')
|
1279
|
+
arg.setUnits('deg-F')
|
1280
|
+
args << arg
|
1281
|
+
|
1282
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekday_schedule', false)
|
1283
|
+
arg.setDisplayName('Cooling Setpoint: Weekday Schedule')
|
1284
|
+
arg.setDescription('Specify the 24-hour comma-separated weekday cooling schedule of 0s and 1s.')
|
1285
|
+
arg.setUnits('deg-F')
|
1236
1286
|
args << arg
|
1237
1287
|
|
1238
|
-
arg = OpenStudio::Measure::OSArgument::
|
1239
|
-
arg.setDisplayName('Setpoint:
|
1240
|
-
arg.setDescription('Specify the
|
1241
|
-
arg.
|
1288
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('setpoint_cooling_weekend_schedule', false)
|
1289
|
+
arg.setDisplayName('Cooling Setpoint: Weekend Schedule')
|
1290
|
+
arg.setDescription('Specify the 24-hour comma-separated weekend cooling schedule of 0s and 1s.')
|
1291
|
+
arg.setUnits('deg-F')
|
1242
1292
|
args << arg
|
1243
1293
|
|
1244
1294
|
duct_leakage_units_choices = OpenStudio::StringVector.new
|
@@ -1383,6 +1433,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1383
1433
|
arg.setUnits('kWh/yr')
|
1384
1434
|
args << arg
|
1385
1435
|
|
1436
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_fan_power_watts_2', false)
|
1437
|
+
arg.setDisplayName('Heating System 2: Fan Power')
|
1438
|
+
arg.setDescription("Blower fan power. Ignored for #{HPXML::HVACTypeElectricResistance}.")
|
1439
|
+
arg.setUnits('W/CFM')
|
1440
|
+
args << arg
|
1441
|
+
|
1386
1442
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heating_system_has_flue_or_chimney_2', true)
|
1387
1443
|
arg.setDisplayName('Heating System 2: Has Flue or Chimney')
|
1388
1444
|
arg.setDescription('Whether the second heating system has a flue or chimney.')
|
@@ -1455,16 +1511,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1455
1511
|
arg.setDefaultValue(30)
|
1456
1512
|
args << arg
|
1457
1513
|
|
1458
|
-
arg = OpenStudio::Measure::OSArgument::
|
1459
|
-
arg.setDisplayName('Mechanical Ventilation:
|
1460
|
-
arg.setDescription(
|
1461
|
-
arg.
|
1462
|
-
|
1463
|
-
|
1464
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_in_unit_flow_rate', false)
|
1465
|
-
arg.setDisplayName('Shared Mechanical Ventilation: In-Unit Flow Rate')
|
1466
|
-
arg.setDescription('The flow rate delivered to the dwelling unit. This is required for a shared mechanical ventilation system.')
|
1467
|
-
arg.setUnits('CFM')
|
1514
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('mech_vent_num_units_served', true)
|
1515
|
+
arg.setDisplayName('Mechanical Ventilation: Number of Units Served')
|
1516
|
+
arg.setDescription("Number of dwelling units served by the mechanical ventilation system. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion flow rate and fan power to the unit.")
|
1517
|
+
arg.setUnits('#')
|
1518
|
+
arg.setDefaultValue(1)
|
1468
1519
|
args << arg
|
1469
1520
|
|
1470
1521
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('shared_mech_vent_frac_recirculation', false)
|
@@ -1729,16 +1780,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1729
1780
|
arg.setDefaultValue('EnergyFactor')
|
1730
1781
|
args << arg
|
1731
1782
|
|
1732
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1733
|
-
arg.setDisplayName('Water Heater:
|
1734
|
-
arg.setDescription('
|
1783
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_efficiency', true)
|
1784
|
+
arg.setDisplayName('Water Heater: Efficiency')
|
1785
|
+
arg.setDescription('Rated Energy Factor or Uniform Energy Factor. Does not apply to space-heating boilers.')
|
1735
1786
|
arg.setDefaultValue(0.67)
|
1736
1787
|
args << arg
|
1737
1788
|
|
1738
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1739
|
-
arg.setDisplayName('Water Heater:
|
1740
|
-
arg.setDescription(
|
1741
|
-
arg.
|
1789
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_first_hour_rating', false)
|
1790
|
+
arg.setDisplayName('Water Heater: First Hour Rating')
|
1791
|
+
arg.setDescription("Rated gallons of hot water supplied in an hour. Required if Efficiency Type is UniformEnergyFactor and Type is not #{HPXML::WaterHeaterTypeTankless}. Does not apply to space-heating boilers.")
|
1792
|
+
arg.setUnits('gal/hr')
|
1793
|
+
arg.setDefaultValue(56.0)
|
1742
1794
|
args << arg
|
1743
1795
|
|
1744
1796
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('water_heater_recovery_efficiency', true)
|
@@ -1767,22 +1819,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1767
1819
|
arg.setDefaultValue(Constants.Auto)
|
1768
1820
|
args << arg
|
1769
1821
|
|
1770
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('water_heater_performance_adjustment', false)
|
1771
|
-
arg.setDisplayName('Water Heater: Performance Adjustment')
|
1772
|
-
arg.setDescription("A performance adjustment due to cycling inefficiencies. Only applies to #{HPXML::WaterHeaterTypeTankless}.")
|
1773
|
-
arg.setUnits('Frac')
|
1774
|
-
args << arg
|
1775
|
-
|
1776
1822
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('water_heater_has_flue_or_chimney', true)
|
1777
1823
|
arg.setDisplayName('Water Heater: Has Flue or Chimney')
|
1778
1824
|
arg.setDescription('Whether the water heater has a flue or chimney.')
|
1779
1825
|
arg.setDefaultValue(false)
|
1780
1826
|
args << arg
|
1781
1827
|
|
1782
|
-
arg = OpenStudio::Measure::OSArgument::
|
1783
|
-
arg.setDisplayName('Water Heater:
|
1784
|
-
arg.setDescription(
|
1785
|
-
arg.
|
1828
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('water_heater_num_units_served', true)
|
1829
|
+
arg.setDisplayName('Water Heater: Number of Units Served')
|
1830
|
+
arg.setDescription("Number of dwelling units served (directly or indirectly) by the water heater. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion water heater tank losses to the unit.")
|
1831
|
+
arg.setUnits('#')
|
1832
|
+
arg.setDefaultValue(1)
|
1786
1833
|
args << arg
|
1787
1834
|
|
1788
1835
|
dhw_distribution_system_type_choices = OpenStudio::StringVector.new
|
@@ -1836,11 +1883,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1836
1883
|
arg.setDefaultValue(Constants.Auto)
|
1837
1884
|
args << arg
|
1838
1885
|
|
1839
|
-
arg = OpenStudio::Measure::OSArgument::
|
1886
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('dhw_distribution_pipe_r', true)
|
1840
1887
|
arg.setDisplayName('Hot Water Distribution: Pipe Insulation Nominal R-Value')
|
1841
1888
|
arg.setUnits('h-ft^2-R/Btu')
|
1842
1889
|
arg.setDescription('Nominal R-value of the pipe insulation.')
|
1843
|
-
arg.setDefaultValue(
|
1890
|
+
arg.setDefaultValue(Constants.Auto)
|
1844
1891
|
args << arg
|
1845
1892
|
|
1846
1893
|
dwhr_facilities_connected_choices = OpenStudio::StringVector.new
|
@@ -1850,7 +1897,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1850
1897
|
|
1851
1898
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dwhr_facilities_connected', dwhr_facilities_connected_choices, true)
|
1852
1899
|
arg.setDisplayName('Drain Water Heat Recovery: Facilities Connected')
|
1853
|
-
arg.setDescription("Which facilities are connected for the drain water heat recovery. Use 'none' if there is no
|
1900
|
+
arg.setDescription("Which facilities are connected for the drain water heat recovery. Use 'none' if there is no drain water heat recovery system.")
|
1854
1901
|
arg.setDefaultValue('none')
|
1855
1902
|
args << arg
|
1856
1903
|
|
@@ -1969,15 +2016,18 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1969
2016
|
|
1970
2017
|
pv_system_module_type_choices = OpenStudio::StringVector.new
|
1971
2018
|
pv_system_module_type_choices << 'none'
|
2019
|
+
pv_system_module_type_choices << Constants.Auto
|
1972
2020
|
pv_system_module_type_choices << HPXML::PVModuleTypeStandard
|
1973
2021
|
pv_system_module_type_choices << HPXML::PVModuleTypePremium
|
1974
2022
|
pv_system_module_type_choices << HPXML::PVModuleTypeThinFilm
|
1975
2023
|
|
1976
2024
|
pv_system_location_choices = OpenStudio::StringVector.new
|
2025
|
+
pv_system_location_choices << Constants.Auto
|
1977
2026
|
pv_system_location_choices << HPXML::LocationRoof
|
1978
2027
|
pv_system_location_choices << HPXML::LocationGround
|
1979
2028
|
|
1980
2029
|
pv_system_tracking_choices = OpenStudio::StringVector.new
|
2030
|
+
pv_system_tracking_choices << Constants.Auto
|
1981
2031
|
pv_system_tracking_choices << HPXML::PVTrackingTypeFixed
|
1982
2032
|
pv_system_tracking_choices << HPXML::PVTrackingType1Axis
|
1983
2033
|
pv_system_tracking_choices << HPXML::PVTrackingType1AxisBacktracked
|
@@ -1992,13 +2042,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1992
2042
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_location_1', pv_system_location_choices, true)
|
1993
2043
|
arg.setDisplayName('Photovoltaics 1: Location')
|
1994
2044
|
arg.setDescription('Location of the PV system 1.')
|
1995
|
-
arg.setDefaultValue(
|
2045
|
+
arg.setDefaultValue(Constants.Auto)
|
1996
2046
|
args << arg
|
1997
2047
|
|
1998
2048
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_tracking_1', pv_system_tracking_choices, true)
|
1999
2049
|
arg.setDisplayName('Photovoltaics 1: Tracking')
|
2000
2050
|
arg.setDescription('Tracking of the PV system 1.')
|
2001
|
-
arg.setDefaultValue(
|
2051
|
+
arg.setDefaultValue(Constants.Auto)
|
2002
2052
|
args << arg
|
2003
2053
|
|
2004
2054
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth_1', true)
|
@@ -2034,10 +2084,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2034
2084
|
arg.setDescription('System losses fraction of the PV system 1.')
|
2035
2085
|
args << arg
|
2036
2086
|
|
2037
|
-
arg = OpenStudio::Measure::OSArgument::
|
2038
|
-
arg.setDisplayName('Photovoltaics 1:
|
2039
|
-
arg.setDescription(
|
2040
|
-
arg.
|
2087
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('pv_system_num_units_served_1', true)
|
2088
|
+
arg.setDisplayName('Photovoltaics 1: Number of Units Served')
|
2089
|
+
arg.setDescription("Number of dwelling units served by PV system 1. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion PV generation to the unit.")
|
2090
|
+
arg.setUnits('#')
|
2091
|
+
arg.setDefaultValue(1)
|
2041
2092
|
args << arg
|
2042
2093
|
|
2043
2094
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_module_type_2', pv_system_module_type_choices, true)
|
@@ -2049,13 +2100,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2049
2100
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_location_2', pv_system_location_choices, true)
|
2050
2101
|
arg.setDisplayName('Photovoltaics 2: Location')
|
2051
2102
|
arg.setDescription('Location of the PV system 2.')
|
2052
|
-
arg.setDefaultValue(
|
2103
|
+
arg.setDefaultValue(Constants.Auto)
|
2053
2104
|
args << arg
|
2054
2105
|
|
2055
2106
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('pv_system_tracking_2', pv_system_tracking_choices, true)
|
2056
2107
|
arg.setDisplayName('Photovoltaics 2: Tracking')
|
2057
2108
|
arg.setDescription('Tracking of the PV system 2.')
|
2058
|
-
arg.setDefaultValue(
|
2109
|
+
arg.setDefaultValue(Constants.Auto)
|
2059
2110
|
args << arg
|
2060
2111
|
|
2061
2112
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('pv_system_array_azimuth_2', true)
|
@@ -2091,10 +2142,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2091
2142
|
arg.setDescription('System losses fraction of the PV system 2.')
|
2092
2143
|
args << arg
|
2093
2144
|
|
2094
|
-
arg = OpenStudio::Measure::OSArgument::
|
2095
|
-
arg.setDisplayName('Photovoltaics 2:
|
2096
|
-
arg.setDescription(
|
2097
|
-
arg.
|
2145
|
+
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('pv_system_num_units_served_2', true)
|
2146
|
+
arg.setDisplayName('Photovoltaics 2: Number of Units Served')
|
2147
|
+
arg.setDescription("Number of dwelling units served by PV system 2. Must be 1 if #{HPXML::ResidentialTypeSFD}. Used to apportion PV generation to the unit.")
|
2148
|
+
arg.setUnits('#')
|
2149
|
+
arg.setDefaultValue(1)
|
2098
2150
|
args << arg
|
2099
2151
|
|
2100
2152
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('lighting_fraction_cfl_interior', true)
|
@@ -2216,10 +2268,20 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2216
2268
|
arg.setDefaultValue(false)
|
2217
2269
|
args << arg
|
2218
2270
|
|
2271
|
+
dehumidifier_type_choices = OpenStudio::StringVector.new
|
2272
|
+
dehumidifier_type_choices << HPXML::DehumidifierTypePortable
|
2273
|
+
dehumidifier_type_choices << HPXML::DehumidifierTypeWholeHome
|
2274
|
+
|
2219
2275
|
dehumidifier_efficiency_type_choices = OpenStudio::StringVector.new
|
2220
2276
|
dehumidifier_efficiency_type_choices << 'EnergyFactor'
|
2221
2277
|
dehumidifier_efficiency_type_choices << 'IntegratedEnergyFactor'
|
2222
2278
|
|
2279
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_type', dehumidifier_type_choices, true)
|
2280
|
+
arg.setDisplayName('Dehumidifier: Type')
|
2281
|
+
arg.setDescription('The type of dehumidifier.')
|
2282
|
+
arg.setDefaultValue(HPXML::DehumidifierTypePortable)
|
2283
|
+
args << arg
|
2284
|
+
|
2223
2285
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('dehumidifier_efficiency_type', dehumidifier_efficiency_type_choices, true)
|
2224
2286
|
arg.setDisplayName('Dehumidifier: Efficiency Type')
|
2225
2287
|
arg.setDescription('The efficiency type of dehumidifier.')
|
@@ -2631,7 +2693,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2631
2693
|
|
2632
2694
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('ceiling_fan_efficiency', true)
|
2633
2695
|
arg.setDisplayName('Ceiling Fan: Efficiency')
|
2634
|
-
arg.setUnits('CFM/
|
2696
|
+
arg.setUnits('CFM/W')
|
2635
2697
|
arg.setDescription('The efficiency rating of the ceiling fan(s) at medium speed.')
|
2636
2698
|
arg.setDefaultValue(Constants.Auto)
|
2637
2699
|
args << arg
|
@@ -2663,6 +2725,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2663
2725
|
arg.setDefaultValue(1.0)
|
2664
2726
|
args << arg
|
2665
2727
|
|
2728
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_television_usage_multiplier_2', true)
|
2729
|
+
arg.setDisplayName('Plug Loads: Television Usage Multiplier 2')
|
2730
|
+
arg.setDefaultValue(1.0)
|
2731
|
+
arg.setDescription('Additional multiplier on the television energy usage that can reflect, e.g., high/low usage occupants.')
|
2732
|
+
args << arg
|
2733
|
+
|
2666
2734
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('plug_loads_other_annual_kwh', true)
|
2667
2735
|
arg.setDisplayName('Plug Loads: Other Annual kWh')
|
2668
2736
|
arg.setDescription('The annual energy consumption of the other residual plug loads.')
|
@@ -2690,6 +2758,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2690
2758
|
arg.setDefaultValue(1.0)
|
2691
2759
|
args << arg
|
2692
2760
|
|
2761
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_other_usage_multiplier_2', true)
|
2762
|
+
arg.setDisplayName('Plug Loads: Other Usage Multiplier 2')
|
2763
|
+
arg.setDescription('Additional multiplier on the other energy usage that can reflect, e.g., high/low usage occupants.')
|
2764
|
+
arg.setDefaultValue(1.0)
|
2765
|
+
args << arg
|
2766
|
+
|
2693
2767
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_well_pump_present', true)
|
2694
2768
|
arg.setDisplayName('Plug Loads: Well Pump Present')
|
2695
2769
|
arg.setDescription('Whether there is a well pump.')
|
@@ -2705,27 +2779,39 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2705
2779
|
|
2706
2780
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier', true)
|
2707
2781
|
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier')
|
2708
|
-
arg.setDescription('Multiplier on the
|
2709
|
-
arg.setDefaultValue(
|
2782
|
+
arg.setDescription('Multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.')
|
2783
|
+
arg.setDefaultValue(0.0)
|
2784
|
+
args << arg
|
2785
|
+
|
2786
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_well_pump_usage_multiplier_2', true)
|
2787
|
+
arg.setDisplayName('Plug Loads: Well Pump Usage Multiplier 2')
|
2788
|
+
arg.setDescription('Additional multiplier on the well pump energy usage that can reflect, e.g., high/low usage occupants.')
|
2789
|
+
arg.setDefaultValue(0.0)
|
2710
2790
|
args << arg
|
2711
2791
|
|
2712
2792
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('plug_loads_vehicle_present', true)
|
2713
2793
|
arg.setDisplayName('Plug Loads: Vehicle Present')
|
2714
|
-
arg.setDescription('Whether there is
|
2794
|
+
arg.setDescription('Whether there is an electric vehicle.')
|
2715
2795
|
arg.setDefaultValue(false)
|
2716
2796
|
args << arg
|
2717
2797
|
|
2718
2798
|
arg = OpenStudio::Measure::OSArgument::makeStringArgument('plug_loads_vehicle_annual_kwh', true)
|
2719
2799
|
arg.setDisplayName('Plug Loads: Vehicle Annual kWh')
|
2720
|
-
arg.setDescription('The annual energy consumption of the
|
2800
|
+
arg.setDescription('The annual energy consumption of the electric vehicle plug loads.')
|
2721
2801
|
arg.setUnits('kWh/yr')
|
2722
2802
|
arg.setDefaultValue(Constants.Auto)
|
2723
2803
|
args << arg
|
2724
2804
|
|
2725
2805
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier', true)
|
2726
2806
|
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier')
|
2727
|
-
arg.setDescription('Multiplier on the
|
2728
|
-
arg.setDefaultValue(
|
2807
|
+
arg.setDescription('Multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.')
|
2808
|
+
arg.setDefaultValue(0.0)
|
2809
|
+
args << arg
|
2810
|
+
|
2811
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('plug_loads_vehicle_usage_multiplier_2', true)
|
2812
|
+
arg.setDisplayName('Plug Loads: Vehicle Usage Multiplier 2')
|
2813
|
+
arg.setDescription('Additional multiplier on the electric vehicle energy usage that can reflect, e.g., high/low usage occupants.')
|
2814
|
+
arg.setDefaultValue(0.0)
|
2729
2815
|
args << arg
|
2730
2816
|
|
2731
2817
|
fuel_loads_fuel_choices = OpenStudio::StringVector.new
|
@@ -2759,16 +2845,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2759
2845
|
arg.setDefaultValue(Constants.Auto)
|
2760
2846
|
args << arg
|
2761
2847
|
|
2762
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('fuel_loads_grill_location', fuel_loads_location_choices, true)
|
2763
|
-
arg.setDisplayName('Fuel Loads: Grill Location')
|
2764
|
-
arg.setDescription('The location of the fuel loads grill.')
|
2765
|
-
arg.setDefaultValue(Constants.Auto)
|
2766
|
-
args << arg
|
2767
|
-
|
2768
2848
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_grill_usage_multiplier', true)
|
2769
2849
|
arg.setDisplayName('Fuel Loads: Grill Usage Multiplier')
|
2770
2850
|
arg.setDescription('Multiplier on the fuel loads grill energy usage that can reflect, e.g., high/low usage occupants.')
|
2771
|
-
arg.setDefaultValue(
|
2851
|
+
arg.setDefaultValue(0.0)
|
2772
2852
|
args << arg
|
2773
2853
|
|
2774
2854
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('fuel_loads_lighting_present', true)
|
@@ -2790,16 +2870,10 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2790
2870
|
arg.setDefaultValue(Constants.Auto)
|
2791
2871
|
args << arg
|
2792
2872
|
|
2793
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('fuel_loads_lighting_location', fuel_loads_location_choices, true)
|
2794
|
-
arg.setDisplayName('Fuel Loads: Lighting Location')
|
2795
|
-
arg.setDescription('The location of the fuel loads lighting.')
|
2796
|
-
arg.setDefaultValue(Constants.Auto)
|
2797
|
-
args << arg
|
2798
|
-
|
2799
2873
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_lighting_usage_multiplier', true)
|
2800
2874
|
arg.setDisplayName('Fuel Loads: Lighting Usage Multiplier')
|
2801
2875
|
arg.setDescription('Multiplier on the fuel loads lighting energy usage that can reflect, e.g., high/low usage occupants.')
|
2802
|
-
arg.setDefaultValue(
|
2876
|
+
arg.setDefaultValue(0.0)
|
2803
2877
|
args << arg
|
2804
2878
|
|
2805
2879
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('fuel_loads_fireplace_present', true)
|
@@ -2821,16 +2895,24 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2821
2895
|
arg.setDefaultValue(Constants.Auto)
|
2822
2896
|
args << arg
|
2823
2897
|
|
2824
|
-
arg = OpenStudio::Measure::OSArgument::
|
2825
|
-
arg.setDisplayName('Fuel Loads: Fireplace
|
2826
|
-
arg.setDescription(
|
2898
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('fuel_loads_fireplace_frac_sensible', true)
|
2899
|
+
arg.setDisplayName('Fuel Loads: Fireplace Sensible Fraction')
|
2900
|
+
arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are sensible.")
|
2901
|
+
arg.setUnits('Frac')
|
2902
|
+
arg.setDefaultValue(Constants.Auto)
|
2903
|
+
args << arg
|
2904
|
+
|
2905
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('fuel_loads_fireplace_frac_latent', true)
|
2906
|
+
arg.setDisplayName('Fuel Loads: Fireplace Latent Fraction')
|
2907
|
+
arg.setDescription("Fraction of fireplace residual fuel loads' internal gains that are latent.")
|
2908
|
+
arg.setUnits('Frac')
|
2827
2909
|
arg.setDefaultValue(Constants.Auto)
|
2828
2910
|
args << arg
|
2829
2911
|
|
2830
2912
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('fuel_loads_fireplace_usage_multiplier', true)
|
2831
2913
|
arg.setDisplayName('Fuel Loads: Fireplace Usage Multiplier')
|
2832
2914
|
arg.setDescription('Multiplier on the fuel loads fireplace energy usage that can reflect, e.g., high/low usage occupants.')
|
2833
|
-
arg.setDefaultValue(
|
2915
|
+
arg.setDefaultValue(0.0)
|
2834
2916
|
args << arg
|
2835
2917
|
|
2836
2918
|
heater_type_choices = OpenStudio::StringVector.new
|
@@ -3017,6 +3099,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3017
3099
|
schedules_vacancy_begin_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_begin_day_of_month', user_arguments),
|
3018
3100
|
schedules_vacancy_end_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_month', user_arguments),
|
3019
3101
|
schedules_vacancy_end_day_of_month: runner.getOptionalIntegerArgumentValue('schedules_vacancy_end_day_of_month', user_arguments),
|
3102
|
+
schedules_random_seed: runner.getOptionalIntegerArgumentValue('schedules_random_seed', user_arguments),
|
3020
3103
|
weather_station_epw_filepath: runner.getStringArgumentValue('weather_station_epw_filepath', user_arguments),
|
3021
3104
|
site_type: runner.getOptionalStringArgumentValue('site_type', user_arguments),
|
3022
3105
|
geometry_unit_type: runner.getStringArgumentValue('geometry_unit_type', user_arguments),
|
@@ -3040,7 +3123,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3040
3123
|
geometry_foundation_height_above_grade: runner.getDoubleArgumentValue('geometry_foundation_height_above_grade', user_arguments),
|
3041
3124
|
geometry_roof_type: runner.getStringArgumentValue('geometry_roof_type', user_arguments),
|
3042
3125
|
geometry_roof_pitch: runner.getStringArgumentValue('geometry_roof_pitch', user_arguments),
|
3043
|
-
geometry_roof_structure: runner.getStringArgumentValue('geometry_roof_structure', user_arguments),
|
3044
3126
|
geometry_attic_type: runner.getStringArgumentValue('geometry_attic_type', user_arguments),
|
3045
3127
|
geometry_eaves_depth: runner.getDoubleArgumentValue('geometry_eaves_depth', user_arguments),
|
3046
3128
|
geometry_num_bedrooms: runner.getIntegerArgumentValue('geometry_num_bedrooms', user_arguments),
|
@@ -3055,19 +3137,21 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3055
3137
|
foundation_wall_insulation_distance_to_top: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_top', user_arguments),
|
3056
3138
|
foundation_wall_insulation_distance_to_bottom: runner.getDoubleArgumentValue('foundation_wall_insulation_distance_to_bottom', user_arguments),
|
3057
3139
|
foundation_wall_assembly_r: runner.getOptionalDoubleArgumentValue('foundation_wall_assembly_r', user_arguments),
|
3140
|
+
foundation_wall_thickness: runner.getStringArgumentValue('foundation_wall_thickness', user_arguments),
|
3058
3141
|
slab_perimeter_insulation_r: runner.getDoubleArgumentValue('slab_perimeter_insulation_r', user_arguments),
|
3059
3142
|
slab_perimeter_depth: runner.getDoubleArgumentValue('slab_perimeter_depth', user_arguments),
|
3060
3143
|
slab_under_insulation_r: runner.getDoubleArgumentValue('slab_under_insulation_r', user_arguments),
|
3061
3144
|
slab_under_width: runner.getDoubleArgumentValue('slab_under_width', user_arguments),
|
3062
|
-
|
3063
|
-
|
3145
|
+
slab_thickness: runner.getStringArgumentValue('slab_thickness', user_arguments),
|
3146
|
+
slab_carpet_fraction: runner.getStringArgumentValue('slab_carpet_fraction', user_arguments),
|
3147
|
+
slab_carpet_r: runner.getStringArgumentValue('slab_carpet_r', user_arguments),
|
3064
3148
|
ceiling_assembly_r: runner.getDoubleArgumentValue('ceiling_assembly_r', user_arguments),
|
3065
3149
|
roof_material_type: runner.getOptionalStringArgumentValue('roof_material_type', user_arguments),
|
3066
3150
|
roof_color: runner.getStringArgumentValue('roof_color', user_arguments),
|
3067
3151
|
roof_assembly_r: runner.getDoubleArgumentValue('roof_assembly_r', user_arguments),
|
3068
3152
|
roof_solar_absorptance: runner.getStringArgumentValue('roof_solar_absorptance', user_arguments),
|
3069
|
-
roof_emittance: runner.
|
3070
|
-
roof_radiant_barrier: runner.
|
3153
|
+
roof_emittance: runner.getStringArgumentValue('roof_emittance', user_arguments),
|
3154
|
+
roof_radiant_barrier: runner.getStringArgumentValue('roof_radiant_barrier', user_arguments),
|
3071
3155
|
roof_radiant_barrier_grade: runner.getStringArgumentValue('roof_radiant_barrier_grade', user_arguments),
|
3072
3156
|
neighbor_front_distance: runner.getDoubleArgumentValue('neighbor_front_distance', user_arguments),
|
3073
3157
|
neighbor_back_distance: runner.getDoubleArgumentValue('neighbor_back_distance', user_arguments),
|
@@ -3082,7 +3166,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3082
3166
|
wall_color: runner.getStringArgumentValue('wall_color', user_arguments),
|
3083
3167
|
wall_assembly_r: runner.getDoubleArgumentValue('wall_assembly_r', user_arguments),
|
3084
3168
|
wall_solar_absorptance: runner.getStringArgumentValue('wall_solar_absorptance', user_arguments),
|
3085
|
-
wall_emittance: runner.
|
3169
|
+
wall_emittance: runner.getStringArgumentValue('wall_emittance', user_arguments),
|
3086
3170
|
window_front_wwr: runner.getDoubleArgumentValue('window_front_wwr', user_arguments),
|
3087
3171
|
window_back_wwr: runner.getDoubleArgumentValue('window_back_wwr', user_arguments),
|
3088
3172
|
window_left_wwr: runner.getDoubleArgumentValue('window_left_wwr', user_arguments),
|
@@ -3123,6 +3207,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3123
3207
|
heating_system_heating_capacity: runner.getStringArgumentValue('heating_system_heating_capacity', user_arguments),
|
3124
3208
|
heating_system_fraction_heat_load_served: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served', user_arguments),
|
3125
3209
|
heating_system_electric_auxiliary_energy: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy', user_arguments),
|
3210
|
+
heating_system_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts_per_cfm', user_arguments),
|
3211
|
+
heating_system_fan_power_watts: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts', user_arguments),
|
3126
3212
|
heating_system_has_flue_or_chimney: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney', user_arguments),
|
3127
3213
|
cooling_system_type: runner.getStringArgumentValue('cooling_system_type', user_arguments),
|
3128
3214
|
cooling_system_cooling_efficiency_seer: runner.getDoubleArgumentValue('cooling_system_cooling_efficiency_seer', user_arguments),
|
@@ -3132,6 +3218,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3132
3218
|
cooling_system_cooling_capacity: runner.getStringArgumentValue('cooling_system_cooling_capacity', user_arguments),
|
3133
3219
|
cooling_system_fraction_cool_load_served: runner.getDoubleArgumentValue('cooling_system_fraction_cool_load_served', user_arguments),
|
3134
3220
|
cooling_system_is_ducted: runner.getBoolArgumentValue('cooling_system_is_ducted', user_arguments),
|
3221
|
+
cooling_system_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('cooling_system_fan_power_watts_per_cfm', user_arguments),
|
3135
3222
|
heat_pump_type: runner.getStringArgumentValue('heat_pump_type', user_arguments),
|
3136
3223
|
heat_pump_heating_efficiency_hspf: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_hspf', user_arguments),
|
3137
3224
|
heat_pump_heating_efficiency_cop: runner.getDoubleArgumentValue('heat_pump_heating_efficiency_cop', user_arguments),
|
@@ -3149,16 +3236,20 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3149
3236
|
heat_pump_backup_heating_capacity: runner.getStringArgumentValue('heat_pump_backup_heating_capacity', user_arguments),
|
3150
3237
|
heat_pump_backup_heating_switchover_temp: runner.getOptionalDoubleArgumentValue('heat_pump_backup_heating_switchover_temp', user_arguments),
|
3151
3238
|
heat_pump_mini_split_is_ducted: runner.getOptionalStringArgumentValue('heat_pump_mini_split_is_ducted', user_arguments),
|
3152
|
-
|
3153
|
-
|
3154
|
-
|
3155
|
-
|
3156
|
-
|
3157
|
-
|
3158
|
-
|
3159
|
-
|
3160
|
-
|
3161
|
-
|
3239
|
+
heat_pump_pump_power_watts_per_ton: runner.getOptionalDoubleArgumentValue('heat_pump_pump_power_watts_per_ton', user_arguments),
|
3240
|
+
heat_pump_fan_power_watts_per_cfm: runner.getOptionalDoubleArgumentValue('heat_pump_fan_power_watts_per_cfm', user_arguments),
|
3241
|
+
setpoint_heating_weekday_temp: runner.getDoubleArgumentValue('setpoint_heating_weekday_temp', user_arguments),
|
3242
|
+
setpoint_heating_weekend_temp: runner.getDoubleArgumentValue('setpoint_heating_weekend_temp', user_arguments),
|
3243
|
+
setpoint_heating_weekday_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_heating_weekday_offset_magnitude', user_arguments),
|
3244
|
+
setpoint_heating_weekend_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_heating_weekend_offset_magnitude', user_arguments),
|
3245
|
+
setpoint_heating_weekday_schedule: runner.getOptionalStringArgumentValue('setpoint_heating_weekday_schedule', user_arguments),
|
3246
|
+
setpoint_heating_weekend_schedule: runner.getOptionalStringArgumentValue('setpoint_heating_weekend_schedule', user_arguments),
|
3247
|
+
setpoint_cooling_weekday_temp: runner.getDoubleArgumentValue('setpoint_cooling_weekday_temp', user_arguments),
|
3248
|
+
setpoint_cooling_weekend_temp: runner.getDoubleArgumentValue('setpoint_cooling_weekend_temp', user_arguments),
|
3249
|
+
setpoint_cooling_weekday_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_cooling_weekday_offset_magnitude', user_arguments),
|
3250
|
+
setpoint_cooling_weekend_offset_magnitude: runner.getOptionalDoubleArgumentValue('setpoint_cooling_weekend_offset_magnitude', user_arguments),
|
3251
|
+
setpoint_cooling_weekday_schedule: runner.getOptionalStringArgumentValue('setpoint_cooling_weekday_schedule', user_arguments),
|
3252
|
+
setpoint_cooling_weekend_schedule: runner.getOptionalStringArgumentValue('setpoint_cooling_weekend_schedule', user_arguments),
|
3162
3253
|
ducts_supply_leakage_units: runner.getStringArgumentValue('ducts_supply_leakage_units', user_arguments),
|
3163
3254
|
ducts_return_leakage_units: runner.getStringArgumentValue('ducts_return_leakage_units', user_arguments),
|
3164
3255
|
ducts_supply_leakage_value: runner.getDoubleArgumentValue('ducts_supply_leakage_value', user_arguments),
|
@@ -3176,6 +3267,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3176
3267
|
heating_system_heating_capacity_2: runner.getStringArgumentValue('heating_system_heating_capacity_2', user_arguments),
|
3177
3268
|
heating_system_fraction_heat_load_served_2: runner.getDoubleArgumentValue('heating_system_fraction_heat_load_served_2', user_arguments),
|
3178
3269
|
heating_system_electric_auxiliary_energy_2: runner.getOptionalDoubleArgumentValue('heating_system_electric_auxiliary_energy_2', user_arguments),
|
3270
|
+
heating_system_fan_power_watts_2: runner.getOptionalDoubleArgumentValue('heating_system_fan_power_watts_2', user_arguments),
|
3179
3271
|
heating_system_has_flue_or_chimney_2: runner.getBoolArgumentValue('heating_system_has_flue_or_chimney_2', user_arguments),
|
3180
3272
|
mech_vent_fan_type: runner.getStringArgumentValue('mech_vent_fan_type', user_arguments),
|
3181
3273
|
mech_vent_flow_rate: runner.getDoubleArgumentValue('mech_vent_flow_rate', user_arguments),
|
@@ -3185,8 +3277,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3185
3277
|
mech_vent_sensible_recovery_efficiency_type: runner.getStringArgumentValue('mech_vent_sensible_recovery_efficiency_type', user_arguments),
|
3186
3278
|
mech_vent_sensible_recovery_efficiency: runner.getDoubleArgumentValue('mech_vent_sensible_recovery_efficiency', user_arguments),
|
3187
3279
|
mech_vent_fan_power: runner.getDoubleArgumentValue('mech_vent_fan_power', user_arguments),
|
3188
|
-
|
3189
|
-
shared_mech_vent_in_unit_flow_rate: runner.getOptionalDoubleArgumentValue('shared_mech_vent_in_unit_flow_rate', user_arguments),
|
3280
|
+
mech_vent_num_units_served: runner.getIntegerArgumentValue('mech_vent_num_units_served', user_arguments),
|
3190
3281
|
shared_mech_vent_frac_recirculation: runner.getOptionalDoubleArgumentValue('shared_mech_vent_frac_recirculation', user_arguments),
|
3191
3282
|
shared_mech_vent_preheating_fuel: runner.getOptionalStringArgumentValue('shared_mech_vent_preheating_fuel', user_arguments),
|
3192
3283
|
shared_mech_vent_preheating_efficiency: runner.getOptionalDoubleArgumentValue('shared_mech_vent_preheating_efficiency', user_arguments),
|
@@ -3223,22 +3314,21 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3223
3314
|
water_heater_tank_volume: runner.getStringArgumentValue('water_heater_tank_volume', user_arguments),
|
3224
3315
|
water_heater_heating_capacity: runner.getStringArgumentValue('water_heater_heating_capacity', user_arguments),
|
3225
3316
|
water_heater_efficiency_type: runner.getStringArgumentValue('water_heater_efficiency_type', user_arguments),
|
3226
|
-
|
3227
|
-
|
3317
|
+
water_heater_efficiency: runner.getDoubleArgumentValue('water_heater_efficiency', user_arguments),
|
3318
|
+
water_heater_first_hour_rating: runner.getDoubleArgumentValue('water_heater_first_hour_rating', user_arguments),
|
3228
3319
|
water_heater_recovery_efficiency: runner.getStringArgumentValue('water_heater_recovery_efficiency', user_arguments),
|
3229
3320
|
water_heater_standby_loss: runner.getOptionalDoubleArgumentValue('water_heater_standby_loss', user_arguments),
|
3230
3321
|
water_heater_jacket_rvalue: runner.getOptionalDoubleArgumentValue('water_heater_jacket_rvalue', user_arguments),
|
3231
3322
|
water_heater_setpoint_temperature: runner.getStringArgumentValue('water_heater_setpoint_temperature', user_arguments),
|
3232
|
-
water_heater_performance_adjustment: runner.getOptionalDoubleArgumentValue('water_heater_performance_adjustment', user_arguments),
|
3233
3323
|
water_heater_has_flue_or_chimney: runner.getBoolArgumentValue('water_heater_has_flue_or_chimney', user_arguments),
|
3234
|
-
|
3324
|
+
water_heater_num_units_served: runner.getIntegerArgumentValue('water_heater_num_units_served', user_arguments),
|
3235
3325
|
dhw_distribution_system_type: runner.getStringArgumentValue('dhw_distribution_system_type', user_arguments),
|
3236
3326
|
dhw_distribution_standard_piping_length: runner.getStringArgumentValue('dhw_distribution_standard_piping_length', user_arguments),
|
3237
3327
|
dhw_distribution_recirc_control_type: runner.getStringArgumentValue('dhw_distribution_recirc_control_type', user_arguments),
|
3238
3328
|
dhw_distribution_recirc_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_piping_length', user_arguments),
|
3239
3329
|
dhw_distribution_recirc_branch_piping_length: runner.getStringArgumentValue('dhw_distribution_recirc_branch_piping_length', user_arguments),
|
3240
3330
|
dhw_distribution_recirc_pump_power: runner.getStringArgumentValue('dhw_distribution_recirc_pump_power', user_arguments),
|
3241
|
-
dhw_distribution_pipe_r: runner.
|
3331
|
+
dhw_distribution_pipe_r: runner.getStringArgumentValue('dhw_distribution_pipe_r', user_arguments),
|
3242
3332
|
dwhr_facilities_connected: runner.getStringArgumentValue('dwhr_facilities_connected', user_arguments),
|
3243
3333
|
dwhr_equal_flow: runner.getBoolArgumentValue('dwhr_equal_flow', user_arguments),
|
3244
3334
|
dwhr_efficiency: runner.getDoubleArgumentValue('dwhr_efficiency', user_arguments),
|
@@ -3263,7 +3353,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3263
3353
|
pv_system_max_power_output_1: runner.getDoubleArgumentValue('pv_system_max_power_output_1', user_arguments),
|
3264
3354
|
pv_system_inverter_efficiency_1: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_1', user_arguments),
|
3265
3355
|
pv_system_system_losses_fraction_1: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_1', user_arguments),
|
3266
|
-
|
3356
|
+
pv_system_num_units_served_1: runner.getIntegerArgumentValue('pv_system_num_units_served_1', user_arguments),
|
3267
3357
|
pv_system_module_type_2: runner.getStringArgumentValue('pv_system_module_type_2', user_arguments),
|
3268
3358
|
pv_system_location_2: runner.getStringArgumentValue('pv_system_location_2', user_arguments),
|
3269
3359
|
pv_system_tracking_2: runner.getStringArgumentValue('pv_system_tracking_2', user_arguments),
|
@@ -3272,7 +3362,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3272
3362
|
pv_system_max_power_output_2: runner.getDoubleArgumentValue('pv_system_max_power_output_2', user_arguments),
|
3273
3363
|
pv_system_inverter_efficiency_2: runner.getOptionalDoubleArgumentValue('pv_system_inverter_efficiency_2', user_arguments),
|
3274
3364
|
pv_system_system_losses_fraction_2: runner.getOptionalDoubleArgumentValue('pv_system_system_losses_fraction_2', user_arguments),
|
3275
|
-
|
3365
|
+
pv_system_num_units_served_2: runner.getIntegerArgumentValue('pv_system_num_units_served_2', user_arguments),
|
3276
3366
|
lighting_fraction_cfl_interior: runner.getDoubleArgumentValue('lighting_fraction_cfl_interior', user_arguments),
|
3277
3367
|
lighting_fraction_lfl_interior: runner.getDoubleArgumentValue('lighting_fraction_lfl_interior', user_arguments),
|
3278
3368
|
lighting_fraction_led_interior: runner.getDoubleArgumentValue('lighting_fraction_led_interior', user_arguments),
|
@@ -3292,6 +3382,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3292
3382
|
holiday_lighting_period_end_month: runner.getStringArgumentValue('holiday_lighting_period_end_month', user_arguments),
|
3293
3383
|
holiday_lighting_period_end_day_of_month: runner.getStringArgumentValue('holiday_lighting_period_end_day_of_month', user_arguments),
|
3294
3384
|
dehumidifier_present: runner.getBoolArgumentValue('dehumidifier_present', user_arguments),
|
3385
|
+
dehumidifier_type: runner.getStringArgumentValue('dehumidifier_type', user_arguments),
|
3295
3386
|
dehumidifier_efficiency_type: runner.getStringArgumentValue('dehumidifier_efficiency_type', user_arguments),
|
3296
3387
|
dehumidifier_efficiency_ef: runner.getDoubleArgumentValue('dehumidifier_efficiency_ef', user_arguments),
|
3297
3388
|
dehumidifier_efficiency_ief: runner.getDoubleArgumentValue('dehumidifier_efficiency_ief', user_arguments),
|
@@ -3354,30 +3445,33 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3354
3445
|
ceiling_fan_cooling_setpoint_temp_offset: runner.getDoubleArgumentValue('ceiling_fan_cooling_setpoint_temp_offset', user_arguments),
|
3355
3446
|
plug_loads_television_annual_kwh: runner.getStringArgumentValue('plug_loads_television_annual_kwh', user_arguments),
|
3356
3447
|
plug_loads_television_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_television_usage_multiplier', user_arguments),
|
3448
|
+
plug_loads_television_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_television_usage_multiplier_2', user_arguments),
|
3357
3449
|
plug_loads_other_annual_kwh: runner.getStringArgumentValue('plug_loads_other_annual_kwh', user_arguments),
|
3358
3450
|
plug_loads_other_frac_sensible: runner.getStringArgumentValue('plug_loads_other_frac_sensible', user_arguments),
|
3359
3451
|
plug_loads_other_frac_latent: runner.getStringArgumentValue('plug_loads_other_frac_latent', user_arguments),
|
3360
3452
|
plug_loads_other_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_other_usage_multiplier', user_arguments),
|
3453
|
+
plug_loads_other_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_other_usage_multiplier_2', user_arguments),
|
3361
3454
|
plug_loads_well_pump_present: runner.getBoolArgumentValue('plug_loads_well_pump_present', user_arguments),
|
3362
3455
|
plug_loads_well_pump_annual_kwh: runner.getStringArgumentValue('plug_loads_well_pump_annual_kwh', user_arguments),
|
3363
3456
|
plug_loads_well_pump_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_well_pump_usage_multiplier', user_arguments),
|
3457
|
+
plug_loads_well_pump_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_well_pump_usage_multiplier_2', user_arguments),
|
3364
3458
|
plug_loads_vehicle_present: runner.getBoolArgumentValue('plug_loads_vehicle_present', user_arguments),
|
3365
3459
|
plug_loads_vehicle_annual_kwh: runner.getStringArgumentValue('plug_loads_vehicle_annual_kwh', user_arguments),
|
3366
3460
|
plug_loads_vehicle_usage_multiplier: runner.getDoubleArgumentValue('plug_loads_vehicle_usage_multiplier', user_arguments),
|
3461
|
+
plug_loads_vehicle_usage_multiplier_2: runner.getDoubleArgumentValue('plug_loads_vehicle_usage_multiplier_2', user_arguments),
|
3367
3462
|
fuel_loads_grill_present: runner.getBoolArgumentValue('fuel_loads_grill_present', user_arguments),
|
3368
3463
|
fuel_loads_grill_fuel_type: runner.getStringArgumentValue('fuel_loads_grill_fuel_type', user_arguments),
|
3369
3464
|
fuel_loads_grill_annual_therm: runner.getStringArgumentValue('fuel_loads_grill_annual_therm', user_arguments),
|
3370
|
-
fuel_loads_grill_location: runner.getStringArgumentValue('fuel_loads_grill_location', user_arguments),
|
3371
3465
|
fuel_loads_grill_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_grill_usage_multiplier', user_arguments),
|
3372
3466
|
fuel_loads_lighting_present: runner.getBoolArgumentValue('fuel_loads_lighting_present', user_arguments),
|
3373
3467
|
fuel_loads_lighting_fuel_type: runner.getStringArgumentValue('fuel_loads_lighting_fuel_type', user_arguments),
|
3374
3468
|
fuel_loads_lighting_annual_therm: runner.getStringArgumentValue('fuel_loads_lighting_annual_therm', user_arguments),
|
3375
|
-
fuel_loads_lighting_location: runner.getStringArgumentValue('fuel_loads_lighting_location', user_arguments),
|
3376
3469
|
fuel_loads_lighting_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_lighting_usage_multiplier', user_arguments),
|
3377
3470
|
fuel_loads_fireplace_present: runner.getBoolArgumentValue('fuel_loads_fireplace_present', user_arguments),
|
3378
3471
|
fuel_loads_fireplace_fuel_type: runner.getStringArgumentValue('fuel_loads_fireplace_fuel_type', user_arguments),
|
3379
3472
|
fuel_loads_fireplace_annual_therm: runner.getStringArgumentValue('fuel_loads_fireplace_annual_therm', user_arguments),
|
3380
|
-
|
3473
|
+
fuel_loads_fireplace_frac_sensible: runner.getStringArgumentValue('fuel_loads_fireplace_frac_sensible', user_arguments),
|
3474
|
+
fuel_loads_fireplace_frac_latent: runner.getStringArgumentValue('fuel_loads_fireplace_frac_latent', user_arguments),
|
3381
3475
|
fuel_loads_fireplace_usage_multiplier: runner.getDoubleArgumentValue('fuel_loads_fireplace_usage_multiplier', user_arguments),
|
3382
3476
|
pool_present: runner.getBoolArgumentValue('pool_present', user_arguments),
|
3383
3477
|
pool_pump_annual_kwh: runner.getStringArgumentValue('pool_pump_annual_kwh', user_arguments),
|
@@ -3491,6 +3585,14 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3491
3585
|
error = ((args[:water_heater_type] == HPXML::WaterHeaterTypeCombiStorage) || (args[:water_heater_type] == HPXML::WaterHeaterTypeCombiTankless)) && (args[:heating_system_type] != HPXML::HVACTypeBoiler)
|
3492
3586
|
errors << "water_heater_type=#{args[:water_heater_type]} and heating_system_type=#{args[:heating_system_type]}" if error
|
3493
3587
|
|
3588
|
+
# no plug loads but specifying usage multipliers
|
3589
|
+
warning = (args[:plug_loads_television_annual_kwh] == 0.0 && (args[:plug_loads_television_usage_multiplier] != 0.0 || args[:plug_loads_television_usage_multiplier_2] != 0.0)) || (args[:plug_loads_other_annual_kwh] == 0.0 && (args[:plug_loads_other_usage_multiplier] != 0.0 || args[:plug_loads_other_usage_multiplier_2] != 0.0)) || (!args[:plug_loads_well_pump_present] && (args[:plug_loads_well_pump_usage_multiplier] != 0.0 || args[:plug_loads_well_pump_usage_multiplier_2] != 0.0)) || (!args[:plug_loads_vehicle_present] && (args[:plug_loads_vehicle_usage_multiplier] != 0.0 || args[:plug_loads_vehicle_usage_multiplier_2] != 0.0))
|
3590
|
+
warnings << "plug_loads_television_annual_kwh=#{args[:plug_loads_television_annual_kwh]} and plug_loads_television_usage_multiplier=#{args[:plug_loads_television_usage_multiplier]} and plug_loads_television_usage_multiplier_2=#{args[:plug_loads_television_usage_multiplier_2]} and plug_loads_other_annual_kwh=#{args[:plug_loads_other_annual_kwh]} and plug_loads_other_usage_multiplier=#{args[:plug_loads_other_usage_multiplier]} and plug_loads_other_usage_multiplier_2=#{args[:plug_loads_other_usage_multiplier_2]} and plug_loads_well_pump_present=#{args[:plug_loads_well_pump_present]} and plug_loads_well_pump_usage_multiplier=#{args[:plug_loads_well_pump_usage_multiplier]} and plug_loads_well_pump_usage_multiplier_2=#{args[:plug_loads_well_pump_usage_multiplier_2]} and plug_loads_vehicle_present=#{args[:plug_loads_vehicle_present]} and plug_loads_vehicle_usage_multiplier=#{args[:plug_loads_vehicle_usage_multiplier]} and plug_loads_vehicle_usage_multiplier_2=#{args[:plug_loads_vehicle_usage_multiplier_2]}" if warning
|
3591
|
+
|
3592
|
+
# no fuel loads but specifying usage multipliers
|
3593
|
+
warning = (!args[:fuel_loads_grill_present] && args[:fuel_loads_grill_usage_multiplier] != 0.0) || (!args[:fuel_loads_lighting_present] && args[:fuel_loads_lighting_usage_multiplier] != 0.0) || (!args[:fuel_loads_fireplace_present] && args[:fuel_loads_fireplace_usage_multiplier] != 0.0)
|
3594
|
+
warnings << "fuel_loads_grill_present=#{args[:fuel_loads_grill_present]} and fuel_loads_grill_usage_multiplier=#{args[:fuel_loads_grill_usage_multiplier]} and fuel_loads_lighting_present=#{args[:fuel_loads_lighting_present]} and fuel_loads_lighting_usage_multiplier=#{args[:fuel_loads_lighting_usage_multiplier]} and fuel_loads_fireplace_present=#{args[:fuel_loads_fireplace_present]} and fuel_loads_fireplace_usage_multiplier=#{args[:fuel_loads_fireplace_usage_multiplier]}" if warning
|
3595
|
+
|
3494
3596
|
return warnings, errors
|
3495
3597
|
end
|
3496
3598
|
|
@@ -3505,13 +3607,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3505
3607
|
is_valid = false
|
3506
3608
|
end
|
3507
3609
|
|
3508
|
-
# Validate input HPXML against
|
3509
|
-
|
3510
|
-
|
3610
|
+
# Validate input HPXML against schematron docs
|
3611
|
+
stron_paths = [File.join(schemas_dir, 'HPXMLvalidator.xml'),
|
3612
|
+
File.join(schemas_dir, 'EPvalidator.xml')]
|
3613
|
+
errors, warnings = Validator.run_validators(hpxml_doc, stron_paths)
|
3511
3614
|
errors.each do |error|
|
3512
3615
|
runner.registerError("#{hpxml_path}: #{error}")
|
3513
3616
|
is_valid = false
|
3514
3617
|
end
|
3618
|
+
warnings.each do |warning|
|
3619
|
+
runner.registerWarning("#{warning}")
|
3620
|
+
end
|
3515
3621
|
|
3516
3622
|
return is_valid
|
3517
3623
|
end
|
@@ -3623,12 +3729,18 @@ class HPXMLFile
|
|
3623
3729
|
return true
|
3624
3730
|
end
|
3625
3731
|
|
3732
|
+
info_msgs = []
|
3733
|
+
|
3626
3734
|
# set the calendar year
|
3627
3735
|
year_description = model.getYearDescription
|
3628
3736
|
year_description.setCalendarYear(2007) # default to TMY
|
3737
|
+
if args[:simulation_control_run_period_calendar_year].is_initialized
|
3738
|
+
year_description.setCalendarYear(args[:simulation_control_run_period_calendar_year].get)
|
3739
|
+
end
|
3629
3740
|
if epw_file.startDateActualYear.is_initialized # AMY
|
3630
3741
|
year_description.setCalendarYear(epw_file.startDateActualYear.get)
|
3631
3742
|
end
|
3743
|
+
info_msgs << "CalendarYear=#{year_description.calendarYear}"
|
3632
3744
|
|
3633
3745
|
# set the timestep
|
3634
3746
|
timestep = model.getTimestep
|
@@ -3636,8 +3748,13 @@ class HPXMLFile
|
|
3636
3748
|
if args[:simulation_control_timestep].is_initialized
|
3637
3749
|
timestep.setNumberOfTimestepsPerHour(60 / args[:simulation_control_timestep].get)
|
3638
3750
|
end
|
3751
|
+
info_msgs << "NumberOfTimestepsPerHour=#{timestep.numberOfTimestepsPerHour}"
|
3752
|
+
|
3753
|
+
# get the seed
|
3754
|
+
random_seed = args[:schedules_random_seed].get if args[:schedules_random_seed].is_initialized
|
3639
3755
|
|
3640
|
-
|
3756
|
+
# instantiate the generator
|
3757
|
+
schedule_generator = ScheduleGenerator.new(runner: runner, model: model, epw_file: epw_file, random_seed: random_seed)
|
3641
3758
|
|
3642
3759
|
# create the schedule
|
3643
3760
|
if args[:geometry_num_occupants] == Constants.Auto
|
@@ -3654,6 +3771,8 @@ class HPXMLFile
|
|
3654
3771
|
success = schedule_generator.export(schedules_path: File.expand_path(args[:schedules_path]))
|
3655
3772
|
return false if not success
|
3656
3773
|
|
3774
|
+
runner.registerInfo("Created schedule with #{info_msgs.join(', ')}")
|
3775
|
+
|
3657
3776
|
return true
|
3658
3777
|
end
|
3659
3778
|
|
@@ -3678,13 +3797,13 @@ class HPXMLFile
|
|
3678
3797
|
hpxml.header.sim_begin_month = args[:simulation_control_run_period_begin_month].get
|
3679
3798
|
end
|
3680
3799
|
if args[:simulation_control_run_period_begin_day_of_month].is_initialized
|
3681
|
-
hpxml.header.
|
3800
|
+
hpxml.header.sim_begin_day = args[:simulation_control_run_period_begin_day_of_month].get
|
3682
3801
|
end
|
3683
3802
|
if args[:simulation_control_run_period_end_month].is_initialized
|
3684
3803
|
hpxml.header.sim_end_month = args[:simulation_control_run_period_end_month].get
|
3685
3804
|
end
|
3686
3805
|
if args[:simulation_control_run_period_end_day_of_month].is_initialized
|
3687
|
-
hpxml.header.
|
3806
|
+
hpxml.header.sim_end_day = args[:simulation_control_run_period_end_day_of_month].get
|
3688
3807
|
end
|
3689
3808
|
if args[:simulation_control_run_period_calendar_year].is_initialized
|
3690
3809
|
hpxml.header.sim_calendar_year = args[:simulation_control_run_period_calendar_year].get
|
@@ -3697,13 +3816,13 @@ class HPXMLFile
|
|
3697
3816
|
hpxml.header.dst_begin_month = args[:simulation_control_daylight_saving_begin_month].get
|
3698
3817
|
end
|
3699
3818
|
if args[:simulation_control_daylight_saving_begin_day_of_month].is_initialized
|
3700
|
-
hpxml.header.
|
3819
|
+
hpxml.header.dst_begin_day = args[:simulation_control_daylight_saving_begin_day_of_month].get
|
3701
3820
|
end
|
3702
3821
|
if args[:simulation_control_daylight_saving_end_month].is_initialized
|
3703
3822
|
hpxml.header.dst_end_month = args[:simulation_control_daylight_saving_end_month].get
|
3704
3823
|
end
|
3705
3824
|
if args[:simulation_control_daylight_saving_end_day_of_month].is_initialized
|
3706
|
-
hpxml.header.
|
3825
|
+
hpxml.header.dst_end_day = args[:simulation_control_daylight_saving_end_day_of_month].get
|
3707
3826
|
end
|
3708
3827
|
|
3709
3828
|
hpxml.header.building_id = 'MyBuilding'
|
@@ -3724,23 +3843,19 @@ class HPXMLFile
|
|
3724
3843
|
end
|
3725
3844
|
|
3726
3845
|
def self.set_neighbor_buildings(hpxml, runner, args)
|
3727
|
-
[args[:neighbor_front_distance], args[:
|
3728
|
-
|
3846
|
+
nbr_map = { Constants.FacadeFront => [args[:neighbor_front_distance], args[:neighbor_front_height]],
|
3847
|
+
Constants.FacadeBack => [args[:neighbor_back_distance], args[:neighbor_back_height]],
|
3848
|
+
Constants.FacadeLeft => [args[:neighbor_left_distance], args[:neighbor_left_height]],
|
3849
|
+
Constants.FacadeRight => [args[:neighbor_right_distance], args[:neighbor_right_height]] }
|
3729
3850
|
|
3730
|
-
|
3731
|
-
|
3732
|
-
|
3733
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
3734
|
-
elsif i == 2 # left
|
3735
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
3736
|
-
elsif i == 3 # right
|
3737
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
3738
|
-
end
|
3851
|
+
nbr_map.each do |facade, data|
|
3852
|
+
distance, neighbor_height = data
|
3853
|
+
next if distance == 0
|
3739
3854
|
|
3740
|
-
|
3855
|
+
azimuth = get_azimuth_from_facade(facade, args)
|
3741
3856
|
|
3742
|
-
if (distance > 0) && (neighbor_height
|
3743
|
-
height = Float(neighbor_height
|
3857
|
+
if (distance > 0) && (neighbor_height != Constants.Auto)
|
3858
|
+
height = Float(neighbor_height)
|
3744
3859
|
end
|
3745
3860
|
|
3746
3861
|
hpxml.neighbor_buildings.add(azimuth: azimuth,
|
@@ -3756,11 +3871,15 @@ class HPXMLFile
|
|
3756
3871
|
end
|
3757
3872
|
|
3758
3873
|
def self.set_building_construction(hpxml, runner, args)
|
3759
|
-
|
3760
|
-
|
3761
|
-
|
3762
|
-
|
3763
|
-
|
3874
|
+
if args[:geometry_unit_type] == HPXML::ResidentialTypeApartment
|
3875
|
+
number_of_conditioned_floors_above_grade = 1
|
3876
|
+
number_of_conditioned_floors = 1
|
3877
|
+
else
|
3878
|
+
number_of_conditioned_floors_above_grade = args[:geometry_num_floors_above_grade]
|
3879
|
+
number_of_conditioned_floors = number_of_conditioned_floors_above_grade
|
3880
|
+
if args[:geometry_foundation_type] == HPXML::FoundationTypeBasementConditioned
|
3881
|
+
number_of_conditioned_floors += 1
|
3882
|
+
end
|
3764
3883
|
end
|
3765
3884
|
|
3766
3885
|
if args[:geometry_num_bathrooms] != Constants.Auto
|
@@ -3839,6 +3958,11 @@ class HPXMLFile
|
|
3839
3958
|
end
|
3840
3959
|
|
3841
3960
|
def self.set_roofs(hpxml, runner, model, args)
|
3961
|
+
args[:geometry_roof_pitch] *= 12.0
|
3962
|
+
if args[:geometry_roof_type] == 'flat'
|
3963
|
+
args[:geometry_roof_pitch] = 0.0
|
3964
|
+
end
|
3965
|
+
|
3842
3966
|
model.getSurfaces.sort.each do |surface|
|
3843
3967
|
next unless ['Outdoors'].include? surface.outsideBoundaryCondition
|
3844
3968
|
next if surface.surfaceType != 'RoofCeiling'
|
@@ -3846,11 +3970,6 @@ class HPXMLFile
|
|
3846
3970
|
interior_adjacent_to = get_adjacent_to(surface)
|
3847
3971
|
next if [HPXML::LocationOtherHousingUnit].include? interior_adjacent_to
|
3848
3972
|
|
3849
|
-
pitch = args[:geometry_roof_pitch] * 12.0
|
3850
|
-
if args[:geometry_roof_type] == 'flat'
|
3851
|
-
pitch = 0.0
|
3852
|
-
end
|
3853
|
-
|
3854
3973
|
if args[:roof_material_type].is_initialized
|
3855
3974
|
roof_type = args[:roof_material_type].get
|
3856
3975
|
end
|
@@ -3867,19 +3986,33 @@ class HPXMLFile
|
|
3867
3986
|
solar_absorptance = args[:roof_solar_absorptance]
|
3868
3987
|
end
|
3869
3988
|
|
3870
|
-
if args[:
|
3871
|
-
|
3989
|
+
if args[:roof_emittance] != Constants.Auto
|
3990
|
+
emittance = args[:roof_emittance]
|
3991
|
+
end
|
3992
|
+
|
3993
|
+
if args[:roof_radiant_barrier] != Constants.Auto
|
3994
|
+
radiant_barrier = args[:roof_radiant_barrier]
|
3995
|
+
if to_boolean(radiant_barrier)
|
3996
|
+
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
3997
|
+
end
|
3998
|
+
end
|
3999
|
+
|
4000
|
+
if args[:geometry_roof_type] == 'flat'
|
4001
|
+
azimuth = nil
|
4002
|
+
else
|
4003
|
+
azimuth = get_surface_azimuth(surface, args)
|
3872
4004
|
end
|
3873
4005
|
|
3874
4006
|
hpxml.roofs.add(id: valid_attr(surface.name),
|
3875
4007
|
interior_adjacent_to: get_adjacent_to(surface),
|
4008
|
+
azimuth: azimuth,
|
3876
4009
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3877
4010
|
roof_type: roof_type,
|
3878
4011
|
roof_color: roof_color,
|
3879
4012
|
solar_absorptance: solar_absorptance,
|
3880
|
-
emittance:
|
3881
|
-
pitch:
|
3882
|
-
radiant_barrier:
|
4013
|
+
emittance: emittance,
|
4014
|
+
pitch: args[:geometry_roof_pitch],
|
4015
|
+
radiant_barrier: radiant_barrier,
|
3883
4016
|
radiant_barrier_grade: radiant_barrier_grade,
|
3884
4017
|
insulation_assembly_r_value: args[:roof_assembly_r])
|
3885
4018
|
end
|
@@ -3891,37 +4024,52 @@ class HPXMLFile
|
|
3891
4024
|
end
|
3892
4025
|
end
|
3893
4026
|
|
4027
|
+
def self.get_adiabatic_adjacent_surface(model, surface)
|
4028
|
+
return if surface.outsideBoundaryCondition != 'Adiabatic'
|
4029
|
+
|
4030
|
+
adjacentSurfaceType = 'Wall'
|
4031
|
+
if surface.surfaceType == 'RoofCeiling'
|
4032
|
+
adjacentSurfaceType = 'Floor'
|
4033
|
+
elsif surface.surfaceType == 'Floor'
|
4034
|
+
adjacentSurfaceType = 'RoofCeiling'
|
4035
|
+
end
|
4036
|
+
|
4037
|
+
model.getSurfaces.sort.each do |adjacent_surface|
|
4038
|
+
next if surface == adjacent_surface
|
4039
|
+
next if adjacent_surface.surfaceType != adjacentSurfaceType
|
4040
|
+
next if adjacent_surface.outsideBoundaryCondition != 'Adiabatic'
|
4041
|
+
next if Geometry.getSurfaceXValues([surface]) != Geometry.getSurfaceXValues([adjacent_surface])
|
4042
|
+
next if Geometry.getSurfaceYValues([surface]) != Geometry.getSurfaceYValues([adjacent_surface])
|
4043
|
+
next if Geometry.getSurfaceZValues([surface]) != Geometry.getSurfaceZValues([adjacent_surface])
|
4044
|
+
|
4045
|
+
return adjacent_surface
|
4046
|
+
end
|
4047
|
+
return
|
4048
|
+
end
|
4049
|
+
|
3894
4050
|
def self.set_walls(hpxml, runner, model, args)
|
3895
4051
|
model.getSurfaces.sort.each do |surface|
|
3896
4052
|
next if surface.surfaceType != 'Wall'
|
3897
4053
|
|
3898
4054
|
interior_adjacent_to = get_adjacent_to(surface)
|
3899
|
-
|
3900
|
-
has_door = false
|
3901
|
-
surface.subSurfaces.each do |sub_surface|
|
3902
|
-
next if sub_surface.subSurfaceType != 'Door'
|
3903
|
-
|
3904
|
-
has_door = true
|
3905
|
-
end
|
3906
|
-
next unless has_door
|
3907
|
-
else
|
3908
|
-
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
3909
|
-
end
|
4055
|
+
next unless [HPXML::LocationLivingSpace, HPXML::LocationAtticUnvented, HPXML::LocationAtticVented, HPXML::LocationGarage].include? interior_adjacent_to
|
3910
4056
|
|
3911
4057
|
exterior_adjacent_to = HPXML::LocationOutside
|
3912
4058
|
if surface.adjacentSurface.is_initialized
|
3913
4059
|
exterior_adjacent_to = get_adjacent_to(surface.adjacentSurface.get)
|
3914
|
-
elsif surface.outsideBoundaryCondition == 'Adiabatic'
|
3915
|
-
|
4060
|
+
elsif surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to living space, attic, corridor
|
4061
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
4062
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
4063
|
+
exterior_adjacent_to = interior_adjacent_to
|
4064
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
4065
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
4066
|
+
end
|
4067
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
4068
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
4069
|
+
end
|
3916
4070
|
end
|
3917
4071
|
|
3918
|
-
if
|
3919
|
-
interior_adjacent_to = HPXML::LocationLivingSpace
|
3920
|
-
exterior_adjacent_to == HPXML::LocationOtherHousingUnit
|
3921
|
-
else
|
3922
|
-
next if interior_adjacent_to == exterior_adjacent_to
|
3923
|
-
end
|
3924
|
-
next if [HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include? exterior_adjacent_to
|
4072
|
+
next if exterior_adjacent_to == HPXML::LocationLivingSpace # already captured these surfaces
|
3925
4073
|
|
3926
4074
|
wall_type = args[:wall_type]
|
3927
4075
|
if [HPXML::LocationAtticUnvented, HPXML::LocationAtticVented].include? interior_adjacent_to
|
@@ -3944,15 +4092,22 @@ class HPXMLFile
|
|
3944
4092
|
solar_absorptance = args[:wall_solar_absorptance]
|
3945
4093
|
end
|
3946
4094
|
|
4095
|
+
if args[:wall_emittance] != Constants.Auto
|
4096
|
+
emittance = args[:wall_emittance]
|
4097
|
+
end
|
4098
|
+
|
4099
|
+
azimuth = get_surface_azimuth(surface, args)
|
4100
|
+
|
3947
4101
|
hpxml.walls.add(id: valid_attr(surface.name),
|
3948
4102
|
exterior_adjacent_to: exterior_adjacent_to,
|
3949
4103
|
interior_adjacent_to: interior_adjacent_to,
|
4104
|
+
azimuth: azimuth,
|
3950
4105
|
wall_type: wall_type,
|
3951
4106
|
siding: siding,
|
3952
4107
|
color: color,
|
3953
4108
|
solar_absorptance: solar_absorptance,
|
3954
4109
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3955
|
-
emittance:
|
4110
|
+
emittance: emittance)
|
3956
4111
|
|
3957
4112
|
is_uncond_attic_roof_insulated = false
|
3958
4113
|
if [HPXML::LocationAtticUnvented, HPXML::LocationAtticVented].include? interior_adjacent_to
|
@@ -3973,26 +4128,54 @@ class HPXMLFile
|
|
3973
4128
|
|
3974
4129
|
def self.set_foundation_walls(hpxml, runner, model, args)
|
3975
4130
|
model.getSurfaces.sort.each do |surface|
|
3976
|
-
next unless ['Foundation'].include? surface.outsideBoundaryCondition
|
3977
4131
|
next if surface.surfaceType != 'Wall'
|
4132
|
+
next unless ['Foundation', 'Adiabatic'].include? surface.outsideBoundaryCondition
|
4133
|
+
|
4134
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
4135
|
+
next unless [HPXML::LocationBasementConditioned, HPXML::LocationBasementUnconditioned, HPXML::LocationCrawlspaceUnvented, HPXML::LocationCrawlspaceVented].include? interior_adjacent_to
|
4136
|
+
|
4137
|
+
exterior_adjacent_to = HPXML::LocationGround
|
4138
|
+
if surface.outsideBoundaryCondition == 'Adiabatic' # can be adjacent to foundation space
|
4139
|
+
next if [HPXML::ResidentialTypeSFD, HPXML::ResidentialTypeManufactured].include? args[:geometry_unit_type] # these are surfaces for kiva
|
4140
|
+
|
4141
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
4142
|
+
if adjacent_surface.nil? # adjacent to a space that is not explicitly in the model
|
4143
|
+
exterior_adjacent_to = interior_adjacent_to
|
4144
|
+
if exterior_adjacent_to == HPXML::LocationLivingSpace # living adjacent to living
|
4145
|
+
exterior_adjacent_to = HPXML::LocationOtherHousingUnit
|
4146
|
+
end
|
4147
|
+
else # adjacent to a space that is explicitly in the model, e.g., corridor
|
4148
|
+
exterior_adjacent_to = get_adjacent_to(adjacent_surface)
|
4149
|
+
end
|
4150
|
+
end
|
3978
4151
|
|
3979
4152
|
if args[:foundation_wall_assembly_r].is_initialized && (args[:foundation_wall_assembly_r].get > 0)
|
3980
4153
|
insulation_assembly_r_value = args[:foundation_wall_assembly_r]
|
3981
4154
|
else
|
3982
|
-
|
3983
|
-
|
3984
|
-
|
4155
|
+
if interior_adjacent_to == exterior_adjacent_to # E.g., don't insulate wall between basement and neighbor basement
|
4156
|
+
insulation_exterior_r_value = 0
|
4157
|
+
insulation_exterior_distance_to_top = 0
|
4158
|
+
insulation_exterior_distance_to_bottom = 0
|
4159
|
+
else
|
4160
|
+
insulation_exterior_r_value = args[:foundation_wall_insulation_r]
|
4161
|
+
insulation_exterior_distance_to_top = args[:foundation_wall_insulation_distance_to_top]
|
4162
|
+
insulation_exterior_distance_to_bottom = args[:foundation_wall_insulation_distance_to_bottom]
|
4163
|
+
end
|
3985
4164
|
insulation_interior_r_value = 0
|
3986
4165
|
insulation_interior_distance_to_top = 0
|
3987
4166
|
insulation_interior_distance_to_bottom = 0
|
3988
4167
|
end
|
3989
4168
|
|
4169
|
+
if args[:foundation_wall_thickness] != Constants.Auto
|
4170
|
+
thickness = args[:foundation_wall_thickness]
|
4171
|
+
end
|
4172
|
+
|
3990
4173
|
hpxml.foundation_walls.add(id: valid_attr(surface.name),
|
3991
|
-
exterior_adjacent_to:
|
3992
|
-
interior_adjacent_to:
|
4174
|
+
exterior_adjacent_to: exterior_adjacent_to,
|
4175
|
+
interior_adjacent_to: interior_adjacent_to,
|
3993
4176
|
height: args[:geometry_foundation_height],
|
3994
4177
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
3995
|
-
thickness:
|
4178
|
+
thickness: thickness,
|
3996
4179
|
depth_below_grade: args[:geometry_foundation_height] - args[:geometry_foundation_height_above_grade],
|
3997
4180
|
insulation_assembly_r_value: insulation_assembly_r_value,
|
3998
4181
|
insulation_interior_r_value: insulation_interior_r_value,
|
@@ -4078,11 +4261,22 @@ class HPXMLFile
|
|
4078
4261
|
under_slab_insulation_width = args[:slab_under_width]
|
4079
4262
|
end
|
4080
4263
|
|
4081
|
-
|
4264
|
+
if args[:slab_thickness] != Constants.Auto
|
4265
|
+
thickness = args[:slab_thickness]
|
4266
|
+
end
|
4267
|
+
|
4082
4268
|
if interior_adjacent_to.include? 'crawlspace'
|
4083
4269
|
thickness = 0.0 # Assume soil
|
4084
4270
|
end
|
4085
4271
|
|
4272
|
+
if args[:slab_carpet_fraction] != Constants.Auto
|
4273
|
+
carpet_fraction = args[:slab_carpet_fraction]
|
4274
|
+
end
|
4275
|
+
|
4276
|
+
if args[:slab_carpet_r] != Constants.Auto
|
4277
|
+
carpet_r_value = args[:slab_carpet_r]
|
4278
|
+
end
|
4279
|
+
|
4086
4280
|
hpxml.slabs.add(id: valid_attr(surface.name),
|
4087
4281
|
interior_adjacent_to: interior_adjacent_to,
|
4088
4282
|
area: UnitConversions.convert(surface.grossArea, 'm^2', 'ft^2').round,
|
@@ -4094,8 +4288,8 @@ class HPXMLFile
|
|
4094
4288
|
under_slab_insulation_r_value: args[:slab_under_insulation_r],
|
4095
4289
|
under_slab_insulation_spans_entire_slab: under_slab_insulation_spans_entire_slab,
|
4096
4290
|
depth_below_grade: depth_below_grade,
|
4097
|
-
carpet_fraction:
|
4098
|
-
carpet_r_value:
|
4291
|
+
carpet_fraction: carpet_fraction,
|
4292
|
+
carpet_r_value: carpet_r_value)
|
4099
4293
|
end
|
4100
4294
|
end
|
4101
4295
|
|
@@ -4143,15 +4337,7 @@ class HPXMLFile
|
|
4143
4337
|
overhangs_distance_to_bottom_of_window = (overhangs_distance_to_top_of_window + sub_surface_height).round
|
4144
4338
|
end
|
4145
4339
|
|
4146
|
-
|
4147
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 0, args[:geometry_orientation], 0)
|
4148
|
-
elsif sub_surface_facade == Constants.FacadeBack
|
4149
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
4150
|
-
elsif sub_surface_facade == Constants.FacadeLeft
|
4151
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
4152
|
-
elsif sub_surface_facade == Constants.FacadeRight
|
4153
|
-
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
4154
|
-
end
|
4340
|
+
azimuth = get_azimuth_from_facade(sub_surface_facade, args)
|
4155
4341
|
|
4156
4342
|
if args[:window_interior_shading_winter].is_initialized
|
4157
4343
|
interior_shading_factor_winter = args[:window_interior_shading_winter].get
|
@@ -4200,13 +4386,21 @@ class HPXMLFile
|
|
4200
4386
|
|
4201
4387
|
def self.set_doors(hpxml, runner, model, args)
|
4202
4388
|
model.getSurfaces.sort.each do |surface|
|
4389
|
+
interior_adjacent_to = get_adjacent_to(surface)
|
4390
|
+
|
4391
|
+
adjacent_surface = surface
|
4392
|
+
if [HPXML::LocationOtherHousingUnit].include?(interior_adjacent_to)
|
4393
|
+
adjacent_surface = get_adiabatic_adjacent_surface(model, surface)
|
4394
|
+
next if adjacent_surface.nil?
|
4395
|
+
end
|
4396
|
+
|
4203
4397
|
surface.subSurfaces.sort.each do |sub_surface|
|
4204
4398
|
next if sub_surface.subSurfaceType != 'Door'
|
4205
4399
|
|
4206
4400
|
sub_surface_facade = Geometry.get_facade_for_surface(sub_surface)
|
4207
4401
|
|
4208
4402
|
hpxml.doors.add(id: "#{valid_attr(sub_surface.name)}_#{sub_surface_facade}",
|
4209
|
-
wall_idref: valid_attr(
|
4403
|
+
wall_idref: valid_attr(adjacent_surface.name),
|
4210
4404
|
area: UnitConversions.convert(sub_surface.grossArea, 'm^2', 'ft^2').round,
|
4211
4405
|
azimuth: args[:geometry_orientation],
|
4212
4406
|
r_value: args[:door_rvalue])
|
@@ -4241,6 +4435,16 @@ class HPXMLFile
|
|
4241
4435
|
heating_efficiency_percent = args[:heating_system_heating_efficiency]
|
4242
4436
|
end
|
4243
4437
|
|
4438
|
+
if [HPXML::HVACTypeFurnace].include? heating_system_type
|
4439
|
+
if args[:heating_system_fan_power_watts_per_cfm].is_initialized
|
4440
|
+
fan_watts_per_cfm = args[:heating_system_fan_power_watts_per_cfm].get
|
4441
|
+
end
|
4442
|
+
elsif [HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeStove, HPXML::HVACTypePortableHeater, HPXML::HVACTypeFireplace, HPXML::HVACTypeFixedHeater].include? heating_system_type
|
4443
|
+
if args[:heating_system_fan_power_watts].is_initialized
|
4444
|
+
fan_watts = args[:heating_system_fan_power_watts].get
|
4445
|
+
end
|
4446
|
+
end
|
4447
|
+
|
4244
4448
|
hpxml.heating_systems.add(id: 'HeatingSystem',
|
4245
4449
|
heating_system_type: heating_system_type,
|
4246
4450
|
heating_system_fuel: heating_system_fuel,
|
@@ -4248,7 +4452,9 @@ class HPXMLFile
|
|
4248
4452
|
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served],
|
4249
4453
|
electric_auxiliary_energy: electric_auxiliary_energy,
|
4250
4454
|
heating_efficiency_afue: heating_efficiency_afue,
|
4251
|
-
heating_efficiency_percent: heating_efficiency_percent
|
4455
|
+
heating_efficiency_percent: heating_efficiency_percent,
|
4456
|
+
fan_watts_per_cfm: fan_watts_per_cfm,
|
4457
|
+
fan_watts: fan_watts)
|
4252
4458
|
|
4253
4459
|
heating_system_type_2 = args[:heating_system_type_2]
|
4254
4460
|
|
@@ -4276,6 +4482,10 @@ class HPXMLFile
|
|
4276
4482
|
heating_efficiency_percent_2 = args[:heating_system_heating_efficiency_2]
|
4277
4483
|
end
|
4278
4484
|
|
4485
|
+
if args[:heating_system_fan_power_watts_2].is_initialized
|
4486
|
+
fan_watts = args[:heating_system_fan_power_watts_2].get
|
4487
|
+
end
|
4488
|
+
|
4279
4489
|
hpxml.heating_systems.add(id: 'SecondHeatingSystem',
|
4280
4490
|
heating_system_type: heating_system_type_2,
|
4281
4491
|
heating_system_fuel: heating_system_fuel_2,
|
@@ -4283,7 +4493,8 @@ class HPXMLFile
|
|
4283
4493
|
fraction_heat_load_served: args[:heating_system_fraction_heat_load_served_2],
|
4284
4494
|
electric_auxiliary_energy: electric_auxiliary_energy_2,
|
4285
4495
|
heating_efficiency_afue: heating_efficiency_afue_2,
|
4286
|
-
heating_efficiency_percent: heating_efficiency_percent_2
|
4496
|
+
heating_efficiency_percent: heating_efficiency_percent_2,
|
4497
|
+
fan_watts: fan_watts)
|
4287
4498
|
end
|
4288
4499
|
|
4289
4500
|
def self.set_cooling_systems(hpxml, runner, args)
|
@@ -4315,6 +4526,12 @@ class HPXMLFile
|
|
4315
4526
|
cooling_efficiency_eer = args[:cooling_system_cooling_efficiency_eer]
|
4316
4527
|
end
|
4317
4528
|
|
4529
|
+
if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeEvaporativeCooler, HPXML::HVACTypeMiniSplitAirConditioner].include? cooling_system_type
|
4530
|
+
if args[:cooling_system_fan_power_watts_per_cfm].is_initialized
|
4531
|
+
fan_watts_per_cfm = args[:cooling_system_fan_power_watts_per_cfm].get
|
4532
|
+
end
|
4533
|
+
end
|
4534
|
+
|
4318
4535
|
hpxml.cooling_systems.add(id: 'CoolingSystem',
|
4319
4536
|
cooling_system_type: cooling_system_type,
|
4320
4537
|
cooling_system_fuel: HPXML::FuelTypeElectricity,
|
@@ -4323,7 +4540,8 @@ class HPXMLFile
|
|
4323
4540
|
compressor_type: compressor_type,
|
4324
4541
|
cooling_shr: cooling_shr,
|
4325
4542
|
cooling_efficiency_seer: cooling_efficiency_seer,
|
4326
|
-
cooling_efficiency_eer: cooling_efficiency_eer
|
4543
|
+
cooling_efficiency_eer: cooling_efficiency_eer,
|
4544
|
+
fan_watts_per_cfm: fan_watts_per_cfm)
|
4327
4545
|
end
|
4328
4546
|
|
4329
4547
|
def self.set_heat_pumps(hpxml, runner, args)
|
@@ -4381,13 +4599,13 @@ class HPXMLFile
|
|
4381
4599
|
heating_efficiency_cop = args[:heat_pump_heating_efficiency_cop]
|
4382
4600
|
cooling_efficiency_eer = args[:heat_pump_cooling_efficiency_eer]
|
4383
4601
|
|
4384
|
-
if args[:
|
4385
|
-
pump_watts_per_ton = args[:
|
4602
|
+
if args[:heat_pump_pump_power_watts_per_ton].is_initialized
|
4603
|
+
pump_watts_per_ton = args[:heat_pump_pump_power_watts_per_ton].get
|
4386
4604
|
end
|
4605
|
+
end
|
4387
4606
|
|
4388
|
-
|
4389
|
-
|
4390
|
-
end
|
4607
|
+
if args[:heat_pump_fan_power_watts_per_cfm].is_initialized
|
4608
|
+
fan_watts_per_cfm = args[:heat_pump_fan_power_watts_per_cfm].get
|
4391
4609
|
end
|
4392
4610
|
|
4393
4611
|
hpxml.heat_pumps.add(id: 'HeatPump',
|
@@ -4507,21 +4725,51 @@ class HPXMLFile
|
|
4507
4725
|
end
|
4508
4726
|
end
|
4509
4727
|
|
4728
|
+
def self.modify_setpoint_schedule(schedule, offset_magnitude, offset_schedule)
|
4729
|
+
offset_schedule.each_with_index do |direction, i|
|
4730
|
+
schedule[i] += offset_magnitude * direction
|
4731
|
+
end
|
4732
|
+
return schedule
|
4733
|
+
end
|
4734
|
+
|
4510
4735
|
def self.set_hvac_control(hpxml, runner, args)
|
4511
4736
|
return if (args[:heating_system_type] == 'none') && (args[:cooling_system_type] == 'none') && (args[:heat_pump_type] == 'none')
|
4512
4737
|
|
4513
|
-
|
4514
|
-
|
4515
|
-
|
4516
|
-
|
4738
|
+
weekday_heating_setpoints = [args[:setpoint_heating_weekday_temp]] * 24
|
4739
|
+
weekend_heating_setpoints = [args[:setpoint_heating_weekend_temp]] * 24
|
4740
|
+
|
4741
|
+
weekday_cooling_setpoints = [args[:setpoint_cooling_weekday_temp]] * 24
|
4742
|
+
weekend_cooling_setpoints = [args[:setpoint_cooling_weekend_temp]] * 24
|
4743
|
+
|
4744
|
+
if args[:setpoint_heating_weekday_offset_magnitude].is_initialized && args[:setpoint_heating_weekday_schedule].is_initialized
|
4745
|
+
setpoint_heating_weekday_offset_magnitude = args[:setpoint_heating_weekday_offset_magnitude].get
|
4746
|
+
setpoint_heating_weekday_schedule = args[:setpoint_heating_weekday_schedule].get.split(',').map { |i| Float(i) }
|
4747
|
+
weekday_heating_setpoints = modify_setpoint_schedule(weekday_heating_setpoints, setpoint_heating_weekday_offset_magnitude, setpoint_heating_weekday_schedule)
|
4748
|
+
end
|
4749
|
+
|
4750
|
+
if args[:setpoint_heating_weekend_offset_magnitude].is_initialized && args[:setpoint_heating_weekend_schedule].is_initialized
|
4751
|
+
setpoint_heating_weekend_offset_magnitude = args[:setpoint_heating_weekend_offset_magnitude].get
|
4752
|
+
setpoint_heating_weekend_schedule = args[:setpoint_heating_weekend_schedule].get.split(',').map { |i| Float(i) }
|
4753
|
+
weekend_heating_setpoints = modify_setpoint_schedule(weekend_heating_setpoints, setpoint_heating_weekend_offset_magnitude, setpoint_heating_weekend_schedule)
|
4754
|
+
end
|
4755
|
+
|
4756
|
+
if args[:setpoint_cooling_weekday_offset_magnitude].is_initialized && args[:setpoint_cooling_weekday_schedule].is_initialized
|
4757
|
+
setpoint_cooling_weekday_offset_magnitude = args[:setpoint_cooling_weekday_offset_magnitude].get
|
4758
|
+
setpoint_cooling_weekday_schedule = args[:setpoint_cooling_weekday_schedule].get.split(',').map { |i| Float(i) }
|
4759
|
+
weekday_cooling_setpoints = modify_setpoint_schedule(weekday_cooling_setpoints, setpoint_cooling_weekday_offset_magnitude, setpoint_cooling_weekday_schedule)
|
4517
4760
|
end
|
4518
4761
|
|
4519
|
-
if
|
4520
|
-
|
4521
|
-
|
4522
|
-
|
4762
|
+
if args[:setpoint_cooling_weekend_offset_magnitude].is_initialized && args[:setpoint_cooling_weekend_schedule].is_initialized
|
4763
|
+
setpoint_cooling_weekend_offset_magnitude = args[:setpoint_cooling_weekend_offset_magnitude].get
|
4764
|
+
setpoint_cooling_weekend_schedule = args[:setpoint_cooling_weekend_schedule].get.split(',').map { |i| Float(i) }
|
4765
|
+
weekend_cooling_setpoints = modify_setpoint_schedule(weekend_cooling_setpoints, setpoint_cooling_weekend_offset_magnitude, setpoint_cooling_weekend_schedule)
|
4523
4766
|
end
|
4524
4767
|
|
4768
|
+
weekday_heating_setpoints = weekday_heating_setpoints.join(', ')
|
4769
|
+
weekend_heating_setpoints = weekend_heating_setpoints.join(', ')
|
4770
|
+
weekday_cooling_setpoints = weekday_cooling_setpoints.join(', ')
|
4771
|
+
weekend_cooling_setpoints = weekend_cooling_setpoints.join(', ')
|
4772
|
+
|
4525
4773
|
ceiling_fan_quantity = nil
|
4526
4774
|
if args[:ceiling_fan_quantity] != Constants.Auto
|
4527
4775
|
ceiling_fan_quantity = Float(args[:ceiling_fan_quantity])
|
@@ -4532,14 +4780,10 @@ class HPXMLFile
|
|
4532
4780
|
end
|
4533
4781
|
|
4534
4782
|
hpxml.hvac_controls.add(id: 'HVACControl',
|
4535
|
-
|
4536
|
-
|
4537
|
-
|
4538
|
-
|
4539
|
-
heating_setback_start_hour: heating_setback_start_hour,
|
4540
|
-
cooling_setup_temp: cooling_setup_temp,
|
4541
|
-
cooling_setup_hours_per_week: cooling_setup_hours_per_week,
|
4542
|
-
cooling_setup_start_hour: cooling_setup_start_hour,
|
4783
|
+
weekday_heating_setpoints: weekday_heating_setpoints,
|
4784
|
+
weekend_heating_setpoints: weekend_heating_setpoints,
|
4785
|
+
weekday_cooling_setpoints: weekday_cooling_setpoints,
|
4786
|
+
weekend_cooling_setpoints: weekend_cooling_setpoints,
|
4543
4787
|
ceiling_fan_cooling_setpoint_temp_offset: ceiling_fan_cooling_setpoint_temp_offset)
|
4544
4788
|
end
|
4545
4789
|
|
@@ -4575,9 +4819,9 @@ class HPXMLFile
|
|
4575
4819
|
end
|
4576
4820
|
end
|
4577
4821
|
|
4578
|
-
if args[:
|
4579
|
-
is_shared_system =
|
4580
|
-
in_unit_flow_rate = args[:
|
4822
|
+
if args[:mech_vent_num_units_served] > 1
|
4823
|
+
is_shared_system = true
|
4824
|
+
in_unit_flow_rate = args[:mech_vent_flow_rate] / args[:mech_vent_num_units_served].to_f
|
4581
4825
|
fraction_recirculation = args[:shared_mech_vent_frac_recirculation].get
|
4582
4826
|
if args[:shared_mech_vent_preheating_fuel].is_initialized && args[:shared_mech_vent_preheating_efficiency].is_initialized && args[:shared_mech_vent_preheating_fraction_heat_load_served].is_initialized
|
4583
4827
|
preheating_fuel = args[:shared_mech_vent_preheating_fuel].get
|
@@ -4759,9 +5003,12 @@ class HPXMLFile
|
|
4759
5003
|
|
4760
5004
|
if not [HPXML::WaterHeaterTypeCombiStorage, HPXML::WaterHeaterTypeCombiTankless].include? water_heater_type
|
4761
5005
|
if args[:water_heater_efficiency_type] == 'EnergyFactor'
|
4762
|
-
energy_factor = args[:
|
5006
|
+
energy_factor = args[:water_heater_efficiency]
|
4763
5007
|
elsif args[:water_heater_efficiency_type] == 'UniformEnergyFactor'
|
4764
|
-
uniform_energy_factor = args[:
|
5008
|
+
uniform_energy_factor = args[:water_heater_efficiency]
|
5009
|
+
if water_heater_type != HPXML::WaterHeaterTypeTankless
|
5010
|
+
first_hour_rating = args[:water_heater_first_hour_rating]
|
5011
|
+
end
|
4765
5012
|
end
|
4766
5013
|
end
|
4767
5014
|
|
@@ -4771,6 +5018,10 @@ class HPXMLFile
|
|
4771
5018
|
end
|
4772
5019
|
end
|
4773
5020
|
|
5021
|
+
if [HPXML::WaterHeaterTypeTankless, HPXML::WaterHeaterTypeCombiTankless].include? water_heater_type
|
5022
|
+
tank_volume = nil
|
5023
|
+
end
|
5024
|
+
|
4774
5025
|
if [HPXML::WaterHeaterTypeTankless].include? water_heater_type
|
4775
5026
|
heating_capacity = nil
|
4776
5027
|
recovery_efficiency = nil
|
@@ -4802,27 +5053,21 @@ class HPXMLFile
|
|
4802
5053
|
end
|
4803
5054
|
end
|
4804
5055
|
|
4805
|
-
if [
|
4806
|
-
|
4807
|
-
|
4808
|
-
end
|
4809
|
-
end
|
4810
|
-
|
4811
|
-
if args[:water_heater_is_shared_system]
|
4812
|
-
is_shared_system = args[:water_heater_is_shared_system]
|
4813
|
-
number_of_units_served = args[:geometry_building_num_units].get
|
5056
|
+
if args[:water_heater_num_units_served] > 1
|
5057
|
+
is_shared_system = true
|
5058
|
+
number_of_units_served = args[:water_heater_num_units_served]
|
4814
5059
|
end
|
4815
5060
|
|
4816
5061
|
hpxml.water_heating_systems.add(id: 'WaterHeater',
|
4817
5062
|
water_heater_type: water_heater_type,
|
4818
5063
|
fuel_type: fuel_type,
|
4819
5064
|
location: location,
|
4820
|
-
performance_adjustment: performance_adjustment,
|
4821
5065
|
tank_volume: tank_volume,
|
4822
5066
|
fraction_dhw_load_served: 1.0,
|
4823
5067
|
heating_capacity: heating_capacity,
|
4824
5068
|
energy_factor: energy_factor,
|
4825
5069
|
uniform_energy_factor: uniform_energy_factor,
|
5070
|
+
first_hour_rating: first_hour_rating,
|
4826
5071
|
recovery_efficiency: recovery_efficiency,
|
4827
5072
|
related_hvac_idref: related_hvac_idref,
|
4828
5073
|
standby_loss: standby_loss,
|
@@ -4861,6 +5106,10 @@ class HPXMLFile
|
|
4861
5106
|
end
|
4862
5107
|
end
|
4863
5108
|
|
5109
|
+
if args[:dhw_distribution_pipe_r] != Constants.Auto
|
5110
|
+
pipe_r_value = args[:dhw_distribution_pipe_r]
|
5111
|
+
end
|
5112
|
+
|
4864
5113
|
hpxml.hot_water_distributions.add(id: 'HotWaterDistribution',
|
4865
5114
|
system_type: args[:dhw_distribution_system_type],
|
4866
5115
|
standard_piping_length: standard_piping_length,
|
@@ -4868,7 +5117,7 @@ class HPXMLFile
|
|
4868
5117
|
recirculation_piping_length: recirculation_piping_length,
|
4869
5118
|
recirculation_branch_piping_length: recirculation_branch_piping_length,
|
4870
5119
|
recirculation_pump_power: recirculation_pump_power,
|
4871
|
-
pipe_r_value:
|
5120
|
+
pipe_r_value: pipe_r_value,
|
4872
5121
|
dwhr_facilities_connected: dwhr_facilities_connected,
|
4873
5122
|
dwhr_equal_flow: dwhr_equal_flow,
|
4874
5123
|
dwhr_efficiency: dwhr_efficiency)
|
@@ -4912,7 +5161,7 @@ class HPXMLFile
|
|
4912
5161
|
collector_loop_type = args[:solar_thermal_collector_loop_type]
|
4913
5162
|
collector_type = args[:solar_thermal_collector_type]
|
4914
5163
|
collector_azimuth = args[:solar_thermal_collector_azimuth]
|
4915
|
-
collector_tilt = get_absolute_tilt(args[:solar_thermal_collector_tilt],
|
5164
|
+
collector_tilt = get_absolute_tilt(args[:solar_thermal_collector_tilt], args[:geometry_roof_pitch], epw_file)
|
4916
5165
|
collector_frta = args[:solar_thermal_collector_rated_optical_efficiency]
|
4917
5166
|
collector_frul = args[:solar_thermal_collector_rated_thermal_losses]
|
4918
5167
|
|
@@ -4940,8 +5189,20 @@ class HPXMLFile
|
|
4940
5189
|
end
|
4941
5190
|
|
4942
5191
|
def self.set_pv_systems(hpxml, runner, args, epw_file)
|
4943
|
-
[args[:pv_system_module_type_1], args[:pv_system_module_type_2]].each_with_index do |
|
4944
|
-
next if
|
5192
|
+
[args[:pv_system_module_type_1], args[:pv_system_module_type_2]].each_with_index do |pv_system_module_type, i|
|
5193
|
+
next if pv_system_module_type == 'none'
|
5194
|
+
|
5195
|
+
if [args[:pv_system_module_type_1], args[:pv_system_module_type_2]][i] != Constants.Auto
|
5196
|
+
module_type = [args[:pv_system_module_type_1], args[:pv_system_module_type_2]][i]
|
5197
|
+
end
|
5198
|
+
|
5199
|
+
if [args[:pv_system_location_1], args[:pv_system_location_2]][i] != Constants.Auto
|
5200
|
+
location = [args[:pv_system_location_1], args[:pv_system_location_2]][i]
|
5201
|
+
end
|
5202
|
+
|
5203
|
+
if [args[:pv_system_tracking_1], args[:pv_system_tracking_2]][i] != Constants.Auto
|
5204
|
+
tracking = [args[:pv_system_tracking_1], args[:pv_system_tracking_2]][i]
|
5205
|
+
end
|
4945
5206
|
|
4946
5207
|
max_power_output = [args[:pv_system_max_power_output_1], args[:pv_system_max_power_output_2]][i]
|
4947
5208
|
|
@@ -4953,17 +5214,18 @@ class HPXMLFile
|
|
4953
5214
|
system_losses_fraction = [args[:pv_system_system_losses_fraction_1], args[:pv_system_system_losses_fraction_2]][i].get
|
4954
5215
|
end
|
4955
5216
|
|
4956
|
-
|
4957
|
-
|
4958
|
-
|
5217
|
+
num_units_served = [args[:pv_system_num_units_served_1], args[:pv_system_num_units_served_2]][i]
|
5218
|
+
if num_units_served > 1
|
5219
|
+
is_shared_system = true
|
5220
|
+
number_of_bedrooms_served = (args[:geometry_building_num_bedrooms].get * num_units_served / args[:geometry_building_num_units].get).to_i
|
4959
5221
|
end
|
4960
5222
|
|
4961
5223
|
hpxml.pv_systems.add(id: "PVSystem#{i + 1}",
|
4962
|
-
location:
|
5224
|
+
location: location,
|
4963
5225
|
module_type: module_type,
|
4964
|
-
tracking:
|
5226
|
+
tracking: tracking,
|
4965
5227
|
array_azimuth: [args[:pv_system_array_azimuth_1], args[:pv_system_array_azimuth_2]][i],
|
4966
|
-
array_tilt: get_absolute_tilt([args[:pv_system_array_tilt_1], args[:pv_system_array_tilt_2]][i],
|
5228
|
+
array_tilt: get_absolute_tilt([args[:pv_system_array_tilt_1], args[:pv_system_array_tilt_2]][i], args[:geometry_roof_pitch], epw_file),
|
4967
5229
|
max_power_output: max_power_output,
|
4968
5230
|
inverter_efficiency: inverter_efficiency,
|
4969
5231
|
system_losses_fraction: system_losses_fraction,
|
@@ -5035,7 +5297,7 @@ class HPXMLFile
|
|
5035
5297
|
end
|
5036
5298
|
|
5037
5299
|
if args[:holiday_lighting_period_begin_day_of_month] != Constants.Auto
|
5038
|
-
hpxml.lighting.
|
5300
|
+
hpxml.lighting.holiday_period_begin_day = args[:holiday_lighting_period_begin_day_of_month]
|
5039
5301
|
end
|
5040
5302
|
|
5041
5303
|
if args[:holiday_lighting_period_end_month] != Constants.Auto
|
@@ -5043,7 +5305,7 @@ class HPXMLFile
|
|
5043
5305
|
end
|
5044
5306
|
|
5045
5307
|
if args[:holiday_lighting_period_end_day_of_month] != Constants.Auto
|
5046
|
-
hpxml.lighting.
|
5308
|
+
hpxml.lighting.holiday_period_end_day = args[:holiday_lighting_period_end_day_of_month]
|
5047
5309
|
end
|
5048
5310
|
end
|
5049
5311
|
|
@@ -5057,6 +5319,7 @@ class HPXMLFile
|
|
5057
5319
|
end
|
5058
5320
|
|
5059
5321
|
hpxml.dehumidifiers.add(id: 'Dehumidifier',
|
5322
|
+
type: args[:dehumidifier_type],
|
5060
5323
|
capacity: args[:dehumidifier_capacity],
|
5061
5324
|
energy_factor: energy_factor,
|
5062
5325
|
integrated_energy_factor: integrated_energy_factor,
|
@@ -5339,8 +5602,9 @@ class HPXMLFile
|
|
5339
5602
|
kWh_per_year = args[:plug_loads_television_annual_kwh]
|
5340
5603
|
end
|
5341
5604
|
|
5342
|
-
|
5343
|
-
|
5605
|
+
usage_multiplier = args[:plug_loads_television_usage_multiplier] * args[:plug_loads_television_usage_multiplier_2]
|
5606
|
+
if usage_multiplier == 1.0
|
5607
|
+
usage_multiplier = nil
|
5344
5608
|
end
|
5345
5609
|
|
5346
5610
|
hpxml.plug_loads.add(id: 'PlugLoadsTelevision',
|
@@ -5362,8 +5626,9 @@ class HPXMLFile
|
|
5362
5626
|
frac_latent = args[:plug_loads_other_frac_latent]
|
5363
5627
|
end
|
5364
5628
|
|
5365
|
-
|
5366
|
-
|
5629
|
+
usage_multiplier = args[:plug_loads_other_usage_multiplier] * args[:plug_loads_other_usage_multiplier_2]
|
5630
|
+
if usage_multiplier == 1.0
|
5631
|
+
usage_multiplier = nil
|
5367
5632
|
end
|
5368
5633
|
|
5369
5634
|
hpxml.plug_loads.add(id: 'PlugLoadsOther',
|
@@ -5381,30 +5646,15 @@ class HPXMLFile
|
|
5381
5646
|
kWh_per_year = args[:plug_loads_well_pump_annual_kwh]
|
5382
5647
|
end
|
5383
5648
|
|
5384
|
-
|
5385
|
-
|
5386
|
-
|
5387
|
-
|
5388
|
-
if args[:plug_loads_well_pump_weekday_fractions] != Constants.Auto
|
5389
|
-
weekday_fractions = args[:plug_loads_well_pump_weekday_fractions]
|
5390
|
-
end
|
5391
|
-
|
5392
|
-
if args[:plug_loads_well_pump_weekend_fractions] != Constants.Auto
|
5393
|
-
weekend_fractions = args[:plug_loads_well_pump_weekend_fractions]
|
5394
|
-
end
|
5395
|
-
|
5396
|
-
if args[:plug_loads_well_pump_monthly_multipliers] != Constants.Auto
|
5397
|
-
monthly_multipliers = args[:plug_loads_well_pump_monthly_multipliers]
|
5649
|
+
usage_multiplier = args[:plug_loads_well_pump_usage_multiplier] * args[:plug_loads_well_pump_usage_multiplier_2]
|
5650
|
+
if usage_multiplier == 1.0
|
5651
|
+
usage_multiplier = nil
|
5398
5652
|
end
|
5399
5653
|
|
5400
5654
|
hpxml.plug_loads.add(id: 'PlugLoadsWellPump',
|
5401
5655
|
plug_load_type: HPXML::PlugLoadTypeWellPump,
|
5402
5656
|
kWh_per_year: kWh_per_year,
|
5403
|
-
usage_multiplier: usage_multiplier
|
5404
|
-
weekday_fractions: weekday_fractions,
|
5405
|
-
weekend_fractions: weekend_fractions,
|
5406
|
-
monthly_multipliers: monthly_multipliers,
|
5407
|
-
location: HPXML::LocationExterior)
|
5657
|
+
usage_multiplier: usage_multiplier)
|
5408
5658
|
end
|
5409
5659
|
|
5410
5660
|
def self.set_plug_loads_vehicle(hpxml, runner, args)
|
@@ -5414,30 +5664,15 @@ class HPXMLFile
|
|
5414
5664
|
kWh_per_year = args[:plug_loads_vehicle_annual_kwh]
|
5415
5665
|
end
|
5416
5666
|
|
5417
|
-
|
5418
|
-
|
5419
|
-
|
5420
|
-
|
5421
|
-
if args[:plug_loads_vehicle_weekday_fractions] != Constants.Auto
|
5422
|
-
weekday_fractions = args[:plug_loads_vehicle_weekday_fractions]
|
5423
|
-
end
|
5424
|
-
|
5425
|
-
if args[:plug_loads_vehicle_weekend_fractions] != Constants.Auto
|
5426
|
-
weekend_fractions = args[:plug_loads_vehicle_weekend_fractions]
|
5427
|
-
end
|
5428
|
-
|
5429
|
-
if args[:plug_loads_vehicle_monthly_multipliers] != Constants.Auto
|
5430
|
-
monthly_multipliers = args[:plug_loads_vehicle_monthly_multipliers]
|
5667
|
+
usage_multiplier = args[:plug_loads_vehicle_usage_multiplier] * args[:plug_loads_vehicle_usage_multiplier_2]
|
5668
|
+
if usage_multiplier == 1.0
|
5669
|
+
usage_multiplier = nil
|
5431
5670
|
end
|
5432
5671
|
|
5433
5672
|
hpxml.plug_loads.add(id: 'PlugLoadsVehicle',
|
5434
5673
|
plug_load_type: HPXML::PlugLoadTypeElectricVehicleCharging,
|
5435
5674
|
kWh_per_year: kWh_per_year,
|
5436
|
-
usage_multiplier: usage_multiplier
|
5437
|
-
weekday_fractions: weekday_fractions,
|
5438
|
-
weekend_fractions: weekend_fractions,
|
5439
|
-
monthly_multipliers: monthly_multipliers,
|
5440
|
-
location: HPXML::LocationExterior)
|
5675
|
+
usage_multiplier: usage_multiplier)
|
5441
5676
|
end
|
5442
5677
|
|
5443
5678
|
def self.set_fuel_loads_grill(hpxml, runner, args)
|
@@ -5446,10 +5681,6 @@ class HPXMLFile
|
|
5446
5681
|
therm_per_year = args[:fuel_loads_grill_annual_therm]
|
5447
5682
|
end
|
5448
5683
|
|
5449
|
-
if args[:fuel_loads_grill_location] != Constants.Auto
|
5450
|
-
location = args[:fuel_loads_grill_location]
|
5451
|
-
end
|
5452
|
-
|
5453
5684
|
if args[:fuel_loads_grill_usage_multiplier] != 1.0
|
5454
5685
|
usage_multiplier = args[:fuel_loads_grill_usage_multiplier]
|
5455
5686
|
end
|
@@ -5457,7 +5688,6 @@ class HPXMLFile
|
|
5457
5688
|
hpxml.fuel_loads.add(id: 'FuelLoadsGrill',
|
5458
5689
|
fuel_load_type: HPXML::FuelLoadTypeGrill,
|
5459
5690
|
fuel_type: args[:fuel_loads_grill_fuel_type],
|
5460
|
-
location: location,
|
5461
5691
|
therm_per_year: therm_per_year,
|
5462
5692
|
usage_multiplier: usage_multiplier)
|
5463
5693
|
end
|
@@ -5469,10 +5699,6 @@ class HPXMLFile
|
|
5469
5699
|
therm_per_year = args[:fuel_loads_lighting_annual_therm]
|
5470
5700
|
end
|
5471
5701
|
|
5472
|
-
if args[:fuel_loads_lighting_location] != Constants.Auto
|
5473
|
-
location = args[:fuel_loads_lighting_location]
|
5474
|
-
end
|
5475
|
-
|
5476
5702
|
if args[:fuel_loads_lighting_usage_multiplier] != 1.0
|
5477
5703
|
usage_multiplier = args[:fuel_loads_lighting_usage_multiplier]
|
5478
5704
|
end
|
@@ -5480,7 +5706,6 @@ class HPXMLFile
|
|
5480
5706
|
hpxml.fuel_loads.add(id: 'FuelLoadsLighting',
|
5481
5707
|
fuel_load_type: HPXML::FuelLoadTypeLighting,
|
5482
5708
|
fuel_type: args[:fuel_loads_lighting_fuel_type],
|
5483
|
-
location: location,
|
5484
5709
|
therm_per_year: therm_per_year,
|
5485
5710
|
usage_multiplier: usage_multiplier)
|
5486
5711
|
end
|
@@ -5492,8 +5717,12 @@ class HPXMLFile
|
|
5492
5717
|
therm_per_year = args[:fuel_loads_fireplace_annual_therm]
|
5493
5718
|
end
|
5494
5719
|
|
5495
|
-
if args[:
|
5496
|
-
|
5720
|
+
if args[:fuel_loads_fireplace_frac_sensible] != Constants.Auto
|
5721
|
+
frac_sensible = args[:fuel_loads_fireplace_frac_sensible]
|
5722
|
+
end
|
5723
|
+
|
5724
|
+
if args[:fuel_loads_fireplace_frac_latent] != Constants.Auto
|
5725
|
+
frac_latent = args[:fuel_loads_fireplace_frac_latent]
|
5497
5726
|
end
|
5498
5727
|
|
5499
5728
|
if args[:fuel_loads_fireplace_usage_multiplier] != 1.0
|
@@ -5503,8 +5732,9 @@ class HPXMLFile
|
|
5503
5732
|
hpxml.fuel_loads.add(id: 'FuelLoadsFireplace',
|
5504
5733
|
fuel_load_type: HPXML::FuelLoadTypeFireplace,
|
5505
5734
|
fuel_type: args[:fuel_loads_fireplace_fuel_type],
|
5506
|
-
location: location,
|
5507
5735
|
therm_per_year: therm_per_year,
|
5736
|
+
frac_sensible: frac_sensible,
|
5737
|
+
frac_latent: frac_latent,
|
5508
5738
|
usage_multiplier: usage_multiplier)
|
5509
5739
|
end
|
5510
5740
|
end
|
@@ -5623,6 +5853,25 @@ class HPXMLFile
|
|
5623
5853
|
fail "Unhandled SpaceType value (#{space_type}) for surface '#{surface.name}'."
|
5624
5854
|
end
|
5625
5855
|
end
|
5856
|
+
|
5857
|
+
def self.get_surface_azimuth(surface, args)
|
5858
|
+
facade = Geometry.get_facade_for_surface(surface)
|
5859
|
+
return get_azimuth_from_facade(facade, args)
|
5860
|
+
end
|
5861
|
+
|
5862
|
+
def self.get_azimuth_from_facade(facade, args)
|
5863
|
+
if facade == Constants.FacadeFront
|
5864
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 0, args[:geometry_orientation], 0)
|
5865
|
+
elsif facade == Constants.FacadeBack
|
5866
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 180, args[:geometry_orientation], 0)
|
5867
|
+
elsif facade == Constants.FacadeLeft
|
5868
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 90, args[:geometry_orientation], 0)
|
5869
|
+
elsif facade == Constants.FacadeRight
|
5870
|
+
azimuth = Geometry.get_abs_azimuth(Constants.CoordRelative, 270, args[:geometry_orientation], 0)
|
5871
|
+
else
|
5872
|
+
fail 'Unexpected facade.'
|
5873
|
+
end
|
5874
|
+
end
|
5626
5875
|
end
|
5627
5876
|
|
5628
5877
|
# register the measure to be used by the application
|