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
@@ -49,13 +49,13 @@ XMLHelper.write_file(hpxml.to_oga, "out.xml")
|
|
49
49
|
|
50
50
|
class HPXML < Object
|
51
51
|
HPXML_ATTRS = [:header, :site, :neighbor_buildings, :building_occupancy, :building_construction,
|
52
|
-
:climate_and_risk_zones, :
|
53
|
-
:roofs, :rim_joists, :walls, :foundation_walls, :floors, :slabs, :windows,
|
52
|
+
:climate_and_risk_zones, :air_infiltration, :air_infiltration_measurements, :attics,
|
53
|
+
:foundations, :roofs, :rim_joists, :walls, :foundation_walls, :floors, :slabs, :windows,
|
54
54
|
:skylights, :doors, :partition_wall_mass, :furniture_mass, :heating_systems,
|
55
55
|
:cooling_systems, :heat_pumps, :hvac_plant, :hvac_controls, :hvac_distributions,
|
56
56
|
:ventilation_fans, :water_heating_systems, :hot_water_distributions, :water_fixtures,
|
57
|
-
:water_heating, :solar_thermal_systems, :pv_systems, :
|
58
|
-
:clothes_washers, :clothes_dryers, :dishwashers, :refrigerators,
|
57
|
+
:water_heating, :solar_thermal_systems, :pv_systems, :inverters, :generators,
|
58
|
+
:batteries, :clothes_washers, :clothes_dryers, :dishwashers, :refrigerators,
|
59
59
|
:freezers, :dehumidifiers, :cooking_ranges, :ovens, :lighting_groups, :lighting,
|
60
60
|
:ceiling_fans, :pools, :hot_tubs, :plug_loads, :fuel_loads]
|
61
61
|
attr_reader(*HPXML_ATTRS, :doc, :errors, :warnings, :hpxml_path)
|
@@ -75,6 +75,7 @@ class HPXML < Object
|
|
75
75
|
AtticTypeUnvented = 'UnventedAttic'
|
76
76
|
AtticTypeVented = 'VentedAttic'
|
77
77
|
AtticWallTypeGable = 'gable'
|
78
|
+
AtticWallTypeKneeWall = 'knee wall'
|
78
79
|
BatteryTypeLithiumIon = 'Li-ion'
|
79
80
|
BatteryLifetimeModelNone = 'None'
|
80
81
|
BatteryLifetimeModelKandlerSmith = 'KandlerSmith'
|
@@ -92,6 +93,10 @@ class HPXML < Object
|
|
92
93
|
ColorReflective = 'reflective'
|
93
94
|
DehumidifierTypePortable = 'portable'
|
94
95
|
DehumidifierTypeWholeHome = 'whole-home'
|
96
|
+
DuctBuriedInsulationNone = 'not buried'
|
97
|
+
DuctBuriedInsulationPartial = 'partially buried'
|
98
|
+
DuctBuriedInsulationFull = 'fully buried'
|
99
|
+
DuctBuriedInsulationDeep = 'deeply buried'
|
95
100
|
DHWRecirControlTypeManual = 'manual demand control'
|
96
101
|
DHWRecirControlTypeNone = 'no control'
|
97
102
|
DHWRecirControlTypeSensor = 'presence sensor demand control'
|
@@ -199,6 +204,8 @@ class HPXML < Object
|
|
199
204
|
InteriorFinishNone = 'none'
|
200
205
|
InteriorFinishPlaster = 'plaster'
|
201
206
|
InteriorFinishWood = 'wood'
|
207
|
+
InfiltrationTypeUnitTotal = 'unit total'
|
208
|
+
InfiltrationTypeUnitExterior = 'unit exterior only'
|
202
209
|
LeakinessTight = 'tight'
|
203
210
|
LeakinessAverage = 'average'
|
204
211
|
LightingTypeCFL = 'CompactFluorescent'
|
@@ -236,8 +243,6 @@ class HPXML < Object
|
|
236
243
|
MechVentTypeExhaust = 'exhaust only'
|
237
244
|
MechVentTypeHRV = 'heat recovery ventilator'
|
238
245
|
MechVentTypeSupply = 'supply only'
|
239
|
-
OccupancyCalculationTypeAsset = 'asset'
|
240
|
-
OccupancyCalculationTypeOperational = 'operational'
|
241
246
|
OrientationEast = 'east'
|
242
247
|
OrientationNorth = 'north'
|
243
248
|
OrientationNortheast = 'northeast'
|
@@ -274,6 +279,9 @@ class HPXML < Object
|
|
274
279
|
RoofTypePlasticRubber = 'plastic/rubber/synthetic sheeting'
|
275
280
|
RoofTypeShingles = 'shingles'
|
276
281
|
RoofTypeWoodShingles = 'wood shingles or shakes'
|
282
|
+
ScheduleRegular = 'regular schedule'
|
283
|
+
ScheduleAvailable = 'always available'
|
284
|
+
ScheduleUnavailable = 'always unavailable'
|
277
285
|
ShieldingExposed = 'exposed'
|
278
286
|
ShieldingNormal = 'normal'
|
279
287
|
ShieldingWellShielded = 'well-shielded'
|
@@ -313,11 +321,13 @@ class HPXML < Object
|
|
313
321
|
UnitsCFM = 'CFM'
|
314
322
|
UnitsCFM25 = 'CFM25'
|
315
323
|
UnitsCFM50 = 'CFM50'
|
324
|
+
UnitsCFMNatural = 'CFMnatural'
|
316
325
|
UnitsCOP = 'COP'
|
317
326
|
UnitsDegFPerHour = 'F/hr'
|
318
327
|
UnitsDollars = '$'
|
319
328
|
UnitsDollarsPerkW = '$/kW'
|
320
329
|
UnitsEER = 'EER'
|
330
|
+
UnitsELA = 'EffectiveLeakageArea'
|
321
331
|
UnitsCEER = 'CEER'
|
322
332
|
UnitsHSPF = 'HSPF'
|
323
333
|
UnitsHSPF2 = 'HSPF2'
|
@@ -349,7 +359,7 @@ class HPXML < Object
|
|
349
359
|
WallTypeWoodStud = 'WoodStud'
|
350
360
|
WaterFixtureTypeFaucet = 'faucet'
|
351
361
|
WaterFixtureTypeShowerhead = 'shower head'
|
352
|
-
|
362
|
+
WaterHeaterOperatingModeHybridAuto = 'hybrid/auto'
|
353
363
|
WaterHeaterOperatingModeHeatPumpOnly = 'heat pump only'
|
354
364
|
WaterHeaterTankModelTypeMixed = 'mixed'
|
355
365
|
WaterHeaterTankModelTypeStratified = 'stratified'
|
@@ -389,7 +399,7 @@ class HPXML < Object
|
|
389
399
|
WindowClassResidential = 'residential'
|
390
400
|
WindowClassLightCommercial = 'light commercial'
|
391
401
|
|
392
|
-
def initialize(hpxml_path: nil,
|
402
|
+
def initialize(hpxml_path: nil, schema_validator: nil, schematron_validator: nil, building_id: nil)
|
393
403
|
@doc = nil
|
394
404
|
@hpxml_path = hpxml_path
|
395
405
|
@errors = []
|
@@ -399,8 +409,9 @@ class HPXML < Object
|
|
399
409
|
if not hpxml_path.nil?
|
400
410
|
@doc = XMLHelper.parse_file(hpxml_path)
|
401
411
|
|
402
|
-
|
403
|
-
|
412
|
+
# Validate against XSD schema
|
413
|
+
if not schema_validator.nil?
|
414
|
+
xsd_errors, xsd_warnings = XMLValidator.validate_against_schema(hpxml_path, schema_validator)
|
404
415
|
@errors += xsd_errors
|
405
416
|
@warnings += xsd_warnings
|
406
417
|
return unless @errors.empty?
|
@@ -410,14 +421,10 @@ class HPXML < Object
|
|
410
421
|
hpxml = XMLHelper.get_element(@doc, '/HPXML')
|
411
422
|
Version.check_hpxml_version(XMLHelper.get_attribute_value(hpxml, 'schemaVersion'))
|
412
423
|
|
413
|
-
if not schematron_path.nil?
|
414
|
-
sct_errors, sct_warnings = XMLValidator.validate_against_schematron(hpxml_path, schematron_path, hpxml)
|
415
|
-
@errors += sct_errors
|
416
|
-
@warnings += sct_warnings
|
417
|
-
return unless @errors.empty?
|
418
|
-
end
|
419
|
-
|
420
424
|
# Handle multiple buildings
|
425
|
+
# Do this before schematron validation so that:
|
426
|
+
# 1. We don't give schematron warnings for Building elements that are not of interest.
|
427
|
+
# 2. The schematron validation occurs faster (as we're only validating one Building).
|
421
428
|
if XMLHelper.get_elements(hpxml, 'Building').size > 1
|
422
429
|
if building_id.nil?
|
423
430
|
@errors << 'Multiple Building elements defined in HPXML file; Building ID argument must be provided.'
|
@@ -434,6 +441,18 @@ class HPXML < Object
|
|
434
441
|
@errors << "Could not find Building element with ID '#{building_id}'."
|
435
442
|
return unless @errors.empty?
|
436
443
|
end
|
444
|
+
|
445
|
+
# Write new HPXML file with all other Building elements removed
|
446
|
+
hpxml_path = Tempfile.new(['hpxml', '.xml']).path.to_s
|
447
|
+
XMLHelper.write_file(hpxml, hpxml_path)
|
448
|
+
end
|
449
|
+
|
450
|
+
# Validate against Schematron
|
451
|
+
if not schematron_validator.nil?
|
452
|
+
sct_errors, sct_warnings = XMLValidator.validate_against_schematron(hpxml_path, schematron_validator, hpxml)
|
453
|
+
@errors += sct_errors
|
454
|
+
@warnings += sct_warnings
|
455
|
+
return unless @errors.empty?
|
437
456
|
end
|
438
457
|
end
|
439
458
|
|
@@ -443,13 +462,6 @@ class HPXML < Object
|
|
443
462
|
# Check for additional errors (those hard to check via Schematron)
|
444
463
|
@errors += check_for_errors()
|
445
464
|
return unless @errors.empty?
|
446
|
-
|
447
|
-
# Clean up
|
448
|
-
delete_tiny_surfaces()
|
449
|
-
delete_adiabatic_subsurfaces()
|
450
|
-
if collapse_enclosure
|
451
|
-
collapse_enclosure_surfaces()
|
452
|
-
end
|
453
465
|
end
|
454
466
|
|
455
467
|
def hvac_systems
|
@@ -533,7 +545,7 @@ class HPXML < Object
|
|
533
545
|
|
534
546
|
def fraction_of_windows_operable()
|
535
547
|
# Calculates the fraction of windows that are operable.
|
536
|
-
# Since we don't have
|
548
|
+
# Since we don't have count available, we use area as an approximation.
|
537
549
|
window_area_total = @windows.map { |w| w.area }.sum(0.0)
|
538
550
|
window_area_operable = @windows.map { |w| w.fraction_operable * w.area }.sum(0.0)
|
539
551
|
if window_area_total <= 0
|
@@ -605,7 +617,7 @@ class HPXML < Object
|
|
605
617
|
def compartmentalization_boundary_areas()
|
606
618
|
# Returns the infiltration compartmentalization boundary areas
|
607
619
|
total_area = 0.0 # Total surface area that bounds the Infiltration Volume
|
608
|
-
exterior_area = 0.0 # Same as above excluding surfaces attached to garage or other
|
620
|
+
exterior_area = 0.0 # Same as above excluding surfaces attached to garage, other housing units, or other multifamily spaces (see 301-2019 Addendum B)
|
609
621
|
|
610
622
|
# Determine which spaces are within infiltration volume
|
611
623
|
spaces_within_infil_volume = HPXML::conditioned_locations_this_unit
|
@@ -705,6 +717,7 @@ class HPXML < Object
|
|
705
717
|
@building_construction.to_oga(@doc)
|
706
718
|
@climate_and_risk_zones.to_oga(@doc)
|
707
719
|
@air_infiltration_measurements.to_oga(@doc)
|
720
|
+
@air_infiltration.to_oga(@doc)
|
708
721
|
@attics.to_oga(@doc)
|
709
722
|
@foundations.to_oga(@doc)
|
710
723
|
@roofs.to_oga(@doc)
|
@@ -731,6 +744,7 @@ class HPXML < Object
|
|
731
744
|
@water_heating.to_oga(@doc)
|
732
745
|
@solar_thermal_systems.to_oga(@doc)
|
733
746
|
@pv_systems.to_oga(@doc)
|
747
|
+
@inverters.to_oga(@doc)
|
734
748
|
@batteries.to_oga(@doc)
|
735
749
|
@generators.to_oga(@doc)
|
736
750
|
@clothes_washers.to_oga(@doc)
|
@@ -759,6 +773,7 @@ class HPXML < Object
|
|
759
773
|
@building_construction = BuildingConstruction.new(self, hpxml)
|
760
774
|
@climate_and_risk_zones = ClimateandRiskZones.new(self, hpxml)
|
761
775
|
@air_infiltration_measurements = AirInfiltrationMeasurements.new(self, hpxml)
|
776
|
+
@air_infiltration = AirInfiltration.new(self, hpxml)
|
762
777
|
@attics = Attics.new(self, hpxml)
|
763
778
|
@foundations = Foundations.new(self, hpxml)
|
764
779
|
@roofs = Roofs.new(self, hpxml)
|
@@ -785,6 +800,7 @@ class HPXML < Object
|
|
785
800
|
@water_heating = WaterHeating.new(self, hpxml)
|
786
801
|
@solar_thermal_systems = SolarThermalSystems.new(self, hpxml)
|
787
802
|
@pv_systems = PVSystems.new(self, hpxml)
|
803
|
+
@inverters = Inverters.new(self, hpxml)
|
788
804
|
@batteries = Batteries.new(self, hpxml)
|
789
805
|
@generators = Generators.new(self, hpxml)
|
790
806
|
@clothes_washers = ClothesWashers.new(self, hpxml)
|
@@ -919,22 +935,26 @@ class HPXML < Object
|
|
919
935
|
def initialize(hpxml_object, *args)
|
920
936
|
@emissions_scenarios = EmissionsScenarios.new(hpxml_object)
|
921
937
|
@utility_bill_scenarios = UtilityBillScenarios.new(hpxml_object)
|
938
|
+
@unavailable_periods = UnavailablePeriods.new(hpxml_object)
|
922
939
|
super(hpxml_object, *args)
|
923
940
|
end
|
924
941
|
ATTRS = [:xml_type, :xml_generated_by, :created_date_and_time, :transaction,
|
925
942
|
:software_program_used, :software_program_version, :eri_calculation_version,
|
926
|
-
:timestep, :building_id, :event_type, :state_code, :zip_code,
|
943
|
+
:co2index_calculation_version, :timestep, :building_id, :event_type, :state_code, :zip_code,
|
927
944
|
:egrid_region, :egrid_subregion, :cambium_region_gea, :time_zone_utc_offset,
|
928
945
|
:sim_begin_month, :sim_begin_day, :sim_end_month, :sim_end_day, :sim_calendar_year,
|
929
946
|
:dst_enabled, :dst_begin_month, :dst_begin_day, :dst_end_month, :dst_end_day,
|
930
|
-
:heat_pump_sizing_methodology, :allow_increased_fixed_capacities,
|
931
|
-
:
|
932
|
-
:
|
933
|
-
:
|
934
|
-
:
|
947
|
+
:heat_pump_sizing_methodology, :allow_increased_fixed_capacities, :apply_ashrae140_assumptions,
|
948
|
+
:energystar_calculation_version, :schedules_filepaths, :extension_properties, :iecc_eri_calculation_version,
|
949
|
+
:zerh_calculation_version, :temperature_capacitance_multiplier, :natvent_days_per_week,
|
950
|
+
:shading_summer_begin_month, :shading_summer_begin_day, :shading_summer_end_month,
|
951
|
+
:shading_summer_end_day, :manualj_heating_design_temp, :manualj_cooling_design_temp,
|
952
|
+
:manualj_heating_setpoint, :manualj_cooling_setpoint, :manualj_humidity_setpoint,
|
953
|
+
:manualj_internal_loads_sensible, :manualj_internal_loads_latent, :manualj_num_occupants]
|
935
954
|
attr_accessor(*ATTRS)
|
936
955
|
attr_reader(:emissions_scenarios)
|
937
956
|
attr_reader(:utility_bill_scenarios)
|
957
|
+
attr_reader(:unavailable_periods)
|
938
958
|
|
939
959
|
def check_for_errors
|
940
960
|
errors = []
|
@@ -954,8 +974,10 @@ class HPXML < Object
|
|
954
974
|
end
|
955
975
|
|
956
976
|
errors += HPXML::check_dates('Daylight Saving', @dst_begin_month, @dst_begin_day, @dst_end_month, @dst_end_day)
|
977
|
+
errors += HPXML::check_dates('Shading Summer Season', @shading_summer_begin_month, @shading_summer_begin_day, @shading_summer_end_month, @shading_summer_end_day)
|
957
978
|
errors += @emissions_scenarios.check_for_errors
|
958
979
|
errors += @utility_bill_scenarios.check_for_errors
|
980
|
+
errors += @unavailable_periods.check_for_errors
|
959
981
|
|
960
982
|
return errors
|
961
983
|
end
|
@@ -977,12 +999,12 @@ class HPXML < Object
|
|
977
999
|
software_info = XMLHelper.add_element(hpxml, 'SoftwareInfo')
|
978
1000
|
XMLHelper.add_element(software_info, 'SoftwareProgramUsed', @software_program_used, :string) unless @software_program_used.nil?
|
979
1001
|
XMLHelper.add_element(software_info, 'SoftwareProgramVersion', @software_program_version, :string) unless @software_program_version.nil?
|
980
|
-
XMLHelper.add_extension(software_info, 'OccupancyCalculationType', @occupancy_calculation_type, :string, @occupancy_calculation_type_isdefaulted) unless @occupancy_calculation_type.nil?
|
981
1002
|
XMLHelper.add_extension(software_info, 'ApplyASHRAE140Assumptions', @apply_ashrae140_assumptions, :boolean) unless @apply_ashrae140_assumptions.nil?
|
982
|
-
{
|
983
|
-
|
984
|
-
|
985
|
-
|
1003
|
+
{ 'ERICalculation' => @eri_calculation_version,
|
1004
|
+
'CO2IndexCalculation' => @co2index_calculation_version,
|
1005
|
+
'EnergyStarCalculation' => @energystar_calculation_version,
|
1006
|
+
'IECCERICalculation' => @iecc_eri_calculation_version,
|
1007
|
+
'ZERHCalculation' => @zerh_calculation_version }.each do |element_name, calculation_version|
|
986
1008
|
next if calculation_version.nil?
|
987
1009
|
|
988
1010
|
extension = XMLHelper.create_elements_as_needed(software_info, ['extension'])
|
@@ -1005,6 +1027,17 @@ class HPXML < Object
|
|
1005
1027
|
XMLHelper.add_element(hvac_sizing_control, 'HeatPumpSizingMethodology', @heat_pump_sizing_methodology, :string, @heat_pump_sizing_methodology_isdefaulted) unless @heat_pump_sizing_methodology.nil?
|
1006
1028
|
XMLHelper.add_element(hvac_sizing_control, 'AllowIncreasedFixedCapacities', @allow_increased_fixed_capacities, :boolean, @allow_increased_fixed_capacities_isdefaulted) unless @allow_increased_fixed_capacities.nil?
|
1007
1029
|
end
|
1030
|
+
if (not @manualj_heating_design_temp.nil?) || (not @manualj_cooling_design_temp.nil?) || (not @manualj_heating_setpoint.nil?) || (not @manualj_cooling_setpoint.nil?) || (not @manualj_humidity_setpoint.nil?) || (not @manualj_internal_loads_sensible.nil?) || (not @manualj_internal_loads_latent.nil?) || (not @manualj_num_occupants.nil?)
|
1031
|
+
manualj_sizing_inputs = XMLHelper.create_elements_as_needed(software_info, ['extension', 'HVACSizingControl', 'ManualJInputs'])
|
1032
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'HeatingDesignTemperature', @manualj_heating_design_temp, :float, @manualj_heating_design_temp_isdefaulted) unless @manualj_heating_design_temp.nil?
|
1033
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'CoolingDesignTemperature', @manualj_cooling_design_temp, :float, @manualj_cooling_design_temp_isdefaulted) unless @manualj_cooling_design_temp.nil?
|
1034
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'HeatingSetpoint', @manualj_heating_setpoint, :float, @manualj_heating_setpoint_isdefaulted) unless @manualj_heating_setpoint.nil?
|
1035
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'CoolingSetpoint', @manualj_cooling_setpoint, :float, @manualj_cooling_setpoint_isdefaulted) unless @manualj_cooling_setpoint.nil?
|
1036
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'HumiditySetpoint', @manualj_humidity_setpoint, :float, @manualj_humidity_setpoint_isdefaulted) unless @manualj_humidity_setpoint.nil?
|
1037
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'InternalLoadsSensible', @manualj_internal_loads_sensible, :float, @manualj_internal_loads_sensible_isdefaulted) unless @manualj_internal_loads_sensible.nil?
|
1038
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'InternalLoadsLatent', @manualj_internal_loads_latent, :float, @manualj_internal_loads_latent_isdefaulted) unless @manualj_internal_loads_latent.nil?
|
1039
|
+
XMLHelper.add_element(manualj_sizing_inputs, 'NumberofOccupants', @manualj_num_occupants, :integer, @manualj_num_occupants_isdefaulted) unless @manualj_num_occupants.nil?
|
1040
|
+
end
|
1008
1041
|
XMLHelper.add_extension(software_info, 'NaturalVentilationAvailabilityDaysperWeek', @natvent_days_per_week, :integer, @natvent_days_per_week_isdefaulted) unless @natvent_days_per_week.nil?
|
1009
1042
|
if (not @schedules_filepaths.nil?) && (not @schedules_filepaths.empty?)
|
1010
1043
|
extension = XMLHelper.create_elements_as_needed(software_info, ['extension'])
|
@@ -1012,6 +1045,13 @@ class HPXML < Object
|
|
1012
1045
|
XMLHelper.add_element(extension, 'SchedulesFilePath', schedules_filepath, :string)
|
1013
1046
|
end
|
1014
1047
|
end
|
1048
|
+
if (not @shading_summer_begin_month.nil?) || (not @shading_summer_begin_day.nil?) || (not @shading_summer_end_month.nil?) || (not @shading_summer_end_day.nil?)
|
1049
|
+
window_shading_season = XMLHelper.create_elements_as_needed(software_info, ['extension', 'ShadingControl'])
|
1050
|
+
XMLHelper.add_element(window_shading_season, 'SummerBeginMonth', @shading_summer_begin_month, :integer, @shading_summer_begin_month_isdefaulted) unless @shading_summer_begin_month.nil?
|
1051
|
+
XMLHelper.add_element(window_shading_season, 'SummerBeginDayOfMonth', @shading_summer_begin_day, :integer, @shading_summer_begin_day_isdefaulted) unless @shading_summer_begin_day.nil?
|
1052
|
+
XMLHelper.add_element(window_shading_season, 'SummerEndMonth', @shading_summer_end_month, :integer, @shading_summer_end_month_isdefaulted) unless @shading_summer_end_month.nil?
|
1053
|
+
XMLHelper.add_element(window_shading_season, 'SummerEndDayOfMonth', @shading_summer_end_day, :integer, @shading_summer_end_day_isdefaulted) unless @shading_summer_end_day.nil?
|
1054
|
+
end
|
1015
1055
|
if (not @extension_properties.nil?) && (not @extension_properties.empty?)
|
1016
1056
|
properties = XMLHelper.create_elements_as_needed(software_info, ['extension', 'AdditionalProperties'])
|
1017
1057
|
@extension_properties.each do |key, value|
|
@@ -1020,6 +1060,7 @@ class HPXML < Object
|
|
1020
1060
|
end
|
1021
1061
|
@emissions_scenarios.to_oga(software_info)
|
1022
1062
|
@utility_bill_scenarios.to_oga(software_info)
|
1063
|
+
@unavailable_periods.to_oga(software_info)
|
1023
1064
|
|
1024
1065
|
building = XMLHelper.add_element(hpxml, 'Building')
|
1025
1066
|
building_building_id = XMLHelper.add_element(building, 'BuildingID')
|
@@ -1066,6 +1107,7 @@ class HPXML < Object
|
|
1066
1107
|
@software_program_used = XMLHelper.get_value(hpxml, 'SoftwareInfo/SoftwareProgramUsed', :string)
|
1067
1108
|
@software_program_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/SoftwareProgramVersion', :string)
|
1068
1109
|
@eri_calculation_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ERICalculation/Version', :string)
|
1110
|
+
@co2index_calculation_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/CO2IndexCalculation/Version', :string)
|
1069
1111
|
@iecc_eri_calculation_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/IECCERICalculation/Version', :string)
|
1070
1112
|
@energystar_calculation_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/EnergyStarCalculation/Version', :string)
|
1071
1113
|
@zerh_calculation_version = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ZERHCalculation/Version', :string)
|
@@ -1076,11 +1118,22 @@ class HPXML < Object
|
|
1076
1118
|
@sim_end_day = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/EndDayOfMonth', :integer)
|
1077
1119
|
@sim_calendar_year = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/CalendarYear', :integer)
|
1078
1120
|
@temperature_capacitance_multiplier = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/SimulationControl/TemperatureCapacitanceMultiplier', :float)
|
1079
|
-
@occupancy_calculation_type = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/OccupancyCalculationType', :string)
|
1080
1121
|
@natvent_days_per_week = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/NaturalVentilationAvailabilityDaysperWeek', :integer)
|
1122
|
+
@shading_summer_begin_month = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ShadingControl/SummerBeginMonth', :integer)
|
1123
|
+
@shading_summer_begin_day = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ShadingControl/SummerBeginDayOfMonth', :integer)
|
1124
|
+
@shading_summer_end_month = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ShadingControl/SummerEndMonth', :integer)
|
1125
|
+
@shading_summer_end_day = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ShadingControl/SummerEndDayOfMonth', :integer)
|
1081
1126
|
@apply_ashrae140_assumptions = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/ApplyASHRAE140Assumptions', :boolean)
|
1082
1127
|
@heat_pump_sizing_methodology = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/HeatPumpSizingMethodology', :string)
|
1083
1128
|
@allow_increased_fixed_capacities = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/AllowIncreasedFixedCapacities', :boolean)
|
1129
|
+
@manualj_heating_design_temp = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/HeatingDesignTemperature', :float)
|
1130
|
+
@manualj_cooling_design_temp = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/CoolingDesignTemperature', :float)
|
1131
|
+
@manualj_heating_setpoint = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/HeatingSetpoint', :float)
|
1132
|
+
@manualj_cooling_setpoint = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/CoolingSetpoint', :float)
|
1133
|
+
@manualj_humidity_setpoint = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/HumiditySetpoint', :float)
|
1134
|
+
@manualj_internal_loads_sensible = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/InternalLoadsSensible', :float)
|
1135
|
+
@manualj_internal_loads_latent = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/InternalLoadsLatent', :float)
|
1136
|
+
@manualj_num_occupants = XMLHelper.get_value(hpxml, 'SoftwareInfo/extension/HVACSizingControl/ManualJInputs/NumberofOccupants', :integer)
|
1084
1137
|
@schedules_filepaths = XMLHelper.get_values(hpxml, 'SoftwareInfo/extension/SchedulesFilePath', :string)
|
1085
1138
|
@extension_properties = {}
|
1086
1139
|
XMLHelper.get_elements(hpxml, 'SoftwareInfo/extension/AdditionalProperties').each do |property|
|
@@ -1093,6 +1146,7 @@ class HPXML < Object
|
|
1093
1146
|
end
|
1094
1147
|
@emissions_scenarios.from_oga(XMLHelper.get_element(hpxml, 'SoftwareInfo'))
|
1095
1148
|
@utility_bill_scenarios.from_oga(XMLHelper.get_element(hpxml, 'SoftwareInfo'))
|
1149
|
+
@unavailable_periods.from_oga(XMLHelper.get_element(hpxml, 'SoftwareInfo'))
|
1096
1150
|
@building_id = HPXML::get_id(hpxml, 'Building/BuildingID')
|
1097
1151
|
@event_type = XMLHelper.get_value(hpxml, 'Building/ProjectStatus/EventType', :string)
|
1098
1152
|
@state_code = XMLHelper.get_value(hpxml, 'Building/Site/Address/StateCode', :string)
|
@@ -1329,6 +1383,61 @@ class HPXML < Object
|
|
1329
1383
|
end
|
1330
1384
|
end
|
1331
1385
|
|
1386
|
+
class UnavailablePeriods < BaseArrayElement
|
1387
|
+
def add(**kwargs)
|
1388
|
+
self << UnavailablePeriod.new(@hpxml_object, **kwargs)
|
1389
|
+
end
|
1390
|
+
|
1391
|
+
def from_oga(software_info)
|
1392
|
+
return if software_info.nil?
|
1393
|
+
|
1394
|
+
XMLHelper.get_elements(software_info, 'extension/UnavailablePeriods/UnavailablePeriod').each do |unavailable_period|
|
1395
|
+
self << UnavailablePeriod.new(@hpxml_object, unavailable_period)
|
1396
|
+
end
|
1397
|
+
end
|
1398
|
+
end
|
1399
|
+
|
1400
|
+
class UnavailablePeriod < BaseElement
|
1401
|
+
ATTRS = [:column_name, :begin_month, :begin_day, :begin_hour, :end_month, :end_day, :end_hour, :natvent_availability]
|
1402
|
+
attr_accessor(*ATTRS)
|
1403
|
+
|
1404
|
+
def delete
|
1405
|
+
@hpxml_object.header.unavailable_periods.delete(self)
|
1406
|
+
end
|
1407
|
+
|
1408
|
+
def check_for_errors
|
1409
|
+
errors = []
|
1410
|
+
errors += HPXML::check_dates('Unavailable Period', @begin_month, @begin_day, @end_month, @end_day)
|
1411
|
+
return errors
|
1412
|
+
end
|
1413
|
+
|
1414
|
+
def to_oga(software_info)
|
1415
|
+
unavailable_periods = XMLHelper.create_elements_as_needed(software_info, ['extension', 'UnavailablePeriods'])
|
1416
|
+
unavailable_period = XMLHelper.add_element(unavailable_periods, 'UnavailablePeriod')
|
1417
|
+
XMLHelper.add_element(unavailable_period, 'ColumnName', @column_name, :string) unless @column_name.nil?
|
1418
|
+
XMLHelper.add_element(unavailable_period, 'BeginMonth', @begin_month, :integer, @begin_month_isdefaulted) unless @begin_month.nil?
|
1419
|
+
XMLHelper.add_element(unavailable_period, 'BeginDayOfMonth', @begin_day, :integer, @begin_day_isdefaulted) unless @begin_day.nil?
|
1420
|
+
XMLHelper.add_element(unavailable_period, 'BeginHourOfDay', @begin_hour, :integer, @begin_hour_isdefaulted) unless @begin_hour.nil?
|
1421
|
+
XMLHelper.add_element(unavailable_period, 'EndMonth', @end_month, :integer, @end_month_isdefaulted) unless @end_month.nil?
|
1422
|
+
XMLHelper.add_element(unavailable_period, 'EndDayOfMonth', @end_day, :integer, @end_day_isdefaulted) unless @end_day.nil?
|
1423
|
+
XMLHelper.add_element(unavailable_period, 'EndHourOfDay', @end_hour, :integer, @end_hour_isdefaulted) unless @end_hour.nil?
|
1424
|
+
XMLHelper.add_element(unavailable_period, 'NaturalVentilation', @natvent_availability, :string, @natvent_availability_isdefaulted) unless @natvent_availability.nil?
|
1425
|
+
end
|
1426
|
+
|
1427
|
+
def from_oga(unavailable_period)
|
1428
|
+
return if unavailable_period.nil?
|
1429
|
+
|
1430
|
+
@column_name = XMLHelper.get_value(unavailable_period, 'ColumnName', :string)
|
1431
|
+
@begin_month = XMLHelper.get_value(unavailable_period, 'BeginMonth', :integer)
|
1432
|
+
@begin_day = XMLHelper.get_value(unavailable_period, 'BeginDayOfMonth', :integer)
|
1433
|
+
@begin_hour = XMLHelper.get_value(unavailable_period, 'BeginHourOfDay', :integer)
|
1434
|
+
@end_month = XMLHelper.get_value(unavailable_period, 'EndMonth', :integer)
|
1435
|
+
@end_day = XMLHelper.get_value(unavailable_period, 'EndDayOfMonth', :integer)
|
1436
|
+
@end_hour = XMLHelper.get_value(unavailable_period, 'EndHourOfDay', :integer)
|
1437
|
+
@natvent_availability = XMLHelper.get_value(unavailable_period, 'NaturalVentilation', :string)
|
1438
|
+
end
|
1439
|
+
end
|
1440
|
+
|
1332
1441
|
class Site < BaseElement
|
1333
1442
|
ATTRS = [:site_type, :surroundings, :vertical_surroundings, :shielding_of_home, :orientation_of_front_of_home, :azimuth_of_front_of_home, :fuels,
|
1334
1443
|
:ground_conductivity]
|
@@ -1460,7 +1569,7 @@ class HPXML < Object
|
|
1460
1569
|
ATTRS = [:year_built, :number_of_conditioned_floors, :number_of_conditioned_floors_above_grade,
|
1461
1570
|
:average_ceiling_height, :number_of_bedrooms, :number_of_bathrooms,
|
1462
1571
|
:conditioned_floor_area, :conditioned_building_volume, :residential_facility_type,
|
1463
|
-
:building_footprint_area
|
1572
|
+
:building_footprint_area]
|
1464
1573
|
attr_accessor(*ATTRS)
|
1465
1574
|
|
1466
1575
|
def check_for_errors
|
@@ -1482,7 +1591,6 @@ class HPXML < Object
|
|
1482
1591
|
XMLHelper.add_element(building_construction, 'BuildingFootprintArea', @building_footprint_area, :float, @building_footprint_area_isdefaulted) unless @building_footprint_area.nil?
|
1483
1592
|
XMLHelper.add_element(building_construction, 'ConditionedFloorArea', @conditioned_floor_area, :float) unless @conditioned_floor_area.nil?
|
1484
1593
|
XMLHelper.add_element(building_construction, 'ConditionedBuildingVolume', @conditioned_building_volume, :float, @conditioned_building_volume_isdefaulted) unless @conditioned_building_volume.nil?
|
1485
|
-
XMLHelper.add_extension(building_construction, 'HasFlueOrChimney', @has_flue_or_chimney, :boolean, @has_flue_or_chimney_isdefaulted) unless @has_flue_or_chimney.nil?
|
1486
1594
|
end
|
1487
1595
|
|
1488
1596
|
def from_oga(hpxml)
|
@@ -1501,7 +1609,6 @@ class HPXML < Object
|
|
1501
1609
|
@building_footprint_area = XMLHelper.get_value(building_construction, 'BuildingFootprintArea', :float)
|
1502
1610
|
@conditioned_floor_area = XMLHelper.get_value(building_construction, 'ConditionedFloorArea', :float)
|
1503
1611
|
@conditioned_building_volume = XMLHelper.get_value(building_construction, 'ConditionedBuildingVolume', :float)
|
1504
|
-
@has_flue_or_chimney = XMLHelper.get_value(building_construction, 'extension/HasFlueOrChimney', :boolean)
|
1505
1612
|
end
|
1506
1613
|
end
|
1507
1614
|
|
@@ -1596,6 +1703,32 @@ class HPXML < Object
|
|
1596
1703
|
end
|
1597
1704
|
end
|
1598
1705
|
|
1706
|
+
class AirInfiltration < BaseElement
|
1707
|
+
ATTRS = [:has_flue_or_chimney_in_conditioned_space]
|
1708
|
+
attr_accessor(*ATTRS)
|
1709
|
+
|
1710
|
+
def check_for_errors
|
1711
|
+
errors = []
|
1712
|
+
return errors
|
1713
|
+
end
|
1714
|
+
|
1715
|
+
def to_oga(doc)
|
1716
|
+
return if nil?
|
1717
|
+
|
1718
|
+
air_infiltration = XMLHelper.create_elements_as_needed(doc, ['HPXML', 'Building', 'BuildingDetails', 'Enclosure', 'AirInfiltration'])
|
1719
|
+
XMLHelper.add_extension(air_infiltration, 'HasFlueOrChimneyInConditionedSpace', @has_flue_or_chimney_in_conditioned_space, :boolean, @has_flue_or_chimney_in_conditioned_space_isdefaulted) unless @has_flue_or_chimney_in_conditioned_space.nil?
|
1720
|
+
end
|
1721
|
+
|
1722
|
+
def from_oga(hpxml)
|
1723
|
+
return if hpxml.nil?
|
1724
|
+
|
1725
|
+
air_infiltration = XMLHelper.get_element(hpxml, 'Building/BuildingDetails/Enclosure/AirInfiltration')
|
1726
|
+
return if air_infiltration.nil?
|
1727
|
+
|
1728
|
+
@has_flue_or_chimney_in_conditioned_space = XMLHelper.get_value(air_infiltration, 'extension/HasFlueOrChimneyInConditionedSpace', :boolean)
|
1729
|
+
end
|
1730
|
+
end
|
1731
|
+
|
1599
1732
|
class AirInfiltrationMeasurements < BaseArrayElement
|
1600
1733
|
def add(**kwargs)
|
1601
1734
|
self << AirInfiltrationMeasurement.new(@hpxml_object, **kwargs)
|
@@ -1611,8 +1744,8 @@ class HPXML < Object
|
|
1611
1744
|
end
|
1612
1745
|
|
1613
1746
|
class AirInfiltrationMeasurement < BaseElement
|
1614
|
-
ATTRS = [:id, :house_pressure, :unit_of_measure, :air_leakage, :effective_leakage_area, :
|
1615
|
-
:infiltration_volume, :leakiness_description, :infiltration_height, :a_ext]
|
1747
|
+
ATTRS = [:id, :house_pressure, :unit_of_measure, :air_leakage, :effective_leakage_area, :type_of_measurement,
|
1748
|
+
:infiltration_volume, :leakiness_description, :infiltration_height, :a_ext, :infiltration_type]
|
1616
1749
|
attr_accessor(*ATTRS)
|
1617
1750
|
|
1618
1751
|
def check_for_errors
|
@@ -1627,7 +1760,8 @@ class HPXML < Object
|
|
1627
1760
|
air_infiltration_measurement = XMLHelper.add_element(air_infiltration, 'AirInfiltrationMeasurement')
|
1628
1761
|
sys_id = XMLHelper.add_element(air_infiltration_measurement, 'SystemIdentifier')
|
1629
1762
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
1630
|
-
XMLHelper.add_element(air_infiltration_measurement, 'TypeOfInfiltrationMeasurement', @
|
1763
|
+
XMLHelper.add_element(air_infiltration_measurement, 'TypeOfInfiltrationMeasurement', @type_of_measurement, :string) unless @type_of_measurement.nil?
|
1764
|
+
XMLHelper.add_element(air_infiltration_measurement, 'TypeOfInfiltrationLeakage', @infiltration_type, :string) unless @infiltration_type.nil?
|
1631
1765
|
XMLHelper.add_element(air_infiltration_measurement, 'HousePressure', @house_pressure, :float) unless @house_pressure.nil?
|
1632
1766
|
XMLHelper.add_element(air_infiltration_measurement, 'LeakinessDescription', @leakiness_description, :string) unless @leakiness_description.nil?
|
1633
1767
|
if (not @unit_of_measure.nil?) && (not @air_leakage.nil?)
|
@@ -1638,14 +1772,15 @@ class HPXML < Object
|
|
1638
1772
|
XMLHelper.add_element(air_infiltration_measurement, 'EffectiveLeakageArea', @effective_leakage_area, :float) unless @effective_leakage_area.nil?
|
1639
1773
|
XMLHelper.add_element(air_infiltration_measurement, 'InfiltrationVolume', @infiltration_volume, :float, @infiltration_volume_isdefaulted) unless @infiltration_volume.nil?
|
1640
1774
|
XMLHelper.add_element(air_infiltration_measurement, 'InfiltrationHeight', @infiltration_height, :float, @infiltration_height_isdefaulted) unless @infiltration_height.nil?
|
1641
|
-
XMLHelper.add_extension(air_infiltration_measurement, 'Aext', @a_ext, :float) unless @a_ext.nil?
|
1775
|
+
XMLHelper.add_extension(air_infiltration_measurement, 'Aext', @a_ext, :float, @a_ext_isdefaulted) unless @a_ext.nil?
|
1642
1776
|
end
|
1643
1777
|
|
1644
1778
|
def from_oga(air_infiltration_measurement)
|
1645
1779
|
return if air_infiltration_measurement.nil?
|
1646
1780
|
|
1647
1781
|
@id = HPXML::get_id(air_infiltration_measurement)
|
1648
|
-
@
|
1782
|
+
@type_of_measurement = XMLHelper.get_value(air_infiltration_measurement, 'TypeOfInfiltrationMeasurement', :string)
|
1783
|
+
@infiltration_type = XMLHelper.get_value(air_infiltration_measurement, 'TypeOfInfiltrationLeakage', :string)
|
1649
1784
|
@house_pressure = XMLHelper.get_value(air_infiltration_measurement, 'HousePressure', :float)
|
1650
1785
|
@leakiness_description = XMLHelper.get_value(air_infiltration_measurement, 'LeakinessDescription', :string)
|
1651
1786
|
@unit_of_measure = XMLHelper.get_value(air_infiltration_measurement, 'BuildingAirLeakage/UnitofMeasure', :string)
|
@@ -2090,8 +2225,9 @@ class HPXML < Object
|
|
2090
2225
|
ATTRS = [:id, :interior_adjacent_to, :area, :azimuth, :orientation, :roof_type,
|
2091
2226
|
:roof_color, :solar_absorptance, :emittance, :pitch, :radiant_barrier,
|
2092
2227
|
:insulation_id, :insulation_assembly_r_value, :insulation_cavity_r_value,
|
2093
|
-
:insulation_continuous_r_value, :radiant_barrier_grade,
|
2094
|
-
:interior_finish_type, :interior_finish_thickness
|
2228
|
+
:insulation_continuous_r_value, :radiant_barrier_grade, :insulation_grade,
|
2229
|
+
:interior_finish_type, :interior_finish_thickness, :framing_factor,
|
2230
|
+
:framing_size, :framing_spacing]
|
2095
2231
|
attr_accessor(*ATTRS)
|
2096
2232
|
|
2097
2233
|
def skylights
|
@@ -2171,6 +2307,12 @@ class HPXML < Object
|
|
2171
2307
|
XMLHelper.add_element(interior_finish, 'Type', @interior_finish_type, :string, @interior_finish_type_isdefaulted) unless @interior_finish_type.nil?
|
2172
2308
|
XMLHelper.add_element(interior_finish, 'Thickness', @interior_finish_thickness, :float, @interior_finish_thickness_isdefaulted) unless @interior_finish_thickness.nil?
|
2173
2309
|
end
|
2310
|
+
if (not @framing_factor.nil?) || (not @framing_size.nil?) || (not @framing_spacing.nil?)
|
2311
|
+
rafters = XMLHelper.add_element(roof, 'Rafters')
|
2312
|
+
XMLHelper.add_element(rafters, 'Size', @framing_size, :string) unless @framing_size.nil?
|
2313
|
+
XMLHelper.add_element(rafters, 'Spacing', @framing_spacing, :float) unless @framing_spacing.nil?
|
2314
|
+
XMLHelper.add_element(rafters, 'FramingFactor', @framing_factor, :float) unless @framing_factor.nil?
|
2315
|
+
end
|
2174
2316
|
XMLHelper.add_element(roof, 'Pitch', @pitch, :float) unless @pitch.nil?
|
2175
2317
|
XMLHelper.add_element(roof, 'RadiantBarrier', @radiant_barrier, :boolean, @radiant_barrier_isdefaulted) unless @radiant_barrier.nil?
|
2176
2318
|
XMLHelper.add_element(roof, 'RadiantBarrierGrade', @radiant_barrier_grade, :integer, @radiant_barrier_grade_isdefaulted) unless @radiant_barrier_grade.nil?
|
@@ -2181,6 +2323,7 @@ class HPXML < Object
|
|
2181
2323
|
else
|
2182
2324
|
XMLHelper.add_attribute(sys_id, 'id', @id + 'Insulation')
|
2183
2325
|
end
|
2326
|
+
XMLHelper.add_element(insulation, 'InsulationGrade', @insulation_grade, :integer) unless @insulation_grade.nil?
|
2184
2327
|
XMLHelper.add_element(insulation, 'AssemblyEffectiveRValue', @insulation_assembly_r_value, :float) unless @insulation_assembly_r_value.nil?
|
2185
2328
|
if not @insulation_cavity_r_value.nil?
|
2186
2329
|
layer = XMLHelper.add_element(insulation, 'Layer')
|
@@ -2211,12 +2354,16 @@ class HPXML < Object
|
|
2211
2354
|
@interior_finish_type = XMLHelper.get_value(interior_finish, 'Type', :string)
|
2212
2355
|
@interior_finish_thickness = XMLHelper.get_value(interior_finish, 'Thickness', :float)
|
2213
2356
|
end
|
2357
|
+
@framing_factor = XMLHelper.get_value(roof, 'Rafters/FramingFactor', :float)
|
2358
|
+
@framing_size = XMLHelper.get_value(roof, 'Rafters/Size', :string)
|
2359
|
+
@framing_spacing = XMLHelper.get_value(roof, 'Rafters/Spacing', :float)
|
2214
2360
|
@pitch = XMLHelper.get_value(roof, 'Pitch', :float)
|
2215
2361
|
@radiant_barrier = XMLHelper.get_value(roof, 'RadiantBarrier', :boolean)
|
2216
2362
|
@radiant_barrier_grade = XMLHelper.get_value(roof, 'RadiantBarrierGrade', :integer)
|
2217
2363
|
insulation = XMLHelper.get_element(roof, 'Insulation')
|
2218
2364
|
if not insulation.nil?
|
2219
2365
|
@insulation_id = HPXML::get_id(insulation)
|
2366
|
+
@insulation_grade = XMLHelper.get_value(insulation, 'InsulationGrade', :integer)
|
2220
2367
|
@insulation_assembly_r_value = XMLHelper.get_value(insulation, 'AssemblyEffectiveRValue', :float)
|
2221
2368
|
@insulation_cavity_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='cavity']/NominalRValue", :float)
|
2222
2369
|
@insulation_continuous_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='continuous']/NominalRValue", :float)
|
@@ -2241,7 +2388,7 @@ class HPXML < Object
|
|
2241
2388
|
class RimJoist < BaseElement
|
2242
2389
|
ATTRS = [:id, :exterior_adjacent_to, :interior_adjacent_to, :area, :orientation, :azimuth, :siding,
|
2243
2390
|
:color, :solar_absorptance, :emittance, :insulation_id, :insulation_assembly_r_value,
|
2244
|
-
:insulation_cavity_r_value, :insulation_continuous_r_value]
|
2391
|
+
:insulation_cavity_r_value, :insulation_continuous_r_value, :framing_size]
|
2245
2392
|
attr_accessor(*ATTRS)
|
2246
2393
|
|
2247
2394
|
def is_exterior
|
@@ -2318,6 +2465,10 @@ class HPXML < Object
|
|
2318
2465
|
XMLHelper.add_element(layer, 'InstallationType', 'continuous', :string)
|
2319
2466
|
XMLHelper.add_element(layer, 'NominalRValue', @insulation_continuous_r_value, :float)
|
2320
2467
|
end
|
2468
|
+
if not @framing_size.nil?
|
2469
|
+
floor_joists = XMLHelper.add_element(rim_joist, 'FloorJoists')
|
2470
|
+
XMLHelper.add_element(floor_joists, 'Size', @framing_size, :string) unless @framing_size.nil?
|
2471
|
+
end
|
2321
2472
|
end
|
2322
2473
|
|
2323
2474
|
def from_oga(rim_joist)
|
@@ -2340,6 +2491,7 @@ class HPXML < Object
|
|
2340
2491
|
@insulation_cavity_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='cavity']/NominalRValue", :float)
|
2341
2492
|
@insulation_continuous_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='continuous']/NominalRValue", :float)
|
2342
2493
|
end
|
2494
|
+
@framing_size = XMLHelper.get_value(rim_joist, 'FloorJoists/Size', :string)
|
2343
2495
|
end
|
2344
2496
|
end
|
2345
2497
|
|
@@ -2361,7 +2513,8 @@ class HPXML < Object
|
|
2361
2513
|
ATTRS = [:id, :exterior_adjacent_to, :interior_adjacent_to, :wall_type, :optimum_value_engineering,
|
2362
2514
|
:area, :orientation, :azimuth, :siding, :color, :solar_absorptance, :emittance, :insulation_id,
|
2363
2515
|
:insulation_assembly_r_value, :insulation_cavity_r_value, :insulation_continuous_r_value,
|
2364
|
-
:interior_finish_type, :interior_finish_thickness, :attic_wall_type
|
2516
|
+
:interior_finish_type, :interior_finish_thickness, :attic_wall_type, :framing_factor,
|
2517
|
+
:framing_size, :framing_spacing, :insulation_grade]
|
2365
2518
|
attr_accessor(*ATTRS)
|
2366
2519
|
|
2367
2520
|
def windows
|
@@ -2455,6 +2608,12 @@ class HPXML < Object
|
|
2455
2608
|
XMLHelper.add_element(wall, 'Area', @area, :float) unless @area.nil?
|
2456
2609
|
XMLHelper.add_element(wall, 'Orientation', @orientation, :string, @orientation_isdefaulted) unless @orientation.nil?
|
2457
2610
|
XMLHelper.add_element(wall, 'Azimuth', @azimuth, :integer, @azimuth_isdefaulted) unless @azimuth.nil?
|
2611
|
+
if (not @framing_factor.nil?) || (not @framing_size.nil?) || (not @framing_spacing.nil?)
|
2612
|
+
studs = XMLHelper.add_element(wall, 'Studs')
|
2613
|
+
XMLHelper.add_element(studs, 'Size', @framing_size, :string) unless @framing_size.nil?
|
2614
|
+
XMLHelper.add_element(studs, 'Spacing', @framing_spacing, :float) unless @framing_spacing.nil?
|
2615
|
+
XMLHelper.add_element(studs, 'FramingFactor', @framing_factor, :float) unless @framing_factor.nil?
|
2616
|
+
end
|
2458
2617
|
XMLHelper.add_element(wall, 'Siding', @siding, :string, @siding_isdefaulted) unless @siding.nil?
|
2459
2618
|
XMLHelper.add_element(wall, 'Color', @color, :string, @color_isdefaulted) unless @color.nil?
|
2460
2619
|
XMLHelper.add_element(wall, 'SolarAbsorptance', @solar_absorptance, :float, @solar_absorptance_isdefaulted) unless @solar_absorptance.nil?
|
@@ -2471,6 +2630,7 @@ class HPXML < Object
|
|
2471
2630
|
else
|
2472
2631
|
XMLHelper.add_attribute(sys_id, 'id', @id + 'Insulation')
|
2473
2632
|
end
|
2633
|
+
XMLHelper.add_element(insulation, 'InsulationGrade', @insulation_grade, :integer) unless @insulation_grade.nil?
|
2474
2634
|
XMLHelper.add_element(insulation, 'AssemblyEffectiveRValue', @insulation_assembly_r_value, :float) unless @insulation_assembly_r_value.nil?
|
2475
2635
|
if not @insulation_cavity_r_value.nil?
|
2476
2636
|
layer = XMLHelper.add_element(insulation, 'Layer')
|
@@ -2498,6 +2658,9 @@ class HPXML < Object
|
|
2498
2658
|
@area = XMLHelper.get_value(wall, 'Area', :float)
|
2499
2659
|
@orientation = XMLHelper.get_value(wall, 'Orientation', :string)
|
2500
2660
|
@azimuth = XMLHelper.get_value(wall, 'Azimuth', :integer)
|
2661
|
+
@framing_size = XMLHelper.get_value(wall, 'Studs/Size', :string)
|
2662
|
+
@framing_spacing = XMLHelper.get_value(wall, 'Studs/Spacing', :float)
|
2663
|
+
@framing_factor = XMLHelper.get_value(wall, 'Studs/FramingFactor', :float)
|
2501
2664
|
@siding = XMLHelper.get_value(wall, 'Siding', :string)
|
2502
2665
|
@color = XMLHelper.get_value(wall, 'Color', :string)
|
2503
2666
|
@solar_absorptance = XMLHelper.get_value(wall, 'SolarAbsorptance', :float)
|
@@ -2510,6 +2673,7 @@ class HPXML < Object
|
|
2510
2673
|
insulation = XMLHelper.get_element(wall, 'Insulation')
|
2511
2674
|
if not insulation.nil?
|
2512
2675
|
@insulation_id = HPXML::get_id(insulation)
|
2676
|
+
@insulation_grade = XMLHelper.get_value(insulation, 'InsulationGrade', :integer)
|
2513
2677
|
@insulation_assembly_r_value = XMLHelper.get_value(insulation, 'AssemblyEffectiveRValue', :float)
|
2514
2678
|
@insulation_cavity_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='cavity']/NominalRValue", :float)
|
2515
2679
|
@insulation_continuous_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='continuous']/NominalRValue", :float)
|
@@ -2707,7 +2871,8 @@ class HPXML < Object
|
|
2707
2871
|
class Floor < BaseElement
|
2708
2872
|
ATTRS = [:id, :exterior_adjacent_to, :interior_adjacent_to, :floor_type, :area, :insulation_id,
|
2709
2873
|
:insulation_assembly_r_value, :insulation_cavity_r_value, :insulation_continuous_r_value,
|
2710
|
-
:floor_or_ceiling, :interior_finish_type, :interior_finish_thickness
|
2874
|
+
:floor_or_ceiling, :interior_finish_type, :interior_finish_thickness, :insulation_grade,
|
2875
|
+
:framing_factor, :framing_size, :framing_spacing]
|
2711
2876
|
attr_accessor(*ATTRS)
|
2712
2877
|
|
2713
2878
|
def is_ceiling
|
@@ -2790,6 +2955,12 @@ class HPXML < Object
|
|
2790
2955
|
floor_type_el = XMLHelper.add_element(floor, 'FloorType')
|
2791
2956
|
XMLHelper.add_element(floor_type_el, @floor_type)
|
2792
2957
|
end
|
2958
|
+
if (not @framing_factor.nil?) || (not @framing_size.nil?) || (not @framing_spacing.nil?)
|
2959
|
+
joists = XMLHelper.add_element(floor, 'FloorJoists')
|
2960
|
+
XMLHelper.add_element(joists, 'Size', @framing_size, :string) unless @framing_size.nil?
|
2961
|
+
XMLHelper.add_element(joists, 'Spacing', @framing_spacing, :float) unless @framing_spacing.nil?
|
2962
|
+
XMLHelper.add_element(joists, 'FramingFactor', @framing_factor, :float) unless @framing_factor.nil?
|
2963
|
+
end
|
2793
2964
|
XMLHelper.add_element(floor, 'Area', @area, :float) unless @area.nil?
|
2794
2965
|
if (not @interior_finish_type.nil?) || (not @interior_finish_thickness.nil?)
|
2795
2966
|
interior_finish = XMLHelper.add_element(floor, 'InteriorFinish')
|
@@ -2803,6 +2974,7 @@ class HPXML < Object
|
|
2803
2974
|
else
|
2804
2975
|
XMLHelper.add_attribute(sys_id, 'id', @id + 'Insulation')
|
2805
2976
|
end
|
2977
|
+
XMLHelper.add_element(insulation, 'InsulationGrade', @insulation_grade, :integer) unless @insulation_grade.nil?
|
2806
2978
|
XMLHelper.add_element(insulation, 'AssemblyEffectiveRValue', @insulation_assembly_r_value, :float) unless @insulation_assembly_r_value.nil?
|
2807
2979
|
if not @insulation_cavity_r_value.nil?
|
2808
2980
|
layer = XMLHelper.add_element(insulation, 'Layer')
|
@@ -2824,6 +2996,9 @@ class HPXML < Object
|
|
2824
2996
|
@interior_adjacent_to = XMLHelper.get_value(floor, 'InteriorAdjacentTo', :string)
|
2825
2997
|
@floor_or_ceiling = XMLHelper.get_value(floor, 'FloorOrCeiling', :string)
|
2826
2998
|
@floor_type = XMLHelper.get_child_name(floor, 'FloorType')
|
2999
|
+
@framing_size = XMLHelper.get_value(floor, 'FloorJoists/Size', :string)
|
3000
|
+
@framing_spacing = XMLHelper.get_value(floor, 'FloorJoists/Spacing', :float)
|
3001
|
+
@framing_factor = XMLHelper.get_value(floor, 'FloorJoists/FramingFactor', :float)
|
2827
3002
|
@area = XMLHelper.get_value(floor, 'Area', :float)
|
2828
3003
|
interior_finish = XMLHelper.get_element(floor, 'InteriorFinish')
|
2829
3004
|
if not interior_finish.nil?
|
@@ -2833,6 +3008,7 @@ class HPXML < Object
|
|
2833
3008
|
insulation = XMLHelper.get_element(floor, 'Insulation')
|
2834
3009
|
if not insulation.nil?
|
2835
3010
|
@insulation_id = HPXML::get_id(insulation)
|
3011
|
+
@insulation_grade = XMLHelper.get_value(insulation, 'InsulationGrade', :float)
|
2836
3012
|
@insulation_assembly_r_value = XMLHelper.get_value(insulation, 'AssemblyEffectiveRValue', :float)
|
2837
3013
|
@insulation_cavity_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='cavity']/NominalRValue", :float)
|
2838
3014
|
@insulation_continuous_r_value = XMLHelper.get_value(insulation, "Layer[InstallationType='continuous']/NominalRValue", :float)
|
@@ -3435,7 +3611,8 @@ class HPXML < Object
|
|
3435
3611
|
:heating_efficiency_percent, :fraction_heat_load_served, :electric_auxiliary_energy,
|
3436
3612
|
:third_party_certification, :htg_seed_id, :is_shared_system, :number_of_units_served,
|
3437
3613
|
:shared_loop_watts, :shared_loop_motor_efficiency, :fan_coil_watts, :fan_watts_per_cfm,
|
3438
|
-
:airflow_defect_ratio, :fan_watts, :heating_airflow_cfm, :location, :primary_system
|
3614
|
+
:airflow_defect_ratio, :fan_watts, :heating_airflow_cfm, :location, :primary_system,
|
3615
|
+
:pilot_light, :pilot_light_btuh]
|
3439
3616
|
attr_accessor(*ATTRS)
|
3440
3617
|
|
3441
3618
|
def distribution_system
|
@@ -3471,14 +3648,19 @@ class HPXML < Object
|
|
3471
3648
|
return
|
3472
3649
|
end
|
3473
3650
|
|
3474
|
-
def
|
3651
|
+
def primary_heat_pump
|
3652
|
+
# Returns the HP for which this heating system is backup
|
3475
3653
|
@hpxml_object.heat_pumps.each do |heat_pump|
|
3476
3654
|
next if heat_pump.backup_system_idref.nil?
|
3477
3655
|
next if heat_pump.backup_system_idref != @id
|
3478
3656
|
|
3479
|
-
return
|
3657
|
+
return heat_pump
|
3480
3658
|
end
|
3481
|
-
return
|
3659
|
+
return
|
3660
|
+
end
|
3661
|
+
|
3662
|
+
def is_heat_pump_backup_system
|
3663
|
+
return !primary_heat_pump.nil?
|
3482
3664
|
end
|
3483
3665
|
|
3484
3666
|
def delete
|
@@ -3504,7 +3686,7 @@ class HPXML < Object
|
|
3504
3686
|
heating_system = XMLHelper.add_element(hvac_plant, 'HeatingSystem')
|
3505
3687
|
sys_id = XMLHelper.add_element(heating_system, 'SystemIdentifier')
|
3506
3688
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
3507
|
-
XMLHelper.add_element(heating_system, 'UnitLocation', @location, :string) unless @location.nil?
|
3689
|
+
XMLHelper.add_element(heating_system, 'UnitLocation', @location, :string, @location_isdefaulted) unless @location.nil?
|
3508
3690
|
XMLHelper.add_element(heating_system, 'YearInstalled', @year_installed, :integer) unless @year_installed.nil?
|
3509
3691
|
XMLHelper.add_element(heating_system, 'ThirdPartyCertification', @third_party_certification, :string) unless @third_party_certification.nil?
|
3510
3692
|
if not @distribution_system_idref.nil?
|
@@ -3515,7 +3697,18 @@ class HPXML < Object
|
|
3515
3697
|
XMLHelper.add_element(heating_system, 'NumberofUnitsServed', @number_of_units_served, :integer) unless @number_of_units_served.nil?
|
3516
3698
|
if not @heating_system_type.nil?
|
3517
3699
|
heating_system_type_el = XMLHelper.add_element(heating_system, 'HeatingSystemType')
|
3518
|
-
XMLHelper.add_element(heating_system_type_el, @heating_system_type)
|
3700
|
+
type_el = XMLHelper.add_element(heating_system_type_el, @heating_system_type)
|
3701
|
+
if [HPXML::HVACTypeFurnace,
|
3702
|
+
HPXML::HVACTypeWallFurnace,
|
3703
|
+
HPXML::HVACTypeFloorFurnace,
|
3704
|
+
HPXML::HVACTypeFireplace,
|
3705
|
+
HPXML::HVACTypeStove,
|
3706
|
+
HPXML::HVACTypeBoiler].include? @heating_system_type
|
3707
|
+
XMLHelper.add_element(type_el, 'PilotLight', @pilot_light, :boolean, @pilot_light_isdefaulted) unless @pilot_light.nil?
|
3708
|
+
if @pilot_light
|
3709
|
+
XMLHelper.add_extension(type_el, 'PilotLightBtuh', @pilot_light_btuh, :float, @pilot_light_btuh_isdefaulted) unless @pilot_light_btuh.nil?
|
3710
|
+
end
|
3711
|
+
end
|
3519
3712
|
end
|
3520
3713
|
XMLHelper.add_element(heating_system, 'HeatingSystemFuel', @heating_system_fuel, :string) unless @heating_system_fuel.nil?
|
3521
3714
|
XMLHelper.add_element(heating_system, 'HeatingCapacity', @heating_capacity, :float, @heating_capacity_isdefaulted) unless @heating_capacity.nil?
|
@@ -3557,6 +3750,10 @@ class HPXML < Object
|
|
3557
3750
|
@number_of_units_served = XMLHelper.get_value(heating_system, 'NumberofUnitsServed', :integer)
|
3558
3751
|
@heating_system_type = XMLHelper.get_child_name(heating_system, 'HeatingSystemType')
|
3559
3752
|
@heating_system_fuel = XMLHelper.get_value(heating_system, 'HeatingSystemFuel', :string)
|
3753
|
+
@pilot_light = XMLHelper.get_value(heating_system, "HeatingSystemType/#{@heating_system_type}/PilotLight", :boolean)
|
3754
|
+
if @pilot_light
|
3755
|
+
@pilot_light_btuh = XMLHelper.get_value(heating_system, "HeatingSystemType/#{@heating_system_type}/extension/PilotLightBtuh", :float)
|
3756
|
+
end
|
3560
3757
|
@heating_capacity = XMLHelper.get_value(heating_system, 'HeatingCapacity', :float)
|
3561
3758
|
@heating_efficiency_afue = XMLHelper.get_value(heating_system, "AnnualHeatingEfficiency[Units='#{UnitsAFUE}']/Value", :float)
|
3562
3759
|
@heating_efficiency_percent = XMLHelper.get_value(heating_system, "AnnualHeatingEfficiency[Units='Percent']/Value", :float)
|
@@ -3607,9 +3804,9 @@ class HPXML < Object
|
|
3607
3804
|
:cooling_efficiency_seer2, :cooling_efficiency_eer, :cooling_efficiency_ceer, :cooling_efficiency_kw_per_ton,
|
3608
3805
|
:cooling_shr, :third_party_certification, :clg_seed_id, :is_shared_system, :number_of_units_served,
|
3609
3806
|
:shared_loop_watts, :shared_loop_motor_efficiency, :fan_coil_watts, :airflow_defect_ratio,
|
3610
|
-
:fan_watts_per_cfm, :charge_defect_ratio, :cooling_airflow_cfm, :location, :primary_system,
|
3611
|
-
:
|
3612
|
-
:integrated_heating_system_airflow_cfm, :htg_seed_id]
|
3807
|
+
:fan_watts_per_cfm, :charge_defect_ratio, :cooling_airflow_cfm, :location, :primary_system,
|
3808
|
+
:integrated_heating_system_fuel, :integrated_heating_system_capacity, :integrated_heating_system_efficiency_percent,
|
3809
|
+
:integrated_heating_system_fraction_heat_load_served, :integrated_heating_system_airflow_cfm, :htg_seed_id, :crankcase_heater_watts]
|
3613
3810
|
attr_accessor(*ATTRS)
|
3614
3811
|
|
3615
3812
|
def distribution_system
|
@@ -3665,7 +3862,7 @@ class HPXML < Object
|
|
3665
3862
|
cooling_system = XMLHelper.add_element(hvac_plant, 'CoolingSystem')
|
3666
3863
|
sys_id = XMLHelper.add_element(cooling_system, 'SystemIdentifier')
|
3667
3864
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
3668
|
-
XMLHelper.add_element(cooling_system, 'UnitLocation', @location, :string) unless @location.nil?
|
3865
|
+
XMLHelper.add_element(cooling_system, 'UnitLocation', @location, :string, @location_isdefaulted) unless @location.nil?
|
3669
3866
|
XMLHelper.add_element(cooling_system, 'YearInstalled', @year_installed, :integer) unless @year_installed.nil?
|
3670
3867
|
XMLHelper.add_element(cooling_system, 'ThirdPartyCertification', @third_party_certification, :string) unless @third_party_certification.nil?
|
3671
3868
|
if not @distribution_system_idref.nil?
|
@@ -3721,7 +3918,9 @@ class HPXML < Object
|
|
3721
3918
|
XMLHelper.add_extension(cooling_system, 'SharedLoopWatts', @shared_loop_watts, :float) unless @shared_loop_watts.nil?
|
3722
3919
|
XMLHelper.add_extension(cooling_system, 'SharedLoopMotorEfficiency', @shared_loop_motor_efficiency, :float) unless @shared_loop_motor_efficiency.nil?
|
3723
3920
|
XMLHelper.add_extension(cooling_system, 'FanCoilWatts', @fan_coil_watts, :float) unless @fan_coil_watts.nil?
|
3921
|
+
XMLHelper.add_extension(cooling_system, 'CrankcaseHeaterPowerWatts', @crankcase_heater_watts, :float, @crankcase_heater_watts_isdefaulted) unless @crankcase_heater_watts.nil?
|
3724
3922
|
XMLHelper.add_extension(cooling_system, 'CoolingSeedId', @clg_seed_id, :string) unless @clg_seed_id.nil?
|
3923
|
+
XMLHelper.add_extension(cooling_system, 'HeatingSeedId', @htg_seed_id, :string) unless @htg_seed_id.nil?
|
3725
3924
|
if @primary_system
|
3726
3925
|
primary_cooling_system = XMLHelper.add_element(primary_systems, 'PrimaryCoolingSystem')
|
3727
3926
|
XMLHelper.add_attribute(primary_cooling_system, 'idref', @id)
|
@@ -3761,7 +3960,9 @@ class HPXML < Object
|
|
3761
3960
|
@shared_loop_watts = XMLHelper.get_value(cooling_system, 'extension/SharedLoopWatts', :float)
|
3762
3961
|
@shared_loop_motor_efficiency = XMLHelper.get_value(cooling_system, 'extension/SharedLoopMotorEfficiency', :float)
|
3763
3962
|
@fan_coil_watts = XMLHelper.get_value(cooling_system, 'extension/FanCoilWatts', :float)
|
3963
|
+
@crankcase_heater_watts = XMLHelper.get_value(cooling_system, 'extension/CrankcaseHeaterPowerWatts', :float)
|
3764
3964
|
@clg_seed_id = XMLHelper.get_value(cooling_system, 'extension/CoolingSeedId', :string)
|
3965
|
+
@htg_seed_id = XMLHelper.get_value(cooling_system, 'extension/HeatingSeedId', :string)
|
3765
3966
|
primary_cooling_system = HPXML::get_idref(XMLHelper.get_element(cooling_system, '../PrimarySystems/PrimaryCoolingSystem'))
|
3766
3967
|
if primary_cooling_system == @id
|
3767
3968
|
@primary_system = true
|
@@ -3795,7 +3996,7 @@ class HPXML < Object
|
|
3795
3996
|
|
3796
3997
|
class HeatPump < BaseElement
|
3797
3998
|
ATTRS = [:id, :distribution_system_idref, :year_installed, :heat_pump_type, :heat_pump_fuel,
|
3798
|
-
:heating_capacity, :heating_capacity_17F, :cooling_capacity, :compressor_type,
|
3999
|
+
:heating_capacity, :heating_capacity_17F, :cooling_capacity, :compressor_type, :compressor_lockout_temp,
|
3799
4000
|
:cooling_shr, :backup_type, :backup_system_idref, :backup_heating_fuel, :backup_heating_capacity,
|
3800
4001
|
:backup_heating_efficiency_percent, :backup_heating_efficiency_afue, :backup_heating_lockout_temp,
|
3801
4002
|
:backup_heating_switchover_temp, :fraction_heat_load_served, :fraction_cool_load_served, :cooling_efficiency_seer,
|
@@ -3803,7 +4004,8 @@ class HPXML < Object
|
|
3803
4004
|
:heating_efficiency_hspf2, :heating_efficiency_cop, :third_party_certification, :htg_seed_id, :clg_seed_id,
|
3804
4005
|
:pump_watts_per_ton, :fan_watts_per_cfm, :is_shared_system, :number_of_units_served, :shared_loop_watts,
|
3805
4006
|
:shared_loop_motor_efficiency, :airflow_defect_ratio, :charge_defect_ratio,
|
3806
|
-
:heating_airflow_cfm, :cooling_airflow_cfm, :location, :primary_heating_system, :primary_cooling_system
|
4007
|
+
:heating_airflow_cfm, :cooling_airflow_cfm, :location, :primary_heating_system, :primary_cooling_system,
|
4008
|
+
:heating_capacity_retention_fraction, :heating_capacity_retention_temp, :crankcase_heater_watts]
|
3807
4009
|
attr_accessor(*ATTRS)
|
3808
4010
|
|
3809
4011
|
def distribution_system
|
@@ -3867,7 +4069,7 @@ class HPXML < Object
|
|
3867
4069
|
heat_pump = XMLHelper.add_element(hvac_plant, 'HeatPump')
|
3868
4070
|
sys_id = XMLHelper.add_element(heat_pump, 'SystemIdentifier')
|
3869
4071
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
3870
|
-
XMLHelper.add_element(heat_pump, 'UnitLocation', @location, :string) unless @location.nil?
|
4072
|
+
XMLHelper.add_element(heat_pump, 'UnitLocation', @location, :string, @location_isdefaulted) unless @location.nil?
|
3871
4073
|
XMLHelper.add_element(heat_pump, 'YearInstalled', @year_installed, :integer) unless @year_installed.nil?
|
3872
4074
|
XMLHelper.add_element(heat_pump, 'ThirdPartyCertification', @third_party_certification, :string) unless @third_party_certification.nil?
|
3873
4075
|
if not @distribution_system_idref.nil?
|
@@ -3882,6 +4084,7 @@ class HPXML < Object
|
|
3882
4084
|
XMLHelper.add_element(heat_pump, 'HeatingCapacity17F', @heating_capacity_17F, :float) unless @heating_capacity_17F.nil?
|
3883
4085
|
XMLHelper.add_element(heat_pump, 'CoolingCapacity', @cooling_capacity, :float, @cooling_capacity_isdefaulted) unless @cooling_capacity.nil?
|
3884
4086
|
XMLHelper.add_element(heat_pump, 'CompressorType', @compressor_type, :string, @compressor_type_isdefaulted) unless @compressor_type.nil?
|
4087
|
+
XMLHelper.add_element(heat_pump, 'CompressorLockoutTemperature', @compressor_lockout_temp, :float, @compressor_lockout_temp_isdefaulted) unless @compressor_lockout_temp.nil?
|
3885
4088
|
XMLHelper.add_element(heat_pump, 'CoolingSensibleHeatFraction', @cooling_shr, :float, @cooling_shr_isdefaulted) unless @cooling_shr.nil?
|
3886
4089
|
XMLHelper.add_element(heat_pump, 'BackupType', @backup_type, :string, @backup_type_isdefaulted) unless @backup_type.nil?
|
3887
4090
|
if not @backup_system_idref.nil?
|
@@ -3947,6 +4150,12 @@ class HPXML < Object
|
|
3947
4150
|
XMLHelper.add_extension(heat_pump, 'PumpPowerWattsPerTon', @pump_watts_per_ton, :float, @pump_watts_per_ton_isdefaulted) unless @pump_watts_per_ton.nil?
|
3948
4151
|
XMLHelper.add_extension(heat_pump, 'SharedLoopWatts', @shared_loop_watts, :float) unless @shared_loop_watts.nil?
|
3949
4152
|
XMLHelper.add_extension(heat_pump, 'SharedLoopMotorEfficiency', @shared_loop_motor_efficiency, :float) unless @shared_loop_motor_efficiency.nil?
|
4153
|
+
if (not @heating_capacity_retention_fraction.nil?) || (not @heating_capacity_retention_temp.nil?)
|
4154
|
+
htg_cap_retention = XMLHelper.add_extension(heat_pump, 'HeatingCapacityRetention')
|
4155
|
+
XMLHelper.add_element(htg_cap_retention, 'Fraction', @heating_capacity_retention_fraction, :float, @heating_capacity_retention_fraction_isdefaulted) unless @heating_capacity_retention_fraction.nil?
|
4156
|
+
XMLHelper.add_element(htg_cap_retention, 'Temperature', @heating_capacity_retention_temp, :float, @heating_capacity_retention_temp_isdefaulted) unless @heating_capacity_retention_temp.nil?
|
4157
|
+
end
|
4158
|
+
XMLHelper.add_extension(heat_pump, 'CrankcaseHeaterPowerWatts', @crankcase_heater_watts, :float, @crankcase_heater_watts_isdefaulted) unless @crankcase_heater_watts.nil?
|
3950
4159
|
XMLHelper.add_extension(heat_pump, 'HeatingSeedId', @htg_seed_id, :string) unless @htg_seed_id.nil?
|
3951
4160
|
XMLHelper.add_extension(heat_pump, 'CoolingSeedId', @clg_seed_id, :string) unless @clg_seed_id.nil?
|
3952
4161
|
if @primary_heating_system
|
@@ -3975,6 +4184,7 @@ class HPXML < Object
|
|
3975
4184
|
@heating_capacity_17F = XMLHelper.get_value(heat_pump, 'HeatingCapacity17F', :float)
|
3976
4185
|
@cooling_capacity = XMLHelper.get_value(heat_pump, 'CoolingCapacity', :float)
|
3977
4186
|
@compressor_type = XMLHelper.get_value(heat_pump, 'CompressorType', :string)
|
4187
|
+
@compressor_lockout_temp = XMLHelper.get_value(heat_pump, 'CompressorLockoutTemperature', :float)
|
3978
4188
|
@cooling_shr = XMLHelper.get_value(heat_pump, 'CoolingSensibleHeatFraction', :float)
|
3979
4189
|
@backup_type = XMLHelper.get_value(heat_pump, 'BackupType', :string)
|
3980
4190
|
@backup_system_idref = HPXML::get_idref(XMLHelper.get_element(heat_pump, 'BackupSystem'))
|
@@ -4001,6 +4211,9 @@ class HPXML < Object
|
|
4001
4211
|
@pump_watts_per_ton = XMLHelper.get_value(heat_pump, 'extension/PumpPowerWattsPerTon', :float)
|
4002
4212
|
@shared_loop_watts = XMLHelper.get_value(heat_pump, 'extension/SharedLoopWatts', :float)
|
4003
4213
|
@shared_loop_motor_efficiency = XMLHelper.get_value(heat_pump, 'extension/SharedLoopMotorEfficiency', :float)
|
4214
|
+
@heating_capacity_retention_fraction = XMLHelper.get_value(heat_pump, 'extension/HeatingCapacityRetention/Fraction', :float)
|
4215
|
+
@heating_capacity_retention_temp = XMLHelper.get_value(heat_pump, 'extension/HeatingCapacityRetention/Temperature', :float)
|
4216
|
+
@crankcase_heater_watts = XMLHelper.get_value(heat_pump, 'extension/CrankcaseHeaterPowerWatts', :float)
|
4004
4217
|
@htg_seed_id = XMLHelper.get_value(heat_pump, 'extension/HeatingSeedId', :string)
|
4005
4218
|
@clg_seed_id = XMLHelper.get_value(heat_pump, 'extension/CoolingSeedId', :string)
|
4006
4219
|
primary_heating_system = HPXML::get_idref(XMLHelper.get_element(heat_pump, '../PrimarySystems/PrimaryHeatingSystem'))
|
@@ -4041,14 +4254,12 @@ class HPXML < Object
|
|
4041
4254
|
cdl_sens_slabs: 'Slabs',
|
4042
4255
|
cdl_sens_ceilings: 'Ceilings',
|
4043
4256
|
cdl_sens_infilvent: 'InfilVent',
|
4044
|
-
cdl_sens_intgains: '
|
4257
|
+
cdl_sens_intgains: 'InternalLoads' }
|
4045
4258
|
CDL_LAT_ATTRS = { cdl_lat_total: 'Total',
|
4046
4259
|
cdl_lat_ducts: 'Ducts',
|
4047
4260
|
cdl_lat_infilvent: 'InfilVent',
|
4048
|
-
cdl_lat_intgains: '
|
4049
|
-
|
4050
|
-
temp_cooling: 'Cooling' }
|
4051
|
-
ATTRS = HDL_ATTRS.keys + CDL_SENS_ATTRS.keys + CDL_LAT_ATTRS.keys + TEMPERATURE_ATTRS.keys
|
4261
|
+
cdl_lat_intgains: 'InternalLoads' }
|
4262
|
+
ATTRS = HDL_ATTRS.keys + CDL_SENS_ATTRS.keys + CDL_LAT_ATTRS.keys
|
4052
4263
|
attr_accessor(*ATTRS)
|
4053
4264
|
|
4054
4265
|
def check_for_errors
|
@@ -4060,13 +4271,6 @@ class HPXML < Object
|
|
4060
4271
|
return if nil?
|
4061
4272
|
|
4062
4273
|
hvac_plant = XMLHelper.create_elements_as_needed(doc, ['HPXML', 'Building', 'BuildingDetails', 'Systems', 'HVAC', 'HVACPlant'])
|
4063
|
-
if not @temp_heating.nil?
|
4064
|
-
dl_extension = XMLHelper.create_elements_as_needed(hvac_plant, ['extension', 'DesignTemperatures'])
|
4065
|
-
XMLHelper.add_attribute(dl_extension, 'dataSource', 'software')
|
4066
|
-
TEMPERATURE_ATTRS.each do |attr, element_name|
|
4067
|
-
XMLHelper.add_element(dl_extension, element_name, send(attr), :float)
|
4068
|
-
end
|
4069
|
-
end
|
4070
4274
|
if not @hdl_total.nil?
|
4071
4275
|
dl_extension = XMLHelper.create_elements_as_needed(hvac_plant, ['extension', 'DesignLoads'])
|
4072
4276
|
XMLHelper.add_attribute(dl_extension, 'dataSource', 'software')
|
@@ -4091,9 +4295,6 @@ class HPXML < Object
|
|
4091
4295
|
hvac_plant = XMLHelper.get_element(hpxml, 'Building/BuildingDetails/Systems/HVAC/HVACPlant')
|
4092
4296
|
return if hvac_plant.nil?
|
4093
4297
|
|
4094
|
-
TEMPERATURE_ATTRS.each do |attr, element_name|
|
4095
|
-
send("#{attr}=", XMLHelper.get_value(hvac_plant, "extension/DesignTemperatures/#{element_name}", :float))
|
4096
|
-
end
|
4097
4298
|
HDL_ATTRS.each do |attr, element_name|
|
4098
4299
|
send("#{attr}=", XMLHelper.get_value(hvac_plant, "extension/DesignLoads/Heating/#{element_name}", :float))
|
4099
4300
|
end
|
@@ -4269,18 +4470,6 @@ class HPXML < Object
|
|
4269
4470
|
return list
|
4270
4471
|
end
|
4271
4472
|
|
4272
|
-
def total_unconditioned_duct_areas
|
4273
|
-
areas = { HPXML::DuctTypeSupply => 0,
|
4274
|
-
HPXML::DuctTypeReturn => 0 }
|
4275
|
-
@ducts.each do |duct|
|
4276
|
-
next if HPXML::conditioned_locations.include? duct.duct_location
|
4277
|
-
next if duct.duct_type.nil?
|
4278
|
-
|
4279
|
-
areas[duct.duct_type] += duct.duct_surface_area
|
4280
|
-
end
|
4281
|
-
return areas
|
4282
|
-
end
|
4283
|
-
|
4284
4473
|
def delete
|
4285
4474
|
@hpxml_object.hvac_distributions.delete(self)
|
4286
4475
|
@hpxml_object.hvac_systems.each do |hvac_system|
|
@@ -4440,7 +4629,8 @@ class HPXML < Object
|
|
4440
4629
|
|
4441
4630
|
class Duct < BaseElement
|
4442
4631
|
ATTRS = [:id, :duct_type, :duct_insulation_r_value, :duct_insulation_material, :duct_location,
|
4443
|
-
:duct_fraction_area, :duct_surface_area, :duct_surface_area_multiplier
|
4632
|
+
:duct_fraction_area, :duct_surface_area, :duct_surface_area_multiplier,
|
4633
|
+
:duct_buried_insulation_level, :duct_effective_r_value]
|
4444
4634
|
attr_accessor(*ATTRS)
|
4445
4635
|
|
4446
4636
|
def delete
|
@@ -4466,6 +4656,8 @@ class HPXML < Object
|
|
4466
4656
|
XMLHelper.add_element(ins_material_el, @duct_insulation_material)
|
4467
4657
|
end
|
4468
4658
|
XMLHelper.add_element(ducts_el, 'DuctInsulationRValue', @duct_insulation_r_value, :float) unless @duct_insulation_r_value.nil?
|
4659
|
+
XMLHelper.add_element(ducts_el, 'DuctBuriedInsulationLevel', @duct_buried_insulation_level, :string, @duct_buried_insulation_level_isdefaulted) unless @duct_buried_insulation_level.nil?
|
4660
|
+
XMLHelper.add_element(ducts_el, 'DuctEffectiveRValue', @duct_effective_r_value, :float, @duct_effective_r_value_isdefaulted) unless @duct_effective_r_value.nil?
|
4469
4661
|
XMLHelper.add_element(ducts_el, 'DuctLocation', @duct_location, :string, @duct_location_isdefaulted) unless @duct_location.nil?
|
4470
4662
|
XMLHelper.add_element(ducts_el, 'FractionDuctArea', @duct_fraction_area, :float, @duct_fraction_area_isdefaulted) unless @duct_fraction_area.nil?
|
4471
4663
|
XMLHelper.add_element(ducts_el, 'DuctSurfaceArea', @duct_surface_area, :float, @duct_surface_area_isdefaulted) unless @duct_surface_area.nil?
|
@@ -4479,6 +4671,8 @@ class HPXML < Object
|
|
4479
4671
|
@duct_type = XMLHelper.get_value(duct, 'DuctType', :string)
|
4480
4672
|
@duct_insulation_material = XMLHelper.get_child_name(duct, 'DuctInsulationMaterial')
|
4481
4673
|
@duct_insulation_r_value = XMLHelper.get_value(duct, 'DuctInsulationRValue', :float)
|
4674
|
+
@duct_buried_insulation_level = XMLHelper.get_value(duct, 'DuctBuriedInsulationLevel', :string)
|
4675
|
+
@duct_effective_r_value = XMLHelper.get_value(duct, 'DuctEffectiveRValue', :float)
|
4482
4676
|
@duct_location = XMLHelper.get_value(duct, 'DuctLocation', :string)
|
4483
4677
|
@duct_fraction_area = XMLHelper.get_value(duct, 'FractionDuctArea', :float)
|
4484
4678
|
@duct_surface_area = XMLHelper.get_value(duct, 'DuctSurfaceArea', :float)
|
@@ -4505,7 +4699,7 @@ class HPXML < Object
|
|
4505
4699
|
:used_for_whole_building_ventilation, :used_for_seasonal_cooling_load_reduction,
|
4506
4700
|
:used_for_local_ventilation, :total_recovery_efficiency, :total_recovery_efficiency_adjusted,
|
4507
4701
|
:sensible_recovery_efficiency, :sensible_recovery_efficiency_adjusted,
|
4508
|
-
:fan_power, :fan_power_defaulted, :
|
4702
|
+
:fan_power, :fan_power_defaulted, :count, :fan_location, :distribution_system_idref, :start_hour,
|
4509
4703
|
:is_shared_system, :in_unit_flow_rate, :fraction_recirculation, :used_for_garage_ventilation,
|
4510
4704
|
:preheating_fuel, :preheating_efficiency_cop, :preheating_fraction_load_served, :precooling_fuel,
|
4511
4705
|
:precooling_efficiency_cop, :precooling_fraction_load_served, :calculated_flow_rate,
|
@@ -4681,7 +4875,7 @@ class HPXML < Object
|
|
4681
4875
|
ventilation_fan = XMLHelper.add_element(ventilation_fans, 'VentilationFan')
|
4682
4876
|
sys_id = XMLHelper.add_element(ventilation_fan, 'SystemIdentifier')
|
4683
4877
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
4684
|
-
XMLHelper.add_element(ventilation_fan, '
|
4878
|
+
XMLHelper.add_element(ventilation_fan, 'Count', @count, :integer, @count_isdefaulted) unless @count.nil?
|
4685
4879
|
XMLHelper.add_element(ventilation_fan, 'FanType', @fan_type, :string) unless @fan_type.nil?
|
4686
4880
|
if (not @cfis_addtl_runtime_operating_mode.nil?) || (not @cfis_supplemental_fan_idref.nil?)
|
4687
4881
|
cfis_controls = XMLHelper.add_element(ventilation_fan, 'CFISControls')
|
@@ -4739,7 +4933,7 @@ class HPXML < Object
|
|
4739
4933
|
return if ventilation_fan.nil?
|
4740
4934
|
|
4741
4935
|
@id = HPXML::get_id(ventilation_fan)
|
4742
|
-
@
|
4936
|
+
@count = XMLHelper.get_value(ventilation_fan, 'Count', :integer)
|
4743
4937
|
@fan_type = XMLHelper.get_value(ventilation_fan, 'FanType', :string)
|
4744
4938
|
@rated_flow_rate = XMLHelper.get_value(ventilation_fan, 'RatedFlowRate', :float)
|
4745
4939
|
@calculated_flow_rate = XMLHelper.get_value(ventilation_fan, 'CalculatedFlowRate', :float)
|
@@ -4843,6 +5037,7 @@ class HPXML < Object
|
|
4843
5037
|
XMLHelper.add_element(water_heating_system, 'HeatingCapacity', @heating_capacity, :float, @heating_capacity_isdefaulted) unless @heating_capacity.nil?
|
4844
5038
|
XMLHelper.add_element(water_heating_system, 'EnergyFactor', @energy_factor, :float, @energy_factor_isdefaulted) unless @energy_factor.nil?
|
4845
5039
|
XMLHelper.add_element(water_heating_system, 'UniformEnergyFactor', @uniform_energy_factor, :float) unless @uniform_energy_factor.nil?
|
5040
|
+
XMLHelper.add_element(water_heating_system, 'HPWHOperatingMode', @operating_mode, :string, @operating_mode_isdefaulted) unless @operating_mode.nil?
|
4846
5041
|
XMLHelper.add_element(water_heating_system, 'FirstHourRating', @first_hour_rating, :float) unless @first_hour_rating.nil?
|
4847
5042
|
XMLHelper.add_element(water_heating_system, 'UsageBin', @usage_bin, :string, @usage_bin_isdefaulted) unless @usage_bin.nil?
|
4848
5043
|
XMLHelper.add_element(water_heating_system, 'RecoveryEfficiency', @recovery_efficiency, :float, @recovery_efficiency_isdefaulted) unless @recovery_efficiency.nil?
|
@@ -4862,10 +5057,9 @@ class HPXML < Object
|
|
4862
5057
|
related_hvac_idref_el = XMLHelper.add_element(water_heating_system, 'RelatedHVACSystem')
|
4863
5058
|
XMLHelper.add_attribute(related_hvac_idref_el, 'idref', @related_hvac_idref)
|
4864
5059
|
end
|
4865
|
-
if
|
5060
|
+
if not @tank_model_type.nil?
|
4866
5061
|
extension = XMLHelper.create_elements_as_needed(water_heating_system, ['extension'])
|
4867
5062
|
XMLHelper.add_element(extension, 'TankModelType', @tank_model_type, :string, @tank_model_type_isdefaulted) unless @tank_model_type.nil?
|
4868
|
-
XMLHelper.add_element(extension, 'OperatingMode', @operating_mode, :string, @operating_mode_isdefaulted) unless @operating_mode.nil?
|
4869
5063
|
end
|
4870
5064
|
end
|
4871
5065
|
|
@@ -4886,6 +5080,7 @@ class HPXML < Object
|
|
4886
5080
|
@heating_capacity = XMLHelper.get_value(water_heating_system, 'HeatingCapacity', :float)
|
4887
5081
|
@energy_factor = XMLHelper.get_value(water_heating_system, 'EnergyFactor', :float)
|
4888
5082
|
@uniform_energy_factor = XMLHelper.get_value(water_heating_system, 'UniformEnergyFactor', :float)
|
5083
|
+
@operating_mode = XMLHelper.get_value(water_heating_system, 'HPWHOperatingMode', :string)
|
4889
5084
|
@first_hour_rating = XMLHelper.get_value(water_heating_system, 'FirstHourRating', :float)
|
4890
5085
|
@usage_bin = XMLHelper.get_value(water_heating_system, 'UsageBin', :string)
|
4891
5086
|
@recovery_efficiency = XMLHelper.get_value(water_heating_system, 'RecoveryEfficiency', :float)
|
@@ -4896,7 +5091,6 @@ class HPXML < Object
|
|
4896
5091
|
@uses_desuperheater = XMLHelper.get_value(water_heating_system, 'UsesDesuperheater', :boolean)
|
4897
5092
|
@related_hvac_idref = HPXML::get_idref(XMLHelper.get_element(water_heating_system, 'RelatedHVACSystem'))
|
4898
5093
|
@tank_model_type = XMLHelper.get_value(water_heating_system, 'extension/TankModelType', :string)
|
4899
|
-
@operating_mode = XMLHelper.get_value(water_heating_system, 'extension/OperatingMode', :string)
|
4900
5094
|
end
|
4901
5095
|
end
|
4902
5096
|
|
@@ -5181,16 +5375,28 @@ class HPXML < Object
|
|
5181
5375
|
|
5182
5376
|
class PVSystem < BaseElement
|
5183
5377
|
ATTRS = [:id, :location, :module_type, :tracking, :array_orientation, :array_azimuth, :array_tilt,
|
5184
|
-
:max_power_output, :
|
5378
|
+
:max_power_output, :inverter_idref, :system_losses_fraction, :number_of_panels,
|
5185
5379
|
:year_modules_manufactured, :is_shared_system, :number_of_bedrooms_served]
|
5186
5380
|
attr_accessor(*ATTRS)
|
5187
5381
|
|
5382
|
+
def inverter
|
5383
|
+
return if @inverter_idref.nil?
|
5384
|
+
|
5385
|
+
@hpxml_object.inverters.each do |inv|
|
5386
|
+
next unless inv.id == @inverter_idref
|
5387
|
+
|
5388
|
+
return inv
|
5389
|
+
end
|
5390
|
+
fail "Attached inverter '#{@inverter_idref}' not found for pv system '#{@id}'."
|
5391
|
+
end
|
5392
|
+
|
5188
5393
|
def delete
|
5189
5394
|
@hpxml_object.pv_systems.delete(self)
|
5190
5395
|
end
|
5191
5396
|
|
5192
5397
|
def check_for_errors
|
5193
5398
|
errors = []
|
5399
|
+
begin; inverter; rescue StandardError => e; errors << e.message; end
|
5194
5400
|
return errors
|
5195
5401
|
end
|
5196
5402
|
|
@@ -5210,9 +5416,12 @@ class HPXML < Object
|
|
5210
5416
|
XMLHelper.add_element(pv_system, 'ArrayTilt', @array_tilt, :float) unless @array_tilt.nil?
|
5211
5417
|
XMLHelper.add_element(pv_system, 'MaxPowerOutput', @max_power_output, :float) unless @max_power_output.nil?
|
5212
5418
|
XMLHelper.add_element(pv_system, 'NumberOfPanels', @number_of_panels, :integer) unless @number_of_panels.nil?
|
5213
|
-
XMLHelper.add_element(pv_system, 'InverterEfficiency', @inverter_efficiency, :float, @inverter_efficiency_isdefaulted) unless @inverter_efficiency.nil?
|
5214
5419
|
XMLHelper.add_element(pv_system, 'SystemLossesFraction', @system_losses_fraction, :float, @system_losses_fraction_isdefaulted) unless @system_losses_fraction.nil?
|
5215
5420
|
XMLHelper.add_element(pv_system, 'YearModulesManufactured', @year_modules_manufactured, :integer) unless @year_modules_manufactured.nil?
|
5421
|
+
if not @inverter_idref.nil?
|
5422
|
+
attached_to_inverter = XMLHelper.add_element(pv_system, 'AttachedToInverter')
|
5423
|
+
XMLHelper.add_attribute(attached_to_inverter, 'idref', @inverter_idref)
|
5424
|
+
end
|
5216
5425
|
XMLHelper.add_extension(pv_system, 'NumberofBedroomsServed', @number_of_bedrooms_served, :integer) unless @number_of_bedrooms_served.nil?
|
5217
5426
|
end
|
5218
5427
|
|
@@ -5229,13 +5438,69 @@ class HPXML < Object
|
|
5229
5438
|
@array_tilt = XMLHelper.get_value(pv_system, 'ArrayTilt', :float)
|
5230
5439
|
@max_power_output = XMLHelper.get_value(pv_system, 'MaxPowerOutput', :float)
|
5231
5440
|
@number_of_panels = XMLHelper.get_value(pv_system, 'NumberOfPanels', :integer)
|
5232
|
-
@inverter_efficiency = XMLHelper.get_value(pv_system, 'InverterEfficiency', :float)
|
5233
5441
|
@system_losses_fraction = XMLHelper.get_value(pv_system, 'SystemLossesFraction', :float)
|
5234
5442
|
@year_modules_manufactured = XMLHelper.get_value(pv_system, 'YearModulesManufactured', :integer)
|
5443
|
+
@inverter_idref = HPXML::get_idref(XMLHelper.get_element(pv_system, 'AttachedToInverter'))
|
5235
5444
|
@number_of_bedrooms_served = XMLHelper.get_value(pv_system, 'extension/NumberofBedroomsServed', :integer)
|
5236
5445
|
end
|
5237
5446
|
end
|
5238
5447
|
|
5448
|
+
class Inverters < BaseArrayElement
|
5449
|
+
def add(**kwargs)
|
5450
|
+
self << Inverter.new(@hpxml_object, **kwargs)
|
5451
|
+
end
|
5452
|
+
|
5453
|
+
def from_oga(hpxml)
|
5454
|
+
return if hpxml.nil?
|
5455
|
+
|
5456
|
+
XMLHelper.get_elements(hpxml, 'Building/BuildingDetails/Systems/Photovoltaics/Inverter').each do |inverter|
|
5457
|
+
self << Inverter.new(@hpxml_object, inverter)
|
5458
|
+
end
|
5459
|
+
end
|
5460
|
+
end
|
5461
|
+
|
5462
|
+
class Inverter < BaseElement
|
5463
|
+
ATTRS = [:id, :inverter_efficiency]
|
5464
|
+
attr_accessor(*ATTRS)
|
5465
|
+
|
5466
|
+
def pv_system
|
5467
|
+
return if @id.nil?
|
5468
|
+
|
5469
|
+
@hpxml_object.pv_systems.each do |pv|
|
5470
|
+
next unless @id == pv.inverter_idref
|
5471
|
+
|
5472
|
+
return pv
|
5473
|
+
end
|
5474
|
+
end
|
5475
|
+
|
5476
|
+
def delete
|
5477
|
+
@hpxml_object.inverters.delete(self)
|
5478
|
+
end
|
5479
|
+
|
5480
|
+
def check_for_errors
|
5481
|
+
errors = []
|
5482
|
+
begin; pv_system; rescue StandardError => e; errors << e.message; end
|
5483
|
+
return errors
|
5484
|
+
end
|
5485
|
+
|
5486
|
+
def to_oga(doc)
|
5487
|
+
return if nil?
|
5488
|
+
|
5489
|
+
photovoltaics = XMLHelper.create_elements_as_needed(doc, ['HPXML', 'Building', 'BuildingDetails', 'Systems', 'Photovoltaics'])
|
5490
|
+
inverter = XMLHelper.add_element(photovoltaics, 'Inverter')
|
5491
|
+
sys_id = XMLHelper.add_element(inverter, 'SystemIdentifier')
|
5492
|
+
XMLHelper.add_attribute(sys_id, 'id', @id)
|
5493
|
+
XMLHelper.add_element(inverter, 'InverterEfficiency', @inverter_efficiency, :float, @inverter_efficiency_isdefaulted) unless @inverter_efficiency.nil?
|
5494
|
+
end
|
5495
|
+
|
5496
|
+
def from_oga(inverter)
|
5497
|
+
return if inverter.nil?
|
5498
|
+
|
5499
|
+
@id = HPXML::get_id(inverter)
|
5500
|
+
@inverter_efficiency = XMLHelper.get_value(inverter, 'InverterEfficiency', :float)
|
5501
|
+
end
|
5502
|
+
end
|
5503
|
+
|
5239
5504
|
class Generators < BaseArrayElement
|
5240
5505
|
def add(**kwargs)
|
5241
5506
|
self << Generator.new(@hpxml_object, **kwargs)
|
@@ -5387,7 +5652,7 @@ class HPXML < Object
|
|
5387
5652
|
class ClothesWasher < BaseElement
|
5388
5653
|
ATTRS = [:id, :location, :modified_energy_factor, :integrated_modified_energy_factor,
|
5389
5654
|
:rated_annual_kwh, :label_electric_rate, :label_gas_rate, :label_annual_gas_cost,
|
5390
|
-
:capacity, :label_usage, :usage_multiplier, :is_shared_appliance, :
|
5655
|
+
:capacity, :label_usage, :usage_multiplier, :is_shared_appliance, :count,
|
5391
5656
|
:number_of_units_served, :water_heating_system_idref, :hot_water_distribution_idref,
|
5392
5657
|
:weekday_fractions, :weekend_fractions, :monthly_multipliers]
|
5393
5658
|
|
@@ -5433,7 +5698,7 @@ class HPXML < Object
|
|
5433
5698
|
clothes_washer = XMLHelper.add_element(appliances, 'ClothesWasher')
|
5434
5699
|
sys_id = XMLHelper.add_element(clothes_washer, 'SystemIdentifier')
|
5435
5700
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
5436
|
-
XMLHelper.add_element(clothes_washer, '
|
5701
|
+
XMLHelper.add_element(clothes_washer, 'Count', @count, :integer) unless @count.nil?
|
5437
5702
|
XMLHelper.add_element(clothes_washer, 'IsSharedAppliance', @is_shared_appliance, :boolean, @is_shared_appliance_isdefaulted) unless @is_shared_appliance.nil?
|
5438
5703
|
XMLHelper.add_element(clothes_washer, 'NumberofUnitsServed', @number_of_units_served, :integer) unless @number_of_units_served.nil?
|
5439
5704
|
if not @water_heating_system_idref.nil?
|
@@ -5462,7 +5727,7 @@ class HPXML < Object
|
|
5462
5727
|
return if clothes_washer.nil?
|
5463
5728
|
|
5464
5729
|
@id = HPXML::get_id(clothes_washer)
|
5465
|
-
@
|
5730
|
+
@count = XMLHelper.get_value(clothes_washer, 'Count', :integer)
|
5466
5731
|
@is_shared_appliance = XMLHelper.get_value(clothes_washer, 'IsSharedAppliance', :boolean)
|
5467
5732
|
@number_of_units_served = XMLHelper.get_value(clothes_washer, 'NumberofUnitsServed', :integer)
|
5468
5733
|
@water_heating_system_idref = HPXML::get_idref(XMLHelper.get_element(clothes_washer, 'AttachedToWaterHeatingSystem'))
|
@@ -5499,7 +5764,7 @@ class HPXML < Object
|
|
5499
5764
|
|
5500
5765
|
class ClothesDryer < BaseElement
|
5501
5766
|
ATTRS = [:id, :location, :fuel_type, :energy_factor, :combined_energy_factor, :control_type,
|
5502
|
-
:usage_multiplier, :is_shared_appliance, :
|
5767
|
+
:usage_multiplier, :is_shared_appliance, :count, :number_of_units_served,
|
5503
5768
|
:is_vented, :vented_flow_rate, :weekday_fractions, :weekend_fractions,
|
5504
5769
|
:monthly_multipliers]
|
5505
5770
|
attr_accessor(*ATTRS)
|
@@ -5520,7 +5785,7 @@ class HPXML < Object
|
|
5520
5785
|
clothes_dryer = XMLHelper.add_element(appliances, 'ClothesDryer')
|
5521
5786
|
sys_id = XMLHelper.add_element(clothes_dryer, 'SystemIdentifier')
|
5522
5787
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
5523
|
-
XMLHelper.add_element(clothes_dryer, '
|
5788
|
+
XMLHelper.add_element(clothes_dryer, 'Count', @count, :integer) unless @count.nil?
|
5524
5789
|
XMLHelper.add_element(clothes_dryer, 'IsSharedAppliance', @is_shared_appliance, :boolean, @is_shared_appliance_isdefaulted) unless @is_shared_appliance.nil?
|
5525
5790
|
XMLHelper.add_element(clothes_dryer, 'NumberofUnitsServed', @number_of_units_served, :integer) unless @number_of_units_served.nil?
|
5526
5791
|
XMLHelper.add_element(clothes_dryer, 'Location', @location, :string, @location_isdefaulted) unless @location.nil?
|
@@ -5540,7 +5805,7 @@ class HPXML < Object
|
|
5540
5805
|
return if clothes_dryer.nil?
|
5541
5806
|
|
5542
5807
|
@id = HPXML::get_id(clothes_dryer)
|
5543
|
-
@
|
5808
|
+
@count = XMLHelper.get_value(clothes_dryer, 'Count', :integer)
|
5544
5809
|
@is_shared_appliance = XMLHelper.get_value(clothes_dryer, 'IsSharedAppliance', :boolean)
|
5545
5810
|
@number_of_units_served = XMLHelper.get_value(clothes_dryer, 'NumberofUnitsServed', :integer)
|
5546
5811
|
@location = XMLHelper.get_value(clothes_dryer, 'Location', :string)
|
@@ -5952,7 +6217,7 @@ class HPXML < Object
|
|
5952
6217
|
end
|
5953
6218
|
|
5954
6219
|
class LightingGroup < BaseElement
|
5955
|
-
ATTRS = [:id, :location, :fraction_of_units_in_location, :lighting_type]
|
6220
|
+
ATTRS = [:id, :location, :fraction_of_units_in_location, :lighting_type, :kwh_per_year]
|
5956
6221
|
attr_accessor(*ATTRS)
|
5957
6222
|
|
5958
6223
|
def delete
|
@@ -5977,6 +6242,11 @@ class HPXML < Object
|
|
5977
6242
|
lighting_type = XMLHelper.add_element(lighting_group, 'LightingType')
|
5978
6243
|
XMLHelper.add_element(lighting_type, @lighting_type)
|
5979
6244
|
end
|
6245
|
+
if not @kwh_per_year.nil?
|
6246
|
+
lighting_load = XMLHelper.add_element(lighting_group, 'Load')
|
6247
|
+
XMLHelper.add_element(lighting_load, 'Units', UnitsKwhPerYear, :string)
|
6248
|
+
XMLHelper.add_element(lighting_load, 'Value', @kwh_per_year, :float, @kwh_per_year_isdefaulted)
|
6249
|
+
end
|
5980
6250
|
end
|
5981
6251
|
|
5982
6252
|
def from_oga(lighting_group)
|
@@ -5986,6 +6256,7 @@ class HPXML < Object
|
|
5986
6256
|
@location = XMLHelper.get_value(lighting_group, 'Location', :string)
|
5987
6257
|
@fraction_of_units_in_location = XMLHelper.get_value(lighting_group, 'FractionofUnitsInLocation', :float)
|
5988
6258
|
@lighting_type = XMLHelper.get_child_name(lighting_group, 'LightingType')
|
6259
|
+
@kwh_per_year = XMLHelper.get_value(lighting_group, "Load[Units='#{UnitsKwhPerYear}']/Value", :float)
|
5989
6260
|
end
|
5990
6261
|
end
|
5991
6262
|
|
@@ -6083,7 +6354,7 @@ class HPXML < Object
|
|
6083
6354
|
end
|
6084
6355
|
|
6085
6356
|
class CeilingFan < BaseElement
|
6086
|
-
ATTRS = [:id, :efficiency, :
|
6357
|
+
ATTRS = [:id, :efficiency, :count, :weekday_fractions, :weekend_fractions, :monthly_multipliers]
|
6087
6358
|
attr_accessor(*ATTRS)
|
6088
6359
|
|
6089
6360
|
def delete
|
@@ -6107,7 +6378,7 @@ class HPXML < Object
|
|
6107
6378
|
XMLHelper.add_element(airflow, 'FanSpeed', 'medium', :string)
|
6108
6379
|
XMLHelper.add_element(airflow, 'Efficiency', @efficiency, :float, @efficiency_isdefaulted)
|
6109
6380
|
end
|
6110
|
-
XMLHelper.add_element(ceiling_fan, '
|
6381
|
+
XMLHelper.add_element(ceiling_fan, 'Count', @count, :integer, @count_isdefaulted) unless @count.nil?
|
6111
6382
|
XMLHelper.add_extension(ceiling_fan, 'WeekdayScheduleFractions', @weekday_fractions, :string, @weekday_fractions_isdefaulted) unless @weekday_fractions.nil?
|
6112
6383
|
XMLHelper.add_extension(ceiling_fan, 'WeekendScheduleFractions', @weekend_fractions, :string, @weekend_fractions_isdefaulted) unless @weekend_fractions.nil?
|
6113
6384
|
XMLHelper.add_extension(ceiling_fan, 'MonthlyScheduleMultipliers', @monthly_multipliers, :string, @monthly_multipliers_isdefaulted) unless @monthly_multipliers.nil?
|
@@ -6116,7 +6387,7 @@ class HPXML < Object
|
|
6116
6387
|
def from_oga(ceiling_fan)
|
6117
6388
|
@id = HPXML::get_id(ceiling_fan)
|
6118
6389
|
@efficiency = XMLHelper.get_value(ceiling_fan, "Airflow[FanSpeed='medium']/Efficiency", :float)
|
6119
|
-
@
|
6390
|
+
@count = XMLHelper.get_value(ceiling_fan, 'Count', :integer)
|
6120
6391
|
@weekday_fractions = XMLHelper.get_value(ceiling_fan, 'extension/WeekdayScheduleFractions', :string)
|
6121
6392
|
@weekend_fractions = XMLHelper.get_value(ceiling_fan, 'extension/WeekendScheduleFractions', :string)
|
6122
6393
|
@monthly_multipliers = XMLHelper.get_value(ceiling_fan, 'extension/MonthlyScheduleMultipliers', :string)
|
@@ -6354,7 +6625,7 @@ class HPXML < Object
|
|
6354
6625
|
end
|
6355
6626
|
|
6356
6627
|
class PlugLoad < BaseElement
|
6357
|
-
ATTRS = [:id, :plug_load_type, :
|
6628
|
+
ATTRS = [:id, :plug_load_type, :kwh_per_year, :frac_sensible, :frac_latent, :usage_multiplier,
|
6358
6629
|
:weekday_fractions, :weekend_fractions, :monthly_multipliers]
|
6359
6630
|
attr_accessor(*ATTRS)
|
6360
6631
|
|
@@ -6375,10 +6646,10 @@ class HPXML < Object
|
|
6375
6646
|
sys_id = XMLHelper.add_element(plug_load, 'SystemIdentifier')
|
6376
6647
|
XMLHelper.add_attribute(sys_id, 'id', @id)
|
6377
6648
|
XMLHelper.add_element(plug_load, 'PlugLoadType', @plug_load_type, :string) unless @plug_load_type.nil?
|
6378
|
-
if not @
|
6649
|
+
if not @kwh_per_year.nil?
|
6379
6650
|
load = XMLHelper.add_element(plug_load, 'Load')
|
6380
6651
|
XMLHelper.add_element(load, 'Units', UnitsKwhPerYear, :string)
|
6381
|
-
XMLHelper.add_element(load, 'Value', @
|
6652
|
+
XMLHelper.add_element(load, 'Value', @kwh_per_year, :float, @kwh_per_year_isdefaulted)
|
6382
6653
|
end
|
6383
6654
|
XMLHelper.add_extension(plug_load, 'FracSensible', @frac_sensible, :float, @frac_sensible_isdefaulted) unless @frac_sensible.nil?
|
6384
6655
|
XMLHelper.add_extension(plug_load, 'FracLatent', @frac_latent, :float, @frac_latent_isdefaulted) unless @frac_latent.nil?
|
@@ -6391,7 +6662,7 @@ class HPXML < Object
|
|
6391
6662
|
def from_oga(plug_load)
|
6392
6663
|
@id = HPXML::get_id(plug_load)
|
6393
6664
|
@plug_load_type = XMLHelper.get_value(plug_load, 'PlugLoadType', :string)
|
6394
|
-
@
|
6665
|
+
@kwh_per_year = XMLHelper.get_value(plug_load, "Load[Units='#{UnitsKwhPerYear}']/Value", :float)
|
6395
6666
|
@frac_sensible = XMLHelper.get_value(plug_load, 'extension/FracSensible', :float)
|
6396
6667
|
@frac_latent = XMLHelper.get_value(plug_load, 'extension/FracLatent', :float)
|
6397
6668
|
@usage_multiplier = XMLHelper.get_value(plug_load, 'extension/UsageMultiplier', :float)
|
@@ -6514,7 +6785,7 @@ class HPXML < Object
|
|
6514
6785
|
surf.class::ATTRS.each do |attribute|
|
6515
6786
|
next if attribute.to_s.end_with? '_isdefaulted'
|
6516
6787
|
next if attrs_to_ignore.include? attribute
|
6517
|
-
next if (surf_type == :foundation_walls) && (
|
6788
|
+
next if (surf_type == :foundation_walls) && ([:azimuth, :orientation].include? attribute) # Azimuth of foundation walls is irrelevant
|
6518
6789
|
next if surf.send(attribute) == surf2.send(attribute)
|
6519
6790
|
|
6520
6791
|
match = false
|
@@ -6552,14 +6823,6 @@ class HPXML < Object
|
|
6552
6823
|
end
|
6553
6824
|
end
|
6554
6825
|
|
6555
|
-
def delete_tiny_surfaces()
|
6556
|
-
(@rim_joists + @walls + @foundation_walls + @floors + @roofs + @windows + @skylights + @doors + @slabs).reverse_each do |surface|
|
6557
|
-
next if surface.area.nil? || (surface.area > 1.0)
|
6558
|
-
|
6559
|
-
surface.delete
|
6560
|
-
end
|
6561
|
-
end
|
6562
|
-
|
6563
6826
|
def delete_adiabatic_subsurfaces()
|
6564
6827
|
@doors.reverse_each do |door|
|
6565
6828
|
next if door.wall.nil?
|