Fortran编程,大特征值问题

计算科学 正则
2021-11-28 23:29:04

我使用 matlab/fortran 来处理一些大的特征值问题(FEM 类型)。

比如我在Matlab中使用spalloc和eigs来声明和解决问题,

任何人都可以就我如何在 Fortran 中做到这一点提供一些建议吗?像 spalloc/eigs 这样的例程吗?

2个回答

如果您的矩阵很密集,那么LAPACK就是您的最佳选择。如果它们是稀疏的,那么ARPACK通常更适合。

没有标准的 spalloc 等价物:LAPACK 仅支持密集矩阵,而 ARPACK 让您可以随心所欲地存储数据,您只需为其计算动作Ax

您可能还想查看这个 stackoverflow问题

如果您不需要(分布式内存)并行化,则根据问题的稀疏性,LAPACK 或 ARPACK 是不错的选择,正如 Max Hutchinson 已经回答的那样。

大型并行特征值求解器是正在进行的研究的主题。对于稀疏问题,请查看例如SLEPc,对于密集问题,如果旧的主力ScaLAPACK没有解决它, ELPA可能对您来说很有趣。ELPA wiki还包含一些其他并行特征求解器的链接