openstudio-common-measures 0.7.0 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test_with_openstudio.yml +62 -0
- data/CHANGELOG.md +25 -0
- data/LICENSE.md +7 -21
- data/README.md +2 -1
- data/Rakefile +4 -27
- data/doc_templates/LICENSE.md +7 -21
- data/doc_templates/copyright_erb.txt +2 -32
- data/doc_templates/copyright_js.txt +2 -2
- data/doc_templates/copyright_ruby.txt +3 -33
- data/lib/measures/AddCostPerAreaToConstruction/LICENSE.md +7 -21
- data/lib/measures/AddCostPerAreaToConstruction/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToBuilding/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToBuilding/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToElectricEquipment/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaToLights/measure.rb +2 -32
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/LICENSE.md +7 -21
- data/lib/measures/AddCostPerFloorAreaUnusedToLights/measure.rb +2 -32
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/LICENSE.md +7 -21
- data/lib/measures/AddCostToSupplySideHVACComponentByAirLoop/measure.rb +2 -32
- data/lib/measures/AddCostperAreatoUnusedConstruction/LICENSE.md +7 -21
- data/lib/measures/AddCostperAreatoUnusedConstruction/measure.rb +2 -32
- data/lib/measures/AddExteriorLights/LICENSE.md +7 -21
- data/lib/measures/AddExteriorLights/measure.rb +2 -32
- data/lib/measures/AddMeter/LICENSE.md +7 -21
- data/lib/measures/AddMeter/measure.rb +2 -32
- data/lib/measures/AddOutputDiagnostics/LICENSE.md +7 -21
- data/lib/measures/AddOutputDiagnostics/measure.rb +2 -32
- data/lib/measures/AddOutputVariable/LICENSE.md +7 -21
- data/lib/measures/AddOutputVariable/measure.rb +2 -32
- data/lib/measures/AddSimplePvToShadingSurfacesByType/LICENSE.md +7 -21
- data/lib/measures/AddSimplePvToShadingSurfacesByType/measure.rb +2 -32
- data/lib/measures/AddThermalComfortModelTypes/LICENSE.md +13 -0
- data/lib/measures/AddThermalComfortModelTypes/README.md +115 -0
- data/lib/measures/AddThermalComfortModelTypes/README.md.erb +45 -0
- data/lib/measures/AddThermalComfortModelTypes/measure.rb +165 -0
- data/lib/measures/AddThermalComfortModelTypes/measure.xml +244 -0
- data/lib/measures/AdjustSystemEfficiencies/LICENSE.md +7 -21
- data/lib/measures/AdjustSystemEfficiencies/measure.rb +2 -32
- data/lib/measures/AdjustThermostatSetpointsByDegrees/LICENSE.md +7 -21
- data/lib/measures/AdjustThermostatSetpointsByDegrees/measure.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/LICENSE.md +7 -21
- data/lib/measures/ChangeBuildingLocation/measure.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/resources/epw.rb +2 -32
- data/lib/measures/ChangeBuildingLocation/resources/stat_file.rb +2 -32
- data/lib/measures/EnableIdealAirLoadsForAllZones/LICENSE.md +7 -21
- data/lib/measures/EnableIdealAirLoadsForAllZones/measure.rb +2 -32
- data/lib/measures/ExportScheduleCSV/LICENSE.md +7 -21
- data/lib/measures/ExportScheduleCSV/measure.rb +2 -32
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/LICENSE.md +7 -21
- data/lib/measures/ImportEnvelopeAndInternalLoadsFromIdf/measure.rb +2 -32
- data/lib/measures/MeterFlodPlot/LICENSE.md +7 -21
- data/lib/measures/MeterFlodPlot/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusCoilCoolingDXSingleSpeedObjects/measure.rb +2 -32
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/LICENSE.md +7 -21
- data/lib/measures/ModifyEnergyPlusFanVariableVolumeObjects/measure.rb +2 -32
- data/lib/measures/PredictedMeanVote/LICENSE.md +7 -21
- data/lib/measures/PredictedMeanVote/measure.rb +2 -32
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/LICENSE.md +7 -21
- data/lib/measures/RemoveInternalLoadsDirectlyAssignedToSpaces/measure.rb +2 -32
- data/lib/measures/RemoveUnusedDefaultProfiles/LICENSE.md +7 -21
- data/lib/measures/RemoveUnusedDefaultProfiles/measure.rb +2 -32
- data/lib/measures/ReplaceExteriorWindowConstruction/LICENSE.md +7 -21
- data/lib/measures/ReplaceExteriorWindowConstruction/measure.rb +2 -32
- data/lib/measures/ReplaceModel/LICENSE.md +13 -0
- data/lib/measures/ReplaceModel/README.md +34 -0
- data/lib/measures/ReplaceModel/README.md.erb +42 -0
- data/lib/measures/ReplaceModel/measure.rb +113 -0
- data/lib/measures/ReplaceModel/measure.xml +71 -0
- data/lib/measures/ReplaceThermostatSchedules/LICENSE.md +7 -21
- data/lib/measures/ReplaceThermostatSchedules/measure.rb +2 -32
- data/lib/measures/ReportModelChanges/LICENSE.md +7 -21
- data/lib/measures/ReportModelChanges/measure.rb +2 -32
- data/lib/measures/ReportModelChanges/measure.xml +2 -2
- data/lib/measures/RunPeriod/LICENSE.md +7 -21
- data/lib/measures/RunPeriod/measure.rb +2 -32
- data/lib/measures/RunPeriodMultiple/LICENSE.md +7 -21
- data/lib/measures/RunPeriodMultiple/measure.rb +2 -32
- data/lib/measures/ServerDirectoryCleanup/LICENSE.md +7 -21
- data/lib/measures/ServerDirectoryCleanup/measure.rb +2 -32
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforSingleSpeedDXCoolingUnits/measure.rb +2 -32
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/LICENSE.md +7 -21
- data/lib/measures/SetCOPforTwoSpeedDXCoolingUnits/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusInfiltrationFlowRatePerFloorArea/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusLightObjectsLPD/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusLightObjectsLPD/measure.rb +2 -32
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/LICENSE.md +7 -21
- data/lib/measures/SetEnergyPlusMinimumOutdoorAirFlowRate/measure.rb +2 -32
- data/lib/measures/SetGasBurnerEfficiency/LICENSE.md +7 -21
- data/lib/measures/SetGasBurnerEfficiency/measure.rb +2 -32
- data/lib/measures/SetLifecycleCostParameters/LICENSE.md +7 -21
- data/lib/measures/SetLifecycleCostParameters/measure.rb +2 -32
- data/lib/measures/SetLightingLoadsByLPD/LICENSE.md +7 -21
- data/lib/measures/SetLightingLoadsByLPD/measure.rb +2 -32
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/LICENSE.md +7 -21
- data/lib/measures/SetSpaceInfiltrationByExteriorSurfaceArea/measure.rb +2 -32
- data/lib/measures/SetThermostatSchedules/LICENSE.md +7 -21
- data/lib/measures/SetThermostatSchedules/measure.rb +2 -32
- data/lib/measures/ShiftScheduleProfileTime/LICENSE.md +7 -21
- data/lib/measures/ShiftScheduleProfileTime/measure.rb +2 -32
- data/lib/measures/SwapLightsDefinition/LICENSE.md +7 -21
- data/lib/measures/SwapLightsDefinition/measure.rb +2 -32
- data/lib/measures/UnmetLoadHoursTroubleshooting/LICENSE.md +7 -21
- data/lib/measures/UnmetLoadHoursTroubleshooting/measure.rb +2 -32
- data/lib/measures/VentilationQAQC/LICENSE.md +7 -21
- data/lib/measures/VentilationQAQC/measure.rb +2 -32
- data/lib/measures/XcelEDAReportingandQAQC/LICENSE.md +13 -0
- data/lib/measures/XcelEDAReportingandQAQC/README.md +26 -0
- data/lib/measures/XcelEDAReportingandQAQC/README.md.erb +42 -0
- data/lib/measures/XcelEDAReportingandQAQC/measure.rb +201 -0
- data/lib/measures/XcelEDAReportingandQAQC/measure.xml +116 -0
- data/lib/measures/{generic_qaqc → XcelEDAReportingandQAQC}/resources/CreateResults.rb +51 -50
- data/lib/measures/XcelEDAReportingandQAQC/resources/EUI.rb +53 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/EndUseBreakdown.rb +88 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/FuelSwap.rb +275 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/PeakHeatCoolMonth.rb +191 -0
- data/lib/measures/XcelEDAReportingandQAQC/resources/UnmetHrs.rb +45 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/LICENSE.md +13 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md +40 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/README.md.erb +42 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.rb +367 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/measure.xml +309 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Commercial.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Interruptible Industrial G.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Large CG.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Commercial.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Firm.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Gas Interruptible.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Primary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General Low Load Factor.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Secondary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Non-Xcel Transmission General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Primary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential Gas.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Residential General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General Low Load Factor.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary General.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Secondary Photovoltaic Time-of-Use.idf +95 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Small CG.idf +32 -0
- data/lib/measures/XcelEDATariffSelectionandModelSetup/resources/Transmission General.idf +95 -0
- data/lib/measures/ZoneReport/LICENSE.md +7 -21
- data/lib/measures/ZoneReport/measure.rb +2 -32
- data/lib/measures/add_ems_emissions_reporting/LICENSE.md +7 -21
- data/lib/measures/add_ems_emissions_reporting/measure.rb +2 -32
- data/lib/measures/add_ems_to_control_ev_charging/LICENSE.md +7 -21
- data/lib/measures/add_ems_to_control_ev_charging/measure.rb +2 -32
- data/lib/measures/add_ev_load/LICENSE.md +7 -21
- data/lib/measures/add_ev_load/measure.rb +2 -32
- data/lib/measures/add_rooftop_pv/LICENSE.md +7 -21
- data/lib/measures/add_rooftop_pv/measure.rb +2 -32
- data/lib/measures/add_zone_mixing_object/LICENSE.md +7 -21
- data/lib/measures/add_zone_mixing_object/measure.rb +2 -32
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/LICENSE.md +7 -21
- data/lib/measures/add_zone_ventilation_design_flow_rate_object/measure.rb +2 -32
- data/lib/measures/air_wall_zone_mixing/LICENSE.md +7 -21
- data/lib/measures/air_wall_zone_mixing/measure.rb +2 -32
- data/lib/measures/create_csv_output/LICENSE.md +13 -0
- data/lib/measures/create_csv_output/README.md +36 -0
- data/lib/measures/create_csv_output/README.md.erb +45 -0
- data/lib/measures/create_csv_output/docs/.gitkeep +0 -0
- data/lib/measures/create_csv_output/measure.rb +235 -0
- data/lib/measures/create_csv_output/measure.xml +124 -0
- data/lib/measures/create_csv_output/resources/report.html.in +13 -0
- data/lib/measures/envelope_and_internal_load_breakdown/LICENSE.md +7 -21
- data/lib/measures/envelope_and_internal_load_breakdown/measure.rb +2 -32
- data/lib/measures/envelope_and_internal_load_breakdown/resources/os_lib_reporting_envelope_and_internal_loads_breakdown.rb +2 -32
- data/lib/measures/envelope_and_internal_load_breakdown/resources/report.html.erb +6 -32
- data/lib/measures/example_report/LICENSE.md +7 -21
- data/lib/measures/example_report/measure.rb +2 -32
- data/lib/measures/example_report/resources/os_lib_reporting_example.rb +2 -32
- data/lib/measures/example_report/resources/report.html.erb +6 -32
- data/lib/measures/gem_env_report/LICENSE.md +7 -21
- data/lib/measures/gem_env_report/measure.rb +2 -32
- data/lib/measures/gem_env_report/resources/gem_env_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/openstudio_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/run_gem_env_info.rb +2 -32
- data/lib/measures/gem_env_report/resources/run_openstudio_info.rb +2 -32
- data/lib/measures/generic_qaqc/LICENSE.md +7 -21
- data/lib/measures/generic_qaqc/measure.rb +2 -32
- data/lib/measures/generic_qaqc/measure.xml +8 -14
- data/lib/measures/generic_qaqc/resources/check_air_sys_temps.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_calibration.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_cond_zns.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_domestic_hot_water.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_envelope_conductance.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_eui_by_end_use.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_eui_reasonableness.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_fan_pwr.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_internal_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_capacity.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_efficiency.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_part_load_eff.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_mech_sys_type.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_part_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_placeholder.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plant_cap.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plant_temps.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_plenum_loads.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_pump_pwr.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_sch_coord.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_schedules.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_simultaneous_heating_and_cooling.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_supply_air_and_thermostat_temp_difference.rb +2 -32
- data/lib/measures/generic_qaqc/resources/check_weather_files.rb +2 -32
- data/lib/measures/generic_qaqc/resources/os_lib_reporting_qaqc.rb +2 -32
- data/lib/measures/generic_qaqc/resources/report.html.erb +6 -32
- data/lib/measures/get_site_from_building_component_library/LICENSE.md +7 -21
- data/lib/measures/get_site_from_building_component_library/measure.rb +2 -32
- data/lib/measures/hvac_psychrometric_chart/LICENSE.md +7 -21
- data/lib/measures/hvac_psychrometric_chart/measure.rb +2 -32
- data/lib/measures/hvac_psychrometric_chart/resources/report.html.erb +6 -32
- data/lib/measures/inject_idf_objects/LICENSE.md +7 -21
- data/lib/measures/inject_idf_objects/measure.rb +2 -32
- data/lib/measures/openstudio_results/LICENSE.md +7 -21
- data/lib/measures/openstudio_results/measure.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirConditionerVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVAC.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatCoolVAVChangeoverBypass.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAir.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirLoopHVACUnitarySystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalDualDuctVAV.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeCooledBeam.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeFourPipeInduction.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctConstantVolumeReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctParallelPIUReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctSeriesPIUReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctUncontrolled.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolNoReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVHeatAndCoolReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVNoReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.AirTerminalSingleDuctVAVReheat.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.BoilerHotWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.BoilerSteam.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorption.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerAbsorptionIndirect.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerElectricEIR.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ChillerHeaterPerformanceElectricEIR.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXMultiSpeedStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXTwoStageWithHumidityControlMode.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingDXVariableSpeedSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilCoolingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXMultiSpeedStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDXVariableSpeedSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingDesuperheater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGas.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStage.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingGasMultiStageStageData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboard.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterBaseboardRadiant.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFit.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilHeatingWaterToAirHeatPumpVariableSpeedEquationFitSpeedData.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilPerformanceDXCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingDXHeatExchangerAssisted.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilSystemCoolingWaterHeatExchangerAssisted.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingAirToWaterHeatPumpWrapped.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoilWaterHeatingDesuperheater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ControllerOutdoorAir.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.CoolingTowerVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.DistrictCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.DistrictHeating.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterLookUpTable.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterInverterSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageConverter.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ElectricLoadCenterStorageSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerDirectResearchSpecial.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeCoolerIndirectResearchSpecial.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.EvaporativeFluidCoolerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanConstantVolume.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanOnOff.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanVariableVolume.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FanZoneExhaust.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerSingleSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.FluidCoolerTwoSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellElectricalStorage.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellInverter.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorFuelCellPowerModule.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbine.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.GeneratorMicroTurbineHeatRecovery.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HVACComponent.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsConstantSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeaderedPumpsVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerAirToAirSensibleAndLatent.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatExchangerFluidToFluid.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitCooling.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HeatPumpWaterToWaterEquationFitHeating.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.HumidifierSteamElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.Model.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ModelObject.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PhotovoltaicPerformanceSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PlantComponentTemperatureSource.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PlantLoop.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PumpConstantSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.PumpVariableSpeed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSecondarySystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.RefrigerationTranscriticalSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SizingSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorFlatPlatePhotovoltaicThermal.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.SolarCollectorPerformancePhotovoltaicThermalSimple.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ThermalStorageChilledWaterStratified.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterHeatPumpWrappedCondenser.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterMixed.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.WaterHeaterStratified.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardConvectiveWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveElectric.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACBaseboardRadiantConvectiveWater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACEnergyRecoveryVentilator.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACFourPipeFanCoil.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACHighTemperatureRadiant.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACIdealLoadsAirSystem.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantConstFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACLowTempRadiantVarFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalAirConditioner.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACPackagedTerminalHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACTerminalUnitVariableRefrigerantFlow.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitHeater.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACUnitVentilator.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneHVACWaterToAirHeatPump.rb +2 -32
- data/lib/measures/openstudio_results/resources/Siz.ZoneVentilationDesignFlowRate.rb +2 -32
- data/lib/measures/openstudio_results/resources/os_lib_reporting.rb +2 -32
- data/lib/measures/openstudio_results/resources/report.html.erb +6 -32
- data/lib/measures/remove_orphan_objects_and_unused_resources/LICENSE.md +7 -21
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.rb +12 -50
- data/lib/measures/remove_orphan_objects_and_unused_resources/measure.xml +9 -9
- data/lib/measures/set_electric_equipment_loads_by_epd/LICENSE.md +7 -21
- data/lib/measures/set_electric_equipment_loads_by_epd/measure.rb +2 -32
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/LICENSE.md +7 -21
- data/lib/measures/set_exterior_walls_and_floors_to_adiabatic/measure.rb +2 -32
- data/lib/measures/set_run_period/LICENSE.md +7 -21
- data/lib/measures/set_run_period/measure.rb +2 -32
- data/lib/measures/set_run_period/measure.xml +2 -2
- data/lib/measures/set_space_infiltration_per_exterior_area/LICENSE.md +7 -21
- data/lib/measures/set_space_infiltration_per_exterior_area/measure.rb +2 -32
- data/lib/measures/shadow_calculation/LICENSE.md +13 -0
- data/lib/measures/shadow_calculation/README.md +80 -0
- data/lib/measures/shadow_calculation/README.md.erb +42 -0
- data/lib/measures/shadow_calculation/measure.rb +188 -0
- data/lib/measures/shadow_calculation/measure.xml +180 -0
- data/lib/measures/tariff_selection_block/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_block/measure.rb +2 -32
- data/lib/measures/tariff_selection_flat/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_flat/measure.rb +2 -32
- data/lib/measures/tariff_selection_generic/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_generic/measure.rb +2 -32
- data/lib/measures/tariff_selection_time_and_date_dependant/LICENSE.md +7 -21
- data/lib/measures/tariff_selection_time_and_date_dependant/measure.rb +2 -32
- data/lib/measures/view_data/LICENSE.md +7 -21
- data/lib/measures/view_data/measure.rb +2 -32
- data/lib/measures/view_data/resources/va3c.rb +2 -32
- data/lib/measures/view_model/LICENSE.md +7 -21
- data/lib/measures/view_model/measure.rb +2 -32
- data/lib/measures/view_model/resources/va3c.rb +2 -32
- data/lib/openstudio/common_measures/extension.rb +2 -32
- data/lib/openstudio/common_measures/version.rb +3 -33
- data/lib/openstudio/common_measures.rb +2 -32
- data/lib/openstudio-common-measures.rb +2 -32
- data/openstudio-common-measures.gemspec +2 -2
- metadata +69 -8
@@ -0,0 +1,275 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
# what does xcel want to call water-to-water heat pump - Drew -> electric
|
7
|
+
# don't forget absorbtion powered chillers eventually
|
8
|
+
# what about service water heating? you can have non-connected boilers -> try to pick up changes in boilers
|
9
|
+
# preheat and precool coils on OA system
|
10
|
+
# not considered fuel switching if going from no fuel -> some fuel
|
11
|
+
|
12
|
+
# heating & cooling primary fuel swap
|
13
|
+
def heat_cool_fuel_swap_check(base_model, base_sql, prop_model, prop_sql)
|
14
|
+
heat_cool_fuel_swap_check = Check.new
|
15
|
+
heat_cool_fuel_swap_check.name = 'Fuel Swap Check'
|
16
|
+
heat_cool_fuel_swap_check.category = 'Xcel EDA'
|
17
|
+
heat_cool_fuel_swap_check.description = 'Check that the baseline and the design alternative use the same fuels.'
|
18
|
+
# make a hash to hold the results
|
19
|
+
zone_fuels = Hash.new { |h, k| h[k] = {} }
|
20
|
+
# get the zones from both models
|
21
|
+
baseline_zones = base_model.getThermalZones
|
22
|
+
proposed_zones = prop_model.getThermalZones
|
23
|
+
# get zone names from both models. will be used as basis of fuel comparison
|
24
|
+
baseline_zone_names = []
|
25
|
+
proposed_zone_names = []
|
26
|
+
# make arrays of the zone names from each model
|
27
|
+
baseline_zones.each do |baseline_zone|
|
28
|
+
baseline_zone_names << baseline_zone.name.get
|
29
|
+
end
|
30
|
+
proposed_zones.each do |proposed_zone|
|
31
|
+
proposed_zone_names << proposed_zone.name.get
|
32
|
+
end
|
33
|
+
# output the sorted zone name lists
|
34
|
+
debug_puts('**baseline**')
|
35
|
+
debug_puts(baseline_zone_names.sort)
|
36
|
+
debug_puts('**proposed**')
|
37
|
+
debug_puts(proposed_zone_names.sort)
|
38
|
+
|
39
|
+
# check the heating fuel type of a plant loop
|
40
|
+
def plant_loop_heating_fuel(plant_loop)
|
41
|
+
debug_puts(" looking for plant loop heating fuel for #{plant_loop.name}")
|
42
|
+
# create an array to hold all the heating fuels on the plant loop
|
43
|
+
plant_loop_heating_fuels = []
|
44
|
+
# loop throug all the supply components and check heating fuel for each one
|
45
|
+
plant_loop.supplyComponents.each do |supply_component|
|
46
|
+
if supply_component.to_DistrictHeating.empty? == false
|
47
|
+
plant_loop_heating_fuels << 'District Heating'
|
48
|
+
elsif supply_component.to_BoilerHotWater.empty? == false
|
49
|
+
boiler_hot_water = supply_component.to_BoilerHotWater.get
|
50
|
+
plant_loop_heating_fuels << boiler_hot_water.fuelType
|
51
|
+
end
|
52
|
+
end
|
53
|
+
return plant_loop_heating_fuels.uniq
|
54
|
+
end
|
55
|
+
|
56
|
+
# check the cooling fuel type of a plant loop
|
57
|
+
def plant_loop_cooling_fuel(plant_loop)
|
58
|
+
debug_puts(" looking for plant loop heating fuel for #{plant_loop.name}")
|
59
|
+
# create an array to hold all the heating fuels on the plant loop
|
60
|
+
plant_loop_cooling_fuels = []
|
61
|
+
# loop throug all the supply components and check heating fuel for each one
|
62
|
+
plant_loop.supplyComponents.each do |supply_component|
|
63
|
+
if supply_component.to_DistrictCooling.empty? == false
|
64
|
+
plant_loop_cooling_fuels << 'District Cooling'
|
65
|
+
elsif supply_component.to_ChillerElectricEIR.empty? == false
|
66
|
+
plant_loop_cooling_fuels << 'Electricity'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
return plant_loop_cooling_fuels.uniq
|
70
|
+
end
|
71
|
+
|
72
|
+
# check the heating fuel type of a reheat terminal
|
73
|
+
def reheat_terminal_heating_fuel(reheat_terminal)
|
74
|
+
debug_puts(" looking for reheat terminal heating fuel for #{reheat_terminal.name}")
|
75
|
+
# create an array to hold all the heating fuels in the terminal
|
76
|
+
reheat_terminal_heating_fuels = []
|
77
|
+
# get the reheat coil
|
78
|
+
heating_coil = reheat_terminal.reheatCoil
|
79
|
+
if heating_coil.to_CoilHeatingDXSingleSpeed.empty? == false
|
80
|
+
reheat_terminal_heating_fuels += get_heating_coil_heating_fuel(heating_coil)
|
81
|
+
elsif heating_coil.to_CoilHeatingElectric.empty? == false
|
82
|
+
reheat_terminal_heating_fuels += get_heating_coil_heating_fuel(heating_coil)
|
83
|
+
elsif heating_coil.to_CoilHeatingGas.empty? == false
|
84
|
+
reheat_terminal_heating_fuels += get_heating_coil_heating_fuel(heating_coil)
|
85
|
+
elsif heating_coil.to_CoilHeatingWater.empty? == false
|
86
|
+
reheat_terminal_heating_fuels += get_heating_coil_heating_fuel(heating_coil)
|
87
|
+
end
|
88
|
+
return reheat_terminal_heating_fuels.uniq
|
89
|
+
end
|
90
|
+
|
91
|
+
# check the heating fuel type of a heating coil
|
92
|
+
def get_heating_coil_heating_fuel(heating_coil)
|
93
|
+
debug_puts(" looking for heating coil heating fuel for #{heating_coil.name}")
|
94
|
+
# create an array to hold all the heating fuels in the terminal
|
95
|
+
heating_coil_heating_fuels = []
|
96
|
+
# get the reheat coil
|
97
|
+
if heating_coil.to_CoilHeatingDXSingleSpeed.empty? == false
|
98
|
+
heating_coil_heating_fuels << 'Electricity'
|
99
|
+
elsif heating_coil.to_CoilHeatingElectric.empty? == false
|
100
|
+
heating_coil_heating_fuels << 'Electricity'
|
101
|
+
elsif heating_coil.to_CoilHeatingGas.empty? == false
|
102
|
+
heating_coil_heating_fuels << 'Natural Gas'
|
103
|
+
elsif heating_coil.to_CoilHeatingWater.empty? == false
|
104
|
+
# need to check what the heating fuel for the plant loop is
|
105
|
+
heating_coil = heating_coil.to_CoilHeatingWater.get
|
106
|
+
plant_loop = heating_coil.plantLoop.get
|
107
|
+
reheat_coil_fuels = plant_loop_heating_fuel(plant_loop)
|
108
|
+
heating_coil_heating_fuels += reheat_coil_fuels
|
109
|
+
end
|
110
|
+
return heating_coil_heating_fuels
|
111
|
+
end
|
112
|
+
|
113
|
+
# check the cooling fuel type of a cooling coil
|
114
|
+
def get_cooling_coil_cooling_fuel(cooling_coil)
|
115
|
+
debug_puts(" looking for cooling coil cooling fuel for #{cooling_coil.name}")
|
116
|
+
# create an array to hold all the heating fuels in the terminal
|
117
|
+
cooling_coil_cooling_fuels = []
|
118
|
+
if cooling_coil.to_CoilCoolingDXSingleSpeed.empty? == false
|
119
|
+
cooling_coil_cooling_fuels << 'Electricity'
|
120
|
+
elsif cooling_coil.to_CoilCoolingDXTwoSpeed.empty? == false
|
121
|
+
cooling_coil_cooling_fuels << 'Electricity'
|
122
|
+
elsif cooling_coil.to_EvaporativeCoolerDirectResearchSpecial.empty? == false
|
123
|
+
cooling_coil_cooling_fuels << 'Electricity'
|
124
|
+
elsif cooling_coil.to_CoilCoolingWater.empty? == false
|
125
|
+
# need to check what the cooling fuel for the plant loop is
|
126
|
+
cooling_coil = cooling_coil.to_CoilCoolingWater.get
|
127
|
+
plant_loop = cooling_coil.plantLoop.get
|
128
|
+
cooling_coil_cooling_fuels += plant_loop_cooling_fuel(plant_loop)
|
129
|
+
end
|
130
|
+
return cooling_coil_cooling_fuels
|
131
|
+
end
|
132
|
+
|
133
|
+
# check the heating fuels for a zone
|
134
|
+
def get_zone_heating_fuels(zone)
|
135
|
+
# create an array to hold the results
|
136
|
+
equipment_heating_fuels = []
|
137
|
+
zone.equipment.each do |equipment|
|
138
|
+
# TODO: Enumerable and code blocks and collect or select methods
|
139
|
+
debug_puts(" #{equipment.name}")
|
140
|
+
if equipment.to_AirTerminalSingleDuctParallelPIUReheat.empty? == false
|
141
|
+
terminal = equipment.to_AirTerminalSingleDuctParallelPIUReheat.get
|
142
|
+
equipment_heating_fuels += reheat_terminal_heating_fuel(terminal)
|
143
|
+
elsif equipment.to_AirTerminalSingleDuctVAVReheat.empty? == false
|
144
|
+
terminal = equipment.to_AirTerminalSingleDuctVAVReheat.get
|
145
|
+
equipment_heating_fuels += reheat_terminal_heating_fuel(terminal)
|
146
|
+
elsif equipment.to_ZoneHVACPackagedTerminalHeatPump.empty? == false
|
147
|
+
equipment_heating_fuels << 'Electricity'
|
148
|
+
end
|
149
|
+
end
|
150
|
+
return equipment_heating_fuels.uniq.sort
|
151
|
+
end
|
152
|
+
|
153
|
+
# check the cooling fuels for a zone
|
154
|
+
def get_zone_cooling_fuels(zone)
|
155
|
+
# create an array to hold the results
|
156
|
+
equipment_cooling_fuels = []
|
157
|
+
zone.equipment.each do |equipment|
|
158
|
+
# TODO: Enumerable and code blocks and collect or select methods
|
159
|
+
debug_puts(" #{equipment.name}")
|
160
|
+
if equipment.to_ZoneHVACPackagedTerminalAirConditioner.empty? == false
|
161
|
+
equipment_cooling_fuels << 'Electricity'
|
162
|
+
end
|
163
|
+
end
|
164
|
+
return equipment_cooling_fuels.uniq.sort
|
165
|
+
end
|
166
|
+
|
167
|
+
# check the heating fuels for a zones airloop
|
168
|
+
def get_zone_airloop_heating_fuels(zone)
|
169
|
+
# create an array to hold the results
|
170
|
+
airloop_heating_fuels = []
|
171
|
+
if zone.airLoopHVAC.empty? #== false
|
172
|
+
debug_puts(' This zone is not connected to an airloop.')
|
173
|
+
return airloop_heating_fuels
|
174
|
+
else
|
175
|
+
zone.airLoopHVAC.get.supplyComponents.each do |supply_component|
|
176
|
+
if supply_component.to_CoilHeatingDXSingleSpeed.empty? == false
|
177
|
+
airloop_heating_fuels += get_heating_coil_heating_fuel(supply_component)
|
178
|
+
elsif supply_component.to_CoilHeatingElectric.empty? == false
|
179
|
+
airloop_heating_fuels += get_heating_coil_heating_fuel(supply_component)
|
180
|
+
elsif supply_component.to_CoilHeatingGas.empty? == false
|
181
|
+
airloop_heating_fuels += get_heating_coil_heating_fuel(supply_component)
|
182
|
+
elsif supply_component.to_CoilHeatingWater.empty? == false
|
183
|
+
airloop_heating_fuels += get_heating_coil_heating_fuel(supply_component)
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
return airloop_heating_fuels.uniq.sort
|
188
|
+
end
|
189
|
+
|
190
|
+
# check the cooling fuels for a zones airloop
|
191
|
+
def get_zone_airloop_cooling_fuels(zone)
|
192
|
+
# create an array to hold the results
|
193
|
+
airloop_cooling_fuels = []
|
194
|
+
if zone.airLoopHVAC.empty? #== false
|
195
|
+
debug_puts(' This zone is not connected to an airloop.')
|
196
|
+
return airloop_cooling_fuels
|
197
|
+
else
|
198
|
+
zone.airLoopHVAC.get.supplyComponents.each do |supply_component|
|
199
|
+
if supply_component.to_CoilCoolingDXSingleSpeed.empty? == false
|
200
|
+
airloop_cooling_fuels += get_cooling_coil_cooling_fuel(supply_component)
|
201
|
+
elsif supply_component.to_CoilCoolingDXTwoSpeed.empty? == false
|
202
|
+
airloop_cooling_fuels += get_cooling_coil_cooling_fuel(supply_component)
|
203
|
+
elsif supply_component.to_EvaporativeCoolerDirectResearchSpecial.empty? == false
|
204
|
+
airloop_cooling_fuels += get_cooling_coil_cooling_fuel(supply_component)
|
205
|
+
elsif supply_component.to_CoilCoolingWater.empty? == false
|
206
|
+
airloop_cooling_fuels += get_cooling_coil_cooling_fuel(supply_component)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
return airloop_cooling_fuels.uniq.sort
|
211
|
+
end
|
212
|
+
|
213
|
+
# loop through all thermal zones, comparing fuels for heating and cooling
|
214
|
+
baseline_zone_names.sort.each do |baseline_zone_name|
|
215
|
+
# first, make sure the zone exists in both models. use names to compare.
|
216
|
+
if !proposed_zone_names.include?(baseline_zone_name)
|
217
|
+
heat_cool_fuel_swap_check.add_flag(Flag.new($eda, "The zone called #{baseline_zone_name} exists in the baseline model, but not the proposed model, therfore the check for switching of primary heating and cooling fuels could not be run for this zone"))
|
218
|
+
debug_puts "The zone called #{baseline_zone_name} exists in the baseline model, but not the proposed model, therfore the check for switching of primary heating and cooling fuels could not be run for this zone"
|
219
|
+
next
|
220
|
+
end
|
221
|
+
debug_puts('****')
|
222
|
+
debug_puts("Zone name = #{baseline_zone_name}")
|
223
|
+
# default heating and cooling sources to "Unknown" for all zones
|
224
|
+
baseline_zone_hvac_heating = 'Unknown'
|
225
|
+
baseline_zone_hvac_cooling = 'Unknown'
|
226
|
+
baseline_airloop_heating = 'Unknown'
|
227
|
+
baseline_airloop_cooling = 'Unknown'
|
228
|
+
proposed_zone_hvac_heating = 'Unknown'
|
229
|
+
proposed_zone_hvac_cooling = 'Unknown'
|
230
|
+
proposed_airloop_heating = 'Unknown'
|
231
|
+
proposed_airloop_cooling = 'Unknown'
|
232
|
+
# since zone exists in both models, get each zone by name
|
233
|
+
baseline_zone = base_model.getObjectsByName(baseline_zone_name)[0].to_ThermalZone.get
|
234
|
+
proposed_zone = prop_model.getObjectsByName(baseline_zone_name)[0].to_ThermalZone.get
|
235
|
+
|
236
|
+
# check the zone hvac heating fuel(s)
|
237
|
+
debug_puts("checking the zone-level equipment's heating fuel(s)")
|
238
|
+
baseline_zone_hvac_heating = get_zone_heating_fuels(baseline_zone)
|
239
|
+
proposed_zone_hvac_heating = get_zone_heating_fuels(proposed_zone)
|
240
|
+
# throw a flag if different
|
241
|
+
if baseline_zone_hvac_heating != proposed_zone_hvac_heating
|
242
|
+
heat_cool_fuel_swap_check.add_flag(Flag.new($eda, "Zone-level heating fuel switching: zone name = #{baseline_zone_name}; baseline_zone_hvac_heating = #{baseline_zone_hvac_heating}; proposed_zone_hvac_heating = #{proposed_zone_hvac_heating}"))
|
243
|
+
end
|
244
|
+
|
245
|
+
# check the zone hvac cooling fuel(s)
|
246
|
+
debug_puts("checking the zone-level equipment's cooling fuel(s)")
|
247
|
+
baseline_zone_hvac_cooling = get_zone_cooling_fuels(baseline_zone)
|
248
|
+
proposed_zone_hvac_cooling = get_zone_cooling_fuels(proposed_zone)
|
249
|
+
# throw a flag if different
|
250
|
+
if baseline_zone_hvac_cooling != proposed_zone_hvac_cooling
|
251
|
+
heat_cool_fuel_swap_check.add_flag(Flag.new($eda, "Zone-level cooling fuel switching: zone name = #{baseline_zone_name}; baseline_zone_hvac_cooling = #{baseline_zone_hvac_cooling}; proposed_zone_hvac_cooling = #{proposed_zone_hvac_cooling}"))
|
252
|
+
end
|
253
|
+
|
254
|
+
# check the zone airloop heating fuel(s)
|
255
|
+
debug_puts("checking the zone's airloop's heating fuel(s)")
|
256
|
+
baseline_airloop_heating = get_zone_airloop_heating_fuels(baseline_zone)
|
257
|
+
proposed_airloop_heating = get_zone_airloop_heating_fuels(proposed_zone)
|
258
|
+
# throw a flag if different
|
259
|
+
if baseline_airloop_heating != proposed_airloop_heating
|
260
|
+
heat_cool_fuel_swap_check.add_flag(Flag.new($eda, "Airloop heating fuel switching: zone name = #{baseline_zone_name}; baseline_airloop_heating = #{baseline_airloop_heating}; proposed_airloop_heating = #{proposed_airloop_heating}"))
|
261
|
+
end
|
262
|
+
|
263
|
+
# check the zone airloop cooling fuel(s)
|
264
|
+
debug_puts("checking the zone's airloop's cooling fuel(s)")
|
265
|
+
baseline_airloop_cooling = get_zone_airloop_cooling_fuels(baseline_zone)
|
266
|
+
proposed_airloop_cooling = get_zone_airloop_cooling_fuels(proposed_zone)
|
267
|
+
# throw a flag if different
|
268
|
+
if baseline_airloop_cooling != proposed_airloop_cooling
|
269
|
+
heat_cool_fuel_swap_check.add_flag(Flag.new($eda, "Airloop cooling fuel switching: zone name = #{baseline_zone_name}; baseline_airloop_cooling = #{baseline_airloop_cooling}; proposed_airloop_cooling = #{proposed_airloop_cooling}"))
|
270
|
+
end
|
271
|
+
end
|
272
|
+
debug_puts heat_cool_fuel_swap_check.inspect
|
273
|
+
|
274
|
+
return heat_cool_fuel_swap_check
|
275
|
+
end
|
@@ -0,0 +1,191 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
|
7
|
+
# for cooling electricity, include heat rejection electricity
|
8
|
+
# should normalize by # days/month - Drew -> yes
|
9
|
+
|
10
|
+
# peak heating and cooling months
|
11
|
+
def peak_heat_cool_mo_check
|
12
|
+
# summary of the check
|
13
|
+
check_elems = OpenStudio::AttributeVector.new
|
14
|
+
check_elems << OpenStudio::Attribute.new('name', 'Peak Heating and Cooling Month Check')
|
15
|
+
check_elems << OpenStudio::Attribute.new('category', 'Xcel EDA')
|
16
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check that the heating and cooling energy peak during the expected time of year')
|
17
|
+
|
18
|
+
# heating
|
19
|
+
heating_electricity_peak_energy = 0
|
20
|
+
heating_gas_peak_energy = 0
|
21
|
+
heating_other_fuel_peak_energy = 0
|
22
|
+
heating_district_cooling_peak_energy = 0
|
23
|
+
heating_district_heating_peak_energy = 0
|
24
|
+
# cooling
|
25
|
+
cooling_electricity_peak_energy = 0
|
26
|
+
cooling_gas_peak_energy = 0
|
27
|
+
cooling_other_fuel_peak_energy = 0
|
28
|
+
cooling_district_cooling_peak_energy = 0
|
29
|
+
cooling_district_heating_peak_energy = 0
|
30
|
+
|
31
|
+
# heating
|
32
|
+
heating_electricity_peak_mo = 'NotAMonth'.to_MonthOfYear
|
33
|
+
heating_gas_peak_mo = 'NotAMonth'.to_MonthOfYear
|
34
|
+
heating_other_fuel_peak_mo = 'NotAMonth'.to_MonthOfYear
|
35
|
+
heating_district_cooling_peak_mo = 'NotAMonth'.to_MonthOfYear
|
36
|
+
heating_district_heating_peak_mo = 'NotAMonth'.to_MonthOfYear
|
37
|
+
# cooling
|
38
|
+
cooling_electricity_peak_mo = 'NotAMonth'.to_MonthOfYear
|
39
|
+
cooling_gas_peak_mo = 'NotAMonth'.to_MonthOfYear
|
40
|
+
cooling_other_fuel_peak_mo = 'NotAMonth'.to_MonthOfYear
|
41
|
+
cooling_district_cooling_peak_mo = 'NotAMonth'.to_MonthOfYear
|
42
|
+
cooling_district_heating_peak_mo = 'NotAMonth'.to_MonthOfYear
|
43
|
+
|
44
|
+
# loop through all of the months, finding the peak month for
|
45
|
+
# heating and cooling for each fuel type
|
46
|
+
(1..12).each do |month|
|
47
|
+
month = OpenStudio::MonthOfYear.new(month)
|
48
|
+
heating = 'Heating'.to_EndUseCategoryType
|
49
|
+
cooling = 'Cooling'.to_EndUseCategoryType
|
50
|
+
electricity = 'Electricity'.to_EndUseFuelType
|
51
|
+
gas = 'Gas'.to_EndUseFuelType
|
52
|
+
other_fuel = 'OtherFuel_1'.to_EndUseFuelType
|
53
|
+
district_cooling = 'DistrictCooling'.to_EndUseFuelType
|
54
|
+
district_heating = 'DistrictHeating'.to_EndUseFuelType
|
55
|
+
|
56
|
+
# heating
|
57
|
+
if @sql.energyConsumptionByMonth(electricity, heating, month).is_initialized
|
58
|
+
if @sql.energyConsumptionByMonth(electricity, heating, month).get > heating_electricity_peak_energy
|
59
|
+
heating_electricity_peak_energy = @sql.energyConsumptionByMonth(electricity, heating, month).get
|
60
|
+
heating_electricity_peak_mo = month
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
if @sql.energyConsumptionByMonth(gas, heating, month).is_initialized
|
65
|
+
if @sql.energyConsumptionByMonth(gas, heating, month).get > heating_gas_peak_energy
|
66
|
+
heating_gas_peak_energy = @sql.energyConsumptionByMonth(gas, heating, month).get
|
67
|
+
heating_gas_peak_mo = month
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
if @sql.energyConsumptionByMonth(other_fuel, heating, month).is_initialized
|
72
|
+
if @sql.energyConsumptionByMonth(other_fuel, heating, month).get > heating_other_fuel_peak_energy
|
73
|
+
heating_other_fuel_peak_energy = @sql.energyConsumptionByMonth(other_fuel, heating, month).get
|
74
|
+
heating_other_fuel_peak_mo = month
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
if @sql.energyConsumptionByMonth(district_cooling, heating, month).is_initialized
|
79
|
+
if @sql.energyConsumptionByMonth(district_cooling, heating, month).get > heating_district_cooling_peak_energy
|
80
|
+
heating_district_cooling_peak_energy = @sql.energyConsumptionByMonth(district_cooling, heating, month).get
|
81
|
+
heating_district_cooling_peak_mo = month
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
if @sql.energyConsumptionByMonth(district_heating, heating, month).is_initialized
|
86
|
+
if @sql.energyConsumptionByMonth(district_heating, heating, month).get > heating_district_heating_peak_energy
|
87
|
+
heating_district_heating_peak_energy = @sql.energyConsumptionByMonth(district_heating, heating, month).get
|
88
|
+
heating_district_heating_peak_mo = month
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# cooling
|
93
|
+
if @sql.energyConsumptionByMonth(electricity, cooling, month).is_initialized
|
94
|
+
if @sql.energyConsumptionByMonth(electricity, cooling, month).get > cooling_electricity_peak_energy
|
95
|
+
cooling_electricity_peak_energy = @sql.energyConsumptionByMonth(electricity, cooling, month).get
|
96
|
+
cooling_electricity_peak_mo = month
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
if @sql.energyConsumptionByMonth(gas, cooling, month).is_initialized
|
101
|
+
if @sql.energyConsumptionByMonth(gas, cooling, month).get > cooling_gas_peak_energy
|
102
|
+
cooling_gas_peak_energy = @sql.energyConsumptionByMonth(gas, cooling, month).get
|
103
|
+
cooling_gas_peak_mo = month
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
if @sql.energyConsumptionByMonth(other_fuel, cooling, month).is_initialized
|
108
|
+
if @sql.energyConsumptionByMonth(other_fuel, cooling, month).get > cooling_other_fuel_peak_energy
|
109
|
+
cooling_other_fuel_peak_energy = @sql.energyConsumptionByMonth(other_fuel, cooling, month).get
|
110
|
+
cooling_other_fuel_peak_mo = month
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
if @sql.energyConsumptionByMonth(district_cooling, cooling, month).is_initialized
|
115
|
+
if @sql.energyConsumptionByMonth(district_cooling, cooling, month).get > cooling_district_cooling_peak_energy
|
116
|
+
cooling_district_cooling_peak_energy = @sql.energyConsumptionByMonth(district_cooling, cooling, month).get
|
117
|
+
cooling_district_cooling_peak_mo = month
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
if @sql.energyConsumptionByMonth(district_heating, cooling, month).is_initialized
|
122
|
+
if @sql.energyConsumptionByMonth(district_heating, cooling, month).get > cooling_district_heating_peak_energy
|
123
|
+
cooling_district_heating_peak_energy = @sql.energyConsumptionByMonth(district_heating, cooling, month).get
|
124
|
+
cooling_district_heating_peak_mo = month
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# define winter
|
130
|
+
winter = ['Dec', 'Jan', 'Feb', 'Mar', 'NotAMonth']
|
131
|
+
|
132
|
+
# define summer
|
133
|
+
summer = ['Jun', 'Jul', 'Aug', 'NotAMonth']
|
134
|
+
|
135
|
+
# peak heating should occur during winter for all fuel types
|
136
|
+
unless winter.include?(heating_electricity_peak_mo.valueName)
|
137
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak electricity consumption for heating does not occur in winter as expected; it occurs in #{heating_electricity_peak_mo.valueName}")
|
138
|
+
@runner.registerWarning("Peak electricity consumption for heating does not occur in winter as expected; it occurs in #{heating_electricity_peak_mo.valueName}")
|
139
|
+
end
|
140
|
+
|
141
|
+
unless winter.include?(heating_gas_peak_mo.valueName)
|
142
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak gas consumption for heating does not occur in winter as expected; it occurs in #{heating_gas_peak_mo.valueName}")
|
143
|
+
@runner.registerWarning("Peak gas consumption for heating does not occur in winter as expected; it occurs in #{heating_gas_peak_mo.valueName}")
|
144
|
+
end
|
145
|
+
|
146
|
+
unless winter.include?(heating_other_fuel_peak_mo.valueName)
|
147
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak other fuel consumption for heating does not occur in winter as expected; it occurs in #{heating_other_fuel_peak_mo.valueName}")
|
148
|
+
@runner.registerWarning("Peak other fuel consumption for heating does not occur in winter as expected; it occurs in #{heating_other_fuel_peak_mo.valueName}")
|
149
|
+
end
|
150
|
+
|
151
|
+
unless winter.include?(heating_district_cooling_peak_mo.valueName)
|
152
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak district cooling consumption for heating does not occur in winter as expected; it occurs in #{heating_district_cooling_peak_mo.valueName}")
|
153
|
+
@runner.registerWarning("Peak district cooling consumption for heating does not occur in winter as expected; it occurs in #{heating_district_cooling_peak_mo.valueName}")
|
154
|
+
end
|
155
|
+
|
156
|
+
unless winter.include?(heating_district_heating_peak_mo.valueName)
|
157
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak district heating consumption for heating does not occur in winter as expected; it occurs in #{heating_district_heating_peak_mo.valueName}")
|
158
|
+
@runner.registerWarning("Peak district heating consumption for heating does not occur in winter as expected; it occurs in #{heating_district_heating_peak_mo.valueName}")
|
159
|
+
end
|
160
|
+
|
161
|
+
# peak cooling should occur during summer for all fuel types
|
162
|
+
unless summer.include?(cooling_electricity_peak_mo.valueName)
|
163
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak electricity consumption for cooling does not occur in summer as expected; it occurs in #{cooling_electricity_peak_mo.valueName}")
|
164
|
+
@runner.registerWarning("Peak electricity consumption for cooling does not occur in summer as expected; it occurs in #{cooling_electricity_peak_mo.valueName}")
|
165
|
+
end
|
166
|
+
|
167
|
+
unless summer.include?(cooling_gas_peak_mo.valueName)
|
168
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak gas consumption for cooling does not occur in summer as expected; it occurs in #{cooling_gas_peak_mo.valueName}")
|
169
|
+
@runner.registerWarning("Peak gas consumption for cooling does not occur in summer as expected; it occurs in #{cooling_gas_peak_mo.valueName}")
|
170
|
+
end
|
171
|
+
|
172
|
+
unless summer.include?(cooling_other_fuel_peak_mo.valueName)
|
173
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak other fuel consumption for cooling does not occur in summer as expected; it occurs in #{cooling_other_fuel_peak_mo.valueName}")
|
174
|
+
@runner.registerWarning("Peak other fuel consumption for cooling does not occur in summer as expected; it occurs in #{cooling_other_fuel_peak_mo.valueName}")
|
175
|
+
end
|
176
|
+
|
177
|
+
unless summer.include?(cooling_district_cooling_peak_mo.valueName)
|
178
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak district cooling consumption for cooling does not occur in summer as expected; it occurs in #{cooling_district_cooling_peak_mo.valueName}")
|
179
|
+
@runner.registerWarning("Peak district cooling consumption for cooling does not occur in summer as expected; it occurs in #{cooling_district_cooling_peak_mo.valueName}")
|
180
|
+
end
|
181
|
+
|
182
|
+
unless summer.include?(cooling_district_heating_peak_mo.valueName)
|
183
|
+
check_elems << OpenStudio::Attribute.new('flag', "Peak district heating consumption for cooling does not occur in summer as expected; it occurs in #{cooling_district_heating_peak_mo.valueName}")
|
184
|
+
@runner.registerWarning("Peak district heating consumption for cooling does not occur in summer as expected; it occurs in #{cooling_district_heating_peak_mo.valueName}")
|
185
|
+
end
|
186
|
+
|
187
|
+
check_elem = OpenStudio::Attribute.new('check', check_elems)
|
188
|
+
|
189
|
+
return check_elem
|
190
|
+
end
|
191
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# *******************************************************************************
|
2
|
+
# OpenStudio(R), Copyright (c) Alliance for Sustainable Energy, LLC.
|
3
|
+
# See also https://openstudio.net/license
|
4
|
+
# *******************************************************************************
|
5
|
+
|
6
|
+
class XcelEDAReportingandQAQC < OpenStudio::Measure::ReportingMeasure
|
7
|
+
# have the xcel protocol set the reporting tolerance for deltaF (DOE2 has 0.55C tolerance - Brent suggests 0.55C for E+ too)
|
8
|
+
# check the setpoints in the protocol
|
9
|
+
# could we do a custom report to show the thermostat schedules? during occupied and unoccupied times
|
10
|
+
|
11
|
+
# checks the number of unmet hours in the model
|
12
|
+
def unmet_hrs_check
|
13
|
+
# summary of the check
|
14
|
+
check_elems = OpenStudio::AttributeVector.new
|
15
|
+
check_elems << OpenStudio::Attribute.new('name', 'Unmet Hours Check')
|
16
|
+
check_elems << OpenStudio::Attribute.new('category', 'General')
|
17
|
+
check_elems << OpenStudio::Attribute.new('description', 'Check that the heating and cooling systems are meeting their setpoints for the entire simulation period')
|
18
|
+
|
19
|
+
# setup the queries
|
20
|
+
heating_setpoint_unmet_query = "SELECT Value FROM TabularDataWithStrings WHERE (ReportName='SystemSummary') AND (ReportForString='Entire Facility') AND (TableName='Time Setpoint Not Met') AND (RowName = 'Facility') AND (ColumnName='During Heating')"
|
21
|
+
cooling_setpoint_unmet_query = "SELECT Value FROM TabularDataWithStrings WHERE (ReportName='SystemSummary') AND (ReportForString='Entire Facility') AND (TableName='Time Setpoint Not Met') AND (RowName = 'Facility') AND (ColumnName='During Cooling')"
|
22
|
+
|
23
|
+
# get the info
|
24
|
+
heating_setpoint_unmet = @sql.execAndReturnFirstDouble(heating_setpoint_unmet_query)
|
25
|
+
cooling_setpoint_unmet = @sql.execAndReturnFirstDouble(cooling_setpoint_unmet_query)
|
26
|
+
|
27
|
+
# make sure all the data are availalbe
|
28
|
+
if heating_setpoint_unmet.empty? || cooling_setpoint_unmet.empty?
|
29
|
+
check_elems << OpenStudio::Attribute.new('flag', 'Hours heating or cooling unmet data unavailable; check not run')
|
30
|
+
@runner.registerWarning('Hours heating or cooling unmet data unavailable; check not run')
|
31
|
+
end
|
32
|
+
|
33
|
+
# aggregate heating and cooling hrs
|
34
|
+
heating_or_cooling_setpoint_unmet = heating_setpoint_unmet.get + cooling_setpoint_unmet.get
|
35
|
+
# flag if heating + cooling unmet hours > 300
|
36
|
+
if heating_or_cooling_setpoint_unmet > 300
|
37
|
+
check_elems << OpenStudio::Attribute.new('flag', "Hours heating or cooling unmet is #{heating_or_cooling_setpoint_unmet}; > the Xcel EDA limit of 300 hrs")
|
38
|
+
@runner.registerWarning("Hours heating or cooling unmet is #{heating_or_cooling_setpoint_unmet}; > the Xcel EDA limit of 300 hrs")
|
39
|
+
end
|
40
|
+
|
41
|
+
check_elem = OpenStudio::Attribute.new('check', check_elems)
|
42
|
+
|
43
|
+
return check_elem
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
OpenStudio(R), Copyright (c) 2008, 2023 Alliance for Sustainable Energy, LLC.
|
2
|
+
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
4
|
+
|
5
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
6
|
+
|
7
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
8
|
+
|
9
|
+
3. Redistribution of this software, without modification, must refer to the software by the same designation. Redistribution of a modified version of this software (i) may not refer to the modified version by the same designation, or by any confusingly similar designation, and (ii) must refer to the underlying software originally provided by Alliance as “OpenStudio®”. Except to comply with the foregoing, the term “OpenStudio®”, or any confusingly similar designation may not be used to refer to any modified version of this software or any modified version of the underlying software originally provided by Alliance without the prior written consent of Alliance.
|
10
|
+
|
11
|
+
4. The name of the copyright holder(s), any contributors, the United States Government, the United States Department of Energy, or any of their employees may not be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
|
12
|
+
|
13
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
###### (Automatically generated documentation)
|
4
|
+
|
5
|
+
# XcelEDATariffSelectionandModelSetup
|
6
|
+
|
7
|
+
## Description
|
8
|
+
|
9
|
+
|
10
|
+
## Modeler Description
|
11
|
+
|
12
|
+
|
13
|
+
## Measure Type
|
14
|
+
EnergyPlusMeasure
|
15
|
+
|
16
|
+
## Taxonomy
|
17
|
+
|
18
|
+
|
19
|
+
## Arguments
|
20
|
+
|
21
|
+
|
22
|
+
### Select an Electricity Tariff.
|
23
|
+
|
24
|
+
**Name:** elec_tar,
|
25
|
+
**Type:** Choice,
|
26
|
+
**Units:** ,
|
27
|
+
**Required:** true,
|
28
|
+
**Model Dependent:** false
|
29
|
+
|
30
|
+
### Select a Gas Tariff.
|
31
|
+
|
32
|
+
**Name:** gas_tar,
|
33
|
+
**Type:** Choice,
|
34
|
+
**Units:** ,
|
35
|
+
**Required:** true,
|
36
|
+
**Model Dependent:** false
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<%#= README.md.erb is used to auto-generate README.md. %>
|
2
|
+
<%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
|
3
|
+
###### (Automatically generated documentation)
|
4
|
+
|
5
|
+
# <%= name %>
|
6
|
+
|
7
|
+
## Description
|
8
|
+
<%= description %>
|
9
|
+
|
10
|
+
## Modeler Description
|
11
|
+
<%= modelerDescription %>
|
12
|
+
|
13
|
+
## Measure Type
|
14
|
+
<%= measureType %>
|
15
|
+
|
16
|
+
## Taxonomy
|
17
|
+
<%= taxonomy %>
|
18
|
+
|
19
|
+
## Arguments
|
20
|
+
|
21
|
+
<% arguments.each do |argument| %>
|
22
|
+
### <%= argument[:display_name] %>
|
23
|
+
<%= argument[:description] %>
|
24
|
+
**Name:** <%= argument[:name] %>,
|
25
|
+
**Type:** <%= argument[:type] %>,
|
26
|
+
**Units:** <%= argument[:units] %>,
|
27
|
+
**Required:** <%= argument[:required] %>,
|
28
|
+
**Model Dependent:** <%= argument[:model_dependent] %>
|
29
|
+
<% end %>
|
30
|
+
|
31
|
+
<% if arguments.size == 0 %>
|
32
|
+
<%= "This measure does not have any user arguments" %>
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
<% if outputs.size > 0 %>
|
36
|
+
## Outputs
|
37
|
+
<% output_names = [] %>
|
38
|
+
<% outputs.each do |output| %>
|
39
|
+
<% output_names << output[:display_name] %>
|
40
|
+
<% end %>
|
41
|
+
<%= output_names.join(", ") %>
|
42
|
+
<% end %>
|