This forum has been archived. All content is frozen. Please use KDE Discuss instead.

Why can't I use BICG with ILUT preconditioner

Tags: None
(comma "," separated)
yuhao
Registered Member
Posts
11
Karma
0
I set solver.preconditioner.setFillfactor(100)
solver.compute(A);
x = solver.solve(b);

It shows during compiling: "Assertion failed: m_factroizationOK==true,......."

What does this mean?
User avatar
ggael
Moderator
Posts
3447
Karma
19
OS
It means two things: first it seems that your matrix has a row which is completely empty and so ILUT nor BICG cannot work with it. Second, this assert seems to be produced during the compute step. That should not be the case. After the fix you will be able to check the compute step went well by checking that solver.info()==Eigen::Success. If that's not the case, you will get an assert during the solve step.
yuhao
Registered Member
Posts
11
Karma
0
Yes, my matrix is singular, some rows are linear dependent, but there is no row which are completely empty. And it is sure this assert is during compute step.

My then question is: what is the solver suitable for solving system with singular matrix? What is the best size when setting solver.setFillfactor( ? ).
Dee33
Registered Member
Posts
54
Karma
0
OS
You can try SparseQR
yuhao
Registered Member
Posts
11
Karma
0
Hi, Dee33,

Thanks!Is it true that BiCG with ILUT can't work with any singular matrix?(but why the author of post " the left hand side is not positive definite" can use BiCG with ILUT, but finally get SuperLU) Strange. Does GMERS works for this?
Dee33
Registered Member
Posts
54
Karma
0
OS
BiCG (or GMRES) is not intended to be used with singular matrices. Now, depending on the "level" of the linear dependence, one can try to use those methods, but the results won't be really accurate. The best way is to use rank-revealing methods like SparseQR.
Hope it helps


Bookmarks



Who is online

Registered users: Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]