균일하지 않은 메시 (1D 만) 유한 체적 법에서 푸 아송 방정식을 풀 때 발생하는 고유 한 오류


9

지난 며칠 동안이 오류를 디버깅하려고했지만 아무도 진행하는 방법에 대한 조언이 있는지 궁금합니다.

셀 센터에 알 수없는 것이 정의되고 셀면의 플럭스가있는 불균일 유한 체적 메쉬에서 단계 전하 분포 (정전기 / 반도체 물리학의 일반적인 문제)에 대한 푸 아송 방정식을 풀고 있습니다.

0=(ϕx)x+ρ(x)

청구 프로필 (원본 용어)은

ρ(x)={−1,if −1≤x≤01,if 0≤x≤10,otherwise

경계 조건은

ϕ(xL)=0∂ϕ∂x|xR=0

도메인은 입니다.[−10,10]

advection-diffusion-reaction equation을 해결하기 위해 개발 된 코드를 사용하고 있습니다 ( http://danieljfarrell.github.io/FVM ). 이류-확산-반응식은 포아송 방정식의보다 일반적인 경우입니다. 실제로 포아송 방정식은 대류 속도를 0으로 설정하고 과도 항을 제거함으로써 회복 될 수 있습니다.

이 코드는 균일하고 비 균일하며 임의의 그리드에 대한 여러 상황에 대해 테스트되었으며 항상 advection-diffusion-reaction equation에 대한 합리적인 솔루션 ( http://danieljfarrell.github.io/FVM/examples.html )을 생성합니다 .

코드가 고장 난 곳을 보여주기 위해 다음 예제를 만들었습니다. 20 셀 의 균일 한 메쉬를 설정 한 다음 단일 셀을 제거하여 균일 하지 않게 만듭니다 . 왼쪽 그림 에서 셀을 제거 했으며 오른쪽 가 제거되었습니다. 제 9 셀은 소스 용어 (즉, 전하)가 부호를 변경하는 영역을 커버한다. 반응 용어가 기호를 변경하는 영역에서 그리드가 균일하지 않은 경우 버그가 나타납니다 . 아래에서 볼 수 있듯이.Ω8Ω9

이 문제를 일으킬 가능성이있는 아이디어가 있습니까? 이산화에 관한 더 많은 정보가 도움이되는지 알려주십시오 (이 질문에 너무 자세한 내용을 담고 싶지는 않습니다).

푸 아송 방정식을 풀 때의 특이한 오류


Dirichlet 조건을 적용하는 방법 과 초기 조건으로 이라는 의미 를 지정할 수 있습니까 (정상 상태를 지정한 방정식이 아님)? x=0ρ=−1
— Jesse Chan

반응 용어는 어떻게 생겼습니까?
— Jan

소스 용어의 적분을 근사하기 위해 어떤 체계를 사용합니까? 이 동작은 소스 샘플링이 불충분하여 발생할 수도 있습니다. (아마도 @JLC의 답변에서 언급 된 것과 동일한 메커니즘 일 것입니다.)
— Jan

표준 용어를 사용하도록 질문을 업데이트했습니다. 나는이 소스 (용어ρ) 당신이 지적했듯이 정상 상태 값만 필요하기 때문에 반응 용어가 아닙니다 . 올바른 공간 의존성ρ이제 (초기 값이 잘못되었습니다) 제공됩니다.
— boyfarrell

@JLC Dirichlet BCs는 고스트 셀 접근 방식을 사용하여 부과됩니다 (이 구현 세부 사항에 대한 온라인 노트는 최신이 아닙니다).
— boyfarrell

답변:


9

따로, github 문서는 환상적입니다.

이것은 수치 플럭스를 신중하게 선택하지 않으면 비슷한 문제가 발생할 수있는 DG 방법의 추측 일뿐입니다 (FV 방법은 DG 방법의 하위 집합이라고 생각합니다). 셀 중심에서 보간법을 사용하여 플럭스를 정의하는 경우, 평균을 DG의 숫자 플럭스로 사용하고 구간 별 상수를 사용하는 것과 같습니다. Poisson의 표준 DG 방법의 경우 수치 적으로 고유하지 않은 솔루션으로 이어집니다. 이산 연산자를 위해 사소한 null 공간을 얻을 수 있습니다. DG 측의 이론에 대해서는 이 DG 논문 을 참조하십시오 .

FV에 대한 예제를 모방하여 이것이 어떻게 작동하는지 보여 드리겠습니다.

편집 : 여기에 무슨 일이 일어나고 있는지에 대한 작은 예가 있습니다. 1-9 및 11-20 셀을 고려하십시오.ρ(x)=0. 오른쪽 (11-20)부터f(x20)=0 그 세포에 대한 보존으로부터 우리에게 알려주는 Neumann 조건 때문에 f(x19)=…=f(x11)=0. 플럭스는 셀 값의 평균이므로, 이것은 우리에게ϕ(x) 이 모든 세포에 대해 일정합니다.

왼쪽에서 (1-9) f(xi+1)−f(xi)=0. 만약f(−10)=0 고스트 셀을 사용하고 f(−10)=ϕ9.5−ϕghost=ϕ9.5. 다음 몇 세포에 대한 보존은f(xi)=f(−10)=ϕ9.5(즉, 일정한 기울기). 그러나 이것은 일정한 기울기 일 수 있습니다.

이 문제는 중간 셀에서 발생합니다. Jan이 언급 한 것처럼 두 번째 메쉬에서 강제를 언더 샘플링합니다. 이 시점에서 균형 방정식을 버리고 오류가 발생합니다.f(10)그런 다음 뒤로 전파되어 도메인의 왼쪽 절반에있는 기울기와 값을 모두 엉망으로 만듭니다. ϕ(9.5).

강제 오류에 대한이 민감도는 문제가됩니다. FEM 또는 FD 방법과 달리 x=−10FV는 고스트 노드를 사용하여 약하게 시행합니다. 직관적으로 고스트 노드 약한 부과는 왼쪽 경계에 Neumann 조건을 설정하는 것과 같습니다. 확산 문제에 대해 두 가지 Neumann 조건이있는 경우, 문제가 잘못되고 고유하지 않은 솔루션이 있습니다 (해당 문제에 상수를 추가해도 여전히 솔루션이있을 수 있음). 여기서는 이산 레벨에서 그것을 얻지 못하지만 실험에서 볼 때 매우 민감하고 메쉬 의존적 인 행동을 얻습니다.


실험에서 나는 소스 함수의 불연속 (신호 변경)의 어느 한 쪽의 셀이 동일한 부피를 가질 때만 FVM 방법이 안정적임을 증명할 수있다. 당신의 분석이 이것에 동의합니까? 이것은 내가 전에 한 문제의 현명한 그리드를 생성하는 데 더 많은주의를 기울여야 함을 의미합니다. 다음에 FEM 방법을 배우는 것이 좋을까요?
— boyfarrell

나는 꽤 모든 세부 사항, 수행하지 않지만 관련 기사 jstor.org/discover/10.2307/2157873을
— boyfarrell

FVM 방법은 그리드가 소스 기능에 어떻게 든 정렬 된 경우 에만 안정적 입니다 . 소스 기능이 변경되면 그리드를 다시 조정해야합니다. 합리적인 그리드를 생성하는 것이이 문제에 대한 올바른 접근법이라고 생각하지 않습니다. 당신은 불안정한 방법을 가지고 있습니다.
— Jesse Chan

좋은 발견입니다. Suli는 탄탄한 분석가입니다. FEM을 배우는 것이 재미있을 수도 있지만 FD는 타원 1D 문제에서도 효과적입니다. 또한 일반 그리드에서 2 차 타원 문제에 대한 수렴을 얻기 위해 FV 사용자가 수행하는 작업 (페널티 조건으로 플럭스를 증가시킬 수 있음)을 볼 수도 있습니다. 수학적 민중의 지혜는 보통 FV / upwinded FD는 쌍곡선 문제에 적합하고 FEM / 중앙 diff FD는 타원에 적합하다고 말합니다.
— Jesse Chan

이 문제를 수정하고 있습니다. 답을 다시 읽으면 환상적입니다. 문제의 근원이기 때문에 방법이 변경되어야한다는 요점을 알 수 있습니다 (격자 아님). 이 경우 플럭스를 더 잘 근사화하는 방법에 대해 내가 따를 수있는 제안이나 비 전문가 (비전문가에게 가능)가 있습니까? 즉, 더 안정적으로 만들 수있는 방법입니다. 가능한 경우이 방정식에 대해 더 나은 FVM을 찾고 싶습니다.
— boyfarrell

0

가장 먼저 알아 두어야 할 것은 경계 조건입니다. 기울기와 값을 변경할 수 있으므로 Dirichlet 또는 Neumann 조건이 없습니다.

그런 다음 모든 직선은 오른쪽이 0 인 솔루션입니다. 당신은 그 부분을 얻었다.

플럭스는 아마도 h. 올바른 것을 사용하십니까h 세포를 어디에서 제거합니까?


1
아니요, 맞지 않습니다. 문제가 잘 제기되었습니다. 이 경우ρ≡0 뿐 ϕ≡0솔루션입니다. 한 지점에서 0이고 두 번째 지점에서 기울기가 0 인 다른 선형 함수는 없습니다.
— Jan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.