CFD 的许多数值方法可以扩展到任意高阶(例如,不连续 Galerkin 方法、WENO 方法、光谱差分等)。对于给定的问题,我应该如何选择合适的准确顺序?
什么时候高阶方法对计算流体动力学模拟有用?
在实践中,大多数人坚持相对较低的顺序,通常是一阶或二阶。这种观点经常受到相信更准确答案的理论研究人员的挑战。简单平滑问题的收敛速度有据可查,例如参见 Bill Mitchell 的hp 自适应性比较。
虽然对于理论工作来说,很高兴看到收敛速度是多少,但对于我们当中更多面向应用的问题,这种关注与本构定律、必要的精度和代码复杂性相平衡。它并没有多大作用,因为在许多解决高度不连续介质的多孔介质问题中使用高阶方法,数值误差将主导离散化误差。同样的问题也适用于包含大量自由度的问题。由于低阶隐式方法具有较小的带宽并且通常具有更好的条件,因此高阶方法变得过于昂贵而无法解决。最后,切换多项式的阶数和类型的代码复杂度通常对于运行应用程序代码的研究生来说太高了。
指导方针:解决问题的高阶方法预计是平滑的,否则是低阶方法和/或可以处理解决方案中的不连续性的方法。在可以利用高阶方法的情况下,由于高收敛速度,可以显着节省以 CPU 时间衡量的计算工作量。对于需要求解线性系统的椭圆问题,高阶方法导致较少的稀疏算子,这必须通过更快的收敛速度来补偿。对于时间相关问题,如果可以利用高阶方法更快的收敛速度和更高的精度,并且对于较长的积分时间,高阶方法在精度和计算量方面都优越,因为数值分散和耗散误差低.
例如,当使用高阶方法来描述有限体积法框架内的两相流体流动时,可以使用高阶方法来求解水平集方程。在这种情况下,WENO 和 ENO 方案用于平流水平集函数,并使用重新初始化步骤将其保持为与流体界面的距离函数。
看看这个:http: //ftp.cc.ac.cn/lcfd/WENO_mem.html
基本上,它们在处理流动不连续性时用于 CFD 模拟。
始终执行至少两个不同的命令。在一个有代表性的问题上,使用每个订单解决一次。在一个足够精细的网格上比较两者,以便在低阶收敛。确保您的两个答案相当接近,这表明低阶方案的数值行为并未严重破坏解决方案。如果有,则放弃低阶方案并重新开始。
假设您不必重新开始,请尽可能粗化网格以获得更高阶,同时仍保持通过您想要的特定数量测量的合理准确的解决方案。比较细网格上低阶的计算成本与粗网格上高阶的计算成本。
选择在操作上更有优势的那个。记录反对者的过程,以便在代表性问题或感兴趣的数量发生变化时重复该过程。