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
