honeybee-openstudio 2.25.2 → 2.27.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) 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/ventilation.rb +3 -0
  45. data/lib/to_openstudio/material/opaque.rb +3 -0
  46. data/lib/to_openstudio/material/opaque_no_mass.rb +3 -1
  47. data/lib/to_openstudio/material/window_blind.rb +3 -1
  48. data/lib/to_openstudio/material/window_gas.rb +3 -1
  49. data/lib/to_openstudio/material/window_gas_custom.rb +3 -0
  50. data/lib/to_openstudio/material/window_gas_mixture.rb +3 -1
  51. data/lib/to_openstudio/material/window_glazing.rb +3 -1
  52. data/lib/to_openstudio/material/window_shade.rb +3 -1
  53. data/lib/to_openstudio/material/window_simpleglazsys.rb +3 -1
  54. data/lib/to_openstudio/program_type.rb +3 -1
  55. data/lib/to_openstudio/schedule/fixed_interval.rb +6 -1
  56. data/lib/to_openstudio/schedule/ruleset.rb +6 -1
  57. data/lib/to_openstudio/schedule/type_limit.rb +3 -1
  58. data/lib/to_openstudio.rb +1 -0
  59. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fd283046468b6c9ff6008d82bb3ca743c3e54102bd155c54bf0edde6d1f62438
4
- data.tar.gz: 011475ae193412ebc49ab3c8aaeb3b2c42bf4db0c381980f13768bc1580ad07d
3
+ metadata.gz: 9db2d95ead18900489d537bcc21a24e804b1f58a1ca441f1b41cb49021b1a7d7
4
+ data.tar.gz: 93aac46ba539ec68a0285b849db359621b40a4dde85a1353b643a57a0abba73d
5
5
  SHA512:
6
- metadata.gz: 76f5a61037f995f1ef6d7f72ca5b7bfa039f90866fc7c70c4c080c4dbe2a56a988472057b30946231be4a943f5a12ac9e7535e961792e55b38aa4dde1afad7f8
7
- data.tar.gz: 8a7d90fa08ea370da5bc4272ab722dae9335c2350bed32834e8b8973b5ca3ad46fc42be1ef1cab72916e2eaf88fd6131df8e34d8cd7a5498f71db2494cb420c3
6
+ metadata.gz: 859377cf4caee885db4eb6b01210b2e60687c5ca75c6d3171b7c4294c38fe8cd61ab0708f0ae382017a2d52cac6203c10e52798c90b287582382ce2d6d6c1652
7
+ data.tar.gz: 9ae642724f71c3b54b99ef5d64f14718d957674066c6ccdcfb7b8848e53346728c456382abf3da2a52513508b84330ba15a4dcfff2897b36c2450fce7d875091
@@ -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.2'
7
+ spec.version = '2.27.1'
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.27.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