honeybee-openstudio 2.26.0 → 2.27.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/honeybee-openstudio.gemspec +1 -1
  3. data/lib/files/urbanopt_Gemfile +1 -1
  4. data/lib/from_openstudio/construction/air.rb +3 -0
  5. data/lib/from_openstudio/construction/opaque.rb +3 -0
  6. data/lib/from_openstudio/construction/shade.rb +3 -0
  7. data/lib/from_openstudio/construction/window.rb +3 -0
  8. data/lib/from_openstudio/construction_set.rb +3 -0
  9. data/lib/from_openstudio/material/opaque.rb +16 -1
  10. data/lib/from_openstudio/material/opaque_no_mass.rb +16 -1
  11. data/lib/from_openstudio/material/window_blind.rb +3 -0
  12. data/lib/from_openstudio/material/window_gas.rb +3 -0
  13. data/lib/from_openstudio/material/window_gas_custom.rb +3 -0
  14. data/lib/from_openstudio/material/window_gas_mixture.rb +3 -0
  15. data/lib/from_openstudio/material/window_glazing.rb +3 -0
  16. data/lib/from_openstudio/material/window_simpleglazsys.rb +3 -0
  17. data/lib/from_openstudio/schedule/fixed_interval.rb +3 -0
  18. data/lib/from_openstudio/schedule/ruleset.rb +3 -0
  19. data/lib/from_openstudio/schedule/type_limit.rb +3 -0
  20. data/lib/honeybee/model.rb +2 -1
  21. data/lib/honeybee/model_object.rb +32 -1
  22. data/lib/honeybee/simulation/parameter_model.rb +2 -1
  23. data/lib/to_openstudio/construction/air.rb +3 -0
  24. data/lib/to_openstudio/construction/opaque.rb +3 -0
  25. data/lib/to_openstudio/construction/shade.rb +3 -0
  26. data/lib/to_openstudio/construction/window.rb +3 -1
  27. data/lib/to_openstudio/construction/windowshade.rb +3 -2
  28. data/lib/to_openstudio/construction_set.rb +3 -2
  29. data/lib/to_openstudio/geometry/aperture.rb +4 -0
  30. data/lib/to_openstudio/geometry/door.rb +4 -0
  31. data/lib/to_openstudio/geometry/face.rb +3 -0
  32. data/lib/to_openstudio/geometry/room.rb +3 -0
  33. data/lib/to_openstudio/geometry/shade.rb +3 -1
  34. data/lib/to_openstudio/hvac/ideal_air.rb +3 -1
  35. data/lib/to_openstudio/load/electric_equipment.rb +3 -0
  36. data/lib/to_openstudio/load/gas_equipment.rb +3 -0
  37. data/lib/to_openstudio/load/infiltration.rb +3 -1
  38. data/lib/to_openstudio/load/lighting.rb +3 -0
  39. data/lib/to_openstudio/load/people.rb +3 -0
  40. data/lib/to_openstudio/load/process.rb +3 -0
  41. data/lib/to_openstudio/load/ventilation.rb +3 -0
  42. data/lib/to_openstudio/material/opaque.rb +3 -0
  43. data/lib/to_openstudio/material/opaque_no_mass.rb +3 -1
  44. data/lib/to_openstudio/material/window_blind.rb +3 -1
  45. data/lib/to_openstudio/material/window_gas.rb +3 -1
  46. data/lib/to_openstudio/material/window_gas_custom.rb +3 -0
  47. data/lib/to_openstudio/material/window_gas_mixture.rb +3 -1
  48. data/lib/to_openstudio/material/window_glazing.rb +3 -1
  49. data/lib/to_openstudio/material/window_shade.rb +3 -1
  50. data/lib/to_openstudio/material/window_simpleglazsys.rb +3 -1
  51. data/lib/to_openstudio/program_type.rb +3 -1
  52. data/lib/to_openstudio/schedule/fixed_interval.rb +6 -1
  53. data/lib/to_openstudio/schedule/ruleset.rb +6 -1
  54. data/lib/to_openstudio/schedule/type_limit.rb +3 -1
  55. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f1b438f1be3e8c9905d69fdfbf5e8fb0253fcbfc9b463d981df1b22abbac3c81
