Dies ist ein Add-on zu einer vorherigen Frage zum Iterieren der Werte in und OpenMDAO-Problem. Ich möchte Werte mit top.run() berechnen können. Überprüfen Sie dann die Änderungen. Der vorherige Rat scheint jedoch nicht zu funktionieren.Die Werte von prob.root.unknowns ändern sich nicht mit solve
Ich habe festgestellt, dass prob.root.unknowns nicht wirklich ändert, wenn das Problem geändert oder ausgeführt wird.
class TestObj(Component):
def __init__(self):
Component.__init__(self)
self.add_param('x',5.0)
self.add_output('y',5.0)
def solve_nonlinear(self,params,unknowns,resids):
unknowns['y']=params['x']
top = Problem()
root = Group()
top.root=root
root.add('split',IndepVarComp('x',2.0),promotes=['*'])
root.add('test',TestObj(),promotes=['*'])
top.setup()
top.root.list_connections()
print 'starting'
print top['x']
print top['y']
for k,v in top.root.unknowns.iteritems():
print k
print v['val']
top.run()
print 'after first solve'
print top['x']
print top['y']
for k,v in top.root.unknowns.iteritems():
print k
print v['val']
top['x']=33.0
print 'after second solve'
print top['x']
print top['y']
for k,v in top.root.unknowns.iteritems():
print k
print v['val']
top.run()
print 'after third solve'
print top['x']
print top['y']
for k,v in top.root.unknowns.iteritems():
print k
print v['val']