二维声音传播的有限差分格式

计算科学 有限差分 流体动力学 模拟 波传播
2021-12-24 10:46:57

我正在使用有限差分法模拟声波在非矩形和不对称空间中的传播。我假设线性声学方程就足够了(即)并且我需要系统的开放和封闭边界(例如,墙壁上的声压节点或波腹和速度也一样)。p=0v=0

当我必须处理 Neumann 边界条件时,就会出现问题。即使对于密集且计算不方便的网格,该方法也是不稳定的。

数学背后的物理学允许 3+1 或多或少直接的方式来进行模拟:

  • 对声压进行建模(然后在开放/松散边界处需要 Neumann 条件:边界,封闭边界是可以的)xp=0
  • 对速度势建模(不是很方便,因为在开放边界上而在闭合边界上 \partial_t \phi = 0)ϕxϕ=0tϕ=0
  • 对声速进行建模(即向量的模型 d'Alembert 波动方程 - 不是很优雅,这就是我们有潜力的原因)
  • 将物理学重新表述为例如哈密顿(即只有一阶导数)、格子玻尔兹曼等。

请问有什么建议或经验吗?

编辑:

满足 CFL 条件。

问题实际上可能是数值离散。图片显示了一个系统,左侧的源在 -1 到 1 正弦波振荡。源区域外的图片上的值在 -0.1 和 0.1 之间变化。上下有狄利克雷边界,右边有诺依曼边界。

在此处输入图像描述

使用具有中心时间和空间的 FDM。在 matlab (dx=dy) 中:

A(ii,jj,n+1)=2*A(ii,jj,n)-A(ii,jj,n-1)+c1^2*dT^2/dX^2*(A(ii-1,jj,n)+A(ii+1,jj,n)+A(ii,jj-1,n)+A(ii,jj+1,n)-4*A(ii,jj,n));
1个回答

对于双曲方程的数值模拟,文献中使用了有限体积法。

我发现clawpack和作者 Randall J. LeVeque 的《双曲问题的有限体积方法》一书对实现我自己的代码非常有帮助。由于有限体积和有限差分没有那么不同,因此更改为有限体积代码可能是解决此问题的一种方法。

对于有限差分,要么存在数值色散问题,要么存在数值扩散问题。为了应对这些不同的通量限制器功能,可以使用有限体积代码来处理这个缺点。

您也可以使用 clawpacks python api 实现您的系统,作为参考,请查看Gallery acoustics