openstudio-standards 0.8.4 → 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/{costing/common_paths.rb → common_paths.rb} +14 -11
- 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/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting.csv +59 -59
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_hvac.csv +1019 -1032
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +3 -7
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +1 -5
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +5 -4
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +1 -1
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +112 -181
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +4 -4
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +2 -1
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +3 -3
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -17
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +10 -9
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- 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 +6 -11
- 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.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 +1 -0
- 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 +19 -10
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- 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 +69 -92
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +2 -1
- 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 +32 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +18 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +5 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +2 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +30 -141
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +233 -112
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -2
- 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/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +16 -4
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +65 -42
- 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/version.rb +1 -1
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +55 -38
- metadata +106 -66
- data/lib/openstudio-standards/btap/costing/common_resources/constructions_glazing.csv +0 -61
- data/lib/openstudio-standards/btap/costing/common_resources/costs.csv +0 -1904
- 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/btap/{costing/common_resources → common_resources}/ConstructionProperties.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/Constructions.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/construction_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/constructions_opaque.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/costs_local_factors.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/hvac_vent_ahu.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/locations.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_glazing.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_lighting.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_opaque.csv +0 -0
- /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
|
@@ -23,24 +23,6 @@ class Standard
|
|
|
23
23
|
return search_criteria
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
# Find capacity in W
|
|
27
|
-
#
|
|
28
|
-
# @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
|
|
29
|
-
# @return [Double] capacity in W
|
|
30
|
-
def air_conditioner_variable_refrigerant_flow_find_capacity(air_conditioner_variable_refrigerant_flow)
|
|
31
|
-
capacity_w = nil
|
|
32
|
-
if air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.is_initialized
|
|
33
|
-
capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.get
|
|
34
|
-
elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
35
|
-
capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.get
|
|
36
|
-
else
|
|
37
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{air_conditioner_variable_refrigerant_flow.name} capacity is not available, cannot apply efficiency standard.")
|
|
38
|
-
return false
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
return capacity_w
|
|
42
|
-
end
|
|
43
|
-
|
|
44
26
|
# Finds lookup object in standards and return minimum thermal efficiency
|
|
45
27
|
#
|
|
46
28
|
# @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
|
|
@@ -53,7 +35,7 @@ class Standard
|
|
|
53
35
|
search_criteria = air_conditioner_variable_refrigerant_flow_find_search_criteria(air_conditioner_variable_refrigerant_flow)
|
|
54
36
|
|
|
55
37
|
# Get the capacity
|
|
56
|
-
capacity_w =
|
|
38
|
+
capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(air_conditioner_variable_refrigerant_flow)
|
|
57
39
|
|
|
58
40
|
# Convert capacity to Btu/hr
|
|
59
41
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
@@ -82,7 +64,7 @@ class Standard
|
|
|
82
64
|
# If specified as SEER
|
|
83
65
|
unless vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
84
66
|
min_seer = vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio']
|
|
85
|
-
cooling_cop = seer_to_cop_no_fan(min_seer)
|
|
67
|
+
cooling_cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
86
68
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
87
69
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
88
70
|
end
|
|
@@ -91,7 +73,7 @@ class Standard
|
|
|
91
73
|
# TODO: assumed to be the same as SEER for now
|
|
92
74
|
unless vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
|
93
75
|
min_seer = vrf_props_cooling['minimum_seasonal_energy_efficiency_ratio_2']
|
|
94
|
-
cooling_cop = seer_to_cop_no_fan(min_seer)
|
|
76
|
+
cooling_cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
95
77
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
96
78
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
97
79
|
end
|
|
@@ -99,7 +81,7 @@ class Standard
|
|
|
99
81
|
# If specified as EER
|
|
100
82
|
unless vrf_props_cooling['minimum_energy_efficiency_ratio'].nil?
|
|
101
83
|
min_eer = vrf_props_cooling['minimum_energy_efficiency_ratio']
|
|
102
|
-
cooling_cop = eer_to_cop_no_fan(min_eer)
|
|
84
|
+
cooling_cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
103
85
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
104
86
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
105
87
|
end
|
|
@@ -108,7 +90,7 @@ class Standard
|
|
|
108
90
|
# TODO: assumed to be the same as EER for now
|
|
109
91
|
unless vrf_props_cooling['minimum_energy_efficiency_ratio_2'].nil?
|
|
110
92
|
min_eer = vrf_props_cooling['minimum_energy_efficiency_ratio_2']
|
|
111
|
-
cooling_cop = eer_to_cop_no_fan(min_eer)
|
|
93
|
+
cooling_cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
112
94
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
113
95
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
114
96
|
end
|
|
@@ -116,7 +98,7 @@ class Standard
|
|
|
116
98
|
# If specified as HSPF
|
|
117
99
|
unless vrf_props_heating['minimum_heating_seasonal_performance_factor'].nil?
|
|
118
100
|
min_hspf = vrf_props_heating['minimum_heating_seasonal_performance_factor']
|
|
119
|
-
heating_cop = hspf_to_cop_no_fan(min_hspf)
|
|
101
|
+
heating_cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
120
102
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_hspf.round(1)}HSPF"
|
|
121
103
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; HSPF = #{min_hspf}")
|
|
122
104
|
end
|
|
@@ -125,7 +107,7 @@ class Standard
|
|
|
125
107
|
# TODO: assumed to be the same as HSPF for now
|
|
126
108
|
unless vrf_props_heating['minimum_heating_seasonal_performance_factor_2'].nil?
|
|
127
109
|
min_hspf = vrf_props_heating['minimum_heating_seasonal_performance_factor_2']
|
|
128
|
-
heating_cop = hspf_to_cop_no_fan(min_hspf)
|
|
110
|
+
heating_cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
129
111
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_hspf.round(1)}HSPF"
|
|
130
112
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; HSPF = #{min_hspf}")
|
|
131
113
|
end
|
|
@@ -133,7 +115,7 @@ class Standard
|
|
|
133
115
|
# If specified as COP
|
|
134
116
|
unless vrf_props_heating['minimum_coefficient_of_performance_heating'].nil?
|
|
135
117
|
min_coph = vrf_props_heating['minimum_coefficient_of_performance_heating']
|
|
136
|
-
heating_cop = cop_heating_to_cop_heating_no_fan(min_coph, OpenStudio.convert(capacity_kbtu_per_hr, 'kBtu/hr', 'W').get)
|
|
118
|
+
heating_cop = OpenstudioStandards::HVAC.cop_heating_to_cop_heating_no_fan(min_coph, OpenStudio.convert(capacity_kbtu_per_hr, 'kBtu/hr', 'W').get)
|
|
137
119
|
new_comp_name = "#{air_conditioner_variable_refrigerant_flow.name} #{capacity_kbtu_per_hr.round} Clg kBtu/hr #{min_coph.round(1)}COPH"
|
|
138
120
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{air_conditioner_variable_refrigerant_flow.name}: Cooling Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; COPH = #{min_coph}")
|
|
139
121
|
end
|
|
@@ -76,10 +76,10 @@ class Standard
|
|
|
76
76
|
# Part Load Fan Pressure Control
|
|
77
77
|
if plr_req
|
|
78
78
|
vsd_curve_type = air_loop_hvac_set_vsd_curve_type
|
|
79
|
-
fan_variable_volume_set_control_type(fan, vsd_curve_type)
|
|
79
|
+
OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: vsd_curve_type)
|
|
80
80
|
# No Part Load Fan Pressure Control
|
|
81
81
|
else
|
|
82
|
-
fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
82
|
+
OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Discharge Dampers')
|
|
83
83
|
end
|
|
84
84
|
else
|
|
85
85
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{fan}: This is not a multizone VAV fan system.")
|
|
@@ -95,16 +95,16 @@ class Standard
|
|
|
95
95
|
## plr_req = fan_variable_volume_part_load_fan_power_limitation?(fan, template)
|
|
96
96
|
## # Part Load Fan Pressure Control & Static Pressure Reset
|
|
97
97
|
## if plr_req && spr_req
|
|
98
|
-
## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
98
|
+
## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Static Pressure Setpoint Reset')
|
|
99
99
|
## # Part Load Fan Pressure Control only
|
|
100
100
|
## elsif plr_req && !spr_req
|
|
101
|
-
## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
101
|
+
## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
|
|
102
102
|
## # Static Pressure Reset only
|
|
103
103
|
## elsif !plr_req && spr_req
|
|
104
|
-
## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
104
|
+
## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
|
|
105
105
|
## # No Control Required
|
|
106
106
|
## else
|
|
107
|
-
## fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
107
|
+
## OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Airfoil or Backward Incline riding the curve')
|
|
108
108
|
## end
|
|
109
109
|
## else
|
|
110
110
|
## OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.AirLoopHVAC', "For #{name}: there is a constant volume fan on a multizone vav system. Cannot apply static pressure reset controls.")
|
|
@@ -159,7 +159,7 @@ class Standard
|
|
|
159
159
|
if air_loop_hvac.thermalZones.size == 1
|
|
160
160
|
air_loop_hvac_supply_return_exhaust_relief_fans(air_loop_hvac).each do |fan|
|
|
161
161
|
if fan.to_FanVariableVolume.is_initialized
|
|
162
|
-
fan_variable_volume_set_control_type(fan, 'Single Zone VAV
|
|
162
|
+
OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Single Zone VAV')
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
air_loop_hvac_apply_single_zone_controls(air_loop_hvac, climate_zone)
|
|
@@ -211,7 +211,7 @@ class Standard
|
|
|
211
211
|
air_loop_hvac_supply_return_exhaust_relief_fans(air_loop_hvac).each do |fan|
|
|
212
212
|
if fan.to_FanVariableVolume.is_initialized
|
|
213
213
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirLoopHVAC', "For #{air_loop_hvac.name}: Setting fan part load curve per G3.1.3.15.")
|
|
214
|
-
fan_variable_volume_set_control_type(fan, 'Multi Zone VAV with
|
|
214
|
+
OpenstudioStandards::HVAC.fan_variable_volume_set_control_type(fan, control_type: 'Multi Zone VAV with Fixed Static Pressure Setpoint')
|
|
215
215
|
end
|
|
216
216
|
end
|
|
217
217
|
|
|
@@ -297,7 +297,7 @@ class Standard
|
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
# Clean name of airloop
|
|
300
|
-
loop_name_clean = ems_friendly_name(air_loop_hvac.name)
|
|
300
|
+
loop_name_clean = OpenstudioStandards::HVAC.ems_friendly_name(air_loop_hvac.name)
|
|
301
301
|
|
|
302
302
|
# Sensors
|
|
303
303
|
oat_db_c_sen = OpenStudio::Model::EnergyManagementSystemSensor.new(air_loop_hvac.model, 'Site Outdoor Air Drybulb Temperature')
|
|
@@ -372,7 +372,7 @@ class Standard
|
|
|
372
372
|
# Set default fan curve to be VSD with static pressure reset
|
|
373
373
|
# @return [String name of appropriate curve for this code version
|
|
374
374
|
def air_loop_hvac_set_vsd_curve_type
|
|
375
|
-
return 'Multi Zone VAV with
|
|
375
|
+
return 'Multi Zone VAV with Static Pressure Setpoint Reset'
|
|
376
376
|
end
|
|
377
377
|
|
|
378
378
|
# Calculate and apply the performance rating method baseline fan power to this air loop.
|
|
@@ -892,7 +892,7 @@ class Standard
|
|
|
892
892
|
# CoilCoolingDXMultSpeed
|
|
893
893
|
if clg_coil.to_CoilCoolingDXMultiSpeed.is_initialized
|
|
894
894
|
coil = clg_coil.to_CoilCoolingDXMultiSpeed.get
|
|
895
|
-
total_cooling_capacity_w =
|
|
895
|
+
total_cooling_capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil)
|
|
896
896
|
end
|
|
897
897
|
elsif sc.to_CoilCoolingDXVariableSpeed.is_initialized
|
|
898
898
|
coil = sc.to_CoilCoolingDXVariableSpeed.get
|
|
@@ -2955,11 +2955,11 @@ class Standard
|
|
|
2955
2955
|
fan_control = air_loop_hvac_multi_stage_dx_cooling?(air_loop_hvac)
|
|
2956
2956
|
|
|
2957
2957
|
# Scrub special characters from the system name
|
|
2958
|
-
snc = ems_friendly_name(air_loop_hvac.name)
|
|
2958
|
+
snc = OpenstudioStandards::HVAC.ems_friendly_name(air_loop_hvac.name)
|
|
2959
2959
|
|
|
2960
2960
|
# Get the zone name
|
|
2961
2961
|
zone = air_loop_hvac.thermalZones[0]
|
|
2962
|
-
zn_name_clean = ems_friendly_name(zone.name)
|
|
2962
|
+
zn_name_clean = OpenstudioStandards::HVAC.ems_friendly_name(zone.name)
|
|
2963
2963
|
|
|
2964
2964
|
# Zone air node
|
|
2965
2965
|
zone_air_node = zone.zoneAirNode
|
|
@@ -61,28 +61,4 @@ class Standard
|
|
|
61
61
|
end
|
|
62
62
|
return true
|
|
63
63
|
end
|
|
64
|
-
|
|
65
|
-
# Determines whether the terminal has a NaturalGas, Electricity, or HotWater reheat coil.
|
|
66
|
-
#
|
|
67
|
-
# @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
|
|
68
|
-
# @return [String] reheat type. One of NaturalGas, Electricity, or HotWater.
|
|
69
|
-
def air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
|
|
70
|
-
type = nil
|
|
71
|
-
|
|
72
|
-
if air_terminal_single_duct_vav_reheat.to_AirTerminalSingleDuctVAVNoReheat.is_initialized
|
|
73
|
-
return nil
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Get the reheat coil
|
|
77
|
-
rht_coil = air_terminal_single_duct_vav_reheat.reheatCoil
|
|
78
|
-
if rht_coil.to_CoilHeatingElectric.is_initialized
|
|
79
|
-
type = 'Electricity'
|
|
80
|
-
elsif rht_coil.to_CoilHeatingWater.is_initialized
|
|
81
|
-
type = 'HotWater'
|
|
82
|
-
elsif rht_coil.to_CoilHeatingGas.is_initialized
|
|
83
|
-
type = 'NaturalGas'
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
return type
|
|
87
|
-
end
|
|
88
64
|
end
|
|
@@ -34,43 +34,6 @@ class Standard
|
|
|
34
34
|
return search_criteria
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
# Find capacity in W
|
|
38
|
-
#
|
|
39
|
-
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
40
|
-
# @return [Double] capacity in W
|
|
41
|
-
def boiler_hot_water_find_capacity(boiler_hot_water)
|
|
42
|
-
capacity_w = nil
|
|
43
|
-
if boiler_hot_water.nominalCapacity.is_initialized
|
|
44
|
-
capacity_w = boiler_hot_water.nominalCapacity.get
|
|
45
|
-
elsif boiler_hot_water.autosizedNominalCapacity.is_initialized
|
|
46
|
-
capacity_w = boiler_hot_water.autosizedNominalCapacity.get
|
|
47
|
-
else
|
|
48
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{boiler_hot_water.name} capacity is not available, cannot apply efficiency standard.")
|
|
49
|
-
successfully_set_all_properties = false
|
|
50
|
-
return successfully_set_all_properties
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
return capacity_w
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Find design water flow rate in m^3/s
|
|
57
|
-
#
|
|
58
|
-
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
59
|
-
# @return [Double] design water flow rate in m^3/s
|
|
60
|
-
def boiler_hot_water_find_design_water_flow_rate(boiler_hot_water)
|
|
61
|
-
design_water_flow_rate_m3_per_s = nil
|
|
62
|
-
if boiler_hot_water.designWaterFlowRate.is_initialized
|
|
63
|
-
design_water_flow_rate_m3_per_s = boiler_hot_water.designWaterFlowRate.get
|
|
64
|
-
elsif boiler_hot_water.autosizedDesignWaterFlowRate.is_initialized
|
|
65
|
-
design_water_flow_rate_m3_per_s = boiler_hot_water.autosizedDesignWaterFlowRate.get
|
|
66
|
-
else
|
|
67
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.BoilerHotWater', "For #{boiler_hot_water.name} design water flow rate is not available.")
|
|
68
|
-
return false
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
return design_water_flow_rate_m3_per_s
|
|
72
|
-
end
|
|
73
|
-
|
|
74
37
|
# Finds lookup object in standards and return minimum thermal efficiency
|
|
75
38
|
#
|
|
76
39
|
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
@@ -79,7 +42,7 @@ class Standard
|
|
|
79
42
|
def boiler_hot_water_standard_minimum_thermal_efficiency(boiler_hot_water, rename = false)
|
|
80
43
|
# Get the boiler properties
|
|
81
44
|
search_criteria = boiler_hot_water_find_search_criteria(boiler_hot_water)
|
|
82
|
-
capacity_w =
|
|
45
|
+
capacity_w = OpenstudioStandards::HVAC.boiler_hot_water_get_capacity(boiler_hot_water)
|
|
83
46
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
84
47
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
85
48
|
|
|
@@ -100,7 +63,7 @@ class Standard
|
|
|
100
63
|
# If specified as AFUE
|
|
101
64
|
unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
102
65
|
min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
|
|
103
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
66
|
+
thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
|
|
104
67
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
105
68
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
106
69
|
end
|
|
@@ -115,7 +78,7 @@ class Standard
|
|
|
115
78
|
# If specified as combustion efficiency
|
|
116
79
|
unless blr_props['minimum_combustion_efficiency'].nil?
|
|
117
80
|
min_comb_eff = blr_props['minimum_combustion_efficiency']
|
|
118
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
81
|
+
thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
|
|
119
82
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
120
83
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
121
84
|
end
|
|
@@ -150,7 +113,7 @@ class Standard
|
|
|
150
113
|
fluid_type = search_criteria['fluid_type']
|
|
151
114
|
|
|
152
115
|
# Get the capacity
|
|
153
|
-
capacity_w =
|
|
116
|
+
capacity_w = OpenstudioStandards::HVAC.boiler_hot_water_get_capacity(boiler_hot_water)
|
|
154
117
|
|
|
155
118
|
# Convert capacity to Btu/hr
|
|
156
119
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
@@ -185,7 +148,7 @@ class Standard
|
|
|
185
148
|
# If specified as AFUE
|
|
186
149
|
unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
187
150
|
min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
|
|
188
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
151
|
+
thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
|
|
189
152
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
190
153
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
191
154
|
end
|
|
@@ -200,7 +163,7 @@ class Standard
|
|
|
200
163
|
# If specified as combustion efficiency
|
|
201
164
|
unless blr_props['minimum_combustion_efficiency'].nil?
|
|
202
165
|
min_comb_eff = blr_props['minimum_combustion_efficiency']
|
|
203
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
166
|
+
thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
|
|
204
167
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
205
168
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
206
169
|
end
|
|
@@ -65,23 +65,6 @@ class Standard
|
|
|
65
65
|
return search_criteria
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
# Finds capacity in W
|
|
69
|
-
#
|
|
70
|
-
# @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
|
|
71
|
-
# @return [Double] capacity in W to be used for find object
|
|
72
|
-
def chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
73
|
-
if chiller_electric_eir.referenceCapacity.is_initialized
|
|
74
|
-
capacity_w = chiller_electric_eir.referenceCapacity.get
|
|
75
|
-
elsif chiller_electric_eir.autosizedReferenceCapacity.is_initialized
|
|
76
|
-
capacity_w = chiller_electric_eir.autosizedReferenceCapacity.get
|
|
77
|
-
else
|
|
78
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name} capacity is not available, cannot apply efficiency standard.")
|
|
79
|
-
return false
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
return capacity_w
|
|
83
|
-
end
|
|
84
|
-
|
|
85
68
|
# Finds lookup object in standards and return full load efficiency
|
|
86
69
|
#
|
|
87
70
|
# @param chiller_electric_eir [OpenStudio::Model::ChillerElectricEIR] chiller object
|
|
@@ -89,7 +72,7 @@ class Standard
|
|
|
89
72
|
def chiller_electric_eir_standard_minimum_full_load_efficiency(chiller_electric_eir)
|
|
90
73
|
# Get the chiller properties
|
|
91
74
|
search_criteria = chiller_electric_eir_find_search_criteria(chiller_electric_eir)
|
|
92
|
-
capacity_w =
|
|
75
|
+
capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
|
|
93
76
|
return nil unless capacity_w
|
|
94
77
|
|
|
95
78
|
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
@@ -107,9 +90,9 @@ class Standard
|
|
|
107
90
|
if !chlr_props['minimum_coefficient_of_performance'].nil?
|
|
108
91
|
cop = chlr_props['minimum_coefficient_of_performance']
|
|
109
92
|
elsif !chlr_props['minimum_energy_efficiency_ratio'].nil?
|
|
110
|
-
cop = eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
|
|
93
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
|
|
111
94
|
elsif !chlr_props['minimum_kilowatts_per_tons'].nil?
|
|
112
|
-
cop = kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
|
|
95
|
+
cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
|
|
113
96
|
end
|
|
114
97
|
if cop.nil?
|
|
115
98
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency.")
|
|
@@ -218,7 +201,7 @@ class Standard
|
|
|
218
201
|
compliance_path = search_criteria['compliance_path']
|
|
219
202
|
|
|
220
203
|
# Get the chiller capacity
|
|
221
|
-
capacity_w =
|
|
204
|
+
capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
|
|
222
205
|
|
|
223
206
|
# Convert capacity to tons
|
|
224
207
|
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
@@ -238,9 +221,9 @@ class Standard
|
|
|
238
221
|
if !chlr_props['minimum_coefficient_of_performance'].nil?
|
|
239
222
|
cop = chlr_props['minimum_coefficient_of_performance']
|
|
240
223
|
elsif !chlr_props['minimum_energy_efficiency_ratio'].nil?
|
|
241
|
-
cop = eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
|
|
224
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop(chlr_props['minimum_energy_efficiency_ratio'])
|
|
242
225
|
elsif !chlr_props['minimum_kilowatts_per_tons'].nil?
|
|
243
|
-
cop = kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
|
|
226
|
+
cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(chlr_props['minimum_kilowatts_per_tons'])
|
|
244
227
|
end
|
|
245
228
|
if cop.nil?
|
|
246
229
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency.")
|
|
@@ -299,7 +282,7 @@ class Standard
|
|
|
299
282
|
successfully_set_all_properties = false
|
|
300
283
|
else
|
|
301
284
|
chiller_electric_eir.setReferenceCOP(cop)
|
|
302
|
-
kw_per_ton = cop_to_kw_per_ton(cop)
|
|
285
|
+
kw_per_ton = OpenstudioStandards::HVAC.cop_to_kw_per_ton(cop)
|
|
303
286
|
end
|
|
304
287
|
|
|
305
288
|
# Append the name with size and kw/ton
|
|
@@ -81,7 +81,7 @@ class Standard
|
|
|
81
81
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
82
82
|
|
|
83
83
|
# Get efficiencies data depending on whether it is a unitary AC or a heat pump
|
|
84
|
-
coil_efficiency_data = if coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
84
|
+
coil_efficiency_data = if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
85
85
|
standards_data['heat_pumps']
|
|
86
86
|
else
|
|
87
87
|
standards_data['unitary_acs']
|
|
@@ -89,7 +89,7 @@ class Standard
|
|
|
89
89
|
|
|
90
90
|
# Additional search criteria
|
|
91
91
|
if (coil_efficiency_data[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
|
92
|
-
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
92
|
+
(template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
93
93
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
94
94
|
end
|
|
95
95
|
if coil_efficiency_data[0].keys.include?('region')
|
|
@@ -194,7 +194,7 @@ class Standard
|
|
|
194
194
|
capacity_btu_per_hr = 7000 if capacity_btu_per_hr < 7000
|
|
195
195
|
capacity_btu_per_hr = 15_000 if capacity_btu_per_hr > 15_000
|
|
196
196
|
ptac_eer = ptac_eer_coeff_1 + (ptac_eer_coeff_2 * capacity_btu_per_hr)
|
|
197
|
-
cop = eer_to_cop_no_fan(ptac_eer)
|
|
197
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(ptac_eer)
|
|
198
198
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{ptac_eer}EER"
|
|
199
199
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{subcategory} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{ptac_eer}")
|
|
200
200
|
end
|
|
@@ -220,31 +220,6 @@ class Standard
|
|
|
220
220
|
return sql_db_vars_map
|
|
221
221
|
end
|
|
222
222
|
|
|
223
|
-
# Finds capacity in W
|
|
224
|
-
#
|
|
225
|
-
# @param coil_cooling_dx_multi_speed [OpenStudio::Model::CoilCoolingDXMultiSpeed] coil cooling dx multi speed object
|
|
226
|
-
# @return [Double] capacity in W to be used for find object
|
|
227
|
-
def coil_cooling_dx_multi_speed_find_capacity(coil_cooling_dx_multi_speed)
|
|
228
|
-
capacity_w = nil
|
|
229
|
-
clg_stages = coil_cooling_dx_multi_speed.stages
|
|
230
|
-
if clg_stages.last.grossRatedTotalCoolingCapacity.is_initialized
|
|
231
|
-
capacity_w = clg_stages.last.grossRatedTotalCoolingCapacity.get
|
|
232
|
-
elsif (clg_stages.size == 1) && coil_cooling_dx_multi_speed.stages[0].autosizedSpeedRatedTotalCoolingCapacity.is_initialized
|
|
233
|
-
capacity_w = coil_cooling_dx_multi_speed.stages[0].autosizedSpeedRatedTotalCoolingCapacity.get
|
|
234
|
-
elsif (clg_stages.size == 2) && coil_cooling_dx_multi_speed.stages[1].autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
235
|
-
capacity_w = coil_cooling_dx_multi_speed.stages[1].autosizedGrossRatedTotalCoolingCapacity.get
|
|
236
|
-
elsif (clg_stages.size == 3) && coil_cooling_dx_multi_speed.stages[2].autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
237
|
-
capacity_w = coil_cooling_dx_multi_speed.stages[2].autosizedSpeedRatedTotalCoolingCapacity.get
|
|
238
|
-
elsif (clg_stages.size == 4) && coil_cooling_dx_multi_speed.stages[3].autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
239
|
-
capacity_w = coil_cooling_dx_multi_speed.stages[3].autosizedGrossRatedTotalCoolingCapacity.get
|
|
240
|
-
else
|
|
241
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{coil_cooling_dx_multi_speed.name} capacity is not available, cannot apply efficiency standard.")
|
|
242
|
-
return false
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
return capacity_w
|
|
246
|
-
end
|
|
247
|
-
|
|
248
223
|
# Finds lookup object in standards and return efficiency
|
|
249
224
|
#
|
|
250
225
|
# @param coil_cooling_dx_multi_speed [OpenStudio::Model::CoilCoolingDXMultiSpeed] coil cooling dx multi speed object
|
|
@@ -254,14 +229,14 @@ class Standard
|
|
|
254
229
|
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_multi_speed)
|
|
255
230
|
cooling_type = search_criteria['cooling_type']
|
|
256
231
|
heating_type = search_criteria['heating_type']
|
|
257
|
-
capacity_w =
|
|
232
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil_cooling_dx_multi_speed)
|
|
258
233
|
|
|
259
234
|
# Convert capacity to Btu/hr
|
|
260
235
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
261
236
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
262
237
|
|
|
263
238
|
# Define database
|
|
264
|
-
if coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
239
|
+
if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
265
240
|
database = standards_data['heat_pumps']
|
|
266
241
|
else
|
|
267
242
|
database = standards_data['unitary_acs']
|
|
@@ -269,7 +244,7 @@ class Standard
|
|
|
269
244
|
|
|
270
245
|
# Additional search criteria
|
|
271
246
|
if (database[0].keys.include?('equipment_type') || ((template == 'NECB2011') || (template == 'NECB2015') || (template == 'NECB2017') || (template == 'NECB2020') || (template == 'BTAPPRE1980') ||
|
|
272
|
-
(template == 'BTAP1980TO2010'))) && !coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
247
|
+
(template == 'BTAP1980TO2010'))) && !OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
273
248
|
search_criteria['equipment_type'] = 'Air Conditioners'
|
|
274
249
|
end
|
|
275
250
|
if database[0].keys.include?('region')
|
|
@@ -286,41 +261,41 @@ class Standard
|
|
|
286
261
|
# If specified as SEER
|
|
287
262
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
288
263
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
289
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
264
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
290
265
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
291
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
266
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
292
267
|
end
|
|
293
268
|
|
|
294
269
|
# If specified as SEER2
|
|
295
270
|
# TODO: assumed to be the same as SEER for now
|
|
296
271
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio_2'].nil?
|
|
297
272
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio_2']
|
|
298
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
273
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
299
274
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
300
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
275
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
301
276
|
end
|
|
302
277
|
|
|
303
278
|
# If specified as EER
|
|
304
279
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
305
280
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
306
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
281
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
307
282
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
308
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
283
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
309
284
|
end
|
|
310
285
|
|
|
311
286
|
# If specified as EER2
|
|
312
287
|
# TODO: assumed to be the same as EER for now
|
|
313
288
|
unless ac_props['minimum_energy_efficiency_ratio_2'].nil?
|
|
314
289
|
min_eer = ac_props['minimum_energy_efficiency_ratio_2']
|
|
315
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
290
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
316
291
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
317
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
292
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
318
293
|
end
|
|
319
294
|
|
|
320
295
|
# If specific as IEER
|
|
321
296
|
if !ac_props['minimum_integrated_energy_efficiency_ratio'].nil? && cop.nil?
|
|
322
297
|
min_ieer = ac_props['minimum_integrated_energy_efficiency_ratio']
|
|
323
|
-
cop = ieer_to_cop_no_fan(min_ieer)
|
|
298
|
+
cop = OpenstudioStandards::HVAC.ieer_to_cop_no_fan(min_ieer)
|
|
324
299
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_ieer}IEER"
|
|
325
300
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXTwoSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{sub_category} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; IEER = #{min_ieer}")
|
|
326
301
|
end
|
|
@@ -328,17 +303,17 @@ class Standard
|
|
|
328
303
|
# if specified as SEER (heat pump)
|
|
329
304
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
330
305
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
331
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
306
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
332
307
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
333
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
308
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
334
309
|
end
|
|
335
310
|
|
|
336
311
|
# If specified as EER (heat pump)
|
|
337
312
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
338
313
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
339
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
314
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
340
315
|
new_comp_name = "#{coil_cooling_dx_multi_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
341
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
316
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXMultiSpeed', "For #{template}: #{coil_cooling_dx_multi_speed.name}: #{cooling_type} #{heating_type} #{OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_multi_speed)} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
342
317
|
end
|
|
343
318
|
|
|
344
319
|
return cop, new_comp_name
|