我正在做一些相当大的努力来从 MATLAB 翻译我的一个代码。这是一种有限元代码,我还没有实现求解器,但是比较了在 MATLAB 和 C 之间简单组装全局系统的 CPU 时间,后者快了两个数量级以上......
无论如何,我不知道如何使用 PETSc,但会在接下来的几周内尝试学习它。只是阅读一些代码和文档,似乎很难为 PETSc 翻译我的代码。
我注意到有一个从“文件”中读取矩阵的选项(参见此处)。我只是想知道我是否像现在一样翻译我的代码,我可以将矩阵/rhs 保存到 .dat 文件或从那里读取的东西吗?我在 C 方面没有太多经验,所以我不知道这是否难以做到,尤其是对于像我这样的大型系统。
在我的代码中,我必须在每次牛顿迭代时求解一个线性系统(它是一个非线性系统),并将其与问题与时间相关的事实结合起来。在我的整个代码中,我需要 PETSc 的唯一一次是用于线性求解(诚然,这是很多线性求解......)。
如果我现在必须学习 PETSc 的语法,我只想知道这样我以后不会感到沮丧。
另一方面,到目前为止,我真的很惊讶 C 代码的速度有多快。也许我的 MATLAB 编码效率不高,但我一直在尽可能减少 for 循环。