Skip to main content
`Ctrl`+`K`

# BVSetMatrix

Specifies the inner product to be used in orthogonalization.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVSetMatrix(BV bv,Mat B,PetscBool indef)

Collective

## Input Parameters

- bv - the basis vectors context

- B - a Hermitian matrix (may be `NULL`)

- indef - a flag indicating if the matrix is indefinite

## Notes

This is used to specify a non-standard inner product, whose matrix representation is given by `B`. Then, all inner products required during orthogonalization are computed as \((x,y)_B=y^*Bx\) rather than the standard form \((x,y)=y^*x\).

Matrix `B` must be real symmetric (or complex Hermitian). A genuine inner product requires that `B` is also positive (semi-)definite. However, we also allow for an indefinite `B` (setting `indef=PETSC_TRUE`), in which case the orthogonalization uses an indefinite inner product.

This affects operations `BVDot()`, `BVNorm()`, `BVOrthogonalize()`, and variants.

Setting `B=NULL` has the same effect as if the identity matrix was passed.

## See Also

BV: Basis Vectors, `BVGetMatrix()`, `BVDot()`, `BVNorm()`, `BVOrthogonalize()`, `BVSetDefiniteTolerance()`

## Level

advanced

## Location

src/sys/classes/bv/interface/bvbasic.c

## Examples

src/eps/tutorials/ex47.c

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