Sparse Matrix Solver

Mar 22, 2014 at 1:05 PM
Edited Mar 22, 2014 at 1:06 PM
I'm working on a non-linear finite element solver . I have to solve many times the classical system Ax = b where the matrix A is constant and varies only the side b .
I currently use dense arrays , and support the calculation routines in Fortran : the use of the inverse matrix of A has proved efficient .
Unfortunately, the scale of the problems to be calculated is increased to cause me the overflow of dense arrays .
So I used mathnetnumerics.linearalgebra classes to handle the computation with sparse matrices .
With the order of 1000x1000 matrices the LU factorization still seems a good choice , but for systems 10000x10000 computation time are no longer acceptable . I've tried using iterative solvers and preconditioning but maybe I'm doing something wrong . Often, the system does not converge , even if I provide the vector x already correct ( LU factorization with pre-calculated ) .
I am trying with the release alpha8 but I do not have sufficient documentation .
Could you give me some suggestions?

ps: I development on but of course I can read cpp
Mar 25, 2014 at 9:50 AM
Edited Mar 25, 2014 at 9:50 AM

Have you tried the new MILU0Preconditioner?

Seems like this might be a good use case for a sparse implementation of direct factorizations (LU, QR). Unfortunately these direct factorizations do not leverage sparse datastructures at all yet, making them very slow in practice on sparse data.

Concerning the out of memory, are you running the process as x64 with gcAllowVeryLargeObjects enabled?