我正在尝试求解平流方程,但是当波从边界反射时,解决方案中会出现奇怪的振荡。如果有人在看过此文物之前,我很想知道原因以及如何避免它!
这是一个动画gif,在单独的窗口中打开以查看动画(它仅被缓存一次,或仅播放一次!)
请注意,在波开始从第一个边界开始反射之前,传播似乎非常稳定。您认为这里可能会发生什么?我花了几天时间仔细检查我的代码,找不到任何错误。奇怪的是,似乎有两种传播的解决方案:一种是积极的,一种是消极的。从第一个边界反射之后。解决方案似乎沿着相邻的网格点传播。
实现细节如下。
对流方程,
其中是传播速度。
Crank-Nicolson是对流方程的无条件 稳定离散化,条件是在空间中缓慢变化(傅立叶变换时仅包含低频分量)。
我应用的离散化是
将未知数放在右侧可以使它以线性形式编写,
其中(取当前点和未来点之间的时间平均权重)和。[R = v Δ 吨
这些方程组的矩阵形式为,其中,
向量和是我们要求解的数量的已知和未知量。
然后,我在左右边界上应用封闭的 Neumann边界条件。封闭边界表示两个接口上的。对于封闭边界,事实证明(在这里我不会显示我的工作),我们只需要求解上述矩阵方程即可。正如@DavidKetcheson指出的那样,上述矩阵方程实际上描述了Dirichlet边界条件。对于诺伊曼边界条件,
更新资料
该行为似乎与我使用的常量的选择完全无关,但是这些是您在上面看到的图的值:
- = 2
- dx = 0.2
- dt = 0.005
- = 2(高斯hwhm)
- = 0.5
更新二
具有非零扩散系数的模拟(请参见下面的评论),振荡消失了,但波不再反射!我不明白为什么?