4
- data.tar.gz: 9f9a89d10c4128ad44166ea7c3af5ed4760e6970232bc4d5d80de72ba44ce6c2
3
+ metadata.gz: 84b66e4746d59f77468d6ab7e342a1c7feb57806e692173dee69ec248f5a4b1f
4
+ data.tar.gz: e9e0476441a4f9261292b2d78d49c15c1d113de599b6ef7dcebfb3c79cc72888
5
5
  SHA512:
6
- metadata.gz: 8bedd71d378aba7a8ab3f54bc5b02af074f9a7159af90c3feb503e3ec06ae48aa5c2ceba9b2c3fbd52f474efaa80e1cc4e7a083e3cb0682dfb6e4a24c8bf33d2
7
- data.tar.gz: 7191434a1ef1e64137f987ee541c8ba1d1ad6da668ef616ace2c30ecc0eb462dfbf620fff01a09cdf5d3854c4eade19d0c7e7395a95689661a14015abfe410b0
6
+ metadata.gz: a260b02b02b502f29c2cebfa55c9b9938aef96f0b2bcdfe4044cc3a28af14290615ad6e1b9afde6747cd6d11e4e18a0974f793683af251a3d5743ca20450d37b
7
+ data.tar.gz: 8022e1f14fb2a5f700e7f5dedfc5d7a26e481b463ebef2cac6b381ee798d3906508edd9508717e07b7dcb6f967a5a9f2ed9bd7c9c85aaafa79d822d6b74fea90
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'honeybee-openstudio'
7
- spec.version = '2.26.0'
7
+ spec.version = '2.27.0'
8
8
  spec.authors = ['Tanushree Charan', 'Dan Macumber', 'Chris Mackey', 'Mostapha Sadeghipour Roudsari']
9
9
  spec.email = ['tanushree.charan@nrel.gov', 'chris@ladybug.tools']
10
10
 
@@ -37,4 +37,4 @@ else
37
37
  end
38
38
 
39
39
  # include the honeybee-openstudio-gem
40
- gem 'honeybee-openstudio', '2.22.1'
40
+ gem 'honeybee-openstudio', '2.26.0'
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'AirBoundaryConstructionAbridged'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(construction.nameString)
44
+ unless construction.displayName.empty?
45
+ hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  # check if boost optional object is empty
45
48
  unless construction.simpleMixingSchedule.empty?
46
49
  schedule = construction.simpleMixingSchedule.get
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'OpaqueConstructionAbridged'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(construction.nameString)
44
+ unless construction.displayName.empty?
45
+ hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:materials] = []
45
48
  # get construction layers
46
49
  layers = construction.layers
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'ShadeConstruction'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(construction.nameString)
44
+ unless construction.displayName.empty?
45
+ hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  # get outermost construction layers
45
48
  layer = construction.layers[0]
46
49
  if layer.to_StandardGlazing.is_initialized
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'WindowConstructionAbridged'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(construction.nameString)
44
+ unless construction.displayName.empty?
45
+ hash[:display_name] = (construction.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:materials] = []
45
48
  # get construction layers
46
49
  layers = construction.layers
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'ConstructionSetAbridged'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(construction_set.nameString)
44
+ unless construction_set.displayName.empty?
45
+ hash[:display_name] = (construction_set.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:wall_set] = {}
45
48
  hash[:floor_set] = {}
46
49
  hash[:aperture_set] = {}
@@ -41,11 +41,26 @@ module Honeybee
41
41
  hash[:type] = 'EnergyMaterial'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:thickness] = material.thickness
45
48
  hash[:conductivity] = material.conductivity
46
49
  hash[:density] = material.density
47
50
  hash[:specific_heat] = material.specificHeat
48
- hash[:roughness] = material.roughness
51
+ case material.roughness.downcase
52
+ when 'veryrough'
53
+ hash[:roughness] == 'VeryRough'
54
+ when 'mediumrough'
55
+ hash[:roughness] == 'MediumRough'
56
+ when 'mediumsmooth'
57
+ hash[:roughness] == 'MediumSmooth'
58
+ when 'verysmooth'
59
+ hash[:roughness] == 'VerySmooth'
60
+ # In case of Rough or Smooth
61
+ else
62
+ hash[:roughness] = material.roughness.titleize
63
+ end
49
64
  hash[:thermal_absorptance] = material.thermalAbsorptance
50
65
  hash[:solar_absorptance] = material.solarAbsorptance
51
66
  hash[:visible_absorptance] = material.visibleAbsorptance
