openstudio-standards 0.8.3 → 0.8.5.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/data/geometry/ASHRAECollege.osm +30 -30
- data/data/geometry/ASHRAECourthouse.osm +22 -22
- data/data/geometry/ASHRAESmallOfficeDetailed.osm +2 -2
- data/data/geometry/DEER_Asm.osm +1 -1
- data/data/geometry/DEER_ECC.osm +1 -1
- data/data/geometry/DEER_EPr.osm +1 -1
- data/data/geometry/DEER_ERC.osm +1 -1
- data/data/geometry/DEER_ESe.osm +1 -1
- data/data/geometry/DEER_EUn.osm +1 -1
- data/data/geometry/DEER_Hsp.osm +1 -1
- data/data/geometry/DEER_Htl.osm +1 -1
- data/data/geometry/DEER_MBT.osm +1 -1
- data/data/geometry/DEER_MFm.osm +1 -1
- data/data/geometry/DEER_Nrs.osm +1 -1
- data/data/geometry/DEER_OfL.osm +1 -1
- data/data/geometry/DEER_OfS.osm +1 -1
- data/data/geometry/DEER_RFF.osm +1 -1
- data/data/geometry/DEER_RSD.osm +1 -1
- data/data/geometry/DEER_Rt3.osm +1 -1
- data/data/geometry/DEER_RtS.osm +1 -1
- data/data/standards/export_OpenStudio_libraries.rb +2 -3
- data/data/standards/test_performance_expected_dd_results.csv +42 -42
- data/lib/openstudio-standards/btap/NECB_building_types.csv +35 -0
- data/lib/openstudio-standards/btap/NECB_space_types.csv +109 -0
- data/lib/openstudio-standards/btap/activity.rb +480 -0
- data/lib/openstudio-standards/btap/attributes.rb +166 -0
- data/lib/openstudio-standards/btap/bridging.rb +561 -1402
- data/lib/openstudio-standards/btap/btap.rb +4 -2
- data/lib/openstudio-standards/btap/btap_test_helper.rb +86 -0
- data/lib/openstudio-standards/btap/carbon/btap_carbon.rb +177 -0
- data/lib/openstudio-standards/btap/common_paths.rb +81 -0
- data/lib/openstudio-standards/btap/common_resources/ConstructionProperties.csv +52 -0
- data/lib/openstudio-standards/btap/common_resources/Constructions.csv +37 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_frame.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/carbon_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/common_resources/construction_sets.csv +1270 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_glazing.csv +121 -0
- data/lib/openstudio-standards/btap/common_resources/constructions_opaque.csv +2256 -0
- data/lib/openstudio-standards/btap/common_resources/costs.csv +1897 -0
- data/lib/openstudio-standards/btap/common_resources/costs_local_factors.csv +2315 -0
- data/lib/openstudio-standards/btap/common_resources/hvac_vent_ahu.csv +925 -0
- data/lib/openstudio-standards/btap/common_resources/lighting.csv +364 -0
- data/lib/openstudio-standards/btap/common_resources/lighting_sets.csv +2667 -0
- data/lib/openstudio-standards/btap/common_resources/locations.csv +75 -0
- data/lib/openstudio-standards/btap/common_resources/materials_glazing.csv +35 -0
- data/lib/openstudio-standards/btap/common_resources/materials_hvac.csv +1686 -0
- data/lib/openstudio-standards/btap/common_resources/materials_lighting.csv +267 -0
- data/lib/openstudio-standards/btap/common_resources/materials_opaque.csv +164 -0
- data/lib/openstudio-standards/btap/costing/README.md +502 -0
- data/lib/openstudio-standards/btap/costing/btap_costing.rb +469 -0
- data/lib/openstudio-standards/btap/costing/btap_measure_helper.rb +359 -0
- data/lib/openstudio-standards/btap/costing/btap_workflow.rb +117 -0
- data/lib/openstudio-standards/btap/costing/copy_test_results_files_to_expected_results.rb +11 -0
- data/lib/openstudio-standards/btap/costing/cost_building_from_file.rb +136 -0
- data/lib/openstudio-standards/btap/costing/costing_database_wrapper.rb +173 -0
- data/lib/openstudio-standards/btap/costing/daylighting_sensor_control_costing.rb +354 -0
- data/lib/openstudio-standards/btap/costing/dcv_costing.rb +314 -0
- data/lib/openstudio-standards/btap/costing/dummy.epw +8768 -0
- data/lib/openstudio-standards/btap/costing/dummy.osm +5320 -0
- data/lib/openstudio-standards/btap/costing/envelope_costing.rb +215 -0
- data/lib/openstudio-standards/btap/costing/heating_cooling_costing.rb +2584 -0
- data/lib/openstudio-standards/btap/costing/led_lighting_costing.rb +156 -0
- data/lib/openstudio-standards/btap/costing/lighting_costing.rb +209 -0
- data/lib/openstudio-standards/btap/costing/mech_sizing.json +502 -0
- data/lib/openstudio-standards/btap/costing/neb_end_use_prices.csv +42 -0
- data/lib/openstudio-standards/btap/costing/necb_2011_spacetype_info.csv +225 -0
- data/lib/openstudio-standards/btap/costing/necb_reference_runs.csv +28705 -0
- data/lib/openstudio-standards/btap/costing/nv_costing.rb +547 -0
- data/lib/openstudio-standards/btap/costing/parallel_tests.rb +92 -0
- data/lib/openstudio-standards/btap/costing/pv_ground_costing.rb +687 -0
- data/lib/openstudio-standards/btap/costing/shw_costing.rb +705 -0
- data/lib/openstudio-standards/btap/costing/test_list.txt +15 -0
- data/lib/openstudio-standards/btap/costing/test_run_all_test_locally.rb +27 -0
- data/lib/openstudio-standards/btap/costing/test_run_costing_tests.rb +80 -0
- data/lib/openstudio-standards/btap/costing/ventilation_costing.rb +2616 -0
- data/lib/openstudio-standards/btap/geometry.rb +86 -6
- data/lib/openstudio-standards/btap/structure.rb +657 -0
- data/lib/openstudio-standards/constructions/modify.rb +2 -1
- data/lib/openstudio-standards/create_typical/create_typical.rb +17 -33
- data/lib/openstudio-standards/create_typical/space_type_ratios.rb +36 -36
- data/lib/openstudio-standards/equipment/create_transformer.rb +104 -0
- data/lib/openstudio-standards/equipment/create_typical_equipment.rb +117 -0
- data/lib/openstudio-standards/equipment/data/electric_equipment_space_types.json +1514 -0
- data/lib/openstudio-standards/equipment/data/gas_equipment_space_types.json +227 -0
- data/lib/openstudio-standards/exterior_lighting/create.rb +22 -22
- data/lib/openstudio-standards/exterior_lighting/information.rb +3 -2
- data/lib/openstudio-standards/hvac/components/air_conditioner_vrf.rb +482 -0
- data/lib/openstudio-standards/hvac/components/air_terminal.rb +31 -0
- data/lib/openstudio-standards/hvac/components/boiler_hot_water.rb +163 -0
- data/lib/openstudio-standards/hvac/components/central_air_source_heat_pump.rb +220 -0
- data/lib/openstudio-standards/hvac/components/chiller.rb +25 -0
- data/lib/openstudio-standards/hvac/components/coil.rb +276 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_multi_speed.rb +40 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_single_speed.rb +300 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_dx_two_speed.rb +187 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water.rb +80 -0
- data/lib/openstudio-standards/hvac/components/coil_cooling_water_to_air_heat_pump_equation_fit.rb +182 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_dx_single_speed.rb +220 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_electric.rb +56 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas.rb +90 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_gas_multi_stage.rb +33 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water.rb +98 -0
- data/lib/openstudio-standards/hvac/components/coil_heating_water_to_air_heat_pump_equation_fit.rb +147 -0
- data/lib/openstudio-standards/hvac/components/component.rb +39 -0
- data/lib/openstudio-standards/{standards/ashrae_90_1/data/ashrae_90_1.fans.json → hvac/components/data/fans.json} +6 -6
- data/lib/openstudio-standards/hvac/components/fan.rb +363 -0
- data/lib/openstudio-standards/hvac/components/heat_exchanger_air_to_air.rb +203 -0
- data/lib/openstudio-standards/hvac/components/pump.rb +181 -0
- data/lib/openstudio-standards/hvac/controls/radiant_system_controls.rb +594 -0
- data/lib/openstudio-standards/hvac/conversions.rb +222 -0
- data/lib/openstudio-standards/hvac/curves.rb +192 -0
- data/lib/openstudio-standards/hvac/helpers.rb +357 -0
- data/lib/openstudio-standards/hvac/setpoint_managers/information.rb +4 -4
- data/lib/openstudio-standards/interior_lighting/create_lights.rb +52 -0
- data/lib/openstudio-standards/interior_lighting/create_typical_interior_lighting.rb +254 -0
- data/lib/openstudio-standards/interior_lighting/data/convert_lighting_data.rb +249 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.csv +96 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_space_types.json +1429 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.csv +46 -0
- data/lib/openstudio-standards/interior_lighting/data/lighting_technology.json +859 -0
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Model.rb +4 -4
- data/lib/openstudio-standards/prototypes/ashrae_90_1/nrel_nze_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.HighRiseApartment.rb +6 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Hospital.rb +15 -15
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeHotel.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.LargeOffice.rb +5 -5
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.MediumOffice.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Outpatient.rb +7 -7
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.PrimarySchool.rb +4 -4
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SecondarySchool.rb +6 -6
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb +5 -1
- data/lib/openstudio-standards/prototypes/common/data/prototype_space_type_map.json +2594 -0
- data/lib/openstudio-standards/prototypes/common/data/thermostat_schedule_lookup.json +2108 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb +33 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +0 -140
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanConstantVolume.rb +1 -73
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanOnOff.rb +1 -69
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanVariableVolume.rb +0 -116
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.FanZoneExhaust.rb +0 -61
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.hvac.rb +2 -2
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +128 -13
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +606 -607
- data/lib/openstudio-standards/prototypes/common/prototype_space_type_map.rb +41 -0
- data/lib/openstudio-standards/prototypes/common/space_type_equipment_map.rb +184 -0
- data/lib/openstudio-standards/prototypes/common/space_type_thermostat_schedule_map.rb +116 -0
- data/lib/openstudio-standards/qaqc/hvac.rb +12 -12
- data/lib/openstudio-standards/refrigeration/create_compressor.rb +2 -5
- data/lib/openstudio-standards/refrigeration/data/refrigeration_compressors.csv +4 -4
- data/lib/openstudio-standards/service_water_heating/create_water_heater.rb +1 -2
- data/lib/openstudio-standards/service_water_heating/create_water_use.rb +5 -5
- data/lib/openstudio-standards/space_type/data/level_1_space_types.json +612 -0
- data/lib/openstudio-standards/space_type/standards_space_type.rb +53 -0
- data/lib/openstudio-standards/standards/Standards.AirConditionerVariableRefrigerantFlow.rb +8 -26
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +13 -13
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctVAVReheat.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.BoilerHotWater.rb +6 -43
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +7 -24
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXMultiSpeed.rb +19 -44
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXSingleSpeed.rb +25 -50
- data/lib/openstudio-standards/standards/Standards.CoilCoolingDXTwoSpeed.rb +25 -33
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +9 -22
- data/lib/openstudio-standards/standards/Standards.CoilDX.rb +15 -157
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXMultiSpeed.rb +2 -2
- data/lib/openstudio-standards/standards/Standards.CoilHeatingDXSingleSpeed.rb +18 -105
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGas.rb +3 -23
- data/lib/openstudio-standards/standards/Standards.CoilHeatingGasMultiStage.rb +0 -24
- data/lib/openstudio-standards/standards/Standards.CoilHeatingWaterToAirHeatPumpEquationFit.rb +2 -86
- data/lib/openstudio-standards/standards/Standards.FanVariableVolume.rb +0 -107
- data/lib/openstudio-standards/standards/Standards.Model.rb +45 -20
- data/lib/openstudio-standards/standards/Standards.People.rb +113 -0
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +11 -11
- data/lib/openstudio-standards/standards/Standards.Pump.rb +2 -147
- data/lib/openstudio-standards/standards/Standards.PumpVariableSpeed.rb +57 -41
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +30 -153
- data/lib/openstudio-standards/standards/Standards.Ventilation.rb +74 -0
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/data/ashrae_90_1_2004.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/comstock_ashrae_90_1_2007.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.heat_pumps_heating.json +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/data/ashrae_90_1_2007.spc_typ.json +37 -112
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/comstock_ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/data/ashrae_90_1_2010.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/comstock_ashrae_90_1_2013.spc_typ.json +37 -102
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/data/ashrae_90_1_2013.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/comstock_ashrae_90_1_2016.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/data/ashrae_90_1_2016.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.BoilerHotWater.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.CoilHeatingGas.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/comstock_ashrae_90_1_2019.spc_typ.json +45 -109
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.heat_pumps_heating.json +6 -6
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/data/ashrae_90_1_2019.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/comstock_doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/data/doe_ref_1980_2004.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/comstock_doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/data/doe_ref_pre_1980.spc_typ.json +37 -37
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.AirTerminalSingleDuctVAVReheat.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1/ze_aedg_multifamily/ze_aedg_multifamily.PlantLoop.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +2 -68
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +2 -35
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +42 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +5 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +3 -3
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +1 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019_WaterHeaterMixed.rb +2 -4
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +0 -200
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/ashrae_90_1_prm.UserData.rb +7 -1
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_enums.rb +0 -1
- data/lib/openstudio-standards/standards/cbes/data/cbes.curves.json +0 -200
- data/lib/openstudio-standards/standards/deer/data/deer.curves.json +0 -200
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/btap_pre1980.rb +21 -37
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/building_envelope.rb +12 -11
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_3_and_8_single_speed.rb +68 -27
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_4.rb +64 -25
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_system_6.rb +9 -14
- data/lib/openstudio-standards/standards/necb/BTAPPRE1980/hvac_systems.rb +4 -4
- data/lib/openstudio-standards/standards/necb/ECMS/ecms.rb +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/hvac_systems.rb +115 -112
- data/lib/openstudio-standards/standards/necb/NECB2011/autozone.rb +637 -249
- data/lib/openstudio-standards/standards/necb/NECB2011/beps_compliance_path.rb +16 -12
- data/lib/openstudio-standards/standards/necb/NECB2011/building_envelope.rb +799 -46
- data/lib/openstudio-standards/standards/necb/NECB2011/data/chillers.json +33 -51
- data/lib/openstudio-standards/standards/necb/NECB2011/data/constants.json +75 -7
- data/lib/openstudio-standards/standards/necb/NECB2011/data/fuel_type_sets.json +25 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/geometry/HighriseApartmentMult.osm +14272 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/heat_pumps_heating.json +21 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/necb_2015_table_c1.json +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/data/space_types.json +437 -437
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems.json +516 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/data/systems_including_sys5.json +588 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_namer.rb +489 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_1_single_speed.rb +18 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_2_and_5.rb +48 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +35 -27
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +34 -23
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +8 -6
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +68 -150
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +444 -134
- data/lib/openstudio-standards/standards/necb/NECB2011/system_fuels.rb +61 -1
- data/lib/openstudio-standards/standards/necb/NECB2015/data/heat_pumps_heating.json +10 -2
- data/lib/openstudio-standards/standards/necb/NECB2015/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2015/data/unitary_acs.json +38 -38
- data/lib/openstudio-standards/standards/necb/NECB2015/hvac_systems.rb +17 -8
- data/lib/openstudio-standards/standards/necb/NECB2017/data/space_types.json +636 -636
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +71 -71
- data/lib/openstudio-standards/standards/necb/NECB2020/data/heat_pumps_heating.json +16 -6
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +60 -61
- data/lib/openstudio-standards/standards/necb/NECB2020/service_water_heating.rb +30 -30
- data/lib/openstudio-standards/standards/necb/README.md +343 -0
- data/lib/openstudio-standards/standards/necb/common/btap_analysis.rb +79 -0
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +206 -32
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +75 -43
- data/lib/openstudio-standards/standards/necb/common/eccc_electric_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/nir_gas_grid_intensity_20250311.csv +14 -0
- data/lib/openstudio-standards/standards/necb/common/system_types.yaml +0 -0
- data/lib/openstudio-standards/thermal_zone/{thermal_zone.rb → information.rb} +12 -45
- data/lib/openstudio-standards/thermal_zone/thermostat_schedules.rb +152 -0
- data/lib/openstudio-standards/utilities/logging.rb +18 -14
- data/lib/openstudio-standards/version.rb +1 -1
- data/lib/openstudio-standards/weather/modify.rb +2 -2
- data/lib/openstudio-standards/weather/stat_file.rb +2 -2
- data/lib/openstudio-standards.rb +67 -38
- metadata +141 -50
- data/lib/openstudio-standards/hvac/components/create.rb +0 -169
- data/lib/openstudio-standards/hvac/components/modify.rb +0 -42
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirConditionerVariableRefrigerantFlow.rb +0 -438
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.BoilerHotWater.rb +0 -123
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CentralAirSourceHeatPump.rb +0 -216
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXSingleSpeed.rb +0 -273
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingDXTwoSpeed.rb +0 -159
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWater.rb +0 -77
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -154
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingDXSingleSpeed.rb +0 -214
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingElectric.rb +0 -53
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingGas.rb +0 -72
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWater.rb +0 -95
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.CoilHeatingWaterToAirHeatPumpEquationFit.rb +0 -125
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.ControllerWaterCoil.rb +0 -17
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.transformers.rb +0 -90
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Pump.rb +0 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.PumpVariableSpeed.rb +0 -70
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.radiant_system_controls.rb +0 -590
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +0 -901
- data/lib/openstudio-standards/standards/Standards.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/Standards.HeaderedPumpsVariableSpeed.rb +0 -55
- data/lib/openstudio-standards/standards/Standards.PumpConstantSpeed.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +0 -5
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +0 -5
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +0 -328
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +0 -328
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2007/ashrae_90_1_2007.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2010/ashrae_90_1_2010.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2013/ashrae_90_1_2013.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2016/ashrae_90_1_2016.PumpVariableSpeed.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.Pump.rb +0 -0
- /data/lib/openstudio-standards/{prototypes → standards}/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.PumpVariableSpeed.rb +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
class Standard
|
|
2
|
+
# @!group People
|
|
3
|
+
|
|
4
|
+
# Apply people from ventilation standards data to a space type
|
|
5
|
+
# Create a DesignSpecificationOutdoorAir air object and assign it to the SpaceType
|
|
6
|
+
#
|
|
7
|
+
# @param space_type [OpenStudio::Model::SpaceType] OpenStudio SpaceType object to apply people to
|
|
8
|
+
# @param thermal_comfort_models [Array<String>] optional argument to determine which thermal comfort model to use. Can select multiple with an array. Options are Fanger, Pierce, KSU, AdaptiveASH55, AdaptiveCEN15251, CoolingEffectASH55, and AnkleDraftASH55.
|
|
9
|
+
# @return [Boolean] returns true if successful, false if not
|
|
10
|
+
def space_type_apply_people(space_type, thermal_comfort_models: ['AdaptiveASH55'])
|
|
11
|
+
# Skip plenums
|
|
12
|
+
if space_type.name.get.to_s.downcase.include?('plenum')
|
|
13
|
+
return false
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
if space_type.standardsSpaceType.is_initialized && space_type.standardsSpaceType.get.downcase.include?('plenum')
|
|
17
|
+
return false
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Get the standards data
|
|
21
|
+
# @todo replace this look from standards_data['space_types'] to ventilation data directly, use 62.1 as a Standard
|
|
22
|
+
space_type_properties = space_type_get_standards_data(space_type)
|
|
23
|
+
|
|
24
|
+
# Ensure space_type_properties available
|
|
25
|
+
if space_type_properties.nil? || space_type_properties.empty?
|
|
26
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} was not found in the standards data.")
|
|
27
|
+
return false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# People
|
|
31
|
+
people_have_info = false
|
|
32
|
+
occupancy_per_area = space_type_properties['occupancy_per_area'].to_f
|
|
33
|
+
people_have_info = true unless occupancy_per_area.zero?
|
|
34
|
+
|
|
35
|
+
if people_have_info
|
|
36
|
+
# Remove all but the first instance
|
|
37
|
+
instances = space_type.people.sort
|
|
38
|
+
if instances.empty?
|
|
39
|
+
# Create a new definition and instance
|
|
40
|
+
definition = OpenStudio::Model::PeopleDefinition.new(space_type.model)
|
|
41
|
+
definition.setName("#{space_type.name} People Definition")
|
|
42
|
+
instance = OpenStudio::Model::People.new(definition)
|
|
43
|
+
instance.setName("#{space_type.name} People")
|
|
44
|
+
instance.setSpaceType(space_type)
|
|
45
|
+
thermal_comfort_models.each { |m| definition.pushThermalComfortModelType(m)}
|
|
46
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} had no people, one has been created.")
|
|
47
|
+
instances << instance
|
|
48
|
+
elsif instances.size > 1
|
|
49
|
+
instances.each_with_index do |inst, i|
|
|
50
|
+
next if i.zero?
|
|
51
|
+
|
|
52
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "Removed #{inst.name} from #{space_type.name}.")
|
|
53
|
+
inst.remove
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Modify the definition of the instance
|
|
58
|
+
space_type.people.sort.each do |inst|
|
|
59
|
+
definition = inst.peopleDefinition
|
|
60
|
+
unless occupancy_per_area.zero?
|
|
61
|
+
definition.setPeopleperSpaceFloorArea(OpenStudio.convert(occupancy_per_area / 1000, 'people/ft^2', 'people/m^2').get)
|
|
62
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set occupancy to #{occupancy_per_area} people/1000 ft^2.")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# set fraction radiant
|
|
66
|
+
definition.setFractionRadiant(0.3)
|
|
67
|
+
|
|
68
|
+
# Clothing schedule for thermal comfort metrics
|
|
69
|
+
clothing_sch = space_type.model.getScheduleRulesetByName('Clothing Schedule')
|
|
70
|
+
if clothing_sch.is_initialized
|
|
71
|
+
clothing_sch = clothing_sch.get
|
|
72
|
+
else
|
|
73
|
+
clothing_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
74
|
+
clothing_sch.setName('Clothing Schedule')
|
|
75
|
+
clothing_sch.defaultDaySchedule.setName('Clothing Schedule Default Winter Clothes')
|
|
76
|
+
clothing_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 1.0)
|
|
77
|
+
sch_rule = OpenStudio::Model::ScheduleRule.new(clothing_sch)
|
|
78
|
+
sch_rule.daySchedule.setName('Clothing Schedule Summer Clothes')
|
|
79
|
+
sch_rule.daySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.5)
|
|
80
|
+
sch_rule.setStartDate(OpenStudio::Date.new(OpenStudio::MonthOfYear.new(5), 1))
|
|
81
|
+
sch_rule.setEndDate(OpenStudio::Date.new(OpenStudio::MonthOfYear.new(9), 30))
|
|
82
|
+
end
|
|
83
|
+
inst.setClothingInsulationSchedule(clothing_sch)
|
|
84
|
+
|
|
85
|
+
# Air velocity schedule for thermal comfort metrics
|
|
86
|
+
air_velo_sch = space_type.model.getScheduleRulesetByName('Air Velocity Schedule')
|
|
87
|
+
if air_velo_sch.is_initialized
|
|
88
|
+
air_velo_sch = air_velo_sch.get
|
|
89
|
+
else
|
|
90
|
+
air_velo_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
91
|
+
air_velo_sch.setName('Air Velocity Schedule')
|
|
92
|
+
air_velo_sch.defaultDaySchedule.setName('Air Velocity Schedule Default')
|
|
93
|
+
air_velo_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.2)
|
|
94
|
+
end
|
|
95
|
+
inst.setAirVelocitySchedule(air_velo_sch)
|
|
96
|
+
|
|
97
|
+
# Work efficiency schedule for thermal comfort metrics
|
|
98
|
+
work_efficiency_sch = space_type.model.getScheduleRulesetByName('Work Efficiency Schedule')
|
|
99
|
+
if work_efficiency_sch.is_initialized
|
|
100
|
+
work_efficiency_sch = work_efficiency_sch.get
|
|
101
|
+
else
|
|
102
|
+
work_efficiency_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
103
|
+
work_efficiency_sch.setName('Work Efficiency Schedule')
|
|
104
|
+
work_efficiency_sch.defaultDaySchedule.setName('Work Efficiency Schedule Default')
|
|
105
|
+
work_efficiency_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0)
|
|
106
|
+
end
|
|
107
|
+
inst.setWorkEfficiencySchedule(work_efficiency_sch)
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
return true
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -825,10 +825,10 @@ class Standard
|
|
|
825
825
|
plant_loop.supplyComponents.each do |sc|
|
|
826
826
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
827
827
|
pump = sc.to_PumpVariableSpeed.get
|
|
828
|
-
pump_variable_speed_set_control_type(pump, pri_control_type)
|
|
828
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
|
|
829
829
|
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
|
830
830
|
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
|
831
|
-
|
|
831
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
|
|
832
832
|
end
|
|
833
833
|
end
|
|
834
834
|
|
|
@@ -836,10 +836,10 @@ class Standard
|
|
|
836
836
|
plant_loop.demandComponents.each do |sc|
|
|
837
837
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
838
838
|
pump = sc.to_PumpVariableSpeed.get
|
|
839
|
-
pump_variable_speed_set_control_type(pump, sec_control_type)
|
|
839
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
|
|
840
840
|
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
|
841
841
|
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
|
842
|
-
|
|
842
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
|
|
843
843
|
end
|
|
844
844
|
end
|
|
845
845
|
|
|
@@ -869,7 +869,7 @@ class Standard
|
|
|
869
869
|
plant_loop.supplyComponents.each do |sc|
|
|
870
870
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
871
871
|
pump = sc.to_PumpVariableSpeed.get
|
|
872
|
-
pump_variable_speed_set_control_type(pump, control_type)
|
|
872
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type)
|
|
873
873
|
end
|
|
874
874
|
end
|
|
875
875
|
|
|
@@ -898,10 +898,10 @@ class Standard
|
|
|
898
898
|
plant_loop.supplyComponents.each do |sc|
|
|
899
899
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
900
900
|
pump = sc.to_PumpVariableSpeed.get
|
|
901
|
-
pump_variable_speed_set_control_type(pump, control_type)
|
|
901
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type)
|
|
902
902
|
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
|
903
903
|
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
|
904
|
-
|
|
904
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type)
|
|
905
905
|
end
|
|
906
906
|
end
|
|
907
907
|
|
|
@@ -1274,12 +1274,12 @@ class Standard
|
|
|
1274
1274
|
plant_loop.supplyComponents.each do |component|
|
|
1275
1275
|
if component.to_PumpConstantSpeed.is_initialized
|
|
1276
1276
|
pump = component.to_PumpConstantSpeed.get
|
|
1277
|
-
pump_rated_w_per_gpm =
|
|
1277
|
+
pump_rated_w_per_gpm = OpenstudioStandards::HVAC.pump_get_rated_w_per_gpm(pump)
|
|
1278
1278
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "'#{loop_type}' Loop #{plant_loop.name} - Primary (Supply) Constant Speed Pump '#{pump.name}' - pump_rated_w_per_gpm #{pump_rated_w_per_gpm} W/GPM")
|
|
1279
1279
|
supply_w_per_gpm += pump_rated_w_per_gpm
|
|
1280
1280
|
elsif component.to_PumpVariableSpeed.is_initialized
|
|
1281
1281
|
pump = component.to_PumpVariableSpeed.get
|
|
1282
|
-
pump_rated_w_per_gpm =
|
|
1282
|
+
pump_rated_w_per_gpm = OpenstudioStandards::HVAC.pump_get_rated_w_per_gpm(pump)
|
|
1283
1283
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "'#{loop_type}' Loop #{plant_loop.name} - Primary (Supply) VSD Pump '#{pump.name}' - pump_rated_w_per_gpm #{pump_rated_w_per_gpm} W/GPM")
|
|
1284
1284
|
supply_w_per_gpm += pump_rated_w_per_gpm
|
|
1285
1285
|
end
|
|
@@ -1291,12 +1291,12 @@ class Standard
|
|
|
1291
1291
|
demand_pumps.each do |component|
|
|
1292
1292
|
if component.to_PumpConstantSpeed.is_initialized
|
|
1293
1293
|
pump = component.to_PumpConstantSpeed.get
|
|
1294
|
-
pump_rated_w_per_gpm =
|
|
1294
|
+
pump_rated_w_per_gpm = OpenstudioStandards::HVAC.pump_get_rated_w_per_gpm(pump)
|
|
1295
1295
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "'#{loop_type}' Loop #{plant_loop.name} - Secondary (Demand) Constant Speed Pump '#{pump.name}' - pump_rated_w_per_gpm #{pump_rated_w_per_gpm} W/GPM")
|
|
1296
1296
|
demand_w_per_gpm += pump_rated_w_per_gpm
|
|
1297
1297
|
elsif component.to_PumpVariableSpeed.is_initialized
|
|
1298
1298
|
pump = component.to_PumpVariableSpeed.get
|
|
1299
|
-
pump_rated_w_per_gpm =
|
|
1299
|
+
pump_rated_w_per_gpm = OpenstudioStandards::HVAC.pump_get_rated_w_per_gpm(pump)
|
|
1300
1300
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.PlantLoop', "'#{loop_type}' Loop #{plant_loop.name} - Secondary (Demand) VSD Pump '#{pump.name}' - pump_rated_w_per_gpm #{pump_rated_w_per_gpm} W/GPM")
|
|
1301
1301
|
demand_w_per_gpm += pump_rated_w_per_gpm
|
|
1302
1302
|
end
|
|
@@ -81,7 +81,7 @@ module Pump
|
|
|
81
81
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.Pump', "For #{pump.name}: motor nameplate = #{nominal_hp}HP, motor eff = #{(motor_efficiency * 100).round(2)}%; #{target_w_per_gpm.round} W/gpm translates to a pressure rise of #{pressure_rise_ft_h2o.round(2)} ftH2O.")
|
|
82
82
|
|
|
83
83
|
# Calculate the W/gpm for verification
|
|
84
|
-
calculated_w =
|
|
84
|
+
calculated_w = OpenstudioStandards::HVAC.pump_get_power(pump)
|
|
85
85
|
|
|
86
86
|
calculated_w_per_gpm = calculated_w / flow_gpm
|
|
87
87
|
|
|
@@ -97,7 +97,7 @@ module Pump
|
|
|
97
97
|
# @return [Boolean] returns true if successful, false if not
|
|
98
98
|
def pump_apply_standard_minimum_motor_efficiency(pump)
|
|
99
99
|
# Get the horsepower
|
|
100
|
-
bhp =
|
|
100
|
+
bhp = OpenstudioStandards::HVAC.pump_get_brake_horsepower(pump)
|
|
101
101
|
|
|
102
102
|
# Find the motor efficiency
|
|
103
103
|
motor_eff, nominal_hp = pump_standard_minimum_motor_efficiency_and_size(pump, bhp)
|
|
@@ -180,149 +180,4 @@ module Pump
|
|
|
180
180
|
|
|
181
181
|
return [motor_eff, nominal_hp]
|
|
182
182
|
end
|
|
183
|
-
|
|
184
|
-
# Determines the pump power (W) based on flow rate, pressure rise,
|
|
185
|
-
# and total pump efficiency(impeller eff * motor eff).
|
|
186
|
-
# Uses the E+ default assumption of 0.78 impeller efficiency.
|
|
187
|
-
#
|
|
188
|
-
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
189
|
-
# PumpConstantSpeed, PumpVariableSpeed
|
|
190
|
-
# @return [Double] pump power in watts
|
|
191
|
-
def pump_pumppower(pump)
|
|
192
|
-
# Get flow rate (whether autosized or hard-sized)
|
|
193
|
-
flow_m3_per_s = 0
|
|
194
|
-
flow_m3_per_s = if pump.to_PumpVariableSpeed.is_initialized || pump.to_PumpConstantSpeed.is_initialized
|
|
195
|
-
if pump.ratedFlowRate.is_initialized
|
|
196
|
-
pump.ratedFlowRate.get
|
|
197
|
-
elsif pump.autosizedRatedFlowRate.is_initialized
|
|
198
|
-
pump.autosizedRatedFlowRate.get
|
|
199
|
-
end
|
|
200
|
-
elsif pump.to_HeaderedPumpsVariableSpeed.is_initialized || pump.to_HeaderedPumpsConstantSpeed.is_initialized
|
|
201
|
-
if pump.totalRatedFlowRate.is_initialized
|
|
202
|
-
pump.totalRatedFlowRate.get
|
|
203
|
-
elsif pump.autosizedTotalRatedFlowRate.is_initialized
|
|
204
|
-
pump.autosizedTotalRatedFlowRate.get
|
|
205
|
-
end
|
|
206
|
-
end
|
|
207
|
-
|
|
208
|
-
# E+ default impeller efficiency
|
|
209
|
-
# http://bigladdersoftware.com/epx/docs/8-4/engineering-reference/component-sizing.html#pump-sizing
|
|
210
|
-
impeller_eff = 0.78
|
|
211
|
-
|
|
212
|
-
# Get the motor efficiency
|
|
213
|
-
motor_eff = pump.motorEfficiency
|
|
214
|
-
|
|
215
|
-
# Calculate the total efficiency
|
|
216
|
-
# which includes both motor and
|
|
217
|
-
# impeller efficiency.
|
|
218
|
-
pump_total_eff = impeller_eff * motor_eff
|
|
219
|
-
|
|
220
|
-
# Get the pressure rise (Pa)
|
|
221
|
-
pressure_rise_pa = pump.ratedPumpHead
|
|
222
|
-
|
|
223
|
-
# Calculate the pump power (W)
|
|
224
|
-
pump_power_w = pressure_rise_pa * flow_m3_per_s / pump_total_eff
|
|
225
|
-
|
|
226
|
-
return pump_power_w
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
# Determines the brake horsepower of the pump based on flow rate,
|
|
230
|
-
# pressure rise, and impeller efficiency.
|
|
231
|
-
#
|
|
232
|
-
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
233
|
-
# PumpConstantSpeed, PumpVariableSpeed
|
|
234
|
-
# @return [Double] brake horsepower
|
|
235
|
-
def pump_brake_horsepower(pump)
|
|
236
|
-
# Get flow rate (whether autosized or hard-sized)
|
|
237
|
-
# Get flow rate (whether autosized or hard-sized)
|
|
238
|
-
flow_m3_per_s = 0
|
|
239
|
-
flow_m3_per_s = if pump.to_PumpVariableSpeed.is_initialized || pump.to_PumpConstantSpeed.is_initialized
|
|
240
|
-
if pump.ratedFlowRate.is_initialized
|
|
241
|
-
pump.ratedFlowRate.get
|
|
242
|
-
elsif pump.autosizedRatedFlowRate.is_initialized
|
|
243
|
-
pump.autosizedRatedFlowRate.get
|
|
244
|
-
end
|
|
245
|
-
elsif pump.to_HeaderedPumpsVariableSpeed.is_initialized || pump.to_HeaderedPumpsConstantSpeed.is_initialized
|
|
246
|
-
if pump.totalRatedFlowRate.is_initialized
|
|
247
|
-
pump.totalRatedFlowRate.get
|
|
248
|
-
elsif pump.autosizedTotalRatedFlowRate.is_initialized
|
|
249
|
-
pump.autosizedTotalRatedFlowRate.get
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
# E+ default impeller efficiency
|
|
254
|
-
# http://bigladdersoftware.com/epx/docs/8-4/engineering-reference/component-sizing.html#pump-sizing
|
|
255
|
-
impeller_eff = 0.78
|
|
256
|
-
|
|
257
|
-
# Get the pressure rise (Pa)
|
|
258
|
-
pressure_rise_pa = pump.ratedPumpHead
|
|
259
|
-
|
|
260
|
-
# Calculate the pump power (W)
|
|
261
|
-
pump_power_w = pressure_rise_pa * flow_m3_per_s / impeller_eff
|
|
262
|
-
|
|
263
|
-
# Convert to HP
|
|
264
|
-
pump_power_hp = pump_power_w / 745.7 # 745.7 W/HP
|
|
265
|
-
|
|
266
|
-
return pump_power_hp
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
# Determines the horsepower of the pump motor, including motor efficiency and pump impeller efficiency.
|
|
270
|
-
#
|
|
271
|
-
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
272
|
-
# PumpConstantSpeed, PumpVariableSpeed
|
|
273
|
-
# @return [Double] motor horsepower
|
|
274
|
-
def pump_motor_horsepower(pump)
|
|
275
|
-
# Get the pump power
|
|
276
|
-
pump_power_w = pump_pumppower(pump)
|
|
277
|
-
|
|
278
|
-
# Convert to HP
|
|
279
|
-
pump_hp = pump_power_w / 745.7 # 745.7 W/HP
|
|
280
|
-
|
|
281
|
-
return pump_hp
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
# Determines the rated watts per GPM of the pump
|
|
285
|
-
#
|
|
286
|
-
# @param pump [OpenStudio::Model::StraightComponent] pump object, allowable types:
|
|
287
|
-
# PumpConstantSpeed, PumpVariableSpeed
|
|
288
|
-
# @return [Double] rated power consumption per flow in watts per gpm, W*min/gal
|
|
289
|
-
def pump_rated_w_per_gpm(pump)
|
|
290
|
-
# Get design power (whether autosized or hard-sized)
|
|
291
|
-
rated_power_w = 0
|
|
292
|
-
if pump.ratedPowerConsumption.is_initialized
|
|
293
|
-
rated_power_w = pump.ratedPowerConsumption.get
|
|
294
|
-
elsif pump.autosizedRatedPowerConsumption.is_initialized
|
|
295
|
-
rated_power_w = pump.autosizedRatedPowerConsumption.get
|
|
296
|
-
else
|
|
297
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump power consumption, cannot determine w per gpm correctly.")
|
|
298
|
-
return 0.0
|
|
299
|
-
end
|
|
300
|
-
|
|
301
|
-
rated_m3_per_s = 0
|
|
302
|
-
if pump.to_PumpVariableSpeed.is_initialized || pump.to_PumpConstantSpeed.is_initialized
|
|
303
|
-
if pump.ratedFlowRate.is_initialized
|
|
304
|
-
rated_m3_per_s = pump.ratedFlowRate.get
|
|
305
|
-
elsif pump.autosizedRatedFlowRate.is_initialized
|
|
306
|
-
rated_m3_per_s = pump.autosizedRatedFlowRate.get
|
|
307
|
-
else
|
|
308
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump Flow Rate, cannot determine w per gpm correctly.")
|
|
309
|
-
return 0.0
|
|
310
|
-
end
|
|
311
|
-
elsif pump.to_HeaderedPumpsVariableSpeed.is_initialized || pump.to_HeaderedPumpsConstantSpeed.is_initialized
|
|
312
|
-
if pump.totalRatedFlowRate.is_initialized
|
|
313
|
-
rated_m3_per_s = pump.totalRatedFlowRate.get
|
|
314
|
-
elsif pump.autosizedTotalRatedFlowRate.is_initialized
|
|
315
|
-
rated_m3_per_s = pump.autosizedTotalRatedFlowRate.get
|
|
316
|
-
else
|
|
317
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump Flow Rate, cannot determine w per gpm correctly.")
|
|
318
|
-
return 0.0
|
|
319
|
-
end
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
rated_w_per_m3s = rated_power_w / rated_m3_per_s
|
|
323
|
-
|
|
324
|
-
rated_w_per_gpm = OpenStudio.convert(rated_w_per_m3s, 'W*s/m^3', 'W*min/gal').get
|
|
325
|
-
|
|
326
|
-
return rated_w_per_gpm
|
|
327
|
-
end
|
|
328
183
|
end
|
|
@@ -1,54 +1,70 @@
|
|
|
1
1
|
class Standard
|
|
2
|
-
# @!group PumpVariableSpeed
|
|
3
|
-
|
|
4
2
|
include Pump
|
|
5
3
|
|
|
6
|
-
#
|
|
4
|
+
# Determine and set type of part load control type for heating and chilled
|
|
5
|
+
# water variable speed pumps
|
|
7
6
|
#
|
|
8
|
-
# @param
|
|
9
|
-
# @
|
|
10
|
-
def
|
|
11
|
-
#
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
coeff_a = 0.0
|
|
24
|
-
coeff_b = 3.2485
|
|
25
|
-
coeff_c = -4.7443
|
|
26
|
-
coeff_d = 2.5294
|
|
27
|
-
when 'VSD No Reset'
|
|
28
|
-
coeff_a = 0.0
|
|
29
|
-
coeff_b = 0.5726
|
|
30
|
-
coeff_c = -0.301
|
|
31
|
-
coeff_d = 0.7347
|
|
32
|
-
when 'VSD DP Reset'
|
|
33
|
-
coeff_a = 0.0
|
|
34
|
-
coeff_b = 0.0205
|
|
35
|
-
coeff_c = 0.4101
|
|
36
|
-
coeff_d = 0.5753
|
|
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
|
|
37
22
|
else
|
|
38
|
-
OpenStudio.logFree(OpenStudio::
|
|
23
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.Pump', "For #{pump.name}, could not find rated pump power consumption, cannot determine w per gpm correctly.")
|
|
39
24
|
return false
|
|
40
25
|
end
|
|
41
26
|
|
|
42
|
-
#
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
pump_variable_speed.setPumpControlType('Intermittent')
|
|
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)
|
|
48
32
|
|
|
49
|
-
#
|
|
50
|
-
|
|
33
|
+
# Set pump part load performance curve coefficients
|
|
34
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: control_type) if control_type
|
|
51
35
|
|
|
52
36
|
return true
|
|
53
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
|
|
54
70
|
end
|