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


9

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

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

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

아래로 :uH:=0,bH:=IhH(bh−Lhuh)

위로 :uh:=uh+IHhuH

FAS는

아래로 :uH:=IhHuh,bH:=IhHbh+LHIhHuh−IhHLhuh

위로 :uh:=uh+IHh(uH−IhHuh)

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

u(x,y)=(x2−x4)(y4−y2) 와x,y∈[0,1]2

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

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

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

LDC와 FAS에는 초기 추측이 나쁜 경우에만 발생할 수있는 이상한 행동이 있습니다 (예 : 그러나 새로운 미세 그리드에 대한 보간이 에서 잔차를 증가시키는 전체 멀티 그리드 실험에서도 발생합니다. ~ ) : 거친 그리드에서 기계 정밀도로 솔루션이 해결되도록 사후 교정 완화 횟수를 매우 높은 수로 늘리면 한 단계 위로 올라갈 때 거의 모든 숫자가 느슨해집니다. 다음 미세 그리드로.=010−1510−1

그림이 말보다 더 많은 것을 말하고 있기 때문에 :

// 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−나는hH유h)0<α<1
— Aurelius

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

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

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

6

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

스펙트럼 상태 제한은 높은 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=나는hH유h V- 사이클 중에 다운되어 나중에 다시 사용할 때

유h←유h+나는Hh(유H−나는hH유h)=유h+나는Hh(유H−유영형엘디H).

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

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