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


9

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

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

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

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

ρ(x)={1,if 1x01,if 0x10,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.