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
@@ -3,7 +3,6 @@
|
|
3
3
|
# Require all gems up front; this is much faster than multiple resource
|
4
4
|
# files lazy loading as needed, as it prevents multiple lookups for the
|
5
5
|
# same gem.
|
6
|
-
require 'openstudio'
|
7
6
|
require 'pathname'
|
8
7
|
require 'csv'
|
9
8
|
require 'oga'
|
@@ -11,6 +10,7 @@ require_relative 'resources/airflow'
|
|
11
10
|
require_relative 'resources/constants'
|
12
11
|
require_relative 'resources/constructions'
|
13
12
|
require_relative 'resources/energyplus'
|
13
|
+
require_relative 'resources/generator'
|
14
14
|
require_relative 'resources/geometry'
|
15
15
|
require_relative 'resources/hotwater_appliances'
|
16
16
|
require_relative 'resources/hpxml'
|
@@ -68,7 +68,7 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
68
68
|
|
69
69
|
arg = OpenStudio::Measure::OSArgument.makeBoolArgument('debug', false)
|
70
70
|
arg.setDisplayName('Debug Mode?')
|
71
|
-
arg.setDescription('If enabled: 1) Writes in.osm file, 2) Writes in.xml HPXML file with defaults populated,
|
71
|
+
arg.setDescription('If enabled: 1) Writes in.osm file, 2) Writes in.xml HPXML file with defaults populated, 3) Generates additional log output, and 4) Creates all EnergyPlus output files. Any files written will be in the output path specified above.')
|
72
72
|
arg.setDefaultValue(false)
|
73
73
|
args << arg
|
74
74
|
|
@@ -110,11 +110,16 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
110
110
|
end
|
111
111
|
|
112
112
|
begin
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
113
|
+
stron_paths = [File.join(File.dirname(__FILE__), 'resources', 'HPXMLvalidator.xml'),
|
114
|
+
File.join(File.dirname(__FILE__), 'resources', 'EPvalidator.xml')]
|
115
|
+
hpxml = HPXML.new(hpxml_path: hpxml_path, schematron_validators: stron_paths)
|
116
|
+
hpxml.errors.each do |error|
|
117
|
+
runner.registerError(error)
|
118
|
+
end
|
119
|
+
hpxml.warnings.each do |warning|
|
120
|
+
runner.registerWarning(warning)
|
117
121
|
end
|
122
|
+
return false unless hpxml.errors.empty?
|
118
123
|
|
119
124
|
epw_path, cache_path = process_weather(hpxml, runner, model, output_dir, hpxml_path)
|
120
125
|
|
@@ -140,35 +145,6 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
140
145
|
end
|
141
146
|
end
|
142
147
|
|
143
|
-
def validate_hpxml(runner, hpxml_path, hpxml)
|
144
|
-
schemas_dir = File.join(File.dirname(__FILE__), 'resources')
|
145
|
-
|
146
|
-
is_valid = true
|
147
|
-
|
148
|
-
# Validate input HPXML against schema
|
149
|
-
XMLHelper.validate(hpxml.doc.to_xml, File.join(schemas_dir, 'HPXML.xsd'), runner).each do |error|
|
150
|
-
runner.registerError("#{hpxml_path}: #{error}")
|
151
|
-
is_valid = false
|
152
|
-
end
|
153
|
-
|
154
|
-
# Validate input HPXML against EnergyPlus Use Case
|
155
|
-
stron_path = File.join(File.dirname(__FILE__), 'resources', 'EPvalidator.xml')
|
156
|
-
errors = Validator.run_validator(hpxml.doc, stron_path)
|
157
|
-
errors.each do |error|
|
158
|
-
runner.registerError("#{hpxml_path}: #{error}")
|
159
|
-
is_valid = false
|
160
|
-
end
|
161
|
-
|
162
|
-
# Check for additional errors
|
163
|
-
errors = hpxml.check_for_errors()
|
164
|
-
errors.each do |error|
|
165
|
-
runner.registerError("#{hpxml_path}: #{error}")
|
166
|
-
is_valid = false
|
167
|
-
end
|
168
|
-
|
169
|
-
return is_valid
|
170
|
-
end
|
171
|
-
|
172
148
|
def process_weather(hpxml, runner, model, output_dir, hpxml_path)
|
173
149
|
epw_path = hpxml.climate_and_risk_zones.weather_station_epw_filepath
|
174
150
|
|
@@ -180,6 +156,10 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
180
156
|
test_epw_path = File.join(File.dirname(__FILE__), '..', 'weather', epw_path)
|
181
157
|
epw_path = test_epw_path if File.exist? test_epw_path
|
182
158
|
end
|
159
|
+
if not File.exist? epw_path
|
160
|
+
test_epw_path = File.join(File.dirname(__FILE__), '..', '..', 'weather', epw_path)
|
161
|
+
epw_path = test_epw_path if File.exist? test_epw_path
|
162
|
+
end
|
183
163
|
if not File.exist?(epw_path)
|
184
164
|
fail "'#{epw_path}' could not be found."
|
185
165
|
end
|
@@ -216,19 +196,19 @@ class OSModel
|
|
216
196
|
@apply_ashrae140_assumptions = @hpxml.header.apply_ashrae140_assumptions # Hidden feature
|
217
197
|
@apply_ashrae140_assumptions = false if @apply_ashrae140_assumptions.nil?
|
218
198
|
|
219
|
-
@schedules_file = nil
|
220
|
-
if not @hpxml.header.schedules_path.nil?
|
221
|
-
@schedules_file = SchedulesFile.new(runner: runner, model: model, schedules_path: @hpxml.header.schedules_path, col_names: ScheduleGenerator.col_names)
|
222
|
-
end
|
223
|
-
|
224
199
|
# Init
|
225
200
|
|
226
201
|
weather, epw_file = Location.apply_weather_file(model, runner, epw_path, cache_path)
|
227
202
|
check_for_errors()
|
228
203
|
set_defaults_and_globals(runner, output_dir, epw_file)
|
229
|
-
|
204
|
+
Location.apply(model, runner, weather, epw_file, @hpxml)
|
230
205
|
add_simulation_params(model)
|
231
206
|
|
207
|
+
@schedules_file = nil
|
208
|
+
if not @hpxml.header.schedules_path.nil?
|
209
|
+
@schedules_file = SchedulesFile.new(runner: runner, model: model, schedules_path: @hpxml.header.schedules_path, col_names: ScheduleGenerator.col_names)
|
210
|
+
end
|
211
|
+
|
232
212
|
# Conditioned space/zone
|
233
213
|
|
234
214
|
spaces = {}
|
@@ -281,10 +261,16 @@ class OSModel
|
|
281
261
|
|
282
262
|
add_airflow(runner, model, weather, spaces)
|
283
263
|
add_hvac_sizing(runner, model, weather, spaces)
|
284
|
-
add_furnace_eae(runner, model)
|
285
264
|
add_photovoltaics(runner, model)
|
265
|
+
add_generators(runner, model)
|
286
266
|
add_additional_properties(runner, model, hpxml_path)
|
267
|
+
|
268
|
+
# Output
|
269
|
+
|
287
270
|
add_component_loads_output(runner, model, spaces)
|
271
|
+
add_output_control_files(runner, model)
|
272
|
+
# Uncomment to debug EMS
|
273
|
+
# add_ems_debug_output(runner, model)
|
288
274
|
|
289
275
|
# Vacancy
|
290
276
|
set_vacancy(runner, model)
|
@@ -294,12 +280,6 @@ class OSModel
|
|
294
280
|
File.write(osm_output_path, model.to_s)
|
295
281
|
runner.registerInfo("Wrote file: #{osm_output_path}")
|
296
282
|
end
|
297
|
-
|
298
|
-
# Uncomment to debug EMS
|
299
|
-
# oems = model.getOutputEnergyManagementSystem
|
300
|
-
# oems.setActuatorAvailabilityDictionaryReporting('Verbose')
|
301
|
-
# oems.setInternalVariableAvailabilityDictionaryReporting('Verbose')
|
302
|
-
# oems.setEMSRuntimeLanguageDebugOutputLevel('Verbose')
|
303
283
|
end
|
304
284
|
|
305
285
|
private
|
@@ -368,6 +348,13 @@ class OSModel
|
|
368
348
|
fail "There must be at least one floor adjacent to #{location}."
|
369
349
|
end
|
370
350
|
end
|
351
|
+
|
352
|
+
# Error-checking from RESNET Pub 002: Number of bedrooms
|
353
|
+
nbeds = @hpxml.building_construction.number_of_bedrooms
|
354
|
+
nbeds_limit = (@hpxml.building_construction.conditioned_floor_area - 120.0) / 70.0
|
355
|
+
if nbeds > nbeds_limit
|
356
|
+
fail "Number of bedrooms (#{nbeds}) exceeds limit of (CFA-120)/70=#{nbeds_limit.round(1)}."
|
357
|
+
end
|
371
358
|
end
|
372
359
|
|
373
360
|
def self.set_defaults_and_globals(runner, output_dir, epw_file)
|
@@ -434,10 +421,15 @@ class OSModel
|
|
434
421
|
roofs = @hpxml.roofs.select { |r| r.interior_adjacent_to == space_type }
|
435
422
|
avg_pitch = roofs.map { |r| r.pitch }.sum(0.0) / roofs.size
|
436
423
|
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
424
|
+
if @apply_ashrae140_assumptions
|
425
|
+
# Hardcode the attic volume to match ASHRAE 140 Table 7-2 specification
|
426
|
+
volume = 3463
|
427
|
+
else
|
428
|
+
# Assume square hip roof for volume calculations; energy results are very insensitive to actual volume
|
429
|
+
length = floor_area**0.5
|
430
|
+
height = 0.5 * Math.sin(Math.atan(avg_pitch / 12.0)) * length
|
431
|
+
volume = [floor_area * height / 3.0, 0.01].max
|
432
|
+
end
|
441
433
|
|
442
434
|
spaces[space_type].thermalZone.get.setVolume(UnitConversions.convert(volume, 'ft^3', 'm^3'))
|
443
435
|
end
|
@@ -455,7 +447,7 @@ class OSModel
|
|
455
447
|
azimuth_lengths = {}
|
456
448
|
model.getSurfaces.sort.each do |surface|
|
457
449
|
next unless ['wall', 'roofceiling'].include? surface.surfaceType.downcase
|
458
|
-
next unless ['outdoors', 'foundation'].include? surface.outsideBoundaryCondition.downcase
|
450
|
+
next unless ['outdoors', 'foundation', 'adiabatic'].include? surface.outsideBoundaryCondition.downcase
|
459
451
|
next if surface.additionalProperties.getFeatureAsDouble('Tilt').get <= 0 # skip flat roofs
|
460
452
|
|
461
453
|
surfaces << surface
|
@@ -669,7 +661,7 @@ class OSModel
|
|
669
661
|
else
|
670
662
|
vf = vf_map_cb[from_surface][to_surface]
|
671
663
|
end
|
672
|
-
next if vf < 0.
|
664
|
+
next if vf < 0.05 # Skip small view factors to reduce runtime
|
673
665
|
|
674
666
|
os_vf = OpenStudio::Model::ViewFactor.new(from_surface, to_surface, vf.round(10))
|
675
667
|
zone_prop.addViewFactor(os_vf)
|
@@ -805,10 +797,23 @@ class OSModel
|
|
805
797
|
vertices << OpenStudio::Point3d.new(x / 2, y / 2, z)
|
806
798
|
vertices << OpenStudio::Point3d.new(x / 2, 0 - y / 2, z)
|
807
799
|
|
808
|
-
|
800
|
+
# Rotate about the z axis
|
801
|
+
# This is not strictly needed, but will make the floor edges
|
802
|
+
# parallel to the walls for a better geometry rendering.
|
803
|
+
azimuth_rad = UnitConversions.convert(@default_azimuths[0], 'deg', 'rad')
|
804
|
+
m = OpenStudio::Matrix.new(4, 4, 0)
|
805
|
+
m[0, 0] = Math::cos(-azimuth_rad)
|
806
|
+
m[1, 1] = Math::cos(-azimuth_rad)
|
807
|
+
m[0, 1] = -Math::sin(-azimuth_rad)
|
808
|
+
m[1, 0] = Math::sin(-azimuth_rad)
|
809
|
+
m[2, 2] = 1
|
810
|
+
m[3, 3] = 1
|
811
|
+
transformation = OpenStudio::Transformation.new(m)
|
812
|
+
|
813
|
+
return transformation * vertices
|
809
814
|
end
|
810
815
|
|
811
|
-
def self.add_wall_polygon(x, y, z, azimuth
|
816
|
+
def self.add_wall_polygon(x, y, z, azimuth, offsets = [0] * 4, subsurface_area = 0)
|
812
817
|
x = UnitConversions.convert(x, 'ft', 'm')
|
813
818
|
y = UnitConversions.convert(y, 'ft', 'm')
|
814
819
|
z = UnitConversions.convert(z, 'ft', 'm')
|
@@ -846,7 +851,7 @@ class OSModel
|
|
846
851
|
return transformation * vertices
|
847
852
|
end
|
848
853
|
|
849
|
-
def self.add_roof_polygon(x, y, z, azimuth
|
854
|
+
def self.add_roof_polygon(x, y, z, azimuth, tilt)
|
850
855
|
x = UnitConversions.convert(x, 'ft', 'm')
|
851
856
|
y = UnitConversions.convert(y, 'ft', 'm')
|
852
857
|
z = UnitConversions.convert(z, 'ft', 'm')
|
@@ -957,13 +962,13 @@ class OSModel
|
|
957
962
|
|
958
963
|
def self.add_roofs(runner, model, spaces)
|
959
964
|
@hpxml.roofs.each do |roof|
|
960
|
-
next if roof.net_area < 0
|
965
|
+
next if roof.net_area < 1.0 # skip modeling net surface area for surfaces comprised entirely of subsurface area
|
961
966
|
|
962
967
|
if roof.azimuth.nil?
|
963
968
|
if roof.pitch > 0
|
964
969
|
azimuths = @default_azimuths # Model as four directions for average exterior incident solar
|
965
970
|
else
|
966
|
-
azimuths = [
|
971
|
+
azimuths = [@default_azimuths[0]] # Arbitrary azimuth for flat roof
|
967
972
|
end
|
968
973
|
else
|
969
974
|
azimuths = [roof.azimuth]
|
@@ -1003,6 +1008,7 @@ class OSModel
|
|
1003
1008
|
if has_radiant_barrier
|
1004
1009
|
radiant_barrier_grade = roof.radiant_barrier_grade
|
1005
1010
|
end
|
1011
|
+
# FUTURE: Create Constructions.get_air_film(surface) method; use in measure.rb and hpxml_translator_test.rb
|
1006
1012
|
inside_film = Material.AirFilmRoof(Geometry.get_roof_pitch([surfaces[0]]))
|
1007
1013
|
outside_film = Material.AirFilmOutside
|
1008
1014
|
mat_roofing = Material.RoofMaterial(roof.roof_type, emitt, solar_abs)
|
@@ -1059,7 +1065,7 @@ class OSModel
|
|
1059
1065
|
|
1060
1066
|
def self.add_walls(runner, model, spaces)
|
1061
1067
|
@hpxml.walls.each do |wall|
|
1062
|
-
next if wall.net_area < 0
|
1068
|
+
next if wall.net_area < 1.0 # skip modeling net surface area for surfaces comprised entirely of subsurface area
|
1063
1069
|
|
1064
1070
|
if wall.azimuth.nil?
|
1065
1071
|
if wall.is_exterior
|
@@ -1220,6 +1226,7 @@ class OSModel
|
|
1220
1226
|
surface = OpenStudio::Model::Surface.new(add_floor_polygon(length, width, z_origin), model)
|
1221
1227
|
surface.additionalProperties.setFeature('SurfaceType', 'Floor')
|
1222
1228
|
end
|
1229
|
+
surface.additionalProperties.setFeature('Tilt', 0.0)
|
1223
1230
|
set_surface_interior(model, spaces, surface, frame_floor)
|
1224
1231
|
set_surface_exterior(model, spaces, surface, frame_floor)
|
1225
1232
|
surface.setName(frame_floor.id)
|
@@ -1304,7 +1311,7 @@ class OSModel
|
|
1304
1311
|
slabs = []
|
1305
1312
|
@hpxml.foundation_walls.each do |foundation_wall|
|
1306
1313
|
next unless foundation_wall.interior_adjacent_to == foundation_type
|
1307
|
-
next if foundation_wall.net_area < 0
|
1314
|
+
next if foundation_wall.net_area < 1.0 # skip modeling net surface area for surfaces comprised entirely of subsurface area
|
1308
1315
|
|
1309
1316
|
fnd_walls << foundation_wall
|
1310
1317
|
end
|
@@ -1379,7 +1386,7 @@ class OSModel
|
|
1379
1386
|
|
1380
1387
|
# For each slab, create a no-wall Kiva slab instance if needed.
|
1381
1388
|
slabs.each do |slab|
|
1382
|
-
next unless no_wall_slab_exp_perim[slab] > 0
|
1389
|
+
next unless no_wall_slab_exp_perim[slab] > 1.0
|
1383
1390
|
|
1384
1391
|
z_origin = 0
|
1385
1392
|
slab_area = total_slab_area * no_wall_slab_exp_perim[slab] / total_slab_exp_perim
|
@@ -1396,7 +1403,7 @@ class OSModel
|
|
1396
1403
|
|
1397
1404
|
ag_height = foundation_wall.height - foundation_wall.depth_below_grade
|
1398
1405
|
ag_net_area = foundation_wall.net_area * ag_height / foundation_wall.height
|
1399
|
-
next if ag_net_area < 0
|
1406
|
+
next if ag_net_area < 1.0
|
1400
1407
|
|
1401
1408
|
length = ag_net_area / ag_height
|
1402
1409
|
z_origin = -1 * ag_height
|
@@ -1593,7 +1600,8 @@ class OSModel
|
|
1593
1600
|
sum_cfa = 0.0
|
1594
1601
|
@hpxml.frame_floors.each do |frame_floor|
|
1595
1602
|
next unless frame_floor.is_floor
|
1596
|
-
next unless frame_floor.interior_adjacent_to
|
1603
|
+
next unless [HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include?(frame_floor.interior_adjacent_to) ||
|
1604
|
+
[HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include?(frame_floor.exterior_adjacent_to)
|
1597
1605
|
|
1598
1606
|
sum_cfa += frame_floor.area
|
1599
1607
|
end
|
@@ -1604,7 +1612,12 @@ class OSModel
|
|
1604
1612
|
end
|
1605
1613
|
|
1606
1614
|
addtl_cfa = @cfa - sum_cfa
|
1607
|
-
|
1615
|
+
|
1616
|
+
if addtl_cfa < -1.0 # Allow some rounding
|
1617
|
+
fail "Sum of floor/slab area adjacent to conditioned space (#{sum_cfa.round(1)}) is greater than conditioned floor area (#{@cfa.round(1)})."
|
1618
|
+
end
|
1619
|
+
|
1620
|
+
return unless addtl_cfa > 1.0 # Allow some rounding
|
1608
1621
|
|
1609
1622
|
floor_width = Math::sqrt(addtl_cfa)
|
1610
1623
|
floor_length = addtl_cfa / floor_width
|
@@ -1620,6 +1633,7 @@ class OSModel
|
|
1620
1633
|
floor_surface.setSpace(create_or_get_space(model, spaces, HPXML::LocationLivingSpace))
|
1621
1634
|
floor_surface.setOutsideBoundaryCondition('Adiabatic')
|
1622
1635
|
floor_surface.additionalProperties.setFeature('SurfaceType', 'InferredFloor')
|
1636
|
+
floor_surface.additionalProperties.setFeature('Tilt', 0.0)
|
1623
1637
|
|
1624
1638
|
# Add ceiling surface
|
1625
1639
|
ceiling_surface = OpenStudio::Model::Surface.new(add_ceiling_polygon(-floor_width, -floor_length, z_origin), model)
|
@@ -1631,6 +1645,7 @@ class OSModel
|
|
1631
1645
|
ceiling_surface.setSpace(create_or_get_space(model, spaces, HPXML::LocationLivingSpace))
|
1632
1646
|
ceiling_surface.setOutsideBoundaryCondition('Adiabatic')
|
1633
1647
|
ceiling_surface.additionalProperties.setFeature('SurfaceType', 'InferredCeiling')
|
1648
|
+
ceiling_surface.additionalProperties.setFeature('Tilt', 0.0)
|
1634
1649
|
|
1635
1650
|
if not @cond_bsmnt_surfaces.empty?
|
1636
1651
|
# assuming added ceiling is in conditioned basement
|
@@ -1646,13 +1661,13 @@ class OSModel
|
|
1646
1661
|
if @apply_ashrae140_assumptions
|
1647
1662
|
# 1024 ft2 of interior partition wall mass, no furniture mass
|
1648
1663
|
drywall_thick_in = 0.5
|
1649
|
-
partition_frac_of_cfa = 1024.0 / @cfa # Ratio of partition wall area to conditioned floor area
|
1664
|
+
partition_frac_of_cfa = (1024.0 * 2) / @cfa # Ratio of exposed partition wall area (both sides) to conditioned floor area
|
1650
1665
|
basement_frac_of_cfa = cfa_basement / @cfa
|
1651
1666
|
Constructions.apply_partition_walls(runner, model, 'PartitionWallConstruction', drywall_thick_in, partition_frac_of_cfa,
|
1652
1667
|
basement_frac_of_cfa, @cond_bsmnt_surfaces, spaces[HPXML::LocationLivingSpace])
|
1653
1668
|
else
|
1654
1669
|
drywall_thick_in = 0.5
|
1655
|
-
partition_frac_of_cfa = 1.0 # Ratio of partition wall area to conditioned floor area
|
1670
|
+
partition_frac_of_cfa = 1.0 # Ratio of exposed partition wall area (both sides) to conditioned floor area
|
1656
1671
|
basement_frac_of_cfa = cfa_basement / @cfa
|
1657
1672
|
Constructions.apply_partition_walls(runner, model, 'PartitionWallConstruction', drywall_thick_in, partition_frac_of_cfa,
|
1658
1673
|
basement_frac_of_cfa, @cond_bsmnt_surfaces, spaces[HPXML::LocationLivingSpace])
|
@@ -1693,6 +1708,10 @@ class OSModel
|
|
1693
1708
|
heating_season, cooling_season = HVAC.get_default_heating_and_cooling_seasons(weather)
|
1694
1709
|
@clg_season_sch = MonthWeekdayWeekendSchedule.new(model, 'cooling season schedule', Array.new(24, 1), Array.new(24, 1), cooling_season, Constants.ScheduleTypeLimitsFraction)
|
1695
1710
|
|
1711
|
+
# Create heating season as opposite of cooling season (i.e., with overlap months)
|
1712
|
+
non_cooling_season = cooling_season.map { |m| (m - 1).abs }
|
1713
|
+
@htg_season_sch = MonthWeekdayWeekendSchedule.new(model, 'heating season schedule', Array.new(24, 1), Array.new(24, 1), non_cooling_season, Constants.ScheduleTypeLimitsFraction)
|
1714
|
+
|
1696
1715
|
@clg_ssn_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
|
1697
1716
|
@clg_ssn_sensor.setName('cool_season')
|
1698
1717
|
@clg_ssn_sensor.setKeyName(@clg_season_sch.schedule.name.to_s)
|
@@ -1754,9 +1773,8 @@ class OSModel
|
|
1754
1773
|
# Apply construction
|
1755
1774
|
cool_shade_mult = window.interior_shading_factor_summer
|
1756
1775
|
heat_shade_mult = window.interior_shading_factor_winter
|
1757
|
-
Constructions.apply_window(runner, model,
|
1758
|
-
|
1759
|
-
weather, @clg_season_sch, window.ufactor, window.shgc,
|
1776
|
+
Constructions.apply_window(runner, model, sub_surface, 'WindowConstruction',
|
1777
|
+
weather, @htg_season_sch, @clg_season_sch, window.ufactor, window.shgc,
|
1760
1778
|
heat_shade_mult, cool_shade_mult)
|
1761
1779
|
else
|
1762
1780
|
# Window is on an interior surface, which E+ does not allow. Model
|
@@ -1785,7 +1803,9 @@ class OSModel
|
|
1785
1803
|
surfaces << surface
|
1786
1804
|
|
1787
1805
|
# Apply construction
|
1788
|
-
|
1806
|
+
inside_film = Material.AirFilmVertical
|
1807
|
+
outside_film = Material.AirFilmVertical
|
1808
|
+
Constructions.apply_door(runner, model, [sub_surface], 'Window', window.ufactor, inside_film, outside_film)
|
1789
1809
|
end
|
1790
1810
|
end
|
1791
1811
|
|
@@ -1826,9 +1846,8 @@ class OSModel
|
|
1826
1846
|
shgc = skylight.shgc
|
1827
1847
|
cool_shade_mult = skylight.interior_shading_factor_summer
|
1828
1848
|
heat_shade_mult = skylight.interior_shading_factor_winter
|
1829
|
-
Constructions.apply_skylight(runner, model,
|
1830
|
-
|
1831
|
-
weather, @clg_season_sch, ufactor, shgc,
|
1849
|
+
Constructions.apply_skylight(runner, model, sub_surface, 'SkylightConstruction',
|
1850
|
+
weather, @htg_season_sch, @clg_season_sch, ufactor, shgc,
|
1832
1851
|
heat_shade_mult, cool_shade_mult)
|
1833
1852
|
end
|
1834
1853
|
|
@@ -1865,7 +1884,13 @@ class OSModel
|
|
1865
1884
|
|
1866
1885
|
# Apply construction
|
1867
1886
|
ufactor = 1.0 / door.r_value
|
1868
|
-
|
1887
|
+
inside_film = Material.AirFilmVertical
|
1888
|
+
if door.wall.is_exterior
|
1889
|
+
outside_film = Material.AirFilmOutside
|
1890
|
+
else
|
1891
|
+
outside_film = Material.AirFilmVertical
|
1892
|
+
end
|
1893
|
+
Constructions.apply_door(runner, model, [sub_surface], 'Door', ufactor, inside_film, outside_film)
|
1869
1894
|
end
|
1870
1895
|
|
1871
1896
|
apply_adiabatic_construction(runner, model, surfaces, 'wall')
|
@@ -1901,25 +1926,6 @@ class OSModel
|
|
1901
1926
|
end
|
1902
1927
|
|
1903
1928
|
def self.add_hot_water_and_appliances(runner, model, weather, spaces)
|
1904
|
-
if @hpxml.clothes_washers.empty?
|
1905
|
-
runner.registerWarning('No clothes washer specified, the model will not include clothes washer energy use.')
|
1906
|
-
end
|
1907
|
-
if @hpxml.clothes_dryers.empty?
|
1908
|
-
runner.registerWarning('No clothes dryer specified, the model will not include clothes dryer energy use.')
|
1909
|
-
end
|
1910
|
-
if @hpxml.dishwashers.empty?
|
1911
|
-
runner.registerWarning('No dishwasher specified, the model will not include dishwasher energy use.')
|
1912
|
-
end
|
1913
|
-
if @hpxml.refrigerators.empty?
|
1914
|
-
runner.registerWarning('No refrigerator specified, the model will not include refrigerator energy use.')
|
1915
|
-
end
|
1916
|
-
if @hpxml.cooking_ranges.empty?
|
1917
|
-
runner.registerWarning('No cooking range specified, the model will not include cooking range/oven energy use.')
|
1918
|
-
end
|
1919
|
-
if @hpxml.water_heating_systems.empty?
|
1920
|
-
runner.registerWarning('No water heater specified, the model will not include water heating energy use.')
|
1921
|
-
end
|
1922
|
-
|
1923
1929
|
# Assign spaces
|
1924
1930
|
@hpxml.clothes_washers.each do |clothes_washer|
|
1925
1931
|
clothes_washer.additional_properties.space = get_space_from_location(clothes_washer.location, 'ClothesWasher', model, spaces)
|
@@ -2235,8 +2241,9 @@ class OSModel
|
|
2235
2241
|
|
2236
2242
|
hvac_control = @hpxml.hvac_controls[0]
|
2237
2243
|
living_zone = spaces[HPXML::LocationLivingSpace].thermalZone.get
|
2244
|
+
has_ceiling_fan = (@hpxml.ceiling_fans.size > 0)
|
2238
2245
|
|
2239
|
-
HVAC.apply_setpoints(model, runner, weather, hvac_control, living_zone)
|
2246
|
+
HVAC.apply_setpoints(model, runner, weather, hvac_control, living_zone, has_ceiling_fan)
|
2240
2247
|
end
|
2241
2248
|
|
2242
2249
|
def self.add_ceiling_fans(runner, model, weather, spaces)
|
@@ -2292,13 +2299,7 @@ class OSModel
|
|
2292
2299
|
end
|
2293
2300
|
modeled_mels << plug_load.plug_load_type
|
2294
2301
|
|
2295
|
-
MiscLoads.apply_plug(model, plug_load, obj_name, spaces[HPXML::LocationLivingSpace], @schedules_file)
|
2296
|
-
end
|
2297
|
-
if not modeled_mels.include? HPXML::PlugLoadTypeOther
|
2298
|
-
runner.registerWarning("No '#{HPXML::PlugLoadTypeOther}' plug loads specified, the model will not include misc plug load energy use.")
|
2299
|
-
end
|
2300
|
-
if not modeled_mels.include? HPXML::PlugLoadTypeTelevision
|
2301
|
-
runner.registerWarning("No '#{HPXML::PlugLoadTypeTelevision}' plug loads specified, the model will not include television plug load energy use.")
|
2302
|
+
MiscLoads.apply_plug(model, plug_load, obj_name, spaces[HPXML::LocationLivingSpace], @apply_ashrae140_assumptions, @schedules_file)
|
2302
2303
|
end
|
2303
2304
|
end
|
2304
2305
|
|
@@ -2499,25 +2500,18 @@ class OSModel
|
|
2499
2500
|
HVACSizing.apply(model, runner, weather, spaces, @hpxml, @infil_volume, @nbeds, @min_neighbor_distance, @debug)
|
2500
2501
|
end
|
2501
2502
|
|
2502
|
-
def self.add_furnace_eae(runner, model)
|
2503
|
-
# Needs to come after HVAC sizing (needs heating capacity and airflow rate)
|
2504
|
-
# FUTURE: Could remove this method and simplify everything if we could autosize via the HPXML file
|
2505
|
-
|
2506
|
-
@hpxml.heating_systems.each do |heating_system|
|
2507
|
-
next unless heating_system.fraction_heat_load_served > 0
|
2508
|
-
next unless [HPXML::HVACTypeFurnace, HPXML::HVACTypeWallFurnace, HPXML::HVACTypeFloorFurnace, HPXML::HVACTypeStove].include? heating_system.heating_system_type
|
2509
|
-
next unless heating_system.heating_system_fuel != HPXML::FuelTypeElectricity
|
2510
|
-
|
2511
|
-
HVAC.apply_eae_to_heating_fan(runner, @hvac_map[heating_system.id], heating_system)
|
2512
|
-
end
|
2513
|
-
end
|
2514
|
-
|
2515
2503
|
def self.add_photovoltaics(runner, model)
|
2516
2504
|
@hpxml.pv_systems.each do |pv_system|
|
2517
2505
|
PV.apply(model, @nbeds, pv_system)
|
2518
2506
|
end
|
2519
2507
|
end
|
2520
2508
|
|
2509
|
+
def self.add_generators(runner, model)
|
2510
|
+
@hpxml.generators.each do |generator|
|
2511
|
+
Generator.apply(model, @nbeds, generator)
|
2512
|
+
end
|
2513
|
+
end
|
2514
|
+
|
2521
2515
|
def self.add_additional_properties(runner, model, hpxml_path)
|
2522
2516
|
# Store some data for use in reporting measure
|
2523
2517
|
additionalProperties = model.getBuilding.additionalProperties
|
@@ -2582,6 +2576,8 @@ class OSModel
|
|
2582
2576
|
output_diagnostics = model.getOutputDiagnostics
|
2583
2577
|
output_diagnostics.addKey('DisplayAdvancedReportVariables')
|
2584
2578
|
|
2579
|
+
area_tolerance = UnitConversions.convert(1.0, 'ft^2', 'm^2')
|
2580
|
+
|
2585
2581
|
model.getSurfaces.sort.each_with_index do |s, idx|
|
2586
2582
|
next unless s.space.get.thermalZone.get.name.to_s == living_zone.name.to_s
|
2587
2583
|
|
@@ -2624,7 +2620,7 @@ class OSModel
|
|
2624
2620
|
end
|
2625
2621
|
end
|
2626
2622
|
|
2627
|
-
next if s.netArea <
|
2623
|
+
next if s.netArea < area_tolerance # Skip parent surfaces (of subsurfaces) that have near zero net area
|
2628
2624
|
|
2629
2625
|
key = { 'FoundationWall' => :foundation_walls,
|
2630
2626
|
'RimJoist' => :rim_joists,
|
@@ -2704,9 +2700,7 @@ class OSModel
|
|
2704
2700
|
|
2705
2701
|
infil_flow_actuators = []
|
2706
2702
|
natvent_flow_actuators = []
|
2707
|
-
mechvent_flow_actuators = []
|
2708
2703
|
whf_flow_actuators = []
|
2709
|
-
cd_flow_actuators = []
|
2710
2704
|
|
2711
2705
|
model.getEnergyManagementSystemActuators.each do |actuator|
|
2712
2706
|
next unless (actuator.actuatedComponentType == 'Zone Infiltration') && (actuator.actuatedComponentControlType == 'Air Exchange Flow Rate')
|
@@ -2717,18 +2711,15 @@ class OSModel
|
|
2717
2711
|
natvent_flow_actuators << actuator
|
2718
2712
|
elsif actuator.name.to_s.start_with? Constants.ObjectNameWholeHouseFan.gsub(' ', '_')
|
2719
2713
|
whf_flow_actuators << actuator
|
2720
|
-
elsif actuator.name.to_s.start_with? Constants.ObjectNameClothesDryerExhaust.gsub(' ', '_')
|
2721
|
-
cd_flow_actuators << actuator
|
2722
2714
|
end
|
2723
2715
|
end
|
2724
|
-
if (infil_flow_actuators.size != 1) || (natvent_flow_actuators.size != 1) || (whf_flow_actuators.size != 1)
|
2716
|
+
if (infil_flow_actuators.size != 1) || (natvent_flow_actuators.size != 1) || (whf_flow_actuators.size != 1)
|
2725
2717
|
fail 'Could not find actuator for component loads.'
|
2726
2718
|
end
|
2727
2719
|
|
2728
2720
|
infil_flow_actuator = infil_flow_actuators[0]
|
2729
2721
|
natvent_flow_actuator = natvent_flow_actuators[0]
|
2730
2722
|
whf_flow_actuator = whf_flow_actuators[0]
|
2731
|
-
cd_flow_actuator = cd_flow_actuators[0]
|
2732
2723
|
|
2733
2724
|
# EMS Sensors: Ducts
|
2734
2725
|
|
@@ -2906,7 +2897,7 @@ class OSModel
|
|
2906
2897
|
intgains_dhw_sensors[dhw_sensor] = [offcycle_loss, oncycle_loss, dhw_rtf_sensor]
|
2907
2898
|
end
|
2908
2899
|
|
2909
|
-
nonsurf_names = ['intgains', 'infil', 'mechvent', 'natvent', 'whf', 'ducts'
|
2900
|
+
nonsurf_names = ['intgains', 'infil', 'mechvent', 'natvent', 'whf', 'ducts']
|
2910
2901
|
|
2911
2902
|
# EMS program
|
2912
2903
|
program = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
@@ -2946,18 +2937,16 @@ class OSModel
|
|
2946
2937
|
end
|
2947
2938
|
|
2948
2939
|
# EMS program: Infiltration, Natural Ventilation, Mechanical Ventilation, Ducts
|
2949
|
-
program.addLine("Set hr_airflow_rate = #{infil_flow_actuator.name} + #{natvent_flow_actuator.name} + #{whf_flow_actuator.name}
|
2940
|
+
program.addLine("Set hr_airflow_rate = #{infil_flow_actuator.name} + #{natvent_flow_actuator.name} + #{whf_flow_actuator.name}")
|
2950
2941
|
program.addLine('If hr_airflow_rate > 0')
|
2951
2942
|
program.addLine(" Set hr_infil = (#{air_loss_sensor.name} - #{air_gain_sensor.name}) * #{infil_flow_actuator.name} / hr_airflow_rate") # Airflow heat attributed to infiltration
|
2952
2943
|
program.addLine(" Set hr_natvent = (#{air_loss_sensor.name} - #{air_gain_sensor.name}) * #{natvent_flow_actuator.name} / hr_airflow_rate") # Airflow heat attributed to natural ventilation
|
2953
2944
|
program.addLine(" Set hr_whf = (#{air_loss_sensor.name} - #{air_gain_sensor.name}) * #{whf_flow_actuator.name} / hr_airflow_rate") # Airflow heat attributed to whole house fan
|
2954
|
-
program.addLine(" Set hr_cd = ((#{air_loss_sensor.name} - #{air_gain_sensor.name}) * #{cd_flow_actuator.name} / hr_airflow_rate)") # Airflow heat attributed to clothes dryer exhaust
|
2955
2945
|
program.addLine('Else')
|
2956
2946
|
program.addLine(' Set hr_infil = 0')
|
2957
2947
|
program.addLine(' Set hr_natvent = 0')
|
2958
2948
|
program.addLine(' Set hr_whf = 0')
|
2959
2949
|
program.addLine(' Set hr_mechvent = 0')
|
2960
|
-
program.addLine(' Set hr_cd = 0')
|
2961
2950
|
program.addLine('EndIf')
|
2962
2951
|
program.addLine('Set hr_mechvent = 0')
|
2963
2952
|
mechvent_sensors.each do |sensor|
|
@@ -3036,6 +3025,30 @@ class OSModel
|
|
3036
3025
|
@schedules_file.set_vacancy(col_names: ScheduleGenerator.col_names)
|
3037
3026
|
end
|
3038
3027
|
|
3028
|
+
def self.add_output_control_files(runner, model)
|
3029
|
+
return if @debug
|
3030
|
+
|
3031
|
+
# Disable various output files
|
3032
|
+
ocf = model.getOutputControlFiles
|
3033
|
+
ocf.setOutputAUDIT(false)
|
3034
|
+
ocf.setOutputBND(false)
|
3035
|
+
ocf.setOutputEIO(false)
|
3036
|
+
ocf.setOutputESO(false)
|
3037
|
+
ocf.setOutputMDD(false)
|
3038
|
+
ocf.setOutputMTD(false)
|
3039
|
+
ocf.setOutputMTR(false)
|
3040
|
+
ocf.setOutputRDD(false)
|
3041
|
+
ocf.setOutputSHD(false)
|
3042
|
+
ocf.setOutputTabular(false)
|
3043
|
+
end
|
3044
|
+
|
3045
|
+
def self.add_ems_debug_output(runner, model)
|
3046
|
+
oems = model.getOutputEnergyManagementSystem
|
3047
|
+
oems.setActuatorAvailabilityDictionaryReporting('Verbose')
|
3048
|
+
oems.setInternalVariableAvailabilityDictionaryReporting('Verbose')
|
3049
|
+
oems.setEMSRuntimeLanguageDebugOutputLevel('Verbose')
|
3050
|
+
end
|
3051
|
+
|
3039
3052
|
# FUTURE: Move all of these construction methods to constructions.rb
|
3040
3053
|
def self.calc_non_cavity_r(film_r, constr_set)
|
3041
3054
|
# Calculate R-value for all non-cavity layers
|
@@ -3462,8 +3475,7 @@ class OSModel
|
|
3462
3475
|
# Create E+ other side coefficient object
|
3463
3476
|
otherside_object = OpenStudio::Model::SurfacePropertyOtherSideCoefficients.new(model)
|
3464
3477
|
otherside_object.setName(exterior_adjacent_to)
|
3465
|
-
|
3466
|
-
otherside_object.setCombinedConvectiveRadiativeFilmCoefficient(8.3)
|
3478
|
+
otherside_object.setCombinedConvectiveRadiativeFilmCoefficient(UnitConversions.convert(1.0 / Material.AirFilmVertical.rvalue, 'Btu/(hr*ft^2*F)', 'W/(m^2*K)'))
|
3467
3479
|
# Schedule of space temperature, can be shared with water heater/ducts
|
3468
3480
|
sch = get_space_temperature_schedule(model, exterior_adjacent_to, spaces)
|
3469
3481
|
otherside_object.setConstantTemperatureSchedule(sch)
|
@@ -3523,7 +3535,7 @@ class OSModel
|
|
3523
3535
|
sensor_gnd.setName('ground_temp')
|
3524
3536
|
end
|
3525
3537
|
|
3526
|
-
actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(sch,
|
3538
|
+
actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(sch, *EPlus::EMSActuatorScheduleConstantValue)
|
3527
3539
|
actuator.setName("#{location.gsub(' ', '_').gsub('-', '_')}_temp_sch")
|
3528
3540
|
|
3529
3541
|
# EMS to actuate schedule
|