openstudio-common-measures 0.6.1 → 0.8.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/test_with_openstudio.yml +62 -0
- data/CHANGELOG.md +29 -1
- data/Gemfile +4 -0
- data/LICENSE.md +7 -21
- data/README.md +3 -1
- data/Rakefile +4 -27
- data/doc_templates/LICENSE.md +7 -21
- data/doc_templates/copyright_erb.txt +2 -32
- data/doc_templates/copyright_js.txt +2 -2
- data/doc_templates/copyright_ruby.txt +3 -33
- data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +7 -21
- data/lib/measures/AddCostPerAreaToConstruction/measure.rb +2 -32
- data/lib/measures/AddCostPerAreaToConstruction/measure.xml +5 -5
- data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.xml +5 -5
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.xml +5 -5
- data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToLights/measure.xml +5 -5
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.xml +5 -5
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +7 -21
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +2 -32
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.xml +12 -12
- data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +7 -21
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +2 -32
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.xml +5 -5
- data/lib/measures/AddExteriorLights/LICENSE.md +7 -21
- data/lib/measures/AddExteriorLights/measure.rb +2 -32
- data/lib/measures/AddExteriorLights/measure.xml +5 -5
- data/lib/measures/AddMeter/LICENSE.md +7 -21
- data/lib/measures/AddMeter/measure.rb +2 -32
- data/lib/measures/AddMeter/measure.xml +5 -5
- data/lib/measures/AddOutputDiagnostics/LICENSE.md +7 -21
- data/lib/measures/AddOutputDiagnostics/measure.rb +2 -32
- data/lib/measures/AddOutputDiagnostics/measure.xml +5 -5
- data/lib/measures/AddOutputVariable/LICENSE.md +7 -21
- data/lib/measures/AddOutputVariable/measure.rb +2 -32
- data/lib/measures/AddOutputVariable/measure.xml +5 -5
- data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +7 -21
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +2 -32
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.xml +5 -5
- data/lib/measures/AddThermalComfortModelTypes/LICENSE.md +13 -0
- data/lib/measures/AddThermalComfortModelTypes/README.md +115 -0
- data/lib/measures/AddThermalComfortModelTypes/README.md.erb +45 -0
- data/lib/measures/AddThermalComfortModelTypes/measure.rb +165 -0
- data/lib/measures/AddThermalComfortModelTypes/measure.xml +244 -0
- data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +7 -21
- data/lib/measures/AdjustSystemEfficiencies/measure.rb +7 -35
- data/lib/measures/AdjustSystemEfficiencies/measure.xml +4 -4
- data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +7 -21
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +2 -32
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.xml +5 -5
- data/lib/measures/ChangeBuildingLocation/LICENSE.md +7 -21
- data/lib/measures/ChangeBuildingLocation/measure.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/measure.xml +7 -7
- data/lib/measures/ChangeBuildingLocation/resources/epw.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +2 -32
- data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +7 -21
- data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +2 -32
- data/lib/measures/EnableIdealAirLoadsForAllZones/measure.xml +5 -5
- data/lib/measures/ExportScheduleCSV/LICENSE.md +7 -21
- data/lib/measures/ExportScheduleCSV/measure.rb +2 -32
- data/lib/measures/ExportScheduleCSV/measure.xml +5 -5
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +7 -21
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +2 -32
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.xml +5 -5
- data/lib/measures/MeterFlodPlot/LICENSE.md +7 -21
- data/lib/measures/MeterFlodPlot/measure.rb +2 -32
- data/lib/measures/MeterFlodPlot/measure.xml +5 -5
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.xml +5 -5
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.xml +5 -5
- data/lib/measures/PredictedMeanVote/LICENSE.md +7 -21
- data/lib/measures/PredictedMeanVote/measure.rb +2 -32
- data/lib/measures/PredictedMeanVote/measure.xml +5 -5
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +7 -21
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +2 -32
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.xml +5 -5
- data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +7 -21
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +2 -32
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.xml +5 -5
- data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +7 -21
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +2 -32
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.xml +23 -8
- data/lib/measures/ReplaceModel/LICENSE.md +13 -0
- data/lib/measures/ReplaceModel/README.md +34 -0
- data/lib/measures/ReplaceModel/README.md.erb +42 -0
- data/lib/measures/ReplaceModel/measure.rb +113 -0
- data/lib/measures/ReplaceModel/measure.xml +71 -0
- data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +7 -21
- data/lib/measures/ReplaceThermostatSchedules/measure.rb +2 -32
- data/lib/measures/ReplaceThermostatSchedules/measure.xml +7 -7
- data/lib/measures/ReportModelChanges/LICENSE.md +7 -21
- data/lib/measures/ReportModelChanges/measure.rb +2 -32
- data/lib/measures/ReportModelChanges/measure.xml +5 -5
- data/lib/measures/RunPeriod/LICENSE.md +7 -21
- data/lib/measures/RunPeriod/measure.rb +2 -32
- data/lib/measures/RunPeriod/measure.xml +4 -4
- data/lib/measures/RunPeriodMultiple/LICENSE.md +7 -21
- data/lib/measures/RunPeriodMultiple/measure.rb +2 -32
- data/lib/measures/RunPeriodMultiple/measure.xml +4 -4
- data/lib/measures/ServerDirectoryCleanup/LICENSE.md +7 -21
- data/lib/measures/ServerDirectoryCleanup/measure.rb +2 -32
- data/lib/measures/ServerDirectoryCleanup/measure.xml +5 -5
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +4 -34
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.xml +7 -7
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +5 -34
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.xml +7 -7
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.xml +5 -5
- data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.xml +5 -5
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.xml +5 -5
- data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +7 -21
- data/lib/measures/SetGasBurnerEfficiency/measure.rb +2 -32
- data/lib/measures/SetGasBurnerEfficiency/measure.xml +7 -7
- data/lib/measures/SetLifecycleCostParameters/LICENSE.md +7 -21
- data/lib/measures/SetLifecycleCostParameters/measure.rb +2 -32
- data/lib/measures/SetLifecycleCostParameters/measure.xml +5 -5
- data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +7 -21
- data/lib/measures/SetLightingLoadsByLPD/measure.rb +2 -32
- data/lib/measures/SetLightingLoadsByLPD/measure.xml +7 -7
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +7 -21
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +2 -32
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.xml +77 -17
- data/lib/measures/SetThermostatSchedules/LICENSE.md +7 -21
- data/lib/measures/SetThermostatSchedules/measure.rb +2 -32
- data/lib/measures/SetThermostatSchedules/measure.xml +7 -7
- data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +7 -21
- data/lib/measures/ShiftScheduleProfileTime/measure.rb +2 -32
- data/lib/measures/ShiftScheduleProfileTime/measure.xml +7 -7
- data/lib/measures/SwapLightsDefinition/LICENSE.md +7 -21
- data/lib/measures/SwapLightsDefinition/measure.rb +2 -32
- data/lib/measures/SwapLightsDefinition/measure.xml +5 -5
- data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +7 -21
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +2 -32
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.xml +5 -5
- data/lib/measures/VentilationQAQC/LICENSE.md +7 -21
- data/lib/measures/VentilationQAQC/measure.rb +2 -32
- data/lib/measures/VentilationQAQC/measure.xml +5 -5
- data/lib/measures/XcelEDAReportingandQAQC/LICENSE.md +13 -0
- data/lib/measures/XcelEDAReportingandQAQC/README.md +26 -0
- data/lib/measures/XcelEDAReportingandQAQC/README.md.erb +42 -0
- data/lib/measures/XcelEDAReportingandQAQC/measure.rb +201 -0
- data/lib/measures/XcelEDAReportingandQAQC/measure.xml +116 -0
- data/lib/measures/{generic_qaqc → XcelEDAReportingandQAQC}/resources/CreateResults.rb +51 -50
- data/lib/measures/XcelEDAReportingandQAQC/resources/EUI.rb +53 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/EndUseBreakdown.rb +88 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/FuelSwap.rb +275 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/PeakHeatCoolMonth.rb +191 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/UnmetHrs.rb +45 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/LICENSE.md +13 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md +40 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md.erb +42 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.rb +367 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.xml +309 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Commercial.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Interruptible Industrial G.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Large CG.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Commercial.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Firm.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Interruptible.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Primary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General Low Load Factor.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Transmission General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Primary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential Gas.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General Low Load Factor.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary Photovoltaic Time-of-Use.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Small CG.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Transmission General.idf +95 -0
- data/lib/measures/ZoneReport/LICENSE.md +7 -21
- data/lib/measures/ZoneReport/measure.rb +2 -32
- data/lib/measures/ZoneReport/measure.xml +5 -5
- data/lib/measures/add_ems_emissions_reporting/LICENSE.md +7 -21
- data/lib/measures/add_ems_emissions_reporting/measure.rb +2 -32
- data/lib/measures/add_ems_emissions_reporting/measure.xml +10 -10
- data/lib/measures/add_ems_to_control_ev_charging/LICENSE.MD.txt +1 -1
- data/lib/measures/add_ems_to_control_ev_charging/LICENSE.md +7 -21
- data/lib/measures/add_ems_to_control_ev_charging/measure.rb +2 -32
- data/lib/measures/add_ems_to_control_ev_charging/measure.xml +5 -8
- data/lib/measures/add_ev_load/LICENSE.MD.txt +1 -1
- data/lib/measures/add_ev_load/LICENSE.md +7 -21
- data/lib/measures/add_ev_load/measure.rb +2 -32
- data/lib/measures/add_ev_load/measure.xml +10 -10
- data/lib/measures/add_rooftop_pv/LICENSE.md +7 -21
- data/lib/measures/add_rooftop_pv/measure.rb +2 -32
- data/lib/measures/add_rooftop_pv/measure.xml +5 -5
- data/lib/measures/add_zone_mixing_object/LICENSE.md +7 -21
- data/lib/measures/add_zone_mixing_object/measure.rb +2 -32
- data/lib/measures/add_zone_mixing_object/measure.xml +5 -5
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +7 -21
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +6 -33
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.xml +5 -5
- data/lib/measures/air_wall_zone_mixing/LICENSE.md +7 -21
- data/lib/measures/air_wall_zone_mixing/measure.rb +2 -32
- data/lib/measures/air_wall_zone_mixing/measure.xml +5 -5
- data/lib/measures/create_csv_output/LICENSE.md +13 -0
- data/lib/measures/create_csv_output/README.md +36 -0
- data/lib/measures/create_csv_output/README.md.erb +45 -0
- data/lib/measures/create_csv_output/measure.rb +235 -0
- data/lib/measures/create_csv_output/measure.xml +124 -0
- data/lib/measures/create_csv_output/resources/report.html.in +13 -0
- data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +7 -21
- data/lib/measures/envelope_and_internal_load_breakdown/README.md +31 -0
- data/lib/measures/envelope_and_internal_load_breakdown/README.md.erb +31 -1
- data/lib/measures/envelope_and_internal_load_breakdown/docs/htg_gain_detailed_a.png +0 -0
- data/lib/measures/envelope_and_internal_load_breakdown/docs/htg_gain_detailed_b.png +0 -0
- data/lib/measures/envelope_and_internal_load_breakdown/docs/htg_gain_summary.png +0 -0
- data/lib/measures/envelope_and_internal_load_breakdown/docs/htg_loss_detailed.png +0 -0
- data/lib/measures/envelope_and_internal_load_breakdown/docs/htg_loss_summary.png +0 -0
- data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +2 -32
- data/lib/measures/envelope_and_internal_load_breakdown/measure.xml +39 -9
- data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +2 -32
- data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +10 -32
- data/lib/measures/example_report/LICENSE.md +7 -21
- data/lib/measures/example_report/measure.rb +2 -32
- data/lib/measures/example_report/measure.xml +7 -7
- data/lib/measures/example_report/resources/os_lib_reporting_example.rb +2 -32
- data/lib/measures/example_report/resources/report.html.erb +10 -32
- data/lib/measures/gem_env_report/LICENSE.md +7 -21
- data/lib/measures/gem_env_report/measure.rb +2 -32
- data/lib/measures/gem_env_report/measure.xml +9 -9
- data/lib/measures/gem_env_report/resources/gem_env_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/openstudio_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +2 -32
- data/lib/measures/generic_qaqc/LICENSE.md +7 -21
- data/lib/measures/generic_qaqc/measure.rb +2 -32
- data/lib/measures/generic_qaqc/measure.xml +110 -108
- data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_calibration.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +18 -44
- data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +7 -33
- data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +7 -33
- data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +11 -37
- data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +6 -36
- data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +8 -34
- data/lib/measures/generic_qaqc/resources/check_part_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_placeholder.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_schedules.rb +15 -36
- data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_weather_files.rb +2 -32
- data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +2 -32
- data/lib/measures/generic_qaqc/resources/report.html.erb +10 -32
- data/lib/measures/get_site_from_building_component_library/LICENSE.md +7 -21
- data/lib/measures/get_site_from_building_component_library/measure.rb +2 -32
- data/lib/measures/get_site_from_building_component_library/measure.xml +6 -6
- data/lib/measures/hvac_psychrometric_chart/LICENSE.md +7 -21
- data/lib/measures/hvac_psychrometric_chart/measure.rb +2 -32
- data/lib/measures/hvac_psychrometric_chart/measure.xml +6 -6
- data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +10 -32
- data/lib/measures/inject_idf_objects/LICENSE.md +7 -21
- data/lib/measures/inject_idf_objects/measure.rb +2 -32
- data/lib/measures/inject_idf_objects/measure.xml +5 -5
- data/lib/measures/openstudio_results/LICENSE.md +7 -21
- data/lib/measures/openstudio_results/measure.rb +2 -32
- data/lib/measures/openstudio_results/measure.xml +165 -165
- data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.Model.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +2 -32
- data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +2 -32
- data/lib/measures/openstudio_results/resources/report.html.erb +10 -32
- data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +7 -21
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +12 -50
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +10 -10
- data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +7 -21
- data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +2 -32
- data/lib/measures/set_electric_equipment_loads_by_epd/measure.xml +7 -7
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +7 -21
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +2 -32
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.xml +10 -10
- data/lib/measures/set_run_period/LICENSE.md +7 -21
- data/lib/measures/set_run_period/measure.rb +2 -32
- data/lib/measures/set_run_period/measure.xml +5 -5
- data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +7 -21
- data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +2 -32
- data/lib/measures/set_space_infiltration_per_exterior_area/measure.xml +5 -5
- data/lib/measures/shadow_calculation/LICENSE.md +13 -0
- data/lib/measures/shadow_calculation/README.md +80 -0
- data/lib/measures/shadow_calculation/README.md.erb +42 -0
- data/lib/measures/shadow_calculation/measure.rb +188 -0
- data/lib/measures/shadow_calculation/measure.xml +180 -0
- data/lib/measures/tariff_selection_block/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_block/measure.rb +2 -32
- data/lib/measures/tariff_selection_block/measure.xml +5 -5
- data/lib/measures/tariff_selection_flat/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_flat/measure.rb +2 -32
- data/lib/measures/tariff_selection_flat/measure.xml +5 -5
- data/lib/measures/tariff_selection_generic/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_generic/measure.rb +2 -32
- data/lib/measures/tariff_selection_generic/measure.xml +23 -23
- data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -32
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.xml +5 -5
- data/lib/measures/view_data/LICENSE.md +7 -21
- data/lib/measures/view_data/measure.rb +2 -32
- data/lib/measures/view_data/measure.xml +7 -7
- data/lib/measures/view_data/resources/report.html.in +1 -1
- data/lib/measures/view_data/resources/va3c.rb +2 -32
- data/lib/measures/view_model/LICENSE.md +7 -21
- data/lib/measures/view_model/measure.rb +2 -32
- data/lib/measures/view_model/measure.xml +24 -24
- data/lib/measures/view_model/resources/report.html.in +1 -1
- data/lib/measures/view_model/resources/va3c.rb +2 -32
- data/lib/openstudio/common_measures/extension.rb +2 -32
- data/lib/openstudio/common_measures/version.rb +3 -33
- data/lib/openstudio/common_measures.rb +2 -32
- data/lib/openstudio-common-measures.rb +2 -32
- data/openstudio-common-measures.gemspec +2 -2
- metadata +77 -13
- data/lib/measures/.rubocop.yml +0 -7
- /data/lib/measures/{.gitkeep → create_csv_output/docs/.gitkeep} +0 -0
@@ -0,0 +1,201 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
# start the measure
|
7
|
+
class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
|
8
|
+
|
9
|
+
# require all .rb files in resources folder
|
10
|
+
Dir[File.dirname(__FILE__) + '/resources/*.rb'].each { |file| require file }
|
11
|
+
# incude module
|
12
|
+
include OsLib_CreateResults
|
13
|
+
|
14
|
+
# define the name that a user will see, this method may be deprecated as
|
15
|
+
# the display name in PAT comes from the name field in measure.xml
|
16
|
+
def name
|
17
|
+
return 'XcelEDAReportingandQAQC'
|
18
|
+
end
|
19
|
+
|
20
|
+
# define the arguments that the user will input
|
21
|
+
def arguments(model = nil)
|
22
|
+
args = OpenStudio::Measure::OSArgumentVector.new
|
23
|
+
|
24
|
+
return args
|
25
|
+
end
|
26
|
+
|
27
|
+
# return a vector of IdfObject's to request EnergyPlus objects needed by the run method
|
28
|
+
def energyPlusOutputRequests(runner, user_arguments)
|
29
|
+
super(runner, user_arguments)
|
30
|
+
|
31
|
+
result = OpenStudio::IdfObjectVector.new
|
32
|
+
|
33
|
+
# Request the day type to use in the peak demand window checks.
|
34
|
+
result << OpenStudio::IdfObject.load('Output:Variable,*,Site Day Type Index,timestep;').get
|
35
|
+
|
36
|
+
return result
|
37
|
+
end
|
38
|
+
|
39
|
+
# define what happens when the measure is run
|
40
|
+
def run(runner, user_arguments)
|
41
|
+
super(runner, user_arguments)
|
42
|
+
|
43
|
+
# make the runner a class variable
|
44
|
+
@runner = runner
|
45
|
+
|
46
|
+
# use the built-in error checking
|
47
|
+
if !runner.validateUserArguments(arguments, user_arguments)
|
48
|
+
return false
|
49
|
+
end
|
50
|
+
|
51
|
+
runner.registerInitialCondition('Starting QAQC report generation')
|
52
|
+
|
53
|
+
# get the last model and sql file
|
54
|
+
@model = runner.lastOpenStudioModel
|
55
|
+
if @model.is_initialized
|
56
|
+
@model = @model.get
|
57
|
+
else
|
58
|
+
runner.registerError('Cannot find last model.')
|
59
|
+
return false
|
60
|
+
end
|
61
|
+
|
62
|
+
@sql = runner.lastEnergyPlusSqlFile
|
63
|
+
if @sql.is_initialized
|
64
|
+
@sql = @sql.get
|
65
|
+
else
|
66
|
+
runner.registerError('Cannot find last sql file.')
|
67
|
+
return false
|
68
|
+
end
|
69
|
+
|
70
|
+
# define the time-of-use periods for electricity consumption
|
71
|
+
electricity_consumption_tou_periods = [
|
72
|
+
{
|
73
|
+
'tou_name' => 'system_peak',
|
74
|
+
'tou_id' => 1,
|
75
|
+
'skip_weekends' => true,
|
76
|
+
'skip_holidays' => true,
|
77
|
+
'start_mo' => 'June',
|
78
|
+
'start_day' => 1,
|
79
|
+
'start_hr' => 14,
|
80
|
+
'end_mo' => 'September',
|
81
|
+
'end_day' => 30,
|
82
|
+
'end_hr' => 18
|
83
|
+
},
|
84
|
+
{
|
85
|
+
'tou_name' => 'peak',
|
86
|
+
'tou_id' => 2,
|
87
|
+
'skip_weekends' => true,
|
88
|
+
'skip_holidays' => true,
|
89
|
+
'start_mo' => 'January',
|
90
|
+
'start_day' => 1,
|
91
|
+
'start_hr' => 7,
|
92
|
+
'end_mo' => 'December',
|
93
|
+
'end_day' => 31,
|
94
|
+
'end_hr' => 22
|
95
|
+
},
|
96
|
+
{
|
97
|
+
'tou_name' => 'low_value_spring',
|
98
|
+
'tou_id' => 4,
|
99
|
+
'skip_weekends' => false,
|
100
|
+
'skip_holidays' => false,
|
101
|
+
'start_mo' => 'February',
|
102
|
+
'start_day' => 1,
|
103
|
+
'start_hr' => 0,
|
104
|
+
'end_mo' => 'April',
|
105
|
+
'end_day' => 30,
|
106
|
+
'end_hr' => 6
|
107
|
+
},
|
108
|
+
{
|
109
|
+
'tou_name' => 'low_value_fall',
|
110
|
+
'tou_id' => 4,
|
111
|
+
'skip_weekends' => false,
|
112
|
+
'skip_holidays' => false,
|
113
|
+
'start_mo' => 'November',
|
114
|
+
'start_day' => 1,
|
115
|
+
'start_hr' => 0,
|
116
|
+
'end_mo' => 'November',
|
117
|
+
'end_day' => 30,
|
118
|
+
'end_hr' => 6
|
119
|
+
},
|
120
|
+
{
|
121
|
+
'tou_name' => 'average',
|
122
|
+
'tou_id' => 3,
|
123
|
+
'skip_weekends' => false,
|
124
|
+
'skip_holidays' => false,
|
125
|
+
'start_mo' => 'January',
|
126
|
+
'start_day' => 1,
|
127
|
+
'start_hr' => 0,
|
128
|
+
'end_mo' => 'December',
|
129
|
+
'end_day' => 31,
|
130
|
+
'end_hr' => 24
|
131
|
+
}
|
132
|
+
]
|
133
|
+
|
134
|
+
# vector to store the results and checks
|
135
|
+
report_elems = OpenStudio::AttributeVector.new
|
136
|
+
report_elems << create_results(skip_weekends = true,
|
137
|
+
skip_holidays = true,
|
138
|
+
start_mo = 'June',
|
139
|
+
start_day = 1,
|
140
|
+
start_hr = 14,
|
141
|
+
end_mo = 'September',
|
142
|
+
end_day = 30,
|
143
|
+
end_hr = 18,
|
144
|
+
electricity_consumption_tou_periods)
|
145
|
+
|
146
|
+
# create an attribute vector to hold the checks
|
147
|
+
check_elems = OpenStudio::AttributeVector.new
|
148
|
+
|
149
|
+
# unmet hours check
|
150
|
+
check_elems << unmet_hrs_check
|
151
|
+
|
152
|
+
# energy use for cooling and heating as percentage of total energy check
|
153
|
+
check_elems << enduse_pcts_check
|
154
|
+
|
155
|
+
# peak heating and cooling months check
|
156
|
+
check_elems << peak_heat_cool_mo_check
|
157
|
+
|
158
|
+
# EUI check
|
159
|
+
check_elems << eui_check
|
160
|
+
|
161
|
+
# Register Values for all of the checks
|
162
|
+
check_elems.each do |check|
|
163
|
+
check_uid = OpenStudio.removeBraces(OpenStudio.createUUID)
|
164
|
+
# loop through attributes (name,category,description,then optionally one or more flag attributes)
|
165
|
+
check.valueAsAttributeVector.each_with_index do |value, index|
|
166
|
+
if index == 0 # name
|
167
|
+
runner.registerValue("qaqc_name_#{check_uid}", value.valueAsString)
|
168
|
+
elsif index == 1 # category
|
169
|
+
runner.registerValue("qaqc_cat_#{check_uid}", value.valueAsString)
|
170
|
+
elsif index == 2 # description
|
171
|
+
runner.registerValue("qaqc_desc_#{check_uid}", value.valueAsString)
|
172
|
+
else # flag
|
173
|
+
flag_uid = OpenStudio.removeBraces(OpenStudio.createUUID)
|
174
|
+
runner.registerValue("qaqc_flag_#{check_uid}_#{flag_uid}", value.valueAsString)
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
# end checks
|
180
|
+
report_elems << OpenStudio::Attribute.new('checks', check_elems)
|
181
|
+
|
182
|
+
# create an extra layer of report. the first level gets thrown away.
|
183
|
+
top_level_elems = OpenStudio::AttributeVector.new
|
184
|
+
top_level_elems << OpenStudio::Attribute.new('report', report_elems)
|
185
|
+
|
186
|
+
# create the report
|
187
|
+
result = OpenStudio::Attribute.new('summary_report', top_level_elems)
|
188
|
+
result.saveToXml(OpenStudio::Path.new('report.xml'))
|
189
|
+
|
190
|
+
# closing the sql file
|
191
|
+
@sql.close
|
192
|
+
|
193
|
+
# reporting final condition
|
194
|
+
runner.registerFinalCondition('Finished generating report.xml.')
|
195
|
+
|
196
|
+
return true
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
# this allows the measure to be use by the application
|
201
|
+
XcelEDAReportingandQAQC.new.registerWithApplication
|
@@ -0,0 +1,116 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<measure>
|
3
|
+
<schema_version>3.0</schema_version>
|
4
|
+
<name>xcel_eda_reportingand_qaqc</name>
|
5
|
+
<uid>92bee759-86ae-4617-92e2-f8e5aa9dc684</uid>
|
6
|
+
<version_id>1fbb6bad-30d2-4d7b-8202-9bffacab9a27</version_id>
|
7
|
+
<version_modified>20230606T063314Z</version_modified>
|
8
|
+
<xml_checksum>2C8A3EEF</xml_checksum>
|
9
|
+
<class_name>XcelEDAReportingandQAQC</class_name>
|
10
|
+
<display_name>XcelEDAReportingandQAQC</display_name>
|
11
|
+
<description>This measure extracts key simulation results and performs basic model QAQC checks necessary for the Xcel EDA Program.</description>
|
12
|
+
<modeler_description>Reads the model and sql file to pull out the necessary information and run the model checks. The check results show up as Warning messages in the measure's output on the PAT run tab.</modeler_description>
|
13
|
+
<arguments />
|
14
|
+
<outputs />
|
15
|
+
<provenances />
|
16
|
+
<tags>
|
17
|
+
<tag>Reporting.QAQC</tag>
|
18
|
+
</tags>
|
19
|
+
<attributes>
|
20
|
+
<attribute>
|
21
|
+
<name>Measure Type</name>
|
22
|
+
<value>ReportingMeasure</value>
|
23
|
+
<datatype>string</datatype>
|
24
|
+
</attribute>
|
25
|
+
<attribute>
|
26
|
+
<name>Uses SketchUp API</name>
|
27
|
+
<value>false</value>
|
28
|
+
<datatype>boolean</datatype>
|
29
|
+
</attribute>
|
30
|
+
</attributes>
|
31
|
+
<files>
|
32
|
+
<file>
|
33
|
+
<filename>0116_OfficeTest121_dev.osm</filename>
|
34
|
+
<filetype>osm</filetype>
|
35
|
+
<usage_type>test</usage_type>
|
36
|
+
<checksum>63E36762</checksum>
|
37
|
+
</file>
|
38
|
+
<file>
|
39
|
+
<filename>USA_CO_Golden-NREL.724666_TMY3.epw</filename>
|
40
|
+
<filetype>epw</filetype>
|
41
|
+
<usage_type>test</usage_type>
|
42
|
+
<checksum>BDF687C1</checksum>
|
43
|
+
</file>
|
44
|
+
<file>
|
45
|
+
<filename>FuelSwap.rb</filename>
|
46
|
+
<filetype>rb</filetype>
|
47
|
+
<usage_type>resource</usage_type>
|
48
|
+
<checksum>0331B57B</checksum>
|
49
|
+
</file>
|
50
|
+
<file>
|
51
|
+
<filename>LICENSE.md</filename>
|
52
|
+
<filetype>md</filetype>
|
53
|
+
<usage_type>license</usage_type>
|
54
|
+
<checksum>9640B6CB</checksum>
|
55
|
+
</file>
|
56
|
+
<file>
|
57
|
+
<filename>README.md.erb</filename>
|
58
|
+
<filetype>erb</filetype>
|
59
|
+
<usage_type>readmeerb</usage_type>
|
60
|
+
<checksum>703C9964</checksum>
|
61
|
+
</file>
|
62
|
+
<file>
|
63
|
+
<filename>README.md</filename>
|
64
|
+
<filetype>md</filetype>
|
65
|
+
<usage_type>readme</usage_type>
|
66
|
+
<checksum>2313289F</checksum>
|
67
|
+
</file>
|
68
|
+
<file>
|
69
|
+
<filename>UnmetHrs.rb</filename>
|
70
|
+
<filetype>rb</filetype>
|
71
|
+
<usage_type>resource</usage_type>
|
72
|
+
<checksum>A57CD713</checksum>
|
73
|
+
</file>
|
74
|
+
<file>
|
75
|
+
<filename>EUI.rb</filename>
|
76
|
+
<filetype>rb</filetype>
|
77
|
+
<usage_type>resource</usage_type>
|
78
|
+
<checksum>5048D687</checksum>
|
79
|
+
</file>
|
80
|
+
<file>
|
81
|
+
<filename>XcelEDAReportingandQAQC_Test.rb</filename>
|
82
|
+
<filetype>rb</filetype>
|
83
|
+
<usage_type>test</usage_type>
|
84
|
+
<checksum>92CFA4EC</checksum>
|
85
|
+
</file>
|
86
|
+
<file>
|
87
|
+
<version>
|
88
|
+
<software_program>OpenStudio</software_program>
|
89
|
+
<identifier>2.0.0</identifier>
|
90
|
+
<min_compatible>3.6.0</min_compatible>
|
91
|
+
</version>
|
92
|
+
<filename>measure.rb</filename>
|
93
|
+
<filetype>rb</filetype>
|
94
|
+
<usage_type>script</usage_type>
|
95
|
+
<checksum>1A411884</checksum>
|
96
|
+
</file>
|
97
|
+
<file>
|
98
|
+
<filename>PeakHeatCoolMonth.rb</filename>
|
99
|
+
<filetype>rb</filetype>
|
100
|
+
<usage_type>resource</usage_type>
|
101
|
+
<checksum>BF7DA333</checksum>
|
102
|
+
</file>
|
103
|
+
<file>
|
104
|
+
<filename>EndUseBreakdown.rb</filename>
|
105
|
+
<filetype>rb</filetype>
|
106
|
+
<usage_type>resource</usage_type>
|
107
|
+
<checksum>40551D0D</checksum>
|
108
|
+
</file>
|
109
|
+
<file>
|
110
|
+
<filename>CreateResults.rb</filename>
|
111
|
+
<filetype>rb</filetype>
|
112
|
+
<usage_type>resource</usage_type>
|
113
|
+
<checksum>C1E641AA</checksum>
|
114
|
+
</file>
|
115
|
+
</files>
|
116
|
+
</measure>
|
@@ -1,36 +1,6 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c)
|
3
|
-
#
|
4
|
-
# Redistribution and use in source and binary forms, with or without
|
5
|
-
# modification, are permitted provided that the following conditions are met:
|
6
|
-
#
|
7
|
-
# (1) Redistributions of source code must retain the above copyright notice,
|
8
|
-
# this list of conditions and the following disclaimer.
|
9
|
-
#
|
10
|
-
# (2) Redistributions in binary form must reproduce the above copyright notice,
|
11
|
-
# this list of conditions and the following disclaimer in the documentation
|
12
|
-
# and/or other materials provided with the distribution.
|
13
|
-
#
|
14
|
-
# (3) Neither the name of the copyright holder nor the names of any contributors
|
15
|
-
# may be used to endorse or promote products derived from this software without
|
16
|
-
# specific prior written permission from the respective party.
|
17
|
-
#
|
18
|
-
# (4) Other than as required in clauses (1) and (2), distributions in any form
|
19
|
-
# of modifications or other derivative works may not use the "OpenStudio"
|
20
|
-
# trademark, "OS", "os", or any other confusingly similar designation without
|
21
|
-
# specific prior written permission from Alliance for Sustainable Energy, LLC.
|
22
|
-
#
|
23
|
-
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS
|
24
|
-
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
25
|
-
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
26
|
-
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE
|
27
|
-
# UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF
|
28
|
-
# THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
29
|
-
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
30
|
-
# OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
31
|
-
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
32
|
-
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
33
|
-
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
34
4
|
# *******************************************************************************
|
35
5
|
|
36
6
|
module OsLib_CreateResults
|
@@ -171,9 +141,9 @@ module OsLib_CreateResults
|
|
171
141
|
|
172
142
|
yr = nil
|
173
143
|
if os_version > OpenStudio::VersionString.new('1.5.3')
|
174
|
-
yr = "January
|
144
|
+
yr = "January #{new_yr.round}"
|
175
145
|
else
|
176
|
-
yr = "January
|
146
|
+
yr = "January #{new_yr.round}"
|
177
147
|
end
|
178
148
|
|
179
149
|
ann_cap_cash = 0.0
|
@@ -288,7 +258,14 @@ module OsLib_CreateResults
|
|
288
258
|
fuel_type_map = {
|
289
259
|
OpenStudio::EndUseFuelType.new('Electricity').value => OpenStudio::FuelType.new('Electricity'),
|
290
260
|
OpenStudio::EndUseFuelType.new('Gas').value => OpenStudio::FuelType.new('Gas'),
|
291
|
-
OpenStudio::EndUseFuelType.new('
|
261
|
+
OpenStudio::EndUseFuelType.new('Gasoline').value => OpenStudio::FuelType.new('Gasoline'),
|
262
|
+
OpenStudio::EndUseFuelType.new('Diesel').value => OpenStudio::FuelType.new('Diesel'),
|
263
|
+
OpenStudio::EndUseFuelType.new('Coal').value => OpenStudio::FuelType.new('Coal'),
|
264
|
+
OpenStudio::EndUseFuelType.new('FuelOil_1').value => OpenStudio::FuelType.new('FuelOil_1'),
|
265
|
+
OpenStudio::EndUseFuelType.new('FuelOil_2').value => OpenStudio::FuelType.new('FuelOil_2'),
|
266
|
+
OpenStudio::EndUseFuelType.new('Propane').value => OpenStudio::FuelType.new('Propane'),
|
267
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_1').value => OpenStudio::FuelType.new('OtherFuel_1'),
|
268
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_2').value => OpenStudio::FuelType.new('OtherFuel_2'),
|
292
269
|
OpenStudio::EndUseFuelType.new('DistrictCooling').value => OpenStudio::FuelType.new('DistrictCooling'),
|
293
270
|
OpenStudio::EndUseFuelType.new('DistrictHeating').value => OpenStudio::FuelType.new('DistrictHeating'),
|
294
271
|
OpenStudio::EndUseFuelType.new('Water').value => OpenStudio::FuelType.new('Water')
|
@@ -298,7 +275,14 @@ module OsLib_CreateResults
|
|
298
275
|
fuel_type_alias_map = {
|
299
276
|
OpenStudio::EndUseFuelType.new('Electricity').value => 'electricity',
|
300
277
|
OpenStudio::EndUseFuelType.new('Gas').value => 'gas',
|
301
|
-
OpenStudio::EndUseFuelType.new('
|
278
|
+
OpenStudio::EndUseFuelType.new('Gasoline').value => 'gas',
|
279
|
+
OpenStudio::EndUseFuelType.new('Diesel').value => 'diesel',
|
280
|
+
OpenStudio::EndUseFuelType.new('Coal').value => 'coal',
|
281
|
+
OpenStudio::EndUseFuelType.new('FuelOil_1').value => 'fuel_oil_1',
|
282
|
+
OpenStudio::EndUseFuelType.new('FuelOil_2').value => 'fuel_oil_2',
|
283
|
+
OpenStudio::EndUseFuelType.new('Propane').value => 'propane',
|
284
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_1').value => 'other_energy',
|
285
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_2').value => 'other_fuel_2',
|
302
286
|
OpenStudio::EndUseFuelType.new('DistrictCooling').value => 'district_cooling',
|
303
287
|
OpenStudio::EndUseFuelType.new('DistrictHeating').value => 'district_heating',
|
304
288
|
OpenStudio::EndUseFuelType.new('Water').value => 'water'
|
@@ -331,14 +315,26 @@ module OsLib_CreateResults
|
|
331
315
|
end
|
332
316
|
|
333
317
|
# other_energy
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
@
|
338
|
-
|
339
|
-
|
340
|
-
|
318
|
+
other_fuels = ['gasoline', 'diesel', 'coal', 'fuelOilNo1', 'fuelOilNo2', 'propane', 'otherFuel1', 'otherFuel2']
|
319
|
+
other_energy_total = 0.0
|
320
|
+
other_fuels.each do |fuel|
|
321
|
+
other_energy = @sql.instance_eval(fuel + 'TotalEndUses')
|
322
|
+
if other_energy.is_initialized
|
323
|
+
# sum up all of the "other" fuels
|
324
|
+
other_energy_total += other_energy.get
|
325
|
+
end
|
341
326
|
end
|
327
|
+
cons_elems << OpenStudio::Attribute.new('other_energy', other_energy_total, 'GJ')
|
328
|
+
@runner.registerValue('annual_consumption_other_energy', other_energy_total, 'GJ')
|
329
|
+
|
330
|
+
# other_energy = @sql.otherFuelTotalEndUses
|
331
|
+
# if other_energy.is_initialized
|
332
|
+
# cons_elems << OpenStudio::Attribute.new('other_energy', other_energy.get, 'GJ')
|
333
|
+
# @runner.registerValue('annual_consumption_other_energy', other_energy.get, 'GJ')
|
334
|
+
# else
|
335
|
+
# cons_elems << OpenStudio::Attribute.new('other_energy', 0.0, 'GJ')
|
336
|
+
# @runner.registerValue('annual_consumption_other_energy', 0.0, 'GJ')
|
337
|
+
# end
|
342
338
|
|
343
339
|
# district_cooling
|
344
340
|
district_cooling = @sql.districtCoolingTotalEndUses
|
@@ -752,7 +748,7 @@ module OsLib_CreateResults
|
|
752
748
|
end
|
753
749
|
else
|
754
750
|
# If TOU periods were specified but this model has no district cooling, report zeroes
|
755
|
-
if
|
751
|
+
if electricity_consumption_tou_periods.size > 0
|
756
752
|
# Get the TOU ids
|
757
753
|
tou_ids = []
|
758
754
|
electricity_consumption_tou_periods.each do |tou_pd|
|
@@ -882,9 +878,9 @@ module OsLib_CreateResults
|
|
882
878
|
end
|
883
879
|
if total.is_initialized
|
884
880
|
other_val = total.get - prev_tot
|
885
|
-
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
881
|
+
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = other_val
|
886
882
|
else
|
887
|
-
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
883
|
+
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = 0.0
|
888
884
|
end
|
889
885
|
|
890
886
|
# export remaining costs in the correct order
|
@@ -892,8 +888,8 @@ module OsLib_CreateResults
|
|
892
888
|
utility_cost_elems << OpenStudio::Attribute.new('gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
|
893
889
|
@runner.registerValue('annual_utility_cost_gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
|
894
890
|
# other_energy
|
895
|
-
utility_cost_elems << OpenStudio::Attribute.new('other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
896
|
-
@runner.registerValue('annual_utility_cost_other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
891
|
+
utility_cost_elems << OpenStudio::Attribute.new('other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
|
892
|
+
@runner.registerValue('annual_utility_cost_other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
|
897
893
|
# district_cooling
|
898
894
|
utility_cost_elems << OpenStudio::Attribute.new('district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
|
899
895
|
@runner.registerValue('annual_utility_cost_district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
|
@@ -928,7 +924,12 @@ module OsLib_CreateResults
|
|
928
924
|
# loop through all the fuel types
|
929
925
|
end_use_fuel_types.each do |end_use_fuel_type|
|
930
926
|
# get the annual total cost for this fuel type
|
931
|
-
|
927
|
+
# Only Electricity, Gas, DistrictCooling,DistrictHeating, Water and OtherFuel_1 are defined in map so check value first
|
928
|
+
if annual_utility_cost_map.key?(end_use_fuel_type.valueName)
|
929
|
+
ann_cost = annual_utility_cost_map[end_use_fuel_type.valueName]
|
930
|
+
else
|
931
|
+
ann_cost = 0.0
|
932
|
+
end
|
932
933
|
# get the total annual usage for this fuel type in all end use categories
|
933
934
|
# loop through all end uses, adding the annual usage value to the aggregator
|
934
935
|
ann_usg = 0.0
|
@@ -980,7 +981,7 @@ module OsLib_CreateResults
|
|
980
981
|
fuel_type_elems = OpenStudio::AttributeVector.new
|
981
982
|
fuel_type_name = fuel_type_alias_map[end_use_fuel_type.value]
|
982
983
|
ann_energy_cons = 0.0
|
983
|
-
# in each end use, loop through months and get monthly
|
984
|
+
# in each end use, loop through months and get monthly energy consumption
|
984
985
|
months.each_with_index do |month, i|
|
985
986
|
mon_energy_cons = 0.0
|
986
987
|
val = @sql.energyConsumptionByMonth(end_use_fuel_type, end_use_cat, month)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
|
7
|
+
# can we use E+'s metric directly? E+ will only use conditioned area
|
8
|
+
# we need to incorporate building type into the range checking - ASHRAE Standard 100
|
9
|
+
# how many hours did the @model run for? - make sure 8760 - get from html file
|
10
|
+
|
11
|
+
# checks the EUI for the whole building
|
12
|
+
def eui_check
|
13
|
+
# summary of the check
|
14
|
+
check_elems = OpenStudio::AttributeVector.new
|
15
|
+
check_elems << OpenStudio::Attribute.new('name', 'EUI Check')
|
16
|
+
check_elems << OpenStudio::Attribute.new('category', 'General')
|
17
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check that the EUI of the building is reasonable')
|
18
|
+
|
19
|
+
building = @model.getBuilding
|
20
|
+
|
21
|
+
# make sure all required data are available
|
22
|
+
if @sql.totalSiteEnergy.empty?
|
23
|
+
check_elems << OpenStudio::Attribute.new('flag', 'Site energy data unavailable; check not run')
|
24
|
+
@runner.registerWarning('Site energy data unavailable; check not run')
|
25
|
+
end
|
26
|
+
|
27
|
+
total_site_energy_kBtu = OpenStudio.convert(@sql.totalSiteEnergy.get, 'GJ', 'kBtu').get
|
28
|
+
if total_site_energy_kBtu == 0
|
29
|
+
check_elems << OpenStudio::Attribute.new('flag', 'Model site energy use = 0; likely a problem with the model')
|
30
|
+
@runner.registerWarning('Model site energy use = 0; likely a problem with the model')
|
31
|
+
end
|
32
|
+
|
33
|
+
floor_area_ft2 = OpenStudio.convert(building.floorArea, 'm^2', 'ft^2').get
|
34
|
+
if floor_area_ft2 == 0
|
35
|
+
check_elems << OpenStudio::Attribute.new('flag', 'The building has 0 floor area')
|
36
|
+
@runner.registerWarning('The building has 0 floor area')
|
37
|
+
end
|
38
|
+
|
39
|
+
site_EUI = total_site_energy_kBtu / floor_area_ft2
|
40
|
+
if site_EUI > 200
|
41
|
+
check_elems << OpenStudio::Attribute.new('flag', "Site EUI of #{site_EUI} looks high. A hospital or lab (high energy buildings) are around 200 kBtu/ft^2")
|
42
|
+
@runner.registerWarning("Site EUI of #{site_EUI} looks high. A hospital or lab (high energy buildings) are around 200 kBtu/ft^2")
|
43
|
+
end
|
44
|
+
if site_EUI < 30
|
45
|
+
check_elems << OpenStudio::Attribute.new('flag', "Site EUI of #{site_EUI} looks low. A high efficiency office building is around 50 kBtu/ft^2")
|
46
|
+
@runner.registerWarning("Site EUI of #{site_EUI} looks low. A high efficiency office building is around 50 kBtu/ft^2")
|
47
|
+
end
|
48
|
+
|
49
|
+
check_elem = OpenStudio::Attribute.new('check', check_elems)
|
50
|
+
|
51
|
+
return check_elem
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
|
7
|
+
# add electric heat rejection to electric cooling
|
8
|
+
# add fans and lights? compare fans and cooling - greater than 5x different during peak cooling month - helps identify bad chiller curves
|
9
|
+
|
10
|
+
# energy use for cooling and heating as percentage of total energy
|
11
|
+
def enduse_pcts_check
|
12
|
+
# summary of the check
|
13
|
+
check_elems = OpenStudio::AttributeVector.new
|
14
|
+
check_elems << OpenStudio::Attribute.new('name', 'Energy Enduses Check')
|
15
|
+
check_elems << OpenStudio::Attribute.new('category', 'Xcel EDA')
|
16
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check that heating and cooling energy make up the expected percentage of total energy consumption')
|
17
|
+
|
18
|
+
# aggregators to hold the values
|
19
|
+
electricity_cooling = 0
|
20
|
+
natural_gas_cooling = 0
|
21
|
+
other_fuel_cooling = 0
|
22
|
+
total_site_energy = 0
|
23
|
+
electricity_heating = 0
|
24
|
+
natural_gas_heating = 0
|
25
|
+
other_fuel_heating = 0
|
26
|
+
|
27
|
+
# make sure all required data are available
|
28
|
+
if @sql.electricityCooling.is_initialized
|
29
|
+
electricity_cooling = @sql.electricityCooling.get
|
30
|
+
end
|
31
|
+
if @sql.naturalGasCooling.is_initialized
|
32
|
+
natural_gas_cooling = @sql.naturalGasCooling.get
|
33
|
+
end
|
34
|
+
if @sql.totalSiteEnergy.is_initialized
|
35
|
+
total_site_energy = @sql.totalSiteEnergy.get
|
36
|
+
end
|
37
|
+
if @sql.electricityHeating.is_initialized
|
38
|
+
electricity_heating = @sql.electricityHeating.get
|
39
|
+
end
|
40
|
+
if @sql.naturalGasHeating.is_initialized
|
41
|
+
natural_gas_heating = @sql.naturalGasHeating.get
|
42
|
+
end
|
43
|
+
|
44
|
+
other_fuels = ['gasoline', 'diesel', 'coal', 'fuelOilNo1', 'fuelOilNo2', 'propane', 'otherFuel1', 'otherFuel2']
|
45
|
+
other_fuel_cooling = 0.0
|
46
|
+
other_fuels.each do |fuel|
|
47
|
+
other_energy = @sql.instance_eval(fuel + 'Cooling')
|
48
|
+
if other_energy.is_initialized
|
49
|
+
# sum up all of the "other" fuels
|
50
|
+
other_fuel_cooling += other_energy.get
|
51
|
+
end
|
52
|
+
end
|
53
|
+
other_fuel_heating = 0.0
|
54
|
+
other_fuels.each do |fuel|
|
55
|
+
other_energy = @sql.instance_eval(fuel + 'Heating')
|
56
|
+
if other_energy.is_initialized
|
57
|
+
# sum up all of the "other" fuels
|
58
|
+
other_fuel_heating += other_energy.get
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# if @sql.otherFuelCooling.is_initialized
|
63
|
+
# other_fuel_cooling = @sql.otherFuelCooling.get
|
64
|
+
# end
|
65
|
+
# if @sql.otherFuelHeating.is_initialized
|
66
|
+
# other_fuel_heating = @sql.otherFuelHeating.get
|
67
|
+
# end
|
68
|
+
|
69
|
+
pct_cooling = (electricity_cooling + natural_gas_cooling + other_fuel_cooling) / total_site_energy
|
70
|
+
pct_heating = (electricity_heating + natural_gas_heating + other_fuel_heating) / total_site_energy
|
71
|
+
|
72
|
+
# flag if 0% < pct_cooling < 20%
|
73
|
+
if (pct_cooling < 0.0) || (pct_cooling > 0.2)
|
74
|
+
check_elems << OpenStudio::Attribute.new('flag', "Cooling energy = #{pct_cooling} of total energy use; outside of 0%-20% range expected by Xcel EDA")
|
75
|
+
@runner.registerWarning("Cooling energy = #{pct_cooling} of total energy use; outside of 0%-20% range expected by Xcel EDA")
|
76
|
+
end
|
77
|
+
|
78
|
+
# flag if 30% < pct_heating < 50%
|
79
|
+
if (pct_heating < 0.30) || (pct_heating > 0.50)
|
80
|
+
check_elems << OpenStudio::Attribute.new('flag', "Heating energy = #{pct_heating} of total energy use; outside the 30%-50% range expected by Xcel EDA")
|
81
|
+
@runner.registerWarning("Heating energy = #{pct_heating} of total energy use; outside the 30%-50% range expected by Xcel EDA")
|
82
|
+
end
|
83
|
+
|
84
|
+
check_elem = OpenStudio::Attribute.new('check', check_elems)
|
85
|
+
|
86
|
+
return check_elem
|
87
|
+
end
|
88
|
+
end
|