In [2]:
import yaml
In [3]:
def readyml(filename):
with open(filename, 'r') as f:
return yaml.load(f.read())
In [4]:
pb = readyml('seam_problem.yml')
In [5]:
pb
Out[5]:
In [6]:
from openmdao.api import Problem, Group
In [7]:
import importlib
def load_class(full_class_string):
"""
dynamically load a class from a string
"""
class_data = full_class_string.split(".")
module_path = ".".join(class_data[:-1])
class_str = class_data[-1]
module = importlib.import_module(module_path)
# Finally, we retrieve the Class
return getattr(module, class_str)
In [8]:
class FUSEDProblem(Problem):
def __init__(self, filename):
super(FUSEDProblem, self).__init__()
pb = readyml(filename)
if 'root' in pb:
if pb['root']['class'] == 'Group':
self.root = Group()
if 'components' in pb['root']:
for c in pb['root']['components']:
if 'parameters' not in c:
c['parameters'] = {}
self.root.add(c['name'], load_class(c['class'])(**c['parameters']), promotes=c['promotes'])
def load_inputs(self, filename):
inputs = readyml(filename)
for k,v in inputs.items():
pb[k] = v
In [15]:
pb = FUSEDProblem('seam_problem.yml')
out = pb.setup()
#pb.load_inputs('seam_turbime_inputs.yaml')
#pb.run()
In [17]:
out['dangling_params']
Out[17]:
In [ ]: