[petsc-users] Shell preconditioner within a fieldsplit

Dave May dave.mayhem23 at gmail.com
Mon Nov 14 01:20:47 CST 2016


Damn - the last part of my email is wrong. You want to set the PCType to
"mat". KSPType preonly is fine

On Mon, 14 Nov 2016 at 07:04, Dave May <dave.mayhem23 at gmail.com> wrote:

> Looks like you want the contents of your mat shell, specifically the op
> Ax, to define the action of the preconditioner.
>
> You need to either create a PCShell (rather than a MatShell), and define
> the operation called by PCApply(), or keep you current shell but change
> "preonly" to "mat".
>
>
> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCMAT.html#PCMAT
>
> Thanks
> Dave
>
> On Mon, 14 Nov 2016 at 06:36, Safin, Artur <aks084000 at utdallas.edu> wrote:
>
> Hello,
>
>
> What is the proper way to set up a shell preconditioner within a
> fielsplit? I have tried it on my own, but do not get the proper
> behavior. The relevant portion looks like this:
>
>
> __________________________________________________________________
>
> // Global System
> KSPSetOperators(ksp, A, A);
>
> // Skipped code..
>
>
>
> // Shell Preconditioner for the pressure sub-block
>
> KSP *subksp;
>
> PCFieldSplitGetSubKSP(pc, NULL, &subksp);
>
> Mat pressureA;
> KSPSetType(subksp[0], "preonly");
> MatCreateShell(MPI_COMM_WORLD, n_local_P_dofs, n_local_P_dofs, ,
> PETSC_DETERMINE, PETSC_DETERMINE, &pressureA);
> MatShellSetOperation(pressureA, MATOP_MULT, (void(*)(void))
> PressureBlock);
> KSPSetOperators(subksp[0], pressureA, pressureA);
>
> // Skipped code..
>
>
> KSPSetUp(ksp);
>
> KSPSolve(ksp, b, x);
>
> __________________________________________________________________
>
>
> The fieldsplit component works fine; the solver however does not go into
> the custom function PressureBlock(), so I am curious as to what the correct
> approach is.
>
>
> Best,
>
>
> Artur
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20161114/fce8567a/attachment.html>


More information about the petsc-users mailing list