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
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
# @!group CoilHeatingGas
|
|
3
|
-
|
|
4
|
-
# Prototype CoilHeatingGas object
|
|
5
|
-
#
|
|
6
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
7
|
-
# @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
|
|
8
|
-
# @param name [String] the name of the system, or nil in which case it will be defaulted
|
|
9
|
-
# @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
|
|
10
|
-
# @param nominal_capacity [Double] rated nominal capacity
|
|
11
|
-
# @param efficiency [Double] rated heating efficiency
|
|
12
|
-
# @return [OpenStudio::Model::CoilHeatingGas] the gas heating coil
|
|
13
|
-
def create_coil_heating_gas(model,
|
|
14
|
-
air_loop_node: nil,
|
|
15
|
-
name: 'Gas Htg Coil',
|
|
16
|
-
schedule: nil,
|
|
17
|
-
nominal_capacity: nil,
|
|
18
|
-
efficiency: 0.80)
|
|
19
|
-
|
|
20
|
-
htg_coil = OpenStudio::Model::CoilHeatingGas.new(model)
|
|
21
|
-
|
|
22
|
-
# add to air loop if specified
|
|
23
|
-
htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
|
|
24
|
-
|
|
25
|
-
# set coil name
|
|
26
|
-
htg_coil.setName(name)
|
|
27
|
-
|
|
28
|
-
# set coil availability schedule
|
|
29
|
-
if schedule.nil?
|
|
30
|
-
# default always on
|
|
31
|
-
coil_availability_schedule = model.alwaysOnDiscreteSchedule
|
|
32
|
-
elsif schedule.instance_of?(String)
|
|
33
|
-
coil_availability_schedule = model_add_schedule(model, schedule)
|
|
34
|
-
|
|
35
|
-
if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
|
|
36
|
-
coil_availability_schedule = model.alwaysOffDiscreteSchedule
|
|
37
|
-
elsif coil_availability_schedule.nil?
|
|
38
|
-
coil_availability_schedule = model.alwaysOnDiscreteSchedule
|
|
39
|
-
end
|
|
40
|
-
elsif !schedule.to_Schedule.empty?
|
|
41
|
-
coil_availability_schedule = schedule
|
|
42
|
-
end
|
|
43
|
-
htg_coil.setAvailabilitySchedule(coil_availability_schedule)
|
|
44
|
-
|
|
45
|
-
# set capacity
|
|
46
|
-
htg_coil.setNominalCapacity(nominal_capacity) unless nominal_capacity.nil?
|
|
47
|
-
|
|
48
|
-
# set efficiency
|
|
49
|
-
htg_coil.setGasBurnerEfficiency(efficiency)
|
|
50
|
-
|
|
51
|
-
# defaults
|
|
52
|
-
if model.version < OpenStudio::VersionString.new('3.7.0')
|
|
53
|
-
htg_coil.setParasiticElectricLoad(0.0)
|
|
54
|
-
htg_coil.setParasiticGasLoad(0.0)
|
|
55
|
-
else
|
|
56
|
-
htg_coil.setOnCycleParasiticElectricLoad(0.0)
|
|
57
|
-
htg_coil.setOffCycleParasiticGasLoad(0.0)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
return htg_coil
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Updates the efficiency of some gas heating coils per the prototype assumptions.
|
|
64
|
-
# Defaults to making no changes.
|
|
65
|
-
#
|
|
66
|
-
# @param coil_heating_gas [OpenStudio::Model::CoilHeatingGas] a gas heating coil
|
|
67
|
-
# @return [Boolean] returns true if successful, false if not
|
|
68
|
-
def coil_heating_gas_apply_prototype_efficiency(coil_heating_gas)
|
|
69
|
-
# do nothing
|
|
70
|
-
return true
|
|
71
|
-
end
|
|
72
|
-
end
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
# @!group CoilHeatingWater
|
|
3
|
-
|
|
4
|
-
# Prototype CoilHeatingWater object
|
|
5
|
-
#
|
|
6
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
7
|
-
# @param hot_water_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
|
|
8
|
-
# @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
|
|
9
|
-
# @param name [String] the name of the coil, or nil in which case it will be defaulted
|
|
10
|
-
# @param schedule [String] name of the availability schedule, or [<OpenStudio::Model::Schedule>] Schedule object, or nil in which case default to always on
|
|
11
|
-
# @param rated_inlet_water_temperature [Double] rated inlet water temperature in degrees Celsius, default is hot water loop design exit temperature
|
|
12
|
-
# @param rated_outlet_water_temperature [Double] rated outlet water temperature in degrees Celsius, default is hot water loop design return temperature
|
|
13
|
-
# @param rated_inlet_air_temperature [Double] rated inlet air temperature in degrees Celsius, default is 16.6 (62F)
|
|
14
|
-
# @param rated_outlet_air_temperature [Double] rated outlet air temperature in degrees Celsius, default is 32.2 (90F)
|
|
15
|
-
# @param controller_convergence_tolerance [Double] controller convergence tolerance
|
|
16
|
-
# @return [OpenStudio::Model::CoilHeatingWater] the heating coil
|
|
17
|
-
def create_coil_heating_water(model,
|
|
18
|
-
hot_water_loop,
|
|
19
|
-
air_loop_node: nil,
|
|
20
|
-
name: 'Htg Coil',
|
|
21
|
-
schedule: nil,
|
|
22
|
-
rated_inlet_water_temperature: nil,
|
|
23
|
-
rated_outlet_water_temperature: nil,
|
|
24
|
-
rated_inlet_air_temperature: 16.6,
|
|
25
|
-
rated_outlet_air_temperature: 32.2,
|
|
26
|
-
controller_convergence_tolerance: 0.1)
|
|
27
|
-
|
|
28
|
-
htg_coil = OpenStudio::Model::CoilHeatingWater.new(model)
|
|
29
|
-
|
|
30
|
-
# add to hot water loop
|
|
31
|
-
hot_water_loop.addDemandBranchForComponent(htg_coil)
|
|
32
|
-
|
|
33
|
-
# add to air loop if specified
|
|
34
|
-
htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
|
|
35
|
-
|
|
36
|
-
# set coil name
|
|
37
|
-
if name.nil?
|
|
38
|
-
htg_coil.setName('Htg Coil')
|
|
39
|
-
else
|
|
40
|
-
htg_coil.setName(name)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# set coil availability schedule
|
|
44
|
-
if schedule.nil?
|
|
45
|
-
# default always on
|
|
46
|
-
coil_availability_schedule = model.alwaysOnDiscreteSchedule
|
|
47
|
-
elsif schedule.instance_of?(String)
|
|
48
|
-
coil_availability_schedule = model_add_schedule(model, schedule)
|
|
49
|
-
|
|
50
|
-
if coil_availability_schedule.nil? && schedule == 'alwaysOffDiscreteSchedule'
|
|
51
|
-
coil_availability_schedule = model.alwaysOffDiscreteSchedule
|
|
52
|
-
elsif coil_availability_schedule.nil?
|
|
53
|
-
coil_availability_schedule = model.alwaysOnDiscreteSchedule
|
|
54
|
-
end
|
|
55
|
-
elsif !schedule.to_Schedule.empty?
|
|
56
|
-
coil_availability_schedule = schedule
|
|
57
|
-
end
|
|
58
|
-
htg_coil.setAvailabilitySchedule(coil_availability_schedule)
|
|
59
|
-
|
|
60
|
-
# rated water temperatures, use hot water loop temperatures if defined
|
|
61
|
-
if rated_inlet_water_temperature.nil?
|
|
62
|
-
rated_inlet_water_temperature = hot_water_loop.sizingPlant.designLoopExitTemperature
|
|
63
|
-
htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
|
|
64
|
-
else
|
|
65
|
-
htg_coil.setRatedInletWaterTemperature(rated_inlet_water_temperature)
|
|
66
|
-
end
|
|
67
|
-
if rated_outlet_water_temperature.nil?
|
|
68
|
-
rated_outlet_water_temperature = rated_inlet_water_temperature - hot_water_loop.sizingPlant.loopDesignTemperatureDifference
|
|
69
|
-
htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
|
|
70
|
-
else
|
|
71
|
-
htg_coil.setRatedOutletWaterTemperature(rated_outlet_water_temperature)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# rated air temperatures
|
|
75
|
-
if rated_inlet_air_temperature.nil?
|
|
76
|
-
htg_coil.setRatedInletAirTemperature(16.6)
|
|
77
|
-
else
|
|
78
|
-
htg_coil.setRatedInletAirTemperature(rated_inlet_air_temperature)
|
|
79
|
-
end
|
|
80
|
-
if rated_outlet_air_temperature.nil?
|
|
81
|
-
htg_coil.setRatedOutletAirTemperature(32.2)
|
|
82
|
-
else
|
|
83
|
-
htg_coil.setRatedOutletAirTemperature(rated_outlet_air_temperature)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# coil controller properties
|
|
87
|
-
# @note These inputs will get overwritten if addToNode or addDemandBranchForComponent is called on the htg_coil object after this
|
|
88
|
-
htg_coil_controller = htg_coil.controllerWaterCoil.get
|
|
89
|
-
htg_coil_controller.setName("#{htg_coil.name} Controller")
|
|
90
|
-
htg_coil_controller.setMinimumActuatedFlow(0.0)
|
|
91
|
-
htg_coil_controller.setControllerConvergenceTolerance(controller_convergence_tolerance) unless controller_convergence_tolerance.nil?
|
|
92
|
-
|
|
93
|
-
return htg_coil
|
|
94
|
-
end
|
|
95
|
-
end
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
# @!group CoilHeatingWaterToAirHeatPumpEquationFit
|
|
3
|
-
|
|
4
|
-
# Prototype CoilHeatingWaterToAirHeatPumpEquationFit object
|
|
5
|
-
# Enters in default curves for coil by type of coil
|
|
6
|
-
#
|
|
7
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
8
|
-
# @param plant_loop [<OpenStudio::Model::PlantLoop>] the coil will be placed on the demand side of this plant loop
|
|
9
|
-
# @param air_loop_node [<OpenStudio::Model::Node>] the coil will be placed on this node of the air loop
|
|
10
|
-
# @param name [String] the name of the system, or nil in which case it will be defaulted
|
|
11
|
-
# @param type [String] the type of coil to reference the correct curve set
|
|
12
|
-
# @param cop [Double] rated heating coefficient of performance
|
|
13
|
-
# @return [OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit] the heating coil
|
|
14
|
-
def create_coil_heating_water_to_air_heat_pump_equation_fit(model,
|
|
15
|
-
plant_loop,
|
|
16
|
-
air_loop_node: nil,
|
|
17
|
-
name: 'Water-to-Air HP Htg Coil',
|
|
18
|
-
type: nil,
|
|
19
|
-
cop: 4.2)
|
|
20
|
-
|
|
21
|
-
htg_coil = OpenStudio::Model::CoilHeatingWaterToAirHeatPumpEquationFit.new(model)
|
|
22
|
-
|
|
23
|
-
# add to air loop if specified
|
|
24
|
-
htg_coil.addToNode(air_loop_node) unless air_loop_node.nil?
|
|
25
|
-
|
|
26
|
-
# set coil name
|
|
27
|
-
htg_coil.setName(name)
|
|
28
|
-
|
|
29
|
-
# add to plant loop
|
|
30
|
-
if plant_loop.nil?
|
|
31
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.model.Model', 'No plant loop supplied for heating coil')
|
|
32
|
-
return false
|
|
33
|
-
end
|
|
34
|
-
plant_loop.addDemandBranchForComponent(htg_coil)
|
|
35
|
-
|
|
36
|
-
# set coil cop
|
|
37
|
-
if cop.nil?
|
|
38
|
-
htg_coil.setRatedHeatingCoefficientofPerformance(4.2)
|
|
39
|
-
else
|
|
40
|
-
htg_coil.setRatedHeatingCoefficientofPerformance(cop)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# curve sets
|
|
44
|
-
if type == 'OS default'
|
|
45
|
-
# use OS default curves
|
|
46
|
-
else # default curve set
|
|
47
|
-
if model.version < OpenStudio::VersionString.new('3.2.0')
|
|
48
|
-
htg_coil.setHeatingCapacityCoefficient1(0.237847462869254)
|
|
49
|
-
htg_coil.setHeatingCapacityCoefficient2(-3.35823796081626)
|
|
50
|
-
htg_coil.setHeatingCapacityCoefficient3(3.80640467406376)
|
|
51
|
-
htg_coil.setHeatingCapacityCoefficient4(0.179200417311554)
|
|
52
|
-
htg_coil.setHeatingCapacityCoefficient5(0.12860719846082)
|
|
53
|
-
htg_coil.setHeatingPowerConsumptionCoefficient1(-3.79175529243238)
|
|
54
|
-
htg_coil.setHeatingPowerConsumptionCoefficient2(3.38799239505527)
|
|
55
|
-
htg_coil.setHeatingPowerConsumptionCoefficient3(1.5022612076303)
|
|
56
|
-
htg_coil.setHeatingPowerConsumptionCoefficient4(-0.177653510577989)
|
|
57
|
-
htg_coil.setHeatingPowerConsumptionCoefficient5(-0.103079864171839)
|
|
58
|
-
else
|
|
59
|
-
if model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').is_initialized
|
|
60
|
-
heating_capacity_curve = model.getCurveByName('Water to Air Heat Pump Heating Capacity Curve').get
|
|
61
|
-
heating_capacity_curve = heating_capacity_curve.to_CurveQuadLinear.get
|
|
62
|
-
else
|
|
63
|
-
heating_capacity_curve = OpenStudio::Model::CurveQuadLinear.new(model)
|
|
64
|
-
heating_capacity_curve.setName('Water to Air Heat Pump Heating Capacity Curve')
|
|
65
|
-
heating_capacity_curve.setCoefficient1Constant(0.237847462869254)
|
|
66
|
-
heating_capacity_curve.setCoefficient2w(-3.35823796081626)
|
|
67
|
-
heating_capacity_curve.setCoefficient3x(3.80640467406376)
|
|
68
|
-
heating_capacity_curve.setCoefficient4y(0.179200417311554)
|
|
69
|
-
heating_capacity_curve.setCoefficient5z(0.12860719846082)
|
|
70
|
-
heating_capacity_curve.setMinimumValueofw(-100)
|
|
71
|
-
heating_capacity_curve.setMaximumValueofw(100)
|
|
72
|
-
heating_capacity_curve.setMinimumValueofx(-100)
|
|
73
|
-
heating_capacity_curve.setMaximumValueofx(100)
|
|
74
|
-
heating_capacity_curve.setMinimumValueofy(0)
|
|
75
|
-
heating_capacity_curve.setMaximumValueofy(100)
|
|
76
|
-
heating_capacity_curve.setMinimumValueofz(0)
|
|
77
|
-
heating_capacity_curve.setMaximumValueofz(100)
|
|
78
|
-
end
|
|
79
|
-
htg_coil.setHeatingCapacityCurve(heating_capacity_curve)
|
|
80
|
-
|
|
81
|
-
if model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').is_initialized
|
|
82
|
-
heating_power_consumption_curve = model.getCurveByName('Water to Air Heat Pump Heating Power Consumption Curve').get
|
|
83
|
-
heating_power_consumption_curve = heating_power_consumption_curve.to_CurveQuadLinear.get
|
|
84
|
-
else
|
|
85
|
-
heating_power_consumption_curve = OpenStudio::Model::CurveQuadLinear.new(model)
|
|
86
|
-
heating_power_consumption_curve.setName('Water to Air Heat Pump Heating Power Consumption Curve')
|
|
87
|
-
heating_power_consumption_curve.setCoefficient1Constant(-3.79175529243238)
|
|
88
|
-
heating_power_consumption_curve.setCoefficient2w(3.38799239505527)
|
|
89
|
-
heating_power_consumption_curve.setCoefficient3x(1.5022612076303)
|
|
90
|
-
heating_power_consumption_curve.setCoefficient4y(-0.177653510577989)
|
|
91
|
-
heating_power_consumption_curve.setCoefficient5z(-0.103079864171839)
|
|
92
|
-
heating_power_consumption_curve.setMinimumValueofw(-100)
|
|
93
|
-
heating_power_consumption_curve.setMaximumValueofw(100)
|
|
94
|
-
heating_power_consumption_curve.setMinimumValueofx(-100)
|
|
95
|
-
heating_power_consumption_curve.setMaximumValueofx(100)
|
|
96
|
-
heating_power_consumption_curve.setMinimumValueofy(0)
|
|
97
|
-
heating_power_consumption_curve.setMaximumValueofy(100)
|
|
98
|
-
heating_power_consumption_curve.setMinimumValueofz(0)
|
|
99
|
-
heating_power_consumption_curve.setMaximumValueofz(100)
|
|
100
|
-
end
|
|
101
|
-
htg_coil.setHeatingPowerConsumptionCurve(heating_power_consumption_curve)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
# part load fraction correlation curve added as a required curve in OS v3.7.0
|
|
105
|
-
if model.version > OpenStudio::VersionString.new('3.6.1')
|
|
106
|
-
if model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').is_initialized
|
|
107
|
-
part_load_correlation_curve = model.getCurveByName('Water to Air Heat Pump Part Load Fraction Correlation Curve').get
|
|
108
|
-
part_load_correlation_curve = part_load_correlation_curve.to_CurveLinear.get
|
|
109
|
-
else
|
|
110
|
-
part_load_correlation_curve = OpenStudio::Model::CurveLinear.new(model)
|
|
111
|
-
part_load_correlation_curve.setName('Water to Air Heat Pump Part Load Fraction Correlation Curve')
|
|
112
|
-
part_load_correlation_curve.setCoefficient1Constant(0.833746458696111)
|
|
113
|
-
part_load_correlation_curve.setCoefficient2x(0.166253541303889)
|
|
114
|
-
part_load_correlation_curve.setMinimumValueofx(0)
|
|
115
|
-
part_load_correlation_curve.setMaximumValueofx(1)
|
|
116
|
-
part_load_correlation_curve.setMinimumCurveOutput(0)
|
|
117
|
-
part_load_correlation_curve.setMaximumCurveOutput(1)
|
|
118
|
-
end
|
|
119
|
-
htg_coil.setPartLoadFractionCorrelationCurve(part_load_correlation_curve)
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
return htg_coil
|
|
124
|
-
end
|
|
125
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
# @!group ControllerWaterCoil
|
|
3
|
-
|
|
4
|
-
# Sets the convergence tolerance to 0.0001 deltaC for all hot water coils.
|
|
5
|
-
#
|
|
6
|
-
# @param controller_water_coil [OpenStudio::Model::ControllerWaterCoil] controller water coil object
|
|
7
|
-
# @return [Boolean] returns true if successful, false if not
|
|
8
|
-
# @todo Figure out what the reason for this is, because it seems like a workaround for an E+ bug that was probably addressed long ago.
|
|
9
|
-
def controller_water_coil_set_convergence_limits(controller_water_coil)
|
|
10
|
-
controller_action = controller_water_coil.action
|
|
11
|
-
if controller_action.is_initialized && controller_action.get == 'Normal'
|
|
12
|
-
controller_water_coil.setControllerConvergenceTolerance(0.0001)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
return true
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
# Add transformers for some prototypes
|
|
3
|
-
#
|
|
4
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
5
|
-
# @param wired_lighting_frac [Double] the wired lighting fraction, 0-1
|
|
6
|
-
# @param transformer_size [Double] the transformer size in VA
|
|
7
|
-
# @param transformer_efficiency [Double] the transformer efficiency, 0-1
|
|
8
|
-
# @param excluded_interiorequip_key [String] key to exclude
|
|
9
|
-
# @param excluded_interiorequip_meter [String] meter to exclude
|
|
10
|
-
# @return [OpenStudio::Model::ElectricLoadCenterTransformer] the transformer object
|
|
11
|
-
def model_add_transformer(model,
|
|
12
|
-
wired_lighting_frac: nil,
|
|
13
|
-
transformer_size: nil,
|
|
14
|
-
transformer_efficiency: nil,
|
|
15
|
-
excluded_interiorequip_key: '',
|
|
16
|
-
excluded_interiorequip_meter: nil)
|
|
17
|
-
# throw an error if transformer properties are missing
|
|
18
|
-
if wired_lighting_frac.nil? || transformer_size.nil? || transformer_efficiency.nil?
|
|
19
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.Model.transformers', "Either 'wired_lighting_frac', 'transformer_size', or 'transformer_efficiency' is unspecified. Cannot add transformer.")
|
|
20
|
-
return false
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# @todo default values are for testing only
|
|
24
|
-
# ems sensor for interior lighting
|
|
25
|
-
facility_int_ltg = OpenStudio::Model::EnergyManagementSystemSensor.new(model, 'InteriorLights:Electricity')
|
|
26
|
-
facility_int_ltg.setName('Facility_Int_LTG')
|
|
27
|
-
|
|
28
|
-
# declaire ems variable for transformer wired lighting portion
|
|
29
|
-
wired_ltg_var = OpenStudio::Model::EnergyManagementSystemGlobalVariable.new(model, 'Wired_LTG')
|
|
30
|
-
|
|
31
|
-
# ems program for transformer load
|
|
32
|
-
transformer_load_prog = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
|
|
33
|
-
transformer_load_prog.setName('Transformer_Load_Prog')
|
|
34
|
-
transformer_load_prog_body = <<-EMS
|
|
35
|
-
SET Wired_LTG = Facility_Int_LTG*#{wired_lighting_frac}
|
|
36
|
-
EMS
|
|
37
|
-
transformer_load_prog.setBody(transformer_load_prog_body)
|
|
38
|
-
|
|
39
|
-
# ems program calling manager
|
|
40
|
-
transformer_load_prog_manager = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
|
|
41
|
-
transformer_load_prog_manager.setName('Transformer_Load_Prog_Manager')
|
|
42
|
-
transformer_load_prog_manager.setCallingPoint('AfterPredictorAfterHVACManagers')
|
|
43
|
-
transformer_load_prog_manager.addProgram(transformer_load_prog)
|
|
44
|
-
|
|
45
|
-
# ems output variable
|
|
46
|
-
wired_ltg_emsout = OpenStudio::Model::EnergyManagementSystemOutputVariable.new(model, wired_ltg_var)
|
|
47
|
-
wired_ltg_emsout.setName('Wired_LTG')
|
|
48
|
-
wired_ltg_emsout.setTypeOfDataInVariable('Summed')
|
|
49
|
-
wired_ltg_emsout.setUpdateFrequency('ZoneTimeStep')
|
|
50
|
-
wired_ltg_emsout.setUnits('J')
|
|
51
|
-
|
|
52
|
-
# meter for ems output
|
|
53
|
-
wired_ltg_meter = OpenStudio::Model::MeterCustom.new(model)
|
|
54
|
-
wired_ltg_meter.setName('Wired_LTG_Electricity')
|
|
55
|
-
wired_ltg_meter.setFuelType('Electricity')
|
|
56
|
-
wired_ltg_meter.addKeyVarGroup('', 'Wired_LTG')
|
|
57
|
-
|
|
58
|
-
# meter for wired int equip
|
|
59
|
-
unless excluded_interiorequip_meter.nil?
|
|
60
|
-
wired_int_equip_meter = OpenStudio::Model::MeterCustomDecrement.new(model, 'InteriorEquipment:Electricity')
|
|
61
|
-
wired_int_equip_meter.setName('Wired_Int_EQUIP')
|
|
62
|
-
wired_int_equip_meter.setFuelType('Electricity')
|
|
63
|
-
wired_int_equip_meter.addKeyVarGroup(excluded_interiorequip_key, excluded_interiorequip_meter)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# add transformer
|
|
67
|
-
transformer = OpenStudio::Model::ElectricLoadCenterTransformer.new(model)
|
|
68
|
-
transformer.setName('Transformer_1')
|
|
69
|
-
transformer.setAvailabilitySchedule(model.alwaysOnDiscreteSchedule)
|
|
70
|
-
transformer.setTransformerUsage('PowerInFromGrid')
|
|
71
|
-
transformer.setRatedCapacity(transformer_size)
|
|
72
|
-
transformer.setPhase('3')
|
|
73
|
-
transformer.setConductorMaterial('Aluminum')
|
|
74
|
-
transformer.setFullLoadTemperatureRise(150)
|
|
75
|
-
transformer.setFractionofEddyCurrentLosses(0.1)
|
|
76
|
-
transformer.setPerformanceInputMethod('NominalEfficiency')
|
|
77
|
-
transformer.setNameplateEfficiency(transformer_efficiency)
|
|
78
|
-
transformer.setPerUnitLoadforNameplateEfficiency(0.35)
|
|
79
|
-
transformer.setReferenceTemperatureforNameplateEfficiency(75)
|
|
80
|
-
transformer.setConsiderTransformerLossforUtilityCost(true)
|
|
81
|
-
transformer.addMeter('Wired_LTG_Electricity')
|
|
82
|
-
if excluded_interiorequip_meter.nil?
|
|
83
|
-
transformer.addMeter('InteriorEquipment:Electricity') # by default, add this as the second meter
|
|
84
|
-
else
|
|
85
|
-
transformer.addMeter('Wired_Int_EQUIP')
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
return transformer
|
|
89
|
-
end
|
|
90
|
-
end
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
class Standard
|
|
2
|
-
include Pump
|
|
3
|
-
|
|
4
|
-
# Determine and set type of part load control type for heating and chilled
|
|
5
|
-
# water variable speed pumps
|
|
6
|
-
#
|
|
7
|
-
# @param pump [OpenStudio::Model::PumpVariableSpeed] OpenStudio pump object
|
|
8
|
-
# @return [Boolean] Returns true if applicable, false otherwise
|
|
9
|
-
def pump_variable_speed_control_type(pump)
|
|
10
|
-
# Get plant loop
|
|
11
|
-
plant_loop = pump.plantLoop.get
|
|
12
|
-
|
|
13
|
-
# Get plant loop type
|
|
14
|
-
plant_loop_type = plant_loop.sizingPlant.loopType
|
|
15
|
-
return false unless plant_loop_type == 'Heating' || plant_loop_type == 'Cooling'
|
|
16
|
-
|
|
17
|
-
# Get rated pump power
|
|
18
|
-
if pump.ratedPowerConsumption.is_initialized
|
|
19
|
-
pump_rated_power_w = pump.ratedPowerConsumption.get
|
|
20
|
-
elsif pump.autosizedRatedPowerConsumption.is_initialized
|
|
21
|
-
pump_rated_power_w = pump.autosizedRatedPowerConsumption.get
|
|
22
|
-
else
|
|
23
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump power consumption, cannot determine w per gpm correctly.")
|
|
24
|
-
return false
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Get nominal nameplate HP
|
|
28
|
-
pump_nominal_hp = pump_rated_power_w * pump.motorEfficiency / 745.7
|
|
29
|
-
|
|
30
|
-
# Assign peformance curves
|
|
31
|
-
control_type = pump_variable_speed_get_control_type(pump, plant_loop_type, pump_nominal_hp)
|
|
32
|
-
|
|
33
|
-
# Set pump part load performance curve coefficients
|
|
34
|
-
pump_variable_speed_set_control_type(pump, control_type) if control_type
|
|
35
|
-
|
|
36
|
-
return true
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Determine type of pump part load control type
|
|
40
|
-
#
|
|
41
|
-
# @param pump [OpenStudio::Model::PumpVariableSpeed] OpenStudio pump object
|
|
42
|
-
# @param plant_loop_type [String] Type of plant loop
|
|
43
|
-
# @param pump_nominal_hp [Float] Pump nominal horsepower
|
|
44
|
-
# @return [String] Pump part load control type
|
|
45
|
-
def pump_variable_speed_get_control_type(pump, plant_loop_type, pump_nominal_hp)
|
|
46
|
-
# Get plant loop
|
|
47
|
-
plant_loop = pump.plantLoop.get
|
|
48
|
-
|
|
49
|
-
# Default assumptions are based on ASHRAE 90.1-2010 Appendix G (G3.1.3.5 and G3.1.3.10)
|
|
50
|
-
case plant_loop_type
|
|
51
|
-
when 'Heating'
|
|
52
|
-
# Determine the area served by the plant loop
|
|
53
|
-
area_served_m2 = plant_loop_total_floor_area_served(plant_loop)
|
|
54
|
-
area_served_ft2 = OpenStudio.convert(area_served_m2, 'm^2', 'ft^2').get
|
|
55
|
-
|
|
56
|
-
return 'VSD No Reset' if area_served_ft2 > 120_000
|
|
57
|
-
|
|
58
|
-
# else
|
|
59
|
-
return 'Riding Curve'
|
|
60
|
-
when 'Cooling'
|
|
61
|
-
# Get plant loop capacity capacity
|
|
62
|
-
cooling_capacity_w = plant_loop_total_cooling_capacity(plant_loop)
|
|
63
|
-
|
|
64
|
-
return 'VSD No Reset' if cooling_capacity_w >= 300
|
|
65
|
-
|
|
66
|
-
# else
|
|
67
|
-
return 'Riding Curve'
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|