:orphan: # PCNN Balancing Neumann-Neumann for scalar elliptic PDEs. ## Options Database Keys - ***-pc_nn_turn_off_first_balancing -*** do not balance the residual before solving the local Neumann problems (this skips the first coarse grid solve in the preconditioner) - ***-pc_nn_turn_off_second_balancing -*** do not balance the solution solving the local Neumann problems (this skips the second coarse grid solve in the preconditioner) - ***-pc_is_damp_fixed -*** - ***-pc_is_remove_nullspace_fixed -*** - ***-pc_is_set_damping_factor_floating -*** - ***-pc_is_not_damp_floating -*** - ***-pc_is_not_remove_nullspace_floating -*** ## Options Database prefixes for the subsolvers this preconditioner uses - ***-nn_coarse_pc_ -*** for the coarse grid preconditioner - ***-is_localD_pc_ -*** for the Dirichlet subproblem preconditioner - ***-is_localN_pc_ -*** for the Neumann subproblem preconditioner ## Notes The matrix used with this preconditioner must be of type `MATIS` Unlike more 'conventional' Neumann-Neumann preconditioners this iterates over ALL the degrees of freedom, NOT just those on the interface (this allows the use of approximate solvers on the subdomains; though in our experience using approximate solvers is slower.). Contributed by Paulo Goldfeld ## See Also `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `MATIS`, `PCBDDC` ## Level intermediate ## Location src/ksp/pc/impls/is/nn/nn.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/is/nn/nn.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)