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
|
@@ -23,7 +23,7 @@ class Standard
|
|
|
23
23
|
# lookup space type properties
|
|
24
24
|
space_type_properties = model_find_object(standards_data['space_types'], search_criteria)
|
|
25
25
|
|
|
26
|
-
if space_type_properties.nil?
|
|
26
|
+
if space_type_properties.nil? || space_type_properties.empty?
|
|
27
27
|
OpenStudio.logFree(OpenStudio::Warn, 'openstudio.standards.SpaceType', "Space type properties lookup failed: #{search_criteria}.")
|
|
28
28
|
space_type_properties = {}
|
|
29
29
|
end
|
|
@@ -97,7 +97,7 @@ class Standard
|
|
|
97
97
|
# loads directly assigned to spaces. This method skips plenums.
|
|
98
98
|
#
|
|
99
99
|
# @param space_type [OpenStudio::Model::SpaceType] space type object
|
|
100
|
-
# @param set_people [Boolean] if true, set the people density.
|
|
100
|
+
# @param set_people [Boolean] if true, set the people density. occupancy values are in the ventilation standard.
|
|
101
101
|
# Also, assign reasonable clothing, air velocity, and work efficiency inputs
|
|
102
102
|
# to allow reasonable thermal comfort metrics to be calculated.
|
|
103
103
|
# @param set_lights [Boolean] if true, set the lighting density, lighting fraction
|
|
@@ -106,10 +106,8 @@ class Standard
|
|
|
106
106
|
# @param set_gas_equipment [Boolean] if true, set the gas equipment density
|
|
107
107
|
# @param set_ventilation [Boolean] if true, set the ventilation rates (per-person and per-area)
|
|
108
108
|
# @return [Boolean] returns true if successful, false if not
|
|
109
|
-
def space_type_apply_internal_loads(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation)
|
|
109
|
+
def space_type_apply_internal_loads(space_type, set_people: true, set_lights: true, set_electric_equipment: true, set_gas_equipment: true, set_ventilation: true)
|
|
110
110
|
# Skip plenums
|
|
111
|
-
# Check if the space type name
|
|
112
|
-
# contains the word plenum.
|
|
113
111
|
if space_type.name.get.to_s.downcase.include?('plenum')
|
|
114
112
|
return false
|
|
115
113
|
end
|
|
@@ -126,87 +124,9 @@ class Standard
|
|
|
126
124
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} was not found in the standards data.")
|
|
127
125
|
return false
|
|
128
126
|
end
|
|
129
|
-
# People
|
|
130
|
-
people_have_info = false
|
|
131
|
-
occupancy_per_area = space_type_properties['occupancy_per_area'].to_f
|
|
132
|
-
people_have_info = true unless occupancy_per_area.zero?
|
|
133
|
-
|
|
134
|
-
if set_people && people_have_info
|
|
135
|
-
|
|
136
|
-
# Remove all but the first instance
|
|
137
|
-
instances = space_type.people.sort
|
|
138
|
-
if instances.empty?
|
|
139
|
-
# Create a new definition and instance
|
|
140
|
-
definition = OpenStudio::Model::PeopleDefinition.new(space_type.model)
|
|
141
|
-
definition.setName("#{space_type.name} People Definition")
|
|
142
|
-
instance = OpenStudio::Model::People.new(definition)
|
|
143
|
-
instance.setName("#{space_type.name} People")
|
|
144
|
-
instance.setSpaceType(space_type)
|
|
145
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} had no people, one has been created.")
|
|
146
|
-
instances << instance
|
|
147
|
-
elsif instances.size > 1
|
|
148
|
-
instances.each_with_index do |inst, i|
|
|
149
|
-
next if i.zero?
|
|
150
127
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
# Modify the definition of the instance
|
|
157
|
-
space_type.people.sort.each do |inst|
|
|
158
|
-
definition = inst.peopleDefinition
|
|
159
|
-
unless occupancy_per_area.zero?
|
|
160
|
-
definition.setPeopleperSpaceFloorArea(OpenStudio.convert(occupancy_per_area / 1000, 'people/ft^2', 'people/m^2').get)
|
|
161
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set occupancy to #{occupancy_per_area} people/1000 ft^2.")
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# set fraction radiant ##
|
|
165
|
-
definition.setFractionRadiant(0.3)
|
|
166
|
-
|
|
167
|
-
# Clothing schedule for thermal comfort metrics
|
|
168
|
-
clothing_sch = space_type.model.getScheduleRulesetByName('Clothing Schedule')
|
|
169
|
-
if clothing_sch.is_initialized
|
|
170
|
-
clothing_sch = clothing_sch.get
|
|
171
|
-
else
|
|
172
|
-
clothing_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
173
|
-
clothing_sch.setName('Clothing Schedule')
|
|
174
|
-
clothing_sch.defaultDaySchedule.setName('Clothing Schedule Default Winter Clothes')
|
|
175
|
-
clothing_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 1.0)
|
|
176
|
-
sch_rule = OpenStudio::Model::ScheduleRule.new(clothing_sch)
|
|
177
|
-
sch_rule.daySchedule.setName('Clothing Schedule Summer Clothes')
|
|
178
|
-
sch_rule.daySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.5)
|
|
179
|
-
sch_rule.setStartDate(OpenStudio::Date.new(OpenStudio::MonthOfYear.new(5), 1))
|
|
180
|
-
sch_rule.setEndDate(OpenStudio::Date.new(OpenStudio::MonthOfYear.new(9), 30))
|
|
181
|
-
end
|
|
182
|
-
inst.setClothingInsulationSchedule(clothing_sch)
|
|
183
|
-
|
|
184
|
-
# Air velocity schedule for thermal comfort metrics
|
|
185
|
-
air_velo_sch = space_type.model.getScheduleRulesetByName('Air Velocity Schedule')
|
|
186
|
-
if air_velo_sch.is_initialized
|
|
187
|
-
air_velo_sch = air_velo_sch.get
|
|
188
|
-
else
|
|
189
|
-
air_velo_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
190
|
-
air_velo_sch.setName('Air Velocity Schedule')
|
|
191
|
-
air_velo_sch.defaultDaySchedule.setName('Air Velocity Schedule Default')
|
|
192
|
-
air_velo_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0.2)
|
|
193
|
-
end
|
|
194
|
-
inst.setAirVelocitySchedule(air_velo_sch)
|
|
195
|
-
|
|
196
|
-
# Work efficiency schedule for thermal comfort metrics
|
|
197
|
-
work_efficiency_sch = space_type.model.getScheduleRulesetByName('Work Efficiency Schedule')
|
|
198
|
-
if work_efficiency_sch.is_initialized
|
|
199
|
-
work_efficiency_sch = work_efficiency_sch.get
|
|
200
|
-
else
|
|
201
|
-
work_efficiency_sch = OpenStudio::Model::ScheduleRuleset.new(space_type.model)
|
|
202
|
-
work_efficiency_sch.setName('Work Efficiency Schedule')
|
|
203
|
-
work_efficiency_sch.defaultDaySchedule.setName('Work Efficiency Schedule Default')
|
|
204
|
-
work_efficiency_sch.defaultDaySchedule.addValue(OpenStudio::Time.new(0, 24, 0, 0), 0)
|
|
205
|
-
end
|
|
206
|
-
inst.setWorkEfficiencySchedule(work_efficiency_sch)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
end
|
|
128
|
+
# People
|
|
129
|
+
space_type_apply_people(space_type) if set_people
|
|
210
130
|
|
|
211
131
|
# Lights
|
|
212
132
|
lights_have_info = false
|
|
@@ -388,53 +308,7 @@ class Standard
|
|
|
388
308
|
end
|
|
389
309
|
|
|
390
310
|
# Ventilation
|
|
391
|
-
|
|
392
|
-
ventilation_per_area = space_type_properties['ventilation_per_area'].to_f
|
|
393
|
-
ventilation_per_person = space_type_properties['ventilation_per_person'].to_f
|
|
394
|
-
ventilation_ach = space_type_properties['ventilation_air_changes'].to_f
|
|
395
|
-
ventilation_have_info = true unless ventilation_per_area.zero?
|
|
396
|
-
ventilation_have_info = true unless ventilation_per_person.zero?
|
|
397
|
-
ventilation_have_info = true unless ventilation_ach.zero?
|
|
398
|
-
|
|
399
|
-
# Get the design OA or create a new one if none exists
|
|
400
|
-
ventilation = space_type.designSpecificationOutdoorAir
|
|
401
|
-
if ventilation.is_initialized
|
|
402
|
-
ventilation = ventilation.get
|
|
403
|
-
else
|
|
404
|
-
ventilation = OpenStudio::Model::DesignSpecificationOutdoorAir.new(space_type.model)
|
|
405
|
-
ventilation.setName("#{space_type.name} Ventilation")
|
|
406
|
-
space_type.setDesignSpecificationOutdoorAir(ventilation)
|
|
407
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} had no ventilation specification, one has been created.")
|
|
408
|
-
end
|
|
409
|
-
|
|
410
|
-
if set_ventilation && ventilation_have_info
|
|
411
|
-
|
|
412
|
-
# Modify the ventilation properties
|
|
413
|
-
ventilation_method = model_ventilation_method(space_type.model)
|
|
414
|
-
ventilation.setOutdoorAirMethod(ventilation_method)
|
|
415
|
-
unless ventilation_per_area.zero?
|
|
416
|
-
ventilation.setOutdoorAirFlowperFloorArea(OpenStudio.convert(ventilation_per_area.to_f, 'ft^3/min*ft^2', 'm^3/s*m^2').get)
|
|
417
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per area to #{ventilation_per_area} cfm/ft^2.")
|
|
418
|
-
end
|
|
419
|
-
unless ventilation_per_person.zero?
|
|
420
|
-
ventilation.setOutdoorAirFlowperPerson(OpenStudio.convert(ventilation_per_person.to_f, 'ft^3/min*person', 'm^3/s*person').get)
|
|
421
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per person to #{ventilation_per_person} cfm/person.")
|
|
422
|
-
end
|
|
423
|
-
unless ventilation_ach.zero?
|
|
424
|
-
ventilation.setOutdoorAirFlowAirChangesperHour(ventilation_ach)
|
|
425
|
-
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation to #{ventilation_ach} ACH.")
|
|
426
|
-
end
|
|
427
|
-
|
|
428
|
-
elsif set_ventilation && !ventilation_have_info
|
|
429
|
-
|
|
430
|
-
# All space types must have a design spec OA
|
|
431
|
-
# object for ventilation controls to work correctly,
|
|
432
|
-
# even if the values are all zero.
|
|
433
|
-
ventilation.setOutdoorAirFlowperFloorArea(0)
|
|
434
|
-
ventilation.setOutdoorAirFlowperPerson(0)
|
|
435
|
-
ventilation.setOutdoorAirFlowAirChangesperHour(0)
|
|
436
|
-
|
|
437
|
-
end
|
|
311
|
+
space_type_apply_ventilation(space_type) if set_ventilation
|
|
438
312
|
|
|
439
313
|
return true
|
|
440
314
|
end
|
|
@@ -567,11 +441,8 @@ class Standard
|
|
|
567
441
|
# @param set_lights [Boolean] if true, set the lighting schedule
|
|
568
442
|
# @param set_electric_equipment [Boolean] if true, set the electric schedule schedule
|
|
569
443
|
# @param set_gas_equipment [Boolean] if true, set the gas equipment density
|
|
570
|
-
# @param make_thermostat [Boolean] if true, makes a thermostat for this space type from the
|
|
571
|
-
# schedules listed for the space type. This thermostat is not hooked to any zone by this method,
|
|
572
|
-
# but may be found and used later.
|
|
573
444
|
# @return [Boolean] returns true if successful, false if not
|
|
574
|
-
def space_type_apply_internal_load_schedules(space_type, set_people, set_lights, set_electric_equipment, set_gas_equipment, set_ventilation
|
|
445
|
+
def space_type_apply_internal_load_schedules(space_type, set_people: true, set_lights: true, set_electric_equipment: true, set_gas_equipment: true, set_ventilation: true)
|
|
575
446
|
# Get the standards data
|
|
576
447
|
space_type_properties = space_type_get_standards_data(space_type)
|
|
577
448
|
|
|
@@ -599,14 +470,11 @@ class Standard
|
|
|
599
470
|
default_sch_set.setPeopleActivityLevelSchedule(model_add_schedule(space_type.model, occupancy_activity_sch))
|
|
600
471
|
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set occupant activity schedule to #{occupancy_activity_sch}.")
|
|
601
472
|
end
|
|
602
|
-
|
|
603
473
|
end
|
|
604
474
|
|
|
605
475
|
# Lights
|
|
606
476
|
if set_lights
|
|
607
|
-
|
|
608
477
|
apply_lighting_schedule(space_type, space_type_properties, default_sch_set)
|
|
609
|
-
|
|
610
478
|
end
|
|
611
479
|
|
|
612
480
|
# Electric Equipment
|
|
@@ -627,22 +495,31 @@ class Standard
|
|
|
627
495
|
end
|
|
628
496
|
end
|
|
629
497
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
thermostat = OpenStudio::Model::ThermostatSetpointDualSetpoint.new(space_type.model)
|
|
633
|
-
thermostat.setName("#{space_type.name} Thermostat")
|
|
498
|
+
return true
|
|
499
|
+
end
|
|
634
500
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
501
|
+
# Makes a thermostat for this space type from the schedules listed for the space type.
|
|
502
|
+
# This thermostat is not hooked to any zone by this method,but may be found and used later.
|
|
503
|
+
#
|
|
504
|
+
# @param space_type [OpenStudio::Model::SpaceType] space type object
|
|
505
|
+
# @return [Boolean] returns true if successful, false if not
|
|
506
|
+
def space_type_apply_thermostat_schedules(space_type)
|
|
507
|
+
# Get the standards data
|
|
508
|
+
space_type_properties = space_type_get_standards_data(space_type)
|
|
640
509
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
510
|
+
thermostat = OpenStudio::Model::ThermostatSetpointDualSetpoint.new(space_type.model)
|
|
511
|
+
thermostat.setName("#{space_type.name} Thermostat")
|
|
512
|
+
|
|
513
|
+
heating_setpoint_sch = space_type_properties['heating_setpoint_schedule']
|
|
514
|
+
unless heating_setpoint_sch.nil?
|
|
515
|
+
thermostat.setHeatingSetpointTemperatureSchedule(model_add_schedule(space_type.model, heating_setpoint_sch))
|
|
516
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set heating setpoint schedule to #{heating_setpoint_sch}.")
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
cooling_setpoint_sch = space_type_properties['cooling_setpoint_schedule']
|
|
520
|
+
unless cooling_setpoint_sch.nil?
|
|
521
|
+
thermostat.setCoolingSetpointTemperatureSchedule(model_add_schedule(space_type.model, cooling_setpoint_sch))
|
|
522
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set cooling setpoint schedule to #{cooling_setpoint_sch}.")
|
|
646
523
|
end
|
|
647
524
|
|
|
648
525
|
return true
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
class Standard
|
|
2
|
+
# @!group Ventilation
|
|
3
|
+
|
|
4
|
+
# Apply ventilation from standards data to a space type
|
|
5
|
+
# Create a DesignSpecificationOutdoorAir air object and assign it to the SpaceType
|
|
6
|
+
#
|
|
7
|
+
# @param space_type [OpenStudio::Model::SpaceType] OpenStudio SpaceType object to apply ventilation to
|
|
8
|
+
# @return [Boolean] returns true if successful, false if not
|
|
9
|
+
def space_type_apply_ventilation(space_type)
|
|
10
|
+
# Skip plenums
|
|
11
|
+
if space_type.name.get.to_s.downcase.include?('plenum')
|
|
12
|
+
return false
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
if space_type.standardsSpaceType.is_initialized && space_type.standardsSpaceType.get.downcase.include?('plenum')
|
|
16
|
+
return false
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Get the standards data
|
|
20
|
+
# @todo replace this look from standards_data['space_types'] to ventilation data directly, use 62.1 as a Standard
|
|
21
|
+
space_type_properties = space_type_get_standards_data(space_type)
|
|
22
|
+
|
|
23
|
+
# Ensure space_type_properties available
|
|
24
|
+
if space_type_properties.nil? || space_type_properties.empty?
|
|
25
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} was not found in the standards data.")
|
|
26
|
+
return false
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Ventilation
|
|
30
|
+
ventilation_have_info = false
|
|
31
|
+
ventilation_per_area = space_type_properties['ventilation_per_area'].to_f
|
|
32
|
+
ventilation_per_person = space_type_properties['ventilation_per_person'].to_f
|
|
33
|
+
ventilation_ach = space_type_properties['ventilation_air_changes'].to_f
|
|
34
|
+
ventilation_have_info = true unless ventilation_per_area.zero?
|
|
35
|
+
ventilation_have_info = true unless ventilation_per_person.zero?
|
|
36
|
+
ventilation_have_info = true unless ventilation_ach.zero?
|
|
37
|
+
|
|
38
|
+
# Get the design OA or create a new one if none exists
|
|
39
|
+
ventilation = space_type.designSpecificationOutdoorAir
|
|
40
|
+
if ventilation.is_initialized
|
|
41
|
+
ventilation = ventilation.get
|
|
42
|
+
else
|
|
43
|
+
ventilation = OpenStudio::Model::DesignSpecificationOutdoorAir.new(space_type.model)
|
|
44
|
+
ventilation.setName("#{space_type.name} Ventilation")
|
|
45
|
+
space_type.setDesignSpecificationOutdoorAir(ventilation)
|
|
46
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} had no ventilation specification, one has been created.")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
if ventilation_have_info
|
|
50
|
+
# Modify the ventilation properties
|
|
51
|
+
ventilation_method = model_ventilation_method(space_type.model)
|
|
52
|
+
ventilation.setOutdoorAirMethod(ventilation_method)
|
|
53
|
+
unless ventilation_per_area.zero?
|
|
54
|
+
ventilation.setOutdoorAirFlowperFloorArea(OpenStudio.convert(ventilation_per_area.to_f, 'ft^3/min*ft^2', 'm^3/s*m^2').get)
|
|
55
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per area to #{ventilation_per_area} cfm/ft^2.")
|
|
56
|
+
end
|
|
57
|
+
unless ventilation_per_person.zero?
|
|
58
|
+
ventilation.setOutdoorAirFlowperPerson(OpenStudio.convert(ventilation_per_person.to_f, 'ft^3/min*person', 'm^3/s*person').get)
|
|
59
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation per person to #{ventilation_per_person} cfm/person.")
|
|
60
|
+
end
|
|
61
|
+
unless ventilation_ach.zero?
|
|
62
|
+
ventilation.setOutdoorAirFlowAirChangesperHour(ventilation_ach)
|
|
63
|
+
OpenStudio.logFree(OpenStudio::Info, 'openstudio.standards.SpaceType', "#{space_type.name} set ventilation to #{ventilation_ach} ACH.")
|
|
64
|
+
end
|
|
65
|
+
elsif !ventilation_have_info
|
|
66
|
+
# All space types must have a design spec OA object for ventilation controls to work correctly, even if the values are all zero.
|
|
67
|
+
ventilation.setOutdoorAirFlowperFloorArea(0)
|
|
68
|
+
ventilation.setOutdoorAirFlowperPerson(0)
|
|
69
|
+
ventilation.setOutdoorAirFlowAirChangesperHour(0)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
return true
|
|
73
|
+
end
|
|
74
|
+
end
|
|
@@ -341,7 +341,7 @@ class Standard
|
|
|
341
341
|
fan.setAvailabilitySchedule(avail_sch)
|
|
342
342
|
|
|
343
343
|
# Clean name of zone HVAC
|
|
344
|
-
equip_name_clean = ems_friendly_name(zone_hvac.name)
|
|
344
|
+
equip_name_clean = OpenstudioStandards::HVAC.ems_friendly_name(zone_hvac.name)
|
|
345
345
|
|
|
346
346
|
# Sensors
|
|
347
347
|
# Get existing OAT sensor if present
|
data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.PlantLoop.rb
CHANGED
|
@@ -35,10 +35,10 @@ class ASHRAE9012004 < ASHRAE901
|
|
|
35
35
|
plant_loop.supplyComponents.each do |sc|
|
|
36
36
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
37
37
|
pump = sc.to_PumpVariableSpeed.get
|
|
38
|
-
pump_variable_speed_set_control_type(pump, pri_control_type)
|
|
38
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
|
|
39
39
|
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
|
40
40
|
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
|
41
|
-
|
|
41
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -46,10 +46,10 @@ class ASHRAE9012004 < ASHRAE901
|
|
|
46
46
|
plant_loop.demandComponents.each do |sc|
|
|
47
47
|
if sc.to_PumpVariableSpeed.is_initialized
|
|
48
48
|
pump = sc.to_PumpVariableSpeed.get
|
|
49
|
-
pump_variable_speed_set_control_type(pump, sec_control_type)
|
|
49
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: sec_control_type)
|
|
50
50
|
elsif sc.to_HeaderedPumpsVariableSpeed.is_initialized
|
|
51
51
|
pump = sc.to_HeaderedPumpsVariableSpeed.get
|
|
52
|
-
|
|
52
|
+
OpenstudioStandards::HVAC.pump_variable_speed_set_control_type(pump, control_type: pri_control_type)
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -384,7 +384,7 @@
|
|
|
384
384
|
"configuration": null,
|
|
385
385
|
"subcategory": null,
|
|
386
386
|
"application": null,
|
|
387
|
-
"rating_condition":
|
|
387
|
+
"rating_condition": "68F entering water",
|
|
388
388
|
"electric_power_phase": null,
|
|
389
389
|
"region": null,
|
|
390
390
|
"minimum_capacity": 0,
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
"configuration": null,
|
|
406
406
|
"subcategory": null,
|
|
407
407
|
"application": null,
|
|
408
|
-
"rating_condition":
|
|
408
|
+
"rating_condition": "50F entering water",
|
|
409
409
|
"electric_power_phase": null,
|
|
410
410
|
"region": null,
|
|
411
411
|
"minimum_capacity": 0,
|
|
@@ -426,7 +426,7 @@
|
|
|
426
426
|
"configuration": null,
|
|
427
427
|
"subcategory": null,
|
|
428
428
|
"application": null,
|
|
429
|
-
"rating_condition":
|
|
429
|
+
"rating_condition": "32F entering water",
|
|
430
430
|
"electric_power_phase": null,
|
|
431
431
|
"region": null,
|
|
432
432
|
"minimum_capacity": 0,
|