openstudio-standards 0.2.16 → 0.2.17.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/standards/manage_OpenStudio_Standards.rb +31 -4
- data/lib/openstudio-standards/btap/geometry.rb +1 -1
- data/lib/openstudio-standards/hvac_sizing/Siz.HeatingCoolingFuels.rb +354 -2
- data/lib/openstudio-standards/hvac_sizing/Siz.ThermalZone.rb +79 -0
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.College.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/do_not_edit_metaclasses.rb +3313 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Fan.rb +12 -0
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.Model.rb +3 -4
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.SizingSystem.rb +1 -1
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.hvac_systems.rb +167 -93
- data/lib/openstudio-standards/prototypes/common/objects/Prototype.utilities.rb +2 -4
- data/lib/openstudio-standards/prototypes/common/prototype_metaprogramming.rb +1 -0
- data/lib/openstudio-standards/refs/references.rb +3 -0
- data/lib/openstudio-standards/standards/Standards.AirLoopHVAC.rb +279 -6
- data/lib/openstudio-standards/standards/Standards.AirTerminalSingleDuctParallelPIUReheat.rb +50 -2
- data/lib/openstudio-standards/standards/Standards.ChillerElectricEIR.rb +4 -0
- data/lib/openstudio-standards/standards/Standards.CoilCoolingWaterToAirHeatPumpEquationFit.rb +0 -1
- data/lib/openstudio-standards/standards/Standards.Construction.rb +185 -3
- data/lib/openstudio-standards/standards/Standards.Fan.rb +14 -6
- data/lib/openstudio-standards/standards/Standards.HeatExchangerSensLat.rb +1 -0
- data/lib/openstudio-standards/standards/Standards.Model.rb +1751 -383
- data/lib/openstudio-standards/standards/Standards.PlanarSurface.rb +130 -9
- data/lib/openstudio-standards/standards/Standards.PlantLoop.rb +50 -3
- data/lib/openstudio-standards/standards/Standards.ScheduleCompact.rb +44 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleConstant.rb +27 -0
- data/lib/openstudio-standards/standards/Standards.ScheduleRuleset.rb +543 -0
- data/lib/openstudio-standards/standards/Standards.Space.rb +665 -15
- data/lib/openstudio-standards/standards/Standards.SpaceType.rb +141 -4
- data/lib/openstudio-standards/standards/Standards.SubSurface.rb +2 -1
- data/lib/openstudio-standards/standards/Standards.Surface.rb +117 -0
- data/lib/openstudio-standards/standards/Standards.ThermalZone.rb +197 -49
- data/lib/openstudio-standards/standards/Standards.ZoneHVACComponent.rb +41 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/ashrae_90_1_2004.Model.rb +6 -8
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/ashrae_90_1.schedules.json +45 -45
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2004/comstock_ashrae_90_1_2004/data/comstock_ashrae_90_1_2004.spc_typ.json +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2007/comstock_ashrae_90_1_2007/data/ashrae_90_1.schedules.json +45 -45
- 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 +7 -7
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2010/comstock_ashrae_90_1_2010/data/ashrae_90_1.schedules.json +45 -45
- 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 +9 -9
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2013/comstock_ashrae_90_1_2013/data/ashrae_90_1.schedules.json +45 -45
- 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 +4 -4
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2016/comstock_ashrae_90_1_2016/data/ashrae_90_1.schedules.json +45 -45
- 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 +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/ashrae_90_1_2019.AirLoopHVAC.rb +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/ashrae_90_1_2019/comstock_ashrae_90_1_2019/data/ashrae_90_1.schedules.json +45 -45
- 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 +5 -5
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.constructions.json +2 -2
- data/lib/openstudio-standards/standards/ashrae_90_1/data/ashrae_90_1.fans.json +12 -0
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_1980_2004/comstock_doe_ref_1980_2004/data/ashrae_90_1.schedules.json +45 -45
- 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 +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/doe_ref_pre_1980/comstock_doe_ref_pre_1980/data/ashrae_90_1.schedules.json +45 -45
- 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 +10 -10
- data/lib/openstudio-standards/standards/ashrae_90_1/nrel_zne_ready_2017/nrel_zne_ready_2017.AirLoopHVAC.rb +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirLoopHVAC.rb +792 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctParallelPIUReheat.rb +10 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.AirTerminalSingleDuctVAVReheat.rb +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.BoilerHotWater.rb +91 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ChillerElectricEIR.rb +84 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXSingleSpeed.rb +145 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilCoolingDXTwoSpeed.rb +106 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilDX.rb +71 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingDXSingleSpeed.rb +194 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoilHeatingGas.rb +120 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTower.rb +110 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.CoolingTowerVariableSpeed.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Fan.rb +73 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanConstantVolume.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanOnOff.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanVariableVolume.rb +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.FanZoneExhaust.rb +5 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.HeatExchangerSensLat.rb +55 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Model.rb +3045 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlanarSurface.rb +187 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.PlantLoop.rb +450 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Space.rb +106 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.SpaceType.rb +666 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.Surface.rb +54 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ThermalZone.rb +168 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.ZoneHVACComponent.rb +132 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm.rb +239 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.Model.rb +176 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/ashrae_90_1_prm_2019.rb +25 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.boilers.json +52 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.chillers.json +112 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.climate_zone_sets.json +210 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_properties.json +10384 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.construction_sets.json +133 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.furnaces.json +43 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps.json +119 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_pumps_heating.json +130 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.heat_rejection.json +13 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.lpd_space_type.json +568 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.motors.json +264 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_baseline_hvac.json +439 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_constructions.json +685 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_economizers.json +213 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_ext_ltg.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_heat_type.json +136 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_hvac_bldg_type.json +32 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_interior_lighting.json +1837 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_swh_bldg_type.json +184 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.prm_wwr_bldg_type.json +84 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.unitary_acs.json +148 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/ashrae_90_1_prm_2019/data/ashrae_90_1_prm_2019.water_heaters.json +157 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.climate_zone_sets.json +210 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.curves.json +18329 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.fans.json +340 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/data/ashrae_90_1_prm.materials.json +49924 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/baseline_building_rotation_exception.md +44 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/check_pump_power_and_control.md +71 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv.md +68 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/dcv_implementation.png +0 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/elevators.md +14 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/exhaust_air_energy_recovery.md +36 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/f_c_factors.md +19 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/fan_power_credits.md +15 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/preheat_coil.md +59 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/pump_power_control.md +46 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/return_air_type.md +31 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_baseline_wwr.md +191 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_hw_and_chw_supply_water_temp_reset_control.md +24 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_num_boilers_chillers_towers.md +49 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_plug_load_measures.md +80 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_space_lpd.md +73 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unenclosed_and_unconditioned_spaces.md +11 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unmet_load_hours.md +20 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_parallel_piu_terminals_fan_control.md +23 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_terminals_min_flow_setpoint.md +21 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac_doas.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_building.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_design_specification_outdoor_air.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_electric_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_exterior_lights.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_gas_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_lights.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_space.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_spacetype.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_thermal_zone.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_connections.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment_definition.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_hvac.csv +1 -0
- data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_infiltration.csv +1 -0
- data/lib/openstudio-standards/standards/cbes/data/cbes.fans.json +12 -0
- data/lib/openstudio-standards/standards/deer/data/deer.fans.json +12 -0
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps.json +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/data/heat_pumps_heating.json +1 -1
- data/lib/openstudio-standards/standards/necb/ECMS/data/unitary_acs.json +24 -11
- data/lib/openstudio-standards/standards/necb/ECMS/erv.rb +13 -15
- data/lib/openstudio-standards/standards/necb/NECB2011/data/province_map.json +17 -0
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_multi_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_3_and_8_single_speed.rb +1 -1
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_4.rb +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_system_6.rb +6 -5
- data/lib/openstudio-standards/standards/necb/NECB2011/hvac_systems.rb +3 -2
- data/lib/openstudio-standards/standards/necb/NECB2011/necb_2011.rb +2 -3
- data/lib/openstudio-standards/standards/necb/NECB2020/data/chillers.json +2 -2
- data/lib/openstudio-standards/standards/necb/NECB2020/data/space_types.json +33 -924
- data/lib/openstudio-standards/standards/necb/NECB2020/data/unitary_acs.json +15 -15
- data/lib/openstudio-standards/standards/necb/common/btap_data.rb +135 -29
- data/lib/openstudio-standards/standards/necb/common/btap_datapoint.rb +16 -4
- data/lib/openstudio-standards/standards/necb/common/neb_end_use_prices.csv +40 -42
- data/lib/openstudio-standards/standards/necb/common/necb_reference_runs.csv +1 -1
- data/lib/openstudio-standards/standards/necb/common/space_type_upgrade_map.json +89 -89
- data/lib/openstudio-standards/utilities/array.rb +11 -0
- data/lib/openstudio-standards/utilities/logging.rb +48 -0
- data/lib/openstudio-standards/utilities/object_info.rb +20 -0
- data/lib/openstudio-standards/utilities/schedule_translator.rb +348 -0
- data/lib/openstudio-standards/utilities/sqlfile.rb +68 -0
- data/lib/openstudio-standards/version.rb +2 -2
- data/lib/openstudio-standards/weather/Weather.Model.rb +42 -55
- data/lib/openstudio-standards/weather/Weather.stat_file.rb +1 -1
- data/lib/openstudio-standards.rb +35 -1
- metadata +111 -6
- data/data/standards/OpenStudio_Standards-ashrae_90_1.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28Jan2022.xlsx +0 -0
- data/data/standards/OpenStudio_Standards-ashrae_90_1_28_Jan2022_2.xlsx +0 -0
- data/data/standards/openstudio_standards_duplicates_log.csv +0 -143
data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/set_num_boilers_chillers_towers.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
Set number and types of boilers, chillers, and towers in baseline.
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
|
5
|
+
G3.1.3.7 Type and Number of Chillers (Systems 7, 8, 11, 12, and 13)
|
6
|
+
Electric chillers shall be used in the baseline building design regardless of the cooling
|
7
|
+
energy source, e.g. direct-fired absorption or absorption from purchased steam. The
|
8
|
+
baseline building design’s chiller plant shall be modeled with chillers having the number
|
9
|
+
and type as indicated in Table G3.1.3.7 as a function of building peak cooling load.
|
10
|
+
Exception to G3.1.3.7
|
11
|
+
Systems using purchased chilled water shall be modeled in accordance with Section G3.1.1.3.
|
12
|
+
|
13
|
+
Table G3.1.3.7 Type and Number of Chillers
|
14
|
+
|
15
|
+
Building Peak Cooling Load Number and Type of Chillers
|
16
|
+
<=300 tons: 1 water-cooled screw chiller
|
17
|
+
\>300 tons, <600 tons: 2 water-cooled screw chillers sized equally
|
18
|
+
\>=600 tons: 2 water-cooled centrifugal chillers minimum with chillers added so that no chiller is larger than 800 tons, all sized equally
|
19
|
+
|
20
|
+
G3.1.3.2 Type and Number of Boilers (Systems 1, 5, 7, 11, and 12)
|
21
|
+
The boiler plant shall be natural draft, except as noted in Section G3.1.1.1. The baseline
|
22
|
+
building design boiler plant shall be modeled as having a single boiler if the baseline
|
23
|
+
building design plant serves a conditioned floor area of 15,000 ft2 or less, and as having
|
24
|
+
two equally sized boilers for plants serving more than 15,000 ft2. Boilers shall be
|
25
|
+
staged as required by the load.
|
26
|
+
|
27
|
+
G3.1.3.11 Heat Rejection (Systems 7, 8, 11, 12, and 13)
|
28
|
+
The heat-rejection device shall be an axial-fan open-circuit cooling tower with variablespeed
|
29
|
+
fan control and shall have an efficiency of 38.2 gpm/hp at the conditions specified
|
30
|
+
in Table 6.8.1-7.
|
31
|
+
|
32
|
+
|
33
|
+
# Key Ruby Methods
|
34
|
+
|
35
|
+
## plant_loop_apply_prm_number_of_boilers(plant_loop)
|
36
|
+
|
37
|
+
Set boiler type and number of boilers based on floor area served by the boiler plant loop.
|
38
|
+
Set staging to sequential.
|
39
|
+
|
40
|
+
## plant_loop_apply_prm_number_of_chillers(plant_loop, sizing_run_dir)
|
41
|
+
|
42
|
+
Set chiller type and number of chillers based on total cooling capacity
|
43
|
+
Set staging to sequential.
|
44
|
+
|
45
|
+
## plant_loop_apply_prm_number_of_cooling_towers(plant_loop)
|
46
|
+
|
47
|
+
An alternate version of this method is located in ashrae_90_1_prm.PlantLoop.rb.
|
48
|
+
This version keeps a single cooling tower, but adds a headered pump bank with one pump per chiller.
|
49
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
Handle plug-load credits
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
- G3.1 (12) Proposed: Receptacle and *process loads*, such as those for office and other equipment, shall be estimated based on the building area type or space type category and shall be assumed to be identical in the *proposed design* and *baseline building design*, except as specifically approved by the *rating authority* only when quantifying performance that exceeds the requirements of Standard 90.1 but not when the *Performance Rating Method* is used as an alternative path for minimum standard compliance in accordance with Section 4.2.1.1
|
5
|
+
- G3.1 (12) Proposed: When receptacle controls installed in *spaces* where not required by Section 8.4.2 are included in the *proposed building design*, the hourly receptacle shall be reduced as follows:
|
6
|
+
|
7
|
+
![RPC= RC * 10%](https://latex.codecogs.com/svg.latex?RPC=&space;RC&space;*&space;10%)
|
8
|
+
|
9
|
+
where:
|
10
|
+
- *RPC* = receptacle power credit
|
11
|
+
- *EPS<sub>pro</sub>* = EPS<sub>bas</sub> x (1-RPC)
|
12
|
+
- *RC* = percentage of all controlled receptacles
|
13
|
+
- *EPS<sub>bas</sub>* = baseline equipment power hourly schedule (fraction)
|
14
|
+
- *EPS<sub>pro</sub>* = proposed equipment power hourly schedule (fraction)
|
15
|
+
- G3.1 (12) Baseline: Motors shall be modeled as having the *efficiency* ratings found in Table G3.9.1 Other systems covered by Section 10 and miscellaneous loads shall be modeled as identical to those in the *proposed design*, including schedules of operation and *control of the equipment*.
|
16
|
+
|
17
|
+
# Code Requirement Interpretation
|
18
|
+
For each space in the proposed building indicate which receptacle control strategies from the control list are included and the percentage of receptacles that are controlled.
|
19
|
+
|
20
|
+
When receptacle controls are installed in spaces not required by 90.1-2019 Section 8.4.2, credit for receptacle controls in the proposed design can be taken by decreasing the receptacle schedule in the proposed building design according to the following:
|
21
|
+
|
22
|
+
![RPC= RC * 10%](https://latex.codecogs.com/svg.latex?RPC=&space;RC&space;*&space;10%)
|
23
|
+
|
24
|
+
# Implementation Methodology
|
25
|
+
- **Step 1:** Check the required room types in Section 8.4.2, if matched, then skip the plug-load credits.
|
26
|
+
The matching rule is based on closest space functions as described in Section 8.4.2. The Table below shows the mapping. It subjects to changes.
|
27
|
+
|
28
|
+
| Rooms | Space type category 1 | Space type category 2 |
|
29
|
+
|-----------------------------------------------------------|----------------------------------------|------------------------------------------------|
|
30
|
+
| Private Offices | office - enclosed <= 250 sf | |
|
31
|
+
| Conference Rooms | conference/meeting/multipurpose | |
|
32
|
+
| Room used primarily for printing and/or copying functions | copy/print | |
|
33
|
+
| Break rooms | lounge/breakroom - all other | lounge/breakroom - healthcare facility |
|
34
|
+
| Classrooms | classroom/lecture/training - all other | classroom/lecture/training - preschool to 12th |
|
35
|
+
| Individual workstation | office - open | |
|
36
|
+
|
37
|
+
- **Step 2:** Check *userdata_electric_equipment* to verify user data
|
38
|
+
- **Step 2.1:** Check *userdata_electric_equipment* to identify if the the electric equipment is a motor / refrigeration / elevator.
|
39
|
+
- **Step 2.1.1:** If motor, retrieve data and save in the electric equipment object.
|
40
|
+
- **Step 2.1.2:** If refrigeration or elevator, skip the processing.
|
41
|
+
- **Step 2.2:** Else if *fraction_of_controlled_receptacle* (RC) data is available. If yes, get the user data (RC) and calculate the RPC
|
42
|
+
- **Step 2.3:** Else: check *receptacle_power_savings* (RPC) data is available. If yes, get the user data (RPC) and apply the credit.
|
43
|
+
- **Step 3:** If apply credit, apply the credit at every hour of the existing electric equipment schedule with the equation:
|
44
|
+
- ![hr_{new} = {hr_{ex}}/{1.0-RPC}](https://latex.codecogs.com/svg.image?hr_{new}&space;=&space;{hr_{ex}}&space;/&space;(1.0-RPC))
|
45
|
+
- hr<sub>new</sub>: the adjusted hourly value
|
46
|
+
- hr<sub>ex</sub>: the original hourly value
|
47
|
+
- **Step 4:** Repeat the similar process for *userdata_gas_equipment* user data.
|
48
|
+
|
49
|
+
## Key Ruby Methods
|
50
|
+
The above logic is implemented in the `space_type_apply_internal_loads` in the ashrae_90_1_prm.SpaceType class.
|
51
|
+
Sub-logics are implemented in the `update_power_equipment_credits` function, which is called by `space_type_apply_internal_loads`
|
52
|
+
|
53
|
+
## Test Case Documentation
|
54
|
+
### Test case 1:
|
55
|
+
- Prototype: Small Office
|
56
|
+
- User data folder: */userdata_pe_01*
|
57
|
+
- Summary:
|
58
|
+
This case will test whether *fraction_of_controlled_receptacles* is read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
|
59
|
+
Expected output: the baseline schedule is 5% higher than proposed schedule for the electric equipment: *Office WholeBuilding - Sm Office Elec Equip*.
|
60
|
+
|
61
|
+
### Test case 2:
|
62
|
+
- Prototype: Small Office
|
63
|
+
- User data folder: */userdata_pe_02*
|
64
|
+
- Summary:
|
65
|
+
This case will test whether *receptacle_power_savings* is read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
|
66
|
+
Expected output: the baseline schedule is 15% higher than proposed schedule for the electric equipment: *Office WholeBuilding - Sm Office Elec Equip*.
|
67
|
+
|
68
|
+
### Test case 3
|
69
|
+
- Prototype: Small Office
|
70
|
+
- User data folder: */userdata_pe_03*
|
71
|
+
- Summary:
|
72
|
+
This case will test whether *motor_horsepower*, *motor_efficiency* and *motor_is_exempt* are read correctly for an electric equipment (*Office WholeBuilding - Sm Office Elec Equip*).
|
73
|
+
Expected output: the electric equipment in the baseline shall have three additional properties *motor_horsepower = 10.0*, *motor_efficiency = 0.72* and *motor_is_exempt = No*
|
74
|
+
|
75
|
+
|
76
|
+
### Test case 4
|
77
|
+
- Prototype: Small Office
|
78
|
+
- User data folder: */userdata_pe_04*
|
79
|
+
- Summary:
|
80
|
+
This case added space and space type to the user data. For equipment **Office WholeBuilding - Sm Office Elec Equip 4**, the receptacle credit was set to 0.05 however, it is then adjusted to 0.025 because one of the space type (conference/meeting/multipurpose) is on the exception list.
|
@@ -0,0 +1,73 @@
|
|
1
|
+
Set lighting power density for each space by standard space category.
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
- G3.1 (6) Baseline: Interior lighting power in the baseline building design shall be determined using the values in Table G3.7
|
5
|
+
- G3.1 (6) Baseline: Lighting shall be modeled by having the automatic shutoff controls in buildings > 5000 ft2 (2500 m2) and occupancy sensors in employee lunch break rooms, conference/meeting rooms, and classrooms (not including shop classrooms, laboratory classrooms, and preschool through 12th-grade classrooms). These controls shall be reflected in the baseline building design lighting schedules. No additional automatic lighting controls, e.g., automatic controls for daylight utilization and occupancy sensors in space types not listed above, shall be modeled in the baseline building design.
|
6
|
+
|
7
|
+
# Code Requirement Interpretation
|
8
|
+
The requirement aim to determine the interior lighting power density according to the Table G3.7.
|
9
|
+
For spaces mixed multiple space types, weighted LPD is calculated and the occupancy sensor reduction is weighted by the lighting power density of the space.
|
10
|
+
|
11
|
+
# Implementation Methodology
|
12
|
+
The method of assigning interior lighting power density for a single-type space is straightforward. However, when the space is a mixed-type, the lighting power density and occupancy sensor reduction are calculated in the example below.
|
13
|
+
|
14
|
+
Example:
|
15
|
+
|
16
|
+
| Space | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 |
|
17
|
+
|---------------------|-------------------|---------------------------|---------------------|-----------------------|---------------------|
|
18
|
+
| Perimeter_ZN_2 | 2 | retail - whole building | 0.8 | retail dressing room | 0.2 |
|
19
|
+
|
20
|
+
Where:
|
21
|
+
|
22
|
+
| Space Type | lighting per area (W/ft2) | occupancy sensor reduction |
|
23
|
+
|---------------------------|---------------------------|----------------------------|
|
24
|
+
| retail - whole building | 1.5 | 0.1 |
|
25
|
+
| retail dressing room | 0.89 | 0.1 |
|
26
|
+
|
27
|
+
The lighting power density of Perimeter_ZN_2 shall be determined as:
|
28
|
+
|
29
|
+
**Weighted LPD** = 1.5 W/ft2 * 0.8 + 0.89 W/ft2 * 0.2 = 1.2 W/ft2 + 0.178 W/ft2 = 1.378 W/ft2
|
30
|
+
|
31
|
+
**Weighted occupancy sensor reduction** = (0.1 * 1.2 W/ft2 + 0.1 * 0.178 W/ft2) / 1.378 W/ft2 = 0.1
|
32
|
+
|
33
|
+
## Key Ruby Methods
|
34
|
+
The function `space_type_apply_internal_loads` is used to calculate the LPDs and occupancy sensor reduction for each `Space` or `Space Type`. The logic is implemented by overriding this method in the `ashrae_90_1_prm_2019.SpaceType` class.
|
35
|
+
|
36
|
+
## Test Case Documentation
|
37
|
+
|
38
|
+
### Test case 1:
|
39
|
+
- Prototype: Small Office
|
40
|
+
- User data folder: */userdata_lpd_01*
|
41
|
+
- Summary:
|
42
|
+
|
43
|
+
| Space | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 | std_ltg_type03 | std_ltg_type_frac03 | Target_LPD (W/m2) |
|
44
|
+
|------------------|-------------------|--------------------------|---------------------|-------------------------|---------------------|----------------------|---------------------|-------------------|
|
45
|
+
| `Perimeter_ZN_2` | 2 | retail - whole building | 0.8 | retail dressing room | 0.2 | | | 14.83267494 |
|
46
|
+
| `Perimeter_ZN_1` | 3 | retail mall concourse | 0.2 | retail - whole building | 0.6 | retail dressing room | 0.2 | 15.26323154 |
|
47
|
+
| `Perimeter_ZN_4` | 1 | kitchen | 1.0 | | | | | 12.91669806 |
|
48
|
+
| `Perimeter_ZN_3` | 1 | office | 1.0 | | | | | 10.7639 |
|
49
|
+
| `Perimeter_ZN_5` | 1 | office | 1.0 | | | | | 10.7639 |
|
50
|
+
| `Attic` | 2 | warehouse - bulk storage | 0.5 | workshop | 0.5 | | | 15.06948107 |
|
51
|
+
|
52
|
+
|
53
|
+
### Test case 2:
|
54
|
+
- Prototype: Small Office
|
55
|
+
- User data folder: */userdata_lpd_02*
|
56
|
+
- Summary:
|
57
|
+
|
58
|
+
| Space Type | num_std_ltg_types | std_ltg_type01 | std_ltg_type_frac01 | std_ltg_type02 | std_ltg_type_frac02 | Target_LPD (W/m2) |
|
59
|
+
|------------------------------------|-------------------|-------------------------|---------------------|----------------|---------------------|-------------------|
|
60
|
+
| `Office WholeBuilding - Sm Office` | 2 | atrium <= 40 ft height | 0.5 | workshop | 0.5 | 12.2452724 |
|
61
|
+
|
62
|
+
The `Office WholeBuilding - Sm Office` is the space type used by `Perimeter_ZN_1` through `Perimeter_ZN_5`.
|
63
|
+
|
64
|
+
- Note: In this test case, we also expect `Attic` to have `0 W/m2` LPD.
|
65
|
+
|
66
|
+
|
67
|
+
### Test case 2:
|
68
|
+
- Prototype: Small Office
|
69
|
+
- User data folder: *N/A*
|
70
|
+
- Summary:
|
71
|
+
|
72
|
+
`Office` is used as the standard space type for all spaces except `Attic`. Therefore, in this test case, we are expecting LPD to be 10.7639 for spaces `Perimeter_ZN_1` through `Perimeter_ZN_5` except `Attic`.
|
73
|
+
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/unenclosed_and_unconditioned_spaces.md
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
Unenclosed and Unconditioned Spaces
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019 PRM Reference Manual
|
4
|
+
Space types such as ventilated parking garage, attics, and crawlspaces are defined by Standard 90.1-2019 as unenclosed spaces, and for the purposes of envelope requirements, envelope components adjacent to them are treated as exterior surfaces.
|
5
|
+
|
6
|
+
# Implementation
|
7
|
+
# Key Ruby Methods
|
8
|
+
## Existing
|
9
|
+
* `model_apply_standard_constructions`: this method applies the standard construction to each surface in the model, based on the construction type currently assigned; code was added to handle surfaces adjacent to another space: if the space is conditioned, then the surface should be handled just like an exterior surface and be assigned the baseline constructions
|
10
|
+
## New
|
11
|
+
* `model_apply_constructions`: generic method used to call the PRM and non-PRM specific `model_apply_standard_constructions()` method
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Unmet Load Hours (UMLH)
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
Unmet load hours for the proposed design or baseline building design shall not exceed 300 (of the 8760 hours simulated). Alternatively, unmet load hours exceeding these limits shall be permitted to be accepted upon approval of the rating authority, provided that sufficient justification is given indicating that the accuracy of the simulation is not significantly compromised by these unmet loads.
|
5
|
+
|
6
|
+
# ASHRAE 90.1-2019 PRM Reference Manual
|
7
|
+
If the automatic oversizing percentage is not sufficient to meet demands, then UMLH are evaluated at the building level by looking at the UMLH for each thermal zone being modeled. The first step would be to determine if the UMLH are high (>300) for the proposed building design as well as the baseline building. If that is the case, the issue is usually related to fan operation, HVAC availability, and occupancy schedules where the HVAC system has an incorrectly specified schedule that makes it unavailable during occupied hours. Optimal start controls, if a part of the building design, can also help eliminate UMLH during startup times. Since the same schedules are used for the baseline design, UMLH are seen in the baseline building as well. Other user inputs that could cause UMLH include incorrectly specified zone minimum airflows, which could result in unmet heating load hours. In this case, the software should notify the user and ask the user to verify schedules of operation. If a space is being conditioned via transfer air, it might be that the temperature of the transfer air is not sufficient to meet space conditioning requirements.
|
8
|
+
* If this is not the case and UMLH are seen only with the baseline design, the user or software tool is required to incrementally increase system airflows and equipment capacities, following the steps outlined below.
|
9
|
+
* In the case where UMLH for cooling are a bigger problem, the equipment in the baseline building model is resized by first increasing the design airflow of all zones with significant UMLH (greater than 150 for an individual zone) by 10%, increasing the design airflow of all zones with some UMLH (between 50 and 150) by 5%. Then, the equipment capacity for the system(s) serving the affected zones is increased to handle the increased zone loads. For the central plant, the chiller(s) and towers are resized proportionally to handle the increased system loads.
|
10
|
+
* In the case where UMLH for heating are a bigger problem, the same procedure is followed, with zone airflows resized first, then heating secondary equipment capacity and then boiler capacity as necessary. The capacity of the boiler or furnace shall be increased in proportion to capacities of coils required to meet the increased airflows at the baseline supply air. For heat pumps, the capacity of the coil is increased so that the additional load is not met by auxiliary heat.
|
11
|
+
|
12
|
+
# Implementation
|
13
|
+
The user model unmet load hours are checked as the first step of the baseline generation process. If the number is greater than 300, an error is published and the process is stopped. This requires the user to address the UMLH in the user/proposed model prior to generating the baseline model(s) which can be take some time.
|
14
|
+
|
15
|
+
At the end of the process, each baseline model's UMLH are checked. if the number is greater than 300, the process go through each zone and adjust the zone sizing factor by either increasing it by 5% or 10% for zones having respectively UMLH between 50 and 150 and greater than 150. Then, the model is re-ran and the check/adjustments are performed again until the number of UMLH is below 300.
|
16
|
+
|
17
|
+
# Key Ruby Methods
|
18
|
+
## New
|
19
|
+
* `model_get_unmet_load_hours`: get the total unmet load hours during occupancy of a model that has been simulated
|
20
|
+
* `thermal_zone_get_unmet_load_hours`: determine the number of unmet load hours during occupancy for a thermal zone
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Fan power and control for systems 6 and 8
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
G3.1.3.14
|
5
|
+
Fans in parallel VAV fan-powered boxes shall run as the first stage of heating before the reheat coil is energized. Fans in parallel VAV fan-powered boxes shall be sized for 50% of the peak design primary air (from the VAV air-handling unit) flow rate and shall be modeled with 0.35 W/cfm fan power. Minimum volume set points for fan-powered boxes shall be equal to 30% of peak design primary airflow rate or the rate required to meet the minimum outdoor air ventilation requirement, whichever is larger. The supply air temperature set point shall be constant at the design condition.
|
6
|
+
# PRM-RM
|
7
|
+
* Fan Control: With parallel style fan-powered VAV boxes, the constant volume terminal unit fan is only on when the primary airflow is at design minimum and the zone temperature is less than 2°F above the heating setpoint schedule. When the system is scheduled to operate and the zone terminal fan is running, the box mixes plenum air with primary air.
|
8
|
+
* Heating Operation: During heating mode, the terminal unit discharge air temperature is increased from minimum to the design heating temperature. Throughout occupied heating the cooling, primary airflow is kept at design minimum and the terminal unit fan is running.
|
9
|
+
* Deadband Operation: The cooling primary airflow is kept at minimum airflow and the heating valve is closed. The terminal unit fan will energize as the first stage of heating when the zone temperature drops to 2F. above heating setpoint.
|
10
|
+
* Cooling Operation: As the space temperature increases, the cooling supply airflow is increased from minimum to design cooling maximum. Throughout cooling the box fan is off. To comply with Standard 90.1-2019 Section 6.5.2.1, Exception (1), the minimum primary airflow for this control logic must be no larger than 30% of the zone design cooling airflow or the minimum airflow for ventilation.
|
11
|
+
* Night Cycle Heating Control: A call for heating during night cycle control shall be met by running the terminal fan and increasing the terminal unit discharge air temperature from minimum to the design heating temperature without the use of primary air.
|
12
|
+
# Code Requirement Intepretation
|
13
|
+
The PRM-RM provides a good interpretation of the code requirement. It does miss to describe night cycle cooling operation. We believe that during these periods, the terminal fan should be off and that the central system fan should turn on to allows the central system to meet the load (as the terminals don't have any cooling coils).
|
14
|
+
# Implementation
|
15
|
+
Night cycle operation: will be implemented in `air_loop_hvac_enable_unoccupied_fan_shutoff` and the `CycleOnAnyCoolingOrHeatingZone` control type will be used to achieve the desired strategy. Note that we've identified a temporary issue with that control type in OpenStudio (see [here](https://github.com/NREL/OpenStudio/issues/4566)).
|
16
|
+
|
17
|
+
Cooling and heating operation: the terminal fan should be off when the primary airflow fraction is greater than the minimum primary air flow. In EnergyPlus, this is dictated by the "Fan On Flow Fraction". The Fan On Flow Fraction will be set to 0.0 to allow operating of the secondary fan only when reheat is needed and when the primary air flow is at the minimum.
|
18
|
+
# Key Ruby Methods
|
19
|
+
## Exisiting
|
20
|
+
* `air_loop_hvac_enable_unoccupied_fan_shutoff`: Shut off the system during unoccupied periods and handle night cycling operation.
|
21
|
+
## New
|
22
|
+
* `air_loop_hvac_has_parallel_piu_air_terminals?`: Determine if the air loop serves parallel PIU air terminals.
|
23
|
+
* `air_terminal_single_duct_parallel_piu_reheat_fan_on_flow_fraction`: Return the fan on flow fraction for a parallel PIU terminal
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/docs/vav_terminals_min_flow_setpoint.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Minimum flow set points for VAV and fan powered terminals
|
2
|
+
|
3
|
+
# ASHRAE 90.1-2019
|
4
|
+
G3.1.3.13
|
5
|
+
Minimum volume set points for VAV reheat boxes shall be 30% of zone peak airflow, the minimum outdoor airflow rate, or the airflow rate required to comply with applicable codes or accreditation standards, whichever is larger.
|
6
|
+
|
7
|
+
G3.1.3.14
|
8
|
+
Minimum volume set points for fan-powered boxes shall be equal to 30% of peak design primary airflow rate or the rate required to meet the minimum outdoor air ventilation requirement, whichever is larger.
|
9
|
+
# Code Requirement Interpretation
|
10
|
+
These requirements aim to determine the minimum damper position of standard VAV and parallel PIU air terminals. The position is based on either the minimum outdoor air requirement or 30% of the peak zone/primary airflow.
|
11
|
+
# Implementation
|
12
|
+
For each terminal, the zone outdoor airflow is calculated and the minimum damper position is determined by taking the largest of the 0.3 or the zone outdoor airflow divided by the maximum terminal airflow (or primary airflow for parallel PIU terminals). The determination is initiated in `air_loop_hvac_apply_minimum_vav_damper_positions` and the calculation and assignment is done in `air_terminal_single_duct_vav_reheat_apply_minimum_damper_position` and `air_terminal_single_duct_parallel_piu_reheat_apply_minimum_primary_airflow_fraction`.
|
13
|
+
# Key Ruby Methods
|
14
|
+
## Existing
|
15
|
+
* `air_loop_hvac_apply_minimum_vav_damper_positions`: Set the minimum VAV damper positions.
|
16
|
+
* `air_terminal_single_duct_vav_reheat_apply_minimum_damper_position`: Set the minimum damper position based on OA rate of the space and the template.
|
17
|
+
* `air_terminal_single_duct_vav_reheat_minimum_damper_position`: Specifies the minimum damper position for VAV dampers.
|
18
|
+
* `air_terminal_single_duct_parallel_piu_reheat_apply_prm_baseline_fan_power`: Sets the fan power of a PIU fan based on the W/cfm specified in the standard.
|
19
|
+
## New
|
20
|
+
* `air_terminal_single_duct_parallel_reheat_piu_minimum_primary_airflow_fraction`: Specifies the minimum primary air flow fraction for PFB boxes.
|
21
|
+
* `air_terminal_single_duct_parallel_piu_reheat_apply_minimum_primary_airflow_fraction`: Set the minimum primary air flow fraction based on OA rate of the space and the template.
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct,economizer_exception_for_gas_phase_air_cleaning,economizer_exception_for_open_refrigerated_cases,exhaust_energy_recovery_exception_for_toxic_fumes_etc,exhaust_energy_recovery_exception_for_type1_kitchen_hoods,exhaust_energy_recovery_exception_for_type_distributed_exhaust,exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery,dcv_exception_airloop
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_airloop_hvac_doas.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct
|
@@ -0,0 +1 @@
|
|
1
|
+
name,building_type_for_hvac,building_type_for_swh,building_type_for_wwr,is_exempt_from_rotations
|
@@ -0,0 +1 @@
|
|
1
|
+
name,outdoor_airflow_per_person,outdoor_airflow_per_floor_area,outdoor_air_flowrate,outdoor_air_flow_air_changes_per_hour
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_electric_equipment.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,fraction_of_controlled_receptacles,receptacle_power_savings,motor_horsepower,motor_efficiency,motor_is_exempt,elevator_weight_of_car,elevator_rated_load,elevator_counter_weight_of_car,elevator_speed_of_car,elevator_number_of_stories,elevator_number_of_lifts,elevator_area_ft2,elevator_ventilation_cfm,refrigeration_equipment_class,refrigeration_equipment_volume,refrigeration_equipment_total_display_area,,
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_exterior_lights.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,num_ext_lights_subcats,end_use_subcategory_01,end_use_measurement_value_01,end_use_subcategory_02,end_use_measurement_value_02,end_use_subcategory_03,end_use_measurement_value_03,end_use_subcategory_04,end_use_measurement_value_04,end_use_subcategory_05,end_use_measurement_value_05,end_use_subcategory_06,end_use_measurement_value_06,end_use_subcategory_07,end_use_measurement_value_07,end_use_subcategory_08,end_use_measurement_value_08,end_use_subcategory_09
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_gas_equipment.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,fraction_of_controlled_receptacles,receptacle_power_savings
|
@@ -0,0 +1 @@
|
|
1
|
+
name,has_retail_display_exception,has_unregulated_exception,unregulated_category
|
@@ -0,0 +1 @@
|
|
1
|
+
name,building_type_for_wwr,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20
|
@@ -0,0 +1 @@
|
|
1
|
+
name,num_std_ltg_types,std_ltg_type01,std_ltg_type_frac01,std_ltg_type02,std_ltg_type_frac02,std_ltg_type03,std_ltg_type_frac03,std_ltg_type04,std_ltg_type_frac04,std_ltg_type05,std_ltg_type_frac05,std_ltg_type06,std_ltg_type_frac06,std_ltg_type07,std_ltg_type_frac07,std_ltg_type08,std_ltg_type_frac08,std_ltg_type09,std_ltg_type_frac09,std_ltg_type10,std_ltg_type_frac10,std_ltg_type11,std_ltg_type_frac11,std_ltg_type12,std_ltg_type_frac12,std_ltg_type13,std_ltg_type_frac13,std_ltg_type14,std_ltg_type_frac14,std_ltg_type15,std_ltg_type_frac15,std_ltg_type16,std_ltg_type_frac16,std_ltg_type17,std_ltg_type_frac17,std_ltg_type18,std_ltg_type_frac18,std_ltg_type19,std_ltg_type_frac19,std_ltg_type20,std_ltg_type_frac20
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_thermal_zone.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,building_type_for_hvac,number_of_systems, dcv_exception_thermal_zone,has_health_safety_night_cycle_exception
|
@@ -0,0 +1 @@
|
|
1
|
+
name,hot_water_supply_temperature_schedule,cold_water_supply_temperature_schedule
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_wateruse_equipment.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,bulding_type_swh
|
@@ -0,0 +1 @@
|
|
1
|
+
name,peak_flow_rate,flow_rate_fraction_schedule,target_temperature_schedule
|
@@ -0,0 +1 @@
|
|
1
|
+
name,zone_hvac_object_type_name,has_fan_power_credit_fully_ducted,has_fan_power_credit_return_or_exhaust_flow_control,fan_power_credit_exhaust_treatment,has_fan_power_credit_filtration_m9to12,has_fan_power_credit_filtration_m13to15,clean_filter_pressure_drop_for_fan_power_credit_filtration_m16plus,fan_power_credit_gas_phase_cleaners,fan_power_credit_biosafety,fan_power_credit_other_than_coil_runaround,has_fan_power_credit_coil_runaround,fan_power_credit_evaporative_humidifier_or_cooler,has_fan_power_credit_sound_attenuation,has_fan_power_credit_exhaust_serving_fume_hoods,has_fan_power_credit_lab_or_vivarium_highrise_vertical_duct,exhaust_energy_recovery_exception_for_toxic_fumes_etc,exhaust_energy_recovery_exception_for_type1_kitchen_hoods,exhaust_energy_recovery_exception_for_type_distributed_exhaust,exhaust_energy_recovery_exception_for_dehumidifcation_with_series_cooling_recovery
|
data/lib/openstudio-standards/standards/ashrae_90_1_prm/userdata_csv/userdata_zone_infiltration.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
name,is_controlled
|
@@ -264,6 +264,18 @@
|
|
264
264
|
"fan_curve": "Multi zone VAV with static pressure reset",
|
265
265
|
"notes": null
|
266
266
|
},
|
267
|
+
{
|
268
|
+
"name": "PSZ_VAV_System_Fan",
|
269
|
+
"type": "VariableVolume",
|
270
|
+
"pressure_rise": 2.5,
|
271
|
+
"fan_efficiency": 0.54,
|
272
|
+
"motor_efficiency": 0.9,
|
273
|
+
"motor_in_airstream_fraction": 1.0,
|
274
|
+
"fan_power_minimum_flow_rate_fraction": 0.25,
|
275
|
+
"fan_power_minimum_flow_rate_input_method": "Fraction",
|
276
|
+
"fan_curve": "Multi zone VAV with static pressure reset",
|
277
|
+
"notes": null
|
278
|
+
},
|
267
279
|
{
|
268
280
|
"name": "VAV_default",
|
269
281
|
"type": "VariableVolume",
|
@@ -264,6 +264,18 @@
|
|
264
264
|
"fan_curve": "Multi zone VAV with static pressure reset",
|
265
265
|
"notes": null
|
266
266
|
},
|
267
|
+
{
|
268
|
+
"name": "PSZ_VAV_System_Fan",
|
269
|
+
"type": "VariableVolume",
|
270
|
+
"pressure_rise": 2.5,
|
271
|
+
"fan_efficiency": 0.54,
|
272
|
+
"motor_efficiency": 0.9,
|
273
|
+
"motor_in_airstream_fraction": 1.0,
|
274
|
+
"fan_power_minimum_flow_rate_fraction": 0.25,
|
275
|
+
"fan_power_minimum_flow_rate_input_method": "Fraction",
|
276
|
+
"fan_curve": "Multi zone VAV with static pressure reset",
|
277
|
+
"notes": null
|
278
|
+
},
|
267
279
|
{
|
268
280
|
"name": "VAV_default",
|
269
281
|
"type": "VariableVolume",
|
@@ -816,7 +816,7 @@
|
|
816
816
|
{
|
817
817
|
"name": "NECB2015_ASHP",
|
818
818
|
"minimum_capacity": 238840.0,
|
819
|
-
"maximum_capacity":
|
819
|
+
"maximum_capacity": 9999999999.0,
|
820
820
|
"minimum_heating_seasonal_performance_factor": null,
|
821
821
|
"minimum_coefficient_of_performance_heating": null,
|
822
822
|
"minimum_energy_efficiency_ratio": 9.2,
|
@@ -8,20 +8,20 @@
|
|
8
8
|
{
|
9
9
|
"name": "Carrier WeatherExpert",
|
10
10
|
"minimum_capacity": 0.0,
|
11
|
-
"maximum_capacity":
|
12
|
-
"minimum_energy_efficiency_ratio":
|
13
|
-
"minimum_seasonal_energy_efficiency_ratio":
|
11
|
+
"maximum_capacity": 17418.7,
|
12
|
+
"minimum_energy_efficiency_ratio": 12.9,
|
13
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
14
14
|
"cool_cap_ft": null,
|
15
15
|
"cool_cap_fflow": null,
|
16
16
|
"cool_eir_ft": null,
|
17
17
|
"cool_eir_fflow": null,
|
18
18
|
"cool_plf_fplr": null,
|
19
|
-
"notes": "Carrier WeatherExpert 3-5 Nominal Tons average"
|
19
|
+
"notes": "Carrier WeatherExpert 3-5 Nominal Tons units average EIR (capacities in Watts)"
|
20
20
|
},
|
21
21
|
{
|
22
22
|
"name": "Carrier WeatherExpert",
|
23
|
-
"minimum_capacity":
|
24
|
-
"maximum_capacity":
|
23
|
+
"minimum_capacity": 17418.7,
|
24
|
+
"maximum_capacity": 34601.5,
|
25
25
|
"minimum_energy_efficiency_ratio": 13.1,
|
26
26
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
27
27
|
"cool_cap_ft": null,
|
@@ -29,22 +29,35 @@
|
|
29
29
|
"cool_eir_ft": null,
|
30
30
|
"cool_eir_fflow": null,
|
31
31
|
"cool_plf_fplr": null,
|
32
|
-
"notes": "Carrier WeatherExpert 6-10 Nominal Tons average"
|
32
|
+
"notes": "Carrier WeatherExpert 6-10 Nominal Tons units average EIR (Capacities in Watts)"
|
33
|
+
},
|
34
|
+
{
|
35
|
+
"name": "Carrier WeatherExpert",
|
36
|
+
"minimum_capacity": 34601.5,
|
37
|
+
"maximum_capacity": 68904.8,
|
38
|
+
"minimum_energy_efficiency_ratio": 12.2,
|
39
|
+
"minimum_seasonal_energy_efficiency_ratio": null,
|
40
|
+
"cool_cap_ft": null,
|
41
|
+
"cool_cap_fflow": null,
|
42
|
+
"cool_eir_ft": null,
|
43
|
+
"cool_eir_fflow": null,
|
44
|
+
"cool_plf_fplr": null,
|
45
|
+
"notes": "Carrier WeatherExpert 12.5-20 Tons units average (Capacities in Watts)"
|
33
46
|
},
|
34
47
|
{
|
35
48
|
"name": "Carrier WeatherExpert",
|
36
|
-
"minimum_capacity":
|
49
|
+
"minimum_capacity": 68904.8,
|
37
50
|
"maximum_capacity": 9999999.0,
|
38
|
-
"minimum_energy_efficiency_ratio":
|
51
|
+
"minimum_energy_efficiency_ratio": 11.1,
|
39
52
|
"minimum_seasonal_energy_efficiency_ratio": null,
|
40
53
|
"cool_cap_ft": null,
|
41
54
|
"cool_cap_fflow": null,
|
42
55
|
"cool_eir_ft": null,
|
43
56
|
"cool_eir_fflow": null,
|
44
57
|
"cool_plf_fplr": null,
|
45
|
-
"notes": "Carrier WeatherExpert
|
58
|
+
"notes": "Carrier WeatherExpert 23 Ton unit (Capacities in Watts)"
|
46
59
|
}
|
47
60
|
]
|
48
61
|
}
|
49
62
|
}
|
50
|
-
}
|
63
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class ECMS
|
2
|
-
# This method will
|
3
|
-
|
2
|
+
# This method will set the properties of the ERV. Must be run after the standard efficiency is complete as this will overwrite
|
3
|
+
# those values. See data/erv.json to view/add different erv packages available.
|
4
|
+
def apply_erv_ecm_efficiency(model:, erv_package: nil)
|
4
5
|
# If erv is nil.. do nothing.
|
5
6
|
return if erv_package.nil? || erv_package == 'none' || erv_package == 'NECB_Default'
|
6
7
|
|
@@ -13,20 +14,17 @@ class ECMS
|
|
13
14
|
raise("ERV package name #{erv_package} does not exist. must be #{valid} /n Stopping.")
|
14
15
|
end
|
15
16
|
|
16
|
-
#
|
17
|
-
model.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def apply_erv_ecm_efficiency(model:, erv_package: nil)
|
26
|
-
# If erv is nil.. do nothing.
|
27
|
-
return if erv_package.nil? || erv_package == 'none' || erv_package == 'NECB_Default'
|
17
|
+
# add ervs if required
|
18
|
+
model.getAirLoopHVACs.sort.each do |air_loop|
|
19
|
+
if air_loop.airLoopHVACOutdoorAirSystem.is_initialized
|
20
|
+
erv = air_loop.airLoopHVACOutdoorAirSystem.get.components.select{|comp| comp.to_HeatExchangerAirToAirSensibleAndLatent.is_initialized}
|
21
|
+
if (erv.empty? && (erv_info['application'] == 'Add_ERVs_To_All_Airloops'))
|
22
|
+
air_loop_hvac_apply_energy_recovery_ventilator(air_loop, nil)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
28
26
|
|
29
|
-
#
|
27
|
+
# Apply ecm effectiveness values
|
30
28
|
model.getHeatExchangerAirToAirSensibleAndLatents.each { |erv| heat_exchanger_air_to_air_sensible_and_latent_apply_effectiveness(erv, erv_package) }
|
31
29
|
end
|
32
30
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"province_map": {
|
3
|
+
"QC": "Quebec",
|
4
|
+
"NL": "Newfoundland and Labrador",
|
5
|
+
"NS": "Nova Scotia",
|
6
|
+
"PE": "Prince Edward Island",
|
7
|
+
"ON": "Ontario",
|
8
|
+
"MB": "Manitoba",
|
9
|
+
"SK": "Saskatchewan",
|
10
|
+
"AB": "Alberta",
|
11
|
+
"BC": "British Columbia",
|
12
|
+
"YT": "Yukon",
|
13
|
+
"NT": "Northwest Territories",
|
14
|
+
"NB": "New Brunswick",
|
15
|
+
"NU": "Nunavut"
|
16
|
+
}
|
17
|
+
}
|
@@ -67,12 +67,12 @@ class NECB2011
|
|
67
67
|
return true
|
68
68
|
else
|
69
69
|
zones.each do |zone|
|
70
|
-
air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
|
71
70
|
add_sys3_and_8_zone_equip(air_loop,
|
72
71
|
baseboard_type,
|
73
72
|
hw_loop,
|
74
73
|
model,
|
75
74
|
zone)
|
75
|
+
air_loop = add_system_3_and_8_airloop_multi_speed(heating_coil_type, model, system_data, zone)
|
76
76
|
end
|
77
77
|
return true
|
78
78
|
end
|
@@ -204,8 +204,8 @@ class NECB2011
|
|
204
204
|
hw_loop, model,
|
205
205
|
zone)
|
206
206
|
always_on = model.alwaysOnDiscreteSchedule
|
207
|
+
add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
|
207
208
|
diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
|
208
209
|
air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
|
209
|
-
add_zone_baseboards(baseboard_type: baseboard_type, hw_loop: hw_loop, model: model, zone: zone)
|
210
210
|
end
|
211
211
|
end
|
@@ -143,12 +143,12 @@ class NECB2011
|
|
143
143
|
sizing_zone.setZoneHeatingSizingFactor(system_data[:ZoneHeatingSizingFactor])
|
144
144
|
# Create a diffuser and attach the zone/diffuser pair to the air loop
|
145
145
|
# diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model,always_on)
|
146
|
-
diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
|
147
|
-
air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
|
148
146
|
add_zone_baseboards(baseboard_type: baseboard_type,
|
149
147
|
hw_loop: hw_loop,
|
150
148
|
model: model,
|
151
149
|
zone: zone)
|
150
|
+
diffuser = OpenStudio::Model::AirTerminalSingleDuctUncontrolled.new(model, always_on)
|
151
|
+
air_loop.addBranchForZone(zone, diffuser.to_StraightComponent)
|
152
152
|
# zone loop
|
153
153
|
end
|
154
154
|
sys_name_pars = {}
|
@@ -126,6 +126,12 @@ class NECB2011
|
|
126
126
|
reheat_coil = OpenStudio::Model::CoilHeatingElectric.new(model, always_on)
|
127
127
|
end
|
128
128
|
|
129
|
+
# Set zone baseboards
|
130
|
+
add_zone_baseboards(model: model,
|
131
|
+
zone: zone,
|
132
|
+
baseboard_type: baseboard_type,
|
133
|
+
hw_loop: hw_loop)
|
134
|
+
|
129
135
|
vav_terminal = OpenStudio::Model::AirTerminalSingleDuctVAVReheat.new(model, always_on, reheat_coil)
|
130
136
|
air_loop.addBranchForZone(zone, vav_terminal.to_StraightComponent)
|
131
137
|
# NECB2011 minimum zone airflow setting
|
@@ -133,11 +139,6 @@ class NECB2011
|
|
133
139
|
vav_terminal.setMaximumReheatAirTemperature(system_data[:ZoneVAVMaxReheatTemp])
|
134
140
|
vav_terminal.setDamperHeatingAction(system_data[:ZoneVAVDamperAction])
|
135
141
|
|
136
|
-
# Set zone baseboards
|
137
|
-
add_zone_baseboards(model: model,
|
138
|
-
zone: zone,
|
139
|
-
baseboard_type: baseboard_type,
|
140
|
-
hw_loop: hw_loop)
|
141
142
|
end
|
142
143
|
sys_name_pars = {}
|
143
144
|
sys_name_pars['sys_hr'] = 'none'
|