# How to precondition FEM problems using domain decomposition?

Let's say that I have a FEM code which yields the following problem: $$\mathbf{A}\mathbf{x} = \mathbf{b}.$$ In order to solve this more efficiently with an iterative method, I would like to precondition it, $$\mathbf{BAx} = \mathbf{Bb},$$ using domain decomposition. This is a common application for domain decomposition methods. My question is: How do I retrieve $\mathbf{B}$ from a Schwarz domain decomposition method?

For example, the alternating Schwarz algorithm for the Poisson problem first solves this problem: $$-\nabla^2u=f\quad\rm{in}\ \Omega_1,\\ u_1^n=g\quad \rm{on}\ \partial\Omega_1\backslash\Gamma_1,\\ u_1^n=u_2^{n-1}|_{\Gamma_1}$$

and then solves this problem: $$-\nabla^2u=f\quad\rm{in}\ \Omega_2,\\ u_2^n=g\quad \rm{on}\ \partial\Omega_2\backslash\Gamma_2,\\ u_2^n=u_1^{n-1}|_{\Gamma_2}$$ where $\Omega = \Omega_1\cup \Omega_2$ is the global domain, and $\Gamma_i$ denotes the part of the boundary which overlaps the other subdomain. By solving these equations repeatedly, I get better and better estimates for the global solutions $u_1$ and $u_2$. Let's now say I want to use this to precondition $\mathbf{Ax} = \mathbf{b}$, how do I do that? How do I get the $\mathbf{B}$ matrix mentioend earlier from these solutions?

Ultimately, I am also interested in additive Schwarz and multiplicative Schwarz.

Don't use domain decomposition methods. They're from the 1990s, but we have much better ways of preconditioning problems today. All of them work on the global problem, rather than ones on subdomains. One example are algebraic multigrid methods.

• This is good know, although my interest in using domain decomposition methods for preconditioning is only because I find it interesting. I would still like to know how to do it. – C. E. Aug 20 '17 at 23:08

Let us consider the abstract linear problem $$\mathcal{A} x = b \,,$$ where $\mathcal{A}$ is a linear operator and $x$ and $b$ some functions on a certain domain.

To answer your question let me first discuss, what a preconditioner is supposed to do. A preconditioner is choosen such that $\mathcal{B} \approx \mathcal{A}^{-1}$, implying that $\mathcal{B} \mathcal{A} \approx I$, which is a system that is easy to solve.

It is important to note that a preconditioner should compute approximations to $\mathcal{A}^{-1} b$ for any possible right hand side $b$. The question now is, what corresponds to $b$ in your problem.

In a general situation $b$ is the input of the problem you are solving, i.e. $b$ consists of $f$ and the boundary function $g$. Let us for simplicity, however, assume that $g=0$, and therefore, the input of the preconditioner is only the function $f$.

In this situation $\mathcal{B} b$ is the result of performing a few steps of the alternating Schwarz procedure with right hand side $f=b$, starting with some (prefarably zero) initial iterate.

Hence, if you want to obtain the matrix $B$, you have to write down the matrix that represents this procedure on your space of piecewise polynomial functions. The right hand side $b$ ($= f$), will be some some piecewise polynomial function.

• Are you aware of any papers or books which show how to do this (in general)? For common algorithms like the alternating Schwarz, I expect it to be well known how to do it. – C. E. Aug 19 '17 at 20:44
• You can look at Toselli and Widlund Domain Decomposition Methods -- Algorithms and Theory. There is a section called "Block Jacobi Preconditioners" that covers some of the details. – H. Rittich Aug 20 '17 at 8:45