Skip to main content
`Ctrl`+`K`

# BVInsertConstraints

Insert a set of vectors as constraints.

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVInsertConstraints(BV V,PetscInt *nc,Vec C[])

Collective

## Input Parameters

- V - basis vectors

- C - set of vectors to be inserted as constraints

## Input/Output Parameter

- nc - number of input vectors, on output the number of linearly independent vectors

## Notes

The constraints are relevant only during orthogonalization. Constraint vectors span a subspace that is deflated in every orthogonalization operation, so they are intended for removing those directions from the orthogonal basis computed in regular `BV` columns.

Constraints are not stored in regular `BV` columns, but in a special part of the storage. They can be accessed with negative indices in `BVGetColumn()`.

This operation is DESTRUCTIVE, meaning that all data contained in the columns of `V` is lost. This is typically invoked just after creating the `BV`. Once a set of constraints has been set, it is not allowed to call this function again.

The vectors are copied one by one and then orthogonalized against the previous ones. If any of them is linearly dependent then it is discarded and the value of `nc` is decreased. The behavior is similar to `BVInsertVecs()`.

## See Also

BV: Basis Vectors, `BVInsertVecs()`, `BVOrthogonalizeColumn()`, `BVGetColumn()`, `BVGetNumConstraints()`

## Level

advanced

## Location

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

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