균일하지 않은 메시 (1D 만) 유한 체적 법에서 푸 아송 방정식을 풀 때 발생하는 고유 한 오류 10 ][−10,10][-10,10] advection-diffusion-reaction equation을 해결하기 위해 개발 된

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

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

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

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

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



답변

따로, 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=−10

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


답변

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

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

플럭스는 아마도

h

. 올바른 것을 사용하십니까

h

세포를 어디에서 제거합니까?