PCSetModifySubMatrices
Sets a user-defined routine for modifying the submatrices that arise within certain subdomain-based preconditioners. 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.
Synopsis
int PCSetModifySubMatrices(PC pc,int(*func)(PC,int,IS*,IS*,Mat*,void*),void *ctx)
Input Parameters
pc | - the preconditioner context
|
func | - routine for modifying the submatrices
|
ctx | - optional user-defined context (may be null)
|
Collective on
PC
Calling sequence of func
func (PC pc,int nsub,IS *row,IS *col,Mat *submat,void *ctx);
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
PCSetModifySubMatrices() MUST be called before SLESSetUp()
andSLESSolve().
A routine set by PCSetModifySubMatrices() is currently called
withinthe block Jacobi (PCBJACOBI), additive Schwarz (PCASM), and
blockGauss-Seidel (PCBGS) preconditioners. All other
preconditionersignore this routine.
Keywords
PC, set, modify, submatrices
See Also
PCModifySubMatrices()
Location: src/pc/interface/precon.c
PC Index
Table of Contents