I have implemented a schur complement domain decomposition method for solving large scale problems in Matlab. It works well but I think there should be some alternative approaches to implement some parts of the algorithm more efficiently to circumvent high memory usage. Specifically, I need to evaluate $M=BQ^{-1}B^T$ where $Q$ is a $p\times p$ real-valued, symmetric, sparse and positive-definite matrix and $B$ is a $q\times p$ extremely sparse matrix only containing $\{-1,+1\}$ nonzero entries ($q$ is usually much greater than $p$). My approach is $M=B*(Q\backslash B^T)$; however its evaluation becomes very memory- and time-consuming for not very large values of $p$. Any suggestion to get around this problem is warmly welcome.

  • $\begingroup$ Upon closer scrutiny, do you perhaps mean $p$ is much greater than $q$? (such that $\mathbf M$ is smaller than $\mathbf Q$)? If $\mathbf M$ is in fact larger than $\mathbf Q$, I think you have no choice but to leave it in that "outer product" form and apply it as a cascade of 3 operations. $\endgroup$ Commented Mar 2, 2018 at 3:48
  • $\begingroup$ Or perhaps you meant to say $\mathbf Q$ was size $q \times q$ and $\mathbf B$ is size $p \times q$ with $q>>p$? $\endgroup$ Commented Mar 2, 2018 at 3:50
  • $\begingroup$ No, $q>>p$ is correct according to the given dimensions in the question. $\endgroup$
    – Mat123
    Commented Mar 2, 2018 at 7:24
  • $\begingroup$ What do $\mathbf Q$ and $\mathbf B$ represent? My initial guess was that $\mathbf Q$ was a domain solve, and $\mathbf B$ was a surface restriction/projection, but the indicated sizes suggest otherwise. Perhaps $\mathbf Q$ is instead a coarse space solve, and $\mathbf B$ represents the effect of updating every domain with a coarse space correction? $\endgroup$ Commented Mar 5, 2018 at 14:18

1 Answer 1


This is always going to be a somewhat costly calculation because the inverse of any "interesting" sparse matrix is generally dense and therefore so is $\mathbf M$. That said, there are smarter techniques than the obvious one you mention, that are asymptotically no slower than the factorization of $\mathbf Q$ itself, as long as $\mathbf B$ has no more rows than the root separator of $\mathbf Q$. This is likely the case, because in most DDM's the matrix $\mathbf Q$ comes from a volume discretization of the underlying PDE over a single domain (volume) and the operator $\mathbf M$ represents a Dirichlet-to-Neumann map or Robin-to-Robin map upon the boundary of a domain, such that the $\mathbf M$ has "surface cardinality" just like the root separator of $\mathbf Q$.

I wrote a GPL-licensed sparse direct package called Myramath to perform exactly this calculation (see http://www.myracore.com, it's also in my profile). In addition to the usual factor()/solve() API, the solver also possesses a method called .schur() that can form a matrix like $\mathbf M$. I'd also recommend another algorithm called .partialsolve(), which also has interesting applications for substructuring/DDM. See the tutorial material for details, it starts here. The schur() and partialsolve() methods are addressed here.

  • $\begingroup$ Thanks! Unfortunately I do not think it is relevant for your problem. The schur() method is useful for "condensation-like" operations, where high dimensional PDE's are projected upon low dimensional boundaries. From our discussion about the relative sizes/shapes of $\mathbf Q$ and $\mathbf B$, you apparently have the opposite case. $\endgroup$ Commented Mar 2, 2018 at 12:22
  • $\begingroup$ You say that "there are smarter techniques", but you do not mention or describe them at all. As it is, this is more or less a link-only answer. $\endgroup$ Commented Mar 3, 2018 at 11:03
  • 1
    $\begingroup$ The smarter technique: given symmetric positive definite $\mathbf Q$, compute the Cholesky factor $\mathbf {Q=LL^T}$, then the schur complement $\mathbf {M = B*Q^{-1}B'=[L^{-1}B^T]^T[L^{-1}B^T]}$. The key insight is that $\mathbf{L^{-1}B^{T}}$ is sparse, and can be calculated using sparsity-aware/multifrontal methods just like the original factorization itself. With some effort, this can be extended to other flavors of matrices too (non-positive, asymmetric, etc). Details (and source code) are in the links. $\endgroup$ Commented May 1, 2018 at 13:22
  • $\begingroup$ That said, this doesn't appear to address the OP's question anyway, and they seem to have lost interest in the problem. $\endgroup$ Commented May 1, 2018 at 13:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.