@@ -41,12 +41,27 @@ module Honeybee
41
41
  hash[:type] = 'EnergyMaterialNoMass'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:r_value] = material.thermalResistance
45
48
 
46
49
  if material.to_MasslessOpaqueMaterial.is_initialized
47
50
  # Roughness is a required property for OS MasslessOpaqueMaterial but isn't a listed
48
51
  # property for OS AirGap
49
- hash[:roughness] = material.roughness
52
+ case material.roughness.downcase
53
+ when 'veryrough'
54
+ hash[:roughness] == 'VeryRough'
55
+ when 'mediumrough'
56
+ hash[:roughness] == 'MediumRough'
57
+ when 'mediumsmooth'
58
+ hash[:roughness] == 'MediumSmooth'
59
+ when 'verysmooth'
60
+ hash[:roughness] == 'VerySmooth'
61
+ # In case of Rough or Smooth
62
+ else
63
+ hash[:roughness] = material.roughness.titleize
64
+ end
50
65
  # check if boost optional object is empty
51
66
  unless material.thermalAbsorptance.empty?
52
67
  hash[:thermal_absorptance] = material.thermalAbsorptance.get
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialBlind'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:slat_orientation] = material.slatOrientation
45
48
  hash[:slat_width] = material.slatWidth
46
49
  hash[:slat_separation] = material.slatSeparation
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialGas'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:thickness] = material.thickness
45
48
  hash[:gas_type] = material.gasType
46
49
 
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialGasCustom'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:thickness] = material.thickness
45
48
  # check if boost optional object is empty
46
49
  unless material.customConductivityCoefficientA.empty?
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialGasMixture'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:thickness] = material.thickness
45
48
  hash[:gas_types] = []
46
49
  hash[:gas_fractions] = []
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialGlazing'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:thickness] = material.thickness
45
48
  hash[:solar_transmittance] = material.solarTransmittance
46
49
  # check if boost optional object is empty
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'EnergyWindowMaterialSimpleGlazSys'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(material.nameString)
44
+ unless material.displayName.empty?
45
+ hash[:display_name] = (material.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:u_factor] = material.uFactor
45
48
  hash[:shgc] = material.solarHeatGainCoefficient
46
49
  # check if boost optional object is empty
@@ -40,6 +40,9 @@ module Honeybee
40
40
  hash = {}
41
41
  hash[:type] = 'ScheduleFixedIntervalAbridged'
42
42
  hash[:identifier] = clean_name(schedule_fixedinterval.nameString)
43
+ unless schedule_fixedinterval.displayName.empty?
44
+ hash[:display_name] = (schedule_fixedinterval.displayName.get).force_encoding("UTF-8")
45
+ end
43
46
  start_month = schedule_fixedinterval.startMonth
44
47
  start_day = schedule_fixedinterval.startDay
45
48
  if is_leap_year
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'ScheduleRulesetAbridged'
42
42
  # set the primary (required) day schedules of the object
43
43
  hash[:identifier] = clean_name(schedule_ruleset.nameString)
44
+ unless schedule_ruleset.displayName.empty?
45
+ hash[:display_name] = (schedule_ruleset.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  hash[:default_day_schedule] = clean_name(schedule_ruleset.defaultDaySchedule.nameString)
45
48
  hash[:summer_designday_schedule] = clean_name(schedule_ruleset.summerDesignDaySchedule.nameString)
46
49
  hash[:winter_designday_schedule] = clean_name(schedule_ruleset.winterDesignDaySchedule.nameString)
@@ -41,6 +41,9 @@ module Honeybee
41
41
  hash[:type] = 'ScheduleTypeLimit'
42
42
  # set hash values from OpenStudio Object
43
43
  hash[:identifier] = clean_name(schedule_type_limit.nameString)
44
+ unless schedule_type_limit.displayName.empty?
45
+ hash[:display_name] = (schedule_type_limit.displayName.get).force_encoding("UTF-8")
46
+ end
44
47
  # check if boost optional object is empty
45
48
  unless schedule_type_limit.lowerLimitValue.empty?
46
49
  hash[:lower_limit] = schedule_type_limit.lowerLimitValue.get
@@ -40,7 +40,8 @@ module Honeybee
40
40
  def self.read_from_disk(file)
41
41
  hash = nil
42
42
  File.open(File.join(file), 'r') do |f|
43
- hash = JSON.parse(f.read, symbolize_names: true)
43
+ hash = JSON.parse(File.read(f, :external_encoding => 'UTF-8',
44
+ :internal_encoding => 'UTF-8'), symbolize_names: true, encoding: 'UTF-8')
44
45
  end
45
46
  Model.new(hash)
46
47
  end
@@ -30,6 +30,20 @@
30
30
  # *******************************************************************************
31
31
 
32
32
  module Honeybee
33
+ class FakeOptionalString
34
+ def initialize(str)
35
+ @str = str
36
+ end
37
+
38
+ def empty?
39
+ false
40
+ end
41
+
42
+ def get
43
+ @str
44
+ end
45
+ end
46
+
33
47
  class ModelObject
34
48
  # Base class from which all other objects in this module inherit.
35
49
  # Attributes and methods of this class should be overwritten in each inheriting object.
@@ -43,6 +57,7 @@ module Honeybee
43
57
  :universal_newline => true # Always break lines with \n
44
58
  }
