我正在尝试为有限元情况求解线性系统:
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。我不确定这是否值得注意,但如果不是这样的话我会说明。)
我对这些稀疏求解器的实现或理解是否有问题?