# Custom changes for the SuperMarket prototype. # These are changes that are inconsistent with other prototype # building types. module SuperMarket def model_custom_hvac_tweaks(building_type, climate_zone, prototype_input, model) 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) # reset bakery & deli OA reset reset_bakery_deli_oa(model) OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Finished building type specific adjustments') return true end # define additional kitchen loads based on AEDG baseline model 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(11_674.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 end # add humidistat to all spaces 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 end # Update exhuast fan efficiency def model_update_exhaust_fan_efficiency(model) model.getFanZoneExhausts.sort.each do |exhaust_fan| exhaust_fan.setFanEfficiency(0.45) exhaust_fan.setPressureRise(125) end end # reset bakery & deli OA from AEDG baseline model def reset_bakery_deli_oa(model) space_names = ['Deli', 'Bakery'] space_names.each do |space_name| space_kitchen = model.getSpaceByName(space_name).get ventilation = space_kitchen.designSpecificationOutdoorAir.get ventilation.setOutdoorAirFlowperPerson(0) ventilation.setOutdoorAirFlowperFloorArea(0.0015) # case template # when '90.1-2004','90.1-2007','90.1-2010', '90.1-2013' # ventilation.setOutdoorAirFlowRate(4.27112436) # end end end def update_waterheater_loss_coefficient(model) case template when '90.1-2004', '90.1-2007', '90.1-2010', '90.1-2013', 'NECB2011' model.getWaterHeaterMixeds.sort.each do |water_heater| water_heater.setOffCycleLossCoefficienttoAmbientTemperature(0.798542707) water_heater.setOnCycleLossCoefficienttoAmbientTemperature(0.798542707) end end end def model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) update_waterheater_loss_coefficient(model) return true end end