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
#include "petscsles.h"
int PCSetModifySubMatrices(PC pc,int(*func)(PC,int,IS*,IS*,Mat*,void*),void *ctx)
Collective on PC
Input Parameters
| pc | - the preconditioner context
|
| func | - routine for modifying the submatrices
|
| ctx | - optional user-defined context (may be null)
|
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() and
SLESSolve().
A routine set by PCSetModifySubMatrices() is currently called within
the block Jacobi (PCBJACOBI) and additive Schwarz (PCASM)
preconditioners. All other preconditioners ignore this routine.
Keywords
PC, set, modify, submatrices
See Also
PCModifySubMatrices()
Level:advanced
Location:src/sles/pc/interface/precon.c
Index of all PC routines
Table of Contents for all manual pages
Index of all manual pages