-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dense Schur complement? #126
Comments
Hi, The sparsity of the Schur complement matrix is very dependent on the structure of the blocks used to compute it, even if they are sparse themself, Some time ago I looked into sparse Schur complement matrix computation and all the solvers I looked into allocated a dense matrix for the result because in general you can't say that the result will be sparse. From the MUMPS documentation, I think I remember that a dense Schur complement matrix is always returned. But maybe verify in the MUMPS documentation. Guillaume |
I checked the documentation tonight (https://mumps-solver.org/doc/userguide_5.6.2.pdf) and it seems that the returned Schur complement is always dense (section 5.15). |
Ahh, fair enough, for some reason I thought the whole point of doing the Schur complement trick was to have a sparse result. But I guess the unfortunate thing with sparse solves is that one can not guarantee sparsity 😢 (what is the application of the Schur trick then? Small sparse matrices?) In my application |
Instead of inverting each block of |
For the time being the blocks are either diagonal or dense (but with structure where the inverse is diagonal + low-rank). That being said, I have tried the factorization approach for general blocks, which simply reduces to performing lots of |
BasicLU.jl handles sparse right-hand sides. |
I only briefly looked into BasicLU.jl. For me it seemed like the sparse rhs could only be vectors and not matrices. I will take another look. Thanks for the inputs! |
Yes, it could be only sparse vectors but you can call on each column of |
On slack I got told about the SparseSparse.jl package. It seems to do the job if I ignore the block structure. But I was already doing that trying to use MUMPS. Anyhow, thanks for the many great inputs! |
Hi there,
I am trying to calculate the product$B^{-1}A$ using the Schur complement (both matrices are sparse). I've not been able to find any example, but got something to work after copying some code directly from
mumps_schur_complement(A::AbstractArray, x)
(I could not use it directly as the linemumps = Mumps(A)
seem to throw errors).My issue is now that the computed Schur complement (
S
) seem to be returned as a dense matrix even though it is extremely sparse. Is there some input variable that I am missing, or does it simply always return a dense matrix?Cheers,
Mikkel
The text was updated successfully, but these errors were encountered: