在非均匀网格(仅一维)有限体积法上求解泊松方程时的奇异误差


9

最近几天,我一直在尝试调试此错误,我想知道是否有人建议如何进行操作。

我正在求解泊松方程,用于非均匀有限体积网格上的阶跃电荷分布(静电/半导体物理学中的常见问题),其中未知数定义在单元中心,并且通量在单元面上。

0=(ϕx)x+ρ(x)

收费资料(来源条款)由

ρ(x)={1,if 1x01,if 0x10,otherwise

边界条件是

ϕ(xL)=0ϕx|xR=0

而域是 [10,10]

我正在使用为解决平流扩散反应方程式而开发的代码(我写了自己的文章,请看http://danieljfarrell.github.io/FVM)。对流扩散反应方程是泊松方程的一个更一般的情况。实际上,可以通过将对流速度设置为零并消除过渡项来恢复泊松方程。

该代码已针对均匀,不均匀和随机网格的多种情况进行了测试,并始终为advection-diffusion-reaction方程产生合理的解决方案(http://danieljfarrell.github.io/FVM/examples.html)。

为了显示代码在哪里崩溃,我做了以下示例。我设置了一个包含20个单元的均匀网格,然后通过移除单个单元使其不均匀。在左图中,我删除了单元格Ω8 在右边 Ω9已被删除。第9个单元格覆盖源项(即费用)更改符号的区域。当在反应项改变符号的区域中网格不均匀时,将出现错误。如下所示。

有什么想法可能导致此问题吗?让我知道关于离散化的更多信息是否有帮助(我不想在这个问题中加入太多细节)。

求解泊松方程时的奇异误差


您能指定如何施加Dirichlet条件吗? x=0,以及您的意思是 ρ=1作为初始条件(方程式不是您指定的稳态)吗?

反应项是什么样的?
2013年

您使用什么方案来近似源项的积分?此行为也可能是由于源采样不足引起的。(可能是@JLC的答案中提到的相同机制。)
1

我已更新问题以使用标准术语。我有一个来源词(ρ)不是反应项,因为正如您所指出的,我们只需要稳态值即可。正确的空间依赖性ρ现在给出(初始值不正确)。
boyfarrell 2013年

@JLC Dirichlet BC是使用幻影单元方法强加的(有关该实现的详细信息,我在网上的笔记已经过时了),有关如何执行的信息,请参见此处,scicomp.stackexchange.com
questions /

Answers:


9

顺便说一句,您的github文档很棒。

这只是DG方法的一个猜测,如果不仔细选择数值通量,则可能会有类似的问题(我认为FV方法是DG方法的子集)。如果要使用像元中心的插值来定义通量,则这应等效于将平均值用作DG中的数字通量并使用分段常数。对于用于Poisson的标准DG方法,这会导致数值上的非唯一解-您可以为离散运算符获得一个非平凡的空空间,我认为这是导致第二个示例出现问题的原因。请从DG方面查看该DG论文的理论。

我将尝试模拟FV的示例,以显示其作用。

编辑:所以这是个小例子。考虑其中的单元格1-9和11-20ρ(x)=0。从右侧(11-20),我们有f(x20)=0 由于诺伊曼条件,这告诉我们从那个细胞的守恒 f(x19)==f(x11)=0。由于通量是像元值的平均值,所以这告诉我们ϕ(x) 在所有这些单元格上都是常数

从左侧(1-9),我们有 f(xi+1)f(xi)=0。如果f(10)=0 然后我们使用鬼细胞 f(10)=ϕ9.5ϕghost=ϕ9.5。在接下来的几个单元格中的保守性使f(xi)=f(10)=ϕ9.5(即恒定斜率)。但是,请注意,这可以是任何斜率,也可以是恒定的。

问题出在中间单元。就像Jan提到的那样,您对第二个网格中的强制进行了欠采样。这会使此时的平衡方程式偏离,给您一个误差f(10),然后向后传播并弄乱了域左半部分的斜率以及的值 ϕ(9.5)

这种对强制错误的敏感性是有问题的-与FEM或FD方法不同,该方法在以下位置显式实施Dirchlet条件: x=10,FV使用重影节点弱地实施它。直观上,重影节点的弱拼版就像在您的左边界处设置了诺依曼条件。如果对于扩散问题您有两个诺伊曼条件,则您的问题是不适当的,并且具有非唯一解(您可以向该问题添加任何常数,但仍然具有解)。在这里,您在离散级别上并不能完全做到这一点,但是您确实获得了非常敏感且依赖于网格的行为,就像在实验中看到的那样。


从实验中,我可以证明FVM方法仅在源函数不连续(符号变化)两侧的单元具有相等的体积时才稳定。您的分析会同意吗?这意味着我必须更加注意生成我以前所做的问题的合理网格。也许我接下来应该考虑学习FEM方法?
boyfarrell

相关文章,尽管我不太了解所有细节,但jstor.org/discover/10.2307/2157873
boyfarrell 2013年

所述FVM方法是唯一的稳定在这种情况下当电网与源函数以某种方式排列。如果您的源函数发生了变化,那么您将不得不再次调整网格。我认为生成明智的网格不是解决此问题的正确方法-您的方法很不稳定。

这是一个很好的发现。苏莉是一位扎实的分析师。我会说学习FEM可能很有趣,但是FD也应该适用于任何椭圆一维问题。您可能还会看到FV人员所做的事情(可能用惩罚项来增加通量)以使通用网格上的二阶椭圆问题收敛。数学上的民间智慧通常说FV /上偏FD适用于双曲型问题,而FEM /中心差分FD适用于椭圆型。

我正在修正这个问题。重新阅读您的答案,我必须说这太棒了!我认为您的观点是方法应该更改,因为这是问题的根源(而不是网格)。对于这种情况下如何更好地估算通量,您是否有任何建议或可以遵循的建议(非专家可以接受)。即以可能使其更稳定的方式。如果可能的话,我想为这个方程式找到更好的FVM。
boyfarrell 2013年

0

首先要注意的是您的边界条件。由于可以更改斜率和值,因此没有Dirichlet条件,也没有Neumann条件。

那么,每条直线都是右手边为零的解。你有那部分。

您的通量可能取决于 h。你使用正确吗h 在哪里消除细胞?


1
不,那是不正确的。这个问题提出来了。对于这种情况ρ0 只要 ϕ0是一种解决方案,没有其他线性函数在一点处为零而在第二点处具有零斜率。
2013年
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.