선형 결함 수정 (LDC)과 완전 근사법 (FAS)을 모두 사용하여 V-Cycle 멀티 그리드 솔버를 구현했습니다.
내 문제는 다음과 같습니다. LDC를 사용하면 잔차가 사이클 당 ~ 0.03 배 줄어 듭니다. FAS 구현은 선형 계수와도 수렴하지만 그 계수는 ~ 0.58에 불과합니다. 따라서 FAS는 사이클 수의 약 20 배가 필요합니다.
대부분의 코드는 공유되지만 유일한 차이점은 다운 / 업 계산, LDC는
아래로 :
위로 :
FAS는
아래로 :
위로 :
내 테스트 설정은 Brigg의 "A Multigrid Tutorial, Second Edition", p. 64, 분석 솔루션이 있습니다
와
Laplace-Operator 로 전형적인 선형 5- 포인트 스텐실을 사용하여 방정식은 입니다. 초기 추측은 입니다.
의 초기 추측을 사용하여 테스트 설정을 예를 들어 사소한 하면 거의 동일한 수렴 계수가 발생합니다.
다운 / 업 코드 만 다르기 때문에 LDC 결과가 책을 준수하고 FAS도 작동하는 것처럼 보입니다. 동일한 선형 설정에서 왜 그렇게 느려질 지 전혀 모릅니다.
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의 도서 별 잔존 비율을 달성 할 수있는 방법은 무엇입니까?