# PCGASMType
Type of generalized additive Schwarz method to use (differs from `PCASM` in allowing multiple processors per subdomain). 
## Synopsis
```
typedef enum {
  PC_GASM_BASIC       = 3,
  PC_GASM_RESTRICT    = 1,
  PC_GASM_INTERPOLATE = 2,
  PC_GASM_NONE        = 0
} PCGASMType;
```
Each subdomain has nested inner and outer parts.  The inner subdomains are assumed to form a non-overlapping covering of the computational
domain, while the outer subdomains contain the inner subdomains and overlap with each other.  This preconditioner will compute
a subdomain correction over each *outer* subdomain from a residual computed there, but its different variants will differ in
(a) how the outer subdomain residual is computed, and (b) how the outer subdomain correction is computed.

```none
`PC_GASM_BASIC`       - Symmetric version where the full from the outer subdomain is used, and the resulting correction is applied
```
```none
over the outer subdomains.  As a result, points in the overlap will receive the sum of the corrections
```
```none
from neighboring subdomains.
```
```none
Classical standard additive Schwarz.
```
```none
`PC_GASM_RESTRICT`    - Residual from the outer subdomain is used but the correction is restricted to the inner subdomain only
```
```none
(i.e., zeroed out over the overlap portion of the outer subdomain before being applied).  As a result,
```
```none
each point will receive a correction only from the unique inner subdomain containing it (nonoverlapping covering
```
```none
assumption).
```
```none
Default.
```
```none
`PC_GASM_INTERPOLATE` - Residual is zeroed out over the overlap portion of the outer subdomain, but the resulting correction is
```
```none
applied over the outer subdomain. As a result, points in the overlap will receive the sum of the corrections
```
```none
from neighboring subdomains.
```
```none
```
```none
`PC_GASM_NONE`       - Residuals and corrections are zeroed out outside the local subdomains.
```
```none
Not very good.
```




## See Also
 `PCGASMSetType()`

## Level
beginner

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/include/petscpctypes.h.html#PCGASMType">include/petscpctypes.h</A>


---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/include/petscpctypes.h)


[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)  
