[petsc-users] Preconditioning of Liouvillian Superoperator

Barry Smith bsmith at petsc.dev
Wed Jan 31 11:45:23 CST 2024


   For large problems, preconditioners have to take advantage of some underlying mathematical structure of the operator to perform well (require few iterations). Just black-boxing the system with simple preconditioners will not be effective. 

   So, one needs to look at the Liouvillian Superoperator's structure to see what one can take advantage of. I first noticed that it can be represented as a Kronecker product:   A x I or a combination of Kronecker products? In theory, one can take advantage of Kronecker structure to solve such systems much more efficiently than just directly solving the huge system naively as a huge system. In addition it may be possible to use the Kronecker structure of the operator to perform matrix-vector products with the operator much more efficiently than by first explicitly forming the huge matrix representation and doing the multiplies with that. I suggest some googling with linear solver, preconditioning, Kronecker product.

> On Jan 31, 2024, at 6:51 AM, Niclas Götting <ngoetting at itp.uni-bremen.de> wrote:
> 
> 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
> 



More information about the petsc-users mailing list