<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 17.08.2012 15:45, Jed Brown wrote: </div>
    <blockquote
cite="mid:CAM9tzSkjtJQARJDZZgZo3cBpTSTXyzGKdAikNc+pRu4aSd-Frg@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div bgcolor="#FFFFFF" text="#000000"><br>
            What I would like to do is very simple: every N iterations I
            want to take current solution vector <b>x</b>_i from KSP
            and calculate:<br>
            <b>x</b>_i = <b>x</b>_i + <b>c</b>,<br>
            where <b>c</b> is a correction vector.</div>
        </blockquote>
        <div><br>
        </div>
        <div>How do you want to compute c?</div>
      </div>
    </blockquote>
    <br>
    I was planning to do it inside ShellPCApply. <br>
    The correction itself is calculated as a solution of Poisson
    equation with rhs being divergence of current density and current
    density is calculated based on <b>x</b>_i<br>
    This trick is often applied to suppress spurious solution arising
    during solution of Maxwell equations and it works very well. <br>
    <br>
    <blockquote
cite="mid:CAM9tzSkjtJQARJDZZgZo3cBpTSTXyzGKdAikNc+pRu4aSd-Frg@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">
        <div>For a general KSP, this is not allowed because the
          preconditioner must be constant. (You can do it anyway by
          checking the iteration number in your PCShell, but it won't
          converge.) You can play these games with a flexible method
          like FGMRES, for which you can also do an inner-outer, e.g.</div>
        <div><br>
        </div>
        <div>-ksp_type fgmres -pc_type composite -pc_composite_type
          multiplicative -pc_composite_pcs ksp,shell -sub_0_ksp_ksp_type
          tfqmr -sub_0_ksp_ksp_max_it 10 -sub_0_ksp_pc_type ilu</div>
      </div>
    </blockquote>
    <br>
    Looks a bit tricky. The number of fgmres iterations then defines
    number of the cycles correction will be applied, doesn't it?<br>
    <br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Regards,
Alexander</pre>
  </body>
</html>