# PCASM
Use the (restricted) additive Schwarz method, each block is (approximately) solved with its own `KSP` object. 
## Options Database Keys

- ***-pc_asm_blocks <blks> -*** Sets total blocks. Defaults to one block per MPI rank.
- ***-pc_asm_overlap <ovl> -*** 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
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/pc/impls/asm/asm.c.html#PCASM">src/ksp/pc/impls/asm/asm.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/tutorials/ex76.c.html">src/ksp/ksp/tutorials/ex76.c.html</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/tutorials/ex8.c.html">src/ksp/ksp/tutorials/ex8.c.html</A><BR>


---
[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](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
