扩散-平流方程有限差分法的封闭边界条件

计算科学 有限差分 边界条件 平流扩散
2021-12-15 06:55:54

我正在实施一种有限差分法来求解扩散-平流方程:

ut+vux=Duxx
(v, D 是常数)。计划使用算子拆分方法(见下文),我现在专注于平流部分

我选择了交错跳跃法(来自数字食谱书

ujn+1=ujn1vΔtΔx(uj+1nuj1n)
因为在通量守恒的情况下它应该是库朗稳定的;事实证明确实如此,因为它使用周期性条件完美地工作。当试图改变界限时,问题就显现出来了。简而言之,我的问题是:如何在这种方法中明确地实现这些条件?下面,我将提供更多关于我的失败的细节。

无通量条件

让我们从更一般的情况开始:正如这里指出的扩散对流方程,需要 Robin 条件来实现封闭边界

vuDux=0
我试图离散化它们:
vujDΔx(cjcj1)=0
但是,当 D=0 时,剩下的唯一条件是
vu=0
因此,我不清楚如何解释这一点:强加 u=0 会导致(失败)吸收条件的策略(见下文),而 v 是恒定的(我不明白我可以在哪里强加它等于零)。

吸收条件

Leapfrog 方法适用于通量守恒的情况。事实上,强加

u(j=0,n) = 0 
u(jmax,n) = 0

造成人为的不稳定性。蛙跳式更新分为三部分:一是该点的前一个(前两步)值,一是该值与上坡点成比例增加,另一部分与下坡点成比例减少。这也是从物理角度可以预期的:一些量进入,一些量出去。简单设置空边界失败的原因现在很明显:如果下坡点为空,则没有归约项,所以最后一个点之前的点会爆炸;之前的点现在有一个很大的减少项,所以归零;之前的点有一个小的减少项等等,导致增加和减少项的交替(见图1)。 图。1

算子拆分

正如数字食谱书(上面引用的)中所解释的那样,一个等式

ut=Lu
其中线性算子的分解
L=imLi
是可能的可以解决应用,对于每一步,序列
U1(U2(Um(un)))=un+1
前提是每个算子 U 求解总和中的一项并且是稳定的。


即使我知道替代方案是可能的,通常考虑扩散平流功能,在深入研究它们之前,我愿意解决我的这个疑问。

1个回答

如果你只考虑纯粹的平流部分,让,说,v>0,那么只需设置(重新定义)就可以在正确的点获得“无通量条件”v=0那里。当然,解决方案可以在那里形成一个“边界层”,并且它可以在正确的点变得不连续,因为解决方案将在那里保持初始条件给出的值,即ujmaxn+1=ujmax0.

恒速的自然边界条件v>0是您让解决方案通过可以视为流出边界的正确间隔点“流出”。它可以通过应用你的跳跃方法来获得ujmaxn+1与辅助值ujmax+1n=ujmaxn(不断外推)或ujmax+1n=2ujmaxnujmax1n(线性外推)。可以将这样的处理视为适合流出边界和纯平流的“不做边界条件”。就像您也在正确的点求解纯平流(微分方程)。

只是备注 - 如果您使用适当的迎风方法而不是跳跃方法,您甚至不需要域之外的辅助值来计算ujmaxn+1.

对于流入边界,即案例中的左点v>0,你必须规定值u0n+1直接通过“狄利克雷边界条件”而不是求解微分方程。

对于对流扩散方程的情况,理论上您可以在编写时定义无通量边界条件D0, 但这意味着v>0你规定了一个“向内扩散”,因此是一个相应的梯度,这将抵消平流通量,因此总通量将为零。这种情况在实践中很难发现。更典型的是只为扩散通量规定一些东西,而对平流通量使用以前的“什么都不做”方法(或外推)。