Skip to main content
`Ctrl`+`K`

# MatSetValuesIS

Inserts or adds a block of values into a matrix using an `IS` to indicate the rows and columns These values may be cached, so `MatAssemblyBegin()` and `MatAssemblyEnd()` MUST be called after all calls to `MatSetValues()` have been completed.

## Synopsis

    #include "petscmat.h"
    PetscErrorCode MatSetValuesIS(Mat mat, IS ism, IS isn, const PetscScalar v[], InsertMode addv)

Not Collective

## Input Parameters

- mat - the matrix

- v - a logically two-dimensional array of values

- ism - the rows to provide

- isn - the columns to provide

- addv - either `ADD_VALUES` to add values to any existing entries, or `INSERT_VALUES` to replace existing entries with new values

## Notes

By default the values, `v`, are stored row-oriented. See `MatSetOption()` for other options.

Calls to `MatSetValues()` with the `INSERT_VALUES` and `ADD_VALUES` options cannot be mixed without intervening calls to the assembly routines.

`MatSetValues()` uses 0-based row and column numbers in Fortran as well as in C.

Negative indices may be passed in `ism` and `isn`, these rows and columns are simply ignored. This allows easily inserting element stiffness matrices with homogeneous Dirichlet boundary conditions that you don’t want represented in the matrix.

## Efficiency Alert

The routine `MatSetValuesBlocked()` may offer much better efficiency for users of block sparse formats (`MATSEQBAIJ` and `MATMPIBAIJ`).

This is currently not optimized for any particular `ISType`

## Developer Note

This is labeled with C so does not automatically generate Fortran stubs and interfaces because it requires multiple Fortran interfaces depending on which arguments are scalar or arrays.

## See Also

Matrices, `Mat`, `MatSetOption()`, `MatSetValues()`, `MatAssemblyBegin()`, `MatAssemblyEnd()`, `MatSetValuesBlocked()`, `MatSetValuesLocal()`, `InsertMode`, `INSERT_VALUES`, `ADD_VALUES`

## Level

beginner

## Location

src/mat/interface/matrix.c

Index of all Mat routines
Table of Contents for all manual pages
Index of all manual pages