petsc-3.15.0 2021-03-30
MatAssemblyBegin
Begins assembling the matrix. This routine should be called after completing all calls to MatSetValues().
Synopsis
#include "petscmat.h"
PetscErrorCode MatAssemblyBegin(Mat mat,MatAssemblyType type)
Collective on Mat
Input Parameters
Notes
MatSetValues() generally caches the values. The matrix is ready to
use only after MatAssemblyBegin() and MatAssemblyEnd() have been called.
Use MAT_FLUSH_ASSEMBLY when switching between ADD_VALUES and INSERT_VALUES
in MatSetValues(); use MAT_FINAL_ASSEMBLY for the final assembly before
using the matrix.
ALL processes that share a matrix MUST call MatAssemblyBegin() and MatAssemblyEnd() the SAME NUMBER of times, and each time with the
same flag of MAT_FLUSH_ASSEMBLY or MAT_FINAL_ASSEMBLY for all processes. Thus you CANNOT locally change from ADD_VALUES to INSERT_VALUES, that is
a global collective operation requring all processes that share the matrix.
Space for preallocated nonzeros that is not filled by a call to MatSetValues() or a related routine are compressed
out by assembly. If you intend to use that extra space on a subsequent assembly, be sure to insert explicit zeros
before MAT_FINAL_ASSEMBLY so the space is not compressed out.
See Also
MatAssemblyEnd(), MatSetValues(), MatAssembled()
Level
beginner
Location
src/mat/interface/matrix.c
Examples
src/mat/tutorials/ex2.c.html
src/mat/tutorials/ex4.c.html
src/mat/tutorials/ex8.c.html
src/mat/tutorials/ex9.c.html
src/mat/tutorials/ex12.c.html
src/mat/tutorials/ex15.c.html
src/mat/tutorials/ex16.c.html
src/mat/tutorials/ex17.c.html
src/mat/tutorials/ex4f.F90.html
src/mat/tutorials/ex15f.F90.html
src/mat/tutorials/ex17f.F90.html
Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages