Module: OpenStudio::Workflow::Util::Model
- Included in:
- EnergyPlus, RunEnergyPlusMeasures, RunInitialization, RunOpenStudioMeasures, RunPreprocess, RunReportingMeasures, RunTranslation
- Defined in:
- lib/openstudio/workflow/util/model.rb
Overview
Manages routine tasks involving OpenStudio::Model or OpenStudio::Workflow objects, such as loading, saving, and translating them.
Instance Method Summary collapse
-
#load_idf(idf_path, logger) ⇒ Object
Method to create / load an IDF file.
-
#load_osm(osm_path, logger) ⇒ Object
Method to create / load an OSM file.
-
#save_epjson(model_epjson, save_directory, name = 'in.epJSON') ⇒ String
Saves an OpenStudio EpJSON model object to file.
-
#save_idf(model_idf, save_directory, name = 'in.idf') ⇒ String
Saves an OpenStudio IDF model object to file.
-
#save_osm(model, save_directory, name = 'in.osm') ⇒ String
Saves an OpenStudio model object to file.
-
#translate_idf_to_epjson(model_idf, logger = nil) ⇒ Object
Translates an IDF model into an EnergyPlus epJSON object.
-
#translate_to_energyplus(model, logger = nil) ⇒ Object
Translates a OpenStudio model object into an OpenStudio IDF object.
Instance Method Details
#load_idf(idf_path, logger) ⇒ Object
Method to create / load an IDF file
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/openstudio/workflow/util/model.rb', line 78 def load_idf(idf_path, logger) logger.info 'Loading IDF model' # Load the IDF into a workspace object and return it logger.info "Reading in IDF model #{idf_path}" idf = OpenStudio::Workspace.load(idf_path) raise "Failed to load IDF file #{idf_path}" if idf.empty? idf.get end |
#load_osm(osm_path, logger) ⇒ Object
Method to create / load an OSM file
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/openstudio/workflow/util/model.rb', line 51 def load_osm(osm_path, logger) logger.info 'Loading OSM model' # Load the model and return it logger.info "Reading in OSM model #{osm_path}" loaded_model = nil begin translator = OpenStudio::OSVersion::VersionTranslator.new loaded_model = translator.loadModel(osm_path) rescue StandardError # TODO: get translator working in embedded. # Need to embed idd files logger.warn 'OpenStudio VersionTranslator could not be loaded' loaded_model = OpenStudio::Model::Model.load(osm_path) end raise "Failed to load OSM file #{osm_path}" if loaded_model.empty? loaded_model.get end |
#save_epjson(model_epjson, save_directory, name = 'in.epJSON') ⇒ String
Saves an OpenStudio EpJSON model object to file
196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/openstudio/workflow/util/model.rb', line 196 def save_epjson(model_epjson, save_directory, name = 'in.epJSON') epjson_filename = File.join(save_directory.to_s, name.to_s) File.open(epjson_filename, 'w') do |f| f << model_epjson.to_s # make sure data is written to the disk one way or the other begin f.fsync rescue StandardError f.flush end end epjson_filename end |
#save_idf(model_idf, save_directory, name = 'in.idf') ⇒ String
Saves an OpenStudio IDF model object to file
175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/openstudio/workflow/util/model.rb', line 175 def save_idf(model_idf, save_directory, name = 'in.idf') idf_filename = File.join(save_directory.to_s, name.to_s) File.open(idf_filename, 'w') do |f| f << model_idf.to_s # make sure data is written to the disk one way or the other begin f.fsync rescue StandardError f.flush end end idf_filename end |
#save_osm(model, save_directory, name = 'in.osm') ⇒ String
Saves an OpenStudio model object to file
154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/openstudio/workflow/util/model.rb', line 154 def save_osm(model, save_directory, name = 'in.osm') osm_filename = File.join(save_directory.to_s, name.to_s) File.open(osm_filename, 'w') do |f| f << model.to_s # make sure data is written to the disk one way or the other begin f.fsync rescue StandardError f.flush end end osm_filename end |
#translate_idf_to_epjson(model_idf, logger = nil) ⇒ Object
Translates an IDF model into an EnergyPlus epJSON object
136 137 138 139 140 141 142 143 144 145 |
# File 'lib/openstudio/workflow/util/model.rb', line 136 def translate_idf_to_epjson(model_idf, logger = nil) logger ||= ::Logger.new($stdout) logger.info 'Translate IDF to epJSON in preparation for EnergyPlus' a = ::Time.now model_epjson = OpenStudio::EPJSON.toJSONString(model_idf) b = ::Time.now logger.info "Translate IDF to EnergyPlus epJSON took #{b.to_f - a.to_f}" model_epjson end |
#translate_to_energyplus(model, logger = nil) ⇒ Object
(rhorsey) rescue errors here
Translates a OpenStudio model object into an OpenStudio IDF object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/openstudio/workflow/util/model.rb', line 97 def translate_to_energyplus(model, logger = nil) logger ||= ::Logger.new($stdout) logger.info 'Translate object to EnergyPlus IDF in preparation for EnergyPlus' a = ::Time.now # ensure objects exist for reporting purposes model.getFacility model.getBuilding ft = OpenStudio::EnergyPlus::ForwardTranslator.new = [:ft_options] if !.empty? msg = "Custom ForwardTranslator options passed:\n" .each do |opt_flag_name, h| ft_method = h[:method_name] opt_flag = h[:value] # Call the FT setter with the value passed in ft.method(ft_method).call(opt_flag) msg += "* :#{opt_flag_name}=#{opt_flag} => ft.#{ft_method}(#{opt_flag})\n" end logger.info msg end model_idf = ft.translateModel(model) b = ::Time.now logger.info "Translate object to EnergyPlus IDF took #{b.to_f - a.to_f}" model_idf end |