2016-08-23 10 views
0

私はベクトルがnumpy配列として扱われる独立変数xを持っています。私はベクトルの他の値に基づいて、そのベクトルの値のいくつかを制限することができるようにしたいと思います。 x_(k)< x_(k + 1)である。私が試した:私の変数が存在しないと配列は、フロートに接続することを試みる程度の誤差を与えるOpenMDAO 1.xのnumpy配列から単一のスカラーを渡す

root.add('p1',IndepVarComp('x',x=np.ones(10,dtype=float)) 
root.add('con',ExecComp('c0=x[1]-x[0]') 
root.connect('p1.x','con.x') 

を。特定の値を出力配列からスケーラ入力に接続する正しい構文は何ですか?

答えて

0

あなたが入力したコードには、いくつかの括弧がありませんが、それらはここに転記する必要があります。あなたが欠けていた主なものは、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]) 
関連する問題