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
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The HVAC module provides methods create, modify, and get information about HVAC systems in the model
|
|
3
|
+
module HVAC
|
|
4
|
+
# @!group Component:VRF
|
|
5
|
+
# Methods to create, modify, and get information about VRF systems
|
|
6
|
+
|
|
7
|
+
# Create AirConditionerVariableRefrigerantFlow object
|
|
8
|
+
# Enters in default curves for coil by type of coil
|
|
9
|
+
#
|
|
10
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
11
|
+
# @param name [String] the name of the system, or nil in which case it will be defaulted
|
|
12
|
+
# @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
|
|
13
|
+
# @param type [String] the type of unit to reference for the correct curve set
|
|
14
|
+
# @param cooling_cop [Double] rated cooling coefficient of performance
|
|
15
|
+
# @param heating_cop [Double] rated heating coefficient of performance
|
|
16
|
+
# @param heat_recovery [Boolean] does the unit have heat recovery
|
|
17
|
+
# @param defrost_strategy [String] type of defrost strategy. options are ReverseCycle or Resistive. Default curve set is for ReverseCycle.
|
|
18
|
+
# @param condenser_type [String] type of condenser
|
|
19
|
+
# options are AirCooled (default), WaterCooled, and EvaporativelyCooled.
|
|
20
|
+
# if WaterCooled, the user most include a condenser_loop
|
|
21
|
+
# @param master_zone [<OpenStudio::Model::ThermalZone>] master control zone to switch between heating and cooling
|
|
22
|
+
# @param priority_control_type [String] type of master thermostat priority control type
|
|
23
|
+
# options are LoadPriority, ZonePriority, ThermostatOffsetPriority, MasterThermostatPriority
|
|
24
|
+
# @return [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] the vrf unit
|
|
25
|
+
def self.create_air_conditioner_variable_refrigerant_flow(model,
|
|
26
|
+
name: 'VRF System',
|
|
27
|
+
schedule: nil,
|
|
28
|
+
type: nil,
|
|
29
|
+
cooling_cop: 4.287,
|
|
30
|
+
heating_cop: 4.147,
|
|
31
|
+
heat_recovery: true,
|
|
32
|
+
defrost_strategy: 'ReverseCycle',
|
|
33
|
+
condenser_type: 'AirCooled',
|
|
34
|
+
condenser_loop: nil,
|
|
35
|
+
master_zone: nil,
|
|
36
|
+
priority_control_type: 'LoadPriority')
|
|
37
|
+
vrf_outdoor_unit = OpenStudio::Model::AirConditionerVariableRefrigerantFlow.new(model)
|
|
38
|
+
|
|
39
|
+
# set name
|
|
40
|
+
if name.nil?
|
|
41
|
+
vrf_outdoor_unit.setName('VRF System')
|
|
42
|
+
else
|
|
43
|
+
vrf_outdoor_unit.setName(name)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# set availability schedule
|
|
47
|
+
if schedule.nil?
|
|
48
|
+
# default always on
|
|
49
|
+
availability_schedule = model.alwaysOnDiscreteSchedule
|
|
50
|
+
elsif schedule.instance_of?(String)
|
|
51
|
+
availability_schedule = model_add_schedule(model, schedule)
|
|
52
|
+
|
|
53
|
+
if availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
|
|
54
|
+
availability_schedule = model.alwaysOffDiscreteSchedule
|
|
55
|
+
elsif availability_schedule.nil?
|
|
56
|
+
availability_schedule = model.alwaysOnDiscreteSchedule
|
|
57
|
+
end
|
|
58
|
+
elsif !schedule.to_Schedule.empty?
|
|
59
|
+
availability_schedule = schedule
|
|
60
|
+
else
|
|
61
|
+
availability_schedule = model.alwaysOnDiscreteSchedule
|
|
62
|
+
end
|
|
63
|
+
vrf_outdoor_unit.setAvailabilitySchedule(availability_schedule)
|
|
64
|
+
|
|
65
|
+
# set cops
|
|
66
|
+
if model.version < OpenStudio::VersionString.new('2.9.0')
|
|
67
|
+
vrf_outdoor_unit.setRatedCoolingCOP(cooling_cop)
|
|
68
|
+
else
|
|
69
|
+
vrf_outdoor_unit.setGrossRatedCoolingCOP(cooling_cop)
|
|
70
|
+
end
|
|
71
|
+
vrf_outdoor_unit.setRatedHeatingCOP(heating_cop)
|
|
72
|
+
|
|
73
|
+
# heat recovery
|
|
74
|
+
if heat_recovery
|
|
75
|
+
vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(true)
|
|
76
|
+
else
|
|
77
|
+
vrf_outdoor_unit.setHeatPumpWasteHeatRecovery(false)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# defrost strategy
|
|
81
|
+
vrf_outdoor_unit.setDefrostStrategy(defrost_strategy)
|
|
82
|
+
|
|
83
|
+
# defaults
|
|
84
|
+
vrf_outdoor_unit.setMinimumOutdoorTemperatureinCoolingMode(-15.0)
|
|
85
|
+
vrf_outdoor_unit.setMaximumOutdoorTemperatureinCoolingMode(50.0)
|
|
86
|
+
vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatingMode(-25.0)
|
|
87
|
+
vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatingMode(16.1)
|
|
88
|
+
vrf_outdoor_unit.setMinimumOutdoorTemperatureinHeatRecoveryMode(-10.0)
|
|
89
|
+
vrf_outdoor_unit.setMaximumOutdoorTemperatureinHeatRecoveryMode(27.2)
|
|
90
|
+
vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinCoolingMode(30.48)
|
|
91
|
+
vrf_outdoor_unit.setEquivalentPipingLengthusedforPipingCorrectionFactorinHeatingMode(30.48)
|
|
92
|
+
vrf_outdoor_unit.setVerticalHeightusedforPipingCorrectionFactor(10.668)
|
|
93
|
+
|
|
94
|
+
# condenser type
|
|
95
|
+
if condenser_type == 'WaterCooled'
|
|
96
|
+
vrf_outdoor_unit.setString(56, condenser_type)
|
|
97
|
+
# require condenser_loop
|
|
98
|
+
unless condenser_loop
|
|
99
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', 'Must specify condenser_loop for vrf_outdoor_unit if WaterCooled')
|
|
100
|
+
end
|
|
101
|
+
condenser_loop.addDemandBranchForComponent(vrf_outdoor_unit)
|
|
102
|
+
elsif condenser_type == 'EvaporativelyCooled'
|
|
103
|
+
vrf_outdoor_unit.setString(56, condenser_type)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# set master zone
|
|
107
|
+
unless master_zone.nil?
|
|
108
|
+
vrf_outdoor_unit.setZoneforMasterThermostatLocation(master_zone)
|
|
109
|
+
vrf_outdoor_unit.setMasterThermostatPriorityControlType(priority_control_type)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
vrf_cool_cap_f_of_low_temp = nil
|
|
113
|
+
vrf_cool_cap_ratio_boundary = nil
|
|
114
|
+
vrf_cool_cap_f_of_high_temp = nil
|
|
115
|
+
vrf_cool_eir_f_of_low_temp = nil
|
|
116
|
+
vrf_cool_eir_ratio_boundary = nil
|
|
117
|
+
vrf_cool_eir_f_of_high_temp = nil
|
|
118
|
+
vrf_cooling_eir_low_plr = nil
|
|
119
|
+
vrf_cooling_eir_high_plr = nil
|
|
120
|
+
vrf_cooling_comb_ratio = nil
|
|
121
|
+
vrf_cooling_cplffplr = nil
|
|
122
|
+
vrf_heat_cap_f_of_low_temp = nil
|
|
123
|
+
vrf_heat_cap_ratio_boundary = nil
|
|
124
|
+
vrf_heat_cap_f_of_high_temp = nil
|
|
125
|
+
vrf_heat_eir_f_of_low_temp = nil
|
|
126
|
+
vrf_heat_eir_boundary = nil
|
|
127
|
+
vrf_heat_eir_f_of_high_temp = nil
|
|
128
|
+
vrf_heating_eir_low_plr = nil
|
|
129
|
+
vrf_heating_eir_hi_plr = nil
|
|
130
|
+
vrf_heating_comb_ratio = nil
|
|
131
|
+
vrf_heating_cplffplr = nil
|
|
132
|
+
vrf_defrost_eir_f_of_temp = nil
|
|
133
|
+
|
|
134
|
+
# curve sets
|
|
135
|
+
if type == 'OS default'
|
|
136
|
+
|
|
137
|
+
# use OS default curves
|
|
138
|
+
|
|
139
|
+
else # default curve set
|
|
140
|
+
|
|
141
|
+
# based on DAIKINREYQ 120 on BCL
|
|
142
|
+
|
|
143
|
+
# Cooling Capacity Ratio Modifier Function of Low Temperature Curve
|
|
144
|
+
vrf_cool_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
145
|
+
vrf_cool_cap_f_of_low_temp.setName('vrf_cool_cap_f_of_low_temp')
|
|
146
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient1Constant(-1.69653019339465)
|
|
147
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient2x(0.207248180531939)
|
|
148
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient3xPOW2(-0.00343146229659024)
|
|
149
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient4y(0.016381597419714)
|
|
150
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient5yPOW2(-6.7387172629965e-05)
|
|
151
|
+
vrf_cool_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.000849848402870241)
|
|
152
|
+
vrf_cool_cap_f_of_low_temp.setMinimumValueofx(13.9)
|
|
153
|
+
vrf_cool_cap_f_of_low_temp.setMaximumValueofx(23.9)
|
|
154
|
+
vrf_cool_cap_f_of_low_temp.setMinimumValueofy(-5.0)
|
|
155
|
+
vrf_cool_cap_f_of_low_temp.setMaximumValueofy(43.3)
|
|
156
|
+
vrf_cool_cap_f_of_low_temp.setMinimumCurveOutput(0.59)
|
|
157
|
+
vrf_cool_cap_f_of_low_temp.setMaximumCurveOutput(1.33)
|
|
158
|
+
|
|
159
|
+
# Cooling Capacity Ratio Boundary Curve
|
|
160
|
+
vrf_cool_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
|
|
161
|
+
vrf_cool_cap_ratio_boundary.setName('vrf_cool_cap_ratio_boundary')
|
|
162
|
+
vrf_cool_cap_ratio_boundary.setCoefficient1Constant(25.73)
|
|
163
|
+
vrf_cool_cap_ratio_boundary.setCoefficient2x(-0.03150043)
|
|
164
|
+
vrf_cool_cap_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
|
|
165
|
+
vrf_cool_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
|
|
166
|
+
vrf_cool_cap_ratio_boundary.setMinimumValueofx(11.0)
|
|
167
|
+
vrf_cool_cap_ratio_boundary.setMaximumValueofx(30.0)
|
|
168
|
+
|
|
169
|
+
# Cooling Capacity Ratio Modifier Function of High Temperature Curve
|
|
170
|
+
vrf_cool_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
171
|
+
vrf_cool_cap_f_of_high_temp.setName('vrf_cool_cap_f_of_high_temp')
|
|
172
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient1Constant(0.6867358)
|
|
173
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient2x(0.0207631)
|
|
174
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient3xPOW2(0.0005447)
|
|
175
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient4y(-0.0016218)
|
|
176
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient5yPOW2(-4.259e-07)
|
|
177
|
+
vrf_cool_cap_f_of_high_temp.setCoefficient6xTIMESY(-0.0003392)
|
|
178
|
+
vrf_cool_cap_f_of_high_temp.setMinimumValueofx(15.0)
|
|
179
|
+
vrf_cool_cap_f_of_high_temp.setMaximumValueofx(24.0)
|
|
180
|
+
vrf_cool_cap_f_of_high_temp.setMinimumValueofy(16.0)
|
|
181
|
+
vrf_cool_cap_f_of_high_temp.setMaximumValueofy(43.0)
|
|
182
|
+
|
|
183
|
+
# Cooling Energy Input Ratio Modifier Function of Low Temperature Curve
|
|
184
|
+
vrf_cool_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
185
|
+
vrf_cool_eir_f_of_low_temp.setName('vrf_cool_eir_f_of_low_temp')
|
|
186
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient1Constant(-1.61908214818635)
|
|
187
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient2x(0.185964818731756)
|
|
188
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00389610393381592)
|
|
189
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient4y(-0.00901995326324613)
|
|
190
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient5yPOW2(0.00030340007815629)
|
|
191
|
+
vrf_cool_eir_f_of_low_temp.setCoefficient6xTIMESY(0.000476048529099348)
|
|
192
|
+
vrf_cool_eir_f_of_low_temp.setMinimumValueofx(13.9)
|
|
193
|
+
vrf_cool_eir_f_of_low_temp.setMaximumValueofx(23.9)
|
|
194
|
+
vrf_cool_eir_f_of_low_temp.setMinimumValueofy(-5.0)
|
|
195
|
+
vrf_cool_eir_f_of_low_temp.setMaximumValueofy(43.3)
|
|
196
|
+
vrf_cool_eir_f_of_low_temp.setMinimumCurveOutput(0.27)
|
|
197
|
+
vrf_cool_eir_f_of_low_temp.setMaximumCurveOutput(1.15)
|
|
198
|
+
|
|
199
|
+
# Cooling Energy Input Ratio Boundary Curve
|
|
200
|
+
vrf_cool_eir_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
|
|
201
|
+
vrf_cool_eir_ratio_boundary.setName('vrf_cool_eir_ratio_boundary')
|
|
202
|
+
vrf_cool_eir_ratio_boundary.setCoefficient1Constant(25.73473775)
|
|
203
|
+
vrf_cool_eir_ratio_boundary.setCoefficient2x(-0.03150043)
|
|
204
|
+
vrf_cool_eir_ratio_boundary.setCoefficient3xPOW2(-0.01416595)
|
|
205
|
+
vrf_cool_eir_ratio_boundary.setCoefficient4xPOW3(0.0)
|
|
206
|
+
vrf_cool_eir_ratio_boundary.setMinimumValueofx(15.0)
|
|
207
|
+
vrf_cool_eir_ratio_boundary.setMaximumValueofx(24.0)
|
|
208
|
+
|
|
209
|
+
# Cooling Energy Input Ratio Modifier Function of High Temperature Curve
|
|
210
|
+
vrf_cool_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
211
|
+
vrf_cool_eir_f_of_high_temp.setName('vrf_cool_eir_f_of_high_temp')
|
|
212
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient1Constant(-1.4395110176)
|
|
213
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient2x(0.1619850459)
|
|
214
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient3xPOW2(-0.0034911781)
|
|
215
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient4y(0.0269442645)
|
|
216
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient5yPOW2(0.0001346163)
|
|
217
|
+
vrf_cool_eir_f_of_high_temp.setCoefficient6xTIMESY(-0.0006714941)
|
|
218
|
+
vrf_cool_eir_f_of_high_temp.setMinimumValueofx(15.0)
|
|
219
|
+
vrf_cool_eir_f_of_high_temp.setMaximumValueofx(23.9)
|
|
220
|
+
vrf_cool_eir_f_of_high_temp.setMinimumValueofy(16.8)
|
|
221
|
+
vrf_cool_eir_f_of_high_temp.setMaximumValueofy(43.3)
|
|
222
|
+
|
|
223
|
+
# Cooling Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve
|
|
224
|
+
vrf_cooling_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
|
|
225
|
+
vrf_cooling_eir_low_plr.setName('vrf_cool_eir_f_of_low_temp')
|
|
226
|
+
vrf_cooling_eir_low_plr.setCoefficient1Constant(0.0734992169827752)
|
|
227
|
+
vrf_cooling_eir_low_plr.setCoefficient2x(0.334783365234032)
|
|
228
|
+
vrf_cooling_eir_low_plr.setCoefficient3xPOW2(0.591613015486343)
|
|
229
|
+
vrf_cooling_eir_low_plr.setCoefficient4xPOW3(0.0)
|
|
230
|
+
vrf_cooling_eir_low_plr.setMinimumValueofx(0.25)
|
|
231
|
+
vrf_cooling_eir_low_plr.setMaximumValueofx(1.0)
|
|
232
|
+
vrf_cooling_eir_low_plr.setMinimumCurveOutput(0.0)
|
|
233
|
+
vrf_cooling_eir_low_plr.setMaximumCurveOutput(1.0)
|
|
234
|
+
|
|
235
|
+
# Cooling Energy Input Ratio Modifier Function of High Part-Load Ratio Curve
|
|
236
|
+
vrf_cooling_eir_high_plr = OpenStudio::Model::CurveCubic.new(model)
|
|
237
|
+
vrf_cooling_eir_high_plr.setName('vrf_cooling_eir_high_plr')
|
|
238
|
+
vrf_cooling_eir_high_plr.setCoefficient1Constant(1.0)
|
|
239
|
+
vrf_cooling_eir_high_plr.setCoefficient2x(0.0)
|
|
240
|
+
vrf_cooling_eir_high_plr.setCoefficient3xPOW2(0.0)
|
|
241
|
+
vrf_cooling_eir_high_plr.setCoefficient4xPOW3(0.0)
|
|
242
|
+
vrf_cooling_eir_high_plr.setMinimumValueofx(1.0)
|
|
243
|
+
vrf_cooling_eir_high_plr.setMaximumValueofx(1.5)
|
|
244
|
+
|
|
245
|
+
# Cooling Combination Ratio Correction Factor Curve
|
|
246
|
+
vrf_cooling_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
|
|
247
|
+
vrf_cooling_comb_ratio.setName('vrf_cooling_comb_ratio')
|
|
248
|
+
vrf_cooling_comb_ratio.setCoefficient1Constant(0.24034)
|
|
249
|
+
vrf_cooling_comb_ratio.setCoefficient2x(-0.21873)
|
|
250
|
+
vrf_cooling_comb_ratio.setCoefficient3xPOW2(1.97941)
|
|
251
|
+
vrf_cooling_comb_ratio.setCoefficient4xPOW3(-1.02636)
|
|
252
|
+
vrf_cooling_comb_ratio.setMinimumValueofx(0.5)
|
|
253
|
+
vrf_cooling_comb_ratio.setMaximumValueofx(2.0)
|
|
254
|
+
vrf_cooling_comb_ratio.setMinimumCurveOutput(0.5)
|
|
255
|
+
vrf_cooling_comb_ratio.setMaximumCurveOutput(1.056)
|
|
256
|
+
|
|
257
|
+
# Cooling Part-Load Fraction Correlation Curve
|
|
258
|
+
vrf_cooling_cplffplr = OpenStudio::Model::CurveCubic.new(model)
|
|
259
|
+
vrf_cooling_cplffplr.setName('vrf_cooling_cplffplr')
|
|
260
|
+
vrf_cooling_cplffplr.setCoefficient1Constant(0.85)
|
|
261
|
+
vrf_cooling_cplffplr.setCoefficient2x(0.15)
|
|
262
|
+
vrf_cooling_cplffplr.setCoefficient3xPOW2(0.0)
|
|
263
|
+
vrf_cooling_cplffplr.setCoefficient4xPOW3(0.0)
|
|
264
|
+
vrf_cooling_cplffplr.setMinimumValueofx(1.0)
|
|
265
|
+
vrf_cooling_cplffplr.setMaximumValueofx(1.0)
|
|
266
|
+
|
|
267
|
+
# Heating Capacity Ratio Modifier Function of Low Temperature Curve Name
|
|
268
|
+
vrf_heat_cap_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
269
|
+
vrf_heat_cap_f_of_low_temp.setName('vrf_heat_cap_f_of_low_temp')
|
|
270
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient1Constant(0.983220174655636)
|
|
271
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient2x(0.0157167577703294)
|
|
272
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient3xPOW2(-0.000835032422884084)
|
|
273
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient4y(0.0522939264581759)
|
|
274
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient5yPOW2(-0.000531556035364549)
|
|
275
|
+
vrf_heat_cap_f_of_low_temp.setCoefficient6xTIMESY(-0.00190605953116024)
|
|
276
|
+
vrf_heat_cap_f_of_low_temp.setMinimumValueofx(16.1)
|
|
277
|
+
vrf_heat_cap_f_of_low_temp.setMaximumValueofx(23.9)
|
|
278
|
+
vrf_heat_cap_f_of_low_temp.setMinimumValueofy(-25.0)
|
|
279
|
+
vrf_heat_cap_f_of_low_temp.setMaximumValueofy(13.3)
|
|
280
|
+
vrf_heat_cap_f_of_low_temp.setMinimumCurveOutput(0.515151515151515)
|
|
281
|
+
vrf_heat_cap_f_of_low_temp.setMaximumCurveOutput(1.2)
|
|
282
|
+
|
|
283
|
+
# Heating Capacity Ratio Boundary Curve Name
|
|
284
|
+
vrf_heat_cap_ratio_boundary = OpenStudio::Model::CurveCubic.new(model)
|
|
285
|
+
vrf_heat_cap_ratio_boundary.setName('vrf_heat_cap_ratio_boundary')
|
|
286
|
+
vrf_heat_cap_ratio_boundary.setCoefficient1Constant(58.577)
|
|
287
|
+
vrf_heat_cap_ratio_boundary.setCoefficient2x(-3.0255)
|
|
288
|
+
vrf_heat_cap_ratio_boundary.setCoefficient3xPOW2(0.0193)
|
|
289
|
+
vrf_heat_cap_ratio_boundary.setCoefficient4xPOW3(0.0)
|
|
290
|
+
vrf_heat_cap_ratio_boundary.setMinimumValueofx(15)
|
|
291
|
+
vrf_heat_cap_ratio_boundary.setMaximumValueofx(23.9)
|
|
292
|
+
|
|
293
|
+
# Heating Capacity Ratio Modifier Function of High Temperature Curve Name
|
|
294
|
+
vrf_heat_cap_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
295
|
+
vrf_heat_cap_f_of_high_temp.setName('vrf_heat_cap_f_of_high_temp')
|
|
296
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient1Constant(2.5859872368)
|
|
297
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient2x(-0.0953227101)
|
|
298
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient3xPOW2(0.0009553288)
|
|
299
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient4y(0.0)
|
|
300
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient5yPOW2(0.0)
|
|
301
|
+
vrf_heat_cap_f_of_high_temp.setCoefficient6xTIMESY(0.0)
|
|
302
|
+
vrf_heat_cap_f_of_high_temp.setMinimumValueofx(21.1)
|
|
303
|
+
vrf_heat_cap_f_of_high_temp.setMaximumValueofx(27.2)
|
|
304
|
+
vrf_heat_cap_f_of_high_temp.setMinimumValueofy(-944)
|
|
305
|
+
vrf_heat_cap_f_of_high_temp.setMaximumValueofy(15)
|
|
306
|
+
|
|
307
|
+
# Heating Energy Input Ratio Modifier Function of Low Temperature Curve Name
|
|
308
|
+
vrf_heat_eir_f_of_low_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
309
|
+
vrf_heat_eir_f_of_low_temp.setName('vrf_heat_eir_f_of_low_temp')
|
|
310
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient1Constant(0.756830029796909)
|
|
311
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient2x(0.0457499799042671)
|
|
312
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient3xPOW2(-0.00136357240431388)
|
|
313
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient4y(0.0554884599902023)
|
|
314
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient5yPOW2(-0.00120700875497686)
|
|
315
|
+
vrf_heat_eir_f_of_low_temp.setCoefficient6xTIMESY(-0.00303329271420931)
|
|
316
|
+
vrf_heat_eir_f_of_low_temp.setMinimumValueofx(16.1)
|
|
317
|
+
vrf_heat_eir_f_of_low_temp.setMaximumValueofx(23.9)
|
|
318
|
+
vrf_heat_eir_f_of_low_temp.setMinimumValueofy(-25.0)
|
|
319
|
+
vrf_heat_eir_f_of_low_temp.setMaximumValueofy(13.3)
|
|
320
|
+
vrf_heat_eir_f_of_low_temp.setMinimumCurveOutput(0.7)
|
|
321
|
+
vrf_heat_eir_f_of_low_temp.setMaximumCurveOutput(1.184)
|
|
322
|
+
|
|
323
|
+
# Heating Energy Input Ratio Boundary Curve Name
|
|
324
|
+
vrf_heat_eir_boundary = OpenStudio::Model::CurveCubic.new(model)
|
|
325
|
+
vrf_heat_eir_boundary.setName('vrf_heat_eir_boundary')
|
|
326
|
+
vrf_heat_eir_boundary.setCoefficient1Constant(58.577)
|
|
327
|
+
vrf_heat_eir_boundary.setCoefficient2x(-3.0255)
|
|
328
|
+
vrf_heat_eir_boundary.setCoefficient3xPOW2(0.0193)
|
|
329
|
+
vrf_heat_eir_boundary.setCoefficient4xPOW3(0.0)
|
|
330
|
+
vrf_heat_eir_boundary.setMinimumValueofx(15.0)
|
|
331
|
+
vrf_heat_eir_boundary.setMaximumValueofx(23.9)
|
|
332
|
+
|
|
333
|
+
# Heating Energy Input Ratio Modifier Function of High Temperature Curve Name
|
|
334
|
+
vrf_heat_eir_f_of_high_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
335
|
+
vrf_heat_eir_f_of_high_temp.setName('vrf_heat_eir_f_of_high_temp')
|
|
336
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient1Constant(1.3885703646)
|
|
337
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient2x(-0.0229771462)
|
|
338
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient3xPOW2(0.000537274)
|
|
339
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient4y(-0.0273936962)
|
|
340
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient5yPOW2(0.0004030426)
|
|
341
|
+
vrf_heat_eir_f_of_high_temp.setCoefficient6xTIMESY(-5.9786e-05)
|
|
342
|
+
vrf_heat_eir_f_of_high_temp.setMinimumValueofx(21.1)
|
|
343
|
+
vrf_heat_eir_f_of_high_temp.setMaximumValueofx(27.2)
|
|
344
|
+
vrf_heat_eir_f_of_high_temp.setMinimumValueofy(0.0)
|
|
345
|
+
vrf_heat_eir_f_of_high_temp.setMaximumValueofy(1.0)
|
|
346
|
+
|
|
347
|
+
# Heating Performance Curve Outdoor Temperature Type
|
|
348
|
+
vrf_outdoor_unit.setHeatingPerformanceCurveOutdoorTemperatureType('WetBulbTemperature')
|
|
349
|
+
|
|
350
|
+
# Heating Energy Input Ratio Modifier Function of Low Part-Load Ratio Curve Name
|
|
351
|
+
vrf_heating_eir_low_plr = OpenStudio::Model::CurveCubic.new(model)
|
|
352
|
+
vrf_heating_eir_low_plr.setName('vrf_heating_eir_low_plr')
|
|
353
|
+
vrf_heating_eir_low_plr.setCoefficient1Constant(0.0724906507105475)
|
|
354
|
+
vrf_heating_eir_low_plr.setCoefficient2x(0.658189977561701)
|
|
355
|
+
vrf_heating_eir_low_plr.setCoefficient3xPOW2(0.269259536275246)
|
|
356
|
+
vrf_heating_eir_low_plr.setCoefficient4xPOW3(0.0)
|
|
357
|
+
vrf_heating_eir_low_plr.setMinimumValueofx(0.25)
|
|
358
|
+
vrf_heating_eir_low_plr.setMaximumValueofx(1.0)
|
|
359
|
+
vrf_heating_eir_low_plr.setMinimumCurveOutput(0.0)
|
|
360
|
+
vrf_heating_eir_low_plr.setMaximumCurveOutput(1.0)
|
|
361
|
+
|
|
362
|
+
# Heating Energy Input Ratio Modifier Function of High Part-Load Ratio Curve Name
|
|
363
|
+
vrf_heating_eir_hi_plr = OpenStudio::Model::CurveCubic.new(model)
|
|
364
|
+
vrf_heating_eir_hi_plr.setName('vrf_heating_eir_hi_plr')
|
|
365
|
+
vrf_heating_eir_hi_plr.setCoefficient1Constant(1.0)
|
|
366
|
+
vrf_heating_eir_hi_plr.setCoefficient2x(0.0)
|
|
367
|
+
vrf_heating_eir_hi_plr.setCoefficient3xPOW2(0.0)
|
|
368
|
+
vrf_heating_eir_hi_plr.setCoefficient4xPOW3(0.0)
|
|
369
|
+
vrf_heating_eir_hi_plr.setMinimumValueofx(1.0)
|
|
370
|
+
vrf_heating_eir_hi_plr.setMaximumValueofx(1.5)
|
|
371
|
+
|
|
372
|
+
# Heating Combination Ratio Correction Factor Curve Name
|
|
373
|
+
vrf_heating_comb_ratio = OpenStudio::Model::CurveCubic.new(model)
|
|
374
|
+
vrf_heating_comb_ratio.setName('vrf_heating_comb_ratio')
|
|
375
|
+
vrf_heating_comb_ratio.setCoefficient1Constant(0.62115)
|
|
376
|
+
vrf_heating_comb_ratio.setCoefficient2x(-1.55798)
|
|
377
|
+
vrf_heating_comb_ratio.setCoefficient3xPOW2(3.36817)
|
|
378
|
+
vrf_heating_comb_ratio.setCoefficient4xPOW3(-1.4224)
|
|
379
|
+
vrf_heating_comb_ratio.setMinimumValueofx(0.5)
|
|
380
|
+
vrf_heating_comb_ratio.setMaximumValueofx(2.0)
|
|
381
|
+
vrf_heating_comb_ratio.setMinimumCurveOutput(0.5)
|
|
382
|
+
vrf_heating_comb_ratio.setMaximumCurveOutput(1.155)
|
|
383
|
+
|
|
384
|
+
# Heating Part-Load Fraction Correlation Curve Name
|
|
385
|
+
vrf_heating_cplffplr = OpenStudio::Model::CurveCubic.new(model)
|
|
386
|
+
vrf_heating_cplffplr.setName('vrf_heating_cplffplr')
|
|
387
|
+
vrf_heating_cplffplr.setCoefficient1Constant(0.85)
|
|
388
|
+
vrf_heating_cplffplr.setCoefficient2x(0.15)
|
|
389
|
+
vrf_heating_cplffplr.setCoefficient3xPOW2(0.0)
|
|
390
|
+
vrf_heating_cplffplr.setCoefficient4xPOW3(0.0)
|
|
391
|
+
vrf_heating_cplffplr.setMinimumValueofx(1.0)
|
|
392
|
+
vrf_heating_cplffplr.setMaximumValueofx(1.0)
|
|
393
|
+
|
|
394
|
+
# Defrost Energy Input Ratio Modifier Function of Temperature Curve
|
|
395
|
+
vrf_defrost_eir_f_of_temp = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
396
|
+
vrf_defrost_eir_f_of_temp.setName('vrf_defrost_eir_f_of_temp')
|
|
397
|
+
vrf_defrost_eir_f_of_temp.setCoefficient1Constant(-1.61908214818635)
|
|
398
|
+
vrf_defrost_eir_f_of_temp.setCoefficient2x(0.185964818731756)
|
|
399
|
+
vrf_defrost_eir_f_of_temp.setCoefficient3xPOW2(-0.00389610393381592)
|
|
400
|
+
vrf_defrost_eir_f_of_temp.setCoefficient4y(-0.00901995326324613)
|
|
401
|
+
vrf_defrost_eir_f_of_temp.setCoefficient5yPOW2(0.00030340007815629)
|
|
402
|
+
vrf_defrost_eir_f_of_temp.setCoefficient6xTIMESY(0.000476048529099348)
|
|
403
|
+
vrf_defrost_eir_f_of_temp.setMinimumValueofx(13.9)
|
|
404
|
+
vrf_defrost_eir_f_of_temp.setMaximumValueofx(23.9)
|
|
405
|
+
vrf_defrost_eir_f_of_temp.setMinimumValueofy(-5.0)
|
|
406
|
+
vrf_defrost_eir_f_of_temp.setMaximumValueofy(50.0)
|
|
407
|
+
vrf_defrost_eir_f_of_temp.setMinimumCurveOutput(0.27)
|
|
408
|
+
vrf_defrost_eir_f_of_temp.setMaximumCurveOutput(1.155)
|
|
409
|
+
|
|
410
|
+
# set defrost control
|
|
411
|
+
vrf_outdoor_unit.setDefrostStrategy('ReverseCycle')
|
|
412
|
+
vrf_outdoor_unit.setDefrostControl('OnDemand')
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
# override defrost strategy if specified
|
|
416
|
+
if defrost_strategy == 'Resistive'
|
|
417
|
+
vrf_defrost_eir_f_of_temp = nil
|
|
418
|
+
vrf_outdoor_unit.setDefrostStrategy('Resistive')
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_cool_cap_f_of_low_temp) unless vrf_cool_cap_f_of_low_temp.nil?
|
|
422
|
+
vrf_outdoor_unit.setCoolingCapacityRatioBoundaryCurve(vrf_cool_cap_ratio_boundary) unless vrf_cool_cap_ratio_boundary.nil?
|
|
423
|
+
vrf_outdoor_unit.setCoolingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_cool_cap_f_of_high_temp) unless vrf_cool_cap_f_of_high_temp.nil?
|
|
424
|
+
vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_cool_eir_f_of_low_temp) unless vrf_cool_eir_f_of_low_temp.nil?
|
|
425
|
+
vrf_outdoor_unit.setCoolingEnergyInputRatioBoundaryCurve(vrf_cool_eir_ratio_boundary) unless vrf_cool_eir_ratio_boundary.nil?
|
|
426
|
+
vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_cool_eir_f_of_high_temp) unless vrf_cool_eir_f_of_high_temp.nil?
|
|
427
|
+
vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_cooling_eir_low_plr) unless vrf_cooling_eir_low_plr.nil?
|
|
428
|
+
vrf_outdoor_unit.setCoolingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_cooling_eir_high_plr) unless vrf_cooling_eir_high_plr.nil?
|
|
429
|
+
vrf_outdoor_unit.setCoolingCombinationRatioCorrectionFactorCurve(vrf_cooling_comb_ratio) unless vrf_cooling_comb_ratio.nil?
|
|
430
|
+
vrf_outdoor_unit.setCoolingPartLoadFractionCorrelationCurve(vrf_cooling_cplffplr) unless vrf_cooling_cplffplr.nil?
|
|
431
|
+
vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofLowTemperatureCurve(vrf_heat_cap_f_of_low_temp) unless vrf_heat_cap_f_of_low_temp.nil?
|
|
432
|
+
vrf_outdoor_unit.setHeatingCapacityRatioBoundaryCurve(vrf_heat_cap_ratio_boundary) unless vrf_heat_cap_ratio_boundary.nil?
|
|
433
|
+
vrf_outdoor_unit.setHeatingCapacityRatioModifierFunctionofHighTemperatureCurve(vrf_heat_cap_f_of_high_temp) unless vrf_heat_cap_f_of_high_temp.nil?
|
|
434
|
+
vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowTemperatureCurve(vrf_heat_eir_f_of_low_temp) unless vrf_heat_eir_f_of_low_temp.nil?
|
|
435
|
+
vrf_outdoor_unit.setHeatingEnergyInputRatioBoundaryCurve(vrf_heat_eir_boundary) unless vrf_heat_eir_boundary.nil?
|
|
436
|
+
vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighTemperatureCurve(vrf_heat_eir_f_of_high_temp) unless vrf_heat_eir_f_of_high_temp.nil?
|
|
437
|
+
vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofLowPartLoadRatioCurve(vrf_heating_eir_low_plr) unless vrf_heating_eir_low_plr.nil?
|
|
438
|
+
vrf_outdoor_unit.setHeatingEnergyInputRatioModifierFunctionofHighPartLoadRatioCurve(vrf_heating_eir_hi_plr) unless vrf_heating_eir_hi_plr.nil?
|
|
439
|
+
vrf_outdoor_unit.setHeatingCombinationRatioCorrectionFactorCurve(vrf_heating_comb_ratio) unless vrf_heating_comb_ratio.nil?
|
|
440
|
+
vrf_outdoor_unit.setHeatingPartLoadFractionCorrelationCurve(vrf_heating_cplffplr) unless vrf_heating_cplffplr.nil?
|
|
441
|
+
vrf_outdoor_unit.setDefrostEnergyInputRatioModifierFunctionofTemperatureCurve(vrf_defrost_eir_f_of_temp) unless vrf_defrost_eir_f_of_temp.nil?
|
|
442
|
+
|
|
443
|
+
return vrf_outdoor_unit
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
# Return the cooling capacity in W of a AirConditionerVariableRefrigerantFlow
|
|
447
|
+
#
|
|
448
|
+
# @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
|
|
449
|
+
# @return [Double] cooling capacity in W
|
|
450
|
+
def self.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(air_conditioner_variable_refrigerant_flow)
|
|
451
|
+
capacity_w = nil
|
|
452
|
+
if air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.is_initialized
|
|
453
|
+
capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedTotalCoolingCapacity.get
|
|
454
|
+
elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
455
|
+
capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedTotalCoolingCapacity.get
|
|
456
|
+
else
|
|
457
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.air_conditioner_vrf', "For #{air_conditioner_variable_refrigerant_flow.name} cooling capacity is not available.")
|
|
458
|
+
return 0.0
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
return capacity_w
|
|
462
|
+
end
|
|
463
|
+
|
|
464
|
+
# Return the heating capacity in W of a AirConditionerVariableRefrigerantFlow
|
|
465
|
+
#
|
|
466
|
+
# @param air_conditioner_variable_refrigerant_flow [OpenStudio::Model::AirConditionerVariableRefrigerantFlow] vrf unit
|
|
467
|
+
# @return [Double] heating capacity in W
|
|
468
|
+
def self.air_conditioner_variable_refrigerant_flow_get_heating_capacity(air_conditioner_variable_refrigerant_flow)
|
|
469
|
+
capacity_w = nil
|
|
470
|
+
if air_conditioner_variable_refrigerant_flow.grossRatedHeatingCapacity.is_initialized
|
|
471
|
+
capacity_w = air_conditioner_variable_refrigerant_flow.grossRatedHeatingCapacity.get
|
|
472
|
+
elsif air_conditioner_variable_refrigerant_flow.autosizedGrossRatedHeatingCapacity.is_initialized
|
|
473
|
+
capacity_w = air_conditioner_variable_refrigerant_flow.autosizedGrossRatedHeatingCapacity.get
|
|
474
|
+
else
|
|
475
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.air_conditioner_vrf', "For #{air_conditioner_variable_refrigerant_flow.name} heating capacity is not available.")
|
|
476
|
+
return 0.0
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
return capacity_w
|
|
480
|
+
end
|
|
481
|
+
end
|
|
482
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The HVAC module provides methods create, modify, and get information about HVAC systems in the model
|
|
3
|
+
module HVAC
|
|
4
|
+
# @!group Component:Air Terminal
|
|
5
|
+
# Methods to create, modify, and get information about air terminals
|
|
6
|
+
|
|
7
|
+
# Determines whether the terminal has a NaturalGas, Electricity, or HotWater reheat coil.
|
|
8
|
+
#
|
|
9
|
+
# @param air_terminal_single_duct_vav_reheat [OpenStudio::Model::AirTerminalSingleDuctVAVReheat] the air terminal object
|
|
10
|
+
# @return [String] reheat type. One of NaturalGas, Electricity, or HotWater.
|
|
11
|
+
def self.air_terminal_single_duct_vav_reheat_reheat_type(air_terminal_single_duct_vav_reheat)
|
|
12
|
+
type = nil
|
|
13
|
+
|
|
14
|
+
if air_terminal_single_duct_vav_reheat.to_AirTerminalSingleDuctVAVNoReheat.is_initialized
|
|
15
|
+
return type
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Get the reheat coil
|
|
19
|
+
rht_coil = air_terminal_single_duct_vav_reheat.reheatCoil
|
|
20
|
+
if rht_coil.to_CoilHeatingElectric.is_initialized
|
|
21
|
+
type = 'Electricity'
|
|
22
|
+
elsif rht_coil.to_CoilHeatingWater.is_initialized
|
|
23
|
+
type = 'HotWater'
|
|
24
|
+
elsif rht_coil.to_CoilHeatingGas.is_initialized
|
|
25
|
+
type = 'NaturalGas'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
return type
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The HVAC module provides methods create, modify, and get information about HVAC systems in the model
|
|
3
|
+
module HVAC
|
|
4
|
+
# @!group Component:Boiler
|
|
5
|
+
# Methods to create, modify, and get information about boilers
|
|
6
|
+
|
|
7
|
+
# Create BoilerHotWater object
|
|
8
|
+
#
|
|
9
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
10
|
+
# @param hot_water_loop [<OpenStudio::Model::PlantLoop>] a hot water loop served by the boiler
|
|
11
|
+
# @param name [String] the name of the boiler, or nil in which case it will be defaulted
|
|
12
|
+
# @param fuel_type [String] type of fuel serving the boiler
|
|
13
|
+
# @param draft_type [String] Boiler type Condensing, MechanicalNoncondensing, Natural (default)
|
|
14
|
+
# @param nominal_thermal_efficiency [Double] boiler nominal thermal efficiency
|
|
15
|
+
# @param eff_curve_temp_eval_var [String] LeavingBoiler or EnteringBoiler temperature for the boiler efficiency curve
|
|
16
|
+
# @param flow_mode [String] boiler flow mode
|
|
17
|
+
# @param lvg_temp_dsgn_f [Double] boiler leaving design temperature in degrees Fahrenheit
|
|
18
|
+
# note that this field is deprecated in OS versions 3.0+
|
|
19
|
+
# @param out_temp_lmt_f [Double] boiler outlet temperature limit in degrees Fahrenheit
|
|
20
|
+
# @param min_plr [Double] boiler minimum part load ratio
|
|
21
|
+
# @param max_plr [Double] boiler maximum part load ratio
|
|
22
|
+
# @param opt_plr [Double] boiler optimum part load ratio
|
|
23
|
+
# @param sizing_factor [Double] boiler oversizing factor
|
|
24
|
+
# @return [OpenStudio::Model::BoilerHotWater] the boiler object
|
|
25
|
+
def self.create_boiler_hot_water(model,
|
|
26
|
+
hot_water_loop: nil,
|
|
27
|
+
name: 'Boiler',
|
|
28
|
+
fuel_type: 'NaturalGas',
|
|
29
|
+
draft_type: 'Natural',
|
|
30
|
+
nominal_thermal_efficiency: 0.80,
|
|
31
|
+
eff_curve_temp_eval_var: 'LeavingBoiler',
|
|
32
|
+
flow_mode: 'LeavingSetpointModulated',
|
|
33
|
+
lvg_temp_dsgn_f: 180.0, # 82.22 degrees Celsius
|
|
34
|
+
out_temp_lmt_f: 203.0, # 95.0 degrees Celsius
|
|
35
|
+
min_plr: 0.0,
|
|
36
|
+
max_plr: 1.2,
|
|
37
|
+
opt_plr: 1.0,
|
|
38
|
+
sizing_factor: nil)
|
|
39
|
+
|
|
40
|
+
# create the boiler
|
|
41
|
+
boiler = OpenStudio::Model::BoilerHotWater.new(model)
|
|
42
|
+
if name.nil?
|
|
43
|
+
if hot_water_loop.nil?
|
|
44
|
+
boiler.setName('Boiler')
|
|
45
|
+
else
|
|
46
|
+
boiler.setName("#{hot_water_loop.name} Boiler")
|
|
47
|
+
end
|
|
48
|
+
else
|
|
49
|
+
boiler.setName(name)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
if fuel_type.nil? || fuel_type == 'Gas'
|
|
53
|
+
boiler.setFuelType('NaturalGas')
|
|
54
|
+
elsif fuel_type == 'Propane' || fuel_type == 'PropaneGas'
|
|
55
|
+
boiler.setFuelType('Propane')
|
|
56
|
+
else
|
|
57
|
+
boiler.setFuelType(fuel_type)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
if nominal_thermal_efficiency.nil?
|
|
61
|
+
boiler.setNominalThermalEfficiency(0.8)
|
|
62
|
+
else
|
|
63
|
+
boiler.setNominalThermalEfficiency(nominal_thermal_efficiency)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
if eff_curve_temp_eval_var.nil?
|
|
67
|
+
boiler.setEfficiencyCurveTemperatureEvaluationVariable('LeavingBoiler')
|
|
68
|
+
else
|
|
69
|
+
boiler.setEfficiencyCurveTemperatureEvaluationVariable(eff_curve_temp_eval_var)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
if flow_mode.nil?
|
|
73
|
+
boiler.setBoilerFlowMode('LeavingSetpointModulated')
|
|
74
|
+
else
|
|
75
|
+
boiler.setBoilerFlowMode(flow_mode)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
if model.version < OpenStudio::VersionString.new('3.0.0')
|
|
79
|
+
if lvg_temp_dsgn_f.nil?
|
|
80
|
+
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(180.0, 'F', 'C').get)
|
|
81
|
+
else
|
|
82
|
+
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(lvg_temp_dsgn_f, 'F', 'C').get)
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
if out_temp_lmt_f.nil?
|
|
87
|
+
boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(203.0, 'F', 'C').get)
|
|
88
|
+
else
|
|
89
|
+
boiler.setWaterOutletUpperTemperatureLimit(OpenStudio.convert(out_temp_lmt_f, 'F', 'C').get)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# logic to set different defaults for condensing boilers if not specified
|
|
93
|
+
if draft_type == 'Condensing'
|
|
94
|
+
if model.version < OpenStudio::VersionString.new('3.0.0') && lvg_temp_dsgn_f.nil?
|
|
95
|
+
# default to 120 degrees Fahrenheit (48.49 degrees Celsius)
|
|
96
|
+
boiler.setDesignWaterOutletTemperature(OpenStudio.convert(120.0, 'F', 'C').get)
|
|
97
|
+
end
|
|
98
|
+
boiler.setNominalThermalEfficiency(0.96) if nominal_thermal_efficiency.nil?
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
if min_plr.nil?
|
|
102
|
+
boiler.setMinimumPartLoadRatio(0.0)
|
|
103
|
+
else
|
|
104
|
+
boiler.setMinimumPartLoadRatio(min_plr)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
if max_plr.nil?
|
|
108
|
+
boiler.setMaximumPartLoadRatio(1.2)
|
|
109
|
+
else
|
|
110
|
+
boiler.setMaximumPartLoadRatio(max_plr)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
if opt_plr.nil?
|
|
114
|
+
boiler.setOptimumPartLoadRatio(1.0)
|
|
115
|
+
else
|
|
116
|
+
boiler.setOptimumPartLoadRatio(opt_plr)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
boiler.setSizingFactor(sizing_factor) unless sizing_factor.nil?
|
|
120
|
+
|
|
121
|
+
# add to supply side of hot water loop if specified
|
|
122
|
+
hot_water_loop&.addSupplyBranchForComponent(boiler)
|
|
123
|
+
|
|
124
|
+
return boiler
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Return the capacity in W of a BoilerHotWater
|
|
128
|
+
#
|
|
129
|
+
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
130
|
+
# @return [Double] capacity in W
|
|
131
|
+
def self.boiler_hot_water_get_capacity(boiler_hot_water)
|
|
132
|
+
capacity_w = nil
|
|
133
|
+
if boiler_hot_water.nominalCapacity.is_initialized
|
|
134
|
+
capacity_w = boiler_hot_water.nominalCapacity.get
|
|
135
|
+
elsif boiler_hot_water.autosizedNominalCapacity.is_initialized
|
|
136
|
+
capacity_w = boiler_hot_water.autosizedNominalCapacity.get
|
|
137
|
+
else
|
|
138
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.boiler_hot_water', "For #{boiler_hot_water.name} capacity is not available.")
|
|
139
|
+
return capacity_w
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
return capacity_w
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Return the design water flow rate in m^3/s of a BoilerHotWater
|
|
146
|
+
#
|
|
147
|
+
# @param boiler_hot_water [OpenStudio::Model::BoilerHotWater] hot water boiler object
|
|
148
|
+
# @return [Double] design water flow rate in m^3/s
|
|
149
|
+
def self.boiler_hot_water_get_water_flow_rate(boiler_hot_water)
|
|
150
|
+
design_water_flow_rate_m3_per_s = nil
|
|
151
|
+
if boiler_hot_water.designWaterFlowRate.is_initialized
|
|
152
|
+
design_water_flow_rate_m3_per_s = boiler_hot_water.designWaterFlowRate.get
|
|
153
|
+
elsif boiler_hot_water.autosizedDesignWaterFlowRate.is_initialized
|
|
154
|
+
design_water_flow_rate_m3_per_s = boiler_hot_water.autosizedDesignWaterFlowRate.get
|
|
155
|
+
else
|
|
156
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.HVAC.boiler_hot_water', "For #{boiler_hot_water.name} design water flow rate is not available.")
|
|
157
|
+
return design_water_flow_rate_m3_per_s
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
return design_water_flow_rate_m3_per_s
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|