45
59
 
60
+
46
61
  def method_missing(sym, *args)
47
62
  name = sym.to_s
48
63
  aname = name.sub('=', '')
@@ -64,7 +79,8 @@ module Honeybee
64
79
  def self.read_from_disk(file)
65
80
  hash = nil
66
81
  File.open(File.join(file), 'r') do |f|
67
- hash = JSON.parse(f.read, symbolize_names: true)
82
+ hash = JSON.parse(File.read(f, :external_encoding => 'UTF-8',
83
+ :internal_encoding => 'UTF-8'), symbolize_names: true, encoding: 'UTF-8')
68
84
  end
69
85
  new(hash)
70
86
  end
@@ -116,6 +132,21 @@ module Honeybee
116
132
  encode_str.gsub(/[^.A-Za-z0-9_-]/, '_').gsub(' ', '_')
117
133
  end
118
134
 
135
+ # Create methods to get and set display name
136
+ if !OpenStudio::Model::ModelObject.method_defined?(:displayName)
137
+ OpenStudio::Model::ModelObject.class_eval do
138
+ define_method(:displayName) do
139
+ result = additionalProperties.getFeatureAsString("DisplayName")
140
+ if !result.empty?
141
+ result = FakeOptionalString.new(result.get.force_encoding(Encoding::UTF_8))
142
+ end
143
+ result
144
+ end
145
+ define_method(:setDisplayName) do |value|
146
+ additionalProperties.setFeature("DisplayName", value)
147
+ end
148
+ end
149
+ end
119
150
 
120
151
  end # ModelObject
121
152
  end # Honeybee
@@ -40,7 +40,8 @@ module Honeybee
40
40
  def self.read_from_disk(file)
41
41
  hash = nil
42
42
  File.open(File.join(file), 'r') do |f|
43
- hash = JSON.parse(f.read, symbolize_names: true)
43
+ hash = JSON.parse(File.read(f, :external_encoding => 'UTF-8',
44
+ :internal_encoding => 'UTF-8'), symbolize_names: true, encoding: 'UTF-8')
44
45
  end
45
46
 
46
47
  SimulationParameter.new(hash)
@@ -46,6 +46,9 @@ module Honeybee
46
46
  os_construction = OpenStudio::Model::ConstructionAirBoundary.new(openstudio_model)
47
47
  os_construction.setName(@hash[:identifier])
48
48
  os_construction.setAirExchangeMethod('None')
49
+ unless @hash[:display_name].nil?
50
+ os_construction.setDisplayName(@hash[:display_name])
51
+ end
49
52
 
50
53
  os_construction
51
54
  end
@@ -46,6 +46,9 @@ module Honeybee
46
46
  # create construction and set identifier
47
47
  os_construction = OpenStudio::Model::Construction.new(openstudio_model)
48
48
  os_construction.setName(@hash[:identifier])
49
+ unless @hash[:display_name].nil?
50
+ os_construction.setDisplayName(@hash[:display_name])
51
+ end
49
52
 
50
53
  # create material vector
51
54
  os_materials = OpenStudio::Model::MaterialVector.new
@@ -46,6 +46,9 @@ module Honeybee
46
46
 
47
47
  os_construction = OpenStudio::Model::Construction.new(openstudio_model)
48
48
  os_construction.setName(@hash[:identifier])
