/ 水纹池塘模拟器 返回
振动·波动

水纹池塘模拟器

快速解答
水面波纹由二维波动方程 ∂²u/∂t² = c²·∇²u 计算(u=水面位移、c=波速、∇²=拉普拉斯算子)。表面波相速度 c = √((gλ/2π)·tanh(2πh/λ))(λ=波长、h=水深)。本工具采用显式格式,为保证稳定性将库朗数固定为 CFL = 0.5。

点击向池中投石。实时求解二维波动方程,美观地可视化波的干涉、衍射和衰减现象。

有限差分法 (FDM) 2D波动方程 点击/拖拽操作 触摸操作支持
播放与操作
预设
参数
反射边界
关闭时波在边缘被吸收,不会反射。
色图
波谷(蓝) 零(白) 波峰(橙)
-A0+A
操作方法

🖱️ 点击 — 添加波源
🖱️ 拖动 — 生成连续波纹
📱 点按/滑动 — 支持触摸操作
⌨️ Space播放/停止、D水滴、R重置
💡 用预设观察干涉条纹

实时数值
0.50
波速 c [格/step]
0.990
衰减系数
0
活动波源
—
波长 λ [格]
0.00
最大振幅
60
FPS
0
步数
0
连续波源数
波纹(传播·反射·干涉)
t = 0.000 s 400 × 320
理论与主要公式

$$\frac{\partial^2 u}{\partial t^2} = c^2 \nabla^2 u$$

二维波动方程:\(u\) 水面位移,\(c\) 波速 [m/s],\(\nabla^2\) 拉普拉斯算子

$$c = \sqrt{\frac{g\lambda}{2\pi}\tanh\left(\frac{2\pi h}{\lambda}\right)}$$

表面波的相速度:\(\lambda\) 波长,\(h\) 水深

本模拟器在网格上近似二维波动方程 ∂²u/∂t² = c²∇²u。每一步由当前和前一步的位移,用时间和空间都采用中心差分的显式格式(蛙跳法)更新下一步的位移,并用与周围 4 点的差分计算拉普拉斯算子。为了稳定,库朗数固定为 CFL=0.5,波速滑块限制在 0.10~0.90。衰减系数是每次更新后乘到振幅上的系数,越接近 1 波保留得越久。边界条件在“反射 ON”时为狄利克雷型(边缘固定=波反射),“反射 OFF”时为吸收型(波在边缘消失)。驱动连续波源时,波长可按 λ ≈ c·CFL·(周期步数)估算。

什么是水纹池塘模拟器

🙋
在这个模拟器里一点击波纹就扩散开来,很有意思!这和往池塘里扔石头产生的波是同一个原理吗?
🎓
没错!大致来说,就是在计算机上再现水面的上下运动。在实际中,它使用的数学式与分析声波、地震波传播方式的 CAE 基础技术相同。拖动上面的“波速 c”滑块,可以确认波扩散的速度会发生变化。
🙋
原来如此!还有个“衰减”参数,它改变的是什么?
🎓
衰减是波的能量向周围散失或因摩擦损失的程度。例如现实中的水波会逐渐变小。本工具的“衰减”是每一步乘到振幅上的系数,越接近 0.900 波消失得越快,越接近 0.999 波越不容易消失、不断反射,成为接近理想的池塘。在模拟器中拖动“衰减”滑块确认一下区别吧。
🙋
按下“双波源”按钮会出现漂亮的条纹!这就是干涉吗?在 CAE 中怎么用?
🎓
对,这就是干涉。从两处发出的波相互重叠,形成相互加强和相互减弱的地方。实际中常见的是两台扬声器发出的声音发生干涉、在不同位置听起来时大时小的“声场分析”。在本模拟器中一边改变参数一边观察干涉图案,是与设计含有多个声源或振源的产品直接相关的基础体验。

常见问题

