honeybee-openstudio 2.17.2 → 2.18.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -34,7 +34,7 @@ require 'honeybee/model_object'
34
34
  module Honeybee
35
35
  class EnergyMaterialNoMass < ModelObject
36
36
 
37
- def defaults
37
+ def self.defaults
38
38
  @@schema[:components][:schemas][:EnergyMaterialNoMass][:properties]
39
39
  end
40
40
 
@@ -34,6 +34,9 @@
34
34
 
35
35
  require 'to_openstudio'
36
36
 
37
+ require 'fileutils'
38
+ require 'pathname'
39
+
37
40
  # start the measure
38
41
  class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
39
42
  # human readable name
@@ -96,6 +99,7 @@ class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
96
99
  honeybee_model = Honeybee::Model.read_from_disk(model_json)
97
100
 
98
101
  if schedule_csv_dir && !schedule_csv_dir.empty?
102
+ schedule_csv_dir = Pathname.new(schedule_csv_dir).cleanpath
99
103
  if !Dir.exist?(schedule_csv_dir)
100
104
  runner.registerError("Directory for exported CSV Schedules does not exist '#{schedule_csv_dir}'")
101
105
  return false
@@ -106,6 +110,18 @@ class FromHoneybeeModel < OpenStudio::Measure::ModelMeasure
106
110
  STDOUT.flush
107
111
  honeybee_model.to_openstudio_model(model)
108
112
  STDOUT.flush
113
+
114
+ generated_files_dir = "#{runner.workflow.absoluteRootDir}/generated_files"
115
+ if schedule_csv_dir && !schedule_csv_dir.empty?
116
+ if Dir.exist?(schedule_csv_dir)
117
+ runner.registerInfo("Copying exported schedules from '#{schedule_csv_dir}' to '#{generated_files_dir}'")
118
+ FileUtils.mkdir_p(generated_files_dir)
119
+ Dir.glob("#{schedule_csv_dir}/*.csv").each do |file|
120
+ FileUtils.cp(file, generated_files_dir)
121
+ end
122
+ end
123
+ end
124
+
109
125
  return true
110
126
  end
111
127
  end
@@ -90,6 +90,13 @@ class FromHoneybeeModelToGbxml < OpenStudio::Measure::ModelMeasure
90
90
  os_model = honeybee_model.to_openstudio_model(model)
91
91
  STDOUT.flush
92
92
 
93
+ # make sure the zone name is different from the space name to comply with gbXML
94
+ zones = os_model.getThermalZones()
95
+ zones.each do |zone|
96
+ zone_name = zone.name.to_s + '_Zone'
97
+ zone.setName(zone_name)
98
+ end
99
+
93
100
  # convert the OpenStudio model into a gbXML Model
94
101
  output_file_path = runner.getStringArgumentValue('output_file_path', user_arguments)
95
102
  if output_file_path && !output_file_path.empty?
@@ -45,7 +45,7 @@ module Honeybee
45
45
  end
46
46
 
47
47
  def to_openstudio(openstudio_model)
48
- # write the shaded and unsaded versions of the construciton into the model
48
+ # write the shaded and unsaded versions of the construction into the model
49
49
  # reverse the shaded and unshaded identifiers so unshaded one is assigned to apertures
50
50
  unshd_id = @hash[:identifier]
51
51
  shd_id = @hash[:window_construction][:identifier]
@@ -180,7 +180,7 @@ module Honeybee
180
180
 
181
181
  if !face[:properties][:energy][:construction]
182
182
  if face[:boundary_condition][:type] == 'Adiabatic'
183
- # assign default interior construciton for Adiabatic Faces
183
+ # assign default interior construction for Adiabatic Faces
184
184
  if face[:face_type] != 'Wall'
185
185
  interior_construction = closest_interior_construction(openstudio_model, os_space, face[:face_type])
186
186
  unless interior_construction.nil?
@@ -188,7 +188,7 @@ module Honeybee
188
188
  end
189
189
  end
190
190
  elsif face[:face_type] == 'AirBoundary'
191
- # assign default air boundary construciton for AirBoundary face types
191
+ # assign default air boundary construction for AirBoundary face types
192
192
  air_construction = closest_air_construction(openstudio_model, os_space)
193
193
  unless air_construction.nil?
194
194
  os_surface.setConstruction(air_construction)
@@ -49,6 +49,13 @@ module Honeybee
49
49
  end
50
50
  file.puts row.join(',')
51
51
  end
52
+
53
+ # make sure data is written to the disk one way or the other
54
+ begin
55
+ file.fsync
56
+ rescue
57
+ file.flush
58
+ end
52
59
  end
53
60
  end
54
61
  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.17.2
4
+ version: 2.18.1
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-05-18 00:00:00.000000000 Z
14
+ date: 2021-06-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -168,6 +168,10 @@ files:
168
168
  - lib/files/reopt_assumptions.json
169
169
  - lib/files/urbanopt_Gemfile
170
170
  - lib/from_openstudio.rb
171
+ - lib/from_openstudio/construction/air.rb
172
+ - lib/from_openstudio/construction/opaque.rb
173
+ - lib/from_openstudio/construction/shade.rb
174
+ - lib/from_openstudio/construction/window.rb
171
175
  - lib/from_openstudio/geometry/aperture.rb
172
176
  - lib/from_openstudio/geometry/door.rb
173
177
  - lib/from_openstudio/geometry/face.rb