openstudio-standards 0.8.3 → 0.8.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +30 -30
- data/data/geometry/ASHRAECourthouse.osm +22 -22
- data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
- data/data/geometry/DEER_Asm.osm +1 -1
- data/data/geometry/DEER_ECC.osm +1 -1
- data/data/geometry/DEER_EPr.osm +1 -1
- data/data/geometry/DEER_ERC.osm +1 -1
- data/data/geometry/DEER_ESe.osm +1 -1
- data/data/geometry/DEER_EUn.osm +1 -1
- data/data/geometry/DEER_Hsp.osm +1 -1
- data/data/geometry/DEER_Htl.osm +1 -1
- data/data/geometry/DEER_MBT.osm +1 -1
- data/data/geometry/DEER_MFm.osm +1 -1
- data/data/geometry/DEER_Nrs.osm +1 -1
- data/data/geometry/DEER_OfL.osm +1 -1
- data/data/geometry/DEER_OfS.osm +1 -1
- data/data/geometry/DEER_RFF.osm +1 -1
- data/data/geometry/DEER_RSD.osm +1 -1
- data/data/geometry/DEER_Rt3.osm +1 -1
- data/data/geometry/DEER_RtS.osm +1 -1
- data/data/standards/export_OpenStudio_libraries.rb +2 -3
- data/data/standards/test_performance_expected_dd_results.csv +42 -42
- data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
- data/lib/openstudio-standards/btap/activity.rb +480 -0
- data/lib/openstudio-standards/btap/attributes.rb +166 -0
- data/lib/openstudio-standards/btap/bridging.rb +561 -1402
- data/lib/openstudio-standards/btap/btap.rb +4 -2
- data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
- data/lib/openstudio-standards/btap/common_paths.rb +81 -0
- data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +52 -0
- data/lib/openstudio-standards/btap/common_resources/Constructions.csv +37 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +1270 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +2256 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +2315 -0
- data/lib/openstudio-standards/btap/common_resources/hvac_vent_ahu.csv +925 -0
- data/lib/openstudio-standards/btap/common_resources/lighting.csv +364 -0
- data/lib/openstudio-standards/btap/common_resources/lighting_sets.csv +2667 -0
- data/lib/openstudio-standards/btap/common_resources/locations.csv +75 -0
- data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/materials_hvac.csv +1686 -0
- data/lib/openstudio-standards/btap/common_resources/materials_lighting.csv +267 -0
- data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/costing/README.md +502 -0
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +469 -0
- data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +359 -0
- data/lib/openstudio-standards/btap/costing/btap_workflow.rb +117 -0
- data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +11 -0
- data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +136 -0
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +173 -0
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +354 -0
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +314 -0
- data/lib/openstudio-standards/btap/costing/dummy.epw +8768 -0
- data/lib/openstudio-standards/btap/costing/dummy.osm +5320 -0
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +215 -0
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2584 -0
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +156 -0
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +209 -0
- data/lib/openstudio-standards/btap/costing/mech_sizing.json +502 -0
- data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +42 -0
- data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +225 -0
- data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +28705 -0
- data/lib/openstudio-standards/btap/costing/nv_costing.rb +547 -0
- data/lib/openstudio-standards/btap/costing/parallel_tests.rb +92 -0
- data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +687 -0
- data/lib/openstudio-standards/btap/costing/shw_costing.rb +705 -0
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -0
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +27 -0
- data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +80 -0
- data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2616 -0
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- data/lib/openstudio-standards/constructions/modify.rb +2 -1
- data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
- data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
- data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
- data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
- data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
- data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
- data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
- data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
- data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
- data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
- data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
- data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
- data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
- data/lib/openstudio-standards/hvac/components/component.rb +39 -0
- data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
- data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
- data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
- data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
- data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
- data/lib/openstudio-standards/hvac/conversions.rb +222 -0
- data/lib/openstudio-standards/hvac/curves.rb +192 -0
- data/lib/openstudio-standards/hvac/helpers.rb +357 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
- data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
- data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
- data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
- data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
- data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
- data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
- data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
- data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
- data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
- data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
- data/lib/openstudio-standards/standards/Standards.Model.rb +45 -20
- data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
- data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +7 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
- data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
- data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +21 -37
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +68 -27
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +64 -25
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +9 -14
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +115 -112
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +637 -249
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +75 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +25 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartmentMult.osm +14272 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2015_table_c1.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +437 -437
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems.json +516 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems_including_sys5.json +588 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +489 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +18 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +48 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +35 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +34 -23
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +8 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +68 -150
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +444 -134
- data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +61 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +38 -38
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +17 -8
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +71 -71
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
- data/lib/openstudio-standards/standards/necb/README.md +343 -0
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +206 -32
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +75 -43
- data/lib/openstudio-standards/standards/necb/common/eccc_electric_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/nir_gas_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/system_types.yaml +0 -0
- data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
- data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
- data/lib/openstudio-standards/utilities/logging.rb +18 -14
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/modify.rb +2 -2
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +67 -38
- metadata +141 -50
- data/lib/openstudio-standards/hvac/components/create.rb +0 -169
- data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
|
@@ -296,6 +296,7 @@ class ECMS
|
|
|
296
296
|
outdoor_vrf_unit.setMinimumHeatPumpPartLoadRatio(0.5)
|
|
297
297
|
outdoor_vrf_unit.setCondenserType(condenser_type)
|
|
298
298
|
outdoor_vrf_unit.setCrankcaseHeaterPowerperCompressor(1.0e-6)
|
|
299
|
+
outdoor_vrf_unit.setMinimumOutdoorTemperatureinCoolingMode(-10)
|
|
299
300
|
heat_defrost_eir_ft = nil
|
|
300
301
|
if ecm_name
|
|
301
302
|
search_criteria = {}
|
|
@@ -516,7 +517,7 @@ class ECMS
|
|
|
516
517
|
|
|
517
518
|
# Create one hot-water loop for hot-water baseboards if required
|
|
518
519
|
hw_loop = nil
|
|
519
|
-
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water'
|
|
520
|
+
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water' || standard.fuel_type_set.force_airloop_hot_water
|
|
520
521
|
|
|
521
522
|
# Update system zones map if needed
|
|
522
523
|
system_zones_map = update_system_zones_map_keys(system_zones_map,'sys_1')
|
|
@@ -537,6 +538,7 @@ class ECMS
|
|
|
537
538
|
system_doas_flags: system_doas_flags)
|
|
538
539
|
sys_supp_htg_eqpt_type = 'coil_electric'
|
|
539
540
|
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
|
541
|
+
sys_supp_htg_eqpt_type = 'coil_hw' if standard.fuel_type_set.force_airloop_hot_water
|
|
540
542
|
airloop,clg_dx_coil,htg_dx_coil,return_fan = add_air_system(model: model,
|
|
541
543
|
zones: zones,
|
|
542
544
|
sys_abbr: sys_info['sys_abbr'],
|
|
@@ -547,7 +549,8 @@ class ECMS
|
|
|
547
549
|
sys_clg_eqpt_type: air_sys_eqpt_type,
|
|
548
550
|
sys_supp_fan_type: sys_info['sys_supp_fan_type'],
|
|
549
551
|
sys_ret_fan_type: sys_info['sys_ret_fan_type'],
|
|
550
|
-
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type']
|
|
552
|
+
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type'],
|
|
553
|
+
hw_loop: hw_loop)
|
|
551
554
|
# Appy performance curves
|
|
552
555
|
if air_sys_eqpt_type == 'ccashp'
|
|
553
556
|
eqpt_name = 'Mitsubishi_Hyper_Heating_VRF_Outdoor_Unit RTU'
|
|
@@ -740,7 +743,7 @@ class ECMS
|
|
|
740
743
|
|
|
741
744
|
# =============================================================================================================================
|
|
742
745
|
# create air system heating equipment
|
|
743
|
-
def create_air_sys_htg_eqpt(model, htg_eqpt_type)
|
|
746
|
+
def create_air_sys_htg_eqpt(model, htg_eqpt_type, hw_loop = nil)
|
|
744
747
|
always_on = model.alwaysOnDiscreteSchedule
|
|
745
748
|
htg_eqpt = nil
|
|
746
749
|
case htg_eqpt_type.downcase
|
|
@@ -769,6 +772,7 @@ class ECMS
|
|
|
769
772
|
when 'coil_hw'
|
|
770
773
|
htg_eqpt = OpenStudio::Model::CoilHeatingWater.new(model)
|
|
771
774
|
htg_eqpt.setName('CoilHeatingWater')
|
|
775
|
+
hw_loop.addDemandBranchForComponent(htg_eqpt) unless hw_loop.nil?
|
|
772
776
|
end
|
|
773
777
|
|
|
774
778
|
return htg_eqpt
|
|
@@ -786,7 +790,8 @@ class ECMS
|
|
|
786
790
|
sys_clg_eqpt_type:,
|
|
787
791
|
sys_supp_fan_type:,
|
|
788
792
|
sys_ret_fan_type:,
|
|
789
|
-
sys_setpoint_mgr_type
|
|
793
|
+
sys_setpoint_mgr_type:,
|
|
794
|
+
hw_loop: nil)
|
|
790
795
|
|
|
791
796
|
# create all the needed components and the air loop
|
|
792
797
|
airloop = create_airloop(model, sys_vent_type)
|
|
@@ -796,7 +801,7 @@ class ECMS
|
|
|
796
801
|
return_fan = create_air_sys_fan(model, sys_ret_fan_type)
|
|
797
802
|
return_fan.setName('Return Fan') if return_fan
|
|
798
803
|
htg_eqpt = create_air_sys_htg_eqpt(model, sys_htg_eqpt_type)
|
|
799
|
-
supp_htg_eqpt = create_air_sys_htg_eqpt(model, sys_supp_htg_eqpt_type)
|
|
804
|
+
supp_htg_eqpt = create_air_sys_htg_eqpt(model, sys_supp_htg_eqpt_type, hw_loop)
|
|
800
805
|
clg_eqpt = create_air_sys_clg_eqpt(model, sys_clg_eqpt_type)
|
|
801
806
|
# add components to the air loop
|
|
802
807
|
clg_eqpt.addToNode(airloop.supplyOutletNode) if clg_eqpt
|
|
@@ -823,7 +828,10 @@ class ECMS
|
|
|
823
828
|
sys_name_pars['sys_rf'] = 'none'
|
|
824
829
|
sys_name_pars['sys_rf'] = 'cv' if sys_ret_fan_type == 'constant_volume'
|
|
825
830
|
sys_name_pars['sys_rf'] = 'vv' if sys_ret_fan_type == 'variable_volume'
|
|
826
|
-
assign_base_sys_name(
|
|
831
|
+
assign_base_sys_name( air_loop: airloop,
|
|
832
|
+
sys_abbr: sys_abbr,
|
|
833
|
+
sys_oa: sys_vent_type,
|
|
834
|
+
sys_name_pars: sys_name_pars)
|
|
827
835
|
return airloop, clg_eqpt, htg_eqpt, return_fan
|
|
828
836
|
end
|
|
829
837
|
|
|
@@ -1236,11 +1244,12 @@ class ECMS
|
|
|
1236
1244
|
|
|
1237
1245
|
# Create one hot-water loop for hot-water baseboards if required
|
|
1238
1246
|
hw_loop = nil
|
|
1239
|
-
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water'
|
|
1247
|
+
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water' || standard.fuel_type_set.force_airloop_hot_water
|
|
1240
1248
|
|
|
1241
1249
|
# Set supplemental heating for air loop
|
|
1242
1250
|
sys_supp_htg_eqpt_type = 'coil_electric'
|
|
1243
1251
|
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
|
1252
|
+
sys_supp_htg_eqpt_type = 'coil_hw' if standard.fuel_type_set.force_airloop_hot_water
|
|
1244
1253
|
systems = []
|
|
1245
1254
|
system_zones_map.sort.each do |sys_name, zones|
|
|
1246
1255
|
sys_info = air_sys_comps_assumptions(sys_name: sys_name,
|
|
@@ -1258,7 +1267,8 @@ class ECMS
|
|
|
1258
1267
|
sys_clg_eqpt_type: 'ccashp',
|
|
1259
1268
|
sys_supp_fan_type: sys_info['sys_supp_fan_type'],
|
|
1260
1269
|
sys_ret_fan_type: sys_info['sys_ret_fan_type'],
|
|
1261
|
-
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type']
|
|
1270
|
+
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type'],
|
|
1271
|
+
hw_loop: hw_loop
|
|
1262
1272
|
)
|
|
1263
1273
|
# Apply performance curves
|
|
1264
1274
|
eqpt_name = 'Mitsubishi_Hyper_Heating_VRF_Outdoor_Unit RTU'
|
|
@@ -1417,12 +1427,16 @@ class ECMS
|
|
|
1417
1427
|
ecm_system_zones_map_option:,
|
|
1418
1428
|
standard:)
|
|
1419
1429
|
hw_loop = nil
|
|
1430
|
+
if standard.fuel_type_set.force_airloop_hot_water || standard.fuel_type_set.necb_reference_hp_supp_fuel.to_s.downcase == "hot water"
|
|
1431
|
+
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set)
|
|
1432
|
+
end
|
|
1420
1433
|
|
|
1421
1434
|
# Get the heating fuel type from the system fuels object defined by the standards object
|
|
1422
1435
|
heating_fuel = standard.fuel_type_set.ecm_fueltype
|
|
1423
1436
|
# Set supplemental heaing for airloop
|
|
1424
1437
|
sys_supp_htg_eqpt_type = 'coil_electric'
|
|
1425
1438
|
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
|
1439
|
+
sys_supp_htg_eqpt_type = 'coil_hw' if standard.fuel_type_set.force_airloop_hot_water || standard.fuel_type_set.necb_reference_hp_supp_fuel.to_s.downcase == "hot water"
|
|
1426
1440
|
# Update system zones map if needed
|
|
1427
1441
|
system_zones_map = update_system_zones_map_keys(system_zones_map,'sys_1')
|
|
1428
1442
|
system_zones_map = update_system_zones_map(model,system_zones_map,ecm_system_zones_map_option,'sys_1') if ecm_system_zones_map_option != 'NECB_Default'
|
|
@@ -1445,7 +1459,8 @@ class ECMS
|
|
|
1445
1459
|
sys_clg_eqpt_type: 'ashp',
|
|
1446
1460
|
sys_supp_fan_type: sys_info['sys_supp_fan_type'],
|
|
1447
1461
|
sys_ret_fan_type: sys_info['sys_ret_fan_type'],
|
|
1448
|
-
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type']
|
|
1462
|
+
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type'],
|
|
1463
|
+
hw_loop: hw_loop)
|
|
1449
1464
|
eqpt_name = 'HS11_PTHP'
|
|
1450
1465
|
coil_cooling_dx_single_speed_apply_curves(clg_dx_coil,eqpt_name)
|
|
1451
1466
|
coil_heating_dx_single_speed_apply_curves(htg_dx_coil,eqpt_name)
|
|
@@ -1488,7 +1503,7 @@ class ECMS
|
|
|
1488
1503
|
# =============================================================================================================================
|
|
1489
1504
|
# Apply efficiencies and performance curves for ECM "hs11_ashp_pthp"
|
|
1490
1505
|
def apply_efficiency_ecm_hs11_ashp_pthp(model,standard)
|
|
1491
|
-
fr_backup_coil_cap_as_dx_coil_cap = 0.5 # fraction of electric backup heating coil capacity assigned to dx heating coil
|
|
1506
|
+
fr_backup_coil_cap_as_dx_coil_cap = 0.5 # fraction of electric or hot-water backup heating coil capacity assigned to dx heating coil
|
|
1492
1507
|
apply_efficiency_ecm_hs12_ashp_baseboard(model,standard)
|
|
1493
1508
|
pthp_eqpt_name = 'HS11_PTHP'
|
|
1494
1509
|
model.getAirLoopHVACs.sort.each do |isys|
|
|
@@ -1568,11 +1583,12 @@ class ECMS
|
|
|
1568
1583
|
|
|
1569
1584
|
# Create one hot-water loop for hot-water baseboards if required
|
|
1570
1585
|
hw_loop = nil
|
|
1571
|
-
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water'
|
|
1586
|
+
hw_loop = add_hotwater_loop(model: model, fuel_type_set: standard.fuel_type_set) if standard.fuel_type_set.baseboard_type == 'Hot Water' || standard.fuel_type_set.force_airloop_hot_water
|
|
1572
1587
|
|
|
1573
1588
|
# Set supplemental heating fuel for airloop
|
|
1574
1589
|
sys_supp_htg_eqpt_type = 'coil_electric'
|
|
1575
1590
|
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
|
1591
|
+
sys_supp_htg_eqpt_type = 'coil_hw' if standard.fuel_type_set.force_airloop_hot_water
|
|
1576
1592
|
systems = []
|
|
1577
1593
|
system_zones_map.sort.each do |sys_name, zones|
|
|
1578
1594
|
sys_info = air_sys_comps_assumptions(sys_name: sys_name,
|
|
@@ -1589,7 +1605,8 @@ class ECMS
|
|
|
1589
1605
|
sys_clg_eqpt_type: 'ashp',
|
|
1590
1606
|
sys_supp_fan_type: sys_info['sys_supp_fan_type'],
|
|
1591
1607
|
sys_ret_fan_type: sys_info['sys_ret_fan_type'],
|
|
1592
|
-
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type']
|
|
1608
|
+
sys_setpoint_mgr_type: sys_info['sys_setpoint_mgr_type'],
|
|
1609
|
+
hw_loop: hw_loop)
|
|
1593
1610
|
eqpt_name = 'NECB2015_ASHP'
|
|
1594
1611
|
coil_cooling_dx_single_speed_apply_curves(clg_dx_coil,eqpt_name)
|
|
1595
1612
|
coil_heating_dx_single_speed_apply_curves(htg_dx_coil,eqpt_name)
|
|
@@ -1814,7 +1831,7 @@ class ECMS
|
|
|
1814
1831
|
loop_heat_rej_eqpt_type: 'none',
|
|
1815
1832
|
loop_pump_type: 'variable_speed',
|
|
1816
1833
|
loop_spm_type: 'Scheduled',
|
|
1817
|
-
loop_setpoint:
|
|
1834
|
+
loop_setpoint: 60.0,
|
|
1818
1835
|
loop_temp_diff: 5.0)
|
|
1819
1836
|
model.getCoilHeatingWaters.sort.each {|coil| hw_loop.addDemandBranchForComponent(coil)}
|
|
1820
1837
|
hcapf_curve_name = "HEATPUMP_WATERTOWATER_HCAPF"
|
|
@@ -2124,7 +2141,7 @@ class ECMS
|
|
|
2124
2141
|
loop_heat_rej_eqpt_type: 'none',
|
|
2125
2142
|
loop_pump_type: 'variable_speed',
|
|
2126
2143
|
loop_spm_type: 'Scheduled',
|
|
2127
|
-
loop_setpoint:
|
|
2144
|
+
loop_setpoint: 60.0,
|
|
2128
2145
|
loop_temp_diff: 5.0)
|
|
2129
2146
|
# set additional parameters for heating heat pump
|
|
2130
2147
|
hw_loop_htg_eqpt.setCondenserType('AirSoure')
|
|
@@ -2152,7 +2169,7 @@ class ECMS
|
|
|
2152
2169
|
hw_boilers.reverse().each {|boiler| boiler.addToNode(hw_loop_htg_eqpt_outlet_node)}
|
|
2153
2170
|
# add setpoint manager at the exit of the heat pump heating comp
|
|
2154
2171
|
sch = OpenStudio::Model::ScheduleConstant.new(model)
|
|
2155
|
-
sch.setValue(
|
|
2172
|
+
sch.setValue(60.0)
|
|
2156
2173
|
spm = OpenStudio::Model::SetpointManagerScheduled.new(model,sch)
|
|
2157
2174
|
spm.setName("HeatPumpHtgSetpointManager")
|
|
2158
2175
|
spm.addToNode(hw_loop_htg_eqpt_outlet_node)
|
|
@@ -2333,6 +2350,7 @@ class ECMS
|
|
|
2333
2350
|
# Set supplemental heaing for airloop
|
|
2334
2351
|
sys_supp_htg_eqpt_type = 'coil_electric'
|
|
2335
2352
|
sys_supp_htg_eqpt_type = 'coil_gas' if heating_fuel == 'NaturalGas'
|
|
2353
|
+
sys_supp_htg_eqpt_type = 'coil_hw' if standard.fuel_type_set.force_airloop_hot_water
|
|
2336
2354
|
# call ecm HS15 to add the air loop
|
|
2337
2355
|
add_ecm_hs15_cawhp_fancoils(model: model,
|
|
2338
2356
|
system_zones_map: system_zones_map,
|
|
@@ -2364,8 +2382,13 @@ class ECMS
|
|
|
2364
2382
|
search_criteria['name'] = eqpt_name
|
|
2365
2383
|
|
|
2366
2384
|
# Get the capacity
|
|
2367
|
-
|
|
2368
|
-
|
|
2385
|
+
multiplier = nil
|
|
2386
|
+
if ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_single_speed))
|
|
2387
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_single_speed)
|
|
2388
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
2389
|
+
end
|
|
2390
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil_cooling_dx_single_speed, multiplier: multiplier)
|
|
2391
|
+
capacity_w = capacity_w.nil? ? 1.0 : [1.0, capacity_w].max
|
|
2369
2392
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2370
2393
|
|
|
2371
2394
|
# Lookup efficiencies
|
|
@@ -2434,8 +2457,8 @@ class ECMS
|
|
|
2434
2457
|
search_criteria['name'] = eqpt_name
|
|
2435
2458
|
|
|
2436
2459
|
# Get the capacity
|
|
2437
|
-
capacity_w =
|
|
2438
|
-
capacity_w = [1.0,capacity_w].max
|
|
2460
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_get_paired_coil_cooling_capacity(coil_heating_dx_single_speed)
|
|
2461
|
+
capacity_w = capacity_w.nil? ? 1.0 : [1.0, capacity_w].max
|
|
2439
2462
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2440
2463
|
|
|
2441
2464
|
# Lookup efficiencies
|
|
@@ -2509,7 +2532,7 @@ class ECMS
|
|
|
2509
2532
|
successfully_set_all_properties = true
|
|
2510
2533
|
|
|
2511
2534
|
# Get the capacity
|
|
2512
|
-
capacity_w =
|
|
2535
|
+
capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
|
|
2513
2536
|
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
2514
2537
|
|
|
2515
2538
|
# Lookup performance curves
|
|
@@ -2714,8 +2737,11 @@ class ECMS
|
|
|
2714
2737
|
search_criteria = {}
|
|
2715
2738
|
search_criteria['name'] = eqpt_name
|
|
2716
2739
|
# Get the capacity
|
|
2717
|
-
capacity_w =
|
|
2718
|
-
|
|
2740
|
+
capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(airconditioner_variablerefrigerantflow)
|
|
2741
|
+
if airconditioner_variablerefrigerantflow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
2742
|
+
airconditioner_variablerefrigerantflow.setGrossRatedTotalCoolingCapacity(capacity_w)
|
|
2743
|
+
end
|
|
2744
|
+
capacity_w = [1.0, capacity_w].max
|
|
2719
2745
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2720
2746
|
|
|
2721
2747
|
# Lookup performance curves
|
|
@@ -2845,8 +2871,11 @@ class ECMS
|
|
|
2845
2871
|
search_criteria = {}
|
|
2846
2872
|
search_criteria['name'] = eqpt_name
|
|
2847
2873
|
# Get the capacity
|
|
2848
|
-
capacity_w =
|
|
2849
|
-
|
|
2874
|
+
capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_heating_capacity(airconditioner_variablerefrigerantflow)
|
|
2875
|
+
if airconditioner_variablerefrigerantflow.autosizedGrossRatedHeatingCapacity.is_initialized
|
|
2876
|
+
airconditioner_variablerefrigerantflow.setGrossRatedHeatingCapacity(capacity_w)
|
|
2877
|
+
end
|
|
2878
|
+
capacity_w = [1.0, capacity_w].max
|
|
2850
2879
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2851
2880
|
|
|
2852
2881
|
# Lookup performance curves
|
|
@@ -2964,8 +2993,12 @@ class ECMS
|
|
|
2964
2993
|
def coil_cooling_dx_single_speed_apply_cop(coil_cooling_dx_single_speed,
|
|
2965
2994
|
search_criteria,
|
|
2966
2995
|
rename = false)
|
|
2967
|
-
|
|
2968
|
-
|
|
2996
|
+
multiplier = nil
|
|
2997
|
+
if ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil_cooling_dx_single_speed))
|
|
2998
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil_cooling_dx_single_speed)
|
|
2999
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
3000
|
+
end
|
|
3001
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil_cooling_dx_single_speed, multiplier: multiplier)
|
|
2969
3002
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2970
3003
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2971
3004
|
|
|
@@ -2985,7 +3018,7 @@ class ECMS
|
|
|
2985
3018
|
# If specified as SEER
|
|
2986
3019
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
2987
3020
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
2988
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3021
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
2989
3022
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
2990
3023
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
2991
3024
|
end
|
|
@@ -2993,7 +3026,7 @@ class ECMS
|
|
|
2993
3026
|
# If specified as EER
|
|
2994
3027
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
2995
3028
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
2996
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3029
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
2997
3030
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
2998
3031
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
2999
3032
|
end
|
|
@@ -3001,7 +3034,7 @@ class ECMS
|
|
|
3001
3034
|
# if specified as SEER (heat pump)
|
|
3002
3035
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
3003
3036
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
3004
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3037
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3005
3038
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3006
3039
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3007
3040
|
end
|
|
@@ -3009,7 +3042,7 @@ class ECMS
|
|
|
3009
3042
|
# If specified as EER (heat pump)
|
|
3010
3043
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
3011
3044
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
3012
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3045
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3013
3046
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3014
3047
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXSingleSpeed', "For #{template}: #{coil_cooling_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3015
3048
|
end
|
|
@@ -3037,7 +3070,7 @@ class ECMS
|
|
|
3037
3070
|
search_criteria,
|
|
3038
3071
|
rename = false)
|
|
3039
3072
|
|
|
3040
|
-
capacity_w =
|
|
3073
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_get_paired_coil_cooling_capacity(coil_heating_dx_single_speed)
|
|
3041
3074
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3042
3075
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3043
3076
|
|
|
@@ -3057,7 +3090,7 @@ class ECMS
|
|
|
3057
3090
|
# If specified as EER
|
|
3058
3091
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3059
3092
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3060
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3093
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3061
3094
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3062
3095
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{template}: #{coil_heating_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3063
3096
|
end
|
|
@@ -3065,7 +3098,7 @@ class ECMS
|
|
|
3065
3098
|
# if specified as HSPF (heat pump)
|
|
3066
3099
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3067
3100
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3068
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3101
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3069
3102
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3070
3103
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{template}: #{coil_heating_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3071
3104
|
end
|
|
@@ -3073,7 +3106,7 @@ class ECMS
|
|
|
3073
3106
|
# If specified as EER (heat pump)
|
|
3074
3107
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3075
3108
|
min_eer = props['minimum_full_load_efficiency']
|
|
3076
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3109
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3077
3110
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3078
3111
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{template}: #{coil_heating_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3079
3112
|
end
|
|
@@ -3081,7 +3114,7 @@ class ECMS
|
|
|
3081
3114
|
# If specified as COP
|
|
3082
3115
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3083
3116
|
cop_min = props['minimum_coefficient_of_performance_heating']
|
|
3084
|
-
cop = cop_heating_to_cop_heating_no_fan(cop_min, capacity_w)
|
|
3117
|
+
cop = OpenstudioStandards::HVAC.cop_heating_to_cop_heating_no_fan(cop_min, capacity_w)
|
|
3085
3118
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3086
3119
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXSingleSpeed', "For #{template}: #{coil_heating_dx_single_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3087
3120
|
end
|
|
@@ -3122,7 +3155,7 @@ class ECMS
|
|
|
3122
3155
|
# If specified as SEER
|
|
3123
3156
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
3124
3157
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
3125
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3158
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3126
3159
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3127
3160
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{template}: #{coil_cooling_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3128
3161
|
end
|
|
@@ -3130,7 +3163,7 @@ class ECMS
|
|
|
3130
3163
|
# If specified as EER
|
|
3131
3164
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
3132
3165
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
3133
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3166
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3134
3167
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3135
3168
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{template}: #{coil_cooling_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3136
3169
|
end
|
|
@@ -3138,7 +3171,7 @@ class ECMS
|
|
|
3138
3171
|
# if specified as SEER (heat pump)
|
|
3139
3172
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
3140
3173
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
3141
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3174
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3142
3175
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3143
3176
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{template}: #{coil_cooling_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3144
3177
|
end
|
|
@@ -3146,7 +3179,7 @@ class ECMS
|
|
|
3146
3179
|
# If specified as EER (heat pump)
|
|
3147
3180
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
3148
3181
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
3149
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3182
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3150
3183
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3151
3184
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilCoolingDXVariableSpeed', "For #{template}: #{coil_cooling_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3152
3185
|
end
|
|
@@ -3194,7 +3227,7 @@ class ECMS
|
|
|
3194
3227
|
# If specified as EER
|
|
3195
3228
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3196
3229
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3197
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3230
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3198
3231
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3199
3232
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{template}: #{coil_heating_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3200
3233
|
end
|
|
@@ -3202,7 +3235,7 @@ class ECMS
|
|
|
3202
3235
|
# if specified as HSPF (heat pump)
|
|
3203
3236
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3204
3237
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3205
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3238
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3206
3239
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3207
3240
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{template}: #{coil_heating_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3208
3241
|
end
|
|
@@ -3210,7 +3243,7 @@ class ECMS
|
|
|
3210
3243
|
# If specified as EER (heat pump)
|
|
3211
3244
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3212
3245
|
min_eer = props['minimum_full_load_efficiency']
|
|
3213
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3246
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3214
3247
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3215
3248
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{template}: #{coil_heating_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3216
3249
|
end
|
|
@@ -3218,7 +3251,7 @@ class ECMS
|
|
|
3218
3251
|
# If specified as COP
|
|
3219
3252
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3220
3253
|
min_cop = props['minimum_coefficient_of_performance_heating']
|
|
3221
|
-
cop = cop_heating_to_cop_heating_no_fan(min_cop, capacity_w)
|
|
3254
|
+
cop = OpenstudioStandards::HVAC.cop_heating_to_cop_heating_no_fan(min_cop, capacity_w)
|
|
3222
3255
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3223
3256
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingDXVariableSpeed', "For #{template}: #{coil_heating_dx_variable_speed.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3224
3257
|
end
|
|
@@ -3239,7 +3272,10 @@ class ECMS
|
|
|
3239
3272
|
search_criteria,
|
|
3240
3273
|
rename = false)
|
|
3241
3274
|
|
|
3242
|
-
capacity_w =
|
|
3275
|
+
capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_cooling_capacity(airconditioner_variablerefrigerantflow)
|
|
3276
|
+
if airconditioner_variablerefrigerantflow.autosizedGrossRatedTotalCoolingCapacity.is_initialized
|
|
3277
|
+
airconditioner_variablerefrigerantflow.setGrossRatedTotalCoolingCapacity(capacity_w)
|
|
3278
|
+
end
|
|
3243
3279
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3244
3280
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3245
3281
|
|
|
@@ -3259,7 +3295,7 @@ class ECMS
|
|
|
3259
3295
|
# If specified as EER
|
|
3260
3296
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3261
3297
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3262
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3298
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3263
3299
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3264
3300
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3265
3301
|
end
|
|
@@ -3267,7 +3303,7 @@ class ECMS
|
|
|
3267
3303
|
# if specified as HSPF (heat pump)
|
|
3268
3304
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3269
3305
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3270
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3306
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3271
3307
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3272
3308
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3273
3309
|
end
|
|
@@ -3275,7 +3311,7 @@ class ECMS
|
|
|
3275
3311
|
# If specified as EER (heat pump)
|
|
3276
3312
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3277
3313
|
min_eer = props['minimum_full_load_efficiency']
|
|
3278
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3314
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3279
3315
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3280
3316
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3281
3317
|
end
|
|
@@ -3308,7 +3344,10 @@ class ECMS
|
|
|
3308
3344
|
search_criteria,
|
|
3309
3345
|
rename = false)
|
|
3310
3346
|
|
|
3311
|
-
capacity_w =
|
|
3347
|
+
capacity_w = OpenstudioStandards::HVAC.air_conditioner_variable_refrigerant_flow_get_heating_capacity(airconditioner_variablerefrigerantflow)
|
|
3348
|
+
if airconditioner_variablerefrigerantflow.autosizedGrossRatedHeatingCapacity.is_initialized
|
|
3349
|
+
airconditioner_variablerefrigerantflow.setGrossRatedHeatingCapacity(capacity_w)
|
|
3350
|
+
end
|
|
3312
3351
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3313
3352
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3314
3353
|
|
|
@@ -3328,7 +3367,7 @@ class ECMS
|
|
|
3328
3367
|
# If specified as EER
|
|
3329
3368
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3330
3369
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3331
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3370
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3332
3371
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3333
3372
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3334
3373
|
end
|
|
@@ -3336,7 +3375,7 @@ class ECMS
|
|
|
3336
3375
|
# if specified as HSPF (heat pump)
|
|
3337
3376
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3338
3377
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3339
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3378
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3340
3379
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3341
3380
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3342
3381
|
end
|
|
@@ -3344,7 +3383,7 @@ class ECMS
|
|
|
3344
3383
|
# If specified as EER (heat pump)
|
|
3345
3384
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3346
3385
|
min_eer = props['minimum_full_load_efficiency']
|
|
3347
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3386
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3348
3387
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3349
3388
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3350
3389
|
end
|
|
@@ -3352,7 +3391,7 @@ class ECMS
|
|
|
3352
3391
|
# If specified as COP
|
|
3353
3392
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3354
3393
|
min_cop = props['minimum_coefficient_of_performance_heating']
|
|
3355
|
-
cop = cop_heating_to_cop_heating_no_fan(min_cop, capacity_w)
|
|
3394
|
+
cop = OpenstudioStandards::HVAC.cop_heating_to_cop_heating_no_fan(min_cop, capacity_w)
|
|
3356
3395
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3357
3396
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3358
3397
|
end
|
|
@@ -3399,57 +3438,6 @@ class ECMS
|
|
|
3399
3438
|
return capacity_w
|
|
3400
3439
|
end
|
|
3401
3440
|
|
|
3402
|
-
# =============================================================================================================================
|
|
3403
|
-
# Find cooling capacity for "AirConditionerVariableRefrigerantFlow" object
|
|
3404
|
-
def airconditioner_variablerefrigerantflow_cooling_find_capacity(airconditioner_variablerefrigerantflow)
|
|
3405
|
-
capacity_w = nil
|
|
3406
|
-
if airconditioner_variablerefrigerantflow.ratedTotalCoolingCapacity.is_initialized
|
|
3407
|
-
capacity_w = airconditioner_variablerefrigerantflow.ratedTotalCoolingCapacity.get
|
|
3408
|
-
elsif airconditioner_variablerefrigerantflow.autosizedRatedTotalCoolingCapacity.is_initialized
|
|
3409
|
-
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalCoolingCapacity.get
|
|
3410
|
-
airconditioner_variablerefrigerantflow.setRatedTotalCoolingCapacity(capacity_w)
|
|
3411
|
-
else
|
|
3412
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} cooling capacity is not available.")
|
|
3413
|
-
return 0.0
|
|
3414
|
-
end
|
|
3415
|
-
|
|
3416
|
-
return capacity_w
|
|
3417
|
-
end
|
|
3418
|
-
|
|
3419
|
-
# =============================================================================================================================
|
|
3420
|
-
# Find heating capacity for "AirConditionerVariableRefrigerantFlow" object
|
|
3421
|
-
def airconditioner_variablerefrigerantflow_heating_find_capacity(airconditioner_variablerefrigerantflow)
|
|
3422
|
-
capacity_w = nil
|
|
3423
|
-
if airconditioner_variablerefrigerantflow.ratedTotalHeatingCapacity.is_initialized
|
|
3424
|
-
capacity_w = airconditioner_variablerefrigerantflow.ratedTotalHeatingCapacity.get
|
|
3425
|
-
elsif airconditioner_variablerefrigerantflow.autosizedRatedTotalHeatingCapacity.is_initialized
|
|
3426
|
-
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalHeatingCapacity.get
|
|
3427
|
-
airconditioner_variablerefrigerantflow.setRatedTotalHeatingCapacity(capacity_w)
|
|
3428
|
-
else
|
|
3429
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} heating capacity is not available.")
|
|
3430
|
-
return 0.0
|
|
3431
|
-
end
|
|
3432
|
-
|
|
3433
|
-
return capacity_w
|
|
3434
|
-
end
|
|
3435
|
-
|
|
3436
|
-
# =============================================================================================================================
|
|
3437
|
-
# Find cooling capacity for "ChillerElectricEIR" object
|
|
3438
|
-
def chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
3439
|
-
capacity_w = nil
|
|
3440
|
-
if chiller_electric_eir.referenceCapacity.is_initialized
|
|
3441
|
-
capacity_w = chiller_electric_eir.referenceCapacity.get
|
|
3442
|
-
elsif chiller_electric_eir.autosizedRererenceCapacity.is_initialized
|
|
3443
|
-
capacity_w = chiller_electric_eir.autosizedRerenceCapacity.get
|
|
3444
|
-
chiller_electric_eir.setReferenceCapacity(capacity_w)
|
|
3445
|
-
else
|
|
3446
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name} capacity not available")
|
|
3447
|
-
return 0.0
|
|
3448
|
-
end
|
|
3449
|
-
|
|
3450
|
-
return capacity_w
|
|
3451
|
-
end
|
|
3452
|
-
|
|
3453
3441
|
# ============================================================================================================================
|
|
3454
3442
|
# Apply boiler efficiency
|
|
3455
3443
|
# This model takes an OS model and a boiler efficiency string or hash sent to it with the following form:
|
|
@@ -3754,10 +3742,17 @@ class ECMS
|
|
|
3754
3742
|
search_criteria['name'] = unitary_cop_copy
|
|
3755
3743
|
coil_name = coil.name.to_s
|
|
3756
3744
|
if (sql_db_vars_map.has_key? coil_name) && !sizing_done then coil.setName(sql_db_vars_map[coil_name]) end
|
|
3745
|
+
|
|
3746
|
+
multiplier = nil
|
|
3747
|
+
if ['PTAC', 'PTHP'].include?(OpenstudioStandards::HVAC.coil_dx_subcategory(coil))
|
|
3748
|
+
thermal_zone = OpenstudioStandards::HVAC.hvac_component_get_thermal_zone(coil)
|
|
3749
|
+
multiplier = thermal_zone.multiplier if !thermal_zone.nil?
|
|
3750
|
+
end
|
|
3751
|
+
|
|
3757
3752
|
if coil_type == 'SingleSpeed'
|
|
3758
|
-
capacity_w =
|
|
3753
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil, multiplier: multiplier)
|
|
3759
3754
|
elsif coil_type == 'MultiSpeed'
|
|
3760
|
-
capacity_w =
|
|
3755
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil, multiplier: multiplier)
|
|
3761
3756
|
end
|
|
3762
3757
|
coil.setName(coil_name)
|
|
3763
3758
|
cop_package = model_find_object(@standards_data['tables']['unitary_cop_ecm'], search_criteria, capacity_w)
|
|
@@ -3789,9 +3784,9 @@ class ECMS
|
|
|
3789
3784
|
if sizing_done
|
|
3790
3785
|
cop = nil
|
|
3791
3786
|
if unitary_cop['minimum_energy_efficiency_ratio']
|
|
3792
|
-
cop = eer_to_cop_no_fan(unitary_cop['minimum_energy_efficiency_ratio'].to_f)
|
|
3787
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(unitary_cop['minimum_energy_efficiency_ratio'].to_f)
|
|
3793
3788
|
elsif unitary_cop['minimum_seasonal_energy_efficiency_ratio']
|
|
3794
|
-
cop = seer_to_cop_no_fan(unitary_cop['minimum_seasonal_energy_efficiency_ratio'].to_f)
|
|
3789
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(unitary_cop['minimum_seasonal_energy_efficiency_ratio'].to_f)
|
|
3795
3790
|
elsif unitary_cop['minimum_coefficient_of_performance_cooling']
|
|
3796
3791
|
cop = unitary_cop['minimum_coefficient_of_performance_cooling'].to_f
|
|
3797
3792
|
end
|
|
@@ -3864,15 +3859,23 @@ class ECMS
|
|
|
3864
3859
|
boiler_fueltype = standard.fuel_type_set.boiler_fueltype
|
|
3865
3860
|
backup_boiler_fueltype = standard.fuel_type_set.backup_boiler_fueltype
|
|
3866
3861
|
baseboard_type = standard.fuel_type_set.baseboard_type
|
|
3862
|
+
heating_coil_type_sys2 = standard.fuel_type_set.heating_coil_type_sys2
|
|
3863
|
+
heating_coil_type_sys3 = standard.fuel_type_set.heating_coil_type_sys3
|
|
3864
|
+
heating_coil_type_sys4 = standard.fuel_type_set.heating_coil_type_sys4
|
|
3865
|
+
heating_coil_type_sys6 = standard.fuel_type_set.heating_coil_type_sys6
|
|
3867
3866
|
mau_heating_coil_type = 'none'
|
|
3868
3867
|
|
|
3869
3868
|
# Create the hot water loop if necessary.
|
|
3870
3869
|
hw_loop = standard.create_hw_loop_if_required(
|
|
3871
|
-
baseboard_type,
|
|
3872
|
-
boiler_fueltype,
|
|
3873
|
-
backup_boiler_fueltype,
|
|
3874
|
-
mau_heating_coil_type,
|
|
3875
|
-
model
|
|
3870
|
+
baseboard_type: baseboard_type,
|
|
3871
|
+
boiler_fueltype: boiler_fueltype,
|
|
3872
|
+
backup_boiler_fueltype: backup_boiler_fueltype,
|
|
3873
|
+
mau_heating_coil_type: mau_heating_coil_type,
|
|
3874
|
+
model: model,
|
|
3875
|
+
heating_coil_type_sys2: heating_coil_type_sys2,
|
|
3876
|
+
heating_coil_type_sys3: heating_coil_type_sys3,
|
|
3877
|
+
heating_coil_type_sys4: heating_coil_type_sys4,
|
|
3878
|
+
heating_coil_type_sys6: heating_coil_type_sys6
|
|
3876
3879
|
)
|
|
3877
3880
|
|
|
3878
3881
|
# Add baseboard heaters to each heated zone.
|