可以,在模拟器的设置面板中调整“衰减系数”。该值是每一步乘到振幅上的系数,越接近 0.999 波持续振动越久,越接近 0.900 波平息得越快。可以尝试模拟实际水的粘性的行为。
只要在画面上点击或点按多个位置,每个点都会产生波。同时产生的波相互干涉,可以实时观察相互加强和减弱的点。
可以在设置中改变“波速”参数。数值越大波传播越快,波长也越长。可用于模拟物理介质的不同(如浅水与深水)。
它使用加入衰减项的二维波动方程模型,定性地再现波的干涉、衍射和衰减。不过风、水深变化等复杂因素被省略了,请作为教学用的可视化工具使用。

现实世界中的应用

室内声学·噪声分析:在音乐厅和录音室的设计中,会模拟声波在墙壁和天花板上的反射与干涉,预测声音的混响和噪声的传播方式。本工具中看到的干涉条纹,可以看作声音中“拍”和“驻波”的二维版本。

麦克风与扬声器阵列设计:布置多个麦克风或扬声器时,强调特定方向的声音、或反过来抵消噪声的技术(波束成形)的基本原理就是波的干涉。在模拟器中放置多个波源就是对它的基础体验。

地震波传播分析:模拟在地基中传播的地震波(面波)也使用同样的波动方程。研究地基的不均匀性(波速 c 的差异)如何影响波的传播,用于建筑物的抗震设计。

流体表面波的模拟:也应用于预测船舶产生的波和沿岸海域波浪的传播。由于它是更复杂方程的基础,用这样简单的二维模拟器理解原理很重要。

常见误解与注意事项

刚开始使用这个模拟器时,有几个容易误解的地方。首先,数值稳定性由CFL 条件决定,本工具把 CFL 固定为 0.5,并把波速输入限制在 0.10~0.90。在滑块和数值输入的范围内不会发散,因此改变波速时,理解“越快,波前每步前进的网格数越多”就足够了。

其次是“衰减”的设置。把值调到接近 1(减弱衰减)时,就成了波永远振动下去的理想系统,但现实中几乎所有现象,例如建筑物的振动和声学,都一定存在某种衰减(减振)。忽视衰减的设计有因共振而破坏的风险。反之,衰减过强会使作为现象本质的干涉图案难以观察。平衡很重要。

最后,本模拟以“线性”波动方程为基础。也就是说,波变高时波速不变,波与波相遇时会直接穿过对方(没有非线性效应)。在实际的大波浪(如海啸)和某些光学现象中非线性很重要,但先用这个线性模型掌握基础是一切的出发点。

使用指南

  1. 在 0.10~0.90 范围内调整“波速 c”,设置网格上的传播速度
  2. 把“衰减”设为 0.900~0.999,控制波的能量损失
  3. 用“冲击强度”在 1~3 范围内指定波的初始强度,点击池塘画面产生波
  4. 用“滴下水滴”按钮或“雨模式”自动产生波纹,用“滴落频率”调整降雨的密度
  5. 切换播放/暂停和反射边界的开/关,确认波的传播、反射、干涉和波长的变化

具体计算示例

以波速 c=0.5、衰减 0.95、冲击 2.0 点击中心时,由于 CFL=0.5,波前每步前进 CFL×c=0.25 格。150 步后典型的到达半径约为 37.5 格,约为 400 格宽度的 9.4%。本模型中的距离和振幅按无量纲的网格单位处理,不换算成 mm 或实际波长。双波源预设(周期约 25 步)时,波长可估算为 λ ≈ c·CFL·周期 ≈ 0.5×0.5×25 ≈ 6.3 格,并显示在实时数值的“波长 λ”中。点击两个点,可以在波前重叠处观察到相长和相消干涉。

实务注意事项

  1. 衰减值越小波消失得越快,越接近 0.999 保留得越久。请根据用途在 0.900~0.999 范围内调整
  2. 增加连续波源会使干涉条纹更复杂,在反射边界下还会叠加边缘的反射。请一边看 FPS 一边调整波源数
  3. 波速参数限制在 0.10~0.90,在 CFL=0.5 的条件下稳定计算
  4. 点击产生的波源是瞬时冲击,预设中的连续波源会反映在统计栏的“连续波源数”中