您键入的代码中有几个括号缺失,但这些括号必须来自将其转录到此处。您缺少的主要内容是一个额外的参数,ExecComp
以便它知道如何调整传入 x 的大小。
import numpy as np
from openmdao.api import Problem, Group, IndepVarComp, ExecComp
prob = Problem()
prob.root = root = Group()
root.add('p1', IndepVarComp('x', np.array([3, 7, 5], dtype=float)))
root.add('con', ExecComp('co = x[1] - x[0]', x=np.zeros(3, )))
root.connect('p1.x','con.x')
prob.setup()
prob.run()
print('con', prob['con.co'])
当我运行它时,我得到了预期的输出:
##############################################
Setup: Checking root problem for potential issues...
No recorders have been specified, so no data will be saved.
Setup: Check of root problem complete.
##############################################
('con', 4.0)
另一种方法是使用缩放器表达式,然后从“p1.x”的单个索引发出连接:
root.add('con2', ExecComp('co = b - a'))
root.connect('p1.x', 'con2.a', src_indices=[0])
root.connect('p1.x', 'con2.b', src_indices=[1])