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
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/openstudio/workflow/util/model.rb', line 48 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
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/openstudio/workflow/util/model.rb', line 21 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
166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/openstudio/workflow/util/model.rb', line 166 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
145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/openstudio/workflow/util/model.rb', line 145 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
124 125 126 127 128 129 130 131 132 133 134 135 136 |
# File 'lib/openstudio/workflow/util/model.rb', line 124 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
106 107 108 109 110 111 112 113 114 115 |
# File 'lib/openstudio/workflow/util/model.rb', line 106 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
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/openstudio/workflow/util/model.rb', line 67 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 = @options[: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 |