[petsc-users] Shell preconditioner within a fieldsplit
Safin, Artur
aks084000 at utdallas.edu
Sun Nov 13 23:36:45 CST 2016
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/c865bdaa/attachment.html>
More information about the petsc-users
mailing list