urbanopt-cli 0.9.2 → 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 +16 -2
- data/CMakeLists.txt +7 -7
- data/Gemfile +8 -7
- data/LICENSE.md +18 -15
- data/README.md +2 -1
- data/Rakefile +2 -37
- data/example_files/Gemfile +10 -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
@@ -52,20 +52,31 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
52
52
|
arg.setDescription('The version of the software program used.')
|
53
53
|
args << arg
|
54
54
|
|
55
|
-
occupancy_calculation_type_choices = OpenStudio::StringVector.new
|
56
|
-
occupancy_calculation_type_choices << HPXML::OccupancyCalculationTypeAsset
|
57
|
-
occupancy_calculation_type_choices << HPXML::OccupancyCalculationTypeOperational
|
58
|
-
|
59
|
-
arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('occupancy_calculation_type', occupancy_calculation_type_choices, false)
|
60
|
-
arg.setDisplayName('Occupancy Calculation Type')
|
61
|
-
arg.setDescription("The type of occupancy calculation type. If '#{HPXML::OccupancyCalculationTypeAsset}' is chosen, various end uses (e.g., clothes washer) are calculated using number of bedrooms and/or conditioned floor area. If '#{HPXML::OccupancyCalculationTypeOperational}' is chosen, end uses based on number of bedrooms are adjusted for the number of occupants. If not provided, the OS-HPXML default is used.")
|
62
|
-
args << arg
|
63
|
-
|
64
55
|
arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_filepaths', false)
|
65
56
|
arg.setDisplayName('Schedules: CSV File Paths')
|
66
57
|
arg.setDescription('Absolute/relative paths of csv files containing user-specified detailed schedules. If multiple files, use a comma-separated list.')
|
67
58
|
args << arg
|
68
59
|
|
60
|
+
arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_vacancy_period', false)
|
61
|
+
arg.setDisplayName('Schedules: Vacancy Period')
|
62
|
+
arg.setDescription('Specifies the vacancy period. Enter a date like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24).')
|
63
|
+
args << arg
|
64
|
+
|
65
|
+
arg = OpenStudio::Measure::OSArgument.makeStringArgument('schedules_power_outage_period', false)
|
66
|
+
arg.setDisplayName('Schedules: Power Outage Period')
|
67
|
+
arg.setDescription('Specifies the power outage period. Enter a date like "Dec 15 - Jan 15". Optionally, can enter hour of the day like "Dec 15 2 - Jan 15 20" (start hour can be 0 through 23 and end hour can be 1 through 24).')
|
68
|
+
args << arg
|
69
|
+
|
70
|
+
natvent_availability_choices = OpenStudio::StringVector.new
|
71
|
+
natvent_availability_choices << HPXML::ScheduleRegular
|
72
|
+
natvent_availability_choices << HPXML::ScheduleAvailable
|
73
|
+
natvent_availability_choices << HPXML::ScheduleUnavailable
|
74
|
+
|
75
|
+
arg = OpenStudio::Measure::OSArgument.makeChoiceArgument('schedules_power_outage_window_natvent_availability', natvent_availability_choices, false)
|
76
|
+
arg.setDisplayName('Schedules: Power Outage Period Window Natural Ventilation Availability')
|
77
|
+
arg.setDescription('The availability of the natural ventilation schedule during the outage period.')
|
78
|
+
args << arg
|
79
|
+
|
69
80
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('simulation_control_timestep', false)
|
70
81
|
arg.setDisplayName('Simulation Control: Timestep')
|
71
82
|
arg.setUnits('min')
|
@@ -182,25 +193,25 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
182
193
|
level_choices << 'Middle'
|
183
194
|
level_choices << 'Top'
|
184
195
|
|
185
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_left_wall_is_adiabatic',
|
196
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_left_wall_is_adiabatic', false)
|
186
197
|
arg.setDisplayName('Geometry: Unit Left Wall Is Adiabatic')
|
187
198
|
arg.setDescription('Presence of an adiabatic left wall.')
|
188
199
|
arg.setDefaultValue(false)
|
189
200
|
args << arg
|
190
201
|
|
191
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_right_wall_is_adiabatic',
|
202
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_right_wall_is_adiabatic', false)
|
192
203
|
arg.setDisplayName('Geometry: Unit Right Wall Is Adiabatic')
|
193
204
|
arg.setDescription('Presence of an adiabatic right wall.')
|
194
205
|
arg.setDefaultValue(false)
|
195
206
|
args << arg
|
196
207
|
|
197
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_front_wall_is_adiabatic',
|
208
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_front_wall_is_adiabatic', false)
|
198
209
|
arg.setDisplayName('Geometry: Unit Front Wall Is Adiabatic')
|
199
210
|
arg.setDescription('Presence of an adiabatic front wall, for example, the unit is adjacent to a conditioned corridor.')
|
200
211
|
arg.setDefaultValue(false)
|
201
212
|
args << arg
|
202
213
|
|
203
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_back_wall_is_adiabatic',
|
214
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_unit_back_wall_is_adiabatic', false)
|
204
215
|
arg.setDisplayName('Geometry: Unit Back Wall Is Adiabatic')
|
205
216
|
arg.setDescription('Presence of an adiabatic back wall.')
|
206
217
|
arg.setDefaultValue(false)
|
@@ -237,7 +248,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
237
248
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_unit_num_bedrooms', true)
|
238
249
|
arg.setDisplayName('Geometry: Unit Number of Bedrooms')
|
239
250
|
arg.setUnits('#')
|
240
|
-
arg.setDescription('The number of bedrooms in the unit.
|
251
|
+
arg.setDescription('The number of bedrooms in the unit.')
|
241
252
|
arg.setDefaultValue(3)
|
242
253
|
args << arg
|
243
254
|
|
@@ -250,7 +261,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
250
261
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('geometry_unit_num_occupants', false)
|
251
262
|
arg.setDisplayName('Geometry: Unit Number of Occupants')
|
252
263
|
arg.setUnits('#')
|
253
|
-
arg.setDescription(
|
264
|
+
arg.setDescription('The number of occupants in the unit. If not provided, an *asset* calculation is performed assuming standard occupancy, in which various end use defaults (e.g., plug loads, appliances, and hot water usage) are calculated based on Number of Bedrooms and Conditioned Floor Area per ANSI/RESNET/ICC 301-2019. If provided, an *operational* calculation is instead performed in which the end use defaults are adjusted using the relationship between Number of Bedrooms and Number of Occupants from RECS 2015.')
|
254
265
|
args << arg
|
255
266
|
|
256
267
|
arg = OpenStudio::Measure::OSArgument::makeIntegerArgument('geometry_building_num_units', false)
|
@@ -383,11 +394,6 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
383
394
|
arg.setDefaultValue(2.0)
|
384
395
|
args << arg
|
385
396
|
|
386
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('geometry_has_flue_or_chimney', false)
|
387
|
-
arg.setDisplayName('Geometry: Has Flue or Chimney')
|
388
|
-
arg.setDescription('Presence of flue or chimney for infiltration model. If not provided, the OS-HPXML default is used.')
|
389
|
-
args << arg
|
390
|
-
|
391
397
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('neighbor_front_distance', true)
|
392
398
|
arg.setDisplayName('Neighbor: Front Distance')
|
393
399
|
arg.setUnits('ft')
|
@@ -628,9 +634,9 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
628
634
|
roof_radiant_barrier_grade_choices << '2'
|
629
635
|
roof_radiant_barrier_grade_choices << '3'
|
630
636
|
|
631
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_radiant_barrier_grade', roof_radiant_barrier_grade_choices,
|
637
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('roof_radiant_barrier_grade', roof_radiant_barrier_grade_choices, false)
|
632
638
|
arg.setDisplayName('Roof: Radiant Barrier Grade')
|
633
|
-
arg.setDescription('The grade of the radiant barrier,
|
639
|
+
arg.setDescription('The grade of the radiant barrier. If not provided, the OS-HPXML default is used.')
|
634
640
|
arg.setDefaultValue('1')
|
635
641
|
args << arg
|
636
642
|
|
@@ -774,25 +780,30 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
774
780
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_interior_shading_winter', false)
|
775
781
|
arg.setDisplayName('Windows: Winter Interior Shading')
|
776
782
|
arg.setUnits('Frac')
|
777
|
-
arg.setDescription('Interior shading
|
783
|
+
arg.setDescription('Interior shading coefficient for the winter season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default is used.')
|
778
784
|
args << arg
|
779
785
|
|
780
786
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_interior_shading_summer', false)
|
781
787
|
arg.setDisplayName('Windows: Summer Interior Shading')
|
782
788
|
arg.setUnits('Frac')
|
783
|
-
arg.setDescription('Interior shading
|
789
|
+
arg.setDescription('Interior shading coefficient for the summer season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default is used.')
|
784
790
|
args << arg
|
785
791
|
|
786
792
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_winter', false)
|
787
793
|
arg.setDisplayName('Windows: Winter Exterior Shading')
|
788
794
|
arg.setUnits('Frac')
|
789
|
-
arg.setDescription('Exterior shading
|
795
|
+
arg.setDescription('Exterior shading coefficient for the winter season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default is used.')
|
790
796
|
args << arg
|
791
797
|
|
792
798
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('window_exterior_shading_summer', false)
|
793
799
|
arg.setDisplayName('Windows: Summer Exterior Shading')
|
794
800
|
arg.setUnits('Frac')
|
795
|
-
arg.setDescription('Exterior shading
|
801
|
+
arg.setDescription('Exterior shading coefficient for the summer season. 1.0 indicates no reduction in solar gain, 0.85 indicates 15% reduction, etc. If not provided, the OS-HPXML default is used.')
|
802
|
+
args << arg
|
803
|
+
|
804
|
+
arg = OpenStudio::Measure::OSArgument::makeStringArgument('window_shading_summer_season', false)
|
805
|
+
arg.setDisplayName('Windows: Shading Summer Season')
|
806
|
+
arg.setDescription('Enter a date like "May 1 - Sep 30". Defines the summer season for purposes of shading coefficients; the rest of the year is assumed to be winter. If not provided, the OS-HPXML default is used.')
|
796
807
|
args << arg
|
797
808
|
|
798
809
|
storm_window_type_choices = OpenStudio::StringVector.new
|
@@ -952,6 +963,8 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
952
963
|
air_leakage_units_choices << HPXML::UnitsACH
|
953
964
|
air_leakage_units_choices << HPXML::UnitsCFM
|
954
965
|
air_leakage_units_choices << HPXML::UnitsACHNatural
|
966
|
+
air_leakage_units_choices << HPXML::UnitsCFMNatural
|
967
|
+
air_leakage_units_choices << HPXML::UnitsELA
|
955
968
|
|
956
969
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_units', air_leakage_units_choices, true)
|
957
970
|
arg.setDisplayName('Air Leakage: Units')
|
@@ -968,10 +981,24 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
968
981
|
|
969
982
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('air_leakage_value', true)
|
970
983
|
arg.setDisplayName('Air Leakage: Value')
|
971
|
-
arg.setDescription(
|
984
|
+
arg.setDescription("Air exchange rate value. For '#{HPXML::UnitsELA}', provide value in sq. in.")
|
972
985
|
arg.setDefaultValue(3)
|
973
986
|
args << arg
|
974
987
|
|
988
|
+
air_leakage_type_choices = OpenStudio::StringVector.new
|
989
|
+
air_leakage_type_choices << HPXML::InfiltrationTypeUnitTotal
|
990
|
+
air_leakage_type_choices << HPXML::InfiltrationTypeUnitExterior
|
991
|
+
|
992
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('air_leakage_type', air_leakage_type_choices, false)
|
993
|
+
arg.setDisplayName('Air Leakage: Type')
|
994
|
+
arg.setDescription("Type of air leakage. If '#{HPXML::InfiltrationTypeUnitTotal}', represents the total infiltration to the unit as measured by a compartmentalization test, in which case the air leakage value will be adjusted by the ratio of exterior envelope surface area to total envelope surface area. Otherwise, if '#{HPXML::InfiltrationTypeUnitExterior}', represents the infiltration to the unit from outside only as measured by a guarded test. Required when unit type is #{HPXML::ResidentialTypeSFA} or #{HPXML::ResidentialTypeApartment}.")
|
995
|
+
args << arg
|
996
|
+
|
997
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('air_leakage_has_flue_or_chimney_in_conditioned_space', false)
|
998
|
+
arg.setDisplayName('Air Leakage: Has Flue or Chimney in Conditioned Space')
|
999
|
+
arg.setDescription('Presence of flue or chimney with combustion air from conditioned space; used for infiltration model. If not provided, the OS-HPXML default is used.')
|
1000
|
+
args << arg
|
1001
|
+
|
975
1002
|
heating_system_type_choices = OpenStudio::StringVector.new
|
976
1003
|
heating_system_type_choices << 'none'
|
977
1004
|
heating_system_type_choices << HPXML::HVACTypeFurnace
|
@@ -1046,6 +1073,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1046
1073
|
arg.setDefaultValue(1)
|
1047
1074
|
args << arg
|
1048
1075
|
|
1076
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_pilot_light', false)
|
1077
|
+
arg.setDisplayName('Heating System: Pilot Light')
|
1078
|
+
arg.setDescription("The fuel usage of the pilot light. Applies only to #{HPXML::HVACTypeFurnace}, #{HPXML::HVACTypeWallFurnace}, #{HPXML::HVACTypeFloorFurnace}, #{HPXML::HVACTypeStove}, #{HPXML::HVACTypeBoiler}, and #{HPXML::HVACTypeFireplace} with non-electric fuel type. If not provided, assumes no pilot light.")
|
1079
|
+
arg.setUnits('Btuh')
|
1080
|
+
args << arg
|
1081
|
+
|
1049
1082
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heating_system_airflow_defect_ratio', false)
|
1050
1083
|
arg.setDisplayName('Heating System: Airflow Defect Ratio')
|
1051
1084
|
arg.setDescription("The airflow defect ratio, defined as (InstalledAirflow - DesignAirflow) / DesignAirflow, of the heating system per ANSI/RESNET/ACCA Standard 310. A value of zero means no airflow defect. Applies only to #{HPXML::HVACTypeFurnace}. If not provided, assumes no defect.")
|
@@ -1094,7 +1127,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1094
1127
|
arg.setDefaultValue(1)
|
1095
1128
|
args << arg
|
1096
1129
|
|
1097
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted',
|
1130
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('cooling_system_is_ducted', false)
|
1098
1131
|
arg.setDisplayName('Cooling System: Is Ducted')
|
1099
1132
|
arg.setDescription("Whether the cooling system is ducted or not. Only used for #{HPXML::HVACTypeMiniSplitAirConditioner} and #{HPXML::HVACTypeEvaporativeCooler}. It's assumed that #{HPXML::HVACTypeCentralAirConditioner} is ducted, and #{HPXML::HVACTypeRoomAirConditioner} and #{HPXML::HVACTypePTAC} are not ducted.")
|
1100
1133
|
arg.setDefaultValue(false)
|
@@ -1112,6 +1145,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1112
1145
|
arg.setUnits('Frac')
|
1113
1146
|
args << arg
|
1114
1147
|
|
1148
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('cooling_system_crankcase_heater_watts', false)
|
1149
|
+
arg.setDisplayName('Cooling System: Crankcase Heater Power Watts')
|
1150
|
+
arg.setDescription("Cooling system crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeCentralAirConditioner}, #{HPXML::HVACTypeMiniSplitAirConditioner}, #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}. If not provided, the OS-HPXML default is used.")
|
1151
|
+
arg.setUnits('W')
|
1152
|
+
args << arg
|
1153
|
+
|
1115
1154
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('cooling_system_integrated_heating_system_fuel', heating_system_fuel_choices, false)
|
1116
1155
|
arg.setDisplayName('Cooling System: Integrated Heating System Fuel Type')
|
1117
1156
|
arg.setDescription("The fuel type of the heating system integrated into cooling system. Only used for #{HPXML::HVACTypePTAC} and #{HPXML::HVACTypeRoomAirConditioner}.")
|
@@ -1214,10 +1253,16 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1214
1253
|
arg.setUnits('Btu/hr')
|
1215
1254
|
args << arg
|
1216
1255
|
|
1217
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('
|
1218
|
-
arg.setDisplayName('Heat Pump: Heating Capacity
|
1219
|
-
arg.setDescription("The output heating capacity of the heat pump at 17F.
|
1220
|
-
arg.setUnits('
|
1256
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_capacity_retention_fraction', false)
|
1257
|
+
arg.setDisplayName('Heat Pump: Heating Capacity Retention Fraction')
|
1258
|
+
arg.setDescription("The output heating capacity of the heat pump at a user-specified temperature (e.g., 17F or 5F) divided by the above nominal heating capacity. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default is used.")
|
1259
|
+
arg.setUnits('Frac')
|
1260
|
+
args << arg
|
1261
|
+
|
1262
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_heating_capacity_retention_temp', false)
|
1263
|
+
arg.setDisplayName('Heat Pump: Heating Capacity Retention Temperature')
|
1264
|
+
arg.setDescription("The user-specified temperature (e.g., 17F or 5F) for the above heating capacity retention fraction. Applies to all heat pump types except #{HPXML::HVACTypeHeatPumpGroundToAir}. Required if the Heating Capacity Retention Fraction is provided.")
|
1265
|
+
arg.setUnits('deg-F')
|
1221
1266
|
args << arg
|
1222
1267
|
|
1223
1268
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_cooling_capacity', false)
|
@@ -1240,6 +1285,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1240
1285
|
arg.setDefaultValue(1)
|
1241
1286
|
args << arg
|
1242
1287
|
|
1288
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_compressor_lockout_temp', false)
|
1289
|
+
arg.setDisplayName('Heat Pump: Compressor Lockout Temperature')
|
1290
|
+
arg.setDescription("The temperature below which the heat pump compressor is disabled. If both this and Backup Heating Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies to all heat pump types other than #{HPXML::HVACTypeHeatPumpGroundToAir}. If not provided, the OS-HPXML default is used.")
|
1291
|
+
arg.setUnits('deg-F')
|
1292
|
+
args << arg
|
1293
|
+
|
1243
1294
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heat_pump_backup_type', heat_pump_backup_type_choices, true)
|
1244
1295
|
arg.setDisplayName('Heat Pump: Backup Type')
|
1245
1296
|
arg.setDescription("The backup type of the heat pump. If '#{HPXML::HeatPumpBackupTypeIntegrated}', represents e.g. built-in electric strip heat or dual-fuel integrated furnace. If '#{HPXML::HeatPumpBackupTypeSeparate}', represents e.g. electric baseboard or boiler based on the Heating System 2 specified below. Use 'none' if there is no backup heating.")
|
@@ -1264,15 +1315,9 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1264
1315
|
arg.setUnits('Btu/hr')
|
1265
1316
|
args << arg
|
1266
1317
|
|
1267
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_switchover_temp', false)
|
1268
|
-
arg.setDisplayName('Heat Pump: Backup Heating Switchover Temperature')
|
1269
|
-
arg.setDescription("The temperature at which the heat pump stops operating and the backup heating system starts running. Only applies to #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpMiniSplit}. If not provided, backup heating will operate as needed when heat pump capacity is insufficient. Applies if Backup Type is either '#{HPXML::HeatPumpBackupTypeIntegrated}' or '#{HPXML::HeatPumpBackupTypeSeparate}'. Both Switchover Temperature and Lockout Temperature cannot be specified.")
|
1270
|
-
arg.setUnits('deg-F')
|
1271
|
-
args << arg
|
1272
|
-
|
1273
1318
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_backup_heating_lockout_temp', false)
|
1274
1319
|
arg.setDisplayName('Heat Pump: Backup Heating Lockout Temperature')
|
1275
|
-
arg.setDescription("The temperature above which the backup system is disabled
|
1320
|
+
arg.setDescription("The temperature above which the heat pump backup system is disabled. If both this and Compressor Lockout Temperature are provided and use the same value, it essentially defines a switchover temperature (for, e.g., a dual-fuel heat pump). Applies for both Backup Type of '#{HPXML::HeatPumpBackupTypeIntegrated}' and '#{HPXML::HeatPumpBackupTypeSeparate}'. If not provided, the OS-HPXML default is used.")
|
1276
1321
|
arg.setUnits('deg-F')
|
1277
1322
|
args << arg
|
1278
1323
|
|
@@ -1283,7 +1328,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1283
1328
|
|
1284
1329
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('heat_pump_is_ducted', false)
|
1285
1330
|
arg.setDisplayName('Heat Pump: Is Ducted')
|
1286
|
-
arg.setDescription("Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted. If not provided, assumes not ducted.")
|
1331
|
+
arg.setDescription("Whether the heat pump is ducted or not. Only used for #{HPXML::HVACTypeHeatPumpMiniSplit}. It's assumed that #{HPXML::HVACTypeHeatPumpAirToAir} and #{HPXML::HVACTypeHeatPumpGroundToAir} are ducted, and #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom} are not ducted. If not provided, assumes not ducted.")
|
1287
1332
|
args << arg
|
1288
1333
|
|
1289
1334
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_airflow_defect_ratio', false)
|
@@ -1298,8 +1343,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1298
1343
|
arg.setUnits('Frac')
|
1299
1344
|
args << arg
|
1300
1345
|
|
1346
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('heat_pump_crankcase_heater_watts', false)
|
1347
|
+
arg.setDisplayName('Heat Pump: Crankcase Heater Power Watts')
|
1348
|
+
arg.setDescription("Heat Pump crankcase heater power consumption in Watts. Applies only to #{HPXML::HVACTypeHeatPumpAirToAir}, #{HPXML::HVACTypeHeatPumpMiniSplit}, #{HPXML::HVACTypeHeatPumpPTHP} and #{HPXML::HVACTypeHeatPumpRoom}. If not provided, the OS-HPXML default is used.")
|
1349
|
+
arg.setUnits('W')
|
1350
|
+
args << arg
|
1351
|
+
|
1301
1352
|
heating_system_2_type_choices = OpenStudio::StringVector.new
|
1302
1353
|
heating_system_2_type_choices << 'none'
|
1354
|
+
heating_system_2_type_choices << HPXML::HVACTypeFurnace
|
1303
1355
|
heating_system_2_type_choices << HPXML::HVACTypeWallFurnace
|
1304
1356
|
heating_system_2_type_choices << HPXML::HVACTypeFloorFurnace
|
1305
1357
|
heating_system_2_type_choices << HPXML::HVACTypeBoiler
|
@@ -1307,6 +1359,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1307
1359
|
heating_system_2_type_choices << HPXML::HVACTypeStove
|
1308
1360
|
heating_system_2_type_choices << HPXML::HVACTypePortableHeater
|
1309
1361
|
heating_system_2_type_choices << HPXML::HVACTypeFireplace
|
1362
|
+
heating_system_2_type_choices << HPXML::HVACTypeFixedHeater
|
1310
1363
|
|
1311
1364
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('heating_system_2_type', heating_system_2_type_choices, true)
|
1312
1365
|
arg.setDisplayName('Heating System 2: Type')
|
@@ -1428,6 +1481,17 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1428
1481
|
arg.setDefaultValue(0)
|
1429
1482
|
args << arg
|
1430
1483
|
|
1484
|
+
duct_buried_level_choices = OpenStudio::StringVector.new
|
1485
|
+
duct_buried_level_choices << HPXML::DuctBuriedInsulationNone
|
1486
|
+
duct_buried_level_choices << HPXML::DuctBuriedInsulationPartial
|
1487
|
+
duct_buried_level_choices << HPXML::DuctBuriedInsulationFull
|
1488
|
+
duct_buried_level_choices << HPXML::DuctBuriedInsulationDeep
|
1489
|
+
|
1490
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_supply_buried_insulation_level', duct_buried_level_choices, false)
|
1491
|
+
arg.setDisplayName('Ducts: Supply Buried Insulation Level')
|
1492
|
+
arg.setDescription('Whether the supply ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.')
|
1493
|
+
args << arg
|
1494
|
+
|
1431
1495
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_supply_surface_area', false)
|
1432
1496
|
arg.setDisplayName('Ducts: Supply Surface Area')
|
1433
1497
|
arg.setDescription('The surface area of the supply ducts. If not provided, the OS-HPXML default is used.')
|
@@ -1446,6 +1510,11 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1446
1510
|
arg.setDefaultValue(0)
|
1447
1511
|
args << arg
|
1448
1512
|
|
1513
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('ducts_return_buried_insulation_level', duct_buried_level_choices, false)
|
1514
|
+
arg.setDisplayName('Ducts: Return Buried Insulation Level')
|
1515
|
+
arg.setDescription('Whether the return ducts are buried in, e.g., attic loose-fill insulation. Partially buried ducts have insulation that does not cover the top of the ducts. Fully buried ducts have insulation that just covers the top of the ducts. Deeply buried ducts have insulation that continues above the top of the ducts.')
|
1516
|
+
args << arg
|
1517
|
+
|
1449
1518
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ducts_return_surface_area', false)
|
1450
1519
|
arg.setDisplayName('Ducts: Return Surface Area')
|
1451
1520
|
arg.setDescription('The surface area of the return ducts. If not provided, the OS-HPXML default is used.')
|
@@ -1832,12 +1901,12 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1832
1901
|
args << arg
|
1833
1902
|
|
1834
1903
|
water_heater_operating_mode_choices = OpenStudio::StringVector.new
|
1835
|
-
water_heater_operating_mode_choices << HPXML::
|
1904
|
+
water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHybridAuto
|
1836
1905
|
water_heater_operating_mode_choices << HPXML::WaterHeaterOperatingModeHeatPumpOnly
|
1837
1906
|
|
1838
1907
|
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('water_heater_operating_mode', water_heater_operating_mode_choices, false)
|
1839
1908
|
arg.setDisplayName('Water Heater: Operating Mode')
|
1840
|
-
arg.setDescription("The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::
|
1909
|
+
arg.setDescription("The water heater operating mode. The '#{HPXML::WaterHeaterOperatingModeHeatPumpOnly}' option only uses the heat pump, while '#{HPXML::WaterHeaterOperatingModeHybridAuto}' allows the backup electric resistance to come on in high demand situations. This is ignored if a scheduled operating mode type is selected. Applies only to #{HPXML::WaterHeaterTypeHeatPump}. If not provided, the OS-HPXML default is used.")
|
1841
1910
|
args << arg
|
1842
1911
|
|
1843
1912
|
hot_water_distribution_system_type_choices = OpenStudio::StringVector.new
|
@@ -1863,7 +1932,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1863
1932
|
recirculation_control_type_choices << HPXML::DHWRecirControlTypeSensor
|
1864
1933
|
recirculation_control_type_choices << HPXML::DHWRecirControlTypeManual
|
1865
1934
|
|
1866
|
-
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_water_distribution_recirc_control_type', recirculation_control_type_choices,
|
1935
|
+
arg = OpenStudio::Measure::OSArgument::makeChoiceArgument('hot_water_distribution_recirc_control_type', recirculation_control_type_choices, false)
|
1867
1936
|
arg.setDisplayName('Hot Water Distribution: Recirculation Control Type')
|
1868
1937
|
arg.setDescription("If the distribution system is #{HPXML::DHWDistTypeRecirc}, the type of hot water recirculation control, if any.")
|
1869
1938
|
arg.setDefaultValue(HPXML::DHWRecirControlTypeNone)
|
@@ -1904,13 +1973,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
1904
1973
|
arg.setDefaultValue('none')
|
1905
1974
|
args << arg
|
1906
1975
|
|
1907
|
-
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dwhr_equal_flow',
|
1976
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('dwhr_equal_flow', false)
|
1908
1977
|
arg.setDisplayName('Drain Water Heat Recovery: Equal Flow')
|
1909
1978
|
arg.setDescription('Whether the drain water heat recovery has equal flow.')
|
1910
1979
|
arg.setDefaultValue(true)
|
1911
1980
|
args << arg
|
1912
1981
|
|
1913
|
-
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dwhr_efficiency',
|
1982
|
+
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('dwhr_efficiency', false)
|
1914
1983
|
arg.setDisplayName('Drain Water Heat Recovery: Efficiency')
|
1915
1984
|
arg.setUnits('Frac')
|
1916
1985
|
arg.setDescription('The efficiency of the drain water heat recovery.')
|
@@ -2639,7 +2708,7 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
2639
2708
|
arg = OpenStudio::Measure::OSArgument::makeDoubleArgument('ceiling_fan_cooling_setpoint_temp_offset', false)
|
2640
2709
|
arg.setDisplayName('Ceiling Fan: Cooling Setpoint Temperature Offset')
|
2641
2710
|
arg.setUnits('deg-F')
|
2642
|
-
arg.setDescription('The setpoint temperature offset during
|
2711
|
+
arg.setDescription('The cooling setpoint temperature offset during months when the ceiling fans are operating. Only applies if ceiling fan quantity is greater than zero. If not provided, the OS-HPXML default is used.')
|
2643
2712
|
args << arg
|
2644
2713
|
|
2645
2714
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('misc_plug_loads_television_present', true)
|
@@ -3003,9 +3072,15 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3003
3072
|
arg.setDescription("Additional properties specified as key-value pairs (i.e., key=value). If multiple additional properties, use a |-separated list. For example, 'LowIncome=false|Remodeled|Description=2-story home in Denver'. These properties will be stored in the HPXML file under /HPXML/SoftwareInfo/extension/AdditionalProperties.")
|
3004
3073
|
args << arg
|
3005
3074
|
|
3075
|
+
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('combine_like_surfaces', false)
|
3076
|
+
arg.setDisplayName('Combine like surfaces?')
|
3077
|
+
arg.setDescription('If true, combines like surfaces to simplify the HPXML file generated.')
|
3078
|
+
arg.setDefaultValue(false)
|
3079
|
+
args << arg
|
3080
|
+
|
3006
3081
|
arg = OpenStudio::Measure::OSArgument::makeBoolArgument('apply_defaults', false)
|
3007
3082
|
arg.setDisplayName('Apply Default Values?')
|
3008
|
-
arg.setDescription('If true, applies OS-HPXML default values to the HPXML output file.')
|
3083
|
+
arg.setDescription('If true, applies OS-HPXML default values to the HPXML output file. Setting to true will also force validation of the HPXML output file before applying OS-HPXML default values.')
|
3009
3084
|
arg.setDefaultValue(false)
|
3010
3085
|
args << arg
|
3011
3086
|
|
@@ -3033,7 +3108,16 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3033
3108
|
|
3034
3109
|
# assign the user inputs to variables
|
3035
3110
|
args = get_argument_values(runner, arguments(model), user_arguments)
|
3036
|
-
|
3111
|
+
|
3112
|
+
args[:apply_validation] = args[:apply_validation].is_initialized ? args[:apply_validation].get : false
|
3113
|
+
args[:apply_defaults] = args[:apply_defaults].is_initialized ? args[:apply_defaults].get : false
|
3114
|
+
args[:apply_validation] = true if args[:apply_defaults]
|
3115
|
+
args[:geometry_unit_left_wall_is_adiabatic] = (args[:geometry_unit_left_wall_is_adiabatic].is_initialized && args[:geometry_unit_left_wall_is_adiabatic].get)
|
3116
|
+
args[:geometry_unit_right_wall_is_adiabatic] = (args[:geometry_unit_right_wall_is_adiabatic].is_initialized && args[:geometry_unit_right_wall_is_adiabatic].get)
|
3117
|
+
args[:geometry_unit_front_wall_is_adiabatic] = (args[:geometry_unit_front_wall_is_adiabatic].is_initialized && args[:geometry_unit_front_wall_is_adiabatic].get)
|
3118
|
+
args[:geometry_unit_back_wall_is_adiabatic] = (args[:geometry_unit_back_wall_is_adiabatic].is_initialized && args[:geometry_unit_back_wall_is_adiabatic].get)
|
3119
|
+
args[:cooling_system_is_ducted] = (args[:cooling_system_is_ducted].is_initialized && args[:cooling_system_is_ducted].get)
|
3120
|
+
args[:heat_pump_is_ducted] = (args[:heat_pump_is_ducted].is_initialized && args[:heat_pump_is_ducted].get)
|
3037
3121
|
|
3038
3122
|
# Argument error checks
|
3039
3123
|
warnings, errors = validate_arguments(args)
|
@@ -3058,29 +3142,24 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3058
3142
|
runner.registerError("Could not find EPW file at '#{epw_path}'.")
|
3059
3143
|
return false
|
3060
3144
|
end
|
3061
|
-
epw_file = OpenStudio::EpwFile.new(epw_path)
|
3062
3145
|
|
3063
3146
|
# Create HPXML file
|
3064
|
-
hpxml_doc = HPXMLFile.create(runner, model, args, epw_file)
|
3065
|
-
if not hpxml_doc
|
3066
|
-
runner.registerError('Unsuccessful creation of HPXML file.')
|
3067
|
-
return false
|
3068
|
-
end
|
3069
|
-
|
3070
3147
|
hpxml_path = args[:hpxml_path]
|
3071
3148
|
unless (Pathname.new hpxml_path).absolute?
|
3072
3149
|
hpxml_path = File.expand_path(hpxml_path)
|
3073
3150
|
end
|
3074
3151
|
|
3075
|
-
|
3076
|
-
|
3152
|
+
hpxml_doc = HPXMLFile.create(runner, model, args, epw_path, hpxml_path)
|
3153
|
+
if not hpxml_doc
|
3154
|
+
runner.registerError('Unsuccessful creation of HPXML file.')
|
3155
|
+
return false
|
3156
|
+
end
|
3077
3157
|
|
3078
|
-
#
|
3079
|
-
if args[:
|
3080
|
-
|
3081
|
-
return false
|
3082
|
-
end
|
3158
|
+
# Write HPXML file again if defaults applied
|
3159
|
+
if args[:apply_defaults]
|
3160
|
+
XMLHelper.write_file(hpxml_doc, hpxml_path)
|
3083
3161
|
end
|
3162
|
+
runner.registerInfo("Wrote file: #{hpxml_path}")
|
3084
3163
|
|
3085
3164
|
# Uncomment for debugging purposes
|
3086
3165
|
# File.write(hpxml_path.gsub('.xml', '.osm'), model.to_s)
|
@@ -3149,6 +3228,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3149
3228
|
error = (args[:heating_system_type] == 'none') && (args[:heat_pump_type] == 'none') && (args[:heating_system_2_type] != 'none')
|
3150
3229
|
errors << 'A second heating system was specified without a primary heating system.' if error
|
3151
3230
|
|
3231
|
+
if ((args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeSeparate) && (args[:heating_system_2_type] == HPXML::HVACTypeFurnace)) # separate ducted backup
|
3232
|
+
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include?(args[:heat_pump_type]) ||
|
3233
|
+
((args[:heat_pump_type] == HPXML::HVACTypeHeatPumpMiniSplit) && args[:heat_pump_is_ducted]) # ducted heat pump
|
3234
|
+
errors << "A ducted heat pump with '#{HPXML::HeatPumpBackupTypeSeparate}' ducted backup is not supported."
|
3235
|
+
end
|
3236
|
+
end
|
3237
|
+
|
3152
3238
|
error = [HPXML::ResidentialTypeSFA, HPXML::ResidentialTypeApartment].include?(args[:geometry_unit_type]) && !args[:geometry_building_num_units].is_initialized
|
3153
3239
|
errors << 'Did not specify the number of units in the building for single-family attached or apartment units.' if error
|
3154
3240
|
|
@@ -3266,38 +3352,13 @@ class BuildResidentialHPXML < OpenStudio::Measure::ModelMeasure
|
|
3266
3352
|
|
3267
3353
|
return errors
|
3268
3354
|
end
|
3269
|
-
|
3270
|
-
def validate_hpxml(runner, hpxml_path, hpxml_doc)
|
3271
|
-
is_valid = true
|
3272
|
-
|
3273
|
-
# Validate input HPXML against schema
|
3274
|
-
schema_dir = File.join(File.dirname(__FILE__), '../HPXMLtoOpenStudio/resources/hpxml_schema')
|
3275
|
-
schema_path = File.join(schema_dir, 'HPXML.xsd')
|
3276
|
-
xsd_errors, xsd_warnings = XMLValidator.validate_against_schema(hpxml_path, schema_path)
|
3277
|
-
|
3278
|
-
# Validate input HPXML against schematron docs
|
3279
|
-
schematron_dir = File.join(File.dirname(__FILE__), '../HPXMLtoOpenStudio/resources/hpxml_schematron')
|
3280
|
-
schematron_path = File.join(schematron_dir, 'EPvalidator.xml')
|
3281
|
-
sct_errors, sct_warnings = XMLValidator.validate_against_schematron(hpxml_path, schematron_path, hpxml_doc)
|
3282
|
-
|
3283
|
-
# Handle errors/warnings
|
3284
|
-
(xsd_errors + sct_errors).each do |error|
|
3285
|
-
runner.registerError("#{hpxml_path}: #{error}")
|
3286
|
-
is_valid = false
|
3287
|
-
end
|
3288
|
-
(xsd_warnings + sct_warnings).each do |warning|
|
3289
|
-
runner.registerWarning("#{hpxml_path}: #{warning}")
|
3290
|
-
end
|
3291
|
-
|
3292
|
-
return is_valid
|
3293
|
-
end
|
3294
3355
|
end
|
3295
3356
|
|
3296
3357
|
class HPXMLFile
|
3297
|
-
def self.create(runner, model, args,
|
3298
|
-
|
3299
|
-
|
3300
|
-
weather = WeatherProcess.new(
|
3358
|
+
def self.create(runner, model, args, epw_path, hpxml_path)
|
3359
|
+
epw_file = OpenStudio::EpwFile.new(epw_path)
|
3360
|
+
if (args[:hvac_control_heating_season_period].to_s == HPXML::BuildingAmerica) || (args[:hvac_control_cooling_season_period].to_s == HPXML::BuildingAmerica) || (args[:apply_defaults])
|
3361
|
+
weather = WeatherProcess.new(epw_path: epw_path, runner: nil)
|
3301
3362
|
end
|
3302
3363
|
|
3303
3364
|
success = create_geometry_envelope(runner, model, args)
|
@@ -3361,44 +3422,59 @@ class HPXMLFile
|
|
3361
3422
|
set_misc_fuel_loads_fireplace(hpxml, args)
|
3362
3423
|
set_pool(hpxml, args)
|
3363
3424
|
set_hot_tub(hpxml, args)
|
3425
|
+
collapse_surfaces(hpxml, args)
|
3426
|
+
renumber_hpxml_ids(hpxml)
|
3364
3427
|
|
3365
|
-
|
3366
|
-
|
3367
|
-
# from the list so we get all 4 foundation walls.
|
3368
|
-
hpxml.collapse_enclosure_surfaces([:roofs, :walls, :rim_joists, :floors,
|
3369
|
-
:slabs, :windows, :skylights, :doors])
|
3370
|
-
|
3371
|
-
# After surfaces are collapsed, round all areas
|
3372
|
-
(hpxml.roofs +
|
3373
|
-
hpxml.rim_joists +
|
3374
|
-
hpxml.walls +
|
3375
|
-
hpxml.foundation_walls +
|
3376
|
-
hpxml.floors +
|
3377
|
-
hpxml.slabs +
|
3378
|
-
hpxml.windows +
|
3379
|
-
hpxml.skylights +
|
3380
|
-
hpxml.doors).each do |s|
|
3381
|
-
s.area = s.area.round(1)
|
3382
|
-
end
|
3428
|
+
hpxml_doc = hpxml.to_oga()
|
3429
|
+
XMLHelper.write_file(hpxml_doc, hpxml_path)
|
3383
3430
|
|
3384
|
-
|
3385
|
-
|
3386
|
-
|
3387
|
-
|
3388
|
-
fail "ERROR: Invalid HPXML object produced.\n#{errors}"
|
3431
|
+
if args[:apply_validation]
|
3432
|
+
# Check for invalid HPXML file
|
3433
|
+
if not validate_hpxml(runner, hpxml, hpxml_doc, hpxml_path)
|
3434
|
+
return false
|
3389
3435
|
end
|
3390
3436
|
end
|
3391
3437
|
|
3392
|
-
if args[:apply_defaults]
|
3438
|
+
if args[:apply_defaults]
|
3393
3439
|
eri_version = Constants.ERIVersions[-1]
|
3394
3440
|
HPXMLDefaults.apply(runner, hpxml, eri_version, weather, epw_file: epw_file)
|
3441
|
+
hpxml_doc = hpxml.to_oga()
|
3395
3442
|
end
|
3396
3443
|
|
3397
|
-
hpxml_doc = hpxml.to_oga()
|
3398
|
-
|
3399
3444
|
return hpxml_doc
|
3400
3445
|
end
|
3401
3446
|
|
3447
|
+
def self.validate_hpxml(runner, hpxml, hpxml_doc, hpxml_path)
|
3448
|
+
# Check for errors in the HPXML object
|
3449
|
+
errors = hpxml.check_for_errors()
|
3450
|
+
if errors.size > 0
|
3451
|
+
fail "ERROR: Invalid HPXML object produced.\n#{errors}"
|
3452
|
+
end
|
3453
|
+
|
3454
|
+
is_valid = true
|
3455
|
+
|
3456
|
+
# Validate input HPXML against schema
|
3457
|
+
schema_path = File.join(File.dirname(__FILE__), '..', 'HPXMLtoOpenStudio', 'resources', 'hpxml_schema', 'HPXML.xsd')
|
3458
|
+
schema_validator = XMLValidator.get_schema_validator(schema_path)
|
3459
|
+
xsd_errors, xsd_warnings = XMLValidator.validate_against_schema(hpxml_path, schema_validator)
|
3460
|
+
|
3461
|
+
# Validate input HPXML against schematron docs
|
3462
|
+
schematron_path = File.join(File.dirname(__FILE__), '..', 'HPXMLtoOpenStudio', 'resources', 'hpxml_schematron', 'EPvalidator.xml')
|
3463
|
+
schematron_validator = XMLValidator.get_schematron_validator(schematron_path)
|
3464
|
+
sct_errors, sct_warnings = XMLValidator.validate_against_schematron(hpxml_path, schematron_validator, hpxml_doc)
|
3465
|
+
|
3466
|
+
# Handle errors/warnings
|
3467
|
+
(xsd_errors + sct_errors).each do |error|
|
3468
|
+
runner.registerError("#{hpxml_path}: #{error}")
|
3469
|
+
is_valid = false
|
3470
|
+
end
|
3471
|
+
(xsd_warnings + sct_warnings).each do |warning|
|
3472
|
+
runner.registerWarning("#{hpxml_path}: #{warning}")
|
3473
|
+
end
|
3474
|
+
|
3475
|
+
return is_valid
|
3476
|
+
end
|
3477
|
+
|
3402
3478
|
def self.create_geometry_envelope(runner, model, args)
|
3403
3479
|
args[:geometry_roof_pitch] = { '1:12' => 1.0 / 12.0,
|
3404
3480
|
'2:12' => 2.0 / 12.0,
|
@@ -3454,16 +3530,29 @@ class HPXMLFile
|
|
3454
3530
|
hpxml.header.xml_type = 'HPXML'
|
3455
3531
|
hpxml.header.xml_generated_by = 'BuildResidentialHPXML'
|
3456
3532
|
hpxml.header.transaction = 'create'
|
3533
|
+
hpxml.header.building_id = 'MyBuilding'
|
3534
|
+
hpxml.header.event_type = 'proposed workscope'
|
3457
3535
|
|
3458
|
-
if args[:occupancy_calculation_type].is_initialized
|
3459
|
-
hpxml.header.occupancy_calculation_type = args[:occupancy_calculation_type].get
|
3460
|
-
end
|
3461
3536
|
if args[:window_natvent_availability].is_initialized
|
3462
3537
|
hpxml.header.natvent_days_per_week = args[:window_natvent_availability].get
|
3463
3538
|
end
|
3539
|
+
|
3464
3540
|
if args[:schedules_filepaths].is_initialized
|
3465
3541
|
hpxml.header.schedules_filepaths = args[:schedules_filepaths].get.split(',').map(&:strip)
|
3466
3542
|
end
|
3543
|
+
if args[:schedules_vacancy_period].is_initialized
|
3544
|
+
begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(args[:schedules_vacancy_period].get)
|
3545
|
+
hpxml.header.unavailable_periods.add(column_name: 'Vacancy', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: HPXML::ScheduleUnavailable)
|
3546
|
+
end
|
3547
|
+
if args[:schedules_power_outage_period].is_initialized
|
3548
|
+
begin_month, begin_day, begin_hour, end_month, end_day, end_hour = Schedule.parse_date_time_range(args[:schedules_power_outage_period].get)
|
3549
|
+
|
3550
|
+
if args[:schedules_power_outage_window_natvent_availability].is_initialized
|
3551
|
+
natvent_availability = args[:schedules_power_outage_window_natvent_availability].get
|
3552
|
+
end
|
3553
|
+
|
3554
|
+
hpxml.header.unavailable_periods.add(column_name: 'Power Outage', begin_month: begin_month, begin_day: begin_day, begin_hour: begin_hour, end_month: end_month, end_day: end_day, end_hour: end_hour, natvent_availability: natvent_availability)
|
3555
|
+
end
|
3467
3556
|
|
3468
3557
|
if args[:software_info_program_used].is_initialized
|
3469
3558
|
hpxml.header.software_program_used = args[:software_info_program_used].get
|
@@ -3477,7 +3566,7 @@ class HPXMLFile
|
|
3477
3566
|
end
|
3478
3567
|
|
3479
3568
|
if args[:simulation_control_run_period].is_initialized
|
3480
|
-
begin_month, begin_day, end_month, end_day = Schedule.
|
3569
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(args[:simulation_control_run_period].get)
|
3481
3570
|
hpxml.header.sim_begin_month = begin_month
|
3482
3571
|
hpxml.header.sim_begin_day = begin_day
|
3483
3572
|
hpxml.header.sim_end_month = end_month
|
@@ -3492,7 +3581,7 @@ class HPXMLFile
|
|
3492
3581
|
hpxml.header.dst_enabled = args[:simulation_control_daylight_saving_enabled].get
|
3493
3582
|
end
|
3494
3583
|
if args[:simulation_control_daylight_saving_period].is_initialized
|
3495
|
-
begin_month, begin_day, end_month, end_day = Schedule.
|
3584
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(args[:simulation_control_daylight_saving_period].get)
|
3496
3585
|
hpxml.header.dst_begin_month = begin_month
|
3497
3586
|
hpxml.header.dst_begin_day = begin_day
|
3498
3587
|
hpxml.header.dst_end_month = end_month
|
@@ -3503,8 +3592,13 @@ class HPXMLFile
|
|
3503
3592
|
hpxml.header.temperature_capacitance_multiplier = args[:simulation_control_temperature_capacitance_multiplier].get
|
3504
3593
|
end
|
3505
3594
|
|
3506
|
-
|
3507
|
-
|
3595
|
+
if args[:window_shading_summer_season].is_initialized
|
3596
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(args[:window_shading_summer_season].get)
|
3597
|
+
hpxml.header.shading_summer_begin_month = begin_month
|
3598
|
+
hpxml.header.shading_summer_begin_day = begin_day
|
3599
|
+
hpxml.header.shading_summer_end_month = end_month
|
3600
|
+
hpxml.header.shading_summer_end_day = end_day
|
3601
|
+
end
|
3508
3602
|
|
3509
3603
|
if args[:site_zip_code].is_initialized
|
3510
3604
|
hpxml.header.zip_code = args[:site_zip_code].get
|
@@ -3865,9 +3959,6 @@ class HPXMLFile
|
|
3865
3959
|
if args[:year_built].is_initialized
|
3866
3960
|
hpxml.building_construction.year_built = args[:year_built].get
|
3867
3961
|
end
|
3868
|
-
if args[:geometry_has_flue_or_chimney].is_initialized
|
3869
|
-
hpxml.building_construction.has_flue_or_chimney = args[:geometry_has_flue_or_chimney].get
|
3870
|
-
end
|
3871
3962
|
end
|
3872
3963
|
|
3873
3964
|
def self.set_climate_and_risk_zones(hpxml, args)
|
@@ -3884,23 +3975,33 @@ class HPXMLFile
|
|
3884
3975
|
end
|
3885
3976
|
|
3886
3977
|
def self.set_air_infiltration_measurements(hpxml, args)
|
3887
|
-
if args[:air_leakage_units] == HPXML::
|
3888
|
-
|
3889
|
-
|
3890
|
-
|
3891
|
-
|
3892
|
-
|
3893
|
-
|
3894
|
-
|
3895
|
-
|
3978
|
+
if args[:air_leakage_units] == HPXML::UnitsELA
|
3979
|
+
effective_leakage_area = args[:air_leakage_value]
|
3980
|
+
else
|
3981
|
+
unit_of_measure = args[:air_leakage_units]
|
3982
|
+
air_leakage = args[:air_leakage_value]
|
3983
|
+
if [HPXML::UnitsACH, HPXML::UnitsCFM].include? args[:air_leakage_units]
|
3984
|
+
house_pressure = args[:air_leakage_house_pressure]
|
3985
|
+
end
|
3986
|
+
end
|
3987
|
+
if args[:air_leakage_type].is_initialized
|
3988
|
+
if [HPXML::ResidentialTypeSFA, HPXML::ResidentialTypeApartment].include? args[:geometry_unit_type]
|
3989
|
+
air_leakage_type = args[:air_leakage_type]
|
3990
|
+
end
|
3896
3991
|
end
|
3897
3992
|
infiltration_volume = hpxml.building_construction.conditioned_building_volume
|
3898
3993
|
|
3899
3994
|
hpxml.air_infiltration_measurements.add(id: "AirInfiltrationMeasurement#{hpxml.air_infiltration_measurements.size + 1}",
|
3900
3995
|
house_pressure: house_pressure,
|
3901
3996
|
unit_of_measure: unit_of_measure,
|
3902
|
-
air_leakage:
|
3903
|
-
|
3997
|
+
air_leakage: air_leakage,
|
3998
|
+
effective_leakage_area: effective_leakage_area,
|
3999
|
+
infiltration_volume: infiltration_volume,
|
4000
|
+
infiltration_type: air_leakage_type)
|
4001
|
+
|
4002
|
+
if args[:air_leakage_has_flue_or_chimney_in_conditioned_space].is_initialized
|
4003
|
+
hpxml.air_infiltration.has_flue_or_chimney_in_conditioned_space = args[:air_leakage_has_flue_or_chimney_in_conditioned_space].get
|
4004
|
+
end
|
3904
4005
|
end
|
3905
4006
|
|
3906
4007
|
def self.set_roofs(hpxml, args, sorted_surfaces)
|
@@ -3925,8 +4026,8 @@ class HPXMLFile
|
|
3925
4026
|
end
|
3926
4027
|
|
3927
4028
|
radiant_barrier = args[:roof_radiant_barrier]
|
3928
|
-
if args[:roof_radiant_barrier]
|
3929
|
-
radiant_barrier_grade = args[:roof_radiant_barrier_grade]
|
4029
|
+
if args[:roof_radiant_barrier] && args[:roof_radiant_barrier_grade].is_initialized
|
4030
|
+
radiant_barrier_grade = args[:roof_radiant_barrier_grade].get
|
3930
4031
|
end
|
3931
4032
|
|
3932
4033
|
if args[:geometry_attic_type] == HPXML::AtticTypeFlatRoof
|
@@ -4550,6 +4651,13 @@ class HPXMLFile
|
|
4550
4651
|
end
|
4551
4652
|
end
|
4552
4653
|
|
4654
|
+
if args[:heating_system_pilot_light].is_initialized && heating_system_fuel != HPXML::FuelTypeElectricity
|
4655
|
+
pilot_light_btuh = args[:heating_system_pilot_light].get
|
4656
|
+
if pilot_light_btuh > 0
|
4657
|
+
pilot_light = true
|
4658
|
+
end
|
4659
|
+
end
|
4660
|
+
|
4553
4661
|
fraction_heat_load_served = args[:heating_system_fraction_heat_load_served]
|
4554
4662
|
|
4555
4663
|
if heating_system_type.include?('Shared')
|
@@ -4570,6 +4678,8 @@ class HPXMLFile
|
|
4570
4678
|
heating_efficiency_afue: heating_efficiency_afue,
|
4571
4679
|
heating_efficiency_percent: heating_efficiency_percent,
|
4572
4680
|
airflow_defect_ratio: airflow_defect_ratio,
|
4681
|
+
pilot_light: pilot_light,
|
4682
|
+
pilot_light_btuh: pilot_light_btuh,
|
4573
4683
|
is_shared_system: is_shared_system,
|
4574
4684
|
number_of_units_served: number_of_units_served,
|
4575
4685
|
primary_system: true)
|
@@ -4620,6 +4730,12 @@ class HPXMLFile
|
|
4620
4730
|
end
|
4621
4731
|
end
|
4622
4732
|
|
4733
|
+
if args[:cooling_system_crankcase_heater_watts].is_initialized
|
4734
|
+
if [HPXML::HVACTypeCentralAirConditioner, HPXML::HVACTypeMiniSplitAirConditioner, HPXML::HVACTypeRoomAirConditioner, HPXML::HVACTypePTAC].include?(cooling_system_type)
|
4735
|
+
cooling_system_crankcase_heater_watts = args[:cooling_system_crankcase_heater_watts].get
|
4736
|
+
end
|
4737
|
+
end
|
4738
|
+
|
4623
4739
|
if [HPXML::HVACTypePTAC, HPXML::HVACTypeRoomAirConditioner].include?(cooling_system_type)
|
4624
4740
|
if args[:cooling_system_integrated_heating_system_fuel].is_initialized
|
4625
4741
|
integrated_heating_system_fuel = args[:cooling_system_integrated_heating_system_fuel].get
|
@@ -4651,6 +4767,7 @@ class HPXMLFile
|
|
4651
4767
|
cooling_efficiency_ceer: cooling_efficiency_ceer,
|
4652
4768
|
airflow_defect_ratio: airflow_defect_ratio,
|
4653
4769
|
charge_defect_ratio: charge_defect_ratio,
|
4770
|
+
crankcase_heater_watts: cooling_system_crankcase_heater_watts,
|
4654
4771
|
primary_system: true,
|
4655
4772
|
integrated_heating_system_fuel: integrated_heating_system_fuel,
|
4656
4773
|
integrated_heating_system_capacity: integrated_heating_system_capacity,
|
@@ -4667,10 +4784,12 @@ class HPXMLFile
|
|
4667
4784
|
heating_capacity = args[:heat_pump_heating_capacity].get
|
4668
4785
|
end
|
4669
4786
|
|
4670
|
-
if [
|
4671
|
-
|
4672
|
-
|
4673
|
-
|
4787
|
+
if args[:heat_pump_heating_capacity_retention_fraction].is_initialized
|
4788
|
+
heating_capacity_retention_fraction = args[:heat_pump_heating_capacity_retention_fraction].get
|
4789
|
+
end
|
4790
|
+
|
4791
|
+
if args[:heat_pump_heating_capacity_retention_temp].is_initialized
|
4792
|
+
heating_capacity_retention_temp = args[:heat_pump_heating_capacity_retention_temp].get
|
4674
4793
|
end
|
4675
4794
|
|
4676
4795
|
if args[:heat_pump_backup_type] == HPXML::HeatPumpBackupTypeIntegrated
|
@@ -4695,18 +4814,19 @@ class HPXMLFile
|
|
4695
4814
|
backup_system_idref = "HeatingSystem#{hpxml.heating_systems.size + 1}"
|
4696
4815
|
end
|
4697
4816
|
|
4698
|
-
if args[:
|
4699
|
-
|
4700
|
-
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit].include? heat_pump_type
|
4701
|
-
backup_heating_switchover_temp = args[:heat_pump_backup_heating_switchover_temp].get
|
4702
|
-
end
|
4703
|
-
end
|
4817
|
+
if args[:heat_pump_compressor_lockout_temp].is_initialized
|
4818
|
+
compressor_lockout_temp = args[:heat_pump_compressor_lockout_temp].get
|
4704
4819
|
end
|
4705
4820
|
|
4706
|
-
if args[:
|
4707
|
-
|
4708
|
-
|
4709
|
-
|
4821
|
+
if args[:heat_pump_backup_heating_lockout_temp].is_initialized
|
4822
|
+
backup_heating_lockout_temp = args[:heat_pump_backup_heating_lockout_temp].get
|
4823
|
+
end
|
4824
|
+
|
4825
|
+
if compressor_lockout_temp == backup_heating_lockout_temp && backup_heating_fuel != HPXML::FuelTypeElectricity
|
4826
|
+
# Translate to HPXML as switchover temperature instead
|
4827
|
+
backup_heating_switchover_temp = compressor_lockout_temp
|
4828
|
+
compressor_lockout_temp = nil
|
4829
|
+
backup_heating_lockout_temp = nil
|
4710
4830
|
end
|
4711
4831
|
|
4712
4832
|
if args[:heat_pump_cooling_capacity].is_initialized
|
@@ -4749,6 +4869,12 @@ class HPXMLFile
|
|
4749
4869
|
charge_defect_ratio = args[:heat_pump_charge_defect_ratio].get
|
4750
4870
|
end
|
4751
4871
|
|
4872
|
+
if args[:heat_pump_crankcase_heater_watts].is_initialized
|
4873
|
+
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpMiniSplit, HPXML::HVACTypeHeatPumpPTHP, HPXML::HVACTypeHeatPumpRoom].include?(heat_pump_type)
|
4874
|
+
heat_pump_crankcase_heater_watts = args[:heat_pump_crankcase_heater_watts].get
|
4875
|
+
end
|
4876
|
+
end
|
4877
|
+
|
4752
4878
|
fraction_heat_load_served = args[:heat_pump_fraction_heat_load_served]
|
4753
4879
|
fraction_cool_load_served = args[:heat_pump_fraction_cool_load_served]
|
4754
4880
|
|
@@ -4768,8 +4894,10 @@ class HPXMLFile
|
|
4768
4894
|
heat_pump_type: heat_pump_type,
|
4769
4895
|
heat_pump_fuel: HPXML::FuelTypeElectricity,
|
4770
4896
|
heating_capacity: heating_capacity,
|
4771
|
-
|
4897
|
+
heating_capacity_retention_fraction: heating_capacity_retention_fraction,
|
4898
|
+
heating_capacity_retention_temp: heating_capacity_retention_temp,
|
4772
4899
|
compressor_type: compressor_type,
|
4900
|
+
compressor_lockout_temp: compressor_lockout_temp,
|
4773
4901
|
cooling_shr: cooling_shr,
|
4774
4902
|
cooling_capacity: cooling_capacity,
|
4775
4903
|
fraction_heat_load_served: fraction_heat_load_served,
|
@@ -4790,6 +4918,7 @@ class HPXMLFile
|
|
4790
4918
|
cooling_efficiency_eer: cooling_efficiency_eer,
|
4791
4919
|
airflow_defect_ratio: airflow_defect_ratio,
|
4792
4920
|
charge_defect_ratio: charge_defect_ratio,
|
4921
|
+
crankcase_heater_watts: heat_pump_crankcase_heater_watts,
|
4793
4922
|
primary_heating_system: primary_heating_system,
|
4794
4923
|
primary_cooling_system: primary_cooling_system)
|
4795
4924
|
end
|
@@ -4863,8 +4992,8 @@ class HPXMLFile
|
|
4863
4992
|
if [HPXML::HVACTypeHeatPumpAirToAir, HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
4864
4993
|
air_distribution_systems << heat_pump
|
4865
4994
|
elsif [HPXML::HVACTypeHeatPumpMiniSplit].include?(heat_pump.heat_pump_type)
|
4866
|
-
if args[:heat_pump_is_ducted]
|
4867
|
-
air_distribution_systems << heat_pump if args[:heat_pump_is_ducted]
|
4995
|
+
if args[:heat_pump_is_ducted]
|
4996
|
+
air_distribution_systems << heat_pump if args[:heat_pump_is_ducted]
|
4868
4997
|
end
|
4869
4998
|
end
|
4870
4999
|
end
|
@@ -4941,9 +5070,18 @@ class HPXMLFile
|
|
4941
5070
|
ducts_return_surface_area = args[:ducts_return_surface_area].get
|
4942
5071
|
end
|
4943
5072
|
|
5073
|
+
if args[:ducts_supply_buried_insulation_level].is_initialized
|
5074
|
+
ducts_supply_buried_insulation_level = args[:ducts_supply_buried_insulation_level].get
|
5075
|
+
end
|
5076
|
+
|
5077
|
+
if args[:ducts_return_buried_insulation_level].is_initialized
|
5078
|
+
ducts_return_buried_insulation_level = args[:ducts_return_buried_insulation_level].get
|
5079
|
+
end
|
5080
|
+
|
4944
5081
|
hvac_distribution.ducts.add(id: "Ducts#{hvac_distribution.ducts.size + 1}",
|
4945
5082
|
duct_type: HPXML::DuctTypeSupply,
|
4946
5083
|
duct_insulation_r_value: args[:ducts_supply_insulation_r],
|
5084
|
+
duct_buried_insulation_level: ducts_supply_buried_insulation_level,
|
4947
5085
|
duct_location: ducts_supply_location,
|
4948
5086
|
duct_surface_area: ducts_supply_surface_area)
|
4949
5087
|
|
@@ -4951,6 +5089,7 @@ class HPXMLFile
|
|
4951
5089
|
hvac_distribution.ducts.add(id: "Ducts#{hvac_distribution.ducts.size + 1}",
|
4952
5090
|
duct_type: HPXML::DuctTypeReturn,
|
4953
5091
|
duct_insulation_r_value: args[:ducts_return_insulation_r],
|
5092
|
+
duct_buried_insulation_level: ducts_return_buried_insulation_level,
|
4954
5093
|
duct_location: ducts_return_location,
|
4955
5094
|
duct_surface_area: ducts_return_surface_area)
|
4956
5095
|
end
|
@@ -4983,7 +5122,7 @@ class HPXMLFile
|
|
4983
5122
|
sim_calendar_year = Location.get_sim_calendar_year(hpxml.header.sim_calendar_year, epw_file)
|
4984
5123
|
begin_month, begin_day, end_month, end_day = Schedule.get_begin_and_end_dates_from_monthly_array(heating_months, sim_calendar_year)
|
4985
5124
|
else
|
4986
|
-
begin_month, begin_day, end_month, end_day = Schedule.
|
5125
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(hvac_control_heating_season_period)
|
4987
5126
|
end
|
4988
5127
|
seasons_heating_begin_month = begin_month
|
4989
5128
|
seasons_heating_begin_day = begin_day
|
@@ -5016,7 +5155,7 @@ class HPXMLFile
|
|
5016
5155
|
sim_calendar_year = Location.get_sim_calendar_year(hpxml.header.sim_calendar_year, epw_file)
|
5017
5156
|
begin_month, begin_day, end_month, end_day = Schedule.get_begin_and_end_dates_from_monthly_array(cooling_months, sim_calendar_year)
|
5018
5157
|
else
|
5019
|
-
begin_month, begin_day, end_month, end_day = Schedule.
|
5158
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(hvac_control_cooling_season_period)
|
5020
5159
|
end
|
5021
5160
|
seasons_cooling_begin_month = begin_month
|
5022
5161
|
seasons_cooling_begin_day = begin_day
|
@@ -5187,7 +5326,7 @@ class HPXMLFile
|
|
5187
5326
|
fan_location: HPXML::LocationKitchen,
|
5188
5327
|
fan_power: fan_power,
|
5189
5328
|
start_hour: start_hour,
|
5190
|
-
|
5329
|
+
count: quantity)
|
5191
5330
|
end
|
5192
5331
|
|
5193
5332
|
if !args[:bathroom_fans_quantity].is_initialized || (args[:bathroom_fans_quantity].get > 0)
|
@@ -5218,7 +5357,7 @@ class HPXMLFile
|
|
5218
5357
|
fan_location: HPXML::LocationBath,
|
5219
5358
|
fan_power: fan_power,
|
5220
5359
|
start_hour: start_hour,
|
5221
|
-
|
5360
|
+
count: quantity)
|
5222
5361
|
end
|
5223
5362
|
|
5224
5363
|
if args[:whole_house_fan_present]
|
@@ -5375,8 +5514,12 @@ class HPXMLFile
|
|
5375
5514
|
|
5376
5515
|
if args[:dwhr_facilities_connected] != 'none'
|
5377
5516
|
dwhr_facilities_connected = args[:dwhr_facilities_connected]
|
5378
|
-
|
5379
|
-
|
5517
|
+
if args[:dwhr_equal_flow].is_initialized
|
5518
|
+
dwhr_equal_flow = args[:dwhr_equal_flow].get
|
5519
|
+
end
|
5520
|
+
if args[:dwhr_efficiency].is_initialized
|
5521
|
+
dwhr_efficiency = args[:dwhr_efficiency].get
|
5522
|
+
end
|
5380
5523
|
end
|
5381
5524
|
|
5382
5525
|
if args[:hot_water_distribution_system_type] == HPXML::DHWDistTypeStandard
|
@@ -5384,7 +5527,9 @@ class HPXMLFile
|
|
5384
5527
|
standard_piping_length = args[:hot_water_distribution_standard_piping_length].get
|
5385
5528
|
end
|
5386
5529
|
else
|
5387
|
-
|
5530
|
+
if args[:hot_water_distribution_recirc_control_type].is_initialized
|
5531
|
+
recirculation_control_type = args[:hot_water_distribution_recirc_control_type].get
|
5532
|
+
end
|
5388
5533
|
|
5389
5534
|
if args[:hot_water_distribution_recirc_piping_length].is_initialized
|
5390
5535
|
recirculation_piping_length = args[:hot_water_distribution_recirc_piping_length].get
|
@@ -5487,10 +5632,6 @@ class HPXMLFile
|
|
5487
5632
|
|
5488
5633
|
max_power_output = [args[:pv_system_max_power_output], args[:pv_system_2_max_power_output]][i]
|
5489
5634
|
|
5490
|
-
if args[:pv_system_inverter_efficiency].is_initialized
|
5491
|
-
inverter_efficiency = args[:pv_system_inverter_efficiency].get
|
5492
|
-
end
|
5493
|
-
|
5494
5635
|
if args[:pv_system_system_losses_fraction].is_initialized
|
5495
5636
|
system_losses_fraction = args[:pv_system_system_losses_fraction].get
|
5496
5637
|
end
|
@@ -5509,11 +5650,22 @@ class HPXMLFile
|
|
5509
5650
|
array_azimuth: [args[:pv_system_array_azimuth], args[:pv_system_2_array_azimuth]][i],
|
5510
5651
|
array_tilt: Geometry.get_absolute_tilt([args[:pv_system_array_tilt], args[:pv_system_2_array_tilt]][i], args[:geometry_roof_pitch], epw_file),
|
5511
5652
|
max_power_output: max_power_output,
|
5512
|
-
inverter_efficiency: inverter_efficiency,
|
5513
5653
|
system_losses_fraction: system_losses_fraction,
|
5514
5654
|
is_shared_system: is_shared_system,
|
5515
5655
|
number_of_bedrooms_served: number_of_bedrooms_served)
|
5516
5656
|
end
|
5657
|
+
if hpxml.pv_systems.size > 0
|
5658
|
+
# Add inverter efficiency; assume a single inverter even if multiple PV arrays
|
5659
|
+
if args[:pv_system_inverter_efficiency].is_initialized
|
5660
|
+
inverter_efficiency = args[:pv_system_inverter_efficiency].get
|
5661
|
+
end
|
5662
|
+
|
5663
|
+
hpxml.inverters.add(id: "Inverter#{hpxml.inverters.size + 1}",
|
5664
|
+
inverter_efficiency: inverter_efficiency)
|
5665
|
+
hpxml.pv_systems.each do |pv_system|
|
5666
|
+
pv_system.inverter_idref = hpxml.inverters[-1].id
|
5667
|
+
end
|
5668
|
+
end
|
5517
5669
|
end
|
5518
5670
|
|
5519
5671
|
def self.set_battery(hpxml, args)
|
@@ -5549,61 +5701,70 @@ class HPXMLFile
|
|
5549
5701
|
end
|
5550
5702
|
|
5551
5703
|
def self.set_lighting(hpxml, args)
|
5552
|
-
return unless args[:lighting_present] || args[:ceiling_fan_present] # If ceiling fans present but not lighting present, need to continue and use lighting multipliers = 0 instead
|
5553
|
-
|
5554
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5555
|
-
location: HPXML::LocationInterior,
|
5556
|
-
fraction_of_units_in_location: args[:lighting_interior_fraction_cfl],
|
5557
|
-
lighting_type: HPXML::LightingTypeCFL)
|
5558
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5559
|
-
location: HPXML::LocationExterior,
|
5560
|
-
fraction_of_units_in_location: args[:lighting_exterior_fraction_cfl],
|
5561
|
-
lighting_type: HPXML::LightingTypeCFL)
|
5562
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5563
|
-
location: HPXML::LocationGarage,
|
5564
|
-
fraction_of_units_in_location: args[:lighting_garage_fraction_cfl],
|
5565
|
-
lighting_type: HPXML::LightingTypeCFL)
|
5566
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5567
|
-
location: HPXML::LocationInterior,
|
5568
|
-
fraction_of_units_in_location: args[:lighting_interior_fraction_lfl],
|
5569
|
-
lighting_type: HPXML::LightingTypeLFL)
|
5570
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5571
|
-
location: HPXML::LocationExterior,
|
5572
|
-
fraction_of_units_in_location: args[:lighting_exterior_fraction_lfl],
|
5573
|
-
lighting_type: HPXML::LightingTypeLFL)
|
5574
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5575
|
-
location: HPXML::LocationGarage,
|
5576
|
-
fraction_of_units_in_location: args[:lighting_garage_fraction_lfl],
|
5577
|
-
lighting_type: HPXML::LightingTypeLFL)
|
5578
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5579
|
-
location: HPXML::LocationInterior,
|
5580
|
-
fraction_of_units_in_location: args[:lighting_interior_fraction_led],
|
5581
|
-
lighting_type: HPXML::LightingTypeLED)
|
5582
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5583
|
-
location: HPXML::LocationExterior,
|
5584
|
-
fraction_of_units_in_location: args[:lighting_exterior_fraction_led],
|
5585
|
-
lighting_type: HPXML::LightingTypeLED)
|
5586
|
-
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5587
|
-
location: HPXML::LocationGarage,
|
5588
|
-
fraction_of_units_in_location: args[:lighting_garage_fraction_led],
|
5589
|
-
lighting_type: HPXML::LightingTypeLED)
|
5590
|
-
|
5591
5704
|
if args[:lighting_present]
|
5592
|
-
|
5593
|
-
hpxml.lighting.interior_usage_multiplier = args[:lighting_interior_usage_multiplier].get
|
5594
|
-
end
|
5705
|
+
has_garage = (args[:geometry_garage_width] * args[:geometry_garage_depth] > 0)
|
5595
5706
|
|
5707
|
+
# Interior
|
5708
|
+
if args[:lighting_interior_usage_multiplier].is_initialized
|
5709
|
+
interior_usage_multiplier = args[:lighting_interior_usage_multiplier].get
|
5710
|
+
end
|
5711
|
+
if interior_usage_multiplier.nil? || interior_usage_multiplier.to_f > 0
|
5712
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5713
|
+
location: HPXML::LocationInterior,
|
5714
|
+
fraction_of_units_in_location: args[:lighting_interior_fraction_cfl],
|
5715
|
+
lighting_type: HPXML::LightingTypeCFL)
|
5716
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5717
|
+
location: HPXML::LocationInterior,
|
5718
|
+
fraction_of_units_in_location: args[:lighting_interior_fraction_lfl],
|
5719
|
+
lighting_type: HPXML::LightingTypeLFL)
|
5720
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5721
|
+
location: HPXML::LocationInterior,
|
5722
|
+
fraction_of_units_in_location: args[:lighting_interior_fraction_led],
|
5723
|
+
lighting_type: HPXML::LightingTypeLED)
|
5724
|
+
hpxml.lighting.interior_usage_multiplier = interior_usage_multiplier
|
5725
|
+
end
|
5726
|
+
|
5727
|
+
# Exterior
|
5596
5728
|
if args[:lighting_exterior_usage_multiplier].is_initialized
|
5597
|
-
|
5598
|
-
end
|
5599
|
-
|
5600
|
-
|
5601
|
-
|
5729
|
+
exterior_usage_multiplier = args[:lighting_exterior_usage_multiplier].get
|
5730
|
+
end
|
5731
|
+
if exterior_usage_multiplier.nil? || exterior_usage_multiplier.to_f > 0
|
5732
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5733
|
+
location: HPXML::LocationExterior,
|
5734
|
+
fraction_of_units_in_location: args[:lighting_exterior_fraction_cfl],
|
5735
|
+
lighting_type: HPXML::LightingTypeCFL)
|
5736
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5737
|
+
location: HPXML::LocationExterior,
|
5738
|
+
fraction_of_units_in_location: args[:lighting_exterior_fraction_lfl],
|
5739
|
+
lighting_type: HPXML::LightingTypeLFL)
|
5740
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5741
|
+
location: HPXML::LocationExterior,
|
5742
|
+
fraction_of_units_in_location: args[:lighting_exterior_fraction_led],
|
5743
|
+
lighting_type: HPXML::LightingTypeLED)
|
5744
|
+
hpxml.lighting.exterior_usage_multiplier = exterior_usage_multiplier
|
5745
|
+
end
|
5746
|
+
|
5747
|
+
# Garage
|
5748
|
+
if has_garage
|
5749
|
+
if args[:lighting_garage_usage_multiplier].is_initialized
|
5750
|
+
garage_usage_multiplier = args[:lighting_garage_usage_multiplier].get
|
5751
|
+
end
|
5752
|
+
if garage_usage_multiplier.nil? || garage_usage_multiplier.to_f > 0
|
5753
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5754
|
+
location: HPXML::LocationGarage,
|
5755
|
+
fraction_of_units_in_location: args[:lighting_garage_fraction_cfl],
|
5756
|
+
lighting_type: HPXML::LightingTypeCFL)
|
5757
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5758
|
+
location: HPXML::LocationGarage,
|
5759
|
+
fraction_of_units_in_location: args[:lighting_garage_fraction_lfl],
|
5760
|
+
lighting_type: HPXML::LightingTypeLFL)
|
5761
|
+
hpxml.lighting_groups.add(id: "LightingGroup#{hpxml.lighting_groups.size + 1}",
|
5762
|
+
location: HPXML::LocationGarage,
|
5763
|
+
fraction_of_units_in_location: args[:lighting_garage_fraction_led],
|
5764
|
+
lighting_type: HPXML::LightingTypeLED)
|
5765
|
+
hpxml.lighting.garage_usage_multiplier = garage_usage_multiplier
|
5766
|
+
end
|
5602
5767
|
end
|
5603
|
-
elsif args[:ceiling_fan_present]
|
5604
|
-
hpxml.lighting.interior_usage_multiplier = 0.0
|
5605
|
-
hpxml.lighting.exterior_usage_multiplier = 0.0
|
5606
|
-
hpxml.lighting.garage_usage_multiplier = 0.0
|
5607
5768
|
end
|
5608
5769
|
|
5609
5770
|
return unless args[:holiday_lighting_present]
|
@@ -5615,7 +5776,7 @@ class HPXMLFile
|
|
5615
5776
|
end
|
5616
5777
|
|
5617
5778
|
if args[:holiday_lighting_period].is_initialized
|
5618
|
-
begin_month, begin_day, end_month, end_day = Schedule.
|
5779
|
+
begin_month, begin_day, _begin_hour, end_month, end_day, _end_hour = Schedule.parse_date_time_range(args[:holiday_lighting_period].get)
|
5619
5780
|
hpxml.lighting.holiday_period_begin_month = begin_month
|
5620
5781
|
hpxml.lighting.holiday_period_begin_day = begin_day
|
5621
5782
|
hpxml.lighting.holiday_period_end_month = end_month
|
@@ -5899,14 +6060,14 @@ class HPXMLFile
|
|
5899
6060
|
|
5900
6061
|
hpxml.ceiling_fans.add(id: "CeilingFan#{hpxml.ceiling_fans.size + 1}",
|
5901
6062
|
efficiency: efficiency,
|
5902
|
-
|
6063
|
+
count: quantity)
|
5903
6064
|
end
|
5904
6065
|
|
5905
6066
|
def self.set_misc_plug_loads_television(hpxml, args)
|
5906
6067
|
return unless args[:misc_plug_loads_television_present]
|
5907
6068
|
|
5908
6069
|
if args[:misc_plug_loads_television_annual_kwh].is_initialized
|
5909
|
-
|
6070
|
+
kwh_per_year = args[:misc_plug_loads_television_annual_kwh].get
|
5910
6071
|
end
|
5911
6072
|
|
5912
6073
|
if args[:misc_plug_loads_television_usage_multiplier].is_initialized
|
@@ -5915,13 +6076,13 @@ class HPXMLFile
|
|
5915
6076
|
|
5916
6077
|
hpxml.plug_loads.add(id: "PlugLoad#{hpxml.plug_loads.size + 1}",
|
5917
6078
|
plug_load_type: HPXML::PlugLoadTypeTelevision,
|
5918
|
-
|
6079
|
+
kwh_per_year: kwh_per_year,
|
5919
6080
|
usage_multiplier: usage_multiplier)
|
5920
6081
|
end
|
5921
6082
|
|
5922
6083
|
def self.set_misc_plug_loads_other(hpxml, args)
|
5923
6084
|
if args[:misc_plug_loads_other_annual_kwh].is_initialized
|
5924
|
-
|
6085
|
+
kwh_per_year = args[:misc_plug_loads_other_annual_kwh].get
|
5925
6086
|
end
|
5926
6087
|
|
5927
6088
|
if args[:misc_plug_loads_other_frac_sensible].is_initialized
|
@@ -5938,7 +6099,7 @@ class HPXMLFile
|
|
5938
6099
|
|
5939
6100
|
hpxml.plug_loads.add(id: "PlugLoad#{hpxml.plug_loads.size + 1}",
|
5940
6101
|
plug_load_type: HPXML::PlugLoadTypeOther,
|
5941
|
-
|
6102
|
+
kwh_per_year: kwh_per_year,
|
5942
6103
|
frac_sensible: frac_sensible,
|
5943
6104
|
frac_latent: frac_latent,
|
5944
6105
|
usage_multiplier: usage_multiplier)
|
@@ -5948,7 +6109,7 @@ class HPXMLFile
|
|
5948
6109
|
return unless args[:misc_plug_loads_well_pump_present]
|
5949
6110
|
|
5950
6111
|
if args[:misc_plug_loads_well_pump_annual_kwh].is_initialized
|
5951
|
-
|
6112
|
+
kwh_per_year = args[:misc_plug_loads_well_pump_annual_kwh].get
|
5952
6113
|
end
|
5953
6114
|
|
5954
6115
|
if args[:misc_plug_loads_well_pump_usage_multiplier].is_initialized
|
@@ -5957,7 +6118,7 @@ class HPXMLFile
|
|
5957
6118
|
|
5958
6119
|
hpxml.plug_loads.add(id: "PlugLoad#{hpxml.plug_loads.size + 1}",
|
5959
6120
|
plug_load_type: HPXML::PlugLoadTypeWellPump,
|
5960
|
-
|
6121
|
+
kwh_per_year: kwh_per_year,
|
5961
6122
|
usage_multiplier: usage_multiplier)
|
5962
6123
|
end
|
5963
6124
|
|
@@ -5965,7 +6126,7 @@ class HPXMLFile
|
|
5965
6126
|
return unless args[:misc_plug_loads_vehicle_present]
|
5966
6127
|
|
5967
6128
|
if args[:misc_plug_loads_vehicle_annual_kwh].is_initialized
|
5968
|
-
|
6129
|
+
kwh_per_year = args[:misc_plug_loads_vehicle_annual_kwh].get
|
5969
6130
|
end
|
5970
6131
|
|
5971
6132
|
if args[:misc_plug_loads_vehicle_usage_multiplier].is_initialized
|
@@ -5974,7 +6135,7 @@ class HPXMLFile
|
|
5974
6135
|
|
5975
6136
|
hpxml.plug_loads.add(id: "PlugLoad#{hpxml.plug_loads.size + 1}",
|
5976
6137
|
plug_load_type: HPXML::PlugLoadTypeElectricVehicleCharging,
|
5977
|
-
|
6138
|
+
kwh_per_year: kwh_per_year,
|
5978
6139
|
usage_multiplier: usage_multiplier)
|
5979
6140
|
end
|
5980
6141
|
|
@@ -6125,6 +6286,91 @@ class HPXMLFile
|
|
6125
6286
|
heater_load_value: heater_load_value,
|
6126
6287
|
heater_usage_multiplier: heater_usage_multiplier)
|
6127
6288
|
end
|
6289
|
+
|
6290
|
+
def self.collapse_surfaces(hpxml, args)
|
6291
|
+
if args[:combine_like_surfaces].is_initialized && args[:combine_like_surfaces].get
|
6292
|
+
# Collapse some surfaces whose azimuth is a minor effect to simplify HPXMLs.
|
6293
|
+
(hpxml.roofs + hpxml.rim_joists + hpxml.walls + hpxml.foundation_walls).each do |surface|
|
6294
|
+
surface.azimuth = nil
|
6295
|
+
end
|
6296
|
+
hpxml.collapse_enclosure_surfaces()
|
6297
|
+
else
|
6298
|
+
# Collapse surfaces so that we don't get, e.g., individual windows
|
6299
|
+
# or the front wall split because of the door. Exclude foundation walls
|
6300
|
+
# from the list so we get all 4 foundation walls.
|
6301
|
+
hpxml.collapse_enclosure_surfaces([:roofs, :walls, :rim_joists, :floors,
|
6302
|
+
:slabs, :windows, :skylights, :doors])
|
6303
|
+
end
|
6304
|
+
|
6305
|
+
# After surfaces are collapsed, round all areas
|
6306
|
+
(hpxml.roofs +
|
6307
|
+
hpxml.rim_joists +
|
6308
|
+
hpxml.walls +
|
6309
|
+
hpxml.foundation_walls +
|
6310
|
+
hpxml.floors +
|
6311
|
+
hpxml.slabs +
|
6312
|
+
hpxml.windows +
|
6313
|
+
hpxml.skylights +
|
6314
|
+
hpxml.doors).each do |s|
|
6315
|
+
s.area = s.area.round(1)
|
6316
|
+
end
|
6317
|
+
end
|
6318
|
+
|
6319
|
+
def self.renumber_hpxml_ids(hpxml)
|
6320
|
+
# Renumber surfaces
|
6321
|
+
{ hpxml.walls => 'Wall',
|
6322
|
+
hpxml.foundation_walls => 'FoundationWall',
|
6323
|
+
hpxml.rim_joists => 'RimJoist',
|
6324
|
+
hpxml.floors => 'Floor',
|
6325
|
+
hpxml.roofs => 'Roof',
|
6326
|
+
hpxml.slabs => 'Slab',
|
6327
|
+
hpxml.windows => 'Window',
|
6328
|
+
hpxml.doors => 'Door',
|
6329
|
+
hpxml.skylights => 'Skylight' }.each do |surfs, surf_name|
|
6330
|
+
surfs.each_with_index do |surf, i|
|
6331
|
+
(hpxml.attics + hpxml.foundations).each do |attic_or_fnd|
|
6332
|
+
if attic_or_fnd.respond_to?(:attached_to_roof_idrefs) && !attic_or_fnd.attached_to_roof_idrefs.nil? && !attic_or_fnd.attached_to_roof_idrefs.delete(surf.id).nil?
|
6333
|
+
attic_or_fnd.attached_to_roof_idrefs << "#{surf_name}#{i + 1}"
|
6334
|
+
end
|
6335
|
+
if attic_or_fnd.respond_to?(:attached_to_wall_idrefs) && !attic_or_fnd.attached_to_wall_idrefs.nil? && !attic_or_fnd.attached_to_wall_idrefs.delete(surf.id).nil?
|
6336
|
+
attic_or_fnd.attached_to_wall_idrefs << "#{surf_name}#{i + 1}"
|
6337
|
+
end
|
6338
|
+
if attic_or_fnd.respond_to?(:attached_to_rim_joist_idrefs) && !attic_or_fnd.attached_to_rim_joist_idrefs.nil? && !attic_or_fnd.attached_to_rim_joist_idrefs.delete(surf.id).nil?
|
6339
|
+
attic_or_fnd.attached_to_rim_joist_idrefs << "#{surf_name}#{i + 1}"
|
6340
|
+
end
|
6341
|
+
if attic_or_fnd.respond_to?(:attached_to_floor_idrefs) && !attic_or_fnd.attached_to_floor_idrefs.nil? && !attic_or_fnd.attached_to_floor_idrefs.delete(surf.id).nil?
|
6342
|
+
attic_or_fnd.attached_to_floor_idrefs << "#{surf_name}#{i + 1}"
|
6343
|
+
end
|
6344
|
+
if attic_or_fnd.respond_to?(:attached_to_slab_idrefs) && !attic_or_fnd.attached_to_slab_idrefs.nil? && !attic_or_fnd.attached_to_slab_idrefs.delete(surf.id).nil?
|
6345
|
+
attic_or_fnd.attached_to_slab_idrefs << "#{surf_name}#{i + 1}"
|
6346
|
+
end
|
6347
|
+
if attic_or_fnd.respond_to?(:attached_to_foundation_wall_idrefs) && !attic_or_fnd.attached_to_foundation_wall_idrefs.nil? && !attic_or_fnd.attached_to_foundation_wall_idrefs.delete(surf.id).nil?
|
6348
|
+
attic_or_fnd.attached_to_foundation_wall_idrefs << "#{surf_name}#{i + 1}"
|
6349
|
+
end
|
6350
|
+
end
|
6351
|
+
(hpxml.windows + hpxml.doors).each do |subsurf|
|
6352
|
+
if subsurf.respond_to?(:wall_idref) && (subsurf.wall_idref == surf.id)
|
6353
|
+
subsurf.wall_idref = "#{surf_name}#{i + 1}"
|
6354
|
+
end
|
6355
|
+
end
|
6356
|
+
hpxml.skylights.each do |subsurf|
|
6357
|
+
if subsurf.respond_to?(:roof_idref) && (subsurf.roof_idref == surf.id)
|
6358
|
+
subsurf.roof_idref = "#{surf_name}#{i + 1}"
|
6359
|
+
end
|
6360
|
+
end
|
6361
|
+
surf.id = "#{surf_name}#{i + 1}"
|
6362
|
+
if surf.respond_to? :insulation_id
|
6363
|
+
surf.insulation_id = "#{surf_name}#{i + 1}Insulation"
|
6364
|
+
end
|
6365
|
+
if surf.respond_to? :perimeter_insulation_id
|
6366
|
+
surf.perimeter_insulation_id = "#{surf_name}#{i + 1}PerimeterInsulation"
|
6367
|
+
end
|
6368
|
+
if surf.respond_to? :under_slab_insulation_id
|
6369
|
+
surf.under_slab_insulation_id = "#{surf_name}#{i + 1}UnderSlabInsulation"
|
6370
|
+
end
|
6371
|
+
end
|
6372
|
+
end
|
6373
|
+
end
|
6128
6374
|
end
|
6129
6375
|
|
6130
6376
|
# register the measure to be used by the application
|