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,222 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The HVAC module provides methods create, modify, and get information about HVAC systems in the model
|
|
3
|
+
module HVAC
|
|
4
|
+
# @!group Conversions
|
|
5
|
+
# Methods to convert between different units of measurement for HVAC systems
|
|
6
|
+
|
|
7
|
+
# Convert from SEER to COP (no fan) for cooling coils
|
|
8
|
+
# @ref [References::ASHRAE9012013] Appendix G
|
|
9
|
+
#
|
|
10
|
+
# @param seer [Double] seasonal energy efficiency ratio (SEER)
|
|
11
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
12
|
+
def self.seer_to_cop_no_fan(seer)
|
|
13
|
+
cop = (-0.0076 * seer * seer) + (0.3796 * seer)
|
|
14
|
+
|
|
15
|
+
return cop
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# Convert from COP to SEER
|
|
19
|
+
# @ref [References::USDOEPrototypeBuildings]
|
|
20
|
+
#
|
|
21
|
+
# @param cop [Double] COP
|
|
22
|
+
# @return [Double] Seasonal Energy Efficiency Ratio
|
|
23
|
+
def self.cop_no_fan_to_seer(cop)
|
|
24
|
+
delta = (0.3796**2) - (4.0 * 0.0076 * cop)
|
|
25
|
+
seer = ((-delta**0.5) + 0.3796) / (2.0 * 0.0076)
|
|
26
|
+
|
|
27
|
+
return seer
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Convert from SEER to COP (with fan) for cooling coils
|
|
31
|
+
# per the method specified in Thornton et al. 2011
|
|
32
|
+
#
|
|
33
|
+
# @param seer [Double] seasonal energy efficiency ratio (SEER)
|
|
34
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
35
|
+
def self.seer_to_cop(seer)
|
|
36
|
+
eer = (-0.0182 * seer * seer) + (1.1088 * seer)
|
|
37
|
+
cop = OpenstudioStandards::HVAC.eer_to_cop(eer)
|
|
38
|
+
|
|
39
|
+
return cop
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Convert from COP to SEER (with fan) for cooling coils
|
|
43
|
+
# per the method specified in Thornton et al. 2011
|
|
44
|
+
#
|
|
45
|
+
# @param cop [Double] Coefficient of Performance (COP)
|
|
46
|
+
# @return [Double] seasonal energy efficiency ratio (SEER)
|
|
47
|
+
def self.cop_to_seer(cop)
|
|
48
|
+
eer = OpenstudioStandards::HVAC.cop_to_eer(cop)
|
|
49
|
+
delta = (1.1088**2) - (4.0 * 0.0182 * eer)
|
|
50
|
+
seer = (1.1088 - (delta**0.5)) / (2.0 * 0.0182)
|
|
51
|
+
|
|
52
|
+
return seer
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Convert from COP_H to COP (no fan) for heat pump heating coils
|
|
56
|
+
# @ref [References::ASHRAE9012013] Appendix G
|
|
57
|
+
#
|
|
58
|
+
# @param coph47 [Double] coefficient of performance at 47F Tdb, 42F Twb
|
|
59
|
+
# @param capacity_w [Double] the heating capacity at AHRI rating conditions, in W
|
|
60
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
61
|
+
def self.cop_heating_to_cop_heating_no_fan(coph47, capacity_w)
|
|
62
|
+
# Convert the capacity to Btu/hr
|
|
63
|
+
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
64
|
+
|
|
65
|
+
cop = (1.48E-7 * coph47 * capacity_btu_per_hr) + (1.062 * coph47)
|
|
66
|
+
|
|
67
|
+
return cop
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Convert from HSPF to COP (no fan) for heat pump heating coils
|
|
71
|
+
# @ref [References::ASHRAE9012013] Appendix G
|
|
72
|
+
#
|
|
73
|
+
# @param hspf [Double] heating seasonal performance factor (HSPF)
|
|
74
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
75
|
+
def self.hspf_to_cop_no_fan(hspf)
|
|
76
|
+
cop = (-0.0296 * hspf * hspf) + (0.7134 * hspf)
|
|
77
|
+
|
|
78
|
+
return cop
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Convert from HSPF to COP (with fan) for heat pump heating coils
|
|
82
|
+
# @ref ASHRAE RP-1197
|
|
83
|
+
#
|
|
84
|
+
# @param hspf [Double] heating seasonal performance factor (HSPF)
|
|
85
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
86
|
+
def self.hspf_to_cop(hspf)
|
|
87
|
+
cop = (-0.0255 * hspf * hspf) + (0.6239 * hspf)
|
|
88
|
+
|
|
89
|
+
return cop
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Convert from EER to COP (no fan)
|
|
93
|
+
# @ref [References::USDOEPrototypeBuildings] If capacity is not supplied, use DOE Prototype Building method.
|
|
94
|
+
# @ref [References::ASHRAE9012013] If capacity is supplied, use the 90.1-2013 method
|
|
95
|
+
#
|
|
96
|
+
# @param eer [Double] Energy Efficiency Ratio (EER)
|
|
97
|
+
# @param capacity_w [Double] the heating capacity at AHRI rating conditions, in W
|
|
98
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
99
|
+
def self.eer_to_cop_no_fan(eer, capacity_w = nil)
|
|
100
|
+
if capacity_w.nil?
|
|
101
|
+
# From Thornton et al. 2011
|
|
102
|
+
# r is the ratio of supply fan power to total equipment power at the rating condition,
|
|
103
|
+
# assumed to be 0.12 for the reference buildings per Thornton et al. 2011.
|
|
104
|
+
r = 0.12
|
|
105
|
+
cop = ((eer / OpenStudio.convert(1.0, 'W', 'Btu/h').get) + r) / (1 - r)
|
|
106
|
+
else
|
|
107
|
+
# The 90.1-2013 method
|
|
108
|
+
# Convert the capacity to Btu/hr
|
|
109
|
+
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
110
|
+
cop = (7.84E-8 * eer * capacity_btu_per_hr) + (0.338 * eer)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
return cop
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Convert from COP (no fan) to EER
|
|
117
|
+
# @ref [References::USDOEPrototypeBuildings]
|
|
118
|
+
#
|
|
119
|
+
# @param cop [Double] COP
|
|
120
|
+
# @return [Double] Energy Efficiency Ratio (EER)
|
|
121
|
+
def self.cop_no_fan_to_eer(cop, capacity_w = nil)
|
|
122
|
+
if capacity_w.nil?
|
|
123
|
+
# From Thornton et al. 2011
|
|
124
|
+
# r is the ratio of supply fan power to total equipment power at the rating condition,
|
|
125
|
+
# assumed to be 0.12 for the reference buildngs per Thornton et al. 2011.
|
|
126
|
+
r = 0.12
|
|
127
|
+
eer = OpenStudio.convert(1.0, 'W', 'Btu/h').get * ((cop * (1 - r)) - r)
|
|
128
|
+
else
|
|
129
|
+
# The 90.1-2013 method
|
|
130
|
+
# Convert the capacity to Btu/hr
|
|
131
|
+
capacity_btu_per_hr = OpenStudio.convert(capacity_w, 'W', 'Btu/hr').get
|
|
132
|
+
eer = cop / ((7.84E-8 * capacity_btu_per_hr) + 0.338)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
return eer
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Convert from IEER to COP (no fan)
|
|
139
|
+
#
|
|
140
|
+
# @note IEER is a weighted-average efficiency metrics at different load percentages, operataional and environemental conditions
|
|
141
|
+
# @note IEER should be modeled by using performance curves that match a targeted efficiency values
|
|
142
|
+
# @note This method estimates what a reasonable full load rated EER would be for a targeted IEER value
|
|
143
|
+
# @note The regression used in this method is based on a survey of over 1,000 rated AHRI units with IEER ranging from 11.8 to 25.6
|
|
144
|
+
# @todo Implement methods to handle IEER modeling
|
|
145
|
+
#
|
|
146
|
+
# @param ieer [Double] Energy Efficiency Ratio (EER)
|
|
147
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
148
|
+
def self.ieer_to_cop_no_fan(ieer)
|
|
149
|
+
eer = (0.0183 * ieer * ieer) - (0.4552 * ieer) + 13.21
|
|
150
|
+
|
|
151
|
+
return OpenstudioStandards::HVAC.eer_to_cop_no_fan(eer)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Convert from EER to COP
|
|
155
|
+
#
|
|
156
|
+
# @param eer [Double] Energy Efficiency Ratio (EER)
|
|
157
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
158
|
+
def self.eer_to_cop(eer)
|
|
159
|
+
return eer / OpenStudio.convert(1.0, 'W', 'Btu/h').get
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
# Convert from COP to EER
|
|
163
|
+
#
|
|
164
|
+
# @param cop [Double] Coefficient of Performance (COP)
|
|
165
|
+
# @return [Double] Energy Efficiency Ratio (EER)
|
|
166
|
+
def self.cop_to_eer(cop)
|
|
167
|
+
return cop * OpenStudio.convert(1.0, 'W', 'Btu/h').get
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Convert from COP to kW/ton
|
|
171
|
+
#
|
|
172
|
+
# @param cop [Double] Coefficient of Performance (COP)
|
|
173
|
+
# @return [Double] kW of input power per ton of cooling
|
|
174
|
+
def self.cop_to_kw_per_ton(cop)
|
|
175
|
+
return 3.517 / cop
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# A helper method to convert from kW/ton to COP
|
|
179
|
+
#
|
|
180
|
+
# @param kw_per_ton [Double] kW of input power per ton of cooling
|
|
181
|
+
# @return [Double] Coefficient of Performance (COP)
|
|
182
|
+
def self.kw_per_ton_to_cop(kw_per_ton)
|
|
183
|
+
return 3.517 / kw_per_ton
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
# A helper method to convert from AFUE to thermal efficiency
|
|
187
|
+
# @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
|
|
188
|
+
#
|
|
189
|
+
# @param afue [Double] Annual Fuel Utilization Efficiency
|
|
190
|
+
# @return [Double] Thermal efficiency (%)
|
|
191
|
+
def self.afue_to_thermal_eff(afue)
|
|
192
|
+
return afue
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# A helper method to convert from thermal efficiency to AFUE
|
|
196
|
+
# @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
|
|
197
|
+
#
|
|
198
|
+
# @param teff [Double] Thermal Efficiency
|
|
199
|
+
# @return [Double] AFUE
|
|
200
|
+
def self.thermal_eff_to_afue(teff)
|
|
201
|
+
return teff
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# A helper method to convert from combustion efficiency to thermal efficiency
|
|
205
|
+
# @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
|
|
206
|
+
#
|
|
207
|
+
# @param combustion_eff [Double] Combustion efficiency (%)
|
|
208
|
+
# @return [Double] Thermal efficiency (%)
|
|
209
|
+
def self.combustion_eff_to_thermal_eff(combustion_eff)
|
|
210
|
+
return combustion_eff - 0.007
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
# A helper method to convert from thermal efficiency to combustion efficiency
|
|
214
|
+
# @ref [References::USDOEPrototypeBuildings] Boiler Addendum 90.1-04an
|
|
215
|
+
#
|
|
216
|
+
# @param thermal_eff [Double] Thermal efficiency
|
|
217
|
+
# @return [Double] Combustion efficiency
|
|
218
|
+
def self.thermal_eff_to_comb_eff(thermal_eff)
|
|
219
|
+
return thermal_eff + 0.007
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
end
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The HVAC module provides methods create, modify, and get information about HVAC systems in the model
|
|
3
|
+
module HVAC
|
|
4
|
+
# @!group Curves
|
|
5
|
+
# Methods to create and modify curves for HVAC systems
|
|
6
|
+
|
|
7
|
+
# Convert biquadratic curves that are a function of temperature
|
|
8
|
+
# from IP (F) to SI (C) or vice-versa. The curve is of the form
|
|
9
|
+
# z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y
|
|
10
|
+
# where C1, C2, ... are the coefficients,
|
|
11
|
+
# x is the first independent variable (in F or C)
|
|
12
|
+
# y is the second independent variable (in F or C)
|
|
13
|
+
# and z is the resulting value
|
|
14
|
+
#
|
|
15
|
+
# @author Scott Horowitz, NREL
|
|
16
|
+
# @param coeffs [Array<Double>] an array of 6 coefficients, in order
|
|
17
|
+
# @return [Array<Double>] the revised coefficients in the new unit system
|
|
18
|
+
def self.convert_curve_biquadratic(coeffs, ip_to_si: true)
|
|
19
|
+
if ip_to_si
|
|
20
|
+
# Convert IP curves to SI curves
|
|
21
|
+
si_coeffs = []
|
|
22
|
+
si_coeffs << (coeffs[0] + (32.0 * (coeffs[1] + coeffs[3])) + (1024.0 * (coeffs[2] + coeffs[4] + coeffs[5])))
|
|
23
|
+
si_coeffs << ((9.0 / 5.0 * coeffs[1]) + (576.0 / 5.0 * coeffs[2]) + (288.0 / 5.0 * coeffs[5]))
|
|
24
|
+
si_coeffs << (81.0 / 25.0 * coeffs[2])
|
|
25
|
+
si_coeffs << ((9.0 / 5.0 * coeffs[3]) + (576.0 / 5.0 * coeffs[4]) + (288.0 / 5.0 * coeffs[5]))
|
|
26
|
+
si_coeffs << (81.0 / 25.0 * coeffs[4])
|
|
27
|
+
si_coeffs << (81.0 / 25.0 * coeffs[5])
|
|
28
|
+
return si_coeffs
|
|
29
|
+
else
|
|
30
|
+
# Convert SI curves to IP curves
|
|
31
|
+
ip_coeffs = []
|
|
32
|
+
ip_coeffs << (coeffs[0] - (160.0 / 9.0 * (coeffs[1] + coeffs[3])) + (25_600.0 / 81.0 * (coeffs[2] + coeffs[4] + coeffs[5])))
|
|
33
|
+
ip_coeffs << (5.0 / 9.0 * (coeffs[1] - (320.0 / 9.0 * coeffs[2]) - (160.0 / 9.0 * coeffs[5])))
|
|
34
|
+
ip_coeffs << (25.0 / 81.0 * coeffs[2])
|
|
35
|
+
ip_coeffs << (5.0 / 9.0 * (coeffs[3] - (320.0 / 9.0 * coeffs[4]) - (160.0 / 9.0 * coeffs[5])))
|
|
36
|
+
ip_coeffs << (25.0 / 81.0 * coeffs[4])
|
|
37
|
+
ip_coeffs << (25.0 / 81.0 * coeffs[5])
|
|
38
|
+
return ip_coeffs
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Create a biquadratic curve of the form
|
|
43
|
+
# z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y
|
|
44
|
+
#
|
|
45
|
+
# @author Scott Horowitz, NREL
|
|
46
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
47
|
+
# @param coeffs [Array<Double>] an array of 6 coefficients, in order
|
|
48
|
+
# @param name [String] the name of the curve
|
|
49
|
+
# @param min_x [Double] the minimum value of independent variable X that will be used
|
|
50
|
+
# @param max_x [Double] the maximum value of independent variable X that will be used
|
|
51
|
+
# @param min_y [Double] the minimum value of independent variable Y that will be used
|
|
52
|
+
# @param max_y [Double] the maximum value of independent variable Y that will be used
|
|
53
|
+
# @param min_out [Double] the minimum value of dependent variable Z
|
|
54
|
+
# @param max_out [Double] the maximum value of dependent variable Z
|
|
55
|
+
# @return [OpenStudio::Model::CurveBiquadratic] a biquadratic curve
|
|
56
|
+
def self.create_curve_biquadratic(model, coeffs, name: 'CurveBiquadratic', min_x: nil, max_x: nil, min_y: nil, max_y: nil, min_out: nil, max_out: nil)
|
|
57
|
+
curve = OpenStudio::Model::CurveBiquadratic.new(model)
|
|
58
|
+
curve.setName(name)
|
|
59
|
+
curve.setCoefficient1Constant(coeffs[0])
|
|
60
|
+
curve.setCoefficient2x(coeffs[1])
|
|
61
|
+
curve.setCoefficient3xPOW2(coeffs[2])
|
|
62
|
+
curve.setCoefficient4y(coeffs[3])
|
|
63
|
+
curve.setCoefficient5yPOW2(coeffs[4])
|
|
64
|
+
curve.setCoefficient6xTIMESY(coeffs[5])
|
|
65
|
+
curve.setMinimumValueofx(min_x) unless min_x.nil?
|
|
66
|
+
curve.setMaximumValueofx(max_x) unless max_x.nil?
|
|
67
|
+
curve.setMinimumValueofy(min_y) unless min_y.nil?
|
|
68
|
+
curve.setMaximumValueofy(max_y) unless max_y.nil?
|
|
69
|
+
curve.setMinimumCurveOutput(min_out) unless min_out.nil?
|
|
70
|
+
curve.setMaximumCurveOutput(max_out) unless max_out.nil?
|
|
71
|
+
return curve
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Create a bicubic curve of the form
|
|
75
|
+
# z = C1 + C2*x + C3*x^2 + C4*y + C5*y^2 + C6*x*y + C7*x^3 + C8*y^3 + C9*x^2*y + C10*x*y^2
|
|
76
|
+
#
|
|
77
|
+
# @author Scott Horowitz, NREL
|
|
78
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
79
|
+
# @param coeffs [Array<Double>] an array of 10 coefficients, in order
|
|
80
|
+
# @param name [String] the name of the curve
|
|
81
|
+
# @param min_x [Double] the minimum value of independent variable X that will be used
|
|
82
|
+
# @param max_x [Double] the maximum value of independent variable X that will be used
|
|
83
|
+
# @param min_y [Double] the minimum value of independent variable Y that will be used
|
|
84
|
+
# @param max_y [Double] the maximum value of independent variable Y that will be used
|
|
85
|
+
# @param min_out [Double] the minimum value of dependent variable Z
|
|
86
|
+
# @param max_out [Double] the maximum value of dependent variable Z
|
|
87
|
+
# @return [OpenStudio::Model::CurveBicubic] a bicubic curve
|
|
88
|
+
def self.create_curve_bicubic(model, coeffs, name: 'CurveBicubic', min_x: nil, max_x: nil, min_y: nil, max_y: nil, min_out: nil, max_out: nil)
|
|
89
|
+
curve = OpenStudio::Model::CurveBicubic.new(model)
|
|
90
|
+
curve.setName(name)
|
|
91
|
+
curve.setCoefficient1Constant(coeffs[0])
|
|
92
|
+
curve.setCoefficient2x(coeffs[1])
|
|
93
|
+
curve.setCoefficient3xPOW2(coeffs[2])
|
|
94
|
+
curve.setCoefficient4y(coeffs[3])
|
|
95
|
+
curve.setCoefficient5yPOW2(coeffs[4])
|
|
96
|
+
curve.setCoefficient6xTIMESY(coeffs[5])
|
|
97
|
+
curve.setCoefficient7xPOW3(coeffs[6])
|
|
98
|
+
curve.setCoefficient8yPOW3(coeffs[7])
|
|
99
|
+
curve.setCoefficient9xPOW2TIMESY(coeffs[8])
|
|
100
|
+
curve.setCoefficient10xTIMESYPOW2(coeffs[9])
|
|
101
|
+
curve.setMinimumValueofx(min_x) unless min_x.nil?
|
|
102
|
+
curve.setMaximumValueofx(max_x) unless max_x.nil?
|
|
103
|
+
curve.setMinimumValueofy(min_y) unless min_y.nil?
|
|
104
|
+
curve.setMaximumValueofy(max_y) unless max_y.nil?
|
|
105
|
+
curve.setMinimumCurveOutput(min_out) unless min_out.nil?
|
|
106
|
+
curve.setMaximumCurveOutput(max_out) unless max_out.nil?
|
|
107
|
+
return curve
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
# Create a quadratic curve of the form
|
|
111
|
+
# z = C1 + C2*x + C3*x^2
|
|
112
|
+
#
|
|
113
|
+
# @author Scott Horowitz, NREL
|
|
114
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
115
|
+
# @param coeffs [Array<Double>] an array of 3 coefficients, in order
|
|
116
|
+
# @param name [String] the name of the curve
|
|
117
|
+
# @param min_x [Double] the minimum value of independent variable X that will be used
|
|
118
|
+
# @param max_x [Double] the maximum value of independent variable X that will be used
|
|
119
|
+
# @param min_out [Double] the minimum value of dependent variable Z
|
|
120
|
+
# @param max_out [Double] the maximum value of dependent variable Z
|
|
121
|
+
# @param is_dimensionless [Boolean] if true, the X independent variable is considered unitless
|
|
122
|
+
# and the resulting output dependent variable is considered unitless
|
|
123
|
+
# @return [OpenStudio::Model::CurveQuadratic] a quadratic curve
|
|
124
|
+
def self.create_curve_quadratic(model, coeffs, name: 'CurveQuadratic', min_x: nil, max_x: nil, min_out: nil, max_out: nil, is_dimensionless: false)
|
|
125
|
+
curve = OpenStudio::Model::CurveQuadratic.new(model)
|
|
126
|
+
curve.setName(name)
|
|
127
|
+
curve.setCoefficient1Constant(coeffs[0])
|
|
128
|
+
curve.setCoefficient2x(coeffs[1])
|
|
129
|
+
curve.setCoefficient3xPOW2(coeffs[2])
|
|
130
|
+
curve.setMinimumValueofx(min_x) unless min_x.nil?
|
|
131
|
+
curve.setMaximumValueofx(max_x) unless max_x.nil?
|
|
132
|
+
curve.setMinimumCurveOutput(min_out) unless min_out.nil?
|
|
133
|
+
curve.setMaximumCurveOutput(max_out) unless max_out.nil?
|
|
134
|
+
if is_dimensionless
|
|
135
|
+
curve.setInputUnitTypeforX('Dimensionless')
|
|
136
|
+
curve.setOutputUnitType('Dimensionless')
|
|
137
|
+
end
|
|
138
|
+
return curve
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# Create a cubic curve of the form
|
|
142
|
+
# z = C1 + C2*x + C3*x^2 + C4*x^3
|
|
143
|
+
#
|
|
144
|
+
# @author Scott Horowitz, NREL
|
|
145
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
146
|
+
# @param coeffs [Array<Double>] an array of 4 coefficients, in order
|
|
147
|
+
# @param name [String] the name of the curve
|
|
148
|
+
# @param min_x [Double] the minimum value of independent variable X that will be used
|
|
149
|
+
# @param max_x [Double] the maximum value of independent variable X that will be used
|
|
150
|
+
# @param min_out [Double] the minimum value of dependent variable Z
|
|
151
|
+
# @param max_out [Double] the maximum value of dependent variable Z
|
|
152
|
+
# @return [OpenStudio::Model::CurveCubic] a cubic curve
|
|
153
|
+
def self.create_curve_cubic(model, coeffs, name: 'CurveCubic', min_x: nil, max_x: nil, min_out: nil, max_out: nil)
|
|
154
|
+
curve = OpenStudio::Model::CurveCubic.new(model)
|
|
155
|
+
curve.setName(name)
|
|
156
|
+
curve.setCoefficient1Constant(coeffs[0])
|
|
157
|
+
curve.setCoefficient2x(coeffs[1])
|
|
158
|
+
curve.setCoefficient3xPOW2(coeffs[2])
|
|
159
|
+
curve.setCoefficient4xPOW3(coeffs[3])
|
|
160
|
+
curve.setMinimumValueofx(min_x) unless min_x.nil?
|
|
161
|
+
curve.setMaximumValueofx(max_x) unless max_x.nil?
|
|
162
|
+
curve.setMinimumCurveOutput(min_out) unless min_out.nil?
|
|
163
|
+
curve.setMaximumCurveOutput(max_out) unless max_out.nil?
|
|
164
|
+
return curve
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Create an exponential curve of the form
|
|
168
|
+
# z = C1 + C2*x^C3
|
|
169
|
+
#
|
|
170
|
+
# @author Scott Horowitz, NREL
|
|
171
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
172
|
+
# @param coeffs [Array<Double>] an array of 3 coefficients, in order
|
|
173
|
+
# @param name [String] the name of the curve
|
|
174
|
+
# @param min_x [Double] the minimum value of independent variable X that will be used
|
|
175
|
+
# @param max_x [Double] the maximum value of independent variable X that will be used
|
|
176
|
+
# @param min_out [Double] the minimum value of dependent variable Z
|
|
177
|
+
# @param max_out [Double] the maximum value of dependent variable Z
|
|
178
|
+
# @return [OpenStudio::Model::CurveExponent] an exponent curve
|
|
179
|
+
def self.create_curve_exponent(model, coeffs, name: 'CurveExponent', min_x: nil, max_x: nil, min_out: nil, max_out: nil)
|
|
180
|
+
curve = OpenStudio::Model::CurveExponent.new(model)
|
|
181
|
+
curve.setName(name)
|
|
182
|
+
curve.setCoefficient1Constant(coeffs[0])
|
|
183
|
+
curve.setCoefficient2Constant(coeffs[1])
|
|
184
|
+
curve.setCoefficient3Constant(coeffs[2])
|
|
185
|
+
curve.setMinimumValueofx(min_x) unless min_x.nil?
|
|
186
|
+
curve.setMaximumValueofx(max_x) unless max_x.nil?
|
|
187
|
+
curve.setMinimumCurveOutput(min_out) unless min_out.nil?
|
|
188
|
+
curve.setMaximumCurveOutput(max_out) unless max_out.nil?
|
|
189
|
+
return curve
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|