Module: OpenStudio::Workflow::Util::Model
- Included in:
- 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_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_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
75 76 77 78 79 80 81 82 83 84 |
# File 'lib/openstudio/workflow/util/model.rb', line 75 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
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/openstudio/workflow/util/model.rb', line 49 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_idf(model_idf, save_directory, name = 'in.idf') ⇒ String
Saves an OpenStudio IDF model object to file
135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/openstudio/workflow/util/model.rb', line 135 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
114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/openstudio/workflow/util/model.rb', line 114 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_to_energyplus(model, logger = nil) ⇒ Object
TODO:
(rhorsey) rescue errors here
Translates a OpenStudio model object into an OpenStudio IDF object
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/openstudio/workflow/util/model.rb', line 93 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 forward_translator = OpenStudio::EnergyPlus::ForwardTranslator.new model_idf = forward_translator.translateModel(model) b = ::Time.now logger.info "Translate object to EnergyPlus IDF took #{b.to_f - a.to_f}" model_idf end |