求解具有线性源项的扩散方程

计算科学 有限元 有限差分 线性求解器 平流扩散 谱法
2021-11-28 21:52:01

我想用数值求解扩散方程,其中汇项线性依赖于场,并且存在与场无关的汇:

2u(x)x2=f(x)u(x)κ(x)

目前我正在使用有限差分方案解决上述问题,其中我修改了标准拉普拉斯矩阵,以包含对角线分量中的项。然后我解决了以下形式的线性系统:f(x)u(x)

Ax=b

其中 b 是由离散的项组成的向量,是标准有限差分拉普拉斯算子(忘记边界条件),具有修改的对角线分量。κ(x)A

以上工作正常,但问题是我正在为每个时间步的准稳态解决它(基本上随时间变化)。由于我需要在每个时间步根据线性源项修改,这意味着我每次都需要重新求解系统。f(x)κ(x)A

我更喜欢一种方法,我在每个时间步修改并保持不变。这将使我能够利用的恒常性,并进行一次大部分求解,然后在每个时间步应用它。bAA

我尝试了一种方案,在该方案中,我在 RHS 上使用当前时间步的值,而不是未来值,从而得出以下形式的方案:ui

ui+1t+1+ui1t+12uit+12h=fiuitκi

但是,这似乎不起作用,并导致不稳定/不收敛的行为。

有谁知道任何可以让我保持不变并且只修改的方案?Ab

或者,更一般地说,任何人都可以告诉我在这种情况下是否有其他方法可能比有限差分更好?

最好的,

3个回答

在您提到的评论中,具有非常特殊的形式。然后被定义为一些集合如下: 正如 Bill Barth 所提到的,您现在可以将矩阵分成两部分,即 我喜欢用有限元方法来思考,因为我更熟悉这些方法。现在你的弱公式是:找到使得 对于非常测试函数fu:[a,b]Rf:[a,b]{0,1}S[a,b]

f(x)={1if xS,0otherwise.
A
A=K+C.
uH01(a,b)
(ux,vx)+(fu,v)=(κ,v)
vH01(a,b)

第一项的离散化导致和第二项我的直觉现在说,由于您的非常“简单”,您可以构建与对应,然后构建满足 如果很容易评估(即只需将行和列设置为零),那么您只需构造一次并且每个只是轻微的扰动。KCfM(u,v)Ff

C=Ff(M).
FfMC

这有什么意义吗?

你不能保持A不变,但你可以把它分成两部分A(t)=K+C(t)对于扩散和非常量“反应”项,然后使用LU-因式分解K作为未来时间整个系统的迭代方法的预处理器。如果f(x,t)相当不错,应该很好用。此外,由于 PDE 中没有时间导数,因此每个时间级别都是独立的,您可以并行解决其中的许多问题。

您基本上是在尝试求解具有可变系数的一维修正亥姆霍兹方程。

如果系数发生变化的位置在时间上保持不变,我建议使用标准有限元 (FE) 方法,在这些位置放置元素接口。在这种情况下,分段常数系数不会在使用 FE 方法的解中引入误差。我必须指出,我偏向于 FE 解决方案,因为这是我来自的领域。

在您的情况下,系数也会随时间突然变化。如果处理不当,这可能会引入数值错误。您可以在每次系数变化后大幅减少时间步长(如果有很多这样的变化,这可能会很昂贵),或者可能使用时空有限元 - 我不确定,但我认为在空间驯服的情况下FE 方案对系数中的时间跳跃也不敏感。

由于域的突然变化,还有其他方法可以处理精度问题。