Hi all,

I've been trying for the last couple of days to solve a linear system using iterative methods. The system size itself scales exponentially (64^N) with the number of components, so I receive sizes of

* (64, 64) for one component
* (4096, 4096) for two components
* (262144, 262144) for three components

I can solve the first two cases with direct solvers and don't run into any problems; however, the last case is the first nontrivial and it's too large for a direct solution, which is why I believe that I need an iterative solver.

As I know the solution for the first two cases, I tried to reproduce them using GMRES and failed on the second, because GMRES didn't converge and seems to have been going in the wrong direction (the vector to which it "tries" to converge is a totally different one than the correct solution). I went as far as -ksp_max_it 1000000, which takes orders of magnitude longer than the LU solution and I'd intuitively think that GMRES should not take *that* much longer than LU. Here is the information I have about this (4096, 4096) system:

* not symmetric (which is why I went for GMRES)
* not singular (SVD: condition number 1.427743623238e+06, 0 of 4096 singular values are (nearly) zero)
* solving without preconditioning does not converge (DIVERGED_ITS)
* solving with iLU and natural ordering fails due to zeros on the diagonal
* solving with iLU and RCM ordering does not converge (DIVERGED_ITS)

After some searching I also found [this](http://arxiv.org/abs/1504.06768) paper, which mentions the use of ILUTP, which I believe in PETSc should be used via hypre, which, however, threw a SEGV for me, and I'm not sure if it's worth debugging at this point in time, because I might be missing something entirely different.

Does anybody have an idea how this system could be solved in finite time, such that the method also scales to the three component problem?

Thank you all very much in advance!

Best regards
Niclas

Reply via email to