49
+ unless @hash[:display_name].nil?
50
+ os_construction.setDisplayName(@hash[:display_name])
51
+ end
49
52
  os_materials = OpenStudio::Model::MaterialVector.new
50
53
 
51
54
  # create standard glazing if is specular is true
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create construction and set identifier
47
47
  os_construction = OpenStudio::Model::Construction.new(openstudio_model)
48
48
  os_construction.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_construction.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # create material vector
51
53
  os_materials = OpenStudio::Model::MaterialVector.new
52
54
  # loop through each layer and add to material vector
@@ -51,7 +51,6 @@ module Honeybee
51
51
  shd_id = @hash[:window_construction][:identifier]
52
52
  @hash[:window_construction][:identifier] = unshd_id
53
53
  @hash[:identifier] = shd_id
54
-
55
54
  # create the unshaded construction
56
55
  unshd_constr_obj = WindowConstructionAbridged.new(@hash[:window_construction])
57
56
  @construction = unshd_constr_obj.to_openstudio(openstudio_model)
@@ -59,7 +58,9 @@ module Honeybee
59
58
  # create the shaded construction
60
59
  @shade_construction = OpenStudio::Model::Construction.new(openstudio_model)
61
60
  @shade_construction.setName(shd_id)
62
-
61
+ unless @hash[:display_name].nil?
62
+ @shade_construction.setDisplayName(@hash[:display_name])
63
+ end
63
64
  # create the layers of the unshaded construction into which we will insert the shade
64
65
  os_materials = []
65
66
  if @hash.key?(:layers)
@@ -30,7 +30,6 @@
30
30
  # *******************************************************************************
31
31
 
32
32
  require 'honeybee/construction_set'
33
-
34
33
  require 'to_openstudio/model_object'
35
34
 
36
35
  module Honeybee
@@ -46,7 +45,9 @@ module Honeybee
46
45
  # create the constructionset object
47
46
  os_constr_set = OpenStudio::Model::DefaultConstructionSet.new(openstudio_model)
48
47
  os_constr_set.setName(@hash[:identifier])
49
-
48
+ unless @hash[:display_name].nil?
49
+ os_constr_set.setDisplayName(@hash[:display_name])
50
+ end
50
51
  int_surf_const = OpenStudio::Model::DefaultSurfaceConstructions.new(openstudio_model)
51
52
  ext_surf_const = OpenStudio::Model::DefaultSurfaceConstructions.new(openstudio_model)
52
53
  grnd_surf_const = OpenStudio::Model::DefaultSurfaceConstructions.new(openstudio_model)
@@ -114,6 +114,10 @@ module Honeybee
114
114
  os_subsurface.setName(@hash[:identifier])
115
115
  end
116
116
 
117
+ unless @hash[:display_name].nil?
118
+ os_subsurface.setDisplayName(@hash[:display_name])
119
+ end
120
+
117
121
  # assign the construction if it exists
118
122
  if @hash[:properties][:energy][:construction]
119
123
  construction_identifier = @hash[:properties][:energy][:construction]
@@ -114,6 +114,10 @@ module Honeybee
114
114
  os_subsurface.setName(@hash[:identifier])
115
115
  end
116
116
 
117
+ unless @hash[:display_name].nil?
118
+ os_subsurface.setDisplayName(@hash[:display_name])
119
+ end
120
+
117
121
  # assign the construction if it exists
118
122
  if @hash[:properties][:energy][:construction]
119
123
  construction_identifier = @hash[:properties][:energy][:construction]
@@ -60,6 +60,9 @@ module Honeybee
60
60
  # create the openstudio surface and assign the type
61
61
  os_surface = OpenStudio::Model::Surface.new(reordered_vertices, openstudio_model)
62
62
  os_surface.setName(@hash[:identifier])
63
+ unless @hash[:display_name].nil?
64
+ os_surface.setDisplayName(@hash[:display_name])
65
+ end
63
66
  os_surface.setSurfaceType(@hash[:face_type])
64
67
 
65
68
  # assign the construction if it is present
@@ -76,6 +76,9 @@ module Honeybee
76
76
  # create the space and thermal zone
77
77
  os_space = OpenStudio::Model::Space.new(openstudio_model)
78
78
  os_space.setName(@hash[:identifier])
79
+ unless @hash[:display_name].nil?
80
+ os_space.setDisplayName(@hash[:display_name])
81
+ end
79
82
  os_thermal_zone = OpenStudio::Model::ThermalZone.new(openstudio_model)
