Skip to main content
`Ctrl`+`K`

# BVMult

Computes \(Y = \beta Y + \alpha X Q\).

## Synopsis

    #include "slepcbv.h"
    PetscErrorCode BVMult(BV Y,PetscScalar alpha,PetscScalar beta,BV X,Mat Q)

Logically Collective

## Input Parameters

- Y - first basis vectors context (modified on output)

- alpha - first scalar

- beta - second scalar

- X - second basis vectors context

- Q - (optional) sequential dense matrix

## Notes

`X` and `Y` must be different objects. The case `X=Y` can be addressed with `BVMultInPlace()`.

If matrix `Q` is `NULL`, then an AXPY operation \(Y = \beta Y + \alpha X\) is done (i.e., results as if \(Q = I\)). If provided, the matrix `Q` must be a sequential dense `Mat`, with all entries equal on all processes (otherwise each process will compute a different update). The dimensions of `Q` must be at least `m,n` where `m` is the number of active columns of `X` and `n` is the number of active columns of `Y`.

The leading columns of `Y` are not modified. Also, if `X` has leading columns specified, then these columns do not participate in the computation. Hence, only rows (resp. columns) of `Q` starting from `lx` (resp. `ly`) are used, where `lx` (resp. `ly`) is the number of leading columns of `X` (resp. `Y`).

## See Also

BV: Basis Vectors, `BVMultVec()`, `BVMultColumn()`, `BVMultInPlace()`, `BVSetActiveColumns()`

## Level

intermediate

## Location

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

## Implementations

BVMult_Contiguous() in src/sys/classes/bv/impls/contiguous/contig.c
BVMult_Mat() in src/sys/classes/bv/impls/mat/bvmat.c
BVMult_Svec() in src/sys/classes/bv/impls/svec/svec.c
BVMult_Vecs() in src/sys/classes/bv/impls/vecs/vecs.c

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