PETSc version 3.17.4
Fix/Edit manual page

# 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  PCSetModifySubMatrices(PC pc,PetscErrorCode (*func)(PC,PetscInt,const IS[],const IS[],Mat[],void*),void *ctx)

Logically 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.

### 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