線形欠陥修正(LDC)と完全近似スキーム(FAS)の両方を使用して、Vサイクルマルチグリッドソルバーを実装しました。
私の問題は次のとおりです。LDCを使用すると、残差が1サイクルあたり約0.03倍減少します。FAS実装も線形係数で収束しますが、係数は約0.58です。したがって、FASには約20倍のサイクル数が必要です。
ほとんどのコードは共有され、唯一の違いはダウン/アップの計算です。LDCは
ダウン:
up:
およびFASの用途
ダウン:
up:
私のテスト設定は、Briggの「マルチグリッドチュートリアル、第2版」、p。64、分析ソリューションがあります
ダウン/アップコードのみが異なるため、LDCの結果は本に準拠しており、FASも少なくとも機能しているように見えるため、同じ線形設定でそれが非常に遅い理由がわかりません。
写真は言葉以上のものを言うので:
// 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にすることができますか?