80
83
  os_thermal_zone.setName(@hash[:identifier])
81
84
  os_space.setThermalZone(os_thermal_zone)
@@ -59,7 +59,9 @@ module Honeybee
59
59
 
60
60
  os_shading_surface = OpenStudio::Model::ShadingSurface.new(reordered_vertices, openstudio_model)
61
61
  os_shading_surface.setName(@hash[:identifier])
62
-
62
+ unless @hash[:display_name].nil?
63
+ os_shading_surface.setDisplayName(@hash[:display_name])
64
+ end
63
65
  # assign the construction if it exists
64
66
  if @hash[:properties][:energy][:construction]
65
67
  construction_identifier = @hash[:properties][:energy][:construction]
@@ -40,7 +40,9 @@ module Honeybee
40
40
  # create the ideal air system and set the identifier
41
41
  os_ideal_air = OpenStudio::Model::ZoneHVACIdealLoadsAirSystem.new(openstudio_model)
42
42
  os_ideal_air.setName(@hash[:identifier])
43
-
43
+ unless @hash[:display_name].nil?
44
+ os_ideal_air.setDisplayName(@hash[:display_name])
45
+ end
44
46
  # assign the economizer type
45
47
  if @hash[:economizer_type]
46
48
  os_ideal_air.setOutdoorAirEconomizerType(@hash[:economizer_type])
@@ -47,6 +47,9 @@ module Honeybee
47
47
  os_electric_equip_def = OpenStudio::Model::ElectricEquipmentDefinition.new(openstudio_model)
48
48
  os_electric_equip = OpenStudio::Model::ElectricEquipment.new(os_electric_equip_def)
49
49
  os_electric_equip_def.setName(@hash[:identifier])
50
+ unless @hash[:display_name].nil?
51
+ os_electric_equip_def.setDisplayName(@hash[:display_name])
52
+ end
50
53
  os_electric_equip.setName(@hash[:identifier])
51
54
 
52
55
  # assign watts per area
@@ -48,6 +48,9 @@ module Honeybee
48
48
  os_gas_equip_def = OpenStudio::Model::GasEquipmentDefinition.new(openstudio_model)
49
49
  os_gas_equip = OpenStudio::Model::GasEquipment.new(os_gas_equip_def)
50
50
  os_gas_equip_def.setName(@hash[:identifier])
51
+ unless @hash[:display_name].nil?
52
+ os_gas_equip_def.setDisplayName(@hash[:display_name])
53
+ end
51
54
  os_gas_equip.setName(@hash[:identifier])
52
55
 
53
56
  # assign watts per space floor area
@@ -47,7 +47,9 @@ module Honeybee
47
47
  # create infiltration OpenStudio object and set identifier
48
48
  os_infilt = OpenStudio::Model::SpaceInfiltrationDesignFlowRate.new(openstudio_model)
49
49
  os_infilt.setName(@hash[:identifier])
50
-
50
+ unless @hash[:display_name].nil?
51
+ os_infilt.setDisplayName(@hash[:display_name])
52
+ end
51
53
  # assign flow per surface
52
54
  os_infilt.setFlowperExteriorSurfaceArea(@hash[:flow_per_exterior_area])
53
55
 
@@ -48,6 +48,9 @@ module Honeybee
48
48
  os_lights_def = OpenStudio::Model::LightsDefinition.new(openstudio_model)
49
49
  os_lights = OpenStudio::Model::Lights.new(os_lights_def)
50
50
  os_lights_def.setName(@hash[:identifier])
51
+ unless @hash[:display_name].nil?
52
+ os_lights_def.setDisplayName(@hash[:display_name])
53
+ end
51
54
  os_lights.setName(@hash[:identifier])
52
55
 
53
56
  # assign watts per space floor area
@@ -48,6 +48,9 @@ module Honeybee
48
48
  os_people_def = OpenStudio::Model::PeopleDefinition.new(openstudio_model)
49
49
  os_people = OpenStudio::Model::People.new(os_people_def)
50
50
  os_people_def.setName(@hash[:identifier])
51
+ unless @hash[:display_name].nil?
52
+ os_people_def.setDisplayName(@hash[:display_name])
53
+ end
51
54
  os_people.setName(@hash[:identifier])
52
55
 
53
56
  # assign people per space floor area
