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
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/openstudio/workflow/util/model.rb', line 40 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
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/openstudio/workflow/util/model.rb', line 14 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 # 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
92 93 94 95 96 |
# File 'lib/openstudio/workflow/util/model.rb', line 92 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') { |f| f << model_idf.to_s } idf_filename end |
#save_osm(model, save_directory, name = 'in.osm') ⇒ String
Saves an OpenStudio model object to file
79 80 81 82 83 |
# File 'lib/openstudio/workflow/util/model.rb', line 79 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') { |f| f << model.to_s } 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
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/openstudio/workflow/util/model.rb', line 58 def translate_to_energyplus(model, logger = nil) logger = ::Logger.new(STDOUT) unless logger 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 |