对流扩散方程使用诺伊曼边界条件时的物理量守恒


25

当我应用不同的边界条件时,我不理解对流扩散方程的不同行为。我的动机是模拟在扩散和对流作用下的实际物理量(粒子密度)。除非从边缘流出颗粒密度,否则内部应保持颗粒密度。按照这种逻辑,如果我强制执行Neumann边界条件,则系统的两端,例如(在左侧和右侧),则系统应“封闭”,即如果边界处的通量为零,则没有粒子可以逸出。ϕx=0

对于以下所有模拟,我已将Crank-Nicolson离散化应用于对流扩散方程,所有模拟都具有边界条件。但是,对于矩阵的第一行和最后一行(边界条件行),我允许独立于内部值进行更改。这允许端点完全隐式。ϕx=0β

下面我讨论4种不同的配置,只有一种是我所期望的。最后,我讨论了我的实现。

仅扩散限制

在此,通过将速度设置为零来关闭对流项。

仅扩散,所有点均为β = 0.5(Crank-Niscolson)

仅扩散(Neumann边界为beta = 0.5)

如脉冲面积减小所见,该量不守恒。

仅扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ

仅扩散(内部为Neumann边界,beta = 0.5,beta = 1完全隐式)的边界

通过在边界上使用完全隐式方程,可以实现我所期望的:没有粒子逸出。您可以通过保留粒子扩散的区域来看到这一点。为什么在边界点选择影响情况的物理性?这是错误还是预期的?β

扩散和平流

当包括对流项时,边界处的值似乎不会影响解。但是,对于所有情况,当边界似乎是“开放的”时,即粒子可以逃脱边界。为什么会这样呢?β

在所有点上具有 = 0.5(Crank-Niscolson)的对流和扩散β

对流扩散(β= 0.5的诺伊曼边界)

对流和扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ

对流和扩散(内部为Neumann边界,β= 0.5,内部完全为beta = 1)

对流扩散方程的实现

从对流扩散方程开始,

ϕt=D2ϕx2+vϕx

使用Crank-Nicolson进行写作,

ϕjn+1ϕjnΔt=D[1β(Δx)2(ϕj1n2ϕjn+ϕj+1n)+β(Δx)2(ϕj1n+12ϕjn+1+ϕj+1n+1)]+v[1β2Δx(ϕj+1nϕj1n)+β2Δx(ϕj+1n+1ϕj1n+1)]

请注意,对于Crank-Nicolson, = 0.5,对于完全隐式为 = 1,对于完全显式为 = 0。β ββββ

为了简化表示法,让我们进行替换,

s=DΔt(Δx)2r=vΔt2Δx

并将时间导数的已知值到右侧,ϕjn

