私はScipyを使用してFEMプロジェクトに取り組んでいます。今私の問題は、スパース行列の組み立てが遅すぎるということです。密な小さな行列(要素ごとに1つ)のすべての要素の寄与を計算します。グローバル行列のアセンブリでは、すべての小さな密度行列をループし、行列エントリを次のように設定します。
[i,j] = someList[k][l]
Mglobal[i,j] = Mglobal[i,j] + Mlocal[k,l]
Mglobal
適切なサイズのlil_matriceでありsomeList
、インデックス変数をマップします。
もちろん、これはかなり遅く、行列の組み立て時間のほとんどを消費します。多くの小さな密行列から大きなスパース行列を組み立てるより良い方法はありますか?scipy.weaveを試しましたが、スパース行列では機能しないようです