honeybee-openstudio 2.25.1 → 2.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) 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/_defaults/model.json +661 -29
  21. data/lib/honeybee/load/process.rb +42 -0
  22. data/lib/honeybee/model.rb +2 -1
  23. data/lib/honeybee/model_object.rb +41 -3
  24. data/lib/honeybee/simulation/parameter_model.rb +2 -1
  25. data/lib/honeybee.rb +1 -0
  26. data/lib/to_openstudio/construction/air.rb +3 -0
  27. data/lib/to_openstudio/construction/opaque.rb +3 -0
  28. data/lib/to_openstudio/construction/shade.rb +3 -0
  29. data/lib/to_openstudio/construction/window.rb +3 -1
  30. data/lib/to_openstudio/construction/windowshade.rb +3 -2
  31. data/lib/to_openstudio/construction_set.rb +3 -2
  32. data/lib/to_openstudio/geometry/aperture.rb +4 -0
  33. data/lib/to_openstudio/geometry/door.rb +4 -0
  34. data/lib/to_openstudio/geometry/face.rb +3 -0
  35. data/lib/to_openstudio/geometry/room.rb +12 -0
  36. data/lib/to_openstudio/geometry/shade.rb +3 -1
  37. data/lib/to_openstudio/hvac/ideal_air.rb +3 -1
  38. data/lib/to_openstudio/load/electric_equipment.rb +6 -0
  39. data/lib/to_openstudio/load/gas_equipment.rb +6 -0
  40. data/lib/to_openstudio/load/infiltration.rb +3 -1
  41. data/lib/to_openstudio/load/lighting.rb +3 -0
  42. data/lib/to_openstudio/load/people.rb +3 -0
  43. data/lib/to_openstudio/load/process.rb +100 -0
  44. data/lib/to_openstudio/load/service_hot_water.rb +1 -1
  45. data/lib/to_openstudio/load/ventilation.rb +3 -0
  46. data/lib/to_openstudio/material/opaque.rb +3 -0
  47. data/lib/to_openstudio/material/opaque_no_mass.rb +3 -1
  48. data/lib/to_openstudio/material/window_blind.rb +3 -1
  49. data/lib/to_openstudio/material/window_gas.rb +3 -1
  50. data/lib/to_openstudio/material/window_gas_custom.rb +3 -0
  51. data/lib/to_openstudio/material/window_gas_mixture.rb +3 -1
  52. data/lib/to_openstudio/material/window_glazing.rb +3 -1
  53. data/lib/to_openstudio/material/window_shade.rb +3 -1
  54. data/lib/to_openstudio/material/window_simpleglazsys.rb +3 -1
  55. data/lib/to_openstudio/program_type.rb +3 -1
  56. data/lib/to_openstudio/schedule/fixed_interval.rb +6 -1
  57. data/lib/to_openstudio/schedule/ruleset.rb +6 -1
  58. data/lib/to_openstudio/schedule/type_limit.rb +3 -1
  59. data/lib/to_openstudio.rb +1 -0
  60. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 532f9efe39fa576e8a8da58d4af039f9d87655bdb810d479e80f51d7c1e5073d
4
- data.tar.gz: 4171a9fd68a74a84f08d113e01ba495dd6bbe9a1ba7f89cfb09617598a6e2b6c
3
+ metadata.gz: 84b66e4746d59f77468d6ab7e342a1c7feb57806e692173dee69ec248f5a4b1f
4
+ data.tar.gz: e9e0476441a4f9261292b2d78d49c15c1d113de599b6ef7dcebfb3c79cc72888
5
5
  SHA512:
6
- metadata.gz: b1632b1397a821f23fa9d5b60bb8d0766d5317455872feed4e4962be88fbf84d0e1873f4cb7f35990c88f24779d39e195795d0b1e3741b754e2c5da96c5c194e
7
- data.tar.gz: '057379314b07d93d4573a654853d151d3bc49ddcc746e5120a23b2d9a562f8b427f638854692a547d113be79f7b4340689a1d2a7a88755122ffaccf74294bae8'
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.25.1'
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