我编写了一个代码来解决 Navier-Stokes 方程的不可压缩公式。它对时间和空间导数都使用高阶方法。我一直在进行收敛速度分析,以验证我的求解器的高阶方面。
对于空间收敛,问题相对简单。例如,我选择一个时间步长, 以 32 分开始 () 网格并将我的网格细化为 2。在 1024 网格中,-error 达到了一个平台,这对应于前导误差项来自时间离散化方案的点。
时间收敛性研究并不那么容易。我正在使用显式的低存储 RK3 方法。问题是我需要有一个足够精细的网格,以便主要误差项是时间离散化的。根据 CFL 条件,这会产生非常小的使模拟稳定。当减少为了计算收敛速度,我很快就达到了高原,这表明主要误差项来自空间离散化。因此,我需要进一步细化我的网格,这反过来会导致更小的时间步长等等。这感觉就像蛇咬自己的尾巴。
例如,假设我针对 4096 点网格和时间步长及时开始收敛分析. 我获得-错误为并观察收敛顺序和,最后一个值表明前导误差项现在已成为空间离散化的前导误差项。最后,与上面提到的空间方案相反,没有太多的收敛可以显示。
所以现在我想知道,我是否采取了正确的方法?对于看似简单的任务,这似乎过于复杂和耗时。