openstudio-standards 0.8.4 → 0.8.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +30 -30
- data/data/geometry/ASHRAECourthouse.osm +22 -22
- data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
- data/data/geometry/DEER_Asm.osm +1 -1
- data/data/geometry/DEER_ECC.osm +1 -1
- data/data/geometry/DEER_EPr.osm +1 -1
- data/data/geometry/DEER_ERC.osm +1 -1
- data/data/geometry/DEER_ESe.osm +1 -1
- data/data/geometry/DEER_EUn.osm +1 -1
- data/data/geometry/DEER_Hsp.osm +1 -1
- data/data/geometry/DEER_Htl.osm +1 -1
- data/data/geometry/DEER_MBT.osm +1 -1
- data/data/geometry/DEER_MFm.osm +1 -1
- data/data/geometry/DEER_Nrs.osm +1 -1
- data/data/geometry/DEER_OfL.osm +1 -1
- data/data/geometry/DEER_OfS.osm +1 -1
- data/data/geometry/DEER_RFF.osm +1 -1
- data/data/geometry/DEER_RSD.osm +1 -1
- data/data/geometry/DEER_Rt3.osm +1 -1
- data/data/geometry/DEER_RtS.osm +1 -1
- data/data/standards/export_OpenStudio_libraries.rb +2 -3
- data/data/standards/test_performance_expected_dd_results.csv +42 -42
- data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
- data/lib/openstudio-standards/btap/activity.rb +480 -0
- data/lib/openstudio-standards/btap/attributes.rb +166 -0
- data/lib/openstudio-standards/btap/bridging.rb +561 -1402
- data/lib/openstudio-standards/btap/btap.rb +4 -2
- data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
- data/lib/openstudio-standards/btap/{costing/common_paths.rb → common_paths.rb} +14 -11
- data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting.csv +59 -59
- data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_hvac.csv +1019 -1032
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +3 -7
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +1 -5
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +5 -4
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +1 -1
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +112 -181
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +4 -4
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +2 -1
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +3 -3
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -17
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +10 -9
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
- data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
- data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
- data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
- data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
- data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
- data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
- data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
- data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
- data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
- data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
- data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
- data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
- data/lib/openstudio-standards/hvac/components/component.rb +39 -0
- data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
- data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
- data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
- data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
- data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
- data/lib/openstudio-standards/hvac/conversions.rb +222 -0
- data/lib/openstudio-standards/hvac/curves.rb +192 -0
- data/lib/openstudio-standards/hvac/helpers.rb +357 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
- data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
- data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
- data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
- data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
- data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
- data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
- data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
- data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
- data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
- data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
- data/lib/openstudio-standards/standards/Standards.Model.rb +6 -11
- data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
- data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
- data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
- data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +19 -10
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +69 -92
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +2 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +32 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +18 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +5 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +2 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +30 -141
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +233 -112
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +16 -4
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +65 -42
- data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
- data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +55 -38
- metadata +106 -66
- data/lib/openstudio-standards/btap/costing/common_resources/constructions_glazing.csv +0 -61
- data/lib/openstudio-standards/btap/costing/common_resources/costs.csv +0 -1904
- data/lib/openstudio-standards/hvac/components/create.rb +0 -169
- data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/ConstructionProperties.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/Constructions.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/construction_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/constructions_opaque.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/costs_local_factors.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/hvac_vent_ahu.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/lighting_sets.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/locations.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_glazing.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_lighting.csv +0 -0
- /data/lib/openstudio-standards/btap/{costing/common_resources → common_resources}/materials_opaque.csv +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
|
@@ -2382,8 +2382,13 @@ class ECMS
|
|
|
2382
2382
|
search_criteria['name'] = eqpt_name
|
|
2383
2383
|
|
|
2384
2384
|
# Get the capacity
|
|
2385
|
-
|
|
2386
|
-
|
|
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
|
|
2387
2392
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2388
2393
|
|
|
2389
2394
|
# Lookup efficiencies
|
|
@@ -2452,8 +2457,8 @@ class ECMS
|
|
|
2452
2457
|
search_criteria['name'] = eqpt_name
|
|
2453
2458
|
|
|
2454
2459
|
# Get the capacity
|
|
2455
|
-
capacity_w =
|
|
2456
|
-
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
|
|
2457
2462
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2458
2463
|
|
|
2459
2464
|
# Lookup efficiencies
|
|
@@ -2527,7 +2532,7 @@ class ECMS
|
|
|
2527
2532
|
successfully_set_all_properties = true
|
|
2528
2533
|
|
|
2529
2534
|
# Get the capacity
|
|
2530
|
-
capacity_w =
|
|
2535
|
+
capacity_w = OpenstudioStandards::HVAC.chiller_electric_get_capacity(chiller_electric_eir)
|
|
2531
2536
|
capacity_tons = OpenStudio.convert(capacity_w, 'W', 'ton').get
|
|
2532
2537
|
|
|
2533
2538
|
# Lookup performance curves
|
|
@@ -2732,8 +2737,11 @@ class ECMS
|
|
|
2732
2737
|
search_criteria = {}
|
|
2733
2738
|
search_criteria['name'] = eqpt_name
|
|
2734
2739
|
# Get the capacity
|
|
2735
|
-
capacity_w =
|
|
2736
|
-
|
|
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
|
|
2737
2745
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2738
2746
|
|
|
2739
2747
|
# Lookup performance curves
|
|
@@ -2863,8 +2871,11 @@ class ECMS
|
|
|
2863
2871
|
search_criteria = {}
|
|
2864
2872
|
search_criteria['name'] = eqpt_name
|
|
2865
2873
|
# Get the capacity
|
|
2866
|
-
capacity_w =
|
|
2867
|
-
|
|
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
|
|
2868
2879
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2869
2880
|
|
|
2870
2881
|
# Lookup performance curves
|
|
@@ -2982,8 +2993,12 @@ class ECMS
|
|
|
2982
2993
|
def coil_cooling_dx_single_speed_apply_cop(coil_cooling_dx_single_speed,
|
|
2983
2994
|
search_criteria,
|
|
2984
2995
|
rename = false)
|
|
2985
|
-
|
|
2986
|
-
|
|
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)
|
|
2987
3002
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
2988
3003
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
2989
3004
|
|
|
@@ -3003,7 +3018,7 @@ class ECMS
|
|
|
3003
3018
|
# If specified as SEER
|
|
3004
3019
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
3005
3020
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
3006
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3021
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3007
3022
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3008
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}")
|
|
3009
3024
|
end
|
|
@@ -3011,7 +3026,7 @@ class ECMS
|
|
|
3011
3026
|
# If specified as EER
|
|
3012
3027
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
3013
3028
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
3014
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3029
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3015
3030
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3016
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}")
|
|
3017
3032
|
end
|
|
@@ -3019,7 +3034,7 @@ class ECMS
|
|
|
3019
3034
|
# if specified as SEER (heat pump)
|
|
3020
3035
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
3021
3036
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
3022
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3037
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3023
3038
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3024
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}")
|
|
3025
3040
|
end
|
|
@@ -3027,7 +3042,7 @@ class ECMS
|
|
|
3027
3042
|
# If specified as EER (heat pump)
|
|
3028
3043
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
3029
3044
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
3030
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3045
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3031
3046
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3032
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}")
|
|
3033
3048
|
end
|
|
@@ -3055,7 +3070,7 @@ class ECMS
|
|
|
3055
3070
|
search_criteria,
|
|
3056
3071
|
rename = false)
|
|
3057
3072
|
|
|
3058
|
-
capacity_w =
|
|
3073
|
+
capacity_w = OpenstudioStandards::HVAC.coil_heating_get_paired_coil_cooling_capacity(coil_heating_dx_single_speed)
|
|
3059
3074
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3060
3075
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3061
3076
|
|
|
@@ -3075,7 +3090,7 @@ class ECMS
|
|
|
3075
3090
|
# If specified as EER
|
|
3076
3091
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3077
3092
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3078
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3093
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3079
3094
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3080
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}")
|
|
3081
3096
|
end
|
|
@@ -3083,7 +3098,7 @@ class ECMS
|
|
|
3083
3098
|
# if specified as HSPF (heat pump)
|
|
3084
3099
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3085
3100
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3086
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3101
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3087
3102
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3088
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}")
|
|
3089
3104
|
end
|
|
@@ -3091,7 +3106,7 @@ class ECMS
|
|
|
3091
3106
|
# If specified as EER (heat pump)
|
|
3092
3107
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3093
3108
|
min_eer = props['minimum_full_load_efficiency']
|
|
3094
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3109
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3095
3110
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3096
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}")
|
|
3097
3112
|
end
|
|
@@ -3099,7 +3114,7 @@ class ECMS
|
|
|
3099
3114
|
# If specified as COP
|
|
3100
3115
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3101
3116
|
cop_min = props['minimum_coefficient_of_performance_heating']
|
|
3102
|
-
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)
|
|
3103
3118
|
new_comp_name = "#{coil_heating_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3104
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}")
|
|
3105
3120
|
end
|
|
@@ -3140,7 +3155,7 @@ class ECMS
|
|
|
3140
3155
|
# If specified as SEER
|
|
3141
3156
|
unless ac_props['minimum_seasonal_energy_efficiency_ratio'].nil?
|
|
3142
3157
|
min_seer = ac_props['minimum_seasonal_energy_efficiency_ratio']
|
|
3143
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3158
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3144
3159
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3145
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}")
|
|
3146
3161
|
end
|
|
@@ -3148,7 +3163,7 @@ class ECMS
|
|
|
3148
3163
|
# If specified as EER
|
|
3149
3164
|
unless ac_props['minimum_energy_efficiency_ratio'].nil?
|
|
3150
3165
|
min_eer = ac_props['minimum_energy_efficiency_ratio']
|
|
3151
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3166
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3152
3167
|
new_comp_name = "#{coil_cooling_dx_single_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3153
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}")
|
|
3154
3169
|
end
|
|
@@ -3156,7 +3171,7 @@ class ECMS
|
|
|
3156
3171
|
# if specified as SEER (heat pump)
|
|
3157
3172
|
unless ac_props['minimum_seasonal_efficiency'].nil?
|
|
3158
3173
|
min_seer = ac_props['minimum_seasonal_efficiency']
|
|
3159
|
-
cop = seer_to_cop_no_fan(min_seer)
|
|
3174
|
+
cop = OpenstudioStandards::HVAC.seer_to_cop_no_fan(min_seer)
|
|
3160
3175
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}SEER"
|
|
3161
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}")
|
|
3162
3177
|
end
|
|
@@ -3164,7 +3179,7 @@ class ECMS
|
|
|
3164
3179
|
# If specified as EER (heat pump)
|
|
3165
3180
|
unless ac_props['minimum_full_load_efficiency'].nil?
|
|
3166
3181
|
min_eer = ac_props['minimum_full_load_efficiency']
|
|
3167
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3182
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3168
3183
|
new_comp_name = "#{coil_cooling_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3169
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}")
|
|
3170
3185
|
end
|
|
@@ -3212,7 +3227,7 @@ class ECMS
|
|
|
3212
3227
|
# If specified as EER
|
|
3213
3228
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3214
3229
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3215
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3230
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3216
3231
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3217
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}")
|
|
3218
3233
|
end
|
|
@@ -3220,7 +3235,7 @@ class ECMS
|
|
|
3220
3235
|
# if specified as HSPF (heat pump)
|
|
3221
3236
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3222
3237
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3223
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3238
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3224
3239
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3225
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}")
|
|
3226
3241
|
end
|
|
@@ -3228,7 +3243,7 @@ class ECMS
|
|
|
3228
3243
|
# If specified as EER (heat pump)
|
|
3229
3244
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3230
3245
|
min_eer = props['minimum_full_load_efficiency']
|
|
3231
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3246
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3232
3247
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3233
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}")
|
|
3234
3249
|
end
|
|
@@ -3236,7 +3251,7 @@ class ECMS
|
|
|
3236
3251
|
# If specified as COP
|
|
3237
3252
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3238
3253
|
min_cop = props['minimum_coefficient_of_performance_heating']
|
|
3239
|
-
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)
|
|
3240
3255
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3241
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}")
|
|
3242
3257
|
end
|
|
@@ -3257,7 +3272,10 @@ class ECMS
|
|
|
3257
3272
|
search_criteria,
|
|
3258
3273
|
rename = false)
|
|
3259
3274
|
|
|
3260
|
-
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
|
|
3261
3279
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3262
3280
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3263
3281
|
|
|
@@ -3277,7 +3295,7 @@ class ECMS
|
|
|
3277
3295
|
# If specified as EER
|
|
3278
3296
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3279
3297
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3280
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3298
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3281
3299
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3282
3300
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3283
3301
|
end
|
|
@@ -3285,7 +3303,7 @@ class ECMS
|
|
|
3285
3303
|
# if specified as HSPF (heat pump)
|
|
3286
3304
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3287
3305
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3288
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3306
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3289
3307
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3290
3308
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3291
3309
|
end
|
|
@@ -3293,7 +3311,7 @@ class ECMS
|
|
|
3293
3311
|
# If specified as EER (heat pump)
|
|
3294
3312
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3295
3313
|
min_eer = props['minimum_full_load_efficiency']
|
|
3296
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3314
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3297
3315
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3298
3316
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3299
3317
|
end
|
|
@@ -3326,7 +3344,10 @@ class ECMS
|
|
|
3326
3344
|
search_criteria,
|
|
3327
3345
|
rename = false)
|
|
3328
3346
|
|
|
3329
|
-
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
|
|
3330
3351
|
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
3331
3352
|
capacity_kbtu_per_hr = OpenStudio.convert(capacity_w, 'W', 'kBtu/hr').get
|
|
3332
3353
|
|
|
@@ -3346,7 +3367,7 @@ class ECMS
|
|
|
3346
3367
|
# If specified as EER
|
|
3347
3368
|
unless props['minimum_energy_efficiency_ratio'].nil?
|
|
3348
3369
|
min_eer = props['minimum_energy_efficiency_ratio']
|
|
3349
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3370
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3350
3371
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3351
3372
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3352
3373
|
end
|
|
@@ -3354,7 +3375,7 @@ class ECMS
|
|
|
3354
3375
|
# if specified as HSPF (heat pump)
|
|
3355
3376
|
unless props['minimum_heating_seasonal_performance_factor'].nil?
|
|
3356
3377
|
min_hspf = props['minimum_heating_seasonal_performance_factor']
|
|
3357
|
-
cop = hspf_to_cop_no_fan(min_hspf)
|
|
3378
|
+
cop = OpenstudioStandards::HVAC.hspf_to_cop_no_fan(min_hspf)
|
|
3358
3379
|
new_comp_name = "#{coil_heating_dx_variable_speed.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_seer}HSPF"
|
|
3359
3380
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; SEER = #{min_seer}")
|
|
3360
3381
|
end
|
|
@@ -3362,7 +3383,7 @@ class ECMS
|
|
|
3362
3383
|
# If specified as EER (heat pump)
|
|
3363
3384
|
unless props['minimum_full_load_efficiency'].nil?
|
|
3364
3385
|
min_eer = props['minimum_full_load_efficiency']
|
|
3365
|
-
cop = eer_to_cop_no_fan(min_eer)
|
|
3386
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop_no_fan(min_eer)
|
|
3366
3387
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{min_eer}EER"
|
|
3367
3388
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3368
3389
|
end
|
|
@@ -3370,7 +3391,7 @@ class ECMS
|
|
|
3370
3391
|
# If specified as COP
|
|
3371
3392
|
unless props['minimum_coefficient_of_performance_heating'].nil?
|
|
3372
3393
|
min_cop = props['minimum_coefficient_of_performance_heating']
|
|
3373
|
-
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)
|
|
3374
3395
|
new_comp_name = "#{airconditioner_variablerefrigerantflow.name} #{capacity_kbtu_per_hr.round}kBtu/hr #{cop}COP"
|
|
3375
3396
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{template}: #{airconditioner_variablerefrigerantflow.name}: Capacity = #{capacity_kbtu_per_hr.round}kBtu/hr; EER = #{min_eer}")
|
|
3376
3397
|
end
|
|
@@ -3417,57 +3438,6 @@ class ECMS
|
|
|
3417
3438
|
return capacity_w
|
|
3418
3439
|
end
|
|
3419
3440
|
|
|
3420
|
-
# =============================================================================================================================
|
|
3421
|
-
# Find cooling capacity for "AirConditionerVariableRefrigerantFlow" object
|
|
3422
|
-
def airconditioner_variablerefrigerantflow_cooling_find_capacity(airconditioner_variablerefrigerantflow)
|
|
3423
|
-
capacity_w = nil
|
|
3424
|
-
if airconditioner_variablerefrigerantflow.ratedTotalCoolingCapacity.is_initialized
|
|
3425
|
-
capacity_w = airconditioner_variablerefrigerantflow.ratedTotalCoolingCapacity.get
|
|
3426
|
-
elsif airconditioner_variablerefrigerantflow.autosizedRatedTotalCoolingCapacity.is_initialized
|
|
3427
|
-
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalCoolingCapacity.get
|
|
3428
|
-
airconditioner_variablerefrigerantflow.setRatedTotalCoolingCapacity(capacity_w)
|
|
3429
|
-
else
|
|
3430
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} cooling capacity is not available.")
|
|
3431
|
-
return 0.0
|
|
3432
|
-
end
|
|
3433
|
-
|
|
3434
|
-
return capacity_w
|
|
3435
|
-
end
|
|
3436
|
-
|
|
3437
|
-
# =============================================================================================================================
|
|
3438
|
-
# Find heating capacity for "AirConditionerVariableRefrigerantFlow" object
|
|
3439
|
-
def airconditioner_variablerefrigerantflow_heating_find_capacity(airconditioner_variablerefrigerantflow)
|
|
3440
|
-
capacity_w = nil
|
|
3441
|
-
if airconditioner_variablerefrigerantflow.ratedTotalHeatingCapacity.is_initialized
|
|
3442
|
-
capacity_w = airconditioner_variablerefrigerantflow.ratedTotalHeatingCapacity.get
|
|
3443
|
-
elsif airconditioner_variablerefrigerantflow.autosizedRatedTotalHeatingCapacity.is_initialized
|
|
3444
|
-
capacity_w = airconditioner_variablerefrigerantflow.autosizedRatedTotalHeatingCapacity.get
|
|
3445
|
-
airconditioner_variablerefrigerantflow.setRatedTotalHeatingCapacity(capacity_w)
|
|
3446
|
-
else
|
|
3447
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.AirConditionerVariableRefrigerantFlow', "For #{airconditioner_variablerefrigerantflow.name} heating capacity is not available.")
|
|
3448
|
-
return 0.0
|
|
3449
|
-
end
|
|
3450
|
-
|
|
3451
|
-
return capacity_w
|
|
3452
|
-
end
|
|
3453
|
-
|
|
3454
|
-
# =============================================================================================================================
|
|
3455
|
-
# Find cooling capacity for "ChillerElectricEIR" object
|
|
3456
|
-
def chiller_electric_eir_find_capacity(chiller_electric_eir)
|
|
3457
|
-
capacity_w = nil
|
|
3458
|
-
if chiller_electric_eir.referenceCapacity.is_initialized
|
|
3459
|
-
capacity_w = chiller_electric_eir.referenceCapacity.get
|
|
3460
|
-
elsif chiller_electric_eir.autosizedRererenceCapacity.is_initialized
|
|
3461
|
-
capacity_w = chiller_electric_eir.autosizedRerenceCapacity.get
|
|
3462
|
-
chiller_electric_eir.setReferenceCapacity(capacity_w)
|
|
3463
|
-
else
|
|
3464
|
-
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.ChillerElectricEIR', "For #{chiller_electric_eir.name} capacity not available")
|
|
3465
|
-
return 0.0
|
|
3466
|
-
end
|
|
3467
|
-
|
|
3468
|
-
return capacity_w
|
|
3469
|
-
end
|
|
3470
|
-
|
|
3471
3441
|
# ============================================================================================================================
|
|
3472
3442
|
# Apply boiler efficiency
|
|
3473
3443
|
# This model takes an OS model and a boiler efficiency string or hash sent to it with the following form:
|
|
@@ -3772,10 +3742,17 @@ class ECMS
|
|
|
3772
3742
|
search_criteria['name'] = unitary_cop_copy
|
|
3773
3743
|
coil_name = coil.name.to_s
|
|
3774
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
|
+
|
|
3775
3752
|
if coil_type == 'SingleSpeed'
|
|
3776
|
-
capacity_w =
|
|
3753
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_single_speed_get_capacity(coil, multiplier: multiplier)
|
|
3777
3754
|
elsif coil_type == 'MultiSpeed'
|
|
3778
|
-
capacity_w =
|
|
3755
|
+
capacity_w = OpenstudioStandards::HVAC.coil_cooling_dx_multi_speed_get_capacity(coil, multiplier: multiplier)
|
|
3779
3756
|
end
|
|
3780
3757
|
coil.setName(coil_name)
|
|
3781
3758
|
cop_package = model_find_object(@standards_data['tables']['unitary_cop_ecm'], search_criteria, capacity_w)
|
|
@@ -3807,9 +3784,9 @@ class ECMS
|
|
|
3807
3784
|
if sizing_done
|
|
3808
3785
|
cop = nil
|
|
3809
3786
|
if unitary_cop['minimum_energy_efficiency_ratio']
|
|
3810
|
-
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)
|
|
3811
3788
|
elsif unitary_cop['minimum_seasonal_energy_efficiency_ratio']
|
|
3812
|
-
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)
|
|
3813
3790
|
elsif unitary_cop['minimum_coefficient_of_performance_cooling']
|
|
3814
3791
|
cop = unitary_cop['minimum_coefficient_of_performance_cooling'].to_f
|
|
3815
3792
|
end
|
|
@@ -739,7 +739,8 @@ class NECB2011
|
|
|
739
739
|
new_spacetype.setStandardsSpaceType(new_spacetype_name)
|
|
740
740
|
new_spacetype.setName("#{space.spaceType.get.standardsBuildingType.get} #{new_spacetype_name}")
|
|
741
741
|
space_type_apply_internal_loads(space_type: new_spacetype, lights_type: lights_type, lights_scale: lights_scale)
|
|
742
|
-
space_type_apply_internal_load_schedules(new_spacetype
|
|
742
|
+
space_type_apply_internal_load_schedules(new_spacetype)
|
|
743
|
+
space_type_apply_thermostat_schedules(new_spacetype)
|
|
743
744
|
end
|
|
744
745
|
space.setSpaceType(new_spacetype)
|
|
745
746
|
# sanity check.
|
|
@@ -16,13 +16,8 @@ class NECB2011
|
|
|
16
16
|
space_type_apply_internal_loads(space_type: space_type)
|
|
17
17
|
|
|
18
18
|
# Schedules
|
|
19
|
-
space_type_apply_internal_load_schedules(space_type
|
|
20
|
-
|
|
21
|
-
true,
|
|
22
|
-
true,
|
|
23
|
-
true,
|
|
24
|
-
true,
|
|
25
|
-
true)
|
|
19
|
+
space_type_apply_internal_load_schedules(space_type)
|
|
20
|
+
space_type_apply_thermostat_schedules(space_type)
|
|
26
21
|
end
|
|
27
22
|
end
|
|
28
23
|
|
|
@@ -67,7 +62,6 @@ class NECB2011
|
|
|
67
62
|
end
|
|
68
63
|
|
|
69
64
|
# Get the space Type data from @standards data
|
|
70
|
-
|
|
71
65
|
spacetype_data = @standards_data['tables']['space_types']['table']
|
|
72
66
|
|
|
73
67
|
standards_building_type = space_type.standardsBuildingType.is_initialized ? space_type.standardsBuildingType.get : nil
|
|
@@ -79,6 +73,7 @@ class NECB2011
|
|
|
79
73
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} was not found in the standards data.")
|
|
80
74
|
return false
|
|
81
75
|
end
|
|
76
|
+
|
|
82
77
|
# People
|
|
83
78
|
people_have_info = false
|
|
84
79
|
occupancy_per_area = space_type_properties['occupancy_per_area'].to_f
|
|
@@ -296,9 +291,10 @@ class NECB2011
|
|
|
296
291
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per area to #{ventilation_per_area} cfm/ft^2.")
|
|
297
292
|
end
|
|
298
293
|
unless ventilation_per_person.zero?
|
|
299
|
-
#
|
|
300
|
-
#
|
|
301
|
-
#
|
|
294
|
+
# The occupancy per area rate for ventilation is different from the occupancy used for other loads as the occupancy assumption in the applicable
|
|
295
|
+
# ventilation standard is followed. The mod_ventilation_per_person rate adjusts the per person ventilation rate (from the standard) so that the
|
|
296
|
+
# correct ventilation rate (per the standard) is calculated when using the NECB occupant density (defined as occupancy_per_area in the space_types.json file)
|
|
297
|
+
# Later the method thermal_zone_convert_outdoor_air_to_per_area (in standards) uses the space occupancy which is the NECB figure to get the total vent rate.
|
|
302
298
|
mod_ventilation_per_person = ventilation_per_person * ventilation_occupancy_per_area / occupancy_per_area
|
|
303
299
|
ventilation.setOutdoorAirFlowperPerson(OpenStudio.convert(mod_ventilation_per_person.to_f, 'ft^3/min*person', 'm^3/s*person').get)
|
|
304
300
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per person to #{mod_ventilation_per_person} cfm/person.")
|
|
@@ -307,7 +303,15 @@ class NECB2011
|
|
|
307
303
|
ventilation.setOutdoorAirFlowAirChangesperHour(ventilation_ach)
|
|
308
304
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation to #{ventilation_ach} ACH.")
|
|
309
305
|
end
|
|
310
|
-
|
|
306
|
+
|
|
307
|
+
# Add information about the source to an additional properties object. Used in unit testing but could be useful elsewhere.
|
|
308
|
+
notes = ventilation.additionalProperties
|
|
309
|
+
notes.setFeature("Ref OA per area", space_type_properties['ventilation_per_area'].to_f)
|
|
310
|
+
notes.setFeature("Ref OA per person", space_type_properties['ventilation_per_person'].to_f)
|
|
311
|
+
notes.setFeature("Ref OA ach", space_type_properties['ventilation_air_changes'].to_f)
|
|
312
|
+
notes.setFeature("Ref occupancy per 1000ft2", space_type_properties['ventilation_occupancy_rate_people_per_1000ft2'].to_f)
|
|
313
|
+
notes.setFeature("Ref standard", space_type_properties['ventilation_occupancy_standard'].to_s)
|
|
314
|
+
notes.setFeature("Ref space type", space_type_properties['ventilation_standard_space_type'].to_s)
|
|
311
315
|
elsif set_ventilation && !ventilation_have_info
|
|
312
316
|
|
|
313
317
|
# All space types must have a design spec OA
|