Registered Member
|
Hi,
I've implemented a simple incomplete LU solver for sparse matrices and have a problem solving the resulting L*U*x=b system. If LU is a sparse matrix and x,y,b dense vectors, then the code
yields the runtime error
When I use a dense matrix DLU = LU.toDense(); instead, the code runs just fine. I'm using the newest packed dev version of Eigen with GCC 4.3.4. |
Registered Member
|
I just noticed that
yields a compilation error:
while
compiles fine. |
Moderator
|
Hi,
w.norm() has been just fixed. Regarding your issue with the triangular solver, the pb is that for efficiency reasons it assumes the matrix is triangular, i.e., only the respective triangular part is stored. Otherwise, for instance for a column major lower triangular matrix, we would have to manually skip all the entries until find the first one holding to the lower part, and for a upper triangular matrix, check every time we have not crossed the diagonal... Well actually, we could add such tests, if the matrix is already triangular, they should have no cost. Actually, for sparse matrices, there is almost no memory advantage in packing two triangular matrices into a single one. So, anyway, I would suggest you to split the LU matrix into a L and U one. |
Registered users: abc72656, Bing [Bot], daret, Google [Bot], Sogou [Bot], Yahoo [Bot]