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


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


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


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








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

Edit on GitLab

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