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
@@ -40,57 +40,7 @@ class HVAC
|
|
40
40
|
# Cooling Coil
|
41
41
|
|
42
42
|
cool_c_d = get_cool_c_d(num_speeds, cooling_system.cooling_efficiency_seer)
|
43
|
-
|
44
|
-
if num_speeds == 1
|
45
|
-
cool_rated_airflow_rate = 386.1 # cfm/ton
|
46
|
-
cool_capacity_ratios = [1.0]
|
47
|
-
cool_fan_speed_ratios = [1.0]
|
48
|
-
cool_shrs = [cooling_system.cooling_shr]
|
49
|
-
cool_cap_ft_spec = [[3.670270705, -0.098652414, 0.000955906, 0.006552414, -0.0000156, -0.000131877]]
|
50
|
-
cool_eir_ft_spec = [[-3.302695861, 0.137871531, -0.001056996, -0.012573945, 0.000214638, -0.000145054]]
|
51
|
-
cool_cap_fflow_spec = [[0.718605468, 0.410099989, -0.128705457]]
|
52
|
-
cool_eir_fflow_spec = [[1.32299905, -0.477711207, 0.154712157]]
|
53
|
-
cool_eers = [calc_eer_cooling_1speed(cooling_system.cooling_efficiency_seer, fan_power_rated, cool_eir_ft_spec)]
|
54
|
-
elsif num_speeds == 2
|
55
|
-
cool_rated_airflow_rate = 355.2 # cfm/ton
|
56
|
-
cool_capacity_ratios = [0.72, 1.0]
|
57
|
-
cool_fan_speed_ratios = [0.86, 1.0]
|
58
|
-
cool_shrs = [cooling_system.cooling_shr - 0.02, cooling_system.cooling_shr] # TODO: is the following assumption correct (revisit Dylan's data?)? OR should value from HPXML be used for both stages
|
59
|
-
cool_cap_ft_spec = [[3.940185508, -0.104723455, 0.001019298, 0.006471171, -0.00000953, -0.000161658],
|
60
|
-
[3.109456535, -0.085520461, 0.000863238, 0.00863049, -0.0000210, -0.000140186]]
|
61
|
-
cool_eir_ft_spec = [[-3.877526888, 0.164566276, -0.001272755, -0.019956043, 0.000256512, -0.000133539],
|
62
|
-
[-1.990708931, 0.093969249, -0.00073335, -0.009062553, 0.000165099, -0.0000997]]
|
63
|
-
cool_cap_fflow_spec = [[0.65673024, 0.516470835, -0.172887149],
|
64
|
-
[0.690334551, 0.464383753, -0.154507638]]
|
65
|
-
cool_eir_fflow_spec = [[1.562945114, -0.791859997, 0.230030877],
|
66
|
-
[1.31565404, -0.482467162, 0.166239001]]
|
67
|
-
cool_eers = calc_eers_cooling_2speed(runner, cooling_system.cooling_efficiency_seer, cool_c_d, cool_capacity_ratios, cool_fan_speed_ratios, fan_power_rated, cool_eir_ft_spec, cool_cap_ft_spec)
|
68
|
-
elsif num_speeds == 4
|
69
|
-
cool_rated_airflow_rate = 411.0 # cfm/ton
|
70
|
-
cool_capacity_ratios = [0.36, 0.51, 0.67, 1.0]
|
71
|
-
cool_fan_speed_ratios = [0.42, 0.54, 0.68, 1.0]
|
72
|
-
cool_shrs = [1.115, 1.026, 1.013, 1.0].map { |mult| cooling_system.cooling_shr * mult }
|
73
|
-
# The following coefficients were generated using NREL experimental performance mapping for the Carrier unit
|
74
|
-
cool_cap_coeff_perf_map = [[1.6516044444444447, 0.0698916049382716, -0.0005546296296296296, -0.08870160493827162, 0.0004135802469135802, 0.00029077160493827157],
|
75
|
-
[-6.84948049382716, 0.26946, -0.0019413580246913577, -0.03281469135802469, 0.00015694444444444442, 3.32716049382716e-05],
|
76
|
-
[-4.53543086419753, 0.15358543209876546, -0.0009345679012345678, 0.002666913580246914, -7.993827160493826e-06, -0.00011617283950617283],
|
77
|
-
[-3.500948395061729, 0.11738987654320988, -0.0006580246913580248, 0.007003148148148148, -2.8518518518518517e-05, -0.0001284259259259259],
|
78
|
-
[1.8769221728395058, -0.04768641975308643, 0.0006885802469135801, 0.006643395061728395, 1.4209876543209876e-05, -0.00024043209876543206]]
|
79
|
-
cool_cap_ft_spec = cool_cap_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_cap_coeff_perf_map.index(i) }
|
80
|
-
cool_cap_ft_spec_3 = cool_cap_coeff_perf_map.select { |i| [0, 1, 4].include? cool_cap_coeff_perf_map.index(i) }
|
81
|
-
cool_eir_coeff_perf_map = [[2.896298765432099, -0.12487654320987657, 0.0012148148148148148, 0.04492037037037037, 8.734567901234567e-05, -0.0006348765432098764],
|
82
|
-
[6.428076543209876, -0.20913209876543212, 0.0018521604938271604, 0.024392592592592594, 0.00019691358024691356, -0.0006012345679012346],
|
83
|
-
[5.136356049382716, -0.1591530864197531, 0.0014151234567901232, 0.018665555555555557, 0.00020398148148148147, -0.0005407407407407407],
|
84
|
-
[1.3823471604938273, -0.02875123456790123, 0.00038302469135802463, 0.006344814814814816, 0.00024836419753086417, -0.00047469135802469134],
|
85
|
-
[-1.0411735802469133, 0.055261604938271605, -0.0004404320987654321, 0.0002154938271604939, 0.00017484567901234564, -0.0002017901234567901]]
|
86
|
-
cool_eir_ft_spec = cool_eir_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_eir_coeff_perf_map.index(i) }
|
87
|
-
cool_eir_ft_spec_3 = cool_eir_coeff_perf_map.select { |i| [0, 1, 4].include? cool_eir_coeff_perf_map.index(i) }
|
88
|
-
cool_cap_fflow_spec = [[1, 0, 0]] * 4
|
89
|
-
cool_eir_fflow_spec = [[1, 0, 0]] * 4
|
90
|
-
cap_ratio_seer_3 = cool_capacity_ratios.select { |i| [0, 1, 3].include? cool_capacity_ratios.index(i) }
|
91
|
-
fan_speed_seer_3 = cool_fan_speed_ratios.select { |i| [0, 1, 3].include? cool_fan_speed_ratios.index(i) }
|
92
|
-
cool_eers = calc_eers_cooling_4speed(runner, cooling_system.cooling_efficiency_seer, cool_c_d, cap_ratio_seer_3, fan_speed_seer_3, fan_power_rated, cool_eir_ft_spec_3, cool_cap_ft_spec_3)
|
93
|
-
end
|
43
|
+
cool_rated_airflow_rate, cool_fan_speed_ratios, cool_capacity_ratios, cool_shrs, cool_eers, cool_cap_ft_spec, cool_eir_ft_spec, cool_cap_fflow_spec, cool_eir_fflow_spec = get_hp_clg_curves(num_speeds, cooling_system, fan_power_rated, cool_c_d, runner)
|
94
44
|
cool_cfms_ton_rated = calc_cfms_ton_rated(cool_rated_airflow_rate, cool_fan_speed_ratios, cool_capacity_ratios)
|
95
45
|
cool_shrs_rated_gross = calc_shrs_rated_gross(num_speeds, cool_shrs, fan_power_rated, cool_cfms_ton_rated)
|
96
46
|
cool_eirs = calc_cool_eirs(num_speeds, cool_eers, fan_power_rated)
|
@@ -100,7 +50,6 @@ class HVAC
|
|
100
50
|
end
|
101
51
|
|
102
52
|
if not heating_system.nil?
|
103
|
-
heat_cfm = heating_system.heating_cfm
|
104
53
|
|
105
54
|
# Heating Coil
|
106
55
|
|
@@ -112,7 +61,7 @@ class HVAC
|
|
112
61
|
htg_coil.setGasBurnerEfficiency(heating_system.heating_efficiency_afue)
|
113
62
|
htg_coil.setParasiticElectricLoad(0)
|
114
63
|
htg_coil.setParasiticGasLoad(0)
|
115
|
-
htg_coil.setFuelType(EPlus.
|
64
|
+
htg_coil.setFuelType(EPlus.fuel_type(heating_system.heating_system_fuel))
|
116
65
|
end
|
117
66
|
htg_coil.setName(obj_name + ' htg coil')
|
118
67
|
if not heating_system.heating_capacity.nil?
|
@@ -123,12 +72,15 @@ class HVAC
|
|
123
72
|
|
124
73
|
# Fan
|
125
74
|
|
126
|
-
if not cooling_system.nil?
|
127
|
-
|
75
|
+
if (not cooling_system.nil?) && (not heating_system.nil?) && (cooling_system.fan_watts_per_cfm.to_f != heating_system.fan_watts_per_cfm.to_f)
|
76
|
+
fail "Fan powers for heating system '#{heating_system.id}' and cooling system '#{cooling_system.id}' must be the same."
|
77
|
+
end
|
78
|
+
if (not cooling_system.nil?) && (not cooling_system.fan_watts_per_cfm.nil?)
|
79
|
+
fan_watts_per_cfm = cooling_system.fan_watts_per_cfm
|
128
80
|
else
|
129
|
-
|
81
|
+
fan_watts_per_cfm = heating_system.fan_watts_per_cfm
|
130
82
|
end
|
131
|
-
fan = create_supply_fan(model, obj_name, num_speeds,
|
83
|
+
fan = create_supply_fan(model, obj_name, num_speeds, fan_watts_per_cfm)
|
132
84
|
if not cooling_system.nil?
|
133
85
|
hvac_map[cooling_system.id] += disaggregate_fan_or_pump(model, fan, nil, clg_coil, nil)
|
134
86
|
end
|
@@ -138,7 +90,7 @@ class HVAC
|
|
138
90
|
|
139
91
|
# Unitary System
|
140
92
|
|
141
|
-
air_loop_unitary = create_air_loop_unitary_system(model, obj_name, fan, htg_coil, clg_coil, nil
|
93
|
+
air_loop_unitary = create_air_loop_unitary_system(model, obj_name, fan, htg_coil, clg_coil, nil)
|
142
94
|
if not cooling_system.nil?
|
143
95
|
hvac_map[cooling_system.id] << air_loop_unitary
|
144
96
|
end
|
@@ -187,7 +139,6 @@ class HVAC
|
|
187
139
|
hvac_map[cooling_system.id] = []
|
188
140
|
obj_name = Constants.ObjectNameRoomAirConditioner
|
189
141
|
sequential_cool_load_frac = calc_sequential_load_fraction(cooling_system.fraction_cool_load_served, remaining_cool_load_frac)
|
190
|
-
airflow_rate = 350.0 # cfm/ton; assumed
|
191
142
|
|
192
143
|
# Performance curves
|
193
144
|
# From Frigidaire 10.7 eer unit in Winkler et. al. Lab Testing of Window ACs (2013)
|
@@ -223,14 +174,7 @@ class HVAC
|
|
223
174
|
hvac_map[cooling_system.id] << clg_coil
|
224
175
|
|
225
176
|
# Fan
|
226
|
-
|
227
|
-
fan = OpenStudio::Model::FanOnOff.new(model, model.alwaysOnDiscreteSchedule)
|
228
|
-
fan.setName(obj_name + ' supply fan')
|
229
|
-
fan.setEndUseSubcategory('supply fan')
|
230
|
-
fan.setFanEfficiency(1)
|
231
|
-
fan.setPressureRise(0)
|
232
|
-
fan.setMotorEfficiency(1)
|
233
|
-
fan.setMotorInAirstreamFraction(0)
|
177
|
+
fan = create_supply_fan(model, obj_name, 1, 0.0) # Fan power included in EER (net COP) above
|
234
178
|
hvac_map[cooling_system.id] += disaggregate_fan_or_pump(model, fan, nil, clg_coil, nil)
|
235
179
|
|
236
180
|
# Heating Coil (none)
|
@@ -250,7 +194,6 @@ class HVAC
|
|
250
194
|
control_zone.setSequentialHeatingFractionSchedule(ptac, get_sequential_load_schedule(model, 0))
|
251
195
|
|
252
196
|
# Store info for HVAC Sizing measure
|
253
|
-
ptac.additionalProperties.setFeature(Constants.SizingInfoHVACCoolingCFMs, airflow_rate.to_s)
|
254
197
|
ptac.additionalProperties.setFeature(Constants.SizingInfoHVACRatedCFMperTonCooling, cfms_ton_rated.join(','))
|
255
198
|
ptac.additionalProperties.setFeature(Constants.SizingInfoHVACFracCoolLoadServed, cooling_system.fraction_cool_load_served)
|
256
199
|
ptac.additionalProperties.setFeature(Constants.SizingInfoHVACCoolType, Constants.ObjectNameRoomAirConditioner)
|
@@ -282,11 +225,10 @@ class HVAC
|
|
282
225
|
hvac_map[cooling_system.id] << air_loop
|
283
226
|
|
284
227
|
# Fan
|
285
|
-
|
228
|
+
# Use VariableVolume object
|
286
229
|
fan = OpenStudio::Model::FanVariableVolume.new(model, model.alwaysOnDiscreteSchedule)
|
287
230
|
fan.setName(obj_name + ' supply fan')
|
288
231
|
fan.setEndUseSubcategory('supply fan')
|
289
|
-
fan.setFanEfficiency(1)
|
290
232
|
fan.setMotorEfficiency(1)
|
291
233
|
fan.setMotorInAirstreamFraction(0)
|
292
234
|
fan.setFanPowerCoefficient1(0)
|
@@ -294,6 +236,7 @@ class HVAC
|
|
294
236
|
fan.setFanPowerCoefficient3(0)
|
295
237
|
fan.setFanPowerCoefficient4(0)
|
296
238
|
fan.setFanPowerCoefficient5(0)
|
239
|
+
set_fan_power(fan, cooling_system.fan_watts_per_cfm.to_f)
|
297
240
|
fan.addToNode(air_loop.supplyInletNode)
|
298
241
|
hvac_map[cooling_system.id] += disaggregate_fan_or_pump(model, fan, nil, evap_cooler, nil)
|
299
242
|
|
@@ -348,56 +291,7 @@ class HVAC
|
|
348
291
|
# Cooling Coil
|
349
292
|
|
350
293
|
cool_c_d = get_cool_c_d(num_speeds, heat_pump.cooling_efficiency_seer)
|
351
|
-
|
352
|
-
cool_rated_airflow_rate = 394.2 # cfm/ton
|
353
|
-
cool_capacity_ratios = [1.0]
|
354
|
-
cool_fan_speed_ratios = [1.0]
|
355
|
-
cool_shrs = [heat_pump.cooling_shr]
|
356
|
-
cool_cap_ft_spec = [[3.68637657, -0.098352478, 0.000956357, 0.005838141, -0.0000127, -0.000131702]]
|
357
|
-
cool_eir_ft_spec = [[-3.437356399, 0.136656369, -0.001049231, -0.0079378, 0.000185435, -0.0001441]]
|
358
|
-
cool_cap_fflow_spec = [[0.718664047, 0.41797409, -0.136638137]]
|
359
|
-
cool_eir_fflow_spec = [[1.143487507, -0.13943972, -0.004047787]]
|
360
|
-
cool_eers = [calc_eer_cooling_1speed(heat_pump.cooling_efficiency_seer, fan_power_rated, cool_eir_ft_spec)]
|
361
|
-
elsif num_speeds == 2
|
362
|
-
cool_rated_airflow_rate = 344.1 # cfm/ton
|
363
|
-
cool_capacity_ratios = [0.72, 1.0]
|
364
|
-
cool_fan_speed_ratios = [0.86, 1.0]
|
365
|
-
cool_shrs = [heat_pump.cooling_shr - 0.014, heat_pump.cooling_shr] # TODO: is the following assumption correct (revisit Dylan's data?)? OR should value from HPXML be used for both stages?
|
366
|
-
cool_cap_ft_spec = [[3.998418659, -0.108728222, 0.001056818, 0.007512314, -0.0000139, -0.000164716],
|
367
|
-
[3.466810106, -0.091476056, 0.000901205, 0.004163355, -0.00000919, -0.000110829]]
|
368
|
-
cool_eir_ft_spec = [[-4.282911381, 0.181023691, -0.001357391, -0.026310378, 0.000333282, -0.000197405],
|
369
|
-
[-3.557757517, 0.112737397, -0.000731381, 0.013184877, 0.000132645, -0.000338716]]
|
370
|
-
cool_cap_fflow_spec = [[0.655239515, 0.511655216, -0.166894731],
|
371
|
-
[0.618281092, 0.569060264, -0.187341356]]
|
372
|
-
cool_eir_fflow_spec = [[1.639108268, -0.998953996, 0.359845728],
|
373
|
-
[1.570774717, -0.914152018, 0.343377302]]
|
374
|
-
cool_eers = calc_eers_cooling_2speed(runner, heat_pump.cooling_efficiency_seer, cool_c_d, cool_capacity_ratios, cool_fan_speed_ratios, fan_power_rated, cool_eir_ft_spec, cool_cap_ft_spec, true)
|
375
|
-
elsif num_speeds == 4
|
376
|
-
cool_rated_airflow_rate = 411.0 # cfm/ton
|
377
|
-
cool_capacity_ratios = [0.36, 0.51, 0.67, 1.0]
|
378
|
-
cool_fan_speed_ratios = [0.42, 0.54, 0.68, 1.0]
|
379
|
-
cool_shrs = [1.115, 1.026, 1.013, 1.0].map { |mult| heat_pump.cooling_shr * mult }
|
380
|
-
# The following coefficients were generated using NREL experimental performance mapping for the Carrier unit
|
381
|
-
cool_cap_coeff_perf_map = [[1.6516044444444447, 0.0698916049382716, -0.0005546296296296296, -0.08870160493827162, 0.0004135802469135802, 0.00029077160493827157],
|
382
|
-
[-6.84948049382716, 0.26946, -0.0019413580246913577, -0.03281469135802469, 0.00015694444444444442, 3.32716049382716e-05],
|
383
|
-
[-4.53543086419753, 0.15358543209876546, -0.0009345679012345678, 0.002666913580246914, -7.993827160493826e-06, -0.00011617283950617283],
|
384
|
-
[-3.500948395061729, 0.11738987654320988, -0.0006580246913580248, 0.007003148148148148, -2.8518518518518517e-05, -0.0001284259259259259],
|
385
|
-
[1.8769221728395058, -0.04768641975308643, 0.0006885802469135801, 0.006643395061728395, 1.4209876543209876e-05, -0.00024043209876543206]]
|
386
|
-
cool_cap_ft_spec = cool_cap_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_cap_coeff_perf_map.index(i) }
|
387
|
-
cool_cap_ft_spec_3 = cool_cap_coeff_perf_map.select { |i| [0, 1, 4].include? cool_cap_coeff_perf_map.index(i) }
|
388
|
-
cool_eir_coeff_perf_map = [[2.896298765432099, -0.12487654320987657, 0.0012148148148148148, 0.04492037037037037, 8.734567901234567e-05, -0.0006348765432098764],
|
389
|
-
[6.428076543209876, -0.20913209876543212, 0.0018521604938271604, 0.024392592592592594, 0.00019691358024691356, -0.0006012345679012346],
|
390
|
-
[5.136356049382716, -0.1591530864197531, 0.0014151234567901232, 0.018665555555555557, 0.00020398148148148147, -0.0005407407407407407],
|
391
|
-
[1.3823471604938273, -0.02875123456790123, 0.00038302469135802463, 0.006344814814814816, 0.00024836419753086417, -0.00047469135802469134],
|
392
|
-
[-1.0411735802469133, 0.055261604938271605, -0.0004404320987654321, 0.0002154938271604939, 0.00017484567901234564, -0.0002017901234567901]]
|
393
|
-
cool_eir_ft_spec = cool_eir_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_eir_coeff_perf_map.index(i) }
|
394
|
-
cool_eir_ft_spec_3 = cool_eir_coeff_perf_map.select { |i| [0, 1, 4].include? cool_eir_coeff_perf_map.index(i) }
|
395
|
-
cool_eir_fflow_spec = [[1, 0, 0]] * 4
|
396
|
-
cool_cap_fflow_spec = [[1, 0, 0]] * 4
|
397
|
-
cap_ratio_seer_3 = cool_capacity_ratios.select { |i| [0, 1, 3].include? cool_capacity_ratios.index(i) }
|
398
|
-
fan_speed_seer_3 = cool_fan_speed_ratios.select { |i| [0, 1, 3].include? cool_fan_speed_ratios.index(i) }
|
399
|
-
cool_eers = calc_eers_cooling_4speed(runner, heat_pump.cooling_efficiency_seer, cool_c_d, cap_ratio_seer_3, fan_speed_seer_3, fan_power_rated, cool_eir_ft_spec_3, cool_cap_ft_spec_3)
|
400
|
-
end
|
294
|
+
cool_rated_airflow_rate, cool_fan_speed_ratios, cool_capacity_ratios, cool_shrs, cool_eers, cool_cap_ft_spec, cool_eir_ft_spec, cool_cap_fflow_spec, cool_eir_fflow_spec = get_hp_clg_curves(num_speeds, heat_pump, fan_power_rated, cool_c_d, runner)
|
401
295
|
cool_cfms_ton_rated = calc_cfms_ton_rated(cool_rated_airflow_rate, cool_fan_speed_ratios, cool_capacity_ratios)
|
402
296
|
cool_shrs_rated_gross = calc_shrs_rated_gross(num_speeds, cool_shrs, fan_power_rated, cool_cfms_ton_rated)
|
403
297
|
cool_eirs = calc_cool_eirs(num_speeds, cool_eers, fan_power_rated)
|
@@ -470,8 +364,7 @@ class HVAC
|
|
470
364
|
hvac_map[heat_pump.id] << htg_supp_coil
|
471
365
|
|
472
366
|
# Fan
|
473
|
-
|
474
|
-
fan = create_supply_fan(model, obj_name, num_speeds, fan_power_installed)
|
367
|
+
fan = create_supply_fan(model, obj_name, num_speeds, heat_pump.fan_watts_per_cfm)
|
475
368
|
hvac_map[heat_pump.id] += disaggregate_fan_or_pump(model, fan, htg_coil, clg_coil, htg_supp_coil)
|
476
369
|
|
477
370
|
# Unitary System
|
@@ -511,7 +404,7 @@ class HVAC
|
|
511
404
|
control_zone, hvac_map)
|
512
405
|
|
513
406
|
# Shoehorn cooling_system object into a corresponding heat_pump object
|
514
|
-
heat_pump = HPXML::HeatPump.new(
|
407
|
+
heat_pump = HPXML::HeatPump.new(cooling_system.hpxml_object)
|
515
408
|
heat_pump.id = cooling_system.id
|
516
409
|
heat_pump.heat_pump_type = HPXML::HVACTypeHeatPumpMiniSplit
|
517
410
|
heat_pump.heat_pump_fuel = cooling_system.cooling_system_fuel
|
@@ -525,6 +418,7 @@ class HVAC
|
|
525
418
|
heat_pump.cooling_efficiency_seer = cooling_system.cooling_efficiency_seer
|
526
419
|
heat_pump.heating_efficiency_hspf = 7.7 # Arbitrary; shouldn't affect energy use TODO: Allow nil
|
527
420
|
heat_pump.distribution_system_idref = cooling_system.distribution_system_idref
|
421
|
+
heat_pump.fan_watts_per_cfm = cooling_system.fan_watts_per_cfm
|
528
422
|
|
529
423
|
apply_mini_split_heat_pump(model, runner, heat_pump, 0,
|
530
424
|
remaining_cool_load_frac,
|
@@ -543,8 +437,12 @@ class HVAC
|
|
543
437
|
num_speeds = 10
|
544
438
|
mshp_indices = [1, 3, 5, 9]
|
545
439
|
hp_min_temp, supp_max_temp = get_heat_pump_temp_assumptions(heat_pump)
|
546
|
-
fan_power_installed = 0.07 # W/cfm
|
547
440
|
pan_heater_power = 0.0 # W, disabled
|
441
|
+
if not heat_pump.distribution_system.nil?
|
442
|
+
fan_power_rated = 0.18 # W/cfm, ducted
|
443
|
+
else
|
444
|
+
fan_power_rated = heat_pump.fan_watts_per_cfm # ductless, installed and rated value should be equal
|
445
|
+
end
|
548
446
|
|
549
447
|
# Calculate generic inputs
|
550
448
|
min_cooling_capacity = 0.4 # frac
|
@@ -579,7 +477,7 @@ class HVAC
|
|
579
477
|
dB_rated = 80.0 # deg-F
|
580
478
|
wB_rated = 67.0 # deg-F
|
581
479
|
cool_cfms_ton_rated, cool_capacity_ratios, cool_shrs_rated_gross = calc_mshp_cfms_ton_cooling(min_cooling_capacity, max_cooling_capacity, min_cooling_airflow_rate, max_cooling_airflow_rate, num_speeds, dB_rated, wB_rated, heat_pump.cooling_shr)
|
582
|
-
cool_eirs = calc_mshp_cool_eirs(runner, heat_pump.cooling_efficiency_seer,
|
480
|
+
cool_eirs = calc_mshp_cool_eirs(runner, heat_pump.cooling_efficiency_seer, fan_power_rated, cool_c_d, num_speeds, cool_capacity_ratios, cool_cfms_ton_rated, cool_eir_ft_spec, cool_cap_ft_spec)
|
583
481
|
clg_coil = create_dx_cooling_coil(model, obj_name, mshp_indices, cool_eirs, cool_cap_ft_spec, cool_eir_ft_spec, cool_closs_fplr_spec, cool_cap_fflow_spec, cool_eir_fflow_spec, cool_shrs_rated_gross, heat_pump.cooling_capacity, 0.0, nil, nil)
|
584
482
|
hvac_map[heat_pump.id] << clg_coil
|
585
483
|
|
@@ -614,7 +512,7 @@ class HVAC
|
|
614
512
|
heat_c_d = get_heat_c_d(num_speeds, heat_pump.heating_efficiency_hspf)
|
615
513
|
heat_closs_fplr_spec = [calc_plr_coefficients(heat_c_d)] * num_speeds
|
616
514
|
heat_cfms_ton_rated, heat_capacity_ratios = calc_mshp_cfms_ton_heating(min_heating_capacity, max_heating_capacity, min_heating_airflow_rate, max_heating_airflow_rate, num_speeds)
|
617
|
-
heat_eirs = calc_mshp_heat_eirs(runner, heat_pump.heating_efficiency_hspf,
|
515
|
+
heat_eirs = calc_mshp_heat_eirs(runner, heat_pump.heating_efficiency_hspf, fan_power_rated, hp_min_temp, heat_c_d, cool_cfms_ton_rated, num_speeds, heat_capacity_ratios, heat_cfms_ton_rated, heat_eir_ft_spec, heat_cap_ft_spec)
|
618
516
|
htg_coil = create_dx_heating_coil(model, obj_name, mshp_indices, heat_eirs, heat_cap_ft_spec, heat_eir_ft_spec, heat_closs_fplr_spec, heat_cap_fflow_spec, heat_eir_fflow_spec, heat_pump.heating_capacity, 0.0, nil, nil, hp_min_temp, heat_pump.fraction_heat_load_served)
|
619
517
|
hvac_map[heat_pump.id] << htg_coil
|
620
518
|
|
@@ -624,16 +522,7 @@ class HVAC
|
|
624
522
|
hvac_map[heat_pump.id] << htg_supp_coil
|
625
523
|
|
626
524
|
# Fan
|
627
|
-
|
628
|
-
fan_eff_curve = create_curve_cubic(model, [0, 1, 0, 0], obj_name + ' fan eff curve', 0, 1, 0.01, 1)
|
629
|
-
fan = OpenStudio::Model::FanOnOff.new(model, model.alwaysOnDiscreteSchedule, fan_power_curve, fan_eff_curve)
|
630
|
-
fan_eff = UnitConversions.convert(UnitConversions.convert(0.1, 'inH2O', 'Pa') / fan_power_installed, 'cfm', 'm^3/s') # Overall Efficiency of the Fan, Motor and Drive
|
631
|
-
fan.setName(obj_name + ' supply fan')
|
632
|
-
fan.setEndUseSubcategory('supply fan')
|
633
|
-
fan.setFanEfficiency(fan_eff)
|
634
|
-
fan.setPressureRise(calc_fan_pressure_rise(fan_eff, fan_power_installed))
|
635
|
-
fan.setMotorEfficiency(1.0)
|
636
|
-
fan.setMotorInAirstreamFraction(1.0)
|
525
|
+
fan = create_supply_fan(model, obj_name, 4, heat_pump.fan_watts_per_cfm)
|
637
526
|
hvac_map[heat_pump.id] += disaggregate_fan_or_pump(model, fan, htg_coil, clg_coil, htg_supp_coil)
|
638
527
|
|
639
528
|
# Unitary System
|
@@ -658,7 +547,7 @@ class HVAC
|
|
658
547
|
|
659
548
|
if pan_heater_power > 0
|
660
549
|
|
661
|
-
mshp_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model,
|
550
|
+
mshp_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Heating Coil #{EPlus::FuelTypeElectricity} Energy")
|
662
551
|
mshp_sensor.setName("#{obj_name} vrf energy sensor")
|
663
552
|
mshp_sensor.setKeyName(obj_name + ' coil')
|
664
553
|
|
@@ -673,7 +562,7 @@ class HVAC
|
|
673
562
|
equip.setSchedule(model.alwaysOnDiscreteSchedule)
|
674
563
|
equip.setEndUseSubcategory(obj_name + ' pan heater')
|
675
564
|
|
676
|
-
pan_heater_actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(equip,
|
565
|
+
pan_heater_actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(equip, *EPlus::EMSActuatorElectricEquipmentPower)
|
677
566
|
pan_heater_actuator.setName("#{obj_name} pan heater actuator")
|
678
567
|
|
679
568
|
tout_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Zone Outdoor Air Drybulb Temperature')
|
@@ -723,8 +612,8 @@ class HVAC
|
|
723
612
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACSystemIsDucted, !heat_pump.distribution_system_idref.nil?)
|
724
613
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACCapacityRatioHeating, heat_capacity_ratios_4.join(','))
|
725
614
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACCapacityRatioCooling, cool_capacity_ratios_4.join(','))
|
726
|
-
air_loop_unitary.additionalProperties.setFeature(Constants.
|
727
|
-
air_loop_unitary.additionalProperties.setFeature(Constants.
|
615
|
+
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACRatedCFMperTonHeating, heat_cfms_ton_rated_4.join(','))
|
616
|
+
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACRatedCFMperTonCooling, cool_cfms_ton_rated_4.join(','))
|
728
617
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACHeatingCapacityOffset, heating_capacity_offset)
|
729
618
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACFracHeatLoadServed, heat_pump.fraction_heat_load_served)
|
730
619
|
air_loop_unitary.additionalProperties.setFeature(Constants.SizingInfoHVACFracCoolLoadServed, heat_pump.fraction_cool_load_served)
|
@@ -1113,7 +1002,7 @@ class HVAC
|
|
1113
1002
|
|
1114
1003
|
boiler = OpenStudio::Model::BoilerHotWater.new(model)
|
1115
1004
|
boiler.setName(obj_name)
|
1116
|
-
boiler.setFuelType(EPlus.
|
1005
|
+
boiler.setFuelType(EPlus.fuel_type(heating_system.heating_system_fuel))
|
1117
1006
|
if not heating_system.heating_capacity.nil?
|
1118
1007
|
boiler.setNominalCapacity(UnitConversions.convert([heating_system.heating_capacity, Constants.small].max, 'Btu/hr', 'W')) # Used by HVACSizing measure
|
1119
1008
|
end
|
@@ -1274,12 +1163,7 @@ class HVAC
|
|
1274
1163
|
hvac_map[heating_system.id] = []
|
1275
1164
|
obj_name = Constants.ObjectNameUnitHeater
|
1276
1165
|
sequential_heat_load_frac = calc_sequential_load_fraction(heating_system.fraction_heat_load_served, remaining_heat_load_frac)
|
1277
|
-
|
1278
|
-
airflow_rate = 125.0 # cfm/ton; doesn't affect energy consumption
|
1279
|
-
|
1280
|
-
if (fan_power_installed > 0) && (airflow_rate == 0)
|
1281
|
-
fail 'If Fan Power > 0, then Airflow Rate cannot be zero.'
|
1282
|
-
end
|
1166
|
+
airflow_cfm_per_ton = 350.0
|
1283
1167
|
|
1284
1168
|
# Heating Coil
|
1285
1169
|
|
@@ -1293,7 +1177,7 @@ class HVAC
|
|
1293
1177
|
htg_coil.setGasBurnerEfficiency(efficiency)
|
1294
1178
|
htg_coil.setParasiticElectricLoad(0.0)
|
1295
1179
|
htg_coil.setParasiticGasLoad(0)
|
1296
|
-
htg_coil.setFuelType(EPlus.
|
1180
|
+
htg_coil.setFuelType(EPlus.fuel_type(heating_system.heating_system_fuel))
|
1297
1181
|
end
|
1298
1182
|
htg_coil.setName(obj_name + ' htg coil')
|
1299
1183
|
if not heating_system.heating_capacity.nil?
|
@@ -1303,7 +1187,7 @@ class HVAC
|
|
1303
1187
|
|
1304
1188
|
# Fan
|
1305
1189
|
|
1306
|
-
fan = create_supply_fan(model, obj_name, 1,
|
1190
|
+
fan = create_supply_fan(model, obj_name, 1, 0.0) # Fan power assigned in hvac_sizing.rb
|
1307
1191
|
hvac_map[heating_system.id] += disaggregate_fan_or_pump(model, fan, htg_coil, nil, nil)
|
1308
1192
|
|
1309
1193
|
# Unitary System
|
@@ -1317,9 +1201,10 @@ class HVAC
|
|
1317
1201
|
control_zone.setSequentialCoolingFractionSchedule(unitary_system, get_sequential_load_schedule(model, 0))
|
1318
1202
|
|
1319
1203
|
# Store info for HVAC Sizing measure
|
1320
|
-
unitary_system.additionalProperties.setFeature(Constants.SizingInfoHVACRatedCFMperTonHeating,
|
1204
|
+
unitary_system.additionalProperties.setFeature(Constants.SizingInfoHVACRatedCFMperTonHeating, [airflow_cfm_per_ton].join(','))
|
1321
1205
|
unitary_system.additionalProperties.setFeature(Constants.SizingInfoHVACFracHeatLoadServed, heating_system.fraction_heat_load_served)
|
1322
1206
|
unitary_system.additionalProperties.setFeature(Constants.SizingInfoHVACHeatType, Constants.ObjectNameUnitHeater)
|
1207
|
+
unitary_system.additionalProperties.setFeature(Constants.SizingInfoHVACFanWatts, heating_system.fan_watts)
|
1323
1208
|
end
|
1324
1209
|
|
1325
1210
|
def self.apply_ideal_air_loads(model, runner, obj_name, sequential_cool_load_frac,
|
@@ -1381,7 +1266,7 @@ class HVAC
|
|
1381
1266
|
part_load_frac_curve = create_curve_quadratic(model, pl_coeff, 'DXDH-PLF-fPLR', 0, 1, 0.7, 1)
|
1382
1267
|
if energy_factor.nil?
|
1383
1268
|
# shift inputs tested under IEF test conditions to those under EF test conditions with performance curves
|
1384
|
-
energy_factor, water_removal_rate = apply_dehumidifier_ief_to_ef_inputs(w_coeff, ef_coeff, dehumidifier.integrated_energy_factor, water_removal_rate)
|
1269
|
+
energy_factor, water_removal_rate = apply_dehumidifier_ief_to_ef_inputs(dehumidifier.type, w_coeff, ef_coeff, dehumidifier.integrated_energy_factor, water_removal_rate)
|
1385
1270
|
end
|
1386
1271
|
|
1387
1272
|
# Calculate air flow rate by assuming 2.75 cfm/pint/day (based on experimental test data)
|
@@ -1445,56 +1330,77 @@ class HVAC
|
|
1445
1330
|
equip.setSchedule(ceiling_fan_sch)
|
1446
1331
|
end
|
1447
1332
|
|
1448
|
-
def self.apply_setpoints(model, runner, weather, hvac_control, living_zone)
|
1333
|
+
def self.apply_setpoints(model, runner, weather, hvac_control, living_zone, has_ceiling_fan)
|
1449
1334
|
# Assume heating/cooling seasons are year-round
|
1450
1335
|
htg_start_month = 1
|
1451
1336
|
htg_end_month = 12
|
1452
1337
|
clg_start_month = 1
|
1453
1338
|
clg_end_month = 12
|
1454
1339
|
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
for
|
1466
|
-
|
1340
|
+
if hvac_control.weekday_heating_setpoints.nil? || hvac_control.weekend_heating_setpoints.nil?
|
1341
|
+
# Base heating setpoint
|
1342
|
+
htg_setpoint = hvac_control.heating_setpoint_temp
|
1343
|
+
htg_weekday_setpoints = [[htg_setpoint] * 24] * 12
|
1344
|
+
|
1345
|
+
# Apply heating setback?
|
1346
|
+
htg_setback = hvac_control.heating_setback_temp
|
1347
|
+
if not htg_setback.nil?
|
1348
|
+
htg_setback_hrs_per_week = hvac_control.heating_setback_hours_per_week
|
1349
|
+
htg_setback_start_hr = hvac_control.heating_setback_start_hour
|
1350
|
+
for m in 1..12
|
1351
|
+
for hr in htg_setback_start_hr..htg_setback_start_hr + Integer(htg_setback_hrs_per_week / 7.0) - 1
|
1352
|
+
htg_weekday_setpoints[m - 1][hr % 24] = htg_setback
|
1353
|
+
end
|
1467
1354
|
end
|
1468
1355
|
end
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
|
1474
|
-
|
1475
|
-
|
1476
|
-
|
1477
|
-
|
1478
|
-
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1482
|
-
|
1483
|
-
|
1356
|
+
htg_weekend_setpoints = htg_weekday_setpoints.dup
|
1357
|
+
else
|
1358
|
+
# 24-hr weekday/weekend heating setpoint schedules
|
1359
|
+
htg_weekday_setpoints = hvac_control.weekday_heating_setpoints.split(',').map { |i| Float(i) }
|
1360
|
+
htg_weekday_setpoints = [htg_weekday_setpoints] * 12
|
1361
|
+
|
1362
|
+
htg_weekend_setpoints = hvac_control.weekend_heating_setpoints.split(',').map { |i| Float(i) }
|
1363
|
+
htg_weekend_setpoints = [htg_weekend_setpoints] * 12
|
1364
|
+
end
|
1365
|
+
|
1366
|
+
if hvac_control.weekday_cooling_setpoints.nil? || hvac_control.weekend_cooling_setpoints.nil?
|
1367
|
+
# Base cooling setpoint
|
1368
|
+
clg_setpoint = hvac_control.cooling_setpoint_temp
|
1369
|
+
clg_weekday_setpoints = [[clg_setpoint] * 24] * 12
|
1370
|
+
|
1371
|
+
# Apply cooling setup?
|
1372
|
+
clg_setup = hvac_control.cooling_setup_temp
|
1373
|
+
if not clg_setup.nil?
|
1374
|
+
clg_setup_hrs_per_week = hvac_control.cooling_setup_hours_per_week
|
1375
|
+
clg_setup_start_hr = hvac_control.cooling_setup_start_hour
|
1376
|
+
for m in 1..12
|
1377
|
+
for hr in clg_setup_start_hr..clg_setup_start_hr + Integer(clg_setup_hrs_per_week / 7.0) - 1
|
1378
|
+
clg_weekday_setpoints[m - 1][hr % 24] = clg_setup
|
1379
|
+
end
|
1484
1380
|
end
|
1485
1381
|
end
|
1382
|
+
clg_weekend_setpoints = clg_weekday_setpoints.dup
|
1383
|
+
else
|
1384
|
+
# 24-hr weekday/weekend cooling setpoint schedules
|
1385
|
+
clg_weekday_setpoints = hvac_control.weekday_cooling_setpoints.split(',').map { |i| Float(i) }
|
1386
|
+
clg_weekday_setpoints = [clg_weekday_setpoints] * 12
|
1387
|
+
|
1388
|
+
clg_weekend_setpoints = hvac_control.weekend_cooling_setpoints.split(',').map { |i| Float(i) }
|
1389
|
+
clg_weekend_setpoints = [clg_weekend_setpoints] * 12
|
1486
1390
|
end
|
1487
1391
|
|
1488
1392
|
# Apply cooling setpoint offset due to ceiling fan?
|
1489
|
-
|
1490
|
-
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1393
|
+
if has_ceiling_fan
|
1394
|
+
clg_ceiling_fan_offset = hvac_control.ceiling_fan_cooling_setpoint_temp_offset
|
1395
|
+
if not clg_ceiling_fan_offset.nil?
|
1396
|
+
HVAC.get_default_ceiling_fan_months(weather).each_with_index do |operation, m|
|
1397
|
+
next unless operation == 1
|
1398
|
+
|
1399
|
+
clg_weekday_setpoints[m] = [clg_weekday_setpoints[m], Array.new(24, clg_ceiling_fan_offset)].transpose.map { |i| i.reduce(:+) }
|
1400
|
+
clg_weekend_setpoints[m] = [clg_weekend_setpoints[m], Array.new(24, clg_ceiling_fan_offset)].transpose.map { |i| i.reduce(:+) }
|
1401
|
+
end
|
1495
1402
|
end
|
1496
1403
|
end
|
1497
|
-
clg_weekend_setpoints = clg_weekday_setpoints
|
1498
1404
|
|
1499
1405
|
# Create heating season schedule
|
1500
1406
|
if htg_start_month <= htg_end_month
|
@@ -1553,48 +1459,6 @@ class HVAC
|
|
1553
1459
|
living_zone.setThermostatSetpointDualSetpoint(thermostat_setpoint)
|
1554
1460
|
end
|
1555
1461
|
|
1556
|
-
def self.apply_eae_to_heating_fan(runner, hvac_objects, heating_system)
|
1557
|
-
# Applies Electric Auxiliary Energy (EAE) for fuel heating equipment to fan/pump power.
|
1558
|
-
|
1559
|
-
eae = heating_system.electric_auxiliary_energy
|
1560
|
-
|
1561
|
-
unitary_systems = []
|
1562
|
-
hvac_objects.each do |hvac_object|
|
1563
|
-
if hvac_object.is_a? OpenStudio::Model::AirLoopHVAC # Furnace
|
1564
|
-
unitary_systems << get_unitary_system_from_air_loop_hvac(hvac_object)
|
1565
|
-
elsif hvac_object.is_a? OpenStudio::Model::AirLoopHVACUnitarySystem # WallFurnace/FloorFurnace/Stove
|
1566
|
-
unitary_systems << hvac_object
|
1567
|
-
end
|
1568
|
-
end
|
1569
|
-
|
1570
|
-
unitary_systems.each do |unitary_system|
|
1571
|
-
if eae.nil?
|
1572
|
-
htg_coil = unitary_system.heatingCoil.get.to_CoilHeatingGas.get
|
1573
|
-
htg_capacity = UnitConversions.convert(htg_coil.nominalCapacity.get, 'W', 'kBtu/hr')
|
1574
|
-
eae = get_electric_auxiliary_energy(heating_system, htg_capacity)
|
1575
|
-
end
|
1576
|
-
elec_power = eae / 2.08 # W
|
1577
|
-
|
1578
|
-
htg_coil = unitary_system.heatingCoil.get.to_CoilHeatingGas.get
|
1579
|
-
htg_coil.setParasiticElectricLoad(0.0)
|
1580
|
-
|
1581
|
-
htg_cfm = UnitConversions.convert(unitary_system.supplyAirFlowRateDuringHeatingOperation.get, 'm^3/s', 'cfm')
|
1582
|
-
|
1583
|
-
fan = unitary_system.supplyFan.get.to_FanOnOff.get
|
1584
|
-
if elec_power > 0
|
1585
|
-
fan_eff = 0.75 # Overall Efficiency of the Fan, Motor and Drive
|
1586
|
-
fan_w_cfm = elec_power / htg_cfm # W/cfm
|
1587
|
-
fan.setFanEfficiency(fan_eff)
|
1588
|
-
fan.setPressureRise(calc_fan_pressure_rise(fan_eff, fan_w_cfm))
|
1589
|
-
else
|
1590
|
-
fan.setFanEfficiency(1)
|
1591
|
-
fan.setPressureRise(0)
|
1592
|
-
end
|
1593
|
-
fan.setMotorEfficiency(1.0)
|
1594
|
-
fan.setMotorInAirstreamFraction(1.0)
|
1595
|
-
end
|
1596
|
-
end
|
1597
|
-
|
1598
1462
|
def self.get_default_heating_setpoint(control_type)
|
1599
1463
|
# Per ANSI/RESNET/ICC 301
|
1600
1464
|
htg_sp = 68 # F
|
@@ -1627,14 +1491,72 @@ class HVAC
|
|
1627
1491
|
return clg_sp, clg_setup_sp, clg_setup_hrs_per_week, clg_setup_start_hr
|
1628
1492
|
end
|
1629
1493
|
|
1630
|
-
def self.
|
1631
|
-
if
|
1632
|
-
|
1633
|
-
|
1634
|
-
|
1635
|
-
|
1636
|
-
|
1494
|
+
def self.get_hp_clg_curves(num_speeds, heat_pump, fan_power_rated, cool_c_d, runner)
|
1495
|
+
if num_speeds == 1
|
1496
|
+
cool_rated_airflow_rate = 394.2 # cfm/ton
|
1497
|
+
cool_capacity_ratios = [1.0]
|
1498
|
+
cool_fan_speed_ratios = [1.0]
|
1499
|
+
cool_shrs = [heat_pump.cooling_shr]
|
1500
|
+
cool_cap_ft_spec = [[3.68637657, -0.098352478, 0.000956357, 0.005838141, -0.0000127, -0.000131702]]
|
1501
|
+
cool_eir_ft_spec = [[-3.437356399, 0.136656369, -0.001049231, -0.0079378, 0.000185435, -0.0001441]]
|
1502
|
+
cool_cap_fflow_spec = [[0.718664047, 0.41797409, -0.136638137]]
|
1503
|
+
cool_eir_fflow_spec = [[1.143487507, -0.13943972, -0.004047787]]
|
1504
|
+
cool_eers = [calc_eer_cooling_1speed(heat_pump.cooling_efficiency_seer, fan_power_rated, cool_eir_ft_spec)]
|
1505
|
+
elsif num_speeds == 2
|
1506
|
+
cool_rated_airflow_rate = 344.1 # cfm/ton
|
1507
|
+
cool_capacity_ratios = [0.72, 1.0]
|
1508
|
+
cool_fan_speed_ratios = [0.86, 1.0]
|
1509
|
+
cool_shrs = [heat_pump.cooling_shr - 0.014, heat_pump.cooling_shr] # TODO: is the following assumption correct (revisit Dylan's data?)? OR should value from HPXML be used for both stages?
|
1510
|
+
cool_cap_ft_spec = [[3.998418659, -0.108728222, 0.001056818, 0.007512314, -0.0000139, -0.000164716],
|
1511
|
+
[3.466810106, -0.091476056, 0.000901205, 0.004163355, -0.00000919, -0.000110829]]
|
1512
|
+
cool_eir_ft_spec = [[-4.282911381, 0.181023691, -0.001357391, -0.026310378, 0.000333282, -0.000197405],
|
1513
|
+
[-3.557757517, 0.112737397, -0.000731381, 0.013184877, 0.000132645, -0.000338716]]
|
1514
|
+
cool_cap_fflow_spec = [[0.655239515, 0.511655216, -0.166894731],
|
1515
|
+
[0.618281092, 0.569060264, -0.187341356]]
|
1516
|
+
cool_eir_fflow_spec = [[1.639108268, -0.998953996, 0.359845728],
|
1517
|
+
[1.570774717, -0.914152018, 0.343377302]]
|
1518
|
+
cool_eers = calc_eers_cooling_2speed(runner, heat_pump.cooling_efficiency_seer, cool_c_d, cool_capacity_ratios, cool_fan_speed_ratios, fan_power_rated, cool_eir_ft_spec, cool_cap_ft_spec, true)
|
1519
|
+
elsif num_speeds == 4
|
1520
|
+
cool_rated_airflow_rate = 411.0 # cfm/ton
|
1521
|
+
cool_capacity_ratios = [0.36, 0.51, 0.67, 1.0]
|
1522
|
+
cool_fan_speed_ratios = [0.42, 0.54, 0.68, 1.0]
|
1523
|
+
cool_shrs = [1.115, 1.026, 1.013, 1.0].map { |mult| heat_pump.cooling_shr * mult }
|
1524
|
+
# The following coefficients were generated using NREL experimental performance mapping for the Carrier unit
|
1525
|
+
cool_cap_coeff_perf_map = [[1.6516044444444447, 0.0698916049382716, -0.0005546296296296296, -0.08870160493827162, 0.0004135802469135802, 0.00029077160493827157],
|
1526
|
+
[-6.84948049382716, 0.26946, -0.0019413580246913577, -0.03281469135802469, 0.00015694444444444442, 3.32716049382716e-05],
|
1527
|
+
[-4.53543086419753, 0.15358543209876546, -0.0009345679012345678, 0.002666913580246914, -7.993827160493826e-06, -0.00011617283950617283],
|
1528
|
+
[-3.500948395061729, 0.11738987654320988, -0.0006580246913580248, 0.007003148148148148, -2.8518518518518517e-05, -0.0001284259259259259],
|
1529
|
+
[1.8769221728395058, -0.04768641975308643, 0.0006885802469135801, 0.006643395061728395, 1.4209876543209876e-05, -0.00024043209876543206]]
|
1530
|
+
cool_cap_ft_spec = cool_cap_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_cap_coeff_perf_map.index(i) }
|
1531
|
+
cool_cap_ft_spec_3 = cool_cap_coeff_perf_map.select { |i| [0, 1, 4].include? cool_cap_coeff_perf_map.index(i) }
|
1532
|
+
cool_eir_coeff_perf_map = [[2.896298765432099, -0.12487654320987657, 0.0012148148148148148, 0.04492037037037037, 8.734567901234567e-05, -0.0006348765432098764],
|
1533
|
+
[6.428076543209876, -0.20913209876543212, 0.0018521604938271604, 0.024392592592592594, 0.00019691358024691356, -0.0006012345679012346],
|
1534
|
+
[5.136356049382716, -0.1591530864197531, 0.0014151234567901232, 0.018665555555555557, 0.00020398148148148147, -0.0005407407407407407],
|
1535
|
+
[1.3823471604938273, -0.02875123456790123, 0.00038302469135802463, 0.006344814814814816, 0.00024836419753086417, -0.00047469135802469134],
|
1536
|
+
[-1.0411735802469133, 0.055261604938271605, -0.0004404320987654321, 0.0002154938271604939, 0.00017484567901234564, -0.0002017901234567901]]
|
1537
|
+
cool_eir_ft_spec = cool_eir_coeff_perf_map.select { |i| [0, 1, 2, 4].include? cool_eir_coeff_perf_map.index(i) }
|
1538
|
+
cool_eir_ft_spec_3 = cool_eir_coeff_perf_map.select { |i| [0, 1, 4].include? cool_eir_coeff_perf_map.index(i) }
|
1539
|
+
cool_eir_fflow_spec = [[1, 0, 0]] * 4
|
1540
|
+
cool_cap_fflow_spec = [[1, 0, 0]] * 4
|
1541
|
+
cap_ratio_seer_3 = cool_capacity_ratios.select { |i| [0, 1, 3].include? cool_capacity_ratios.index(i) }
|
1542
|
+
fan_speed_seer_3 = cool_fan_speed_ratios.select { |i| [0, 1, 3].include? cool_fan_speed_ratios.index(i) }
|
1543
|
+
cool_eers = calc_eers_cooling_4speed(runner, heat_pump.cooling_efficiency_seer, cool_c_d, cap_ratio_seer_3, fan_speed_seer_3, fan_power_rated, cool_eir_ft_spec_3, cool_cap_ft_spec_3)
|
1544
|
+
end
|
1545
|
+
return cool_rated_airflow_rate, cool_fan_speed_ratios, cool_capacity_ratios, cool_shrs, cool_eers, cool_cap_ft_spec, cool_eir_ft_spec, cool_cap_fflow_spec, cool_eir_fflow_spec
|
1546
|
+
end
|
1547
|
+
|
1548
|
+
def self.get_default_compressor_type(hvac_type, seer)
|
1549
|
+
if [HPXML::HVACTypeCentralAirConditioner,
|
1550
|
+
HPXML::HVACTypeHeatPumpAirToAir].include? hvac_type
|
1551
|
+
if seer <= 15
|
1552
|
+
return HPXML::HVACCompressorTypeSingleStage
|
1553
|
+
elsif seer <= 21
|
1554
|
+
return HPXML::HVACCompressorTypeTwoStage
|
1555
|
+
elsif seer > 21
|
1556
|
+
return HPXML::HVACCompressorTypeVariableSpeed
|
1557
|
+
end
|
1637
1558
|
end
|
1559
|
+
return
|
1638
1560
|
end
|
1639
1561
|
|
1640
1562
|
def self.get_default_ceiling_fan_power()
|
@@ -1740,12 +1662,12 @@ class HVAC
|
|
1740
1662
|
pump_mfr_sensor.setKeyName(pump.name.to_s)
|
1741
1663
|
|
1742
1664
|
# Internal variable
|
1743
|
-
pump_rated_mfr_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model,
|
1665
|
+
pump_rated_mfr_var = OpenStudio::Model::EnergyManagementSystemInternalVariable.new(model, EPlus::EMSIntVarPumpMFR)
|
1744
1666
|
pump_rated_mfr_var.setName("#{pump.name} rated mfr")
|
1745
1667
|
pump_rated_mfr_var.setInternalDataIndexKeyName(pump.name.to_s)
|
1746
1668
|
|
1747
1669
|
# Actuator
|
1748
|
-
pump_pressure_rise_act = OpenStudio::Model::EnergyManagementSystemActuator.new(pump,
|
1670
|
+
pump_pressure_rise_act = OpenStudio::Model::EnergyManagementSystemActuator.new(pump, *EPlus::EMSActuatorPumpPressureRise)
|
1749
1671
|
pump_pressure_rise_act.setName("#{pump.name} pressure rise act")
|
1750
1672
|
|
1751
1673
|
# Program
|
@@ -1774,11 +1696,11 @@ class HVAC
|
|
1774
1696
|
hvac_objects = []
|
1775
1697
|
|
1776
1698
|
if fan_or_pump.is_a?(OpenStudio::Model::FanOnOff) || fan_or_pump.is_a?(OpenStudio::Model::FanVariableVolume)
|
1777
|
-
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model,
|
1699
|
+
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Fan #{EPlus::FuelTypeElectricity} Energy")
|
1778
1700
|
elsif fan_or_pump.is_a? OpenStudio::Model::PumpVariableSpeed
|
1779
|
-
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model,
|
1701
|
+
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Pump #{EPlus::FuelTypeElectricity} Energy")
|
1780
1702
|
elsif fan_or_pump.is_a? OpenStudio::Model::ElectricEquipment
|
1781
|
-
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model,
|
1703
|
+
fan_or_pump_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Electric Equipment #{EPlus::FuelTypeElectricity} Energy")
|
1782
1704
|
else
|
1783
1705
|
fail "Unexpected fan/pump object '#{fan_or_pump.name}'."
|
1784
1706
|
end
|
@@ -1792,7 +1714,7 @@ class HVAC
|
|
1792
1714
|
if clg_object.is_a? OpenStudio::Model::EvaporativeCoolerDirectResearchSpecial
|
1793
1715
|
var = 'Evaporative Cooler Water Volume'
|
1794
1716
|
else
|
1795
|
-
var =
|
1717
|
+
var = "Cooling Coil #{EPlus::FuelTypeElectricity} Energy"
|
1796
1718
|
end
|
1797
1719
|
clg_object_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
1798
1720
|
clg_object_sensor.setName("#{clg_object.name} s")
|
@@ -1803,9 +1725,9 @@ class HVAC
|
|
1803
1725
|
if htg_object.nil?
|
1804
1726
|
htg_object_sensor = nil
|
1805
1727
|
else
|
1806
|
-
var = "Heating Coil #{EPlus
|
1728
|
+
var = "Heating Coil #{EPlus::FuelTypeElectricity} Energy"
|
1807
1729
|
if htg_object.is_a? OpenStudio::Model::CoilHeatingGas
|
1808
|
-
var = "Heating Coil #{
|
1730
|
+
var = "Heating Coil #{htg_object.fuelType} Energy"
|
1809
1731
|
elsif htg_object.is_a? OpenStudio::Model::ZoneHVACBaseboardConvectiveWater
|
1810
1732
|
var = 'Baseboard Total Heating Energy'
|
1811
1733
|
elsif htg_object.is_a? OpenStudio::Model::ZoneHVACFourPipeFanCoil
|
@@ -1821,9 +1743,9 @@ class HVAC
|
|
1821
1743
|
if backup_htg_object.nil?
|
1822
1744
|
backup_htg_object_sensor = nil
|
1823
1745
|
else
|
1824
|
-
var = "Heating Coil #{EPlus
|
1746
|
+
var = "Heating Coil #{EPlus::FuelTypeElectricity} Energy"
|
1825
1747
|
if backup_htg_object.is_a? OpenStudio::Model::CoilHeatingGas
|
1826
|
-
var = "Heating Coil #{
|
1748
|
+
var = "Heating Coil #{backup_htg_object.fuelType} Energy"
|
1827
1749
|
end
|
1828
1750
|
|
1829
1751
|
backup_htg_object_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
@@ -1900,7 +1822,7 @@ class HVAC
|
|
1900
1822
|
dehumidifier_sens_htg = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Zone Dehumidifier Sensible Heating Rate')
|
1901
1823
|
dehumidifier_sens_htg.setName("#{zone_hvac.name} sens htg")
|
1902
1824
|
dehumidifier_sens_htg.setKeyName(zone_hvac.name.to_s)
|
1903
|
-
dehumidifier_power = OpenStudio::Model::EnergyManagementSystemSensor.new(model,
|
1825
|
+
dehumidifier_power = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Zone Dehumidifier #{EPlus::FuelTypeElectricity} Rate")
|
1904
1826
|
dehumidifier_power.setName("#{zone_hvac.name} power htg")
|
1905
1827
|
dehumidifier_power.setKeyName(zone_hvac.name.to_s)
|
1906
1828
|
|
@@ -1916,7 +1838,7 @@ class HVAC
|
|
1916
1838
|
dehumidifier_load_adj.setSpace(living_space)
|
1917
1839
|
dehumidifier_load_adj.setSchedule(model.alwaysOnDiscreteSchedule)
|
1918
1840
|
|
1919
|
-
dehumidifier_load_adj_act = OpenStudio::Model::EnergyManagementSystemActuator.new(dehumidifier_load_adj,
|
1841
|
+
dehumidifier_load_adj_act = OpenStudio::Model::EnergyManagementSystemActuator.new(dehumidifier_load_adj, *EPlus::EMSActuatorOtherEquipmentPower)
|
1920
1842
|
dehumidifier_load_adj_act.setName("#{zone_hvac.name} sens htg adj act")
|
1921
1843
|
|
1922
1844
|
# EMS program
|
@@ -1954,7 +1876,7 @@ class HVAC
|
|
1954
1876
|
htg_supp_coil.setGasBurnerEfficiency(efficiency)
|
1955
1877
|
htg_supp_coil.setParasiticElectricLoad(0)
|
1956
1878
|
htg_supp_coil.setParasiticGasLoad(0)
|
1957
|
-
htg_supp_coil.setFuelType(EPlus.
|
1879
|
+
htg_supp_coil.setFuelType(EPlus.fuel_type(fuel))
|
1958
1880
|
end
|
1959
1881
|
htg_supp_coil.setName(obj_name + ' ' + Constants.ObjectNameBackupHeatingCoil)
|
1960
1882
|
if not capacity.nil?
|
@@ -1963,7 +1885,7 @@ class HVAC
|
|
1963
1885
|
return htg_supp_coil
|
1964
1886
|
end
|
1965
1887
|
|
1966
|
-
def self.create_supply_fan(model, obj_name, num_speeds,
|
1888
|
+
def self.create_supply_fan(model, obj_name, num_speeds, fan_watts_per_cfm)
|
1967
1889
|
if num_speeds == 1
|
1968
1890
|
fan = OpenStudio::Model::FanOnOff.new(model, model.alwaysOnDiscreteSchedule)
|
1969
1891
|
else
|
@@ -1971,14 +1893,7 @@ class HVAC
|
|
1971
1893
|
fan_eff_curve = create_curve_cubic(model, [0, 1, 0, 0], obj_name + ' fan eff curve', 0, 1, 0.01, 1)
|
1972
1894
|
fan = OpenStudio::Model::FanOnOff.new(model, model.alwaysOnDiscreteSchedule, fan_power_curve, fan_eff_curve)
|
1973
1895
|
end
|
1974
|
-
|
1975
|
-
fan_eff = 0.75 # Overall Efficiency of the Fan, Motor and Drive
|
1976
|
-
fan.setFanEfficiency(fan_eff)
|
1977
|
-
fan.setPressureRise(calc_fan_pressure_rise(fan_eff, fan_power_installed))
|
1978
|
-
else
|
1979
|
-
fan.setFanEfficiency(1)
|
1980
|
-
fan.setPressureRise(0)
|
1981
|
-
end
|
1896
|
+
set_fan_power(fan, fan_watts_per_cfm)
|
1982
1897
|
fan.setName(obj_name + ' supply fan')
|
1983
1898
|
fan.setEndUseSubcategory('supply fan')
|
1984
1899
|
fan.setMotorEfficiency(1.0)
|
@@ -1986,7 +1901,7 @@ class HVAC
|
|
1986
1901
|
return fan
|
1987
1902
|
end
|
1988
1903
|
|
1989
|
-
def self.create_air_loop_unitary_system(model, obj_name, fan, htg_coil, clg_coil, htg_supp_coil, supp_max_temp = nil
|
1904
|
+
def self.create_air_loop_unitary_system(model, obj_name, fan, htg_coil, clg_coil, htg_supp_coil, supp_max_temp = nil)
|
1990
1905
|
air_loop_unitary = OpenStudio::Model::AirLoopHVACUnitarySystem.new(model)
|
1991
1906
|
air_loop_unitary.setName(obj_name + ' unitary system')
|
1992
1907
|
air_loop_unitary.setAvailabilitySchedule(model.alwaysOnDiscreteSchedule)
|
@@ -2011,14 +1926,6 @@ class HVAC
|
|
2011
1926
|
air_loop_unitary.setMaximumOutdoorDryBulbTemperatureforSupplementalHeaterOperation(UnitConversions.convert(supp_max_temp, 'F', 'C'))
|
2012
1927
|
end
|
2013
1928
|
air_loop_unitary.setSupplyAirFlowRateWhenNoCoolingorHeatingisRequired(0)
|
2014
|
-
if not clg_cfm.nil? # Hidden feature; used only for HERS DSE test
|
2015
|
-
air_loop_unitary.setSupplyAirFlowRateMethodDuringCoolingOperation('SupplyAirFlowRate')
|
2016
|
-
air_loop_unitary.setSupplyAirFlowRateDuringCoolingOperation(UnitConversions.convert(clg_cfm, 'cfm', 'm^3/s'))
|
2017
|
-
end
|
2018
|
-
if not htg_cfm.nil? # Hidden feature; used only for HERS DSE test
|
2019
|
-
air_loop_unitary.setSupplyAirFlowRateMethodDuringHeatingOperation('SupplyAirFlowRate')
|
2020
|
-
air_loop_unitary.setSupplyAirFlowRateDuringHeatingOperation(UnitConversions.convert(htg_cfm, 'cfm', 'm^3/s'))
|
2021
|
-
end
|
2022
1929
|
return air_loop_unitary
|
2023
1930
|
end
|
2024
1931
|
|
@@ -2047,10 +1954,14 @@ class HVAC
|
|
2047
1954
|
return air_loop
|
2048
1955
|
end
|
2049
1956
|
|
2050
|
-
def self.apply_dehumidifier_ief_to_ef_inputs(w_coeff, ef_coeff, ief, water_removal_rate)
|
1957
|
+
def self.apply_dehumidifier_ief_to_ef_inputs(dh_type, w_coeff, ef_coeff, ief, water_removal_rate)
|
2051
1958
|
# Shift inputs under IEF test conditions to E+ supported EF test conditions
|
2052
1959
|
# test conditions
|
2053
|
-
|
1960
|
+
if dh_type == HPXML::DehumidifierTypePortable
|
1961
|
+
ief_db = UnitConversions.convert(65.0, 'F', 'C') # degree C
|
1962
|
+
elsif dh_type == HPXML::DehumidifierTypeWholeHome
|
1963
|
+
ief_db = UnitConversions.convert(73.0, 'F', 'C') # degree C
|
1964
|
+
end
|
2054
1965
|
rh = 60.0 # for both EF and IEF test conditions, %
|
2055
1966
|
|
2056
1967
|
# Independent variables applied to curve equations
|
@@ -2069,9 +1980,10 @@ class HVAC
|
|
2069
1980
|
return ef_input, water_removal_rate_input
|
2070
1981
|
end
|
2071
1982
|
|
2072
|
-
def self.
|
2073
|
-
|
2074
|
-
|
1983
|
+
def self.get_default_boiler_eae(heating_system)
|
1984
|
+
if heating_system.heating_system_type != HPXML::HVACTypeBoiler
|
1985
|
+
return
|
1986
|
+
end
|
2075
1987
|
if not heating_system.electric_auxiliary_energy.nil?
|
2076
1988
|
return heating_system.electric_auxiliary_energy
|
2077
1989
|
end
|
@@ -2079,82 +1991,57 @@ class HVAC
|
|
2079
1991
|
# From ANSI/RESNET/ICC 301-2019 Standard
|
2080
1992
|
fuel = heating_system.heating_system_fuel
|
2081
1993
|
|
2082
|
-
if heating_system.
|
2083
|
-
|
2084
|
-
|
2085
|
-
distribution_type = distribution_system.distribution_system_type
|
1994
|
+
if heating_system.is_shared_system
|
1995
|
+
distribution_system = heating_system.distribution_system
|
1996
|
+
distribution_type = distribution_system.distribution_system_type
|
2086
1997
|
|
2087
|
-
|
2088
|
-
|
2089
|
-
|
2090
|
-
|
1998
|
+
if distribution_type == HPXML::HVACDistributionTypeHydronic
|
1999
|
+
# Shared boiler w/ baseboard/radiators/etc
|
2000
|
+
if heating_system.shared_loop_watts.nil?
|
2001
|
+
return 220.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
|
2002
|
+
else
|
2003
|
+
sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
|
2004
|
+
n_dweq = heating_system.number_of_units_served.to_f
|
2005
|
+
aux_in = 0.0
|
2006
|
+
end
|
2007
|
+
elsif distribution_type == HPXML::HVACDistributionTypeHydronicAndAir
|
2008
|
+
hydronic_and_air_type = distribution_system.hydronic_and_air_type
|
2009
|
+
if hydronic_and_air_type == HPXML::HydronicAndAirTypeFanCoil
|
2010
|
+
# Shared boiler w/ fan coil
|
2011
|
+
if heating_system.shared_loop_watts.nil? || heating_system.fan_coil_watts.nil?
|
2012
|
+
return 438.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
|
2091
2013
|
else
|
2092
2014
|
sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
|
2093
2015
|
n_dweq = heating_system.number_of_units_served.to_f
|
2094
|
-
aux_in =
|
2016
|
+
aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW')
|
2095
2017
|
end
|
2096
|
-
elsif
|
2097
|
-
|
2098
|
-
if
|
2099
|
-
#
|
2100
|
-
if heating_system.shared_loop_watts.nil? || heating_system.fan_coil_watts.nil?
|
2101
|
-
return 438.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
|
2102
|
-
else
|
2103
|
-
sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
|
2104
|
-
n_dweq = heating_system.number_of_units_served.to_f
|
2105
|
-
aux_in = UnitConversions.convert(heating_system.fan_coil_watts, 'W', 'kW')
|
2106
|
-
end
|
2107
|
-
elsif hydronic_and_air_type == HPXML::HydronicAndAirTypeWaterLoopHeatPump
|
2108
|
-
# Shared boiler w/ WLHP
|
2109
|
-
if heating_system.shared_loop_watts.nil?
|
2110
|
-
return 265.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
|
2111
|
-
else
|
2112
|
-
sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
|
2113
|
-
n_dweq = heating_system.number_of_units_served.to_f
|
2114
|
-
aux_in = 0.0 # ANSI/RESNET/ICC 301-2019 Section 4.4.7.2
|
2115
|
-
end
|
2018
|
+
elsif hydronic_and_air_type == HPXML::HydronicAndAirTypeWaterLoopHeatPump
|
2019
|
+
# Shared boiler w/ WLHP
|
2020
|
+
if heating_system.shared_loop_watts.nil?
|
2021
|
+
return 265.0 # kWh/yr, per ANSI/RESNET/ICC 301-2019 Table 4.5.2(5)
|
2116
2022
|
else
|
2117
|
-
|
2023
|
+
sp_kw = UnitConversions.convert(heating_system.shared_loop_watts, 'W', 'kW')
|
2024
|
+
n_dweq = heating_system.number_of_units_served.to_f
|
2025
|
+
aux_in = 0.0 # ANSI/RESNET/ICC 301-2019 Section 4.4.7.2
|
2118
2026
|
end
|
2119
2027
|
else
|
2120
|
-
fail "Unexpected distribution type '#{
|
2028
|
+
fail "Unexpected distribution type '#{hydronic_and_air_type}' for shared boiler."
|
2121
2029
|
end
|
2030
|
+
else
|
2031
|
+
fail "Unexpected distribution type '#{distribution_type}' for shared boiler."
|
2032
|
+
end
|
2122
2033
|
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
else # In-unit boilers
|
2127
|
-
|
2128
|
-
if [HPXML::FuelTypeNaturalGas,
|
2129
|
-
HPXML::FuelTypePropane,
|
2130
|
-
HPXML::FuelTypeElectricity,
|
2131
|
-
HPXML::FuelTypeWoodCord,
|
2132
|
-
HPXML::FuelTypeWoodPellets].include? fuel
|
2133
|
-
return 170.0 # kWh/yr
|
2134
|
-
elsif [HPXML::FuelTypeOil,
|
2135
|
-
HPXML::FuelTypeOil1,
|
2136
|
-
HPXML::FuelTypeOil2,
|
2137
|
-
HPXML::FuelTypeOil4,
|
2138
|
-
HPXML::FuelTypeOil5or6,
|
2139
|
-
HPXML::FuelTypeDiesel,
|
2140
|
-
HPXML::FuelTypeKerosene,
|
2141
|
-
HPXML::FuelTypeCoal,
|
2142
|
-
HPXML::FuelTypeCoalAnthracite,
|
2143
|
-
HPXML::FuelTypeCoalBituminous,
|
2144
|
-
HPXML::FuelTypeCoke].include? fuel
|
2145
|
-
return 330.0 # kWh/yr
|
2146
|
-
end
|
2034
|
+
# ANSI/RESNET/ICC 301-2019 Equation 4.4-5
|
2035
|
+
return ((sp_kw / n_dweq) + aux_in) * 2080.0 # kWh/yr
|
2147
2036
|
|
2148
|
-
|
2149
|
-
elsif heating_system.heating_system_type == HPXML::HVACTypeFurnace
|
2037
|
+
else # In-unit boilers
|
2150
2038
|
|
2151
|
-
# Furnaces
|
2152
2039
|
if [HPXML::FuelTypeNaturalGas,
|
2153
2040
|
HPXML::FuelTypePropane,
|
2154
2041
|
HPXML::FuelTypeElectricity,
|
2155
2042
|
HPXML::FuelTypeWoodCord,
|
2156
2043
|
HPXML::FuelTypeWoodPellets].include? fuel
|
2157
|
-
return
|
2044
|
+
return 170.0 # kWh/yr
|
2158
2045
|
elsif [HPXML::FuelTypeOil,
|
2159
2046
|
HPXML::FuelTypeOil1,
|
2160
2047
|
HPXML::FuelTypeOil2,
|
@@ -2166,11 +2053,10 @@ class HVAC
|
|
2166
2053
|
HPXML::FuelTypeCoalAnthracite,
|
2167
2054
|
HPXML::FuelTypeCoalBituminous,
|
2168
2055
|
HPXML::FuelTypeCoke].include? fuel
|
2169
|
-
return
|
2056
|
+
return 330.0 # kWh/yr
|
2170
2057
|
end
|
2171
2058
|
|
2172
2059
|
end
|
2173
|
-
return 0.0
|
2174
2060
|
end
|
2175
2061
|
|
2176
2062
|
def self.calc_heat_cap_ft_spec_using_capacity_17F(num_speeds, heat_pump)
|
@@ -3401,21 +3287,17 @@ class HVAC
|
|
3401
3287
|
end
|
3402
3288
|
end
|
3403
3289
|
|
3404
|
-
def self.
|
3405
|
-
if
|
3406
|
-
|
3290
|
+
def self.set_fan_power(fan, fan_watts_per_cfm)
|
3291
|
+
if fan_watts_per_cfm > 0
|
3292
|
+
fan_eff = 0.75 # Overall Efficiency of the Fan, Motor and Drive
|
3293
|
+
fan.setFanEfficiency(fan_eff)
|
3294
|
+
fan.setPressureRise(fan_eff * fan_watts_per_cfm / UnitConversions.convert(1.0, 'cfm', 'm^3/s')) # Pa
|
3407
3295
|
else
|
3408
|
-
|
3296
|
+
fan.setFanEfficiency(1)
|
3297
|
+
fan.setPressureRise(0)
|
3409
3298
|
end
|
3410
3299
|
end
|
3411
3300
|
|
3412
|
-
def self.calc_fan_pressure_rise(fan_eff, fan_power)
|
3413
|
-
# Calculates needed fan pressure rise to achieve a given fan power with an assumed efficiency.
|
3414
|
-
# Previously we calculated the fan efficiency from an assumed pressure rise, which could lead to
|
3415
|
-
# errors (fan efficiencies > 1).
|
3416
|
-
return fan_eff * fan_power / UnitConversions.convert(1.0, 'cfm', 'm^3/s') # Pa
|
3417
|
-
end
|
3418
|
-
|
3419
3301
|
def self.calc_pump_rated_flow_rate(pump_eff, pump_w, pump_head_pa)
|
3420
3302
|
# Calculate needed pump rated flow rate to achieve a given pump power with an assumed
|
3421
3303
|
# efficiency and pump head.
|
@@ -4136,7 +4018,7 @@ class HVAC
|
|
4136
4018
|
|
4137
4019
|
def self.get_default_duct_surface_area(duct_type, ncfl_ag, cfa_served, n_returns)
|
4138
4020
|
# Fraction of primary ducts (ducts outside conditioned space)
|
4139
|
-
f_out = (ncfl_ag
|
4021
|
+
f_out = (ncfl_ag <= 1) ? 1.0 : 0.75
|
4140
4022
|
|
4141
4023
|
if duct_type == HPXML::DuctTypeSupply
|
4142
4024
|
primary_duct_area = 0.27 * cfa_served * f_out
|
@@ -4175,12 +4057,6 @@ class HVAC
|
|
4175
4057
|
return 30.0 # W/ton, per ANSI/RESNET/ICC 301-2019 Section 4.4.5 (closed loop)
|
4176
4058
|
end
|
4177
4059
|
|
4178
|
-
def self.get_default_gshp_fan_power()
|
4179
|
-
# Should this be 0.2 W/cfm per ANSI/RESNET/ICC 301-2019 Section 4.4.5? (or is 0.2 W/cfm
|
4180
|
-
# interpreted as the _additional_ fan power beyond that captured in the rating test?)
|
4181
|
-
return 0.5 # W/cfm
|
4182
|
-
end
|
4183
|
-
|
4184
4060
|
def self.apply_shared_systems(hpxml)
|
4185
4061
|
apply_shared_cooling_systems(hpxml)
|
4186
4062
|
apply_shared_heating_systems(hpxml)
|
@@ -4302,7 +4178,7 @@ class HVAC
|
|
4302
4178
|
fraction_cool_load_served: 0.0)
|
4303
4179
|
|
4304
4180
|
# Boiler
|
4305
|
-
heating_system.electric_auxiliary_energy =
|
4181
|
+
heating_system.electric_auxiliary_energy = get_default_boiler_eae(heating_system)
|
4306
4182
|
heating_system.fraction_heat_load_served = fraction_heat_load_served * (1.0 - 1.0 / heating_system.wlhp_heating_efficiency_cop)
|
4307
4183
|
heating_system.distribution_system_idref = "#{heating_system.id}_Baseboard"
|
4308
4184
|
hpxml.hvac_distributions.add(id: heating_system.distribution_system_idref,
|