哪些方法可以确保整个PDE模拟中的物理量保持正值?


18

诸如压力,密度,能量,温度和浓度之类的物理量应始终为正,但是数值方法有时会在求解过程中计算出负值。这是不可行的,因为等式将计算复杂或无限的值(通常会使代码崩溃)。可以使用哪些数值方法来确保这些数量保持正值?以下哪种方法最有效?


可能有助于指定您感兴趣的PDE类型。以下答案主要与双曲线PDE有关。
David Ketcheson

Answers:


14

最常见的方法是将负值重置为一些小的正数。当然,这不是数学上合理的解决方案。一种可行且简便的更好的通用方法是减小时间步长。

在双曲PDE的解中通常会出现负值,因为冲击的出现会导致振荡,如果在冲击附近存在接近真空的状态,则振荡会趋于产生负值。使用总变差减小(TVD)或其他非振荡(ENO,WENO)方法可以减少这种趋势。这些方法基于使用非线性限制器来计算解的导数。但是,由于以下几个原因,您可能会得到负值:

  • 如果使用线法并应用高阶时间积分器。大多数TVD方案仅在半离散意义上或使用Euler方法证明是TVD。对于更高阶的时间积分,您应该使用强大的保持时间(SSP)时间离散化功能。这些方案也称为“契约”或“保持单调性”。Sigal Gottlieb,舒志旺和我本人最近出版了一本有关该主题的书。
  • 如果您不对方程组使用局部特征分解,则您的解决方案将不会是TVD(TVD方案仅针对标量问题具有该属性)。因此,最好在特征变量中进行重构/插值。
  • 如果您使用非线性系统,则即使使用局部特征分解,也会出现负值。例如,对于浅水方程或欧拉方程,任何线性化的Riemann求解器(例如Roe求解器)都可以显示为在足够具有挑战性的条件下生成负值。一种解决方案是使用HLL求解器(或HLL的变体)。其中有些是肯定的。
  • TVD方案只是二阶的。像WENO这样的高阶非振荡方案并不严格满足TVD或最大原理。但是对那些高阶方案进行了新的修改;它是由张向雄(舒智旺的学生)在最近的几篇论文中开发的。

当然,对于特定的方程式,还有许多其他专门的方法,例如在David George的GeoClaw代码中,它使用带有额外非物理波的Riemann求解器来增强正性。


6

假设我们在不使用任何源项的情况下求解双曲方程,并假设我们提供了物理初始条件,请确保所使用的数值方案为“ 总变化”。减小是确保计算解的“物理性”的好方法。由于TVD方案保留了单调性,因此不会创建新的最小值或最大值,并且解决方案将仍然受到我们希望正确设置的初始值的限制。当然,问题在于TVD方案不是最明显的方案。在线性方案中,只有一阶方案是TVD(Godunov 1954)。因此,自50年代以来,已开发出各种非线性TVD方案来结合高精度和单调性来求解双曲方程。

对于我的应用,解决Navier-Stokes方程与大的压力/密度梯度,我们使用一种混合MUSCL -中央计划来捕捉大梯度/不连续性和留住优秀的准确性远离他们。范·里尔(Van Leer)于1979年提出了第一个MUSCL方案(MUSCL代表保护法以单调上游为中心的方案)。

如果您想了解更多有关此主题的信息,请查阅Harten,Van Leer,Lax,Sod和Toro的作品。


4

上面的答案适用于与时间有关的问题,但是您也可以在一个简单的椭圆方程中要求正。在这种情况下,您可以将其公式化为变分不等式,为变量赋予界限。

在PETSc中,有两个VI求解器。一种使用减少空间的方法,其中将主动约束中的变量从要解决的系统中删除。另一个使用半光滑的牛顿法


3

A

Au=b
AA1

BRn×nB0B

(B0)(uv  BuBv,  u,vRn)

A

0b  0=A10A1b=u
bb0

通常,导致M矩阵的离散化方案称为单调方案,这就是那些保留非负性的方案。


M
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.