openstudio-standards 0.8.3 → 0.8.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +30 -30
- data/data/geometry/ASHRAECourthouse.osm +22 -22
- data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
- data/data/geometry/DEER_Asm.osm +1 -1
- data/data/geometry/DEER_ECC.osm +1 -1
- data/data/geometry/DEER_EPr.osm +1 -1
- data/data/geometry/DEER_ERC.osm +1 -1
- data/data/geometry/DEER_ESe.osm +1 -1
- data/data/geometry/DEER_EUn.osm +1 -1
- data/data/geometry/DEER_Hsp.osm +1 -1
- data/data/geometry/DEER_Htl.osm +1 -1
- data/data/geometry/DEER_MBT.osm +1 -1
- data/data/geometry/DEER_MFm.osm +1 -1
- data/data/geometry/DEER_Nrs.osm +1 -1
- data/data/geometry/DEER_OfL.osm +1 -1
- data/data/geometry/DEER_OfS.osm +1 -1
- data/data/geometry/DEER_RFF.osm +1 -1
- data/data/geometry/DEER_RSD.osm +1 -1
- data/data/geometry/DEER_Rt3.osm +1 -1
- data/data/geometry/DEER_RtS.osm +1 -1
- data/data/standards/export_OpenStudio_libraries.rb +2 -3
- data/data/standards/test_performance_expected_dd_results.csv +42 -42
- data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
- data/lib/openstudio-standards/btap/activity.rb +480 -0
- data/lib/openstudio-standards/btap/attributes.rb +166 -0
- data/lib/openstudio-standards/btap/bridging.rb +561 -1402
- data/lib/openstudio-standards/btap/btap.rb +4 -2
- data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
- data/lib/openstudio-standards/btap/common_paths.rb +81 -0
- data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +52 -0
- data/lib/openstudio-standards/btap/common_resources/Constructions.csv +37 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +1270 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +2256 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +2315 -0
- data/lib/openstudio-standards/btap/common_resources/hvac_vent_ahu.csv +925 -0
- data/lib/openstudio-standards/btap/common_resources/lighting.csv +364 -0
- data/lib/openstudio-standards/btap/common_resources/lighting_sets.csv +2667 -0
- data/lib/openstudio-standards/btap/common_resources/locations.csv +75 -0
- data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/materials_hvac.csv +1686 -0
- data/lib/openstudio-standards/btap/common_resources/materials_lighting.csv +267 -0
- data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/costing/README.md +502 -0
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +469 -0
- data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +359 -0
- data/lib/openstudio-standards/btap/costing/btap_workflow.rb +117 -0
- data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +11 -0
- data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +136 -0
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +173 -0
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +354 -0
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +314 -0
- data/lib/openstudio-standards/btap/costing/dummy.epw +8768 -0
- data/lib/openstudio-standards/btap/costing/dummy.osm +5320 -0
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +215 -0
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2584 -0
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +156 -0
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +209 -0
- data/lib/openstudio-standards/btap/costing/mech_sizing.json +502 -0
- data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +42 -0
- data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +225 -0
- data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +28705 -0
- data/lib/openstudio-standards/btap/costing/nv_costing.rb +547 -0
- data/lib/openstudio-standards/btap/costing/parallel_tests.rb +92 -0
- data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +687 -0
- data/lib/openstudio-standards/btap/costing/shw_costing.rb +705 -0
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -0
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +27 -0
- data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +80 -0
- data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2616 -0
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- data/lib/openstudio-standards/constructions/modify.rb +2 -1
- data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
- data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
- data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
- data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
- data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
- data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
- data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
- data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
- data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
- data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
- data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
- data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
- data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
- data/lib/openstudio-standards/hvac/components/component.rb +39 -0
- data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
- data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
- data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
- data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
- data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
- data/lib/openstudio-standards/hvac/conversions.rb +222 -0
- data/lib/openstudio-standards/hvac/curves.rb +192 -0
- data/lib/openstudio-standards/hvac/helpers.rb +357 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
- data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
- data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
- data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
- data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
- data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
- data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
- data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
- data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
- data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
- data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
- data/lib/openstudio-standards/standards/Standards.Model.rb +45 -20
- data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
- data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +7 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
- data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
- data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +21 -37
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +68 -27
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +64 -25
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +9 -14
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +115 -112
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +637 -249
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +75 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +25 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartmentMult.osm +14272 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2015_table_c1.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +437 -437
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems.json +516 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems_including_sys5.json +588 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +489 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +18 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +48 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +35 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +34 -23
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +8 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +68 -150
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +444 -134
- data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +61 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +38 -38
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +17 -8
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +71 -71
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
- data/lib/openstudio-standards/standards/necb/README.md +343 -0
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +206 -32
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +75 -43
- data/lib/openstudio-standards/standards/necb/common/eccc_electric_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/nir_gas_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/system_types.yaml +0 -0
- data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
- data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
- data/lib/openstudio-standards/utilities/logging.rb +18 -14
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/modify.rb +2 -2
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +67 -38
- metadata +141 -50
- data/lib/openstudio-standards/hvac/components/create.rb +0 -169
- data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
|
@@ -3,41 +3,6 @@ class Standard
|
|
|
3
3
|
|
|
4
4
|
include CoilDX
|
|
5
5
|
|
|
6
|
-
# Finds capacity in W
|
|
7
|
-
#
|
|
8
|
-
# @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
|
|
9
|
-
# @param necb_ref_hp [Boolean] for compatability with NECB ruleset only.
|
|
10
|
-
# @param equipment_type [String] type of equipment that this coil object belongs to.
|
|
11
|
-
# @return [Double] capacity in W to be used for find object
|
|
12
|
-
def coil_cooling_dx_single_speed_find_capacity(coil_cooling_dx_single_speed, necb_ref_hp = false, equipment_type = nil)
|
|
13
|
-
capacity_w = nil
|
|
14
|
-
if coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.is_initialized
|
|
15
|
-
capacity_w = coil_cooling_dx_single_speed.ratedTotalCoolingCapacity.get
|
|
16
|
-
elsif coil_cooling_dx_single_speed.autosizedRatedTotalCoolingCapacity.is_initialized
|
|
17
|
-
capacity_w = coil_cooling_dx_single_speed.autosizedRatedTotalCoolingCapacity.get
|
|
18
|
-
else
|
|
19
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name} capacity is not available, cannot apply efficiency standard.")
|
|
20
|
-
return 0.0
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# If it's a PTAC or PTHP System, we need to divide the capacity by the potential zone multiplier
|
|
24
|
-
# because the COP is dependent on capacity, and the capacity should be the capacity of a single zone, not all the zones
|
|
25
|
-
if ['PTAC', 'PTHP'].include?(coil_dx_subcategory(coil_cooling_dx_single_speed)) || ['PTAC', 'PTHP'].include?(equipment_type)
|
|
26
|
-
mult = 1
|
|
27
|
-
comp = coil_cooling_dx_single_speed.containingZoneHVACComponent
|
|
28
|
-
if comp.is_initialized && comp.get.thermalZone.is_initialized
|
|
29
|
-
mult = comp.get.thermalZone.get.multiplier
|
|
30
|
-
if mult > 1
|
|
31
|
-
total_cap = capacity_w
|
|
32
|
-
capacity_w /= mult
|
|
33
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}, total capacity of #{OpenStudio.convert(total_cap, 'W', 'kBtu/hr').get.round(2)}kBTU/hr was divided by the zone multiplier of #{mult} to give #{capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get.round(2)}kBTU/hr.")
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
return capacity_w
|
|
39
|
-
end
|
|
40
|
-
|
|
41
6
|
# Finds lookup object in standards and return efficiency
|
|
42
7
|
#
|
|
43
8
|
# @param coil_cooling_dx_single_speed [OpenStudio::Model::CoilCoolingDXSingleSpeed] coil cooling dx single speed object
|
|
@@ -53,12 +18,13 @@ class Standard
|
|
|
53
18
|
equipment_type = nil
|
|
54
19
|
|
|
55
20
|
# Define database
|
|
56
|
-
if coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
21
|
+
if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
57
22
|
database = standards_data['heat_pumps']
|
|
58
23
|
else
|
|
59
24
|
database = standards_data['unitary_acs']
|
|
60
25
|
end
|
|
61
26
|
|
|
27
|
+
|
|
62
28
|
# Additional search criteria
|
|
63
29
|
if database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
|
64
30
|
(template == 'BTAP1980TO2010'))
|
|
@@ -67,7 +33,7 @@ class Standard
|
|
|
67
33
|
if ['PTAC', 'PTHP'].include?(equipment_type) && template.include?('90.1')
|
|
68
34
|
search_criteria['application'] = coil_dx_packaged_terminal_application(coil_cooling_dx_single_speed)
|
|
69
35
|
end
|
|
70
|
-
elsif !coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
36
|
+
elsif !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
71
37
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
72
38
|
end
|
|
73
39
|
end
|
|
@@ -75,7 +41,12 @@ class Standard
|
|
|
75
41
|
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
|
76
42
|
end
|
|
77
43
|
|
|
78
|
-
|
|
44
|
+
if ['PTAC', 'PTHP'].include?(equipment_type) || ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_single_speed))
|
|
45
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_single_speed)
|
|
46
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
47
|
+
end
|
|
48
|
+
# Get the capacity
|
|
49
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil_cooling_dx_single_speed, multiplier: multiplier)
|
|
79
50
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
80
51
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
81
52
|
|
|
@@ -105,7 +76,7 @@ class Standard
|
|
|
105
76
|
eer_calc_cap_btu_per_hr = 7000 if capacity_btu_per_hr < 7000
|
|
106
77
|
eer_calc_cap_btu_per_hr = 15_000 if capacity_btu_per_hr > 15_000
|
|
107
78
|
pthp_eer = pthp_eer_coeff_1 - (pthp_eer_coeff_2 * eer_calc_cap_btu_per_hr / 1000.0)
|
|
108
|
-
cop = eer_to_cop_no_fan(pthp_eer)
|
|
79
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(pthp_eer)
|
|
109
80
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{pthp_eer.round(1)}EER"
|
|
110
81
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{pthp_eer.round(1)}")
|
|
111
82
|
end
|
|
@@ -123,7 +94,7 @@ class Standard
|
|
|
123
94
|
eer_calc_cap_btu_per_hr = 7000 if capacity_btu_per_hr < 7000
|
|
124
95
|
eer_calc_cap_btu_per_hr = 15_000 if capacity_btu_per_hr > 15_000
|
|
125
96
|
ptac_eer = ptac_eer_coeff_1 - (ptac_eer_coeff_2 * eer_calc_cap_btu_per_hr / 1000.0)
|
|
126
|
-
cop = eer_to_cop_no_fan(ptac_eer)
|
|
97
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(ptac_eer)
|
|
127
98
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{ptac_eer.round(1)}EER"
|
|
128
99
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{ptac_eer.round(1)}")
|
|
129
100
|
end
|
|
@@ -151,7 +122,7 @@ class Standard
|
|
|
151
122
|
# If specified as SEER
|
|
152
123
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
153
124
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
154
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
125
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
155
126
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
156
127
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
157
128
|
end
|
|
@@ -160,7 +131,7 @@ class Standard
|
|
|
160
131
|
# TODO: assumed to be the same as SEER for now
|
|
161
132
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
|
162
133
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
|
|
163
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
134
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
164
135
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
165
136
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
166
137
|
end
|
|
@@ -168,7 +139,7 @@ class Standard
|
|
|
168
139
|
# If specified as EER
|
|
169
140
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
170
141
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
171
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
142
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
172
143
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
173
144
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
174
145
|
end
|
|
@@ -177,7 +148,7 @@ class Standard
|
|
|
177
148
|
# TODO: assumed to be the same as EER for now
|
|
178
149
|
unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
|
|
179
150
|
min_eer = ac_props['minimum_energy_efficiency_ratio_2']
|
|
180
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
151
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
181
152
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
182
153
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
183
154
|
end
|
|
@@ -185,7 +156,7 @@ class Standard
|
|
|
185
156
|
# If specific as IEER
|
|
186
157
|
if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
|
|
187
158
|
min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
|
|
188
|
-
cop = ieer_to_cop_no_fan(min_ieer)
|
|
159
|
+
cop = OpenstudioStandards::HVAC.ieer_to_cop_no_fan(min_ieer)
|
|
189
160
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
|
|
190
161
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
191
162
|
end
|
|
@@ -193,7 +164,7 @@ class Standard
|
|
|
193
164
|
# If specified as SEER
|
|
194
165
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
195
166
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
196
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
167
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
197
168
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
198
169
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
199
170
|
end
|
|
@@ -201,7 +172,7 @@ class Standard
|
|
|
201
172
|
# If specified as EER (heat pump)
|
|
202
173
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
203
174
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
204
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
175
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
205
176
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
206
177
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
207
178
|
end
|
|
@@ -222,7 +193,7 @@ class Standard
|
|
|
222
193
|
# @return [Hash] hash of coil objects
|
|
223
194
|
def coil_cooling_dx_single_speed_apply_efficiency_and_curves(coil_cooling_dx_single_speed, sql_db_vars_map, necb_ref_hp = false)
|
|
224
195
|
# Get efficiencies data depending on whether it is a unitary AC or a heat pump
|
|
225
|
-
coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
196
|
+
coil_efficiency_data = if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
226
197
|
standards_data['heat_pumps']
|
|
227
198
|
else
|
|
228
199
|
standards_data['unitary_acs']
|
|
@@ -240,7 +211,7 @@ class Standard
|
|
|
240
211
|
if ['PTAC', 'PTHP'].include?(equipment_type) && template.include?('90.1')
|
|
241
212
|
search_criteria['application'] = coil_dx_packaged_terminal_application(coil_cooling_dx_single_speed)
|
|
242
213
|
end
|
|
243
|
-
elsif !coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
214
|
+
elsif !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_single_speed)
|
|
244
215
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
245
216
|
end
|
|
246
217
|
end
|
|
@@ -249,7 +220,11 @@ class Standard
|
|
|
249
220
|
end
|
|
250
221
|
|
|
251
222
|
# Get the capacity
|
|
252
|
-
|
|
223
|
+
if ['PTAC', 'PTHP'].include?(equipment_type) || ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_single_speed))
|
|
224
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_single_speed)
|
|
225
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
226
|
+
end
|
|
227
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil_cooling_dx_single_speed, multiplier: multiplier)
|
|
253
228
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
254
229
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
255
230
|
|
|
@@ -3,24 +3,6 @@ class Standard
|
|
|
3
3
|
|
|
4
4
|
include CoilDX
|
|
5
5
|
|
|
6
|
-
# Finds capacity in W
|
|
7
|
-
#
|
|
8
|
-
# @param coil_cooling_dx_two_speed [OpenStudio::Model::CoilCoolingDXTwoSpeed] coil cooling dx two speed object
|
|
9
|
-
# @return [Double] capacity in W to be used for find object
|
|
10
|
-
def coil_cooling_dx_two_speed_find_capacity(coil_cooling_dx_two_speed)
|
|
11
|
-
capacity_w = nil
|
|
12
|
-
if coil_cooling_dx_two_speed.ratedHighSpeedTotalCoolingCapacity.is_initialized
|
|
13
|
-
capacity_w = coil_cooling_dx_two_speed.ratedHighSpeedTotalCoolingCapacity.get
|
|
14
|
-
elsif coil_cooling_dx_two_speed.autosizedRatedHighSpeedTotalCoolingCapacity.is_initialized
|
|
15
|
-
capacity_w = coil_cooling_dx_two_speed.autosizedRatedHighSpeedTotalCoolingCapacity.get
|
|
16
|
-
else
|
|
17
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{coil_cooling_dx_two_speed.name} capacity is not available, cannot apply efficiency standard.")
|
|
18
|
-
return 0.0
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
return capacity_w
|
|
22
|
-
end
|
|
23
|
-
|
|
24
6
|
# Finds lookup object in standards and return efficiency
|
|
25
7
|
#
|
|
26
8
|
# @param coil_cooling_dx_two_speed [OpenStudio::Model::CoilCoolingDXTwoSpeed] coil cooling dx two speed object
|
|
@@ -31,12 +13,9 @@ class Standard
|
|
|
31
13
|
cooling_type = search_criteria['cooling_type']
|
|
32
14
|
heating_type = search_criteria['heating_type']
|
|
33
15
|
sub_category = search_criteria['subcategory']
|
|
34
|
-
capacity_w = coil_cooling_dx_two_speed_find_capacity(coil_cooling_dx_two_speed)
|
|
35
|
-
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
36
|
-
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
37
16
|
|
|
38
17
|
# Define database
|
|
39
|
-
if coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
18
|
+
if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
40
19
|
database = standards_data['heat_pumps']
|
|
41
20
|
else
|
|
42
21
|
database = standards_data['unitary_acs']
|
|
@@ -44,13 +23,22 @@ class Standard
|
|
|
44
23
|
|
|
45
24
|
# Additional search criteria
|
|
46
25
|
if (database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
|
47
|
-
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
26
|
+
(template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
48
27
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
49
28
|
end
|
|
50
29
|
if database[0].keys.include?('region')
|
|
51
30
|
search_criteria['region'] = nil # non-nil values are currently used for residential products
|
|
52
31
|
end
|
|
53
32
|
|
|
33
|
+
# Get the capacity
|
|
34
|
+
if ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_two_speed))
|
|
35
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_two_speed)
|
|
36
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
37
|
+
end
|
|
38
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_two_speed_get_capacity(coil_cooling_dx_two_speed, multiplier: multiplier)
|
|
39
|
+
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
40
|
+
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
41
|
+
|
|
54
42
|
# Lookup efficiencies depending on whether it is a unitary AC or a heat pump
|
|
55
43
|
ac_props = nil
|
|
56
44
|
ac_props = model_find_object(database, search_criteria, capacity_btu_per_hr, Date.today)
|
|
@@ -73,7 +61,7 @@ class Standard
|
|
|
73
61
|
# If specified as SEER
|
|
74
62
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
75
63
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
76
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
64
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
77
65
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
78
66
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
79
67
|
end
|
|
@@ -82,7 +70,7 @@ class Standard
|
|
|
82
70
|
# TODO: assumed to be the same as SEER for now
|
|
83
71
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
|
84
72
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
|
|
85
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
73
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
86
74
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
87
75
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
88
76
|
end
|
|
@@ -90,7 +78,7 @@ class Standard
|
|
|
90
78
|
# If specified as EER
|
|
91
79
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
92
80
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
93
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
81
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
94
82
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
95
83
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
96
84
|
end
|
|
@@ -99,7 +87,7 @@ class Standard
|
|
|
99
87
|
# TODO: assumed to be the same as EER for now
|
|
100
88
|
unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
|
|
101
89
|
min_eer = ac_props['minimum_energy_efficiency_ratio_2']
|
|
102
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
90
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
103
91
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
104
92
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
105
93
|
end
|
|
@@ -107,7 +95,7 @@ class Standard
|
|
|
107
95
|
# If specific as IEER
|
|
108
96
|
if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
|
|
109
97
|
min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
|
|
110
|
-
cop = ieer_to_cop_no_fan(min_ieer)
|
|
98
|
+
cop = OpenstudioStandards::HVAC.ieer_to_cop_no_fan(min_ieer)
|
|
111
99
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
|
|
112
100
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; IEER = #{min_ieer}")
|
|
113
101
|
end
|
|
@@ -115,7 +103,7 @@ class Standard
|
|
|
115
103
|
# If specified as SEER (heat pump)
|
|
116
104
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
117
105
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
118
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
106
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
119
107
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
120
108
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
121
109
|
end
|
|
@@ -123,7 +111,7 @@ class Standard
|
|
|
123
111
|
# If specified as EER (heat pump)
|
|
124
112
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
125
113
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
126
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
114
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
127
115
|
new_comp_name = "#{coil_cooling_dx_two_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
128
116
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_two_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
129
117
|
end
|
|
@@ -146,12 +134,16 @@ class Standard
|
|
|
146
134
|
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_two_speed)
|
|
147
135
|
|
|
148
136
|
# Get the capacity
|
|
149
|
-
|
|
137
|
+
if ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_two_speed))
|
|
138
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_two_speed)
|
|
139
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
140
|
+
end
|
|
141
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_two_speed_get_capacity(coil_cooling_dx_two_speed, multiplier: multiplier)
|
|
150
142
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
151
143
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
152
144
|
|
|
153
145
|
# Get efficiencies data depending on whether it is a unitary AC or a heat pump
|
|
154
|
-
coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
146
|
+
coil_efficiency_data = if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
155
147
|
standards_data['heat_pumps']
|
|
156
148
|
else
|
|
157
149
|
standards_data['unitary_acs']
|
|
@@ -159,7 +151,7 @@ class Standard
|
|
|
159
151
|
|
|
160
152
|
# Additional search criteria
|
|
161
153
|
if (coil_efficiency_data[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
|
162
|
-
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
154
|
+
(template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_two_speed)
|
|
163
155
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
164
156
|
end
|
|
165
157
|
if coil_efficiency_data[0].keys.include?('region')
|
data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb
CHANGED
|
@@ -1,24 +1,6 @@
|
|
|
1
1
|
class Standard
|
|
2
2
|
# @!group CoilCoolingWaterToAirHeatPumpEquationFit
|
|
3
3
|
|
|
4
|
-
# Finds capacity in W
|
|
5
|
-
#
|
|
6
|
-
# @param coil_cooling_water_to_air_heat_pump [OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit] coil cooling object
|
|
7
|
-
# @return [Double] capacity in W to be used for find object
|
|
8
|
-
def coil_cooling_water_to_air_heat_pump_find_capacity(coil_cooling_water_to_air_heat_pump)
|
|
9
|
-
capacity_w = nil
|
|
10
|
-
if coil_cooling_water_to_air_heat_pump.ratedTotalCoolingCapacity.is_initialized
|
|
11
|
-
capacity_w = coil_cooling_water_to_air_heat_pump.ratedTotalCoolingCapacity.get
|
|
12
|
-
elsif coil_cooling_water_to_air_heat_pump.autosizedRatedTotalCoolingCapacity.is_initialized
|
|
13
|
-
capacity_w = coil_cooling_water_to_air_heat_pump.autosizedRatedTotalCoolingCapacity.get
|
|
14
|
-
else
|
|
15
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingWaterToAirHeatPumpEquationFit', "For #{coil_cooling_water_to_air_heat_pump.name} capacity is not available, cannot apply efficiency standard.")
|
|
16
|
-
return 0.0
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
return capacity_w
|
|
20
|
-
end
|
|
21
|
-
|
|
22
4
|
# Finds lookup object in standards and return efficiency
|
|
23
5
|
#
|
|
24
6
|
# @param coil_cooling_water_to_air_heat_pump [OpenStudio::Model::CoilCoolingWaterToAirHeatPumpEquationFit] coil cooling object
|
|
@@ -34,10 +16,15 @@ class Standard
|
|
|
34
16
|
heating_type = 'All Other'
|
|
35
17
|
sub_category = 'CRAC'
|
|
36
18
|
end
|
|
37
|
-
capacity_w =
|
|
19
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_water_to_air_heat_pump_get_capacity(coil_cooling_water_to_air_heat_pump)
|
|
20
|
+
|
|
21
|
+
# Check to make sure properties were found
|
|
22
|
+
if capacity_w.nil? || capacity_w < 1
|
|
23
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingWaterToAirHeatPumpEquationFit', "For #{coil_cooling_water_to_air_heat_pump.name}, cannot determine capacity.")
|
|
24
|
+
return nil
|
|
25
|
+
end
|
|
38
26
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
39
27
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
40
|
-
return nil unless capacity_kbtu_per_hr > 0.0
|
|
41
28
|
|
|
42
29
|
# Look up the efficiency characteristics
|
|
43
30
|
if computer_room_air_conditioner
|
|
@@ -71,7 +58,7 @@ class Standard
|
|
|
71
58
|
# If specified as EER (heat pump)
|
|
72
59
|
unless coil_props['minimum_full_load_efficiency'].nil?
|
|
73
60
|
min_eer = coil_props['minimum_full_load_efficiency']
|
|
74
|
-
cop = eer_to_cop_no_fan(min_eer, capacity_w = nil)
|
|
61
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer, capacity_w = nil)
|
|
75
62
|
new_comp_name = "#{coil_cooling_water_to_air_heat_pump.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
76
63
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingWaterToAirHeatPumpEquationFit', "For #{template}: #{coil_cooling_water_to_air_heat_pump.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
77
64
|
end
|
|
@@ -116,7 +103,7 @@ class Standard
|
|
|
116
103
|
# Get the search criteria
|
|
117
104
|
search_criteria = {}
|
|
118
105
|
search_criteria['template'] = template
|
|
119
|
-
capacity_w =
|
|
106
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_water_to_air_heat_pump_get_capacity(coil_cooling_water_to_air_heat_pump)
|
|
120
107
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
121
108
|
|
|
122
109
|
# Look up the efficiency characteristics
|
|
@@ -4,152 +4,6 @@
|
|
|
4
4
|
module CoilDX
|
|
5
5
|
# @!group CoilDX
|
|
6
6
|
|
|
7
|
-
# Finds the subcategory. Possible choices are:
|
|
8
|
-
# Single Package, Split System, PTAC, or PTHP
|
|
9
|
-
#
|
|
10
|
-
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
|
11
|
-
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
|
12
|
-
# @return [String] the coil_dx_subcategory(coil_dx)
|
|
13
|
-
# @todo Add add split system vs single package to model object
|
|
14
|
-
def coil_dx_subcategory(coil_dx)
|
|
15
|
-
sub_category = 'Single Package'
|
|
16
|
-
|
|
17
|
-
# Fallback to the name, mainly for library export
|
|
18
|
-
if coil_dx.name.get.to_s.include?('Single Package')
|
|
19
|
-
sub_category = 'Single Package'
|
|
20
|
-
elsif coil_dx.name.get.to_s.include?('Split System') ||
|
|
21
|
-
coil_dx.name.get.to_s.include?('Central Air Source HP')
|
|
22
|
-
sub_category = 'Split System'
|
|
23
|
-
elsif coil_dx.name.get.to_s.include?('Minisplit HP')
|
|
24
|
-
sub_category = 'Minisplit System'
|
|
25
|
-
elsif coil_dx.name.get.to_s.include?('CRAC')
|
|
26
|
-
sub_category = 'CRAC'
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
return sub_category
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# Determine if it is a heat pump
|
|
33
|
-
#
|
|
34
|
-
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object
|
|
35
|
-
# @return [Boolean] returns true if it is a heat pump, false if not
|
|
36
|
-
def coil_dx_heat_pump?(coil_dx)
|
|
37
|
-
heat_pump = false
|
|
38
|
-
|
|
39
|
-
if coil_dx.airLoopHVAC.empty?
|
|
40
|
-
if coil_dx.containingHVACComponent.is_initialized
|
|
41
|
-
containing_comp = coil_dx.containingHVACComponent.get
|
|
42
|
-
if containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAir.is_initialized
|
|
43
|
-
heat_pump = true
|
|
44
|
-
elsif containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.is_initialized
|
|
45
|
-
htg_coil = containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get.heatingCoil
|
|
46
|
-
if htg_coil.to_CoilHeatingDXMultiSpeed.is_initialized then heat_pump = true end
|
|
47
|
-
end
|
|
48
|
-
elsif coil_dx.containingZoneHVACComponent.is_initialized
|
|
49
|
-
containing_comp = coil_dx.containingZoneHVACComponent.get
|
|
50
|
-
# PTHP
|
|
51
|
-
if containing_comp.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
|
|
52
|
-
heat_pump = true
|
|
53
|
-
end
|
|
54
|
-
# @todo Add other zone hvac systems
|
|
55
|
-
end
|
|
56
|
-
else
|
|
57
|
-
if !coil_dx.airLoopHVAC.get.supplyComponents('OS:Coil:Heating:DX:SingleSpeed'.to_IddObjectType).empty? ||
|
|
58
|
-
!coil_dx.airLoopHVAC.get.supplyComponents('OS:Coil:Heating:DX:VariableSpeed'.to_IddObjectType).empty?
|
|
59
|
-
heat_pump = true
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
return heat_pump
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Determine the heating type.
|
|
67
|
-
# Possible choices are: Electric Resistance or None, All Other
|
|
68
|
-
#
|
|
69
|
-
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
|
70
|
-
# CoilCoolingDXSingleSpeed, CoilCoolingDXTwoSpeed, CoilCoolingDXMultiSpeed
|
|
71
|
-
# @param necb_ref_hp [Boolean] for compatability with NECB ruleset only.
|
|
72
|
-
# @return [String] the heating type
|
|
73
|
-
def coil_dx_heating_type(coil_dx, necb_ref_hp = false)
|
|
74
|
-
htg_type = nil
|
|
75
|
-
|
|
76
|
-
# If Unitary or Zone HVAC (could be a unitary system on an air loop)
|
|
77
|
-
if coil_dx.airLoopHVAC.empty?
|
|
78
|
-
if coil_dx.containingHVACComponent.is_initialized
|
|
79
|
-
containing_comp = coil_dx.containingHVACComponent.get
|
|
80
|
-
if containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAir.is_initialized
|
|
81
|
-
htg_type = 'Electric Resistance or None'
|
|
82
|
-
elsif containing_comp.to_AirLoopHVACUnitarySystem.is_initialized
|
|
83
|
-
htg_coil = containing_comp.to_AirLoopHVACUnitarySystem.get.heatingCoil
|
|
84
|
-
if containing_comp.name.to_s.include? 'Minisplit'
|
|
85
|
-
htg_type = 'All Other'
|
|
86
|
-
elsif htg_coil.is_initialized
|
|
87
|
-
htg_coil = htg_coil.get
|
|
88
|
-
if htg_coil.to_CoilHeatingElectric.is_initialized || htg_coil.to_CoilHeatingDXMultiSpeed.is_initialized
|
|
89
|
-
htg_type = 'Electric Resistance or None'
|
|
90
|
-
elsif htg_coil.to_CoilHeatingGas.is_initialized || htg_coil.to_CoilHeatingGasMultiStage.is_initialized || htg_coil.to_CoilHeatingWater.is_initialized
|
|
91
|
-
htg_type = 'All Other'
|
|
92
|
-
end
|
|
93
|
-
else
|
|
94
|
-
htg_type = 'Electric Resistance or None'
|
|
95
|
-
end
|
|
96
|
-
elsif containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.is_initialized
|
|
97
|
-
htg_coil = containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get.heatingCoil
|
|
98
|
-
supp_htg_coil = containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAirMultiSpeed.get.supplementalHeatingCoil
|
|
99
|
-
if htg_coil.to_CoilHeatingDXMultiSpeed.is_initialized || supp_htg_coil.to_CoilHeatingElectric.is_initialized
|
|
100
|
-
htg_type = 'Electric Resistance or None'
|
|
101
|
-
elsif htg_coil.to_CoilHeatingGas.is_initialized || htg_coil.to_CoilHeatingGasMultiStage.is_initialized || htg_coil.to_CoilHeatingWater.is_initialized
|
|
102
|
-
htg_type = 'All Other'
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
# @todo Add other unitary systems
|
|
106
|
-
elsif coil_dx.containingZoneHVACComponent.is_initialized
|
|
107
|
-
containing_comp = coil_dx.containingZoneHVACComponent.get
|
|
108
|
-
# PTAC
|
|
109
|
-
if containing_comp.to_ZoneHVACPackagedTerminalAirConditioner.is_initialized
|
|
110
|
-
htg_coil = containing_comp.to_ZoneHVACPackagedTerminalAirConditioner.get.heatingCoil
|
|
111
|
-
if htg_coil.to_CoilHeatingElectric.is_initialized
|
|
112
|
-
htg_type = 'Electric Resistance or None'
|
|
113
|
-
elsif htg_coil.to_CoilHeatingGas.is_initialized || htg_coil.to_CoilHeatingGasMultiStage.is_initialized || htg_coil.to_CoilHeatingWater.is_initialized
|
|
114
|
-
htg_type = 'All Other'
|
|
115
|
-
end
|
|
116
|
-
# PTHP
|
|
117
|
-
elsif containing_comp.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
|
|
118
|
-
htg_type = 'Electric Resistance or None'
|
|
119
|
-
end
|
|
120
|
-
# @todo Add other zone hvac systems
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# If on an AirLoop
|
|
125
|
-
if coil_dx.airLoopHVAC.is_initialized
|
|
126
|
-
air_loop = coil_dx.airLoopHVAC.get
|
|
127
|
-
htg_type = if !air_loop.supplyComponents('OS:Coil:Heating:Gas'.to_IddObjectType).empty?
|
|
128
|
-
'All Other'
|
|
129
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:Water'.to_IddObjectType).empty?
|
|
130
|
-
'All Other'
|
|
131
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:DX:SingleSpeed'.to_IddObjectType).empty?
|
|
132
|
-
'All Other'
|
|
133
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:DX:MultiSpeed'.to_IddObjectType).empty?
|
|
134
|
-
'All Other'
|
|
135
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:DX:VariableSpeed'.to_IddObjectType).empty?
|
|
136
|
-
'All Other'
|
|
137
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:Gas:MultiStage'.to_IddObjectType).empty?
|
|
138
|
-
'All Other'
|
|
139
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:Desuperheater'.to_IddObjectType).empty?
|
|
140
|
-
'All Other'
|
|
141
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:WaterToAirHeatPump:EquationFit'.to_IddObjectType).empty?
|
|
142
|
-
'All Other'
|
|
143
|
-
elsif !air_loop.supplyComponents('OS:Coil:Heating:Electric'.to_IddObjectType).empty?
|
|
144
|
-
'Electric Resistance or None'
|
|
145
|
-
else
|
|
146
|
-
'Electric Resistance or None'
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
return htg_type
|
|
151
|
-
end
|
|
152
|
-
|
|
153
7
|
# Finds the search criteria
|
|
154
8
|
#
|
|
155
9
|
# @param coil_dx [OpenStudio::Model::StraightComponent] coil cooling object, allowable types:
|
|
@@ -173,20 +27,24 @@ module CoilDX
|
|
|
173
27
|
'AirCooled'
|
|
174
28
|
end
|
|
175
29
|
|
|
176
|
-
#
|
|
177
|
-
search_criteria['subcategory'] = coil_dx_subcategory(coil_dx)
|
|
30
|
+
# Get the coil subcategory
|
|
31
|
+
search_criteria['subcategory'] = OpenstudioStandards::HVAC.coil_dx_subcategory(coil_dx)
|
|
178
32
|
|
|
179
33
|
# Add the heating type to the search criteria
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
34
|
+
htg_type = OpenstudioStandards::HVAC.coil_dx_heating_type(coil_dx)
|
|
35
|
+
unless htg_type.nil?
|
|
36
|
+
search_criteria['heating_type'] = htg_type
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# The heating side of unitary heat pumps don't have a heating type as part of the search
|
|
40
|
+
if coil_dx.to_CoilHeatingDXSingleSpeed.is_initialized &&
|
|
41
|
+
OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_dx) &&
|
|
42
|
+
coil_dx.airLoopHVAC.empty? && coil_dx.containingHVACComponent.is_initialized
|
|
43
|
+
containing_comp = coil_dx.containingHVACComponent.get
|
|
44
|
+
if containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAir.is_initialized
|
|
45
|
+
search_criteria['heating_type'] = nil
|
|
189
46
|
end
|
|
47
|
+
# @todo Add other unitary systems
|
|
190
48
|
end
|
|
191
49
|
|
|
192
50
|
# Get the equipment type
|
|
@@ -161,7 +161,7 @@ class Standard
|
|
|
161
161
|
# If specified as SEER
|
|
162
162
|
unless hp_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
163
163
|
min_seer = hp_props['minimum_seasonal_energy_efficiency_ratio']
|
|
164
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
164
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
165
165
|
coil_heating_dx_multi_speed.setName("#{coil_heating_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER")
|
|
166
166
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXMultiSpeed', "For #{template}: #{coil_heating_dx_multi_speed.name}: #{suppl_heating_type} #{subcategory} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
167
167
|
end
|
|
@@ -169,7 +169,7 @@ class Standard
|
|
|
169
169
|
# If specified as EER
|
|
170
170
|
unless hp_props['minimum_energy_efficiency_ratio'].nil?
|
|
171
171
|
min_eer = hp_props['minimum_energy_efficiency_ratio']
|
|
172
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
172
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
173
173
|
coil_heating_dx_multi_speed.setName("#{coil_heating_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER")
|
|
174
174
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXMultiSpeed', "For #{template}: #{coil_heating_dx_multi_speed.name}: #{suppl_heating_type} #{subcategory} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
175
175
|
end
|