openstudio-common-measures 0.7.0 → 0.9.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 +30 -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/AddCostPerFloorAreaToBuilding/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +2 -32
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +7 -21
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +2 -32
- data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +7 -21
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +2 -32
- data/lib/measures/AddExteriorLights/LICENSE.md +7 -21
- data/lib/measures/AddExteriorLights/measure.rb +2 -32
- data/lib/measures/AddMeter/LICENSE.md +7 -21
- data/lib/measures/AddMeter/measure.rb +2 -32
- data/lib/measures/AddOutputDiagnostics/LICENSE.md +7 -21
- data/lib/measures/AddOutputDiagnostics/measure.rb +2 -32
- data/lib/measures/AddOutputVariable/LICENSE.md +7 -21
- data/lib/measures/AddOutputVariable/measure.rb +2 -32
- data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +7 -21
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +2 -32
- 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 +2 -32
- data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +7 -21
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/LICENSE.md +7 -21
- data/lib/measures/ChangeBuildingLocation/measure.rb +2 -32
- 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/ExportScheduleCSV/LICENSE.md +7 -21
- data/lib/measures/ExportScheduleCSV/measure.rb +2 -32
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +7 -21
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +2 -32
- data/lib/measures/MeterFlodPlot/LICENSE.md +7 -21
- data/lib/measures/MeterFlodPlot/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +2 -32
- data/lib/measures/PredictedMeanVote/LICENSE.md +7 -21
- data/lib/measures/PredictedMeanVote/measure.rb +2 -32
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +7 -21
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +2 -32
- data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +7 -21
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +2 -32
- data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +7 -21
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +2 -32
- 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/ReportModelChanges/LICENSE.md +7 -21
- data/lib/measures/ReportModelChanges/measure.rb +2 -32
- data/lib/measures/ReportModelChanges/measure.xml +2 -2
- data/lib/measures/RunPeriod/LICENSE.md +7 -21
- data/lib/measures/RunPeriod/measure.rb +2 -32
- data/lib/measures/RunPeriodMultiple/LICENSE.md +7 -21
- data/lib/measures/RunPeriodMultiple/measure.rb +2 -32
- data/lib/measures/ServerDirectoryCleanup/LICENSE.md +7 -21
- data/lib/measures/ServerDirectoryCleanup/measure.rb +2 -32
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +2 -32
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +2 -32
- data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +7 -21
- data/lib/measures/SetGasBurnerEfficiency/measure.rb +2 -32
- data/lib/measures/SetLifecycleCostParameters/LICENSE.md +7 -21
- data/lib/measures/SetLifecycleCostParameters/measure.rb +2 -32
- data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +7 -21
- data/lib/measures/SetLightingLoadsByLPD/measure.rb +2 -32
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +7 -21
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +2 -32
- data/lib/measures/SetThermostatSchedules/LICENSE.md +7 -21
- data/lib/measures/SetThermostatSchedules/measure.rb +2 -32
- data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +7 -21
- data/lib/measures/ShiftScheduleProfileTime/measure.rb +2 -32
- data/lib/measures/SwapLightsDefinition/LICENSE.md +7 -21
- data/lib/measures/SwapLightsDefinition/measure.rb +2 -32
- data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +7 -21
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +2 -32
- data/lib/measures/VentilationQAQC/LICENSE.md +7 -21
- data/lib/measures/VentilationQAQC/measure.rb +2 -32
- 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 +53 -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/add_ems_emissions_reporting/LICENSE.md +7 -21
- data/lib/measures/add_ems_emissions_reporting/measure.rb +2 -32
- 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_ev_load/LICENSE.md +7 -21
- data/lib/measures/add_ev_load/measure.rb +2 -32
- data/lib/measures/add_rooftop_pv/LICENSE.md +7 -21
- data/lib/measures/add_rooftop_pv/measure.rb +2 -32
- 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_ventilation_design_flow_rate_object/LICENSE.md +7 -21
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +2 -32
- 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/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/docs/.gitkeep +0 -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/measure.rb +2 -32
- 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 +6 -32
- data/lib/measures/example_report/LICENSE.md +7 -21
- data/lib/measures/example_report/measure.rb +2 -32
- data/lib/measures/example_report/resources/os_lib_reporting_example.rb +2 -32
- data/lib/measures/example_report/resources/report.html.erb +6 -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/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 +175 -181
- 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 +9 -32
- data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +2 -32
- 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 +2 -32
- 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 +2 -32
- 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 +6 -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/hvac_psychrometric_chart/LICENSE.md +7 -21
- data/lib/measures/hvac_psychrometric_chart/measure.rb +2 -32
- data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +6 -32
- data/lib/measures/inject_idf_objects/LICENSE.md +7 -21
- data/lib/measures/inject_idf_objects/measure.rb +2 -32
- data/lib/measures/openstudio_results/LICENSE.md +7 -21
- data/lib/measures/openstudio_results/measure.rb +2 -32
- 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 +6 -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 +9 -9
- 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_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_run_period/LICENSE.md +7 -21
- data/lib/measures/set_run_period/measure.rb +2 -32
- data/lib/measures/set_run_period/measure.xml +2 -2
- 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/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_flat/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_flat/measure.rb +2 -32
- 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_time_and_date_dependant/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -32
- data/lib/measures/view_data/LICENSE.md +7 -21
- data/lib/measures/view_data/measure.rb +2 -32
- 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/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 +69 -8
@@ -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.1</schema_version>
|
4
|
+
<name>xcel_eda_reportingand_qaqc</name>
|
5
|
+
<uid>92bee759-86ae-4617-92e2-f8e5aa9dc684</uid>
|
6
|
+
<version_id>ee4dabcc-8247-4671-a7a2-50b7302e36f2</version_id>
|
7
|
+
<version_modified>2023-11-28T19:09:56Z</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>LICENSE.md</filename>
|
34
|
+
<filetype>md</filetype>
|
35
|
+
<usage_type>license</usage_type>
|
36
|
+
<checksum>BFFB1AA6</checksum>
|
37
|
+
</file>
|
38
|
+
<file>
|
39
|
+
<filename>README.md</filename>
|
40
|
+
<filetype>md</filetype>
|
41
|
+
<usage_type>readme</usage_type>
|
42
|
+
<checksum>2313289F</checksum>
|
43
|
+
</file>
|
44
|
+
<file>
|
45
|
+
<filename>README.md.erb</filename>
|
46
|
+
<filetype>erb</filetype>
|
47
|
+
<usage_type>readmeerb</usage_type>
|
48
|
+
<checksum>703C9964</checksum>
|
49
|
+
</file>
|
50
|
+
<file>
|
51
|
+
<version>
|
52
|
+
<software_program>OpenStudio</software_program>
|
53
|
+
<identifier>2.0.0</identifier>
|
54
|
+
<min_compatible>3.6.0</min_compatible>
|
55
|
+
</version>
|
56
|
+
<filename>measure.rb</filename>
|
57
|
+
<filetype>rb</filetype>
|
58
|
+
<usage_type>script</usage_type>
|
59
|
+
<checksum>9F3C9614</checksum>
|
60
|
+
</file>
|
61
|
+
<file>
|
62
|
+
<filename>CreateResults.rb</filename>
|
63
|
+
<filetype>rb</filetype>
|
64
|
+
<usage_type>resource</usage_type>
|
65
|
+
<checksum>6C13695C</checksum>
|
66
|
+
</file>
|
67
|
+
<file>
|
68
|
+
<filename>EUI.rb</filename>
|
69
|
+
<filetype>rb</filetype>
|
70
|
+
<usage_type>resource</usage_type>
|
71
|
+
<checksum>26507097</checksum>
|
72
|
+
</file>
|
73
|
+
<file>
|
74
|
+
<filename>EndUseBreakdown.rb</filename>
|
75
|
+
<filetype>rb</filetype>
|
76
|
+
<usage_type>resource</usage_type>
|
77
|
+
<checksum>3D03A79A</checksum>
|
78
|
+
</file>
|
79
|
+
<file>
|
80
|
+
<filename>FuelSwap.rb</filename>
|
81
|
+
<filetype>rb</filetype>
|
82
|
+
<usage_type>resource</usage_type>
|
83
|
+
<checksum>A762BB1E</checksum>
|
84
|
+
</file>
|
85
|
+
<file>
|
86
|
+
<filename>PeakHeatCoolMonth.rb</filename>
|
87
|
+
<filetype>rb</filetype>
|
88
|
+
<usage_type>resource</usage_type>
|
89
|
+
<checksum>0D95CAA2</checksum>
|
90
|
+
</file>
|
91
|
+
<file>
|
92
|
+
<filename>UnmetHrs.rb</filename>
|
93
|
+
<filetype>rb</filetype>
|
94
|
+
<usage_type>resource</usage_type>
|
95
|
+
<checksum>144A1BBA</checksum>
|
96
|
+
</file>
|
97
|
+
<file>
|
98
|
+
<filename>0116_OfficeTest121_dev.osm</filename>
|
99
|
+
<filetype>osm</filetype>
|
100
|
+
<usage_type>test</usage_type>
|
101
|
+
<checksum>63E36762</checksum>
|
102
|
+
</file>
|
103
|
+
<file>
|
104
|
+
<filename>USA_CO_Golden-NREL.724666_TMY3.epw</filename>
|
105
|
+
<filetype>epw</filetype>
|
106
|
+
<usage_type>test</usage_type>
|
107
|
+
<checksum>BDF687C1</checksum>
|
108
|
+
</file>
|
109
|
+
<file>
|
110
|
+
<filename>XcelEDAReportingandQAQC_Test.rb</filename>
|
111
|
+
<filetype>rb</filetype>
|
112
|
+
<usage_type>test</usage_type>
|
113
|
+
<checksum>A33FAF92</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,9 +258,17 @@ 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'),
|
271
|
+
OpenStudio::EndUseFuelType.new('DistrictHeatingSteam').value => OpenStudio::FuelType.new('DistrictHeatingSteam'),
|
294
272
|
OpenStudio::EndUseFuelType.new('Water').value => OpenStudio::FuelType.new('Water')
|
295
273
|
}
|
296
274
|
|
@@ -298,9 +276,17 @@ module OsLib_CreateResults
|
|
298
276
|
fuel_type_alias_map = {
|
299
277
|
OpenStudio::EndUseFuelType.new('Electricity').value => 'electricity',
|
300
278
|
OpenStudio::EndUseFuelType.new('Gas').value => 'gas',
|
301
|
-
OpenStudio::EndUseFuelType.new('
|
279
|
+
OpenStudio::EndUseFuelType.new('Gasoline').value => 'gas',
|
280
|
+
OpenStudio::EndUseFuelType.new('Diesel').value => 'diesel',
|
281
|
+
OpenStudio::EndUseFuelType.new('Coal').value => 'coal',
|
282
|
+
OpenStudio::EndUseFuelType.new('FuelOil_1').value => 'fuel_oil_1',
|
283
|
+
OpenStudio::EndUseFuelType.new('FuelOil_2').value => 'fuel_oil_2',
|
284
|
+
OpenStudio::EndUseFuelType.new('Propane').value => 'propane',
|
285
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_1').value => 'other_energy',
|
286
|
+
OpenStudio::EndUseFuelType.new('OtherFuel_2').value => 'other_fuel_2',
|
302
287
|
OpenStudio::EndUseFuelType.new('DistrictCooling').value => 'district_cooling',
|
303
288
|
OpenStudio::EndUseFuelType.new('DistrictHeating').value => 'district_heating',
|
289
|
+
OpenStudio::EndUseFuelType.new('DistrictHeatingSteam').value => 'district_heating_steam',
|
304
290
|
OpenStudio::EndUseFuelType.new('Water').value => 'water'
|
305
291
|
}
|
306
292
|
|
@@ -331,14 +317,26 @@ module OsLib_CreateResults
|
|
331
317
|
end
|
332
318
|
|
333
319
|
# other_energy
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
@
|
338
|
-
|
339
|
-
|
340
|
-
|
320
|
+
other_fuels = ['gasoline', 'diesel', 'coal', 'fuelOilNo1', 'fuelOilNo2', 'propane', 'otherFuel1', 'otherFuel2']
|
321
|
+
other_energy_total = 0.0
|
322
|
+
other_fuels.each do |fuel|
|
323
|
+
other_energy = @sql.instance_eval(fuel + 'TotalEndUses')
|
324
|
+
if other_energy.is_initialized
|
325
|
+
# sum up all of the "other" fuels
|
326
|
+
other_energy_total += other_energy.get
|
327
|
+
end
|
341
328
|
end
|
329
|
+
cons_elems << OpenStudio::Attribute.new('other_energy', other_energy_total, 'GJ')
|
330
|
+
@runner.registerValue('annual_consumption_other_energy', other_energy_total, 'GJ')
|
331
|
+
|
332
|
+
# other_energy = @sql.otherFuelTotalEndUses
|
333
|
+
# if other_energy.is_initialized
|
334
|
+
# cons_elems << OpenStudio::Attribute.new('other_energy', other_energy.get, 'GJ')
|
335
|
+
# @runner.registerValue('annual_consumption_other_energy', other_energy.get, 'GJ')
|
336
|
+
# else
|
337
|
+
# cons_elems << OpenStudio::Attribute.new('other_energy', 0.0, 'GJ')
|
338
|
+
# @runner.registerValue('annual_consumption_other_energy', 0.0, 'GJ')
|
339
|
+
# end
|
342
340
|
|
343
341
|
# district_cooling
|
344
342
|
district_cooling = @sql.districtCoolingTotalEndUses
|
@@ -752,7 +750,7 @@ module OsLib_CreateResults
|
|
752
750
|
end
|
753
751
|
else
|
754
752
|
# If TOU periods were specified but this model has no district cooling, report zeroes
|
755
|
-
if
|
753
|
+
if electricity_consumption_tou_periods.size > 0
|
756
754
|
# Get the TOU ids
|
757
755
|
tou_ids = []
|
758
756
|
electricity_consumption_tou_periods.each do |tou_pd|
|
@@ -882,9 +880,9 @@ module OsLib_CreateResults
|
|
882
880
|
end
|
883
881
|
if total.is_initialized
|
884
882
|
other_val = total.get - prev_tot
|
885
|
-
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
883
|
+
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = other_val
|
886
884
|
else
|
887
|
-
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('
|
885
|
+
annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName] = 0.0
|
888
886
|
end
|
889
887
|
|
890
888
|
# export remaining costs in the correct order
|
@@ -892,8 +890,8 @@ module OsLib_CreateResults
|
|
892
890
|
utility_cost_elems << OpenStudio::Attribute.new('gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
|
893
891
|
@runner.registerValue('annual_utility_cost_gas', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('Gas').valueName], 'dollars')
|
894
892
|
# 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('
|
893
|
+
utility_cost_elems << OpenStudio::Attribute.new('other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
|
894
|
+
@runner.registerValue('annual_utility_cost_other_energy', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('OtherFuel_1').valueName], 'dollars')
|
897
895
|
# district_cooling
|
898
896
|
utility_cost_elems << OpenStudio::Attribute.new('district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
|
899
897
|
@runner.registerValue('annual_utility_cost_district_cooling', annual_utility_cost_map[OpenStudio::EndUseFuelType.new('DistrictCooling').valueName], 'dollars')
|
@@ -928,7 +926,12 @@ module OsLib_CreateResults
|
|
928
926
|
# loop through all the fuel types
|
929
927
|
end_use_fuel_types.each do |end_use_fuel_type|
|
930
928
|
# get the annual total cost for this fuel type
|
931
|
-
|
929
|
+
# Only Electricity, Gas, DistrictCooling,DistrictHeating, Water and OtherFuel_1 are defined in map so check value first
|
930
|
+
if annual_utility_cost_map.key?(end_use_fuel_type.valueName)
|
931
|
+
ann_cost = annual_utility_cost_map[end_use_fuel_type.valueName]
|
932
|
+
else
|
933
|
+
ann_cost = 0.0
|
934
|
+
end
|
932
935
|
# get the total annual usage for this fuel type in all end use categories
|
933
936
|
# loop through all end uses, adding the annual usage value to the aggregator
|
934
937
|
ann_usg = 0.0
|
@@ -980,7 +983,7 @@ module OsLib_CreateResults
|
|
980
983
|
fuel_type_elems = OpenStudio::AttributeVector.new
|
981
984
|
fuel_type_name = fuel_type_alias_map[end_use_fuel_type.value]
|
982
985
|
ann_energy_cons = 0.0
|
983
|
-
# in each end use, loop through months and get monthly
|
986
|
+
# in each end use, loop through months and get monthly energy consumption
|
984
987
|
months.each_with_index do |month, i|
|
985
988
|
mon_energy_cons = 0.0
|
986
989
|
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
|