我编写了一个函数,它以相对有效的方式为 3D Poisson 方程设置稀疏矩阵A和 RHS b 。设置没有什么花哨的:我已经将 2D 5 点模板扩展为等效的 3D 7 点模板。导体(此时)只是 Dirichlet BC 的块,我(还)没有考虑电介质。因此,构造的 A非常简单:
- 非零项的最大数量是
Nx*Ny*Nz*7
- 在实践中,我的实际非零项数约为最大值的 90%
- 由于 BC,A是非对称的(我应该从一开始就提到这一点)
通过在 50-100 之间运行 Nx、Ny 和 Nz 的一些非常简单的问题,然后使用mldivide
. 但是,对于这些测试问题,我的峰值内存使用量已经达到了 ~20GB,而我将使用更大的数组来解决我的实际问题。
所以现在我正在研究迭代方法,但我的知识目前并没有超出 Gauss-Seidel、Jacobi 和 SOR。当我尝试使用任何开箱即用的内置迭代求解器时,我通常会收到以下消息:
METHOD stopped at iteration 2 without converging to the desired tolerance 1e-06
because a scalar quantity became too small or too large to continue computing.
The iterate returned (number 1) has relative residual 0.97.
由于这是一个非常常见的解决系统,我希望能轻松找到一些相关资源,但我发现有用的信息比我预期的要少得多。一些建议和指示将不胜感激!