ϕjn+1=ϕjn+s(1β)(ϕj1n2ϕjn+ϕj+1n)+sβ(ϕj1n+12ϕjn+1+ϕj+1个ñ+1个+[R1个-βϕĴ+1个ñ-ϕĴ-1个ñ+[RβϕĴ+1个ñ+1个-ϕĴ-1个ñ+1个

分解项,ϕ

β(rs)ϕj1n+1+(1+2sβ)ϕjn+1β(s+r)ϕj+1n+1Aϕn+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1nMϕn

我们可以用矩阵形式来写,Aϕn+1=Mϕn

A=(1+2sββ(s+r)0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)0β(rs)1+2sβ)

M=(12s(1β)(1β)(s+r)0(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)0(1β)(sr)12s(1β))

应用Neumann边界条件

NB再次通过推导工作,我想我已经发现了错误。在编写边界条件的有限差分时,我假设使用完全隐式方案( = 1)。如果您在这里假设使用Crank-Niscolson方案,那么复杂度就会变得太大,并且我无法求解结果方程式以消除域外的节点。但是,这似乎有可能,有两个带有两个未知数的方程,但我无法解决。这可能解释了上面第一幅图和第二幅图之间的差异。我认为我们可以得出结论,只有边界点处 = 0.5 的图才有效。ββ

假设左侧的通量是已知的(假定为完全隐式),

ϕ1n+1x=σL

将其写成居中差异可以得出,

ϕ1n+1xϕ2n+1ϕ0n+12Δx=σL

因此, ϕ0n+1=ϕ2n+12ΔxσL

请注意,这引入了一个节点,该节点不在问题范围内。可以通过使用第二个方程来消除该节点。我们可以将节点写为ϕ0n+1j=1

β(rs)ϕ0n+1+(1+2sβ)ϕ1n+1β(s+r)ϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n

替换从边界条件中找到的的值, = 1行的以下结果,ϕ0n+1j

(1+2sβ)ϕ1n+12sβϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n+2β(rs)ΔxσL

对最后一行执行相同的过程(在 =),jJ

2sβϕJ1n+1+(1+2sβ)ϕJn+1=(1β)(sr)ϕJ1n+(12s(1β))ϕJn+2β(s+r)ΔxσR

最后,使边界行隐式(设置 = 1)给出,β

(1+2s)ϕ1n+12sϕ2n+1=ϕj1n+1ϕjn+2(rs)ΔxσL

2sϕJ1n+1+(1+2s)ϕJn+1=ϕJn+2(s+r)ΔxσR

因此,在Neumann边界条件下,我们可以写出矩阵方程,Aϕn+1=Mϕn+bN

哪里,

A=(1+2s2s0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)02s1+2s)

M=(100(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)001)

bN=(2(rs)ΔxσL002(s+r)ΔxσR)T

我目前的理解

  • 我认为第一张图和第二张图之间的差异是通过注意上面概述的错误来解释的。

  • 关于物理量的守恒。我相信原因是,正如我在这里指出的那样,以我编写的形式的对流方程不允许反向传播,因此即使在零通量边界条件下波也只能通过。我关于保护的最初直觉仅在对流项为零时适用(这是在保护区域面积的图2中的解决方案)。

  • 即使使用Neumann零通量边界条件,质量仍然可以离开系统,这是因为在这种情况下正确的边界条件是Robin条件,其中通量指定为。而且,诺依曼条件指定质量不能通过扩散离开畴,它对平流什么也没说。本质上,我们听到的是扩散的封闭边界条件和对流的开放边界条件。有关更多信息,请参见此处的答案,对流扩散方程中的零梯度边界条件的实现ϕx=0j=Dϕx+vϕ=0

你同意吗?


似乎边界条件没有正确实现。您能告诉我们您如何施加边界条件吗?
David Ketcheson

好的,我更新了实现,我想我发现了只在边界行应用 = 0.5 的错误。我在问题的底部更新了我的“当前理解”。您有什么意见吗?β
boyfarrell

那么...在罗宾边界的情况下,边界的离散化看起来像什么?您已针对诺伊曼(Neumann)边界展示了它,但并未针对罗宾(Robin)边界展示它。

Answers:


15

我认为您的问题之一是(正如您在评论中所观察到的)诺伊曼条件不是您要寻找的条件,从某种意义上说,它们并不意味着您的数量得到保护。要找到正确的条件,请将PDE重写为

ϕŤ=XdϕX+vϕ+小号XŤ

现在,括号中出现的项是总通量,这是必须保留在边界上的零以保存。(为了通用起见和您的评论我添加了。)然后您必须施加边界条件(假设您的空间域为)dϕX+vϕ=0ϕ小号XŤ-1010

dϕX-10+vϕ-10=0

对于左侧和

dϕX10+vϕ10=0

在右边。这些就是所谓的罗宾边界条件(请注意,维基百科明确表示这些是对流扩散方程的绝缘条件)。

如果设置这些边界条件,则将获得所需的守恒属性。确实,在空间领域进行整合,我们有

ϕŤdX=XdϕX+vϕdX+小号XŤdX

使用右侧的零件集成,我们可以

ϕŤdX=dϕX+vϕ10-dϕX+vϕ-10+小号XŤdX

现在,由于边界条件,两个中心术语消失了。及时整合,我们获得

0ŤϕŤdXdŤ=0Ť小号XŤdXdŤ

如果我们允许切换前两个积分

ϕXŤdX-ϕX0dX=0Ť小号XŤdX

这表明域与外部绝缘。特别地,如果,我们得到的守恒。小号=0ϕ


我现在知道为什么它仅在 = 0 时才起作用;因为这意味着按照您的上述方法进行保护。在上面使用此边界条件会产生什么结果,该波会反射吗?我认为这是不可能的,因为方程中没有东西会给我负速度?v
boyfarrell

最好的了解方法可能就是尝试!但是,如果行为正确(并且IMO确实如此),您应该看到一定数量的开始在域的左侧累积:对流将朝该方向推动,但边界是封闭的。当扩散足够大以平衡它时,累积停止。因此,不应该有反射波。ϕϕ
Dr_Sam

@DrSam只是有关实现的问题。我了解您关于如何使左侧的数量为零的观点。但是,当您说“在右边只是边界术语”时,这意味着什么?我认为边界条件应该是Neumann还是Dirichlet(或两者混合)?
boyfarrell

@boyfarrell答案中的左/右是指正确边界条件的推导,而不是其实现方式(为清楚起见而编辑)。罗宾条件是经典条件,尽管不如狄里克雷特和诺伊曼为人所知。
Dr_Sam

那么关于实现,您认为我应该为两个边界导出Robin边界条件吗?此外,如果方程式具有反作用项(例如边界条件是否还需要包括这个术语吗?
ϕt=x(Dϕx+vϕ)+S(x,t)
boyfarrell 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.