# PCASMSetLocalSubdomains#

Sets the local subdomains (for this processor only) for the additive Schwarz preconditioner PCASM.

## Synopsis#

#include "petscpc.h"
PetscErrorCode PCASMSetLocalSubdomains(PC pc, PetscInt n, IS is[], IS is_local[])


Collective

## Input Parameters#

• pc - the preconditioner context

• n - the number of subdomains for this processor (default value = 1)

• is - the index set that defines the subdomains for this processor (or NULL for PETSc to determine subdomains)

• is_local - the index sets that define the local part of the subdomains for this processor, not used unless PCASMType is PC_ASM_RESTRICT (or NULL to not provide these)

## Options Database Key#

To set the total number of subdomain blocks rather than specify the index sets, use the option

• -pc_asm_local_blocks - Sets local blocks

## Notes#

The IS numbering is in the parallel, global numbering of the vector for both is and is_local

By default the PCASM preconditioner uses 1 block per processor.

Use PCASMSetTotalSubdomains() to set the subdomains for all processors.

If is_local is provided and PCASMType is PC_ASM_RESTRICT then the solution only over the is_local region is interpolated back to form the global solution (this is the standard restricted additive Schwarz method)

If the is_local is provided and PCASMType is PC_ASM_INTERPOLATE or PC_ASM_NONE then an error is generated since there is no code to handle that case.

## See Also#

PCASM, PCASMSetTotalSubdomains(), PCASMSetOverlap(), PCASMGetSubKSP(), PCASMCreateSubdomains2D(), PCASMGetLocalSubdomains(), PCASMType, PCASMSetType(), PCGASM

advanced

## Location#

src/ksp/pc/impls/asm/asm.c

Edit on GitLab