3. Cahn-Hilliard方程半隐式傅里叶谱方法

半隐式谱方法的离散思路

Cahn-Hilliard方程 ∂c/∂t = M∇²(∂f/∂c − κ∇²c) 中,双阱势导数 f′(c)=c³−c 的线性部分 −c 与四阶项 −κ∇⁴c 在傅里叶空间分别对应增长率 −Mk² 和 −Mκk⁴。当 k 较大时,−Mκk⁴ 的量级迅速增大,显式格式的稳定步长被压缩到 Δt ≤ 2/(Mκk⁴_max),网格越密越难推进。半隐式谱方法把线性刚性项 −Mκk⁴ 隐式处理,非线性项 c³ 显式处理,从而在保持谱精度离散的同时放宽时间步限制。

在周期边界下,序参量 c(x,t) 展开为傅里叶级数,谱空间离散后每个波数 k 独立演化。对线性部分采用隐式、非线性部分采用显式,得到逐波数更新的半隐式格式:

ĉ_k^{n+1} = (ĉ_k^n − Δt·M·k²·FFT[(c^n)³]_k) / (1 + Δt·M·κ·k⁴)

其中 FFT 与 IFFT 用于在实空间计算非线性项 c³,再变换回谱空间。分母 1+Δt·M·κ·k⁴ 对高波数提供强阻尼,使格式对刚性项无条件稳定(非线性项仍受显式稳定性约束,但限制远小于纯显式)。

半隐式傅里叶谱方法:单步推进的数据流 实空间 cⁿ(x) N 个格点,周期边界 FFT → 谱空间 ĉ_kⁿ 非线性项 (cⁿ)³ 实空间逐点立方 再 FFT 得 N̂_k 线性隐式因子 D_k = 1 + Δt·M·κ·k⁴ 高波数强阻尼 逐波数更新 ĉ_k^{n+1} = (ĉ_kⁿ − Δt·M·k²·N̂_k) / (1 + Δt·M·κ·k⁴) IFFT → 实空间 c^{n+1}(x) 下一时间步 稳定性对比(M=1, κ=1, N=128, L=2π) 显式格式:Δt ≤ 2/(M·κ·k⁴_max) ≈ 2/(1·1·64⁴) ≈ 1.2×10⁻⁷,推进 t=0.5 需约 4×10⁶ 步 半隐式格式:Δt 可取 1×10⁻³ 量级,推进 t=0.5 仅需约 500 步,效率提升约 4 个数量级 注:以上为教学示例估算,实际步长受非线性项显式稳定性约束,需通过数值试验确认。

关键实现与参数选择

实现时需注意以下几点:

  • 波数构造:对 N 个格点、周期长度 L,波数 k = 2π·[0,1,…,N/2−1,−N/2,…,−1]/L,保证 FFT 频率顺序正确。
  • 非线性项处理:先在实空间计算 c³,再 FFT 回谱空间,避免谱空间卷积的高开销。
  • 时间步长:半隐式格式中 Δt 不再受 κk⁴ 限制,但仍受非线性项显式稳定性约束,通常取 Δt ~ 10⁻³ 量级即可稳定推进。
  • 守恒性:k=0 模对应总浓度,更新公式中 k=0 时 k²=0,ĉ_0 保持不变,自动满足质量守恒。

显式与半隐式效率对比

对比项显式有限差分半隐式傅里叶谱
空间离散二阶中心差分谱方法(指数收敛)
时间步长限制Δt ≤ 2/(Mκk⁴_max)仅受非线性项约束
N=128 时典型 Δt~10⁻⁷~10⁻³
推进 t=0.5 步数~4×10⁶~500
每步计算量O(N)O(N log N)
总计算量(估算)~4×10⁶·N~500·N log N
半隐式谱方法的核心优势在于:用谱方法获得空间高精度,用隐式处理线性刚性项解除时间步限制,两者结合使长时间旋节线分解模拟变得可行。实际使用时建议先用小 N 验证格式正确性,再逐步增大 N 和 Δt。
半隐式格式并非无条件稳定:非线性项 c³ 仍为显式处理,当 Δt 过大时可能因非线性项导致数值振荡。建议通过能量单调性或总浓度守恒性监测稳定性,必要时减小 Δt 或对非线性项做部分隐式处理。