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
|
@@ -298,20 +298,20 @@ class NECB2011
|
|
|
298
298
|
end
|
|
299
299
|
|
|
300
300
|
# Create an ERV
|
|
301
|
-
erv = OpenstudioStandards::HVAC.
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
301
|
+
erv = OpenstudioStandards::HVAC.create_heat_exchanger_air_to_air_sensible_and_latent(air_loop_hvac.model,
|
|
302
|
+
name: "#{air_loop_hvac.name} ERV",
|
|
303
|
+
type: "Rotary",
|
|
304
|
+
economizer_lockout: true,
|
|
305
|
+
supply_air_outlet_temperature_control: true,
|
|
306
|
+
frost_control_type: 'ExhaustOnly',
|
|
307
|
+
sensible_heating_100_eff: 0.5,
|
|
308
|
+
sensible_heating_75_eff: 0.5,
|
|
309
|
+
latent_heating_100_eff: 0.5,
|
|
310
|
+
latent_heating_75_eff: 0.5,
|
|
311
|
+
sensible_cooling_100_eff: 0.5,
|
|
312
|
+
sensible_cooling_75_eff: 0.5,
|
|
313
|
+
latent_cooling_100_eff: 0.5,
|
|
314
|
+
latent_cooling_75_eff: 0.5)
|
|
315
315
|
|
|
316
316
|
erv.setThresholdTemperature(-23.3) # -10F
|
|
317
317
|
erv.setInitialDefrostTimeFraction(0.167)
|
|
@@ -546,7 +546,7 @@ class NECB2011
|
|
|
546
546
|
fluid_type = search_criteria['fluid_type']
|
|
547
547
|
|
|
548
548
|
# Get the capacity
|
|
549
|
-
capacity_w =
|
|
549
|
+
capacity_w = OpenstudioStandards::HVAC.boiler_hot_water_get_capacity(boiler_hot_water)
|
|
550
550
|
|
|
551
551
|
boiler_capacity = capacity_w
|
|
552
552
|
# Use the NECB capacities if the SystemFuels class is not defined (i.e. this method was not called from something
|
|
@@ -611,7 +611,7 @@ class NECB2011
|
|
|
611
611
|
# If specified as AFUE
|
|
612
612
|
unless blr_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
613
613
|
min_afue = blr_props['minimum_annual_fuel_utilization_efficiency']
|
|
614
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
614
|
+
thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
|
|
615
615
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
616
616
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
617
617
|
end
|
|
@@ -626,7 +626,7 @@ class NECB2011
|
|
|
626
626
|
# If specified as combustion efficiency
|
|
627
627
|
unless blr_props['minimum_combustion_efficiency'].nil?
|
|
628
628
|
min_comb_eff = blr_props['minimum_combustion_efficiency']
|
|
629
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
629
|
+
thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
|
|
630
630
|
new_comp_name = "#{boiler_hot_water.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
631
631
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{boiler_hot_water.name}: #{fuel_type} #{fluid_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
632
632
|
end
|
|
@@ -654,7 +654,7 @@ class NECB2011
|
|
|
654
654
|
compressor_type = search_criteria['compressor_type']
|
|
655
655
|
|
|
656
656
|
# Get the chiller capacity
|
|
657
|
-
capacity_w =
|
|
657
|
+
capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
|
|
658
658
|
|
|
659
659
|
# All chillers must be modulating down to 25% of their capacity
|
|
660
660
|
chiller_electric_eir.setChillerFlowMode('LeavingSetpointModulated')
|
|
@@ -737,7 +737,7 @@ class NECB2011
|
|
|
737
737
|
cop = nil
|
|
738
738
|
if chlr_props['minimum_full_load_efficiency']
|
|
739
739
|
kw_per_ton = chlr_props['minimum_full_load_efficiency']
|
|
740
|
-
cop = kw_per_ton_to_cop(kw_per_ton)
|
|
740
|
+
cop = OpenstudioStandards::HVAC.kw_per_ton_to_cop(kw_per_ton)
|
|
741
741
|
chiller_electric_eir.setReferenceCOP(cop)
|
|
742
742
|
else
|
|
743
743
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name}, cannot find minimum full load efficiency, will not be set.")
|
|
@@ -746,14 +746,24 @@ class NECB2011
|
|
|
746
746
|
|
|
747
747
|
# Set cooling tower properties now that the new COP of the chiller is set
|
|
748
748
|
if chiller_electric_eir.name.to_s.include? 'Primary Chiller'
|
|
749
|
+
# Get the cooling tower based on the condenser water loop rather than assume that there is only one cooling tower loop.
|
|
750
|
+
clg_towers = []
|
|
751
|
+
tower_cap = capacity_w * (1.0 + 1.0 / chiller_electric_eir.referenceCOP)
|
|
752
|
+
condenser_loop = chiller_electric_eir.condenserWaterLoop.get
|
|
753
|
+
condenser_loop.supplyComponents.each do |supply_comp|
|
|
754
|
+
if supply_comp.to_CoolingTowerSingleSpeed.is_initialized
|
|
755
|
+
clg_towers << supply_comp.to_CoolingTowerSingleSpeed.get
|
|
756
|
+
end
|
|
757
|
+
end
|
|
749
758
|
# Single speed tower model assumes 25% extra for compressor power
|
|
750
759
|
tower_cap = capacity_w * (1.0 + 1.0 / chiller_electric_eir.referenceCOP)
|
|
751
760
|
if (tower_cap / 1000.0) < 1750
|
|
752
|
-
|
|
761
|
+
clg_towers[0].setNumberofCells(1)
|
|
753
762
|
else
|
|
754
|
-
|
|
763
|
+
clg_towers[0].setNumberofCells((tower_cap / (1000 * 1750) + 0.5).round)
|
|
755
764
|
end
|
|
756
|
-
|
|
765
|
+
# Only apply cooling tower fan power if power is greater than 13kW. This is to avoid EnergyPlus issues with some small cooling towers.
|
|
766
|
+
clg_towers[0].setFanPoweratDesignAirFlowRate(0.015 * tower_cap) if (tower_cap * 0.015 > 13000.0)
|
|
757
767
|
end
|
|
758
768
|
|
|
759
769
|
# Append the name with size and kw/ton
|
|
@@ -776,32 +786,13 @@ class NECB2011
|
|
|
776
786
|
return search_criteria
|
|
777
787
|
end
|
|
778
788
|
|
|
779
|
-
# find furnace capacity
|
|
780
|
-
#
|
|
781
|
-
# @return [Hash] used for standards_lookup_table(model)
|
|
782
|
-
def coil_heating_gas_find_capacity(coil_heating_gas)
|
|
783
|
-
# Get the coil capacity
|
|
784
|
-
capacity_w = nil
|
|
785
|
-
if coil_heating_gas.nominalCapacity.is_initialized
|
|
786
|
-
capacity_w = coil_heating_gas.nominalCapacity.get
|
|
787
|
-
elsif coil_heating_gas.autosizedNominalCapacity.is_initialized
|
|
788
|
-
capacity_w = coil_heating_gas.autosizedNominalCapacity.get
|
|
789
|
-
else
|
|
790
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.CoilHeatingGas', "For #{coil_heating_gas.name} capacity is not available, cannot apply efficiency standard.")
|
|
791
|
-
successfully_set_all_properties = false
|
|
792
|
-
return successfully_set_all_properties
|
|
793
|
-
end
|
|
794
|
-
|
|
795
|
-
return capacity_w
|
|
796
|
-
end
|
|
797
|
-
|
|
798
789
|
# Finds lookup object in standards and return minimum thermal efficiency
|
|
799
790
|
#
|
|
800
791
|
# @return [Double] minimum thermal efficiency
|
|
801
792
|
def coil_heating_gas_standard_minimum_thermal_efficiency(coil_heating_gas, rename = false)
|
|
802
793
|
# Get the coil properties
|
|
803
794
|
search_criteria = coil_heating_gas_find_search_criteria
|
|
804
|
-
capacity_w =
|
|
795
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_gas_get_capacity(coil_heating_gas)
|
|
805
796
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
806
797
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
807
798
|
|
|
@@ -824,7 +815,7 @@ class NECB2011
|
|
|
824
815
|
# If specified as AFUE
|
|
825
816
|
unless coil_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
826
817
|
min_afue = coil_props['minimum_annual_fuel_utilization_efficiency']
|
|
827
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
818
|
+
thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
|
|
828
819
|
new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
829
820
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
830
821
|
end
|
|
@@ -839,7 +830,7 @@ class NECB2011
|
|
|
839
830
|
# If specified as combustion efficiency
|
|
840
831
|
unless coil_props['minimum_combustion_efficiency'].nil?
|
|
841
832
|
min_comb_eff = coil_props['minimum_combustion_efficiency']
|
|
842
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
833
|
+
thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
|
|
843
834
|
new_comp_name = "#{coil_heating_gas.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
844
835
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGas', "For #{template}: #{coil_heating_gas.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
845
836
|
end
|
|
@@ -868,7 +859,7 @@ class NECB2011
|
|
|
868
859
|
search_criteria = coil_heating_gas_find_search_criteria
|
|
869
860
|
|
|
870
861
|
# Get the coil capacity
|
|
871
|
-
capacity_w =
|
|
862
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_gas_get_capacity(coil_heating_gas)
|
|
872
863
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
873
864
|
|
|
874
865
|
# lookup properties
|
|
@@ -910,7 +901,7 @@ class NECB2011
|
|
|
910
901
|
|
|
911
902
|
# Define the criteria to find the properties in the hvac standards data set
|
|
912
903
|
search_criteria = coil_dx_find_search_criteria(coil_cooling_dx_multi_speed)
|
|
913
|
-
capacity_w =
|
|
904
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil_cooling_dx_multi_speed)
|
|
914
905
|
|
|
915
906
|
# Find design outside air flow rate and flow fraction
|
|
916
907
|
controller_oa = nil
|
|
@@ -1000,7 +991,7 @@ class NECB2011
|
|
|
1000
991
|
|
|
1001
992
|
# Lookup efficiencies depending on whether it is a unitary AC or a heat pump
|
|
1002
993
|
ac_props = nil
|
|
1003
|
-
ac_props = if coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
994
|
+
ac_props = if OpenstudioStandards::HVAC.coil_dx_heat_pump?(coil_cooling_dx_multi_speed)
|
|
1004
995
|
model_find_object(standards_data['heat_pumps'], search_criteria, capacity_btu_per_hr, Date.today)
|
|
1005
996
|
else
|
|
1006
997
|
model_find_object(standards_data['unitary_acs'], search_criteria, capacity_btu_per_hr, Date.today)
|
|
@@ -1130,7 +1121,7 @@ class NECB2011
|
|
|
1130
1121
|
# This method will seem like an error in number of args..but this is due to swig voodoo.
|
|
1131
1122
|
heat_pump_avail_sch_actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(updated_heat_pump_avail_sch, 'Schedule:Constant', 'Schedule Value')
|
|
1132
1123
|
heat_pump_avail_sch_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
|
1133
|
-
heat_pump_avail_sch_prog.setName("#{ems_friendly_name(multi_speed_heat_pump.name)} Availability Schedule Program by Line")
|
|
1124
|
+
heat_pump_avail_sch_prog.setName("#{OpenstudioStandards::HVAC.ems_friendly_name(multi_speed_heat_pump.name)} Availability Schedule Program by Line")
|
|
1134
1125
|
heat_pump_avail_sch_prog_body = <<-EMS
|
|
1135
1126
|
IF #{heat_pump_avail_sch_sensor.handle} > 0.0
|
|
1136
1127
|
SET #{heat_pump_avail_sch_actuator.handle} = #{heat_pump_avail_sch_sensor.handle}
|
|
@@ -1169,7 +1160,7 @@ class NECB2011
|
|
|
1169
1160
|
# Define the criteria to find the properties in the hvac standards data set.
|
|
1170
1161
|
search_criteria = coil_heating_gas_multi_stage_find_search_criteria(coil_heating_gas_multi_stage)
|
|
1171
1162
|
fuel_type = search_criteria['fuel_type']
|
|
1172
|
-
capacity_w =
|
|
1163
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_gas_multi_stage_get_capacity(coil_heating_gas_multi_stage)
|
|
1173
1164
|
|
|
1174
1165
|
# Find system design outside air flow rate and fraction
|
|
1175
1166
|
controller_oa = nil
|
|
@@ -1291,7 +1282,7 @@ class NECB2011
|
|
|
1291
1282
|
# If specified as AFUE
|
|
1292
1283
|
unless heater_props['minimum_annual_fuel_utilization_efficiency'].nil?
|
|
1293
1284
|
min_afue = heater_props['minimum_annual_fuel_utilization_efficiency']
|
|
1294
|
-
thermal_eff = afue_to_thermal_eff(min_afue)
|
|
1285
|
+
thermal_eff = OpenstudioStandards::HVAC.afue_to_thermal_eff(min_afue)
|
|
1295
1286
|
new_comp_name = "#{coil_heating_gas_multi_stage.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_afue} AFUE"
|
|
1296
1287
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.CoilHeatingGasMultiStage', "For #{template}: #{coil_heating_gas_multi_stage.name}: #{fuel_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; AFUE = #{min_afue}")
|
|
1297
1288
|
end
|
|
@@ -1306,7 +1297,7 @@ class NECB2011
|
|
|
1306
1297
|
# If specified as combustion efficiency
|
|
1307
1298
|
unless heater_props['minimum_combustion_efficiency'].nil?
|
|
1308
1299
|
min_comb_eff = heater_props['minimum_combustion_efficiency']
|
|
1309
|
-
thermal_eff = combustion_eff_to_thermal_eff(min_comb_eff)
|
|
1300
|
+
thermal_eff = OpenstudioStandards::HVAC.combustion_eff_to_thermal_eff(min_comb_eff)
|
|
1310
1301
|
new_comp_name = "#{coil_heating_gas_multi_stage.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_comb_eff} Combustion Eff"
|
|
1311
1302
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.BoilerHotWater', "For #{template}: #{coil_heating_gas_multi_stage.name}: #{fuel_type} Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; Combustion Efficiency = #{min_comb_eff}")
|
|
1312
1303
|
end
|
|
@@ -2197,7 +2188,7 @@ class NECB2011
|
|
|
2197
2188
|
# "sys_oa": "mixed" or "doas"
|
|
2198
2189
|
# "sys_name_pars" is a hash for the remaining system name parts for heat recovery,
|
|
2199
2190
|
# heating, cooling, supply fan, zone heating, zone cooling, and return fan
|
|
2200
|
-
def assign_base_sys_name(
|
|
2191
|
+
def assign_base_sys_name(air_loop:, sys_abbr:, sys_oa:, sys_name_pars:)
|
|
2201
2192
|
sys_name = "#{sys_abbr}|#{sys_oa}|"
|
|
2202
2193
|
sys_name_pars.each do |key, value|
|
|
2203
2194
|
case key.downcase
|
|
@@ -2215,24 +2206,36 @@ class NECB2011
|
|
|
2215
2206
|
sys_name += 'sh>c-e'
|
|
2216
2207
|
when 'hot water'
|
|
2217
2208
|
sys_name += 'sh>c-hw'
|
|
2218
|
-
when 'gas'
|
|
2209
|
+
when 'gas', 'g'
|
|
2219
2210
|
sys_name += 'sh>c-g'
|
|
2220
|
-
when 'dx'
|
|
2211
|
+
when 'dx' , 'ashp'
|
|
2221
2212
|
sys_name += 'sh>ashp'
|
|
2213
|
+
when 'ashp>c-g'
|
|
2214
|
+
sys_name += 'sh>ashp>c-g'
|
|
2215
|
+
when 'ashp>c-e'
|
|
2216
|
+
sys_name += 'sh>ashp>c-e'
|
|
2217
|
+
when 'ashp>c-hw'
|
|
2218
|
+
sys_name += 'sh>ashp>c-hw'
|
|
2222
2219
|
when 'ccashp'
|
|
2223
2220
|
sys_name += 'sh>ccashp'
|
|
2224
|
-
when '
|
|
2225
|
-
sys_name += 'sh>
|
|
2221
|
+
when 'ccashp>c-g'
|
|
2222
|
+
sys_name += 'sh>ccashp>c-g'
|
|
2223
|
+
when 'ccashp>c-e'
|
|
2224
|
+
sys_name += 'sh>ccashp>c-e'
|
|
2225
|
+
when 'ccashp>c-hw'
|
|
2226
|
+
sys_name += 'sh>ccashp>c-hw'
|
|
2227
|
+
else
|
|
2228
|
+
sys_name += 'sh>none'
|
|
2226
2229
|
end
|
|
2227
2230
|
|
|
2228
2231
|
when 'sys_clg'
|
|
2229
2232
|
case value.downcase
|
|
2230
2233
|
when 'none'
|
|
2231
2234
|
sys_name += 'sc>none'
|
|
2232
|
-
when 'chilled water'
|
|
2235
|
+
when 'chilled water','hydronic'
|
|
2233
2236
|
sys_name += 'sc>c-chw'
|
|
2234
2237
|
when 'dx'
|
|
2235
|
-
if sys_name_pars['sys_htg'] == 'dx'
|
|
2238
|
+
if sys_name_pars['sys_htg'] == 'dx' || sys_name_pars['sys_htg'] == 'ashp>c-g' || sys_name_pars['sys_htg'] == 'ashp>c-e' || sys_name_pars['sys_htg'] == 'ashp>c-hw'
|
|
2236
2239
|
sys_name += 'sc>ashp'
|
|
2237
2240
|
else
|
|
2238
2241
|
sys_name += 'sc>dx'
|
|
@@ -2262,9 +2265,9 @@ class NECB2011
|
|
|
2262
2265
|
when 'hot water'
|
|
2263
2266
|
sys_name += 'zh>b-hw'
|
|
2264
2267
|
when 'tpfc'
|
|
2265
|
-
sys_name += 'zh>fpfc'
|
|
2266
|
-
when 'fpfc'
|
|
2267
2268
|
sys_name += 'zh>tpfc'
|
|
2269
|
+
when 'fpfc'
|
|
2270
|
+
sys_name += 'zh>fpfc'
|
|
2268
2271
|
when 'pthp'
|
|
2269
2272
|
sys_name += 'zh>pthp'
|
|
2270
2273
|
end
|
|
@@ -2296,7 +2299,10 @@ class NECB2011
|
|
|
2296
2299
|
sys_name += '|'
|
|
2297
2300
|
end
|
|
2298
2301
|
|
|
2299
|
-
|
|
2302
|
+
air_loop.setName(sys_name)
|
|
2303
|
+
return detect_air_system_type(air_loop: air_loop,
|
|
2304
|
+
old_system_name: sys_name,
|
|
2305
|
+
sys_abbr: sys_abbr)
|
|
2300
2306
|
end
|
|
2301
2307
|
|
|
2302
2308
|
# Method to update the base system name based on the inputs provided.
|
|
@@ -2345,100 +2351,12 @@ class NECB2011
|
|
|
2345
2351
|
airloop.setName(sys_name)
|
|
2346
2352
|
end
|
|
2347
2353
|
|
|
2348
|
-
def coil_heating_dx_single_speed_find_capacity(coil_heating_dx_single_speed, necb_reference_hp = false)
|
|
2349
|
-
# Set Rated heating capacity = 50% cooling coil capacity at -8.3 C outdoor [8.4.4.13 (2)(c)]
|
|
2350
|
-
|
|
2351
|
-
if necb_reference_hp #NECB reference heat pump rules apply
|
|
2352
|
-
# grab paired cooling coil
|
|
2353
|
-
if coil_heating_dx_single_speed.airLoopHVAC.empty?
|
|
2354
|
-
|
|
2355
|
-
if coil_heating_dx_single_speed.containingHVACComponent.is_initialized
|
|
2356
|
-
|
|
2357
|
-
containing_comp = coil_heating_dx_single_speed.containingHVACComponent.get
|
|
2358
|
-
if containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAir.is_initialized
|
|
2359
|
-
clg_coil = containing_comp.to_AirLoopHVACUnitaryHeatPumpAirToAir.get.coolingCoil
|
|
2360
|
-
elsif containing_comp.to_AirLoopHVACUnitarySystem.is_initialized
|
|
2361
|
-
unitary = containing_comp.to_AirLoopHVACUnitarySystem.get
|
|
2362
|
-
if unitary.coolingCoil.is_initialized
|
|
2363
|
-
clg_coil = unitary.coolingCoil.get
|
|
2364
|
-
end
|
|
2365
|
-
end
|
|
2366
|
-
# @todo Add other unitary systems
|
|
2367
|
-
elsif coil_heating_dx_single_speed.containingZoneHVACComponent.is_initialized
|
|
2368
|
-
containing_comp = coil_heating_dx_single_speed.containingZoneHVACComponent.get
|
|
2369
|
-
# PTHP
|
|
2370
|
-
if containing_comp.to_ZoneHVACPackagedTerminalHeatPump.is_initialized
|
|
2371
|
-
pthp = containing_comp.to_ZoneHVACPackagedTerminalHeatPump.get
|
|
2372
|
-
clg_coil = containing_comp.to_ZoneHVACPackagedTerminalHeatPump.get.coolingCoil
|
|
2373
|
-
end
|
|
2374
|
-
end
|
|
2375
|
-
elsif coil_heating_dx_single_speed.airLoopHVAC.is_initialized
|
|
2376
|
-
air_loop = coil_heating_dx_single_speed.airLoopHVAC.get
|
|
2377
|
-
# Check for the presence of any other type of cooling coil
|
|
2378
|
-
clg_types = ['OS:Coil:Cooling:DX:SingleSpeed',
|
|
2379
|
-
'OS:Coil:Cooling:DX:TwoSpeed',
|
|
2380
|
-
'OS:Coil:Cooling:DX:MultiSpeed']
|
|
2381
|
-
clg_types.each do |ct|
|
|
2382
|
-
coils = air_loop.supplyComponents(ct.to_IddObjectType)
|
|
2383
|
-
next if coils.empty?
|
|
2384
|
-
clg_coil = coils[0]
|
|
2385
|
-
puts "coils = air_loop.supplyComponents(ct.to_IddObjectType) #{}"
|
|
2386
|
-
break # Stop on first DX cooling coil found
|
|
2387
|
-
end
|
|
2388
|
-
end
|
|
2389
|
-
|
|
2390
|
-
# Paired cooling coil parameters
|
|
2391
|
-
clg_coil = clg_coil.to_CoilCoolingDXSingleSpeed.get
|
|
2392
|
-
capacity_w = coil_cooling_dx_single_speed_find_capacity(clg_coil)
|
|
2393
|
-
indoor_wb = 19.4 #rated indoor wb
|
|
2394
|
-
outdoor_db = -8.3 # outdoor db
|
|
2395
|
-
|
|
2396
|
-
# heating capacity = capacity factor (function of temp) from biquadratic curve
|
|
2397
|
-
# with curve limits on minimum y/outdoor db (no extrapolation)
|
|
2398
|
-
cooling_cap_f_temp_curve = clg_coil.totalCoolingCapacityFunctionOfTemperatureCurve
|
|
2399
|
-
cooling_cap_f_temp_factor_min_y = cooling_cap_f_temp_curve.evaluate(indoor_wb,outdoor_db)
|
|
2400
|
-
htg_cap_w_min_y = capacity_w*0.5*cooling_cap_f_temp_factor_min_y
|
|
2401
|
-
|
|
2402
|
-
# heating capacity = capacity factor (function of temp) from biquadratic curve
|
|
2403
|
-
# without curve limits on minimum y/outdoor db (extrapolate)
|
|
2404
|
-
cooling_cap_f_temp_const = 0.867905
|
|
2405
|
-
cooling_cap_f_temp_x = 0.0142459
|
|
2406
|
-
cooling_cap_f_temp_x2 = 0.00055436
|
|
2407
|
-
cooling_cap_f_temp_y = -0.0075575
|
|
2408
|
-
cooling_cap_f_temp_y2 = 3.3e-05
|
|
2409
|
-
cooling_cap_f_temp_xy = -0.0001918
|
|
2410
|
-
cooling_cap_f_temp_factor_no_min_y = cooling_cap_f_temp_const + cooling_cap_f_temp_x*indoor_wb + cooling_cap_f_temp_x2*indoor_wb**2 +
|
|
2411
|
-
cooling_cap_f_temp_y*outdoor_db + cooling_cap_f_temp_y2*outdoor_db**2 + cooling_cap_f_temp_xy*indoor_wb*outdoor_db
|
|
2412
|
-
htg_cap_w_no_min_y = capacity_w*0.5*cooling_cap_f_temp_factor_no_min_y
|
|
2413
|
-
|
|
2414
|
-
puts "capacity_w #{capacity_w}"
|
|
2415
|
-
puts "cooling_cap_f_temp_factor_no_min_y #{cooling_cap_f_temp_factor_no_min_y}"
|
|
2416
|
-
puts "cooling_cap_f_temp_factor_min_y #{cooling_cap_f_temp_factor_min_y}"
|
|
2417
|
-
puts "htg_cap_w_no_min_y #{htg_cap_w_no_min_y}"
|
|
2418
|
-
puts "htg_cap_w_min_y #{htg_cap_w_min_y}"
|
|
2419
|
-
|
|
2420
|
-
# use actual factor from -8.3 to compute rated heating capacity unless it's < 0
|
|
2421
|
-
if cooling_cap_f_temp_factor_no_min_y>0
|
|
2422
|
-
htg_cap_w = htg_cap_w_no_min_y
|
|
2423
|
-
else
|
|
2424
|
-
htg_cap_w = htg_cap_w_min_y
|
|
2425
|
-
end
|
|
2426
|
-
|
|
2427
|
-
# Hardsize rated capacity of heating coil
|
|
2428
|
-
coil_heating_dx_single_speed.setRatedTotalHeatingCapacity(htg_cap_w)
|
|
2429
|
-
|
|
2430
|
-
return htg_cap_w
|
|
2431
|
-
else # Do not follow NECB reference HP rule; proceed as usual
|
|
2432
|
-
return super(coil_heating_dx_single_speed)
|
|
2433
|
-
end
|
|
2434
|
-
end
|
|
2435
|
-
|
|
2436
2354
|
# NECB reference heat pump system
|
|
2437
2355
|
# heating type rules need to be flexible to account for
|
|
2438
2356
|
# 1. DX htg/cooling + gas supplement htg
|
|
2439
2357
|
# 2. Potential lack of AirLoopHVACUnitaryHeatPumpAirToAir or AirLoopHVACUnitarySystem
|
|
2440
2358
|
# @param necb_reference_hp [Boolean] if true, NECB reference model rules for heat pumps will be used.
|
|
2441
|
-
def coil_dx_heating_type(coil_dx, necb_reference_hp
|
|
2359
|
+
def coil_dx_heating_type(coil_dx, necb_reference_hp: false)
|
|
2442
2360
|
supp_htg_type = nil
|
|
2443
2361
|
|
|
2444
2362
|
# If not heat pump reference case use the standard implementation.
|