谱方法
理论:用波的叠加表示函数
概述
听说谱方法精度很高,它和差分法有什么不同?
差分法用相邻几个点的值求某点导数。谱方法把整个区域的值表示为波(三角函数)的叠加,对每个波精确求导后再相加。只用附近点的差分法,波越细越会把速度和形状表示错,而谱方法对能表示范围内的波都能精确处理。因此解光滑时,增加点数误差迅速减小。但由于使用全部点,复杂形状难以处理,有间断时会出现振荡。
傅里叶级数求导
系数通过快速傅里叶变换(FFT)求得,N个点的计算量约为N log N。非周期问题使用切比雪夫多项式,点向两端加密布置。
修正波数
用差分法求导时,波数k的波被当作k′处理。kh越大(每波长点数越少),k′越小,波传播越慢。谱方法中k′ = k。
支撑湍流DNS的方法
1972年,Orszag和Patterson用谱方法直接计算了周期边界盒子内的湍流。1987年,Kim、Moin和Moser结合傅里叶级数和切比雪夫多项式计算了平行平板间湍流,其结果至今仍广泛用于湍流模型验证。谱方法的精度使有限的格点也能准确表示湍流的细小涡。1965年FFT的发明使之实用化。
算例
例1:exp(sin x)求导的最大误差(周期2π)
| 点数 | 谱方法 | 二阶中心差分 | 四阶中心差分 |
|---|---|---|---|
| 8 | 4.3×10⁻³ | 3.4×10⁻¹ | 1.4×10⁻¹ |
| 16 | 1.8×10⁻⁷ | 9.4×10⁻² | 1.6×10⁻² |
| 32 | 3.8×10⁻¹⁵ | 2.6×10⁻² | 1.1×10⁻³ |
| 64 | 9.4×10⁻¹⁵ | 6.5×10⁻³ | 7.6×10⁻⁵ |
点数加倍,差分法误差降为1/4(二阶)或1/16(四阶),而谱方法在32个点时就达到舍入误差水平,不再下降。
例2:正确表示波速所需的每波长点数
| 方法 | 误差1%以内 | 误差0.1%以内 |
|---|---|---|
| 二阶中心差分 | 25.6 | 81.1 |
| 四阶中心差分 | 8.3 | 15.0 |
| 六阶中心差分 | 5.7 | 8.6 |
| 谱方法 | 多于2点即误差为0 | 同左 |
三维中点数按三次方起作用。1%误差的二阶差分(25.6点)与含去混叠约每波长3点的谱方法相比,表示同一个波所需的网格点数相差约620倍。
例3:非周期函数(切比雪夫法)
| 点数 | 切比雪夫法 | 等间距二阶差分 |
|---|---|---|
| 17 | 6.5×10⁻¹ | 7.9×10⁻¹ |
| 33 | 5.4×10⁻² | 3.5×10⁻¹ |
| 65 | 1.9×10⁻⁴ | 9.3×10⁻² |
在区间[−1, 1]上比较1/(1 + 25x²)的导数。对变化剧烈的函数,点少时谱方法误差也大,但点数足够后误差迅速减小。
点少时,切比雪夫法和差分法差别不大。
对。谱方法的快速收敛,只有在点数足以表示函数最细变化时才会出现。该函数在x = 0附近宽约0.2的峰是细结构,17个点表示不了。点数增加到4倍即65个点时,差分法误差降到约1/9,切比雪夫法则降到约1/3,500。湍流DNS也一样,网格不能表示最小涡时谱方法的优势就体现不出来。反之,激波这种真正的间断无论增加多少点都表示不了,会残留称为吉布斯现象的振荡。
适用场合与注意事项
- 用于形状简单(周期盒、平板间、圆管等)且解光滑的问题。
- 非线性项在物理空间计算乘积,用3/2法则等去除混叠误差。
- 非周期方向使用切比雪夫多项式。
- 切比雪夫点在两端非常密,注意显式时间步长。
- 复杂形状考虑谱元法或高阶有限元法。
“能量持续增加的DNS”
用谱方法计算周期盒湍流时,本应因粘性而减少的动能从某一时刻开始增加并发散。原因是非线性项的混叠:在物理空间计算速度乘积时,无法表示的细波伪装成粗波带入了能量。加入3/2法则(计算时点数临时增加到1.5倍)后,能量单调下降。谱方法精度高,没有数值粘性掩盖这类误差,所以会明显暴露出来。
常见错误
错误与对策
| 错误 | 后果 | 对策 |
|---|---|---|
| 不去混叠 | 能量增加而发散 | 3/2法则 |
| 用于有间断的流动 | 吉布斯振荡 | 有限体积法等 |
| 非周期方向用傅里叶 | 边界误差大 | 切比雪夫 |
| 未分辨最小尺度 | 精度优势体现不出 | 重新检查网格 |
| 切比雪夫用大时间步 | 显式不稳定 | 并用隐式 |
我想了解相关内容。
详细
错误