对于简单的情况,特征 - 稀疏矩阵求解器的速度非常慢

时间:2017-04-03 00:54:23

标签: c++ sparse-matrix eigen

我正在尝试为有限元情况求解线性系统:

d = F/K

其中K是稀疏矩阵25,000x25,000和360,000非零值,仅为整个矩阵的0.05%。 F是一个25,000x1的矩阵,大部分都是零。

解决这个系统需要花费相当多的时间:

Sparse Solver        Compute + Solve Time
ConjugateGradient    70.2s
BiCGSTAB             40.2s
SimplicialLDLT       40.1s
SimplicialCholesky   32.9s
SimplicialLLT        29.0s

求解器以标准方式使用,例如

VectorXd F_vector(25000);
// fill F_vector
VectorXd d_vector(25000);
BiCGSTAB<SparseMatrix<double> > solver;
solver.compute(K_sparse);
d_vector = solver.solve(F_vector);

(另外,尺寸增加10%导致时间增加10%^ 2。我不确定这是否值得注意,但如果不是这样的话我会说明。)

我对这些稀疏求解器的实现或理解是否有问题?

0 个答案:

没有答案