선형 결함 수정보다 느린 FAS 멀티 그리드?


9

선형 결함 수정 (LDC)과 완전 근사법 (FAS)을 모두 사용하여 V-Cycle 멀티 그리드 솔버를 구현했습니다.

내 문제는 다음과 같습니다. LDC를 사용하면 잔차가 사이클 당 ~ 0.03 배 줄어 듭니다. FAS 구현은 선형 계수와도 수렴하지만 그 계수는 ~ 0.58에 불과합니다. 따라서 FAS는 사이클 수의 약 20 배가 필요합니다.

대부분의 코드는 공유되지만 유일한 차이점은 다운 / 업 계산, LDC는

아래로 :uH:=0,bH:=IhH(bhLhuh)

위로 :uh:=uh+IHhuH

FAS는

아래로 :uH:=IhHuh,bH:=IhHbh+LHIhHuhIhHLhuh

위로 :uh:=uh+IHh(uHIhHuh)

내 테스트 설정은 Brigg의 "A Multigrid Tutorial, Second Edition", p. 64, 분석 솔루션이 있습니다

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

Laplace-Operator 로 전형적인 선형 5- 포인트 스텐실을 사용하여 방정식은 입니다. 초기 추측은 입니다.Lv=Δu=:bLv=0

의 초기 추측을 사용하여 테스트 설정을 예를 들어 사소한 하면 거의 동일한 수렴 계수가 발생합니다.u(x,y)=0v=1

다운 / 업 코드 만 다르기 때문에 LDC 결과가 책을 준수하고 FAS도 작동하는 것처럼 보입니다. 동일한 선형 설정에서 왜 그렇게 느려질 지 전혀 모릅니다.

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 체계를보다 매끄럽게 사용하고있었습니다.

입술 역사


답장을 보내 주셔서 감사합니다. 선형 사례와 간단한 BC (제곱 경계 = 0)는 첫 번째 단계 일뿐입니다. 실제 사례 테스트는 '쉬운'설정 작업 후에 수행됩니다. 제한과 연장에 대한 완화 요인으로 무엇을 의미하는지 잘 모르겠습니다. 나는 현재 연장과 반가 중에 이중선 보간법을 사용하여 제한을 사용합니다.
Silpion

완화라는 말은 연장 단계에서 다음과 같이 변경하는 것입니다 : 여기서 은 완화 요소입니다. 일반적으로 솔루션이 복잡할수록이 요소는 낮아집니다. 많은 불연속성을 가진 솔루션에서 때로는 약 0.6으로 낮추어야하지만 일반적으로 0.75-0.85가 작동합니다. h: =h+α나는Hh(H나는hHh)0<α<1
Aurelius

알아 둘만 한. 내 설정에서 이것은 수렴 비율을 만큼 느리게 하지만 더 복잡한 데이터를 테스트 할 때 명심해야합니다. (1α)
Silpion

@Aurelius는 거친 그리드에 수렴하는 것이 필요하지 않다고 언급했습니다. 나는 당신의 추론에 동의하지만, 문헌의 수렴 증명 (선형의 경우)은 거친 그리드 풀이 정확하다고 가정합니다. 거친 그리드 해석이 정확하지 않아야한다고 언급 한 (선형 또는 비선형의 경우) 참조를 알지 못하며 이에 대한 참조를 인용 할 수 있는지 궁금하십니까? 나는 이것을 직접 보는 것에 매우 관심이있다
Keeran Brabazon

@KeeranBrabazon 나는 이것에 대한 참조가 없으며, 멀티 그리드의 수렴 증명에 대한 세부 사항에 정직하게 익숙하지 않습니다. 이완 요인을 소개하는 초기 문헌을 찾아 보는 것이 좋습니다. 이 요소는 내가 본 모든 현대적인 멀티 그리드 구현에 공통적이며, 정확한 코스 솔루션이 필요 / 필요하다면 필요하지 않을 것이라는 것은 직관적으로 사실입니다. 직관적 인 증거를 위해, 가장 거친 그리드와 최상의 그리드의 경계 조건이 어떤 것인지 상상합니다. 그들이 매우 다른 솔루션을 만들고 있다고 상상하기 쉽습니다.
Aurelius

6

꼭짓점 중심 이산화를 사용하는 경우 사용하는 것으로 보이는 전체 가중치 잔차 제한 대신 상태 제한을 주입해야합니다. 즉, 교체나는hH나는^hH상태를 제한 할 때. 상태에 대해 전체 가중치 제한을 사용하면 적용 후 상태의 고주파 성분에 대한 앨리어싱이 생성됩니다.hh(H나는hHh)거친 보정 전과 동일한 규모로 새로운 소음이 발생합니다 (경계 조건이 특히이 영향의 원인 일 수 있음). 주사를 사용하십시오,나는^hHh이 문제는 사라져야합니다.

스펙트럼 상태 제한은 높은 2 차 순서 (낮은 주파수의 정확한 보존) 만 필요하지만 1 차 순서 (고주파의 앨리어싱)는 중요하지 않습니다. 주입에는 1 차 차수 0과 무한 2 차 차수가 있습니다. 한편, 잔여 제한은 1 차 및 2 차 차수 모두 양수 여야합니다 (적어도). Achi Brandt의 멀티 그리드 안내서 섹션 4.3을 참조하십시오 .

MG 분석법을 설계 할 때 잔차가 아닌 오차를 확인하고 표준에 적절히 가중치를 부여하는 것이 좋습니다.


좋은 지적, 그리고 나는 그 선을 따라 뭔가를 언급하지 못했습니다. 멀티 그리드를 실제로 사용하는 한 가지 중요한 측면은 더 부드러운 선택입니다. 고주파 오류를 가능한 빨리 감쇠시켜 설명하는 문제를 해결하는 것이 좋습니다.
Aurelius

@Aurelius 제공된 로그에서 매끄럽게 문제가 없음을 알 수 있습니다. Silpion은 결함 수정 MG와 동일하게 부드럽게 수렴합니다.
Jed Brown

브란트의 멀티 그리드 가이드에 대한 링크에 감사드립니다. Brigg의 멀티 그리드 자습서를 마친 후에 자세히 읽어 보겠습니다. 지금 문제를 해결했지만 (다른 답변 참조) 현재 주 및 잔여 제한 모두에 대해 전체 가중치를 사용하고 있습니다. 사출 설정을 사용하는 것이 설정에서 작동하지 않는 것 같습니다. 잔존 비율이>0.8잔류 및 에러 L2- 노름은 매우 빨리 감소를 멈 춥니 다. 주사가 실패하는 이유가 있습니까?
Silpion

1

나는 지금 문제로 해결했다. 나는 저장했다영형H=나는hHh V- 사이클 중에 다운되어 나중에 다시 사용할 때

hh+나는Hh(H나는hHh)=h+나는Hh(H영형H).

문제는 H2H, 영형H제자리 에 편안 했다 . 완화 단계 전에 사본을 저장하면 도움이됩니다. 이후영형H FAS에만 필요했으며 선형 계산에는 표시되지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.