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,357 @@
|
|
|
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 Helpers
|
|
5
|
+
# Helper methods to remove HVAC equipment, rename nodes, and rename HVAC equipment
|
|
6
|
+
|
|
7
|
+
# Remove all air loops in model
|
|
8
|
+
#
|
|
9
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
10
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
11
|
+
def self.remove_air_loops(model)
|
|
12
|
+
model.getAirLoopHVACs.each(&:remove)
|
|
13
|
+
|
|
14
|
+
return model
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Remove plant loops in model except those used for service hot water
|
|
18
|
+
#
|
|
19
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
20
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
21
|
+
def self.remove_plant_loops(model)
|
|
22
|
+
plant_loops = model.getPlantLoops
|
|
23
|
+
plant_loops.each do |plant_loop|
|
|
24
|
+
shw_use = false
|
|
25
|
+
plant_loop.demandComponents.each do |component|
|
|
26
|
+
if component.to_WaterUseConnections.is_initialized || component.to_CoilWaterHeatingDesuperheater.is_initialized
|
|
27
|
+
shw_use = true
|
|
28
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "#{plant_loop.name} is used for SHW or refrigeration heat reclaim and will not be removed.")
|
|
29
|
+
break
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
plant_loop.remove unless shw_use
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
return model
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Remove all plant loops in model including those used for service hot water
|
|
39
|
+
#
|
|
40
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
41
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
42
|
+
def self.remove_all_plant_loops(model)
|
|
43
|
+
model.getPlantLoops.each(&:remove)
|
|
44
|
+
|
|
45
|
+
return model
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Remove VRF units
|
|
49
|
+
#
|
|
50
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
51
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
52
|
+
def self.remove_vrf(model)
|
|
53
|
+
model.getAirConditionerVariableRefrigerantFlows.each(&:remove)
|
|
54
|
+
model.getZoneHVACTerminalUnitVariableRefrigerantFlows.each(&:remove)
|
|
55
|
+
|
|
56
|
+
return model
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Remove zone equipment except for exhaust fans
|
|
60
|
+
#
|
|
61
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
62
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
63
|
+
def self.remove_zone_equipment(model)
|
|
64
|
+
model.getThermalZones.each do |zone|
|
|
65
|
+
zone.equipment.each do |equipment|
|
|
66
|
+
if equipment.to_FanZoneExhaust.is_initialized
|
|
67
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', "#{equipment.name} is a zone exhaust fan and will not be removed.")
|
|
68
|
+
else
|
|
69
|
+
equipment.remove
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
return model
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Remove all zone equipment including exhaust fans
|
|
78
|
+
#
|
|
79
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
80
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
81
|
+
def self.remove_all_zone_equipment(model)
|
|
82
|
+
model.getThermalZones.each do |zone|
|
|
83
|
+
zone.equipment.each(&:remove)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
return model
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Remove unused performance curves
|
|
90
|
+
#
|
|
91
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
92
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
93
|
+
def self.remove_unused_curves(model)
|
|
94
|
+
model.getCurves.each do |curve|
|
|
95
|
+
if curve.directUseCount == 0
|
|
96
|
+
model.removeObject(curve.handle)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
return model
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# Remove HVAC equipment except for service hot water loops and zone exhaust fans
|
|
104
|
+
#
|
|
105
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
106
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
107
|
+
def self.remove_hvac(model)
|
|
108
|
+
OpenstudioStandards::HVAC.remove_air_loops(model)
|
|
109
|
+
OpenstudioStandards::HVAC.remove_plant_loops(model)
|
|
110
|
+
OpenstudioStandards::HVAC.remove_vrf(model)
|
|
111
|
+
OpenstudioStandards::HVAC.remove_zone_equipment(model)
|
|
112
|
+
OpenstudioStandards::HVAC.remove_unused_curves(model)
|
|
113
|
+
|
|
114
|
+
return model
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Remove all HVAC equipment including service hot water loops and zone exhaust fans
|
|
118
|
+
#
|
|
119
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
120
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
121
|
+
def self.remove_all_hvac(model)
|
|
122
|
+
OpenstudioStandards::HVAC.remove_air_loops(model)
|
|
123
|
+
OpenstudioStandards::HVAC.remove_all_plant_loops(model)
|
|
124
|
+
OpenstudioStandards::HVAC.remove_vrf(model)
|
|
125
|
+
OpenstudioStandards::HVAC.remove_all_zone_equipment(model)
|
|
126
|
+
OpenstudioStandards::HVAC.remove_unused_curves(model)
|
|
127
|
+
|
|
128
|
+
return model
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# renames air loop nodes to readable values
|
|
132
|
+
#
|
|
133
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
134
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
135
|
+
def self.rename_air_loop_nodes(model)
|
|
136
|
+
# rename all hvac components on air loops
|
|
137
|
+
model.getHVACComponents.sort.each do |component|
|
|
138
|
+
next if component.to_Node.is_initialized # skip nodes
|
|
139
|
+
|
|
140
|
+
unless component.airLoopHVAC.empty?
|
|
141
|
+
# rename water to air component outlet nodes
|
|
142
|
+
if component.to_WaterToAirComponent.is_initialized
|
|
143
|
+
component = component.to_WaterToAirComponent.get
|
|
144
|
+
unless component.airOutletModelObject.empty?
|
|
145
|
+
component_outlet_object = component.airOutletModelObject.get
|
|
146
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
147
|
+
|
|
148
|
+
component_outlet_object.setName("#{component.name} Outlet Air Node")
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# rename air to air component nodes
|
|
153
|
+
if component.to_AirToAirComponent.is_initialized
|
|
154
|
+
component = component.to_AirToAirComponent.get
|
|
155
|
+
unless component.primaryAirOutletModelObject.empty?
|
|
156
|
+
component_outlet_object = component.primaryAirOutletModelObject.get
|
|
157
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
158
|
+
|
|
159
|
+
component_outlet_object.setName("#{component.name} Primary Outlet Air Node")
|
|
160
|
+
end
|
|
161
|
+
unless component.secondaryAirInletModelObject.empty?
|
|
162
|
+
component_inlet_object = component.secondaryAirInletModelObject.get
|
|
163
|
+
next unless component_inlet_object.to_Node.is_initialized
|
|
164
|
+
|
|
165
|
+
component_inlet_object.setName("#{component.name} Secondary Inlet Air Node")
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# rename straight component outlet nodes
|
|
170
|
+
if component.to_StraightComponent.is_initialized && !component.to_StraightComponent.get.outletModelObject.empty?
|
|
171
|
+
component_outlet_object = component.to_StraightComponent.get.outletModelObject.get
|
|
172
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
173
|
+
|
|
174
|
+
component_outlet_object.setName("#{component.name} Outlet Air Node")
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# rename zone hvac component nodes
|
|
179
|
+
if component.to_ZoneHVACComponent.is_initialized
|
|
180
|
+
component = component.to_ZoneHVACComponent.get
|
|
181
|
+
unless component.airInletModelObject.empty?
|
|
182
|
+
component_inlet_object = component.airInletModelObject.get
|
|
183
|
+
next unless component_inlet_object.to_Node.is_initialized
|
|
184
|
+
|
|
185
|
+
component_inlet_object.setName("#{component.name} Inlet Air Node")
|
|
186
|
+
end
|
|
187
|
+
unless component.airOutletModelObject.empty?
|
|
188
|
+
component_outlet_object = component.airOutletModelObject.get
|
|
189
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
190
|
+
|
|
191
|
+
component_outlet_object.setName("#{component.name} Outlet Air Node")
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# rename supply side nodes
|
|
197
|
+
model.getAirLoopHVACs.sort.each do |air_loop|
|
|
198
|
+
air_loop_name = air_loop.name.to_s
|
|
199
|
+
air_loop.demandInletNode.setName("#{air_loop_name} Demand Inlet Node")
|
|
200
|
+
air_loop.demandOutletNode.setName("#{air_loop_name} Demand Outlet Node")
|
|
201
|
+
air_loop.supplyInletNode.setName("#{air_loop_name} Supply Inlet Node")
|
|
202
|
+
air_loop.supplyOutletNode.setName("#{air_loop_name} Supply Outlet Node")
|
|
203
|
+
|
|
204
|
+
unless air_loop.reliefAirNode.empty?
|
|
205
|
+
relief_node = air_loop.reliefAirNode.get
|
|
206
|
+
relief_node.setName("#{air_loop_name} Relief Air Node")
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
unless air_loop.mixedAirNode.empty?
|
|
210
|
+
mixed_node = air_loop.mixedAirNode.get
|
|
211
|
+
mixed_node.setName("#{air_loop_name} Mixed Air Node")
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# rename outdoor air system and nodes
|
|
215
|
+
unless air_loop.airLoopHVACOutdoorAirSystem.empty?
|
|
216
|
+
oa_system = air_loop.airLoopHVACOutdoorAirSystem.get
|
|
217
|
+
unless oa_system.outboardOANode.empty?
|
|
218
|
+
oa_node = oa_system.outboardOANode.get
|
|
219
|
+
oa_node.setName("#{air_loop_name} Outdoor Air Node")
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
# rename zone air and terminal nodes
|
|
225
|
+
model.getThermalZones.sort.each do |zone|
|
|
226
|
+
zone.zoneAirNode.setName("#{zone.name} Zone Air Node")
|
|
227
|
+
|
|
228
|
+
unless zone.returnAirModelObject.empty?
|
|
229
|
+
zone.returnAirModelObject.get.setName("#{zone.name} Return Air Node")
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
unless zone.airLoopHVACTerminal.empty?
|
|
233
|
+
terminal_unit = zone.airLoopHVACTerminal.get
|
|
234
|
+
if terminal_unit.to_StraightComponent.is_initialized
|
|
235
|
+
component = terminal_unit.to_StraightComponent.get
|
|
236
|
+
component.inletModelObject.get.setName("#{terminal_unit.name} Inlet Air Node")
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
# rename zone equipment list objects
|
|
242
|
+
model.getZoneHVACEquipmentLists.sort.each do |obj|
|
|
243
|
+
begin
|
|
244
|
+
zone = obj.thermalZone
|
|
245
|
+
obj.setName("#{zone.name} Zone HVAC Equipment List")
|
|
246
|
+
rescue StandardError => e
|
|
247
|
+
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.model.Model', "Removing ZoneHVACEquipmentList #{obj.name}; missing thermal zone.")
|
|
248
|
+
obj.remove
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
return model
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
# renames plant loop nodes to readable values
|
|
256
|
+
#
|
|
257
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
258
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
259
|
+
def self.rename_plant_loop_nodes(model)
|
|
260
|
+
# rename all hvac components on plant loops
|
|
261
|
+
model.getHVACComponents.sort.each do |component|
|
|
262
|
+
next if component.to_Node.is_initialized # skip nodes
|
|
263
|
+
|
|
264
|
+
unless component.plantLoop.empty?
|
|
265
|
+
# rename straight component nodes
|
|
266
|
+
# some inlet or outlet nodes may get renamed again
|
|
267
|
+
if component.to_StraightComponent.is_initialized
|
|
268
|
+
unless component.to_StraightComponent.get.inletModelObject.empty?
|
|
269
|
+
component_inlet_object = component.to_StraightComponent.get.inletModelObject.get
|
|
270
|
+
next unless component_inlet_object.to_Node.is_initialized
|
|
271
|
+
|
|
272
|
+
component_inlet_object.setName("#{component.name} Inlet Water Node")
|
|
273
|
+
end
|
|
274
|
+
unless component.to_StraightComponent.get.outletModelObject.empty?
|
|
275
|
+
component_outlet_object = component.to_StraightComponent.get.outletModelObject.get
|
|
276
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
277
|
+
|
|
278
|
+
component_outlet_object.setName("#{component.name} Outlet Water Node")
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
# rename water to air component nodes
|
|
283
|
+
if component.to_WaterToAirComponent.is_initialized
|
|
284
|
+
component = component.to_WaterToAirComponent.get
|
|
285
|
+
unless component.waterInletModelObject.empty?
|
|
286
|
+
component_inlet_object = component.waterInletModelObject.get
|
|
287
|
+
next unless component_inlet_object.to_Node.is_initialized
|
|
288
|
+
|
|
289
|
+
component_inlet_object.setName("#{component.name} Inlet Water Node")
|
|
290
|
+
end
|
|
291
|
+
unless component.waterOutletModelObject.empty?
|
|
292
|
+
component_outlet_object = component.waterOutletModelObject.get
|
|
293
|
+
next unless component_outlet_object.to_Node.is_initialized
|
|
294
|
+
|
|
295
|
+
component_outlet_object.setName("#{component.name} Outlet Water Node")
|
|
296
|
+
end
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
# rename water to water component nodes
|
|
300
|
+
if component.to_WaterToWaterComponent.is_initialized
|
|
301
|
+
component = component.to_WaterToWaterComponent.get
|
|
302
|
+
unless component.demandInletModelObject.empty?
|
|
303
|
+
demand_inlet_object = component.demandInletModelObject.get
|
|
304
|
+
next unless demand_inlet_object.to_Node.is_initialized
|
|
305
|
+
|
|
306
|
+
demand_inlet_object.setName("#{component.name} Demand Inlet Water Node")
|
|
307
|
+
end
|
|
308
|
+
unless component.demandOutletModelObject.empty?
|
|
309
|
+
demand_outlet_object = component.demandOutletModelObject.get
|
|
310
|
+
next unless demand_outlet_object.to_Node.is_initialized
|
|
311
|
+
|
|
312
|
+
demand_outlet_object.setName("#{component.name} Demand Outlet Water Node")
|
|
313
|
+
end
|
|
314
|
+
unless component.supplyInletModelObject.empty?
|
|
315
|
+
supply_inlet_object = component.supplyInletModelObject.get
|
|
316
|
+
next unless supply_inlet_object.to_Node.is_initialized
|
|
317
|
+
|
|
318
|
+
supply_inlet_object.setName("#{component.name} Supply Inlet Water Node")
|
|
319
|
+
end
|
|
320
|
+
unless component.supplyOutletModelObject.empty?
|
|
321
|
+
supply_outlet_object = component.supplyOutletModelObject.get
|
|
322
|
+
next unless supply_outlet_object.to_Node.is_initialized
|
|
323
|
+
|
|
324
|
+
supply_outlet_object.setName("#{component.name} Supply Outlet Water Node")
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
# rename plant nodes
|
|
331
|
+
model.getPlantLoops.sort.each do |plant_loop|
|
|
332
|
+
plant_loop_name = plant_loop.name.to_s
|
|
333
|
+
plant_loop.demandInletNode.setName("#{plant_loop_name} Demand Inlet Node")
|
|
334
|
+
plant_loop.demandOutletNode.setName("#{plant_loop_name} Demand Outlet Node")
|
|
335
|
+
plant_loop.supplyInletNode.setName("#{plant_loop_name} Supply Inlet Node")
|
|
336
|
+
plant_loop.supplyOutletNode.setName("#{plant_loop_name} Supply Outlet Node")
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
return model
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
# converts existing string to ems friendly string
|
|
343
|
+
#
|
|
344
|
+
# @param name [String] original name
|
|
345
|
+
# @return [String] the resulting EMS friendly string
|
|
346
|
+
def self.ems_friendly_name(name)
|
|
347
|
+
# replace white space and special characters with underscore
|
|
348
|
+
# \W is equivalent to [^a-zA-Z0-9_]
|
|
349
|
+
new_name = name.to_s.gsub(/\W/, '_')
|
|
350
|
+
|
|
351
|
+
# prepend ems_ in case the name starts with a number
|
|
352
|
+
new_name = "ems_#{new_name}"
|
|
353
|
+
|
|
354
|
+
return new_name
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
end
|
|
@@ -25,7 +25,7 @@ module OpenstudioStandards
|
|
|
25
25
|
min_c = OpenstudioStandards::Schedules.schedule_constant_get_min_max(sch.to_ScheduleConstant.get)['min']
|
|
26
26
|
max_c = OpenstudioStandards::Schedules.schedule_constant_get_min_max(sch.to_ScheduleConstant.get)['max']
|
|
27
27
|
else
|
|
28
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.
|
|
28
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', "Could not find min and max values for #{obj_type} Setpoint Manager.")
|
|
29
29
|
end
|
|
30
30
|
loop_op_min_f = OpenStudio.convert(min_c, 'C', 'F').get
|
|
31
31
|
loop_op_max_f = OpenStudio.convert(max_c, 'C', 'F').get
|
|
@@ -53,7 +53,7 @@ module OpenstudioStandards
|
|
|
53
53
|
elsif low_sch.to_ScheduleConstant.is_initialized
|
|
54
54
|
min_c = OpenstudioStandards::Schedules.schedule_constant_get_min_max(low_sch.to_ScheduleConstant.get)['min']
|
|
55
55
|
else
|
|
56
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.
|
|
56
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', "Could not find min and max values for #{obj_type} Setpoint Manager.")
|
|
57
57
|
end
|
|
58
58
|
loop_op_min_f = OpenStudio.convert(min_c, 'C', 'F').get unless min_c.nil?
|
|
59
59
|
end
|
|
@@ -68,7 +68,7 @@ module OpenstudioStandards
|
|
|
68
68
|
elsif high_sch.to_ScheduleConstant.is_initialized
|
|
69
69
|
max_c = OpenstudioStandards::Schedules.schedule_constant_get_min_max(high_sch.to_ScheduleConstant.get)['max']
|
|
70
70
|
else
|
|
71
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.
|
|
71
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', "Could not find min and max values for #{obj_type} Setpoint Manager.")
|
|
72
72
|
end
|
|
73
73
|
loop_op_max_f = OpenStudio.convert(max_c, 'C', 'F').get unless max_c.nil?
|
|
74
74
|
end
|
|
@@ -83,7 +83,7 @@ module OpenstudioStandards
|
|
|
83
83
|
loop_op_min_f = OpenStudio.convert(spm.minimumSetpointTemperature, 'C', 'F').get
|
|
84
84
|
loop_op_max_f = OpenStudio.convert(spm.maximumSetpointTemperature, 'C', 'F').get
|
|
85
85
|
else
|
|
86
|
-
OpenStudio.logFree(OpenStudio::Error, 'openstudio.
|
|
86
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.HVAC', "Could not find min and max values for #{obj_type} Setpoint Manager.")
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
return { 'min_temp' => loop_op_min_f, 'max_temp' => loop_op_max_f }
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module OpenstudioStandards
|
|
2
|
+
# The InteriorLighting module provides methods to create, modify, and get information about interior lighting
|
|
3
|
+
module InteriorLighting
|
|
4
|
+
# @!group Create Lights
|
|
5
|
+
# Methods to create lights objects
|
|
6
|
+
|
|
7
|
+
# Adds a lights object to a space or space type.
|
|
8
|
+
#
|
|
9
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
10
|
+
# @param name [String] the name of the lights object
|
|
11
|
+
# @param lighting_power [Double] lighting power in watts per unit area or per person
|
|
12
|
+
# @param lighting_power_type [Double] type of lighting power ('Watts/Area', 'Watts/Person'). 'Watts/Area' is W/m^2.
|
|
13
|
+
# @param return_air_fraction [Double] return air fraction
|
|
14
|
+
# @param radiant_fraction [Double] radiant fraction
|
|
15
|
+
# @param visible_fraction [Double] visible fraction
|
|
16
|
+
# @param space_type [OpenStudio::Model::SpaceType] OpenStudio space type object
|
|
17
|
+
# @param space [OpenStudio::Model::Space] OpenStudio space object
|
|
18
|
+
# @return [OpenStudio::Model::Lights] The created lights object
|
|
19
|
+
def self.create_lights(model,
|
|
20
|
+
name: nil,
|
|
21
|
+
lighting_power: 5.0,
|
|
22
|
+
lighting_power_type: 'Watts/Area',
|
|
23
|
+
return_air_fraction: 0.0,
|
|
24
|
+
radiant_fraction: 0.365,
|
|
25
|
+
visible_fraction: 0.2,
|
|
26
|
+
space_type: nil,
|
|
27
|
+
space: nil)
|
|
28
|
+
# create lights definition object
|
|
29
|
+
lights_def = OpenStudio::Model::LightsDefinition.new(model)
|
|
30
|
+
lights_def.setName("#{name} Definition") unless name.nil?
|
|
31
|
+
lights_def.setWattsperSpaceFloorArea(lighting_power) if lighting_power_type == 'Watts/Area'
|
|
32
|
+
lights_def.setWattsperPerson(lighting_power) if lighting_power_type == 'Watts/Person'
|
|
33
|
+
lights_def.setReturnAirFraction(return_air_fraction)
|
|
34
|
+
lights_def.setFractionRadiant(radiant_fraction)
|
|
35
|
+
lights_def.setFractionVisible(visible_fraction)
|
|
36
|
+
|
|
37
|
+
# create lights object
|
|
38
|
+
lights = OpenStudio::Model::Lights.new(lights_def)
|
|
39
|
+
lights.setName(name) unless name.nil?
|
|
40
|
+
if !space_type.nil? && space.nil?
|
|
41
|
+
lights.setSpaceType(space_type)
|
|
42
|
+
elsif !space.nil? && space_type.nil?
|
|
43
|
+
lights.setSpace(space)
|
|
44
|
+
else
|
|
45
|
+
OpenStudio.logFree(OpenStudio::Error, 'openstudio.standards.InteriorLighting.create_lights', 'Must pass in either space_type or space.')
|
|
46
|
+
return nil
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
return lights
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|