petsc-main 2021-04-20
Report Typos and Errors


Nonlinear Additive Schwarz

Options Database

-snes_nasm_log - enable logging events for the communication and solve stages
-snes_nasm_type <basic,restrict> - type of subdomain update used
-snes_asm_damping <dmp> - the new solution is obtained as old solution plus dmp times (sum of the solutions on the subdomains)
-snes_nasm_finaljacobian - compute the local and global jacobians of the final iterate
-snes_nasm_finaljacobian_type <finalinner,finalouter,initial> - pick state the jacobian is calculated at
-sub_snes_ - options prefix of the subdomain nonlinear solves
-sub_ksp_ - options prefix of the subdomain Krylov solver
-sub_pc_ - options prefix of the subdomain preconditioner

Developer Note: This is a non-Newton based nonlinear solver that does not directly require a Jacobian; hence the flag snes->usesksp is set to false and SNESView() and -snes_view do not display a KSP object. However, if the flag nasm->finaljacobian is set (for example, if NASM is used as a nonlinear preconditioner for KSPASPIN) then SNESSetUpMatrices() is called to generate the Jacobian (needed by KSPASPIN) and this utilizes the KSP for storing the matrices, but the KSP is never used for solving a linear system. Note that when SNESNASM is used by SNESASPIN they share the same Jacobian matrices because SNESSetUp() (called on the outer SNES KSPASPIN) causes the inner SNES object (in this case SNESNASM) to inherit the outer Jacobian matrices.


1. - Peter R. Brune, Matthew G. Knepley, Barry F. Smith, and Xuemin Tu, "Composing Scalable Nonlinear Algebraic Solvers", SIAM Review, 57(4), 2015

See Also

SNESCreate(), SNES, SNESSetType(), SNESType (for list of available types), SNESNASMSetType(), SNESNASMGetType(), SNESNASMSetSubdomains(), SNESNASMGetSubdomains(), SNESNASMGetSubdomainVecs(), SNESNASMSetComputeFinalJacobian(), SNESNASMSetDamping(), SNESNASMGetDamping()




Index of all SNES routines
Table of Contents for all manual pages
Index of all manual pages