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:
|
@@ -38,33 +38,46 @@ module OsLib_QAQC
|
|
38
38
|
|
39
39
|
# checks the number of unmet hours in the model
|
40
40
|
def check_eui_by_end_use(category, target_standard, min_pass, max_pass, name_only = false)
|
41
|
+
|
41
42
|
# summary of the check
|
42
43
|
check_elems = OpenStudio::AttributeVector.new
|
43
44
|
check_elems << OpenStudio::Attribute.new('name', 'End Use by Category')
|
44
45
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
|
-
|
46
|
+
|
47
|
+
# update display sttandard
|
48
|
+
if target_standard.include?('90.1')
|
49
|
+
display_standard = "ASHRAE #{target_standard}"
|
50
|
+
else
|
51
|
+
display_standard = target_standard
|
52
|
+
end
|
46
53
|
|
47
54
|
# stop here if only name is requested this is used to populate display name for arguments
|
48
55
|
if name_only == true
|
49
56
|
results = []
|
57
|
+
check_elems << OpenStudio::Attribute.new('description', "Check model consumption by end use against #{target_standard} DOE prototype building.")
|
50
58
|
check_elems.each do |elem|
|
51
59
|
results << elem.valueAsString
|
52
60
|
end
|
53
61
|
return results
|
54
62
|
end
|
55
63
|
|
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
|
64
|
+
begin
|
65
|
+
|
66
|
+
# setup standard
|
64
67
|
std = Standard.build(target_standard)
|
65
|
-
|
68
|
+
target_eui = std.model_find_target_eui(@model)
|
69
|
+
|
70
|
+
# gather building type for summary
|
71
|
+
bt_cz = std.model_get_building_climate_zone_and_building_type(@model)
|
72
|
+
building_type = bt_cz['building_type']
|
73
|
+
# mapping to obuilding type to match space types
|
74
|
+
if building_type.include?("Office") then building_type = "Office" end
|
75
|
+
climate_zone = bt_cz['climate_zone']
|
76
|
+
prototype_prefix = "#{display_standard} #{building_type} #{climate_zone}"
|
77
|
+
check_elems << OpenStudio::Attribute.new('description', "Check model consumption by end use against #{prototype_prefix} DOE prototype building.")
|
78
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
79
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
66
80
|
|
67
|
-
begin
|
68
81
|
# total building area
|
69
82
|
query = 'SELECT Value FROM tabulardatawithstrings WHERE '
|
70
83
|
query << "ReportName='AnnualBuildingUtilityPerformanceSummary' and "
|
@@ -107,14 +120,36 @@ module OsLib_QAQC
|
|
107
120
|
actual_eui_by_end_use[end_use] = total_end_use / energy_plus_area
|
108
121
|
end
|
109
122
|
|
110
|
-
#
|
111
|
-
if
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
123
|
+
# check if all spaces types used the building type defined in the model (percentage calculation doesn't check if all area is inclued in building floor area)
|
124
|
+
if building_type != ''
|
125
|
+
primary_type_floor_area = 0.0
|
126
|
+
non_pri_area = 0.0
|
127
|
+
non_pri_types = []
|
128
|
+
@model.getSpaceTypes.each do |space_type|
|
129
|
+
st_bt = space_type.standardsBuildingType
|
130
|
+
if st_bt.is_initialized
|
131
|
+
st_bt = st_bt.get.to_s
|
132
|
+
if st_bt.include?("Office") then st_bt = "Office" end
|
133
|
+
if st_bt.to_s == building_type.to_s
|
134
|
+
primary_type_floor_area += space_type.floorArea
|
135
|
+
else
|
136
|
+
non_pri_area += space_type.floorArea
|
137
|
+
if !non_pri_types.include?(st_bt) then non_pri_types << st_bt end
|
138
|
+
end
|
139
|
+
else
|
140
|
+
non_pri_area += space_type.floorArea
|
141
|
+
if !non_pri_types.include?(st_bt) then non_pri_types << st_bt end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
if non_pri_area > 0.0
|
145
|
+
check_elems << OpenStudio::Attribute.new('flag', "The primary building type, #{building_type}, only represents #{(100 * primary_type_floor_area / (primary_type_floor_area + non_pri_area)).round}% of the total building area. Other standads building types included are #{non_pri_types.sort.join(",")}. While a comparison to the #{building_type} prototype consumption by end use is provided, it would not be unexpected for the building consumption by end use to be significantly different than the prototype.")
|
146
|
+
end
|
116
147
|
end
|
117
148
|
|
149
|
+
# gather target end uses for given standard as hash
|
150
|
+
std = Standard.build(target_standard)
|
151
|
+
target_eui_by_end_use = std.model_find_target_eui_by_end_use(@model)
|
152
|
+
|
118
153
|
# units for flag display text and unit conversion
|
119
154
|
source_units = 'GJ/m^2'
|
120
155
|
target_units = 'kBtu/ft^2'
|
@@ -136,13 +171,17 @@ module OsLib_QAQC
|
|
136
171
|
if (end_use == 'Pumps') && (value < 0.05) && (target_value < 0.05) then skip = true end
|
137
172
|
|
138
173
|
if (value < target_value * (1.0 - min_pass)) && !skip
|
139
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{end_use} EUI of #{eui_ip_neat} (#{target_units}) is
|
174
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{end_use} EUI of #{eui_ip_neat} (#{target_units}) is more than #{min_pass * 100} % below the #{prototype_prefix} prototype #{end_use} EUI of #{target_eui_ip_neat} (#{target_units}) for #{target_standard}.")
|
140
175
|
elsif (value > target_value * (1.0 + max_pass)) && !skip
|
141
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{end_use} EUI of #{eui_ip_neat} (#{target_units}) is more than #{max_pass * 100} % above the
|
176
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{end_use} EUI of #{eui_ip_neat} (#{target_units}) is more than #{max_pass * 100} % above the #{prototype_prefix} prototype #{end_use} EUI of #{target_eui_ip_neat} (#{target_units}) for #{target_standard}.")
|
142
177
|
end
|
143
178
|
end
|
144
179
|
else
|
145
|
-
|
180
|
+
if ['90.1-2016','90.1-2019'].include?(target_standard) || target_standard.include?("ComStock")
|
181
|
+
check_elems << OpenStudio::Attribute.new('flag', "target EUI end use comparison is not supported yet for #{target_standard}.")
|
182
|
+
else
|
183
|
+
check_elems << OpenStudio::Attribute.new('flag', "Can't calculate target end use EUIs. Make sure model has expected climate zone and building type.")
|
184
|
+
end
|
146
185
|
end
|
147
186
|
rescue StandardError => e
|
148
187
|
# brief description of ruby error
|
@@ -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:
|
@@ -38,14 +38,22 @@ module OsLib_QAQC
|
|
38
38
|
|
39
39
|
# checks the number of unmet hours in the model
|
40
40
|
def check_eui_reasonableness(category, target_standard, min_pass, max_pass, name_only = false)
|
41
|
+
|
41
42
|
# summary of the check
|
42
43
|
check_elems = OpenStudio::AttributeVector.new
|
43
44
|
check_elems << OpenStudio::Attribute.new('name', 'EUI Reasonableness')
|
44
45
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
|
-
|
46
|
+
|
47
|
+
# update display sttandard
|
48
|
+
if target_standard.include?('90.1')
|
49
|
+
display_standard = "ASHRAE #{target_standard}"
|
50
|
+
else
|
51
|
+
display_standard = target_standard
|
52
|
+
end
|
46
53
|
|
47
54
|
# stop here if only name is requested this is used to populate display name for arguments
|
48
55
|
if name_only == true
|
56
|
+
check_elems << OpenStudio::Attribute.new('description', "Check model EUI against #{display_standard} DOE prototype building.")
|
49
57
|
results = []
|
50
58
|
check_elems.each do |elem|
|
51
59
|
results << elem.valueAsString
|
@@ -53,18 +61,26 @@ module OsLib_QAQC
|
|
53
61
|
return results
|
54
62
|
end
|
55
63
|
|
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
|
64
|
+
begin
|
65
|
+
|
66
|
+
# setup standard
|
64
67
|
std = Standard.build(target_standard)
|
65
|
-
|
68
|
+
target_eui = std.model_find_target_eui(@model)
|
69
|
+
|
70
|
+
# gather building type for summary
|
71
|
+
bt_cz = std.model_get_building_climate_zone_and_building_type(@model)
|
72
|
+
building_type = bt_cz['building_type']
|
73
|
+
climate_zone = bt_cz['climate_zone']
|
74
|
+
prototype_prefix = "#{display_standard} #{building_type} #{climate_zone}"
|
75
|
+
|
76
|
+
# mapping to obuilding type to match space types
|
77
|
+
if building_type.include?("Office") then building_type = "Office" end
|
78
|
+
|
79
|
+
# last part of summary table
|
80
|
+
check_elems << OpenStudio::Attribute.new('description', "Check model EUI against #{prototype_prefix} DOE prototype building.")
|
81
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
82
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
66
83
|
|
67
|
-
begin
|
68
84
|
# total building area
|
69
85
|
query = 'SELECT Value FROM tabulardatawithstrings WHERE '
|
70
86
|
query << "ReportName='AnnualBuildingUtilityPerformanceSummary' and "
|
@@ -98,12 +114,30 @@ module OsLib_QAQC
|
|
98
114
|
return OpenStudio::Attribute.new('check', check_elems)
|
99
115
|
end
|
100
116
|
|
101
|
-
#
|
102
|
-
if
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
117
|
+
# check if all spaces types used the building type defined in the model (percentage calculation doesn't check if all area is inclued in building floor area)
|
118
|
+
if building_type != ''
|
119
|
+
primary_type_floor_area = 0.0
|
120
|
+
non_pri_area = 0.0
|
121
|
+
non_pri_types = []
|
122
|
+
@model.getSpaceTypes.each do |space_type|
|
123
|
+
st_bt = space_type.standardsBuildingType
|
124
|
+
if st_bt.is_initialized
|
125
|
+
st_bt = st_bt.get.to_s
|
126
|
+
if st_bt.include?("Office") then st_bt = "Office" end
|
127
|
+
if st_bt.to_s == building_type.to_s
|
128
|
+
primary_type_floor_area += space_type.floorArea
|
129
|
+
else
|
130
|
+
non_pri_area += space_type.floorArea
|
131
|
+
if !non_pri_types.include?(st_bt) then non_pri_types << st_bt end
|
132
|
+
end
|
133
|
+
else
|
134
|
+
non_pri_area += space_type.floorArea
|
135
|
+
if !non_pri_types.include?(st_bt) then non_pri_types << st_bt end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
if non_pri_area > 0.0
|
139
|
+
check_elems << OpenStudio::Attribute.new('flag', "The primary building type, #{building_type}, only represents #{(100 * primary_type_floor_area / (primary_type_floor_area + non_pri_area)).round}% of the total building area. Other standads building types included are #{non_pri_types.sort.join(",")}. While a comparison to the #{building_type} prototype EUI is provided, it would not be unexpected for the building EUI to be significantly different than the prototype.")
|
140
|
+
end
|
107
141
|
end
|
108
142
|
|
109
143
|
# check model vs. target for user specified tolerance.
|
@@ -111,12 +145,16 @@ module OsLib_QAQC
|
|
111
145
|
eui_ip_neat = OpenStudio.toNeatString(OpenStudio.convert(eui, source_units, target_units).get, 1, true)
|
112
146
|
target_eui_ip_neat = OpenStudio.toNeatString(OpenStudio.convert(target_eui, source_units, target_units).get, 1, true)
|
113
147
|
if eui < target_eui * (1.0 - min_pass)
|
114
|
-
check_elems << OpenStudio::Attribute.new('flag', "Model EUI of #{eui_ip_neat} (#{target_units}) is
|
148
|
+
check_elems << OpenStudio::Attribute.new('flag', "Model EUI of #{eui_ip_neat} (#{target_units}) is more than #{min_pass * 100} % below the #{prototype_prefix} prototype EUI of #{target_eui_ip_neat} (#{target_units}).")
|
115
149
|
elsif eui > target_eui * (1.0 + max_pass)
|
116
|
-
check_elems << OpenStudio::Attribute.new('flag', "Model EUI of #{eui_ip_neat} (#{target_units}) is more than #{max_pass * 100} % above the
|
150
|
+
check_elems << OpenStudio::Attribute.new('flag', "Model EUI of #{eui_ip_neat} (#{target_units}) is more than #{max_pass * 100} % above the #{prototype_prefix} prototype EUI of #{target_eui_ip_neat} (#{target_units}).")
|
117
151
|
end
|
118
152
|
else
|
119
|
-
|
153
|
+
if ['90.1-2016','90.1-2019'].include?(target_standard) || target_standard.include?("ComStock")
|
154
|
+
check_elems << OpenStudio::Attribute.new('flag', "target EUI comparison is not supported yet for #{target_standard}.")
|
155
|
+
else
|
156
|
+
check_elems << OpenStudio::Attribute.new('flag', "Can't calculate target EUI. Make sure model has expected climate zone and building type.")
|
157
|
+
end
|
120
158
|
end
|
121
159
|
rescue StandardError => e
|
122
160
|
# brief description of ruby error
|
@@ -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,38 +42,48 @@ module OsLib_QAQC
|
|
42
42
|
check_elems = OpenStudio::AttributeVector.new
|
43
43
|
check_elems << OpenStudio::Attribute.new('name', 'Internal Loads')
|
44
44
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
|
-
|
46
|
-
|
45
|
+
|
46
|
+
# update display sttandard
|
47
|
+
if target_standard.include?('90.1')
|
48
|
+
display_standard = "ASHRAE #{target_standard}"
|
47
49
|
else
|
48
|
-
|
49
|
-
display_standard = "ASHRAE #{target_standard}"
|
50
|
-
else
|
51
|
-
display_standard = target_standard
|
52
|
-
end
|
53
|
-
check_elems << OpenStudio::Attribute.new('description', "Check LPD, ventilation rates, occupant density, plug loads, and equipment loads against #{display_standard} and DOE Prototype buildings.")
|
50
|
+
display_standard = target_standard
|
54
51
|
end
|
55
52
|
|
56
53
|
# stop here if only name is requested this is used to populate display name for arguments
|
57
54
|
if name_only == true
|
58
55
|
results = []
|
56
|
+
if target_standard == 'ICC IECC 2015'
|
57
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check internal loads against Table R405.5.2(1) in ICC IECC 2015 Residential Provisions.')
|
58
|
+
else
|
59
|
+
check_elems << OpenStudio::Attribute.new('description', "Check LPD, ventilation rates, occupant density, plug loads, and equipment loads against #{display_standard} DOE Prototype buildings.")
|
60
|
+
end
|
59
61
|
check_elems.each do |elem|
|
60
62
|
results << elem.valueAsString
|
61
63
|
end
|
62
64
|
return results
|
63
65
|
end
|
64
66
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
# This Standard object is used throughout the QAQC check.
|
69
|
-
if OpenStudio::VersionString.new(OpenStudio.openStudioVersion) < OpenStudio::VersionString.new('2.4.3')
|
70
|
-
use_old_gem_code = true
|
71
|
-
else
|
72
|
-
use_old_gem_code = false
|
67
|
+
begin
|
68
|
+
|
69
|
+
# setup standard
|
73
70
|
std = Standard.build(target_standard)
|
74
|
-
end
|
75
71
|
|
76
|
-
|
72
|
+
# gather building type for summary
|
73
|
+
bt_cz = std.model_get_building_climate_zone_and_building_type(@model)
|
74
|
+
building_type = bt_cz['building_type']
|
75
|
+
# mapping to obuilding type to match space types
|
76
|
+
if building_type.include?("Office") then building_type = "Office" end
|
77
|
+
climate_zone = bt_cz['climate_zone']
|
78
|
+
prototype_prefix = "#{display_standard} #{building_type} #{climate_zone}"
|
79
|
+
if target_standard == 'ICC IECC 2015'
|
80
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check internal loads against Table R405.5.2(1) in ICC IECC 2015 Residential Provisions.')
|
81
|
+
else
|
82
|
+
check_elems << OpenStudio::Attribute.new('description', "Check LPD, ventilation rates, occupant density, plug loads, and equipment loads against #{prototype_prefix} DOE Prototype building.")
|
83
|
+
end
|
84
|
+
check_elems << OpenStudio::Attribute.new('min_pass', min_pass * 100)
|
85
|
+
check_elems << OpenStudio::Attribute.new('max_pass', max_pass * 100)
|
86
|
+
|
77
87
|
if target_standard == 'ICC IECC 2015'
|
78
88
|
|
79
89
|
num_people = 0.0
|
@@ -88,11 +98,7 @@ module OsLib_QAQC
|
|
88
98
|
# lookup iecc internal loads for the building
|
89
99
|
bedrooms_per_unit = 2.0 # assumption
|
90
100
|
num_units = num_people / 2.5 # Avg 2.5 units per person.
|
91
|
-
|
92
|
-
target_loads_hash = @model.find_icc_iecc_2015_internal_loads(num_units, bedrooms_per_unit)
|
93
|
-
else
|
94
|
-
target_loads_hash = std.model_find_icc_iecc_2015_internal_loads(@model, num_units, bedrooms_per_unit)
|
95
|
-
end
|
101
|
+
target_loads_hash = std.model_find_icc_iecc_2015_internal_loads(@model, num_units, bedrooms_per_unit)
|
96
102
|
|
97
103
|
# get model internal gains for lights, elec equipment, and gas equipment
|
98
104
|
model_internal_gains_si = 0.0
|
@@ -172,6 +178,9 @@ module OsLib_QAQC
|
|
172
178
|
|
173
179
|
else
|
174
180
|
|
181
|
+
# gather all non statandard space types so can be listed in single flag
|
182
|
+
non_tagged_space_types = []
|
183
|
+
|
175
184
|
# loop through all space types used in the model
|
176
185
|
@model.getSpaceTypes.each do |space_type|
|
177
186
|
next if space_type.floorArea <= 0
|
@@ -181,32 +190,21 @@ module OsLib_QAQC
|
|
181
190
|
num_people = space_type.getNumberOfPeople(floor_area)
|
182
191
|
|
183
192
|
# load in standard info for this space type
|
184
|
-
|
185
|
-
data = space_type.get_standards_data(target_standard)
|
186
|
-
else
|
187
|
-
data = std.space_type_get_standards_data(space_type)
|
188
|
-
end
|
193
|
+
data = std.space_type_get_standards_data(space_type)
|
189
194
|
|
190
195
|
if data.nil? || data.empty?
|
191
196
|
|
192
197
|
# skip if all spaces using this space type are plenums
|
193
198
|
all_spaces_plenums = true
|
194
199
|
space_type.spaces.each do |space|
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
next
|
199
|
-
end
|
200
|
-
else
|
201
|
-
if !std.space_plenum?(space)
|
202
|
-
all_spaces_plenums = false
|
203
|
-
next
|
204
|
-
end
|
200
|
+
if !std.space_plenum?(space)
|
201
|
+
all_spaces_plenums = false
|
202
|
+
next
|
205
203
|
end
|
206
204
|
end
|
207
205
|
|
208
206
|
if !all_spaces_plenums
|
209
|
-
|
207
|
+
non_tagged_space_types << space_type.floorArea
|
210
208
|
end
|
211
209
|
|
212
210
|
next
|
@@ -223,9 +221,9 @@ module OsLib_QAQC
|
|
223
221
|
model_ip_neat = OpenStudio.toNeatString(model_ip, 2, true)
|
224
222
|
target_ip_neat = OpenStudio.toNeatString(target_ip, 2, true)
|
225
223
|
if model_ip < target_ip * (1.0 - min_pass)
|
226
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
224
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
227
225
|
elsif model_ip > target_ip * (1.0 + max_pass)
|
228
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
226
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
229
227
|
end
|
230
228
|
|
231
229
|
# check electric equipment
|
@@ -239,9 +237,9 @@ module OsLib_QAQC
|
|
239
237
|
model_ip_neat = OpenStudio.toNeatString(model_ip, 2, true)
|
240
238
|
target_ip_neat = OpenStudio.toNeatString(target_ip, 2, true)
|
241
239
|
if model_ip < target_ip * (1.0 - min_pass)
|
242
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
240
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
243
241
|
elsif model_ip > target_ip * (1.0 + max_pass)
|
244
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
242
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
245
243
|
end
|
246
244
|
|
247
245
|
# check gas equipment
|
@@ -255,9 +253,9 @@ module OsLib_QAQC
|
|
255
253
|
model_ip_neat = OpenStudio.toNeatString(model_ip, 2, true)
|
256
254
|
target_ip_neat = OpenStudio.toNeatString(target_ip, 2, true)
|
257
255
|
if model_ip < target_ip * (1.0 - min_pass)
|
258
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
256
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
259
257
|
elsif model_ip > target_ip * (1.0 + max_pass)
|
260
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
258
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
261
259
|
end
|
262
260
|
|
263
261
|
# check people
|
@@ -273,9 +271,9 @@ module OsLib_QAQC
|
|
273
271
|
# for people need to update target units just for display. Can't be used for converstion.
|
274
272
|
target_units = 'People/1000 ft^2'
|
275
273
|
if model_ip < target_ip * (1.0 - min_pass)
|
276
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
274
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
277
275
|
elsif model_ip > target_ip * (1.0 + max_pass)
|
278
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
276
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
279
277
|
end
|
280
278
|
|
281
279
|
# get volume for space type for use with ventilation and infiltration
|
@@ -340,9 +338,9 @@ module OsLib_QAQC
|
|
340
338
|
model_ip_neat = OpenStudio.toNeatString(OpenStudio.convert(oa_per_person, source_units, target_units).get, 2, true)
|
341
339
|
target_ip_neat = OpenStudio.toNeatString(target_oa_per_person_ip, 2, true)
|
342
340
|
if oa_per_person < target_oa_per_person_si * (1.0 - min_pass)
|
343
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
341
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
344
342
|
elsif oa_per_person > target_oa_per_person_si * (1.0 + max_pass)
|
345
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
343
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
346
344
|
end
|
347
345
|
|
348
346
|
# check other oa
|
@@ -352,19 +350,22 @@ module OsLib_QAQC
|
|
352
350
|
model_ip_neat = OpenStudio.toNeatString(OpenStudio.convert(oa_total, source_units, target_units).get, 2, true)
|
353
351
|
target_ip_neat = OpenStudio.toNeatString(OpenStudio.convert(target_oa_total, source_units, target_units).get, 2, true)
|
354
352
|
if oa_total < target_oa_total * (1.0 - min_pass)
|
355
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the
|
353
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{min_pass * 100} % below the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
356
354
|
elsif oa_total > target_oa_total * (1.0 + max_pass)
|
357
|
-
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the
|
355
|
+
check_elems << OpenStudio::Attribute.new('flag', "#{load_type} of #{model_ip_neat} (#{target_units}) for #{space_type.name} is more than #{max_pass * 100} % above the value of #{target_ip_neat} (#{target_units}) for #{prototype_prefix} Prototype model.")
|
358
356
|
end
|
359
357
|
end
|
360
358
|
|
359
|
+
# report about non standard space types
|
360
|
+
if non_tagged_space_types.size > 0
|
361
|
+
impacted_floor_area = non_tagged_space_types.sum
|
362
|
+
building_area = @model.getBuilding.floorArea
|
363
|
+
check_elems << OpenStudio::Attribute.new('flag', "Unexpected standard building/space types found for #{non_tagged_space_types.size} space types covering #{(100.0 * impacted_floor_area/building_area).round}% of floor area, can't provide comparisons for internal loads for those space types.")
|
364
|
+
end
|
365
|
+
|
361
366
|
# warn if there are spaces in model that don't use space type unless they appear to be plenums
|
362
367
|
@model.getSpaces.each do |space|
|
363
|
-
if
|
364
|
-
next if space.plenum?
|
365
|
-
else
|
366
|
-
next if std.space_plenum?(space)
|
367
|
-
end
|
368
|
+
next if std.space_plenum?(space)
|
368
369
|
|
369
370
|
if !space.spaceType.is_initialized
|
370
371
|
check_elems << OpenStudio::Attribute.new('flag', "#{space.name} doesn't have a space type assigned, can't validate internal loads.")
|
@@ -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,14 @@ module OsLib_QAQC
|
|
43
43
|
check_elems << OpenStudio::Attribute.new('name', 'Mechanical System Capacity')
|
44
44
|
check_elems << OpenStudio::Attribute.new('category', category)
|
45
45
|
check_elems << OpenStudio::Attribute.new('description', 'Check HVAC capacity against ASHRAE rules of thumb for chiller max flow rate, air loop max flow rate, air loop cooling capciaty, and zone heating capcaity. Zone heating check will skip thermal zones without any exterior exposure, and thermal zones that are not conditioned.')
|
46
|
-
|
46
|
+
check_elems << OpenStudio::Attribute.new('min_pass', "Var")
|
47
|
+
check_elems << OpenStudio::Attribute.new('max_pass', "Var")
|
48
|
+
|
47
49
|
# stop here if only name is requested this is used to populate display name for arguments
|
48
50
|
if name_only == true
|
49
51
|
results = []
|
50
52
|
check_elems.each do |elem|
|
53
|
+
next if ['Double','Integer'].include? (elem.valueType.valueDescription)
|
51
54
|
results << elem.valueAsString
|
52
55
|
end
|
53
56
|
return results
|