Answers:
最常见的方法是将负值重置为一些小的正数。当然,这不是数学上合理的解决方案。一种可行且简便的更好的通用方法是减小时间步长。
在双曲PDE的解中通常会出现负值,因为冲击的出现会导致振荡,如果在冲击附近存在接近真空的状态,则振荡会趋于产生负值。使用总变差减小(TVD)或其他非振荡(ENO,WENO)方法可以减少这种趋势。这些方法基于使用非线性限制器来计算解的导数。但是,由于以下几个原因,您仍可能会得到负值:
当然,对于特定的方程式,还有许多其他专门的方法,例如在David George的GeoClaw代码中,它使用带有额外非物理波的Riemann求解器来增强正性。
假设我们在不使用任何源项的情况下求解双曲方程,并假设我们提供了物理初始条件,请确保所使用的数值方案为“ 总变化”。减小是确保计算解的“物理性”的好方法。由于TVD方案保留了单调性,因此不会创建新的最小值或最大值,并且解决方案将仍然受到我们希望正确设置的初始值的限制。当然,问题在于TVD方案不是最明显的方案。在线性方案中,只有一阶方案是TVD(Godunov 1954)。因此,自50年代以来,已开发出各种非线性TVD方案来结合高精度和单调性来求解双曲方程。
对于我的应用,解决Navier-Stokes方程与大的压力/密度梯度,我们使用一种混合MUSCL -中央计划来捕捉大梯度/不连续性和留住优秀的准确性远离他们。范·里尔(Van Leer)于1979年提出了第一个MUSCL方案(MUSCL代表保护法以单调上游为中心的方案)。
如果您想了解更多有关此主题的信息,请查阅Harten,Van Leer,Lax,Sod和Toro的作品。