有什么方法可以解决可压缩的欧拉方程


13

我想为可压缩的Euler方程编写自己的求解器,最重要的是,我希望它在所有情况下均能正常运行。我希望它是基于FE的(DG可以)。有哪些可能的方法?

我知道要进行零阶DG(有限体积)处理,并且应该非常可靠。我已经实现了基本的FVM求解器,并且效果很好,但是收敛速度很慢。但是,这绝对是一种选择。

我为线性化的Euler方程实现了FE解算器(适用于任何网格和任何元素的多项式阶数),但是我得到了虚假的振荡(最终爆炸了,因此无法使用它来解决我的问题),我在文献中读到,需要稳定它。如果我实施某种稳定化处理,那么对所有问题(边界条件和几何形状)都可以有效地发挥作用吗?收敛速度是多少?

除此之外,欧拉方程还有其他健壮的方法(即具有一定稳定性的高阶DG)吗?

我知道许多人在研究代码中尝试了许多不同的方法,但是我对一种适用于所有几何形状和边界条件的健壮方法感兴趣(编辑:在2D和3D中)。

Answers:


11

解决双曲线PDE的非线性一阶系统(例如Euler方程)(对于可压缩的无粘性流)的主要数值困难是,即使初始数据是平滑的,在有限的时间之后,解决方案中也会出现不连续性(冲击波)。为了解决这个问题,大多数现代代码都使用

  • 斜率(或通量限制器,提供一种在不连续点附近精确计算导数的方式,而不会引入寄生振荡;和
  • 近似Riemann求解器,局部(在每个网格边缘/面处)使用分段恒定的初始数据和单个不连续性来求解初始值问题。

存在包含限制器和Riemann求解器的有限差分(FD),有限体积(FV)和有限元(FE)离散化,并且所有这些离散化都可以做到高精度,至少可以避免受到冲击。因此,断然地说有限元方法的收敛速度要快于FV方法,这是没有意义的-如果使用可比较的阶数离散化,它们将是可比的。

在有限元方法中,不连续的Galerkin方法在这里最合适,因为解决方案实际上是不连续的。如果您想自己实现,我建议您阅读此评论文章,并获得Hesthaven&Warburton的文本副本,以了解基本知识。在DG上有很多关于可压缩流论文

如果您愿意使用其他人的代码,并且由于我知道您使用Python,则可以看看Andreas Kloeckner的Hedge代码,该代码具有Python界面并且可以在GPU上运行。可能还有其他良好的DG代码,以及许多良好的FV代码(例如Clawpack,它也具有Python接口)。

也有更新的高阶方法,例如光谱差异。有关最新观点,请参见Cheng&Shu 2009,《 CFD高阶方案:回顾》Ekaterinaris,2005,《空气动力学的高阶准确,低数值扩散方法》


感谢David,特别感谢所有指向论文的指导。FV只是零阶DG,不是吗?还是高阶FV与同阶DG有某种不同?我想自己实现一些东西,以便我完全了解发生了什么。对冲代码看起来很酷。
2011年

1
对于一阶方案,FE和FV通常等效。高阶方案通常是不同的,两者都不是另一个子集。
David Ketcheson

1
您可以在某种程度上通过“ reconstruction DG”将其统一。FV通常使用分段常量测试函数,并使用邻居进行重构以提高阶数。DG通常使用匹配的测试空间(Galerkin)并提高内部顺序。请注意,DG仍然需要限制器来产生强烈的冲击,因此它不再是Galerkin方法。重建DG可让您同时执行以下操作:提高内部顺序并使用邻居进行重建,因此常规FV和DG是限制性案例。
杰德·布朗

如果我要对物理系统进行建模,出于经验原因,我认为该系统不会显示冲击波,那么什么是好的方法?
sigfpe 2013年

@sigfpe,最好是发布新问题以及更多信息。
David Ketcheson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.