我正在尝试通过 Crank-Nicolson (CN) 和 Newton-Raphson 方法与 MATLAB 解决耦合 PDE。我使用了 CN 方法,但不适用于耦合问题。请如果有人可以帮助让我知道添加有关方程式的更多详细信息。
提前致谢
耦合方程的细节:
我要解决 Poisson-Nernst-Planck 方程组。能斯特-普朗克方程是
我正在尝试通过 Crank-Nicolson (CN) 和 Newton-Raphson 方法与 MATLAB 解决耦合 PDE。我使用了 CN 方法,但不适用于耦合问题。请如果有人可以帮助让我知道添加有关方程式的更多详细信息。
提前致谢
耦合方程的细节:
我要解决 Poisson-Nernst-Planck 方程组。能斯特-普朗克方程是
正如 Matt Knepley 所提到的,这很自然地被表述为偏微分代数方程组。因为你在Matlab,你可以考虑自己做空间离散化(例如有限差分,有限体积,有限元)得到一个DAE的系统,然后用线的方法及时向前。您可以在空间中以相同的方式离散 Nernst-Planck 和 Poisson 方程。这应该给出一个方程列表,如
在哪里指变量在特定离散化时的值坐标和功能和取决于您的空间离散化,并且对于每个空间位置都会有所不同。如果你有物种,你应该有每个网格点的第一个方程和第二个方程中的一个,导致相同数量的未知数和方程(我不知道你的边界条件,所以你可以把它们当作额外的方程,用代数方式将它们替换为离散的边缘的方程等)。
如果您要使用 CN 时间步长,这自然会导致您必须在每个时间步长求解的非线性方程组,您可以使用 Newton-Raphson 方法进行求解。但是,除非您特别设置 CN 时间步进,否则我建议您考虑使用 Matlab ode15s
(参见文档),它在时间步进通过耦合的非线性(索引 1)DAE 时相当不错,比如这个。它使用可变顺序、可变大小步进,并且我发现它适用于耦合的 Nernst-Planck 样式方程。要将 中的微分方程和代数方程耦合ode15s
,您需要将(奇异)质量矩阵传递给ode15s
. 它将为您处理 Newton-Raphson 迭代,您可以让它以数值方式估计雅可比行列式,也可以提供一个提供解析雅可比行列式的函数。