숫자 코드를 어떻게 디버깅합니까?이 진동 오류의 원인은 무엇입니까?


16

조용히 많은 통찰력이 양식 경험을 얻을 수 있습니다. 누군가 전에 이와 비슷한 것을 보았는지 궁금했습니다. 플롯은 advection-diffusion 방정식의 초기 조건 (녹색), 반복 200에서의 용액 (파란색), 반복 400에서의 용액 (빨간색)을 보여줍니다.

진동 오류

μ0.07C0.0015

배경. 이산화는 대류 및 확산 항의 중심 차이입니다. 나는 이것이 1 차 대류와 2 차 확산이라고 믿는다. 셀면의 계수 (속도 및 확산 계수) 값을 셀 평균의 선형 보간으로 찾는 유한 체적 접근 방식 (처음으로)을 사용하여이를 구현했습니다. 왼쪽과 오른쪽 표면에 Robin 경계 조건을 적용하고 경계의 자속을 0으로 설정합니다.

숫자 코드를 어떻게 디버깅합니까? 아무도 전에 이런 장면을 본 적이 있습니까? 어디에서 시작하기에 좋은 곳입니까?

최신 정보

최신 정보

해결책은 더 간단 할 수 없습니다! 나는 확산 항에 부호 오류를 만들었다. 이상합니다.이 게시물을 게시하지 않았다고 확신합니다. 오류를 찾지 못했을 것입니다! 누군가 숫자 코드를 디버깅하는 방법에 대한 팁을 공유하고 싶다면 여전히 관심이 있습니다. 나는 방법이없고, 약간의 타격과 그리움이 있습니다. 단서를 얻으려고 물건을 계속 시도하지만이 과정은 몇 주 (때로는) 걸릴 수 있습니다.

×

유한 체적 법을 통한 폐쇄 경계 조건을 갖는 대류-확산 방정식.


2
어떤 종류의 이산화를 사용하고 있습니까? 어떤 주문 방법? 당신의 경계 조건은 무엇입니까?
Geoff Oxberry

@GeoffOxberry에게 감사드립니다. 자세한 내용을 업데이트했습니다. 내가 한 일을 실제로 이해하기 위해 위의 github 링크에서 랩 북 노트를 읽을 수 있습니다.
boyfarrell 2016 년

2
θ=0,0.5,1

1
a=0d<0

답변:


9

여기서는 숫자 코드 디버깅에 대한 경험을 수집했습니다. deal.II FAQ : 디버깅 . 그것이이 특별한 경우에 도움이되었는지는 모르겠지만 다른 경우에는 도움이 될 것입니다.


안녕하세요, 프로젝트가 이동했을 때 그 연결이 끊어졌습니다. 이것이 지금 맞습니까? github.com/dealii/dealii/wiki/…
hyperpallium

네, 맞습니다. 귀하의 의견에 업데이트 해 주셔서 감사합니다!
Wolfgang Bangerth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.