urbanopt-cli 0.9.3 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/{nightly_build.yml → nightly_ci_build.yml} +6 -5
- data/CHANGELOG.md +11 -2
- data/CMakeLists.txt +7 -7
- data/Gemfile +6 -5
- data/LICENSE.md +18 -15
- data/README.md +2 -1
- data/Rakefile +2 -37
- data/example_files/Gemfile +8 -8
- data/example_files/mappers/Baseline.rb +170 -191
- data/example_files/mappers/ChilledWaterStorage.rb +8 -30
- data/example_files/mappers/ClassProject.rb +2 -27
- data/example_files/mappers/CreateBar.rb +2 -28
- data/example_files/mappers/EvCharging.rb +2 -27
- data/example_files/mappers/FlexibleHotWater.rb +2 -27
- data/example_files/mappers/Floorspace.rb +2 -27
- data/example_files/mappers/HighEfficiency.rb +2 -27
- data/example_files/mappers/HighEfficiencyCreateBar.rb +2 -27
- data/example_files/mappers/HighEfficiencyFloorspace.rb +2 -27
- data/example_files/mappers/PeakHoursMelsShedding.rb +4 -27
- data/example_files/mappers/PeakHoursThermostatAdjust.rb +4 -27
- data/example_files/mappers/ThermalStorage.rb +2 -28
- data/example_files/measures/BuildResidentialModel/measure.rb +30 -60
- data/example_files/measures/BuildResidentialModel/measure.xml +253 -84
- data/example_files/measures/BuildResidentialModel/resources/util.rb +45 -45
- data/example_files/python_deps/dependencies.json +3 -3
- data/example_files/resources/hpxml-measures/.github/pull_request_template.md +1 -1
- data/example_files/resources/hpxml-measures/.github/workflows/config.yml +28 -19
- data/example_files/resources/hpxml-measures/.gitignore +0 -997
- data/example_files/resources/hpxml-measures/.readthedocs.yml +9 -0
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.rb +476 -230
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/measure.xml +244 -75
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/resources/geometry.rb +42 -15
- data/example_files/resources/hpxml-measures/BuildResidentialHPXML/tests/build_residential_hpxml_test.rb +24 -9
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.rb +11 -33
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/measure.xml +23 -50
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/README.md +2 -2
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/constants.rb +119 -0
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules.rb +67 -290
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.md +6 -5
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/tests/build_residential_schedule_file_test.rb +78 -349
- data/example_files/resources/hpxml-measures/Changelog.md +80 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.rb +212 -144
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/measure.xml +164 -170
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/airflow.rb +238 -167
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/battery.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constants.rb +12 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/constructions.rb +36 -6
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/data/unavailable_periods.csv +33 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/energyplus.rb +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/geometry.rb +9 -7
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hotwater_appliances.rb +79 -61
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml.rb +387 -124
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_defaults.rb +427 -196
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXML.xsd +11515 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/README.md +1 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schematron/EPvalidator.xml +224 -85
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac.rb +334 -319
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hvac_sizing.rb +572 -838
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/lighting.rb +162 -68
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/location.rb +4 -20
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/meta_measure.rb +12 -10
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/misc_loads.rb +34 -37
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/output.rb +8 -101
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/psychrometrics.rb +31 -40
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/pv.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-non-stochastic.csv +8761 -0
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-10-mins.csv +52561 -52561
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic.csv +8761 -8761
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedules.rb +384 -155
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/unit_conversions.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/util.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/version.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/waterheater.rb +68 -90
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/weather.rb +34 -223
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlhelper.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/xmlvalidator.rb +16 -4
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_airflow.rb +94 -40
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_defaults.rb +765 -302
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_enclosure.rb +119 -69
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_generator.rb +8 -8
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hotwater_appliance.rb +1 -1
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac.rb +51 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_hvac_sizing.rb +196 -9
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_lighting.rb +36 -13
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_miscloads.rb +3 -3
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_pv.rb +2 -2
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_schedules.rb +571 -61
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_validation.rb +190 -81
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_water_heater.rb +11 -11
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/tests/test_weather.rb +188 -50
- data/example_files/resources/hpxml-measures/README.md +3 -3
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.rb +659 -815
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/measure.xml +301 -1112
- data/example_files/resources/hpxml-measures/ReportSimulationOutput/tests/output_report_test.rb +605 -350
- data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.rb +18 -14
- data/example_files/resources/hpxml-measures/ReportUtilityBills/measure.xml +15 -15
- data/example_files/resources/hpxml-measures/ReportUtilityBills/tests/utility_bills_test.rb +13 -3
- data/example_files/resources/hpxml-measures/docs/source/usage_instructions.rst +3 -3
- data/example_files/resources/hpxml-measures/docs/source/workflow_inputs.rst +894 -596
- data/example_files/resources/hpxml-measures/docs/source/workflow_outputs.rst +127 -76
- data/example_files/resources/hpxml-measures/tasks.rb +185 -2802
- data/example_files/resources/hpxml-measures/workflow/hpxml_inputs.json +3401 -0
- data/example_files/resources/hpxml-measures/workflow/real_homes/house001.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house002.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house003.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house004.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house005.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house006.xml +1 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house007.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house008.xml +1 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house009.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house010.xml +1 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house011.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house012.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house013.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house014.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house015.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house016.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house017.xml +17 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house018.xml +2 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house019.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house020.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house021.xml +4 -5
- data/example_files/resources/hpxml-measures/workflow/real_homes/house022.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house023.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house024.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house025.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house026.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house027.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house028.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house029.xml +1 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house030.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house031.xml +4 -5
- data/example_files/resources/hpxml-measures/workflow/real_homes/house032.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house033.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house034.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house035.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house036.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house037.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house038.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house039.xml +3 -3
- data/example_files/resources/hpxml-measures/workflow/real_homes/house040.xml +3 -4
- data/example_files/resources/hpxml-measures/workflow/real_homes/house041.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house042.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house043.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house044.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house045.xml +0 -1
- data/example_files/resources/hpxml-measures/workflow/real_homes/house046.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/real_homes/house047.xml +1 -0
- data/example_files/resources/hpxml-measures/workflow/run_simulation.rb +12 -8
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-coal.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-portable.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-ief-whole-home.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier-multiple.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-dehumidifier.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-modified.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil-location-miami-fl.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-oil.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane-location-portland-or.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-propane.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-appliances-wood.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-cathedral.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-conditioned.xml +9 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-flat.xml +9 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-radiant-barrier.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-unvented-insulated-roof.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-atticroof-vented.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery-scheduled.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-battery.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-2stories.xml → base-bldgtype-attached-2stories.xml} +610 -639
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached-atticroof-cathedral.xml → base-bldgtype-attached-atticroof-cathedral.xml} +558 -587
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-attached-infil-compartmentalization-test.xml +611 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-single-family-attached.xml → base-bldgtype-attached.xml} +610 -639
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multifamily-buffer-space.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-multiple.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-non-freezing-space.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-heated-space.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-adjacent-to-other-housing-unit.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-infil-compartmentalization-test.xml +462 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-bldgtype-multifamily-calctype-operational.xml → base-bldgtype-multifamily-residents-1.xml} +453 -480
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-baseboard.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil-ducted.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-fan-coil.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-chiller-water-loop-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-cooling-tower-water-loop-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-baseboard.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-ducted.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil-eae.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-fan-coil.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-boiler-only-water-loop-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-baseboard.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil-ducted.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-fan-coil.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-chiller-only-water-loop-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-cooling-tower-only-water-loop-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-generator.xml +11 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-ground-loop-ground-to-air-heat-pump.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room-multiple-water-heaters.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-laundry-room.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-multiple.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent-preconditioning.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-mechvent.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-pv.xml +15 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater-recirc.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily-shared-water-heater.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-bldgtype-multifamily.xml +10 -39
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless-outside.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-combi-tankless.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-gshp.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-hpwh.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-tankless.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-desuperheater.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-dwhr.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-dse.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-outside.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-standbyloss.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect-with-solar-fraction.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-indirect.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-electric.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-hpwh.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-jacket-indirect.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-low-flow-fixtures.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-multiple.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-demand.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-manual.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-nocontrol.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-temperature.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-recirc-timer.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-evacuated-tube.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-flat-plate.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-direct-ics.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-fraction.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-indirect-flat-plate.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-solar-thermosyphon-flat-plate.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-coal.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-elec-uef.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-outside.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef-fhr.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas-uef.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-detailed-schedules.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-operating-mode-heat-pump-only.xml +11 -43
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-outside.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-uef.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar-fraction.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump-with-solar.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-heat-pump.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified-detailed-occupancy-stochastic.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-model-type-stratified.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-oil.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tank-wood.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-outside.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric-uef.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-electric.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-uef.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar-fraction.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas-with-solar.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-dhw-tankless-propane.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories-garage.xml +19 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-2stories.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-1.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-2.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-4.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-beds-5.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-ceilingtypes.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-floortypes.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-garage.xml +18 -24
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ach-house-pressure.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm-house-pressure.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-cfm50.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-ela.xml +549 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-flue.xml +13 -43
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-ach.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-infil-natural-cfm.xml +552 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-orientations.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-overhangs.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-rooftypes.xml +17 -47
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-physical-properties.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-shading.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights-storms.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-skylights.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-level.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-thermal-mass.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-walltypes.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-natural-ventilation-availability.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-physical-properties.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading-seasons.xml +559 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-shading.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-windows-storms.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-ambient.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-basement-garage.xml +19 -25
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-complex.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-slab-insulation.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-basement-wall-insulation.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-conditioned-crawlspace.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-multiple.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-slab.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-above-grade.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-assembly-r.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement-wall-insulation.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unconditioned-basement.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-unvented-crawlspace.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-vented-crawlspace.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-foundation-walkout-basement.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-autosized-backup.xml +557 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-cooling-only.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-electric.xml → base-hvac-air-to-air-heat-pump-1-speed-heating-capacity-17f.xml} +552 -583
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-heating-only.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-hvac-air-to-air-heat-pump-1-speed-backup-lockout-temperature.xml → base-hvac-air-to-air-heat-pump-1-speed-lockout-temperatures.xml} +562 -586
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed-seer2-hspf2.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-1-speed.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-2-speed.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-hvac-seasons.xml +587 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler-switchover-temperature.xml +17 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-boiler.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed-backup-furnace.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-air-to-air-heat-pump-var-speed.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-cooling-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-heating-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload-miami-fl.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-acca.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-hers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-2-speed-sizing-methodology-maxload.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-boiler.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-backup-furnace.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-acca.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-hers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-air-to-air-heat-pump-var-speed-sizing-methodology-maxload.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-central-ac-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-boiler-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-only-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-central-ac-plus-air-to-air-heat-pump-heating.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-acca.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-hers.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-air-to-air-heat-pump-1-speed-sizing-methodology-maxload.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted-backup-hardsized.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-dual-fuel-mini-split-heat-pump-ducted.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-elec-resistance-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-evap-cooler-furnace-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-floor-furnace-propane-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-central-ac-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-furnace-gas-room-ac.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-cooling-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-heating-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-acca.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-hers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ground-to-air-heat-pump-sizing-methodology-maxload.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-air-conditioner-only-ducted.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-cooling-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-heating-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-acca.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-hers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ducted-sizing-methodology-maxload.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-baseboard.xml +519 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-mini-split-heat-pump-ductless-backup-stove.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac-with-heating.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-ptac.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-acca.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-hers.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-pthp-sizing-methodology-maxload.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-heating.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-acca.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-hers.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-room-ac-with-reverse-cycle-sizing-methodology-maxload.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-sizing-controls.xml +566 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-stove-oil-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize-wall-furnace-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-autosize.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-coal-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-central-ac-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only-pilot.xml +513 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-oil-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-propane-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-boiler-wood-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed-seer2.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-only-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-central-ac-plus-air-to-air-heat-pump-heating.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-crankcase-heater-40w.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dse.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed-lockout-temperatures.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-1-speed.xml +17 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-2-speed.xml +17 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-air-to-air-heat-pump-var-speed.xml +17 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-dual-fuel-mini-split-heat-pump-ducted.xml +17 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-fractions.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-area-multipliers.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-buried.xml +555 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-effective-rvalue.xml +553 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-cfm50.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ducts-leakage-percent.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-elec-resistance-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-furnace-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only-ducted.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-evap-cooler-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fireplace-wood-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-fixed-heater-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only-pilot-light.xml +506 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-floor-furnace-propane-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-coal-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-central-ac-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-central-ac-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only-pilot.xml +542 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-gas-room-ac.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-oil-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-propane-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-wood-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-furnace-x3-dse.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-cooling-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump-heating-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ground-to-air-heat-pump.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-1-speed.xml +14 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-2-speed.xml +14 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-air-to-air-heat-pump-var-speed.xml +14 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-1-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-2-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-central-ac-var-speed.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-furnace-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-ground-to-air-heat-pump.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-air-conditioner-only-ducted.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-install-quality-mini-split-heat-pump-ducted.xml +14 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ducted.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-air-conditioner-only-ductless.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-cooling-only.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted-heating-only.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ducted.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-baseboard.xml +525 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-furnace.xml +564 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-backup-stove.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless-heating-capacity-17f.xml +506 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-mini-split-heat-pump-ductless.xml +16 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-multiple.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-portable-heater-gas-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-electricity.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac-with-heating-natural-gas.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-ptac.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp-heating-capacity-17f.xml +513 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-pthp.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-33percent.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-ceer.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-heating.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-room-ac-with-reverse-cycle.xml +16 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-seasons.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-schedules.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints-daily-setbacks.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-oil-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-stove-wood-pellets-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized-allow-increased-fixed-capacities.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-undersized.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-hvac-wall-furnace-elec-only.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-ceiling-fans.xml +11 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-holiday.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-kwh-per-year.xml +529 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-mixed.xml +537 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none-ceiling-fans.xml +516 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-lighting-none.xml +1 -7
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-AMY-2012.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-baltimore-md.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-capetown-zaf.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-dallas-tx.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-duluth-mn.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-helena-mt.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-honolulu-hi.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-miami-fl.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-phoenix-az.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-location-portland-or.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-balanced.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-bath-kitchen-fans.xml +12 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-airflow-fraction-zero.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-dse.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-evap-cooler-only-ducted.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-exhaust.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis-supplemental-fan-supply.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-cfis.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv-atre-asre.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-erv.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust-rated-flow-rate.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-exhaust.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv-asre.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-hrv.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-multiple.xml +14 -44
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-supply.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-mechvent-whole-house-fan.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-additional-properties.xml +10 -38
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-detailed-only.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv-mixed.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills-pv.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-bills.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-defaults.xml +14 -37
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-emissions.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery-scheduled.xml +12 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators-battery.xml +12 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-generators.xml +12 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-ground-conductivity.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon.xml +10 -38
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-large-uncommon2.xml +10 -38
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-loads-none.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading-bldgtype-multifamily.xml +509 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-neighbor-shading.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-shielding-of-home.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-misc-usage-multiplier.xml +10 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-multiple-buildings.xml +30 -138
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-ah.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-garage.xml +24 -26
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-round-trip-efficiency.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery-scheduled.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-battery.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery-scheduled.xml +18 -44
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators-battery.xml +18 -44
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv-generators.xml +18 -44
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-pv.xml +16 -42
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0-runperiod-1-month.xml +560 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-residents-0.xml +556 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon.xml → base-residents-1-misc-loads-large-uncommon.xml} +616 -644
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-loads-large-uncommon2.xml → base-residents-1-misc-loads-large-uncommon2.xml} +616 -644
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational.xml → base-residents-1.xml} +547 -575
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-calctype-operational-misc-defaults.xml → base-residents-5.xml} +515 -539
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-all-10-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-10-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-power-outage.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/{base-schedules-detailed-occupancy-smooth.xml → base-schedules-detailed-occupancy-stochastic-vacancy-year-round.xml} +563 -583
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic-vacancy.xml +21 -41
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-occupancy-stochastic.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-schedules.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints-daily-setbacks.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-detailed-setpoints.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-available.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage-natvent-unavailable.xml +565 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-power-outage.xml +620 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy-year-round.xml +619 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple-vacancy.xml +619 -0
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-schedules-simple.xml +10 -38
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-calendar-year-custom.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-custom.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-daylight-saving-disabled.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-runperiod-1-month.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-temperature-capacitance-multiplier.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-10-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins-occupancy-stochastic-60-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-10-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-simcontrol-timestep-30-mins.xml +10 -40
- data/example_files/resources/hpxml-measures/workflow/sample_files/base.xml +10 -37
- data/example_files/resources/hpxml-measures/workflow/template-build-and-run-hpxml-with-stochastic-occupancy.osw +16 -4
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy-subset.osw +16 -3
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml-with-stochastic-occupancy.osw +16 -3
- data/example_files/resources/hpxml-measures/workflow/template-run-hpxml.osw +16 -2
- data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Long_Residence.xml +386 -0
- data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Vatilo_Residence.xml +381 -0
- data/example_files/resources/hpxml-measures/workflow/tests/ACCA_Examples/Victor_Residence.xml +370 -0
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AC.xml +2 -2
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L100AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L110AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L120AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L130AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L140AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L150AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L155AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L160AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AC.xml +2 -12
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L170AL.xml +2 -12
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L200AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L202AL.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L302XC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L304XC.xml +2 -5
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L322XC.xml +6 -9
- data/example_files/resources/hpxml-measures/workflow/tests/ASHRAE_Standard_140/L324XC.xml +6 -9
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results.csv +475 -444
- data/example_files/resources/hpxml-measures/workflow/tests/base_results/results_bills.csv +475 -444
- data/example_files/resources/hpxml-measures/workflow/tests/hpxml_translator_test.rb +177 -112
- data/example_files/resources/meta_measure.rb +2 -27
- data/example_files/xml_building/17/README.md +3 -3
- data/lib/uo_cli/version.rb +3 -38
- data/lib/uo_cli.rb +3 -38
- data/uo_cli.gemspec +6 -7
- metadata +70 -51
- data/example_files/resources/hpxml-measures/BuildResidentialScheduleFile/resources/schedules_config.json +0 -388
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLBaseElements.xsd +0 -6136
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/hpxml_schema/HPXMLDataTypes.xsd +0 -4846
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-smooth.csv +0 -8761
- data/example_files/resources/hpxml-measures/HPXMLtoOpenStudio/resources/schedule_files/occupancy-stochastic-vacancy.csv +0 -8761
- data/example_files/resources/hpxml-measures/weather/USA_AZ_Phoenix-Sky.Harbor.Intl.AP.722780_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_CO_Colorado.Springs-Peterson.Field.724660_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_CO_Denver.Intl.AP.725650_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_DE_Wilmington-New.Castle.County.AP.724089_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_FL_Miami.Intl.AP.722020_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_HI_Honolulu.Intl.AP.911820_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_MD_Baltimore-Washington.Intl.AP.724060_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_MN_Duluth.Intl.AP.727450_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_MT_Helena.Rgnl.AP.727720_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_NC_Charlotte-Douglas.Intl.AP.723140_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_NJ_Cape.May.County.AP.745966_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_NV_Las.Vegas-McCarran.Intl.AP.723860_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_OR_Portland.Intl.AP.726980_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/USA_TX_Dallas-Fort.Worth.Intl.AP.722590_TMY3-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/US_CO_Boulder_AMY_2012-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/weather/ZAF_Cape.Town.688160_IWEC-cache.csv +0 -35
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces.xml +0 -2508
- data/example_files/resources/hpxml-measures/workflow/sample_files/base-enclosure-split-surfaces2.xml +0 -2508
@@ -14,16 +14,16 @@
|
|
14
14
|
<sch:pattern>
|
15
15
|
<sch:title>[SoftwareInfo]</sch:title>
|
16
16
|
<sch:rule context='/h:HPXML/h:SoftwareInfo'>
|
17
|
-
<sch:assert role='ERROR' test='count(h:extension/h:OccupancyCalculationType) <= 1'>Expected 0 or 1 element(s) for xpath: extension/OccupancyCalculationType</sch:assert>
|
18
|
-
<sch:assert role='ERROR' test='h:extension/h:OccupancyCalculationType[text()="asset" or text()="operational"] or not(h:extension/h:OccupancyCalculationType)'>Expected extension/OccupancyCalculationType to be "asset" or "operational"</sch:assert>
|
19
|
-
<sch:assert role='ERROR' test='count(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) <= 1'>Expected 0 or 1 element(s) for xpath: extension/NaturalVentilationAvailabilityDaysperWeek</sch:assert>
|
20
|
-
<sch:assert role='ERROR' test='number(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) >= 0 or not(h:extension/h:NaturalVentilationAvailabilityDaysperWeek)'>Expected extension/NaturalVentilationAvailabilityDaysperWeek to be greater than or equal to 0</sch:assert>
|
21
|
-
<sch:assert role='ERROR' test='number(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) <= 7 or not(h:extension/h:NaturalVentilationAvailabilityDaysperWeek)'>Expected extension/NaturalVentilationAvailabilityDaysperWeek to be less than or equal to 7</sch:assert>
|
22
17
|
<sch:assert role='ERROR' test='count(h:extension/h:SimulationControl) <= 1'>Expected 0 or 1 element(s) for xpath: extension/SimulationControl</sch:assert> <!-- See [SimulationControl] -->
|
23
18
|
<sch:assert role='ERROR' test='count(h:extension/h:HVACSizingControl) <= 1'>Expected 0 or 1 element(s) for xpath: extension/HVACSizingControl</sch:assert> <!-- See [HVACSizingControl] -->
|
19
|
+
<sch:assert role='ERROR' test='count(h:extension/h:ShadingControl) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ShadingControl</sch:assert> <!-- See [ShadingControl] -->
|
24
20
|
<sch:assert role='ERROR' test='count(h:extension/h:SchedulesFilePath) >= 0'>Expected 0 or more element(s) for xpath: extension/SchedulesFilePath</sch:assert>
|
21
|
+
<sch:assert role='ERROR' test='count(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) <= 1'>Expected 0 or 1 element(s) for xpath: extension/NaturalVentilationAvailabilityDaysperWeek</sch:assert>
|
22
|
+
<sch:assert role='ERROR' test='number(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) >= 0 or not(h:extension/h:NaturalVentilationAvailabilityDaysperWeek)'>Expected extension/NaturalVentilationAvailabilityDaysperWeek to be greater than or equal to 0</sch:assert>
|
23
|
+
<sch:assert role='ERROR' test='number(h:extension/h:NaturalVentilationAvailabilityDaysperWeek) <= 7 or not(h:extension/h:NaturalVentilationAvailabilityDaysperWeek)'>Expected extension/NaturalVentilationAvailabilityDaysperWeek to be less than or equal to 7</sch:assert>
|
25
24
|
<sch:assert role='ERROR' test='count(h:extension/h:EmissionsScenarios/h:EmissionsScenario) >= 0'>Expected 0 or more element(s) for xpath: extension/EmissionsScenarios/EmissionsScenario</sch:assert> <!-- See [EmissionsScenario] -->
|
26
25
|
<sch:assert role='ERROR' test='count(h:extension/h:UtilityBillScenarios/h:UtilityBillScenario) >= 0'>Expected 0 or more element(s) for xpath: extension/UtilityBillScenarios/UtilityBillScenario</sch:assert> <!-- See [UtilityBillScenario] -->
|
26
|
+
<sch:assert role='ERROR' test='count(h:extension/h:UnavailablePeriods/h:UnavailablePeriod) >= 0'>Expected 0 or more element(s) for xpath: extension/UnavailablePeriods/UnavailablePeriod</sch:assert> <!-- See [UnavailablePeriod] -->
|
27
27
|
</sch:rule>
|
28
28
|
</sch:pattern>
|
29
29
|
|
@@ -32,8 +32,8 @@
|
|
32
32
|
<sch:rule context='/h:HPXML/h:SoftwareInfo/h:extension/h:SimulationControl'>
|
33
33
|
<sch:assert role='ERROR' test='count(h:Timestep) <= 1'>Expected 0 or 1 element(s) for xpath: Timestep</sch:assert> <!-- minutes; must be a divisor of 60 -->
|
34
34
|
<sch:assert role='ERROR' test='60 mod number(h:Timestep) = 0 or not(h:Timestep)'>Expected Timestep to be 60, 30, 20, 15, 12, 10, 6, 5, 4, 3, 2, or 1</sch:assert>
|
35
|
-
<sch:assert role='ERROR' test='count(h:BeginMonth) + count(h:BeginDayOfMonth) = 0 or count(h:BeginMonth) + count(h:BeginDayOfMonth) = 2'>Expected 0 or 2 element(s) for xpath: BeginMonth | BeginDayOfMonth</sch:assert>
|
36
|
-
<sch:assert role='ERROR' test='count(h:EndMonth) + count(h:EndDayOfMonth) = 0 or count(h:EndMonth) + count(h:EndDayOfMonth) = 2'>Expected 0 or 2 element(s) for xpath: EndMonth | EndDayOfMonth</sch:assert>
|
35
|
+
<sch:assert role='ERROR' test='count(h:BeginMonth) + count(h:BeginDayOfMonth) = 0 or count(h:BeginMonth) + count(h:BeginDayOfMonth) = 2'>Expected 0 or 2 element(s) for xpath: BeginMonth | BeginDayOfMonth</sch:assert>
|
36
|
+
<sch:assert role='ERROR' test='count(h:EndMonth) + count(h:EndDayOfMonth) = 0 or count(h:EndMonth) + count(h:EndDayOfMonth) = 2'>Expected 0 or 2 element(s) for xpath: EndMonth | EndDayOfMonth</sch:assert>
|
37
37
|
<sch:assert role='ERROR' test='count(h:CalendarYear) <= 1'>Expected 0 or 1 element(s) for xpath: CalendarYear</sch:assert> <!-- integer -->
|
38
38
|
<sch:assert role='ERROR' test='number(h:CalendarYear) >= 1600 or not(h:CalendarYear)'>Expected CalendarYear to be greater than or equal to 1600</sch:assert>
|
39
39
|
<sch:assert role='ERROR' test='number(h:CalendarYear) <= 9999 or not(h:CalendarYear)'>Expected CalendarYear to be less than or equal to 9999</sch:assert>
|
@@ -44,9 +44,29 @@
|
|
44
44
|
<sch:pattern>
|
45
45
|
<sch:title>[HVACSizingControl]</sch:title>
|
46
46
|
<sch:rule context='/h:HPXML/h:SoftwareInfo/h:extension/h:HVACSizingControl'>
|
47
|
-
<sch:assert role='ERROR' test='count(h:AllowIncreasedFixedCapacities) <= 1'>Expected 0 or 1 element(s) for xpath: AllowIncreasedFixedCapacities</sch:assert>
|
47
|
+
<sch:assert role='ERROR' test='count(h:AllowIncreasedFixedCapacities) <= 1'>Expected 0 or 1 element(s) for xpath: AllowIncreasedFixedCapacities</sch:assert>
|
48
48
|
<sch:assert role='ERROR' test='count(h:HeatPumpSizingMethodology) <= 1'>Expected 0 or 1 element(s) for xpath: HeatPumpSizingMethodology</sch:assert>
|
49
49
|
<sch:assert role='ERROR' test='h:HeatPumpSizingMethodology[text()="ACCA" or text()="HERS" or text()="MaxLoad"] or not(h:HeatPumpSizingMethodology)'>Expected HeatPumpSizingMethodology to be 'ACCA' or 'HERS' or 'MaxLoad'</sch:assert>
|
50
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:HeatingDesignTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/WinterDesignTemperature</sch:assert>
|
51
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:CoolingDesignTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/SummerDesignTemperature</sch:assert>
|
52
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:HeatingSetpoint) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/HeatingSetpoint</sch:assert>
|
53
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:CoolingSetpoint) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/CoolingSetpoint</sch:assert>
|
54
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:HumiditySetpoint) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/HumiditySetpoint</sch:assert>
|
55
|
+
<sch:assert role='ERROR' test='number(h:ManualJInputs/h:HumiditySetpoint) > 0 or not(h:ManualJInputs/h:HumiditySetpoint)'>Expected ManualJInputs/HumiditySetpoint to be greater than 0</sch:assert>
|
56
|
+
<sch:assert role='ERROR' test='number(h:ManualJInputs/h:HumiditySetpoint) < 1 or not(h:ManualJInputs/h:HumiditySetpoint)'>Expected ManualJInputs/HumiditySetpoint to be less than 1</sch:assert>
|
57
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:InternalLoadsSensible) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/InternalLoadsSensible</sch:assert>
|
58
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:InternalLoadsLatent) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/InternalLoadsLatent</sch:assert>
|
59
|
+
<sch:assert role='ERROR' test='count(h:ManualJInputs/h:NumberofOccupants) <= 1'>Expected 0 or 1 element(s) for xpath: ManualJInputs/NumberofOccupants</sch:assert>
|
60
|
+
</sch:rule>
|
61
|
+
</sch:pattern>
|
62
|
+
|
63
|
+
<sch:pattern>
|
64
|
+
<sch:title>[ShadingControl]</sch:title>
|
65
|
+
<sch:rule context='/h:HPXML/h:SoftwareInfo/h:extension/h:ShadingControl'>
|
66
|
+
<sch:assert role='ERROR' test='count(h:SummerBeginMonth) = 1'>Expected 1 element(s) for xpath: SummerBeginMonth</sch:assert> <!-- integer -->
|
67
|
+
<sch:assert role='ERROR' test='count(h:SummerBeginDayOfMonth) = 1'>Expected 1 element(s) for xpath: SummerBeginDayOfMonth</sch:assert> <!-- integer -->
|
68
|
+
<sch:assert role='ERROR' test='count(h:SummerEndMonth) = 1'>Expected 1 element(s) for xpath: SummerEndMonth</sch:assert> <!-- integer -->
|
69
|
+
<sch:assert role='ERROR' test='count(h:SummerEndDayOfMonth) = 1'>Expected 1 element(s) for xpath: SummerEndDayOfMonth</sch:assert> <!-- integer -->
|
50
70
|
</sch:rule>
|
51
71
|
</sch:pattern>
|
52
72
|
|
@@ -152,6 +172,25 @@
|
|
152
172
|
</sch:rule>
|
153
173
|
</sch:pattern>
|
154
174
|
|
175
|
+
<sch:pattern>
|
176
|
+
<sch:title>[UnavailablePeriod]</sch:title>
|
177
|
+
<sch:rule context='/h:HPXML/h:SoftwareInfo/h:extension/h:UnavailablePeriods/h:UnavailablePeriod'>
|
178
|
+
<sch:assert role='ERROR' test='count(h:ColumnName) = 1'>Expected 1 element(s) for xpath: ColumnName</sch:assert>
|
179
|
+
<sch:assert role='ERROR' test='count(h:BeginMonth) = 1'>Expected 1 element(s) for xpath: BeginMonth</sch:assert>
|
180
|
+
<sch:assert role='ERROR' test='count(h:BeginDayOfMonth) = 1'>Expected 1 element(s) for xpath: BeginDayOfMonth</sch:assert>
|
181
|
+
<sch:assert role='ERROR' test='count(h:BeginHourOfDay) <= 1'>Expected 0 or 1 element(s) for xpath: BeginHourOfDay</sch:assert>
|
182
|
+
<sch:assert role='ERROR' test='number(h:BeginHourOfDay) >= 0 or not(h:BeginHourOfDay)'>Expected BeginHourOfDay to be greater than or equal to 0</sch:assert>
|
183
|
+
<sch:assert role='ERROR' test='number(h:BeginHourOfDay) <= 23 or not(h:BeginHourOfDay)'>Expected BeginHourOfDay to be less than or equal to 23</sch:assert>
|
184
|
+
<sch:assert role='ERROR' test='count(h:EndMonth) = 1'>Expected 1 element(s) for xpath: EndMonth</sch:assert>
|
185
|
+
<sch:assert role='ERROR' test='count(h:EndDayOfMonth) = 1'>Expected 1 element(s) for xpath: EndDayOfMonth</sch:assert>
|
186
|
+
<sch:assert role='ERROR' test='count(h:EndHourOfDay) <= 1'>Expected 0 or 1 element(s) for xpath: EndHourOfDay</sch:assert>
|
187
|
+
<sch:assert role='ERROR' test='number(h:EndHourOfDay) >= 1 or not(h:EndHourOfDay)'>Expected EndHourOfDay to be greater than or equal to 1</sch:assert>
|
188
|
+
<sch:assert role='ERROR' test='number(h:EndHourOfDay) <= 24 or not(h:EndHourOfDay)'>Expected EndHourOfDay to be less than or equal to 24</sch:assert>
|
189
|
+
<sch:assert role='ERROR' test='count(h:NaturalVentilation) <= 1'>Expected 0 or 1 element(s) for xpath: NaturalVentilation</sch:assert>
|
190
|
+
<sch:assert role='ERROR' test='h:NaturalVentilation[text()="regular schedule" or text()="always available" or text()="always unavailable"] or not(h:NaturalVentilation)'>Expected NaturalVentilation to be 'regular schedule' or 'always available' or 'always unavailable'</sch:assert>
|
191
|
+
</sch:rule>
|
192
|
+
</sch:pattern>
|
193
|
+
|
155
194
|
<sch:pattern>
|
156
195
|
<sch:title>[Building]</sch:title>
|
157
196
|
<sch:rule context='/h:HPXML/h:Building'>
|
@@ -185,7 +224,8 @@
|
|
185
224
|
<sch:assert role='ERROR' test='count(h:BuildingSummary/h:BuildingConstruction) = 1'>Expected 1 element(s) for xpath: BuildingSummary/BuildingConstruction</sch:assert> <!-- See [BuildingConstruction] -->
|
186
225
|
<sch:assert role='ERROR' test='count(h:ClimateandRiskZones/h:ClimateZoneIECC) <= 1'>Expected 0 or 1 element(s) for xpath: ClimateandRiskZones/ClimateZoneIECC</sch:assert> <!-- See [ClimateZoneIECC] -->
|
187
226
|
<sch:assert role='ERROR' test='count(h:ClimateandRiskZones/h:WeatherStation) = 1'>Expected 1 element(s) for xpath: ClimateandRiskZones/WeatherStation</sch:assert> <!-- See [WeatherStation] -->
|
188
|
-
<sch:assert role='ERROR' test='count(h:Enclosure/h:AirInfiltration/h:
|
227
|
+
<sch:assert role='ERROR' test='count(h:Enclosure/h:AirInfiltration/h:extension/h:HasFlueOrChimneyInConditionedSpace) <= 1'>Expected 0 or 1 element(s) for xpath: Enclosure/AirInfiltration/extension/HasFlueOrChimneyInConditionedSpace</sch:assert>
|
228
|
+
<sch:assert role='ERROR' test='count(h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:AirLeakage | h:EffectiveLeakageArea]) = 1'>Expected 1 element(s) for xpath: Enclosure/AirInfiltration/AirInfiltrationMeasurement[BuildingAirLeakage/AirLeakage | EffectiveLeakageArea]</sch:assert> <!-- see [AirInfiltrationMeasurement] -->
|
189
229
|
<sch:assert role='ERROR' test='count(h:Enclosure/h:Roofs/h:Roof) >= 0'>Expected 0 or more element(s) for xpath: Enclosure/Roofs/Roof</sch:assert> <!-- see [Roof] -->
|
190
230
|
<sch:assert role='ERROR' test='count(h:Enclosure/h:RimJoists/h:RimJoist) >= 0'>Expected 0 or more element(s) for xpath: Enclosure/RimJoists/RimJoist</sch:assert> <!-- see [RimJoist] -->
|
191
231
|
<sch:assert role='ERROR' test='count(h:Enclosure/h:Walls/h:Wall) >= 1'>Expected 1 or more element(s) for xpath: Enclosure/Walls/Wall</sch:assert> <!-- see [Wall] -->
|
@@ -246,7 +286,9 @@
|
|
246
286
|
<sch:report role='WARN' test='count(h:Appliances/h:Dishwasher) = 0'>No dishwasher specified, the model will not include dishwasher energy use.</sch:report>
|
247
287
|
<sch:report role='WARN' test='count(h:Appliances/h:Refrigerator) = 0'>No refrigerator specified, the model will not include refrigerator energy use.</sch:report>
|
248
288
|
<sch:report role='WARN' test='count(h:Appliances/h:CookingRange) = 0'>No cooking range specified, the model will not include cooking range/oven energy use.</sch:report>
|
249
|
-
<sch:report role='WARN' test='count(h:Lighting) = 0'>No lighting specified, the model will not include lighting energy use.</sch:report>
|
289
|
+
<sch:report role='WARN' test='count(h:Lighting/h:LightingGroup[h:Location="interior"]) = 0'>No interior lighting specified, the model will not include interior lighting energy use.</sch:report>
|
290
|
+
<sch:report role='WARN' test='count(h:Lighting/h:LightingGroup[h:Location="exterior"]) = 0'>No exterior lighting specified, the model will not include exterior lighting energy use.</sch:report>
|
291
|
+
<sch:report role='WARN' test='count(h:Lighting/h:LightingGroup[h:Location="garage"]) = 0 and count(h:Enclosure/h:Walls/h:Wall[h:InteriorAdjacentTo="garage" or h:ExteriorAdjacentTo="garage"]) > 0'>No garage lighting specified, the model will not include garage lighting energy use.</sch:report>
|
250
292
|
</sch:rule>
|
251
293
|
</sch:pattern>
|
252
294
|
|
@@ -287,17 +329,10 @@
|
|
287
329
|
</sch:rule>
|
288
330
|
</sch:pattern>
|
289
331
|
|
290
|
-
<sch:pattern>
|
291
|
-
<sch:title>[OccupancyCalculationType=Operational]</sch:title>
|
292
|
-
<sch:rule context='/h:HPXML/h:SoftwareInfo/h:extension/h:OccupancyCalculationType[text()="operational"]'>
|
293
|
-
<sch:assert role='ERROR' test='count(../../../h:Building/h:BuildingDetails/h:BuildingSummary/h:BuildingOccupancy/h:NumberofResidents) = 1'>Expected 1 element(s) for xpath: NumberofResidents</sch:assert>
|
294
|
-
</sch:rule>
|
295
|
-
</sch:pattern>
|
296
|
-
|
297
332
|
<sch:pattern>
|
298
333
|
<sch:title>[BuildingConstruction]</sch:title>
|
299
334
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:BuildingSummary/h:BuildingConstruction'>
|
300
|
-
<sch:assert role='ERROR' test='count(h:ResidentialFacilityType) = 1'>Expected 1 element(s) for xpath: ResidentialFacilityType</sch:assert>
|
335
|
+
<sch:assert role='ERROR' test='count(h:ResidentialFacilityType) = 1'>Expected 1 element(s) for xpath: ResidentialFacilityType</sch:assert> <!-- See [BuildingType=SFAorMF] -->
|
301
336
|
<sch:assert role='ERROR' test='h:ResidentialFacilityType[text()="single-family detached" or text()="single-family attached" or text()="apartment unit" or text()="manufactured home"] or not(h:ResidentialFacilityType)'>Expected ResidentialFacilityType to be 'single-family detached' or 'single-family attached' or 'apartment unit' or 'manufactured home'</sch:assert>
|
302
337
|
<sch:assert role='ERROR' test='count(h:NumberofConditionedFloors) = 1'>Expected 1 element(s) for xpath: NumberofConditionedFloors</sch:assert>
|
303
338
|
<sch:assert role='ERROR' test='count(h:NumberofConditionedFloorsAboveGrade) = 1'>Expected 1 element(s) for xpath: NumberofConditionedFloorsAboveGrade</sch:assert>
|
@@ -307,7 +342,16 @@
|
|
307
342
|
<sch:assert role='ERROR' test='count(h:ConditionedFloorArea) = 1'>Expected 1 element(s) for xpath: ConditionedFloorArea</sch:assert>
|
308
343
|
<sch:assert role='ERROR' test='number(h:ConditionedFloorArea) >= (sum(../../h:Enclosure/h:Slabs/h:Slab[h:InteriorAdjacentTo="living space" or h:InteriorAdjacentTo="basement - conditioned"]/h:Area) + sum(../../h:Enclosure/h:Floors/h:Floor[h:InteriorAdjacentTo="living space" and not(h:ExteriorAdjacentTo="attic - vented" or h:ExteriorAdjacentTo="attic - unvented" or ((h:ExteriorAdjacentTo="other housing unit" or h:ExteriorAdjacentTo="other heated space" or h:ExteriorAdjacentTo="other multifamily buffer space" or h:ExteriorAdjacentTo="other non-freezing space") and h:FloorOrCeiling="ceiling"))]/h:Area) - 1) or not(h:ConditionedFloorArea)'>Expected ConditionedFloorArea to be greater than or equal to the sum of conditioned slab/floor areas.</sch:assert>
|
309
344
|
<sch:assert role='ERROR' test='count(h:ConditionedBuildingVolume) + count(h:AverageCeilingHeight) >= 0'>Expected 0 or more element(s) for xpath: ConditionedBuildingVolume | AverageCeilingHeight</sch:assert>
|
310
|
-
|
345
|
+
<!-- Deprecated old HasFlueOrChimney input; see https://github.com/NREL/OpenStudio-HPXML/issues/1350 -->
|
346
|
+
<sch:assert role='ERROR' test='count(h:extension/h:HasFlueOrChimney) = 0'>extension/HasFlueOrChimney has been replaced by /HPXML/Building/BuildingDetails/Enclosure/AirInfiltration/extension/HasFlueOrChimneyInConditionedSpace</sch:assert>
|
347
|
+
</sch:rule>
|
348
|
+
</sch:pattern>
|
349
|
+
|
350
|
+
<sch:pattern>
|
351
|
+
<sch:title>[BuildingType=SFAorMF]</sch:title>
|
352
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:BuildingSummary/h:BuildingConstruction/h:ResidentialFacilityType[text()="single-family attached" or text()="apartment unit"]'>
|
353
|
+
<!-- Warnings -->
|
354
|
+
<sch:report role='WARN' test='count(//h:ExteriorAdjacentTo[text()="other housing unit" or text()="other heated space" or text()="other multifamily buffer space" or text()="other non-freezing space"]) = 0'>ResidentialFacilityType is single-family attached or apartment unit, but no attached surfaces were found. This may result in erroneous results (e.g., for infiltration).</sch:report>
|
311
355
|
</sch:rule>
|
312
356
|
</sch:pattern>
|
313
357
|
|
@@ -327,10 +371,9 @@
|
|
327
371
|
</sch:pattern>
|
328
372
|
|
329
373
|
<sch:pattern>
|
330
|
-
<sch:title>[
|
331
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:
|
332
|
-
<sch:assert role='ERROR' test='
|
333
|
-
<sch:assert role='ERROR' test='count(h:BuildingAirLeakage/h:AirLeakage) = 1'>Expected 1 element(s) for xpath: BuildingAirLeakage/AirLeakage</sch:assert>
|
374
|
+
<sch:title>[AirInfiltrationMeasurement]</sch:title>
|
375
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:AirLeakage | h:EffectiveLeakageArea]'>
|
376
|
+
<sch:assert role='ERROR' test='h:BuildingAirLeakage/h:UnitofMeasure[text()="ACH" or text()="ACHnatural" or text()="CFM" or text()="CFMnatural"] or not(h:BuildingAirLeakage/h:UnitofMeasure)'>Expected BuildingAirLeakage/UnitofMeasure to be 'ACH' or 'ACHnatural' or 'CFM' or 'CFMnatural'</sch:assert>
|
334
377
|
<sch:assert role='ERROR' test='count(h:InfiltrationVolume) <= 1'>Expected 0 or 1 element(s) for xpath: InfiltrationVolume</sch:assert>
|
335
378
|
<sch:assert role='ERROR' test='count(h:InfiltrationHeight) <= 1'>Expected 0 or 1 element(s) for xpath: InfiltrationHeight</sch:assert>
|
336
379
|
<sch:assert role='ERROR' test='number(h:InfiltrationHeight) > 0 or not(h:InfiltrationHeight)'>Expected InfiltrationHeight to be greater than 0</sch:assert>
|
@@ -338,13 +381,19 @@
|
|
338
381
|
</sch:pattern>
|
339
382
|
|
340
383
|
<sch:pattern>
|
341
|
-
<sch:title>[
|
342
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:
|
343
|
-
<sch:assert role='ERROR' test='count(h:
|
344
|
-
<sch:assert role='ERROR' test='
|
345
|
-
<sch:assert role='ERROR' test='count(h:
|
346
|
-
<sch:assert role='ERROR' test='
|
347
|
-
|
384
|
+
<sch:title>[AirInfiltrationMeasurement=SFAorMultifamily]</sch:title>
|
385
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:BuildingSummary/h:BuildingConstruction/h:ResidentialFacilityType[text()="single-family attached" or text()="apartment unit"]]/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:AirLeakage | h:EffectiveLeakageArea]'>
|
386
|
+
<sch:assert role='ERROR' test='count(h:TypeOfInfiltrationLeakage) = 1'>Expected 1 element(s) for xpath: TypeOfInfiltrationLeakage</sch:assert>
|
387
|
+
<sch:assert role='ERROR' test='h:TypeOfInfiltrationLeakage[text()="unit total" or text()="unit exterior only"] or not(h:TypeOfInfiltrationLeakage)'>Expected TypeOfInfiltrationLeakage to be 'unit total' or 'unit exterior only'</sch:assert>
|
388
|
+
<sch:assert role='ERROR' test='count(h:extension/h:Aext) <= 1'>Expected 0 or 1 element(s) for xpath: extension/Aext</sch:assert>
|
389
|
+
<sch:assert role='ERROR' test='number(h:extension/h:Aext) > 0 or not(h:extension/h:Aext)'>Expected extension/Aext to be greater than 0</sch:assert>
|
390
|
+
</sch:rule>
|
391
|
+
</sch:pattern>
|
392
|
+
|
393
|
+
<sch:pattern>
|
394
|
+
<sch:title>[AirInfiltrationMeasurement=ACHorCFM]</sch:title>
|
395
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Enclosure/h:AirInfiltration/h:AirInfiltrationMeasurement[h:BuildingAirLeakage/h:UnitofMeasure[text()="ACH" or text()="CFM"]]'>
|
396
|
+
<sch:assert role='ERROR' test='count(h:HousePressure) = 1'>Expected 1 element(s) for xpath: HousePressure</sch:assert>
|
348
397
|
</sch:rule>
|
349
398
|
</sch:pattern>
|
350
399
|
|
@@ -654,6 +703,8 @@
|
|
654
703
|
<sch:title>[HeatingSystem]</sch:title>
|
655
704
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem'>
|
656
705
|
<sch:assert role='ERROR' test='count(../../h:HVACControl) = 1'>Expected 1 element(s) for xpath: ../../HVACControl</sch:assert> <!-- See [HVACControl=Heating] -->
|
706
|
+
<sch:assert role='ERROR' test='count(h:UnitLocation) <=1'>Expected 0 or 1 element(s) for xpath: UnitLocation</sch:assert>
|
707
|
+
<sch:assert role='ERROR' test='h:UnitLocation[text()="living space" or text()="basement - unconditioned" or text()="basement - conditioned" or text()="attic - unvented" or text()="attic - vented" or text()="garage" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="crawlspace - conditioned" or text()="other exterior" or text()="other housing unit" or text()="other heated space" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="roof deck" or text()="unconditioned space"] or not(h:UnitLocation)'>Expected UnitLocation to be 'living space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space'</sch:assert>
|
657
708
|
<sch:assert role='ERROR' test='count(h:HeatingSystemType[h:ElectricResistance | h:Furnace | h:WallFurnace | h:FloorFurnace | h:Boiler | h:Stove | h:PortableHeater | h:FixedHeater | h:Fireplace]) = 1'>Expected 1 element(s) for xpath: HeatingSystemType[ElectricResistance | Furnace | WallFurnace | FloorFurnace | Boiler | Stove | PortableHeater | FixedHeater | Fireplace]</sch:assert> <!-- See [HeatingSystemType=Resistance] or [HeatingSystemType=Furnace] or [HeatingSystemType=WallFurnace] or [HeatingSystemType=FloorFurnace] or [HeatingSystemType=Boiler] or [HeatingSystemType=Stove] or [HeatingSystemType=PortableHeater] or [HeatingSystemType=FixedHeater] or [HeatingSystemType=Fireplace] -->
|
658
709
|
<sch:assert role='ERROR' test='count(h:FractionHeatLoadServed) = 1 or count(../h:HeatPump/h:BackupSystem) >= 1'>Expected 1 element(s) for xpath: FractionHeatLoadServed</sch:assert> <!-- See [HeatingSystem=HeatPumpBackup] -->
|
659
710
|
</sch:rule>
|
@@ -679,6 +730,7 @@
|
|
679
730
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:Furnace]'>
|
680
731
|
<sch:assert role='ERROR' test='count(../../h:HVACDistribution/h:DistributionSystemType/h:AirDistribution/h:AirDistributionType[text()="regular velocity" or text()="gravity"]) + count(../../h:HVACDistribution/h:DistributionSystemType/h:Other[text()="DSE"]) >= 1'>Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity" or text()="gravity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"]</sch:assert> <!-- See [HVACDistribution] -->
|
681
732
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 1'>Expected 1 element(s) for xpath: DistributionSystem</sch:assert>
|
733
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:Furnace/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/Furnace/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
682
734
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
683
735
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
684
736
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
@@ -686,11 +738,11 @@
|
|
686
738
|
<sch:assert role='ERROR' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) <= 1 or not(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value)'>Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1</sch:assert>
|
687
739
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
688
740
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
689
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
741
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
690
742
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
691
743
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
692
744
|
<!-- Warnings -->
|
693
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.
|
745
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.5'>AFUE should typically be greater than or equal to 0.5.</sch:report>
|
694
746
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
695
747
|
</sch:rule>
|
696
748
|
</sch:pattern>
|
@@ -699,6 +751,7 @@
|
|
699
751
|
<sch:title>[HeatingSystemType=WallFurnace]</sch:title>
|
700
752
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:WallFurnace]'>
|
701
753
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 0'>Expected 0 element(s) for xpath: DistributionSystem</sch:assert>
|
754
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:WallFurnace/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/WallFurnace/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
702
755
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
703
756
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
704
757
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
@@ -707,7 +760,7 @@
|
|
707
760
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts</sch:assert>
|
708
761
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWatts) >= 0 or not(h:extension/h:FanPowerWatts)'>Expected extension/FanPowerWatts to be greater than or equal to 0</sch:assert>
|
709
762
|
<!-- Warnings -->
|
710
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.
|
763
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.5'>AFUE should typically be greater than or equal to 0.5.</sch:report>
|
711
764
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
712
765
|
</sch:rule>
|
713
766
|
</sch:pattern>
|
@@ -716,6 +769,7 @@
|
|
716
769
|
<sch:title>[HeatingSystemType=FloorFurnace]</sch:title>
|
717
770
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:FloorFurnace]'>
|
718
771
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 0'>Expected 0 element(s) for xpath: DistributionSystem</sch:assert>
|
772
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:FloorFurnace/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/FloorFurnace/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
719
773
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
720
774
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
721
775
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
@@ -724,7 +778,7 @@
|
|
724
778
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts</sch:assert>
|
725
779
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWatts) >= 0 or not(h:extension/h:FanPowerWatts)'>Expected extension/FanPowerWatts to be greater than or equal to 0</sch:assert>
|
726
780
|
<!-- Warnings -->
|
727
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.
|
781
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.5'>AFUE should typically be greater than or equal to 0.5.</sch:report>
|
728
782
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
729
783
|
</sch:rule>
|
730
784
|
</sch:pattern>
|
@@ -734,12 +788,13 @@
|
|
734
788
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:Boiler]'>
|
735
789
|
<sch:assert role='ERROR' test='count(h:IsSharedSystem) <= 1'>Expected 0 or 1 element(s) for xpath: IsSharedSystem</sch:assert> <!-- See [HeatingSystemType=InUnitBoiler] or [HeatingSystemType=SharedBoiler] -->
|
736
790
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 1'>Expected 1 element(s) for xpath: DistributionSystem</sch:assert>
|
791
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:Boiler/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/Boiler/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
737
792
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
738
793
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
739
794
|
<sch:assert role='ERROR' test='count(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) = 1'>Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="AFUE"]/Value</sch:assert>
|
740
795
|
<sch:assert role='ERROR' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) <= 1 or not(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value)'>Expected AnnualHeatingEfficiency[Units="AFUE"]/Value to be less than or equal to 1</sch:assert>
|
741
796
|
<!-- Warnings -->
|
742
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.
|
797
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.5'>AFUE should typically be greater than or equal to 0.5.</sch:report>
|
743
798
|
</sch:rule>
|
744
799
|
</sch:pattern>
|
745
800
|
|
@@ -786,6 +841,7 @@
|
|
786
841
|
<sch:title>[HeatingSystemType=Stove]</sch:title>
|
787
842
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:Stove]'>
|
788
843
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 0'>Expected 0 element(s) for xpath: DistributionSystem</sch:assert>
|
844
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:Stove/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/Stove/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
789
845
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
790
846
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
791
847
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
@@ -794,7 +850,7 @@
|
|
794
850
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts</sch:assert>
|
795
851
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWatts) >= 0 or not(h:extension/h:FanPowerWatts)'>Expected extension/FanPowerWatts to be greater than or equal to 0</sch:assert>
|
796
852
|
<!-- Warnings -->
|
797
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.
|
853
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.5'>Percent efficiency should typically be greater than or equal to 0.5.</sch:report>
|
798
854
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
799
855
|
</sch:rule>
|
800
856
|
</sch:pattern>
|
@@ -811,7 +867,7 @@
|
|
811
867
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts</sch:assert>
|
812
868
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWatts) >= 0 or not(h:extension/h:FanPowerWatts)'>Expected extension/FanPowerWatts to be greater than or equal to 0</sch:assert>
|
813
869
|
<!-- Warnings -->
|
814
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.
|
870
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.5'>Percent efficiency should typically be greater than or equal to 0.5.</sch:report>
|
815
871
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
816
872
|
</sch:rule>
|
817
873
|
</sch:pattern>
|
@@ -828,7 +884,7 @@
|
|
828
884
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWatts</sch:assert>
|
829
885
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWatts) >= 0 or not(h:extension/h:FanPowerWatts)'>Expected extension/FanPowerWatts to be greater than or equal to 0</sch:assert>
|
830
886
|
<!-- Warnings -->
|
831
|
-
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.
|
887
|
+
<sch:report role='WARN' test='number(h:AnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.5'>Percent efficiency should typically be greater than or equal to 0.5.</sch:report>
|
832
888
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
833
889
|
</sch:rule>
|
834
890
|
</sch:pattern>
|
@@ -837,6 +893,7 @@
|
|
837
893
|
<sch:title>[HeatingSystemType=Fireplace]</sch:title>
|
838
894
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem[h:HeatingSystemType/h:Fireplace]'>
|
839
895
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 0'>Expected 0 element(s) for xpath: DistributionSystem</sch:assert>
|
896
|
+
<sch:assert role='ERROR' test='count(h:HeatingSystemType/h:Fireplace/h:PilotLight) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingSystemType/Fireplace/PilotLight</sch:assert> <!-- See [HeatingSystem=HasPilotLight] -->
|
840
897
|
<sch:assert role='ERROR' test='count(h:HeatingSystemFuel) = 1'>Expected 1 element(s) for xpath: HeatingSystemFuel</sch:assert>
|
841
898
|
<sch:assert role='ERROR' test='h:HeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:HeatingSystemFuel)'>Expected HeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
842
899
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
@@ -848,10 +905,20 @@
|
|
848
905
|
</sch:rule>
|
849
906
|
</sch:pattern>
|
850
907
|
|
908
|
+
<sch:pattern>
|
909
|
+
<sch:title>[HeatingSystem=HasPilotLight]</sch:title>
|
910
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatingSystem/h:HeatingSystemType/*[h:PilotLight="true"]'>
|
911
|
+
<sch:assert role='ERROR' test='count(../../h:HeatingSystemFuel[text()!="electricity"]) = 1'>Expected 1 element(s) for xpath: ../../HeatingSystemFuel[text()!="electricity"]</sch:assert>
|
912
|
+
<sch:assert role='ERROR' test='count(h:extension/h:PilotLightBtuh) <= 1'>Expected 0 or 1 element(s) for xpath: extension/PilotLightBtuh</sch:assert>
|
913
|
+
</sch:rule>
|
914
|
+
</sch:pattern>
|
915
|
+
|
851
916
|
<sch:pattern>
|
852
917
|
<sch:title>[CoolingSystem]</sch:title>
|
853
918
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:CoolingSystem'>
|
854
919
|
<sch:assert role='ERROR' test='count(../../h:HVACControl) = 1'>Expected 1 element(s) for xpath: ../../HVACControl</sch:assert> <!-- See [HVACControl=Cooling] -->
|
920
|
+
<sch:assert role='ERROR' test='count(h:UnitLocation) <=1'>Expected 0 or 1 element(s) for xpath: UnitLocation</sch:assert>
|
921
|
+
<sch:assert role='ERROR' test='h:UnitLocation[text()="living space" or text()="basement - unconditioned" or text()="basement - conditioned" or text()="attic - unvented" or text()="attic - vented" or text()="garage" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="crawlspace - conditioned" or text()="other exterior" or text()="other housing unit" or text()="other heated space" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="roof deck" or text()="unconditioned space"] or not(h:UnitLocation)'>Expected UnitLocation to be 'living space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space'</sch:assert>
|
855
922
|
<sch:assert role='ERROR' test='count(h:CoolingSystemType) = 1'>Expected 1 element(s) for xpath: CoolingSystemType</sch:assert> <!-- See [CoolingSystemType=CentralAC] or [CoolingSystemType=PTACorRoomAC] or [CoolingSystemType=EvapCooler] or [CoolingSystemType=MiniSplitAC] or [CoolingSystemType=SharedChiller] or [CoolingSystemType=SharedCoolingTowerWLHP] -->
|
856
923
|
<sch:assert role='ERROR' test='h:CoolingSystemType[text()="central air conditioner" or text()="room air conditioner" or text()="evaporative cooler" or text()="mini-split" or text()="chiller" or text()="cooling tower" or text()="packaged terminal air conditioner"] or not(h:CoolingSystemType)'>Expected CoolingSystemType to be 'central air conditioner' or 'room air conditioner' or 'evaporative cooler' or 'mini-split' or 'chiller' or 'cooling tower' or 'packaged terminal air conditioner'</sch:assert>
|
857
924
|
<sch:assert role='ERROR' test='count(h:CoolingSystemFuel) = 1'>Expected 1 element(s) for xpath: CoolingSystemFuel</sch:assert>
|
@@ -873,12 +940,14 @@
|
|
873
940
|
<sch:assert role='ERROR' test='count(h:IntegratedHeatingSystemFuel) = 0'>Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel</sch:assert>
|
874
941
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
875
942
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
876
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
943
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
877
944
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
878
945
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
879
946
|
<sch:assert role='ERROR' test='count(h:extension/h:ChargeDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ChargeDefectRatio</sch:assert>
|
880
947
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) >= -0.9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be greater than or equal to -0.9</sch:assert>
|
881
948
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) <= 9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be less than or equal to 9</sch:assert>
|
949
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
950
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
882
951
|
<!-- Warnings -->
|
883
952
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER"]/h:Value) < 8'>SEER should typically be greater than or equal to 8.</sch:report>
|
884
953
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER2"]/h:Value) < 8'>SEER2 should typically be greater than or equal to 8.</sch:report>
|
@@ -895,6 +964,8 @@
|
|
895
964
|
<sch:assert role='ERROR' test='count(h:SensibleHeatFraction) <= 1'>Expected 0 or 1 element(s) for xpath: SensibleHeatFraction</sch:assert>
|
896
965
|
<sch:assert role='ERROR' test='count(h:IntegratedHeatingSystemFuel) <= 1'>Expected 0 or 1 element(s) for xpath: IntegratedHeatingSystemFuel</sch:assert>
|
897
966
|
<sch:assert role='ERROR' test='h:IntegratedHeatingSystemFuel[text()="electricity" or text()="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()="diesel" or text()="propane" or text()="kerosene" or text()="coal" or text()="coke" or text()="bituminous coal" or text()="wood" or text()="wood pellets"] or not(h:IntegratedHeatingSystemFuel)'>Expected IntegratedHeatingSystemFuel to be 'electricity' or 'natural gas' or 'fuel oil' or 'fuel oil 1' or 'fuel oil 2' or 'fuel oil 4' or 'fuel oil 5/6' or 'diesel' or 'propane' or 'kerosene' or 'coal' or 'coke' or 'bituminous coal' or 'wood' or 'wood pellets'</sch:assert>
|
967
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
968
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
898
969
|
<!-- Warnings -->
|
899
970
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="EER"]/h:Value) < 8'>EER should typically be greater than or equal to 8.</sch:report>
|
900
971
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="CEER"]/h:Value) < 8'>CEER should typically be greater than or equal to 8.</sch:report>
|
@@ -910,7 +981,7 @@
|
|
910
981
|
<sch:assert role='ERROR' test='count(h:IntegratedHeatingSystemAnnualEfficiency[h:Units="Percent"]) = 1'>Expected 1 element(s) for xpath: IntegratedHeatingSystemAnnualEfficiency[Units="Percent"]</sch:assert>
|
911
982
|
<sch:assert role='ERROR' test='number(h:IntegratedHeatingSystemAnnualEfficiency[h:Units="Percent"]/h:Value) <= 1 or not(h:IntegratedHeatingSystemAnnualEfficiency[h:Units="Percent"]/h:Value)'>Expected IntegratedHeatingSystemAnnualEfficiency[Units="Percent"]/Value to be less than or equal to 1</sch:assert>
|
912
983
|
<!-- Warnings -->
|
913
|
-
<sch:report role='WARN' test='number(h:IntegratedHeatingSystemAnnualEfficiency[h:Units="Percent"]/h:Value) < 0.
|
984
|
+
<sch:report role='WARN' test='number(h:IntegratedHeatingSystemAnnualEfficiency[h:Units="Percent"]/h:Value) < 0.5'>Percent efficiency should typically be greater than or equal to 0.5.</sch:report>
|
914
985
|
<sch:report role='WARN' test='number(h:IntegratedHeatingSystemCapacity) <= 1000 and number(h:IntegratedHeatingSystemCapacity) > 0 and h:IntegratedHeatingSystemCapacity'>Integrated Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
915
986
|
</sch:rule>
|
916
987
|
</sch:pattern>
|
@@ -938,12 +1009,14 @@
|
|
938
1009
|
<sch:assert role='ERROR' test='count(h:IntegratedHeatingSystemFuel) = 0'>Expected 0 element(s) for xpath: IntegratedHeatingSystemFuel</sch:assert>
|
939
1010
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
940
1011
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
941
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
1012
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
942
1013
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
943
1014
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
944
1015
|
<sch:assert role='ERROR' test='count(h:extension/h:ChargeDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ChargeDefectRatio</sch:assert>
|
945
1016
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) >= -0.9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be greater than or equal to -0.9</sch:assert>
|
946
1017
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) <= 9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be less than or equal to 9</sch:assert>
|
1018
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
1019
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
947
1020
|
<!-- Warnings -->
|
948
1021
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER"]/h:Value) < 8'>SEER should typically be greater than or equal to 8.</sch:report>
|
949
1022
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER2"]/h:Value) < 8'>SEER2 should typically be greater than or equal to 8.</sch:report>
|
@@ -1007,11 +1080,13 @@
|
|
1007
1080
|
<sch:title>[HeatPump]</sch:title>
|
1008
1081
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump'>
|
1009
1082
|
<sch:assert role='ERROR' test='count(../../h:HVACControl) = 1'>Expected 1 element(s) for xpath: ../../HVACControl</sch:assert> <!-- See [HVACControl=Heating] and/or [HVACControl=Cooling] -->
|
1083
|
+
<sch:assert role='ERROR' test='count(h:UnitLocation) <=1'>Expected 0 or 1 element(s) for xpath: UnitLocation</sch:assert>
|
1084
|
+
<sch:assert role='ERROR' test='h:UnitLocation[text()="living space" or text()="basement - unconditioned" or text()="basement - conditioned" or text()="attic - unvented" or text()="attic - vented" or text()="garage" or text()="crawlspace - unvented" or text()="crawlspace - vented" or text()="crawlspace - conditioned" or text()="other exterior" or text()="other housing unit" or text()="other heated space" or text()="other multifamily buffer space" or text()="other non-freezing space" or text()="roof deck" or text()="unconditioned space"] or not(h:UnitLocation)'>Expected UnitLocation to be 'living space' or 'basement - unconditioned' or 'basement - conditioned' or 'attic - unvented' or 'attic - vented' or 'garage' or 'crawlspace - unvented' or 'crawlspace - vented' or 'crawlspace - conditioned' or 'other exterior' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space' or 'roof deck' or 'unconditioned space'</sch:assert>
|
1010
1085
|
<sch:assert role='ERROR' test='count(h:HeatPumpType) = 1'>Expected 1 element(s) for xpath: HeatPumpType</sch:assert> <!-- See [HeatPumpType=AirSource] or [HeatPumpType=MiniSplit] or [HeatPumpType=GroundSource] or [HeatPumpType=WaterLoop] or [HeatPumpType=PTHPorRoomACwithReverseCycle] -->
|
1011
1086
|
<sch:assert role='ERROR' test='h:HeatPumpType[text()="air-to-air" or text()="mini-split" or text()="ground-to-air" or text()="water-loop-to-air" or text()="packaged terminal heat pump" or text()="room air conditioner with reverse cycle"] or not(h:HeatPumpType)'>Expected HeatPumpType to be 'air-to-air' or 'mini-split' or 'ground-to-air' or 'water-loop-to-air' or 'packaged terminal heat pump' or 'room air conditioner with reverse cycle'</sch:assert>
|
1012
1087
|
<sch:assert role='ERROR' test='count(h:HeatPumpFuel) = 1'>Expected 1 element(s) for xpath: HeatPumpFuel</sch:assert>
|
1013
1088
|
<sch:assert role='ERROR' test='h:HeatPumpFuel[text()="electricity"] or not(h:HeatPumpFuel)'>Expected HeatPumpFuel to be 'electricity'</sch:assert>
|
1014
|
-
<sch:assert role='ERROR' test='count(h:BackupType) <= 1'>Expected 0 or 1 element(s) for xpath: BackupType</sch:assert> <!-- See [HeatPumpBackup=Integrated] or [HeatPumpBackup=Separate] -->
|
1089
|
+
<sch:assert role='ERROR' test='count(h:BackupType) <= 1'>Expected 0 or 1 element(s) for xpath: BackupType</sch:assert> <!-- See [HeatPumpBackup] or [HeatPumpBackup=Integrated] or [HeatPumpBackup=Separate] -->
|
1015
1090
|
<sch:assert role='ERROR' test='h:BackupType[text()="integrated" or text()="separate"] or not(h:BackupType)'>Expected BackupType to be 'integrated' or 'separate'</sch:assert>
|
1016
1091
|
</sch:rule>
|
1017
1092
|
</sch:pattern>
|
@@ -1021,12 +1096,13 @@
|
|
1021
1096
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump[h:HeatPumpType="air-to-air"]'>
|
1022
1097
|
<sch:assert role='ERROR' test='count(../../h:HVACDistribution/h:DistributionSystemType/h:AirDistribution/h:AirDistributionType[text()="regular velocity"]) + count(../../h:HVACDistribution/h:DistributionSystemType/h:Other[text()="DSE"]) >= 1'>Expected 1 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"]</sch:assert> <!-- See [HVACDistribution] -->
|
1023
1098
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 1'>Expected 1 element(s) for xpath: DistributionSystem</sch:assert>
|
1024
|
-
<sch:assert role='ERROR' test='count(h:CompressorType) <= 1'>Expected 0 or 1 element(s) for xpath: CompressorType</sch:assert>
|
1025
|
-
<sch:assert role='ERROR' test='h:CompressorType[text()="single stage" or text()="two stage" or text()="variable speed"] or not(h:CompressorType)'>Expected CompressorType to be 'single stage' or 'two stage' or 'variable speed'</sch:assert>
|
1026
1099
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
1027
|
-
<sch:assert role='ERROR' test='count(h:HeatingCapacity17F) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity17F</sch:assert>
|
1100
|
+
<sch:assert role='ERROR' test='count(h:extension/h:HeatingCapacityRetention) + count(h:HeatingCapacity17F) <= 1'>Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F</sch:assert> <!-- See [HeatPumpCapacityRetention] -->
|
1028
1101
|
<sch:assert role='ERROR' test='number(h:HeatingCapacity17F) <= number(h:HeatingCapacity) or not(h:HeatingCapacity17F) or not(h:HeatingCapacity)'>Expected HeatingCapacity17F to be less than or equal to HeatingCapacity</sch:assert>
|
1029
1102
|
<sch:assert role='ERROR' test='count(h:CoolingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingCapacity</sch:assert>
|
1103
|
+
<sch:assert role='ERROR' test='count(h:CompressorType) <= 1'>Expected 0 or 1 element(s) for xpath: CompressorType</sch:assert>
|
1104
|
+
<sch:assert role='ERROR' test='h:CompressorType[text()="single stage" or text()="two stage" or text()="variable speed"] or not(h:CompressorType)'>Expected CompressorType to be 'single stage' or 'two stage' or 'variable speed'</sch:assert>
|
1105
|
+
<sch:assert role='ERROR' test='count(h:CompressorLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: CompressorLockoutTemperature</sch:assert>
|
1030
1106
|
<sch:assert role='ERROR' test='count(h:CoolingSensibleHeatFraction) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction</sch:assert>
|
1031
1107
|
<sch:assert role='ERROR' test='count(h:FractionHeatLoadServed) = 1'>Expected 1 element(s) for xpath: FractionHeatLoadServed</sch:assert>
|
1032
1108
|
<sch:assert role='ERROR' test='count(h:FractionCoolLoadServed) = 1'>Expected 1 element(s) for xpath: FractionCoolLoadServed</sch:assert>
|
@@ -1034,12 +1110,14 @@
|
|
1034
1110
|
<sch:assert role='ERROR' test='count(h:AnnualHeatingEfficiency[h:Units="HSPF" or h:Units="HSPF2"]/h:Value) = 1'>Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="HSPF" or Units="HSPF2"]/Value</sch:assert>
|
1035
1111
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
1036
1112
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
1037
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
1113
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
1038
1114
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
1039
1115
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
1040
1116
|
<sch:assert role='ERROR' test='count(h:extension/h:ChargeDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ChargeDefectRatio</sch:assert>
|
1041
1117
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) >= -0.9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be greater than or equal to -0.9</sch:assert>
|
1042
1118
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) <= 9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be less than or equal to 9</sch:assert>
|
1119
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
1120
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
1043
1121
|
<!-- Warnings -->
|
1044
1122
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER"]/h:Value) < 8'>SEER should typically be greater than or equal to 8.</sch:report>
|
1045
1123
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER2"]/h:Value) < 8'>SEER2 should typically be greater than or equal to 8.</sch:report>
|
@@ -1056,9 +1134,10 @@
|
|
1056
1134
|
<sch:assert role='ERROR' test='count(../../h:HVACDistribution/h:DistributionSystemType/h:AirDistribution/h:AirDistributionType[text()="regular velocity"]) + count(../../h:HVACDistribution/h:DistributionSystemType/h:Other[text()="DSE"]) >= 0'>Expected 0 or more element(s) for xpath: ../../HVACDistribution/DistributionSystemType/AirDistribution/AirDistributionType[text()="regular velocity"] | ../../HVACDistribution/DistributionSystemType/Other[text()="DSE"]</sch:assert> <!-- See [HVACDistribution] -->
|
1057
1135
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) <= 1'>Expected 0 or 1 element(s) for xpath: DistributionSystem</sch:assert>
|
1058
1136
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
1059
|
-
<sch:assert role='ERROR' test='count(h:HeatingCapacity17F) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity17F</sch:assert>
|
1137
|
+
<sch:assert role='ERROR' test='count(h:extension/h:HeatingCapacityRetention) + count(h:HeatingCapacity17F) <= 1'>Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F</sch:assert> <!-- See [HeatPumpCapacityRetention] -->
|
1060
1138
|
<sch:assert role='ERROR' test='number(h:HeatingCapacity17F) <= number(h:HeatingCapacity) or not(h:HeatingCapacity17F) or not(h:HeatingCapacity)'>Expected HeatingCapacity17F to be less than or equal to HeatingCapacity</sch:assert>
|
1061
1139
|
<sch:assert role='ERROR' test='count(h:CoolingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingCapacity</sch:assert>
|
1140
|
+
<sch:assert role='ERROR' test='count(h:CompressorLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: CompressorLockoutTemperature</sch:assert>
|
1062
1141
|
<sch:assert role='ERROR' test='count(h:CoolingSensibleHeatFraction) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction</sch:assert>
|
1063
1142
|
<sch:assert role='ERROR' test='count(h:FractionHeatLoadServed) = 1'>Expected 1 element(s) for xpath: FractionHeatLoadServed</sch:assert>
|
1064
1143
|
<sch:assert role='ERROR' test='count(h:FractionCoolLoadServed) = 1'>Expected 1 element(s) for xpath: FractionCoolLoadServed</sch:assert>
|
@@ -1066,12 +1145,14 @@
|
|
1066
1145
|
<sch:assert role='ERROR' test='count(h:AnnualHeatingEfficiency[h:Units="HSPF" or h:Units="HSPF2"]/h:Value) = 1'>Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="HSPF" or Units="HSPF2"]/Value</sch:assert>
|
1067
1146
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
1068
1147
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
1069
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
1148
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
1070
1149
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
1071
1150
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
1072
1151
|
<sch:assert role='ERROR' test='count(h:extension/h:ChargeDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ChargeDefectRatio</sch:assert>
|
1073
1152
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) >= -0.9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be greater than or equal to -0.9</sch:assert>
|
1074
1153
|
<sch:assert role='ERROR' test='number(h:extension/h:ChargeDefectRatio) <= 9 or not(h:extension/h:ChargeDefectRatio)'>Expected extension/ChargeDefectRatio to be less than or equal to 9</sch:assert>
|
1154
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
1155
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
1075
1156
|
<!-- Warnings -->
|
1076
1157
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER"]/h:Value) < 8'>SEER should typically be greater than or equal to 8.</sch:report>
|
1077
1158
|
<sch:report role='WARN' test='number(h:AnnualCoolingEfficiency[h:Units="SEER2"]/h:Value) < 8'>SEER2 should typically be greater than or equal to 8.</sch:report>
|
@@ -1100,7 +1181,7 @@
|
|
1100
1181
|
<sch:assert role='ERROR' test='number(h:extension/h:PumpPowerWattsPerTon) >= 0 or not(h:extension/h:PumpPowerWattsPerTon)'>Expected extension/PumpPowerWattsPerTon to be greater than or equal to 0</sch:assert>
|
1101
1182
|
<sch:assert role='ERROR' test='count(h:extension/h:FanPowerWattsPerCFM) <= 1'>Expected 0 or 1 element(s) for xpath: extension/FanPowerWattsPerCFM</sch:assert>
|
1102
1183
|
<sch:assert role='ERROR' test='number(h:extension/h:FanPowerWattsPerCFM) >= 0 or not(h:extension/h:FanPowerWattsPerCFM)'>Expected extension/FanPowerWattsPerCFM to be greater than or equal to 0</sch:assert>
|
1103
|
-
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert>
|
1184
|
+
<sch:assert role='ERROR' test='count(h:extension/h:AirflowDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/AirflowDefectRatio</sch:assert> <!-- See [AirflowDefectRatio] -->
|
1104
1185
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) >= -0.9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be greater than or equal to -0.9</sch:assert>
|
1105
1186
|
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) <= 9 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be less than or equal to 9</sch:assert>
|
1106
1187
|
<sch:assert role='ERROR' test='count(h:extension/h:ChargeDefectRatio) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ChargeDefectRatio</sch:assert>
|
@@ -1139,18 +1220,34 @@
|
|
1139
1220
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump[h:HeatPumpType="packaged terminal heat pump" or h:HeatPumpType="room air conditioner with reverse cycle"]'>
|
1140
1221
|
<sch:assert role='ERROR' test='count(h:DistributionSystem) = 0'>Expected 0 element(s) for xpath: DistributionSystem</sch:assert>
|
1141
1222
|
<sch:assert role='ERROR' test='count(h:HeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: HeatingCapacity</sch:assert>
|
1223
|
+
<sch:assert role='ERROR' test='count(h:extension/h:HeatingCapacityRetention) + count(h:HeatingCapacity17F) <= 1'>Expected 0 or 1 element(s) for xpath: extension/HeatingCapacityRetention | HeatingCapacity17F</sch:assert> <!-- See [HeatPumpCapacityRetention] -->
|
1224
|
+
<sch:assert role='ERROR' test='number(h:HeatingCapacity17F) <= number(h:HeatingCapacity) or not(h:HeatingCapacity17F) or not(h:HeatingCapacity)'>Expected HeatingCapacity17F to be less than or equal to HeatingCapacity</sch:assert>
|
1142
1225
|
<sch:assert role='ERROR' test='count(h:CoolingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingCapacity</sch:assert>
|
1226
|
+
<sch:assert role='ERROR' test='count(h:CompressorLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: CompressorLockoutTemperature</sch:assert>
|
1143
1227
|
<sch:assert role='ERROR' test='count(h:AnnualCoolingEfficiency[h:Units="EER" or h:Units="CEER"]/h:Value) = 1'>Expected 1 element(s) for xpath: AnnualCoolingEfficiency[Units="EER" or Units="CEER"]/Value</sch:assert>
|
1144
1228
|
<sch:assert role='ERROR' test='count(h:AnnualHeatingEfficiency[h:Units="COP"]/h:Value) = 1'>Expected 1 element(s) for xpath: AnnualHeatingEfficiency[Units="COP"]/Value</sch:assert>
|
1145
1229
|
<sch:assert role='ERROR' test='count(h:CoolingSensibleHeatFraction) <= 1'>Expected 0 or 1 element(s) for xpath: CoolingSensibleHeatFraction</sch:assert>
|
1146
1230
|
<sch:assert role='ERROR' test='count(h:FractionHeatLoadServed) = 1'>Expected 1 element(s) for xpath: FractionHeatLoadServed</sch:assert>
|
1147
1231
|
<sch:assert role='ERROR' test='count(h:FractionCoolLoadServed) = 1'>Expected 1 element(s) for xpath: FractionCoolLoadServed</sch:assert>
|
1232
|
+
<sch:assert role='ERROR' test='count(h:extension/h:CrankcaseHeaterPowerWatts) <= 1'>Expected 0 or 1 element(s) for xpath: extension/CrankcaseHeaterPowerWatts</sch:assert>
|
1233
|
+
<sch:assert role='ERROR' test='number(h:extension/h:CrankcaseHeaterPowerWatts) >= 0.0 or not(h:extension/h:CrankcaseHeaterPowerWatts)'>Expected extension/CrankcaseHeaterPowerWatts to be greater than or equal to 0.0.</sch:assert>
|
1148
1234
|
<!-- Warnings -->
|
1149
1235
|
<sch:report role='WARN' test='number(h:HeatingCapacity) <= 1000 and number(h:HeatingCapacity) > 0 and h:HeatingCapacity'>Heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
1150
1236
|
<sch:report role='WARN' test='number(h:CoolingCapacity) <= 1000 and number(h:CoolingCapacity) > 0 and h:CoolingCapacity'>Cooling capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
1151
1237
|
</sch:rule>
|
1152
1238
|
</sch:pattern>
|
1153
1239
|
|
1240
|
+
<sch:pattern>
|
1241
|
+
<sch:title>[HeatPumpCapacityRetention]</sch:title>
|
1242
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump/h:extension/h:HeatingCapacityRetention'>
|
1243
|
+
<sch:assert role='ERROR' test='count(h:Fraction) = 1'>Expected 1 element(s) for xpath: Fraction</sch:assert>
|
1244
|
+
<sch:assert role='ERROR' test='number(h:Fraction) <1 or not(h:Fraction)'>Expected Fraction to be less than 1</sch:assert>
|
1245
|
+
<sch:assert role='ERROR' test='number(h:Fraction) >=0 or not(h:Fraction)'>Expected Fraction to be greater than or equal to 0</sch:assert>
|
1246
|
+
<sch:assert role='ERROR' test='count(h:Temperature) = 1'>Expected 1 element(s) for xpath: Temperature</sch:assert>
|
1247
|
+
<sch:assert role='ERROR' test='number(h:Temperature) <=17 or not(h:Temperature)'>Expected Temperature to be less than or equal to 17</sch:assert>
|
1248
|
+
</sch:rule>
|
1249
|
+
</sch:pattern>
|
1250
|
+
|
1154
1251
|
<sch:pattern>
|
1155
1252
|
<sch:title>[HeatPumpBackup=Integrated]</sch:title>
|
1156
1253
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump[h:BackupType="integrated" or h:BackupSystemFuel]'>
|
@@ -1160,11 +1257,9 @@
|
|
1160
1257
|
<sch:assert role='ERROR' test='count(h:BackupAnnualHeatingEfficiency[h:Units="Percent" or h:Units="AFUE"]/h:Value) = 1'>Expected 1 element(s) for xpath: BackupAnnualHeatingEfficiency[Units="Percent" or Units="AFUE"]/Value</sch:assert>
|
1161
1258
|
<sch:assert role='ERROR' test='number(h:BackupAnnualHeatingEfficiency[h:Units="Percent" or h:Units="AFUE"]/h:Value) <= 1 or not(h:BackupAnnualHeatingEfficiency[h:Units="Percent" or h:Units="AFUE"]/h:Value)'>Expected BackupAnnualHeatingEfficiency[Units="Percent" or Units="AFUE"]/Value to be less than or equal to 1</sch:assert>
|
1162
1259
|
<sch:assert role='ERROR' test='count(h:BackupHeatingCapacity) <= 1'>Expected 0 or 1 element(s) for xpath: BackupHeatingCapacity</sch:assert>
|
1163
|
-
<sch:assert role='ERROR' test='count(h:HeatingCapacity) + count(h:BackupHeatingCapacity) = 0 or count(h:HeatingCapacity) + count(h:BackupHeatingCapacity) = 2'>Expected 0 or 2 element(s) for xpath: HeatingCapacity | BackupHeatingCapacity</sch:assert>
|
1164
|
-
<sch:assert role='ERROR' test='count(h:BackupHeatingSwitchoverTemperature) + count(h:BackupHeatingLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | BackupHeatingLockoutTemperature</sch:assert>
|
1165
1260
|
<!-- Warnings -->
|
1166
|
-
<sch:report role='WARN' test='number(h:BackupAnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.
|
1167
|
-
<sch:report role='WARN' test='number(h:BackupAnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.
|
1261
|
+
<sch:report role='WARN' test='number(h:BackupAnnualHeatingEfficiency[h:Units="Percent"]/h:Value) < 0.5'>Percent efficiency should typically be greater than or equal to 0.5.</sch:report>
|
1262
|
+
<sch:report role='WARN' test='number(h:BackupAnnualHeatingEfficiency[h:Units="AFUE"]/h:Value) < 0.5'>AFUE should typically be greater than or equal to 0.5.</sch:report>
|
1168
1263
|
<sch:report role='WARN' test='number(h:BackupHeatingCapacity) <= 1000 and number(h:BackupHeatingCapacity) > 0 and h:BackupHeatingCapacity'>Backup heating capacity should typically be greater than or equal to 1000 Btu/hr.</sch:report>
|
1169
1264
|
</sch:rule>
|
1170
1265
|
</sch:pattern>
|
@@ -1175,10 +1270,28 @@
|
|
1175
1270
|
<sch:assert role='ERROR' test='sum(../*/h:FractionHeatLoadServed) <= 1.01 and sum(../*/h:FractionHeatLoadServed) >= 0.99'>Expected sum(FractionHeatLoadServed) to be 1</sch:assert>
|
1176
1271
|
<sch:assert role='ERROR' test='count(h:BackupType[text()="separate"]) = 1'>Expected 1 element(s) for xpath: BackupType[text()="separate"]</sch:assert>
|
1177
1272
|
<sch:assert role='ERROR' test='count(h:BackupSystem) = 1'>Expected 1 element(s) for xpath: BackupSystem</sch:assert>
|
1178
|
-
<sch:assert role='ERROR' test='count(h:BackupHeatingSwitchoverTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature</sch:assert>
|
1179
1273
|
</sch:rule>
|
1180
1274
|
</sch:pattern>
|
1181
1275
|
|
1276
|
+
<sch:pattern>
|
1277
|
+
<sch:title>[HeatPumpBackup]</sch:title>
|
1278
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/h:HeatPump[h:BackupType]'>
|
1279
|
+
<sch:assert role='ERROR' test='count(h:BackupHeatingSwitchoverTemperature) + count(h:CompressorLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | CompressorLockoutTemperature</sch:assert>
|
1280
|
+
<sch:assert role='ERROR' test='count(h:BackupHeatingSwitchoverTemperature) + count(h:BackupHeatingLockoutTemperature) <= 1'>Expected 0 or 1 element(s) for xpath: BackupHeatingSwitchoverTemperature | BackupHeatingLockoutTemperature</sch:assert>
|
1281
|
+
<sch:assert role='ERROR' test='number(h:CompressorLockoutTemperature) < number(h:BackupHeatingLockoutTemperature) or not(h:CompressorLockoutTemperature) or not (h:BackupHeatingLockoutTemperature)'>Expected CompressorLockoutTemperature to be less than BackupHeatingLockoutTemperature</sch:assert>
|
1282
|
+
<!-- Warnings -->
|
1283
|
+
<sch:report role='WARN' test='number(h:BackupHeatingSwitchoverTemperature) < 30'>BackupHeatingSwitchoverTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity.</sch:report>
|
1284
|
+
<sch:report role='WARN' test='number(h:BackupHeatingLockoutTemperature) < 30'>BackupHeatingLockoutTemperature is below 30 deg-F; this may result in significant unmet hours if the heat pump does not have sufficient capacity.</sch:report>
|
1285
|
+
</sch:rule>
|
1286
|
+
</sch:pattern>
|
1287
|
+
|
1288
|
+
<sch:pattern>
|
1289
|
+
<sch:title>[AirflowDefectRatio]</sch:title>
|
1290
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACPlant/*[not(h:DistributionSystem)]'>
|
1291
|
+
<sch:assert role='ERROR' test='number(h:extension/h:AirflowDefectRatio) = 0 or not(h:extension/h:AirflowDefectRatio)'>Expected extension/AirflowDefectRatio to be 0</sch:assert>
|
1292
|
+
</sch:rule>
|
1293
|
+
</sch:pattern>
|
1294
|
+
|
1182
1295
|
<sch:pattern>
|
1183
1296
|
<sch:title>[HVACControl=Heating]</sch:title>
|
1184
1297
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACControl[sum(../h:HVACPlant/*/h:FractionHeatLoadServed) > 0]'>
|
@@ -1328,7 +1441,9 @@
|
|
1328
1441
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:HVAC/h:HVACDistribution/h:DistributionSystemType/h:AirDistribution/h:Ducts'>
|
1329
1442
|
<sch:assert role='ERROR' test='count(h:DuctType) = 1'>Expected 1 element(s) for xpath: DuctType</sch:assert>
|
1330
1443
|
<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>
|
1331
|
-
<sch:assert role='ERROR' test='count(h:DuctInsulationRValue)
|
1444
|
+
<sch:assert role='ERROR' test='count(h:DuctInsulationRValue) + count(h:DuctEffectiveRValue) >= 1'>Expected 1 or more element(s) for xpath: DuctInsulationRValue | DuctEffectiveRValue</sch:assert>
|
1445
|
+
<sch:assert role='ERROR' test='count(h:DuctBuriedInsulationLevel) <= 1'>Expected 0 or 1 element(s) for xpath: DuctBuriedInsulationLevel</sch:assert>
|
1446
|
+
<sch:assert role='ERROR' test='h:DuctBuriedInsulationLevel[text()="not buried" or text()="partially buried" or text()="fully buried" or text()="deeply buried"] or not(h:DuctBuriedInsulationLevel)'>Expected DuctBuriedInsulationLevel to be 'not buried' or 'partially buried' or 'fully buried' or 'deeply buried'</sch:assert>
|
1332
1447
|
<sch:assert role='ERROR' test='count(h:DuctLocation) <= 1'>Expected 0 or 1 element(s) for xpath: DuctLocation</sch:assert> <!-- See [HVACDuct=WithLocation] or [HVACDuct=WithoutLocation] -->
|
1333
1448
|
<sch:assert role='ERROR' test='h:DuctLocation[text()="living space" or text()="basement - conditioned" or text()="basement - unconditioned" or text()="crawlspace - vented" or text()="crawlspace - unvented" or text()="crawlspace - conditioned" or text()="attic - vented" or text()="attic - unvented" or text()="garage" or text()="exterior wall" or text()="under slab" or text()="roof deck" or text()="outside" or text()="other housing unit" or text()="other heated space" or text()="other multifamily buffer space" or text()="other non-freezing space"] or not(h:DuctLocation)'>Expected DuctLocation to be 'living space' or 'basement - conditioned' or 'basement - unconditioned' or 'crawlspace - vented' or 'crawlspace - unvented' or 'crawlspace - conditioned' or 'attic - vented' or 'attic - unvented' or 'garage' or 'exterior wall' or 'under slab' or 'roof deck' or 'outside' or 'other housing unit' or 'other heated space' or 'other multifamily buffer space' or 'other non-freezing space'</sch:assert>
|
1334
1449
|
<sch:assert role='ERROR' test='count(h:extension/h:DuctSurfaceAreaMultiplier) <= 1'>Expected 0 or 1 element(s) for xpath: extension/DuctSurfaceAreaMultiplier</sch:assert>
|
@@ -1388,16 +1503,19 @@
|
|
1388
1503
|
<sch:pattern>
|
1389
1504
|
<sch:title>[MechanicalVentilationType=HRV]</sch:title>
|
1390
1505
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:MechanicalVentilation/h:VentilationFans/h:VentilationFan[h:UsedForWholeBuildingVentilation="true" and h:FanType="heat recovery ventilator"]'>
|
1391
|
-
<sch:assert role='ERROR' test='count(h:
|
1392
|
-
<sch:assert role='ERROR' test='count(h:
|
1506
|
+
<sch:assert role='ERROR' test='count(h:AdjustedTotalRecoveryEfficiency) + count(h:TotalRecoveryEfficiency) = 0'>Expected 0 element(s) for xpath: AdjustedTotalRecoveryEfficiency | TotalRecoveryEfficiency</sch:assert>
|
1507
|
+
<sch:assert role='ERROR' test='count(h:AdjustedSensibleRecoveryEfficiency) + count(h:SensibleRecoveryEfficiency) = 1'>Expected 1 element(s) for xpath: AdjustedSensibleRecoveryEfficiency | SensibleRecoveryEfficiency</sch:assert>
|
1393
1508
|
</sch:rule>
|
1394
1509
|
</sch:pattern>
|
1395
1510
|
|
1396
1511
|
<sch:pattern>
|
1397
1512
|
<sch:title>[MechanicalVentilationType=ERV]</sch:title>
|
1398
1513
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:MechanicalVentilation/h:VentilationFans/h:VentilationFan[h:UsedForWholeBuildingVentilation="true" and h:FanType="energy recovery ventilator"]'>
|
1399
|
-
<sch:assert role='ERROR' test='count(h:
|
1400
|
-
<sch:assert role='ERROR' test='count(h:
|
1514
|
+
<sch:assert role='ERROR' test='count(h:AdjustedTotalRecoveryEfficiency) + count(h:TotalRecoveryEfficiency) = 1'>Expected 1 element(s) for xpath: AdjustedTotalRecoveryEfficiency | TotalRecoveryEfficiency</sch:assert>
|
1515
|
+
<sch:assert role='ERROR' test='count(h:AdjustedSensibleRecoveryEfficiency) + count(h:SensibleRecoveryEfficiency) = 1'>Expected 1 element(s) for xpath: AdjustedSensibleRecoveryEfficiency | SensibleRecoveryEfficiency</sch:assert>
|
1516
|
+
<!-- Warnings -->
|
1517
|
+
<sch:report role='WARN' test='number(h:AdjustedTotalRecoveryEfficiency) < 0.5*number(h:AdjustedSensibleRecoveryEfficiency)'>Adjusted total recovery efficiency should typically be at least half of the adjusted sensible recovery efficiency.</sch:report>
|
1518
|
+
<sch:report role='WARN' test='number(h:TotalRecoveryEfficiency) < 0.5*number(h:SensibleRecoveryEfficiency)'>Total recovery efficiency should typically be at least half of the sensible recovery efficiency.</sch:report>
|
1401
1519
|
</sch:rule>
|
1402
1520
|
</sch:pattern>
|
1403
1521
|
|
@@ -1466,7 +1584,7 @@
|
|
1466
1584
|
<sch:pattern>
|
1467
1585
|
<sch:title>[LocalVentilation]</sch:title>
|
1468
1586
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:MechanicalVentilation/h:VentilationFans/h:VentilationFan[h:UsedForLocalVentilation="true"]'>
|
1469
|
-
<sch:assert role='ERROR' test='count(h:
|
1587
|
+
<sch:assert role='ERROR' test='count(h:Count) <= 1'>Expected 0 or 1 element(s) for xpath: Count</sch:assert>
|
1470
1588
|
<sch:assert role='ERROR' test='count(h:RatedFlowRate) + count(h:CalculatedFlowRate) + count(h:TestedFlowRate) + count(h:DeliveredVentilation) >= 0'>Expected 0 or more element(s) for xpath: RatedFlowRate | CalculatedFlowRate | TestedFlowRate | DeliveredVentilation</sch:assert>
|
1471
1589
|
<sch:assert role='ERROR' test='count(h:HoursInOperation) <= 1'>Expected 0 or 1 element(s) for xpath: HoursInOperation</sch:assert>
|
1472
1590
|
<sch:assert role='ERROR' test='count(h:FanLocation) = 1'>Expected 1 element(s) for xpath: FanLocation</sch:assert>
|
@@ -1566,12 +1684,12 @@
|
|
1566
1684
|
<sch:assert role='ERROR' test='count(h:FuelType[text()="electricity"]) = 1'>Expected 1 element(s) for xpath: FuelType[text()="electricity"]</sch:assert>
|
1567
1685
|
<sch:assert role='ERROR' test='count(h:TankVolume) = 1'>Expected 1 element(s) for xpath: TankVolume</sch:assert>
|
1568
1686
|
<sch:assert role='ERROR' test='count(h:UniformEnergyFactor) + count(h:EnergyFactor) = 1'>Expected 1 element(s) for xpath: UniformEnergyFactor | EnergyFactor</sch:assert>
|
1687
|
+
<sch:assert role='ERROR' test='count(h:HPWHOperatingMode) <= 1'>Expected 0 or 1 element(s) for xpath: HPWHOperatingMode</sch:assert>
|
1688
|
+
<sch:assert role='ERROR' test='h:HPWHOperatingMode[text()="hybrid/auto" or text()="heat pump only"] or not(h:HPWHOperatingMode)'>Expected HPWHOperatingMode to be 'hybrid/auto' or 'heat pump only'</sch:assert>
|
1569
1689
|
<sch:assert role='ERROR' test='count(h:UsageBin) + count(h:FirstHourRating) >= 0'>Expected 0 or more element(s) for xpath: UsageBin | FirstHourRating</sch:assert>
|
1570
1690
|
<sch:assert role='ERROR' test='number(h:UniformEnergyFactor) > 1 or not(h:UniformEnergyFactor)'>Expected UniformEnergyFactor to be greater than 1</sch:assert>
|
1571
1691
|
<sch:assert role='ERROR' test='number(h:EnergyFactor) > 1 or not(h:EnergyFactor)'>Expected EnergyFactor to be greater than 1</sch:assert>
|
1572
1692
|
<sch:assert role='ERROR' test='count(h:WaterHeaterInsulation/h:Jacket/h:JacketRValue) <= 1'>Expected 0 or 1 element(s) for xpath: WaterHeaterInsulation/Jacket/JacketRValue</sch:assert>
|
1573
|
-
<sch:assert role='ERROR' test='count(h:extension/h:OperatingMode) <= 1'>Expected 0 or 1 element(s) for xpath: extension/OperatingMode</sch:assert>
|
1574
|
-
<sch:assert role='ERROR' test='h:extension/h:OperatingMode[text()="standard" or text()="heat pump only"] or not(h:extension/h:OperatingMode)'>Expected extension/OperatingMode to be 'standard' or 'heat pump only'</sch:assert>
|
1575
1693
|
</sch:rule>
|
1576
1694
|
</sch:pattern>
|
1577
1695
|
|
@@ -1709,8 +1827,8 @@
|
|
1709
1827
|
<sch:assert role='ERROR' test='count(h:ArrayAzimuth) + count(h:ArrayOrientation) >= 1'>Expected 1 or more element(s) for xpath: ArrayAzimuth | ArrayOrientation</sch:assert>
|
1710
1828
|
<sch:assert role='ERROR' test='count(h:ArrayTilt) = 1'>Expected 1 element(s) for xpath: ArrayTilt</sch:assert>
|
1711
1829
|
<sch:assert role='ERROR' test='count(h:MaxPowerOutput) = 1'>Expected 1 element(s) for xpath: MaxPowerOutput</sch:assert>
|
1712
|
-
<sch:assert role='ERROR' test='count(h:InverterEfficiency) <= 1'>Expected 0 or 1 element(s) for xpath: InverterEfficiency</sch:assert>
|
1713
1830
|
<sch:assert role='ERROR' test='count(h:SystemLossesFraction) + count(h:YearModulesManufactured) >= 0'>Expected 0 or more element(s) for xpath: SystemLossesFraction | YearModulesManufactured</sch:assert>
|
1831
|
+
<sch:assert role='ERROR' test='count(h:AttachedToInverter) = 1'>Expected 1 element(s) for xpath: AttachedToInverter</sch:assert> <!-- See [Inverter] -->
|
1714
1832
|
<!-- Warnings -->
|
1715
1833
|
<sch:report role='WARN' test='number(h:MaxPowerOutput) <= 500 and number(h:MaxPowerOutput) > 0'>Max power output should typically be greater than or equal to 500 W.</sch:report>
|
1716
1834
|
</sch:rule>
|
@@ -1725,6 +1843,13 @@
|
|
1725
1843
|
</sch:rule>
|
1726
1844
|
</sch:pattern>
|
1727
1845
|
|
1846
|
+
<sch:pattern>
|
1847
|
+
<sch:title>[Inverter]</sch:title>
|
1848
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:Photovoltaics/h:Inverter'>
|
1849
|
+
<sch:assert role='ERROR' test='count(h:InverterEfficiency) <= 1'>Expected 0 or 1 element(s) for xpath: InverterEfficiency</sch:assert>
|
1850
|
+
</sch:rule>
|
1851
|
+
</sch:pattern>
|
1852
|
+
|
1728
1853
|
<sch:pattern>
|
1729
1854
|
<sch:title>[Battery]</sch:title>
|
1730
1855
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Systems/h:Batteries/h:Battery'>
|
@@ -1936,15 +2061,9 @@
|
|
1936
2061
|
<sch:pattern>
|
1937
2062
|
<sch:title>[Lighting]</sch:title>
|
1938
2063
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting'>
|
1939
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:
|
1940
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:
|
1941
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:
|
1942
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="interior"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[CompactFluorescent] and Location[text()="interior"]]</sch:assert> <!-- See [LightingGroup] -->
|
1943
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="exterior"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[CompactFluorescent] and Location[text()="exterior"]]</sch:assert> <!-- See [LightingGroup] -->
|
1944
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="garage"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[CompactFluorescent] and Location[text()="garage"]]</sch:assert> <!-- See [LightingGroup] -->
|
1945
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="interior"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[FluorescentTube] and Location[text()="interior"]]</sch:assert> <!-- See [LightingGroup] -->
|
1946
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="exterior"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[FluorescentTube] and Location[text()="exterior"]]</sch:assert> <!-- See [LightingGroup] -->
|
1947
|
-
<sch:assert role='ERROR' test='count(h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="garage"]) = 1'>Expected 1 element(s) for xpath: LightingGroup[LightingType[FluorescentTube] and Location[text()="garage"]]</sch:assert> <!-- See [LightingGroup] -->
|
2064
|
+
<sch:assert role='ERROR' test='count(h:LightingGroup[h:Location="interior"]) >= 0'>Expected 0 or more element(s) for xpath: LightingGroup[Location="interior"]</sch:assert> <!-- See [LightingGroup=Interior] -->
|
2065
|
+
<sch:assert role='ERROR' test='count(h:LightingGroup[h:Location="exterior"]) >= 0'>Expected 0 or more element(s) for xpath: LightingGroup[Location="exterior"]</sch:assert> <!-- See [LightingGroup=Exterior] -->
|
2066
|
+
<sch:assert role='ERROR' test='count(h:LightingGroup[h:Location="garage"]) >= 0'>Expected 0 or more element(s) for xpath: LightingGroup[Location="garage"]</sch:assert> <!-- See [LightingGroup=Garage] -->
|
1948
2067
|
<sch:assert role='ERROR' test='count(h:extension/h:InteriorUsageMultiplier) <= 1'>Expected 0 or 1 element(s) for xpath: extension/InteriorUsageMultiplier</sch:assert>
|
1949
2068
|
<sch:assert role='ERROR' test='count(h:extension/h:GarageUsageMultiplier) <= 1'>Expected 0 or 1 element(s) for xpath: extension/GarageUsageMultiplier</sch:assert>
|
1950
2069
|
<sch:assert role='ERROR' test='count(h:extension/h:ExteriorUsageMultiplier) <= 1'>Expected 0 or 1 element(s) for xpath: extension/ExteriorUsageMultiplier</sch:assert>
|
@@ -1966,9 +2085,29 @@
|
|
1966
2085
|
</sch:pattern>
|
1967
2086
|
|
1968
2087
|
<sch:pattern>
|
1969
|
-
<sch:title>[LightingGroup]</sch:title>
|
1970
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:LightingGroup[h:
|
1971
|
-
<sch:assert role='ERROR' test='count(h:FractionofUnitsInLocation) = 1'>Expected 1 element(s) for xpath: FractionofUnitsInLocation</sch:assert>
|
2088
|
+
<sch:title>[LightingGroup=Interior]</sch:title>
|
2089
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:LightingGroup[h:Location="interior"]'>
|
2090
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:LightEmittingDiode] and h:Location="interior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[LightEmittingDiode] and Location="interior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2091
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="interior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[CompactFluorescent] and Location="interior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2092
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="interior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[FluorescentTube] and Location="interior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2093
|
+
</sch:rule>
|
2094
|
+
</sch:pattern>
|
2095
|
+
|
2096
|
+
<sch:pattern>
|
2097
|
+
<sch:title>[LightingGroup=Exterior]</sch:title>
|
2098
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:LightingGroup[h:Location="exterior"]'>
|
2099
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:LightEmittingDiode] and h:Location="exterior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[LightEmittingDiode] and Location="exterior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2100
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="exterior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[CompactFluorescent] and Location="exterior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2101
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="exterior"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[FluorescentTube] and Location="exterior"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2102
|
+
</sch:rule>
|
2103
|
+
</sch:pattern>
|
2104
|
+
|
2105
|
+
<sch:pattern>
|
2106
|
+
<sch:title>[LightingGroup=Garage]</sch:title>
|
2107
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:LightingGroup[h:Location="garage"]'>
|
2108
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:LightEmittingDiode] and h:Location="garage"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[LightEmittingDiode] and Location="garage"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2109
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:CompactFluorescent] and h:Location="garage"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[CompactFluorescent] and Location="garage"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
2110
|
+
<sch:assert role='ERROR' test='count(../h:LightingGroup[h:LightingType[h:FluorescentTube] and h:Location="garage"]/h:FractionofUnitsInLocation) + count(h:Load[h:Units="kWh/year"]/h:Value) = 1'>Expected 1 element(s) for xpath: ../LightingGroup[LightingType[FluorescentTube] and Location="garage"]/FractionofUnitsInLocation | Load[Units="kWh/year"]/Value</sch:assert>
|
1972
2111
|
</sch:rule>
|
1973
2112
|
</sch:pattern>
|
1974
2113
|
|
@@ -1987,7 +2126,7 @@
|
|
1987
2126
|
<sch:title>[CeilingFan]</sch:title>
|
1988
2127
|
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails/h:Lighting/h:CeilingFan'>
|
1989
2128
|
<sch:assert role='ERROR' test='count(h:Airflow[h:FanSpeed="medium"]/h:Efficiency) <= 1'>Expected 0 or 1 element(s) for xpath: Airflow[FanSpeed="medium"]/Efficiency</sch:assert>
|
1990
|
-
<sch:assert role='ERROR' test='count(h:
|
2129
|
+
<sch:assert role='ERROR' test='count(h:Count) <= 1'>Expected 0 or 1 element(s) for xpath: Count</sch:assert>
|
1991
2130
|
<sch:assert role='ERROR' test='count(h:extension/h:WeekdayScheduleFractions) <= 1'>Expected 0 or 1 element(s) for xpath: extension/WeekdayScheduleFractions</sch:assert>
|
1992
2131
|
<sch:assert role='ERROR' test='count(h:extension/h:WeekendScheduleFractions) <= 1'>Expected 0 or 1 element(s) for xpath: extension/WeekendScheduleFractions</sch:assert>
|
1993
2132
|
<sch:assert role='ERROR' test='count(h:extension/h:MonthlyScheduleMultipliers) <= 1'>Expected 0 or 1 element(s) for xpath: extension/MonthlyScheduleMultipliers</sch:assert>
|
@@ -2175,60 +2314,60 @@
|
|
2175
2314
|
</sch:rule>
|
2176
2315
|
</sch:pattern>
|
2177
2316
|
|
2178
|
-
<!-- Rules below check that the specified appliance, water heater, or duct location exists in the building -->
|
2317
|
+
<!-- Rules below check that the specified appliance, water heater, HVAC, or duct location exists in the building -->
|
2179
2318
|
|
2180
2319
|
<sch:pattern>
|
2181
2320
|
<sch:title>[LocationCheck=ConditionedBasement]</sch:title>
|
2182
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="basement - conditioned"] | h:Systems/*/*[h:Location="basement - conditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="basement - conditioned"]]'>
|
2321
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="basement - conditioned"] | h:Systems/*/*[h:Location="basement - conditioned"] | h:Systems/*/*/*[h:UnitLocation="basement - conditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="basement - conditioned"]]'>
|
2183
2322
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="basement - conditioned" or h:ExteriorAdjacentTo="basement - conditioned"]) >= 1'>A location is specified as "basement - conditioned" but no surfaces were found adjacent to this space type.</sch:assert>
|
2184
2323
|
</sch:rule>
|
2185
2324
|
</sch:pattern>
|
2186
2325
|
|
2187
2326
|
<sch:pattern>
|
2188
2327
|
<sch:title>[LocationCheck=UnconditionedBasement]</sch:title>
|
2189
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="basement - unconditioned"] | h:Systems/*/*[h:Location="basement - unconditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="basement - unconditioned"]]'>
|
2328
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="basement - unconditioned"] | h:Systems/*/*[h:Location="basement - unconditioned"] | h:Systems/*/*/*[h:UnitLocation="basement - unconditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="basement - unconditioned"]]'>
|
2190
2329
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="basement - unconditioned" or h:ExteriorAdjacentTo="basement - unconditioned"]) >= 1'>A location is specified as "basement - unconditioned" but no surfaces were found adjacent to this space type.</sch:assert>
|
2191
2330
|
</sch:rule>
|
2192
2331
|
</sch:pattern>
|
2193
2332
|
|
2194
2333
|
<sch:pattern>
|
2195
2334
|
<sch:title>[LocationCheck=VentedCrawlspace]</sch:title>
|
2196
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - vented"] | h:Systems/*/*[h:Location="crawlspace - vented"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - vented"]]'>
|
2335
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - vented"] | h:Systems/*/*[h:Location="crawlspace - vented"] | h:Systems/*/*/*[h:UnitLocation="crawlspace - vented"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - vented"]]'>
|
2197
2336
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="crawlspace - vented" or h:ExteriorAdjacentTo="crawlspace - vented"]) >= 1'>A location is specified as "crawlspace - vented" but no surfaces were found adjacent to this space type.</sch:assert>
|
2198
2337
|
</sch:rule>
|
2199
2338
|
</sch:pattern>
|
2200
2339
|
|
2201
2340
|
<sch:pattern>
|
2202
2341
|
<sch:title>[LocationCheck=UnventedCrawlspace]</sch:title>
|
2203
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - unvented"] | h:Systems/*/*[h:Location="crawlspace - unvented"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - unvented"]]'>
|
2342
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - unvented"] | h:Systems/*/*[h:Location="crawlspace - unvented"] | h:Systems/*/*/*[h:UnitLocation="crawlspace - unvented"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - unvented"]]'>
|
2204
2343
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="crawlspace - unvented" or h:ExteriorAdjacentTo="crawlspace - unvented"]) >= 1'>A location is specified as "crawlspace - unvented" but no surfaces were found adjacent to this space type.</sch:assert>
|
2205
2344
|
</sch:rule>
|
2206
2345
|
</sch:pattern>
|
2207
2346
|
|
2208
2347
|
<sch:pattern>
|
2209
2348
|
<sch:title>[LocationCheck=ConditionedCrawlspace]</sch:title>
|
2210
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - conditioned"] | h:Systems/*/*[h:Location="crawlspace - conditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - conditioned"]]'>
|
2349
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="crawlspace - conditioned"] | h:Systems/*/*[h:Location="crawlspace - conditioned"] | h:Systems/*/*/*[h:UnitLocation="crawlspace - conditioned"] | h:Systems/*/*/*/*/*[h:DuctLocation="crawlspace - conditioned"]]'>
|
2211
2350
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="crawlspace - conditioned" or h:ExteriorAdjacentTo="crawlspace - conditioned"]) >= 1'>A location is specified as "crawlspace - conditioned" but no surfaces were found adjacent to this space type.</sch:assert>
|
2212
2351
|
</sch:rule>
|
2213
2352
|
</sch:pattern>
|
2214
2353
|
|
2215
2354
|
<sch:pattern>
|
2216
2355
|
<sch:title>[LocationCheck=Garage]</sch:title>
|
2217
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="garage"] | h:Systems/*/*[h:Location="garage"] | h:Systems/*/*/*/*/*[h:DuctLocation="garage"]]'>
|
2356
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="garage"] | h:Systems/*/*[h:Location="garage"] | h:Systems/*/*/*[h:UnitLocation="garage"] | h:Systems/*/*/*/*/*[h:DuctLocation="garage"]]'>
|
2218
2357
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="garage" or h:ExteriorAdjacentTo="garage"]) >= 1'>A location is specified as "garage" but no surfaces were found adjacent to this space type.</sch:assert>
|
2219
2358
|
</sch:rule>
|
2220
2359
|
</sch:pattern>
|
2221
2360
|
|
2222
2361
|
<sch:pattern>
|
2223
2362
|
<sch:title>[LocationCheck=VentedAttic]</sch:title>
|
2224
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="attic - vented"] | h:Systems/*/*[h:Location="attic - vented"] | h:Systems/*/*/*/*/*[h:DuctLocation="attic - vented"]]'>
|
2363
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="attic - vented"] | h:Systems/*/*[h:Location="attic - vented"] | h:Systems/*/*/*[h:UnitLocation="attic - vented"] | h:Systems/*/*/*/*/*[h:DuctLocation="attic - vented"]]'>
|
2225
2364
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="attic - vented" or h:ExteriorAdjacentTo="attic - vented"]) >= 1'>A location is specified as "attic - vented" but no surfaces were found adjacent to this space type.</sch:assert>
|
2226
2365
|
</sch:rule>
|
2227
2366
|
</sch:pattern>
|
2228
2367
|
|
2229
2368
|
<sch:pattern>
|
2230
2369
|
<sch:title>[LocationCheck=UnventedAttic]</sch:title>
|
2231
|
-
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="attic - unvented"] | h:Systems/*/*[h:Location="attic - unvented"] | h:Systems/*/*/*/*/*[h:DuctLocation="attic - unvented"]]'>
|
2370
|
+
<sch:rule context='/h:HPXML/h:Building/h:BuildingDetails[h:Appliances/*[h:Location="attic - unvented"] | h:Systems/*/*[h:Location="attic - unvented"] | h:Systems/*/*/*[h:UnitLocation="attic - unvented"] | h:Systems/*/*/*/*/*[h:DuctLocation="attic - unvented"]]'>
|
2232
2371
|
<sch:assert role='ERROR' test='count(h:Enclosure/*/*[h:InteriorAdjacentTo="attic - unvented" or h:ExteriorAdjacentTo="attic - unvented"]) >= 1'>A location is specified as "attic - unvented" but no surfaces were found adjacent to this space type.</sch:assert>
|
2233
2372
|
</sch:rule>
|
2234
2373
|
</sch:pattern>
|