[petsc-users] Composite shell preconditiner

Jed Brown jedbrown at mcs.anl.gov
Fri Aug 17 09:03:19 CDT 2012


On Fri, Aug 17, 2012 at 8:54 AM, Alexander Grayver
<agrayver at gfz-potsdam.de>wrote:

> I was planning to do it inside ShellPCApply.
> 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 *x*_i
>

Fine, sounds like you are doing divergence cleaning for an incompatible
spatial discretization. Since the change lies within the null space of the
intended continuous operator, you should be okay. But note that this
procedure is fragile and will have different effect with different Krylov
methods and preconditioning sides.


> This trick is often applied to suppress spurious solution arising during
> solution of Maxwell equations and it works very well.
>
>  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.
>
>  -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
>
>
> Looks a bit tricky. The number of fgmres iterations then defines number of
> the cycles correction will be applied, doesn't it?
>

Yes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120817/e1529df3/attachment.html>


More information about the petsc-users mailing list