一般化された行列問題があります。線形安定性解析問題のスペクトル法からのです。私の行列Bは対角で正の半定値です。Aは非エルミートで複雑です。
私の問題は、SLEPcの一般化された固有値ソルバーを使用すると、「LU分解のピボットがゼロ」というエラーが発生することです。以下の残りの部分は、問題の詳細とこれまでに試したものです。助けてくれてありがとう!
問題の詳細
行列は最大で約48000 x 48000になり、固有値を見つけたいと思います。私が興味を持っている固有値は、0 + 0iの近くに実数部が最も大きいものです。理想的には、それらが内部にある場合(つまり、スペクトル内の正の実部がより大きい他の固有値がある場合)でもそれらを見つけられるようにしたいです。ただし、すべての固有値が対象の固有値以外の実部<0である問題に対して機能させることができれば幸いです。
現時点では、scipy linalg.eigおよびsparse.eigs関数を使用しています。私の知る限り、これらはそれぞれLAPACKとARPACKを使用して重い作業を行います。私は、SLEPcライブラリを使用することで、より良いパフォーマンスを達成できるかどうかを確認することにしました。これが悪い決定であるならば、私に知らせてください!
SLEPc固有値ソルバーでPETScを使用したいと思います。私は、チュートリアルの一部として提供されている例を使用してSLEPcを試しました。演習7(http://www.grycap.upv.es/slepc/handson/handson3.html)は、ファイルから行列AおよびBを読み取り、解を出力します。提供されたマトリックスを使用してこれを正常に動作させました。ただし、問題の小さいサイズのテストバージョン(6000x6000)に置き換えると、指定したコマンドライン引数に応じてさまざまなエラーが発生します。
私が抱えている主な問題は、「LU分解のピボットがゼロ」というエラーです。デフォルト設定を使用する場合。
これは、Bにゼロの行が含まれているという事実に関連していると思いますが、線形代数の私の理解はやや基本的です。これは本当ですか?
petscのWebサイトで提案されているオプション、-pc_factor_shift_type NONZEROなどを設定しようとしましたが、これらのオプションが使用されなかったという追加の警告が表示されます
これは前提条件の問題であると想定したので、-eps_targetを0.1に設定し、-st_type sinvertとshiftを指定した場合と指定しない場合の両方を試しました。それでも同じエラーが発生します。
次に、-st_pc_type jacobiとst_pc_type bjacobiを試しました。jacobiは実行されますが、固有値は生成されません。ブロックjacobiはLU分解を実行し、同じエラーを再度表示します。
デフォルトの方法はkrylov-schurなので、-eps_type gdおよび-eps_type jdオプションを使用して実験しました。残念ながら、これらはナンセンス固有値を生成するようですが、scipyでLAPACKを使用して解決すると、スペクトルにまったく表示されません。
私の行列の問題は特異ではないことを知っています。なぜなら、私はscipyを使用してそれを解くことができるからです。
これらすべての異なるソルバーの動作を理解するために、PETSCとSLEPCのマニュアル以外に読む必要がある本/ガイドを知っていますか?
コマンドラインオプションがない場合の出力を以下に示します。
私の最初の投稿を読んでいただきありがとうございます。
よろしく、トビー
SLEPcからのターミナル出力
tobymac:SLEPC toby $ mpiexec ./ex7 -f1 LHS-N7-M40-Re0.0-b0.1-Wi5.0-amp0.02.petsc -f2 RHS-N7-M40-Re0.0-b0.1- Wi5.0-amp0.02.petsc -eps_view
ファイルに保存されている一般化された固有問題。
[0] PETSC ERROR:---------------------エラーメッセージ--------------------- --------------- [0] PETSCエラー:LU分解でゼロピボットが検出されました:http ://www.mcs.anl.gov/petsc/documentation/faq.html#ZeroPivotを参照してください![0] PETSCエラー:行列の空の行:元の順序の行2395が順列順序3600になっています [0] PETSCエラー:-------------------------------------------- ---------------------------- [0] PETSCエラー:Petscリリースバージョン3.3.0、パッチ5、土12月1日15:10 :41 CST 2012 [0] PETSCエラー:最近の更新については、docs / changes / index.htmlをご覧ください。[0] PETSC ERROR:トラブルシューティングのヒントについては、docs / faq.htmlをご覧ください。[0] PETSCエラー:マニュアルページについては、docs / index.htmlをご覧ください。[0] PETSCエラー:-------------------------------------------- ---------------------------- [0] PETSCエラー:tobymacという名前のアーチダーウでのtoby Thu Jul 25 10による./ex7 :20:40 2013 [0] PETSCエラー:/ opt / local / libからリンクされたライブラリ[0] PETSCエラー:2013年7月23日火曜日15:11:27に実行を構成[0] PETSCエラー:
[0] PETSCエラー:/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.c [0] PETSCのPCSetUp()行832エラー:/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc.c [0] PETSCエラーのKSPSetUp()行278がPCSetUp_Redundant( )/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/impls/redundant/redundant.c [0] PETSCエラー:PCSetUp()行の176行目/opt/local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/pc/interface/precon.cの832 [0] PETSCエラー:/ optのKSPSetUp()行278 /local/var/macports/build/_Users_toby_MyPorts_scienceports_math_petsc/petsc/work/petsc-3.3-p5/src/ksp/ksp/interface/itfunc。c [0] PETSCエラー:src / st / impls / shift / shift.cのSTSetUp_Shift()行94 c [0] PETSCエラー:src / st / interface / stsolve.cのSTSetUp()行280 [0] PETSCエラー:src / eps / interface / setup.cのEPSSetUp()行204 [0] PETSCエラー:src / eps / interface / solve.cのEPSSolve()行109 tobymac:SLEPC toby $