<div class="gmail_quote">On Fri, Jun 1, 2012 at 3:36 AM, Klaij, Christiaan <span dir="ltr"><<a href="mailto:C.Klaij@marin.nl" target="_blank">C.Klaij@marin.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":2rn">To solve the incompressible Navier-Stokes equations, I'm using<br>
cell-centered finite volumes and Picard linearization. At each<br>
non-linear iteration, I'm using one linear (Krylov) iteration with a<br>
SIMPLE-type block preconditioner (for example Elman e.a, JCP 227,<br>
2008). The matrix and preconditioner are shells. Below, I'm showing<br>
the results for the first few non-linear iterations using<br>
<br>
(1) KSPRICHARDSON to check that the shells are ok<br>
(2) GMRES with right preconditioning<br>
(3) GMRES with left preconditioning<br>
<br>
To my surprise (2) fails while (1) and (3) succeed. The reason I'm<br>
interested in right preconditioning is that SIMPLE is a variable<br>
preconditioner so in theory I should be using FGMRES as soon as I<br>
increase the number of linear (Krylov) iterations. </div></blockquote><div><br></div><div>One inner iteration is already nonlinear.</div><div><br></div><div>What is the inner iteration here? SIMPLE uses a diagonal approximation of the (velocity,velocity) block in an explicit approximation of the Schur complement (which you could form using the matrix product).</div>
<div><br></div><div>Is there a reason you aren't using PCFIELDSPLIT for this?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":2rn">What could be the<br>

reason that GMRES fails with right pc?</div></blockquote></div><br><div>Both might be failing, you'll have to show that a tight tolerance can eventually be reached. What does FGMRES do?</div><div><br></div><div>Note that the preconditioned norm (see Richardson and left-GMRES) becomes huge. A preconditioned residual that is 10^6 larger than unpreconditioned usually means the preconditioner is incorrect. </div>