petsc-master 2019-12-07
Report Typos and Errors

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