我们如何用有限差分法和 Newton-Raphson 法求解耦合 PDE?

计算科学 有限差分 非线性方程 耦合
2021-12-25 17:33:37

我正在尝试通过 Crank-Nicolson (CN) 和 Newton-Raphson 方法与 MATLAB 解决耦合 PDE。我使用了 CN 方法,但不适用于耦合问题。请如果有人可以帮助让我知道添加有关方程式的更多详细信息。

提前致谢

耦合方程的细节:

我要解决 Poisson-Nernst-Planck 方程组。能斯特-普朗克方程是

nit=Ai2nix2+Binixϕx+Bi(ni2ϕx2),
在哪里ni是特定离子的浓度,AiBi是特定离子的方程系数,ϕ是电势。由前一个方程耦合的泊松方程是
ϵ2ϕx2=F(nizi),
在哪里ϵ是介质的介电常数,F是法拉第常数,ni是特定离子的浓度和zi是离子电荷。那么我如何将泊松方程实现为 Nernst-Planck,然后实现 Newton-Raphson 方法对其进行线性化。还是我们需要 Newton-Raphson 方法来求解这个方程?或者我们可以通过CN方法解决它。如果有人需要更多详细信息或不清楚的地方,请告诉我。

1个回答

正如 Matt Knepley 所提到的,这很自然地被表述为偏微分代数方程组。因为你在Matlab,你可以考虑自己做空间离散化(例如有限差分,有限体积,有限元)得到一个DAE的系统,然后用线的方法及时向前。您可以在空间中以相同的方式离散 Nernst-Planck 和 Poisson 方程。这应该给出一个方程列表,如

ni,xjt=f({ni,xj},{ϕxj})
0=g({ni,xj},{ϕxj})

在哪里xj指变量在特定离散化时的值x坐标和功能fg取决于您的空间离散化,并且对于每个空间位置都会有所不同。如果你有N物种,你应该有N每个网格点的第一个方程和第二个方程中的一个,导致相同数量的未知数和方程(我不知道你的边界条件,所以你可以把它们当作额外的方程,用代数方式将它们替换为离散的边缘的方程等)。

如果您要使用 CN 时间步长,这自然会导致您必须在每个时间步长求解的非线性方程组,您可以使用 Newton-Raphson 方法进行求解。但是,除非您特别设置 CN 时间步进,否则我建议您考虑使用 Matlab ode15s(参见文档),它在时间步进通过耦合的非线性(索引 1)DAE 时相当不错,比如这个。它使用可变顺序、可变大小步进,并且我发现它适用于耦合的 Nernst-Planck 样式方程。要将 中的微分方程和代数方程耦合ode15s,您需要将(奇异)质量矩阵传递给ode15s. 它将为您处理 Newton-Raphson 迭代,您可以让它以数值方式估计雅可比行列式,也可以提供一个提供解析雅可比行列式的函数。