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
data/lib/openstudio-standards/prototypes/common/objects/Prototype.AirTerminalSingleDuctVAVReheat.rb
CHANGED
|
@@ -16,4 +16,37 @@ class Standard
|
|
|
16
16
|
|
|
17
17
|
return true
|
|
18
18
|
end
|
|
19
|
+
|
|
20
|
+
# Sets VAV reheat and VAV no reheat terminals on an air loop to control for outdoor air
|
|
21
|
+
#
|
|
22
|
+
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
23
|
+
# @param air_loop [<OpenStudio::Model::AirLoopHVAC>] air loop to enable DCV on.
|
|
24
|
+
# Default is nil, which will apply to all air loops
|
|
25
|
+
# @return [OpenStudio::Model::Model] OpenStudio model object
|
|
26
|
+
def model_set_vav_terminals_to_control_for_outdoor_air(model, air_loop: nil)
|
|
27
|
+
vav_reheats = model.getAirTerminalSingleDuctVAVReheats
|
|
28
|
+
vav_no_reheats = model.getAirTerminalSingleDuctVAVNoReheats
|
|
29
|
+
|
|
30
|
+
if air_loop.nil?
|
|
31
|
+
# all terminals
|
|
32
|
+
vav_reheats.each do |vav_reheat|
|
|
33
|
+
vav_reheat.setControlForOutdoorAir(true)
|
|
34
|
+
end
|
|
35
|
+
vav_no_reheats.each do |vav_no_reheat|
|
|
36
|
+
vav_no_reheat.setControlForOutdoorAir(true)
|
|
37
|
+
end
|
|
38
|
+
else
|
|
39
|
+
vav_reheats.each do |vav_reheat|
|
|
40
|
+
next if vav_reheat.airLoopHVAC.get.name.to_s != air_loop.name.to_s
|
|
41
|
+
|
|
42
|
+
vav_reheat.setControlForOutdoorAir(true)
|
|
43
|
+
end
|
|
44
|
+
vav_no_reheats.each do |vav_no_reheat|
|
|
45
|
+
next if vav_no_reheat.airLoopHVAC.get.name.to_s != air_loop.name.to_s
|
|
46
|
+
|
|
47
|
+
vav_no_reheat.setControlForOutdoorAir(true)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
return model
|
|
51
|
+
end
|
|
19
52
|
end
|
|
@@ -63,144 +63,4 @@ module PrototypeFan
|
|
|
63
63
|
|
|
64
64
|
return true
|
|
65
65
|
end
|
|
66
|
-
|
|
67
|
-
# fan class method to apply fan variables
|
|
68
|
-
#
|
|
69
|
-
# @param fan [OpenStudio::Model::StraightComponent] fan object of type:
|
|
70
|
-
# FanConstantVolume, FanOnOff, FanVariableVolume, and FanZoneExhaust
|
|
71
|
-
# @param fan_name [String] fan name
|
|
72
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
73
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
74
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
75
|
-
# @return [OpenStudio::Model::StraightComponent] fan object
|
|
76
|
-
def self.apply_base_fan_variables(fan,
|
|
77
|
-
fan_name: nil,
|
|
78
|
-
fan_efficiency: nil,
|
|
79
|
-
pressure_rise: nil,
|
|
80
|
-
end_use_subcategory: nil)
|
|
81
|
-
fan.setName(fan_name) unless fan_name.nil?
|
|
82
|
-
fan.setFanEfficiency(fan_efficiency) unless fan_efficiency.nil?
|
|
83
|
-
fan.setPressureRise(pressure_rise) unless pressure_rise.nil?
|
|
84
|
-
fan.setEndUseSubcategory(end_use_subcategory) unless end_use_subcategory.nil?
|
|
85
|
-
return fan
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
89
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
90
|
-
def get_fan_from_standards(standards_name: nil,
|
|
91
|
-
type: nil,
|
|
92
|
-
fan_efficiency: nil,
|
|
93
|
-
pressure_rise: nil,
|
|
94
|
-
motor_efficiency: nil,
|
|
95
|
-
motor_in_airstream_fraction: nil,
|
|
96
|
-
fan_power_minimum_flow_rate_input_method: nil,
|
|
97
|
-
fan_power_coefficient_1: nil,
|
|
98
|
-
fan_power_coefficient_2: nil,
|
|
99
|
-
fan_power_coefficient_3: nil,
|
|
100
|
-
fan_power_coefficient_4: nil,
|
|
101
|
-
fan_power_coefficient_5: nil,
|
|
102
|
-
system_availability_manager_coupling_mode: nil,
|
|
103
|
-
end_use_subcategory: nil)
|
|
104
|
-
search_criteria = {}
|
|
105
|
-
standards_name ? search_criteria['name'] = standards_name : search_criteria['name'] = 'default'
|
|
106
|
-
if type then search_criteria['type'] = type end
|
|
107
|
-
if fan_efficiency then search_criteria['fan_efficiency'] = fan_efficiency end
|
|
108
|
-
if pressure_rise then search_criteria['pressure_rise'] = pressure_rise end
|
|
109
|
-
if motor_efficiency then search_criteria['motor_efficiency'] = motor_efficiency end
|
|
110
|
-
if motor_in_airstream_fraction then search_criteria['motor_in_airstream_fraction'] = motor_in_airstream_fraction end
|
|
111
|
-
if fan_power_minimum_flow_rate_input_method then search_criteria['fan_power_minimum_flow_rate_input_method'] = fan_power_minimum_flow_rate_input_method end
|
|
112
|
-
if fan_power_coefficient_1 then search_criteria['fan_power_coefficient_1'] = fan_power_coefficient_1 end
|
|
113
|
-
if fan_power_coefficient_2 then search_criteria['fan_power_coefficient_2'] = fan_power_coefficient_2 end
|
|
114
|
-
if fan_power_coefficient_3 then search_criteria['fan_power_coefficient_3'] = fan_power_coefficient_3 end
|
|
115
|
-
if fan_power_coefficient_4 then search_criteria['fan_power_coefficient_4'] = fan_power_coefficient_4 end
|
|
116
|
-
if fan_power_coefficient_5 then search_criteria['fan_power_coefficient_5'] = fan_power_coefficient_5 end
|
|
117
|
-
if system_availability_manager_coupling_mode then search_criteria['system_availability_manager_coupling_mode'] = system_availability_manager_coupling_mode end
|
|
118
|
-
if end_use_subcategory then search_criteria['end_use_subcategory'] = end_use_subcategory end
|
|
119
|
-
|
|
120
|
-
model_find_object(@standards_data['fans'], search_criteria)
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# create a fan with properties for a fan name in the standards data
|
|
124
|
-
#
|
|
125
|
-
# @param fan_name [String] fan name
|
|
126
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
127
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
128
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
129
|
-
# @return [OpenStudio::Model::StraightComponent] fan object
|
|
130
|
-
def create_fan_by_name(model,
|
|
131
|
-
standards_name,
|
|
132
|
-
fan_name: nil,
|
|
133
|
-
fan_efficiency: nil,
|
|
134
|
-
pressure_rise: nil,
|
|
135
|
-
motor_efficiency: nil,
|
|
136
|
-
motor_in_airstream_fraction: nil,
|
|
137
|
-
fan_power_minimum_flow_rate_input_method: nil,
|
|
138
|
-
fan_power_minimum_flow_rate_fraction: nil,
|
|
139
|
-
fan_power_coefficient_1: nil,
|
|
140
|
-
fan_power_coefficient_2: nil,
|
|
141
|
-
fan_power_coefficient_3: nil,
|
|
142
|
-
fan_power_coefficient_4: nil,
|
|
143
|
-
fan_power_coefficient_5: nil,
|
|
144
|
-
system_availability_manager_coupling_mode: nil,
|
|
145
|
-
end_use_subcategory: nil)
|
|
146
|
-
|
|
147
|
-
fan_json = get_fan_from_standards(standards_name: standards_name)
|
|
148
|
-
|
|
149
|
-
case fan_json['type']
|
|
150
|
-
when 'ConstantVolume'
|
|
151
|
-
create_fan_constant_volume_from_json(model,
|
|
152
|
-
fan_json,
|
|
153
|
-
fan_name: fan_name,
|
|
154
|
-
fan_efficiency: fan_efficiency,
|
|
155
|
-
pressure_rise: pressure_rise,
|
|
156
|
-
motor_efficiency: motor_efficiency,
|
|
157
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
158
|
-
end_use_subcategory: end_use_subcategory)
|
|
159
|
-
when 'OnOff'
|
|
160
|
-
create_fan_on_off_from_json(model,
|
|
161
|
-
fan_json,
|
|
162
|
-
fan_name: fan_name,
|
|
163
|
-
fan_efficiency: fan_efficiency,
|
|
164
|
-
pressure_rise: pressure_rise,
|
|
165
|
-
motor_efficiency: motor_efficiency,
|
|
166
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
167
|
-
end_use_subcategory: end_use_subcategory)
|
|
168
|
-
when 'VariableVolume'
|
|
169
|
-
fan_power_coefficient_1, fan_power_coefficient_2, fan_power_coefficient_3, fan_power_coefficient_4, fan_power_coefficient_5 = lookup_fan_curve_coefficients_from_json(fan_json['fan_curve']) if fan_json['fan_curve']
|
|
170
|
-
create_fan_variable_volume_from_json(model,
|
|
171
|
-
fan_json,
|
|
172
|
-
fan_name: fan_name,
|
|
173
|
-
fan_efficiency: fan_efficiency,
|
|
174
|
-
pressure_rise: pressure_rise,
|
|
175
|
-
motor_efficiency: motor_efficiency,
|
|
176
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
177
|
-
fan_power_minimum_flow_rate_input_method: fan_power_minimum_flow_rate_input_method,
|
|
178
|
-
fan_power_minimum_flow_rate_fraction: fan_power_minimum_flow_rate_fraction,
|
|
179
|
-
fan_power_coefficient_1: fan_power_coefficient_1,
|
|
180
|
-
fan_power_coefficient_2: fan_power_coefficient_2,
|
|
181
|
-
fan_power_coefficient_3: fan_power_coefficient_3,
|
|
182
|
-
fan_power_coefficient_4: fan_power_coefficient_4,
|
|
183
|
-
fan_power_coefficient_5: fan_power_coefficient_5,
|
|
184
|
-
end_use_subcategory: end_use_subcategory)
|
|
185
|
-
when 'ZoneExhaust'
|
|
186
|
-
create_fan_zone_exhaust_from_json(model,
|
|
187
|
-
fan_json,
|
|
188
|
-
fan_name: fan_name,
|
|
189
|
-
fan_efficiency: fan_efficiency,
|
|
190
|
-
pressure_rise: pressure_rise,
|
|
191
|
-
system_availability_manager_coupling_mode: system_availability_manager_coupling_mode,
|
|
192
|
-
end_use_subcategory: end_use_subcategory)
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
# Lookup fan curve coefficients
|
|
197
|
-
#
|
|
198
|
-
# @param fan_curve [String] name of the fan curve
|
|
199
|
-
# @return [Array] an array of fan curve coefficients
|
|
200
|
-
def lookup_fan_curve_coefficients_from_json(fan_curve)
|
|
201
|
-
search_criteria = {}
|
|
202
|
-
search_criteria['name'] = fan_curve
|
|
203
|
-
fan_curve = model_find_object(@standards_data['curves'], search_criteria)
|
|
204
|
-
return [fan_curve['coeff_1'], fan_curve['coeff_2'], fan_curve['coeff_3'], fan_curve['coeff_4'], fan_curve['coeff_5']]
|
|
205
|
-
end
|
|
206
66
|
end
|
|
@@ -9,9 +9,6 @@ class Standard
|
|
|
9
9
|
# @param fan_constant_volume [OpenStudio::Model::FanConstantVolume] constant volume fan object
|
|
10
10
|
# @return [Boolean] returns true if successful, false if not
|
|
11
11
|
def fan_constant_volume_apply_prototype_fan_pressure_rise(fan_constant_volume)
|
|
12
|
-
# Don't modify unit heater fans
|
|
13
|
-
return true if fan_constant_volume.name.to_s.include?('UnitHeater Fan')
|
|
14
|
-
|
|
15
12
|
# Get the max flow rate from the fan.
|
|
16
13
|
maximum_flow_rate_m3_per_s = nil
|
|
17
14
|
if fan_constant_volume.maximumFlowRate.is_initialized
|
|
@@ -26,8 +23,7 @@ class Standard
|
|
|
26
23
|
# Convert max flow rate to cfm
|
|
27
24
|
maximum_flow_rate_cfm = OpenStudio.convert(maximum_flow_rate_m3_per_s, 'm^3/s', 'cfm').get
|
|
28
25
|
|
|
29
|
-
# Pressure rise will be determined based on the
|
|
30
|
-
# following logic.
|
|
26
|
+
# Pressure rise will be determined based on the following logic.
|
|
31
27
|
pressure_rise_in_h2o = 0.0
|
|
32
28
|
|
|
33
29
|
# If the fan lives inside of a zone hvac equipment
|
|
@@ -85,72 +81,4 @@ class Standard
|
|
|
85
81
|
|
|
86
82
|
return pressure_rise_in_h2o
|
|
87
83
|
end
|
|
88
|
-
|
|
89
|
-
# creates a constant volume fan
|
|
90
|
-
#
|
|
91
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
92
|
-
# @param fan_name [String] fan name
|
|
93
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
94
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
95
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
96
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
97
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
98
|
-
# @return [OpenStudio::Model::FanConstantVolume] constant volume fan object
|
|
99
|
-
def create_fan_constant_volume(model,
|
|
100
|
-
fan_name: nil,
|
|
101
|
-
fan_efficiency: nil,
|
|
102
|
-
pressure_rise: nil,
|
|
103
|
-
motor_efficiency: nil,
|
|
104
|
-
motor_in_airstream_fraction: nil,
|
|
105
|
-
end_use_subcategory: nil)
|
|
106
|
-
fan = OpenStudio::Model::FanConstantVolume.new(model)
|
|
107
|
-
PrototypeFan.apply_base_fan_variables(fan,
|
|
108
|
-
fan_name: fan_name,
|
|
109
|
-
fan_efficiency: fan_efficiency,
|
|
110
|
-
pressure_rise: pressure_rise,
|
|
111
|
-
end_use_subcategory: end_use_subcategory)
|
|
112
|
-
fan.setMotorEfficiency(motor_efficiency) unless motor_efficiency.nil?
|
|
113
|
-
fan.setMotorInAirstreamFraction(motor_in_airstream_fraction) unless motor_in_airstream_fraction.nil?
|
|
114
|
-
return fan
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
# creates a constant volume fan from a json
|
|
118
|
-
#
|
|
119
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
120
|
-
# @param fan_json [Hash] hash of fan properties
|
|
121
|
-
# @param fan_name [String] fan name
|
|
122
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
123
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
124
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
125
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
126
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
127
|
-
# @return [OpenStudio::Model::FanConstantVolume] constant volume fan object
|
|
128
|
-
def create_fan_constant_volume_from_json(model,
|
|
129
|
-
fan_json,
|
|
130
|
-
fan_name: nil,
|
|
131
|
-
fan_efficiency: nil,
|
|
132
|
-
pressure_rise: nil,
|
|
133
|
-
motor_efficiency: nil,
|
|
134
|
-
motor_in_airstream_fraction: nil,
|
|
135
|
-
end_use_subcategory: nil)
|
|
136
|
-
# check values to use
|
|
137
|
-
fan_efficiency ||= fan_json['fan_efficiency']
|
|
138
|
-
pressure_rise ||= fan_json['pressure_rise']
|
|
139
|
-
motor_efficiency ||= fan_json['motor_efficiency']
|
|
140
|
-
motor_in_airstream_fraction ||= fan_json['motor_in_airstream_fraction']
|
|
141
|
-
end_use_subcategory ||= fan_json['end_use_subcategory']
|
|
142
|
-
|
|
143
|
-
# convert values
|
|
144
|
-
pressure_rise = pressure_rise ? OpenStudio.convert(pressure_rise, 'inH_{2}O', 'Pa').get : nil
|
|
145
|
-
|
|
146
|
-
# create fan
|
|
147
|
-
fan = create_fan_constant_volume(model,
|
|
148
|
-
fan_name: fan_name,
|
|
149
|
-
fan_efficiency: fan_efficiency,
|
|
150
|
-
pressure_rise: pressure_rise,
|
|
151
|
-
motor_efficiency: motor_efficiency,
|
|
152
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
153
|
-
end_use_subcategory: end_use_subcategory)
|
|
154
|
-
return fan
|
|
155
|
-
end
|
|
156
84
|
end
|
|
@@ -24,8 +24,7 @@ class Standard
|
|
|
24
24
|
# Convert max flow rate to cfm
|
|
25
25
|
maximum_flow_rate_cfm = OpenStudio.convert(maximum_flow_rate_m3_per_s, 'm^3/s', 'cfm').get
|
|
26
26
|
|
|
27
|
-
# Pressure rise will be determined based on the
|
|
28
|
-
# following logic.
|
|
27
|
+
# Pressure rise will be determined based on the following logic.
|
|
29
28
|
pressure_rise_in_h2o = 0.0
|
|
30
29
|
|
|
31
30
|
# If the fan lives inside of a zone hvac equipment
|
|
@@ -92,71 +91,4 @@ class Standard
|
|
|
92
91
|
|
|
93
92
|
return pressure_rise_in_h2o
|
|
94
93
|
end
|
|
95
|
-
|
|
96
|
-
# creates an on off fan
|
|
97
|
-
#
|
|
98
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
99
|
-
# @param fan_name [String] fan name
|
|
100
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
101
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
102
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
103
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
104
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
105
|
-
# @return [OpenStudio::Model::FanOnOff] on off fan object
|
|
106
|
-
def create_fan_on_off(model,
|
|
107
|
-
fan_name: nil,
|
|
108
|
-
fan_efficiency: nil,
|
|
109
|
-
pressure_rise: nil,
|
|
110
|
-
motor_efficiency: nil,
|
|
111
|
-
motor_in_airstream_fraction: nil,
|
|
112
|
-
end_use_subcategory: nil)
|
|
113
|
-
fan = OpenStudio::Model::FanOnOff.new(model)
|
|
114
|
-
PrototypeFan.apply_base_fan_variables(fan,
|
|
115
|
-
fan_name: fan_name,
|
|
116
|
-
fan_efficiency: fan_efficiency,
|
|
117
|
-
pressure_rise: pressure_rise,
|
|
118
|
-
end_use_subcategory: end_use_subcategory)
|
|
119
|
-
fan.setMotorEfficiency(motor_efficiency) unless motor_efficiency.nil?
|
|
120
|
-
fan.setMotorInAirstreamFraction(motor_in_airstream_fraction) unless motor_in_airstream_fraction.nil?
|
|
121
|
-
return fan
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# creates a on off fan from a json
|
|
125
|
-
#
|
|
126
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
127
|
-
# @param fan_json [Hash] hash of fan properties
|
|
128
|
-
# @param fan_name [String] fan name
|
|
129
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
130
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
131
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
132
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
133
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
134
|
-
# @return [OpenStudio::Model::FanOnOff] on off fan object
|
|
135
|
-
def create_fan_on_off_from_json(model,
|
|
136
|
-
fan_json,
|
|
137
|
-
fan_name: nil,
|
|
138
|
-
fan_efficiency: nil,
|
|
139
|
-
pressure_rise: nil,
|
|
140
|
-
motor_efficiency: nil,
|
|
141
|
-
motor_in_airstream_fraction: nil,
|
|
142
|
-
end_use_subcategory: nil)
|
|
143
|
-
# check values to use
|
|
144
|
-
fan_efficiency ||= fan_json['fan_efficiency']
|
|
145
|
-
pressure_rise ||= fan_json['pressure_rise']
|
|
146
|
-
motor_efficiency ||= fan_json['motor_efficiency']
|
|
147
|
-
motor_in_airstream_fraction ||= fan_json['motor_in_airstream_fraction']
|
|
148
|
-
|
|
149
|
-
# convert values
|
|
150
|
-
pressure_rise = pressure_rise ? OpenStudio.convert(pressure_rise, 'inH_{2}O', 'Pa').get : nil
|
|
151
|
-
|
|
152
|
-
# create fan
|
|
153
|
-
fan = create_fan_on_off(model,
|
|
154
|
-
fan_name: fan_name,
|
|
155
|
-
fan_efficiency: fan_efficiency,
|
|
156
|
-
pressure_rise: pressure_rise,
|
|
157
|
-
motor_efficiency: motor_efficiency,
|
|
158
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
159
|
-
end_use_subcategory: end_use_subcategory)
|
|
160
|
-
return fan
|
|
161
|
-
end
|
|
162
94
|
end
|
|
@@ -83,120 +83,4 @@ class Standard
|
|
|
83
83
|
|
|
84
84
|
return pressure_rise_in_h2o
|
|
85
85
|
end
|
|
86
|
-
|
|
87
|
-
# creates a variable volume fan
|
|
88
|
-
#
|
|
89
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
90
|
-
# @param fan_name [String] fan name
|
|
91
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
92
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
93
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
94
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
95
|
-
# @param fan_power_minimum_flow_rate_input_method [String] options are Fraction, FixedFlowRate
|
|
96
|
-
# @param fan_power_minimum_flow_rate_fraction [Double] minimum flow rate fraction
|
|
97
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
98
|
-
# @param fan_power_coefficient_1 [Double] fan power coefficient 1
|
|
99
|
-
# @param fan_power_coefficient_2 [Double] fan power coefficient 2
|
|
100
|
-
# @param fan_power_coefficient_3 [Double] fan power coefficient 3
|
|
101
|
-
# @param fan_power_coefficient_4 [Double] fan power coefficient 4
|
|
102
|
-
# @param fan_power_coefficient_5 [Double] fan power coefficient 5
|
|
103
|
-
# @return [OpenStudio::Model::FanVariableVolume] variable volume fan object
|
|
104
|
-
def create_fan_variable_volume(model,
|
|
105
|
-
fan_name: nil,
|
|
106
|
-
fan_efficiency: nil,
|
|
107
|
-
pressure_rise: nil,
|
|
108
|
-
motor_efficiency: nil,
|
|
109
|
-
motor_in_airstream_fraction: nil,
|
|
110
|
-
fan_power_minimum_flow_rate_input_method: nil,
|
|
111
|
-
fan_power_minimum_flow_rate_fraction: nil,
|
|
112
|
-
fan_power_coefficient_1: nil,
|
|
113
|
-
fan_power_coefficient_2: nil,
|
|
114
|
-
fan_power_coefficient_3: nil,
|
|
115
|
-
fan_power_coefficient_4: nil,
|
|
116
|
-
fan_power_coefficient_5: nil,
|
|
117
|
-
end_use_subcategory: nil)
|
|
118
|
-
fan = OpenStudio::Model::FanVariableVolume.new(model)
|
|
119
|
-
PrototypeFan.apply_base_fan_variables(fan,
|
|
120
|
-
fan_name: fan_name,
|
|
121
|
-
fan_efficiency: fan_efficiency,
|
|
122
|
-
pressure_rise: pressure_rise,
|
|
123
|
-
end_use_subcategory: end_use_subcategory)
|
|
124
|
-
fan.setMotorEfficiency(motor_efficiency) unless motor_efficiency.nil?
|
|
125
|
-
fan.setMotorInAirstreamFraction(motor_in_airstream_fraction) unless motor_in_airstream_fraction.nil?
|
|
126
|
-
fan.setFanPowerMinimumFlowRateInputMethod(fan_power_minimum_flow_rate_input_method) unless fan_power_minimum_flow_rate_input_method.nil?
|
|
127
|
-
fan.setFanPowerMinimumFlowFraction(fan_power_minimum_flow_rate_fraction) unless fan_power_minimum_flow_rate_fraction.nil?
|
|
128
|
-
fan.setFanPowerCoefficient1(fan_power_coefficient_1) unless fan_power_coefficient_1.nil?
|
|
129
|
-
fan.setFanPowerCoefficient2(fan_power_coefficient_2) unless fan_power_coefficient_2.nil?
|
|
130
|
-
fan.setFanPowerCoefficient3(fan_power_coefficient_3) unless fan_power_coefficient_3.nil?
|
|
131
|
-
fan.setFanPowerCoefficient4(fan_power_coefficient_4) unless fan_power_coefficient_4.nil?
|
|
132
|
-
fan.setFanPowerCoefficient5(fan_power_coefficient_5) unless fan_power_coefficient_5.nil?
|
|
133
|
-
return fan
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# creates a variable volume fan from a json
|
|
137
|
-
#
|
|
138
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
139
|
-
# @param fan_json [Hash] hash of fan properties
|
|
140
|
-
# @param fan_name [String] fan name
|
|
141
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
142
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
143
|
-
# @param motor_efficiency [Double] fan motor efficiency
|
|
144
|
-
# @param motor_in_airstream_fraction [Double] fraction of motor heat in airstream
|
|
145
|
-
# @param fan_power_minimum_flow_rate_input_method [String] options are Fraction, FixedFlowRate
|
|
146
|
-
# @param fan_power_minimum_flow_rate_fraction [Double] minimum flow rate fraction
|
|
147
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
148
|
-
# @param fan_power_coefficient_1 [Double] fan power coefficient 1
|
|
149
|
-
# @param fan_power_coefficient_2 [Double] fan power coefficient 2
|
|
150
|
-
# @param fan_power_coefficient_3 [Double] fan power coefficient 3
|
|
151
|
-
# @param fan_power_coefficient_4 [Double] fan power coefficient 4
|
|
152
|
-
# @param fan_power_coefficient_5 [Double] fan power coefficient 5
|
|
153
|
-
# @return [OpenStudio::Model::FanVariableVolume] variable volume fan object
|
|
154
|
-
def create_fan_variable_volume_from_json(model,
|
|
155
|
-
fan_json,
|
|
156
|
-
fan_name: nil,
|
|
157
|
-
fan_efficiency: nil,
|
|
158
|
-
pressure_rise: nil,
|
|
159
|
-
motor_efficiency: nil,
|
|
160
|
-
motor_in_airstream_fraction: nil,
|
|
161
|
-
fan_power_minimum_flow_rate_input_method: nil,
|
|
162
|
-
fan_power_minimum_flow_rate_fraction: nil,
|
|
163
|
-
end_use_subcategory: nil,
|
|
164
|
-
fan_power_coefficient_1: nil,
|
|
165
|
-
fan_power_coefficient_2: nil,
|
|
166
|
-
fan_power_coefficient_3: nil,
|
|
167
|
-
fan_power_coefficient_4: nil,
|
|
168
|
-
fan_power_coefficient_5: nil)
|
|
169
|
-
# check values to use
|
|
170
|
-
fan_efficiency ||= fan_json['fan_efficiency']
|
|
171
|
-
pressure_rise ||= fan_json['pressure_rise']
|
|
172
|
-
motor_efficiency ||= fan_json['motor_efficiency']
|
|
173
|
-
motor_in_airstream_fraction ||= fan_json['motor_in_airstream_fraction']
|
|
174
|
-
fan_power_minimum_flow_rate_input_method ||= fan_json['fan_power_minimum_flow_rate_input_method']
|
|
175
|
-
fan_power_minimum_flow_rate_fraction ||= fan_json['fan_power_minimum_flow_rate_fraction']
|
|
176
|
-
fan_power_coefficient_1 ||= fan_json['fan_power_coefficient_1']
|
|
177
|
-
fan_power_coefficient_2 ||= fan_json['fan_power_coefficient_2']
|
|
178
|
-
fan_power_coefficient_3 ||= fan_json['fan_power_coefficient_3']
|
|
179
|
-
fan_power_coefficient_4 ||= fan_json['fan_power_coefficient_4']
|
|
180
|
-
fan_power_coefficient_5 ||= fan_json['fan_power_coefficient_5']
|
|
181
|
-
|
|
182
|
-
# convert values
|
|
183
|
-
pressure_rise_pa = OpenStudio.convert(pressure_rise, 'inH_{2}O', 'Pa').get unless pressure_rise.nil?
|
|
184
|
-
|
|
185
|
-
# create fan
|
|
186
|
-
fan = create_fan_variable_volume(model,
|
|
187
|
-
fan_name: fan_name,
|
|
188
|
-
fan_efficiency: fan_efficiency,
|
|
189
|
-
pressure_rise: pressure_rise_pa,
|
|
190
|
-
motor_efficiency: motor_efficiency,
|
|
191
|
-
motor_in_airstream_fraction: motor_in_airstream_fraction,
|
|
192
|
-
fan_power_minimum_flow_rate_input_method: fan_power_minimum_flow_rate_input_method,
|
|
193
|
-
fan_power_minimum_flow_rate_fraction: fan_power_minimum_flow_rate_fraction,
|
|
194
|
-
end_use_subcategory: end_use_subcategory,
|
|
195
|
-
fan_power_coefficient_1: fan_power_coefficient_1,
|
|
196
|
-
fan_power_coefficient_2: fan_power_coefficient_2,
|
|
197
|
-
fan_power_coefficient_3: fan_power_coefficient_3,
|
|
198
|
-
fan_power_coefficient_4: fan_power_coefficient_4,
|
|
199
|
-
fan_power_coefficient_5: fan_power_coefficient_5)
|
|
200
|
-
return fan
|
|
201
|
-
end
|
|
202
86
|
end
|
|
@@ -23,65 +23,4 @@ class Standard
|
|
|
23
23
|
|
|
24
24
|
return true
|
|
25
25
|
end
|
|
26
|
-
|
|
27
|
-
# creates a FanZoneExhaust from a json
|
|
28
|
-
#
|
|
29
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
30
|
-
# @param fan_json [Hash] hash of fan properties
|
|
31
|
-
# @param fan_name [String] fan name
|
|
32
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
33
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
34
|
-
# @param system_availability_manager_coupling_mode [String] coupling mode, options are Coupled, Decoupled
|
|
35
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
36
|
-
# @return [OpenStudio::Model::FanZoneExhaust] the exhaust fan
|
|
37
|
-
def create_fan_zone_exhaust_from_json(model,
|
|
38
|
-
fan_json,
|
|
39
|
-
fan_name: nil,
|
|
40
|
-
fan_efficiency: nil,
|
|
41
|
-
pressure_rise: nil,
|
|
42
|
-
system_availability_manager_coupling_mode: nil,
|
|
43
|
-
end_use_subcategory: nil)
|
|
44
|
-
|
|
45
|
-
# check values to use
|
|
46
|
-
fan_efficiency ||= fan_json['fan_efficiency']
|
|
47
|
-
pressure_rise ||= fan_json['pressure_rise']
|
|
48
|
-
system_availability_manager_coupling_mode ||= fan_json['system_availability_manager_coupling_mode']
|
|
49
|
-
|
|
50
|
-
# convert values
|
|
51
|
-
pressure_rise = pressure_rise ? OpenStudio.convert(pressure_rise, 'inH_{2}O', 'Pa').get : nil
|
|
52
|
-
|
|
53
|
-
# create fan
|
|
54
|
-
fan = create_fan_zone_exhaust(model,
|
|
55
|
-
fan_name: fan_name,
|
|
56
|
-
fan_efficiency: fan_efficiency,
|
|
57
|
-
pressure_rise: pressure_rise,
|
|
58
|
-
system_availability_manager_coupling_mode: system_availability_manager_coupling_mode,
|
|
59
|
-
end_use_subcategory: end_use_subcategory)
|
|
60
|
-
return fan
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# creates a FanZoneExhaust
|
|
64
|
-
#
|
|
65
|
-
# @param model [OpenStudio::Model::Model] OpenStudio model object
|
|
66
|
-
# @param fan_name [String] fan name
|
|
67
|
-
# @param fan_efficiency [Double] fan efficiency
|
|
68
|
-
# @param pressure_rise [Double] fan pressure rise in Pa
|
|
69
|
-
# @param system_availability_manager_coupling_mode [String] coupling mode, options are Coupled, Decoupled
|
|
70
|
-
# @param end_use_subcategory [String] end use subcategory name
|
|
71
|
-
# @return [OpenStudio::Model::FanZoneExhaust] the exhaust fan
|
|
72
|
-
def create_fan_zone_exhaust(model,
|
|
73
|
-
fan_name: nil,
|
|
74
|
-
fan_efficiency: nil,
|
|
75
|
-
pressure_rise: nil,
|
|
76
|
-
system_availability_manager_coupling_mode: nil,
|
|
77
|
-
end_use_subcategory: nil)
|
|
78
|
-
fan = OpenStudio::Model::FanZoneExhaust.new(model)
|
|
79
|
-
PrototypeFan.apply_base_fan_variables(fan,
|
|
80
|
-
fan_name: fan_name,
|
|
81
|
-
fan_efficiency: fan_efficiency,
|
|
82
|
-
pressure_rise: pressure_rise,
|
|
83
|
-
end_use_subcategory: end_use_subcategory)
|
|
84
|
-
fan.setSystemAvailabilityManagerCouplingMode(system_availability_manager_coupling_mode) unless system_availability_manager_coupling_mode.nil?
|
|
85
|
-
return fan
|
|
86
|
-
end
|
|
87
26
|
end
|
|
@@ -267,12 +267,12 @@ class Standard
|
|
|
267
267
|
htg_dsgn_sup_air_temp = system['heating_design_supply_air_temperature'] || 70.0
|
|
268
268
|
|
|
269
269
|
# for boolean input, this makes sure we get the correct input translation
|
|
270
|
-
if system['include_exhaust_fan'].nil? ||
|
|
270
|
+
if system['include_exhaust_fan'].nil? || (system['include_exhaust_fan'].to_s.downcase == 'true')
|
|
271
271
|
include_exhaust_fan = true
|
|
272
272
|
else
|
|
273
273
|
include_exhaust_fan = false
|
|
274
274
|
end
|
|
275
|
-
if
|
|
275
|
+
if (system['demand_control_ventilation'].to_s.downcase == 'true')
|
|
276
276
|
demand_control_ventilation = true
|
|
277
277
|
else
|
|
278
278
|
demand_control_ventilation = false
|