Module: Laboratory
- Defined in:
- lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb
Overview
Custom changes for the Laboratory prototype. These are changes that are inconsistent with other prototype building types.
Instance Method Summary collapse
-
#model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
geometry adjustments specific to the prototype model.
-
#model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
hvac adjustments specific to the prototype model.
-
#model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
swh adjustments specific to the prototype model.
-
#model_modify_oa_controller(model) ⇒ Boolean
lab zones don’t have economizer, the air flow rate is determined by the ventilation requirement.
Instance Method Details
#model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
geometry adjustments specific to the prototype model
92 93 94 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb', line 92 def model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) return true end |
#model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
hvac adjustments specific to the prototype model
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb', line 11 def model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input) OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Started building type specific adjustments') # get the fume hood space type and exhaust ACH fume_hood_exhaust_ach = nil model.getSpaceTypes.each do |spc_type| next unless spc_type.name.get.to_s.downcase.include? 'fume hood' spc_type_properties = space_type_get_standards_data(spc_type) fume_hood_exhaust_ach = spc_type_properties['ventilation_air_changes'].to_f end # For fume hood, the OA rate varies with the fume hood schedule # So add "Proportional Control Minimum Outdoor Air Flow Rate Schedule" # at the mean time, modify "Outdoor Air Method" to "ProportionalControlBasedOnDesignOARate" in Controller:MechanicalVentilation of the DOAS model.getSpaces.each do |space| next unless space.name.get.to_s.include? 'fumehood' ventilation = space.designSpecificationOutdoorAir.get ventilation.setOutdoorAirFlowRateFractionSchedule(model_add_schedule(model, 'Lab_FumeHood_Sch')) # add exhaust fan to fume hood zone fume_hood_zone_volume = space.volume flow_rate_fume_hood = fume_hood_zone_volume * fume_hood_exhaust_ach / 3600.0 model_add_exhaust_fan(model, [space.thermalZone.get], flow_rate: flow_rate_fume_hood, flow_fraction_schedule_name: 'Lab_FumeHood_Sch') end # adjust doas sizing model.getAirLoopHVACs.each do |air_loop| if air_loop.name.to_s.include? 'OA' # system sizing sizing_system = air_loop.sizingSystem sizing_system.setTypeofLoadtoSizeOn('Sensible') end end # control lab air terminals for outdoor air model.getAirTerminalSingleDuctVAVReheats.sort.each do |air_terminal| air_terminal_name = air_terminal.name.get if air_terminal_name.include?('Lab') air_terminal.setControlForOutdoorAir(true) end end OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments') return true end |
#model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
swh adjustments specific to the prototype model
81 82 83 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb', line 81 def model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) return true end |
#model_modify_oa_controller(model) ⇒ Boolean
lab zones don’t have economizer, the air flow rate is determined by the ventilation requirement
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.Laboratory.rb', line 63 def model_modify_oa_controller(model) model.getAirLoopHVACs.sort.each do |air_loop| oa_sys = air_loop.airLoopHVACOutdoorAirSystem.get oa_control = oa_sys.getControllerOutdoorAir if air_loop.name.get.include?('DOAS') oa_control.setEconomizerControlType('NoEconomizer') end end return true end |