Module: SuperMarket

Defined in:
lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb

Overview

Custom changes for the SuperMarket prototype. These are changes that are inconsistent with other prototype building types.

Instance Method Summary collapse

Instance Method Details

#add_extra_equip_kitchen(model) ⇒ Boolean

define additional kitchen loads based on AEDG baseline model

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

Returns:

  • (Boolean)

    returns true if successful, false if not



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 29

def add_extra_equip_kitchen(model)
  space_names = ['Deli', 'Bakery']
  space_names.each do |space_name|
    space = model.getSpaceByName(space_name).get
    kitchen_definition = OpenStudio::Model::ElectricEquipmentDefinition.new(model)
    kitchen_definition.setName('kitchen load')
    kitchen_definition.setDesignLevel(11674.5)
    kitchen_definition.setFractionLatent(0.25)
    kitchen_definition.setFractionRadiant(0.3)
    kitchen_definition.setFractionLost(0.2)

    kitchen_equipment = OpenStudio::Model::ElectricEquipment.new(kitchen_definition)
    kitchen_equipment.setName('kitchen equipment')
    kitchen_sch = model_add_schedule(model, 'SuperMarketEle Kit Equip Sch')
    kitchen_equipment.setSchedule(kitchen_sch)
    kitchen_equipment.setSpace(space)
  end
  return true
end

#add_humidistat(model) ⇒ Boolean

add humidistat to all spaces

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

Returns:

  • (Boolean)

    returns true if successful, false if not



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 53

def add_humidistat(model)
  space_names = ['Main Sales', 'Produce', 'West Perimeter Sales', 'East Perimeter Sales', 'Deli', 'Bakery',
                 'Enclosed Office', 'Meeting Room', 'Dining Room', 'Restroom', 'Mechanical Room', 'Corridor', 'Vestibule', 'Active Storage']
  space_names.each do |space_name|
    space = model.getSpaceByName(space_name).get
    zone = space.thermalZone.get
    humidistat = OpenStudio::Model::ZoneControlHumidistat.new(model)
    humidistat.setHumidifyingRelativeHumiditySetpointSchedule(model_add_schedule(model, 'SuperMarket MinRelHumSetSch'))
    humidistat.setDehumidifyingRelativeHumiditySetpointSchedule(model_add_schedule(model, 'SuperMarket MaxRelHumSetSch'))
    zone.setZoneControlHumidistat(humidistat)
  end
  return true
end

#model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean

geometry adjustments specific to the prototype model

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

  • building_type (String the building type)

    uilding_type [String the building type

  • climate_zone (String)

    ASHRAE climate zone, e.g. ‘ASHRAE 169-2013-4A’

  • prototype_input (Hash)

    hash of prototype inputs

Returns:

  • (Boolean)

    returns true if successful, false if not



114
115
116
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 114

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

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

  • building_type (String the building type)

    uilding_type [String the building type

  • climate_zone (String)

    ASHRAE climate zone, e.g. ‘ASHRAE 169-2013-4A’

  • prototype_input (Hash)

    hash of prototype inputs

Returns:

  • (Boolean)

    returns true if successful, false if not



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.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')

  # add humidistat to all spaces
  add_humidistat(model)

  # additional kitchen loads
  add_extra_equip_kitchen(model)

  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

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

  • building_type (String the building type)

    uilding_type [String the building type

  • climate_zone (String)

    ASHRAE climate zone, e.g. ‘ASHRAE 169-2013-4A’

  • prototype_input (Hash)

    hash of prototype inputs

Returns:

  • (Boolean)

    returns true if successful, false if not



101
102
103
104
105
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 101

def model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input)
  update_waterheater_loss_coefficient(model)

  return true
end

#model_update_exhaust_fan_efficiency(model) ⇒ Boolean

update exhuast fan efficiency

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

Returns:

  • (Boolean)

    returns true if successful, false if not



71
72
73
74
75
76
77
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 71

def model_update_exhaust_fan_efficiency(model)
  model.getFanZoneExhausts.sort.each do |exhaust_fan|
    exhaust_fan.setFanEfficiency(0.45)
    exhaust_fan.setPressureRise(125)
  end
  return true
end

#update_waterheater_loss_coefficient(model) ⇒ Boolean

update water heater loss coefficient

Parameters:

  • model (OpenStudio::Model::Model)

    OpenStudio model object

Returns:

  • (Boolean)

    returns true if successful, false if not



83
84
85
86
87
88
89
90
91
92
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SuperMarket.rb', line 83

def update_waterheater_loss_coefficient(model)
  case template
    when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', '90.1-2016', '90.1-2019', 'NECB2011'
      model.getWaterHeaterMixeds.sort.each do |water_heater|
        water_heater.setOffCycleLossCoefficienttoAmbientTemperature(0.798542707)
        water_heater.setOnCycleLossCoefficienttoAmbientTemperature(0.798542707)
      end
  end
  return true
end