不定対称システム用のPETScのどの前提条件(およびソルバー)を使用する必要がありますか?


12

私のシステムは、ラグランジュ乗数を伴う対称FE問題です(たとえば、非圧縮ストークスの流れ)。

ABTBC

ここで、は典型的なケースです(ラグランジュ乗数が最後に現れるように方程式に番号が付けられていることを確認しました)。システムは非常に大規模です(+ 100k行)。C=0

この質問に対する答えを読んで、混合FE問題に使用できる適切な前提条件が存在するという印象を受けました。

PETScを使用して、MINRES(-ksp_type minres -pc_type none -mat_type sbaij)でシステムを解決できましたが、精度はそれほど高くありません(線形問題に対していくつかのニュートン反復が発生します)。前提条件とksp-solverの他の組み合わせは機能しないようです。

MINRESを使用するよりも速くこのシステムを解決するPETScのフラグの組み合わせはありますか?


1
SciComp SEへようこそ!あなたの質問は、明確さと一般性の観点から適切に提示されています。わずかに不明瞭または不完全な文は1つだけです。不正確な計算が原因であるとはどういう意味ですか。
1

1
文を完成させるのを忘れました!私はそれが今明確であることを望みます。
ミカエルオーマン

回答:


13

警告

サドルポイントの問題を解決するには、明確な問題よりも多くの選択肢が必要です。また、失敗する可能性のあるものがたくさんあります。すべてのレベルのモニターを使用して収束をデバッグし、補助演算子が特異な場合にヌルスペースが正しく処理されるようにし(通常は一定のヌルスペース)、前提条件が安定するようにします。これらのテクニックはこの質問で議論されます。

サドルポイントの問題を解決する

ユーザーマニュアルのブロック行列の解決に関するセクションから開始できます。ストークスのような問題の場合、PCFIELDSPLITを使用してSchur補数前提条件を作成できます。

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

これは、Schur補数()の最小二乗コミュテーター前提条件と組み合わせることができます-fieldsplit_1_pc_type lsc。それは一般的で-fieldsplit_1_ksp_type preonlyあり、外側の反復がほとんどの作業を行うようにします。このように使用すると、ブロック三角形のバリアントが一般的-pc_fieldsplit_schur_fact_type upperです。

ソルバーの構成の詳細は、ペーパー (preprint)のオプションoptionsを使用して見つけることができます。これは、マルチグリッドをブロック分解(マルチグリッド内にフィールド分割するでの通勤についても説明しています。

多くの問題では、フィールド分解とSchur補完の前提条件をカスタマイズする必要があります。これらの多くは補助演算子を必要とします。たとえば、Elmanらの「圧力対流拡散」(PCD)法では、圧力空間での補助演算子の離散化が必要です。この目的のために、PCSHELLの例を参照してください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.