在你鍵入的代碼中有幾個缺失的括號,但是那些必須來自將其轉錄到這裏。你缺少的主要東西是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])