:orphan: # PCASM Use the (restricted) additive Schwarz method, each block is (approximately) solved with its own `KSP` object. ## Options Database Keys - ***-pc_asm_blocks -*** Sets total blocks. Defaults to one block per MPI rank. - ***-pc_asm_overlap -*** Sets overlap - ***-pc_asm_type [basic,restrict,interpolate,none] -*** Sets `PCASMType`, default is restrict. See `PCASMSetType()` - ***-pc_asm_local_type [additive, multiplicative] -*** Sets `PCCompositeType`, default is additive. See `PCASMSetLocalType()` ## Notes If you run with, for example, 3 blocks on 1 processor or 3 blocks on 3 processors you will get a different convergence rate due to the default option of -pc_asm_type restrict. Use -pc_asm_type basic to get the same convergence behavior Each processor can have one or more blocks, but a block cannot be shared by more than one processor. Use `PCGASM` for subdomains shared by multiple processes. To set options on the solvers for each block append -sub_ to all the `KSP`, and `PC` options database keys. For example, -sub_pc_type ilu -sub_pc_factor_levels 1 -sub_ksp_type preonly To set the options on the solvers separate for each block call `PCASMGetSubKSP()` and set the options directly on the resulting `KSP` object (you can access its `PC` with `KSPGetPC()`) ## References - **** -*** M Dryja, OB Widlund, An additive variant of the Schwarz alternating method for the case of many subregions Courant Institute, New York University Technical report - **** -*** Barry Smith, Petter Bjorstad, and William Gropp, Domain Decompositions: Parallel Multilevel Methods for Elliptic Partial Differential Equations, Cambridge University Press. ## See Also `PCCreate()`, `PCSetType()`, `PCType`, `PC`, `PCASMType`, `PCCompositeType`, `PCBJACOBI`, `PCASMGetSubKSP()`, `PCASMSetLocalSubdomains()`, `PCASMType`, `PCASMGetType()`, `PCASMSetLocalType()`, `PCASMGetLocalType()` `PCASMSetTotalSubdomains()`, `PCSetModifySubMatrices()`, `PCASMSetOverlap()`, `PCASMSetType()`, `PCCompositeType` ## Level beginner ## Location src/ksp/pc/impls/asm/asm.c ## Examples src/ksp/ksp/tutorials/ex19.c
src/ksp/ksp/tutorials/ex76.c
src/ksp/ksp/tutorials/ex8.c
--- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/ksp/pc/impls/asm/asm.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)