2015-11-20 76 views
0

我在OpenMDAO中有一個組件,沒有輸出,用於向組中的其他人提供輸入。儘管其輸出未連接,但該組件中的apply_linear仍被調用。 OpenMDAO 1.x中的相關性降低算法不應該不需要調用apply_linear這個方法嗎?OpenMDAO 1.x相關性降低

回答

2

事實證明,默認情況下,每個變量的相關性降低不會打開。你可以打開它:

prob.root.ln_solver = LinearGaussSeidel() 
    prob.root.ln_solver.options['single_voi_relevance_reduction'] = True 

這個選項被設置爲默認值,因爲它通過爲每個感興趣的數量分配單獨的載體中使用更多的內存假(但每個矢量較小,因爲它僅包含相關的變量,但總尺寸可能會更大)。而且,只有在使用線性高斯賽德爾作爲最高線性求解器時,相關性降低纔是適用的。

2

我的聲望還不夠高,還沒有留下評論,所以我只是增加了另一個答案。我只想提到,如果你不是在MPI下運行,激活single_voi_relevance_reduction基本上是免費的。內存使用的真正增加不是由於矢量本身造成的,而是由於我們爲了將數據從源數組傳輸到目標數組而存儲的索引數組。我們被迫在MPI下使用索引數組,因爲PETSc需要它,但是當我們不使用MPI時,我們使用python slice對象來完成數據傳輸。切片對象只需要很少的內存。