나는 대류 방정식을 풀려고 노력하고 있지만 파도가 경계에서 반사 될 때 솔루션에 이상한 진동이 나타납니다. 아무도 전에이 유물을 본 적이 있다면 원인과 그것을 피하는 방법을 알고 싶습니다!
이 애니메이션 GIF는 별도의 창에서 열어 애니메이션을 봅니다 (캐시 된 한 번에 한 번만 재생 됨).
전파가 첫 번째 경계에서 반사되기 시작할 때까지 전파가 매우 안정적으로 보입니다. 여기서 무슨 일이 일어날 수 있다고 생각하십니까? 며칠 동안 코드를 두 번 확인했지만 오류를 찾을 수 없습니다. 두 가지 전파 솔루션이있는 것 같습니다 : 하나는 긍정적이고 하나는 부정적입니다. 첫 번째 경계에서 반사 후. 솔루션은 인접한 메쉬 포인트를 따라 이동하는 것 같습니다.
구현 세부 사항은 다음과 같습니다.
이류 방정식,
여기서 는 전파 속도입니다.
크랭크-니콜슨 (Crank-Nicolson 은 가 공간에서 느리게 변할 때 (포리에 변환 될 때 저주파 성분 만 포함 경우에 이류 방정식에 대한 무조건 (pdf 링크) 안정적인 이산화입니다 .
내가 적용한 이산화는
미지수를 오른쪽에두면 선형 형태로 쓸 수 있습니다.
여기서 (현재와 미래 지점 사이의 시간 평균이 균일하게 가중 됨) 및 .r = v Δ t
이 방정식 세트는 행렬 형식 . 여기서,
벡터 및 은 우리가 풀고 자하는 양에 대해 알려져 있고 알려지지 않았습니다.u n + 1
그런 다음 왼쪽과 오른쪽 경계에 닫힌 Neumann 경계 조건 을 적용 합니다. 닫힌 경계 는 두 인터페이스에서 을 의미합니다. 닫힌 경계의 경우 (여기서 작업을 보여주지 않을 것입니다) 위의 방정식을 풀면됩니다. @DavidKetcheson이 지적한 바와 같이, 위의 매트릭스 방정식은 실제로 Dirichlet 경계 조건을 설명 합니다 . Neumann 경계 조건의 경우
최신 정보
이 동작은 내가 사용하는 상수의 선택과는 상당히 독립적 인 것처럼 보이지만 위의 플롯에 대한 값입니다.
- = 2
- dx = 0.2
- dt = 0.005
- = 2 (가우시안 hwhm)
- = 0.5
업데이트 II
0이 아닌 확산 계수 (아래 주석 참조)을 사용한 시뮬레이션 에서는 진동이 사라지지만 파동은 더 이상 반사되지 않습니다! 왜 그런지 모르겠어요?