openstudio-common-measures 0.3.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +3 -1
- data/CHANGELOG.md +34 -0
- data/Jenkinsfile +2 -1
- data/LICENSE.md +1 -1
- data/README.md +21 -2
- data/doc_templates/LICENSE.md +1 -1
- data/doc_templates/copyright_erb.txt +1 -1
- data/doc_templates/copyright_js.txt +1 -1
- data/doc_templates/copyright_ruby.txt +1 -1
- data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +1 -1
- data/lib/measures/AddCostPerAreaToConstruction/measure.rb +1 -1
- data/lib/measures/AddCostPerAreaToConstruction/measure.xml +8 -7
- data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +1 -1
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +1 -1
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.xml +8 -7
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +1 -1
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +1 -1
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.xml +8 -7
- data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +1 -1
- data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +1 -1
- data/lib/measures/AddCostPerFloorAreaToLights/measure.xml +8 -7
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +1 -1
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +1 -1
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.xml +8 -13
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +1 -1
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +1 -1
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.xml +15 -8
- data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +1 -1
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +1 -1
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.xml +8 -7
- data/lib/measures/AddExteriorLights/LICENSE.md +1 -1
- data/lib/measures/AddExteriorLights/measure.rb +1 -1
- data/lib/measures/AddExteriorLights/measure.xml +8 -7
- data/lib/measures/AddMeter/LICENSE.md +1 -1
- data/lib/measures/AddMeter/measure.rb +1 -1
- data/lib/measures/AddMeter/measure.xml +8 -7
- data/lib/measures/AddOutputDiagnostics/LICENSE.md +1 -1
- data/lib/measures/AddOutputDiagnostics/measure.rb +1 -1
- data/lib/measures/AddOutputDiagnostics/measure.xml +8 -7
- data/lib/measures/AddOutputVariable/LICENSE.md +1 -1
- data/lib/measures/AddOutputVariable/measure.rb +1 -1
- data/lib/measures/AddOutputVariable/measure.xml +8 -7
- data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +1 -1
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +1 -1
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.xml +8 -7
- data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +1 -1
- data/lib/measures/AdjustSystemEfficiencies/measure.rb +1 -1
- data/lib/measures/AdjustSystemEfficiencies/measure.xml +7 -6
- data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +1 -1
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +1 -1
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.xml +8 -7
- data/lib/measures/ChangeBuildingLocation/LICENSE.md +1 -1
- data/lib/measures/ChangeBuildingLocation/measure.rb +3 -3
- data/lib/measures/ChangeBuildingLocation/measure.xml +17 -17
- data/lib/measures/ChangeBuildingLocation/resources/epw.rb +1 -1
- data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +1 -1
- data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +1 -1
- data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +1 -1
- data/lib/measures/EnableIdealAirLoadsForAllZones/measure.xml +9 -8
- data/lib/measures/ExportScheduleCSV/LICENSE.md +1 -1
- data/lib/measures/ExportScheduleCSV/measure.rb +1 -1
- data/lib/measures/ExportScheduleCSV/measure.xml +11 -11
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +1 -1
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +1 -1
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.xml +5 -5
- data/lib/measures/MeterFlodPlot/LICENSE.md +1 -1
- data/lib/measures/MeterFlodPlot/measure.rb +1 -1
- data/lib/measures/MeterFlodPlot/measure.xml +11 -11
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +1 -1
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +1 -1
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.xml +8 -7
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +1 -1
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +1 -1
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.xml +8 -7
- data/lib/measures/PredictedMeanVote/LICENSE.md +1 -1
- data/lib/measures/PredictedMeanVote/measure.rb +1 -1
- data/lib/measures/PredictedMeanVote/measure.xml +14 -13
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +1 -1
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +1 -1
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.xml +9 -8
- data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +1 -1
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +1 -1
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.xml +9 -8
- data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +1 -1
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +1 -1
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.xml +11 -10
- data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +1 -1
- data/lib/measures/ReplaceThermostatSchedules/measure.rb +1 -1
- data/lib/measures/ReplaceThermostatSchedules/measure.xml +12 -11
- data/lib/measures/ReportModelChanges/LICENSE.md +1 -1
- data/lib/measures/ReportModelChanges/measure.rb +1 -1
- data/lib/measures/ReportModelChanges/measure.xml +5 -5
- data/lib/measures/RunPeriod/LICENSE.md +1 -1
- data/lib/measures/RunPeriod/measure.rb +1 -1
- data/lib/measures/RunPeriod/measure.xml +19 -18
- data/lib/measures/RunPeriodMultiple/LICENSE.md +1 -1
- data/lib/measures/RunPeriodMultiple/measure.rb +1 -1
- data/lib/measures/RunPeriodMultiple/measure.xml +4 -4
- data/lib/measures/ServerDirectoryCleanup/LICENSE.md +1 -1
- data/lib/measures/ServerDirectoryCleanup/measure.rb +1 -1
- data/lib/measures/ServerDirectoryCleanup/measure.xml +16 -16
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +1 -1
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +1 -1
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.xml +10 -9
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +1 -1
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +1 -1
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.xml +10 -9
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +1 -1
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +1 -1
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.xml +8 -7
- data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +1 -1
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +1 -1
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.xml +8 -7
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +1 -1
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +1 -1
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.xml +8 -7
- data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +1 -1
- data/lib/measures/SetGasBurnerEfficiency/measure.rb +1 -1
- data/lib/measures/SetGasBurnerEfficiency/measure.xml +10 -9
- data/lib/measures/SetLifecycleCostParameters/LICENSE.md +1 -1
- data/lib/measures/SetLifecycleCostParameters/measure.rb +1 -1
- data/lib/measures/SetLifecycleCostParameters/measure.xml +8 -7
- data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +1 -1
- data/lib/measures/SetLightingLoadsByLPD/measure.rb +1 -1
- data/lib/measures/SetLightingLoadsByLPD/measure.xml +10 -9
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +1 -1
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +1 -1
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.xml +20 -19
- data/lib/measures/SetThermostatSchedules/LICENSE.md +1 -1
- data/lib/measures/SetThermostatSchedules/measure.rb +1 -1
- data/lib/measures/SetThermostatSchedules/measure.xml +12 -11
- data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +1 -1
- data/lib/measures/ShiftScheduleProfileTime/measure.rb +1 -1
- data/lib/measures/ShiftScheduleProfileTime/measure.xml +10 -9
- data/lib/measures/SwapLightsDefinition/LICENSE.md +1 -1
- data/lib/measures/SwapLightsDefinition/measure.rb +1 -1
- data/lib/measures/SwapLightsDefinition/measure.xml +9 -10
- data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +1 -1
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +1 -1
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.xml +11 -11
- data/lib/measures/VentilationQAQC/LICENSE.md +1 -1
- data/lib/measures/VentilationQAQC/measure.rb +1 -1
- data/lib/measures/VentilationQAQC/measure.xml +17 -17
- data/lib/measures/ZoneReport/LICENSE.md +1 -1
- data/lib/measures/ZoneReport/measure.rb +1 -1
- data/lib/measures/ZoneReport/measure.xml +11 -11
- data/lib/measures/add_ems_emissions_reporting/LICENSE.MD.txt +15 -0
- data/lib/measures/add_ems_emissions_reporting/LICENSE.md +27 -0
- data/lib/measures/add_ems_emissions_reporting/README.md +17 -0
- data/lib/measures/add_ems_emissions_reporting/measure.rb +475 -0
- data/lib/measures/add_ems_emissions_reporting/measure.xml +599 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_annual_co2e.csv +17 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2020.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2022.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2024.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2026.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2028.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2030.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2032.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2034.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2036.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2038.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2040.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2042.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2044.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2046.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2048.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/future_hourly_co2e_2050.csv +8761 -0
- data/lib/measures/add_ems_emissions_reporting/resources/historical_annual_co2e.csv +9 -0
- data/lib/measures/add_ems_emissions_reporting/resources/historical_hourly_co2e_2019.csv +8761 -0
- 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 +1 -1
- data/lib/measures/add_ems_to_control_ev_charging/measure.rb +2 -1
- data/lib/measures/add_ems_to_control_ev_charging/measure.xml +14 -10
- data/lib/measures/add_ev_load/LICENSE.MD.txt +1 -1
- data/lib/measures/add_ev_load/LICENSE.md +1 -1
- data/lib/measures/add_ev_load/measure.rb +56 -10
- data/lib/measures/add_ev_load/measure.xml +229 -16
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/PSN_BuildingKey.csv → PSN_BuildingKey.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/PSN_BuildingKey_v2.csv → PSN_BuildingKey_v2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex1.csv → chg1_dow1_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex2.csv → chg1_dow1_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow1_flex3.csv → chg1_dow1_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex1.csv → chg1_dow2_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex2.csv → chg1_dow2_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow2_flex3.csv → chg1_dow2_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex1.csv → chg1_dow3_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex2.csv → chg1_dow3_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg1_dow3_flex3.csv → chg1_dow3_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex1.csv → chg2_dow1_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex2.csv → chg2_dow1_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow1_flex3.csv → chg2_dow1_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex1.csv → chg2_dow2_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex2.csv → chg2_dow2_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow2_flex3.csv → chg2_dow2_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex1.csv → chg2_dow3_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex2.csv → chg2_dow3_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg2_dow3_flex3.csv → chg2_dow3_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex1.csv → chg3_dow1_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex2.csv → chg3_dow1_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow1_flex3.csv → chg3_dow1_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex1.csv → chg3_dow2_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex2.csv → chg3_dow2_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow2_flex3.csv → chg3_dow2_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex1.csv → chg3_dow3_flex1.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex2.csv → chg3_dow3_flex2.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/chg3_dow3_flex3.csv → chg3_dow3_flex3.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Saturday.csv → fast_charge_15min_Saturday.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Sunday.csv → fast_charge_15min_Sunday.csv} +0 -0
- data/lib/measures/add_ev_load/resources/{EV_Load_Profiles/fast_charge_15min_Weekday.csv → fast_charge_15min_Weekday.csv} +0 -0
- data/lib/measures/add_rooftop_pv/LICENSE.md +1 -1
- data/lib/measures/add_rooftop_pv/measure.rb +1 -1
- data/lib/measures/add_rooftop_pv/measure.xml +5 -5
- data/lib/measures/add_zone_mixing_object/LICENSE.md +1 -1
- data/lib/measures/add_zone_mixing_object/measure.rb +1 -1
- data/lib/measures/add_zone_mixing_object/measure.xml +8 -7
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +1 -1
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +1 -1
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.xml +8 -7
- data/lib/measures/air_wall_zone_mixing/LICENSE.md +1 -1
- data/lib/measures/air_wall_zone_mixing/measure.rb +1 -1
- data/lib/measures/air_wall_zone_mixing/measure.xml +5 -5
- data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +1 -1
- data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +1 -1
- data/lib/measures/envelope_and_internal_load_breakdown/measure.xml +8 -8
- data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +1 -1
- data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +8 -1
- data/lib/measures/example_report/LICENSE.md +1 -1
- data/lib/measures/example_report/measure.rb +1 -1
- data/lib/measures/example_report/measure.xml +14 -14
- data/lib/measures/example_report/resources/os_lib_reporting_example.rb +1 -1
- data/lib/measures/example_report/resources/report.html.erb +8 -1
- data/lib/measures/gem_env_report/LICENSE.md +1 -1
- data/lib/measures/gem_env_report/measure.rb +1 -1
- data/lib/measures/gem_env_report/measure.xml +13 -12
- data/lib/measures/gem_env_report/resources/gem_env_info.rb +1 -1
- data/lib/measures/gem_env_report/resources/openstudio_info.rb +1 -1
- data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +1 -1
- data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +1 -1
- data/lib/measures/generic_qaqc/LICENSE.md +1 -1
- data/lib/measures/generic_qaqc/README.md +19 -4
- data/lib/measures/generic_qaqc/README.md.erb +7 -1
- data/lib/measures/generic_qaqc/docs/generic_qaqc_detailed.jpg +0 -0
- data/lib/measures/generic_qaqc/docs/generic_qaqc_summary.jpg +0 -0
- data/lib/measures/generic_qaqc/measure.rb +40 -30
- data/lib/measures/generic_qaqc/measure.xml +183 -90
- data/lib/measures/generic_qaqc/resources/CreateResults.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_calibration.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +4 -2
- data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +14 -9
- data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +331 -232
- data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +60 -21
- data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +59 -21
- data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +58 -57
- data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +5 -2
- data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +28 -23
- data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +5 -2
- data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +4 -4
- data/lib/measures/generic_qaqc/resources/check_part_loads.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_placeholder.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +1 -1
- data/lib/measures/generic_qaqc/resources/check_schedules.rb +66 -102
- data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +4 -2
- data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +4 -2
- data/lib/measures/generic_qaqc/resources/check_weather_files.rb +1 -1
- data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +50 -16
- data/lib/measures/generic_qaqc/resources/report.html.erb +8 -1
- data/lib/measures/get_site_from_building_component_library/LICENSE.md +1 -1
- data/lib/measures/get_site_from_building_component_library/measure.rb +1 -1
- data/lib/measures/get_site_from_building_component_library/measure.xml +6 -6
- data/lib/measures/hvac_psychrometric_chart/LICENSE.md +1 -1
- data/lib/measures/hvac_psychrometric_chart/measure.rb +1 -1
- data/lib/measures/hvac_psychrometric_chart/measure.xml +15 -15
- data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +8 -1
- data/lib/measures/inject_idf_objects/LICENSE.md +1 -1
- data/lib/measures/inject_idf_objects/measure.rb +1 -1
- data/lib/measures/inject_idf_objects/measure.xml +10 -10
- data/lib/measures/openstudio_results/LICENSE.md +1 -1
- data/lib/measures/openstudio_results/measure.rb +6 -4
- data/lib/measures/openstudio_results/measure.xml +174 -162
- data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.Model.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +1 -1
- data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +1 -1
- data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +2 -2
- data/lib/measures/openstudio_results/resources/report.html.erb +8 -1
- data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +1 -1
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +1 -1
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +8 -7
- data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +1 -1
- data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +1 -1
- data/lib/measures/set_electric_equipment_loads_by_epd/measure.xml +10 -9
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +1 -1
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +1 -1
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.xml +17 -11
- data/lib/measures/set_run_period/LICENSE.md +1 -1
- data/lib/measures/set_run_period/measure.rb +1 -1
- data/lib/measures/set_run_period/measure.xml +5 -5
- data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +1 -1
- data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +1 -1
- data/lib/measures/set_space_infiltration_per_exterior_area/measure.xml +8 -7
- data/lib/measures/tariff_selection_block/LICENSE.md +1 -1
- data/lib/measures/tariff_selection_block/measure.rb +2 -2
- data/lib/measures/tariff_selection_block/measure.xml +5 -5
- data/lib/measures/tariff_selection_flat/LICENSE.md +1 -1
- data/lib/measures/tariff_selection_flat/measure.rb +2 -2
- data/lib/measures/tariff_selection_flat/measure.xml +5 -5
- data/lib/measures/tariff_selection_generic/LICENSE.md +1 -1
- data/lib/measures/tariff_selection_generic/README.md +2 -2
- data/lib/measures/tariff_selection_generic/measure.rb +1 -1
- data/lib/measures/tariff_selection_generic/measure.xml +25 -25
- data/lib/measures/tariff_selection_generic/resources/FlatEnergyCharge-Gas.idf +3 -3
- data/lib/measures/tariff_selection_generic/resources/IN-EIAMonthlyRateGas.idf +1 -1
- data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +1 -1
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -2
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.xml +5 -5
- data/lib/measures/view_data/LICENSE.md +1 -1
- data/lib/measures/view_data/measure.rb +1 -1
- data/lib/measures/view_data/measure.xml +32 -32
- data/lib/measures/view_data/resources/report.html.in +1336 -973
- data/lib/measures/view_data/resources/va3c.rb +2 -1
- data/lib/measures/view_model/LICENSE.md +1 -1
- data/lib/measures/view_model/measure.rb +1 -1
- data/lib/measures/view_model/measure.xml +32 -32
- data/lib/measures/view_model/resources/report.html.in +1339 -976
- data/lib/measures/view_model/resources/va3c.rb +2 -1
- data/lib/openstudio/common_measures/extension.rb +1 -1
- data/lib/openstudio/common_measures/version.rb +2 -2
- data/lib/openstudio/common_measures.rb +1 -1
- data/lib/openstudio-common-measures.rb +1 -1
- data/openstudio-common-measures.gemspec +4 -4
- metadata +68 -45
- data/lib/measures/generic_qaqc/resources/os_lib_helper_methods.rb +0 -399
- data/lib/measures/openstudio_results/resources/os_lib_helper_methods.rb +0 -399
- data/lib/measures/openstudio_results/resources/os_lib_schedules.rb +0 -962
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -44,7 +44,9 @@ module OsLib_QAQC
|
|
44
44
|
check_elems = OpenStudio::AttributeVector.new
|
45
45
|
check_elems << OpenStudio::Attribute.new('name', 'Mechanical System Efficiency')
|
46
46
|
check_elems << OpenStudio::Attribute.new('category', category)
|
47
|
-
|
47
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
48
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
49
|
+
|
48
50
|
if target_standard.include?('90.1-2013')
|
49
51
|
display_standard = "ASHRAE #{target_standard}"
|
50
52
|
check_elems << OpenStudio::Attribute.new('description', "Check against #{display_standard} Tables 6.8.1 A-K for the following component types: #{component_type_array.join(', ')}.")
|
@@ -62,6 +64,7 @@ module OsLib_QAQC
|
|
62
64
|
if name_only == true
|
63
65
|
results = []
|
64
66
|
check_elems.each do |elem|
|
67
|
+
next if ['Double','Integer'].include? (elem.valueType.valueDescription)
|
65
68
|
results << elem.valueAsString
|
66
69
|
end
|
67
70
|
return results
|
@@ -96,9 +99,9 @@ module OsLib_QAQC
|
|
96
99
|
if standard_minimum_full_load_efficiency.nil?
|
97
100
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target full load efficiency for #{component.name}.")
|
98
101
|
elsif reference_COP < standard_minimum_full_load_efficiency * (1.0 - min_pass)
|
99
|
-
check_elems << OpenStudio::Attribute.new('flag', "COP of #{reference_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
102
|
+
check_elems << OpenStudio::Attribute.new('flag', "COP of #{reference_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_full_load_efficiency.round(2)}.")
|
100
103
|
elsif reference_COP > standard_minimum_full_load_efficiency * (1.0 + max_pass)
|
101
|
-
check_elems << OpenStudio::Attribute.new('flag', "COP of #{reference_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
104
|
+
check_elems << OpenStudio::Attribute.new('flag', "COP of #{reference_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_full_load_efficiency.round(2)}.")
|
102
105
|
end
|
103
106
|
end
|
104
107
|
|
@@ -118,9 +121,9 @@ module OsLib_QAQC
|
|
118
121
|
if standard_minimum_cop.nil?
|
119
122
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target COP for #{component.name}.")
|
120
123
|
elsif rated_COP < standard_minimum_cop * (1.0 - min_pass)
|
121
|
-
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
124
|
+
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
122
125
|
elsif rated_COP > standard_minimum_cop * (1.0 + max_pass)
|
123
|
-
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
126
|
+
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
124
127
|
end
|
125
128
|
end
|
126
129
|
|
@@ -141,16 +144,16 @@ module OsLib_QAQC
|
|
141
144
|
if standard_minimum_cop.nil?
|
142
145
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target COP for #{component.name}.")
|
143
146
|
elsif rated_high_speed_COP < standard_minimum_cop * (1.0 - min_pass)
|
144
|
-
check_elems << OpenStudio::Attribute.new('flag', "The high speed COP of #{rated_high_speed_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
147
|
+
check_elems << OpenStudio::Attribute.new('flag', "The high speed COP of #{rated_high_speed_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
145
148
|
elsif rated_high_speed_COP > standard_minimum_cop * (1.0 + max_pass)
|
146
|
-
check_elems << OpenStudio::Attribute.new('flag', "The high speed COP of #{rated_high_speed_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
149
|
+
check_elems << OpenStudio::Attribute.new('flag', "The high speed COP of #{rated_high_speed_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
147
150
|
end
|
148
151
|
if standard_minimum_cop.nil?
|
149
152
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target COP for #{component.name}.")
|
150
153
|
elsif rated_low_speed_COP < standard_minimum_cop * (1.0 - min_pass)
|
151
|
-
check_elems << OpenStudio::Attribute.new('flag', "The low speed COP of #{rated_low_speed_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
154
|
+
check_elems << OpenStudio::Attribute.new('flag', "The low speed COP of #{rated_low_speed_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
152
155
|
elsif rated_low_speed_COP > standard_minimum_cop * (1.0 + max_pass)
|
153
|
-
check_elems << OpenStudio::Attribute.new('flag', "The low speed COP of #{rated_low_speed_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
156
|
+
check_elems << OpenStudio::Attribute.new('flag', "The low speed COP of #{rated_low_speed_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
154
157
|
end
|
155
158
|
end
|
156
159
|
|
@@ -171,9 +174,9 @@ module OsLib_QAQC
|
|
171
174
|
if standard_minimum_cop.nil?
|
172
175
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target COP for #{component.name}.")
|
173
176
|
elsif rated_COP < standard_minimum_cop * (1.0 - min_pass)
|
174
|
-
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
177
|
+
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_cop.round(2)} for #{display_standard}.")
|
175
178
|
elsif rated_COP > standard_minimum_cop * (1.0 + max_pass)
|
176
|
-
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
179
|
+
check_elems << OpenStudio::Attribute.new('flag', "The COP of #{rated_COP.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_cop.round(2)}. for #{display_standard}")
|
177
180
|
end
|
178
181
|
end
|
179
182
|
|
@@ -190,12 +193,14 @@ module OsLib_QAQC
|
|
190
193
|
end
|
191
194
|
|
192
195
|
# check actual against target
|
193
|
-
if
|
196
|
+
if component.autosizedNominalCapacity.get == 0
|
197
|
+
check_elems << OpenStudio::Attribute.new('flag', "Boiler named #{component.name} has a capacity of 0.")
|
198
|
+
elsif standard_minimum_thermal_efficiency.nil?
|
194
199
|
check_elems << OpenStudio::Attribute.new('flag', "Can't find target thermal efficiency for #{component.name}.")
|
195
200
|
elsif nominal_thermal_efficiency < standard_minimum_thermal_efficiency * (1.0 - min_pass)
|
196
|
-
check_elems << OpenStudio::Attribute.new('flag', "Nominal thermal efficiency of #{nominal_thermal_efficiency.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
201
|
+
check_elems << OpenStudio::Attribute.new('flag', "Nominal thermal efficiency of #{nominal_thermal_efficiency.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_thermal_efficiency.round(2)} for #{display_standard}.")
|
197
202
|
elsif nominal_thermal_efficiency > standard_minimum_thermal_efficiency * (1.0 + max_pass)
|
198
|
-
check_elems << OpenStudio::Attribute.new('flag', "Nominal thermal efficiency of #{nominal_thermal_efficiency.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
203
|
+
check_elems << OpenStudio::Attribute.new('flag', "Nominal thermal efficiency of #{nominal_thermal_efficiency.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_thermal_efficiency.round(2)} for #{display_standard}.")
|
199
204
|
end
|
200
205
|
end
|
201
206
|
|
@@ -219,9 +224,9 @@ module OsLib_QAQC
|
|
219
224
|
|
220
225
|
# check actual against target
|
221
226
|
if motor_eff < standard_minimum_motor_efficiency_and_size * (1.0 - min_pass)
|
222
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
227
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
223
228
|
elsif motor_eff > standard_minimum_motor_efficiency_and_size * (1.0 + max_pass)
|
224
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
229
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
225
230
|
end
|
226
231
|
end
|
227
232
|
|
@@ -244,9 +249,9 @@ module OsLib_QAQC
|
|
244
249
|
|
245
250
|
# check actual against target
|
246
251
|
if motor_eff < standard_minimum_motor_efficiency_and_size * (1.0 - min_pass)
|
247
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
252
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
248
253
|
elsif motor_eff > standard_minimum_motor_efficiency_and_size * (1.0 + max_pass)
|
249
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
254
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
250
255
|
end
|
251
256
|
end
|
252
257
|
|
@@ -270,9 +275,9 @@ module OsLib_QAQC
|
|
270
275
|
|
271
276
|
# check actual against target
|
272
277
|
if motor_eff < standard_minimum_motor_efficiency_and_size * (1.0 - min_pass)
|
273
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
278
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
274
279
|
elsif motor_eff > standard_minimum_motor_efficiency_and_size * (1.0 + max_pass)
|
275
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
280
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
276
281
|
end
|
277
282
|
end
|
278
283
|
|
@@ -296,9 +301,9 @@ module OsLib_QAQC
|
|
296
301
|
|
297
302
|
# check actual against target
|
298
303
|
if motor_eff < standard_minimum_motor_efficiency_and_size * (1.0 - min_pass)
|
299
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the
|
304
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{min_pass * 100} % below the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
300
305
|
elsif motor_eff > standard_minimum_motor_efficiency_and_size * (1.0 + max_pass)
|
301
|
-
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the
|
306
|
+
check_elems << OpenStudio::Attribute.new('flag', "Motor efficiency of #{motor_eff.round(2)} for #{component.name} is more than #{max_pass * 100} % above the value of #{standard_minimum_motor_efficiency_and_size.round(2)} for #{display_standard}.")
|
302
307
|
end
|
303
308
|
end
|
304
309
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -53,12 +53,15 @@ module OsLib_QAQC
|
|
53
53
|
check_elems << OpenStudio::Attribute.new('name', 'Mechanical System Part Load Efficiency')
|
54
54
|
check_elems << OpenStudio::Attribute.new('category', category)
|
55
55
|
check_elems << OpenStudio::Attribute.new('description', "Check 40% and 80% part load efficency against #{display_standard} for the following compenent types: #{component_type_array.join(', ')}. Checking EIR Function of Part Load Ratio curve for chiller and EIR Function of Flow Fraction for DX coils.")
|
56
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
57
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
56
58
|
# TODO: - add in check for VAV fan
|
57
59
|
|
58
60
|
# stop here if only name is requested this is used to populate display name for arguments
|
59
61
|
if name_only == true
|
60
62
|
results = []
|
61
63
|
check_elems.each do |elem|
|
64
|
+
next if ['Double','Integer'].include? (elem.valueType.valueDescription)
|
62
65
|
results << elem.valueAsString
|
63
66
|
end
|
64
67
|
return results
|
@@ -143,7 +146,7 @@ module OsLib_QAQC
|
|
143
146
|
|
144
147
|
if use_old_gem_code
|
145
148
|
chlr_props = component.model.find_object($os_standards['chillers'], search_criteria, capacity_tons, Date.today)
|
146
|
-
|
149
|
+
else
|
147
150
|
chlr_props = std.model_find_object(std.standards_data['chillers'], search_criteria, capacity_tons, Date.today)
|
148
151
|
end
|
149
152
|
if chlr_props.nil?
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -40,7 +40,7 @@ module OsLib_QAQC
|
|
40
40
|
def check_mech_sys_type(category, target_standard, name_only = false)
|
41
41
|
# summary of the check
|
42
42
|
check_elems = OpenStudio::AttributeVector.new
|
43
|
-
check_elems << OpenStudio::Attribute.new('name', 'Mechanical System Type')
|
43
|
+
check_elems << OpenStudio::Attribute.new('name', 'Baseline Mechanical System Type')
|
44
44
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
45
|
|
46
46
|
# add ASHRAE to display of target standard if includes with 90.1
|
@@ -49,7 +49,7 @@ module OsLib_QAQC
|
|
49
49
|
else
|
50
50
|
check_elems << OpenStudio::Attribute.new('description', 'Check against ASHRAE 90.1. Infers the baseline system type based on the equipment serving the zone and their heating/cooling fuels. Only does a high-level inference; does not look for the presence/absence of required controls, etc.')
|
51
51
|
end
|
52
|
-
|
52
|
+
|
53
53
|
# stop here if only name is requested this is used to populate display name for arguments
|
54
54
|
if name_only == true
|
55
55
|
results = []
|
@@ -119,7 +119,7 @@ module OsLib_QAQC
|
|
119
119
|
else
|
120
120
|
if req_sys_type == '' then req_sys_type = 'Unknown' end
|
121
121
|
puts "#{zone.name} baseline system type is incorrect. Supposed to be #{req_sys_type}, but was #{act_sys_type} instead."
|
122
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{zone.name} baseline system type
|
122
|
+
check_elems << OpenStudio::Attribute.new('flag', "For #{zone.name}, the baseline system type would be #{req_sys_type}; the current system type is #{act_sys_type}.")
|
123
123
|
end
|
124
124
|
end
|
125
125
|
rescue StandardError => e
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -42,60 +42,63 @@ module OsLib_QAQC
|
|
42
42
|
check_elems = OpenStudio::AttributeVector.new
|
43
43
|
check_elems << OpenStudio::Attribute.new('name', 'Schedules')
|
44
44
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
|
-
|
45
|
+
|
46
|
+
# update display sttandard
|
47
|
+
if target_standard.include?('90.1')
|
48
|
+
display_standard = "ASHRAE #{target_standard}"
|
49
|
+
else
|
50
|
+
display_standard = target_standard
|
51
|
+
end
|
46
52
|
|
47
53
|
# stop here if only name is requested this is used to populate display name for arguments
|
48
54
|
if name_only == true
|
49
55
|
results = []
|
56
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check schedules for lighting, ventilation, occupant density, plug loads, and equipment based on DOE reference building schedules in terms of full load hours per year.')
|
50
57
|
check_elems.each do |elem|
|
51
58
|
results << elem.valueAsString
|
52
59
|
end
|
53
60
|
return results
|
54
61
|
end
|
55
62
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
# This Standard object is used throughout the QAQC check.
|
60
|
-
if OpenStudio::VersionString.new(OpenStudio.openStudioVersion) < OpenStudio::VersionString.new('2.4.3')
|
61
|
-
use_old_gem_code = true
|
62
|
-
else
|
63
|
-
use_old_gem_code = false
|
63
|
+
begin
|
64
|
+
|
65
|
+
# setup standard
|
64
66
|
std = Standard.build(target_standard)
|
65
|
-
end
|
66
67
|
|
67
|
-
|
68
|
+
# gather building type for summary
|
69
|
+
bt_cz = std.model_get_building_climate_zone_and_building_type(@model)
|
70
|
+
building_type = bt_cz['building_type']
|
71
|
+
# mapping to obuilding type to match space types
|
72
|
+
if building_type.include?("Office") then building_type = "Office" end
|
73
|
+
climate_zone = bt_cz['climate_zone']
|
74
|
+
prototype_prefix = "#{display_standard} #{building_type} #{climate_zone}"
|
75
|
+
check_elems << OpenStudio::Attribute.new('description', "Check schedules for lighting, ventilation, occupant density, plug loads, and equipment based on #{prototype_prefix} DOE reference building schedules in terms of full load hours per year.")
|
76
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
77
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
78
|
+
|
79
|
+
# gather all non statandard space types so can be listed in single flag
|
80
|
+
non_tagged_space_types = []
|
81
|
+
|
68
82
|
# loop through all space types used in the model
|
69
83
|
@model.getSpaceTypes.each do |space_type|
|
70
84
|
next if space_type.floorArea <= 0
|
71
85
|
|
72
86
|
# load in standard info for this space type
|
73
|
-
|
74
|
-
data = space_type.get_standards_data(target_standard)
|
75
|
-
else
|
76
|
-
data = std.space_type_get_standards_data(space_type)
|
77
|
-
end
|
87
|
+
data = std.space_type_get_standards_data(space_type)
|
78
88
|
|
79
89
|
if data.nil? || data.empty?
|
80
90
|
|
81
91
|
# skip if all spaces using this space type are plenums
|
82
92
|
all_spaces_plenums = true
|
83
93
|
space_type.spaces.each do |space|
|
84
|
-
if
|
85
|
-
|
86
|
-
|
87
|
-
next
|
88
|
-
end
|
89
|
-
else
|
90
|
-
if !std.space_plenum?(space)
|
91
|
-
all_spaces_plenums = false
|
92
|
-
next
|
93
|
-
end
|
94
|
+
if !std.space_plenum?(space)
|
95
|
+
all_spaces_plenums = false
|
96
|
+
next
|
94
97
|
end
|
95
98
|
end
|
96
99
|
|
97
100
|
if !all_spaces_plenums
|
98
|
-
|
101
|
+
non_tagged_space_types << space_type.floorArea
|
99
102
|
end
|
100
103
|
|
101
104
|
next
|
@@ -107,22 +110,14 @@ module OsLib_QAQC
|
|
107
110
|
# check lighting schedules
|
108
111
|
data['lighting_per_area'].nil? ? (target_ip = 0.0) : (target_ip = data['lighting_per_area'])
|
109
112
|
if target_ip.to_f > 0
|
110
|
-
|
111
|
-
schedule_target = model_temp.add_schedule(data['lighting_schedule'])
|
112
|
-
else
|
113
|
-
schedule_target = std.model_add_schedule(model_temp, data['lighting_schedule'])
|
114
|
-
end
|
113
|
+
schedule_target = std.model_add_schedule(model_temp, data['lighting_schedule'])
|
115
114
|
if !schedule_target
|
116
115
|
check_elems << OpenStudio::Attribute.new('flag', "Didn't find schedule named #{data['lighting_schedule']} in standards json.")
|
117
116
|
else
|
118
117
|
# loop through and test individual load instances
|
119
|
-
|
120
|
-
target_hrs = schedule_target.annual_equivalent_full_load_hrs
|
121
|
-
else
|
122
|
-
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target)
|
123
|
-
end
|
118
|
+
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target.to_ScheduleRuleset.get)
|
124
119
|
space_type.lights.each do |load_inst|
|
125
|
-
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass)
|
120
|
+
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass, target_standard)
|
126
121
|
if inst_sch_check then check_elems << inst_sch_check end
|
127
122
|
end
|
128
123
|
|
@@ -132,23 +127,15 @@ module OsLib_QAQC
|
|
132
127
|
# check electric equipment schedules
|
133
128
|
data['electric_equipment_per_area'].nil? ? (target_ip = 0.0) : (target_ip = data['electric_equipment_per_area'])
|
134
129
|
if target_ip.to_f > 0
|
135
|
-
|
136
|
-
schedule_target = model_temp.add_schedule(data['electric_equipment_schedule'])
|
137
|
-
else
|
138
|
-
schedule_target = std.model_add_schedule(model_temp, data['electric_equipment_schedule'])
|
139
|
-
end
|
130
|
+
schedule_target = std.model_add_schedule(model_temp, data['electric_equipment_schedule'])
|
140
131
|
if !schedule_target
|
141
132
|
check_elems << OpenStudio::Attribute.new('flag', "Didn't find schedule named #{data['electric_equipment_schedule']} in standards json.")
|
142
133
|
else
|
143
134
|
# loop through and test individual load instances
|
144
|
-
|
145
|
-
target_hrs = schedule_target.annual_equivalent_full_load_hrs
|
146
|
-
else
|
147
|
-
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target)
|
148
|
-
end
|
135
|
+
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target.to_ScheduleRuleset.get)
|
149
136
|
|
150
137
|
space_type.electricEquipment.each do |load_inst|
|
151
|
-
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass)
|
138
|
+
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass, target_standard)
|
152
139
|
if inst_sch_check then check_elems << inst_sch_check end
|
153
140
|
end
|
154
141
|
end
|
@@ -158,22 +145,14 @@ module OsLib_QAQC
|
|
158
145
|
# todo - update measure test to with space type to check this
|
159
146
|
data['gas_equipment_per_area'].nil? ? (target_ip = 0.0) : (target_ip = data['gas_equipment_per_area'])
|
160
147
|
if target_ip.to_f > 0
|
161
|
-
|
162
|
-
schedule_target = model_temp.add_schedule(data['gas_equipment_schedule'])
|
163
|
-
else
|
164
|
-
schedule_target = std.model_add_schedule(model_temp, data['gas_equipment_schedule'])
|
165
|
-
end
|
148
|
+
schedule_target = std.model_add_schedule(model_temp, data['gas_equipment_schedule'])
|
166
149
|
if !schedule_target
|
167
150
|
check_elems << OpenStudio::Attribute.new('flag', "Didn't find schedule named #{data['gas_equipment_schedule']} in standards json.")
|
168
151
|
else
|
169
152
|
# loop through and test individual load instances
|
170
|
-
|
171
|
-
target_hrs = schedule_target.annual_equivalent_full_load_hrs
|
172
|
-
else
|
173
|
-
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target)
|
174
|
-
end
|
153
|
+
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target.to_ScheduleRuleset.get)
|
175
154
|
space_type.gasEquipment.each do |load_inst|
|
176
|
-
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass)
|
155
|
+
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass, target_standard)
|
177
156
|
if inst_sch_check then check_elems << inst_sch_check end
|
178
157
|
end
|
179
158
|
end
|
@@ -182,22 +161,14 @@ module OsLib_QAQC
|
|
182
161
|
# check occupancy schedules
|
183
162
|
data['occupancy_per_area'].nil? ? (target_ip = 0.0) : (target_ip = data['occupancy_per_area'])
|
184
163
|
if target_ip.to_f > 0
|
185
|
-
|
186
|
-
schedule_target = model_temp.add_schedule(data['occupancy_schedule'])
|
187
|
-
else
|
188
|
-
schedule_target = std.model_add_schedule(model_temp, data['occupancy_schedule'])
|
189
|
-
end
|
164
|
+
schedule_target = std.model_add_schedule(model_temp, data['occupancy_schedule'])
|
190
165
|
if !schedule_target
|
191
166
|
check_elems << OpenStudio::Attribute.new('flag', "Didn't find schedule named #{data['occupancy_schedule']} in standards json.")
|
192
167
|
else
|
193
168
|
# loop through and test individual load instances
|
194
|
-
|
195
|
-
target_hrs = schedule_target.annual_equivalent_full_load_hrs
|
196
|
-
else
|
197
|
-
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target)
|
198
|
-
end
|
169
|
+
target_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_target.to_ScheduleRuleset.get)
|
199
170
|
space_type.people.each do |load_inst|
|
200
|
-
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass)
|
171
|
+
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass, target_standard)
|
201
172
|
if inst_sch_check then check_elems << inst_sch_check end
|
202
173
|
end
|
203
174
|
|
@@ -212,7 +183,7 @@ module OsLib_QAQC
|
|
212
183
|
if oa.outdoorAirFlowRateFractionSchedule.is_initialized
|
213
184
|
# TODO: - update measure test to check this
|
214
185
|
target_hrs = 8760
|
215
|
-
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, oa, space_type, check_elems, min_pass, max_pass)
|
186
|
+
inst_sch_check = generate_load_insc_sch_check_attribute(target_hrs, oa, space_type, check_elems, min_pass, max_pass, target_standard)
|
216
187
|
if inst_sch_check then check_elems << inst_sch_check end
|
217
188
|
end
|
218
189
|
end
|
@@ -227,13 +198,16 @@ module OsLib_QAQC
|
|
227
198
|
# model load for space type where standards doesn't have one wont throw flag about mis-matched schedules
|
228
199
|
end
|
229
200
|
|
201
|
+
# report about non standard space types
|
202
|
+
if non_tagged_space_types.size > 0
|
203
|
+
impacted_floor_area = non_tagged_space_types.sum
|
204
|
+
building_area = @model.getBuilding.floorArea
|
205
|
+
check_elems << OpenStudio::Attribute.new('flag', "Unexpected standard building/space types found for #{non_tagged_space_types.size} space types covering #{(100 * impacted_floor_area/building_area).round}% of floor area, can't provide comparisons for schedules for those space types.")
|
206
|
+
end
|
207
|
+
|
230
208
|
# warn if there are spaces in model that don't use space type unless they appear to be plenums
|
231
209
|
@model.getSpaces.each do |space|
|
232
|
-
if
|
233
|
-
next if space.plenum?
|
234
|
-
else
|
235
|
-
next if std.space_plenum?(space)
|
236
|
-
end
|
210
|
+
next if std.space_plenum?(space)
|
237
211
|
if !space.spaceType.is_initialized
|
238
212
|
check_elems << OpenStudio::Attribute.new('flag', "#{space.name} doesn't have a space type assigned, can't validate schedules.")
|
239
213
|
end
|
@@ -255,21 +229,19 @@ module OsLib_QAQC
|
|
255
229
|
|
256
230
|
# code for each load instance for different load types will pass through here
|
257
231
|
# will return nill or a single attribute
|
258
|
-
def generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass)
|
259
|
-
# Versions of OpenStudio greater than 2.4.0 use a modified version of
|
260
|
-
# openstudio-standards with different method calls. These methods
|
261
|
-
# require a "Standard" object instead of the standard being passed into method calls.
|
262
|
-
# This Standard object is used throughout the QAQC check.
|
263
|
-
if OpenStudio::VersionString.new(OpenStudio.openStudioVersion) < OpenStudio::VersionString.new('2.4.3')
|
264
|
-
use_old_gem_code = true
|
265
|
-
else
|
266
|
-
use_old_gem_code = false
|
267
|
-
std = Standard.build('90.1-2013')
|
268
|
-
end
|
269
|
-
|
232
|
+
def generate_load_insc_sch_check_attribute(target_hrs, load_inst, space_type, check_elems, min_pass, max_pass, target_standard)
|
270
233
|
schedule_inst = nil
|
271
234
|
inst_hrs = nil
|
272
235
|
|
236
|
+
# setup standard
|
237
|
+
std = Standard.build(target_standard)
|
238
|
+
|
239
|
+
# gather building type for summary
|
240
|
+
bt_cz = std.model_get_building_climate_zone_and_building_type(@model)
|
241
|
+
building_type = bt_cz['building_type']
|
242
|
+
climate_zone = bt_cz['climate_zone']
|
243
|
+
prototype_prefix = "#{target_standard} #{building_type} #{climate_zone}"
|
244
|
+
|
273
245
|
# get schedule
|
274
246
|
if (load_inst.class.to_s == 'OpenStudio::Model::People') && load_inst.numberofPeopleSchedule.is_initialized
|
275
247
|
schedule_inst = load_inst.numberofPeopleSchedule.get
|
@@ -283,26 +255,18 @@ module OsLib_QAQC
|
|
283
255
|
|
284
256
|
# get annual equiv for model schedule
|
285
257
|
if schedule_inst.to_ScheduleRuleset.is_initialized
|
286
|
-
|
287
|
-
inst_hrs = schedule_inst.to_ScheduleRuleset.get.annual_equivalent_full_load_hrs
|
288
|
-
else
|
289
|
-
inst_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_inst.to_ScheduleRuleset.get)
|
290
|
-
end
|
258
|
+
inst_hrs = std.schedule_ruleset_annual_equivalent_full_load_hrs(schedule_inst.to_ScheduleRuleset.get)
|
291
259
|
elsif schedule_inst.to_ScheduleConstant.is_initialized
|
292
|
-
|
293
|
-
inst_hrs = schedule_inst.to_ScheduleConstant.get.annual_equivalent_full_load_hrs
|
294
|
-
else
|
295
|
-
inst_hrs = std.schedule_constant_annual_equivalent_full_load_hrs(schedule_inst.to_ScheduleConstant.get)
|
296
|
-
end
|
260
|
+
inst_hrs = std.schedule_constant_annual_equivalent_full_load_hrs(schedule_inst.to_ScheduleConstant.get)
|
297
261
|
else
|
298
262
|
return OpenStudio::Attribute.new('flag', "#{schedule_inst.name} isn't a Ruleset or Constant schedule. Can't calculate annual equivalent full load hours.")
|
299
263
|
end
|
300
264
|
|
301
265
|
# check instance against target
|
302
266
|
if inst_hrs < target_hrs * (1.0 - min_pass)
|
303
|
-
return OpenStudio::Attribute.new('flag', "#{inst_hrs.round} annual equivalent full load hours for #{schedule_inst.name} in #{space_type.name} is more than #{min_pass * 100} (%) below the
|
267
|
+
return OpenStudio::Attribute.new('flag', "#{inst_hrs.round} annual equivalent full load hours for #{schedule_inst.name} in #{space_type.name} is more than #{min_pass * 100} (%) below the value of #{target_hrs.round} hours from the #{prototype_prefix} DOE Prototype building.")
|
304
268
|
elsif inst_hrs > target_hrs * (1.0 + max_pass)
|
305
|
-
return OpenStudio::Attribute.new('flag', "#{inst_hrs.round} annual equivalent full load hours for #{schedule_inst.name} in #{space_type.name} is more than #{max_pass * 100} (%) above the
|
269
|
+
return OpenStudio::Attribute.new('flag', "#{inst_hrs.round} annual equivalent full load hours for #{schedule_inst.name} in #{space_type.name} is more than #{max_pass * 100} (%) above the value of #{target_hrs.round} hours from the #{prototype_prefix} DOE Prototype building.")
|
306
270
|
end
|
307
271
|
|
308
272
|
# will get to this if no flag was thrown
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -43,11 +43,13 @@ module OsLib_QAQC
|
|
43
43
|
check_elems << OpenStudio::Attribute.new('name', 'Simultaneous Heating and Cooling')
|
44
44
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
45
|
check_elems << OpenStudio::Attribute.new('description', 'Check for simultaneous heating and cooling by looping through all Single Duct VAV Reheat Air Terminals and analyzing hourly data when there is a cooling load. ')
|
46
|
-
|
46
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
47
|
+
|
47
48
|
# stop here if only name is requested this is used to populate display name for arguments
|
48
49
|
if name_only == true
|
49
50
|
results = []
|
50
51
|
check_elems.each do |elem|
|
52
|
+
next if ['Double','Integer'].include? (elem.valueType.valueDescription)
|
51
53
|
results << elem.valueAsString
|
52
54
|
end
|
53
55
|
return results
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|
@@ -50,11 +50,13 @@ module OsLib_QAQC
|
|
50
50
|
else
|
51
51
|
check_elems << OpenStudio::Attribute.new('description', "Check if fans modeled to ASHRAE 90.1 2013 Section G3.1.2.9 requirements. Compare the supply air temperature for each thermal zone against the thermostat setpoints. Throw flag if temperature difference excedes threshold set by #{@utility_name}.")
|
52
52
|
end
|
53
|
-
|
53
|
+
check_elems << OpenStudio::Attribute.new('min_pass', max_delta)
|
54
|
+
|
54
55
|
# stop here if only name is requested this is used to populate display name for arguments
|
55
56
|
if name_only == true
|
56
57
|
results = []
|
57
58
|
check_elems.each do |elem|
|
59
|
+
next if ['Double','Integer'].include? (elem.valueType.valueDescription)
|
58
60
|
results << elem.valueAsString
|
59
61
|
end
|
60
62
|
return results
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# *******************************************************************************
|
2
|
-
# OpenStudio(R), Copyright (c) 2008-
|
2
|
+
# OpenStudio(R), Copyright (c) 2008-2021, Alliance for Sustainable Energy, LLC.
|
3
3
|
# All rights reserved.
|
4
4
|
# Redistribution and use in source and binary forms, with or without
|
5
5
|
# modification, are permitted provided that the following conditions are met:
|