:orphan: # PCFieldSplitSetGKBNu Sets the scalar value nu >= 0 in the transformation H = A00 + nu*A01*A01' of the (1,1) block in the Golub-Kahan bidiagonalization preconditioner in `PCFIELDSPLIT` ## Synopsis ``` #include "petscpc.h" PetscErrorCode PCFieldSplitSetGKBNu(PC pc, PetscReal nu) ``` Collective ## Input Parameters - ***pc -*** the preconditioner context - ***nu -*** the shift parameter ## Options Database Key - ***-pc_fieldsplit_gkb_nu -*** default is 1 ## Notes This shift is in general done to obtain better convergence properties for the outer loop of the algorithm. This is often achieved by choosing nu sufficiently big. However, if nu is chosen too big, the matrix H might be badly conditioned and the solution of the linear system Hx = b in the inner loop becomes difficult. It is therefore necessary to find a good balance in between the convergence of the inner and outer loop. For nu = 0, no shift is done. In this case A00 has to be positive definite. The matrix N in [Ar13] is then chosen as identity. ## References [Ar13] Generalized Golub-Kahan bidiagonalization and stopping criteria, SIAM J. Matrix Anal. Appl., Vol. 34, No. 2, pp. 571-592, 2013. ## See Also [](sec_block_matrices), `PC`, `PCFIELDSPLIT`, `PCFieldSplitSetGKBDelay()`, `PCFieldSplitSetGKBTol()`, `PCFieldSplitSetGKBMaxit()` ## Level intermediate ## Location src/ksp/pc/impls/fieldsplit/fieldsplit.c ## Implementations PCFieldSplitSetGKBNu_FieldSplit in src/ksp/pc/impls/fieldsplit/fieldsplit.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/fieldsplit/fieldsplit.c) [Index of all PC routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)