PCSetModifySubMatrices#

Sets a user-defined routine for modifying the submatrices that arise within certain subdomain-based preconditioners such as PCASM

Synopsis#

#include "petscksp.h" 
PetscErrorCode PCSetModifySubMatrices(PC pc, PetscErrorCode (*func)(PC pc, PetscInt nsub, const IS row[], const IS col[], Mat submat[], void *ctx), void *ctx)

Logically Collective

Input Parameters#

  • pc - the preconditioner context

  • func - routine for modifying the submatrices

  • ctx - optional user-defined context (may be NULL)

Calling sequence of func#

  • pc - the preconditioner context

  • nsub - number of index sets

  • row - an array of index sets that contain the global row numbers that comprise each local submatrix

  • col - an array of index sets that contain the global column numbers that comprise each local submatrix

  • submat - array of local submatrices

  • ctx - optional user-defined context for private data for the user-defined func routine (may be NULL)

Notes#

The basic submatrices are extracted from the preconditioner matrix as usual; the user can then alter these (for example, to set different boundary conditions for each submatrix) before they are used for the local solves.

PCSetModifySubMatrices() MUST be called before KSPSetUp() and KSPSolve().

A routine set by PCSetModifySubMatrices() is currently called within the block Jacobi (PCBJACOBI) and additive Schwarz (PCASM) preconditioners. All other preconditioners ignore this routine.

See Also#

KSP: Linear System Solvers, PC, PCBJACOBI, PCASM, PCModifySubMatrices()

Level#

advanced

Location#

src/ksp/pc/interface/precon.c


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