# Schwarz iterative methods.

1. Jun 18, 2010

### neros

So this may be the wrong forum, mods feel free to move. Some background- I am solving some complex flow through porous media equations. Currently the simulator works well, but I would like to begin coupling vertical domains. I've got my set of equations, which breaks down into a primarily block-diagonal system. There are a few elements outside of the diagonal blocks that connect the domains. It seems to me that this would work well using either an iterative schwarz solver (additive or multiplicative) or a schwarz preconditioner. I've coded several versions up (AS and MS solvers, and an AS preconditioned GMRES solve), but for all but the most simple systems, am having issues with convergence.

I suspect that I have some coding bugs, but before searching for them, I wanted to make sure my algorithm is correct. Any thoughts on the AS solver algorithm below would be appreciated. So..

Given a system of equations, Ax=b, where A can be divided into several blocks along the diagonal (A1-AN) and what I call a "background matrix", which are the elements not in the blocks, that provide connection between domains. I am proposing the following pseudo-code algorithm:

Code (Text):

while(!converged) {
b' = b-A[SUB]background[/SUB]*x
for(i=1,N) {
local_solver(A[SUB]i[/SUB], x[SUB]i[/SUB], b'[SUB]i[/SUB])
}
}

where there is an initial guess for x and
Code (Text):
local_solver(A[SUB]i[/SUB], x[SUB]i[/SUB], b'[SUB]i[/SUB])
is a solver appropriate to the block matrix Ai that solves for xi, given b'i.

Does this seem like an appropriate way to go about an additive schwarz solve? And is the correct way to use the additive schwarz algorithm as a preconditioner to simply go through one iteration applied to the vector I want to condition? Thoughts?