# 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 "petscksp.h"
    PetscErrorCode PETSCKSP_DLLEXPORT PCSetModifySubMatrices(PC pc,PetscErrorCode (*func)(PC,PetscInt,const IS[],const 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,PetscInt 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 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.

### Keywords

PC, set, modify, submatrices

### See Also

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