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
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_idf(model_idf, save_directory, name = 'in.idf') ⇒ String
Saves an OpenStudio IDF model object to file
139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/openstudio/workflow/util/model.rb', line 139 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
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/openstudio/workflow/util/model.rb', line 118 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
97 98 99 100 101 102 103 104 105 106 107 108 109 |
# 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 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 |