2017-06-12 22 views
0

我是OpenMDAO的新手,我想構建一個由windfarm(Group)組成的OpenMDAO模型,它包含幾個風力渦輪機(組件)。當計算所有風機時,應進行基於所有風機(風電場)結果的進一步計算。例如:每個風力渦輪機組件計算其特定功率輸出,最終總功率應計算爲渦輪機特定功率的總和。OpenMDAO 1.xx中的asm.connect('mycomp1.y','mycomp2.x [5]')

因爲它是以下功能轉換指南中提到的新OpenMDAO不支持:

asm.connect('windfarm.windturbine5.power', 'windfarm.eval.power[5]') 

是否有任何變通來實現相同/相似的結果?

謝謝 傑羅姆


編輯: 下面的例子現在工作:

from openmdao.api import IndepVarComp, Component, Problem, Group 


class Summer(Component): 

    def __init__(self): 
     super(Summer, self).__init__() 
     self.add_param('summand:x0', val=0.0) 
     self.add_param('summand:x1', val=0.0) 
     self.add_output('sum', shape=1) 

    def solve_nonlinear(self, params, unknowns, resids): 
     x0 = params['summand:x0'] 
     x1 = params['summand:x1'] 
     unknowns['sum'] = x0 + x1 


if __name__ == "__main__": 
    top = Problem() 
    root = top.root = Group() 
    root.add('wt0', IndepVarComp('power', 1000.0)) 
    root.add('wt1', IndepVarComp('power', 2000.0)) 
    root.add('eval', Summer()) 
    root.connect('wt0.power', 'eval.summand:x0') 
    root.connect('wt1.power', 'eval.summand:x1') 
    top.setup() 
    top.run() 
    print(top['eval.sum']) 

PS:有一種簡單的方法來遍歷一個變樹(例如, PARAMS [ '被加數'])?

回答

0

您必須爲每個風力輸出單獨輸入。我建議如下:

asm.connect('windfarm.windturbine0.power', 'windfarm.eval.power:0') 
asm.connect('windfarm.windturbine1.power', 'windfarm.eval.power:1') 
+0

嗨賈斯汀, 命名僅以數字會導致錯誤的變量樹的變量:'NameError:「加數:0」是不是有效的變量name.'但像我在我的問題中添加的例子那樣工作。謝謝! – Jerome

相關問題