あなたが入力したコードには、いくつかの括弧がありませんが、それらはここに転記する必要があります。あなたが欠けていた主なものは、ExecComp
への余分な議論だったので、着信xのサイズを決める方法を知っていました。
##############################################
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」の単一のインデックスからの接続を発行することです:私はこれを実行すると、私が期待される出力を得る
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'])
':
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])