urbanopt-cli 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/CMakeLists.txt +8 -8
- data/LICENSE.md +11 -1
- data/Rakefile +16 -6
- data/example_files/example_project_combined.json +100 -5
- data/example_files/mappers/Baseline.rb +31 -18
- data/example_files/mappers/CreateBar.rb +16 -6
- data/example_files/mappers/EvCharging.rb +20 -10
- data/example_files/mappers/Floorspace.rb +16 -6
- data/example_files/mappers/HighEfficiencyCreateBar.rb +16 -6
- data/example_files/mappers/HighEfficiencyFloorspace.rb +16 -6
- data/example_files/mappers/ThermalStorage.rb +16 -6
- data/example_files/measures/BuildResidentialModel/measure.rb +211 -129
- data/example_files/residential/clothes_dryer.tsv +7 -7
- data/example_files/residential/clothes_washer.tsv +1 -1
- data/example_files/residential/cooling_system.tsv +42 -22
- data/example_files/residential/dishwasher.tsv +1 -1
- data/example_files/residential/exhaust.tsv +3 -0
- data/example_files/residential/heat_pump.tsv +62 -40
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -0
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +23 -0
- data/example_files/resources/hpxml-measures/.gitignore +1 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +633 -1188
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +1524 -1211
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/constants.rb +0 -8
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +424 -335
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules.rb +104 -62
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekday_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/schedules_weekend_state_and_monthly_schedule_shift.csv +613 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-50percent.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-portable.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier-ief-whole-home.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-dehumidifier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-modified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-none.osw +36 -60
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-appliances-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-flat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-radiant-barrier.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-unvented-insulated-roof.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-atticroof-vented.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent-preconditioning.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-mechvent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily-shared-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-multifamily.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-bldgtype-single-family-attached.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-combi-tankless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-dwhr.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-outside.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-standbyloss.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect-with-solar-fraction.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-hpwh.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-jacket-indirect.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-low-flow-fixtures.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-none.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-demand.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-manual.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-nocontrol.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-temperature.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-recirc-timer.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-evacuated-tube.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-direct-ics.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-indirect-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-solar-thermosyphon-flat-plate.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-coal.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-elec-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-oil.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tank-wood.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-outside.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-electric.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-uef.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar-fraction.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas-with-solar.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-dhw-tankless-propane.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-2stories.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-1.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-2.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-4.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-beds-5.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-garage.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-ach-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm-house-pressure.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-cfm50.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-flue.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-infil-natural-ach.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-overhangs.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-enclosure-windows-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-conditioned-basement-slab-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-slab.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-assembly-r.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement-wall-insulation.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unconditioned-basement.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-unvented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-foundation-vented-crawlspace.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed-heating-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-coal-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-central-ac-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-boiler-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-only-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-dual-fuel-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ducts-leakage-percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-elec-resistance-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-furnace-gas.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-evap-cooler-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fireplace-wood-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-fixed-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-floor-furnace-propane-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-coal-only.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-central-ac-1-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-elec-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-2-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-central-ac-var-speed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-gas-room-ac.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-oil-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-propane-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-furnace-wood-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-cooling-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump-heating-only.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-ground-to-air-heat-pump.osw +31 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-plug-loads-additional-multipliers.osw → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.osw} +36 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-furnace-gas-only.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-ground-to-air-heat-pump.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-all-mini-split-heat-pump-ducted.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.osw +338 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.osw +340 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ducted.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-air-conditioner-only-ductless.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-cooling-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted-heating-only.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ducted.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-mini-split-heat-pump-ductless.osw +32 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-none.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-portable-heater-gas-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-programmable-thermostat-detailed.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only-33percent.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-room-ac-only.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-setpoints.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-oil-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-stove-wood-pellets-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-undersized.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-hvac-wall-furnace-elec-only.osw +31 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-ceiling-fans.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-lighting-detailed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-AMY-2012.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-baltimore-md.osw +40 -64
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-dallas-tx.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-duluth-mn.osw +44 -68
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-helena-mt.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-honolulu-hi.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-miami-fl.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-phoenix-az.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-location-portland-or.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-balanced.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-bath-kitchen-fans.osw +39 -65
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis-evap-cooler-only-ducted.osw +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-cfis.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv-atre-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-erv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust-rated-flow-rate.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-exhaust.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv-asre.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-hrv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-supply.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-mechvent-whole-house-fan.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-defaults.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-loads-large-uncommon2.osw +29 -53
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-neighbor-shading.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-shielding-of-home.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-misc-usage-multiplier.osw +30 -54
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-pv.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-vacancy-6-months.osw → base-schedules-stochastic-vacant.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-stochastic.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-schedules-user-specified.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-calendar-year-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-custom.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-daylight-saving-disabled.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-runperiod-1-month.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base-simcontrol-timestep-10-mins.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/base.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +57 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-auto.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-exterior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-eaves.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-single-exterior-front.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-slab.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-unvented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-left-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-middle-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-bottom.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-middle.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top-double-loaded-interior.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace-right-top.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-multifamily-vented-crawlspace.osw +341 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-gable.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-atticroof-conditioned-eaves-hip.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-exterior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-double-loaded-interior.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-single-exterior-front.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-slab.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unconditioned-basement.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-unvented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-middle.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace-right.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-bldgtype-single-family-attached-vented-crawlspace.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-dhw-solar-latitude.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-gable.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-atticroof-conditioned-eaves-hip.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-atticroof-conditioned.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-garage-partially-protruded.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-enclosure-windows-shading.osw +339 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-pv-roofpitch.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-schedules-random-seed.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heat-pump.osw +336 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-boiler-to-heating-system.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-fireplace-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-fireplace.osw → extra-second-heating-system-fireplace-to-heating-system.osw} +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-heating-system-portable-heater-to-heat-pump.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/{extra-second-heating-system-portable-heater.osw → extra-second-heating-system-portable-heater-to-heating-system.osw} +32 -56
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-second-refrigerator.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-clothes-washer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-dishwasher-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-extra-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-freezer-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-zero-refrigerator-kwh.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-floor-insulation.osw +34 -58
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-attic-with-one-floor-above-grade.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/conditioned-basement-with-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/cooling-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/dhw-indirect-without-boiler.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/ducts-location-and-areas-not-same-type.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/foundation-wall-insulation-greater-than-height.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/heating-system-and-heat-pump.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-crawlspace-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-bottom-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multifamily-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-fuel-loads.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-other-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/{multipliers-without-plug-loads.osw → multipliers-without-tv-plug-loads.osw} +35 -59
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-vehicle-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/multipliers-without-well-pump-plug-loads.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-electric-heat-pump-water-heater.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-ceiling-fan-quantity.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/non-integer-geometry-num-bathrooms.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-but-no-primary-heating.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-majority-heat.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/second-heating-system-serves-total-heat-load.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-ambient.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-attached-no-building-orientation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-finished-basement-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/single-family-detached-slab-non-zero-foundation-height.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/slab-non-zero-foundation-height-above-grade.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unconditioned-basement-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-attic-with-floor-and-roof-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/unvented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-attic-with-floor-and-roof-insulation.osw +33 -57
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/vented-crawlspace-with-wall-and-ceiling-insulation.osw +31 -55
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/invalid_files/zero-number-of-bedrooms.osw +337 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/schedules/vacant.csv +8761 -0
- data/example_files/resources/hpxml-measures/Changelog.md +238 -0
- data/example_files/resources/hpxml-measures/Gemfile +4 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +265 -838
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +135 -114
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/BaseElements.xsd +5 -97
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/EPvalidator.xml +573 -193
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLDataTypes.xsd +2 -28
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/HPXMLvalidator.xml +114 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +107 -176
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -180
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +481 -94
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/generator.rb +2 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +23 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +27 -25
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +735 -453
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +417 -105
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +1377 -1335
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +1393 -1467
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +2 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +20 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +64 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +2 -22
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +15 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/simcontrols.rb +7 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +2 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +3 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +31 -30
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_constructions.rb +62 -16
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +507 -628
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +4 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +321 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_location.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_simcontrols.rb +3 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +25 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +3 -0
- data/example_files/resources/hpxml-measures/README.md +4 -4
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.rb +111 -37
- data/example_files/resources/hpxml-measures/SimulationOutputReport/measure.xml +318 -490
- data/example_files/resources/hpxml-measures/SimulationOutputReport/tests/output_report_test.rb +237 -183
- data/example_files/resources/hpxml-measures/docs/source/conf.py +4 -1
- data/example_files/resources/hpxml-measures/docs/source/getting_started.rst +2 -2
- data/example_files/resources/hpxml-measures/docs/source/intro.rst +3 -105
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +476 -351
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +154 -130
- data/example_files/resources/hpxml-measures/tasks.rb +1287 -511
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +35 -0
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3.epw +8768 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +23 -5
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-50percent.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +27 -18
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +22 -11
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +20 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +22 -12
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-single-family-attached.xml +14 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +563 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +600 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +2474 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-enclosure-windows-interior-shading.xml → base-enclosure-windows-shading.xml} +576 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +643 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-interior-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +561 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +552 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed-manual-s-oversize-allowances.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-2-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-2-speed.xml} +556 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed-manual-s-oversize-allowances.xml} +559 -556
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-air-to-air-heat-pump-var-speed-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-air-to-air-heat-pump-var-speed.xml} +556 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-elec-only-autosize.xml → base-hvac-autosize-boiler-elec-only.xml} +517 -518
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-central-ac-1-speed-autosize.xml → base-hvac-autosize-boiler-gas-central-ac-1-speed.xml} +568 -569
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-boiler-gas-only-autosize.xml → base-hvac-autosize-boiler-gas-only.xml} +518 -519
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-1-speed-autosize.xml → base-hvac-autosize-central-ac-only-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-2-speed-autosize.xml → base-hvac-autosize-central-ac-only-2-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-only-var-speed-autosize.xml → base-hvac-autosize-central-ac-only-var-speed.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-central-ac-plus-air-to-air-heat-pump-heating-autosize.xml → base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml} +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-autosize.xml → base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-dual-fuel-mini-split-heat-pump-ducted-autosize.xml → base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-elec-resistance-only-autosize.xml → base-hvac-autosize-elec-resistance-only.xml} +508 -509
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-evap-cooler-furnace-gas-autosize.xml → base-hvac-autosize-evap-cooler-furnace-gas.xml} +552 -552
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-floor-furnace-propane-only-autosize.xml → base-hvac-autosize-floor-furnace-propane-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-elec-only-autosize.xml → base-hvac-autosize-furnace-elec-only.xml} +546 -546
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-2-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-2-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-central-ac-var-speed-autosize.xml → base-hvac-autosize-furnace-gas-central-ac-var-speed.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +547 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-room-ac-autosize.xml → base-hvac-autosize-furnace-gas-room-ac.xml} +557 -557
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +554 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +559 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-ground-to-air-heat-pump-manual-s-oversize-allowances.xml} +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-ground-to-air-heat-pump-autosize.xml → base-hvac-autosize-ground-to-air-heat-pump.xml} +558 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +546 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-cooling-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-heating-only-autosize.xml → base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize-manual-s-oversize-allowances.xml → base-hvac-autosize-mini-split-heat-pump-ducted-manual-s-oversize-allowances.xml} +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-room-ac-only-autosize.xml → base-hvac-autosize-room-ac-only.xml} +507 -508
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-stove-oil-only-autosize.xml → base-hvac-autosize-stove-oil-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-wall-furnace-elec-only-autosize.xml → base-hvac-autosize-wall-furnace-elec-only.xml} +511 -512
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-autosize.xml → base-hvac-autosize.xml} +559 -559
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +1 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +512 -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 +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +547 -547
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +547 -550
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +561 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/slab-zero-exposed-perimeter.xml → base-hvac-install-quality-airflow-defect-furnace-gas-central-ac-1-speed.xml} +567 -561
- data/example_files/resources/hpxml-measures/workflow/sample_files/{invalid_files/heat-pump-mixed-fixed-and-autosize-capacities2.xml → base-hvac-install-quality-all-air-to-air-heat-pump-1-speed.xml} +565 -562
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-2-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-air-to-air-heat-pump-var-speed.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-misc-shelter-coefficient.xml → base-hvac-install-quality-all-furnace-gas-central-ac-1-speed.xml} +570 -564
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-2-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-furnace-gas-central-ac-var-speed.xml +571 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-furnace-gas-only-autosize.xml → base-hvac-install-quality-all-furnace-gas-only.xml} +551 -549
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-all-ground-to-air-heat-pump.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-air-conditioner-only-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-air-conditioner-only-ducted.xml} +551 -548
- data/example_files/resources/hpxml-measures/workflow/sample_files/{hvac_autosizing/base-hvac-mini-split-heat-pump-ducted-autosize.xml → base-hvac-install-quality-all-mini-split-heat-pump-ducted.xml} +564 -558
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-blower-efficiency-furnace-gas-central-ac-1-speed.xml +568 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-charge-defect-furnace-gas-central-ac-1-speed.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-none-furnace-gas-central-ac-1-speed.xml +569 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +0 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple2.xml +837 -834
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +0 -1
- 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 +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-programmable-thermostat.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +512 -513
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-detailed.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +34 -23
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +576 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +2 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +9 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +5 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic-vacant.xml +563 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-stochastic.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-user-specified.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/boiler-invalid-afue.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cfis-with-hydronic-distribution.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-dryer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/clothes-washer-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/cooking-range-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-fraction-served.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dehumidifier-setpoints.xml +534 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-frac-load-served.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-ef-tank.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dhw-invalid-uef-tank-heat-pump.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/dishwasher-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-cfm25.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-leakage-percent.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location-unconditioned-space.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duct-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/duplicate-id.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-attic-missing-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-exterior-foundation-wall.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-basement-missing-slab.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa.xml +4 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-floor-area-exceeds-cfa2.xml +447 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-roof-ceiling.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-garage-missing-slab.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-ceiling-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-exterior-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/enclosure-living-missing-floor-slab.xml +11 -58
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-fuel-load.xml +759 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-sensible-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-fuel-load.xml +760 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/frac-total-plug-load.xml +758 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/furnace-invalid-afue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-number-of-bedrooms-served.xml +459 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/generator-output-greater-than-consumption.xml +578 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/heat-pump-mixed-fixed-and-autosize-capacities.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-cooling.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-multiple-attached-heating.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-distribution-return-duct-leakage-missing.xml +2 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-cooling.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-dse-multiple-attached-heating.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-frac-load-served.xml +916 -913
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-inconsistent-fan-powers.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/hvac-invalid-distribution-system-type.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-assembly-effective-rvalue.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-boolean.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-float.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-datatype-integer.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-daylight-saving.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-distribution-cfa-served.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-epw-filepath.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-equipment.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-facility-type-surfaces.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-foundation-wall-properties.xml +573 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-id2.xml +590 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-infiltration-volume.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-input-parameters.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-neighbor-shading-azimuth.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-bedrooms-served.xml +464 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-conditioned-floors.xml +562 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-number-of-units-served.xml +450 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-runperiod.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-schema-version.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-shared-vent-in-unit-flowrate.xml +472 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-timestep.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/invalid-window-height.xml +6 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/lighting-fractions.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-duct-location.xml +912 -909
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/missing-elements.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-appliance.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-duct.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-surface.xml +12 -2
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multifamily-reference-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-without-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-buildings-wrong-building-id.xml +1654 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-ideal-air.xml → invalid_files/multiple-shared-cooling-systems.xml} +431 -498
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/multiple-shared-heating-systems.xml +434 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-roof.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/net-area-negative-wall.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/num-bedrooms-exceeds-limit.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/orphaned-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerator-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-multiple-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/refrigerators-no-primary.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/repeated-relatedhvac-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-combi-tankless.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-desuperheater.xml +1 -4
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/solar-thermal-system-with-dhw-indirect.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-cfis.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-door.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-hvac-distribution.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-clothes-washer-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-shared-dishwasher-water-heater.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-skylight.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-solar-thermal-system.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/unattached-window.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location-other.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/sample_files/invalid_files/water-heater-location.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/template.osw +4 -1
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +0 -3
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +232 -360
- data/example_files/{measures/BuildResidentialModel/resources → resources}/measure-info.json +0 -0
- data/example_files/{measures/BuildResidentialModel/resources → resources}/meta_measure.rb +53 -44
- data/lib/uo_cli.rb +187 -44
- data/lib/uo_cli/version.rb +17 -7
- data/requirements.txt +2 -0
- data/uo_cli.gemspec +2 -2
- metadata +248 -64
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.rb +0 -1005
- data/example_files/measures/ResidentialGeometryCreateMultifamily/measure.xml +0 -326
- data/example_files/measures/ResidentialGeometryCreateMultifamily/tests/create_residential_multifamily_geometry_test.rb +0 -477
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.rb +0 -1039
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/measure.xml +0 -393
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyAttached/tests/create_residential_single_family_attached_geometry_test.rb +0 -456
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.rb +0 -979
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/measure.xml +0 -388
- data/example_files/measures/ResidentialGeometryCreateSingleFamilyDetached/tests/create_residential_single_family_detached_geometry_test.rb +0 -704
- data/example_files/resources/hpxml-measures/.circleci/config.yml +0 -20
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/location.rb +0 -24
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/extra-hvac-programmable-thermostat.osw +0 -369
@@ -2750,6 +2750,7 @@
|
|
2750
2750
|
<xs:enumeration value="baseboard"/>
|
2751
2751
|
<xs:enumeration value="radiant floor"/>
|
2752
2752
|
<xs:enumeration value="radiant ceiling"/>
|
2753
|
+
<xs:enumeration value="water loop"/>
|
2753
2754
|
<xs:enumeration value="other"/>
|
2754
2755
|
</xs:restriction>
|
2755
2756
|
</xs:simpleType>
|
@@ -2765,6 +2766,7 @@
|
|
2765
2766
|
<xs:enumeration value="regular velocity"/>
|
2766
2767
|
<xs:enumeration value="high velocity"/>
|
2767
2768
|
<xs:enumeration value="gravity"/>
|
2769
|
+
<xs:enumeration value="fan coil"/>
|
2768
2770
|
</xs:restriction>
|
2769
2771
|
</xs:simpleType>
|
2770
2772
|
<xs:complexType name="AirDistributionType">
|
@@ -2774,20 +2776,6 @@
|
|
2774
2776
|
</xs:extension>
|
2775
2777
|
</xs:simpleContent>
|
2776
2778
|
</xs:complexType>
|
2777
|
-
<xs:simpleType name="HydronicAndAirDistributionType_simple">
|
2778
|
-
<xs:restriction base="xs:string">
|
2779
|
-
<xs:enumeration value="fan coil"/>
|
2780
|
-
<xs:enumeration value="water loop heat pump"/>
|
2781
|
-
<xs:enumeration value="other"/>
|
2782
|
-
</xs:restriction>
|
2783
|
-
</xs:simpleType>
|
2784
|
-
<xs:complexType name="HydronicAndAirDistributionType">
|
2785
|
-
<xs:simpleContent>
|
2786
|
-
<xs:extension base="HydronicAndAirDistributionType_simple">
|
2787
|
-
<xs:attribute name="dataSource" type="DataSource"/>
|
2788
|
-
</xs:extension>
|
2789
|
-
</xs:simpleContent>
|
2790
|
-
</xs:complexType>
|
2791
2779
|
<xs:simpleType name="ElectricDistributionType_simple">
|
2792
2780
|
<xs:restriction base="xs:string">
|
2793
2781
|
<xs:enumeration value="baseboard"/>
|
@@ -3074,20 +3062,6 @@
|
|
3074
3062
|
</xs:extension>
|
3075
3063
|
</xs:simpleContent>
|
3076
3064
|
</xs:complexType>
|
3077
|
-
<xs:simpleType name="DehumidifierLocation_simple">
|
3078
|
-
<xs:restriction base="xs:string">
|
3079
|
-
<xs:enumeration value="living space"/>
|
3080
|
-
<xs:enumeration value="basement"/>
|
3081
|
-
<xs:enumeration value="other"/>
|
3082
|
-
</xs:restriction>
|
3083
|
-
</xs:simpleType>
|
3084
|
-
<xs:complexType name="DehumidifierLocation">
|
3085
|
-
<xs:simpleContent>
|
3086
|
-
<xs:extension base="DehumidifierLocation_simple">
|
3087
|
-
<xs:attribute name="dataSource" type="DataSource"/>
|
3088
|
-
</xs:extension>
|
3089
|
-
</xs:simpleContent>
|
3090
|
-
</xs:complexType>
|
3091
3065
|
<xs:simpleType name="WaterHeaterType_simple">
|
3092
3066
|
<xs:restriction base="xs:string">
|
3093
3067
|
<xs:enumeration value="storage water heater"/>
|
@@ -11,6 +11,7 @@
|
|
11
11
|
</sch:rule>
|
12
12
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:BuildingSummary/h:Site'>
|
13
13
|
<sch:assert role='ERROR' test='h:SiteType[text()="rural" or text()="suburban" or text()="urban"] or not(h:SiteType)'>Expected SiteType to be 'rural' or 'suburban' or 'urban'</sch:assert>
|
14
|
+
<sch:assert role='ERROR' test='h:ShieldingofHome[text()="well-shielded" or text()="normal" or text()="exposed"] or not(h:ShieldingofHome)'>Expected ShieldingofHome to be 'well-shielded' or 'normal' or 'exposed'</sch:assert>
|
14
15
|
</sch:rule>
|
15
16
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:BuildingSummary/h:Site/h:FuelTypesAvailable'>
|
16
17
|
<sch:assert role='ERROR' test='h:Fuel[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:Fuel)'>Expected Fuel to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
@@ -33,6 +34,7 @@
|
|
33
34
|
</sch:rule>
|
34
35
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement'>
|
35
36
|
<sch:assert role='ERROR' test='number(h:HousePressure) > 0 or not(h:HousePressure)'>Expected HousePressure to be greater than 0</sch:assert>
|
37
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
36
38
|
</sch:rule>
|
37
39
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement/h:BuildingAirLeakage'>
|
38
40
|
<sch:assert role='ERROR' test='h:UnitofMeasure[text()="CFM" or text()="CFMnatural" or text()="ACH" or text()="ACHnatural"] or not(h:UnitofMeasure)'>Expected UnitofMeasure to be 'CFM' or 'CFMnatural' or 'ACH' or 'ACHnatural'</sch:assert>
|
@@ -60,9 +62,11 @@
|
|
60
62
|
<sch:assert role='ERROR' test='number(h:Pitch) >= 0 or not(h:Pitch)'>Expected Pitch to be greater than or equal to 0</sch:assert>
|
61
63
|
<sch:assert role='ERROR' test='number(h:RadiantBarrierGrade) >= 1 or not(h:RadiantBarrierGrade)'>Expected RadiantBarrierGrade to be greater than or equal to 1</sch:assert>
|
62
64
|
<sch:assert role='ERROR' test='number(h:RadiantBarrierGrade) <= 3 or not(h:RadiantBarrierGrade)'>Expected RadiantBarrierGrade to be less than or equal to 3</sch:assert>
|
65
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
63
66
|
</sch:rule>
|
64
67
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Roofs/h:Roof/h:Insulation'>
|
65
68
|
<sch:assert role='ERROR' test='number(h:AssemblyEffectiveRValue) >= 0 or not(h:AssemblyEffectiveRValue)'>Expected AssemblyEffectiveRValue to be greater than or equal to 0</sch:assert>
|
69
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
66
70
|
</sch:rule>
|
67
71
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:RimJoists/h:RimJoist'>
|
68
72
|
<sch:assert role='ERROR' test='h:ExteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:ExteriorAdjacentTo)'>Expected ExteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
@@ -76,9 +80,11 @@
|
|
76
80
|
<sch:assert role='ERROR' test='number(h:SolarAbsorptance) <= 1 or not(h:SolarAbsorptance)'>Expected SolarAbsorptance to be less than or equal to 1</sch:assert>
|
77
81
|
<sch:assert role='ERROR' test='number(h:Emittance) >= 0 or not(h:Emittance)'>Expected Emittance to be greater than or equal to 0</sch:assert>
|
78
82
|
<sch:assert role='ERROR' test='number(h:Emittance) <= 1 or not(h:Emittance)'>Expected Emittance to be less than or equal to 1</sch:assert>
|
83
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
79
84
|
</sch:rule>
|
80
85
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:RimJoists/h:RimJoist/h:Insulation'>
|
81
86
|
<sch:assert role='ERROR' test='number(h:AssemblyEffectiveRValue) >= 0 or not(h:AssemblyEffectiveRValue)'>Expected AssemblyEffectiveRValue to be greater than or equal to 0</sch:assert>
|
87
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
82
88
|
</sch:rule>
|
83
89
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Walls/h:Wall'>
|
84
90
|
<sch:assert role='ERROR' test='h:ExteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:ExteriorAdjacentTo)'>Expected ExteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
@@ -92,9 +98,11 @@
|
|
92
98
|
<sch:assert role='ERROR' test='number(h:SolarAbsorptance) <= 1 or not(h:SolarAbsorptance)'>Expected SolarAbsorptance to be less than or equal to 1</sch:assert>
|
93
99
|
<sch:assert role='ERROR' test='number(h:Emittance) >= 0 or not(h:Emittance)'>Expected Emittance to be greater than or equal to 0</sch:assert>
|
94
100
|
<sch:assert role='ERROR' test='number(h:Emittance) <= 1 or not(h:Emittance)'>Expected Emittance to be less than or equal to 1</sch:assert>
|
101
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
95
102
|
</sch:rule>
|
96
103
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Walls/h:Wall/h:Insulation'>
|
97
104
|
<sch:assert role='ERROR' test='number(h:AssemblyEffectiveRValue) >= 0 or not(h:AssemblyEffectiveRValue)'>Expected AssemblyEffectiveRValue to be greater than or equal to 0</sch:assert>
|
105
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
98
106
|
</sch:rule>
|
99
107
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:FoundationWalls/h:FoundationWall'>
|
100
108
|
<sch:assert role='ERROR' test='h:ExteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:ExteriorAdjacentTo)'>Expected ExteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
@@ -105,9 +113,11 @@
|
|
105
113
|
<sch:assert role='ERROR' test='number(h:Azimuth) < 360 or not(h:Azimuth)'>Expected Azimuth to be less than 360</sch:assert>
|
106
114
|
<sch:assert role='ERROR' test='number(h:Thickness) >= 0 or not(h:Thickness)'>Expected Thickness to be greater than or equal to 0</sch:assert>
|
107
115
|
<sch:assert role='ERROR' test='number(h:DepthBelowGrade) >= 0 or not(h:DepthBelowGrade)'>Expected DepthBelowGrade to be greater than or equal to 0</sch:assert>
|
116
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
108
117
|
</sch:rule>
|
109
118
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:FoundationWalls/h:FoundationWall/h:Insulation'>
|
110
119
|
<sch:assert role='ERROR' test='number(h:AssemblyEffectiveRValue) >= 0 or not(h:AssemblyEffectiveRValue)'>Expected AssemblyEffectiveRValue to be greater than or equal to 0</sch:assert>
|
120
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
111
121
|
</sch:rule>
|
112
122
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:FoundationWalls/h:FoundationWall/h:Insulation/h:Layer'>
|
113
123
|
<sch:assert role='ERROR' test='h:InstallationType[text()="cavity" or text()="continuous" or text()="continuous - interior" or text()="continuous - exterior"] or not(h:InstallationType)'>Expected InstallationType to be 'cavity' or 'continuous' or 'continuous - interior' or 'continuous - exterior'</sch:assert>
|
@@ -117,9 +127,11 @@
|
|
117
127
|
<sch:assert role='ERROR' test='h:ExteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:ExteriorAdjacentTo)'>Expected ExteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
118
128
|
<sch:assert role='ERROR' test='h:InteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:InteriorAdjacentTo)'>Expected InteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
119
129
|
<sch:assert role='ERROR' test='number(h:Area) > 0 or not(h:Area)'>Expected Area to be greater than 0</sch:assert>
|
130
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
120
131
|
</sch:rule>
|
121
132
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:FrameFloors/h:FrameFloor/h:Insulation'>
|
122
133
|
<sch:assert role='ERROR' test='number(h:AssemblyEffectiveRValue) >= 0 or not(h:AssemblyEffectiveRValue)'>Expected AssemblyEffectiveRValue to be greater than or equal to 0</sch:assert>
|
134
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
123
135
|
</sch:rule>
|
124
136
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Slabs/h:Slab'>
|
125
137
|
<sch:assert role='ERROR' test='h:InteriorAdjacentTo[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:InteriorAdjacentTo)'>Expected InteriorAdjacentTo to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
@@ -130,6 +142,7 @@
|
|
130
142
|
<sch:assert role='ERROR' test='number(h:PerimeterInsulationDepth) >= 0 or not(h:PerimeterInsulationDepth)'>Expected PerimeterInsulationDepth to be greater than or equal to 0</sch:assert>
|
131
143
|
<sch:assert role='ERROR' test='number(h:UnderSlabInsulationWidth) >= 0 or not(h:UnderSlabInsulationWidth)'>Expected UnderSlabInsulationWidth to be greater than or equal to 0</sch:assert>
|
132
144
|
<sch:assert role='ERROR' test='number(h:DepthBelowGrade) >= 0 or not(h:DepthBelowGrade)'>Expected DepthBelowGrade to be greater than or equal to 0</sch:assert>
|
145
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
133
146
|
</sch:rule>
|
134
147
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Slabs/h:Slab/h:PerimeterInsulation/h:Layer'>
|
135
148
|
<sch:assert role='ERROR' test='number(h:NominalRValue) >= 0 or not(h:NominalRValue)'>Expected NominalRValue to be greater than or equal to 0</sch:assert>
|
@@ -146,12 +159,22 @@
|
|
146
159
|
<sch:assert role='ERROR' test='number(h:SHGC) < 1 or not(h:SHGC)'>Expected SHGC to be less than 1</sch:assert>
|
147
160
|
<sch:assert role='ERROR' test='number(h:FractionOperable) >= 0 or not(h:FractionOperable)'>Expected FractionOperable to be greater than or equal to 0</sch:assert>
|
148
161
|
<sch:assert role='ERROR' test='number(h:FractionOperable) <= 1 or not(h:FractionOperable)'>Expected FractionOperable to be less than or equal to 1</sch:assert>
|
162
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
163
|
+
<sch:assert role='ERROR' test='count(h:AttachedToWall[@idref]) = 1 or not(h:AttachedToWall)'>Expected idref attribute for AttachedToWall</sch:assert>
|
164
|
+
</sch:rule>
|
165
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Windows/h:Window/h:ExteriorShading'>
|
166
|
+
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) >= 0 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be greater than or equal to 0</sch:assert>
|
167
|
+
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) <= 1 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be less than or equal to 1</sch:assert>
|
168
|
+
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) >= 0 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be greater than or equal to 0</sch:assert>
|
169
|
+
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) <= 1 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be less than or equal to 1</sch:assert>
|
170
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
149
171
|
</sch:rule>
|
150
172
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Windows/h:Window/h:InteriorShading'>
|
151
173
|
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) >= 0 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be greater than or equal to 0</sch:assert>
|
152
174
|
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) <= 1 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be less than or equal to 1</sch:assert>
|
153
175
|
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) >= 0 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be greater than or equal to 0</sch:assert>
|
154
176
|
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) <= 1 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be less than or equal to 1</sch:assert>
|
177
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
155
178
|
</sch:rule>
|
156
179
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Windows/h:Window/h:Overhangs'>
|
157
180
|
<sch:assert role='ERROR' test='number(h:Depth) >= 0 or not(h:Depth)'>Expected Depth to be greater than or equal to 0</sch:assert>
|
@@ -165,23 +188,37 @@
|
|
165
188
|
<sch:assert role='ERROR' test='number(h:UFactor) > 0 or not(h:UFactor)'>Expected UFactor to be greater than 0</sch:assert>
|
166
189
|
<sch:assert role='ERROR' test='number(h:SHGC) > 0 or not(h:SHGC)'>Expected SHGC to be greater than 0</sch:assert>
|
167
190
|
<sch:assert role='ERROR' test='number(h:SHGC) < 1 or not(h:SHGC)'>Expected SHGC to be less than 1</sch:assert>
|
191
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
192
|
+
<sch:assert role='ERROR' test='count(h:AttachedToRoof[@idref]) = 1 or not(h:AttachedToRoof)'>Expected idref attribute for AttachedToRoof</sch:assert>
|
193
|
+
</sch:rule>
|
194
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Skylights/h:Skylight/h:ExteriorShading'>
|
195
|
+
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) >= 0 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be greater than or equal to 0</sch:assert>
|
196
|
+
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) <= 1 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be less than or equal to 1</sch:assert>
|
197
|
+
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) >= 0 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be greater than or equal to 0</sch:assert>
|
198
|
+
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) <= 1 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be less than or equal to 1</sch:assert>
|
199
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
168
200
|
</sch:rule>
|
169
201
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Skylights/h:Skylight/h:InteriorShading'>
|
170
202
|
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) >= 0 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be greater than or equal to 0</sch:assert>
|
171
203
|
<sch:assert role='ERROR' test='number(h:SummerShadingCoefficient) <= 1 or not(h:SummerShadingCoefficient)'>Expected SummerShadingCoefficient to be less than or equal to 1</sch:assert>
|
172
204
|
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) >= 0 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be greater than or equal to 0</sch:assert>
|
173
205
|
<sch:assert role='ERROR' test='number(h:WinterShadingCoefficient) <= 1 or not(h:WinterShadingCoefficient)'>Expected WinterShadingCoefficient to be less than or equal to 1</sch:assert>
|
206
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
174
207
|
</sch:rule>
|
175
208
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Doors/h:Door'>
|
176
209
|
<sch:assert role='ERROR' test='number(h:Area) > 0 or not(h:Area)'>Expected Area to be greater than 0</sch:assert>
|
177
210
|
<sch:assert role='ERROR' test='number(h:Azimuth) >= 0 or not(h:Azimuth)'>Expected Azimuth to be greater than or equal to 0</sch:assert>
|
178
211
|
<sch:assert role='ERROR' test='number(h:Azimuth) < 360 or not(h:Azimuth)'>Expected Azimuth to be less than 360</sch:assert>
|
179
212
|
<sch:assert role='ERROR' test='number(h:RValue) >= 0 or not(h:RValue)'>Expected RValue to be greater than or equal to 0</sch:assert>
|
213
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
214
|
+
<sch:assert role='ERROR' test='count(h:AttachedToWall[@idref]) = 1 or not(h:AttachedToWall)'>Expected idref attribute for AttachedToWall</sch:assert>
|
180
215
|
</sch:rule>
|
181
216
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem'>
|
182
217
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
183
218
|
<sch:assert role='ERROR' test='number(h:FractionHeatLoadServed) >= 0 or not(h:FractionHeatLoadServed)'>Expected FractionHeatLoadServed to be greater than or equal to 0</sch:assert>
|
184
219
|
<sch:assert role='ERROR' test='number(h:FractionHeatLoadServed) <= 1 or not(h:FractionHeatLoadServed)'>Expected FractionHeatLoadServed to be less than or equal to 1</sch:assert>
|
220
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
221
|
+
<sch:assert role='ERROR' test='count(h:DistributionSystem[@idref]) = 1 or not(h:DistributionSystem)'>Expected idref attribute for DistributionSystem</sch:assert>
|
185
222
|
</sch:rule>
|
186
223
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem/h:AnnualHeatingEfficiency'>
|
187
224
|
<sch:assert role='ERROR' test='h:Units[text()="HSPF" or text()="COP" or text()="AFUE" or text()="Percent"] or not(h:Units)'>Expected Units to be 'HSPF' or 'COP' or 'AFUE' or 'Percent'</sch:assert>
|
@@ -195,6 +232,8 @@
|
|
195
232
|
<sch:assert role='ERROR' test='number(h:FractionCoolLoadServed) <= 1 or not(h:FractionCoolLoadServed)'>Expected FractionCoolLoadServed to be less than or equal to 1</sch:assert>
|
196
233
|
<sch:assert role='ERROR' test='number(h:SensibleHeatFraction) >= 0 or not(h:SensibleHeatFraction)'>Expected SensibleHeatFraction to be greater than or equal to 0</sch:assert>
|
197
234
|
<sch:assert role='ERROR' test='number(h:SensibleHeatFraction) <= 1 or not(h:SensibleHeatFraction)'>Expected SensibleHeatFraction to be less than or equal to 1</sch:assert>
|
235
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
236
|
+
<sch:assert role='ERROR' test='count(h:DistributionSystem[@idref]) = 1 or not(h:DistributionSystem)'>Expected idref attribute for DistributionSystem</sch:assert>
|
198
237
|
</sch:rule>
|
199
238
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:CoolingSystem/h:AnnualCoolingEfficiency'>
|
200
239
|
<sch:assert role='ERROR' test='h:Units[text()="SEER" or text()="EER" or text()="COP" or text()="kW/ton"] or not(h:Units)'>Expected Units to be 'SEER' or 'EER' or 'COP' or 'kW/ton'</sch:assert>
|
@@ -211,6 +250,8 @@
|
|
211
250
|
<sch:assert role='ERROR' test='number(h:FractionHeatLoadServed) <= 1 or not(h:FractionHeatLoadServed)'>Expected FractionHeatLoadServed to be less than or equal to 1</sch:assert>
|
212
251
|
<sch:assert role='ERROR' test='number(h:FractionCoolLoadServed) >= 0 or not(h:FractionCoolLoadServed)'>Expected FractionCoolLoadServed to be greater than or equal to 0</sch:assert>
|
213
252
|
<sch:assert role='ERROR' test='number(h:FractionCoolLoadServed) <= 1 or not(h:FractionCoolLoadServed)'>Expected FractionCoolLoadServed to be less than or equal to 1</sch:assert>
|
253
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
254
|
+
<sch:assert role='ERROR' test='count(h:DistributionSystem[@idref]) = 1 or not(h:DistributionSystem)'>Expected idref attribute for DistributionSystem</sch:assert>
|
214
255
|
</sch:rule>
|
215
256
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump/h:BackupAnnualHeatingEfficiency'>
|
216
257
|
<sch:assert role='ERROR' test='h:Units[text()="HSPF" or text()="COP" or text()="AFUE" or text()="Percent"] or not(h:Units)'>Expected Units to be 'HSPF' or 'COP' or 'AFUE' or 'Percent'</sch:assert>
|
@@ -226,6 +267,11 @@
|
|
226
267
|
</sch:rule>
|
227
268
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACControl'>
|
228
269
|
<sch:assert role='ERROR' test='h:ControlType[text()="programmable thermostat" or text()="manual thermostat" or text()="digital thermostat" or text()="timer" or text()="EMCS" or text()="other"] or not(h:ControlType)'>Expected ControlType to be 'programmable thermostat' or 'manual thermostat' or 'digital thermostat' or 'timer' or 'EMCS' or 'other'</sch:assert>
|
270
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
271
|
+
</sch:rule>
|
272
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:AirDistribution'>
|
273
|
+
<sch:assert role='ERROR' test='h:AirDistributionType[text()="regular velocity" or text()="high velocity" or text()="gravity" or text()="fan coil"] or not(h:AirDistributionType)'>Expected AirDistributionType to be 'regular velocity' or 'high velocity' or 'gravity' or 'fan coil'</sch:assert>
|
274
|
+
<sch:assert role='ERROR' test='number(h:NumberofReturnRegisters) >= 0 or not(h:NumberofReturnRegisters)'>Expected NumberofReturnRegisters to be greater than or equal to 0</sch:assert>
|
229
275
|
</sch:rule>
|
230
276
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:AirDistribution/h:DuctLeakageMeasurement'>
|
231
277
|
<sch:assert role='ERROR' test='h:DuctType[text()="supply" or text()="return"] or not(h:DuctType)'>Expected DuctType to be 'supply' or 'return'</sch:assert>
|
@@ -240,31 +286,16 @@
|
|
240
286
|
<sch:assert role='ERROR' test='h:DuctLocation[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="exterior wall" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="interstitial space" or text()="living space" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="roof deck" or text()="unconditioned space" or text()="under slab"] or not(h:DuctLocation)'>Expected DuctLocation to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'exterior wall' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'interstitial space' or 'living space' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'roof deck' or 'unconditioned space' or 'under slab'</sch:assert>
|
241
287
|
<sch:assert role='ERROR' test='number(h:DuctSurfaceArea) > 0 or not(h:DuctSurfaceArea)'>Expected DuctSurfaceArea to be greater than 0</sch:assert>
|
242
288
|
</sch:rule>
|
243
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:AirDistribution'>
|
244
|
-
<sch:assert role='ERROR' test='number(h:NumberofReturnRegisters) >= 0 or not(h:NumberofReturnRegisters)'>Expected NumberofReturnRegisters to be greater than or equal to 0</sch:assert>
|
245
|
-
</sch:rule>
|
246
289
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:HydronicDistribution'>
|
247
|
-
<sch:assert role='ERROR' test='h:HydronicDistributionType[text()="radiator" or text()="baseboard" or text()="radiant floor" or text()="radiant ceiling" or text()="other"] or not(h:HydronicDistributionType)'>Expected HydronicDistributionType to be 'radiator' or 'baseboard' or 'radiant floor' or 'radiant ceiling' or 'other'</sch:assert>
|
248
|
-
</sch:rule>
|
249
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:HydronicAndAirDistribution'>
|
250
|
-
<sch:assert role='ERROR' test='h:HydronicAndAirDistributionType[text()="fan coil" or text()="water loop heat pump" or text()="other"] or not(h:HydronicAndAirDistributionType)'>Expected HydronicAndAirDistributionType to be 'fan coil' or 'water loop heat pump' or 'other'</sch:assert>
|
251
|
-
<sch:assert role='ERROR' test='number(h:NumberofReturnRegisters) >= 0 or not(h:NumberofReturnRegisters)'>Expected NumberofReturnRegisters to be greater than or equal to 0</sch:assert>
|
252
|
-
</sch:rule>
|
253
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:HydronicAndAirDistribution/h:DuctLeakageMeasurement'>
|
254
|
-
<sch:assert role='ERROR' test='h:DuctType[text()="supply" or text()="return"] or not(h:DuctType)'>Expected DuctType to be 'supply' or 'return'</sch:assert>
|
255
|
-
</sch:rule>
|
256
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:HydronicAndAirDistribution/h:DuctLeakageMeasurement/h:DuctLeakage'>
|
257
|
-
<sch:assert role='ERROR' test='h:Units[text()="CFM50" or text()="CFM25" or text()="CFM per Std 152" or text()="Percent"] or not(h:Units)'>Expected Units to be 'CFM50' or 'CFM25' or 'CFM per Std 152' or 'Percent'</sch:assert>
|
258
|
-
<sch:assert role='ERROR' test='h:TotalOrToOutside[text()="to outside" or text()="total"] or not(h:TotalOrToOutside)'>Expected TotalOrToOutside to be 'to outside' or 'total'</sch:assert>
|
259
|
-
</sch:rule>
|
260
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:HydronicAndAirDistribution/h:Ducts'>
|
261
|
-
<sch:assert role='ERROR' test='h:DuctType[text()="supply" or text()="return"] or not(h:DuctType)'>Expected DuctType to be 'supply' or 'return'</sch:assert>
|
262
|
-
<sch:assert role='ERROR' test='number(h:DuctInsulationRValue) >= 0 or not(h:DuctInsulationRValue)'>Expected DuctInsulationRValue to be greater than or equal to 0</sch:assert>
|
263
|
-
<sch:assert role='ERROR' test='h:DuctLocation[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="exterior wall" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="interstitial space" or text()="living space" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="roof deck" or text()="unconditioned space" or text()="under slab"] or not(h:DuctLocation)'>Expected DuctLocation to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'exterior wall' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'interstitial space' or 'living space' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'roof deck' or 'unconditioned space' or 'under slab'</sch:assert>
|
264
|
-
<sch:assert role='ERROR' test='number(h:DuctSurfaceArea) > 0 or not(h:DuctSurfaceArea)'>Expected DuctSurfaceArea to be greater than 0</sch:assert>
|
290
|
+
<sch:assert role='ERROR' test='h:HydronicDistributionType[text()="radiator" or text()="baseboard" or text()="radiant floor" or text()="radiant ceiling" or text()="water loop" or text()="other"] or not(h:HydronicDistributionType)'>Expected HydronicDistributionType to be 'radiator' or 'baseboard' or 'radiant floor' or 'radiant ceiling' or 'water loop' or 'other'</sch:assert>
|
265
291
|
</sch:rule>
|
266
292
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution'>
|
267
293
|
<sch:assert role='ERROR' test='number(h:ConditionedFloorAreaServed) > 0 or not(h:ConditionedFloorAreaServed)'>Expected ConditionedFloorAreaServed to be greater than 0</sch:assert>
|
294
|
+
<sch:assert role='ERROR' test='number(h:AnnualHeatingDistributionSystemEfficiency) >= 0 or not(h:AnnualHeatingDistributionSystemEfficiency)'>Expected AnnualHeatingDistributionSystemEfficiency to be greater than or equal to 0</sch:assert>
|
295
|
+
<sch:assert role='ERROR' test='number(h:AnnualHeatingDistributionSystemEfficiency) <= 1 or not(h:AnnualHeatingDistributionSystemEfficiency)'>Expected AnnualHeatingDistributionSystemEfficiency to be less than or equal to 1</sch:assert>
|
296
|
+
<sch:assert role='ERROR' test='number(h:AnnualCoolingDistributionSystemEfficiency) >= 0 or not(h:AnnualCoolingDistributionSystemEfficiency)'>Expected AnnualCoolingDistributionSystemEfficiency to be greater than or equal to 0</sch:assert>
|
297
|
+
<sch:assert role='ERROR' test='number(h:AnnualCoolingDistributionSystemEfficiency) <= 1 or not(h:AnnualCoolingDistributionSystemEfficiency)'>Expected AnnualCoolingDistributionSystemEfficiency to be less than or equal to 1</sch:assert>
|
298
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
268
299
|
</sch:rule>
|
269
300
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:MechanicalVentilation/h:VentilationFans/h:VentilationFan'>
|
270
301
|
<sch:assert role='ERROR' test='number(h:Quantity) > 0 or not(h:Quantity)'>Expected Quantity to be greater than 0</sch:assert>
|
@@ -282,6 +313,8 @@
|
|
282
313
|
<sch:assert role='ERROR' test='number(h:AdjustedTotalRecoveryEfficiency) <= 1 or not(h:AdjustedTotalRecoveryEfficiency)'>Expected AdjustedTotalRecoveryEfficiency to be less than or equal to 1</sch:assert>
|
283
314
|
<sch:assert role='ERROR' test='number(h:AdjustedSensibleRecoveryEfficiency) >= 0 or not(h:AdjustedSensibleRecoveryEfficiency)'>Expected AdjustedSensibleRecoveryEfficiency to be greater than or equal to 0</sch:assert>
|
284
315
|
<sch:assert role='ERROR' test='number(h:AdjustedSensibleRecoveryEfficiency) <= 1 or not(h:AdjustedSensibleRecoveryEfficiency)'>Expected AdjustedSensibleRecoveryEfficiency to be less than or equal to 1</sch:assert>
|
316
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
317
|
+
<sch:assert role='ERROR' test='count(h:AttachedToHVACDistributionSystem[@idref]) = 1 or not(h:AttachedToHVACDistributionSystem)'>Expected idref attribute for AttachedToHVACDistributionSystem</sch:assert>
|
285
318
|
</sch:rule>
|
286
319
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:WaterHeating/h:WaterHeatingSystem'>
|
287
320
|
<sch:assert role='ERROR' test='h:FuelType[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:FuelType)'>Expected FuelType to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
@@ -299,6 +332,8 @@
|
|
299
332
|
<sch:assert role='ERROR' test='number(h:FirstHourRating) > 0 or not(h:FirstHourRating)'>Expected FirstHourRating to be greater than 0</sch:assert>
|
300
333
|
<sch:assert role='ERROR' test='number(h:RecoveryEfficiency) <= 5 or not(h:RecoveryEfficiency)'>Expected RecoveryEfficiency to be less than or equal to 5</sch:assert>
|
301
334
|
<sch:assert role='ERROR' test='number(h:RecoveryEfficiency) > 0 or not(h:RecoveryEfficiency)'>Expected RecoveryEfficiency to be greater than 0</sch:assert>
|
335
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
336
|
+
<sch:assert role='ERROR' test='count(h:RelatedHVACSystem[@idref]) = 1 or not(h:RelatedHVACSystem)'>Expected idref attribute for RelatedHVACSystem</sch:assert>
|
302
337
|
</sch:rule>
|
303
338
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:WaterHeating/h:WaterHeatingSystem/h:WaterHeaterInsulation/h:Jacket'>
|
304
339
|
<sch:assert role='ERROR' test='number(h:JacketRValue) >= 0 or not(h:JacketRValue)'>Expected JacketRValue to be greater than or equal to 0</sch:assert>
|
@@ -322,6 +357,7 @@
|
|
322
357
|
</sch:rule>
|
323
358
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:WaterHeating/h:WaterFixture'>
|
324
359
|
<sch:assert role='ERROR' test='h:WaterFixtureType[text()="faucet" or text()="shower head" or text()="other"] or not(h:WaterFixtureType)'>Expected WaterFixtureType to be 'faucet' or 'shower head' or 'other'</sch:assert>
|
360
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
325
361
|
</sch:rule>
|
326
362
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:SolarThermal/h:SolarThermalSystem'>
|
327
363
|
<sch:assert role='ERROR' test='h:SystemType[text()="hot water" or text()="hot water and space heating" or text()="space heating" or text()="hybrid system"] or not(h:SystemType)'>Expected SystemType to be 'hot water' or 'hot water and space heating' or 'space heating' or 'hybrid system'</sch:assert>
|
@@ -338,6 +374,8 @@
|
|
338
374
|
<sch:assert role='ERROR' test='number(h:StorageVolume) > 0 or not(h:StorageVolume)'>Expected StorageVolume to be greater than 0</sch:assert>
|
339
375
|
<sch:assert role='ERROR' test='number(h:SolarFraction) <= 1 or not(h:SolarFraction)'>Expected SolarFraction to be less than or equal to 1</sch:assert>
|
340
376
|
<sch:assert role='ERROR' test='number(h:SolarFraction) > 0 or not(h:SolarFraction)'>Expected SolarFraction to be greater than 0</sch:assert>
|
377
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
378
|
+
<sch:assert role='ERROR' test='count(h:ConnectedTo[@idref]) = 1 or not(h:ConnectedTo)'>Expected idref attribute for ConnectedTo</sch:assert>
|
341
379
|
</sch:rule>
|
342
380
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:Photovoltaics/h:PVSystem'>
|
343
381
|
<sch:assert role='ERROR' test='h:Location[text()="roof" or text()="ground" or text()="other"] or not(h:Location)'>Expected Location to be 'roof' or 'ground' or 'other'</sch:assert>
|
@@ -352,15 +390,17 @@
|
|
352
390
|
<sch:assert role='ERROR' test='number(h:InverterEfficiency) <= 1 or not(h:InverterEfficiency)'>Expected InverterEfficiency to be less than or equal to 1</sch:assert>
|
353
391
|
<sch:assert role='ERROR' test='number(h:SystemLossesFraction) >= 0 or not(h:SystemLossesFraction)'>Expected SystemLossesFraction to be greater than or equal to 0</sch:assert>
|
354
392
|
<sch:assert role='ERROR' test='number(h:SystemLossesFraction) <= 1 or not(h:SystemLossesFraction)'>Expected SystemLossesFraction to be less than or equal to 1</sch:assert>
|
393
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
355
394
|
</sch:rule>
|
356
395
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:ClothesWasher'>
|
357
396
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="laundry room" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'laundry room' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
358
397
|
<sch:assert role='ERROR' test='number(h:RatedAnnualkWh) > 0 or not(h:RatedAnnualkWh)'>Expected RatedAnnualkWh to be greater than 0</sch:assert>
|
398
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
359
399
|
</sch:rule>
|
360
400
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:ClothesDryer'>
|
361
401
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="laundry room" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'laundry room' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
362
402
|
<sch:assert role='ERROR' test='h:FuelType[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:FuelType)'>Expected FuelType to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
363
|
-
<sch:assert role='ERROR' test='h:
|
403
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
364
404
|
</sch:rule>
|
365
405
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:Dishwasher'>
|
366
406
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="kitchen" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'kitchen' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
@@ -368,57 +408,84 @@
|
|
368
408
|
<sch:assert role='ERROR' test='number(h:EnergyFactor) <= 5 or not(h:EnergyFactor)'>Expected EnergyFactor to be less than or equal to 5</sch:assert>
|
369
409
|
<sch:assert role='ERROR' test='number(h:EnergyFactor) > 0 or not(h:EnergyFactor)'>Expected EnergyFactor to be greater than 0</sch:assert>
|
370
410
|
<sch:assert role='ERROR' test='number(h:PlaceSettingCapacity) > 0 or not(h:PlaceSettingCapacity)'>Expected PlaceSettingCapacity to be greater than 0</sch:assert>
|
411
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
371
412
|
</sch:rule>
|
372
413
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:Refrigerator'>
|
373
414
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="kitchen" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'kitchen' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
374
415
|
<sch:assert role='ERROR' test='number(h:RatedAnnualkWh) > 0 or not(h:RatedAnnualkWh)'>Expected RatedAnnualkWh to be greater than 0</sch:assert>
|
416
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
375
417
|
</sch:rule>
|
376
418
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:Freezer'>
|
377
419
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="kitchen" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'kitchen' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
378
420
|
<sch:assert role='ERROR' test='number(h:RatedAnnualkWh) > 0 or not(h:RatedAnnualkWh)'>Expected RatedAnnualkWh to be greater than 0</sch:assert>
|
421
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
379
422
|
</sch:rule>
|
380
423
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:Dehumidifier'>
|
381
424
|
<sch:assert role='ERROR' test='h:Type[text()="portable" or text()="whole-home"] or not(h:Type)'>Expected Type to be 'portable' or 'whole-home'</sch:assert>
|
425
|
+
<sch:assert role='ERROR' test='h:Location[text()="attic" or text()="attic - conditioned" or text()="attic - unconditioned" or text()="attic - unvented" or text()="attic - vented" or text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace" or text()="crawlspace - conditioned" or text()="crawlspace - unconditioned" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="ground" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other housing unit above" or text()="other housing unit below" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="outside" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'attic' or 'attic - conditioned' or 'attic - unconditioned' or 'attic - unvented' or 'attic - vented' or 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace' or 'crawlspace - conditioned' or 'crawlspace - unconditioned' or 'crawlspace - unvented' or 'crawlspace - vented' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'ground' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other housing unit above' or 'other housing unit below' or 'other multifamily buffer space' or 'other non-freezing space' or 'outside' or 'unconditioned space'</sch:assert>
|
382
426
|
<sch:assert role='ERROR' test='number(h:DehumidistatSetpoint) >= 0 or not(h:DehumidistatSetpoint)'>Expected DehumidistatSetpoint to be greater than or equal to 0</sch:assert>
|
383
427
|
<sch:assert role='ERROR' test='number(h:DehumidistatSetpoint) <= 1 or not(h:DehumidistatSetpoint)'>Expected DehumidistatSetpoint to be less than or equal to 1</sch:assert>
|
384
428
|
<sch:assert role='ERROR' test='number(h:FractionDehumidificationLoadServed) >= 0 or not(h:FractionDehumidificationLoadServed)'>Expected FractionDehumidificationLoadServed to be greater than or equal to 0</sch:assert>
|
385
429
|
<sch:assert role='ERROR' test='number(h:FractionDehumidificationLoadServed) <= 1 or not(h:FractionDehumidificationLoadServed)'>Expected FractionDehumidificationLoadServed to be less than or equal to 1</sch:assert>
|
430
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
386
431
|
</sch:rule>
|
387
432
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:CookingRange'>
|
388
433
|
<sch:assert role='ERROR' test='h:Location[text()="basement" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="garage" or text()="garage - conditioned" or text()="garage - unconditioned" or text()="kitchen" or text()="living space" or text()="other" or text()="other heated space" or text()="other housing unit" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="unconditioned space"] or not(h:Location)'>Expected Location to be 'basement' or 'basement - conditioned' or 'basement - unconditioned' or 'garage' or 'garage - conditioned' or 'garage - unconditioned' or 'kitchen' or 'living space' or 'other' or 'other heated space' or 'other housing unit' or 'other multifamily buffer space' or 'other non-freezing space' or 'unconditioned space'</sch:assert>
|
389
434
|
<sch:assert role='ERROR' test='h:FuelType[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:FuelType)'>Expected FuelType to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
435
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
390
436
|
</sch:rule>
|
391
437
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:LightingGroup'>
|
392
438
|
<sch:assert role='ERROR' test='h:Location[text()="interior" or text()="exterior" or text()="garage" or text()="common area"] or not(h:Location)'>Expected Location to be 'interior' or 'exterior' or 'garage' or 'common area'</sch:assert>
|
393
439
|
<sch:assert role='ERROR' test='number(h:FractionofUnitsInLocation) >= 0 or not(h:FractionofUnitsInLocation)'>Expected FractionofUnitsInLocation to be greater than or equal to 0</sch:assert>
|
394
440
|
<sch:assert role='ERROR' test='number(h:FractionofUnitsInLocation) <= 1 or not(h:FractionofUnitsInLocation)'>Expected FractionofUnitsInLocation to be less than or equal to 1</sch:assert>
|
441
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
395
442
|
</sch:rule>
|
396
443
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:CeilingFan/h:Airflow'>
|
397
444
|
<sch:assert role='ERROR' test='h:FanSpeed[text()="low" or text()="medium" or text()="high"] or not(h:FanSpeed)'>Expected FanSpeed to be 'low' or 'medium' or 'high'</sch:assert>
|
398
445
|
</sch:rule>
|
399
446
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:CeilingFan'>
|
400
447
|
<sch:assert role='ERROR' test='number(h:Quantity) > 0 or not(h:Quantity)'>Expected Quantity to be greater than 0</sch:assert>
|
448
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
449
|
+
</sch:rule>
|
450
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Pools/h:Pool'>
|
451
|
+
<sch:assert role='ERROR' test='h:Type[text()="in ground" or text()="on ground" or text()="above ground" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'in ground' or 'on ground' or 'above ground' or 'other' or 'unknown' or 'none'</sch:assert>
|
452
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
453
|
+
</sch:rule>
|
454
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Pools/h:Pool/h:PoolPumps/h:PoolPump'>
|
455
|
+
<sch:assert role='ERROR' test='h:Type[text()="single speed" or text()="multi speed" or text()="variable speed" or text()="variable flow" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'single speed' or 'multi speed' or 'variable speed' or 'variable flow' or 'other' or 'unknown' or 'none'</sch:assert>
|
456
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
401
457
|
</sch:rule>
|
402
458
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Pools/h:Pool/h:PoolPumps/h:PoolPump/h:Load'>
|
403
459
|
<sch:assert role='ERROR' test='h:Units[text()="kWh/year" or text()="W"] or not(h:Units)'>Expected Units to be 'kWh/year' or 'W'</sch:assert>
|
404
460
|
</sch:rule>
|
405
461
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Pools/h:Pool/h:Heater'>
|
406
462
|
<sch:assert role='ERROR' test='h:Type[text()="gas fired" or text()="electric resistance" or text()="heat pump" or text()="solar" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'gas fired' or 'electric resistance' or 'heat pump' or 'solar' or 'other' or 'unknown' or 'none'</sch:assert>
|
463
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
407
464
|
</sch:rule>
|
408
465
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Pools/h:Pool/h:Heater/h:Load'>
|
409
466
|
<sch:assert role='ERROR' test='h:Units[text()="kWh/year" or text()="therm/year" or text()="W" or text()="Btuh"] or not(h:Units)'>Expected Units to be 'kWh/year' or 'therm/year' or 'W' or 'Btuh'</sch:assert>
|
410
467
|
</sch:rule>
|
468
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:HotTubs/h:HotTub'>
|
469
|
+
<sch:assert role='ERROR' test='h:Type[text()="in ground" or text()="on ground" or text()="above ground" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'in ground' or 'on ground' or 'above ground' or 'other' or 'unknown' or 'none'</sch:assert>
|
470
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
471
|
+
</sch:rule>
|
472
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:HotTubs/h:HotTub/h:HotTubPumps/h:HotTubPump'>
|
473
|
+
<sch:assert role='ERROR' test='h:Type[text()="single speed" or text()="multi speed" or text()="variable speed" or text()="variable flow" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'single speed' or 'multi speed' or 'variable speed' or 'variable flow' or 'other' or 'unknown' or 'none'</sch:assert>
|
474
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
475
|
+
</sch:rule>
|
411
476
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:HotTubs/h:HotTub/h:HotTubPumps/h:HotTubPump/h:Load'>
|
412
477
|
<sch:assert role='ERROR' test='h:Units[text()="kWh/year" or text()="W"] or not(h:Units)'>Expected Units to be 'kWh/year' or 'W'</sch:assert>
|
413
478
|
</sch:rule>
|
414
479
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:HotTubs/h:HotTub/h:Heater'>
|
415
480
|
<sch:assert role='ERROR' test='h:Type[text()="gas fired" or text()="electric resistance" or text()="heat pump" or text()="solar" or text()="other" or text()="unknown" or text()="none"] or not(h:Type)'>Expected Type to be 'gas fired' or 'electric resistance' or 'heat pump' or 'solar' or 'other' or 'unknown' or 'none'</sch:assert>
|
481
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
416
482
|
</sch:rule>
|
417
483
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:HotTubs/h:HotTub/h:Heater/h:Load'>
|
418
484
|
<sch:assert role='ERROR' test='h:Units[text()="kWh/year" or text()="therm/year" or text()="W" or text()="Btuh"] or not(h:Units)'>Expected Units to be 'kWh/year' or 'therm/year' or 'W' or 'Btuh'</sch:assert>
|
419
485
|
</sch:rule>
|
420
486
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:MiscLoads/h:PlugLoad'>
|
421
487
|
<sch:assert role='ERROR' test='h:PlugLoadType[text()="TV plasma" or text()="TV CRT" or text()="TV other" or text()="computer" or text()="space heater" or text()="water bed" or text()="aquarium" or text()="electric vehicle charging" or text()="well pump" or text()="sauna" or text()="other"] or not(h:PlugLoadType)'>Expected PlugLoadType to be 'TV plasma' or 'TV CRT' or 'TV other' or 'computer' or 'space heater' or 'water bed' or 'aquarium' or 'electric vehicle charging' or 'well pump' or 'sauna' or 'other'</sch:assert>
|
488
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
422
489
|
</sch:rule>
|
423
490
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:MiscLoads/h:PlugLoad/h:Load'>
|
424
491
|
<sch:assert role='ERROR' test='h:Units[text()="kWh/year" or text()="W"] or not(h:Units)'>Expected Units to be 'kWh/year' or 'W'</sch:assert>
|
@@ -426,9 +493,34 @@
|
|
426
493
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:MiscLoads/h:FuelLoad'>
|
427
494
|
<sch:assert role='ERROR' test='h:FuelLoadType[text()="grill" or text()="lighting" or text()="fireplace" or text()="other"] or not(h:FuelLoadType)'>Expected FuelLoadType to be 'grill' or 'lighting' or 'fireplace' or 'other'</sch:assert>
|
428
495
|
<sch:assert role='ERROR' test='h:FuelType[text()="electricity" or text()="renewable electricity" or text()="natural gas" or text()="renewable natural gas" or text()="fuel oil" or text()="fuel oil 1" or text()="fuel oil 2" or text()="fuel oil 4" or text()="fuel oil 5/6" or text()="district steam" or text()="district hot water" or text()="district chilled water" or text()="solar hot water" or text()="propane" or text()="kerosene" or text()="diesel" or text()="coal" or text()="anthracite coal" or text()="bituminous coal" or text()="coke" or text()="wood" or text()="wood pellets" or text()="combination" or text()="other"] or not(h:FuelType)'>Expected FuelType to be 'electricity' or 'renewable electricity' or 'natural gas' or 'renewable natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'district steam' or 'district hot water' or 'district chilled water' or 'solar hot water' or 'propane' or 'kerosene' or 'diesel' or 'coal' or 'anthracite coal' or 'bituminous coal' or 'coke' or 'wood' or 'wood pellets' or 'combination' or 'other'</sch:assert>
|
496
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
429
497
|
</sch:rule>
|
430
498
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:MiscLoads/h:FuelLoad/h:Load'>
|
431
499
|
<sch:assert role='ERROR' test='h:Units[text()="therm/year" or text()="Btuh"] or not(h:Units)'>Expected Units to be 'therm/year' or 'Btuh'</sch:assert>
|
432
500
|
</sch:rule>
|
501
|
+
<sch:rule context='/h:HPXML/h:Building'>
|
502
|
+
<sch:assert role='ERROR' test='count(h:BuildingID[@id]) = 1 or not (h:BuildingID)'>Expected id attribute for BuildingID</sch:assert>
|
503
|
+
</sch:rule>
|
504
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:ClimateandRiskZones/h:WeatherStation'>
|
505
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
506
|
+
</sch:rule>
|
507
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Attics/h:Attic'>
|
508
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
509
|
+
</sch:rule>
|
510
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Foundations/h:Foundation'>
|
511
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
512
|
+
</sch:rule>
|
513
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Slabs/h:Slab/h:PerimeterInsulation'>
|
514
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
515
|
+
</sch:rule>
|
516
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:Slabs/h:Slab/h:UnderSlabInsulation'>
|
517
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
518
|
+
</sch:rule>
|
519
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:WaterHeating/h:HotWaterDistribution'>
|
520
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
521
|
+
</sch:rule>
|
522
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Appliances/h:Oven'>
|
523
|
+
<sch:assert role='ERROR' test='count(h:SystemIdentifier[@id]) = 1 or not (h:SystemIdentifier)'>Expected id attribute for SystemIdentifier</sch:assert>
|
524
|
+
</sch:rule>
|
433
525
|
</sch:pattern>
|
434
526
|
</sch:schema>
|
@@ -1,25 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class Airflow
|
4
|
-
def self.apply(model, runner, weather, spaces,
|
5
|
-
duct_systems,
|
6
|
-
|
7
|
-
site_type, shelter_coef, has_flue_chimney, hvac_map, eri_version,
|
8
|
-
apply_ashrae140_assumptions, schedules_file)
|
4
|
+
def self.apply(model, runner, weather, spaces, hpxml, cfa, nbeds,
|
5
|
+
ncfl_ag, duct_systems, nv_clg_ssn_sensor, hvac_map, eri_version,
|
6
|
+
frac_windows_operable, apply_ashrae140_assumptions, schedules_file)
|
9
7
|
|
10
8
|
# Global variables
|
11
9
|
|
12
10
|
@runner = runner
|
13
11
|
@spaces = spaces
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@infil_height = infil_height
|
12
|
+
@infil_volume = hpxml.air_infiltration_measurements.select { |i| !i.infiltration_volume.nil? }[0].infiltration_volume
|
13
|
+
@infil_height = hpxml.inferred_infiltration_height(@infil_volume)
|
17
14
|
@living_space = spaces[HPXML::LocationLivingSpace]
|
18
15
|
@living_zone = @living_space.thermalZone.get
|
19
16
|
@nbeds = nbeds
|
17
|
+
@ncfl_ag = ncfl_ag
|
20
18
|
@eri_version = eri_version
|
21
19
|
@apply_ashrae140_assumptions = apply_ashrae140_assumptions
|
22
|
-
@cfa =
|
20
|
+
@cfa = cfa
|
23
21
|
|
24
22
|
# Global sensors
|
25
23
|
|
@@ -57,7 +55,7 @@ class Airflow
|
|
57
55
|
vent_fans_kitchen = []
|
58
56
|
vent_fans_bath = []
|
59
57
|
vent_fans_whf = []
|
60
|
-
|
58
|
+
hpxml.ventilation_fans.each do |vent_fan|
|
61
59
|
if vent_fan.used_for_whole_building_ventilation
|
62
60
|
vent_fans_mech << vent_fan
|
63
61
|
elsif vent_fan.used_for_seasonal_cooling_load_reduction
|
@@ -72,7 +70,7 @@ class Airflow
|
|
72
70
|
end
|
73
71
|
|
74
72
|
# Vented clothes dryers in conditioned space
|
75
|
-
vented_dryers = clothes_dryers.select { |cd| cd.is_vented && cd.vented_flow_rate.to_f > 0 && [HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include?(cd.location) }
|
73
|
+
vented_dryers = hpxml.clothes_dryers.select { |cd| cd.is_vented && cd.vented_flow_rate.to_f > 0 && [HPXML::LocationLivingSpace, HPXML::LocationBasementConditioned].include?(cd.location) }
|
76
74
|
|
77
75
|
# Initialization
|
78
76
|
initialize_cfis(model, vent_fans_mech, hvac_map)
|
@@ -91,14 +89,27 @@ class Airflow
|
|
91
89
|
|
92
90
|
# Apply infiltration/ventilation
|
93
91
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
92
|
+
set_wind_speed_correction(model, hpxml.site)
|
93
|
+
window_area = hpxml.windows.map { |w| w.area }.sum(0.0)
|
94
|
+
open_window_area = window_area * frac_windows_operable * 0.5 * 0.2 # Assume A) 50% of the area of an operable window can be open, and B) 20% of openable window area is actually open
|
95
|
+
|
96
|
+
vented_attic = nil
|
97
|
+
hpxml.attics.each do |attic|
|
98
|
+
next unless attic.attic_type == HPXML::AtticTypeVented
|
99
99
|
|
100
|
-
|
101
|
-
|
100
|
+
vented_attic = attic
|
101
|
+
end
|
102
|
+
vented_crawl = nil
|
103
|
+
hpxml.foundations.each do |foundation|
|
104
|
+
next unless foundation.foundation_type == HPXML::FoundationTypeCrawlspaceVented
|
105
|
+
|
106
|
+
vented_crawl = foundation
|
107
|
+
end
|
108
|
+
|
109
|
+
apply_natural_ventilation_and_whole_house_fan(model, weather, hpxml.site, vent_fans_whf, open_window_area, nv_clg_ssn_sensor)
|
110
|
+
apply_infiltration_and_ventilation_fans(model, weather, hpxml.site, vent_fans_mech, vent_fans_kitchen, vent_fans_bath, vented_dryers,
|
111
|
+
hpxml.building_construction.has_flue_or_chimney, hpxml.air_infiltration_measurements,
|
112
|
+
vented_attic, vented_crawl, hvac_map, schedules_file)
|
102
113
|
end
|
103
114
|
|
104
115
|
def self.get_default_fraction_of_windows_operable()
|
@@ -110,11 +121,11 @@ class Airflow
|
|
110
121
|
end
|
111
122
|
|
112
123
|
def self.get_default_vented_attic_sla()
|
113
|
-
return 1.0 / 300.0 # Table 4.2.2(1) - Attics
|
124
|
+
return (1.0 / 300.0).round(6) # Table 4.2.2(1) - Attics
|
114
125
|
end
|
115
126
|
|
116
127
|
def self.get_default_vented_crawl_sla()
|
117
|
-
return 1.0 / 150.0 # Table 4.2.2(1) - Crawlspaces
|
128
|
+
return (1.0 / 150.0).round(6) # Table 4.2.2(1) - Crawlspaces
|
118
129
|
end
|
119
130
|
|
120
131
|
def self.get_default_mech_vent_fan_power(vent_fan)
|
@@ -137,60 +148,53 @@ class Airflow
|
|
137
148
|
|
138
149
|
private
|
139
150
|
|
140
|
-
def self.set_wind_speed_correction(model,
|
151
|
+
def self.set_wind_speed_correction(model, site)
|
152
|
+
site_ap = site.additional_properties
|
153
|
+
|
141
154
|
site_map = { HPXML::SiteTypeRural => 'Country', # Flat, open country
|
142
155
|
HPXML::SiteTypeSuburban => 'Suburbs', # Rough, wooded country, suburbs
|
143
156
|
HPXML::SiteTypeUrban => 'City' } # Towns, city outskirts, center of large cities
|
144
|
-
model.getSite.setTerrain(site_map[site_type])
|
157
|
+
model.getSite.setTerrain(site_map[site.site_type])
|
145
158
|
|
146
|
-
|
147
|
-
wind_speed.height = 32.8 # ft (Standard weather station height)
|
159
|
+
site_ap.height = 32.8 # ft (Standard weather station height)
|
148
160
|
|
149
161
|
# Open, Unrestricted at Weather Station
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
if site_type == HPXML::SiteTypeRural
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
elsif site_type == HPXML::SiteTypeSuburban
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
elsif site_type == HPXML::SiteTypeUrban
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
end
|
171
|
-
|
172
|
-
# Local Shielding
|
173
|
-
if shelter_coef.nil?
|
174
|
-
# FIXME: Move into HPXML defaults
|
175
|
-
if min_neighbor_distance.nil?
|
176
|
-
# Typical shelter for isolated rural house
|
177
|
-
wind_speed.S_wo = 0.90
|
178
|
-
elsif min_neighbor_distance > @building_height
|
179
|
-
# Typical shelter caused by other building across the street
|
180
|
-
wind_speed.S_wo = 0.70
|
181
|
-
else
|
182
|
-
# Typical shelter for urban buildings where sheltering obstacles
|
183
|
-
# are less than one building height away.
|
184
|
-
wind_speed.S_wo = 0.50
|
185
|
-
end
|
186
|
-
else
|
187
|
-
wind_speed.S_wo = Float(shelter_coef)
|
162
|
+
site_ap.terrain_multiplier = 1.0
|
163
|
+
site_ap.terrain_exponent = 0.15
|
164
|
+
site_ap.ashrae_terrain_thickness = 270
|
165
|
+
site_ap.ashrae_terrain_exponent = 0.14
|
166
|
+
|
167
|
+
if site.site_type == HPXML::SiteTypeRural
|
168
|
+
site_ap.site_terrain_multiplier = 0.85
|
169
|
+
site_ap.site_terrain_exponent = 0.20
|
170
|
+
site_ap.ashrae_site_terrain_thickness = 270 # Flat, open country
|
171
|
+
site_ap.ashrae_site_terrain_exponent = 0.14 # Flat, open country
|
172
|
+
elsif site.site_type == HPXML::SiteTypeSuburban
|
173
|
+
site_ap.site_terrain_multiplier = 0.67
|
174
|
+
site_ap.site_terrain_exponent = 0.25
|
175
|
+
site_ap.ashrae_site_terrain_thickness = 370 # Rough, wooded country, suburbs
|
176
|
+
site_ap.ashrae_site_terrain_exponent = 0.22 # Rough, wooded country, suburbs
|
177
|
+
elsif site.site_type == HPXML::SiteTypeUrban
|
178
|
+
site_ap.site_terrain_multiplier = 0.47
|
179
|
+
site_ap.site_terrain_exponent = 0.35
|
180
|
+
site_ap.ashrae_site_terrain_thickness = 460 # Towns, city outskirts, center of large cities
|
181
|
+
site_ap.ashrae_site_terrain_exponent = 0.33 # Towns, city outskirts, center of large cities
|
188
182
|
end
|
189
183
|
|
190
184
|
# S-G Shielding Coefficients are roughly 1/3 of AIM2 Shelter Coefficients
|
191
|
-
|
185
|
+
site_ap.s_g_shielding_coef = site_ap.aim2_shelter_coeff / 3.0
|
186
|
+
end
|
192
187
|
|
193
|
-
|
188
|
+
def self.get_aim2_shelter_coefficient(shielding_of_home)
|
189
|
+
# Mapping based on AIM-2 Model by Walker/Wilson
|
190
|
+
# Table 2: Estimates of Shelter Coefficient S_wo for No Flue
|
191
|
+
if shielding_of_home == HPXML::ShieldingNormal
|
192
|
+
return 0.50 # Class 4: "Very heavy shielding, many large obstructions within one house height"
|
193
|
+
elsif shielding_of_home == HPXML::ShieldingExposed
|
194
|
+
return 0.90 # Class 2: "Light local shielding with few obstructions within two house heights"
|
195
|
+
elsif shielding_of_home == HPXML::ShieldingWellShielded
|
196
|
+
return 0.30 # Class 5: "Complete shielding, with large buildings immediately adjacent"
|
197
|
+
end
|
194
198
|
end
|
195
199
|
|
196
200
|
def self.apply_infiltration_to_unconditioned_space(model, space, ach = nil, ela = nil, c_w_SG = nil, c_s_SG = nil)
|
@@ -218,7 +222,7 @@ class Airflow
|
|
218
222
|
end
|
219
223
|
end
|
220
224
|
|
221
|
-
def self.apply_natural_ventilation_and_whole_house_fan(model, weather, vent_fans_whf, open_window_area, nv_clg_ssn_sensor)
|
225
|
+
def self.apply_natural_ventilation_and_whole_house_fan(model, weather, site, vent_fans_whf, open_window_area, nv_clg_ssn_sensor)
|
222
226
|
if @living_zone.thermostatSetpointDualSetpoint.is_initialized
|
223
227
|
thermostat = @living_zone.thermostatSetpointDualSetpoint.get
|
224
228
|
htg_sch = thermostat.heatingSetpointTemperatureSchedule.get
|
@@ -310,7 +314,7 @@ class Airflow
|
|
310
314
|
max_flow_rate = max_rate * @infil_volume / UnitConversions.convert(1.0, 'hr', 'min')
|
311
315
|
neutral_level = 0.5
|
312
316
|
hor_lk_frac = 0.0
|
313
|
-
c_w, c_s = calc_wind_stack_coeffs(hor_lk_frac, neutral_level, @living_space, @infil_height)
|
317
|
+
c_w, c_s = calc_wind_stack_coeffs(site, hor_lk_frac, neutral_level, @living_space, @infil_height)
|
314
318
|
max_oa_hr = 0.0115 # From BA HSP
|
315
319
|
max_oa_rh = 0.7 # From BA HSP
|
316
320
|
|
@@ -567,18 +571,6 @@ class Airflow
|
|
567
571
|
if duct.leakage_frac.nil? == duct.leakage_cfm25.nil?
|
568
572
|
fail 'Ducts: Must provide either leakage fraction or cfm25, but not both.'
|
569
573
|
end
|
570
|
-
if (not duct.leakage_frac.nil?) && ((duct.leakage_frac < 0) || (duct.leakage_frac > 1))
|
571
|
-
fail 'Ducts: Leakage Fraction must be greater than or equal to 0 and less than or equal to 1.'
|
572
|
-
end
|
573
|
-
if (not duct.leakage_cfm25.nil?) && (duct.leakage_cfm25 < 0)
|
574
|
-
fail 'Ducts: Leakage CFM25 must be greater than or equal to 0.'
|
575
|
-
end
|
576
|
-
if duct.rvalue < 0
|
577
|
-
fail 'Ducts: Insulation Nominal R-Value must be greater than or equal to 0.'
|
578
|
-
end
|
579
|
-
if duct.area < 0
|
580
|
-
fail 'Ducts: Surface Area must be greater than or equal to 0.'
|
581
|
-
end
|
582
574
|
end
|
583
575
|
|
584
576
|
ducts.each do |duct|
|
@@ -595,17 +587,6 @@ class Airflow
|
|
595
587
|
end
|
596
588
|
end
|
597
589
|
|
598
|
-
if ducts.size > 0
|
599
|
-
# Store info for HVAC Sizing measure
|
600
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctExist, true)
|
601
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctSides, ducts.map { |duct| duct.side }.join(','))
|
602
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctLocations, ducts.map { |duct| duct.location.to_s }.join(','))
|
603
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctLeakageFracs, ducts.map { |duct| duct.leakage_frac.to_f }.join(','))
|
604
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctLeakageCFM25s, ducts.map { |duct| duct.leakage_cfm25.to_f }.join(','))
|
605
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctAreas, ducts.map { |duct| duct.area.to_f }.join(','))
|
606
|
-
object.additionalProperties.setFeature(Constants.SizingInfoDuctRvalues, ducts.map { |duct| duct.rvalue.to_f }.join(','))
|
607
|
-
end
|
608
|
-
|
609
590
|
return if ducts.size == 0 # No ducts
|
610
591
|
|
611
592
|
# get duct located zone or ambient temperature schedule objects
|
@@ -1110,7 +1091,7 @@ class Airflow
|
|
1110
1091
|
end
|
1111
1092
|
end
|
1112
1093
|
|
1113
|
-
def self.apply_infiltration_to_garage(model, weather, ach50)
|
1094
|
+
def self.apply_infiltration_to_garage(model, weather, site, ach50)
|
1114
1095
|
return if @spaces[HPXML::LocationGarage].nil?
|
1115
1096
|
|
1116
1097
|
space = @spaces[HPXML::LocationGarage]
|
@@ -1122,7 +1103,7 @@ class Airflow
|
|
1122
1103
|
ela = sla * area
|
1123
1104
|
ach = get_infiltration_ACH_from_SLA(sla, 8.202, weather)
|
1124
1105
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1125
|
-
c_w_SG, c_s_SG = calc_wind_stack_coeffs(hor_lk_frac, neutral_level, space)
|
1106
|
+
c_w_SG, c_s_SG = calc_wind_stack_coeffs(site, hor_lk_frac, neutral_level, space)
|
1126
1107
|
apply_infiltration_to_unconditioned_space(model, space, nil, ela, c_w_SG, c_s_SG)
|
1127
1108
|
end
|
1128
1109
|
|
@@ -1134,9 +1115,6 @@ class Airflow
|
|
1134
1115
|
ach = 0.1 # Assumption
|
1135
1116
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1136
1117
|
apply_infiltration_to_unconditioned_space(model, space, ach, nil, nil, nil)
|
1137
|
-
|
1138
|
-
# Store info for HVAC Sizing measure
|
1139
|
-
space.thermalZone.get.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, cfm.to_f)
|
1140
1118
|
end
|
1141
1119
|
|
1142
1120
|
def self.apply_infiltration_to_vented_crawlspace(model, weather, vented_crawl)
|
@@ -1148,9 +1126,6 @@ class Airflow
|
|
1148
1126
|
ach = get_infiltration_ACH_from_SLA(sla, 8.202, weather)
|
1149
1127
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1150
1128
|
apply_infiltration_to_unconditioned_space(model, space, ach, nil, nil, nil)
|
1151
|
-
|
1152
|
-
# Store info for HVAC Sizing measure
|
1153
|
-
space.thermalZone.get.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, cfm.to_f)
|
1154
1129
|
end
|
1155
1130
|
|
1156
1131
|
def self.apply_infiltration_to_unvented_crawlspace(model, weather)
|
@@ -1162,12 +1137,9 @@ class Airflow
|
|
1162
1137
|
ach = get_infiltration_ACH_from_SLA(sla, 8.202, weather)
|
1163
1138
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1164
1139
|
apply_infiltration_to_unconditioned_space(model, space, ach, nil, nil, nil)
|
1165
|
-
|
1166
|
-
# Store info for HVAC Sizing measure
|
1167
|
-
space.thermalZone.get.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, cfm.to_f)
|
1168
1140
|
end
|
1169
1141
|
|
1170
|
-
def self.apply_infiltration_to_vented_attic(model, weather, vented_attic)
|
1142
|
+
def self.apply_infiltration_to_vented_attic(model, weather, site, vented_attic)
|
1171
1143
|
return if @spaces[HPXML::LocationAtticVented].nil?
|
1172
1144
|
|
1173
1145
|
if not vented_attic.vented_attic_sla.nil?
|
@@ -1190,19 +1162,16 @@ class Airflow
|
|
1190
1162
|
ach = get_infiltration_ACH_from_SLA(sla, 8.202, weather)
|
1191
1163
|
ela = sla * vented_attic_area
|
1192
1164
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1193
|
-
c_w_SG, c_s_SG = calc_wind_stack_coeffs(hor_lk_frac, neutral_level, space)
|
1165
|
+
c_w_SG, c_s_SG = calc_wind_stack_coeffs(site, hor_lk_frac, neutral_level, space)
|
1194
1166
|
apply_infiltration_to_unconditioned_space(model, space, nil, ela, c_w_SG, c_s_SG)
|
1195
1167
|
elsif not vented_attic_const_ach.nil?
|
1196
1168
|
ach = vented_attic_const_ach
|
1197
1169
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1198
1170
|
apply_infiltration_to_unconditioned_space(model, space, ach, nil, nil, nil)
|
1199
1171
|
end
|
1200
|
-
|
1201
|
-
# Store info for HVAC Sizing measure
|
1202
|
-
space.thermalZone.get.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, cfm.to_f)
|
1203
1172
|
end
|
1204
1173
|
|
1205
|
-
def self.apply_infiltration_to_unvented_attic(model, weather)
|
1174
|
+
def self.apply_infiltration_to_unvented_attic(model, weather, site)
|
1206
1175
|
return if @spaces[HPXML::LocationAtticUnvented].nil?
|
1207
1176
|
|
1208
1177
|
space = @spaces[HPXML::LocationAtticUnvented]
|
@@ -1214,11 +1183,8 @@ class Airflow
|
|
1214
1183
|
ach = get_infiltration_ACH_from_SLA(sla, 8.202, weather)
|
1215
1184
|
ela = sla * area
|
1216
1185
|
cfm = ach / UnitConversions.convert(1.0, 'hr', 'min') * volume
|
1217
|
-
c_w_SG, c_s_SG = calc_wind_stack_coeffs(hor_lk_frac, neutral_level, space)
|
1186
|
+
c_w_SG, c_s_SG = calc_wind_stack_coeffs(site, hor_lk_frac, neutral_level, space)
|
1218
1187
|
apply_infiltration_to_unconditioned_space(model, space, nil, ela, c_w_SG, c_s_SG)
|
1219
|
-
|
1220
|
-
# Store info for HVAC Sizing measure
|
1221
|
-
space.thermalZone.get.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, cfm.to_f)
|
1222
1188
|
end
|
1223
1189
|
|
1224
1190
|
def self.apply_local_ventilation(model, vent_object_array, obj_type_name)
|
@@ -1605,8 +1571,8 @@ class Airflow
|
|
1605
1571
|
end
|
1606
1572
|
end
|
1607
1573
|
|
1608
|
-
def self.
|
1609
|
-
|
1574
|
+
def self.apply_infiltration_and_mechanical_ventilation(model, site, vent_fans_mech, living_ach50, living_const_ach, weather, vent_fans_kitchen, vent_fans_bath, vented_dryers,
|
1575
|
+
range_sch_sensors_map, bath_sch_sensors_map, dryer_exhaust_sch_sensors_map, has_flue_chimney, hvac_map)
|
1610
1576
|
# Categorize fans into different types
|
1611
1577
|
vent_mech_preheat = vent_fans_mech.select { |vent_mech| (not vent_mech.preheating_efficiency_cop.nil?) }
|
1612
1578
|
vent_mech_precool = vent_fans_mech.select { |vent_mech| (not vent_mech.precooling_efficiency_cop.nil?) }
|
@@ -1641,40 +1607,10 @@ class Airflow
|
|
1641
1607
|
exh_cfm_tot = vent_mech_exh_tot.map { |vent_mech| vent_mech.average_total_unit_flow_rate }.sum(0.0)
|
1642
1608
|
bal_cfm_tot = vent_mech_bal_tot.map { |vent_mech| vent_mech.average_total_unit_flow_rate }.sum(0.0)
|
1643
1609
|
erv_hrv_cfm_tot = vent_mech_erv_hrv_tot.map { |vent_mech| vent_mech.average_total_unit_flow_rate }.sum(0.0)
|
1644
|
-
cfis_cfm_tot = vent_mech_cfis_tot.map { |vent_mech| vent_mech.average_total_unit_flow_rate }.sum(0.0)
|
1645
|
-
|
1646
|
-
# Average preconditioned oa air cfms (only oa, recirculation will be addressed below for all shared systems)
|
1647
|
-
oa_cfm_preheat = vent_mech_preheat.map { |vent_mech| vent_mech.average_oa_unit_flow_rate * vent_mech.preheating_fraction_load_served }.sum(0.0)
|
1648
|
-
oa_cfm_precool = vent_mech_precool.map { |vent_mech| vent_mech.average_oa_unit_flow_rate * vent_mech.precooling_fraction_load_served }.sum(0.0)
|
1649
|
-
recirc_cfm_shared = vent_mech_shared.map { |vent_mech| vent_mech.average_total_unit_flow_rate - vent_mech.average_oa_unit_flow_rate }.sum(0.0)
|
1650
|
-
|
1651
|
-
# HVAC Sizing data
|
1652
|
-
tot_sup_cfm = sup_cfm_tot + bal_cfm_tot + erv_hrv_cfm_tot + cfis_cfm_tot
|
1653
|
-
tot_exh_cfm = exh_cfm_tot + bal_cfm_tot + erv_hrv_cfm_tot
|
1654
|
-
tot_unbal_cfm = (tot_sup_cfm - tot_exh_cfm).abs
|
1655
|
-
tot_bal_cfm = [tot_exh_cfm, tot_sup_cfm].min
|
1656
1610
|
|
1657
1611
|
# Calculate effectivenesses for all ERV/HRV and store results in a hash
|
1658
1612
|
hrv_erv_effectiveness_map = calc_hrv_erv_effectiveness(vent_mech_erv_hrv_tot)
|
1659
1613
|
|
1660
|
-
# Calculate cfm weighted average effectivenesses for the combined balanced airflow
|
1661
|
-
weighted_vent_mech_lat_eff = 0.0
|
1662
|
-
weighted_vent_mech_apparent_sens_eff = 0.0
|
1663
|
-
vent_mech_erv_hrv_unprecond = vent_mech_erv_hrv_tot.select { |vent_mech| vent_mech.preheating_efficiency_cop.nil? && vent_mech.precooling_efficiency_cop.nil? }
|
1664
|
-
vent_mech_erv_hrv_unprecond.each do |vent_mech|
|
1665
|
-
weighted_vent_mech_lat_eff += vent_mech.average_oa_unit_flow_rate / tot_bal_cfm * hrv_erv_effectiveness_map[vent_mech][:vent_mech_lat_eff]
|
1666
|
-
weighted_vent_mech_apparent_sens_eff += vent_mech.average_oa_unit_flow_rate / tot_bal_cfm * hrv_erv_effectiveness_map[vent_mech][:vent_mech_apparent_sens_eff]
|
1667
|
-
end
|
1668
|
-
# Store info for HVAC Sizing measure
|
1669
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentLatentEffectiveness, weighted_vent_mech_lat_eff)
|
1670
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentApparentSensibleEffectiveness, weighted_vent_mech_apparent_sens_eff)
|
1671
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentWholeHouseRateBalanced, tot_bal_cfm)
|
1672
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentWholeHouseRateUnbalanced, tot_unbal_cfm)
|
1673
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentWholeHouseRatePreHeated, oa_cfm_preheat)
|
1674
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentWholeHouseRatePreCooled, oa_cfm_precool)
|
1675
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentWholeHouseRateRecirculated, recirc_cfm_shared)
|
1676
|
-
model.getBuilding.additionalProperties.setFeature(Constants.SizingInfoMechVentExist, (not vent_fans_mech.empty?))
|
1677
|
-
|
1678
1614
|
infil_flow = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(model)
|
1679
1615
|
infil_flow.setName(Constants.ObjectNameInfiltration + ' flow')
|
1680
1616
|
infil_flow.setSchedule(model.alwaysOnDiscreteSchedule)
|
@@ -1687,7 +1623,7 @@ class Airflow
|
|
1687
1623
|
infil_program.setName(Constants.ObjectNameInfiltration + ' program')
|
1688
1624
|
|
1689
1625
|
# Calculate infiltration without adjustment by ventilation
|
1690
|
-
apply_infiltration_to_living(living_ach50, living_const_ach, infil_program, weather, has_flue_chimney)
|
1626
|
+
apply_infiltration_to_living(site, living_ach50, living_const_ach, infil_program, weather, has_flue_chimney)
|
1691
1627
|
|
1692
1628
|
# Common variable and load actuators across multiple mech vent calculations, create only once
|
1693
1629
|
fan_sens_load_actuator, fan_lat_load_actuator = setup_mech_vent_vars_actuators(model: model, program: infil_program)
|
@@ -1719,18 +1655,18 @@ class Airflow
|
|
1719
1655
|
program_calling_manager.addProgram(infil_program)
|
1720
1656
|
end
|
1721
1657
|
|
1722
|
-
def self.apply_infiltration_and_ventilation_fans(model, weather, vent_fans_mech, vent_fans_kitchen, vent_fans_bath, vented_dryers,
|
1658
|
+
def self.apply_infiltration_and_ventilation_fans(model, weather, site, vent_fans_mech, vent_fans_kitchen, vent_fans_bath, vented_dryers,
|
1723
1659
|
has_flue_chimney, air_infils, vented_attic, vented_crawl, hvac_map, schedules_file)
|
1724
1660
|
# Get living space infiltration
|
1725
1661
|
living_ach50 = nil
|
1726
1662
|
living_const_ach = nil
|
1727
1663
|
air_infils.each do |air_infil|
|
1728
1664
|
if (air_infil.unit_of_measure == HPXML::UnitsACH) && !air_infil.house_pressure.nil?
|
1729
|
-
|
1730
|
-
living_ach50 = calc_air_leakage_at_diff_pressure(0.65,
|
1665
|
+
living_achXX = air_infil.air_leakage
|
1666
|
+
living_ach50 = calc_air_leakage_at_diff_pressure(0.65, living_achXX, air_infil.house_pressure, 50.0)
|
1731
1667
|
elsif (air_infil.unit_of_measure == HPXML::UnitsCFM) && !air_infil.house_pressure.nil?
|
1732
|
-
|
1733
|
-
living_ach50 = calc_air_leakage_at_diff_pressure(0.65,
|
1668
|
+
living_achXX = air_infil.air_leakage * 60.0 / @infil_volume # Convert CFM to ACH
|
1669
|
+
living_ach50 = calc_air_leakage_at_diff_pressure(0.65, living_achXX, air_infil.house_pressure, 50.0)
|
1734
1670
|
elsif air_infil.unit_of_measure == HPXML::UnitsACHNatural
|
1735
1671
|
if @apply_ashrae140_assumptions
|
1736
1672
|
living_const_ach = air_infil.air_leakage
|
@@ -1742,12 +1678,12 @@ class Airflow
|
|
1742
1678
|
end
|
1743
1679
|
|
1744
1680
|
# Infiltration for unconditioned spaces
|
1745
|
-
apply_infiltration_to_garage(model, weather, living_ach50)
|
1681
|
+
apply_infiltration_to_garage(model, weather, site, living_ach50)
|
1746
1682
|
apply_infiltration_to_unconditioned_basement(model, weather)
|
1747
1683
|
apply_infiltration_to_vented_crawlspace(model, weather, vented_crawl)
|
1748
1684
|
apply_infiltration_to_unvented_crawlspace(model, weather)
|
1749
|
-
apply_infiltration_to_vented_attic(model, weather, vented_attic)
|
1750
|
-
apply_infiltration_to_unvented_attic(model, weather)
|
1685
|
+
apply_infiltration_to_vented_attic(model, weather, site, vented_attic)
|
1686
|
+
apply_infiltration_to_unvented_attic(model, weather, site)
|
1751
1687
|
|
1752
1688
|
# Local ventilation
|
1753
1689
|
range_sch_sensors_map = apply_local_ventilation(model, vent_fans_kitchen, Constants.ObjectNameMechanicalVentilationRangeFan)
|
@@ -1757,11 +1693,13 @@ class Airflow
|
|
1757
1693
|
dryer_exhaust_sch_sensors_map = apply_dryer_exhaust(model, vented_dryers, schedules_file)
|
1758
1694
|
|
1759
1695
|
# Get mechanical ventilation
|
1760
|
-
|
1761
|
-
|
1696
|
+
apply_infiltration_and_mechanical_ventilation(model, site, vent_fans_mech, living_ach50, living_const_ach, weather, vent_fans_kitchen, vent_fans_bath, vented_dryers,
|
1697
|
+
range_sch_sensors_map, bath_sch_sensors_map, dryer_exhaust_sch_sensors_map, has_flue_chimney, hvac_map)
|
1762
1698
|
end
|
1763
1699
|
|
1764
|
-
def self.apply_infiltration_to_living(living_ach50, living_const_ach, infil_program, weather, has_flue_chimney)
|
1700
|
+
def self.apply_infiltration_to_living(site, living_ach50, living_const_ach, infil_program, weather, has_flue_chimney)
|
1701
|
+
site_ap = site.additional_properties
|
1702
|
+
|
1765
1703
|
if living_ach50.to_f > 0
|
1766
1704
|
# Based on "Field Validation of Algebraic Equations for Stack and
|
1767
1705
|
# Wind Driven Air Infiltration Calculations" by Walker and Wilson (1998)
|
@@ -1779,11 +1717,9 @@ class Airflow
|
|
1779
1717
|
|
1780
1718
|
if has_flue_chimney
|
1781
1719
|
y_i = 0.2 # Fraction of leakage through the flue; 0.2 is a "typical" value according to THE ALBERTA AIR INFIL1RATION MODEL, Walker and Wilson, 1990
|
1782
|
-
flue_height = @building_height + 2.0 # ft
|
1783
1720
|
s_wflue = 1.0 # Flue Shelter Coefficient
|
1784
1721
|
else
|
1785
1722
|
y_i = 0.0 # Fraction of leakage through the flu
|
1786
|
-
flue_height = 0.0 # ft
|
1787
1723
|
s_wflue = 0.0 # Flue Shelter Coefficient
|
1788
1724
|
end
|
1789
1725
|
|
@@ -1804,7 +1740,6 @@ class Airflow
|
|
1804
1740
|
x_i = (leakage_ceiling - leakage_floor)
|
1805
1741
|
r_i *= (1 - y_i)
|
1806
1742
|
x_i *= (1 - y_i)
|
1807
|
-
z_f = flue_height / (@infil_height + Geometry.get_z_origin_for_zone(@living_zone))
|
1808
1743
|
|
1809
1744
|
# Calculate Stack Coefficient
|
1810
1745
|
m_o = (x_i + (2.0 * n_i + 1.0) * y_i)**2.0 / (2 - r_i)
|
@@ -1814,6 +1749,11 @@ class Airflow
|
|
1814
1749
|
m_i = 1.0 # eq. 11
|
1815
1750
|
end
|
1816
1751
|
if has_flue_chimney
|
1752
|
+
if @ncfl_ag <= 0
|
1753
|
+
z_f = 1.0
|
1754
|
+
else
|
1755
|
+
z_f = (@ncfl_ag + 0.5) / @ncfl_ag # Typical value is 1.5 according to THE ALBERTA AIR INFIL1RATION MODEL, Walker and Wilson, 1990, presumably for a single story home
|
1756
|
+
end
|
1817
1757
|
x_c = r_i + (2.0 * (1.0 - r_i - y_i)) / (n_i + 1.0) - 2.0 * y_i * (z_f - 1.0)**n_i # Eq. 13
|
1818
1758
|
f_i = n_i * y_i * (z_f - 1.0)**((3.0 * n_i - 1.0) / 3.0) * (1.0 - (3.0 * (x_c - x_i)**2.0 * r_i**(1 - n_i)) / (2.0 * (z_f + 1.0))) # Additive flue function, Eq. 12
|
1819
1759
|
else
|
@@ -1843,11 +1783,11 @@ class Airflow
|
|
1843
1783
|
living_ach = get_infiltration_ACH_from_SLA(living_sla, @infil_height, weather)
|
1844
1784
|
living_cfm = living_ach / UnitConversions.convert(1.0, 'hr', 'min') * @infil_volume
|
1845
1785
|
|
1846
|
-
infil_program.addLine("Set p_m = #{
|
1847
|
-
infil_program.addLine("Set p_s = #{
|
1848
|
-
infil_program.addLine("Set s_m = #{
|
1849
|
-
infil_program.addLine("Set s_s = #{
|
1850
|
-
infil_program.addLine("Set z_m = #{UnitConversions.convert(
|
1786
|
+
infil_program.addLine("Set p_m = #{site_ap.ashrae_terrain_exponent}")
|
1787
|
+
infil_program.addLine("Set p_s = #{site_ap.ashrae_site_terrain_exponent}")
|
1788
|
+
infil_program.addLine("Set s_m = #{site_ap.ashrae_terrain_thickness}")
|
1789
|
+
infil_program.addLine("Set s_s = #{site_ap.ashrae_site_terrain_thickness}")
|
1790
|
+
infil_program.addLine("Set z_m = #{UnitConversions.convert(site_ap.height, 'ft', 'm')}")
|
1851
1791
|
infil_program.addLine("Set z_s = #{UnitConversions.convert(@infil_height, 'ft', 'm')}")
|
1852
1792
|
infil_program.addLine('Set f_t = (((s_m/z_m)^p_m)*((z_s/s_s)^p_s))')
|
1853
1793
|
infil_program.addLine("Set Tdiff = #{@tin_sensor.name}-#{@tout_sensor.name}")
|
@@ -1856,7 +1796,7 @@ class Airflow
|
|
1856
1796
|
infil_program.addLine("Set Cs = #{(stack_coef * (UnitConversions.convert(1.0, 'inH2O/R', 'Pa/K')**n_i)).round(4)}")
|
1857
1797
|
infil_program.addLine("Set Cw = #{(wind_coef * (UnitConversions.convert(1.0, 'inH2O/mph^2', 'Pa*s^2/m^2')**n_i)).round(4)}")
|
1858
1798
|
infil_program.addLine("Set n = #{n_i}")
|
1859
|
-
infil_program.addLine("Set sft = (f_t*#{(((
|
1799
|
+
infil_program.addLine("Set sft = (f_t*#{(((site_ap.aim2_shelter_coeff * (1.0 - y_i)) + (s_wflue * (1.5 * y_i))))})")
|
1860
1800
|
infil_program.addLine("Set temp1 = ((c*Cw)*((sft*#{@vwind_sensor.name})^(2*n)))^2")
|
1861
1801
|
infil_program.addLine('Set Qinf = (((c*Cs*(dT^n))^2)+temp1)^0.5')
|
1862
1802
|
infil_program.addLine('Set Qinf = (@Max Qinf 0)')
|
@@ -1870,20 +1810,17 @@ class Airflow
|
|
1870
1810
|
else
|
1871
1811
|
infil_program.addLine('Set Qinf = 0')
|
1872
1812
|
end
|
1873
|
-
|
1874
|
-
# Store info for HVAC Sizing measure
|
1875
|
-
@living_zone.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationCFM, living_cfm.to_f)
|
1876
|
-
@living_zone.additionalProperties.setFeature(Constants.SizingInfoZoneInfiltrationACH, living_ach.to_f)
|
1877
1813
|
end
|
1878
1814
|
|
1879
|
-
def self.calc_wind_stack_coeffs(hor_lk_frac, neutral_level, space, space_height = nil)
|
1815
|
+
def self.calc_wind_stack_coeffs(site, hor_lk_frac, neutral_level, space, space_height = nil)
|
1816
|
+
site_ap = site.additional_properties
|
1880
1817
|
if space_height.nil?
|
1881
1818
|
space_height = Geometry.get_height_of_spaces([space])
|
1882
1819
|
end
|
1883
1820
|
coord_z = Geometry.get_z_origin_for_zone(space.thermalZone.get)
|
1884
|
-
f_t_SG =
|
1821
|
+
f_t_SG = site_ap.site_terrain_multiplier * ((space_height + coord_z) / 32.8)**site_ap.site_terrain_exponent / (site_ap.terrain_multiplier * (site_ap.height / 32.8)**site_ap.terrain_exponent)
|
1885
1822
|
f_s_SG = 2.0 / 3.0 * (1 + hor_lk_frac / 2.0) * (2.0 * neutral_level * (1.0 - neutral_level))**0.5 / (neutral_level**0.5 + (1.0 - neutral_level)**0.5)
|
1886
|
-
f_w_SG =
|
1823
|
+
f_w_SG = site_ap.s_g_shielding_coef * (1.0 - hor_lk_frac)**(1.0 / 3.0) * f_t_SG
|
1887
1824
|
c_s_SG = f_s_SG**2.0 * Constants.g * space_height / (Constants.AssumedInsideTemp + 460.0)
|
1888
1825
|
c_w_SG = f_w_SG**2.0
|
1889
1826
|
return c_w_SG, c_s_SG
|
@@ -1969,9 +1906,3 @@ class Duct
|
|
1969
1906
|
end
|
1970
1907
|
attr_accessor(:side, :loc_space, :loc_schedule, :leakage_frac, :leakage_cfm25, :area, :rvalue, :zone, :location)
|
1971
1908
|
end
|
1972
|
-
|
1973
|
-
class WindSpeed
|
1974
|
-
def initialize
|
1975
|
-
end
|
1976
|
-
attr_accessor(:height, :terrain_multiplier, :terrain_exponent, :ashrae_terrain_thickness, :ashrae_terrain_exponent, :site_terrain_multiplier, :site_terrain_exponent, :ashrae_site_terrain_thickness, :ashrae_site_terrain_exponent, :S_wo, :shielding_coef)
|
1977
|
-
end
|