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
@@ -109,13 +109,15 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
109
109
|
|
110
110
|
begin
|
111
111
|
if skip_validation
|
112
|
-
|
113
|
-
|
112
|
+
schema_validator = nil
|
113
|
+
schematron_validator = nil
|
114
114
|
else
|
115
|
-
|
116
|
-
|
115
|
+
schema_path = File.join(File.dirname(__FILE__), 'resources', 'hpxml_schema', 'HPXML.xsd')
|
116
|
+
schema_validator = XMLValidator.get_schema_validator(schema_path)
|
117
|
+
schematron_path = File.join(File.dirname(__FILE__), 'resources', 'hpxml_schematron', 'EPvalidator.xml')
|
118
|
+
schematron_validator = XMLValidator.get_schematron_validator(schematron_path)
|
117
119
|
end
|
118
|
-
hpxml = HPXML.new(hpxml_path: hpxml_path,
|
120
|
+
hpxml = HPXML.new(hpxml_path: hpxml_path, schema_validator: schema_validator, schematron_validator: schematron_validator, building_id: building_id)
|
119
121
|
hpxml.errors.each do |error|
|
120
122
|
runner.registerError(error)
|
121
123
|
end
|
@@ -124,14 +126,15 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
124
126
|
end
|
125
127
|
return false unless hpxml.errors.empty?
|
126
128
|
|
127
|
-
epw_path
|
129
|
+
epw_path = Location.get_epw_path(hpxml, hpxml_path)
|
130
|
+
weather = WeatherProcess.new(epw_path: epw_path, runner: runner)
|
128
131
|
|
129
132
|
if debug
|
130
133
|
epw_output_path = File.join(output_dir, 'in.epw')
|
131
134
|
FileUtils.cp(epw_path, epw_output_path)
|
132
135
|
end
|
133
136
|
|
134
|
-
OSModel.create(hpxml, runner, model, hpxml_path, epw_path,
|
137
|
+
OSModel.create(hpxml, runner, model, hpxml_path, epw_path, weather, output_dir,
|
135
138
|
add_component_loads, building_id, debug)
|
136
139
|
rescue Exception => e
|
137
140
|
runner.registerError("#{e.message}\n#{e.backtrace.join("\n")}")
|
@@ -140,32 +143,10 @@ class HPXMLtoOpenStudio < OpenStudio::Measure::ModelMeasure
|
|
140
143
|
|
141
144
|
return true
|
142
145
|
end
|
143
|
-
|
144
|
-
def process_weather(hpxml, runner, model, hpxml_path)
|
145
|
-
epw_path = Location.get_epw_path(hpxml, hpxml_path)
|
146
|
-
|
147
|
-
cache_path = epw_path.gsub('.epw', '-cache.csv')
|
148
|
-
if not File.exist?(cache_path)
|
149
|
-
# Process weather file to create cache .csv
|
150
|
-
begin
|
151
|
-
File.open(cache_path, 'wb') do |file|
|
152
|
-
runner.registerWarning("'#{cache_path}' could not be found; regenerating it.")
|
153
|
-
epw_file = OpenStudio::EpwFile.new(epw_path)
|
154
|
-
OpenStudio::Model::WeatherFile.setWeatherFile(model, epw_file)
|
155
|
-
weather = WeatherProcess.new(model, runner)
|
156
|
-
weather.dump_to_csv(file)
|
157
|
-
end
|
158
|
-
rescue SystemCallError
|
159
|
-
runner.registerWarning("#{cache_path} could not be written, skipping.")
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
return epw_path, cache_path
|
164
|
-
end
|
165
146
|
end
|
166
147
|
|
167
148
|
class OSModel
|
168
|
-
def self.create(hpxml, runner, model, hpxml_path, epw_path,
|
149
|
+
def self.create(hpxml, runner, model, hpxml_path, epw_path, weather, output_dir,
|
169
150
|
add_component_loads, building_id, debug)
|
170
151
|
@hpxml = hpxml
|
171
152
|
@debug = debug
|
@@ -186,20 +167,19 @@ class OSModel
|
|
186
167
|
model.setStrictnessLevel('None'.to_StrictnessLevel)
|
187
168
|
|
188
169
|
# Init
|
189
|
-
|
190
170
|
check_file_references(hpxml_path)
|
171
|
+
epw_file = Location.apply_weather_file(model, epw_path)
|
191
172
|
@schedules_file = SchedulesFile.new(runner: runner, model: model,
|
192
|
-
schedules_paths: @hpxml.header.schedules_filepaths
|
193
|
-
|
194
|
-
|
173
|
+
schedules_paths: @hpxml.header.schedules_filepaths,
|
174
|
+
year: Location.get_sim_calendar_year(@hpxml.header.sim_calendar_year, epw_file),
|
175
|
+
unavailable_periods: @hpxml.header.unavailable_periods,
|
176
|
+
output_path: File.join(output_dir, 'in.schedules.csv'))
|
195
177
|
set_defaults_and_globals(runner, output_dir, epw_file, weather, @schedules_file)
|
196
178
|
validate_emissions_files()
|
197
|
-
@schedules_file.validate_schedules(year: @hpxml.header.sim_calendar_year) if not @schedules_file.nil?
|
198
179
|
Location.apply(model, weather, epw_file, @hpxml)
|
199
180
|
add_simulation_params(model)
|
200
181
|
|
201
182
|
# Conditioned space/zone
|
202
|
-
|
203
183
|
spaces = {}
|
204
184
|
create_or_get_space(model, spaces, HPXML::LocationLivingSpace)
|
205
185
|
set_foundation_and_walls_top()
|
@@ -212,7 +192,6 @@ class OSModel
|
|
212
192
|
add_rim_joists(runner, model, spaces)
|
213
193
|
add_floors(runner, model, spaces)
|
214
194
|
add_foundation_walls_slabs(runner, model, weather, spaces)
|
215
|
-
add_shading_schedule(model, weather)
|
216
195
|
add_windows(model, spaces)
|
217
196
|
add_doors(model, spaces)
|
218
197
|
add_skylights(model, spaces)
|
@@ -223,21 +202,19 @@ class OSModel
|
|
223
202
|
add_num_occupants(model, runner, spaces)
|
224
203
|
|
225
204
|
# HVAC
|
226
|
-
|
205
|
+
@hvac_unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::ColumnHVAC, @hpxml.header.unavailable_periods)
|
227
206
|
airloop_map = {} # Map of HPXML System ID -> AirLoopHVAC (or ZoneHVACFourPipeFanCoil)
|
228
207
|
add_ideal_system(model, spaces, epw_path)
|
229
208
|
add_cooling_system(model, spaces, airloop_map)
|
230
209
|
add_heating_system(runner, model, spaces, airloop_map)
|
231
210
|
add_heat_pump(runner, model, weather, spaces, airloop_map)
|
232
|
-
add_dehumidifiers(model, spaces)
|
211
|
+
add_dehumidifiers(runner, model, spaces)
|
233
212
|
add_ceiling_fans(runner, model, weather, spaces)
|
234
213
|
|
235
214
|
# Hot Water
|
236
|
-
|
237
215
|
add_hot_water_and_appliances(runner, model, weather, spaces)
|
238
216
|
|
239
217
|
# Plug Loads & Fuel Loads & Lighting
|
240
|
-
|
241
218
|
add_mels(runner, model, spaces)
|
242
219
|
add_mfls(runner, model, spaces)
|
243
220
|
add_lighting(runner, model, epw_file, spaces)
|
@@ -246,15 +223,14 @@ class OSModel
|
|
246
223
|
add_pools_and_hot_tubs(runner, model, spaces)
|
247
224
|
|
248
225
|
# Other
|
249
|
-
|
226
|
+
add_cooling_season(model, weather)
|
250
227
|
add_airflow(runner, model, weather, spaces, airloop_map)
|
251
228
|
add_photovoltaics(model)
|
252
229
|
add_generators(model)
|
253
230
|
add_batteries(runner, model, spaces)
|
254
|
-
add_additional_properties(model, hpxml_path, building_id)
|
231
|
+
add_additional_properties(model, hpxml_path, building_id, epw_file)
|
255
232
|
|
256
233
|
# Output
|
257
|
-
|
258
234
|
add_unmet_hours_output(model, spaces)
|
259
235
|
add_loads_output(model, spaces, add_component_loads)
|
260
236
|
set_output_files(model)
|
@@ -322,8 +298,6 @@ class OSModel
|
|
322
298
|
# Apply defaults to HPXML object
|
323
299
|
HPXMLDefaults.apply(runner, @hpxml, @eri_version, weather, epw_file: epw_file, schedules_file: schedules_file)
|
324
300
|
|
325
|
-
@frac_windows_operable = @hpxml.fraction_of_windows_operable()
|
326
|
-
|
327
301
|
# Write updated HPXML object (w/ defaults) to file for inspection
|
328
302
|
@hpxml_defaults_path = File.join(output_dir, 'in.xml')
|
329
303
|
XMLHelper.write_file(@hpxml.to_oga, @hpxml_defaults_path)
|
@@ -331,6 +305,30 @@ class OSModel
|
|
331
305
|
# Now that we've written in.xml, ensure that no capacities/airflows
|
332
306
|
# are zero in order to prevent potential E+ errors.
|
333
307
|
HVAC.ensure_nonzero_sizing_values(@hpxml)
|
308
|
+
|
309
|
+
# Now that we've written in.xml, make adjustments for modeling purposes.
|
310
|
+
@frac_windows_operable = @hpxml.fraction_of_windows_operable()
|
311
|
+
@hpxml.collapse_enclosure_surfaces() # Speeds up simulation
|
312
|
+
@hpxml.delete_adiabatic_subsurfaces() # EnergyPlus doesn't allow this
|
313
|
+
|
314
|
+
# We don't want this to be written to in.xml, because then if you ran the in.xml
|
315
|
+
# file, you would get different results (operational calculation) relative to the
|
316
|
+
# original file (asset calculation).
|
317
|
+
if @hpxml.building_occupancy.number_of_residents.nil?
|
318
|
+
@hpxml.building_occupancy.number_of_residents = Geometry.get_occupancy_default_num(@nbeds)
|
319
|
+
end
|
320
|
+
|
321
|
+
# If zero occupants, ensure end uses of interest are zeroed out
|
322
|
+
if (@hpxml.building_occupancy.number_of_residents == 0) && (not @apply_ashrae140_assumptions)
|
323
|
+
@hpxml.header.unavailable_periods.add(column_name: 'Vacancy',
|
324
|
+
begin_month: @hpxml.header.sim_begin_month,
|
325
|
+
begin_day: @hpxml.header.sim_begin_day,
|
326
|
+
begin_hour: 0,
|
327
|
+
end_month: @hpxml.header.sim_end_month,
|
328
|
+
end_day: @hpxml.header.sim_end_day,
|
329
|
+
end_hour: 24,
|
330
|
+
natvent_availability: HPXML::ScheduleUnavailable)
|
331
|
+
end
|
334
332
|
end
|
335
333
|
|
336
334
|
def self.add_simulation_params(model)
|
@@ -342,7 +340,8 @@ class OSModel
|
|
342
340
|
num_occ = @hpxml.building_occupancy.number_of_residents
|
343
341
|
return if num_occ <= 0
|
344
342
|
|
345
|
-
Geometry.apply_occupants(model, runner, @hpxml, num_occ, spaces[HPXML::LocationLivingSpace],
|
343
|
+
Geometry.apply_occupants(model, runner, @hpxml, num_occ, spaces[HPXML::LocationLivingSpace],
|
344
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
346
345
|
end
|
347
346
|
|
348
347
|
def self.create_or_get_space(model, spaces, location)
|
@@ -1075,12 +1074,13 @@ class OSModel
|
|
1075
1074
|
end
|
1076
1075
|
end
|
1077
1076
|
|
1078
|
-
def self.
|
1079
|
-
# Use BAHSP cooling season, and not year-round or user-specified cooling season, to ensure windows use appropriate interior shading factors
|
1080
|
-
_default_heating_months, @default_cooling_months = HVAC.get_default_heating_and_cooling_seasons(weather)
|
1081
|
-
|
1077
|
+
def self.add_cooling_season(model, weather)
|
1082
1078
|
# Create cooling season schedule
|
1083
|
-
|
1079
|
+
# Applies to natural ventilation and calculation of component loads, not HVAC equipment
|
1080
|
+
# Uses BAHSP cooling season, not user-specified cooling season (which may be, e.g., year-round)
|
1081
|
+
_, default_cooling_months = HVAC.get_default_heating_and_cooling_seasons(weather)
|
1082
|
+
|
1083
|
+
clg_season_sch = MonthWeekdayWeekendSchedule.new(model, 'cooling season schedule', Array.new(24, 1), Array.new(24, 1), default_cooling_months, Constants.ScheduleTypeLimitsFraction)
|
1084
1084
|
@clg_ssn_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
|
1085
1085
|
@clg_ssn_sensor.setName('cool_season')
|
1086
1086
|
@clg_ssn_sensor.setKeyName(clg_season_sch.schedule.name.to_s)
|
@@ -1151,7 +1151,7 @@ class OSModel
|
|
1151
1151
|
# Apply interior/exterior shading (as needed)
|
1152
1152
|
shading_vertices = Geometry.create_wall_vertices(window_length, window_height, z_origin, window.azimuth)
|
1153
1153
|
shading_group = Constructions.apply_window_skylight_shading(model, window, i, shading_vertices, surface, sub_surface, shading_group,
|
1154
|
-
shading_schedules, shading_ems, Constants.ObjectNameWindowShade, @
|
1154
|
+
shading_schedules, shading_ems, Constants.ObjectNameWindowShade, @hpxml)
|
1155
1155
|
else
|
1156
1156
|
# Window is on an interior surface, which E+ does not allow. Model
|
1157
1157
|
# as a door instead so that we can get the appropriate conduction
|
@@ -1229,7 +1229,7 @@ class OSModel
|
|
1229
1229
|
# Apply interior/exterior shading (as needed)
|
1230
1230
|
shading_vertices = Geometry.create_roof_vertices(length, width, z_origin, skylight.azimuth, tilt)
|
1231
1231
|
shading_group = Constructions.apply_window_skylight_shading(model, skylight, i, shading_vertices, surface, sub_surface, shading_group,
|
1232
|
-
shading_schedules, shading_ems, Constants.ObjectNameSkylightShade, @
|
1232
|
+
shading_schedules, shading_ems, Constants.ObjectNameSkylightShade, @hpxml)
|
1233
1233
|
end
|
1234
1234
|
|
1235
1235
|
apply_adiabatic_construction(model, surfaces, 'roof')
|
@@ -1335,6 +1335,7 @@ class OSModel
|
|
1335
1335
|
end
|
1336
1336
|
|
1337
1337
|
# Water Heater
|
1338
|
+
unavailable_periods = Schedule.get_unavailable_periods(runner, SchedulesFile::ColumnWaterHeater, @hpxml.header.unavailable_periods)
|
1338
1339
|
has_uncond_bsmnt = @hpxml.has_location(HPXML::LocationBasementUnconditioned)
|
1339
1340
|
plantloop_map = {}
|
1340
1341
|
@hpxml.water_heating_systems.each do |water_heating_system|
|
@@ -1344,14 +1345,14 @@ class OSModel
|
|
1344
1345
|
|
1345
1346
|
sys_id = water_heating_system.id
|
1346
1347
|
if water_heating_system.water_heater_type == HPXML::WaterHeaterTypeStorage
|
1347
|
-
plantloop_map[sys_id] = Waterheater.apply_tank(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file)
|
1348
|
+
plantloop_map[sys_id] = Waterheater.apply_tank(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file, unavailable_periods)
|
1348
1349
|
elsif water_heating_system.water_heater_type == HPXML::WaterHeaterTypeTankless
|
1349
|
-
plantloop_map[sys_id] = Waterheater.apply_tankless(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file)
|
1350
|
+
plantloop_map[sys_id] = Waterheater.apply_tankless(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file, unavailable_periods)
|
1350
1351
|
elsif water_heating_system.water_heater_type == HPXML::WaterHeaterTypeHeatPump
|
1351
1352
|
living_zone = spaces[HPXML::LocationLivingSpace].thermalZone.get
|
1352
|
-
plantloop_map[sys_id] = Waterheater.apply_heatpump(model, runner, loc_space, loc_schedule, weather, water_heating_system, ec_adj, solar_thermal_system, living_zone, @eri_version, @schedules_file)
|
1353
|
+
plantloop_map[sys_id] = Waterheater.apply_heatpump(model, runner, loc_space, loc_schedule, weather, water_heating_system, ec_adj, solar_thermal_system, living_zone, @eri_version, @schedules_file, unavailable_periods)
|
1353
1354
|
elsif [HPXML::WaterHeaterTypeCombiStorage, HPXML::WaterHeaterTypeCombiTankless].include? water_heating_system.water_heater_type
|
1354
|
-
plantloop_map[sys_id] = Waterheater.apply_combi(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file)
|
1355
|
+
plantloop_map[sys_id] = Waterheater.apply_combi(model, runner, loc_space, loc_schedule, water_heating_system, ec_adj, solar_thermal_system, @eri_version, @schedules_file, unavailable_periods)
|
1355
1356
|
else
|
1356
1357
|
fail "Unhandled water heater (#{water_heating_system.water_heater_type})."
|
1357
1358
|
end
|
@@ -1359,7 +1360,8 @@ class OSModel
|
|
1359
1360
|
|
1360
1361
|
# Hot water fixtures and appliances
|
1361
1362
|
HotWaterAndAppliances.apply(model, runner, @hpxml, weather, spaces, hot_water_distribution,
|
1362
|
-
solar_thermal_system, @eri_version, @schedules_file, plantloop_map
|
1363
|
+
solar_thermal_system, @eri_version, @schedules_file, plantloop_map,
|
1364
|
+
@hpxml.header.unavailable_periods)
|
1363
1365
|
|
1364
1366
|
if (not solar_thermal_system.nil?) && (not solar_thermal_system.collector_area.nil?) # Detailed solar water heater
|
1365
1367
|
loc_space, loc_schedule = get_space_or_schedule_from_location(solar_thermal_system.water_heating_system.location, model, spaces)
|
@@ -1405,12 +1407,12 @@ class OSModel
|
|
1405
1407
|
|
1406
1408
|
airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, cooling_system, heating_system,
|
1407
1409
|
sequential_cool_load_fracs, sequential_heat_load_fracs,
|
1408
|
-
living_zone)
|
1410
|
+
living_zone, @hvac_unavailable_periods)
|
1409
1411
|
|
1410
1412
|
elsif [HPXML::HVACTypeEvaporativeCooler].include? cooling_system.cooling_system_type
|
1411
1413
|
|
1412
1414
|
airloop_map[sys_id] = HVAC.apply_evaporative_cooler(model, cooling_system,
|
1413
|
-
sequential_cool_load_fracs, living_zone)
|
1415
|
+
sequential_cool_load_fracs, living_zone, @hvac_unavailable_periods)
|
1414
1416
|
end
|
1415
1417
|
end
|
1416
1418
|
end
|
@@ -1449,17 +1451,17 @@ class OSModel
|
|
1449
1451
|
|
1450
1452
|
airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, nil, heating_system,
|
1451
1453
|
[0], sequential_heat_load_fracs,
|
1452
|
-
living_zone)
|
1454
|
+
living_zone, @hvac_unavailable_periods)
|
1453
1455
|
|
1454
1456
|
elsif [HPXML::HVACTypeBoiler].include? heating_system.heating_system_type
|
1455
1457
|
|
1456
1458
|
airloop_map[sys_id] = HVAC.apply_boiler(model, runner, heating_system,
|
1457
|
-
sequential_heat_load_fracs, living_zone)
|
1459
|
+
sequential_heat_load_fracs, living_zone, @hvac_unavailable_periods)
|
1458
1460
|
|
1459
1461
|
elsif [HPXML::HVACTypeElectricResistance].include? heating_system.heating_system_type
|
1460
1462
|
|
1461
1463
|
HVAC.apply_electric_baseboard(model, heating_system,
|
1462
|
-
sequential_heat_load_fracs, living_zone)
|
1464
|
+
sequential_heat_load_fracs, living_zone, @hvac_unavailable_periods)
|
1463
1465
|
|
1464
1466
|
elsif [HPXML::HVACTypeStove,
|
1465
1467
|
HPXML::HVACTypePortableHeater,
|
@@ -1469,13 +1471,13 @@ class OSModel
|
|
1469
1471
|
HPXML::HVACTypeFireplace].include? heating_system.heating_system_type
|
1470
1472
|
|
1471
1473
|
HVAC.apply_unit_heater(model, heating_system,
|
1472
|
-
sequential_heat_load_fracs, living_zone)
|
1474
|
+
sequential_heat_load_fracs, living_zone, @hvac_unavailable_periods)
|
1473
1475
|
end
|
1474
1476
|
|
1475
1477
|
next unless heating_system.is_heat_pump_backup_system
|
1476
1478
|
|
1477
1479
|
# Store OS object for later use
|
1478
|
-
equipment_list = model.getZoneHVACEquipmentLists.
|
1480
|
+
equipment_list = model.getZoneHVACEquipmentLists.find { |el| el.thermalZone == living_zone }
|
1479
1481
|
@heat_pump_backup_system_object = equipment_list.equipment[-1]
|
1480
1482
|
end
|
1481
1483
|
end
|
@@ -1504,7 +1506,7 @@ class OSModel
|
|
1504
1506
|
|
1505
1507
|
airloop_map[sys_id] = HVAC.apply_water_loop_to_air_heat_pump(model, heat_pump,
|
1506
1508
|
sequential_heat_load_fracs, sequential_cool_load_fracs,
|
1507
|
-
living_zone)
|
1509
|
+
living_zone, @hvac_unavailable_periods)
|
1508
1510
|
|
1509
1511
|
elsif [HPXML::HVACTypeHeatPumpAirToAir,
|
1510
1512
|
HPXML::HVACTypeHeatPumpMiniSplit,
|
@@ -1512,18 +1514,18 @@ class OSModel
|
|
1512
1514
|
HPXML::HVACTypeHeatPumpRoom].include? heat_pump.heat_pump_type
|
1513
1515
|
airloop_map[sys_id] = HVAC.apply_air_source_hvac_systems(model, heat_pump, heat_pump,
|
1514
1516
|
sequential_cool_load_fracs, sequential_heat_load_fracs,
|
1515
|
-
living_zone)
|
1517
|
+
living_zone, @hvac_unavailable_periods)
|
1516
1518
|
elsif [HPXML::HVACTypeHeatPumpGroundToAir].include? heat_pump.heat_pump_type
|
1517
1519
|
|
1518
1520
|
airloop_map[sys_id] = HVAC.apply_ground_to_air_heat_pump(model, runner, weather, heat_pump,
|
1519
1521
|
sequential_heat_load_fracs, sequential_cool_load_fracs,
|
1520
|
-
living_zone, @hpxml.site.ground_conductivity)
|
1522
|
+
living_zone, @hpxml.site.ground_conductivity, @hvac_unavailable_periods)
|
1521
1523
|
|
1522
1524
|
end
|
1523
1525
|
|
1524
1526
|
next unless not heat_pump.backup_system.nil?
|
1525
1527
|
|
1526
|
-
equipment_list = model.getZoneHVACEquipmentLists.
|
1528
|
+
equipment_list = model.getZoneHVACEquipmentLists.find { |el| el.thermalZone == living_zone }
|
1527
1529
|
|
1528
1530
|
# Set priority to be last (i.e., after the heat pump that it is backup for)
|
1529
1531
|
equipment_list.setHeatingPriority(@heat_pump_backup_system_object, 99)
|
@@ -1551,27 +1553,27 @@ class OSModel
|
|
1551
1553
|
end
|
1552
1554
|
end
|
1553
1555
|
HVAC.apply_ideal_air_loads(model, obj_name, [cooling_load_frac], [heating_load_frac],
|
1554
|
-
living_zone)
|
1556
|
+
living_zone, @hvac_unavailable_periods)
|
1555
1557
|
return
|
1556
1558
|
end
|
1557
1559
|
|
1558
1560
|
if (@hpxml.total_fraction_heat_load_served < 1.0) && (@hpxml.total_fraction_heat_load_served > 0.0)
|
1559
|
-
|
1560
|
-
@remaining_heat_load_frac -=
|
1561
|
+
sequential_heat_load_fracs = HVAC.calc_sequential_load_fractions(@remaining_heat_load_frac - @hpxml.total_fraction_heat_load_served, @remaining_heat_load_frac, @heating_days)
|
1562
|
+
@remaining_heat_load_frac -= (1.0 - @hpxml.total_fraction_heat_load_served)
|
1561
1563
|
else
|
1562
|
-
|
1564
|
+
sequential_heat_load_fracs = [0.0]
|
1563
1565
|
end
|
1564
1566
|
|
1565
1567
|
if (@hpxml.total_fraction_cool_load_served < 1.0) && (@hpxml.total_fraction_cool_load_served > 0.0)
|
1566
|
-
|
1567
|
-
@remaining_cool_load_frac -=
|
1568
|
+
sequential_cool_load_fracs = HVAC.calc_sequential_load_fractions(@remaining_cool_load_frac - @hpxml.total_fraction_cool_load_served, @remaining_cool_load_frac, @cooling_days)
|
1569
|
+
@remaining_cool_load_frac -= (1.0 - @hpxml.total_fraction_cool_load_served)
|
1568
1570
|
else
|
1569
|
-
|
1571
|
+
sequential_cool_load_fracs = [0.0]
|
1570
1572
|
end
|
1571
1573
|
|
1572
|
-
if (
|
1573
|
-
HVAC.apply_ideal_air_loads(model, obj_name,
|
1574
|
-
living_zone)
|
1574
|
+
if (sequential_heat_load_fracs.sum > 0.0) || (sequential_cool_load_fracs.sum > 0.0)
|
1575
|
+
HVAC.apply_ideal_air_loads(model, obj_name, sequential_cool_load_fracs, sequential_heat_load_fracs,
|
1576
|
+
living_zone, @hvac_unavailable_periods)
|
1575
1577
|
end
|
1576
1578
|
end
|
1577
1579
|
|
@@ -1589,13 +1591,14 @@ class OSModel
|
|
1589
1591
|
return if @hpxml.ceiling_fans.size == 0
|
1590
1592
|
|
1591
1593
|
ceiling_fan = @hpxml.ceiling_fans[0]
|
1592
|
-
HVAC.apply_ceiling_fans(model, runner, weather, ceiling_fan, spaces[HPXML::LocationLivingSpace],
|
1594
|
+
HVAC.apply_ceiling_fans(model, runner, weather, ceiling_fan, spaces[HPXML::LocationLivingSpace],
|
1595
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1593
1596
|
end
|
1594
1597
|
|
1595
|
-
def self.add_dehumidifiers(model, spaces)
|
1598
|
+
def self.add_dehumidifiers(runner, model, spaces)
|
1596
1599
|
return if @hpxml.dehumidifiers.size == 0
|
1597
1600
|
|
1598
|
-
HVAC.apply_dehumidifiers(model, @hpxml.dehumidifiers, spaces[HPXML::LocationLivingSpace])
|
1601
|
+
HVAC.apply_dehumidifiers(runner, model, @hpxml.dehumidifiers, spaces[HPXML::LocationLivingSpace], @hpxml.header.unavailable_periods)
|
1599
1602
|
end
|
1600
1603
|
|
1601
1604
|
def self.check_distribution_system(hvac_distribution, system_type)
|
@@ -1633,7 +1636,8 @@ class OSModel
|
|
1633
1636
|
next
|
1634
1637
|
end
|
1635
1638
|
|
1636
|
-
MiscLoads.apply_plug(model, runner, plug_load, obj_name, spaces[HPXML::LocationLivingSpace], @apply_ashrae140_assumptions,
|
1639
|
+
MiscLoads.apply_plug(model, runner, plug_load, obj_name, spaces[HPXML::LocationLivingSpace], @apply_ashrae140_assumptions,
|
1640
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1637
1641
|
end
|
1638
1642
|
end
|
1639
1643
|
|
@@ -1652,32 +1656,37 @@ class OSModel
|
|
1652
1656
|
next
|
1653
1657
|
end
|
1654
1658
|
|
1655
|
-
MiscLoads.apply_fuel(model, runner, fuel_load, obj_name, spaces[HPXML::LocationLivingSpace],
|
1659
|
+
MiscLoads.apply_fuel(model, runner, fuel_load, obj_name, spaces[HPXML::LocationLivingSpace],
|
1660
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1656
1661
|
end
|
1657
1662
|
end
|
1658
1663
|
|
1659
1664
|
def self.add_lighting(runner, model, epw_file, spaces)
|
1660
|
-
Lighting.apply(runner, model, epw_file, spaces, @hpxml.lighting_groups,
|
1661
|
-
@
|
1665
|
+
Lighting.apply(runner, model, epw_file, spaces, @hpxml.lighting_groups, @hpxml.lighting, @eri_version,
|
1666
|
+
@schedules_file, @cfa, @hpxml.header.unavailable_periods)
|
1662
1667
|
end
|
1663
1668
|
|
1664
1669
|
def self.add_pools_and_hot_tubs(runner, model, spaces)
|
1665
1670
|
@hpxml.pools.each do |pool|
|
1666
1671
|
next if pool.type == HPXML::TypeNone
|
1667
1672
|
|
1668
|
-
MiscLoads.apply_pool_or_hot_tub_heater(runner, model, pool, Constants.ObjectNameMiscPoolHeater, spaces[HPXML::LocationLivingSpace],
|
1673
|
+
MiscLoads.apply_pool_or_hot_tub_heater(runner, model, pool, Constants.ObjectNameMiscPoolHeater, spaces[HPXML::LocationLivingSpace],
|
1674
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1669
1675
|
next if pool.pump_type == HPXML::TypeNone
|
1670
1676
|
|
1671
|
-
MiscLoads.apply_pool_or_hot_tub_pump(runner, model, pool, Constants.ObjectNameMiscPoolPump, spaces[HPXML::LocationLivingSpace],
|
1677
|
+
MiscLoads.apply_pool_or_hot_tub_pump(runner, model, pool, Constants.ObjectNameMiscPoolPump, spaces[HPXML::LocationLivingSpace],
|
1678
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1672
1679
|
end
|
1673
1680
|
|
1674
1681
|
@hpxml.hot_tubs.each do |hot_tub|
|
1675
1682
|
next if hot_tub.type == HPXML::TypeNone
|
1676
1683
|
|
1677
|
-
MiscLoads.apply_pool_or_hot_tub_heater(runner, model, hot_tub, Constants.ObjectNameMiscHotTubHeater, spaces[HPXML::LocationLivingSpace],
|
1684
|
+
MiscLoads.apply_pool_or_hot_tub_heater(runner, model, hot_tub, Constants.ObjectNameMiscHotTubHeater, spaces[HPXML::LocationLivingSpace],
|
1685
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1678
1686
|
next if hot_tub.pump_type == HPXML::TypeNone
|
1679
1687
|
|
1680
|
-
MiscLoads.apply_pool_or_hot_tub_pump(runner, model, hot_tub, Constants.ObjectNameMiscHotTubPump, spaces[HPXML::LocationLivingSpace],
|
1688
|
+
MiscLoads.apply_pool_or_hot_tub_pump(runner, model, hot_tub, Constants.ObjectNameMiscHotTubPump, spaces[HPXML::LocationLivingSpace],
|
1689
|
+
@schedules_file, @hpxml.header.unavailable_periods)
|
1681
1690
|
end
|
1682
1691
|
end
|
1683
1692
|
|
@@ -1712,9 +1721,21 @@ class OSModel
|
|
1712
1721
|
end
|
1713
1722
|
end
|
1714
1723
|
|
1724
|
+
# Create HVAC availability sensor
|
1725
|
+
@hvac_availability_sensor = nil
|
1726
|
+
if not @hvac_unavailable_periods.empty?
|
1727
|
+
avail_sch = ScheduleConstant.new(model, SchedulesFile::ColumnHVAC, 1.0, Constants.ScheduleTypeLimitsFraction, unavailable_periods: @hvac_unavailable_periods)
|
1728
|
+
avail_sch = avail_sch.schedule
|
1729
|
+
|
1730
|
+
@hvac_availability_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'Schedule Value')
|
1731
|
+
@hvac_availability_sensor.setName('availability s')
|
1732
|
+
@hvac_availability_sensor.setKeyName(avail_sch.name.to_s)
|
1733
|
+
end
|
1734
|
+
|
1715
1735
|
Airflow.apply(model, runner, weather, spaces, @hpxml, @cfa, @nbeds,
|
1716
1736
|
@ncfl_ag, duct_systems, airloop_map, @clg_ssn_sensor, @eri_version,
|
1717
|
-
@frac_windows_operable, @apply_ashrae140_assumptions, @schedules_file
|
1737
|
+
@frac_windows_operable, @apply_ashrae140_assumptions, @schedules_file,
|
1738
|
+
@hpxml.header.unavailable_periods, @hvac_availability_sensor)
|
1718
1739
|
end
|
1719
1740
|
|
1720
1741
|
def self.create_ducts(model, hvac_distribution, spaces)
|
@@ -1764,7 +1785,8 @@ class OSModel
|
|
1764
1785
|
fail "#{ducts.duct_type.capitalize} ducts exist but leakage was not specified for distribution system '#{hvac_distribution.id}'."
|
1765
1786
|
end
|
1766
1787
|
|
1767
|
-
air_ducts << Duct.new(ducts.duct_type, duct_loc_space, duct_loc_schedule, duct_leakage_frac, duct_leakage_cfm25, duct_leakage_cfm50,
|
1788
|
+
air_ducts << Duct.new(ducts.duct_type, duct_loc_space, duct_loc_schedule, duct_leakage_frac, duct_leakage_cfm25, duct_leakage_cfm50,
|
1789
|
+
ducts.duct_surface_area * ducts.duct_surface_area_multiplier, ducts.duct_effective_r_value, ducts.duct_buried_insulation_level)
|
1768
1790
|
end
|
1769
1791
|
|
1770
1792
|
# If all ducts are in conditioned space, model leakage as going to outside
|
@@ -1772,7 +1794,7 @@ class OSModel
|
|
1772
1794
|
next unless (leakage_to_outside[duct_side][0] > 0) && (total_unconditioned_duct_area[duct_side] == 0)
|
1773
1795
|
|
1774
1796
|
duct_area = 0.0
|
1775
|
-
|
1797
|
+
duct_effective_r_value = 99 # arbitrary
|
1776
1798
|
duct_loc_space = nil # outside
|
1777
1799
|
duct_loc_schedule = nil # outside
|
1778
1800
|
duct_leakage_value = leakage_to_outside[duct_side][0]
|
@@ -1788,7 +1810,8 @@ class OSModel
|
|
1788
1810
|
fail "#{duct_side.capitalize} ducts exist but leakage was not specified for distribution system '#{hvac_distribution.id}'."
|
1789
1811
|
end
|
1790
1812
|
|
1791
|
-
air_ducts << Duct.new(duct_side, duct_loc_space, duct_loc_schedule, duct_leakage_frac, duct_leakage_cfm25, duct_leakage_cfm50, duct_area,
|
1813
|
+
air_ducts << Duct.new(duct_side, duct_loc_space, duct_loc_schedule, duct_leakage_frac, duct_leakage_cfm25, duct_leakage_cfm50, duct_area,
|
1814
|
+
duct_effective_r_value, HPXML::DuctBuriedInsulationNone)
|
1792
1815
|
end
|
1793
1816
|
|
1794
1817
|
return air_ducts
|
@@ -1796,7 +1819,7 @@ class OSModel
|
|
1796
1819
|
|
1797
1820
|
def self.add_photovoltaics(model)
|
1798
1821
|
@hpxml.pv_systems.each do |pv_system|
|
1799
|
-
next if pv_system.inverter_efficiency == @hpxml.pv_systems[0].inverter_efficiency
|
1822
|
+
next if pv_system.inverter.inverter_efficiency == @hpxml.pv_systems[0].inverter.inverter_efficiency
|
1800
1823
|
|
1801
1824
|
fail 'Expected all InverterEfficiency values to be equal.'
|
1802
1825
|
end
|
@@ -1819,7 +1842,7 @@ class OSModel
|
|
1819
1842
|
end
|
1820
1843
|
end
|
1821
1844
|
|
1822
|
-
def self.add_additional_properties(model, hpxml_path, building_id)
|
1845
|
+
def self.add_additional_properties(model, hpxml_path, building_id, epw_file)
|
1823
1846
|
# Store some data for use in reporting measure
|
1824
1847
|
additionalProperties = model.getBuilding.additionalProperties
|
1825
1848
|
additionalProperties.setFeature('hpxml_path', hpxml_path)
|
@@ -1829,10 +1852,9 @@ class OSModel
|
|
1829
1852
|
additionalProperties.setFeature('emissions_scenario_names', emissions_scenario_names)
|
1830
1853
|
emissions_scenario_types = @hpxml.header.emissions_scenarios.map { |s| s.emissions_type }.to_s
|
1831
1854
|
additionalProperties.setFeature('emissions_scenario_types', emissions_scenario_types)
|
1832
|
-
has_heating
|
1833
|
-
additionalProperties.setFeature('
|
1834
|
-
|
1835
|
-
additionalProperties.setFeature('has_cooling', has_cooling)
|
1855
|
+
additionalProperties.setFeature('has_heating', @hpxml.total_fraction_heat_load_served > 0)
|
1856
|
+
additionalProperties.setFeature('has_cooling', @hpxml.total_fraction_cool_load_served > 0)
|
1857
|
+
additionalProperties.setFeature('is_southern_hemisphere', epw_file.latitude < 0)
|
1836
1858
|
end
|
1837
1859
|
|
1838
1860
|
def self.add_unmet_hours_output(model, spaces)
|
@@ -1867,19 +1889,23 @@ class OSModel
|
|
1867
1889
|
program.addLine("Set #{clg_hrs} = 0")
|
1868
1890
|
if @hpxml.total_fraction_heat_load_served > 0
|
1869
1891
|
if htg_end_day >= htg_start_day
|
1870
|
-
|
1892
|
+
line = "If ((DayOfYear >= #{htg_start_day}) && (DayOfYear <= #{htg_end_day}))"
|
1871
1893
|
else
|
1872
|
-
|
1894
|
+
line = "If ((DayOfYear >= #{htg_start_day}) || (DayOfYear <= #{htg_end_day}))"
|
1873
1895
|
end
|
1896
|
+
line += " && (#{@hvac_availability_sensor.name} == 1)" if not @hvac_availability_sensor.nil?
|
1897
|
+
program.addLine(line)
|
1874
1898
|
program.addLine(" Set #{htg_hrs} = #{htg_hrs} + #{htg_sensor.name}")
|
1875
1899
|
program.addLine('EndIf')
|
1876
1900
|
end
|
1877
1901
|
if @hpxml.total_fraction_cool_load_served > 0
|
1878
1902
|
if clg_end_day >= clg_start_day
|
1879
|
-
|
1903
|
+
line = "If ((DayOfYear >= #{clg_start_day}) && (DayOfYear <= #{clg_end_day}))"
|
1880
1904
|
else
|
1881
|
-
|
1905
|
+
line = "If ((DayOfYear >= #{clg_start_day}) || (DayOfYear <= #{clg_end_day}))"
|
1882
1906
|
end
|
1907
|
+
line += " && (#{@hvac_availability_sensor.name} == 1)" if not @hvac_availability_sensor.nil?
|
1908
|
+
program.addLine(line)
|
1883
1909
|
program.addLine(" Set #{clg_hrs} = #{clg_hrs} + #{clg_sensor.name}")
|
1884
1910
|
program.addLine('EndIf')
|
1885
1911
|
end
|
@@ -1894,13 +1920,21 @@ class OSModel
|
|
1894
1920
|
def self.add_loads_output(model, spaces, add_component_loads)
|
1895
1921
|
living_zone = spaces[HPXML::LocationLivingSpace].thermalZone.get
|
1896
1922
|
|
1897
|
-
|
1923
|
+
if @apply_ashrae140_assumptions
|
1924
|
+
total_heat_load_served = 1.0
|
1925
|
+
total_cool_load_served = 1.0
|
1926
|
+
else
|
1927
|
+
total_heat_load_served = @hpxml.total_fraction_heat_load_served
|
1928
|
+
total_cool_load_served = @hpxml.total_fraction_cool_load_served
|
1929
|
+
end
|
1930
|
+
|
1931
|
+
liv_load_sensors, intgain_dehumidifier = add_total_loads_output(model, living_zone, total_heat_load_served, total_cool_load_served)
|
1898
1932
|
return unless add_component_loads
|
1899
1933
|
|
1900
|
-
add_component_loads_output(model, living_zone, liv_load_sensors, intgain_dehumidifier)
|
1934
|
+
add_component_loads_output(model, living_zone, liv_load_sensors, intgain_dehumidifier, total_heat_load_served, total_cool_load_served)
|
1901
1935
|
end
|
1902
1936
|
|
1903
|
-
def self.add_total_loads_output(model, living_zone)
|
1937
|
+
def self.add_total_loads_output(model, living_zone, total_heat_load_served, total_cool_load_served)
|
1904
1938
|
# Energy transferred in the conditioned space, used for determining heating (winter) vs cooling (summer)
|
1905
1939
|
liv_load_sensors = {}
|
1906
1940
|
liv_load_sensors[:htg] = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Heating:EnergyTransfer:Zone:#{living_zone.name.to_s.upcase}")
|
@@ -1933,13 +1967,13 @@ class OSModel
|
|
1933
1967
|
program.addLine('Set loads_htg_tot = 0')
|
1934
1968
|
program.addLine('Set loads_clg_tot = 0')
|
1935
1969
|
program.addLine("If #{liv_load_sensors[:htg].name} > 0")
|
1936
|
-
s = " Set loads_htg_tot = #{tot_load_sensors[:htg].name} - #{tot_load_sensors[:clg].name}"
|
1970
|
+
s = " Set loads_htg_tot = (#{tot_load_sensors[:htg].name} - #{tot_load_sensors[:clg].name}) * #{total_heat_load_served}"
|
1937
1971
|
if not intgain_dehumidifier.nil?
|
1938
1972
|
s += " - #{intgain_dehumidifier.name}"
|
1939
1973
|
end
|
1940
1974
|
program.addLine(s)
|
1941
1975
|
program.addLine("ElseIf #{liv_load_sensors[:clg].name} > 0")
|
1942
|
-
s = " Set loads_clg_tot = #{tot_load_sensors[:clg].name} - #{tot_load_sensors[:htg].name}"
|
1976
|
+
s = " Set loads_clg_tot = (#{tot_load_sensors[:clg].name} - #{tot_load_sensors[:htg].name}) * #{total_cool_load_served}"
|
1943
1977
|
if not intgain_dehumidifier.nil?
|
1944
1978
|
s += " + #{intgain_dehumidifier.name}"
|
1945
1979
|
end
|
@@ -1955,12 +1989,11 @@ class OSModel
|
|
1955
1989
|
return liv_load_sensors, intgain_dehumidifier
|
1956
1990
|
end
|
1957
1991
|
|
1958
|
-
def self.add_component_loads_output(model, living_zone, liv_load_sensors, intgain_dehumidifier)
|
1992
|
+
def self.add_component_loads_output(model, living_zone, liv_load_sensors, intgain_dehumidifier, total_heat_load_served, total_cool_load_served)
|
1959
1993
|
# Prevent certain objects (e.g., OtherEquipment) from being counted towards both, e.g., ducts and internal gains
|
1960
1994
|
objects_already_processed = []
|
1961
1995
|
|
1962
1996
|
# EMS Sensors: Surfaces, SubSurfaces, InternalMass
|
1963
|
-
|
1964
1997
|
surfaces_sensors = { walls: [],
|
1965
1998
|
rim_joists: [],
|
1966
1999
|
foundation_walls: [],
|
@@ -1968,9 +2001,11 @@ class OSModel
|
|
1968
2001
|
slabs: [],
|
1969
2002
|
ceilings: [],
|
1970
2003
|
roofs: [],
|
1971
|
-
|
2004
|
+
windows_conduction: [],
|
2005
|
+
windows_solar: [],
|
1972
2006
|
doors: [],
|
1973
|
-
|
2007
|
+
skylights_conduction: [],
|
2008
|
+
skylights_solar: [],
|
1974
2009
|
internal_mass: [] }
|
1975
2010
|
|
1976
2011
|
# Output diagnostics needed for some output variables used below
|
@@ -1990,18 +2025,14 @@ class OSModel
|
|
1990
2025
|
surface_type = surface_type.get
|
1991
2026
|
|
1992
2027
|
s.subSurfaces.each do |ss|
|
1993
|
-
|
2028
|
+
# Conduction (windows, skylights, doors)
|
2029
|
+
key = { 'Window' => :windows_conduction,
|
1994
2030
|
'Door' => :doors,
|
1995
|
-
'Skylight' => :
|
2031
|
+
'Skylight' => :skylights_conduction }[surface_type]
|
1996
2032
|
fail "Unexpected subsurface for component loads: '#{ss.name}'." if key.nil?
|
1997
2033
|
|
1998
2034
|
if (surface_type == 'Window') || (surface_type == 'Skylight')
|
1999
|
-
vars = { 'Surface
|
2000
|
-
'Surface Window Shortwave from Zone Back Out Window Heat Transfer Rate' => 'ss_back_out',
|
2001
|
-
'Surface Window Total Glazing Layers Absorbed Shortwave Radiation Rate' => 'ss_sw_abs',
|
2002
|
-
'Surface Window Total Glazing Layers Absorbed Solar Radiation Energy' => 'ss_sol_abs',
|
2003
|
-
'Surface Inside Face Initial Transmitted Diffuse Transmitted Out Window Solar Radiation Rate' => 'ss_trans_out',
|
2004
|
-
'Surface Inside Face Convection Heat Gain Energy' => 'ss_conv',
|
2035
|
+
vars = { 'Surface Inside Face Convection Heat Gain Energy' => 'ss_conv',
|
2005
2036
|
'Surface Inside Face Internal Gains Radiation Heat Gain Energy' => 'ss_ig',
|
2006
2037
|
'Surface Inside Face Net Surface Thermal Radiation Heat Gain Energy' => 'ss_surf' }
|
2007
2038
|
else
|
@@ -2012,6 +2043,25 @@ class OSModel
|
|
2012
2043
|
'Surface Inside Face Net Surface Thermal Radiation Heat Gain Energy' => 'ss_surf' }
|
2013
2044
|
end
|
2014
2045
|
|
2046
|
+
vars.each do |var, name|
|
2047
|
+
surfaces_sensors[key] << []
|
2048
|
+
sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
2049
|
+
sensor.setName(name)
|
2050
|
+
sensor.setKeyName(ss.name.to_s)
|
2051
|
+
surfaces_sensors[key][-1] << sensor
|
2052
|
+
end
|
2053
|
+
|
2054
|
+
# Solar (windows, skylights)
|
2055
|
+
next unless (surface_type == 'Window') || (surface_type == 'Skylight')
|
2056
|
+
|
2057
|
+
key = { 'Window' => :windows_solar,
|
2058
|
+
'Skylight' => :skylights_solar }[surface_type]
|
2059
|
+
vars = { 'Surface Window Transmitted Solar Radiation Energy' => 'ss_trans_in',
|
2060
|
+
'Surface Window Shortwave from Zone Back Out Window Heat Transfer Rate' => 'ss_back_out',
|
2061
|
+
'Surface Window Total Glazing Layers Absorbed Shortwave Radiation Rate' => 'ss_sw_abs',
|
2062
|
+
'Surface Window Total Glazing Layers Absorbed Solar Radiation Energy' => 'ss_sol_abs',
|
2063
|
+
'Surface Inside Face Initial Transmitted Diffuse Transmitted Out Window Solar Radiation Rate' => 'ss_trans_out' }
|
2064
|
+
|
2015
2065
|
surfaces_sensors[key] << []
|
2016
2066
|
vars.each do |var, name|
|
2017
2067
|
sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
@@ -2113,7 +2163,6 @@ class OSModel
|
|
2113
2163
|
end
|
2114
2164
|
|
2115
2165
|
# EMS Sensors: Ducts
|
2116
|
-
|
2117
2166
|
ducts_sensors = []
|
2118
2167
|
ducts_mix_gain_sensor = nil
|
2119
2168
|
ducts_mix_loss_sensor = nil
|
@@ -2157,8 +2206,24 @@ class OSModel
|
|
2157
2206
|
end
|
2158
2207
|
end
|
2159
2208
|
|
2160
|
-
# EMS Sensors:
|
2209
|
+
# EMS Sensors: Lighting
|
2210
|
+
lightings_sensors = []
|
2211
|
+
lightings_sensors << []
|
2212
|
+
model.getLightss.sort.each do |e|
|
2213
|
+
next unless e.space.get.thermalZone.get.name.to_s == living_zone.name.to_s
|
2161
2214
|
|
2215
|
+
lightings_sensors << []
|
2216
|
+
{ 'Lights Convective Heating Energy' => 'ig_lgt_conv',
|
2217
|
+
'Lights Radiant Heating Energy' => 'ig_lgt_rad',
|
2218
|
+
'Lights Visible Radiation Heating Energy' => 'ig_lgt_vis' }.each do |var, name|
|
2219
|
+
intgains_lights_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
2220
|
+
intgains_lights_sensor.setName(name)
|
2221
|
+
intgains_lights_sensor.setKeyName(e.name.to_s)
|
2222
|
+
lightings_sensors[-1] << intgains_lights_sensor
|
2223
|
+
end
|
2224
|
+
end
|
2225
|
+
|
2226
|
+
# EMS Sensors: Internal Gains
|
2162
2227
|
intgains_sensors = []
|
2163
2228
|
|
2164
2229
|
model.getElectricEquipments.sort.each do |o|
|
@@ -2189,20 +2254,6 @@ class OSModel
|
|
2189
2254
|
end
|
2190
2255
|
end
|
2191
2256
|
|
2192
|
-
model.getLightss.sort.each do |e|
|
2193
|
-
next unless e.space.get.thermalZone.get.name.to_s == living_zone.name.to_s
|
2194
|
-
|
2195
|
-
intgains_sensors << []
|
2196
|
-
{ 'Lights Convective Heating Energy' => 'ig_lgt_conv',
|
2197
|
-
'Lights Radiant Heating Energy' => 'ig_lgt_rad',
|
2198
|
-
'Lights Visible Radiation Heating Energy' => 'ig_lgt_vis' }.each do |var, name|
|
2199
|
-
intgains_lights_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, var)
|
2200
|
-
intgains_lights_sensor.setName(name)
|
2201
|
-
intgains_lights_sensor.setKeyName(e.name.to_s)
|
2202
|
-
intgains_sensors[-1] << intgains_lights_sensor
|
2203
|
-
end
|
2204
|
-
end
|
2205
|
-
|
2206
2257
|
model.getPeoples.sort.each do |e|
|
2207
2258
|
next unless e.space.get.thermalZone.get.name.to_s == living_zone.name.to_s
|
2208
2259
|
|
@@ -2245,7 +2296,7 @@ class OSModel
|
|
2245
2296
|
intgains_dhw_sensors[dhw_sensor] = [offcycle_loss, oncycle_loss, dhw_rtf_sensor]
|
2246
2297
|
end
|
2247
2298
|
|
2248
|
-
nonsurf_names = ['intgains', 'infil', 'mechvent', 'natvent', 'whf', 'ducts']
|
2299
|
+
nonsurf_names = ['intgains', 'lighting', 'infil', 'mechvent', 'natvent', 'whf', 'ducts']
|
2249
2300
|
|
2250
2301
|
# EMS program
|
2251
2302
|
program = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
@@ -2270,6 +2321,16 @@ class OSModel
|
|
2270
2321
|
end
|
2271
2322
|
end
|
2272
2323
|
|
2324
|
+
# EMS program: Lighting
|
2325
|
+
program.addLine('Set hr_lighting = 0')
|
2326
|
+
lightings_sensors.each do |lighting_sensors|
|
2327
|
+
s = 'Set hr_lighting = hr_lighting'
|
2328
|
+
lighting_sensors.each do |sensor|
|
2329
|
+
s += " - #{sensor.name}"
|
2330
|
+
end
|
2331
|
+
program.addLine(s) if lighting_sensors.size > 0
|
2332
|
+
end
|
2333
|
+
|
2273
2334
|
# EMS program: Internal gains
|
2274
2335
|
program.addLine('Set hr_intgains = 0')
|
2275
2336
|
intgains_sensors.each do |intgain_sensors|
|
@@ -2292,7 +2353,13 @@ class OSModel
|
|
2292
2353
|
s = "Set hr_#{loadtype} = hr_#{loadtype}"
|
2293
2354
|
sensors.each do |sensor|
|
2294
2355
|
if sensor.name.to_s.include? 'gain'
|
2295
|
-
|
2356
|
+
# FIXME: Workaround for https://github.com/NREL/EnergyPlus/issues/9934
|
2357
|
+
# Remove when the issue is resolved
|
2358
|
+
if loadtype == 'infil'
|
2359
|
+
s += " - (#{sensor.name} * 3600)"
|
2360
|
+
else
|
2361
|
+
s += " - #{sensor.name}"
|
2362
|
+
end
|
2296
2363
|
elsif sensor.name.to_s.include? 'loss'
|
2297
2364
|
s += " + #{sensor.name}"
|
2298
2365
|
end
|
@@ -2318,13 +2385,13 @@ class OSModel
|
|
2318
2385
|
program.addLine('Set htg_mode = 0')
|
2319
2386
|
program.addLine('Set clg_mode = 0')
|
2320
2387
|
program.addLine("If (#{liv_load_sensors[:htg].name} > 0)") # Assign hour to heating if heating load
|
2321
|
-
program.addLine(
|
2388
|
+
program.addLine(" Set htg_mode = #{total_heat_load_served}")
|
2322
2389
|
program.addLine("ElseIf (#{liv_load_sensors[:clg].name} > 0)") # Assign hour to cooling if cooling load
|
2323
|
-
program.addLine(
|
2390
|
+
program.addLine(" Set clg_mode = #{total_cool_load_served}")
|
2324
2391
|
program.addLine("ElseIf (#{@clg_ssn_sensor.name} > 0)") # No load, assign hour to cooling if in cooling season definition (Note: natural ventilation & whole house fan only operate during the cooling season)
|
2325
|
-
program.addLine(
|
2392
|
+
program.addLine(" Set clg_mode = #{total_cool_load_served}")
|
2326
2393
|
program.addLine('Else') # No load, assign hour to heating if not in cooling season definition
|
2327
|
-
program.addLine(
|
2394
|
+
program.addLine(" Set htg_mode = #{total_heat_load_served}")
|
2328
2395
|
program.addLine('EndIf')
|
2329
2396
|
|
2330
2397
|
[:htg, :clg].each do |mode|
|
@@ -2364,6 +2431,7 @@ class OSModel
|
|
2364
2431
|
ocf.setOutputMTR(@debug)
|
2365
2432
|
ocf.setOutputRDD(@debug)
|
2366
2433
|
ocf.setOutputSHD(@debug)
|
2434
|
+
ocf.setOutputSQLite(@debug)
|
2367
2435
|
ocf.setOutputPerfLog(@debug)
|
2368
2436
|
end
|
2369
2437
|
|