Module: SmallOfficeDetailed
- Defined in:
- lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb
Overview
Custom changes for the SmallOfficeDetailed prototype. These are changes that are inconsistent with other prototype building types.
Instance Method Summary collapse
-
#add_attic_infiltration(template, climate_zone, model) ⇒ Boolean
add attic infiltration.
-
#add_door_infiltration(climate_zone, model) ⇒ Boolean
add door infiltration.
-
#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.
-
#update_waterheater_loss_coefficient(model) ⇒ Boolean
update water heater loss coefficient.
Instance Method Details
#add_attic_infiltration(template, climate_zone, model) ⇒ Boolean
add attic infiltration
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 67 def add_attic_infiltration(template, climate_zone, model) # add extra infiltration for attic in m3/s (there is no attic in 'DOE Ref Pre-1980') return false if template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980' entry_space = model.getSpaceByName('Attic').get infiltration_attic = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(model) infiltration_attic.setName('attic Infiltration') infiltration_per_zone_attic = 0.2001 infiltration_attic.setSchedule(model_add_schedule(model, 'Always On')) infiltration_attic.setDesignFlowRate(infiltration_per_zone_attic) infiltration_attic.setConstantTermCoefficient(1.0) infiltration_attic.setTemperatureTermCoefficient(0.0) infiltration_attic.setVelocityTermCoefficient(0.0) infiltration_attic.setVelocitySquaredTermCoefficient(0.0) infiltration_attic.setSpace(entry_space) return true end |
#add_door_infiltration(climate_zone, model) ⇒ Boolean
add door infiltration
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 58 59 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 31 def add_door_infiltration(climate_zone, model) # add extra infiltration for entry door in m3/s (there is no attic in 'DOE Ref Pre-1980') return false if template == 'DOE Ref 1980-2004' || template == 'DOE Ref Pre-1980' entry_space = model.getSpaceByName('Lobby').get infiltration_entrydoor = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(model) infiltration_entrydoor.setName('entry door Infiltration') infiltration_per_zone_entrydoor = 0 if template == '90.1-2004' infiltration_per_zone_entrydoor = 0.129785425 infiltration_entrydoor.setSchedule(model_add_schedule(model, 'OfficeSmall INFIL_Door_Opening_SCH')) elsif template == '90.1-2007' || template == '90.1-2010' || template == '90.1-2013' || template == '90.1-2016' || template == '90.1-2019' case climate_zone when 'ASHRAE 169-2006-1A', 'ASHRAE 169-2006-2A', 'ASHRAE 169-2006-1B', 'ASHRAE 169-2006-2B' infiltration_per_zone_entrydoor = 0.129785425 infiltration_entrydoor.setSchedule(model_add_schedule(model, 'OfficeSmall INFIL_Door_Opening_SCH')) else infiltration_per_zone_entrydoor = 0.076455414 infiltration_entrydoor.setSchedule(model_add_schedule(model, 'OfficeSmall INFIL_Door_Opening_SCH_2013')) end end infiltration_entrydoor.setDesignFlowRate(infiltration_per_zone_entrydoor) infiltration_entrydoor.setConstantTermCoefficient(1.0) infiltration_entrydoor.setTemperatureTermCoefficient(0.0) infiltration_entrydoor.setVelocityTermCoefficient(0.0) infiltration_entrydoor.setVelocitySquaredTermCoefficient(0.0) infiltration_entrydoor.setSpace(entry_space) return true end |
#model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
geometry adjustments specific to the prototype model
182 183 184 185 186 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 182 def model_custom_geometry_tweaks(model, building_type, climate_zone, prototype_input) # Set original building North axis OpenstudioStandards::Geometry.model_set_building_north_axis(model, 0.0) 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 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 11 def model_custom_hvac_tweaks(model, building_type, climate_zone, prototype_input) # add extra infiltration for entry door add_door_infiltration(climate_zone, model) OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Added door infiltration') # add extra infiltration for attic add_attic_infiltration(template, climate_zone, model) OpenStudio.logFree(OpenStudio::Info, 'openstudio.model.Model', 'Added attic infiltration') # reset defrost time fraction # @todo set this to a reasonable defrost time fraction based on research and implement in Prototype.CoilHeatingDXSingleSpeed model.getCoilHeatingDXSingleSpeeds.each(&:resetDefrostTimePeriodFraction) return true end |
#model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) ⇒ Boolean
swh adjustments specific to the prototype model
169 170 171 172 173 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 169 def model_custom_swh_tweaks(model, building_type, climate_zone, prototype_input) update_waterheater_loss_coefficient(model) return true end |
#update_waterheater_loss_coefficient(model) ⇒ Boolean
update water heater loss coefficient
151 152 153 154 155 156 157 158 159 160 |
# File 'lib/openstudio-standards/prototypes/common/buildings/Prototype.SmallOfficeDetailed.rb', line 151 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(1.205980747) water_heater.setOnCycleLossCoefficienttoAmbientTemperature(1.205980747) end end return true end |