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