:orphan: # SNESNGS Either calls the user-provided solution routine provided with `SNESSetNGS()` or does a finite difference secant approximation using coloring. ## Options Database Keys - ***-snes_ngs_sweeps -*** Number of sweeps of nonlinear GS to apply - ***-snes_ngs_atol -*** Absolute residual tolerance for nonlinear GS iteration - ***-snes_ngs_rtol -*** Relative residual tolerance for nonlinear GS iteration - ***-snes_ngs_stol -*** Absolute update tolerance for nonlinear GS iteration - ***-snes_ngs_max_it -*** Maximum number of sweeps of nonlinea GS to apply - ***-snes_ngs_secant -*** Use pointwise secant local Jacobian approximation with coloring instead of user provided Gauss-Seidel routine, this is used by default if no user provided Gauss-Seidel routine is available. Requires either that a `DM` that can compute a coloring is available or a Jacobian sparse matrix is provided (from which to get the coloring). - ***-snes_ngs_secant_h -*** Differencing parameter for secant approximation - ***-snes_ngs_secant_mat_coloring -*** Use the graph coloring of the Jacobian for the secant GS even if a DM is available. - ***-snes_norm_schedule -*** how often the residual norms are computed ## Notes the Gauss-Seidel smoother is inherited through composition. If a solver has been created with `SNESGetNPC()`, it will have its parent's Gauss-Seidel routine associated with it. By default this routine computes the solution norm at each iteration, this can be time consuming, you can turn this off with `SNESSetNormSchedule()` or -snes_norm_schedule none ## References - **** -*** Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu, "Composing Scalable Nonlinear Algebraic Solvers", SIAM Review, 57(4), 2015 ## See Also `SNESNCG`, `SNESCreate()`, `SNES`, `SNESSetType()`, `SNESSetNGS()`, `SNESType`, `SNESNGSSetSweeps()`, `SNESNGSSetTolerances()`, `SNESSetNormSchedule()` ## Level advanced ## Location src/snes/impls/gs/snesgs.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/snes/impls/gs/snesgs.c) [Index of all SNES routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)