@@ -47,6 +47,9 @@ module Honeybee
47
47
  os_other_equip_def = OpenStudio::Model::OtherEquipmentDefinition.new(openstudio_model)
48
48
  os_other_equip = OpenStudio::Model::OtherEquipment.new(os_other_equip_def)
49
49
  os_other_equip_def.setName(@hash[:identifier])
50
+ unless @hash[:display_name].nil?
51
+ os_other_equip_def.setDisplayName(@hash[:display_name])
52
+ end
50
53
  os_other_equip.setName(@hash[:identifier])
51
54
 
52
55
  # assign watts
@@ -46,6 +46,9 @@ module Honeybee
46
46
  # create ventilation openstudio object and set identifier
47
47
  os_vent = OpenStudio::Model::DesignSpecificationOutdoorAir.new(openstudio_model)
48
48
  os_vent.setName(@hash[:identifier])
49
+ unless @hash[:display_name].nil?
50
+ os_vent.setDisplayName(@hash[:display_name])
51
+ end
49
52
 
50
53
  # assign air changes per hour if it exists
51
54
  if @hash[:air_changes_per_hour]
@@ -46,6 +46,9 @@ module Honeybee
46
46
  # create standard opaque OpenStudio material
47
47
  os_opaque_mat = OpenStudio::Model::StandardOpaqueMaterial.new(openstudio_model)
48
48
  os_opaque_mat.setName(@hash[:identifier])
49
+ unless @hash[:display_name].nil?
50
+ os_opaque_mat.setDisplayName(@hash[:display_name])
51
+ end
49
52
  os_opaque_mat.setThickness(@hash[:thickness])
50
53
  os_opaque_mat.setConductivity(@hash[:conductivity])
51
54
  os_opaque_mat.setDensity(@hash[:density])
@@ -47,7 +47,9 @@ module Honeybee
47
47
  # create no mass material OpenStudio object and set identifier
48
48
  os_nomass_mat = OpenStudio::Model::MasslessOpaqueMaterial.new(openstudio_model)
49
49
  os_nomass_mat.setName(@hash[:identifier])
50
-
50
+ unless @hash[:display_name].nil?
51
+ os_nomass_mat.setDisplayName(@hash[:display_name])
52
+ end
51
53
  # assign thermal resistance
52
54
  os_nomass_mat.setThermalResistance(@hash[:r_value])
53
55
 
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create blind OpenStudio object
47
47
  os_blind = OpenStudio::Model::Blind.new(openstudio_model)
48
48
  os_blind.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_blind.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # assign slat orientation
51
53
  if @hash[:slat_orientation]
52
54
  os_blind.setSlatOrientation(@hash[:slat_orientation])
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create window gas OpenStudio object
47
47
  os_window_gas = OpenStudio::Model::Gas.new(openstudio_model)
48
48
  os_window_gas.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_window_gas.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # assign thickness
51
53
  if @hash[:thickness]
52
54
  os_window_gas.setThickness(@hash[:thickness])
@@ -46,6 +46,9 @@ module Honeybee
46
46
  # create window gas openstudio object
47
47
  os_gas_custom = OpenStudio::Model::Gas.new(openstudio_model)
48
48
  os_gas_custom.setName(@hash[:identifier])
49
+ unless @hash[:display_name].nil?
50
+ os_gas_custom.setDisplayName(@hash[:display_name])
51
+ end
49
52
  os_gas_custom.setGasType('Custom')
50
53
  os_gas_custom.setConductivityCoefficientA(@hash[:conductivity_coeff_a])
51
54
  os_gas_custom.setViscosityCoefficientA(@hash[:viscosity_coeff_a])
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create the gas mixture
47
47
  os_gas_mixture = OpenStudio::Model::GasMixture.new(openstudio_model)
48
48
  os_gas_mixture.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_gas_mixture.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # set the thickness
51
53
  if @hash[:thickness]
52
54
  os_gas_mixture.setThickness(@hash[:thickness])
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create openstudio standard glazing object and set identifier
47
47
  os_glazing = OpenStudio::Model::StandardGlazing.new(openstudio_model)
48
48
  os_glazing.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_glazing.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # assign thickness
51
53
  if @hash[:thickness]
52
54
  os_glazing.setThickness(@hash[:thickness])
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create openstudio shade object
47
47
  os_shade_mat = OpenStudio::Model::Shade.new(openstudio_model)
