如何避免使用 FEM 方案的输运方程数值解的负值?

计算科学 有限元 稳定 平流扩散
2021-12-13 16:07:52

输运方程实际上是一个平流-扩散-反应方程,其形式为

Ct+v1Cx+v2Cx=D(2Cx2+2Cy2)R(x,y)C+S

在哪里C是未知底物浓度,v1v2是流体的速度xy方向,分别,D是扩散系数,R是反应项,并且S是源项。我使用带有后向欧拉的传统 FEM 方案来推进时间。但是我解决的数值解中似乎出现了一些负值。有什么方法/方案可以避免消极情绪吗?

1个回答

通常,您会使用斜率限制器(或人工扩散,只需用手指交叉),它会检测解决方案变为负值的位置并修改解决方案以恢复正性(通常通过修改解决方案的梯度以保持守恒,至少在保守方案,如不连续 Galerkin 和有限体积)。

还有更通用的选项 - Ridzal、Bochev 和 Shashkov有一个很好的技巧,他们解决了有界约束的优化问题,以最小化计算的解决方案和新的正解决方案之间的差异。事实证明,这将解耦为一种廉价的迭代方法,该方法为每个解系数独立计算。迭代似乎收敛得非常快。