FAS-マルチグリッドは線形欠陥修正よりも遅いですか?


9

線形欠陥修正(LDC)と完全近似スキーム(FAS)の両方を使用して、Vサイクルマルチグリッドソルバーを実装しました。

私の問題は次のとおりです。LDCを使用すると、残差が1サイクルあたり約0.03倍減少します。FAS実装も線形係数で収束しますが、係数は約0.58です。したがって、FASには約20倍のサイクル数が必要です。

ほとんどのコードは共有され、唯一の違いはダウン/アップの計算です。LDCは

ダウン:uH:=0,bH:=IhH(bhLhuh)

up:uh:=uh+IHhuH

およびFASの用途

ダウン:uH:=IhHuh,bH:=IhHbh+LHIhHuhIhHLhuh

up:uh:=uh+IHh(uHIhHuh)

私のテスト設定は、Briggの「マルチグリッドチュートリアル、第2版」、p。64、分析ソリューションがあります

u(x,y)=(x2x4)(y4y2)x,y[0,1]2

Lv=Δu=:bLv=0

u(x,y)=0v=1

ダウン/アップコードのみが異なるため、LDCの結果は本に準拠しており、FASも少なくとも機能しているように見えるため、同じ線形設定でそれが非常に遅い理由がわかりません。

=01015101

写真は言葉以上のものを言うので:

// first cycle, levels 0-4
// DOWN
VCycle top 4, start               res_norm 3.676520e+02 // initial residual
VCycle top 4, cycle 0, current 4, res_norm 3.676520e+02
VCycle top 4, cycle 0, current 4, res_norm 1.520312e+02 // relaxed (2 iterations)
VCycle tau_norm 2.148001e+01 (DEBUG calculation)
VCycle top 4, cycle 0, current 3, res_norm 1.049619e+02 // restricted
VCycle top 4, cycle 0, current 3, res_norm 5.050392e+01 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 2, res_norm 3.518764e+01 // restricted
VCycle top 4, cycle 0, current 2, res_norm 1.759372e+01 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 1, res_norm 1.234398e+01 // restricted
VCycle top 4, cycle 0, current 1, res_norm 4.728777e+00 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 0, res_norm 3.343750e+00 // restricted
// coarsest grid
VCycle top 4, cycle 0, current 0, res_norm 0.000000e+00 // solved
// UP
VCycle top 4, cycle 0, current 1, res_norm 3.738426e+00 // prolonged
VCycle top 4, cycle 0, current 1, res_norm 0.000000e+00 // relaxed (many iterations)
VCycle top 4, cycle 0, current 2, res_norm 1.509429e+01 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 2, res_norm 2.512148e-15 // relaxed (many iterations)
VCycle top 4, cycle 0, current 3, res_norm 4.695979e+01 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 3, res_norm 0.000000e+00 // relaxed (many iterations)
VCycle top 4, cycle 0, current 4, res_norm 1.469312e+02 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 4, res_norm 9.172812e-24 // relaxed (many iterations)

サイクルごとに数桁しか得られないのか、これが細かいグリッドへの補間中にエラーを示しているのかわかりません。後者の場合、常に2つの緩和を使用する場合、LDCはどのようにしてブックごとの残存率を約0.03にすることができますか?

回答:


7

私は非線形問題に対してマルチグリッドを行うので、主に修正の代わりにFASを使用するため、あなたの答えを直接知りませんが、検討できるいくつかの考え:

  • あなたは線形問題に線形補正スキームを適用しているので、それが非常にうまく機能することはショックではありません。

  • 境界条件を考慮します。正しく実行していることを確認します。また、複雑なBCは粗いグリッドで完全に異なって見える可能性があるため、そこでの修正はあまり役に立たないことに注意してください。

  • ソース用語の扱いを再確認してください。ポアソンのために書いたとき、その用語に関連する延長段階で何かを台無しにしたことを覚えています。

  • 最も粗いグリッドに収束するまで反復する必要性を見たことがありません。解決策は、細かいグリッドの残差が正しいかどうかに依存しますが、そうではありません。あなたはそれらのエラーをドメインの外に押し出そうとしている/それらを滑らかにしようとしている。初期の反復で最も粗いグリッドに完全に収束している場合、残差が最新ではないため、ソリューションは正しいファイングリッドソリューションからかなり遠くなります。これがほぼ確実に、延長段階で残差が急上昇する理由です。

  • また、制限演算子と延長演算子の両方の緩和係数を試してください(0.75など)。

それが役に立った場合、これは私のFAS残余履歴が、7Vサイクル全体にわたって単一グリッドを使用したポアソン問題のように見えたものです。リラクゼーション係数は0.75であると思います。3段のRKスキームをよりスムーズにするために、各グリッドレベルで1回の反復で使用していました。

研究の歴史


お返事ありがとうございます。線形のケースと単純なBC(square border = 0)は最初のステップにすぎません。実際のケースのテストは、「簡単な」設定が機能した後で行われます。制限と延長の緩和係数とは、あなたが何を意味しているのか理解できません。現在、延長には双線形補間を使用し、制限には半重み付けを使用しています。
Silpion 2013

uh:=uh+αIHh(uHIhHuh)0<α<1

(1α)

@Aureliusは、粗いグリッドに収束する必要はないと述べています。私はあなたの推論に同意しますが、文献の収束証明(線形の場合)は、粗いグリッドの解法が正確であると仮定しています。粗いグリッドソルブは正確ではないはずであると述べられている(線形または非線形の場合の)参照を知りません。これについての参照を引用できるかどうか疑問に思いましたか?私はこれを自分で見ることに非常に興味があります
Keeran Brabazon 2013

@KeeranBrabazon私もこれについての参照はありません。正直なところ、マルチグリッドの収束証明の詳細についてはあまり詳しくありません。その緩和要因を紹介する初期の文献を探すことをお勧めします。この要素は、私が見たすべての最新のマルチグリッド実装に共通しており、正確なコースソリューションが必要である/望ましい場合、それが不要であることは直感的に真実です。直感的な証明として、最も粗いグリッドと最も細いグリッドの境界条件がどのように見えるか想像します。彼らが非常に異なるソリューションを作成していると想像するのは簡単です。
Aurelius

6

IhHI^hHuhuh(uHIhHuh)I^hHuh

スペクトル的には、状態制限は高い二次次数(低周波数の正確な保存)のみを必要としますが、一次次数(高周波数のエイリアシング)は重要ではありません。注入には、1次の0と無限の2次があります。一方、残余制限では、(少なくとも)1次と2次の両方が正であることを必要とします。Achi Brandtのマルチグリッドガイドのセクション4.3を参照してください。

MGメソッドを設計するときは、残差ではなくエラーを調べて、ノルムを適切に重み付けすることを確認するのも良い方法です。


良い点、そして私はそれらの線に沿って何かを言及することに失敗しました。マルチグリッドの実用的な使用の重要な側面の1つは、よりスムーズな選択です。高周波エラーをできるだけ速く減衰させて、説明した問題に対処することが望まれます。
Aurelius

@Aurelius提供されたログから、平滑化が問題ではないことがわかります。Silpionは、適切に収束する欠陥修正MGと同じ滑らかさを使用していることを思い出してください。
ジェドブラウン

>0.8

1

uoldH=IhHuh

uhuh+IHh(uHIhHuh)=uh+IHh(uHuoldH)

H2HuoldHuoldH

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