48
48
  os_shade_mat.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_shade_mat.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # assign solar transmittance
51
53
  if @hash[:solar_transmittance]
52
54
  os_shade_mat.setSolarTransmittance(@hash[:solar_transmittance])
@@ -48,7 +48,9 @@ module Honeybee
48
48
  os_simple_glazing.setName(@hash[:identifier])
49
49
  os_simple_glazing.setUFactor(@hash[:u_factor])
50
50
  os_simple_glazing.setSolarHeatGainCoefficient(@hash[:shgc])
51
-
51
+ unless @hash[:display_name].nil?
52
+ os_simple_glazing.setDisplayName(@hash[:display_name])
53
+ end
52
54
  # assign visible transmittance
53
55
  if @hash[:vt]
54
56
  os_simple_glazing.setVisibleTransmittance(@hash[:vt])
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create openstudio space type object
47
47
  os_space_type = OpenStudio::Model::SpaceType.new(openstudio_model)
48
48
  os_space_type.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_space_type.setDisplayName(@hash[:display_name])
51
+ end
50
52
  # assign people
51
53
  if @hash[:people]
52
54
  people = PeopleAbridged.new(@hash[:people])
@@ -89,7 +89,9 @@ module Honeybee
89
89
  # create the new schedule
90
90
  os_fi_schedule = OpenStudio::Model::ScheduleFixedInterval.new(openstudio_model)
91
91
  os_fi_schedule.setName(@hash[:identifier])
92
-
92
+ unless @hash[:display_name].nil?
93
+ os_fi_schedule.setDisplayName(@hash[:display_name])
94
+ end
93
95
  # assign start date
94
96
  os_fi_schedule.setStartMonth(start_month)
95
97
  os_fi_schedule.setStartDay(start_day)
@@ -202,6 +204,9 @@ module Honeybee
202
204
  rowsToSkip = 1
203
205
  os_schedule_file = OpenStudio::Model::ScheduleFile.new(os_external_file, column, rowsToSkip)
204
206
  os_schedule_file.setName(@hash[:identifier])
207
+ unless @hash[:display_name].nil?
208
+ os_schedule_file.setDisplayName(@hash[:display_name])
209
+ end
205
210
  os_schedule_file.setInterpolatetoTimestep(interpolate)
206
211
  os_schedule_file.setMinutesperItem(interval_length)
207
212
 
@@ -47,7 +47,9 @@ module Honeybee
47
47
  # create openstudio schedule ruleset object
48
48
  os_sch_ruleset = OpenStudio::Model::ScheduleRuleset.new(openstudio_model)
49
49
  os_sch_ruleset.setName(@hash[:identifier])
50
-
50
+ unless @hash[:display_name].nil?
51
+ os_sch_ruleset.setDisplayName(@hash[:display_name])
52
+ end
51
53
  # assign schedule type limit
52
54
  sch_type_limit_obj = nil
53
55
  if @hash[:schedule_type_limit]
@@ -65,6 +67,9 @@ module Honeybee
65
67
  if day_schedule[:identifier] != def_day_id
66
68
  day_schedule_new = OpenStudio::Model::ScheduleDay.new(openstudio_model)
67
69
  day_schedule_new.setName(day_schedule[:identifier])
70
+ unless @hash[:display_name].nil?
71
+ day_schedule_new.setDisplayName(@hash[:display_name])
72
+ end
68
73
  unless sch_type_limit_obj.nil?
69
74
  day_schedule_new.setScheduleTypeLimits(sch_type_limit_obj)
70
75
  end
@@ -46,7 +46,9 @@ module Honeybee
46
46
  # create schedule type limits openstudio object
47
47
  os_type_limit = OpenStudio::Model::ScheduleTypeLimits.new(openstudio_model)
48
48
  os_type_limit.setName(@hash[:identifier])
49
-
49
+ unless @hash[:display_name].nil?
50
+ os_type_limit.setDisplayName(@hash[:display_name])
51
+ end
50
52
  if @hash[:lower_limit] != nil and @hash[:lower_limit] != {:type => 'NoLimit'}
51
53
  os_type_limit.setLowerLimitValue(@hash[:lower_limit])
52
54
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: honeybee-openstudio
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.26.0
4
+ version: 2.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tanushree Charan
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2021-10-26 00:00:00.000000000 Z
14
+ date: 2021-11-16 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler