PCFieldSplitGetSubKSP#
Gets the KSP
contexts for all splits
Synopsis#
#include "petscpc.h"
PetscErrorCode PCFieldSplitGetSubKSP(PC pc, PetscInt *n, KSP *subksp[])
Collective
Input Parameter#
pc - the preconditioner context
Output Parameters#
n - the number of splits
subksp - the array of
KSP
contexts
Notes#
After PCFieldSplitGetSubKSP()
the array of KSP
s is to be freed by the user with PetscFree()
(not the KSP
, just the array that contains them).
You must call PCSetUp()
before calling PCFieldSplitGetSubKSP()
.
If the fieldsplit is of type PC_COMPOSITE_SCHUR
, it returns the KSP
object used inside the
Schur complement and the KSP
object used to iterate over the Schur complement.
To access all the KSP
objects used in PC_COMPOSITE_SCHUR
, use PCFieldSplitSchurGetSubKSP()
.
If the fieldsplit is of type PC_COMPOSITE_GKB
, it returns the KSP
object used to solve the
inner linear system defined by the matrix H in each loop.
Fortran Notes#
You must pass in a KSP
array that is large enough to contain all the KSP
s.
You can call PCFieldSplitGetSubKSP
(pc,n,PETSC_NULL_KSP
,ierr) to determine how large the
KSP
array must be.
Developer Notes#
There should be a PCFieldSplitRestoreSubKSP()
instead of requiring the user to call PetscFree()
The Fortran interface could be modernized to return directly the array of values.
See Also#
Solving Block Matrices with PCFIELDSPLIT, PC
, PCFIELDSPLIT
, PCFieldSplitSetFields()
, PCFieldSplitSetIS()
, PCFieldSplitSchurGetSubKSP()
Level#
advanced
Location#
Examples#
src/ksp/ksp/tutorials/ex87.c
src/ksp/ksp/tutorials/ex70.c
src/ksp/ksp/tutorials/ex43.c
src/snes/tutorials/ex70.c
src/ksp/ksp/tutorials/ex27.c
Implementations#
PCFieldSplitGetSubKSP_FieldSplit() in src/ksp/pc/impls/fieldsplit/fieldsplit.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages