MatMPIAIJGetLocalMat#
Creates a MATSEQAIJ from a MATMPIAIJ matrix.
Synopsis#
#include "petscmat.h"
PetscErrorCode MatMPIAIJGetLocalMat(Mat A, MatReuse scall, Mat *A_loc)
Not Collective
Input Parameters#
A - the matrix
scall - either
MAT_INITIAL_MATRIXorMAT_REUSE_MATRIX
Output Parameter#
A_loc - the local sequential matrix generated
Notes#
The matrix is created by taking all A’s local rows and putting them into a sequential
matrix with mlocal rows and n columns.mlocal is the row count obtained with
MatGetLocalSize() and n is the global column count obtained with MatGetSize().
In other words combines the two parts of a parallel MATMPIAIJ matrix on each process to a single matrix.
When A is sequential and MAT_INITIAL_MATRIX is requested, the matrix returned is the diagonal part of A (which contains the entire matrix),
with its reference count increased by one. Hence changing values of A_loc changes A. If MAT_REUSE_MATRIX is requested on a sequential matrix
then MatCopy(Adiag,*A_loc,SAME_NONZERO_PATTERN) is called to fill A_loc. Thus one can preallocate the appropriate sequential matrix A_loc
and then call this routine with MAT_REUSE_MATRIX. In this case, one can modify the values of A_loc without affecting the original sequential matrix.
See Also#
Matrices, Mat, MATMPIAIJ, MatGetOwnershipRange(), MatMPIAIJGetLocalMatCondensed(), MatMPIAIJGetLocalMatMerge()
Level#
developer
Location#
src/mat/impls/aij/mpi/mpiaij.c
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages